|
Модостроение. Спавн и логика
|
|
| 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 за это полезное сообщение: |
|
|
| sergej5500 | Дата: Вс, 03.01.2016, 23:35 | Сообщение # 1216 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Shyr,
Каким образом вызывается функция спавна spawn_igor ?
|
| |
|
| Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
| Shyr | Дата: Вс, 03.01.2016, 23:44 | Сообщение # 1217 |
 Отмычка
Пользователи
Сообщений: 38
| sergej5500, без понятия, я на моменте спавна и завис.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили Shyr за это полезное сообщение: |
|
|
| sergej5500 | Дата: Вс, 03.01.2016, 23:51 | Сообщение # 1218 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Shyr,
В ваших файлах именно функция spawn_igor обеспечивает появление непися на локации. Когда вы обеспечите её запуск, тогда непись и появится. Вариантов запуска масса. Непися можно заспавнить по горячей клавише, в диалоге и т.д.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
| Shyr | Дата: Вс, 03.01.2016, 23:54 | Сообщение # 1219 |
 Отмычка
Пользователи
Сообщений: 38
| sergej5500, не скромный вопрос: а где я могу подсмотреть как обеспечить ее запуск?
|
| |
|
| Эти 0 пользователя(ей) поблагодарили Shyr за это полезное сообщение: |
|
|
| sergej5500 | Дата: Пн, 04.01.2016, 00:07 | Сообщение # 1220 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Shyr,
Можете посмотреть этот урок.
Вместо кода
elseif db.actor~=nil and dik==DIK_keys.DIK_F6 then local p=vector(),lv,gv p.x=db.actor:position().x+3 p.y=db.actor:position().y p.z=db.actor:position().z lv=db.actor:level_vertex_id() gv=db.actor:game_vertex_id() alife():create("zat_sh_nikitka_skadovsk",p,lv,gv)
можно написать
elseif db.actor~=nil and dik==DIK_keys.DIK_F6 then igor.spawn_igor()
И нажать в игре ESC-F6-ESC. Это самый простой способ запустить скрипт.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
| Shyr | Дата: Вт, 05.01.2016, 19:05 | Сообщение # 1221 |
 Отмычка
Пользователи
Сообщений: 38
| sergej5500, хорошо, спасибо, обязательно прсмотрю. Если что к вам можно будет в дальнейшем обратится за советом? Добавлено (05.01.2016, 19:05) --------------------------------------------- sergej5500, все сделал как в уроке было описано, но при попытке загрузить игру вылетает с логом: [cut=Лог]Loading DLL: xrRender_R1.dll Loading DLL: xrGame.dll ! Unable to find Software\GSC Game World\STALKER-COP\ in registry ! Player name registry key (InstallUserName) not found ! * [win32]: free[1974072 K], reserved[33128 K], committed[89888 K] * [ D3D ]: textures[0 K] * [x-ray]: crt heap[22129 K], process heap[2153 K], game lua[0 K], render[0 K] * [x-ray]: economy: strings[27625 K], smem[0 K] SOUND: OpenAL: enumerate devices... SOUND: OpenAL: EnumerationExtension Present dir[0]=D:\Games\S.T.A.L.K.E.R._S.N.I.P.E.R\bin\ dir[1]=D:\Games\S.T.A.L.K.E.R._S.N.I.P.E.R\ dir[2]=D:\Games\S.T.A.L.K.E.R._S.N.I.P.E.R\bin\ dir[3]=C:\WINDOWS\system32\ CleanDeviceSpecifierList CleanDeviceSpecifierList Generic Hardware devices Generic Hardware SOUND: OpenAL: system default SndDevice name is Generic Hardware SOUND: OpenAL: default SndDevice name set to Generic Software SOUND: OpenAL: All available devices: 1. Generic Software, Spec Version 1.1 (default) eax[0] efx[no] xram[no] 2. Generic Software, Spec Version 1.1 (default) eax[0] efx[no] xram[no] Executing config-script "d:\games\s.t.a.l.k.e.r._s.n.i.p.e.r\gamedata\configs\default_controls.ltx"... [d:\games\s.t.a.l.k.e.r._s.n.i.p.e.r\gamedata\configs\default_controls.ltx] successfully loaded. Executing config-script "user.ltx"... Executing config-script "d:\games\s.t.a.l.k.e.r._s.n.i.p.e.r\gamedata\configs\rspec_minimum.ltx"... ~ Invalid syntax in call to 'r__detail_density' ~ Valid arguments: float value in range [0.200,0.600] [d:\games\s.t.a.l.k.e.r._s.n.i.p.e.r\gamedata\configs\rspec_minimum.ltx] successfully loaded. Executing config-script "d:\games\s.t.a.l.k.e.r._s.n.i.p.e.r\gamedata\configs\default_controls.ltx"... [d:\games\s.t.a.l.k.e.r._s.n.i.p.e.r\gamedata\configs\default_controls.ltx] successfully loaded. ~ Invalid syntax in call to 'r2_aa_break' ~ Valid arguments: vector3 in range [0.000000e+000,0.000000e+000,0.000000e+000]-[1.000000e+000,1.000000e+000,1.000000e+000] ~ Invalid syntax in call to 'r2_aa_weight' ~ Valid arguments: vector3 in range [0.000000e+000,0.000000e+000,0.000000e+000]-[1.000000e+000,1.000000e+000,1.000000e+000] ~ Invalid syntax in call to 'sv_adm_menu_ban_time' ~ Valid arguments: ui_mp_am_10_minutes/ui_mp_am_30_minutes/ui_mp_am_1_hour/ui_mp_am_6_hours/ui_mp_am_1_day/ui_mp_am_1_week/ui_mp_am_1_month/ui_mp_am_3_monthes/ui_mp_am_forever [users\user.ltx] successfully loaded. SOUND: Selected device is Generic Software * sound: EAX 2.0 extension: absent * sound: EAX 2.0 deferred: absent * sound : cache: 32768 kb, 2428 lines, 13820 bpl Starting RENDER device... * GPU [vendor:10DE]-[device:A20]: NVIDIA GeForce GT 220 * GPU driver: 6.14.11.9621 * CREATE: DeviceREF: 1 * Vertex Processor: PURE HARDWARE * Texture memory: 995 M * DDI-level: 9.0 * GPU shading: vs(fffe0300/3.0/30), ps(ffff0300/3.0/30) * GPU vertex cache: recognized, 24 * NVidia MGPU: Logical(1), Physical(1) * Starting rendering as 2-GPU. * DVB created: 1536K * DIB created: 512K * distortion: used, dev(30),need(14) * color_mapping: used, dev(30),need(14) * SSample: 1280x1024 compiling shader postprocess compiling shader postprocess_d compiling shader postprocess_cm_pre * SSample: enabled compiling shader particle_distort compiling shader particle compiling shader particle - r__tf_aniso 1 - r1_tf_mipbias 0. compiling shader simple_color compiling shader portal compiling shader editor compiling shader sky2 compiling shader sky2 compiling shader clouds compiling shader clouds Starting engine... FATAL ERROR [error]Expression : false [error]Function : ParseFile [error]File : D:\prog_repository\sources\trunk\xrXMLParser\xrXMLParser.cpp [error]Line : 48 [error]Description : XML file[$game_config$] parsing failed. Can't find include file:[gameplay\character_undying.xml]
stack trace:
[/cut] Подскажите, пожалуйса, в чем проблема и как ее решить?
Сообщение отредактировал Shyr - Пн, 04.01.2016, 00:28 |
| |
|
| Эти 0 пользователя(ей) поблагодарили Shyr за это полезное сообщение: |
|
|
| denis2000 | Дата: Вт, 05.01.2016, 19:58 | Сообщение # 1222 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата Shyr (  ) Can't find include file:[gameplay\character_undying.xml] Не может найти указанный подключаемый файл.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| Shyr | Дата: Вт, 05.01.2016, 23:58 | Сообщение # 1223 |
 Отмычка
