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

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

Если я правильно помню, в ТЧ follower не работает нормально, при добегании до ГГ, игра вылетает. Лучше самому проверить.

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

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

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

Ребята выручайте нужна помощь возможно ли заспавнить модель к примеру укреплений из песка переведенную в огф формат ну и соответственно с текстурами если да то как ?

Лёха_тц.gif
Ссылка на комментарий

Лёха_тц,

тебе же 5 страниц назад отвечали: спавнишь как physic_object, в custom_data надо прописать fixed_bones, чтобы модель не двигали. Ну и в огф должна быть сделана кость.

У тебя огф то есть?

 

Ну и после спавна надо еще рестриктором будет накрыть, чтобы нпц сквозь твое укрепление не ходили. Ну и если что, прятаться за ним они тоже не будут.


Подарки

  • Ссылка на комментарий
    но проблема в том что когда костюм достигает нулевой кондиции эти сообщения появлются одно за другим эквивалент появления примерно доля сотой секунды

    Так это нужно прописывать не в update, а в функцию, вызываемую при попадании (hit_callback). Тогда никаих лишних переменных вводить не придётся.

    Ссылка на комментарий
    Так это нужно прописывать не в update, а в функцию, вызываемую при попадании (hit_callback). Тогда никаих лишних переменных вводить не придётся.

    Для ГГ в оригиналах hit_callback не вызывается


    Подарки

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

    serega-gamer

    Moжет что-то типа такого подойдёт? :

    Я тут добавил и сообщение при восстановления костюма(если нужно конечно)

    local hev_crash = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[default] %c[255,230,0,0]Общий сбой системы. Система отключается!"
    local hev_restore = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[default] %c[255,230,0,0]Работа системы восстановлена. Система включается!"
    local hev_min_cond_active = 0.01
    local flag
    
    local   function GetHevParam(hev)
                return hev:condition() < hev_min_cond_active and hev:section() == "nano_kostum"
            end
    
    local   function ShowHevGameNews(msg, path)
                local snd_obj = xr_sound.get_safe_sound_object(path)
                snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
                db.actor:give_game_news(msg, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 3000)
            end
    
    function CheckHevCond()
        local act_suit = db.actor:item_in_slot(6)
        if not flag then
            if  act_suit and GetHevParam(act_suit) then
                ShowHevGameNews(hev_crash, 'HEV\\hev_crash')
                flag = true
            end
        elseif act_suit and not GetHevParam(act_suit) then
            ShowHevGameNews(hev_restore, 'HEV\\hev_restore')
            flag = nil
        end
    end

    CheckHevCond() на апдейт. Ну и задержку, если нужно

     

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

    А вообще схема follower в тч нормально работает?

    Не обязательно чтобы НПС шёл за ГГ, просто за лидером

    Создаю глобальный мод с новыми локациямЭ

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

    Gun12 Спасибо большое! Я как раз так и хотел что бы сообщение о ре-активации системы тоже приходило :ny_z_2:

    Теперь такая проблема скажите пожалуйста кто в курсе можно ли через db.actor кровотечение отследить?? А то я что то только пси здоровье, радиацию, мораль и выносливость нашёл!

    Изменено пользователем serega-gamer

    Реклама любых модов бесплатно на моём

    сайте писать в личку

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

    В окне инвентаря, по нажатии добавленной мною кнопки, создается окно наследованное от CUIScriptWnd. На нем размещаю список (использую CUIListWnd), который заполняю (CUIListItemEx). Реализацию в общем содрал из скриптов главного меню. Все вроде работает.

     

    -----------------
    class "CAddItemEx" (CUIListItemEx)
    
    function CAddItemEx:__init() super()
        self:SetWndRect(0,0,330,30)
    
        self.item_icon = CUIStatic()
        self:AttachChild(self.item_icon)
        self.item_icon:SetAutoDelete(true)
        self.item_icon:SetWndRect(0,0,30,30)
        self.item_icon:SetStretchTexture(true)
        self.item_icon:InitTexture("ля-ля-ля")
    
        self.item_name = CUIStatic()
        self:AttachChild(self.item_name)
        self.item_name:SetAutoDelete(true)
        self.item_name:SetWndRect(32,0,300,30)
        self.item_name:SetFont(GetFontLetterica16Russian())
        self.item_name:SetTextColor(255,216,186,140)
        self.item_name:SetText("item_name")
    end
    
    function CAddItemEx:__finalize()
    
    end
    
    ----------------
    class "CUIMyScriptWnd" (CUIScriptWnd)
    
    st_items_list = nil
    
    function CUIMyScriptWnd:__init(owner) super()
    --    self.owner = owner
        self:InitControls()
        self:InitCallBacks()
        
        self:FillItemsList()
    end
    
    function CUIMyScriptWnd:__finalize()
    
    end
    
    function CUIMyScriptWnd:InitControls()
        -- Положение и размеры окна
        self:Init(345,20,335,520)--345,2,335,520
        -- файл-описатель элементов
        local xml = CScriptXmlInit()
        xml:ParseFile("ля-ля-ля.xml")
        xml:InitStatic("main_background", self)
        self:Register(xml:Init3tButton("btn_close", self),"btn_close")
    
        -- список предметов
        st_items_list = CUIListWnd()
        st_items_list:Init(11, 370, 305, 140)
        self:AttachChild(st_items_list)
        st_items_list:SetAutoDelete(true)
        st_items_list:EnableScrollBar(true)
        st_items_list:Show(true)
        self:Register(st_items_list, "items_list")
    end
    
    function CUIMyScriptWnd:FillItemsList()
        local add_item = nil
        local num_add = 7
        for i = 1, num_add do
            add_item = CAddItemEx()
            add_item.item_icon:SetStretchTexture(true)
            add_item.item_icon:InitTexture("ля-ля-ля") -- иконка эл-та в списке
    
            local item_text = ""
            item_text = string.format("Item %d", i)
            add_item.item_name:SetText(item_text) -- надпись эл-та в списке
    
            if add_item and st_items_list then
                st_items_list:AddItem(add_item)
            end
        end
    end

    Но обнаружил проблему - после того, как хотя-бы раз было вызвано это мое окно со списком, при выходе в главное меню (там где загрузить\сохранить\выйти) на нем просматривается прозрачное окно списка со всеми добавленными строками. Т.е. похоже я чет напортачил с зачисткой при закрытии окна инвентаря. В скриптах главного меню, которые брал за образец, нигде нет даже упоминания DetachChild для строк списка и для самого окна списка.

    Подскажите, как побороть ?

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

    А как ты скрываешь свое меню после того как оно отработало свое? У тебя тут только инициализация

    Freedom

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

    стандартно скрываю

    ------------------ обработка нажатий клавы ---------------------------------
    function CUIMyScriptWnd:OnKeyboard(dik, keyboard_action)
        CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
        if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
            -- на выход повесим Esc
            if dik == DIK_keys.DIK_ESCAPE then
                self:on_Close()
            end
        end
    
        return true
    end
    
    -----------------
    function CUIMyScriptWnd:on_Close()
        self:GetHolder():start_stop_menu(self, true)
    end

     

     

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

    В моем сообщении #3313 есть ф-ция заполнения списка элементами, состоящими из иконки и текста. Если к примеру элемент списка должен описывать патрон "ammo_9x18_fmj", как скриптово получить соответствующую ему иконку\текстуру (похоже из файла ui_icon_equipment.dds) и строку названия ?

     

    Если хочу вывести список всех имеющихся боеприпасов, понятно, что нужно перебрать все объекты в инвентаре актера (подходящие ф-ции видел в описании класса game_object) и проверить принадлежность к искомому типу. В описаниях боеприпасов в файле weapons.ltx есть вроде подходящий параметр - "class = AMMO", но как к нему добраться скриптово ?

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

    AndreySol,

    Если к примеру элемент списка должен описывать патрон "ammo_9x18_fmj", как скриптово получить соответствующую ему иконку\текстуру (похоже из файла ui_icon_equipment.dds) и строку названия ?

    парсим из секции координаты иконки и ставим их(x, y, w, h)

    Название аналогично, получаем строку и далее game.translate_string или SetTextST

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

    Vita sine libertate, nihil

    Vita sine litteris - mors est

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

    serega-gamer

    Теперь такая проблема скажите пожалуйста кто в курсе можно ли через db.actor кровотечение отследить?? А то я что то только пси здоровье, радиацию, мораль и выносливость нашёл!

    db.actor:get_bleeding()

    возвращает float. причем не 0..1, у меня бывало и 2.4

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

    Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

    Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

    AMD Ryzen 9 7950X (16 ядер, 5.7ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

    Вот кто подскажет из за чего вот этот вылет

     

    [591]=[sim_test_108]

    [592]=[sim_test_109]

    [593]=[sim_test_110]

    [594]=[sim_test_111]

    [595]=[sim_test_112]

    [596]=[sim_test_113]

    [597]=[sim_test_114]

     

    FATAL ERROR

     

    [error]Expression : no_assert

    [error]Function : CXML_IdToIndex<class CCharacterInfo>::GetById

    [error]File : e:\stalker\sources\trunk\xr_3da\xrgame\xml_str_id_loader.h

    [error]Line : 112

    [error]Description : item not found, id

    [error]Arguments : bar_stalker_1

     

    stack trace:

     

     

     

    а вот то что я ему прописывал

    <specific_character id="bar_stalker_1" team_default = "1">

    <name>bar_stalker_1</name>

    <icon>ui_npc_u_stalker_neytral_hood_8</icon>

    <bio>bar_stalker1r_bio</bio>

     

    <class>bar_stalker_1</class>

    <community>dolg</community>

    <terrain_sect>stalker_terrain</terrain_sect>

     

    <rank>350</rank>

    <reputation>15</reputation>

    <money min="5000" max="5025" infinitive="0"/>

    <panic_treshold>0</panic_treshold>

     

    <snd_config>characters_voice\human_01\stalker\</snd_config>

    <crouch_type>-1</crouch_type>

     

    <visual>actors\neytral\stalker_neytral_hood_8</visual>

    <supplies>

    [spawn] \n

    wpn_pkm \n

    ammo_9x18_fmj = 5 \n

    vodkanew = 6 \n

    af_mincer_meat \n

    </supplies>

     

    #include "gameplay\character_criticals_3.xml"

     

    <start_dialog>hello_dialog</start_dialog>

    #include "gameplay\character_dialogs.xml"

    </specific_character>

     

     

     

    <character id="bar_Stalker_2">

    <class>bar_Stalker_2</class>

    </character>

     

     

     

    [bar_stalker_1]:stalker

    $spawn = "respawn\agr2_respawn_factory"

    character_profile = bar_stalker_1

    spec_rank = regular

    community = stalker

    custom_data = scripts\logic_stalker_1.ltx

     

     

     

    [99999999999999999999999999999999999999999999999]

    ; cse_abstract properties

    section_name = stalker

    name = bar_stalker_1

    position = 227.99346923828,1.4395974874496,-36.13639831543

    direction = 0,0,0

     

    ; cse_alife_trader_abstract properties

    money = 5000

    character_profile = bar_stalker_1

     

    ; cse_alife_object properties

    game_vertex_id = 1174

    distance = 14

    level_vertex_id = 57986

    object_flags = 0xffffffff

    custom_data = <<END

    [smart_terrains]

    none = true

    END

     

    ; cse_visual properties

    visual_name = actors\novice\green_stalker_5

     

    ; cse_alife_creature_abstract properties

    g_team = 0

    g_squad = 0

    g_group = 0

    health = 1

    dynamic_out_restrictions =

    dynamic_in_restrictions =

     

    upd:health = 1

    upd:timestamp = 0

    upd:creature_flags = 0

    upd:position = 227.99346923828,1.4395974874496,-36.13639831543

    upd:o_model = 0

    upd:o_torso = -0.000151783766341396,-0.0297925509512424,0

    upd:g_team = 0

    upd:g_squad = 0

    upd:g_group = 0

     

    ; cse_alife_monster_abstract properties

     

    upd:next_game_vertex_id = 65535

    upd:prev_game_vertex_id = 65535

    upd:distance_from_point = 0

    upd:distance_to_point = 0

     

    ; cse_alife_human_abstract properties

    predicate5 = 1,0,1,0,0

    predicate4 = 2,0,2,1

     

    ; cse_ph_skeleton properties

     

    upd:start_dialog =

     

    ; se_stalker properties

     

     

     

    чего уже тока не пробовал но не могу понять из за чего вылет.

    Лёха_тц.gif
    Ссылка на комментарий

    Лёха_тц,

    ну ты выдал (С)

    <character id="bar_Stalker_2">

    <class>bar_Stalker_2</class>

    </character>

    Когда должно быть bar_Stalker_1 и желательно везде регистр не менять.


    Подарки

  • Ссылка на комментарий
    парсим из секции координаты иконки и ставим их(x, y, w, h)

    Название аналогично, получаем строку и далее game.translate_string или SetTextST

    где-ж эту секцию искать, в которой координаты иконки ? В каком файле ?

    Парсинг ltx и xml файлов - есть что-то встроенное в ЛУА\движок или надо самому ? Если самому - может есть готовые вещи, чтоб велосипед не изобретать ?

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

    Лёха_тц, понимаю, что все можно свести к определению "скриптование", но(!) давайте не заваливать топик всякой всячиной ...

    Имеются топики серии "Ковыряемся в файлах", в которых (ИМХО) самое место уточнять и разбирать ошибки по правке конфигов и пр.

     

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

    Приглянись, например, к system_ini() иль ini_file(string).

    Ну а параметр "class" прочитать можно как: system_ini():r_string(section,"class") => строка или system_ini():r_clsid(section,"class") => число.

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

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

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

    Здравствуйте, скажите пожалуйста, как можно написать на LUA интерфейс для плеера? Плеер должен вызываться по использованию предмета в инвентаре ГГ.

    Если есть какие-либо статьи как это сделать в ЗП 1.6.02 дайте пожалуйста ссылку.

     

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

    Конечно можно. На вскидку могу посоветовать посмотреть как сделан ПДА в Sigerious'e и на его основе сделай плеер

    Freedom

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

    Amicron, не стОит задавать "пустых" общих вопросов.

    "Как на Lua написать интерфейс?" - имеет великое множество вариантов и зависит только от фантазии "писателя".

    Чем тебе не "руководство" - то как написан интерфейс того же спальника из мода АМК? Ведь подмени "спальник" на "плеер" и получаешь ответ на свой вопрос.

    Ссылки на "где искать статьи" указаны в шапке топика. Так же в топике "Уроки по модостроению" совсем недавно выложен "Как самому создать спальный мешок".

     

    Прежде чем задавать вопросы - читаем форум и используем простейший поиск.

    При желании можно найти и готовый мод именно по плееру (чтобы не изобретать велосипеда).

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

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

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

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

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

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

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

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

    Войти

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

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

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

    AMK-Team.ru

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