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

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

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

Опять вылет:

Expression : no_assert

Function : CXML_IdToIndex<class CInfoPortion>::GetById

File : e:\stalker\patch_1_0004\xr_3da\xrgame\xml_str_id_loader.h

Line : 112

Description : item not found, id

Arguments : esc_tutorial_secret_place

Швед, игра не может найти диалог в данном случае. На будущее - вылет относится не только у диалогам. Всё, что прописано как предмет, оружие, броня, квест, инфопоршень и прочее, при его отсутствии выдаёт подобный вылет. Скорее всего у кого-то из НПС прописан твой диалог, а на самом деле его просто нет.

Изменено пользователем Sany@Prizrak
Ссылка на комментарий

Zander_driver, Один фиг.

Dreamtale, Как ты и сказал сделал у всех один класс. Выбило с тем же логом что выше.

Поставил у всех specific_character один и тот же esc_k_bp выбило такое.

Expression    : no_assert
Function      : CXML_IdToIndex<class CCharacterInfo>::GetById
File          : e:\stalker\patch_1_0004\xr_3da\xrgame\xml_str_id_loader.h
Line          : 112
Description   : item not found, id
Arguments     : esc_k_bp

Понял ошибку, исправил: в npc_kamera.xml написал только

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

Получил вылет с логом Description : Specified story object is already in the Story registry!.

 

Посадил всех на esc_stalker_novice тот же вылет с логом Description : Specified story object is already in the Story registry!.

 

 

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

ЯДиск папка с крутым схроном!

Ссылка на комментарий
Starter, вот, что по этому поводу писал Artos - пост.

Неважно – сколько у тебя друзей. Важно - сколько из них помогут тебе в трудную минуту и сколько вспомнят о тебе когда им хорошо.

"Худ" и "Умное выпадание частей монстров" для Народной солянки

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

S.T.A.L.K.E.R 1.004, Народная..Солянка от 19.04.10, дополнение 14.08.10, патч 3.09.10, DMX 1.3.5, Saruman addon 1.1

Vkontakte

Добавление нового транспорта в сталкер

Ссылка на комментарий

Возможно ли отследить (и выдать инфопоршень) активацию определенного артефакта в определенном месте?

К20

Ссылка на комментарий

Помогите с all.spawn`ом не могу распаковать :angry:

 

Мы будем молиться за тебя и твой all.spawn.

ColR_iT

Изменено пользователем ColR_iT
Ссылка на комментарий

Люди что надо писать в логику контролера что-бы тот нормально атаковал а после смерти гг получал инфопошень test?

 

Что ты определяешь под словами "нормально атаковал", тебе нужно чтобы он камнями бросался что ли?

И кстати, после смерти ГГ контролёр не сможет получить инфопоршень, вообще уже никто ничего не получит - конец игры наступит.

ColR_iT

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

Не соответствует правилам.

Ссылка на комментарий
Starter, попробуй удалить у своих сталкеров сиды, что ли (они им и не нужны, кроме командира разве что), посмотришь - взлетит или нет.
Ссылка на комментарий

Да вы не поняли нужно что бы после СМЕРТИ КОНТРОЛЕРА поршень выдался

 

Строгое предупреждение от модератора ColR_iT
Да нет, это Вы не поняли - знаки препинания нужно ставить.

Устное предупреждение.

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

Не соответствует правилам.

Ссылка на комментарий
Dreamtale, Пробовал. Такой же вылет с логом на повторные иды. А вообще вот тех двоих заспавнил, пробовал без ида, там такой бред пошёл они по гулагам начали гулять. Послушал Artos'а и решил снести основу АМК, и сделать свою сборку. За советы спасибо.

ЯДиск папка с крутым схроном!

Ссылка на комментарий

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

Люди,подскажите как убрать из меню дымящиеся угли(в титрах)

файл этих углей ui_mm_coal.ogm

пытался ковырять ui_mainmenu.script ничего не вышло,как поправить ?

maxgorod.gif

Ссылка на комментарий

максгород, это правится в файле config\ui\ui_credits.xml. Вот этот параметр

<auto_static x="524" y="641" width="256" height="128">
                <texture>ui\ui_mm_coal</texture>
            </auto_static>

Удали ссылку на видео и оно воспроизводиться не будет.

Неважно – сколько у тебя друзей. Важно - сколько из них помогут тебе в трудную минуту и сколько вспомнят о тебе когда им хорошо.

"Худ" и "Умное выпадание частей монстров" для Народной солянки

Ссылка на комментарий

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

 

Сообщение от модератора ColR_iT
Из области: "А угадайте, что я сделал?". Ни кодов, ни ссылки на тему с модом, ни самого мода. За тебя и твой мод тоже помолиться?
Изменено пользователем ColR_iT

FANAT.gif

Мой канал на ютабчике... / Недельки из жизни фаната STALKER'a / Клуб 'Фанат Отчуждения'

Я нет-нет, а думаю, может я неправильно жил, надо ж брать деньги у богатых и давать их бедным, а таким как ты давать по морде, шоб у мире была красота и гармония.(с)Ликвидация

Всё в порядке, всё нормально, я беру тебя с собой, я беру тебя с собой. В тёмный омут головой.(с)Смысловые Галлюцинации

Ссылка на комментарий

Народ, помогите. Добавил пару машин, но они мне нужны не для покатушек. Внимание вопрос - Как отключить посадку ГГ в автомобили? :unsure:

 

Спавнишь секцию физического объекта, а в качестве модели указываешь свой транспорт, советую зафиксировать его при этом.

ColR_iT

Изменено пользователем ColR_iT
Ссылка на комментарий
Nickel1255, ни как, их вообще можно было заспаунить просто как динамические объекты, ну либо мудрить с их блокировкой

S.T.A.L.K.E.R 1.004, Народная..Солянка от 19.04.10, дополнение 14.08.10, патч 3.09.10, DMX 1.3.5, Saruman addon 1.1

Vkontakte

Добавление нового транспорта в сталкер

Ссылка на комментарий

Да, что то я не подумал.. Мод патроны на поясе, автор Колмогор..

-- Патроны которые вешаются на пояс, а остальные используются как раньше

local ammo_types = {

["ammo_9x18_fmj"] = true,

["ammo_9x18_pbp"] = true,

["ammo_9x18_pmm"] = true,

["ammo_9x19_pbp"] = true,

["ammo_9x19_fmj"] = true,

["ammo_5.45x39_ap"] = true,

["ammo_5.45x39_fmj"] = true,

["ammo_5.56x45_ap"] = true,

["ammo_5.56x45_ss190"] = true,

["ammo_5.7x28_fmj"] = true,

["ammo_5.7x28_ap"] = true,

["ammo_7.62x54_ap"] = true,

["ammo_7.62x54_7h14"] = true,

["ammo_7.62x54_7h1"] = true,

["ammo_9x39_sp5"] = true,

["ammo_9x39_ap"] = true,

["ammo_9x39_pab9"] = true,

["ammo_gauss"] = true,

["ammo_11.43x23_fmj"] = true,

["ammo_11.43x23_hydro"] = true,

["ammo_12x76_dart"] = true,

["ammo_12x76_zhekan"] = true,

["ammo_12x70_buck"] = true,

["ammo_og-7b"] = true,

["ammo_vog-25p"] = true,

["ammo_vog-25"] = true,

["ammo_m209"] = true,

-- Народная Солянка

["ammo_5.45x39_izomorf"] = true,

["ammo_7.62x54_izomorf"] = true,

["ammo_9x39_izomorf"] = true,

["ammo_7.62x54r"] = true,

["ammo_5.7x28_ss190"] = true,

["ammo_super_gauss"] = true,

["ammo_zhekan_izomorf"] = true,

["ammo_7.62x39_fmj"] = true,

["ammo_7.62x39_ap"] = true,

["ammo_7.62x25_p"] = true,

["ammo_7.62x25_ps"] = true,

["ammo_arbolt"] = true,

["ammo_samopal"] = true,

["ammo_igl"] = true,

["ammo_igl_new"] = true,

["ammo_7.62x51box"] = true,

["ammo_12.7x108"] = true,

["ammo_minigun"] = true}

 

local ammo_fake_types = {}

local need_convert = false

local need_init = true

local need_update = false

local before_update = true

 

function on_update()

if before_update then

before_update = false

need_convert = true

end

if not need_update then return end

if not inventory.belt_status then return end

local sim = alife()

local t = {}

db.actor:iterate_inventory(

function(npc, item)

local sect=item:section() .. "_fake"

if ammo_fake_types[sect] and inventory.belt_id[item:id()] == nil then

t[sect] = get_ammo_size(item) + (t[sect] or 0)

sim:release(sim:object(item:id()), true)

end

end

, db.actor)

for sec, num in pairs(t) do

spawn_ammo_in_inv(sec, num)

end

need_update = false

end

 

-- Перепаковываем еще и при обыске трупа или тайника

function on_info(info_id)

if info_id == "ui_trade" or info_id == "ui_car_body" then

on_inventory_open()

elseif info_id == "ui_trade_hide" or info_id == "ui_car_body_hide" then

on_inventory_close()

end

end

 

function on_inventory_open()

need_convert = false

local t = {}

local sim = alife()

db.actor:iterate_inventory(

function(npc, item)

local sect=item:section()

if ammo_fake_types[sect] then

t[sect] = get_ammo_size(item) + (t[sect] or 0)

sim:release(sim:object(item:id()), true)

end

end

, db.actor)

for s, num in pairs(t) do

spawn_ammo_in_inv(string.sub(s,1,-6), num)

end

end

 

function on_inventory_close()

need_convert = true

need_update = true

end

 

function on_item_take(item)

if need_init then init() end

local section = item:section()

if ammo_types[section] and need_convert then

local cnt = get_ammo_size(item)

if cnt > 0 then

local sim = alife()

sim:release(sim:object(item:id()), true)

spawn_ammo_in_inv(section.."_fake", cnt)

end

end

end

 

function init()

for k, v in pairs(ammo_types) do

ammo_fake_types[k.."_fake"] = v

end

need_init = false

end

 

-- Возвращает колличество патронов в пачке

function get_ammo_size(obj)

local se_obj = alife():object(obj:id())

if se_obj == nil then return 0 end

local packet = net_packet()

cse_alife_item_ammo.STATE_Write(se_obj, packet)

packet:r_seek(packet:w_tell() - 2)

return packet:r_u16()

end

 

function spawn_ammo_in_inv(spawn_item,number,npc)

if npc==nil then

npc=db.actor

end

if number > 0 then

return se_respawn.create_ammo(spawn_item,

npc:position(),

npc:level_vertex_id(),

npc:game_vertex_id(),

npc:id(),

number)

end

end

 

local grenades_on_belt = {}

local f = false

 

function on_item_take(obj)

local sec=obj:section()

if (sec=="grenade_f1" or sec=="grenade_rgd5" or sec=="grenade_gd-05" or sec=="grenade_7643b" or sec=="grenade_an_m14" or sec=="grenade_m61" or sec=="w_dynamite") then

del_item(obj:id()) spawn_in_inv("fake_"..sec)

elseif (sec=="grenade_f1_1" or sec=="grenade_rgd5_1" or sec=="grenade_gd-05_1" or sec=="grenade_7643b_1" or sec=="grenade_an_m14_1" or sec=="grenade_m61_1" or sec=="w_dynamite_1") and not grenades_on_belt[obj:id()] then

del_item(obj:id()) inventory.start() f=true

end

end

 

function on_item_drop(obj)

local id=grenades_on_belt[obj:id()]

if id and has_alife_info("ui_inventory_hide") and not has_alife_info("ui_car_body") and not db.actor:is_talking() then

grenades_on_belt[obj:id()]=nil

del_item(id)

end

end

 

function on_info(info_id)

if info_id=="ui_inventory" or info_id=="ui_car_body" or info_id=="ui_trade" then

db.actor:iterate_inventory(function(dummy,item) if item:section()=="grenade_f1_1" or item:section()=="grenade_rgd5_1" or item:section()=="grenade_gd-05_1" or item:section()=="grenade_7643b_1" or item:section()=="grenade_an_m14_1" or item:section()=="grenade_m61_1" or item:section()=="grenade_m67_1" or item:section()=="w_dynamite_1" then del_item(item:id()) end end,nil)

elseif info_id=="ui_inventory_hide" or info_id=="ui_car_body_hide" or info_id=="ui_trade_hide" or info_id=="ui_talk_hide" then

inventory.start() f=true

end

end

 

function update_tbl()

if f then

grenades_on_belt={}

local sect

for id,v in pairs (inventory.belt_id) do

if v then

sect=level.object_by_id(id):section()

if sect=="fake_grenade_f1" then grenades_on_belt[spawn_in_inv("grenade_f1_1")]=id

elseif sect=="fake_grenade_rgd5" then grenades_on_belt[spawn_in_inv("grenade_rgd5_1")]=id

elseif sect=="fake_grenade_gd-05" then grenades_on_belt[spawn_in_inv("grenade_gd-05_1")]=id

elseif sect=="fake_grenade_7643b" then grenades_on_belt[spawn_in_inv("grenade_7643b_1")]=id

elseif sect=="fake_grenade_an_m14" then grenades_on_belt[spawn_in_inv("grenade_an_m14_1")]=id

elseif sect=="fake_grenade_m61" then grenades_on_belt[spawn_in_inv("grenade_m61_1")]=id

elseif sect=="fake_grenade_m67" then grenades_on_belt[spawn_in_inv("grenade_m67_1")]=id

elseif sect=="fake_w_dynamite" then grenades_on_belt[spawn_in_inv("w_dynamite_1")]=id

end

end

end

f=false

end

end

 

function spawn_in_inv(sec)

local obj = alife():create(sec,db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(),0)

return obj.id

end

 

function del_item(id)

local sobj=alife():object(id)

if sobj then

alife():release(sobj,true)

end

end

 

Прописано в бинд_сталкер, в функции function actor_binder:on_item_take (obj)

belt_ammo.on_item_take(obj) -- амуниция на поясе

belt = {}

belt_id = {}

belt_status = false

 

local need_update = true

local inventory_open = false

local separator_spawned = false

local separator = "separator"

 

local debug = false

local flag

 

 

 

function update()

 

if (need_update == false) then return end

 

if debug == true and belt_status == true then get_console():execute("belt_status=false") end

belt_status = false

 

-- Спавним разделяющий елемент

if (separator_spawned == false) then

alife():create(separator,

db.actor:position(),

db.actor:level_vertex_id(),

db.actor:game_vertex_id(),

db.actor:id())

separator_spawned = true

if debug == true then get_console():execute("separator_spawned") end

return

end

 

belt = {}

belt_id = {}

flag = 0

 

-- Сканируем инвентарь

db.actor:inventory_for_each(scan_inv)

need_update = false

 

-- Удаляем разделяющий елемент

db.actor:inventory_for_each(del_separator)

separator_spawned = false

 

if debug == true and belt_status == false then get_console():execute("belt_status=true") end

belt_status = true

 

if debug == true then

for i,k in pairs(belt) do

get_console():execute(i.."="..k)

end

end

-- патроны на пояс

belt_ammo.on_update()

belt_grenade.update_tbl()

-- патроны на пояс

remove_duplicate()

end

 

-- Перебор предметов инвентаря

function scan_inv(item)

local section = item:section()

 

if section == separator then

flag = 1

return

end

 

if flag == 1 then

if slot_item(item) ~= nil then

flag = 2

else

insert_to_table(belt, section)

belt_id[item:id()] = true

end

end

end

 

-- Добавление в таблицу

function insert_to_table(tbl, section)

if tbl[section] == nil then

tbl[section] = 1

else

tbl[section] = tbl[section] + 1

end

end

 

-- Удаление разделяющего предмета

function del_separator(item)

if item:section() == separator then

alife():release(alife():object(item:id()), true)

if debug == true then get_console():execute("separator_removed") end

end

end

 

-- Определение налечия предмета в одном из слотов

function slot_item(item)

for i=0,12 do

local obj = db.actor:item_in_slot(i)

if obj and item:id() == obj:id() then

return i

end

end

 

return nil

end

 

-- Поднятие предмета

function on_item_take(item)

-- патроны на пояс

belt_ammo.on_item_take(item)

belt_grenade.on_item_take(item)

-- патроны на пояс

if item:section() == separator then return end

 

if (inventory_open == false) then

if (separator_spawned == true) then

db.actor:inventory_for_each(del_separator)

separator_spawned = false

end

 

need_update = true

if debug == true then get_console():execute("item_take") end

end

end

 

-- Выброс предмета

function on_item_drop(item)

-- патроны на пояс

belt_grenade.on_item_drop(item)

-- патроны на пояс

if item:section() == separator then return end

 

if (inventory_open == false) then

if (separator_spawned == true) then

db.actor:inventory_for_each(del_separator)

separator_spawned = false

end

 

need_update = true

if debug == true then get_console():execute("item_drop") end

end

end

 

-- Открытие/закрытие инвентаря

function on_inventory_info(info_id)

-- патроны на пояс

belt_ammo.on_info(info_id)

belt_grenade.on_info(info_id)

-- патроны на пояс

if info_id == "ui_inventory" then

inventory_open = true

if debug == true then get_console():execute("inventory_open") end

belt_ammo.on_inventory_open() -- патроны на пояс

 

elseif info_id == "ui_inventory_hide" then

inventory_open = false

need_update = true

if debug == true then get_console():execute("inventory_close") end

belt_ammo.on_inventory_close() -- патроны на пояс

end

end

 

function check_blood()

-- if belt_status == true then

if belt["af_blood"]~=nil and belt["af_blood"]>0 then -- то есть когда параметр пояса[af_blood] равен 1, 2, 3.. Сколько навесишь Камней.

amk.send_tip("Кровь Камня на поясе")

end

-- end

end

 

local unique_sect =

{

["af_caterpillar"] = true,

["af_arhara_globus"] = true,

["af_vyvert_green"] = true,

["af_blood_green"] = true,

["af_dummy_spring_red"] = true,

["af_dummy_battery_red"] = true,

["af_dummy_pellicle_red"] = true,

["af_babka_3"] = true,

["af_babka_4"] = true,

["af_armor_4"] = true,

["af_cry_3"] = true,

["af_dik_4"] = true,

["af_kol_3"] = true,

["af_kol_4"] = true,

["af_pudd_4"] = true,

["af_spirit_3"] = true,

["af_spirit_4"] = true,

["af_gold_fish"] = true,

["af_eye_voron"] = true

}

 

--оставляет на поясе по одному(фиг,теперь двум) артефакту каждого вида

function remove_duplicate()

local t = check_duplicate()

for k, v in pairs(belt_id) do

local sobj = alife():object(k)

if sobj then

local sect = sobj:section_name()

-- if is_unique(sobj:clsid()) and t[sect] ~= nil and t[sect] > 0 then

--if is_unique(sect) and t[sect] ~= nil and t[sect] > 0 then

if unique_sect[sect] and t[sect] ~= nil and t[sect] > 0 then

alife():release(sobj, true)

local text="Убраны лишние артефакты "..game.translate_string(amk.get_inv_name(sect)).." с пояса"

news_manager.send_tip(db.actor, text, nil, nil, nil)

amk.spawn_item_in_inv(sect, db.actor)

t[sect] = t[sect] - 1

end

end

end

end

 

--собирает инфу о дупликатах на поясе

--возвращает таблицу вида [секция арта] = <количество лишних артов>

function check_duplicate()

local result = {}

for k, v in pairs(belt) do

if v > 2 then

result[k] = v - 2

end

end

return result

end

 

function start()

need_update = true

end

 

 

Добавлено через 1 мин.:

Nickel1255, В ДМХ например до взятия ключа, двери заблокированы у машин..

 

 

Добавлено через 1 мин.:

Вот я где то, что то забыл прописать, а что не пойму..

 

Добавлено через 2 мин.:

Привел только скрипты, конфиги думаю не нужны..

FANAT.gif

Мой канал на ютабчике... / Недельки из жизни фаната STALKER'a / Клуб 'Фанат Отчуждения'

Я нет-нет, а думаю, может я неправильно жил, надо ж брать деньги у богатых и давать их бедным, а таким как ты давать по морде, шоб у мире была красота и гармония.(с)Ликвидация

Всё в порядке, всё нормально, я беру тебя с собой, я беру тебя с собой. В тёмный омут головой.(с)Смысловые Галлюцинации

Ссылка на комментарий

Мне нужна скриптовая функция таймера, чтобы действие, а именно выдача инфопоршня при выполнении функции происходило через определённый промежуток времени. Заранее спасибо.

Ссылка на комментарий

Возможно, не совсем по теме, но всё же. Есть ли возможность создать в диалоговом окне прямоугольную область с иконками предметов, как в инвентаре? Честно говоря, очень сомневаюсь, что такое возможно. Но быть может кто-нибудь знает алгоритм заполнения прямоугольной области прямоугольниками, чтобы общая площадь получилась наименьшей.

Изменено пользователем Shredder
Ссылка на комментарий

Установлено ТЧ 1.0004 + АМК 1.4.1 + 2 патча

Как сделать респаун уже прописанных(готовых) зомбированных на Янтарь(как в оригинале) ?

Что нужно дописать(и куда), так как описание самих зомбированных вроде есть :unsure: ?

Поиск не помог или я не умею им пользоваться :crazy:

Заранее благодарен.

 

Сообщение от модератора ColR_iT
Вот как раз для ответа на свой вопрос и придётся научиться пользоваться поиском. :crazy:
Изменено пользователем ColR_iT
Ссылка на комментарий
Как сделать респаун уже прописанных(готовых) зомбированных на Янтарь

В этом разделе есть отдельная тема по спавну персонажей в игре. А как правится время респавна - давно уже не секрет и найти не сложно.


256 символов
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

AMK-Team.ru

×
×
  • Создать...