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

Добрый вечер.

Возможно ли прописать биноклю свойства ночного или контрастного прицела? И как это сделать?
 
PrykollДата: Вт, 27.06.2017, 23:05 | Сообщение # 2462
Аномальный Бродяга
Вольные сталкеры
Сообщений: 699
Награды: 9
Репутация: [ 111 ]

Доброго времени суток, господа-бродяги.
Вопрос у меня поимелся заковыристый. Установил мод я забавный, где НПС ходят свободно, подбирают арты и оружие,
мародёрствуют, торгуют и воюют активно. НО!!! В случае гибели НПС в инвентаре его трупа отображается ТОЛЬКО то, что он имел изначально, до подбора/грабежа. Т.Е. - Я продал новичку с обрезом и ПМ несколько стволов (к примеру 1 АК-74, 1 Винторез и 3 вальтер), пару комбезов( куртку бандита и броньку сталкерскую) и два хвоста псевдопсов, он артефакт прямо из-под рук у меня выхватил(злыдень алчный), да ещё и бандитов, мною упокоенных, обобрал безжалостно. И тут, внезапно, он опочил от солдатской пули. Радостно подрываюсь к свежему тельцу, дабы хабар урвать успеть... И что же я вижу в его инвентаре? Только Обрез, ПМ, патроны к ним, и бинтик....
А вот как бы мне прописать все подобранные/купленные им предметы в его почившую тушку? И, желательно весьма, броньку(в которой он, на тот момент одет был )
И это и есть суть вопроса. wink
Игра - Сталкер Тень Чернобыля
Версия 1.0004.
Благодарствую заранее.

Добавлено (27.06.2017, 23:05)
---------------------------------------------
Я осознаю, что причина - в скриптах, там "зачищается" всё "лишнее" из инвентаря НПС, но как "найти и обезвредить" данный скрипт - нет информации. И, ещё, я имел ввиду ВСЕХ НПС, а не конкретного персонажа, примерно, как это реализовано в СГМ COP 2.2 . Третий день, копаюсь в интернете, перелопатил кучу сайтов, но...
Жду и надеюсь nyam


А я-то что? Я мимо шел...



Сообщение отредактировал Prykoll - Вт, 27.06.2017, 21:19
 
denis2000Дата: Ср, 28.06.2017, 10:56 | Сообщение # 2463
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Prykoll,
Скрипт: death_manager.script
Функция: function keep_item(npc, item)
Закоментировать: alife():release(alife():object(item:id()), true)


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
PrykollДата: Ср, 28.06.2017, 14:19 | Сообщение # 2464
Аномальный Бродяга
Вольные сталкеры
Сообщений: 699
Награды: 9
Репутация: [ 111 ]

denis2000, я наипокорнейше извиняюсь, но я нигде не мододел, а посему НАИТУПЕЙШИЙ вопрос: что тут коментить?
Вот эта секция:
[cut noguest]
function keep_item(npc, item)
local section = item:section()

if section == "bolt"
then
return false
end

if section == "device_torch"
-- or section == "device_pda"
or section == "hand_radio"
or section == "guitar_a"
or section == "harmonica_a"
then
alife():release(alife():object(item:id()), true)
return false
end

if always_keep_item[section] == true then
return true
end

local item_id = item:id()
local item_in_slot = npc:item_in_slot(1)
if item_in_slot ~= nil and
item_in_slot:id() == item_id
then
if xiani_config.dm_keep_ammo ~= true then
item:unload_magazine()
end
--' Тут надо уменьшить кондишн оружия
item:set_condition((math.random(15)+75)*item:condition()/100)
return true
end
item_in_slot = npc:item_in_slot(2)
if item_in_slot ~= nil and
item_in_slot:id() == item_id
then
if xiani_config.dm_keep_ammo ~= true then
item:unload_magazine()
end
--' Тут надо уменьшить кондишн оружия
item:set_condition((math.random(15)+75)*item:condition()/100)
return true
end

if xiani_config.dm_keep_items == true then
return true
end
alife():release(alife():object(item:id()), true)
end
[/cut]
Вы уж простите нуба mamba


А я-то что? Я мимо шел...

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

[cut]function keep_item(npc, item)
local section = item:section()

if section == "bolt"
then
return false
end

if section == "device_torch"
-- or section == "device_pda"
or section == "hand_radio"
or section == "guitar_a"
or section == "harmonica_a"
then
alife():release(alife():object(item:id()), true)
return false
end

if always_keep_item[section] == true then
return true
end

local item_id = item:id()
local item_in_slot = npc:item_in_slot(1)
if item_in_slot ~= nil and
item_in_slot:id() == item_id
then
if xiani_config.dm_keep_ammo ~= true then
item:unload_magazine()
end
--' Тут надо уменьшить кондишн оружия
item:set_condition((math.random(15)+75)*item:condition()/100)
return true
end
item_in_slot = npc:item_in_slot(2)
if item_in_slot ~= nil and
item_in_slot:id() == item_id
then
if xiani_config.dm_keep_ammo ~= true then
item:unload_magazine()
end
--' Тут надо уменьшить кондишн оружия
item:set_condition((math.random(15)+75)*item:condition()/100)
return true
end

if xiani_config.dm_keep_items == true then
return true
end
--alife():release(alife():object(item:id()), true) --Закоментарено!
end [/cut]


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
PrykollДата: Ср, 28.06.2017, 15:54 | Сообщение # 2466
Аномальный Бродяга
Вольные сталкеры
Сообщений: 699
Награды: 9
Репутация: [ 111 ]

[off]
Цитата denis2000 ()
--alife():release(alife():object(item:id()), true) --Закоментарено!

Всего-то два - поставить surprised !!!
Вот я ...[/off]


А я-то что? Я мимо шел...



Сообщение отредактировал Prykoll - Ср, 28.06.2017, 15:58
 
НаблюдательДата: Ср, 28.06.2017, 23:47 | Сообщение # 2467
Ветеран
Пользователи
Сообщений: 402
Награды: 1
Репутация: [ 59 ]

Приветствую собрание Достойных! smile Умные Люди, объясните плиз недалёкому - я уже писал о понравившемся мне моде на ЗП - Бродяга 1.2.1. В котором мне нравится всё, кроме бешеных аномалий на каждом шагу. В версии Бродяги 1.1 аномалий не больше чем в оригинальной ЗП, но мало нищаков. Смотрите я беру файлы: all.spawn и все папки anomaly целиком, из всех локаций, в версии 1.1, переношу их в версию 1.2.1, начинаю новую игру, но аномалии всё равно возникают везде на каждом шагу и такой же мощности, какой они и были в версии 1.2.1 до замены папок?! Подскажите плиз, уважаемые Мастера, где ещё автор мог прописать эти новые аномалии, если не в папках spawns и аnomaly? Пытался связаться с автором мода - тишина, видимо он его забросил. Сам я больше ничего придумать не могу. Могу даже выложить папки gamedata обеих версий на Яндексе.
 
denis2000Дата: Чт, 29.06.2017, 17:44 | Сообщение # 2468
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата Наблюдатель ()
Подскажите плиз, уважаемые Мастера, где ещё автор мог прописать эти новые аномалии, если не в папках spawns и аnomaly?

В скрипте динамического спавна аномалий.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
НаблюдательДата: Чт, 29.06.2017, 21:03 | Сообщение # 2469
Ветеран
Пользователи
Сообщений: 402
Награды: 1
Репутация: [ 59 ]

Цитата denis2000 ()
В скрипте динамического спавна аномалий.

Здравствуйте Всем! Благодарю, уважаемый denis2000! А подскажите, плиз, название файла.
 
НаблюдательДата: Чт, 29.06.2017, 23:32 | Сообщение # 2470
Ветеран
Пользователи
Сообщений: 402
Награды: 1
Репутация: [ 59 ]

Цитата denis2000 ()
Пробуйте искать функцию типа create_anom.

Снова благодарю, уважаемый denis2000! С Вашего позволения уточню, новые аномалии могут быть прописаны в любом файле по адресу: gamedata\scripts ?
 
asd123Дата: Чт, 29.06.2017, 23:34 | Сообщение # 2471
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Наблюдатель, попробуйте проверить в файлах(если имеются):
xr_effects.script, xr_conditions.script


У мутантов тоже есть группировки. © Движок X-Ray




Сообщение отредактировал asd123 - Чт, 29.06.2017, 23:34
 
НаблюдательДата: Пт, 30.06.2017, 23:31 | Сообщение # 2472
Ветеран
Пользователи
Сообщений: 402
Награды: 1
Репутация: [ 59 ]

Цитата asd123 ()
Наблюдатель, попробуйте проверить в файлах

Цитата denis2000 ()
А вот в этих файлах скорее всего ее нет.

Приветствую Всех! Огромное спасибо за наводку, уважаемые denis2000 и asd! По вашей наводке нашёл в папке scripts файл мода brodiaga, когда удалил в нём все прописанные новые аномалии на локациях, в НИ они исчезли! Но я не понял ещё одного. В моде фонарик с батарейками, в том же файле он прописан в виде:
[cut=Тыц]--********************************************************************
--************ Фонарик, который со временем "разряжается" ************
--********************************************************************
--переменная-индикатор щелчка включения
local onoff = 0

--*** "замена" батарейки ***
--вызывается из bind_stalker.script
function replacebatt()
if (emergency == 1) then
local settingFileName = "gamedata\\configs\\misc\\torch.ltx"
local file = io.open( settingFileName, "w" )
if file ~= nil then
file:write( "[torch]".."\n".."charge = 100000" )
file:close()
end
end
end

--*** биндер фонарика ***
function fonar()
if (emergency == 1) then
local zard
--**** чтение данных как с ini-файла (LTX) ****
local ini = ini_file("misc\\torch.ltx")
zard = tonumber(ini:r_string("torch", "charge"))
--*********************************************
local torch = db.actor:object("device_torch")
if zard <= 0 then
zard = 0
torch:enable_attachable_item(false)
else
torch:enable_attachable_item(true)
end
if torch:torch_enabled() then
if onoff == 0 then
--щелчок включения
local snd_obj
snd_obj = sound_object([[weapons\groza_switch]])
snd_obj:play_at_pos(db.actor, vector():set(0,0,0), 0, sound_object.s2d)
onoff = 1
end
--*** отображение заряда на экране (текстом) ***
local mesaga = "Заряд фонарика: "..string.format("%2d", zard/1000).."%"
local hud = get_hud()
local cs_text = hud:GetCustomStatic("cs_debug")
if cs_text then
hud:RemoveCustomStatic("cs_debug")
end
hud:AddCustomStatic("cs_debug", true)
cs_text = hud:GetCustomStatic("cs_debug")
cs_text:wnd():TextControl():SetText(game.translate_string(mesaga))
--***** степень разряда *****
zard = zard - 2
--***************************
if zard == 50000 then
local text = "Батарейки в Вашем фонарике наполовину разрядились."
local texture = "ui_inGame2_D_gonets_pravosudiya"
local news_text = "%c[255,255,255,60]"..text
local news_caption = game.translate_string("st_tip")
db.actor:give_game_news(news_caption, news_text, texture, 0, 12*1000)
local snd_obj
snd_obj = sound_object([[torch\torch_att]])
snd_obj:play_at_pos(db.actor, vector():set(0,0,0), 0, sound_object.s2d)
end
if zard == 10000 then
local text = "Батарейки в Вашем фонарике почти сели. Замените их на новые либо выключите фонарик."
local texture = "ui_inGame2_D_gonets_pravosudiya"
local news_text = "%c[255,255,60,60]"..text
local news_caption = game.translate_string("st_tip")
db.actor:give_game_news(news_caption, news_text, texture, 0, 12*1000)
local snd_obj
snd_obj = sound_object([[torch\torch_att]])
snd_obj:play_at_pos(db.actor, vector():set(0,0,0), 0, sound_object.s2d)
end
if zard == 100 then
local snd_obj
snd_obj = sound_object([[torch\torch_off]])
snd_obj:play_at_pos(db.actor, vector():set(0,0,0), 0, sound_object.s2d)
end
--**** запись данных о заряде в файл ****
local settingFileName = "gamedata\\configs\\misc\\torch.ltx"
local file = io.open( settingFileName, "w" )
if file ~= nil then
file:write( "[torch]".."\n".."charge = "..string.format("%6d", zard) )
file:close()
end
--****************************************
else
onoff = 0
--*** убираем надписи о заряде ***
local hud = get_hud()
local custom_static = hud:GetCustomStatic("cs_debug")
if custom_static ~= nil then
hud:RemoveCustomStatic("cs_debug")
end
end
end
end

--[[ недопиленный progressbar, блеать! -_-
local cntr = 0
function hbar()
local time = time_global()
if cntr < time then
cntr = time + 500
local hud = get_hud()
--hud:RemoveCustomStatic("cs_heli_health")
hud:AddCustomStatic("cs_heli_health", true)
local cst = hud:GetCustomStatic("cs_heli_health")
local xml = CScriptXmlInit()
xml:ParseFile("heli_progress.xml")
local w = cst:wnd()
heli_progress = xml:InitProgressBar ("heli_health", w )
local _progr = tonumber(string.format("%2d", zaryad/1000))
heli_progress:SetProgressPos(_progr)
if _progr > 0 then
heli_progress:Show(true)
else
heli_progress:Show(false)
hud:RemoveCustomStatic("cs_heli_health")
end
end
end
]]--

--****************** фонарик END ********************[/cut]
Я убираю из файла эту запись, но фонарик всё равно остаётся с батарейка. Я так понял, что батарейки прописаны ещё в каком-то файле. Не подскажите, плиз, по описанию скрипта, где ещё могут быть прописаны батарейки?
 
denis2000Дата: Сб, 01.07.2017, 18:07 | Сообщение # 2473
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Наблюдатель, попробуйте в начале представленного файла прописать строку:
Код
local emergency = 0


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
Korvin_MelarskyДата: Вс, 02.07.2017, 17:43 | Сообщение # 2474
Боец штурмового отряда
Военные сталкеры
Сообщений: 80
Награды: 1
Репутация: [ 45 ]

стоит CoP + Sigerous 2.2

#1.
вопросец - как увеличить хп (живучесть) Химере?

в файлах химеры есть
health = 1000
Max HealthValue = 1000

(для сравнения - у Псевдогиганта) эти параметры 400 и 600.

так вот - при этом из снайперки (баррет) я Химеру могу завалить с 1-3 ввыстрелов, а псевдогиганта с 5-10 не всегда могу завалить. хотелось бы сделать химеру более живучей. но я как-то не понимаю - по конфигам химера вдвое живучее псевдогиганта, а фактически дохнет как кровосос. как сделать чтобы она жила на пару выстрелов больше? а то жирная прыгучая плоть получается.

#2.
хочу понерфить тушканов. и все здорово бы, но в папке creatures НЕТ (!!) файла m_tuskano.
в чем прикол? как тогда в игре вообще бегают тушканы?


Сталкер: Зов Припяти 1602 + SGM 2.2 + оружейная сборка Енота
 
Voland-777Дата: Вс, 02.07.2017, 18:12 | Сообщение # 2475
Эмиссар
Пользователи
Сообщений: 1702
Награды: 9
Репутация: [ 474 ]

Цитата Melarsky ()
хочу понерфить тушканов. и все здорово бы, но в папке creatures НЕТ (!!) файла m_tuskano.
в чем прикол? как тогда в игре вообще бегают тушканы?

Все очень просто: тушканы работают на базе конфигов из чистой ЗП, которые запакованы в db-архивах. Вот, держите файл, у меня на всякий случай всегда лежат распакованные архивы, пользуйтесь на здоровье.


Сообщение отредактировал Voland-777 - Вс, 02.07.2017, 18:12
 
Поиск: