Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: 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Дата: Пт, 03.05.2013, 23:50 | Сообщение # 376
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Sandwich,
Тогда, возможно, не прописана ссылка на профиль этого НПС. Пример, спавн-секция НПС:
[zat_stalker_employer]:stalker_employer
$spawn = "respawn\zat_stalker_employer"
character_profile = zat_stalker_employer
spec_rank = master
community = stalker
story_id = zat_stalker_employer
can_be_wounded = false
custom_data = scripts\SGM\zaton\zat_stalker_employer.ltx


Строка character_profile = zat_stalker_employer отсылает к профилю НПС.
 
SandwichДата: Сб, 04.05.2013, 00:03 | Сообщение # 377
Зам. Лидера «Свободы»
Свобода
Сообщений: 4340
Награды: 16
Репутация: [ 431 ]

sergej5500, нечего не пойму,всё указано вроде верно,делал по кучи уроков а ошибка одна везде
[cut=character_desc]<specific_character id="voennyi_01" team_default="1">
<name>GENERATE_NAME_stalker</name>
<icon>ui_inGame2_Sich</icon>
<map_icon x="1" y="0"></map_icon>
<bio>Опытный сталкер. Детальная информация отсутствует.</bio>

<class>voennyi_01</class>
<community>army</community>
<terrain_sect>stalker_terrain</terrain_sect>
<snd_config>characters_voice\human_01\military\</snd_config>

<rank>900</rank>
<reputation>0</reputation>

<visual>actors\stalker_soldier\stalker_soldier_1</visual>
<supplies>
[spawn] \n
wpn_ak74 = 1 \n
ammo_5.45x39_fmj = 3 \n
</supplies>
#include "gameplay\character_criticals_4.xml"

<start_dialog>zat_b30_owl_stalker_trader_start_dialog</start_dialog>
<actor_dialog>zat_b30_owl_stalker_trader_choose_task</actor_dialog>
<actor_dialog>zat_b30_owl_stalker_trader_sell_items</actor_dialog>
<actor_dialog>zat_b30_owl_stalker_trader_buy_info</actor_dialog>
<!-- actor_dialog>zat_b30_owl_stalker_trader_b40_about_merc_camp</actor_dialog -->
<actor_dialog>zat_b30_owl_stalker_trader_stages</actor_dialog>
<actor_dialog>zat_b30_owl_stalker_trader_b30_actor_after_barmen</actor_dialog>
<actor_dialog>zat_b30_owl_stalker_trader_about_nimble</actor_dialog>
<actor_dialog>actor_break_dialog</actor_dialog>
</specific_character>
[/cut]
[cut=nps_profile]
<character id="voennyi_01">
<class>voennyi_01</class>
<specific_character>voennyi_01</specific_character>
</character>[/cut]
[cut=spawn_section_military(он указан в spawn_section) ][voennyi_01]:stalker
$spawn = "respawn\voennyi_01"
character_profile = voennyi_01
spec_rank = novice
community = stalker
story_id = voennyi_01
can_be_wounded = false
[/cut]
[cut=all.spawn][2354]

; cse_abstract properties
section_name = stalker
name = voennyi_01
position = 13.244469, -7.294157, 16.457243
direction = 0,0,0
; cse_alife_trader_abstract properties
money = 5000
character_profile = voennyi_01

; cse_alife_object properties
game_vertex_id = 1366
distance = 0
level_vertex_id = 320484
object_flags = 0xffffffbf
custom_data = <<END
[smart_terrains]
END

; cse_alife_creature_abstract properties
g_team = 0
g_squad = 1
g_group = 5
health = 1
dynamic_out_restrictions =
dynamic_in_restrictions =
upd:health = 1
upd:timestamp = 0x2009656c
upd:creature_flags = 0x3d
upd:position = 13.244469,-7.294157,16.457243
upd:o_model = 0
upd:o_torso = 0.00316426996141672,0.062321275472641,0
upd:g_team = 0
upd:g_squad = 1
upd:g_group = 5
; cse_alife_monster_abstract properties
upd:next_game_vertex_id = 65535
upd:prev_game_vertex_id = 65535
upd:distance_from_point = 0
upd:distance_to_point = 0

; cse_alife_human_abstract properties
predicate5 = 1,1,0,0,1
predicate4 = 2,2,0,2

; cse_ph_skeleton properties
upd:start_dialog =
; se_stalker properties[/cut]


А колбасу и батоны нынче хреновые стали делать! (Умнейший неизвестный сталкер)
 
sergej5500Дата: Сб, 04.05.2013, 00:17 | Сообщение # 378
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Sandwich,
Не уверен на 100%, но возможно, этот метод в Зове Припяти не работает. Попробуй заспавнить сталкера иначе.
В way_ локации в all.spawn пропиши место спавна.
[voennyi_01_look]
points = p0
p0:name = wp00
p0:flags = 0x1
p0:position = -513.054443359375,4.84810924530029,102.342498779297
p0:game_vertex_id = 98
p0:level_vertex_id = 37892


Координаты сделай свои. Пропиши рестриктор спавна с логикой типа:
[logic]
active = sr_idle@voennyi_01_spawner

[sr_idle@voennyi_01_spawner]
on_info = {-voennyi_01_spawned} %=spawn_corpse(voennyi_01:voennyi_01_look) +voennyi_01_spawned%
on_info2 = {+voennyi_01_spawned} sr_idle@voennyi_01_spawner1

[sr_idle@voennyi_01_spawner1]
 
FantomICWДата: Сб, 04.05.2013, 00:24 | Сообщение # 379
Лидер «Свободы»
Свобода
Сообщений: 4438
Награды: 44
Репутация: [ 1340 ]

Sandwich, или еще можешь заспавнить нпс через скрипт по нажатию клавиши (урок КМБ №1). Тогда можно будет сделать определенные выводы...

Добавлено (04.05.2013, 00:24)
---------------------------------------------
Sandwich, минутку, а что у тебя в spawn_sectiom_military делает параметр can_be_wounded = false? Это вроде из раздела логики в файлах configs/scripts





Сообщение отредактировал FantomICW - Сб, 04.05.2013, 00:24
 
SandwichДата: Сб, 04.05.2013, 00:24 | Сообщение # 380
Зам. Лидера «Свободы»
Свобода
Сообщений: 4340
Награды: 16
Репутация: [ 431 ]

sergej5500, у этой локации нет way

А колбасу и батоны нынче хреновые стали делать! (Умнейший неизвестный сталкер)
 
denis2000Дата: Сб, 04.05.2013, 00:30 | Сообщение # 381
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Sandwich, sergej5500,
1. Спавн НПС через all.spawn, работает и в ЗП
2. Если спавнищь этим методом, то надобности в секции [voennyi_01]:stalker - нет!
3. Мне не нравиться секция в all.spawn:
a. К чему там [smart_terrains]?
b. Почему отсутствует visual_name?
c. Странные значения у параметров timestamp и creature_flags


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
SandwichДата: Сб, 04.05.2013, 00:39 | Сообщение # 382
Зам. Лидера «Свободы»
Свобода
Сообщений: 4340
Награды: 16
Репутация: [ 431 ]

denis2000, 3.Делал по уроку,там было так написано,не могу найти нормальный урок для спавна нпс на новой локе с алл спавном

А колбасу и батоны нынче хреновые стали делать! (Умнейший неизвестный сталкер)


Сообщение отредактировал Sandwich - Сб, 04.05.2013, 00:41
 
denis2000Дата: Сб, 04.05.2013, 00:42 | Сообщение # 383
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата (Sandwich)
Делал по уроку,там было так написано

Там было так написано для ТЧ? Или для ЗП? Для какого декомпилятора ADCD?

Цитата (Sandwich)
почему то нпс не спавниться по кнопке

ЛОГ есть?


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
SandwichДата: Сб, 04.05.2013, 00:44 | Сообщение # 384
Зам. Лидера «Свободы»
Свобода
Сообщений: 4340
Награды: 16
Репутация: [ 431 ]

denis2000, там было написано для ЗП,не написано для какого декомпилятора,ссылку могу предоставить в лс,с нпс через скрипт всё нормально,ошибся

А колбасу и батоны нынче хреновые стали делать! (Умнейший неизвестный сталкер)


Сообщение отредактировал Sandwich - Сб, 04.05.2013, 00:46
 
denis2000Дата: Сб, 04.05.2013, 00:46 | Сообщение # 385
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата (Sandwich)
с нпс через скрипт всё нормально,ошибся

Значит однозначно, баг в секции all.spawn

У меня секция выглядит так[cut]
Код
[escape_996]
; cse_abstract properties
section_name = stalker
name = esc_colonel_kolyazin
position = -137.83,-25.58,-371.73
direction = 0,0,0

; cse_alife_trader_abstract properties
money = 0
character_profile = esc_colonel_kolyazin

; cse_alife_object properties
game_vertex_id = 20
distance = 0
level_vertex_id = 133518
object_flags = 0xffffffbf
custom_data = <<END

[story_object]
story_id = esc_colonel_kolyazin

[logic]
cfg = scripts\escape\npc\esc_colonel_kolyazin.ltx   

[game_info]
END

; cse_visual properties
visual_name = 0

; cse_alife_creature_abstract properties
g_team = 0
g_squad = 0
g_group = 0
health = 0
dynamic_out_restrictions =   
dynamic_in_restrictions =   

upd:health = 1
upd:timestamp = 0
upd:creature_flags = 0
upd:position = -137.83,-25.58,-371.73
upd:o_model = 0
upd:o_torso = 0.000190000006114133,-0.00443700002506375,0
upd:g_team = 0
upd:g_squad = 0
upd:g_group = 0

; cse_alife_monster_abstract properties

upd:next_game_vertex_id = 65535
upd:prev_game_vertex_id = 65535
upd:distance_from_point = 0
upd:distance_to_point = 0

; cse_alife_human_abstract properties
predicate5 = 1,2,0,1,0
predicate4 = 1,1,1,1

; cse_ph_skeleton properties

upd:start_dialog =   

; se_stalker properties

В версии ADCD 2010-05-10 by XiaNi[/cut]


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
SandwichДата: Сб, 04.05.2013, 01:05 | Сообщение # 386
Зам. Лидера «Свободы»
Свобода
Сообщений: 4340
Награды: 16
Репутация: [ 431 ]

denis2000, наверное это неправильный способ спавна.Я использовал урок кмб №1 и вместо файла в папке scripts я сделал секцию в алл спавн по вашему образцу со своими изменениями
[cut=алл][2353]
; cse_abstract properties
section_name = stalker
name = zat_sh_nikitka_skadovsk
position = 13.244469,-7.294157,16.457243
direction = 0,0,0

; cse_alife_trader_abstract properties
money = 0
character_profile = zat_sh_nikitka_skadovsk

; cse_alife_object properties
game_vertex_id = 1366
distance = 0
level_vertex_id = 320484
object_flags = 0xffffffbf
custom_data = <<END

[story_object]
story_id = esc_colonel_kolyazin

[logic]
cfg = scripts\military\zat_sh_nikitka_skadovsk.ltx

[game_info]
END

; cse_visual properties
visual_name = 0

; cse_alife_creature_abstract properties
g_team = 0
g_squad = 0
g_group = 0
health = 0
dynamic_out_restrictions =
dynamic_in_restrictions =

upd:health = 1
upd:timestamp = 0
upd:creature_flags = 0
upd:position = 13.244469,-7.294157,16.457243
upd:o_model = 0
upd:o_torso = 0.000190000006114133,-0.00443700002506375,0
upd:g_team = 0
upd:g_squad = 0
upd:g_group = 0

; cse_alife_monster_abstract properties

upd:next_game_vertex_id = 65535
upd:prev_game_vertex_id = 65535
upd:distance_from_point = 0
upd:distance_to_point = 0

; cse_alife_human_abstract properties
predicate5 = 1,2,0,1,0
predicate4 = 1,1,1,1

; cse_ph_skeleton properties

upd:start_dialog =

; se_stalker properties

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[/cut]
Ошибка осталась та же

Странно у меня все работает и через скрипт и через all.spawn с вашими-же настройками! Перепроверяйте все снова, пока не заработает. denis2000


А колбасу и батоны нынче хреновые стали делать! (Умнейший неизвестный сталкер)


Сообщение отредактировал Sandwich - Сб, 04.05.2013, 01:05
 
VurdalakOMGДата: Сб, 04.05.2013, 13:22 | Сообщение # 387
Гражданский
Пользователи
Сообщений: 18
Награды: 0
Репутация: [ 0 ]

всех приветствую,может кто нибудь подскажет как увеличить частоту спавна NCP?допустим что бы спавнились через 12 часов игрового времени.

Кросспостинг наказуем! Делаю вам устное предупреждение. denis2000
 
yakutiДата: Ср, 08.05.2013, 16:38 | Сообщение # 388
Отмычка
Пользователи
Сообщений: 46
Награды: 0
Репутация: [ 7 ]

У меня вопрос. Создал сквад, в симуляции не прописывал, но при начале новой игры он все равно спавнится. С чем может быть связано подобное?
 
FantomICWДата: Ср, 08.05.2013, 19:59 | Сообщение # 389
Лидер «Свободы»
Свобода
Сообщений: 4438
Награды: 44
Репутация: [ 1340 ]

yakuti, приведи конкретно коды


 
yakutiДата: Ср, 08.05.2013, 21:17 | Сообщение # 390
Отмычка
Пользователи
Сообщений: 46
Награды: 0
Репутация: [ 7 ]

all.spawn


dar_comanda_terrain.ltx


dar_comanda.ltx


squad_descr.ltx
 
Поиск: