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


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


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
sergej5500Дата: Вт, 18.06.2013, 16:19 | Сообщение # 436
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

9vova8,
Полагаю, что нужно редактировать таблицу [monster_relations] в game_relations.
Значения
; [1] друг, [0] нейтрал, [-1] враг, [-2] злейший враг.
 
АзазельДата: Чт, 20.06.2013, 15:07 | Сообщение # 437
Новичок
Пользователи
Сообщений: 77
Награды: 0
Репутация: [ 0 ]

Всем доброго времени суток. smile Такой вопрос. Заспавнил нпс через скрипт. Прописал логику meet все хорошо работает. Но вот при добавлении victim нпс же должен вроде как оборачиваться на актора а он так и стоит столбом. Как бы исправить ?

Какая версия? denis2000
 
МарксДата: Чт, 20.06.2013, 23:35 | Сообщение # 438
Новичок
Пользователи
Сообщений: 73
Награды: 2
Репутация: [ 81 ]

Вечер Добрый.
Создал НПС.Но не появляется окно диалога.Подскожите?
 
FantomICWДата: Чт, 20.06.2013, 23:37 | Сообщение # 439
Лидер «Свободы»
Свобода
Сообщений: 4438
Награды: 44
Репутация: [ 1340 ]

Маркс, а у НПС диалог прописан в его секции в файле character_desc_...?


 
МарксДата: Чт, 20.06.2013, 23:43 | Сообщение # 440
Новичок
Пользователи
Сообщений: 73
Награды: 2
Репутация: [ 81 ]

zaton
 
FantomICWДата: Чт, 20.06.2013, 23:45 | Сообщение # 441
Лидер «Свободы»
Свобода
Сообщений: 4438
Награды: 44
Репутация: [ 1340 ]

Маркс, так диалог в секции нпс прописан?


 
МарксДата: Чт, 20.06.2013, 23:45 | Сообщение # 442
Новичок
Пользователи
Сообщений: 73
Награды: 2
Репутация: [ 81 ]

Да
[cut noguest=Screen]

[/cut]


Сообщение отредактировал Маркс - Чт, 20.06.2013, 23:49
 
FantomICWДата: Чт, 20.06.2013, 23:52 | Сообщение # 443
Лидер «Свободы»
Свобода
Сообщений: 4438
Награды: 44
Репутация: [ 1340 ]

Маркс, прописана ли секция meet в логике НПС?


 
МарксДата: Чт, 20.06.2013, 23:55 | Сообщение # 444
Новичок
Пользователи
Сообщений: 73
Награды: 2
Репутация: [ 81 ]

Нет

Добавлено (20.06.2013, 23:55)
---------------------------------------------
Вот код логики.

[cut noguest=Код Логики]
[logic]
active = remark1
invulnerable = true
inv_max_weight = 1
combat_ignore = combat_ignore
danger = danger_ignore

[remark1]
no_move = true
anim = guard_chasovoy

[danger_ignore]
ignore_distance = 5

[/cut]

 
FantomICWДата: Пт, 21.06.2013, 00:09 | Сообщение # 445
Лидер «Свободы»
Свобода
Сообщений: 4438
Награды: 44
Репутация: [ 1340 ]

Маркс, тогда создаем секцию meet:
Код
[logic]   
active = remark1   
invulnerable = true   
inv_max_weight = 1   
combat_ignore = combat_ignore   
danger = danger_ignore   

[remark1]   
no_move = true   
anim = guard_chasovoy   
meet = meet_remark1

[danger_ignore]   
ignore_distance = 5   

[meet_remark1]   
abuse = false   
use = true   
allow_break = false   
meet_on_talking = false





Сообщение отредактировал FantomICW - Пт, 21.06.2013, 00:10
 
АзазельДата: Пт, 21.06.2013, 00:33 | Сообщение # 446
Новичок
Пользователи
Сообщений: 77
Награды: 0
Репутация: [ 0 ]

denis2000, Чистая ЗП 1.6.02. Сейчас переделал схему на такую:
Код
[logic]
active = camper@basmath
combat_ignore = combat_ignore

[camper@basmath]
path_walk = basmath_walk
path_look = basmath_look
meet = meet@basmath
danger = danger_condition@basmath
invulnerable = true

[danger_condition@basmath]
ignore_distance = 0
ignore_distance_corpse = 0

[meet@basmath]
use = true
use_wpn = true
meet_talk_enabled = true
 
makdmДата: Пт, 21.06.2013, 09:06 | Сообщение # 447
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

Азазель, Секцции meet на ЗП и ТЧ отличаются. Вы пишите для ТЧ.
Откройте файл xr_meet.script и посмотрите, что и как задаётся в секции meet.

Вот , скажем так, "стандартная" секция.

[cut=Секция][meet@standart]
close_anim = nil
close_victim = nil
close_snd_hello = nil
close_snd_bye = nil
far_anim = nil
far_victim = nil
close_distance = 0
far_distance = 0
use = {=actor_enemy} false, true
allow_break = false
trade_enable = false
meet_on_talking = false
abuse = false [/cut]

Ну а Вы в неё проставляйте те значения, которые Вам необходимы при встрече ГГ со сталкером


Терпение......
И все получится!


Сообщение отредактировал makdm - Пт, 21.06.2013, 09:56
 
АзазельДата: Пт, 21.06.2013, 14:12 | Сообщение # 448
Новичок
Пользователи
Сообщений: 77
Награды: 0
Репутация: [ 0 ]

makdm, Благодарю. А где можно посмотреть какой параметр за что отвечает ?
 
NIVДата: Сб, 22.06.2013, 08:03 | Сообщение # 449
Полевой исследователь
Ученые сталкеры
Сообщений: 167
Награды: 4
Репутация: [ 180 ]

Подскажите, пожалуйста, ситуация следующая: на Юпитере, при спауне мутантов около научного бункера внутренняя дверь бункера блокируется. Расковырял её, чтобы она не блокировалась, теперь если зайти внутрь при атаке мутантов, ученые становятся красными. Добавил их отношение к ГГ до 5000 (game_relations.ltx), они все равно становятся красными. В логике ученых (jup_b6_scientist_nuclear_physicist.ltx, jup_b6_scientist_biochemist.ltx) не нашел, когда они становятся врагами, можно только заставить их разговаривать с ГГ-врагом. Если перестрелять мутантов, ученые все равно остаются красными (может прошло мало времени?). Вопрос - как сделать так, чтобы ученые были врагами только к мутантам, а не к ГГ?

Изменяем реальность S.T.A.L.K.E.R. CoP: "Цена Новых Исследований" / "New Investigations' Value"
 
sergej5500Дата: Сб, 22.06.2013, 18:38 | Сообщение # 450
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

NIV,
Я бы попробовал в файл gamedata\configs\scripts\jupiter\jup_b47_logic во все секции логики добавить код типа:
on_info = {-jup_b6_scientist_group_mir} %+jup_b6_scientist_group_mir =set_squad_goodwill(jup_b6_scientist_group:friend)%

on_info нужно присвоить уникальный в данной секции номер, например on_info8.
 
Поиск: