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

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

Если я правильно помню, в ТЧ 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 для строк списка и для самого окна списка.

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

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

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

------------------ обработка нажатий клавы ---------------------------------
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 ядер, 32 потока, 5.75 ГГц); 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 пользователей

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