Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: 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]
 
denis2000Дата: Чт, 21.08.2014, 18:51 | Сообщение # 601
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Kosha, У монстров своя работа, которая задается точкой пути по имени: <имя смарта>_kamp_<индекс>_task. Например: mar_smart_terrain_10_10_kamp_1_task, для смарта: mar_smart_terrain_10_10

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
ХоукДата: Пт, 22.08.2014, 00:43 | Сообщение # 602
Гражданский
Пользователи
Сообщений: 6
Награды: 0
Репутация: [ -20 ]

Как заменить дизайн окна диалогов? Какие .dds файлы отвечают за это? И конфиг координатов?

ui_numpad.dds, ui_numpad.xml. denis2000

И ещё - как в ТЧ на практике ЗП реализовать препарат наподобие "Геркулеса", дарующий пациенту дополнительные килограммы рюкзака?

Никак. Но с удовольствием выслушаю ваши предложения. denis2000
 
a4927860Дата: Вс, 24.08.2014, 17:51 | Сообщение # 603
Новичок
Пользователи
Сообщений: 81
Награды: 0
Репутация: [ 22 ]

Доброго дня.

есть у меня некий кусок кода, предположим вот этот:
[cut=кусок кода]
Код
if item_name=="drawing_3"  then
  if db.actor:object("de_details_11") ~= nil  and
  db.actor:object("de_details_10") ~= nil  and
  db.actor:object("de_details_0") ~= nil  and
  db.actor:object("de_details_3") ~= nil
  then
   give_object_to_actor("pouch_3")
    alife():release(alife():object(de_details_3),true)
   alife():release(alife():object(de_details_10),true)
   alife():release(alife():object(de_details_0),true)
   alife():release(alife():object(de_details_11),true)
  else
   give_object_to_actor("drawing_3")
  end
end

[/cut]
при использовании в первый раз он отрабатывает верно, создает предмет удаляет предмет, но при отрабатывании второй раз он мне выдает:
0023:033BB7D0 lua.JIT.1.1.4.dll, lua_yield()

Что не так?

Добавлено (24.08.2014, 17:51)
---------------------------------------------
иногда падает и с 1 раза но чаще с 2го

 
makdmДата: Вс, 24.08.2014, 17:59 | Сообщение # 604
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

a4927860,

А вот это вообще непонятно что

alife():release(alife():object(de_details_3),true)
alife():release(alife():object(de_details_10),true)
alife():release(alife():object(de_details_0),true)
alife():release(alife():object(de_details_11),true)

если de_details_3 это ссылка на клиентский объект, то запись должна быть такой ( разжёвываю )

de_details_3_id = de_details_3:id()
s_obj = alife():object(de_details_3_id)
alife():release(s_obj,true)

если de_details_3 это секция предмета у ГГ, то вот так ( разжёвываю )

de_details_3 = db.actor:object("de_details_3")
de_details_3_id = de_details_3:id()
s_obj = alife():object(de_details_3_id)
alife():release(s_obj,true)


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


Сообщение отредактировал makdm - Вс, 24.08.2014, 18:11
 
a4927860Дата: Вс, 24.08.2014, 18:37 | Сообщение # 605
Новичок
Пользователи
Сообщений: 81
Награды: 0
Репутация: [ 22 ]

Спасибо! Но почему тогда оно отрабатывается??

Добавлено (24.08.2014, 18:37)
---------------------------------------------
В тот самый - первый случай применения

 
vav54Дата: Вс, 24.08.2014, 22:38 | Сообщение # 606
Гражданский
Пользователи
Сообщений: 5
Награды: 0
Репутация: [ 0 ]

Не может ли кто сказать, что означает запись в log: ERROR:SV:can't find children [31525] of parent [1395757744]
Где искать подчиненную и родительские данные обозначенные в квадратных скобках.
С уважением vav54
 
denis2000Дата: Пн, 25.08.2014, 13:34 | Сообщение # 607
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

vav54, Речь о том, что некий объект с id = 1395757744 заявляет, что он родительский и имеет некий дочерний объект с id = 31525 (или наоборот объект с id = 31525 заявляет что он дочерний объекту с id = 1395757744), однако движек не может найти такой объект. Множество объектов могут быть дочерними или родительскими, например НПС родительские по отношению к предметам в их инвентаре, контейнеры родительские к предметам в них и т.п. Мне кажется (судя по id родительского объекта > 65535), что просто нет объекта с id = 1395757744.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
LiptonДата: Пн, 25.08.2014, 15:34 | Сообщение # 608
Гражданский
Пользователи
Сообщений: 5
Награды: 0
Репутация: [ 0 ]

Как убрать выдачу задания о поиске пути на плато? ЗП.
 
sergej5500Дата: Пн, 25.08.2014, 15:41 | Сообщение # 609
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Lipton,

Рестриктор gamedata\configs\scripts\zaton\zat_b20_quest_line.

Нужно закоментировать строки в секции sr_idle@start.
 
LiptonДата: Пн, 25.08.2014, 21:04 | Сообщение # 610
Гражданский
Пользователи
Сообщений: 5
Награды: 0
Репутация: [ 0 ]

Нужна помощь ещё по одному вопросу:
Помнится, в ТЧ у каждого НПС был диалог "Что можешь интересного рассказать?". После его юзанья единожды, во второй раз Непись отвечал: "Больше ничего не знаю". (Потом(через некоторое время), впрочем, можно было спросить у НПСа ещё раз)
Вопрос: Как сделать такое в ЗП?

З.Ы.: ТЧ на компе нет, разархировать и глянуть образец не могу.
 
sergej5500Дата: Пн, 25.08.2014, 21:25 | Сообщение # 611
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Lipton,

В Зове Припяти это все есть. Подходишь к сталкеру, спрашиваешь: "Что нового в Зоне".

Диалоги прописаны в gamedata\configs\misc\dialog_manager.

[cut=Секции ответов][dm_information_1]
category = information
npc_community = stalker, night_stalker
level = zaton
info = -zat_b14_take_item

[dm_information_2]
category = information
npc_community = stalker, night_stalker
level = zaton
info = +zat_b38_disappearance_stalkers_get_out_from_den_of_the_bloodsucker_give -zat_b38_disappearance_stalkers_tell_barmen_about_medic_give

[dm_information_3]
category = information
npc_community = stalker, night_stalker
level = zaton
info = +zat_b38_disappearance_stalkers_tell_barmen_about_medic_give[/cut]

Тут указано, кто ответит на вопрос этой фразой и при каких условиях.

Тексты фраз в gamedata\configs\text\rus\st_dialog_manager.

[cut=Фразы]<string id="dm_information_1">
<text>Слыхал про земснаряд, чуть восточней «Скадовска»? Говорят, там по ночам светится что-то странно... Притом учти, странно даже для Зоны. В общем, даже не знаю: то ли залезть туда, глянуть - вдруг что-то ценное, то ли остаться отсиживать задницу... целее будет.</text>
</string>
<string id="dm_information_10">
<text>Да тут все старое. Взять, вот, брошенную автоколонну на мосту Преображенского - проржавело там все нахрен, вместе с мостом. Только все равно тянет там пошарить. Если бы не мутанты с аномалиями...</text>
</string>
<string id="dm_information_11">
<text>Слыхал, что Султан, сволочь, хотел Бороду под себя подмять? Мало того, что его бандитскую рожу терпят на «Скадовске», он еще и выпендрится решил... Не на того напал! Говорят, Борода с нашей сталкерской братией его так уделали... Не видать Султану своего гоповского авторитета.</text>
</string>
<string id="dm_information_12">
<text>Блин, ты слышал? Султан, быдло, наехал на Бороду... Не знаю, как он такое вытворил, но он, вроде, Бороду на счётчик поставил! Как такое вообще быть может? Так и обернутся не успеешь, а «Скадовск» уже - гоповская хаза!</text>
</string>
<string id="dm_information_13">
<text>Брат, а про Оазис слышал? Говорят, есть такое место: и найти его нелегко, а уж добраться, если нашел, - еще труднее. Еще говорят, будто там есть озеро: зайдёшь в него, и все болезни пройдут... да что там, любые раны закроются! Эх, что болтать.. Видел, сколько неопытных сталкеров пришло сюда, к центру Зоны? Кто ищет Клондайк артефактов, кто - так, из любопытства, но многие именно Оазис ищут. Он ведь, по слухам, где-то в этих краях...</text>
</string>
<string id="dm_information_14">
<text>Говорят, всё, капец Зоне настал... Кто-то нашел «Оазис» и забрал артефакт - «Сердце оазиса». Теперь Зона уйдёт в другое измерение, а всем сталкерам уже никогда из неё не выбраться... Шутка. На самом деле, действительно какой-то новый артефакт нашли, сейчас над ним учёные в бункере колдуют.</text>
</string>
<string id="dm_information_15">
<text>Про Тополя слышал? Он своим ребятам недавно новую задницу нашёл, в которую они, естественно, с радостью полезли. Ну и долазились до того, что им контролёр по мозгам прошёлся. Они бы сейчас уже «вставай... подъем...» бормотали, если бы не сталкер, который с ними был. Говорят, с Тополя зомбирование сошло, проморгался - а перед ним этот сталкер на корточках сидит, уши контролёру отрезает.</text>
</string>
<string id="dm_information_16">
<text>Про деревню Копачи слышал? Когда была первая авария на ЧАЭС, её так радиацией накрыло, что решили всю деревню закопать. От домов в деревне теперь только радиоактивные холмики остались. Говорят, место было жуткое ещё тогда, а что там сейчас твориться - никто толком и не знает. Это место все стороной обходят, боятся... А вдруг зря её обходят, может, Клондайк артефактов как раз там?</text>
</string>
<string id="dm_information_17">
<text>А знаешь, что сейчас на «Янове» всего два сталкера, которые приближение выброса чуствуют. Один - это Костоправ, наш медик, а второй - Зулус, бывший долговец. Бывшим он стал недавно... Когда на станцию «Янов» пришли «долговцы»? там уже появились бойцы «Свободы». Естественно, приход «Долга» они не пропустили... Во время перестрелки половина обоих отрядов полегла, ещё и нескольких вольных сталкеров зацепило. Вот тут-то Зулус и сказал, что приближается выброс. Деваться было некуда, «Долг» со «Свободой» объявили перемирие и укрылись на станции «Янов». А Зулус после этого ушёл из «Долга» и поселился рядом со станцией, на вышке.</text>
</string>[/cut]

Такие разговоры ведут неписи, у которых прописано в профиле:
#include "gameplay\character_dialogs.xml"

У эксклюзивов типа Бороды, Кардана и т.д. таких фраз обычно нет.
 
Ay49MihasДата: Сб, 06.09.2014, 09:40 | Сообщение # 612
Полевой исследователь
Ученые сталкеры
Сообщений: 218
Награды: 9
Репутация: [ 83 ]

Появился вопросик, не знаю, насколько уж боянистый или тупой.

Есть задача --- сделать катсцену пролёта камеры над актором (очень кинематографично, Спилберг с Кэмероном плачут обнявшись), и начал её решать. Судя по оригинальному ЗП, надо создать актора для катсцены (create_cutscene_actor_with_weapon()) (он должен быть в spawn'е), и дать ему некую логику. В этой логике он всё время анимации сидит в смарткавере, где ему нужно этот смарткавер создать в alife_xxx.ltx. И вот тут внимание вопрос: как мне сделать так, чтбы не надо было начинать новую игру? Рестриктор добавить на лету можно, уже проверено, но вот что делать со смарткаверами? Заранее благодарен!
 
makdmДата: Сб, 06.09.2014, 11:16 | Сообщение # 613
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

Ay49Mihas, обычно разрабы заранее знают, где будет проигрываться кат-сцена в игре и пишут секции необходимых объектов в all.spawn
Во время кат-сцены эти объекты задействуются.
В вашем случае, раз уж вы рестриктор добавляете на лету, что мешает создать смарт_кавер на лету?
Спавните, разбираете нет пакет серверного объекта, меняете параметры, пишите в пакет серверного объекта все изменения. Алгоритм тот же, что и при создании рестриктора.
Структуру нет-пакета можно посмотреть в ACDC.
Готовую функцию, я думаю, вряд ли кто вам выдаст. Ну, если только кто-то это уже делал и захочет с вами поделиться готовым решением.


Терпение......
И все получится!
 
KoshaДата: Вс, 07.09.2014, 18:15 | Сообщение # 614
Отмычка
Пользователи
Сообщений: 32
Награды: 0
Репутация: [ 0 ]

Выше Хоук спрашивал для ТЧ но для себя уточню:
А возможен ли Геркулес (Дополнительный вес на время) В Чистом небе? или фича таких препаратов возможна только на ЗП

Нет, только ЗП. denis2000
 
Ay49MihasДата: Ср, 10.09.2014, 18:59 | Сообщение # 615
Полевой исследователь
Ученые сталкеры
Сообщений: 218
Награды: 9
Репутация: [ 83 ]

Цитата makdm ()
Спавните, разбираете нет пакет серверного объекта, меняете параметры, пишите в пакет серверного объекта все изменения.

Тут есть одна трудность. При создании объекта "на лету", у меня нет возможности поправить его name, который обычно указывается в поле cover_name секции animpoint логики персонажа. Как быть в этом случае, что указывать в поле cover_name актора? Или в загруженной логике править? Я не знаю, как это сделать, но подозреваю, что можно.


Сообщение отредактировал Ay49Mihas - Ср, 10.09.2014, 18:59
 
Поиск: