Модостроение. Спавн и логика
|
|
denis2000 | Дата: Пн, 10.10.2011, 21:20 | Сообщение # 1 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Спавн и логика Создание объектов на локации и логика поведения этих объектов Если у вас появились вопросы по созданию динамических объектов в игре (НПС, монстры, аномалии, и т.п.) и настройке их "поведения". Задавайте их в этой теме - умные головы, модосторители и просто разбирающиеся в программировании люди вам ответят.
Много интересного материала здесь (wiki), Lua_help.script, Help из SDK 0.7
Сборник модостроения ЗП v10.10.11 (автор: XOBAH): *.CHM, *.HTML [cut noguest=Если у вас не открывается файл CHM]Если у вас не открывается файл: 1. Запустите [Пуск]=>[Выполнить] (либо хот-кей [WIN]+[R]) 2. Введите команду (без кавычек) "regsvr32 %windir%\system32\hhctrl.ocx" 3. Если вылезло окно об успешном завершении вы все сделали правильно и можете перезагружать компьютер (а может и не надо) Также: файлы МОГУТ не открываться если в пути к файлу есть: символы кириллицы, "_", "#" Также: есть не стандартные программы-просмоторщики CHM файлов. Например: FBReader[/cut]
[cut=Где найти лог игры после вылета]Что такое LOG ошибки, и как мне его найти? Это система отладки происходивших вылетов, которая подается игрой в форме текста, хотя не всегда. Для того чтоб найти LOG необходимо зайти вот сюда:
В Win хр лог находится:
C:\Documents and Settings\All Users\Документы\S.T.A.L.K.E.R. - Зов Припяти\logs
Затем открываете первый файл в формате TXT, и в нем отбираете с низу 25 строчек. После кидаете эти 25 строчек в сообщение на форум.
В Win7 лог находится C:\Users\Public\Documents\S.T.A.L.K.E.R. - Зов Припяти\logs
Путь к папке с логом можно найти открыв файл fsgame.ltx который находится в корневой директории ЗП, за это отвечает строка: ... $app_data_root$ = true | false| $fs_root$| users\(тут мы указываем что папка пользователя, будет хранится рядом с Fsgame.ltx) ... $logs$ = true| false| $app_data_root$| logs\(а тут мы указываем что в папке пользователя, в подпапке Logs будут храниться наши логи) ... [/cut][cut=Получение более подробной информации о вылете (ХОВАН)] Открываем файл _g.script и ищем такую функцию: function abort(fmt, ...) Там есть заккомментированная строчка "--error_log(reason)", ее и надо расскомментировать, должно получиться вот так: Code function abort(fmt, ...) local reason = string.format(fmt, ...) error_log(reason) end Вот для примера два одинаковых вылета, первый с функцией по умолчанию, второй - с поправленной функцией
Первый: Code Expression : !m_error_code Function : raii_guard::~raii_guard File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp Line : 748 Description : ....a.l.k.e.r. - Зов Припяти\gamedata\scripts\_g.script:478: bad argument #2 to 'format' (string expected, got nil) Второй: Code Expression : 0 Function : ErrorLog File : D:\prog_repository\sources\trunk\xrServerEntities\script_engine_script.cpp Line : 49 Description : 'Attempt to read a non-existant string field 'path_walk' in section 'walker@mechanic' [/cut]
Перед тем, как задать вопрос в этой теме, прочтите все предыдущие страницы, статьи в wiki по ссылке из шапки и соседнюю тему "Курс молодого бойца", возможно Ваш вопрос уже рассматривался.
Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки. Помните чем подробнее вопрос, тем точнее ответ.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
denis2000 | Дата: Вс, 02.11.2014, 19:23 | Сообщение # 1021 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| alex_xp_77, 1. Флаг то нулевой не будет работать, единицу ставьте 2. Имя точки то поставьте не |a=sit, а например wp00|a=sit 3. Я сомневаюсь что НПС залезет на ящик, сетка на ящике не связана с сеткой остальной локации. 4. Я сомневаюсь что данная анимация будет корректно работать на таком высоком объекте, посадка должна быть не выше стула.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
sergej5500 | Дата: Вт, 04.11.2014, 01:45 | Сообщение # 1022 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Доброй ночи. Возник такой вопрос.
В СГМ на Затоне имеется 200 рестрикторов такого типа.
[cut=Рестриктор][1626]
; cse_abstract properties section_name = space_restrictor name = zat_artefact_spawner_mod_00100 position = -206.499969482422, 6.18735694885254, 606.899963378906 direction = 0, 0, 0 id = 65535 version = 128 script_version = 12 spawn_id = 9149
; cse_alife_object properties game_vertex_id = 126 level_vertex_id = 530718 object_flags = 0xffffff3e custom_data = <<END [logic] cfg = scripts\zaton\create_zones\zat_create_zone_3.ltx END
; cse_shape properties shapes = 1 shape_0:type = sphere shape_0:offset = 0,0,0 shape_0:radius = 5
; cse_alife_space_restrictor properties restrictor_type = 3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[/cut]
[cut=Логика рестриктора][logic] active = sr_universal
[sr_universal] scheme_type = create_zone create_zone_when = every_night create_zone_items = af_cristall,af_fireball create_zone_level = zaton create_zone_radius = 4 create_zone_prob = 0.1[/cut]
Видимо, данный рестриктор должен спавнить артефакты. Как аномальная зона. Проходя СГМ, я на Затоне несколько раз находил артефакты за пределами традиционных аномальных зон.
Попробовал для интереса сделать подобную вещь на подключенном Кордоне.
[cut=Рестриктор][13953]
; cse_abstract properties section_name = space_restrictor name = esc_artefact_mod_spawner_0001 position = -245.303436279297, -13.9353618621826, -28.8752555847168 direction = 0, 0, 0 version = 128 script_version = 12 spawn_id = 12581
; cse_alife_object properties game_vertex_id = 1628 level_vertex_id = 15311 object_flags = 0xffffff3e custom_data = <<END [logic] cfg = scripts\escape\create_zones\esc_create_zones_1.ltx END
; cse_shape properties shapes = 1 shape_0:type = sphere shape_0:offset = 0,0,0 shape_0:radius = 50
; cse_alife_space_restrictor properties restrictor_type = 3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[/cut]
[cut=Логика][logic] active = sr_universal
[sr_universal] scheme_type = create_zone create_zone_when = every_night create_zone_items = af_cristall,af_fireball create_zone_level = escape create_zone_radius = 50 create_zone_prob = 0.99[/cut]
[cut=Коды из sr_universal]function action_universal:get_create_zone_spawn() return sgm_flags.table_mod_schemes[self.object:id()].create_zone_spawner_table[math.random(table.getn(sgm_flags.table_mod_schemes[self.object:id()].create_zone_spawner_table))] end function action_universal:create_zone_activate(scheme_param,when) if scheme_param.create_zone_cond=="true" then local var_fix="" if when=="surge_day" then var_fix="_sd" elseif when=="black_day" then var_fix="_bd" elseif when=="every_night" then var_fix="_an" end if sgm_flags["bool_"..when.."_end"]==true and (sgm_functions.read_obj_variable(self.object,"c_z_allow"..var_fix)==nil or sgm_functions.read_obj_variable(self.object,"c_z_allow"..var_fix)=="false") then sgm_functions.write_obj_variable(self.object,"c_z_allow"..var_fix,"true") elseif sgm_flags["bool_"..when.."_end"]==false and sgm_functions.read_obj_variable(self.object,"c_z_allow"..var_fix)~=nil then sgm_functions.clear_obj_variable(self.object,"c_z_allow"..var_fix) sgm_functions.clear_obj_variable(self.object,"c_z_spawned"..var_fix) end if sgm_functions.read_obj_variable(self.object,"c_z_allow"..var_fix)~=nil and sgm_functions.read_obj_variable(self.object,"c_z_allow"..var_fix)=="true" and sgm_functions.read_obj_variable(self.object,"c_z_spawned"..var_fix)==nil then if scheme_param.create_zone_full_spawn=="true" then local x=self.object:position().x+math.random(-scheme_param.create_zone_radius,scheme_param.create_zone_radius) local y=self.object:position().y local z=self.object:position().z+math.random(-scheme_param.create_zone_radius,scheme_param.create_zone_radius) for k,v in pairs(scheme_param.create_zone_spawner_table) do if math.random(100)<=scheme_param.create_zone_prob*100 then create(v,x,y,z,self.object:level_vertex_id(),self.object:game_vertex_id()) end end else local x=self.object:position().x+math.random(-scheme_param.create_zone_radius,scheme_param.create_zone_radius) local y=self.object:position().y local z=self.object:position().z+math.random(-scheme_param.create_zone_radius,scheme_param.create_zone_radius) if math.random(100)<=scheme_param.create_zone_prob*100 then create(self:get_create_zone_spawn(),x,y,z,self.object:level_vertex_id(),self.object:game_vertex_id()) end end sgm_functions.write_obj_variable(self.object,"c_z_spawned"..var_fix,"used") end end end
function action_universal:update(delta) local actor=db.actor local obj=self.object local scheme_param=sgm_flags.table_mod_schemes[self.object:id()] if xr_logic.try_switch_to_another_section(self.object,self.st,actor) then return end if scheme_param.update==nil then self:check_logic_condlists(self.object,self.st.saved_ini,self.st.saved_section) scheme_param.update=time_global()+2500 end if scheme_param.update~=nil then if time_global()>=scheme_param.update then scheme_param.update=nil end end if scheme_param.scheme_type=="noweap_zone" then self:noweap_zone_activate(scheme_param) end if scheme_param.scheme_type=="throw_zone" then self:throw_zone_activate(scheme_param) end if scheme_param.scheme_type=="sound_zone" then self:sound_zone_activate(scheme_param) end if scheme_param.scheme_type=="ambush_zone" then if check_seconds(2) then self:ambush_zone_activate(scheme_param) end end if scheme_param.scheme_type=="create_zone" then if check_seconds(1) then if level.name()==scheme_param.create_zone_level then self:create_zone_activate(scheme_param,scheme_param.create_zone_when) end end end if scheme_param.scheme_type=="level_change_zone" then if scheme_param.level_change_cond=="true" or has_alife_info("show_mod_level_changers") then self:level_change_setup_spots(scheme_param) end if utils.npc_in_zone(db.actor,self.object) then if sgm_flags.table_level_changes[self.object:id()]==false then sgm_flags.table_level_changes[self.object:id()]=true if scheme_param.level_change_silent_travel=="true" then if scheme_param.level_change_cond=="true" or has_alife_info("show_mod_level_changers") then set_ui_disabled() sgm_flags.bool_travel_level_change=true end else if scheme_param.level_change_cond=="true" or has_alife_info("show_mod_level_changers") then run_choose_box("yes_or_no","level_change",scheme_param.level_change_message_possible) else if scheme_param.level_change_hidden_mode=="false" then run_choose_box("ok","level_change",scheme_param.level_change_message_impossible) end end end end if sgm_flags.bool_travel_level_change==true then local x=tonumber(scheme_param.level_change_travel_coord[1]) local y=tonumber(scheme_param.level_change_travel_coord[2]) local z=tonumber(scheme_param.level_change_travel_coord[3]) local travel_hours=tonumber(scheme_param.level_change_travel_time[1]) local travel_minutes=tonumber(scheme_param.level_change_travel_time[2]) self:level_change_activate(x,y,z,scheme_param.level_change_autosave,travel_hours,travel_minutes) end if sgm_flags.bool_throw_level_change==true then local x=tonumber(scheme_param.level_change_throw_coord[1]) local y=tonumber(scheme_param.level_change_throw_coord[2]) local z=tonumber(scheme_param.level_change_throw_coord[3]) local h=tonumber(scheme_param.level_change_throw_coord[4]) if exists(scheme_param.level_change_throw_coord[5]) then if exists(scheme_param.level_change_throw_coord[6]) then if has_alife_info(tostring(scheme_param.level_change_throw_coord[6])) and dont_has_alife_info(tostring(scheme_param.level_change_throw_coord[5])) then give_info(tostring(scheme_param.level_change_throw_coord[5])) end else if dont_has_alife_info(tostring(scheme_param.level_change_throw_coord[5])) then give_info(tostring(scheme_param.level_change_throw_coord[5])) end end end self:level_change_throw_actor(x,y,z,h) sgm_flags.bool_throw_level_change=false end else if sgm_flags.table_level_changes[self.object:id()]==nil or sgm_flags.table_level_changes[self.object:id()]==true then sgm_flags.table_level_changes[self.object:id()]=false end end self:level_change_check_and_complete() end end
--\Команды: CREATE_ZONE\-- if scheme_param.scheme_type=="create_zone" then scheme_param.create_zone_cond = to_string(sgm_functions.check_section_condlist(ini,section,"create_zone_cond","true")) scheme_param.create_zone_when = to_string(sgm_functions.check_section_condlist(ini,section,"create_zone_when","black_day")) scheme_param.create_zone_items = sgm_functions.cfg_get_string(ini,section,"create_zone_items",nil) scheme_param.create_zone_level = to_string(sgm_functions.check_section_condlist(ini,section,"create_zone_level","zaton")) scheme_param.create_zone_full_spawn = to_string(sgm_functions.check_section_condlist(ini,section,"create_zone_full_spawn","false")) scheme_param.create_zone_radius = to_number(sgm_functions.check_section_condlist(ini,section,"create_zone_radius",5)) scheme_param.create_zone_prob = to_number(sgm_functions.check_section_condlist(ini,section,"create_zone_prob",0.2)) if exists(scheme_param.create_zone_items) then scheme_param.create_zone_spawner_table=parse_names(scheme_param.create_zone_items) end end[/cut]
Результат нулевой. Я сделал 12 рестрикторов. Расположил их компактно. Заспавнил себе Сварога. Несколько раз ходил в нужное место днем и ночью. Ни одного артефакта не нашёл. Вопрос: почему не заспавнились артефакты?
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 04.11.2014, 14:15 | Сообщение # 1023 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| sergej5500, Проверено, арты спавняться... Не делайте такой гигантский радиус спавна и учитывайте, что арт может откатиться от места спавна, плюс рестриктор срабатывает только один раз за всю игру!
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
sergej5500 | Дата: Вт, 04.11.2014, 14:26 | Сообщение # 1024 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| denis2000,
Спасибо за информацию. Решил сделать выбросы на подключенном Кордоне. Для пробы сделал укрытие.
[cut=Секция][67550000001]
; cse_abstract properties section_name = space_restrictor name = esc_smart_terrain_1_surge_1 position = -121.03, -30.05, -382.25 direction = 0, 0, 0 id = 65535 version = 128 script_version = 12 spawn_id = 2106
; cse_alife_object properties game_vertex_id = 1692 level_vertex_id = 136999 object_flags = 0xffffff3e
; cse_shape properties shapes = 4 shape_0:type = box shape_0:axis_x = 12.12,0,0 shape_0:axis_y = 0,6.25,0 shape_0:axis_z = 0,0,18.42 shape_0:offset = 0,0,0
shape_1:type = box shape_1:axis_x = 8,0,0 shape_1:axis_y = 0,6.25,0 shape_1:axis_z = 0,0,13 shape_1:offset = -20.73,0.36,24.84
shape_2:type = box shape_2:axis_x = 6.5,0,0 shape_2:axis_y = 0,6.25,0 shape_2:axis_z = 0,0,3.9 shape_2:offset = -13.97,0.36,26.25
shape_3:type = box shape_3:axis_x = 2.5,0,0 shape_3:axis_y = 0,6.25,0 shape_3:axis_z = 0,0,1.85 shape_3:offset = -15.82,0.36,23.63
; cse_alife_space_restrictor properties restrictor_type = 3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[/cut]
Сам рестриктор и первый шейп расположены в этом здании.
На нем висит маркер укрытия.
Три других шейпа накрывают первый этаж соседнего дома.
В нем можно прятаться. Маркер укрытия на него не переходит, если игрок к этому дому ближе. Можно ли сделать, чтобы маркер укрытия показывал ближайший шейп? Или надо делать ещё один рестриктор и шейпы привязывать к нему?
Сообщение отредактировал sergej5500 - Вт, 04.11.2014, 14:27 |
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 04.11.2014, 15:24 | Сообщение # 1025 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| sergej5500, Один рестриктор - одно укрытие! Переключение маркера между разными рестрикторами, а не шейпами одного рестриктора.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
sergej5500 | Дата: Вт, 04.11.2014, 20:19 | Сообщение # 1026 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| denis2000,
Спасибо за помощь. Еще один момент.
1. Имеется смарт - Южный Блокпост - esc_smart_terrain_1.
2. На нем три домика. Три укрытия.
esc_smart_terrain_1_surge_1 esc_smart_terrain_1_surge_2 esc_smart_terrain_1_surge_3.
3. В каждом домике прописано по три работы неписям при выбросе.
4. Как писать правильно работы? Индивидуально по конкретному укрытию?
esc_smart_terrain_1_surge_1_1_walk esc_smart_terrain_1_surge_1_1_look
Или нумерация должна быть общая для смарта?
esc_smart_terrain_1_surge_1_walk esc_smart_terrain_1_surge_1_look ... esc_smart_terrain_1_surge_9_walk esc_smart_terrain_1_surge_9_look
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 04.11.2014, 20:51 | Сообщение # 1027 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| sergej5500, Нумерация общая для смарта. Не важно в каком укрытии работа, главное чтобы внутри рестриктора защиты от выброса.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
alex_xp_77 | Дата: Чт, 06.11.2014, 13:01 | Сообщение # 1028 |
Научный сотрудник.
Ученые сталкеры
Сообщений: 242
| Цитата denis2000 ( ) Флаг то нулевой не будет работать, единицу ставьте Я так и сделал, поставил смарт на ящик, все работает без вылетов, нпс садится на корточки и все, не могу вспомнить что бы кто в тч вообще так сидел, кроме сидора, которого посадили на стул и все, он так и спавнится ...сидя! Мне интересно следующее, создал рядышком с сидячим сталкером, еще один смарт с sleep зоной, в игре один сталкер садится возле костра, другой же вместо сна садится на матрац и сидит на корточках, хотя по логике должен спать, как мне отделить смарты правильно, думаю что нпс как то спутали что ле логику, мне не понять, хотя ошибок в игре нет, может кто сталкивался с подобным??
|
|
|
Эти 0 пользователя(ей) поблагодарили alex_xp_77 за это полезное сообщение: |
|
|
denis2000 | Дата: Чт, 06.11.2014, 17:00 | Сообщение # 1029 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата alex_xp_77 ( ) кроме сидора, которого посадили на стул и все, он так и спавнится ...сидя! У Сидоровича уникальный скелет и соответственно анимации.
Штатные анимационные состояния описаны в файле state_lib.script берите какие нравятся, каких нет придется самим добавить.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
sergej5500 | Дата: Сб, 08.11.2014, 02:03 | Сообщение # 1030 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Доброй ночи. Возник такой вопрос. На некоторых локациях ЧН ограждающие локацию невидимые преграды есть не везде. Игрок может пройти "за забор" и свалиться с края локации. В принципе, можно закрыть проходы минами. Но их нужны десятки.
Возникла идея сделать рестриктор и добавить ему нужные шейпы. При входе в зону рестриктора игрок должен быстро погибнуть от радиации.
Вопрос, какой функцией, вызываемой из логики рестриктора, можно воспользоваться, что убить ГГ радиацией? Игрока надо убивать в любом костюме и с любыми читерскими артефактами.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
denis2000 | Дата: Сб, 08.11.2014, 10:15 | Сообщение # 1031 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| sergej5500, Поможет %=kill_actor%
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Дизель | Дата: Сб, 08.11.2014, 10:48 | Сообщение # 1032 |
Сталкер
Разработчики
Сообщений: 260
| denis2000, вопросы такие, хотя я догадываюсь в чём ответ:
Почему самолёты сделанные по классу вертолёта, летают иногда боком, с креном? Это быват редко, но бывает.
Почему автомобили, заспауненные на локации не на север, меняют заднюю на переднюю передачу?
Ответ по хели, скорее всего самолет не успевает на вей поинт и летит так как был в момент сработки логики. Ответ по авто, тут скрипты тупят или dll. Надо при сохранении, что бы авто сохранялось на север мордой. Как реализовать?
Еще вопрос, зачем в ЗП вырезали анимацию ГГ в авто? Тут опять dll покоцана, забыли прописать команду?
Разрабы убили ТЧ наработки в ЗП, жаль. Чем дальше в лес, тем ближе вылез.
andreyholkin
Сообщение отредактировал Дизель - Сб, 08.11.2014, 10:59 |
|
|
Эти 0 пользователя(ей) поблагодарили Дизель за это полезное сообщение: |
|
|
denis2000 | Дата: Сб, 08.11.2014, 12:06 | Сообщение # 1033 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата Дизель ( ) Почему самолёты сделанные по классу вертолёта, летают иногда боком, с креном? Правь скрипты управляющие вертолетом, это там.
На остальные вопросы ответить не могу.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
alex_xp_77 | Дата: Пн, 10.11.2014, 21:49 | Сообщение # 1034 |
Научный сотрудник.
Ученые сталкеры
Сообщений: 242
| Доброго времени суток уважаемые форумчане, у меня возник вопрос по спавну, дело в том что при убийстве любого нпс в игре он, или оно, больше не спавнится, у меня sdk04 к сожалению , спавн у 04 не встроенн, в отличии от более поздних версий (05)-(06), я уже задавал вопрос, но информация крайне скудна, и для новичка спавна, просто нет шансов разобраться самостоятельно, просьба у более грамотных коллег более подробно описать, как спавнить через sdk!!! Всьма благодарен за любую помощь!!
|
|
|
Эти 0 пользователя(ей) поблагодарили alex_xp_77 за это полезное сообщение: |
|
|
Дизель | Дата: Вт, 11.11.2014, 03:34 | Сообщение # 1035 |
Сталкер
Разработчики
Сообщений: 260
| alex_xp_77, спаунить можно к любой заковырке типа вей-поинт, граф-поинт. Только надо рестриктор заспаунить еще на событие и типа там ссылку на логику указать, а в логике написать примерно так:
[logic] active = sr_idle@game_start
[sr_idle@game_start] on_info = sr_idle@timer % =spawn_object(avto_lider_post:avto_lider_post_spawn) %
[sr_idle@timer] on_game_timer = 40 | sr_idle@nil
[sr_idle@nil]
Может я туплю и забыл как в ТЧ работает это, но в ЗП так точно можно.
=spawn_object(avto_lider_post:avto_lider_post_spawn)
в скобках (название перса : вейпоинт)
andreyholkin
|
|
|
Эти 0 пользователя(ей) поблагодарили Дизель за это полезное сообщение: |
|
|
|