Перейти к контенту

[SoC] Ковыряемся в файлах


Рекомендуемые сообщения

Доброго времени суток! 

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

 

Expression    : fatal error
Function      : CScriptEngine::lua_error
File          : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line          : 73
Description   : <no expression>
Arguments     : LUA error: ... publishing\s.t.a.l.k.e.r\gamedata\scripts\_g.script:1150: bad argument #2 to 'format' (string expected, got nil)
 
Я в панике. У меня были грандиозные планы насчет заселения НПС в домики, а тут на тебе...
Вот скриншоты, если они чем-то помогут. 
 
PS: год назад я сталкивался с подобной проблемой, когда пытался провести НПС через тоннель слева от поста военных на мосту. 

Пишу мод с неповторимым сюжетом.

Нужны "модельеры"

Заинтересованным писать в ЛС

J.A.A..gif

@J.A.A., в Деревне новичков в домиках нет аи-сетки, поэтому туда ты никого не отправишь, а на сколько мне изместно, никто этого не правил.

J.A.A.

 Если планы грандиозные используй схему движения к вертексу(не помню принцип работы, но вроде бы и без аи-сетки нормально. Забыл функция utils.send_to_nearest_accessible_vertex согласовывается с АИ-картой или нет) называется она xr_move, или просто спавни нпс там, и в схеме walker пропиши ему состояние какое хочешь(например анимка def_state_standing = sit_ass). Сам так делал, но если НПС попытается сдвинуться с этого места, то либо уйдет под землю, либо пойдет по воздуху.

Подскажите где в гулаге блокпоста на кордоне прописаны профили трёх солдат, патрулирующих дорогу туда-сюда. Хочу их удалить. И ещё, как прописать товарищу с того же блокпоста, который бдительно выцеливает в режиме снайпера дорого с АКС74У вместо автомата снайперскую винтовку. Видел такое в одном моде, ковырял, но так и не понял, как ему выдали эту самую снайперку. Заранее спасибо.

@J.A.A., в Деревне новичков в домиках нет аи-сетки, поэтому туда ты никого не отправишь, а на сколько мне изместно, никто этого не правил.

В объединённой локации Кордон-Свалка, которую ОГСЕ-команда сделала, в домиках АИ-сетка есть.

---------------------------------

www.amk-zone.de

@ColR_iT, не подскажешь как поправить AI сетку? Просто не хочется иметь дел с новыми картами. Хочу до конца использовать ресурсы дефолтных карт.

 

Декомпилятор вместе с СДК в зубы и вперёд...

ColR_iT

Изменено пользователем ColR_iT

Пишу мод с неповторимым сюжетом.

Нужны "модельеры"

Заинтересованным писать в ЛС

J.A.A..gif

Может кто подсказать как сделать выпадение с трупов гитар, гармошек, пда и тд? Прописал в файле character_items.xml а их всё равно после смерти НПС нет.

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

 

 

Пишу мод с неповторимым сюжетом.

Нужны "модельеры"

Заинтересованным писать в ЛС

J.A.A..gif

J.A.A.

В Sigerous Mod она есть, Sigerous есть и для ТЧ, ЧН и ЗП. Выбирай соответствующий

В оригинальной ТЧ, в квесте на Кордоне по зачистке АТП, группа Петрухи: сам Петруха обычный, на мини-карте отображается желтой точкой, а два его напарника - на мини-карте не отображаются. Подскажите, что у них и где прописано, что их на мини-карте не видно ?

В файле логики Кордона ищи строчку show_spot = false. Закомеентируй или удали ее совсем. И будет тебе счастье.

Попутно тоже спрошу. Есть мод на базе ОГСМ для ТЧ с добавленными локациями. Но фишка в том, что на этих локах нет укрытий от выброса. А при попытке спавна получаю вылет.

 

function first_run()

 

local ind

---------------------------

-- Укрытия в Предбаннике --

---------------------------

-- Подвал справа от тоннеля

spawn_restrictor("predbannik", vector():set(2.51,13.23,57.36), 947350, 3996, "stalker", 3)

------------------------

-- Укрытия на Кордоне --

------------------------

-- Бункер Сидора

spawn_restrictor("l01_escape", vector():set(-249.9,-24.8,-134.4), 10136, 7, "fake_", 3)

-- Лагерь новичков

spawn_restrictor("l01_escape", vector():set(-206.5,-22.53,-128.1), 46582, 58, "stalker", 3)

spawn_restrictor("l01_escape", vector():set(-211.4,-23.17,-129.5), 41963, 59, "stalker", 3)

 

 

Добавлена строка, где написано "predbannik"

 

Expression : fatal error

Function : CInifile::r_section

File : E:\stalker\sources\trunk\xrCore\Xr_ini.cpp

Line : 342

Description :

Arguments : Can't open section 'predbannik_hide_restrictor'

 

 

 

function spawn_restrictor(p_level, p_vector, p_lv, p_gv, p_type, p_radius)

 

local p_name

 

if p_type == "pp" then

p_name = p_level.."_psy_restrictor"

else

p_name = p_level.."_hide_restrictor"

end

 

local obj = alife():create(p_name, p_vector, p_lv, p_gv)

 

local hide_name

if string.find(p_type, "_") then hide_name = "ogsm_common_hide"

else hide_name = "ogsm_"..p_type.."_hide" end

 

local mapspot

if p_radius < 4 then mapspot = "ogsm_hide_spot_min"

elseif p_radius < 11 then mapspot = "ogsm_hide_spot_mdl"

else mapspot = "ogsm_hide_spot_max" end

 

local packet = net_packet()

 

obj:STATE_Write(packet)

 

-- свойства cse_alife_object

local game_vertex_id = packet:r_u16()

local cse_alife_object__unk1_f32 = packet:r_float()

local cse_alife_object__unk2_u32 = 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 cse_alife_object__unk3_u32 = packet:r_s32()

 

-- свойства cse_shape

local shape_count = packet:r_u8()

local shape_type

local center

local radius

 

if shape_count == 0 then

shape_type = 0

center = vector():set(0,0,0)

radius = 10.0

shape_count = 1

else

for i=1,shape_count do

local shape_type = packet:r_u8()

if shape_type == 0 then

local center = packet:r_vec3()

local radius = packet:r_float()

else

local v1 = packet:r_vec3()

local v2 = packet:r_vec3()

local v3 = packet:r_vec3()

local v4 = packet:r_vec3()

end

end

end

 

-- свойства cse_alife_space_restrictor

local restrictor_type = packet:r_u8()

 

-- свойства cse_alife_object

packet:w_u16(game_vertex_id)

packet:w_float(cse_alife_object__unk1_f32)

packet:w_s32(cse_alife_object__unk2_u32)

packet:w_s32(level_vertex_id)

packet:w_s32(object_flags)

 

if p_type == "pp" then

custom_data = "[logic] \nactive = ogsm_effector \n[ogsm_effector]"

else

custom_data = "[logic] \nactive = sr_mapspot \n[sr_mapspot] \nhint = "..hide_name.." \nlocation = "..mapspot

end

 

local cd = parse_custom_data(custom_data)

if not cd then cd={} end

if not cd.parameters then cd.parameters = {} end

cd.parameters.community = p_type

cd.parameters.radius = p_radius

custom_data = gen_custom_data(cd)

 

packet:w_stringZ(custom_data)

packet:w_s32(story_id)

packet:w_s32(cse_alife_object__unk3_u32)

 

-- свойства cse_shape

packet:w_u8(shape_count)

 

for i=1,shape_count do

packet:w_u8(shape_type)

if shape_type == 0 then

packet:w_vec3(center)

packet:w_float(p_radius)

else

packet:w_vec3(v1)

packet:w_vec3(v2)

packet:w_vec3(v3)

packet:w_vec3(v4)

end

end

 

-- свойства cse_alife_space_restrictor

packet:w_u8(restrictor_type)

 

obj:STATE_Read(packet, packet:w_tell()-packet:r_tell())

 

return obj

end

 

 

 

Собственно, где копать, может подскажете? Я правильно понимаю, что скрипт не видит новых локаций, или что другое не так прописано?

 

AndrewSol, файл логики Кордона называется gulag_escape.ltx. Лежит в gamedata\config\misc

Изменено пользователем AndrewMor

Сталкер - наше всё!

У тебя в логе же чётко указанно что игра не может найти в конфигах секцию  [predbannik_hide_restrictor]
В функции спавна рестриктора ты передаёшь имя уровня, а в скрипте к нему потом дописывается 
_hide_restrictor
Найди в конфигах по аналогии например 
l01_escape_hide_restrictor и глянь что туда писать надо. 

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

У тебя в логе же чётко указанно что игра не может найти в конфигах секцию [predbannik_hide_restrictor] В функции спавна рестриктора ты передаёшь имя уровня, а в скрипте к нему потом дописывается _hide_restrictor Найди в конфигах по аналогии например l01_escape_hide_restrictor и глянь что туда писать надо.

 

Я понимаю, что невозможно открыть такую секцию. Но откуда она читается (или берется) - не понимаю. В самом начале скрипта написано restrictor_list={}. Думаю, что это список рестрикторов, он и заполняется.

 

Я выше привел полностью функцию spawn_restictor. На всякий случай привожу функцию, где этот самый локация_hide_restrictor формируется:

 

function get_level_mobs()

for i=1,65535 do

local obj = alife():object(i)

if obj then

if string.find(get_monster_portion(obj.id), level.name()) then

list_mob_ids[obj.id] = obj.id

end

if string.find(obj:name(), level.name().."_hide_restrictor") then

table.insert(restrictor_list, obj)

end

if string.find(obj:name(), level.name().."_psy_restrictor") then

table.insert(psy_list, obj)

end

end

end

end

 

 

Shoker, я в натуре дико протупил. Он же в system.ltx прописан :(

Изменено пользователем AndrewMor
  • Нравится 1

Сталкер - наше всё!

***STOP*** file 'C:\DEV\Projects\XRAY\xr3DA\xrGame\Weapon.cpp', line 410.
***Reason***: *** Assertion failed ***
Expression: !lst.empty()
shoot1
***STOP*** file '(null)', line 0.
***Reason***: *** Internal Error **
Saved dump file to 'logs\xray_1_11-12-13_20-03-32.mdmp'

 

Заменил мадель форта на пм, двбы настроить файр поинт в билде 2232, но вот вылет на спавнинге.

Что это может быть?

Не подскажите какие файлы в игре отвечают за включение | отключение худа, как сделать чтоб худ был отключен изначально , где находятся эти true | false, если они конечно есть?

P.S. Знаю что на клаве кнопки, я про файлы :)

Ещё знаю что легко удалить можно худ, удалял уже, но я всё же про отключить интересуюсь ;)

 

Expression: !lst.empty()

shoot1

 

 

Видимо анимации не хватает. 

 

@Serg.Ivan, 

либо сразу удаляй худ на уровне xml-конфигов, либо напиши скрипт, который при каждой загрузке уровня будет в консоль вводить команду на отключения худа (но такой вроде нету, не помню), либо через скриптовую функцию прятать худ (но по моему тогда и прицел пропадает, и + ГГ может стать бессмертным, но я точно не помню) Через xml всё же надёжней. 

Изменено пользователем *Shoker*
  • Не нравится 1

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

@Serg.Ivan, не обращай внимание на очередной бред от @*Shoker*'а, и не вздумай удалять по его совету... движок тебя не поймет и все одно заставит вернуть все обратно (хотя из *db-архивов игры нужно еще постараться чтобы удалить ;-) ).

За отображение худа (индикаторов миникарты, окошек с оружием/патронами и т.п.) отвечает в первую очередь движок, а уж xml-конфиги имеют вторичное значение и отвечают за "что и где будет показано". К твоему сведению, иконки худа изначально отключены и их отображение включается в биндере актора в методе спавна актора(actor_binder:net_spawn). Найди строку level.show_indicators() - и закомментируй, если не надобен.

Однако, в игре в логике/сценах порою "худ" скрывается и вновь отображается скриптово ... а проверки состояния нет, поэтому придется постоянно "переотключать" командою: level.hide_indicators(), поставив куда-нибудь на апдейт актору или переработав скрипты с использованием этих функций управления худами.

Изменено пользователем Artos
  • Нравится 1
  • Не нравится 2

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Я, наверное, надоел уже всем, но форум есть форум. У меня такой вопрос: 

Я распаковал файл game.graph с помощью ggrc.pl v.0.3. Но передо мной встал другой вопрос: как его обратно упаковать?

Если это слишком сложно, то подскажите какой-нибудь редактор.

Пишу мод с неповторимым сюжетом.

Нужны "модельеры"

Заинтересованным писать в ЛС

J.A.A..gif

@J.A.A., вообще-то по перл-скриптам имеется специальный топик: "Universal ACDC и другие perl-скрипты", где и автор может ответить по существу.

А вообще, ggrc.pl и распаковывает и упаковывает ((де)компилит), но не следует уповать на успех... Без манипуляций с SDK многое может быть недоступным.

И поищи в сети версию ggrc.pl посвежее, например v0.7

Изменено пользователем Artos
  • Нравится 1

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

 

 


Я распаковал файл game.graph с помощью ggrc.pl v.0.3. Но передо мной встал другой вопрос: как его обратно упаковать?

Никак. Скрипт не для этого. Квалифицированная правка game.graph осуществляется только с помощью СДК и xrAI.

  • Нравится 1

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...