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

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


Halford

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

Кстати, по по поводу color_defs.xml. Не помню, по какому поводу заморачивался. Выборка из ФШ палитры. Вдруг кому сгодится. color_defs.xml

  • Нравится 1
  • Полезно 2

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


Ссылка на сообщение
В 14.05.2019 в 13:37, Han Sola сказал:

Кто знает, как это можно провернуть?

Чуден парсер на X-Ray. Или чудён? :biggrin:

По факту, знатный такой костыль:

Скрытый текст

<string id="lname_stalker_0">
<text>***</text> 
</string>

Где *** - любой символ из ANSI Win-1251 кодировки, который не является пробелом, но в ui_font_***.ini имеет для отображения параметр пробела:

DEC(***) = 0, 0, 8, 16.

Хоть так &#DEC(***); , хоть этак &#xHEX(***); , хоть вручную.

 

  • Полезно 2

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


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

@Norman Eisenherz, насколько помню/знаю, <descr_list></descr_list> формируется на стороне движка. Для объектов типа "артефакт/оружие" предусмотрены вставки соответствующих полей, для брони - нет. Кажись, где-то здесь: UIItemInfo, "..но это не точно"(c) :biggrin:

  • Полезно 1

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


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

@Ворон545, по постэффектам: опять же самое простое РК решение (для оригинала TЧ 1.0006):

1. Восстановить callback на use объекта в биндере actor-a. В оригинале отсутствует, но замечательно добавляется:

Скрытый текст

 

bind_stalker.script ->


function actor_binder:net_destroy() -> self.object:set_callback(callback.use_object, nil)
function actor_binder:reinit() ->   self.object:set_callback(callback.use_object, self.use_object, self)

 

А дальше непосредственно на самом событии использования:

Скрытый текст

bind_stalker.script ->


function actor_binder:use_object(obj)
    тра-тата-та.use_object(obj)
end

 

а в тра-та-та.script что-то наподобие:

Скрытый текст

function use_object(obj)
  local sect = obj:section()
  if sect == "antirad" then
    local inv_wnd = level.main_input_receiver() -- закрываем инвентарь, если открыт.
        if inv_wnd then
            inv_wnd:GetHolder():start_stop_menu(inv_wnd, true)
        end
-- проигрываем звук и постэффект
    local snd_obj = r_sound.get_safe_sound_object([[actor\breath_1]])
    snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
    level.add_pp_effector("vibros_p.ppe", 9119, false)
  end
end

 

p.s.: это не вокал, а набросок к вокалу:biggrin:. Проверки на защиту от дурака и т.п.

Изменено пользователем Купер
  • Спасибо 1
  • Согласен 1

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


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

@Theckage, двс. Текстура фреймовая (собирается из "кусков"). 

carbody_new.xml / carbody_new_16.xml:

<frame_window ...>
        <texture>ui_frame</texture> ....
</frame_window>

Сами тестуры - gamedata\textures\ui\ui_old_textures.dds.

Описатель текстур - gamedata\config\ui\ui_old_textures.xml

<texture id="ui_frame_r .../>... <texture id="ui_frame_rb.../>

Условно делим получаемую текстуру на 9 частей, начиная, например, с левого верхнего угла (ui_frame_lt) и т.д.

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


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

@Norman Eisenherz, что пользовал при редактировании? У последних версий N++ нехорошая пакость имеется: тут и дальше. Проверь кодировку файла.

  • Согласен 1

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


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

@ted.80, оно и в авторском варианте вполне работоспособно (по крайней мере - вылета не даёт). Вот тут (AP-Pro) народ за высотки бился...

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


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

@UriZzz, а для actor'а оно здесь точно надо?

local oActor = db.actor, тра-та-та...

Ну сюдя по этому в lua_helper:

Скрытый текст

function fSpawn_ItemInv(sSection, Box, idBox)
    if not idBox then
        if not Box then Box = db.actor end
        idBox = (type(Box.id) == 'number' and Box.id) or Box:id()
    end
    if type(sSection) == 'string' and sini:section_exist(sSection) then
        return sim:create(sSection, vector(), 0, 0, idBox) --/>
    end
end

 

Spawn_ItemInInv("guitar_f") ?

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

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


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

@UriZzz, ну я в замешательстве:

Скрытый текст

 

function actor_binder:update(delta)

...

    if self.bCheckStart then

...

Spawn_ItemInInv("medkit")

...

end

 

3.jpg

 

  • Нравится 1

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


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

@Space.Marine, если для "земли", то посмотри как в оригинале калашматы-коротыши на Милитари сделаны:

addon_flags = 
...
upd:addon_flags = 

тут

 

  • Полезно 1

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


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

@UriZzz, Военные Склады, оригинал:

edc8ed33bce372242b4e06c39bfa7fc45eb51f37

Скрытый текст

[3547]
...
; cse_alife_item_weapon properties
ammo_current = 90
addon_flags = 2    <- 2 - гранатомет
upd:condition = 1
upd:addon_flags = 2 <- 2 - гранатомет

c6f709b8669adda5ce8fb04590767d165eb51f37

Скрытый текст

[3548]
...
; cse_alife_item_weapon properties
ammo_current = 90
addon_flags = 1 <- 1 - прицел
upd:condition = 1
upd:addon_flags = 1 <- 1 - прицел

Наверняка, в SDK есть подобные параметры. Но смотреть лень - по причине наличия/отсутствия на данный исторический момент. :biggrin:

  • Согласен 1

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


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

@ErCody_, что делал, как делал? Пока лог только выдаёт телепатическим методом, что видеофайл имеет не поддерживаемый движком игры формат.

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


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

@ErCody_, + весьма сомнительно, что движок воспримет формат "видео+аудио". Т.е. отдельно - видеоряд, отдельно - звуковая дорожка в соответствуюших форматах. Старенький faq, но для понимания принципа сойдёт.

  • Нравится 1

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


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

@Вася Сапляшо опять?

https://modfaq.ru/Распаковка_игровых_архивов

и поставьте же себе, наконец, это. Ну сколько можно мучиться и искать себе приключений :dash2:

  • Нравится 2
  • Согласен 1
  • Смешно 1

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


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

Товарищи спецы, просветите. Платформа OGSR (да и XRE, в принципе).

Вводная: попытка реализации дискретных шлемов c отсечкой по костюмам. 

В bind_stalker соответствующий callback:

Скрытый текст

function actor_binder:net_destroy()
    self.object:set_callback(callback.on_slot, nil)

function actor_binder:reinit()
    self.object:set_callback(callback.on_slot, self.item_to_slot, self)

function actor_binder:item_to_slot(obj)
    inventory.check_remove_gasmask()

 

 

Сама проверка, нагло свистнутая ради эксперимента:

inventory:

Скрытый текст

 


function have_gasmask()
    local armor = db.actor:get_current_outfit()
    if not armor then return false end
    local armorname = armor:section()
    if string.find(armorname, "military_outfit") or
       string.find(armorname, "protection_outfit")
    then return true end
end

function check_remove_gasmask()
    local bio_belt = db.actor:item_in_slot(10)
    if not bio_belt then return end
    local sect = bio_belt:section()
    if sect == "af_maska_1" or sect == "af_maska_2" then
        if have_gasmask() then
            db.actor:move_to_ruck(bio_belt)
            update_inventory_window()
        end
    end
end

 

 

Выхлоп на горячей перезагрузке:

Скрытый текст

[error]Expression    : FATAL ERROR
[error]Function      : CInventory::DropItem
[error]File          : c:\projects\ogsr-engine\ogsr_engine\xrgame\inventory.cpp
[error]Line          : 236
[error]Description   : CInventory::DropItem: InSlot(pIItem): [af_maska_217160], id: [17160]

Что не докручиваю, куда копать, где подсмотреть? В общем, требуется перевод этого на технический русский.

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


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

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

Вариант:

Скрытый текст

function XYZ()
    local x = 1
    local precondition = function()
        x = x - 1
        return x == 0
    end        
    local action = function()
 ...
    end 
level.add_call(precondition, action)
end

 

 

Смотрится как-то костыльно.

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


Ссылка на сообщение
10 часов назад, Libery сказал:

функцию в сталкер 1.0006 на поднятие предметов С ЗЕМЛИ!

https://yadi.sk/i/ICkRv13I4Uc0Gg

@Libery, это всё-таки, наверное, сюда. Судя по "... сталкер 1.0006".

 

1. take_item_from_box - это больше про взаимодействие с inventory_box (S_INVBOX). Как минимум, попробовать желаемое на on_item_take.

Общая информация по нюансам: тут тут и тут

2. Я чего-то где-то сделал, угадайте, что и как? Такое обычно весьма туманно и мало вразумительно воспринимается со стороны. 

  • Согласен 2

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


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

@Ninna, или просто разбираться лениво. :biggrin: В качестве угадайки: похоже, перепутаны/не доделаны желаемые <class></class> в профилях. Те, которые из npc_profile.xml

На примере character_desc_simulation.xml:

Скрытый текст

 

Ветеран:

<specific_character id="sim_stalker_veteran...>

<class>sim_Stalker_veteran</class>

Мастер:

<specific_character id="sim_stalker_master...">

<class>sim_Stalker_veteran</class>

 

Оригинал:

Скрытый текст

 

Ветеран:

<specific_character id="sim_stalker_veteran...>

<class>sim_Stalker_veteran</class>

Мастер:

<specific_character id="sim_stalker_master...>

<class>sim_stalker_master</class>

 

Для ознакомления. В конце особенно вдумчиво и внимательно.

 

p.s.: А вот это вот: GENERATE_NAME_killer, GENERATE_NAME_monolit уже добавлено в "именной генератор"? По идее, на оригинале должно вылетать с грохотом и треском.

  • Спасибо 1

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


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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