Пользователи
Сообщений: 38
| denis2000, но такого файла в игре нет, я специально даже переустановил игру (работает), но такого файла в ней не нашел. Т.е. выходит так: как только я внедряю игру файлы с новым НПС игра вылетает на стадии входа в нее; без внедрения нового НПС все работает отлично.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили Shyr за это полезное сообщение: |
|
|
| sergej5500 | Дата: Ср, 06.01.2016, 00:31 | Сообщение # 1224 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Цитата Shyr (  ) но такого файла в игре нет, я специально даже переустановил игру (работает)
Игра считывает названия файлов из строки
specific_characters_files = character_desc_general, character_desc_zaton, character_desc_pripyat, character_desc_jupiter, character_desc_underpass, ...
в файле gamedata\configs\system
Если файл с вашим неписем называется igor, то и писать надо правильно. Как то так
specific_characters_files = character_desc_general, character_desc_zaton, character_desc_pripyat, character_desc_jupiter, character_desc_underpass, igor
Кстати, файл с профилем непися igor_profile тоже регистрируется в файле system.
Секция
[profiles] ;список xml файлов, содержаих профили сталкеров и торговцев files = npc_profile, ...
|
| |
|
| Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
| Shyr | Дата: Пт, 08.01.2016, 12:30 | Сообщение # 1225 |
 Отмычка
Пользователи
Сообщений: 38
| sergej5500, все это проверил, везде все подключено, все равно выдает ту же ошибку.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили Shyr за это полезное сообщение: |
|
|
| denis2000 | Дата: Пт, 08.01.2016, 18:22 | Сообщение # 1226 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Shyr, Проблема не в том, что все везде подключено, а в том что подключено не существующее!
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| prohodchik | Дата: Сб, 16.01.2016, 20:50 | Сообщение # 1227 |
 Новичок
Пользователи
Сообщений: 50
| Добрый день! В Зове Припяти есть ряд отрядов, прописанных не месте с их лидером. Например, на КПП и складе контейнеров (Юпитер). Где можно их найти и заменить на другие(скажем, сменить группировку)?
Проект в разработке – "Болотные легенды"
Сообщение отредактировал prohodchik - Сб, 16.01.2016, 20:57 |
| |
|
| Эти 0 пользователя(ей) поблагодарили prohodchik за это полезное сообщение: |
|
|
| denis2000 | Дата: Вс, 17.01.2016, 11:58 | Сообщение # 1228 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата prohodchik (  ) Где можно их найти и заменить на другие(скажем, сменить группировку)? Посмотрите, например в SDK имена смарт-терейнов в этих местах и отредактирует кто будет спавниться там в начале игры в simulation.ltx
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| gamer | Дата: Вс, 28.02.2016, 19:05 | Сообщение # 1229 |
|
Новичок
Пользователи
Сообщений: 82
| Подскажите сюда можно поставить любые вертексы локации ,? [cut noguest]--[[ ----------------------------------------------------------------------------------------------- File : slx_horror.script Build : ver. 0.1 Description : Часик Ужаса Copyright : 2009 ©Меченый(Стрелок) aka Golubev Anton Author : Меченый(Стрелок) --]] -----------------------------------------------------------------------------------------------
mutants = { "bloodsucker_hell", "boar_hell", "burer_hell", "snork_hell", "rat_hell", "tushkano_hell", "zanoza_hell", "zombie_hell", "zombie_ghost_hell", "gigant_hell", "psy_dog_hell", "pseudodog_hell", "poltergeist_hell", "pogrom_hell", "lurker_hell", "fracture_hell", "zombie_kamikaze_hell", "flesh_hell", "dog_hell", "controller_hell", "chimera_hell", "cat_hell", "ghoul_hell", "poltergeist_fire_hell" }
remove_hell = true
function start_prehell() if level.name() == "military" then if ars_mod.is_sleep_active() then ars_mod.stopper() end --\\*Блик level.add_pp_effector("teleport.ppe", 2006, false) --\\*Сирена local sound = sound_object([[meceniy\hell\hellsilent_hill_alarm]]) local snd_obj = sound_object([[meceniy\hell\hellsilent_hill_alarm]]) --\\*Звук толчка xr_sound.set_sound_play(db.actor:id(), "blowout_begin") --\\*Проигрываем Сирену sound:play_at_pos(db.actor, db.actor:position(), 0) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 2.5) --\\*Толчек level.add_cam_effector("camera_effects\\earthquake.anm", 1974, true, "") --\\*Выдаём рандомное сообщение start_hell_news() --\\*Задаём погоду level.set_weather("default_cloudy",true) --\\*Проигрываем эффекты выброса level.set_weather_fx("marsh_fx_surge_day_1") --\\*Запускаем таймер до старта основной функции ars_cop.g_start_timer("hell_time",0,0,math.random(4,10)) else news_manager.send_tip(db.actor, "%c[255,160,160,160]".."Общий канал:".."\\n".."%c[255,255,128,128]Внимание! С минуты на минуту наступит Час Ужаса! Если вы забрели на Милитари, ищите укрытие понадёжнее!".."".."\n", nil, nil, 30000) if not ars_cop.is_g_timer_exists("pre_hell_time") then ars_cop.g_start_timer("pre_hell_time",0, 48 + math.random(-4,4), 0) end end end function start_hell() if level.name() == "zaton" then level.add_pp_effector("teleport.ppe", 2006, false) local section = mutants[math.random(table.getn(mutants))] xr_sound.set_sound_play(db.actor:id(), "blowout_begin") level.set_weather_fx("marsh_fx_surge_day_1") level.add_pp_effector("snd_shock.ppe", 20080401, false) level.add_pp_effector("psychic.ppe", 20081017, false) level.add_pp_effector("psy_antenna.ppe", 20081018, false) level.add_pp_effector("psi.ppe", 20081019, false) level.add_pp_effector("alcohol.ppe", 20081020, false) level.add_cam_effector("camera_effects\\shell_shock.anm", 20080501, false, "") level.add_pp_effector("snd_shock.ppe", 20080401, false) level.set_pp_effector_factor(20080401, 0, 1) hell_memoryhit() horrorspawner(math.random(4,8)) horror_nearest_spawn(section,math.random(4,8)) hell_news() hell_spawn_phantom() ars_cop.g_start_timer("hell_time_end",0,0,math.random(10,15)) end end function stop_hell() level.add_pp_effector("teleport.ppe", 2006, false) level.remove_pp_effector(20080401) level.remove_pp_effector(20081017) level.remove_pp_effector(20081018) level.remove_pp_effector(20081019) level.remove_pp_effector(20081020) level.remove_cam_effector(1974) level.remove_cam_effector(20080501) level.set_weather("default_cloudy",true) xr_sound.set_sound_play(db.actor:id(), "blowout_begin") level.set_weather_fx("marsh_fx_surge_day_1") remove_hell_mutant() if not ars_cop.is_g_timer_exists("pre_hell_time") then ars_cop.g_start_timer("pre_hell_time",0, 36 + math.random(-4,4), 0) end end
function remove_hell_mutant() if remove_hell then for i=1,63535 do local hell_m = level.object_by_id(i) if hell_m~=nil then if IsMonster(hell_m) then if string.find(hell_m:section(),"_hell") then alife():release(alife():object(hell_m:id()), true) end end end end end end
function horror_nearest_spawn(section,count) local noobposition = db.actor:position() local xnoob = math.random(1,90) local znoob = math.random(1,90) local nmpos = vector():set( noobposition.x + xnoob, noobposition.y + 4, noobposition.z + znoob ) for i=1,count do alife():create(section, nmpos, db.actor:level_vertex_id(), db.actor:game_vertex_id()) end end
function horrorspawner(count) local section = mutants[math.random(table.getn(mutants))] local gv = vertexess[level.name()]["gvid"] local lv = math.random(vertexess[level.name()]["lvid"]) for ind = 1, count do alife():create(section, level.vertex_position(lv), lv, gv) end end function start_hell_news() local horrornew = math.random(1,8) if horrornew == 1 then new1() end if horrornew == 2 then new2() end if horrornew == 3 then new3() end if horrornew == 4 then new4() end end function new1() news_manager.send_tip(db.actor, "%c[255,160,160,160]".."Общий канал:".."\\n".."%c[255,255,128,128]Доктор, пора... Включайте...".."".."\n", nil, nil, 30000) end function new2() news_manager.send_tip(db.actor, "%c[255,160,160,160]".."Общий канал:".."\\n".."%c[255,255,128,128]Лейтенант, уводите людей, если хотите остаться при всех солдатах.. Сейчас её включат...".."".."\n", nil, nil, 30000) end function new3() news_manager.send_tip(db.actor, "%c[255,160,160,160]".."Общий канал:".."\\n".."%c[255,255,128,128]Господи... Мы не успеваем... Напишите за меня жене.".."".."\n", nil, nil, 30000) end function new4() news_manager.send_tip(db.actor, "%c[255,160,160,160]".."Общий канал:".."\\n".."%c[255,255,128,128]Хех... Сегодня этих ворюг станет куда меньше... Доктор... Мы готовы.".."".."\n", nil, nil, 30000) end function hell_memoryhit() local hit = hit() hit.power = 0.3 hit.direction=vector():set(0,0,0) hit.impulse = 0.3 hit.draftsman = db.actor hit.type = hit.telepatic db.actor:hit(hit) end
--\\*Выбираем Рандомное Сообщение function hell_news() local horrornews = math.random(1,7) if horrornews == 1 then news1() end if horrornews == 2 then news2() end if horrornews == 3 then news3() end if horrornews == 4 then news4() end if horrornews == 5 then news5() end if horrornews == 6 then news6() end if horrornews == 7 then news7() end end function news1() news_manager.send_tip(db.actor, "%c[255,160,160,160]".."Общий канал:".."\\n".."%c[255,255,128,128]Все в укрытие!!! Началось!!!".."".."\n", nil, nil, 30000) end function news2() news_manager.send_tip(db.actor, "%c[255,160,160,160]".."Общий канал:".."\\n".."%c[255,255,128,128]Мутанты!!! Они повсюду!!! Круши их!!!".."".."\n", nil, nil, 30000) end function news3() news_manager.send_tip(db.actor, "%c[255,160,160,160]".."Общий канал:".."\\n".."%c[255,255,128,128] Брат!!! ПОМОГАЙ!!!".."".."\n", nil, nil, 30000) end function news4() news_manager.send_tip(db.actor, "%c[255,160,160,160]".."Общий канал:".."\\n".."%c[255,255,128,128]НАРОД!!! ЗОМБИ ОТОВСЮДУ ЛЕЗУТ!!! ВЫРУЧАЙТЕ БРАТЦЫ!!!".."".."\n", nil, nil, 30000) end function news5() news_manager.send_tip(db.actor, "%c[255,160,160,160]".."Общий канал:".."\\n".."%c[255,255,128,128]Зомби окружили бункер... Круглов, если слышишь, то не иди через болота, сам знаешь почему...".."".."\n", nil, nil, 30000) end function news6() news_manager.send_tip(db.actor, "%c[255,160,160,160]".."Общий канал:".."\\n".."%c[255,255,128,128]Бойцы, это очередной шанс доказать, что мы ЛУЧШИЕ!.. КРУШИ НЕЧИСТЬ!!!".."".."\n", nil, nil, 30000) end function news7() news_manager.send_tip(db.actor, "%c[255,160,160,160]".."Общий Канал:".."\\n".."%c[255,255,128,128]Братья... Кроши уродов...".."".."\n", nil, nil, 30000) end function hell_spawn_phantom() local i local q = math.random(5,15) local yaw = math.pi*2.0*math.random() local radius = 30*(math.random()/2.0+0.5) local height = 2.5*math.random() local a_pos = db.actor:position() local pos = vector():set(math.sin(yaw)*radius+a_pos.x,a_pos.y+height,math.cos(yaw)*radius+a_pos.z) for i = 1, q do phantom_manager.spawn_phantom(pos) end end
vertexess={
marsh={lvid =528961,gvid=244}, garbage={lvid=358066,gvid=471}, escape={lvid=624951,gvid=742}, darkvalley={lvid=360974,gvid=960}, red_forest={lvid=164829,gvid=1056}, agroprom={lvid=375233,gvid=1211}, yantar={lvid=147712,gvid=1312}, military={lvid=385322,gvid=1510}, agroprom_underground={lvid=5348,gvid=1523}, limansk={lvid=61524,gvid=1564}, stancia_2={lvid=203361,gvid=1572}, hospital={lvid=7865,gvid=1619} }[/cut]
Сообщение отредактировал gamer - Вс, 28.02.2016, 19:08 |
| |
|
| Эти 0 пользователя(ей) поблагодарили gamer за это полезное сообщение: |
|
|
| denis2000 | Дата: Пн, 29.02.2016, 08:26 | Сообщение # 1230 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| gamer, Любые существующие в вашем варианте геймграфа.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
|