Модостроение. Спавн и логика
|
|
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 за это полезное сообщение: |
|
|
Ay49Mihas | Дата: Пн, 18.08.2014, 20:23 | Сообщение # 976 |
Полевой исследователь
Ученые сталкеры
Сообщений: 218
| Здравствуйте! В SGM 2.2 воспользовался для персонажа схемой move, типом patrol (по аналогии с проводником в Тёмной Долине). Всё прекрасно работает, паренёк бежит по заданному пути, но тут вдруг я реил стрельнуть в лежащую далеко (от непися с логикой) бочку, которая взорвалась. После этого непись добежал до ближайшей точки в пути и остановился, дальше не бежит. Почему так? PS: со скриптами реализации секций логики совсем не дружен, так что если это штатный режим, то посоветуйте, пожалуйста, рецепт как исправить. Спасибо!
|
|
|
Эти 0 пользователя(ей) поблагодарили Ay49Mihas за это полезное сообщение: |
|
|
sergej5500 | Дата: Пн, 18.08.2014, 20:46 | Сообщение # 977 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Ay49Mihas,
Попробуй прописать в стартовую секцию логики [logic] строку:
post_combat_time = 0,0.
Или переделай логику под валкера. Валкеры зависают намного реже.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
Ay49Mihas | Дата: Вт, 19.08.2014, 19:08 | Сообщение # 978 |
Полевой исследователь
Ученые сталкеры
Сообщений: 218
| Цитата sergej5500 ( ) Попробуй прописать в стартовую секцию логики [logic] строку: post_combat_time = 0,0. Увы, не сработало.
Цитата sergej5500 ( ) Или переделай логику под валкера. Валкеры зависают намного реже. А вот это сработало Действительно, с валкера отвлёкшись, непись через некоторое время возвращается на свой путь и идёт как ни в чём не бывало дальше.
|
|
|
Эти 0 пользователя(ей) поблагодарили Ay49Mihas за это полезное сообщение: |
|
|
sergej5500 | Дата: Чт, 21.08.2014, 11:44 | Сообщение # 979 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Всем привет. Решил добавить в СГМ 2.1 квест "Гон" из Геонезис Аддон на защиту склада Долга. Немного переделал его.
[cut=Фрагмент логики рестриктора.][sr_idle@spawn_1_1] on_info = sr_idle@timer_1_1 %=jup_b220_gon_monster_spawn% on_info2 = {=distance_to_obj_ge(jup_b207_trapper_gon_spot:150)} sr_idle@fail %+jup_b220_stalker_gon_squad_enemy% on_info3 = {+jup_b220_stalker_gon_squad_enemy} sr_idle@fail
[sr_idle@timer_1_1] on_game_timer = 10 | sr_idle@exist_1_1 on_info = {=distance_to_obj_ge(jup_b207_trapper_gon_spot:150)} sr_idle@fail %+jup_b220_stalker_gon_squad_enemy% on_info2 = {+jup_b220_stalker_gon_squad_enemy} sr_idle@fail
[sr_idle@exist_1_1] on_info = {!squad_exist(jup_b220_monster_gon_squad)} sr_idle@spawn_1_2 %=add_cleaner_monster% on_info2 = {=distance_to_obj_ge(jup_b207_trapper_gon_spot:150)} sr_idle@fail %+jup_b220_stalker_gon_squad_enemy% on_info3 = {+jup_b220_stalker_gon_squad_enemy} sr_idle@fail
[sr_idle@spawn_1_2] on_info = sr_idle@timer_1_2 %=jup_b220_gon_monster_spawn% on_info2 = {=distance_to_obj_ge(jup_b207_trapper_gon_spot:150)} sr_idle@fail %+jup_b220_stalker_gon_squad_enemy% on_info3 = {+jup_b220_stalker_gon_squad_enemy} sr_idle@fail
[sr_idle@timer_1_2] on_game_timer = 10 | sr_idle@exist_1_2 on_info = {=distance_to_obj_ge(jup_b207_trapper_gon_spot:150)} sr_idle@fail %+jup_b220_stalker_gon_squad_enemy% on_info2 = {+jup_b220_stalker_gon_squad_enemy} sr_idle@fail
[sr_idle@exist_1_2] on_info = {!squad_exist(jup_b220_monster_gon_squad)} sr_idle@spawn_1_3 %=add_cleaner_monster% on_info2 = {=distance_to_obj_ge(jup_b207_trapper_gon_spot:150)} sr_idle@fail %+jup_b220_stalker_gon_squad_enemy% on_info3 = {+jup_b220_stalker_gon_squad_enemy} sr_idle@fail[/cut]
[cut=Монстры][jup_b220_monster_bloodsucker_squad]:online_offline_group faction = monster_predatory_night npc = sgm_monster_bloodsucker_normal, sgm_monster_bloodsucker_normal, sgm_monster_bloodsucker_normal story_id = jup_b220_monster_gon_squad target_smart = jup_b207 always_arrived = true
[jup_b220_monster_boar_squad]:online_offline_group faction = monster_vegetarian npc = sgm_monster_boar_normal, sgm_monster_boar_normal, sgm_monster_boar_normal, sgm_monster_boar_normal, sgm_monster_boar_normal, sgm_monster_boar_normal, sgm_monster_boar_normal, sgm_monster_boar_normal, sgm_monster_boar_normal story_id = jup_b220_monster_gon_squad target_smart = jup_b207 always_arrived = true
[jup_b220_monster_flesh_squad]:online_offline_group faction = monster_vegetarian npc = sgm_monster_flesh_normal, sgm_monster_flesh_normal, sgm_monster_flesh_normal, sgm_monster_flesh_normal, sgm_monster_flesh_normal, sgm_monster_flesh_normal, sgm_monster_flesh_normal, sgm_monster_flesh_normal, sgm_monster_flesh_normal, sgm_monster_flesh_normal, sgm_monster_flesh_normal, sgm_monster_flesh_normal story_id = jup_b220_monster_gon_squad target_smart = jup_b207 always_arrived = true
[jup_b220_monster_pseudodog_squad]:online_offline_group faction = monster_predatory_day npc = sgm_monster_pseudodog_normal, sgm_monster_pseudodog_normal, sgm_monster_pseudodog_normal, sgm_monster_pseudodog_normal, sgm_monster_pseudodog_normal, sgm_monster_pseudodog_normal target_smart = jup_b207 always_arrived = true
[jup_b220_monster_dog_squad]:online_offline_group faction = monster_predatory_day npc = sgm_monster_dog_normal, sgm_monster_dog_normal, sgm_monster_dog_normal, sgm_monster_dog_normal, sgm_monster_dog_normal, sgm_monster_dog_normal, sgm_monster_dog_normal, sgm_monster_dog_normal, sgm_monster_dog_normal, sgm_monster_dog_normal, sgm_monster_dog_normal, sgm_monster_dog_normal story_id = jup_b220_monster_gon_squad target_smart = jup_b207 always_arrived = true
[jup_b220_monster_snork_squad]:online_offline_group faction = monster_zombied_night npc = sgm_monster_snork_normal, sgm_monster_snork_normal, sgm_monster_snork_normal, sgm_monster_snork_normal, sgm_monster_snork_normal, sgm_monster_snork_normal, sgm_monster_snork_normal, sgm_monster_snork_normal, sgm_monster_snork_normal story_id = jup_b220_monster_gon_squad target_smart = jup_b207 always_arrived = true
[jup_b220_monster_chimera_squad]:online_offline_group faction = monster_predatory_night npc = sgm_monster_chimera_normal, sgm_monster_chimera_normal, sgm_monster_chimera_normal story_id = jup_b220_monster_gon_squad target_smart = jup_b207 always_arrived = true
[jup_b220_monster_gigant_squad]:online_offline_group faction = monster_predatory_day npc = sgm_monster_gigant_normal, sgm_monster_gigant_normal story_id = jup_b220_monster_gon_squad target_smart = jup_b207 always_arrived = true
[jup_b220_monster_burer_squad]:online_offline_group faction = monster_zombied_night npc = sgm_monster_burer_normal, sgm_monster_burer_normal, sgm_monster_burer_normal story_id = jup_b220_monster_gon_squad target_smart = jup_b207 always_arrived = true
[jup_b220_monster_psy_dog_squad]:online_offline_group faction = monster_predatory_day npc = sgm_monster_psy_dog_normal, sgm_monster_psy_dog_normal, sgm_monster_psy_dog_normal, sgm_monster_psy_dog_normal, sgm_monster_psy_dog_normal, sgm_monster_psy_dog_normal target_smart = jup_b207 always_arrived = true
[jup_b220_monster_controller_squad]:online_offline_group faction = monster_zombied_day npc = sgm_monster_controller_normal, sgm_monster_controller_normal, sgm_monster_controller_normal story_id = jup_b220_monster_gon_squad target_smart = jup_b207 always_arrived = true [/cut]
[cut=Функция спавна] function jup_b220_gon_monster_spawn() local jup_b220_gon_monster_pos_random=math.random(1,6) local jup_b220_gon_monster_squad_random=math.random(1,11) if jup_b220_gon_monster_pos_random==1 then if jup_b220_gon_monster_squad_random==1 then create_force("jup_b220_monster_bloodsucker_squad",69.019668579102,-1.3870533704758,146.45944213867,833767,648) end if jup_b220_gon_monster_squad_random==2 then create_force("jup_b220_monster_boar_squad",69.019668579102,-1.3870533704758,146.45944213867,833767,648) end if jup_b220_gon_monster_squad_random==3 then create_force("jup_b220_monster_flesh_squad",69.019668579102,-1.3870533704758,146.45944213867,833767,648) end if jup_b220_gon_monster_squad_random==4 then create_force("jup_b220_monster_pseudodog_squad",69.019668579102,-1.3870533704758,146.45944213867,833767,648) end if jup_b220_gon_monster_squad_random==5 then create_force("jup_b220_monster_dog_squad",69.019668579102,-1.3870533704758,146.45944213867,833767,648) end if jup_b220_gon_monster_squad_random==6 then create_force("jup_b220_monster_snork_squad",69.019668579102,-1.3870533704758,146.45944213867,833767,648) end if jup_b220_gon_monster_squad_random==7 then create_force("jup_b220_monster_chimera_squad",69.019668579102,-1.3870533704758,146.45944213867,833767,648) end if jup_b220_gon_monster_squad_random==8 then create_force("jup_b220_monster_gigant_squad",69.019668579102,-1.3870533704758,146.45944213867,833767,648) end if jup_b220_gon_monster_squad_random==9 then create_force("jup_b220_monster_burer_squad",69.019668579102,-1.3870533704758,146.45944213867,833767,648) end if jup_b220_gon_monster_squad_random==10 then create_force("jup_b220_monster_psy_dog_squad",69.019668579102,-1.3870533704758,146.45944213867,833767,648) end if jup_b220_gon_monster_squad_random==11 then create_force("jup_b220_monster_controller_squad",69.019668579102,-1.3870533704758,146.45944213867,833767,648) end end if jup_b220_gon_monster_pos_random==2 then if jup_b220_gon_monster_squad_random==1 then create_force("jup_b220_monster_bloodsucker_squad",123.03616333008,-5.6287517547607,120.73503875732,926221,650) end if jup_b220_gon_monster_squad_random==2 then create_force("jup_b220_monster_boar_squad",123.03616333008,-5.6287517547607,120.73503875732,926221,650) end if jup_b220_gon_monster_squad_random==3 then create_force("jup_b220_monster_flesh_squad",123.03616333008,-5.6287517547607,120.73503875732,926221,650) end if jup_b220_gon_monster_squad_random==4 then create_force("jup_b220_monster_pseudodog_squad",123.03616333008,-5.6287517547607,120.73503875732,926221,650) end if jup_b220_gon_monster_squad_random==5 then create_force("jup_b220_monster_dog_squad",123.03616333008,-5.6287517547607,120.73503875732,926221,650) end if jup_b220_gon_monster_squad_random==6 then create_force("jup_b220_monster_snork_squad",123.03616333008,-5.6287517547607,120.73503875732,926221,650) end if jup_b220_gon_monster_squad_random==7 then create_force("jup_b220_monster_chimera_squad",123.03616333008,-5.6287517547607,120.73503875732,926221,650) end if jup_b220_gon_monster_squad_random==8 then create_force("jup_b220_monster_gigant_squad",123.03616333008,-5.6287517547607,120.73503875732,926221,650) end if jup_b220_gon_monster_squad_random==9 then create_force("jup_b220_monster_burer_squad",123.03616333008,-5.6287517547607,120.73503875732,926221,650) end if jup_b220_gon_monster_squad_random==10 then create_force("jup_b220_monster_psy_dog_squad",123.03616333008,-5.6287517547607,120.73503875732,926221,650) end if jup_b220_gon_monster_squad_random==11 then create_force("jup_b220_monster_controller_squad",123.03616333008,-5.6287517547607,120.73503875732,926221,650) end end if jup_b220_gon_monster_pos_random==3 then if jup_b220_gon_monster_squad_random==1 then create_force("jup_b220_monster_bloodsucker_squad",154.56488037109,-15.411540031433,98.691482543945,980147,505) end if jup_b220_gon_monster_squad_random==2 then create_force("jup_b220_monster_boar_squad",154.56488037109,-15.411540031433,98.691482543945,980147,505) end if jup_b220_gon_monster_squad_random==3 then create_force("jup_b220_monster_flesh_squad",154.56488037109,-15.411540031433,98.691482543945,980147,505) end if jup_b220_gon_monster_squad_random==4 then create_force("jup_b220_monster_pseudodog_squad",154.56488037109,-15.411540031433,98.691482543945,980147,505) end if jup_b220_gon_monster_squad_random==5 then create_force("jup_b220_monster_dog_squad",154.56488037109,-15.411540031433,98.691482543945,980147,505) end if jup_b220_gon_monster_squad_random==6 then create_force("jup_b220_monster_snork_squad",154.56488037109,-15.411540031433,98.691482543945,980147,505) end if jup_b220_gon_monster_squad_random==7 then create_force("jup_b220_monster_chimera_squad",154.56488037109,-15.411540031433,98.691482543945,980147,505) end if jup_b220_gon_monster_squad_random==8 then create_force("jup_b220_monster_gigant_squad",154.56488037109,-15.411540031433,98.691482543945,980147,505) end if jup_b220_gon_monster_squad_random==9 then create_force("jup_b220_monster_burer_squad",154.56488037109,-15.411540031433,98.691482543945,980147,505) end if jup_b220_gon_monster_squad_random==10 then create_force("jup_b220_monster_psy_dog_squad",154.56488037109,-15.411540031433,98.691482543945,980147,505) end if jup_b220_gon_monster_squad_random==11 then create_force("jup_b220_monster_controller_squad",154.56488037109,-15.411540031433,98.691482543945,980147,505) end end if jup_b220_gon_monster_pos_random==4 then if jup_b220_gon_monster_squad_random==1 then create_force("jup_b220_monster_bloodsucker_squad",210.45220947266,-11.418073654175,188.53520202637,1076642,507) end if jup_b220_gon_monster_squad_random==2 then create_force("jup_b220_monster_boar_squad",210.45220947266,-11.418073654175,188.53520202637,1076642,507) end if jup_b220_gon_monster_squad_random==3 then create_force("jup_b220_monster_flesh_squad",210.45220947266,-11.418073654175,188.53520202637,1076642,507) end if jup_b220_gon_monster_squad_random==4 then create_force("jup_b220_monster_pseudodog_squad",210.45220947266,-11.418073654175,188.53520202637,1076642,507) end if jup_b220_gon_monster_squad_random==5 then create_force("jup_b220_monster_dog_squad",210.45220947266,-11.418073654175,188.53520202637,1076642,507) end if jup_b220_gon_monster_squad_random==6 then create_force("jup_b220_monster_snork_squad",210.45220947266,-11.418073654175,188.53520202637,1076642,507) end if jup_b220_gon_monster_squad_random==7 then create_force("jup_b220_monster_chimera_squad",210.45220947266,-11.418073654175,188.53520202637,1076642,507) end if jup_b220_gon_monster_squad_random==8 then create_force("jup_b220_monster_gigant_squad",210.45220947266,-11.418073654175,188.53520202637,1076642,507) end if jup_b220_gon_monster_squad_random==9 then create_force("jup_b220_monster_burer_squad",210.45220947266,-11.418073654175,188.53520202637,1076642,507) end if jup_b220_gon_monster_squad_random==10 then create_force("jup_b220_monster_psy_dog_squad",210.45220947266,-11.418073654175,188.53520202637,1076642,507) end if jup_b220_gon_monster_squad_random==11 then create_force("jup_b220_monster_controller_squad",210.45220947266,-11.418073654175,188.53520202637,1076642,507) end end if jup_b220_gon_monster_pos_random==5 then if jup_b220_gon_monster_squad_random==1 then create_force("jup_b220_monster_bloodsucker_squad",251.25486755371,-3.9337031841278,222.29516601563,1140349,612) end if jup_b220_gon_monster_squad_random==2 then create_force("jup_b220_monster_boar_squad",251.25486755371,-3.9337031841278,222.29516601563,1140349,612) end if jup_b220_gon_monster_squad_random==3 then create_force("jup_b220_monster_flesh_squad",251.25486755371,-3.9337031841278,222.29516601563,1140349,612) end if jup_b220_gon_monster_squad_random==4 then create_force("jup_b220_monster_pseudodog_squad",251.25486755371,-3.9337031841278,222.29516601563,1140349,612) end if jup_b220_gon_monster_squad_random==5 then create_force("jup_b220_monster_dog_squad",251.25486755371,-3.9337031841278,222.29516601563,1140349,612) end if jup_b220_gon_monster_squad_random==6 then create_force("jup_b220_monster_snork_squad",251.25486755371,-3.9337031841278,222.29516601563,1140349,612) end if jup_b220_gon_monster_squad_random==7 then create_force("jup_b220_monster_chimera_squad",251.25486755371,-3.9337031841278,222.29516601563,1140349,612) end if jup_b220_gon_monster_squad_random==8 then create_force("jup_b220_monster_gigant_squad",251.25486755371,-3.9337031841278,222.29516601563,1140349,612) end if jup_b220_gon_monster_squad_random==9 then create_force("jup_b220_monster_burer_squad",251.25486755371,-3.9337031841278,222.29516601563,1140349,612) end if jup_b220_gon_monster_squad_random==10 then create_force("jup_b220_monster_psy_dog_squad",251.25486755371,-3.9337031841278,222.29516601563,1140349,612) end if jup_b220_gon_monster_squad_random==11 then create_force("jup_b220_monster_controller_squad",251.25486755371,-3.9337031841278,222.29516601563,1140349,612) end end if jup_b220_gon_monster_pos_random==6 then if jup_b220_gon_monster_squad_random==1 then create_force("jup_b220_monster_bloodsucker_squad",225.56190490723,2.4048516750336,286.41793823242,1102377,515) end if jup_b220_gon_monster_squad_random==2 then create_force("jup_b220_monster_boar_squad",225.56190490723,2.4048516750336,286.41793823242,1102377,515) end if jup_b220_gon_monster_squad_random==3 then create_force("jup_b220_monster_flesh_squad",225.56190490723,2.4048516750336,286.41793823242,1102377,515) end if jup_b220_gon_monster_squad_random==4 then create_force("jup_b220_monster_pseudodog_squad",225.56190490723,2.4048516750336,286.41793823242,1102377,515) end if jup_b220_gon_monster_squad_random==5 then create_force("jup_b220_monster_dog_squad",225.56190490723,2.4048516750336,286.41793823242,1102377,515) end if jup_b220_gon_monster_squad_random==6 then create_force("jup_b220_monster_snork_squad",225.56190490723,2.4048516750336,286.41793823242,1102377,515) end if jup_b220_gon_monster_squad_random==7 then create_force("jup_b220_monster_chimera_squad",225.56190490723,2.4048516750336,286.41793823242,1102377,515) end if jup_b220_gon_monster_squad_random==8 then create_force("jup_b220_monster_gigant_squad",225.56190490723,2.4048516750336,286.41793823242,1102377,515) end if jup_b220_gon_monster_squad_random==9 then create_force("jup_b220_monster_burer_squad",225.56190490723,2.4048516750336,286.41793823242,1102377,515) end if jup_b220_gon_monster_squad_random==10 then create_force("jup_b220_monster_psy_dog_squad",225.56190490723,2.4048516750336,286.41793823242,1102377,515) end if jup_b220_gon_monster_squad_random==11 then create_force("jup_b220_monster_controller_squad",225.56190490723,2.4048516750336,286.41793823242,1102377,515) end end end [/cut]
При спавне очередной группы зверей рандомно выбирается один сквад из одиннадцати и одно точка спавна из шести. Игрок не знает, откуда прибежит следующая группа животных и кто в ней будет состоять. На локации в любой момент должен быть только один сквад монстров. Но при тестовом выполнении квеста несколько раз спавнилось по два сквада за один раз или же сквад спавнился до гибели предыдущего. С чем это может быть связано?
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
denis2000 | Дата: Чт, 21.08.2014, 19:09 | Сообщение # 980 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| sergej5500, - Во первых логика рестриктора может быть несколько проще:
[cut=Логика рестриктора][sr_idle@stalker_gon_squad_def] on_info20 = {=distance_to_obj_ge(jup_b207_trapper_gon_spot:150)} sr_idle@fail %+jup_b220_stalker_gon_squad_enemy% on_info30 = {+jup_b220_stalker_gon_squad_enemy} sr_idle@fail
[sr_idle@spawn_1_1]:sr_idle@stalker_gon_squad_def on_info = sr_idle@timer_1_1 %=jup_b220_gon_monster_spawn%
[sr_idle@timer_1_1]:sr_idle@stalker_gon_squad_def on_game_timer = 10 | sr_idle@exist_1_1
[sr_idle@exist_1_1]:sr_idle@stalker_gon_squad_def on_info = {!squad_exist(jup_b220_monster_gon_squad)} sr_idle@spawn_1_2 %=add_cleaner_monster%
[sr_idle@spawn_1_2]:sr_idle@stalker_gon_squad_def on_info = sr_idle@timer_1_2 %=jup_b220_gon_monster_spawn%
[sr_idle@timer_1_2]:sr_idle@stalker_gon_squad_def on_game_timer = 10 | sr_idle@exist_1_2
[sr_idle@exist_1_2]:sr_idle@stalker_gon_squad_def on_info = {!squad_exist(jup_b220_monster_gon_squad)} sr_idle@spawn_1_3 %=add_cleaner_monster%[/cut] - Во вторых желательно все же увеличить интервал таймеров игровых секунд до 100-200.
- В третьих разные волны разные story_id сквадов!
- В четвертых настройки сквадов сами по себе могут дать некоторый рандом по составу и численности, зачем именно такие сквады?
- В пятых функция спавна может быть заметно проще, если параметры спавна забить в таблицы и одним движением извлечь нужные параметры.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
sergej5500 | Дата: Чт, 21.08.2014, 21:19 | Сообщение # 981 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| denis2000, Спасибо за информацию.
Цитата denis2000 ( ) В пятых функция спавна может быть заметно проще, если параметры спавна забить в таблицы и одним движением извлечь нужные параметры. Как это сделать на практике? Допустим, есть 2 варианта сквадов и 2 точки спавна.
Цитата denis2000 ( ) В третьих разные волны разные story_id сквадов! У меня 11 вариантов сквадов. Потребуется проверять 11 стори-ид. Мы же не знаем, какой сквад отреспился в этот раз. Может быть, стоит стори-ид убрать и выдавать при гибели сквада инфопорцию. При спавне следующего сквада её сбрасывать.
Цитата denis2000 ( ) В четвертых настройки сквадов сами по себе могут дать некоторый рандом по составу и численности, зачем именно такие сквады?
Я пробовал спавнить такой сквад.
[cut=Сквад][jup_b220_monster_dog_squad]:online_offline_group faction = monster_predatory_day npc = sgm_monster_dog_normal story_id = jup_b220_monster_gon_squad target_smart = jup_b207 always_arrived = true npc_in_squad = 2, 6[/cut]
Спавнился сквад из одной собаки. Или кол-во собак в строке npc = надо писать так:
npc = sgm_monster_dog_normal, sgm_monster_dog_normal, sgm_monster_dog_normal, sgm_monster_dog_normal, sgm_monster_dog_normal, sgm_monster_dog_normal, sgm_monster_dog_normal, sgm_monster_dog_normal, sgm_monster_dog_normal, sgm_monster_dog_normal, sgm_monster_dog_normal, sgm_monster_dog_normal
Число собак в строке должно быть больше максимального кол-ва нпс в скваде?
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
denis2000 | Дата: Чт, 21.08.2014, 21:51 | Сообщение # 982 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата sergej5500 ( ) У меня 11 вариантов сквадов. Потребуется проверять 11 стори-ид. Мы же не знаем, какой сквад отреспился в этот раз. Знаете! Одна волна - один стори_ид на все варианты сквадов, другая волна другой стори_ид. Цитата sergej5500 ( ) Может быть, стоит стори-ид убрать и выдавать при гибели сквада инфопорцию. При спавне следующего сквада её сбрасывать. А вот это правильная мысль, только на разные волны мутантов разные инфопорции. Цитата sergej5500 ( ) npc = sgm_monster_dog_normal Вообще то не npc, а npc_random: Код npc_random = sgm_monster_dog_normal npc_in_squad = 2, 6
Цитата sergej5500 ( ) Как это сделать на практике? Как то так: [cut]Код local jup_b220_gon_monster_squad_tabl = { [1] = "jup_b220_monster_bloodsucker_squad", ... [11] = "jup_b220_monster_dog_squad" }
local jup_b220_gon_monster_pos_tabl = { [1] = {[1]=69.019668579102,[2]=-1.3870533704758,[3]=146.45944213867,[4]=833767,[5]=648}, ... [6] = {[1]=123.03616333008,[2]=-5.6287517547607,[3]=120.73503875732,[4]=926221,[5]=650} }
function jup_b220_gon_monster_spawn() local pos_random=math.random(1,6) local squad_random=math.random(1,11) create_force(jup_b220_gon_monster_squad_tabl[squad_random],jup_b220_gon_monster_pos_tabl[pos_random][1],jup_b220_gon_monster_pos_tabl[pos_random][2],jup_b220_gon_monster_pos_tabl[pos_random][3],jup_b220_gon_monster_pos_tabl[pos_random][4],jup_b220_gon_monster_pos_tabl[pos_random][5]) end [/cut]
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
sergej5500 | Дата: Сб, 23.08.2014, 20:28 | Сообщение # 983 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Всем привет. Встретил забавный глюк.
Неписи грабят тайники из оригинала ЗП. Между Копачами и Яновом в болотце под мостками есть тайник. Там лежит СПАС-12, патроны, граната и еще что-то.
Получил наводку на этот тайник. СПАС не нашел. Неподалеку долговцы ссорились со свободовцами. СПАС обнаружился в инвентаре убитого долговца. После этого тайник засчитался.
В чем может быть причина данного глюка?
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
denis2000 | Дата: Сб, 23.08.2014, 21:40 | Сообщение # 984 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| sergej5500, Почему глюк? Тайники так и работают, в принципе любой НПС которому разрешено поднимать оружие может взять его из тайника. Поэтому тайники и расположены обычно в местах где НПС или не ходят или достать предмет не могут.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
gamer | Дата: Чт, 04.09.2014, 16:33 | Сообщение # 985 |
Новичок
Пользователи
Сообщений: 82
| При переносе в зп актору задаю исходные координат, также пробовал задать 0,0,0 .Мой актор при всех попытках спавнитса за локацией.В чём может быть проблема?
|
|
|
Эти 0 пользователя(ей) поблагодарили gamer за это полезное сообщение: |
|
|
sergej5500 | Дата: Чт, 04.09.2014, 17:04 | Сообщение # 986 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| gamer,
Проверь совпадение координат в строках
position = 253.482116699219, 8.78786945343018, 169.996673583984
и
upd:position = 253.482116699219, 8.78786945343018, 169.996673583984
в секции actor в all.spawn. У меня была похожая проблема.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
gamer | Дата: Чт, 04.09.2014, 19:35 | Сообщение # 987 |
Новичок
Пользователи
Сообщений: 82
| Не понимаю
В Alife_ltx записал ети координаты 45.6969795227051,0,-356.334716796875 ,а меня выкидует вопще на другие координати
|
|
|
Эти 0 пользователя(ей) поблагодарили gamer за это полезное сообщение: |
|
|
FantomICW | Дата: Чт, 04.09.2014, 19:38 | Сообщение # 988 |
Лидер «Свободы»
Свобода
Сообщений: 4438
| gamer, еще раз проверь upd:position.
|
|
|
Эти 0 пользователя(ей) поблагодарили FantomICW за это полезное сообщение: |
|
|
gamer | Дата: Чт, 04.09.2014, 21:51 | Сообщение # 989 |
Новичок
Пользователи
Сообщений: 82
| кажись проблема с компилятором , появился дополнительный way файл
|
|
|
Эти 0 пользователя(ей) поблагодарили gamer за это полезное сообщение: |
|
|
denis2000 | Дата: Пт, 05.09.2014, 08:19 | Сообщение # 990 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| gamer, Значит в нем пути с геймвертексами вне диапазона.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
|