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


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


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
dmitry778Дата: Пн, 07.01.2013, 23:18 | Сообщение # 271
Советник «Свободы»
Свобода
Сообщений: 727
Награды: 15
Репутация: [ 159 ]

sergej5500, Спасибо, попробую. Но мне кажется, что [zat_a1_actor_start_game_look] Это первая точка старта спавна ГГ, а [zat_a1_actor_start_game_walk] это точка куда переносит ГГ после спавна на пару метров, чтобы игра не вылетела. Это типо создания переходов. Когда ГГ переносится на пару метров от перехода, чтобы обратно не выкинуло. Но я попробую. cool

Добавлено (07.01.2013, 23:18)
---------------------------------------------
Цитата (dmitry778)
Да, первый параметр upd:o_torso, тоже нужно менять. denis2000

Так я ставил измененные параметры direction и upd:o_torso и ГГ стал смотреть на восток, а не на запад. Не могу понять почему. И какие бы я не ставил значения в этих параметрах ГГ всеравно смотрит на восток.

Диапазон значений угла в радианах от -ПИ до +ПИ. 0 - это приблизительно смотрит на юг. Первое значение upd:o_torso и второе direction. denis2000


СОВСЕМ НЕ ВАЖНО ОТ ЧЕГО ПОМРЕШЬ - ГОРАЗДО ВАЖНЕЕ ДЛЯ ЧЕГО РОДИЛСЯ.
 
9vova8Дата: Пн, 07.01.2013, 23:24 | Сообщение # 272
Новичок
Пользователи
Сообщений: 91
Награды: 2
Репутация: [ 6 ]

Цитата (9vova8)
Прочитайте ответ выше. denis2000


Это о постe Aaза?

Это о моем ответе тебе. Или сквад (им в основном управляет движек) или инливидуальная логика (тут возможностей управлять из скриптов гораздо больше). denis2000




Сообщение отредактировал 9vova8 - Пн, 07.01.2013, 23:55
 
dmitry778Дата: Вт, 08.01.2013, 10:34 | Сообщение # 273
Советник «Свободы»
Свобода
Сообщений: 727
Награды: 15
Репутация: [ 159 ]

Цитата (dmitry778)
Диапазон значений угла в радианах от -ПИ до +ПИ. 0 - это приблизительно смотрит на юг. Первое значение upd:o_torso и второе direction. denis2000

Т.е. Я так понимаю, что если за 0 берем ЮГ то -ПИ - это ближе к востоку, +ПИ - это ближе к западу.

Добавлено (08.01.2013, 10:34)
---------------------------------------------
Ad = Ar * 180 / пи
Где Ad — угол в градусах, Ar — угол в радианах.

То получается подставляя параметры взгляда получаемые при снятии координат согласно данной формуле можно понять направление в градусах? Но в каком параметре: direction или upd:o_torso или там и там должен быть одинаковый параметр. И там в параметре три значения все вычислять? Или можно поставить везде 0 и ГГ будет смотреть на ЮГ?


СОВСЕМ НЕ ВАЖНО ОТ ЧЕГО ПОМРЕШЬ - ГОРАЗДО ВАЖНЕЕ ДЛЯ ЧЕГО РОДИЛСЯ.
 
sergej5500Дата: Вт, 08.01.2013, 10:35 | Сообщение # 274
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

dmitry778
ПИ - это 180 градусов. 90 градусов - это ПИ/2 или 1.57.
 
dmitry778Дата: Вт, 08.01.2013, 10:43 | Сообщение # 275
Советник «Свободы»
Свобода
Сообщений: 727
Награды: 15
Репутация: [ 159 ]

sergej5500, Да я знаю. Мне просто понять. Правильный у меня ход мысли при вычислении координат?

СОВСЕМ НЕ ВАЖНО ОТ ЧЕГО ПОМРЕШЬ - ГОРАЗДО ВАЖНЕЕ ДЛЯ ЧЕГО РОДИЛСЯ.
 
9vova8Дата: Вт, 08.01.2013, 11:11 | Сообщение # 276
Новичок
Пользователи
Сообщений: 91
Награды: 2
Репутация: [ 6 ]

denis2000, так индивидуальная логика у меня прописана только на бой, а почему не воюют?

А подробности? denis2000


 
dmitry778Дата: Вт, 08.01.2013, 21:43 | Сообщение # 277
Советник «Свободы»
Свобода
Сообщений: 727
Награды: 15
Репутация: [ 159 ]

Всем привет. Я разобрался с направлением спавна. Получается, что если поставить параметры direction и upd:o_torso по нулям то ГГ смотрит строго на север, а если поставить в параметре upd:o_torso = 1,57, 0, 0 то ГГ повернется на 90-то градусов налево, = -1,57, 0, 0 то направо, параметр direction ни за что не отвечает. Это при старте ГГ может у НПСя за что-то отвечает.

СОВСЕМ НЕ ВАЖНО ОТ ЧЕГО ПОМРЕШЬ - ГОРАЗДО ВАЖНЕЕ ДЛЯ ЧЕГО РОДИЛСЯ.
 
denis2000Дата: Чт, 10.01.2013, 00:04 | Сообщение # 278
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

9vova8? Если применяете эту логику:[cut][logic]
on_hit = hit
on_combat = combat
[combat]
combat_type = zombied[/cut] то что вы имеете ввиду строкой: on_hit = hit


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
9vova8Дата: Чт, 10.01.2013, 18:47 | Сообщение # 279
Новичок
Пользователи
Сообщений: 91
Награды: 2
Репутация: [ 6 ]

denis2000, что при звуке выстрела они начинают стрелять.

 
denis2000Дата: Пт, 11.01.2013, 10:55 | Сообщение # 280
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

9vova8, Интересная мысль, тоесть по вашему on_shut_sound = kill`em all и on_hit = hit выглядит и переводиться одинаково?

Для начала: on_hit, on_combat, on_death, on_game_timer ... и еще многие другие обозначают событие, это вы правильно уловили, а вот на перевод с английского времени не хватило. on_hit - событие, наненсение урона НПС.

Значит on_combat = combat, on_hit = hit, тогда что такое hit? Чему приравнивается "событие"?


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

9vova8
Предполагаю, что вылет из-за отсутствия параметра spawn_point. Попробуй его дописать и добавить в all.spawn.
 
sergej5500Дата: Пт, 11.01.2013, 22:12 | Сообщение # 282
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

9vova8
Вероятнее всего, ошибки в указании целевых смартов для сквадов. Смарт в оригинале называется zat_b20_smart_terrain.


Сообщение отредактировал sergej5500 - Пт, 11.01.2013, 22:48
 
denis2000Дата: Пт, 11.01.2013, 22:50 | Сообщение # 283
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата (9vova8)
повреждение

Понятно, значит выход один: Убрать строку on_hit = hit

Цитата (sergej5500)
Вероятнее всего, ошибкм в указании целевых смартов для сквадов.

Согласен, неверное указание целевых смартов (несуществующий смарт).


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
LegioДата: Пн, 14.01.2013, 10:11 | Сообщение # 284
Трудоголик
Ночные сталкеры
Сообщений: 613
Награды: 4
Репутация: [ 182 ]

Доброго времени суток. Такая проблема. Необходимо, чтобы отряды Альфа спаунились независимо от ранга гг. Или, по другому выражаясь, спаунились с нулевым рангом гг. Можно ли такое осуществить, ковыряясь в файлах мода?
Если нельзя, то в каком файле задать ранг, который будет при старте новой игры? К примеру, 1000.

Сталкер ЗП, пиратка, 1.6.2.
Мод SGM 1.7.


Имя мне - Легион, ибо нас много.


Первая вылазка в составе Ночных сталкеров - 17.04.13
Вторая вылазка в составе Ночных сталкеров - 05.06.18
 
sergej5500Дата: Пн, 14.01.2013, 10:31 | Сообщение # 285
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Legio
Спавн "Альфы" прописывается по определенным точкам - смартам. Есть 7 смартов на Затоне, 4 на Юпитер и 2 на Припяти.
Конфиги смартов лежат в gamedata\configs\scripts\zaton\smart ...jupiter\smart и ...pripyat\smart. Откроем первый файл zat_sim_9.
[cut=Содержимое файла][smart_terrain];zat_sim_9
squad_id = 2
max_population = 2
respawn_params = respawn@zat_alfa_sim_9

[respawn@zat_alfa_sim_9]
zat_alfa_force_novice
zat_alfa_force_regular
zat_alfa_force_experienced
zat_alfa_force_veteran
zat_alfa_force_master

[zat_alfa_force_novice]
spawn_squads = zat_alfa_squad_1_novice
spawn_num = {+opt_activate_alfa_force =check_actor_rank(0:100)} 1, 0

[zat_alfa_force_regular]
spawn_squads = zat_alfa_squad_1_regular
spawn_num = {+opt_activate_alfa_force =check_actor_rank(100:200)} 1, 0

[zat_alfa_force_experienced]
spawn_squads = zat_alfa_squad_1_experienced
spawn_num = {+opt_activate_alfa_force =check_actor_rank(200:350)} 1, 0

[zat_alfa_force_veteran]
spawn_squads = zat_alfa_squad_1_veteran
spawn_num = {+opt_activate_alfa_force =check_actor_rank(350:600)} 1, 0

[zat_alfa_force_master]
spawn_squads = zat_alfa_squad_1_master
spawn_num = {+opt_activate_alfa_force =check_actor_rank(600)} 1, 0[/cut]

Здесь прописаны условия спавна отрядов Альфы. К примеру, новички:
[zat_alfa_force_novice]
spawn_squads = zat_alfa_squad_1_novice
spawn_num = {+opt_activate_alfa_force =check_actor_rank(0:100)} 1, 0.
Спавнятся при опции "Разрешить отряд Альфа" и ранге от 0 до 100. Поменяв ранг в условиях спавна, можно добиться спавна всех разновидностей Альфы сразу после начала новой игры. Параметр max_population показывает, сколько отрядов может спавнится на данном смарте. Чтобы заспавнились все 5 разновидностей, нужно сделать
max_population = 5. Аналогичным образом нужно править все остальные смарты. Если хотите, чтобы Альфа спавнилась независимо от ранга ГГ, нужно писать следующее:
spawn_num = {+opt_activate_alfa_force} 1, 0.
 
Поиск: