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

Цитата Наблюдатель ()
можно ли поменять группировку квестовым неписям


Можно. Дядьку Яра точно можно перевести без проблем.

Цитата Наблюдатель ()
И нужна ли для этого обязательно НИ?


Неписей можно переспавнить, то есть старого убрать, а нового заспавнить уже с нужной группировкой.
 
НаблюдательДата: Вт, 20.03.2018, 02:57 | Сообщение # 2777
Ветеран
Пользователи
Сообщений: 402
Награды: 1
Репутация: [ 59 ]

Цитата sergej5500 ()
Можно. Дядьку Яра точно можно перевести без проблем.

Благодарю, уважаемый sergej5500! А подскажите плиз, в каком файле прописана группировка дядьки Яра?
 
sergej5500Дата: Вт, 20.03.2018, 20:01 | Сообщение # 2778
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Цитата Наблюдатель ()
А подскажите плиз, в каком файле прописана группировка дядьки Яра?


Одним файлом тут не обойтись. Можно сделать так.

[cut=Как то так]1. В файл gamedata\configs\gameplay\character_desc_jupiter добавляем секцию в конец файла выше тега </xml>

<specific_character id="jup_b19_freedom_yar2" team_default = "1">
<name>jup_b19_freedom_yar_name</name>
<icon>ui_inGame2_Dyadka_Yar</icon>
<map_icon x="1" y="0">
</map_icon>
<bio>Опытный сталкер. Детальная информация отсутствует.</bio>

<class>jup_b19_freedom_yar2</class>
<community>stalker</community>
<mechanic_mode>1</mechanic_mode>
<terrain_sect>stalker_terrain</terrain_sect>
<snd_config>characters_voice\human_02\freedom\</snd_config>

<rank>100</rank>
<reputation>0</reputation>
<money min="2500" max="5000" infinitive="0"/>
<visual>actors\stalker_freedom\stalker_freedom_2_face_2</visual>
<supplies>

[spawn] \n
wpn_svd = 1 \n
ammo_7.62x54_7h1 = 3 \n
wpn_beretta = 1 \n
ammo_9x19_pbp = 1 \n
grenade_f1 = 2 \n

#include "gameplay\character_items_3.xml"
#include "gameplay\character_food.xml"
#include "gameplay\character_drugs_3.xml"
#include "gameplay\character_drugs_sci.xml"
</supplies>

<start_dialog>jup_b19_freedom_yar_base_start</start_dialog>

<actor_dialog>jup_b19_freedom_yar_base_why_me</actor_dialog>
<actor_dialog>jup_b19_freedom_yar_base_where_to</actor_dialog>
<actor_dialog>jup_b19_freedom_yar_base_agreed</actor_dialog>
<actor_dialog>jup_b19_freedom_yar_done_why_mercs</actor_dialog>
<actor_dialog>jup_b19_freedom_yar_done_why_me</actor_dialog>
<actor_dialog>jup_b19_freedom_yar_done_bye</actor_dialog>
<actor_dialog>jup_b19_freedom_yar_come_with_me</actor_dialog>

<actor_dialog>jup_b19_freedom_yar_pripyat_about</actor_dialog>
<actor_dialog>jup_b19_freedom_yar_pripyat_healing</actor_dialog>

<actor_dialog>jup_b19_freedom_yar_break_dialog</actor_dialog>

<!--<actor_dialog>actor_break_dialog</actor_dialog>-->

#include "gameplay\character_criticals_4.xml"
</specific_character>


2. В файл gamedata\configs\gameplay\npc_profile или extended_profiles в конец файла добавляем код


<character id="jup_b19_freedom_yar2">
<class>jup_b19_freedom_yar2</class>
</character>

3. В файл gamedata\configs\creatures\spawn_sections_jupiter или spawn_sections_extended_stalkers в конец файла добавляем код


[jup_b19_freedom_yar2]:stalker_silent
$spawn = "respawn\jup_b19_freedom_yar2"
character_profile = jup_b19_freedom_yar2
community = stalker
story_id = jup_b19_freedom_yar

4. В файл \gamedata\configs\misc\script_sound_jupiter или squad_descr_extended в конец файла добавляем код

[jup_b19_freedom_yar_squad2]:online_offline_group
faction = stalker
npc = jup_b19_freedom_yar2
target_smart = {+jup_b19_destroy_yar -jup_b19_yar_switch_smart_terrain} jup_b19, jup_a6
spawn_point = {+jup_b19_destroy_yar -jup_b19_yar_switch_smart_terrain} jup_b19_freedom_yar_spawn_point_kopachy, jup_a6_spawn_point
story_id = jup_b19_freedom_yar_squad
always_arrived = true

5. В файл \gamedata\scripts\ui_main_menu после строк

if dik == DIK_keys.DIK_Q then
self:OnMessageQuitWin()

добавляем elseif dik == DIK_keys.DIK_Z then
xr_effects.remove_squad(actor,nil,{"jup_b19_freedom_yar_squad"})
xr_effects.create_squad(actor,nil,{"jup_b19_freedom_yar_squad2","jup_a6"})

6. В игре нажимаем ESC-Z-ESC. [/cut]
 
denis2000Дата: Ср, 21.03.2018, 08:09 | Сообщение # 2779
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

sergej5500, Тогда уж не забывайте откорректировать впридачу все файлы логики для этого НПС иначе он не будет их принимать, а также все проверки в скриптах где он упоминается, раз не используете метод
Код
npc:set_character_community("stalker", 0, 0)

В xr_effects.script:
Код
function change_npc_community(actor, npc, p)
    if(p[1]~=nil) then
  npc:set_character_community(p[1], 0, 0)
    end
end

В логике персонажа:
Код
on_info = {+now_npc_stalker -npc_community_stalker} %=change_npc_community(stalker) +npc_community_stalker%
 
НаблюдательДата: Пт, 23.03.2018, 20:27 | Сообщение # 2780
Ветеран
Пользователи
Сообщений: 402
Награды: 1
Репутация: [ 59 ]

Цитата denis2000 ()
Тогда уж не забывайте откорректировать впридачу все файлы логики для этого НПС

Цитата sergej5500 ()
Одним файлом тут не обойтись.

Благодарю за ответ, уважаемые Профи. Всё не так просто оказывается. Я по наивности думал что она просто где-то прописана в файле и меняется как группировка ГГ в повелителе зоны. Следовательно и для того, что бы сделать одного Яра нейтральным к "Долгу" не обойтись без глобальных правок?
 
sergej5500Дата: Пт, 23.03.2018, 23:36 | Сообщение # 2781
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Цитата Наблюдатель ()
что бы сделать одного Яра нейтральным к "Долгу" не обойтись без глобальных правок?


Можно сделать всю Свободу на время нейтральной Долгу. А ещё можно после квеста в Копачах подойти к Яру и вместе с ним телепортироваться на Янов.
 
terr_rДата: Вт, 27.03.2018, 22:44 | Сообщение # 2782
Удаленные



Раньше играл с windows'а и ставил поверх чистой Зов Припяти 1.6.02 ствол AKS-74 из SGM 1.7 – все идеально работало; по определенным причинам сейчас мне доступен только макбук, на котором идеально идет и чистая Зов Припяти, и SGM 2.2, но при попытке поставить поверх SGM 2.2 тот самый ствол вылетает ошибка при запуске – "can't find include file: w_aks74.ltx"
Все файлы из папки с акс74 прописал в папку с модом, файл w_aks74.ltx в наличии, не могу понять почему игра ругается.
Перерыл гугл, говорят мол файла нет или его надо переставить, но перестановка не помогает
 
Voland-777Дата: Вт, 27.03.2018, 22:57 | Сообщение # 2783
Эмиссар
Пользователи
Сообщений: 1702
Награды: 9
Репутация: [ 474 ]

terr_r, а он прописан в configs/weapons/weapons.ltx?
 
terr_rДата: Ср, 28.03.2018, 07:42 | Сообщение # 2784
Удаленные



Voland-777, да, первым делом туда прописал

Сборка от Енота кстати тоже вылетает при запуске, только логи, к сожалению, не смотрел
Может ли быть такое, что обертка для запуска win приложений на маке не воспринимает конфиги нового оружия?
С другой стороны – броники из sgm 2.2 работают без проблем, да и все остальное тоже


Сообщение отредактировал terr_r - Ср, 28.03.2018, 07:47
 
denis2000Дата: Ср, 28.03.2018, 08:30 | Сообщение # 2785
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

terr_r, Файл прописанный в configs/weapons/weapons.ltx не существует по указанному пути (имя файла не совпадает, путь не совпадает, файл отсутствует).
Цитата terr_r ()
обертка для запуска win приложений на маке не воспринимает конфиги нового оружия?

Чудес не бывает.
 
terr_rДата: Ср, 28.03.2018, 09:20 | Сообщение # 2786
Удаленные



denis2000, конфиг ствола прописан в gamedata/configs/weapons/weapons/w_aks74.ltx там же где лежат и остальные стволы; пробовал заново прописать название файла, не помогло

вторые сутки просто уже исследую способы заставить все работать и никаких подвижек, видимо не судьба

О, снизошло озарение и я дописал к строчке с конфигом в файле weapons папку weapons. Теперь пишет ошибку line 502, can't open section 'mod_ak74'. Теперь у меня точно нет идей

В modders-wiki.ru поиск по номеру линии дает результат https://modders-wiki.ru/xr:Line_342, только все равно непонятно что не так с секцией mod_ak74


Сообщение отредактировал terr_r - Ср, 28.03.2018, 09:38
 
sergej5500Дата: Ср, 28.03.2018, 10:08 | Сообщение # 2787
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Цитата terr_r ()
только все равно непонятно что не так с секцией mod_ak74


Игра не может её найти. В каком-то файле (вероятно, в том, который вы добавили), прописана ссылка на эту секцию. Такие ссылки любят в СГМ. Там часто выносят некоторые параметры оружия в отдельные файлы. w_sections, например.

Проверяйте мод-источник. Ищите секцию mod_ak74 и скопируйте её в ваш мод.
 
terr_rДата: Ср, 28.03.2018, 11:33 | Сообщение # 2788
Удаленные



Действительно – случайно перенес в заголовок конфига строчку из конфига оригинала ак74. Другой момент – теперь игра запускается и после логотипа sgm вылетает не доходя до главного меню со следующей ошибкой:
[error]File: D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line: 748
[error]Description: ... call of pripyat\gamedata\scripts\sgm_version.script:10: attempt to call global ‘get_mod_version’ (a nil value)

Как с этим быть?
 
denis2000Дата: Ср, 28.03.2018, 11:58 | Сообщение # 2789
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

terr_r, Видимо покурочили файл _g.script в котором и содержиться функция get_mod_version.
 
terr_rДата: Ср, 28.03.2018, 12:07 | Сообщение # 2790
Удаленные



denis2000, ошибка указывает на поломанный синтаксис? менял _g.script чтоб получать подробный лог ошибки
 
Поиск: