Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: 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]
 
СахарДата: Пт, 20.02.2015, 05:10 | Сообщение # 1186
Гражданский
Пользователи
Сообщений: 2
Награды: 4
Репутация: [ 69 ]

Akame, Смотри в сборнике модостроителя ссылка в шапку.
Цитата suhar_ ()
Установил Borland C++ builder.

Советую использовать Microsoft Visual Studio 2010. Так как сталкер скорее всего писали в нем плюс будет подсветка ошибок а также подсказка по классам, методам и т.п.

Добавлено (20.02.2015, 05:10)
---------------------------------------------
Akame, Смотри в сборнике модостроителя ссылка в шапку.

Цитата suhar_ ()
Установил Borland C++ builder.

Советую использовать Microsoft Visual Studio 2010. Так как сталкер скорее всего писали в нем плюс будет подсветка ошибок а также подсказка по классам, методам и т.п.


 
VUGДата: Пт, 20.02.2015, 06:45 | Сообщение # 1187
Гражданский
Пользователи
Сообщений: 4
Награды: 0
Репутация: [ 0 ]

Цитата grid2210 ()
по какой формуле вычисляетсяется параметр оружия "scope_zoom_factor" если быть точнее как сделать в sgm 2.2 что бы при прицеливании не было зума

Формулу не подскажу, но если правильно помню, то приближение отсутствует при scope_zoom_factor = 100, уменьшение параметра увеличивает приближение. Кстати, в комплекте gamedata sgm 2.2 должен быть файлик с таблицей соответствия этого параметра и приближения реальных прицелов.

Добавлено (20.02.2015, 06:45)
---------------------------------------------

Цитата Akame ()
после выброса, Сталкеры которые попали под выброс и не укрылись от него, т.е. умерли автоматически становились зомбированными

Эта функция реализована в ARS COP моде "Выброс с некоторой вероятностью зомбирует НПЦ". Каким образом - не разбирался.
 
suhar_Дата: Пт, 20.02.2015, 07:20 | Сообщение # 1188
Бывалый
Пользователи
Сообщений: 106
Награды: 0
Репутация: [ 0 ]

Цитата Сахар ()
Советую использовать Microsoft Visual Studio 2010

Ок. У вас есть опыт работы с файлами движка?
 
СахарДата: Пт, 20.02.2015, 07:35 | Сообщение # 1189
Гражданский
Пользователи
Сообщений: 2
Награды: 4
Репутация: [ 69 ]

suhar_, К несчастью нет все никак не получается их скачать.

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

Цитата grid2210 ()
по какой формуле вычисляетсяется параметр оружия "scope_zoom_factor" если быть точнее как сделать в sgm 2.2 что бы при прицеливании не было зума

Приблизительно кратность прицела это соотношение угла зрения без оптики, к углу зрения с оптическим прицелом.
Параметр scope_zoom_factor - угол зрения в градусах, стандартный угол зрения без прицела в сталкере 73,3.
Значит если не должно быть увличения ставите scope_zoom_factor = 73,3, если хотите примерно двукратное то scope_zoom_factor = 37. Точный параметр можно подобрать в игре, при этом видимый размер объекта должен увеличиваться ровно на требуемую кратность прицела при его применении.

Цитата Akame ()
после выброса, Сталкеры которые попали под выброс и не укрылись от него, т.е. умерли автоматически становились зомбированными

Правьте скрипт surge_manager.script функция CSurgeManager:kill_all_unhided() В шапке темы, также есть Сборник модостроителя в котором есть рецепт превращение части трупов в зомби.


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

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

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


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
a4927860Дата: Чт, 26.02.2015, 14:01 | Сообщение # 1193
Новичок
Пользователи
Сообщений: 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 | Сообщение # 1194
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

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

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
a4927860Дата: Чт, 26.02.2015, 17:16 | Сообщение # 1195
Новичок
Пользователи
Сообщений: 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 | Сообщение # 1196
Рожденный в СССР
Разработчики
Сообщений: 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 | Сообщение # 1197
Новичок
Пользователи
Сообщений: 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 | Сообщение # 1198
Рожденный в СССР
Разработчики
Сообщений: 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 | Сообщение # 1199
Новичок
Пользователи
Сообщений: 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 | Сообщение # 1200
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

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

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

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


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