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

тут будет хранится инфа о том что и где и как сделать
here would be stored information on what where and how possible to do
Правила форума
постарайтесь сохранять в данной ветке чистоту.. и так как форум позволяет - основная главная информация - в первом сообщении темы а дальше обсуждение, и по мере развития обсуждений обновляйте первое сообщение, чтоб человек зашел и получил то что надо не копаясь в дискуссиях
keep this thread in clean.. and as soon as forum gives such ability store main important and "up to date" information in first message in thread. and while all discussion revolvings update first message if needed. so anyone could enter thread and get all newest info from first message not messing in discussions

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

Сообщение ROMCHA » 15 авг 2012, 17:47

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
}
ROMCHA
 
Сообщения: 11
Зарегистрирован: 01 дек 2011, 23:58

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

Сообщение kstn » 16 авг 2012, 13:57

Облажался как раз ты, а не 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.
kstn
 
Сообщения: 135
Зарегистрирован: 17 июл 2009, 13:10

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

Сообщение ROMCHA » 17 авг 2012, 09:44

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

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

Сообщение kstn » 17 авг 2012, 16:12

ROMCHA писал(а):А ГДЕ БРАТЬ story_id?

game_story_ids.ltx
all.spawn(freeplay.spawn)
kstn
 
Сообщения: 135
Зарегистрирован: 17 июл 2009, 13:10

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

Сообщение ROMCHA » 18 авг 2012, 20:40

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
Последний раз редактировалось ROMCHA 31 авг 2012, 09:43, всего редактировалось 1 раз.
ROMCHA
 
Сообщения: 11
Зарегистрирован: 01 дек 2011, 23:58

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

Сообщение ROMCHA » 18 авг 2012, 21:29

Скриптёры ПАМАГИТЕ как вырезать яд из 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:
Последний раз редактировалось [Ork] 20 авг 2012, 10:43, всего редактировалось 3 раз(а).
Причина: Используй [spoiler=][/spoiler] для большого текста, пиши грамотно и не строчи много тем - пиши в одной
ROMCHA
 
Сообщения: 11
Зарегистрирован: 01 дек 2011, 23:58

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

Сообщение ROMCHA » 20 авг 2012, 10:53

Скачал мини-мод "Напарники" для 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]
ROMCHA
 
Сообщения: 11
Зарегистрирован: 01 дек 2011, 23:58

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

Сообщение ROMCHA » 21 авг 2012, 12:52

Помогите мне соеденить два мини мода и вшить в 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
МОДЕР НЕ УДАЛЯЙ ТЕМУ ПОЖАЛУЙСТА!!!
ROMCHA
 
Сообщения: 11
Зарегистрирован: 01 дек 2011, 23:58

-

Сообщение Lloydbef » 26 июл 2022, 05:08

Ищу исходники качественных игр не мобильных, чтобы потренироваться на них реализовывать свои идеи без фундаментальной разработки с нуля. Игры нужны на C# и Unity3d.
Проблема: отсутствие исходников игр хотя бы отдаленно напоминающих ААА-класс. Встречал исходники-заготовки на Unity для шутеров и RPG, но это даже играми назвать нельзя - прототипы.
Как вариант - сделать мод для популярной игры, если разработчики предоставили возможность модификаций на Unity. Не слышали о таких играх?
Что посоветуете?
Lloydbef
 
Сообщения: 2
Зарегистрирован: 17 июл 2022, 03:24
Откуда: Россия


Вернуться в Копилка мудрости (Wisdom storage)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron