Страница 1 из 1

XiaNi облажался или нет с квестами для FreePlay'я?

СообщениеДобавлено: 15 авг 2012, 17:47
ROMCHA
XiaNi я сдлал много побочных квестов для наёмников 8-) . Но я не могу сделать для военных? Короче я квесты для наёмников делал так
в task_manager.ltx

[Показать] Спойлер:
[killers_kill_stalker_1]
type = kill_stalker
community = actor
parent = killer
text = killers_kill_stalker_1_text
description = killers_kill_stalker_1_descr
target = sim_stalker_general
reward_money = 7700
reward_reputation = killer, +10
reward_rank = 1
time = 604800
prior = 1

[killers_kill_stalker_veteran]
type = kill_stalker
community = actor
parent = killer
text = killers_kill_stalker_veteran_text
description = killers_kill_stalker_veteran_descr
target = sim_stalker_veteran
reward_money = 25000
reward_reputation = killer, +45, bandit +20
reward_rank = 1
time = 604800
prior = 2

[killers_kill_stalker_bes]
type = kill_stalker
community = actor
parent = killer
text = killers_kill_stalker_bes_text
description = killers_kill_stalker_bes_descr
target = gar_hellcar
reward_money = 8000
reward_relation = killer, +25, bandit +15
reward_rank = 1
time = 604800
prior = 3


вот так в stable_task_manager.xml

[Показать] Спойлер:
;--------mercenary-------
<string id="killers_kill_stalker_1">
<text>Убить сталкера.</text>
</string>
<string id="killers_kill_stalker_1_text">
<text>Опытный сталкер. Детальная информация отсутствует.</text>
</string>
<string id="killers_kill_stalker_1_descr">
<text>Опытный сталкер. Детальная информация отсутствует.</text>
</string>
<string id="killers_kill_stalker_veteran">
<text>Убить сталкера ветерана.</text>
</string>
<string id="killers_kill_stalker_veteran_text">
<text>Достаточно опытный сталкер. Возможно, хорошо экипирован. Детальная информация отсутствует.</text>
</string>
<string id="killers_kill_stalker_veteran_descr">
<text>Достаточно опытный сталкер. Возможно хорошо экипирован. Детальная информация отсутствует.</text>
</string>
<string id="killers_kill_stalker_bes">
<text>Убить Беса.</text>
</string>
<string id="killers_kill_stalker_bes_text">
<text>Достаточно опытный сталкер. Известно что связан с криминалом. Кантуется в основном на свалке, защищает новичков. P.S. Заказчик хочет чтоб его убрали тихо и незаметно.</text>
</string>
<string id="killers_kill_stalker_bes_descr">
<text>Достаточно опытный сталкер. Известно что связан с криминалом. Кантуется в основном на свалке, защищает новичков. P.S. Заказчик хочет чтоб его убрали тихо и незаметно.</text>
</string>

и так в storyline_info_taskmanager.xml

[Показать] Спойлер:
<!-- tasks for Mercenary -->

<article id="killers_kill_stalker_1_descr" name="kill_stalker" article_type="task">
<text>killers_kill_stalker_1_descr</text>
</article>
<article id="killers_kill_stalker_veteran_descr" name="kill_stalker" article_type="task">
<text>killers_kill_stalker_veteran_descr</text>
</article>
<article id="killers_kill_stalker_bes_descr" name="kill_stalker" article_type="task">
<text>killers_kill_stalker_bes_descr</text>
</article>

и в game_tasks_by_vendor.xml

[Показать] Спойлер:
<!-- mercenary -->
<game_task id="eliminate_lager_mercenary">
<title>title</title>
<objective>
<text>objective</text>
<icon>ui_iconsTotal_eliminate_lager</icon>
<function_complete>task_manager.task_complete</function_complete>
<function_fail>task_manager.task_fail</function_fail>
</objective>
</game_task>

<game_task id="defend_lager_mercenary">
<title>title</title>
<objective>
<text>objective</text>
<icon>ui_iconsTotal_defend_lager</icon>
<function_complete>task_manager.task_complete</function_complete>
<function_fail>task_manager.task_fail</function_fail>
</objective>
</game_task>

<game_task id="artefact_mercenary">
<title>title</title>
<objective>
<text>objective</text>
<icon>ui_iconsTotal_artefact</icon>
<function_complete>task_manager.task_complete</function_complete>
<function_fail>task_manager.task_fail</function_fail>
</objective>
</game_task>

<game_task id="kill_stalker_mercenary">
<title>title</title>
<objective>
<text>objective</text>
<icon>ui_iconsTotal_kill_stalker</icon>
<function_complete>task_manager.task_complete</function_complete>
<function_fail>task_manager.task_fail</function_fail>
</objective>
</game_task>

<game_task id="monster_part_mercenary">
<title>title</title>
<objective>
<text>objective</text>
<icon>ui_iconsTotal_monster_part</icon>
<function_complete>task_manager.task_complete</function_complete>
<function_fail>task_manager.task_fail</function_fail>
</objective>
</game_task>

<game_task id="find_item_mercenary">
<title>title</title>
<objective>
<text>objective</text>
<icon>ui_iconsTotal_find_item</icon>
<function_complete>task_manager.task_complete</function_complete>
<function_fail>task_manager.task_fail</function_fail>
</objective>
</game_task>

<game_task id="eliminate_lager_killer">
<title>title</title>
<objective>
<text>objective</text>
<icon>ui_iconsTotal_eliminate_lager</icon>
<function_complete>task_manager.task_complete</function_complete>
<function_fail>task_manager.task_fail</function_fail>
</objective>
</game_task>

<game_task id="defend_lager_killer">
<title>title</title>
<objective>
<text>objective</text>
<icon>ui_iconsTotal_defend_lager</icon>
<function_complete>task_manager.task_complete</function_complete>
<function_fail>task_manager.task_fail</function_fail>
</objective>
</game_task>

<game_task id="artefact_killer">
<title>title</title>
<objective>
<text>objective</text>
<icon>ui_iconsTotal_artefact</icon>
<function_complete>task_manager.task_complete</function_complete>
<function_fail>task_manager.task_fail</function_fail>
</objective>
</game_task>

<game_task id="kill_stalker_killer">
<title>title</title>
<objective>
<text>objective</text>
<icon>ui_iconsTotal_kill_stalker</icon>
<function_complete>task_manager.task_complete</function_complete>
<function_fail>task_manager.task_fail</function_fail>
</objective>
</game_task>

<game_task id="monster_part_killer">
<title>title</title>
<objective>
<text>objective</text>
<icon>ui_iconsTotal_monster_part</icon>
<function_complete>task_manager.task_complete</function_complete>
<function_fail>task_manager.task_fail</function_fail>
</objective>
</game_task>

<game_task id="find_item_killer">
<title>title</title>
<objective>
<text>objective</text>
<icon>ui_iconsTotal_find_item</icon>
<function_complete>task_manager.task_complete</function_complete>
<function_fail>task_manager.task_fail</function_fail>
</objective>
</game_task>

Тоесть я квесты делал ЗА ГРУППИРОВКУ (в данном случае наёмники) а не за конкретного непися (NPC)
но за военных (и за монолит) так не получилось проблема в файле task_manager.script
отсутствует "military" ТОЕСТЬ ТУТ ТВОЯ ошибка XiaNi? Как её исправить подскажи плиз
как заменить esc_commander на military и monolith_leader на monolith

Я так понимаю тут не только имя но и номер секции надо менять! Но я не знаю как :(

[Показать] Спойлер:
local random_task = nil

deathtrack = {}

local parent_by_story = {
[003] = "trader",
[500] = "barman",
[902] = "ecolog",
[507] = "dolg",
[707] = "freedom",
[006] = "wolf",
[004] = "shustriy",
[510] = "drunk_dolg",
[504] = "hunter",
[518] = "zastava_commander",
[506] = "petrenko",
[607] = "lisiy",
[515] = "mercenary",
[509] = "killer",
[425] = "bandit",
[093] = "esc_commander",
[828] = "monolith_leader"
}

local story_by_parent = {
trader = 003,
barman = 500,
ecolog = 902,
dolg = 507,
freedom = 707,
wolf = 006,
shustriy = 004,
drunk_dolg = 510,
hunter = 504,
zastava_commander = 518,
petrenko = 506,
lisiy = 607,
mercenary = 515,
killer = 509,
bandit = 425,
esc_commander = 093,
monolith_leader = 828
}

Re: XiaNi облажался или нет с квестами для FreePlay'я?

СообщениеДобавлено: 16 авг 2012, 13:57
kstn
Облажался как раз ты, а не Xiani, так как начал паниковать не разобравшись.
Если посмотреть на массивы

[Показать] Спойлер:
local parent_by_story = {
[003] = "trader",
[500] = "barman",
[902] = "ecolog",
[507] = "dolg",
[707] = "freedom",
[006] = "wolf",
[004] = "shustriy",
[510] = "drunk_dolg",
[504] = "hunter",
[518] = "zastava_commander",
[506] = "petrenko",
[607] = "lisiy",
[515] = "mercenary",
[509] = "killer",
[425] = "bandit",
[093] = "esc_commander",
[828] = "monolith_leader"
}

local story_by_parent = {
trader = 003,
barman = 500,
ecolog = 902,
dolg = 507,
freedom = 707,
wolf = 006,
shustriy = 004,
drunk_dolg = 510,
hunter = 504,
zastava_commander = 518,
petrenko = 506,
lisiy = 607,
mercenary = 515,
killer = 509,
bandit = 425,
esc_commander = 093,
monolith_leader = 828
}


то становиться ясно, что задания привязываются не к группировкам, а именно к конкретным неписям с заданными story_id, "killer" или "dolg" - не группировка, а условное обозначение заказчика (parent) в task_manager.ltx. И назови ты заказчика хоть как, это не повлияет на группировку. Чтобы сдавать квесты группировке, а не npc, нужно вносить свои правки в task_manager.script.

Re: XiaNi облажался или нет с квестами для FreePlay'я?

СообщениеДобавлено: 17 авг 2012, 09:44
ROMCHA
[list=]то становиться ясно, что задания привязываются не к группировкам, а именно к конкретным неписям с заданными story_id, "killer" или "dolg" - не группировка, а условное обозначение заказчика (parent) в task_manager.ltx. И назови ты заказчика хоть как, это не повлияет на группировку. Чтобы сдавать квесты группировке, а не npc, нужно вносить свои правки в task_manager.script.[/list]
А ГДЕ БРАТЬ story_id?

Re: XiaNi облажался или нет с квестами для FreePlay'я?

СообщениеДобавлено: 17 авг 2012, 16:12
kstn
ROMCHA писал(а):А ГДЕ БРАТЬ story_id?

game_story_ids.ltx
all.spawn(freeplay.spawn)

Re: XiaNi облажался или нет с квестами для FreePlay'я?

СообщениеДобавлено: 18 авг 2012, 20:40
ROMCHA
kstn писал(а):Облажался как раз ты, а не Xiani, так как начал паниковать не разобравшись.
Если посмотреть на массивы

local parent_by_story = {
[003] = "trader",
[500] = "barman",
[902] = "ecolog",
[507] = "dolg",
[707] = "freedom",
[006] = "wolf",
[004] = "shustriy",
[510] = "drunk_dolg",
[504] = "hunter",
[518] = "zastava_commander",
[506] = "petrenko",
[607] = "lisiy",
[515] = "mercenary",
[509] = "killer",
[425] = "bandit",
[093] = "esc_commander",
[828] = "monolith_leader"
}

local story_by_parent = {
trader = 003,
barman = 500,
ecolog = 902,
dolg = 507,
freedom = 707,
wolf = 006,
shustriy = 004,
drunk_dolg = 510,
hunter = 504,
zastava_commander = 518,
petrenko = 506,
lisiy = 607,
mercenary = 515,
killer = 509,
bandit = 425,
esc_commander = 093,
monolith_leader = 828
}


то становиться ясно, что задания привязываются не к группировкам, а именно к конкретным неписям с заданными story_id, "killer" или "dolg" - не группировка, а условное обозначение заказчика (parent) в task_manager.ltx. И назови ты заказчика хоть как, это не повлияет на группировку. Чтобы сдавать квесты группировке, а не npc, нужно вносить свои правки в task_manager.script.


А вот ты не прав квесты дествительно за группировку в id можно указать квеста-дателя если в task_manager.script указать имя группировки, а не имя самого квеста-дателя! Хотя есть и другой вариант

[tm_find_artefact_1]
type = artefact
community = actor
text = tm_find_artefact_1_text
description = tm_find_artefact_1_descr
parent = trader
target = af_medusa
reward_money = 3500
reward_reputation = +5
reward_relation = dolg, +10
reward_rank = 1
time = 172800
idle_time = 2592000
prior = 1

Получается имитация квеста именно за группировку плюс за квеста-дателя :P

Нужна помощь всех скриптёров

СообщениеДобавлено: 18 авг 2012, 21:29
ROMCHA
Скриптёры ПАМАГИТЕ как вырезать яд из xrs_medic.script чтоб осталась возможность неписям лечить друг-друга! И как адаптировать для мини-мода напарники, для FreePlayStart 1.21?

[Показать] Спойлер:
----------------------------------------------------------------------------------------------------------------------
--' Лечим нерадивых товарищей...
--' ver: 2.0
--' автор: xStream
--' TODO:
----------------------------------------------------------------------------------------------------------------------
local excluded_npcs={
esc_fox=true,
esc_vagon_wounded=true,
gar_bandit_stroyka3=true,
gar_wounded_bandit=true,
val_sos_wounded=true,
val_escort_bandit_halfdead=true
}

mk_types={
[1]="medkit",
[2]="medkit_army",
[3]="medkit_scientic",
[4]="bandage"
}

wounded = {}
has_medic = {}
friends_r = 50
neutral_r = 30
---------------
evid_medic=18680
evid_self_medic=evid_medic+1

actid_medic=evid_medic
actid_self_medic=actid_medic+1

----------------------------------------------------------------------------------------------------------------------
-- EVALUATORS
----------------------------------------------------------------------------------------------------------------------

class "evaluator_medic" (property_evaluator)
function evaluator_medic:__init(name, storage) super (nil, name)
self.a = storage
self.a.next_medic_change_pos = 0
end
function evaluator_medic:evaluate()
local npc = self.object
if wounded[npc:id()] then return false end
if not self.a.target_wounded then

if (self.next_check_time or 0) > time_global() then return false end
self.next_check_time = time_global() + 5000

if not npc:object("medkit") and not npc:object("medkit_army") and not npc:object("medkit_scientic") then return false end

local wounded_guy
for k,v in pairs(wounded) do
if not has_medic[k] then
local obj = get_npc(k)
if obj and not excluded_npcs[obj:name()] and obj:alive() and npc:see(obj) and npc:accessible(obj:level_vertex_id()) and
(npc:relation(obj) == game_object.friend and npc:position():distance_to(obj:position())<friends_r) or
(npc:relation(obj) == game_object.neutral and npc:position():distance_to(obj:position())<neutral_r)
then
wounded_guy = k
break
end
end
end

if not wounded_guy then return false end
self.a.target_wounded = wounded_guy
if self.a.next_medic_change_pos and self.a.next_medic_change_pos<time_global() then
self.a.from_point = npc:position()
end
has_medic[wounded_guy]=npc:id()
return true
else
if not wounded[self.a.target_wounded] or (get_npc(self.a.target_wounded) and (not get_npc(self.a.target_wounded):alive() or not (get_npc(self.a.target_wounded):wounded() or get_npc(self.a.target_wounded):critically_wounded()))) or (has_medic[self.a.target_wounded] and has_medic[self.a.target_wounded]~=npc:id()) then
self.a.target_wounded = nil
self.a.from_point = nil
return false
end
return true
end
end

class "evaluator_self_medic" (property_evaluator)
function evaluator_self_medic:__init(name, storage) super (nil, name)
self.a = storage
self.check_time = time_global() + math.random(5000,20000)
end
function evaluator_self_medic:evaluate()
if self.a.self_healing then return true end

if (self.next_check_time or 0) > time_global() then return false end
self.next_check_time = time_global() + 5000

local npc = self.object
if wounded[npc:id()] or has_medic[npc:id()] or excluded_npcs[npc:name()] then return false end
if self.check_time<time_global() then
self.check_time = time_global() + math.random(3000,10000)
if not npc:object("medkit") and not npc:object("medkit_army") and not npc:object("medkit_scientic") and not npc:object("bandage") then return false end
if npc.health<0.5 then
self.a.self_healing=true
return true
end
end
return false
end

----------------------------------------------------------------------------------------------------------------------
-- ACTIONS
----------------------------------------------------------------------------------------------------------------------

class "action_medic" (action_base)
function action_medic:__init (npc,action_name,storage) super (nil,action_name)
self.a = storage
end
function action_medic:initialize()
action_base.initialize(self)
local npc=self.object
local wounded_npc = get_npc(self.a.target_wounded)
state_mgr.set_state(npc, "run",nil,nil,{ look_object = wounded_npc }, {animation = true})

xr_sound.set_sound(npc, nil)
stop_play_sound(npc)
end
function action_medic:execute()
action_base.execute (self)
local npc=self.object
local wounded_npc = get_npc(self.a.target_wounded)
if npc:position():distance_to(get_npc(self.a.target_wounded):position())>1.2 then
utils.send_to_nearest_accessible_vertex(npc, get_npc(self.a.target_wounded):level_vertex_id())
npc:set_desired_position(get_npc(self.a.target_wounded):position())
else

if not self.step1 and npc:animation_count()==0 then
utils.send_to_nearest_accessible_vertex(npc, npc:level_vertex_id())
npc:set_desired_position()
npc:clear_animations()
npc:set_movement_type(move.stand)
state_mgr.set_state(npc, "dynamite",nil,nil,{ look_object = wounded_npc }, {animation = true})
self.step1 = time_global()+4000
if npc:object("medkit") ~= nil then
npc:transfer_item(npc:object("medkit"), wounded_npc)
self.medsec="medkit"
elseif npc:object("medkit_army") ~= nil then
npc:transfer_item(npc:object("medkit_army"), wounded_npc)
self.medsec="medkit_army"
elseif npc:object("medkit_scientic") ~= nil then
npc:transfer_item(npc:object("medkit_scientic"), wounded_npc)
self.medsec="medkit_scientic"
end
end
if self.step1 and not self.step2 and self.step1<time_global() then

npc:clear_animations()
--wounded_npc:eat(wounded_npc:object(self.medsec))
xr_wounded.unlock_medkit(wounded_npc)

if wounded_npc:relation(npc) ~= game_object.enemy then
wounded_npc:set_relation(game_object.friend, npc)
end
npc:change_character_reputation(10);
self.step2=time_global()+2000
end
if self.step1 and self.step2 and self.step2<time_global() then

xr_logic.initialize_obj(wounded_npc, db.storage[wounded_npc:id()], true, db.actor, modules.stype_stalker)
--db.storage[wounded_npc:id()].wounded.wound_manager.medkit_eaten=true
--db.storage[wounded_npc:id()].wounded.wound_manager:update()

has_medic[self.a.target_wounded]=nil
self.a.target_wounded = nil
self.a.from_point = nil
end
end
end
function action_medic:finalize()
action_base.finalize (self)
self.a.next_medic_change_pos = time_global() + 30000
end

class "action_self_medic" (action_base)
function action_self_medic:__init (npc,action_name,storage) super (nil,action_name)
self.a = storage
end
function action_self_medic:initialize()
action_base.initialize(self)
local npc=self.object
if not npc:object("medkit") and not npc:object("medkit_army") and not npc:object("medkit_scientic") and not npc:object("bandage") then
self.a.self_healing=false
return
end

npc:set_item(object.idle,nil)
npc:set_movement_type(move.stand)
npc:set_desired_position()
npc:set_desired_direction()
utils.send_to_nearest_accessible_vertex(npc, npc:level_vertex_id())

state_mgr.set_state(npc, "idle")
self.dir = npc:direction()

xr_sound.set_sound(npc, nil)
stop_play_sound(npc)

end
function action_self_medic:execute()
action_base.execute (self)
local npc=self.object
if not self.allow_empty and not npc:object("medkit") and not npc:object("medkit_army") and not npc:object("medkit_scientic") and not npc:object("bandage") then
self.a.self_healing=false
return
end
npc:set_sight(look.direction,self.dir)
npc:set_desired_direction(self.dir)
utils.send_to_nearest_accessible_vertex(npc, npc:level_vertex_id())

if not self.initialized and state_mgr.get_state(npc)=="idle" then
if npc:animation_count()==0 then

local yad = npc:object("yad")
if yad then
yad:enable_attachable_item(true)
end

npc:clear_animations()
--npc:add_animation("stoya_ruje_ 0")
npc:add_animation("idle_0_to_sit_2")
npc:add_animation("vodka_3")
npc:add_animation("sit_2_to_idle_0")
self.initialized=true
self.end_time = time_global() + 5000
self.end_time_total = self.end_time + 2000
end
return
else
npc:set_item(object.idle,nil)
local yad = npc:object("yad")
if yad then
yad:enable_attachable_item(true)
end

end
if self.end_time and self.end_time<time_global() then
if npc:object("medkit") ~= nil then
self.medsec="medkit"
elseif npc:object("medkit_army") ~= nil then
self.medsec="medkit_army"
elseif npc:object("medkit_scientic") ~= nil then
self.medsec="medkit_scientic"
elseif npc:object("bandage") ~= nil then
self.medsec="bandage"
end

local yad = npc:object("yad")
if yad then
yad:enable_attachable_item(false)
end

-- npc:clear_animations()
self.eat_obj = npc:object(self.medsec)
npc:eat(self.eat_obj)
self.allow_empty=true
end
if self.end_time_total and self.end_time_total<time_global() then
self.a.self_healing=false
end

end
function action_self_medic:finalize()
action_base.finalize (self)
self.a.self_healing=false

local npc=self.object
local yad = npc:object("yad")
if yad then
yad:enable_attachable_item(false)
end

end

----------------------------------------------------------------------------------------------------------------------
-- BINDER
----------------------------------------------------------------------------------------------------------------------
function add_to_binder(object, ini, scheme, section, storage)
local operators = {}
local properties = {}

local manager = object:motivation_action_manager()

operators["medic"] = actid_medic
operators["self_medic"] = actid_self_medic

properties["medic"] = evid_medic
properties["self_medic"] = evid_self_medic

local zombi=object:character_community()=="zombied" or object:character_community()=="trader" or
object:character_community()=="arena_enemy" or object:name()=="mil_stalker0012" or object:name()=="yantar_ecolog_general"

if zombi then
manager:add_evaluator (properties["medic"], property_evaluator_const(false))
manager:add_evaluator (properties["self_medic"], property_evaluator_const(false))
else
manager:add_evaluator (properties["medic"], evaluator_medic("medic", storage))
manager:add_evaluator (properties["self_medic"], evaluator_self_medic("self_medic", storage))
end

local action = action_medic (object,"medic", storage)
action:add_precondition(world_property(stalker_ids.property_alive, true))
action:add_precondition(world_property(stalker_ids.property_enemy, false))
action:add_precondition(world_property(xr_evaluators_id.sidor_wounded_base, false))
action:add_precondition (world_property(properties["medic"], true))
--xr_motivator.addCommonPrecondition(action)
action:add_effect (world_property(properties["medic"], false))
manager:add_action (operators["medic"], action)

local action = action_self_medic (object,"self_medic", storage)
action:add_precondition(world_property(stalker_ids.property_alive, true))
action:add_precondition(world_property(stalker_ids.property_enemy, false))
action:add_precondition(world_property(xr_evaluators_id.sidor_wounded_base, false))
action:add_precondition (world_property(properties["self_medic"], true))
action:add_precondition (world_property(properties["medic"], false))
--xr_motivator.addCommonPrecondition(action)
action:add_effect (world_property(properties["self_medic"], false))
manager:add_action (operators["self_medic"], action)

action = manager:action (xr_actions_id.alife)
action:add_precondition (world_property(properties["medic"], false))
action:add_precondition (world_property(properties["self_medic"], false))

end

function set_scheme(npc, ini, scheme, section)
local st = xr_logic.assign_storage_and_bind(npc, ini, scheme, section)
end

function disable_scheme(npc, scheme)
local st = db.storage[npc:id()][scheme]
if st then
st.enabled = false
end
end

----------------------------------------------------------------------------------------------------------------------
-- HELPERS
----------------------------------------------------------------------------------------------------------------------

function get_npc(id)
return level.object_by_id(id)
end

function death_callback(npc)
wounded[npc:id()]=nil
has_medic[npc:id()]=nil
for k,v in pairs(has_medic) do
if v == npc:id() then has_medic[k]=nil break end
end
if npc:object("yad") then
alife():release(alife():object(npc:object("yad"):id()))
end

if not npc:alive() then
local remove_medkits={}
npc:iterate_inventory(function (dummy, item)
if item==nil or alife():object(item:id())==nil then return end
for k,v in pairs(mk_types) do
if item:section()==v then
table.insert(remove_medkits, item:id())
break
end
end
end, npc)
for k,v in pairs(remove_medkits) do
alife():release(alife():object(v),true)
end
end
end

function npc_update(binder)
local npc = binder.object

if not npc:alive() then
wounded[npc:id()]=nil
has_medic[npc:id()]=nil
return
end

if npc:critically_wounded() or npc:wounded() then
if not wounded[npc:id()] then
wounded[npc:id()]=true
for k,v in pairs(has_medic) do
if v == npc:id() then has_medic[k]=nil break end
end
end
else
wounded[npc:id()]=nil
end

if not npc:object("yad") then
alife():create("yad",npc:position(),npc:level_vertex_id(),npc:game_vertex_id(),npc:id())
end

if not binder.medkit_update_time then binder.medkit_update_time=time_global()+5000 end
if npc:character_community()=="zombied" or npc:character_community()=="trader" or
npc:character_community()=="arena_enemy" or npc:name()=="mil_stalker0012" or
npc:name()=="yantar_ecolog_general" then return end
if time_global()>binder.medkit_update_time then
if not npc:object("medkit") and not npc:object("medkit_army") and not npc:object("medkit_scientic") then
local sobj = alife():object(npc:id())
if sobj and sobj.rank and sobj:rank()~=0 then
if math.random()>0.2 then alife():create(mk_types[3%math.ceil(sobj:rank()/1000)+1],npc:position(),npc:level_vertex_id(),npc:game_vertex_id(),npc:id()) end
end
end
if not npc:object("bandage") then
if math.random()>0.05 then alife():create("bandage",npc:position(),npc:level_vertex_id(),npc:game_vertex_id(),npc:id()) end
end
binder.medkit_update_time=time_global()+300000
end
end

function pickup(obj)
if obj:section()=="yad" then alife():release(alife():object(obj:id())) end
end


КАК(!?) заменить корявенький матрас из Зенобиан мода!? На матрас из мода сталкер :тени чернобыля скрытая аномалия!? ОЧЕНЬ НАДО! АШ БОЛЬНО СМОТРЕТЬ НА МАТРАС ИЗ ЗЕНОБИАН (да и сам мод шлак)! :angry:

Как разрешить разгавор с зомбинироваными сталкерами

СообщениеДобавлено: 20 авг 2012, 10:53
ROMCHA
Скачал мини-мод "Напарники" для FS 1.21 хотел проверить зомби-напарников (играю за монолит и зомби мне друзья) но у зомби-сталкеров даже не появлятся надпись о разгаворе! :unsure: КАК МНЕ СНЯТЬ ОГРАНИЧЕНИЕ чтоб зомби со мной говорили!
я так понял надо править файлы character_desc_zombied.xml (самих зомби), character_desc_yantar.xml, character_desc_pripyat.xml (где есть зомби) и етот файл тоже character_desc_simulation.xml

в character_desc_zombied.xml делал так

[Показать] Спойлер:
<specific_character id="zombied_veteran_default5" team_default = "1">
<name>Зомбированный сталкер</name>
<icon x="20" y="10"></icon>
<map_icon x="7" y="0"></map_icon>
<bio>Один из сталкеров, которым не повезло.</bio>

<team>Zombied</team>

<class>Zombied_veteran</class>
<community>zombied</community>

<rank>60</rank>
<reputation>-50</reputation>

<visual>actors\stalker_zombi\stalker_zombie6</visual>
<supplies>
[spawn] \n
wpn_walther \n
ammo_9x19_fmj = 1 \n
wpn_spas12 \n
ammo_12x70_buck = 1 \n
device_torch \n
</supplies>

<start_dialog>hello_dialog</start_dialog> -->> заменял ето
#include "gameplay\character_dialogs.xml" -->> на ето
<actor_dialog>general_pda_talk</actor_dialog>
<actor_dialog>esc_stalker_talk_level</actor_dialog>
</specific_character>

</xml>

и зомби начали говорить с игроком НО когда я хотел дать аптечку лежащему (раненому) зомби получился вылет
[Показать] Спойлер:
Expression : !phrase_dialog->m_PhraseVector.empty()
Function : CPhraseDialog::SayPhrase
File : E:\stalker\sources\trunk\xr_3da\xrGame\PhraseDialog.cpp
Line : 140
Description : No available phrase to say, dialog[dm_hello_dialog]

Помогите мне соеденить два мини мода и вшить в FS 1.21

СообщениеДобавлено: 21 авг 2012, 12:52
ROMCHA
Помогите мне соеденить два мини мода и вшить в FreePlayStart 1.21! ПОЖАЛУЙСТА!!!

Первый ето KZ companion 1.9 for FS1.21 fixed2!-- Адаптирован под FreePlayStart 1.21
Второй ето AI additions для сталкер тени ченобыля от Bak'а!
Вот ссылка на два етих мода :
http://letitbit.net/download/82555.80957f2ae8345079b6e4d3abf6ac/vopros_kak_vshit_dva_mini_moda_v_freeplaystart_1.21.rar.html
МОДЕР НЕ УДАЛЯЙ ТЕМУ ПОЖАЛУЙСТА!!!