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

Помощь тем кто хочет знать больше о игре и модах

Если у вас появились вопросы по модостроению в игре S.T.A.L.K.E.R. Задавайте их в этой теме - умные головы,
модосторители и просто разбирающиеся в программировании люди вам ответят.


Много интересного материала здесь (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)", ее и надо расскомментировать, должно получиться вот так:
Код
function abort(fmt, ...)
                     local reason = string.format(fmt, ...)
                     error_log(reason)
end

Вот для примера два одинаковых вылета, первый с функцией по умолчанию, второй - с поправленной функцией

Первый:
Код
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)

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


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


Посты, для которых есть свои категории, из этой темы будут удаляться или перемещаться в соответсвующую тему. Персональных извещений в ЛС о переносе\удалении поста не будет, ищите сами. Учитывайте, что в системах Ucoz тема не обновляется в статистике при переносе поста.
Посты, написанные здесь-же после переноса, будут расцениваться как кросспостинг, со всеми вытекающими


[cut noguest=Первый юбилей нашей темы]

Здравствуйте господа модостроители, и все так или иначе причастные к этому.
Нашей теме исполнился 1 год.
От души поздравляю Всех Вас дорогие друзья, творческих успехов.
Хочу так же выразить отдельную благодарность denis2000 и ХОВАН.

tracker 23.06.11



[/cut]
 
a4927860Дата: Пн, 23.02.2015, 22:37 | Сообщение # 1186
Новичок
Пользователи
Сообщений: 81
Награды: 0
Репутация: [ 22 ]

Доброй ночи.
Как отследить событие - окончание инфо в начале игры?
или событие автосейва - новая игра
 
denis2000Дата: Вт, 24.02.2015, 14:05 | Сообщение # 1187
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

a4927860,
zat_a1_logic.ltx в начале игры выдает инфопорцию zat_a1_game_start
zat_b101_logic.ltx ожидает окончания интро выдает стартовые задания и делает сохранение новой игры.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
a4927860Дата: Чт, 26.02.2015, 14:01 | Сообщение # 1188
Новичок
Пользователи
Сообщений: 81
Награды: 0
Репутация: [ 22 ]

наверное я вообще не тот вопрос задал.
пытаюсь вызвать спаунить моих (нужных мне нпс) в начале игры
если есть любой сохраненный сейв - НЕ автосейв - например квик сейв - то все в полном порядке.
если же нет (но есть автосейв) игра вылетает вот с таким логом:

[cut noguest]
* Game tong - начало игры.scop is successfully saved to file 'c:\users\public\docume~1\stalke~1.-\savedgames\tong - начало игры.scop'
! Cannot find saved game ~#i#:wm:return_items[start_menu28693(Меню классов)]:not se_npc!!!

FATAL ERROR

[error]Expression : error handler is invoked!
[error]Function : handler_base
[error]File : D:\prog_repository\sources\trunk\xrCore\xrDebugNew.cpp
[error]Line : 764
[error]Description : pure virtual function call
[/cut]

не понимаю с чем это связано... а главное как от этого излечится?
 
denis2000Дата: Чт, 26.02.2015, 16:12 | Сообщение # 1189
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

a4927860, Как спавните?

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
a4927860Дата: Чт, 26.02.2015, 17:16 | Сообщение # 1190
Новичок
Пользователи
Сообщений: 81
Награды: 0
Репутация: [ 22 ]

извиняюсь - забыл указать:

function start_menu()
db.actor.health=-0.8
alife():create("start_menu", db.actor:position():add(db.actor:direction():mul(100)), 1, db.actor:game_vertex_id())
end
 
makdmДата: Чт, 26.02.2015, 19:27 | Сообщение # 1191
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

Цитата a4927860 ()
alife():create("start_menu", db.actor:position():add(db.actor:direction():mul(100)), 1, db.actor:game_vertex_id())

"start_menu" - это секция чего?


Терпение......
И все получится!
 
a4927860Дата: Чт, 26.02.2015, 19:43 | Сообщение # 1192
Новичок
Пользователи
Сообщений: 81
Награды: 0
Репутация: [ 22 ]

это секция в xr_effects.script
так еще пробывал:
create("start_menu", db.actor:position():add(db.actor:direction():mul(100)), 1, db.actor:game_vertex_id())
но так оно совсем падает =)

Добавлено (26.02.2015, 19:33)
---------------------------------------------
я просто не понимаю почему После сохранения квик сейвом оно работает а до - нет. магия какая то

Добавлено (26.02.2015, 19:43)
---------------------------------------------
makdm, еще вопрос - вы делали ограничение для мода албора на проверку переносимого веса - можете объяснить как она работала и где лежала?

 
makdmДата: Чт, 26.02.2015, 19:50 | Сообщение # 1193
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

Цитата a4927860 ()
это секция в xr_effects.script

В xr_effects.script пишут функции, а не секции!!!!!!!!!
Покажите свою "секцию" - "start_menu". Посмотрим на это чудо техники. dry

Добавлено (26.02.2015, 19:50)
---------------------------------------------

Цитата a4927860 ()
можете объяснить как она работала и где лежала?

Там было всё просто. На update ГГ проверялся установленный вес. Если он отличался от стандартных параметров игры, то искусственно вызывался вылет.
Есть более изощрённый способ. Если интересно, могу расписать, как это сделать.


Терпение......
И все получится!
 
a4927860Дата: Чт, 26.02.2015, 21:28 | Сообщение # 1194
Новичок
Пользователи
Сообщений: 81
Награды: 0
Репутация: [ 22 ]

Цитата makdm ()
Покажите свою "секцию" - "start_menu". Посмотрим на это чудо техники.


а все понял в чем вопрос создавайемый "start_menu" это нпс.

[cut noguest=нпс]<specific_character id="start_menu" team_default="1">
<name>Меню классов</name>
<icon>ui_inGame2_renegade_3</icon>
<map_icon x="1" y="0">
</map_icon>
<bio>Опытный сталкер. Детальная информация отсутствует.</bio>
<class>start_menu</class>
<community>stalker</community>
<terrain_sect>stalker_terrain</terrain_sect>
<snd_config>characters_voice\human_01\stalker\</snd_config>
<rank>20</rank>
<reputation>0</reputation>
<money min="5000" max="10300" infinitive="0" />
<visual>actors\stalker_neutral\stalker_neutral_1_1</visual>
<supplies>
[spawn] \n
</supplies>
<start_dialog>start_menu_dialog</start_dialog>
</specific_character>[/cut]

Добавлено (26.02.2015, 21:28)
---------------------------------------------
могу выложить все по этому нпс но он абсолютно нормально создается После сохранения не автосейвом

Вот в чем разница? что меняется в игре после сохранения индивидуального?

основа аддона сгм 2,2+албор

 
makdmДата: Пт, 27.02.2015, 00:09 | Сообщение # 1195
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

Цитата a4927860 ()
создавайемый "start_menu" это нпс.

Вот я честно не понял зачем всё вот это:
Цитата a4927860 ()
db.actor:position():add(db.actor:direction():mul(100)), 1, db.actor:game_vertex_id())

Я понимаю, когда нужно создать НПС во время игры и вам, как разработчику, не понятно, где в это время может находиться игрок.
НО, если у вас начало игры, вы что не знаете где стартует ГГ ? И что нельзя сразу прописать точку спавна НПС в 100 метрах от ГГ прямо по курсу?
Пропишите спавн НПС после автосейва в логике рестриктора, где происходит автосейв. В чём сложность то?


Терпение......
И все получится!
 
a4927860Дата: Пт, 27.02.2015, 01:30 | Сообщение # 1196
Новичок
Пользователи
Сообщений: 81
Награды: 0
Репутация: [ 22 ]

makdm, он у меня не единственный. и проблема в том что его то я могу прописать по координатам - действительно не проблема. а вот любого другого нпс создаваемого уже в произвольной точке - нет.

Как пример точно такой же нпс но в произвольной точке спустя 10+Т времени по юзанью гг предмета
если до этого момента нет сохранения - вылет тот же самый.

баг в расстоянии судя по всему. при создании в 10 метрах - все нормально, по всей видимости до обычного сохранения КАК то (хз как) работает по другому зона онлайна... ничерта не понимаю но причину бага нашел буду править.
 
makdmДата: Пт, 27.02.2015, 15:09 | Сообщение # 1197
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

a4927860, спавн НПС можно проводить в любом месте, а лучше за пределами локации.
Затем перемещать НПС по вектору движения ГГ в 100 метрах перед ГГ.
Делается это так.

Пусть за пределами локации есть точка [spawn_npc_way], которая прописана в all.spawn
Из рестриктора вызываете функцию %=spawn_npc_neer_actor(start_menu:spawn_npc_way)%

Пишите функцию в xr_effects.script

Код
function spawn_npc_neer_actor( actor, obj, p )
local dir = vector_rotate_y( actor:direction(), 1 )
local position = actor:position():add( dir:mul( 100 ) )
local section = p[ 1 ]
local ptr = patrol ( p[ 2 ] )
local index = p[ 3 ] or 0
local s_obj = alife():create( section, ptr:point(index), ptr:level_vertex_id(0), ptr:game_vertex_id(0) )
s_obj.position = position
end


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


Сообщение отредактировал makdm - Пт, 27.02.2015, 15:10
 
BIZonnikДата: Вс, 01.03.2015, 19:58 | Сообщение # 1198
Гражданский
Пользователи
Сообщений: 14
Награды: 0
Репутация: [ 0 ]

denis2000, подскажите как в ЗП сделать так, чтобы аномалии реагировали на НПС? Знаю что нужно ковырять bind_anomaly_field.script.
 
denis2000Дата: Вс, 01.03.2015, 22:39 | Сообщение # 1199
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

BIZonnik, Реакция аномалий выключена в движке, все моды возвращающие это работают на скриптах: проверяется насколько НПС близок к аномалии, если в радиусе действия то НПС наноситься хит.

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

denis2000, есть ли какие-то правки движка по сей теме?

Бес понятия. denis2000
 
Поиск: