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

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

А "твой забавный эффект" происходит от того, что, например, при убийстве НПС и его удалении, нередко бывает что, покойник стрелял из автомата и этот автомат (принадлежащий ему) продолжает неккоторое время еще стрелять

 

Непись АБСОЛЮТНО спокоен. Если только в анимацию смерти даже в спокойном состоянии не входит "пострелять". Но это, как правило, когда ствол в руках. А здесь - даже и за спиной висит.

 

По патронам - тупо, поиском, поставил лог на все release. Не вижу удаления патронов. 8(

Если только какой-то адов механизм зарядки ствола при смерти. Вообще, надо будет попробовать все стволы отобрать, и потом убить.

 

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

Dennis_Chikin, зависимые объекты (имеющие 'родителя/овнера') в некоторых конкретных случаях (находятся "внутри") не нуждаются в удалении отдельной командой/методом.

Удалив заряженное патронами оружие, ты в два этапа удаляешь одной командой 'release' оба объекта иоружие и патроны. Точнее этапов то как раз не два, а гораздо больше и разнесенных во времени (хотя и мокросекунды). А вот то, что команда еще не значит факт свершения - прочти в топике по ковырянию файлов (не стал дублировать сюда).

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

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

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

Artos

Если бы ты это "по поводу "порчи" новых стволов при спавне через all.spawn" поместил в шапку, то это "Ответ на уже не раз встречающиеся вопросы" было бы реже. :)

 

Имхо теме нужен FAQ, куда стоит скидывать таки идеи, иначе потом они затеряются на сайте, и не стоит удивляться, что задают одни и те же вопросы.

 

Вурдалак

Юзали в каком плане? :D

 

> 1. В глобальном пространстве имен должно быть только одно имя для функции. Иначе найдутся и остальные.

В сталкере функции сортируются по названию скрипта. (_G[script_name][funct]), так что врятле найдёт остальные.

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

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

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

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

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

*Shoker*, не вижу особой необходимости выносить такие частные случаи (именно по конкретному стволу) в шапку топика. Это скорее относится к "урокам моддинга". А ошибки и вопросы были и будут, и не только со стволами.

Суть в моем "ответе" - рекомендация НЕ путать классы объектов в кодах/конфигах (о чем многие и не задумываются) и вариант "как контролировать в спавне".

Наступать на грабли все одно будут, но ... если уже несколько прочтут и поймут "что к чему" - на вопросы/непонятки уже будут даваться конкретные ответы (по контексту), а не погадалки.

 

P.S. И собственно вопрос заданный _Призрак_'ом про поиск названия функции достаточно бессмысленен (ИМХО).

Собственно само имя функции - по сути и есть наименование переменной. Отличие только в том, что тип этой переменной только один - 'function', а не 'один из возможных типов данных'.

Если озабочен поиском причин ошибок/проблем - следует трассировать не некое имя, назначенное 'абы где и абы как', и которое может не дать однозначного ответа, а трассировать что и откуда вызывается.

Если же это в рабочих кодах - ни что не мешает запоминать и позже вызывать именно по имени на не собственно функцию, не утруждая ресурсы итерацией по метатаблице ...

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

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

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

Вот ещё что давно хотел спросить, да забывал.. в игре есть функция eat() которая позволяет игроку (да и НПС) "съесть" какой то предмет. А работает ли эта функцию (или функция use(), которая как мне кажется, не относится к инвентарю) с обычными предметами, вроде оружия, брони и прочего?

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

Есть ли для этого какие то методы?

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

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

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

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

*Shoker*, с твоим вопросом прямой путь в 'lua_help.script' и топик "Справочник по классам и функциям".

Каждому клиентскому объекту в игре присущи некие функции/методы, а вот конкретно для какого класса какие - тут только пока методом тыка можем перепроверить, т.к. от разрабов нам такой информации недосталось.

Методы, которыми оперирует движек в окнах худа во многом для нас закрыты (не портированы в Lua).

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

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

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

Artos

Вот уже который раз вы отвергаете с порога любые предложения завести в этой теме шапку с наиболее полезными сведениями, когда-либо в ней появившимися. Ну почему? За то время, что я наблюдаю за темой, тут не раз было что-то полезное, что стоило сохранить чтобы при необходимости быстро найти. А ведь около сотни страниц я не застал, и времени их все пролистать все никак не находится... быть может я не один такой.

Почему бы не предположить, что раз столько людей об этом просят, значит это действительно кому-то нужно.

Изменено пользователем 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.

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

Zander_driver

1. Заметь, что отвергаю предложения разместить 'свои текущие размышления/ответы', причем аргументируя причину.

2. Топик создавался не мною. У топика есть модератор, который и (пере)оформил шапку и по сути является автором шапки.

3. У каждого из нас есть свои предпочтения и пожелалки, о включении того иль иного в шапку. Я бы предпочел побольше ссылок, а не закостеневших статей.

(ИМХО) "Школа" в первую очередь должна учить думать и искать знания, а не являться неким справочником иль записной книжкой.

4. Любой из нас может взять понравившийся материал и, оформив соотв.образом, поместить где-либо на вики иль даже тут в топике "уроки по модмейкерсту".

Желание же чтобы это сделал кто-то другой, а не сам желающий иметь под рукою справочные материалы - тоже о чем-то говорит ...

...

и последнее ... не знаю как-кто, а мое участие в этой "школе" обусловлено и тем, что порой даже застарелые вопросы заставляют заново пересмотреть/перетряхнуть свои знания. Зафиксированность неких частностей в шапках зачастую навешивает всем нам шоры и тормозит, а не способствует ...

 

Выходите с *Shoker*'ом на модераторов с предложением создания некоего ФАК'а и принимайте в его наполнение участие - это ли не реальное воплощение ваших пожеланий?

 

И, плз, поаккуратнее в выражениях/словах: "отвергаете с порога любые предложения" и "столько людей об этом просят" - напоминает о высокопарной демагогии. На моей памяти предложений было не более трех, как и тех, кто предлагал подобное, а не просил ... Так что на мою возможную просьбу: "Это где это с порого отвергал?" - нечего будет ответить.

Топик же из категории "рабочий" и текучесть информации в нем, как и неструктурированность - никак не способствуют созданию "справочной" шапки.

 

 

 

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

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

Ссылка на комментарий
*Shoker*, класс предмета в функции eat() должен наследовать от CEatableItem. Оружие и броня от него не наследуют. use() среди методов game_object в ТЧ нет, про остальные сказать не могу.
Ссылка на комментарий

Столкнулся с такой проблемой. Игра не сохраняет состояние артефакта, которое condition. Скриптом наношу артефакту повреждения, они на его полоске состояния видны, но стоит сделать save/load - у него опять шкала состояния полная.

Записывать в пстор актора сведения о всех артефактах - не вариант, не влезет туда такая прорва... А у самих артефактов если я правильно понял, пстора нет.

Существуют ли какие-нибудь способы сохранить состояние артефактов при s/L, без титанических затрат ресурсов?

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

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

Zander_driver, не забываем в своих вопросах уточнять версию игры, о чем упомянуто в шапке топика.

 

Артефакты в ТЧ не биндятся. Также, для них не вызываются в процессе игры функции обмена нет-пакетами между серверным и клиентским объектами, поэтому то и не запоминается.

Вариантов 'обхода' как минимум два:

а) Забиндить артефакты и использовать pstor объекта для хранения состояния.

Примечание: Нет уверености, что будет всегда работать ... Для инвентарных ящиков при смене локация pstor порой теряется (причину пока не выяснял, в планах).

б) Записывать 'ручками' состояние в серверный объект, т.е. через нет-пакеты.

... ну иль прочими комбинациями.

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

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

А можно ли использовать функцию в биндере актора

function actor_binder:info_callback(npc, info_id)

для проверки получения актором инфопоршня и вызова скриптовых функций?Просто не хочеться апдейт засорять.И планируеться использовать данную проверку для многих локаций и в функции сначала ставить проверку на инфопоршень и затем на имя локации.

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

RvP

А по моему не совсем. Для вызовов функций при получении инфопоршней создали тег <action></action> А функция в bind_stalker скорее нужна для обработки множества инфопоршней например для их последующего вывода в лог

Freedom

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

Всем привет народ! Помогите правильно построить следующую функцию для ТЧ

 

hev_crash = "%c[255,160,160,160]Автоматическая система ввода медицинских препаратов\\n".."%c[default] %c[255,230,0,0]Общий сбой системы система отключается!"

local snd_obj = nil
local act_suit = db.actor:item_in_slot(6)
local hev_min_cond_active = 0.01


----------------------------
----------------------------

    if act_suit and act_suit:section() == "nano_kostum" then
            if act_suit:condition() < hev_min_cond_active then
                snd_obj = xr_sound.get_safe_sound_object( [[HEV\hev_crash]] )
                snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
                db.actor:give_game_news(hev_crash, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 3000)
                end
        end

 

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

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

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

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

Ну так правильно, ты в апдейт сунул, вот он и проверяет состояние костюма постоянно.

Попробуй так, только я не знаю, прокатит,или нет

 

    if act_suit and act_suit:section() == "nano_kostum" then
            if act_suit:condition() < hev_min_cond_active then
            local msg ==true
            if msg==true then
                snd_obj = xr_sound.get_safe_sound_object( [[HEV\hev_crash]] )
                snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
                db.actor:give_game_news(hev_crash, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 3000)
                msg=false
                end
            end
        end

 

P.S. И не ставь в апдейт актора , сделай задержку на 5-10 сек...

Что-то кончается, что-то начинается...

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

Vano_Santuri,

это ж бред.

 

serega-gamer, делаешь флаг в файле(не в функции) и по нему проверяешь выдавалось ли сообщение ранее

Vita sine libertate, nihil

Vita sine litteris - mors est

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

Вот,есть такая трабла:

[logic] 
active = remark@levec1 
inv_max_weight = 1 
meet = no_meet
combat_ignore = combat_ignore
danger = danger_ignore

[remark@levec1]
meet = no_meet
no_move = true
anim = fold_arms
target = nil
snd = levec
on_signal = sound_end | walker@levec_quest_1

[walker@levec_quest_1]
path_walk = levec_quest_1
target = path_name | levec_quest_1
meet = no_meet
use  = false 
on_timer = 1000 | remark2

[remark2]
snd = leves_replic_2
anim = choose
taget = path_name|levec_quest_2
no_move = true
use = false
no_meet = true
on_timer = 1000 | walker2

[walker2]
path_walk = levec_quest_2
target = path_name|levec_quest_2
meet = no_meet
use=false
on_signal = start|remark@stichka_2
def_state_moving = walk 
on_timer = 1000 | remark3

[remark3]
no_move = true
anim = sit_knee
no_meet = true
use = false



[danger_ignore] 
ignore_distance = 5

[meet]
use = false
use_wpn = true
meet_talk_enabled = false

 

Только вот какая проблема:

мне нужно перейти от схемы walker1 до remark2.

Пробывал много способов:

on_timer = 1|remark1 - игра просто не читала переход к другой логике и нпс шёл обратно по точкам к старту path`sa

on_game_timer=1|remark1 -игра либо не читала,либо вылетала.

 

Так как же расценивать хождения по точкам-как анимацию что-ли?И писать on_signal=anim_end|remark2

 

И ещё есть вопрос,что нужно прописать в логике walker2,чтобы нпс шёл не в состоянии patrol,а в крадущемся состоянии?

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

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

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

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

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

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

Войти

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

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

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