Модостроение. Спавн и логика
|
|
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 | Дата: Вт, 20.05.2014, 21:52 | Сообщение # 916 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Добрый вечер. В СГМ есть секция логики НПС on_corpse_use. Запускается при юзании трупа НПС с кастом-датой. Если она, конечно, в кастом-дате прописана. Собственно, применяется она очень редко. Прописана в логике непися zat_accompany_stalker. Это проводник до Скадовска.
Я решил попробовать сделать этого НПС сквадовым. Прописал эксклюзив на ближайшем смарте. Сделал сквад из одного НПС. Задал ему работу и логику. [cut=Эксклюзив] [logic@zat_accompany_stalker] active = walker@walker suitable = {=check_npc_name(zat_accompany_stalker)} true prior = 200
[walker@walker] path_walk = zat_accompany_stalker_patrol_walk
[on_corpse_use] run_action = zat_accompany_to_boat[/cut]
Непись отлично ходит по дороге. Спавнится после добавления сквада в simulation. Секция [on_corpse_use] run_action = zat_accompany_to_boat должна запустить квест "Добраться до Скадовска", если непись погиб раньше, чем игрок с ним пообщается.
Собственно, вопрос, можно ли запустить ф-ию для сквадового НПС?Добавлено (20.05.2014, 21:52) --------------------------------------------- Добрый вечер. Возник такой вопрос.
Прописал НПС путь.
[cut=Путь] [zat_sim_4_zat_accompany_stalker_pursue_walk] points = p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21 p0:name = wp00 p0:flags = 0x1 p0:position = -305.97274780273,17.625286102295,614.78491210938 p0:game_vertex_id = 33 p0:level_vertex_id = 336443 p0:links = p1(1)
p1:name = wp01 p1:flags = 0x1 p1:position = -245.22958374023,10.329545974731,626.14794921875 p1:game_vertex_id = 33 p1:level_vertex_id = 454207 p1:links = p2(1)
p2:name = wp02 p2:flags = 0x1 p2:position = -200.76133728027,5.6418194770813,640.80206298828 p2:game_vertex_id = 126 p2:level_vertex_id = 541606 p2:links = p3(1)
p3:name = wp03 p3:flags = 0x1 p3:position = -146.4808807373,-0.8795371055603,655.93487548828 p3:game_vertex_id = 193 p3:level_vertex_id = 650938 p3:links = p4(1)
p4:name = wp04 p4:flags = 0x1 p4:position = -120.71292114258,-6.3835563659668,624.78356933594 p4:game_vertex_id = 193 p4:level_vertex_id = 700523 p4:links = p5(1)
p5:name = wp05 p5:flags = 0x1 p5:position = -84.381645202637,-8.0025157928467,618.13824462891 p5:game_vertex_id = 48 p5:level_vertex_id = 772941 p5:links = p6(1)
p6:name = wp06 p6:flags = 0x1 p6:position = -38.017169952393,-8.0015726089478,612.43231201172 p6:game_vertex_id = 48 p6:level_vertex_id = 871365 p6:links = p7(1)
p7:name = wp07 p7:flags = 0x1 p7:position = 11.505271911621,-6.6523537635803,605.24914550781 p7:game_vertex_id = 192 p7:level_vertex_id = 967482 p7:links = p8(1)
p8:name = wp08 p8:flags = 0x1 p8:position = 23.189067840576,-5.5822668075562,590.47180175781 p8:game_vertex_id = 194 p8:level_vertex_id = 991616 p8:links = p9(1)
p9:name = wp09 p9:flags = 0x1 p9:position = 28.042343139648,-6.3512697219849,568.19244384766 p9:game_vertex_id = 194 p9:level_vertex_id = 1001605 p9:links = p10(1)
p10:name = wp010 p10:flags = 0x1 p10:position = 18.626575469971,-7.0012526512146,547.34967041016 p10:game_vertex_id = 47 p10:level_vertex_id = 983111 p10:links = p11(1)
p11:name = wp011 p11:flags = 0x1 p11:position = 27.894184112549,-8.0003976821899,490.33941650391 p11:game_vertex_id = 47 p11:level_vertex_id = 1001512 p11:links = p12(1)
p12:name = wp012 p12:flags = 0x1 p12:position = 33.874561309814,-2.1919672489166,453.8034362793 p12:game_vertex_id = 41 p12:level_vertex_id = 1012693 p12:links = p13(1)
p13:name = wp013 p13:flags = 0x1 p13:position = 42.217529296875,13.172751426697,417.23440551758 p13:game_vertex_id = 197 p13:level_vertex_id = 1030324 p13:links = p14(1)
p14:name = wp014 p14:flags = 0x1 p14:position = 47.49817276001,15.420347213745,376.53991699219 p14:game_vertex_id = 137 p14:level_vertex_id = 1041573 p14:links = p15(1)
p15:name = wp015 p15:flags = 0x1 p15:position = 69.380126953125,6.2323718070984,331.57562255859 p15:game_vertex_id = 135 p15:level_vertex_id = 1083120 p15:links = p16(1)
p16:name = wp016 p16:flags = 0x1 p16:position = 109.01705932617,-7.0041327476501,291.99069213867 p16:game_vertex_id = 135 p16:level_vertex_id = 1154205 p16:links = p17(1)
p17:name = wp017 p17:flags = 0x1 p17:position = 108.24343109131,-7.0003290176392,270.93334960938 p17:game_vertex_id = 189 p17:level_vertex_id = 1153009 p17:links = p18(1)
p18:name = wp018 p18:flags = 0x1 p18:position = 111.53921508789,-7.0028510093689,244.09727478027 p18:game_vertex_id = 208 p18:level_vertex_id = 1157711 p18:links = p19(1)
p19:name = wp019 p19:flags = 0x1 p19:position = 125.87326049805,-7.0023880004883,224.70512390137 p19:game_vertex_id = 185 p19:level_vertex_id = 1182956 p19:links = p20(1)
p20:name = wp020 p20:flags = 0x1 p20:position = 142.71264648438,-6.894793510437,211.1773223877 p20:game_vertex_id = 185 p20:level_vertex_id = 1210408 p20:links = p21(1)
p21:name = wp021 p21:flags = 0x1 p21:position = 160.77438354492,-7.1476922035217,198.31842041016 p21:game_vertex_id = 186 p21:level_vertex_id = 1241975[/cut]
Есть ли возможность в момент, когда НПС достигает последней точки пути (№21) выдать инфопорцию, чтобы переключить его на другую работу? И можно ли это прописать в файле way и как это делается?
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
makdm | Дата: Вт, 20.05.2014, 22:15 | Сообщение # 917 |
Рожденный в СССР
Разработчики
Сообщений: 1294
| sergej5500, Цитата sergej5500 ( ) можно ли запустить ф-ию для сквадового НПС? Можно, только для этого нужно поменять "подход" - прописывать параметр в секции НПС, а не в его custom_data. Тогда переписав скрипт на юзанье трупа, можно производить действие, как для НПС с custom_data, так и для сквадовых НПС.
Цитата sergej5500 ( ) И можно ли это прописать в файле way и как это делается? Поставьте сигнал в пути,
p21:name = wp021|sig=see_psy
а в логике сделайте проверку например так on_signal = see_psy | %+see_psy_antenna% on_info = {+see_psy_antenna} remark@attack
Терпение...... И все получится!
Сообщение отредактировал makdm - Вт, 20.05.2014, 22:19 |
|
|
Эти 0 пользователя(ей) поблагодарили makdm за это полезное сообщение: |
|
|
sergej5500 | Дата: Вт, 20.05.2014, 23:34 | Сообщение # 918 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| makdm, Спасибо за помощь. Еще один вопрос.
[cut=Путь сталкера до Скадовска][zat_sim_4_zat_accompany_stalker_pursue_walk] points = p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21 p0:name = wp00 p0:flags = 0x1 p0:position = -305.97274780273,17.625286102295,614.78491210938 p0:game_vertex_id = 33 p0:level_vertex_id = 336443 p0:links = p1(1)
p1:name = wp01 p1:flags = 0x1 p1:position = -245.22958374023,10.329545974731,626.14794921875 p1:game_vertex_id = 33 p1:level_vertex_id = 454207 p1:links = p2(1)
p2:name = wp02 p2:flags = 0x1 p2:position = -200.76133728027,5.6418194770813,640.80206298828 p2:game_vertex_id = 126 p2:level_vertex_id = 541606 p2:links = p3(1)
p3:name = wp03 p3:flags = 0x1 p3:position = -146.4808807373,-0.8795371055603,655.93487548828 p3:game_vertex_id = 193 p3:level_vertex_id = 650938 p3:links = p4(1)
p4:name = wp04 p4:flags = 0x1 p4:position = -120.71292114258,-6.3835563659668,624.78356933594 p4:game_vertex_id = 193 p4:level_vertex_id = 700523 p4:links = p5(1)
p5:name = wp05 p5:flags = 0x1 p5:position = -84.381645202637,-8.0025157928467,618.13824462891 p5:game_vertex_id = 48 p5:level_vertex_id = 772941 p5:links = p6(1)
p6:name = wp06 p6:flags = 0x1 p6:position = -38.017169952393,-8.0015726089478,612.43231201172 p6:game_vertex_id = 48 p6:level_vertex_id = 871365 p6:links = p7(1)
p7:name = wp07 p7:flags = 0x1 p7:position = 11.505271911621,-6.6523537635803,605.24914550781 p7:game_vertex_id = 192 p7:level_vertex_id = 967482 p7:links = p8(1)
p8:name = wp08 p8:flags = 0x1 p8:position = 23.189067840576,-5.5822668075562,590.47180175781 p8:game_vertex_id = 194 p8:level_vertex_id = 991616 p8:links = p9(1)
p9:name = wp09 p9:flags = 0x1 p9:position = 28.042343139648,-6.3512697219849,568.19244384766 p9:game_vertex_id = 194 p9:level_vertex_id = 1001605 p9:links = p10(1)
p10:name = wp010 p10:flags = 0x1 p10:position = 18.626575469971,-7.0012526512146,547.34967041016 p10:game_vertex_id = 47 p10:level_vertex_id = 983111 p10:links = p11(1)
p11:name = wp011 p11:flags = 0x1 p11:position = 27.894184112549,-8.0003976821899,490.33941650391 p11:game_vertex_id = 47 p11:level_vertex_id = 1001512 p11:links = p12(1)
p12:name = wp012 p12:flags = 0x1 p12:position = 33.874561309814,-2.1919672489166,453.8034362793 p12:game_vertex_id = 41 p12:level_vertex_id = 1012693 p12:links = p13(1)
p13:name = wp013 p13:flags = 0x1 p13:position = 42.217529296875,13.172751426697,417.23440551758 p13:game_vertex_id = 197 p13:level_vertex_id = 1030324 p13:links = p14(1)
p14:name = wp014 p14:flags = 0x1 p14:position = 47.49817276001,15.420347213745,376.53991699219 p14:game_vertex_id = 137 p14:level_vertex_id = 1041573 p14:links = p15(1)
p15:name = wp015 p15:flags = 0x1 p15:position = 69.380126953125,6.2323718070984,331.57562255859 p15:game_vertex_id = 135 p15:level_vertex_id = 1083120 p15:links = p16(1)
p16:name = wp016 p16:flags = 0x1 p16:position = 109.01705932617,-7.0041327476501,291.99069213867 p16:game_vertex_id = 135 p16:level_vertex_id = 1154205 p16:links = p17(1)
p17:name = wp017 p17:flags = 0x1 p17:position = 108.24343109131,-7.0003290176392,270.93334960938 p17:game_vertex_id = 189 p17:level_vertex_id = 1153009 p17:links = p18(1)
p18:name = wp018 p18:flags = 0x1 p18:position = 111.53921508789,-7.0028510093689,244.09727478027 p18:game_vertex_id = 208 p18:level_vertex_id = 1157711 p18:links = p19(1)
p19:name = wp019 p19:flags = 0x1 p19:position = 125.87326049805,-7.0023880004883,224.70512390137 p19:game_vertex_id = 185 p19:level_vertex_id = 1182956 p19:links = p20(1)
p20:name = wp020 p20:flags = 0x1 p20:position = 142.71264648438,-6.894793510437,211.1773223877 p20:game_vertex_id = 185 p20:level_vertex_id = 1210408 p20:links = p21(1)
p21:name = wp021|sig=zat_accompany_to_boat_sms p21:flags = 0x1 p21:position = 160.77438354492,-7.1476922035217,198.31842041016 p21:game_vertex_id = 186 p21:level_vertex_id = 1241975[/cut]
Непись должен в последней точке выдать сигнал и перейти на следующую работу. Он "зависает" на точке №20, предпоследней. Этот маршрут проходит от места старта игры в СГМ к северу от Лесопилки до Скадовска. НПС его выполняет без замечаний, а на предпоследней точке встает и смотрит на последнюю точку. В чем ошибка?
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
makdm | Дата: Ср, 21.05.2014, 00:48 | Сообщение # 919 |
Рожденный в СССР
Разработчики
Сообщений: 1294
| sergej5500, зачем вы в каждой точке прописывает flags ? По моему они тут лишние. Я бы сделал так, или в последней точке ( 21 ) прописал p21:flags = 0x1 и сделал точку look с таким же флагом flags = 0x1 или дописал бы в 21 точку
p21:links = p0(1) Перехода к нулевой точке не будет, т.к. выдан сигнал и произойдёт переключение схемы.
Терпение...... И все получится!
Сообщение отредактировал makdm - Ср, 21.05.2014, 00:55 |
|
|
Эти 0 пользователя(ей) поблагодарили makdm за это полезное сообщение: |
|
|
sergej5500 | Дата: Ср, 21.05.2014, 10:42 | Сообщение # 920 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Доброе утро. Вернусь к предыдущему вопросу. Исправил проблему зависания непися на 20 точке. Видимо, 21 точка маршрута попала в зону "миролюбия" на Скадовске и тот не хотел туда заходить. После правки пути и выдачи сигнала на 20 точке сигнал стал выдаваться.
Возник новый вопрос.
[cut=Логика][logic@zat_accompany_stalker] active = walker@walker suitable = {=check_npc_name(zat_accompany_stalker)} true prior = 200 on_death = death
[death] on_info = {-zat_accompany_to_boat_start} %+zat_accompany_stalker_death%,{+zat_accompany_to_boat_start -zat_accompany_to_boat_daleko} %+zat_accompany_stalker_death +zat_accompany_to_boat_i_am_alone%
[walker@walker] path_walk = zat_accompany_stalker_patrol_walk on_info = {+zat_accompany_to_boat_start -zat_accompany_to_boat_complete} walker@walker_2
[walker@walker_2] path_walk = zat_accompany_stalker_pursue_walk def_state_moving = assault on_signal = zat_accompany_to_boat_sms | walker@walker %=send_tip(zat_accompany_final_text:portrait_neutral_1:zat_accompany_stalker_title:5000)% on_info = {+zat_accompany_to_boat_start -zat_accompany_to_boat_complete -zat_accompany_to_boat_daleko =dist_to_actor_ge(90)} walker@walker %+zat_accompany_to_boat_daleko =release_npc% on_info2 = {+zat_accompany_to_boat_complete} walker@walker on_info3 = {=zat_accompany_stalker_ambush_cond -zat_accompany_to_boat_ambush} %+zat_accompany_to_boat_ambush =zat_accompany_stalker_ambush_action%[/cut]
При получении сигнала НПС должен перейти на секцию walker@walker и ГГ приходит текстовое сообщение. Но непись зависает. Сообщения приходят непрерывно по 2-3 штуки в секунду. Непись переключается на секцию walker@walker только после прихода инфопорции zat_accompany_to_boat_complete. Она выдается после приближения игрока к Скадовску на определенную дистанцию.
Почему НПС капризничает?
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
denis2000 | Дата: Ср, 21.05.2014, 13:01 | Сообщение # 921 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| sergej5500, Он капризничает потому что постоянно переключается между секциями walker@walker и walker@walker_2
Цитата sergej5500 ( ) Непись переключается на секцию walker@walker только после прихода инфопорции zat_accompany_to_boat_complete Вы ошибаетесь! Он переключается по этому услоувию: on_signal = zat_accompany_to_boat_sms | walker@walker %=send_tip
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
alex_xp_77 | Дата: Пн, 09.06.2014, 18:31 | Сообщение # 922 |
Научный сотрудник.
Ученые сталкеры
Сообщений: 242
| Добрый день всем !! У меня вопрос, при пробежке по локации, происходит вылет, без лога, просто вылет, очень похоже на непонятную команду, когда нпс незнает что ему заданно, какую команду необходимо выполнять, прилогаю скрины : 1) общая картина http://SSMaker.ru/671c90e0/ 2) логика http://SSMaker.ru/3925a430/ http://SSMaker.ru/82fa3bfd/ 3) пути http://SSMaker.ru/5ebdac11/ http://SSMaker.ru/1e6717b7/ http://SSMaker.ru/bdfdeaa8/ http://SSMaker.ru/c17b665f/ смарт этот, потому что при подходе к смарту происходит вылет, в тот момент когда должны спавнится нпс!! может и разобрался бы сам если бы был лог, помогите пожалуста, хоть советом, как исправить вылет??
|
|
|
Эти 0 пользователя(ей) поблагодарили alex_xp_77 за это полезное сообщение: |
|
|
denis2000 | Дата: Пн, 09.06.2014, 19:13 | Сообщение # 923 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| alex_xp_77, 1. Вы отдаете НПС под смарт и тут-же назначаете индивидуальную логику! Возможно только что-то одно. 2. Привыкайте выносить логику в отдельный файл - так намного проще потом редактировать.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
alex_xp_77 | Дата: Пн, 09.06.2014, 19:17 | Сообщение # 924 |
Научный сотрудник.
Ученые сталкеры
Сообщений: 242
| По другому не умею к сожалению Денис, уроки смотрел только от Андрея Непряхина
|
|
|
Эти 0 пользователя(ей) поблагодарили alex_xp_77 за это полезное сообщение: |
|
|
denis2000 | Дата: Пн, 09.06.2014, 19:59 | Сообщение # 925 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| alex_xp_77, Да вижу. [cut]Однако в оригинале или так: Код [smart_terrains] esc_lager = true Или так: Код [logic] active = walker
[walker] path_walk = agr_factory_spetsnaz_walk1 path_look = agr_factory_spetsnaz_look1 .... Или так: Код [smart_terrains] none = true [logic] active = walker .... Одновременно никому смарт и логика не назначена. Для проверки уберите назначение смарта своим НПС.[/cut]
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
alex_xp_77 | Дата: Пн, 09.06.2014, 20:38 | Сообщение # 926 |
Научный сотрудник.
Ученые сталкеры
Сообщений: 242
| У меня как раз вся схема логики, и смартов прописана именно так как я привел выше, работает норм, для вашей логики Денис нужно создать тестовый уровень, что бы попрактиковаться, если не ошибаюсь, что бы привести в работу lager, нужно править lager.ltx, раньше пытался но не получилось, информации было крайне мало, нужно время, но логику скопировал, слышал что так проще. Мне по идее нужны двое парней сидяших у костра, изначально назначил walk и look для общей компиляции, но теперь буду строить камп зону, то есть именно по сценарию игры тут : http://SSMaker.ru/3ad3fab0/ там обрати внимания вдали собачки, они тоже необходимы!!
Ну если другие нормально работают, то ничего не могу больше посоветовать. Придется методом тыка искать в чем отличие от других НПС. И приводят ли эти отличия к вылету. denis2000
Сделал камп зону все заработало!! Наверно ошибка была в названии числа то есть stalker_71_walk, где то там Денис, я не стал разбираться!!
Сообщение отредактировал alex_xp_77 - Ср, 11.06.2014, 21:23 |
|
|
Эти 0 пользователя(ей) поблагодарили alex_xp_77 за это полезное сообщение: |
|
|
sergej5500 | Дата: Пт, 13.06.2014, 19:20 | Сообщение # 927 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Добрый день.
Создал 5 эксклюзивных сквадов по 6 НПС на ВНЗ.
[cut=Сквады] [zat_b38_alfa_squad_1]:online_offline_group faction = alfa_force relationship = neutral npc = respawn_easy_alfa_force, respawn_normal_alfa_force, respawn_heavy_alfa_force, respawn_easy_alfa_force, respawn_normal_alfa_force, respawn_heavy_alfa_force story_id = zat_b38_alfa_squad_1 spawn_point = zat_b38_respawn_point_1 target_smart = zat_b38 always_arrived = true
[zat_b38_alfa_squad_2]:online_offline_group faction = alfa_force relationship = neutral npc = respawn_easy_alfa_force, respawn_normal_alfa_force, respawn_heavy_alfa_force, respawn_easy_alfa_force, respawn_normal_alfa_force, respawn_heavy_alfa_force story_id = zat_b38_alfa_squad_2 spawn_point = zat_b38_respawn_point_2 target_smart = zat_b38 always_arrived = true
[zat_b38_alfa_squad_3]:online_offline_group faction = alfa_force relationship = neutral npc = respawn_easy_alfa_force, respawn_normal_alfa_force, respawn_heavy_alfa_force, respawn_easy_alfa_force, respawn_normal_alfa_force, respawn_heavy_alfa_force story_id = zat_b38_alfa_squad_3 spawn_point = zat_b38_respawn_point_3 target_smart = zat_b38 always_arrived = true
[zat_b38_alfa_squad_4]:online_offline_group faction = alfa_force relationship = neutral npc = respawn_easy_alfa_force, respawn_normal_alfa_force, respawn_heavy_alfa_force, respawn_easy_alfa_force, respawn_normal_alfa_force, respawn_heavy_alfa_force story_id = zat_b38_alfa_squad_4 spawn_point = zat_b38_respawn_point_4 target_smart = zat_b38 always_arrived = true
[zat_b38_alfa_squad_5]:online_offline_group faction = alfa_force relationship = neutral npc = respawn_easy_alfa_force, respawn_normal_alfa_force, respawn_heavy_alfa_force, respawn_easy_alfa_force, respawn_normal_alfa_force, respawn_heavy_alfa_force story_id = zat_b38_alfa_squad_5 spawn_point = zat_b38_respawn_point_5 target_smart = zat_b38 always_arrived = true[/cut]
По сюжету сквады будут враждебны игроку. Для их первоначального и повторного спавна имеется рестриктор.
[cut=Рестриктор][logic] active = sr_idle@1
[sr_idle@1] on_info = {=distance_to_smart_le(zat_b38:280)} sr_idle@2
[sr_idle@2] on_info = sr_idle@3 %=create_squad(zat_b38_alfa_squad_1:zat_b38)%
[sr_idle@3] on_info = sr_idle@4 %=create_squad(zat_b38_alfa_squad_2:zat_b38)%
[sr_idle@4] on_info = sr_idle@5 %=create_squad(zat_b38_alfa_squad_3:zat_b38)%
[sr_idle@5] on_info = sr_idle@6 %=create_squad(zat_b38_alfa_squad_4:zat_b38)%
[sr_idle@6] on_info = sr_idle@7 %=create_squad(zat_b38_alfa_squad_5:zat_b38)%
[sr_idle@7] on_info = {=distance_to_smart_ge(zat_b38:350)} sr_idle@8
[sr_idle@8] on_info = {=squad_exist(zat_b38_alfa_squad_1)} %=remove_squad(zat_b38_alfa_squad_1)% on_info2 = {!squad_exist(zat_b38_alfa_squad_1)} sr_idle@9
[sr_idle@9] on_info = {=squad_exist(zat_b38_alfa_squad_2)} %=remove_squad(zat_b38_alfa_squad_2)% on_info2 = {!squad_exist(zat_b38_alfa_squad_2)} sr_idle@10
[sr_idle@10] on_info = {=squad_exist(zat_b38_alfa_squad_3)} %=remove_squad(zat_b38_alfa_squad_3)% on_info2 = {!squad_exist(zat_b38_alfa_squad_3)} sr_idle@11
[sr_idle@11] on_info = {=squad_exist(zat_b38_alfa_squad_4)} %=remove_squad(zat_b38_alfa_squad_4)% on_info2 = {!squad_exist(zat_b38_alfa_squad_4)} sr_idle@12
[sr_idle@12] on_info = {=squad_exist(zat_b38_alfa_squad_5)} %=remove_squad(zat_b38_alfa_squad_5)% on_info2 = {!squad_exist(zat_b38_alfa_squad_5)} sr_idle@1[/cut]
После старта НИ и первого приближения к ВНЗ обнаружил все 5 сквадов на месте и выполняют свои работы.
Направился к аномалии "Цирк". Т.е. сквады должны удалиться с локации а логика рестриктора переключиться на первую секцию. Вернулся к ВНЗ. Там только 2 сквада (12 НПС).
Для эксперимента поменял дистанции до смарта на 50 и 100 метров. Никаких сбоев не обнаружил. Все 5 сквадов исправно спавнятся и удаляются.
В чем может быть причина сбоя?
Зачем? denis2000
Хочу сделать следующее. При каждом приближении игрока к ВНЗ его должен встретить весь "личный состав" базы - 30 штыков.
Сообщение отредактировал sergej5500 - Пт, 13.06.2014, 09:03 |
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
denis2000 | Дата: Пт, 13.06.2014, 19:56 | Сообщение # 928 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| sergej5500, Что мешает спавнить на дистанции 140м, а удалять на 200м? Удалять можно одной командой: Код %=clear_smart_terrain(zat_b38)% А спавнить можно в принципе в одной строке: Код %=create_squad(zat_b38_alfa_squad_1:zat_b38) =create_squad(zat_b38_alfa_squad_2:zat_b38) =create_squad(zat_b38_alfa_squad_3:zat_b38) =create_sq uad(zat_b38_alfa_squad_4:zat_b38) =create_squad(zat_b38_alfa_squad_5:zat_b38)%
К стати можно и при спавне проверять появился ли сквад, а как только появился переключаться на следующую секцию.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
sergej5500 | Дата: Сб, 14.06.2014, 01:24 | Сообщение # 929 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| denis2000, Попробовал разные варианты. Вот один из них. [cut=Рестриктор][logic] active = sr_idle@1
[sr_idle@1] on_info = {=distance_to_smart_le(zat_b38:100)} sr_idle@2 %=zat_b38_alfa_base_spawn%
[sr_idle@2] on_info = {=distance_to_smart_ge(zat_b38:270)} sr_idle@1 %=zat_b38_alfa_base_clean%[/cut]
[cut=Функции] function zat_b38_alfa_base_spawn() create_force("zat_b38_alfa_squad_1","zat_b38") create_force("zat_b38_alfa_squad_2","zat_b38") create_force("zat_b38_alfa_squad_3","zat_b38") create_force("zat_b38_alfa_squad_4","zat_b38") create_force("zat_b38_alfa_squad_5","zat_b38") end function zat_b38_alfa_base_clean() set_squad_removed("zat_b38_alfa_squad_1") set_squad_removed("zat_b38_alfa_squad_2") set_squad_removed("zat_b38_alfa_squad_3") set_squad_removed("zat_b38_alfa_squad_4") set_squad_removed("zat_b38_alfa_squad_5") end[/cut]
1. Наблюдается следующая ситуация. При первом приближении к ВНЗ все 5 сквадов (30 НПС) на местах. Дистанция спавна здесь значения не имеет.
2. Удаление сквадов работает корректно. При тестовом уменьшении дистанции спавна до 10 метров обошел ВНЗ. Оно пустое. Все сквады удалились.
3. Повторный спавн при дистанциях более 200 метров спавнит только два сквада. Видимо, на ближайших к игроку спавн-пойнтах. Спавн-пойнты расположены по углам здания ВНЗ.
4. При уменьшении дистанции спавна до 150 метров отреспилось 3 сквада. При 130 метрах 4 сквада. При 100 метрах все 5. До дальнего спавн-пойнта в этот момент примерно 150-160 метров.
5. Форма команд для спавна значения не имеет. Без разницы, что писать. create_squad в логике или create_force в скрипте. Ситуация одна и та же.
6. В порядке гипотезы. Возможно, сквады респятся, но куда-то исчезают.Добавлено (14.06.2014, 01:24) ---------------------------------------------
Цитата sergej5500 ( ) Что мешает спавнить на дистанции 140м, а удалять на 200м? В этом случае спавн происходит на глазах игрока. Это нежелательно.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
makdm | Дата: Сб, 14.06.2014, 09:14 | Сообщение # 930 |
Рожденный в СССР
Разработчики
Сообщений: 1294
| Цитата sergej5500 ( ) В порядке гипотезы. Возможно, сквады респятся, но куда-то исчезают. sergej5500, при спавне отрядов, поставьте на них метку ( spot ), и посмотрите на карте, где реально находятся сквады. Отсюда и двигайтесь дальше.
Терпение...... И все получится!
|
|
|
Эти 0 пользователя(ей) поблагодарили makdm за это полезное сообщение: |
|
|
|