Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: denis2000, FantomICW  
Модостроение. Спавн и логика
denis2000Дата: Пн, 10.10.2011, 21:20 | Сообщение # 1
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Спавн и логика

Создание объектов на локации и логика поведения этих объектов

Если у вас появились вопросы по созданию динамических объектов в игре (НПС, монстры, аномалии, и т.п.) и настройке их "поведения". Задавайте их в этой теме - умные головы,
модосторители и просто разбирающиеся в программировании люди вам ответят.


Много интересного материала здесь (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 по ссылке из шапки и соседнюю тему "Курс молодого бойца",
возможно Ваш вопрос уже рассматривался.


Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки.
Помните чем подробнее вопрос, тем точнее ответ.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
denis2000Дата: Пт, 25.11.2011, 18:02 | Сообщение # 46
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Pechenegin, Во первых в sgm_container.script в таблице outfit_container_list нужно писать часть строки visual, а не id НПС. На пример:
Code
{"alfa_commander","reduce_killer_exo_outfit",0.15}

Во вторых то, что ты прописал в дескрипшене будет у НПС только до момента смерти! После смерти часть имущества НПС будет удалена, а вместо нее добавлены предметы согласно конфигам death_items_*.ltx


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
CRO$$Дата: Вт, 29.11.2011, 20:09 | Сообщение # 47
Зомби
Пользователи
Сообщений: 3391
Награды: 0
Репутация: [ -122 ]

Здравствуйте, подскажите, как сделать так, чтоб база бандитов на лесничестве появлялась только после выполнения квеста "Сделка"?
 
denis2000Дата: Вт, 29.11.2011, 21:04 | Сообщение # 48
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

CRO$$, Сборник модостроения ЗП v10.10.11 (автор: XOBAH)/Зов припяти/SGM/Пункт 35

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
CRO$$Дата: Ср, 30.11.2011, 16:43 | Сообщение # 49
Зомби
Пользователи
Сообщений: 3391
Награды: 0
Репутация: [ -122 ]

denis2000, благодарю smile , только вот такой вопрос, что будет с Мечом?
И ещё вопрос, быть может не совсем в тему, как сделать так что Мститель появлялся на Скадовске только после смерти Моргана? smile
 
denis2000Дата: Ср, 30.11.2011, 20:54 | Сообщение # 50
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Quote (CRO$$)
что будет с Мечом?

А его разве трогали?
Quote (CRO$$)
как сделать так что Мститель появлялся на Скадовске только после смерти Моргана?

Это НПС zat_stalker_avenger в том же скипте - тоже можно вставить условие для его спавна.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
STAS-23Дата: Пт, 02.12.2011, 23:32 | Сообщение # 51
Гражданский
Пользователи
Сообщений: 16
Награды: 0
Репутация: [ 0 ]

Подскажите, играю в П.Д.А. Мод, там некоторые персонажи квестовые свободно гуляют по зоне. Вдруг я случайно заметил, что Юра, которому нужно принести артефакт уже мертв, выбросом накрыло. При этом квест не проваливается, можно ли как-нибудь переписать возврат компаса не юре, а сычу скажем, за ту же награду, в каком файле покопаться надо? И ещё, а можно ли прописать некоторым персонажам свойства нпс (т.е. бессмертие), так как альфа например в Sigerous Mod не умирала при использовании мною анабиотика под выбросом. Так же можно ли переписать взятие квеста на наезд на сталкеров с Султана на вольного сталкера Кастета (он непосредственно участвует в наезде на сталкеров), а то в моде у бандитов есть добро на отстрел гг, я убил группу вражественно настроенных бандитов, и султан стал врагом, а бандиты участвующие в наезде нет. Можно вроде как-то сбросить инфопоршень об отношении к тебе группировки, по крайней мере рекомендовали по отношению к наемникам сделать кому-то.

Сейвы для sgm 2.2 до прибытия на скадовск http://depositfiles.com/files/4wb6gyis1
 
denis2000Дата: Вс, 04.12.2011, 00:07 | Сообщение # 52
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Quote (STAS-23)
При этом квест не проваливается, можно ли как-нибудь переписать возврат компаса не юре, а сычу скажем, за ту же награду, в каком файле покопаться надо?

Пропиши диалог закрытия квеста Сычу. И... придется начинать новую игру для того чтобы диалог "принялся" НПС. Поэтому или забей или закрывай задание выдачей инфопорций через скрипт.
Quote (STAS-23)
а можно ли прописать некоторым персонажам свойства нпс (т.е. бессмертие), так как альфа например в Sigerous Mod не умирала при использовании мною анабиотика под выбросом.

Если имеешь ввиду имунитет перед выбросом у НПС, то такого нет. Нужно чтобы НПС находился в укрытии или выброс скриптово его убъет. Поэтому квестовые НПС обычно сидят невылазно в укрытиях.
Quote (STAS-23)
Так же можно ли переписать взятие квеста на наезд на сталкеров с Султана на вольного сталкера Кастета

Будь проще переиграй с раннего сейва или верни нейтральность бандитам (Читай Сборник модостроения ЗП - Изменяем отношения группировок через скрипт)


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
CRO$$Дата: Вт, 13.12.2011, 15:48 | Сообщение # 53
Зомби
Пользователи
Сообщений: 3391
Награды: 0
Репутация: [ -122 ]

denis2000, а в sgm_world.script Меча зовут zat_stalker_member?

Добавлено (13.12.2011, 15:48)
---------------------------------------------
Сделал всё, как показанно в уроке
[cut=В sgm_world заменил строки]
Code
create("zat_bandit_base_guard_1",474.558,35.107,48.658,1739291,293)

create("zat_bandit_base_guard_2",401.908,34.100,63.140,1627091,71)

create("zat_bandit_base_guard_3",435.439,34.668,31.535,1680801,293)

create("zat_bandit_base_guard_4",380.558,32.793,30.124,1594480,71)

create("zat_bandit_base_guard_5",385.141,33.160,28.310,1600921,71)

create("zat_bandit_base_guard_6",379.745,34.344,-1.344,1592349,294)

create("zat_bandit_base_guard_7",412.928,39.444,-10.238,1643574,293)

create("zat_bandit_base_guard_8",391.787,34.741,-59.438,1611514,72)

create("zat_bandit_base_guard_9",404.285,36.198,2.642,1631380,293)

create("zat_bandit_base_guard_10",420.651,36.240,-58.467,1655391,222)

create("zat_bandit_base_guard_11",383.974,34.312,-11.495,1599847,294)

create("zat_bandit_base_guard_12",384.163,34.290,-57.917,1599782,72)

create("zat_bandit_base_bodyguard_1",407.998,39.448,-14.709,1636497,293)

create("zat_bandit_base_bodyguard_2",407.748,39.447,-9.401,1635469,293)

create("zat_bandit_base_bodyguard_3",412.659,39.446,-5.960,1643586,293)

create("zat_bandit_base_bodyguard_4",412.231,39.447,-18.475,1642572,293)

create("zat_bandit_base_sniper_1",404.872,39.446,-4.663,1631370,293)

create("zat_bandit_base_sniper_2",439.108,36.444,-31.202,1686418,293)

create("zat_bandit_base_west_chief",382.182,32.560,36.911,1596637,71)

create("zat_bandit_base_south_chief",440.906,36.061,-63.574,1689709,222)

create("zat_bandit_base_leader",405.729,39.447,-11.714,1633419,293)

create("zat_bandit_bodyguard",405.858,39.446,-18.573,1633413,293)

create("zat_bandit_trader",411.646,36.263,4.658,1641612,293)

на
Code
if (not has_alife_info("zat_mod_bandit_spawner")) and (has_alife_info("jup_b207_dealers_pda_sold")) then

       create("zat_bandit_base_guard_1",474.558,35.107,48.658,1739291,293)

       create("zat_bandit_base_guard_2",401.908,34.100,63.140,1627091,71)

       create("zat_bandit_base_guard_3",435.439,34.668,31.535,1680801,293)

       create("zat_bandit_base_guard_4",380.558,32.793,30.124,1594480,71)

       create("zat_bandit_base_guard_5",385.141,33.160,28.310,1600921,71)

       create("zat_bandit_base_guard_6",379.745,34.344,-1.344,1592349,294)

       create("zat_bandit_base_guard_7",412.928,39.444,-10.238,1643574,293)

       create("zat_bandit_base_guard_8",391.787,34.741,-59.438,1611514,72)

       create("zat_bandit_base_guard_9",404.285,36.198,2.642,1631380,293)

       create("zat_bandit_base_guard_10",420.651,36.240,-58.467,1655391,222)

       create("zat_bandit_base_guard_11",383.974,34.312,-11.495,1599847,294)

       create("zat_bandit_base_guard_12",384.163,34.290,-57.917,1599782,72)

       create("zat_bandit_base_bodyguard_1",407.998,39.448,-14.709,1636497,293)

       create("zat_bandit_base_bodyguard_2",407.748,39.447,-9.401,1635469,293)

       create("zat_bandit_base_bodyguard_3",412.659,39.446,-5.960,1643586,293)

       create("zat_bandit_base_bodyguard_4",412.231,39.447,-18.475,1642572,293)

       create("zat_bandit_base_sniper_1",404.872,39.446,-4.663,1631370,293)

       create("zat_bandit_base_sniper_2",439.108,36.444,-31.202,1686418,293)

       create("zat_bandit_base_west_chief",382.182,32.560,36.911,1596637,71)

       create("zat_bandit_base_south_chief",440.906,36.061,-63.574,1689709,222)

       create("zat_bandit_base_leader",405.729,39.447,-11.714,1633419,293)

       create("zat_bandit_bodyguard",405.858,39.446,-18.573,1633413,293)

       create("zat_bandit_trader",411.646,36.263,4.658,1641612,293)

       give_info("zat_mod_bandit_spawner")

end

Начинаю новую игру, и тут вылазит зелёный жук
[cut][error]Expression : !m_error_code
[error]Function : raii_guard::~raii_guard
[error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line : 748
[error]Description : ... - Зов Припяти\gamedata\scripts\sgm_callbacks.script:862: attempt to index global 'sgm_world' (a nil value)

[/cut]
[/cut]
Что делать?
ЗЫ Делал я это на Генозис аддон под СГМ2.0 smile

А разве в инструкции так? denis2000


Сообщение отредактировал CRO$$ - Вт, 13.12.2011, 16:37
 
deefДата: Вт, 13.12.2011, 22:42 | Сообщение # 54
Гражданский
Пользователи
Сообщений: 1
Награды: 0
Репутация: [ 0 ]

Привет. Подскажите пожалуйста вот по какому вопросу:
Хочу заспавнить скриптом НПС, конкретно военного торговца из Припяти, в Темной Долине на ферме где сталкерская база. Так вот: при запуске скрипта НПС на секунду появляется по заданым координатам и исчезает. почему он исчезает?

Логика персонажа кидает его на положенное место (в Припять). XOBAH

Без фактов можно строить только предположения. Так говорил Заратустра? denis2000
 
KoshaДата: Вт, 27.12.2011, 15:55 | Сообщение # 55
Отмычка
Пользователи
Сообщений: 32
Награды: 0
Репутация: [ 0 ]

подскажите скрипт респавна не по смарту а просто по координатам плиз (хотел тыкнуть мутантов не подалеку от базы сталкеров на кордоне ) (игра ЧН)
 
КолхозникДата: Вт, 03.01.2012, 22:57 | Сообщение # 56
Командир Штурмового Подразделения
Пользователи
Сообщений: 571
Награды: 10
Репутация: [ 401 ]

Заспавнил нпс торговца из монолита с логикой бороды не подскажете можно ли сделать чтоб только он был ко мне безразличен а не вся группировка?
 
denis2000Дата: Вт, 03.01.2012, 23:04 | Сообщение # 57
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Ленин, Кривовато конечно но можно в логике прописать
Code
on_info = {=actor_enemy} %=actor_neutral%

тоесть если ГГ враг НПС, принудительно помирить.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
КолхозникДата: Ср, 04.01.2012, 10:45 | Сообщение # 58
Командир Штурмового Подразделения
Пользователи
Сообщений: 571
Награды: 10
Репутация: [ 401 ]

можно ли "засунуть" нужный ПДА в рюкзак определенному нпс?

Безусловно! Или отредактировав инвентарь НПС в файлах character_desc_***.xml или добавить скриптом в любой момент игры. denis2000

Добавлено (04.01.2012, 10:45)
---------------------------------------------
в файлах character_desc_***.xml пример можно а то не могу додуматься как

Тег supplies отвечает за инвентарь. XOBAH
 
VaiteriaДата: Ср, 04.01.2012, 12:05 | Сообщение # 59
Отмеченная Зоной
Пользователи
Сообщений: 1641
Награды: 20
Репутация: [ 3044 ]

Привет ребята!
Я создала тайник. При начале ново игры он появился, но оказался висящим над землёй примерно на уровне коленок ГГ.
Что надо поменять в координатах что бы тайник лежал непосредственно на земле?
Вот координаты тайника:


Высота - это Y. Уменьшайте. tracker




Никому не обязана, ни к чему не привязана, никому не подобна, потому и свободна...
 
XOBAHДата: Ср, 04.01.2012, 12:30 | Сообщение # 60
Техник Вольных
Вольные сталкеры
Сообщений: 912
Награды: 21
Репутация: [ 991 ]

Vaiteria, Надо уменьшить высоту, это координата Y если не ошибаюсь...
Расстояние от коленок до земли примерно 0.4 метра


 
Поиск: