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


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



 
sergej5500Дата: Ср, 21.11.2018, 18:39 | Сообщение # 796
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Цитата Policai ()
Как запустить выброс из консоли?


Попробуй так.

По горячей клавише функция:

xr_effects.surge_started(db.actor)
 
PolicaiДата: Ср, 21.11.2018, 18:52 | Сообщение # 797
Ветеран
Разработчики
Сообщений: 421
Награды: 2
Репутация: [ 183 ]

sergej5500,

Извини, для меня это тёмный лес... Можешь как то обьяснить попроще? Просто когда захожу в игру с общим олспавном. у меня настроен выброс в surge_manager на через час игровой, можно и подождать, а когда отдельный спавн по каждой локе, это не работает, выбросов нет совсем. а проверять то надо.


 
sergej5500Дата: Ср, 21.11.2018, 19:00 | Сообщение # 798
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Цитата Policai ()
Можешь как то обьяснить попроще?


Открываем файл scripts\ui_main_menu.script
Для SGM:
Ищем:
Код
elseif db.actor~=nil and dik==DIK_keys.DIK_F5 then
self:mod_options()

Добавляем ниже:
Код
elseif db.actor~=nil and dik==DIK_keys.DIK_F6 then
xr_effects.surge_started(db.actor)

Для чистой игры (ТЧ\ЧН\ЗП) и модов на них (Универсальный способ):
Ищем:
Код
if dik == DIK_keys.DIK_Q then
self:OnMessageQuitWin()

Добавляем ниже:
Код
elseif db.actor~=nil and dik==DIK_keys.DIK_F6 then
xr_effects.surge_started(db.actor)

в игре жмем ESC-F6-ESC. Наслаждаемся выбросом.
 
PolicaiДата: Ср, 21.11.2018, 19:20 | Сообщение # 799
Ветеран
Разработчики
Сообщений: 421
Награды: 2
Репутация: [ 183 ]

FATAL ERROR
[error]Expression : !m_error_code
[error]Function : raii_guard::~raii_guard
[error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line : 748
[error]Description : ...ty breakthrough\gamedata\scripts\ui_main_menu.script:347: attempt to call field 'surge_started' (a nil value)
stack trace:

После нажатия F6, что не так сделал?

выглядит у меня так

end
elseif dik == DIK_keys.DIK_Q then
self:OnMessageQuitWin()
elseif db.actor~=nil and dik==DIK_keys.DIK_F6 then
xr_effects.surge_started(db.actor)
end


 
sergej5500Дата: Ср, 21.11.2018, 19:52 | Сообщение # 800
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Policai,

Виноват. Приношу извинения. Писал по памяти. Ошибся.

Нужно писать

xr_effects.start_surge(db.actor)
 
PolicaiДата: Чт, 22.11.2018, 04:45 | Сообщение # 801
Ветеран
Разработчики
Сообщений: 421
Награды: 2
Репутация: [ 183 ]

sergej5500,

Спасибо, всё заработало.

Ay49Mihas,

Заменил функцию на if false then return {} end. и двери заработали как надо.


 
AliceДата: Пт, 11.01.2019, 13:56 | Сообщение # 802
Гражданский
Пользователи
Сообщений: 12
Награды: 0
Репутация: [ 0 ]

Помогите разобраться.

m_stalker.ltx --> [stalker_damage] --> bip01_l_clavicle = 1, 10, 0.7 ; -- ключица

Три цифровых значения, что они значат и почему их три. Плиззз.

Разобралась, это для анимации НПС параметры при ранении.


Сообщение отредактировал Alice - Пт, 11.01.2019, 15:09
 
PolicaiДата: Сб, 16.02.2019, 07:16 | Сообщение # 803
Ветеран
Разработчики
Сообщений: 421
Награды: 2
Репутация: [ 183 ]

Народ!
Гугля не знает, спрошу тут. Как сделать автосохранения в игре при переходе на новую локацию?
Переход проходит без гуи окна, система переходов сделана по аналоги с ЧН.


 
sergej5500Дата: Чт, 21.02.2019, 18:37 | Сообщение # 804
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Цитата Policai ()
Как сделать автосохранения в игре при переходе на новую локацию?


А зачем это надо вообще? Когда я в СДК прикручиваю новые локации, то автоматически при входе ГГ в левел-чендер начинается загрузка нужного уровня и автоматом записывается автосейв захода на локацию. Ничего нигде прописывать не надо.
 
PolicaiДата: Чт, 21.02.2019, 18:41 | Сообщение # 805
Ветеран
Разработчики
Сообщений: 421
Награды: 2
Репутация: [ 183 ]

Да... только эта автосохранка переписывается постоянно, перешёл на новую локу, она переписывается на эту локу, а мне нужно чтоб автосохранка сохранялась на каждом переходе отельно.
То есть перешёл на свалку допустим, появилось сохранение "переход на свалку" перешёл в лиманск, появилось сохранение "переход в лиманск"




Сообщение отредактировал Policai - Чт, 21.02.2019, 18:45
 
sergej5500Дата: Чт, 21.02.2019, 19:02 | Сообщение # 806
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Цитата Policai ()
перешёл на свалку допустим, появилось сохранение "переход на свалку" перешёл в лиманск, появилось сохранение "переход в лиманск"


Тогда надо делать, как в оригинале ЗП. Там автосейвы прописаны в диалоге Лоцмана или Гарика.

Или как в СГМ. Там автосейв пишется через логику рестриктора, управляющего переходом.
 
PolicaiДата: Чт, 21.02.2019, 19:27 | Сообщение # 807
Ветеран
Разработчики
Сообщений: 421
Награды: 2
Репутация: [ 183 ]

Я поэтому и написал что переходы сделаны как в ЧН, то есть без спейса и гуи окна, сразу в левел ченжер.
По идее я думал спейс поставить на локе, и в нём логику, спейсы вроде движком сразу читаются, непорсредственно где находится ГГ, попробовал, но правда логику вывел в отдельный файл выносной а в спейсе только ссылку на этот файл. Эта сохранка работает только когда я нахожусь в радиусе действия спейса, тоесть поставил возле перехода, и когда я прохожу на локу, сохраняется автосейв переход на локу ........ , но если я перехожу на другом переходе он не срабатывает... Вот и думаю, толи логика неверная то ли двиг не читает спейс.


 
sergej5500Дата: Чт, 21.02.2019, 20:33 | Сообщение # 808
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Policai,

Можно попробовать такую логику.

[logic]
active = sr_idle

[sr_idle]
on_actor_inside = sr_idle@save

[sr_idle@save]
on_game_timer = 20 | sr_idle@timer %=scenario_autosave(st_save_****)%
on_actor_outside = sr_idle

[sr_idle@timer]
on_game_timer = 40 | sr_idle %=teleport_actor(***_level_walk:***_level_look)%
on_actor_outside = sr_idle

При этой логике после входа в рестриктор через некоторое время запишется автосейв. А ещё через некоторое время игрока закинет в левел-чендер.

Останется возможность покинуть рестриктор, если игрок передумает. Поиграй с таймерами, посмотри как лучше.


Сообщение отредактировал sergej5500 - Чт, 21.02.2019, 20:34
 
PolicaiДата: Пт, 22.02.2019, 00:39 | Сообщение # 809
Ветеран
Разработчики
Сообщений: 421
Награды: 2
Репутация: [ 183 ]

Не Серёг, это вообще не вариант, переделывать куеву тучу переходов в готовом моде нет смысла. Я могу просто поставить спейс возле каждого перехода с логикой.

[logic]
active = sr_idle@game_start

[sr_idle@game_start]
on_info = {=actor_on_level(ЛОКАЦИЯ)} sr_idle@nil %=damage_actor_items_on_start +СМАРТ_game_start =scenario_autosave(st_save_start_ЛОКАЦИЯ)%

[sr_idle@nil]

Но озвучил неудобство этой схемы выше.... Меня интересует возможность поставить 1 спейс на локе, и при переходе на эту локу чтоб записывался автосейв независимо от того на каком переходе я зашёл на локу....




Сообщение отредактировал Policai - Пт, 22.02.2019, 00:41
 
sergej5500Дата: Пт, 22.02.2019, 11:54 | Сообщение # 810
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Цитата Policai ()
Меня интересует возможность поставить 1 спейс на локе, и при переходе на эту локу чтоб записывался автосейв независимо от того на каком переходе я зашёл на локу....


Можно сделать так. Написать логику наподобие той, которая в твоем посте. После захода на локу запишется автосейв.

Поставить на локах по одному такому рестриктору.

В рестрикторах прописать сброс инфопорций для всех лок, кроме той, на которой этот рестриктор стоит.

Что то вроде.

[logic]
active = sr_idle

[sr_idle]
on_game_timer = 60 | sr_idle@1 %+save_start_ЛОКАЦИЯ =scenario_autosave(st_save_start_ЛОКАЦИЯ)% ; запись автосейва прибытия
on_info = {+save_start_ЛОКАЦИЯ} sr_idle@1

[sr_idle@1]
on_game_timer = 60 | sr_idle@2
on_info = {+save_start_ЛОКАЦИЯ_1} %-save_start_ЛОКАЦИЯ_1% ; сброс поршней для всех прочих локаций
on_info2 = {+save_start_ЛОКАЦИЯ_2} %-save_start_ЛОКАЦИЯ_2%
on_info3 = {+save_start_ЛОКАЦИЯ_3} %-save_start_ЛОКАЦИЯ_3%
on_info4 = {+save_start_ЛОКАЦИЯ_4} %-save_start_ЛОКАЦИЯ_4%

[sr_idle@2]
on_info = {-save_start_ЛОКАЦИЯ} sr_idle ; если ГГ побывал на другой локе, то поршень должен быть сброшен. Возврат рестриктора на первую секцию

Как то так.


Сообщение отредактировал sergej5500 - Пт, 22.02.2019, 12:21
 
Поиск: