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

suhar_, Все написали, кроме одного, на какой версии игры работаете с пакетом.

Наблюдатель, Теперь понятно. Найдите файл dinamic_hud.script в самом начале отключите ненужные эффекты.


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

Цитата denis2000 ()
Наблюдатель, Теперь понятно. Найдите файл dinamic_hud.script в самом начале отключите ненужные эффекты.

Уважаемый denis2000 а Вы бы не могли указать папку, в которой находится этот файл? А то ни в папке gamedata мода, ни в папке gamedata оригинальной ЗП, я не нашёл файла dinamic_hud.script ?
 
roma_ufДата: Пт, 13.11.2015, 14:43 | Сообщение # 1548
Гражданский
Пользователи
Сообщений: 17
Награды: 0
Репутация: [ -10 ]

День добрый. Есть одна модификация, добаляющая новые сквады группировок на локации (немники, Ученый, монолит и т.д.). В самом моде (ссылку на него будет снизу) приложено много файлов, половина из которых просто не затрагивалась. Мне нужно знать, какие файлы нужные.
Ссылка: http://stalker-mods.clan.su/load/0-0-1-391-20


Сообщение отредактировал roma_uf - Пт, 13.11.2015, 14:44
 
alex_xp_77Дата: Пт, 13.11.2015, 15:32 | Сообщение # 1549
Научный сотрудник.
Ученые сталкеры
Сообщений: 242
Награды: 6
Репутация: [ 41 ]

Рома я добавляю логикой в sdk, вроде даже элементарно, компиляция, играешь, если вы хотите просто там от куда то взять и куда то вставить, обычно это не работает, нужна более трудоемкая работа!

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

Наблюдатель, Папка scripts естественно. Я скачал Зимнюю сборку модов от Dezertira и там был именно этот файл отвечающий за динамический ХУД. Если у вас другие сборки-солянки, то мне о них ничего не известно.

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

Цитата denis2000 ()
Я скачал Зимнюю сборку модов от Dezertira и там был именно этот файл отвечающий за динамический ХУД.

Нет, я скачал просто сборку модов от Дезертира, её осенний вариант. Там в папке scripts есть просто файл huds. Он начинается словами: "Худы на шлемы и бронь" Это оно?
 
suhar_Дата: Пт, 13.11.2015, 16:22 | Сообщение # 1552
Бывалый
Пользователи
Сообщений: 106
Награды: 0
Репутация: [ 0 ]

Цитата denis2000 ()
на какой версии игры работаете с пакетом

Извиняюсь. ЗП.
 
denis2000Дата: Пт, 13.11.2015, 19:21 | Сообщение # 1553
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

suhar_, Значит нужно использовать нетпакет НПС для ЗП:
[cut=Что-то типа такого]
Код

--makdm©
function net_packet_func(npc_id)
    local cl_object = level.object_by_id( npc_id )
    local s_obj = alife():object( npc_id )
  
    if cl_object then
  local packet = net_packet()
  packet:w_begin( 0 )
  s_obj:STATE_Write( packet )
  packet:r_seek( 2 )
  local money         = packet:r_s32()
  local specific_character     = packet:r_stringZ()
  local trader_flags       = packet:r_s32()
  local character_profile      = packet:r_stringZ()
  local community_index      = packet:r_s32()
  local rank         = packet:r_s32()
  local reputation       = packet:r_s32()
  local checked_characters      = packet:r_stringZ()
  local cse_alife_trader_abstract__unk2  = packet:r_u8()
  local cse_alife_trader_abstract__unk3  = packet:r_u8()
  local game_vertex_id     = packet:r_u16()
  local distance        = packet:r_float()
  local direct_control      = packet:r_s32()
  local level_vertex_id      = packet:r_s32()
  local object_flags      = packet:r_s32()
  local custom_data       = packet:r_stringZ()
  local story_id        = packet:r_s32()
  local spawn_story_id     = packet:r_s32()
  local visual_name       = packet:r_stringZ()
  local visual_flags      = packet:r_u8()
  local g_team      = packet:r_u8()
  local g_squad       = packet:r_u8()
  local g_group       = packet:r_u8()
  local health       = packet:r_float()
  local dynamic_out_restrictions  = readvu32u16( packet )
  local dynamic_in_restrictions   = readvu32u16( packet )
  local killer_id      = packet:r_u16()
  local game_death_time    = readvu8u8( packet )
  local base_out_restrictors   = packet:r_stringZ()
  local base_in_restrictors   = packet:r_stringZ()
  local smart_terrain_id    = packet:r_u16()
  local smart_terrain_task_active  = packet:r_u8()
  local equipment_preferences   = readvu32u8( packet )
  local main_weapon_preferences   = readvu32u8( packet )
  local skeleton_name     = packet:r_stringZ()
  local skeleton_flags    = packet:r_u8()
  local source_id      = packet:r_u16()
   

  packet:w_begin( 0 )
  packet:w_s32( money )
  packet:w_stringZ( specific_character )
  packet:w_s32( trader_flags )
  packet:w_stringZ( character_profile )
  packet:w_s32( community_index )
  packet:w_s32( rank )
  packet:w_s32( reputation )
  packet:w_stringZ( checked_characters )
  packet:w_u8( cse_alife_trader_abstract__unk2 )
  packet:w_u8( cse_alife_trader_abstract__unk3 )
  packet:w_u16( game_vertex_id )
  packet:w_float( distance )
  packet:w_s32( direct_control )
  packet:w_s32( level_vertex_id )
  packet:w_s32( object_flags )
  packet:w_stringZ( custom_data )
  packet:w_s32( story_id )
  packet:w_s32( spawn_story_id )
  packet:w_stringZ( new_visual )
  packet:w_u8( visual_flags )
  packet:w_u8( g_team )
  packet:w_u8( g_squad )
  packet:w_u8( g_group )
  packet:w_float( health )
  writevu32u16( packet, dynamic_out_restrictions )
  writevu32u16( packet, dynamic_in_restrictions )
  packet:w_u16( killer_id )
  writevu8u8( packet, game_death_time )
  packet:w_stringZ( base_out_restrictors )
  packet:w_stringZ( base_in_restrictors )
  packet:w_u16( smart_terrain_id )
  packet:w_u8( smart_terrain_task_active )
  writevu32u8( packet, equipment_preferences )
  writevu32u8( packet, main_weapon_preferences )
  packet:w_stringZ( skeleton_name )
  packet:w_u8( skeleton_flags )
  packet:w_u16( source_id )    
  packet:r_seek( 2 )
  s_obj:STATE_Read( packet, packet:w_tell() )

  alife ():set_switch_online    ( npc_id, false )
  alife ():set_switch_offline ( npc_id, true  )
  
  local make_offline = function()
   if not s_obj.online then
    return true
   end
  end
   
  local make_online = function()
   alife ():set_switch_online    ( npc_id, true  )
   alife ():set_switch_offline ( npc_id, false  )
  end

  level.add_call( make_offline, make_online )
    end
end
    
function readvu8u8( packet )
  local v = {}
  local len = 8
  for i = 1, len, 1 do
    table.insert( v, packet:r_u8() )
  end
  return v
end

function writevu8u8( packet, v )
  local len = 8
  for i = 1, len, 1 do
    packet:w_u8( v[ i ] )
  end
end

function readvu32u16( packet )
  local v = {}
  local len = packet:r_s32()
  for i = 1, len, 1 do
    table.insert( v, packet:r_u16() )
  end
  return v
end

function writevu32u16( packet, v )
  local len = table.getn( v )
  packet:w_s32( len )
  for i = 1, len, 1 do
    packet:w_u16( v[ i ] )
  end
end

function readvu32u8( packet )
  local v = {}
  local len = packet:r_s32()
  for i = 1, len, 1 do
    table.insert( v, packet:r_u8() )
  end
  return v
end

function writevu32u8( packet, v )
  local len = table.getn( v )
  packet:w_s32( len )
  for i = 1, len, 1 do
    packet:w_u8( v[ i ] )
  end
end
[/cut]

Цитата Наблюдатель ()
Там в папке scripts есть просто файл huds. Он начинается словами: "Худы на шлемы и бронь" Это оно?

А полный текст файла?


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

Прошу простить великодушно, уважаемый denis2000, не могу запихнуть сообщение в спойлер! :(
[cut]
--ХУДЫ на ШЛЕМЫ и Бронь

local helms = {{"helm_respirator",
"helm_respirator_joker",
"helm_hardhat",
"helm_hardhat_snag",
"helm_protective",
"helm_tactic",
"helm_battle",
"exo_outfit",
"scientific_outfit",
"dolg_scientific_outfit",
"monolit_scientific_outfit",
"dolg_exo_outfit",
"svoboda_exo_outfit",
"naim_exo_outfit",
"monolith_exo_outfit"
},
{"protivogaz_hud",
"protivogaz_hud",
"stalnoy_hud",
"stalnoy_hud",
"nauchniy_hud",
"tactic_hud",
"sfera12_hud",
"sfera12_hud",
"nauchniy_hud",
"nauchniy_hud",
"nauchniy_hud",
"sfera12_hud",
"sfera12_hud",
"sfera12_hud",
"sfera12_hud"
}}

local nohud_helms = {"novice_outfit","stalker_outfit","svoboda_light_outfit","dolg_outfit","cs_heavy_outfit","svoboda_heavy_outfit","specops_outfit","military_outfit","dolg_heavy_outfit","stalker_outfit_barge","stalker_naim_outfit","stalker_monolith_outfit",nil}

function helms_huds()
actor = db.actor
helm = actor:item_in_slot(12)or actor:get_current_outfit()
section=nil
if helm then
section = helm:section()
end
for a=1,15 do
if section==helms[1][a] then
add_static(helms[2][a])
end
end
for b=1,13 do
if section==nohud_helms[b] then
del_static()
end
end
end

function add_static(static)
local hud = get_hud()
if hud:GetCustomStatic(static)~=nil then return end
del_static()
hud:AddCustomStatic(static, true)
end

function del_static()
local hud = get_hud()
for a=1,15 do
if hud:GetCustomStatic(helms[2][a])~=nil then
hud:RemoveCustomStatic(helms[2][a])
end
end
end[/cut]
Не могу понять что где править, если это тот файл? sad


Сообщение отредактировал Наблюдатель - Пт, 13.11.2015, 19:45
 
roma_ufДата: Пт, 13.11.2015, 20:27 | Сообщение # 1555
Гражданский
Пользователи
Сообщений: 17
Награды: 0
Репутация: [ -10 ]

Еще возник один вопрос. Мне нужно перенести новые иконки визуалов аномалий в детекторах, не затрагивая при этом "рисунок" сна. Как это можно сделать?
Ссылки:
1. https://yadi.sk/d/NwuHxpmVkSX8p (Откуда нужно взять иконки визуалов аномалий)
2. https://yadi.sk/d/WkTszZrckSXCE (Куда их нужно правильно вставить)
Заранее спасибо тем, кто отзовется.
 
denis2000Дата: Пт, 13.11.2015, 21:33 | Сообщение # 1556
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Наблюдатель, Пробуйте так. Любимый шлем исключен из динамического ХУДа
[cut]--ХУДЫ на ШЛЕМЫ и Бронь

local helms = {{"helm_respirator",
"helm_respirator_joker",
"helm_hardhat",
"helm_hardhat_snag",
"helm_protective",
"helm_battle",
"exo_outfit",
"scientific_outfit",
"dolg_scientific_outfit",
"monolit_scientific_outfit",
"dolg_exo_outfit",
"svoboda_exo_outfit",
"naim_exo_outfit",
"monolith_exo_outfit"
},
{"protivogaz_hud",
"protivogaz_hud",
"stalnoy_hud",
"stalnoy_hud",
"nauchniy_hud",
"sfera12_hud",
"sfera12_hud",
"nauchniy_hud",
"nauchniy_hud",
"nauchniy_hud",
"sfera12_hud",
"sfera12_hud",
"sfera12_hud",
"sfera12_hud"
}}

local nohud_helms = {"helm_tactic","novice_outfit","stalker_outfit","svoboda_light_outfit","dolg_outfit","cs_heavy_outfit","svoboda_heavy_outfit","specops_outfit","military_outfit","dolg_heavy_outfit","stalker_outfit_barge","stalker_naim_outfit","stalker_monolith_outfit",nil}

function helms_huds()
actor = db.actor
helm = actor:item_in_slot(12)or actor:get_current_outfit()
section=nil
if helm then
section = helm:section()
end
for a=1,15 do
if section==helms[1][a] then
add_static(helms[2][a])
end
end
for b=1,13 do
if section==nohud_helms[b] then
del_static()
end
end
end

function add_static(static)
local hud = get_hud()
if hud:GetCustomStatic(static)~=nil then return end
del_static()
hud:AddCustomStatic(static, true)
end

function del_static()
local hud = get_hud()
for a=1,15 do
if hud:GetCustomStatic(helms[2][a])~=nil then
hud:RemoveCustomStatic(helms[2][a])
end
end
end[/cut]


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
RecrutDimasДата: Сб, 14.11.2015, 21:38 | Сообщение # 1557
Удаленные



Помогите пожалуйста! В общем, прошел сборку на разных сложностях, решил с читмодом поиграть, а у меня Windows 8 и нету строки "Объект", что мне делать?
 
ЛешийДата: Пн, 16.11.2015, 09:49 | Сообщение # 1558
Начальник разведки Долга
Долг
Сообщений: 1212
Награды: 4
Репутация: [ 401 ]

Скачал два мода для ТЧ.
Один требует версию игры 006
Другой 004

Как быть? У меня на винте 006 - может есть какая то возможность откатиться до 004? Или что мне теперь, две версии игры на винте держать?


Агит-штаб Долга | ДОЛГокомат | Библиотека Зоны
| ◥ КПК |
мой телеграм
 
denis2000Дата: Пн, 16.11.2015, 11:22 | Сообщение # 1559
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Mj12, Используйте программы для отката версии игры.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
ЛешийДата: Пн, 16.11.2015, 11:32 | Сообщение # 1560
Начальник разведки Долга
Долг
Сообщений: 1212
Награды: 4
Репутация: [ 401 ]

denis2000, я сугубо извиняюсь, но не подскажите конкретнее? можно в ЛС.

Добавлено:
Решено.


Агит-штаб Долга | ДОЛГокомат | Библиотека Зоны
| ◥ КПК |
мой телеграм


Сообщение отредактировал Mj12 - Пн, 16.11.2015, 13:45
 
Поиск: