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

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


Halford

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

]snork[, Да всмысле, ты вот когда глобальный граф делаешь(гейм_граф), то заодно и редактируются level.gct в папках каждой локи, каждой! всех, которые у тебя есть.. Вот и нужо, что бы вместе с твоей новой локой, были и этот файл в папках локаций..

FANAT.gif

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

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

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

Поделиться этим сообщением


Ссылка на сообщение

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

class           = AF_DUMMY
class                = AF_ZUDA;ARTEFACT
class                = AF_GRAVI

Может кто нибудь обьяснить смысл этой замены, если раньше просто у всех был класс ARTEFACT..

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

FANAT.gif

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

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

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

Поделиться этим сообщением


Ссылка на сообщение

А зачем, я все равно что то не догоняю..

FANAT.gif

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

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

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

Поделиться этим сообщением


Ссылка на сообщение

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

 

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

FANAT.gif

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

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

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

Поделиться этим сообщением


Ссылка на сообщение

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

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

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 / Клуб 'Фанат Отчуждения'

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

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

Поделиться этим сообщением


Ссылка на сообщение
Стрелоk, С партиклом че то, не хватает наверное какого то..

FANAT.gif

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

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

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

Поделиться этим сообщением


Ссылка на сообщение

Боягуз, Видимо донастраивался..

---

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

 

Так будет понятнее.

ColR_iT

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

FANAT.gif

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

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

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

Поделиться этим сообщением


Ссылка на сообщение

Такой вопрос.. выставил разрешение на 4 патче, 1280x1024, опции в меню небольшие, не жирные, шрифт в игре нормальный, потом пропатчил до шестого патча, разрешение не менял, захожу в игру, там все опции жирные, версия игры жирная, вобщем увеличилось все, можно как нибудь это убрать..?

Все разрешения пробовал, но такого так и не нашел, хотя стояло 1280x1024 и осталось, по сути должно было быть все так же..

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

FANAT.gif

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

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

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

Поделиться этим сообщением


Ссылка на сообщение

И чего там..? Посмотрел, красиво все оформлено..

FANAT.gif

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

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

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

Поделиться этим сообщением


Ссылка на сообщение

Вклеил новую погоду в мод, все нормально, но в логе светится вот это, что это и как исправить можно?

! Invalid 'hemi_color' in env-section 'default_weather_01'

FANAT.gif

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

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

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

Поделиться этим сообщением


Ссылка на сообщение

stalkerok007

function create_sarchaes2_exit()
-- создается переход c САРКОФАГА на ЧАЕС2
if (not has_alife_info( "level_newfive" )) then
level_new.create_level_changer(
31610, -- STORY_ID нового level_changer;
vector():set(77.10116577,58.2671585,51.8668289 ), -- вектор, координаты точки, в которой будет располагаться центр нового level_changer;
6406, -- level_vertext_id - идентифицируют уровень, на котором будет создан level_changer;
2417, -- game_vertext_id;
53648, -- -- level_vertex_id - идентифицируют уровень, на который level_changer будет перебрасывать игрока;
2537, -- game_vertex_id;
vector():set( 67.8906097,5.04050731,97.7711 ), -- координаты точки, в которой на новом уровне окажется игрок;
vector():set( -0.8196038,0,0.57293063 ), -- направрение взгляда игрока;
"l12_stancia_2", -- название уровня, например;
0 -- задавать ли вопрос о смене уровня. 1 - да, 0 - нет.
)
	 db.actor:give_info_portion("level_newfive")
end

 

Капрал Хикс

А чего тут может быть некоретного?

hemi_color		=	-1.00,	-1.0,	-1.0,	0.0

 

Оформляй, пожалуйста, посты так, чтобы это было вменяемое сообщение, а не набор слов.

ColR_iT

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

FANAT.gif

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

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

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

Поделиться этим сообщением


Ссылка на сообщение

Интересует два вопроса

1. Как фурычат ранги НПС, ну вот как определяется что сталкеры, долг, свобода есть в двадцатке, а наемников и монолитовцев нет.

2. Может кто нибудь обьяснить как реализовано что НПС эти самые рангинабирают себе, то есть вначале у него например 1000, а через какое то время уже 1600 к примеру. Может мод такой есть небольшой?

FANAT.gif

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

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

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

Поделиться этим сообщением


Ссылка на сообщение
×
×
  • Создать...