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

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

@J.A.A., Может

function effect_for_jaa(actor, npc) --Может быть любое название функции, пример: function zaza


level.add_cam_effector("punch_effector.anm", 999, false, "")
local snd_obj = xr_sound.get_safe_sound_object([[actor\pain_3]]) --Может быть любой звук отнасительно папки sounds
snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0)
end

 

В диалог:         <action>Название скрипта.Название функции(effect_for_jaa)</action>

Проверял на Space restrictor, вроде работает, на диалоге тоже должно работать.

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

nikita_nz1986.gif
9JX0t72.jpg
XqgE6.png

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

@nikita_nz1986, такую функцию я и сам знаю. Просто кажется немного странным, если прилетает хит, а НПС стоит в анимации "wait". Меня интересует, как скриптово вызвать анимацию punch у НПС.

Пишу мод с неповторимым сюжетом.

Нужны "модельеры"

Заинтересованным писать в ЛС

J.A.A..gif

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

Вот такой вопрос:

 

в ТЧ у [actor] class = O_ACTOR, и у  [mp_actor] class = O_ACTOR.

А вот в ЗП [actor] class = S_ACTOR, а у  [mp_actor] class = O_ACTOR.

 

Так вот, может-быть, кто-нибудь знает в чем отличия S_ACTOR от O_ACTOR. И вообще где можно почитать информацию о классах, их регистрации в class_registator.script?

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

Подскажите кто знает, существуют ли какие то особенности в поведении объектов при спавне их в инвентарь актора?

Почему спрашиваю: Спавню в инвентарь актора оружие. Получаю его нет-пакет с помощью модуля Артоса. вношу изменения, записываю нет-пакет объекту - здесь же в той же скриптовой точке где был спавн. Конкретно мне надо менять параметры ammo_type, condition, ammo_elapsed, addon_flags.

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

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

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

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

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

А обновление происходит при переключении туда/сюда.

Ссылка на комментарий
особенности в поведении объектов при спавне их в инвентарь актора

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

 

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

 

 

 

 

 

И вообще где можно почитать информацию о классах, их регистрации в class_registator.script?

Как обычно - в Справочнике по функциям и классам.....

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

Спавн в инвентарь онлайнового объекта в движке обрабатывается отдельным "ускоренным" образом. Итем выводится сразу же в онлайн. Поэтому запись нет-пакетов и не срабатывает.

По идее после строчки alife():create уже можно запросить клиентский объект.

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

 

 

Спавн в инвентарь онлайнового объекта в движке обрабатывается отдельным "ускоренным" образом.

Видимо, не все классы? при спавне в инвентарь патронов например, переписать им кастом-дату удается.

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

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

packet.custom_data. что тут еще сказать то.
А если вы о том, что же за сведения я туда пишу, то извините это пока секрет.

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

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

Хех, ну я вот, например, в соли аккумуляторы в патроны переделал, и пишу им заряд в custom data.

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

;)

 

 

Нет, все, сдаюсь. Я не представляю - просто воображения не хватает представить, как ЭТО должно работать:

if job.begin == nil or game.time() - job.begin > job.idle then
    if job.idle_after_death_end == nil or job.idle_after_death_end < game.time() then
        if job.fill_idle ~= nil then
            if job.fill_idle == idle_none then return false
            elseif job.fill_idle ~= idle_once and job.fill_idle < game.time() - job.begin then
		return false
            end
        end
        return true
    end
end

конкретно часть, которая job.fill_idle < game.time() - job.begin

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

Подскажите, а как можно "ограбить" ГГ, т.е. удалить все содержимое инвентаря, включая оружие, которое держит в руках, и нож?

Изменено пользователем Музафир
  • Не нравится 1
Ссылка на комментарий

@Музафир, для указанной цели применима следующая функция:

 

 

function test_index()
    local cnt = db.actor:object_count()
    for i=0, cnt-1 do
        local item = db.actor:object(i)
        local sobj = alife():object(item:id())
        if sobj then
            alife():release(sobj,true)
        end
    end
end

 

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

Jurok, спасибо. Я тоже нашел эту функцию, но там удаляется вообще все: и ПДА, и бинокль, и болт. Их потом нужно будет как-то вернуть. Я думаю модифицировать ее примерно так:

function clear_inv()


local cnt = db.actor:object_count()
for i=0, cnt-1 do
local item = db.actor:object(i)
local sobj = alife():object(item:id())
if sobj ~= ПДА Меченого or Бинокль or Болт then
alife():release(sobj,true)
end
end
end

 

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

P.S. Сильно не бейте. Со скриптами не дружу, а квест доделать хочется. Очень надеюсь на ответ :)

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

Музафир

 

function erase_actor_inv()
   local function keep_list_itm(item)
      if (item:section() ~= "wpn_binoc"
      or item:section() ~= "device_torch"
      or item:section() ~= "device_pda"
      or item:section() ~= "bolt")
      then
         alife():release(alife():object(item:id()), true)
      end
   end
   db.actor:inventory_for_each(keep_list_itm)
end

 

  • Не нравится 1
Ссылка на комментарий
Только не знаю, как правильно указать предметы, которые хочу исключить.

 

function clear_inv()
local cnt=db.actor:object_count()
for i=0, cnt-1 do
local item=db.actor:object(i)
local obj=alife():object(item:id())
if (obj and item:section()~="wpn_binoc" and item:section()~="bolt" and item:section()~="device_torch" and item:section()~="device_pda") then 
alife():release(obj,true)
end
end
end

 

 

Изменено пользователем Jurok
  • Нравится 1
Ссылка на комментарий

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

Задача: организовать проверку количества убитых кровососов. При убийстве выдается соответствующий инфопоршень, я решил сделать так:

 

function sosyci_proverka()
local k = 0
if has_alife_info ("sosyci_stroika_1_killed") then
k = k + 1
end
if has_alife_info ("sosyci_stroika_2_killed") then
k = k + 1
end
if has_alife_info ("sosyci_stroika_3_killed") then
k = k + 1
end
if has_alife_info ("sosyci_stroika_4_killed") then
k = k + 1
end
return k
end

function sosyci_jivy
if sosyci_proverka() = 0 then
return true
end
return false
end

 

sosyci_jivy - это прекондишен в диалоге. По идее, он сработает, если все живы или убит хотя бы один. На первый раз сойдет.

Но далее мне понадобится еще раз обратиться к проверке и узнать точное кол-во убитых кровососов (возможно их на тот момент останется только 2 или 3), чтобы вычислить, сколько щупалец ГГ может сдать по завершении задания. И вот здесь меня мучат сомнения: допустим, кровососы убиты в порядке 4,2,1,3, будет ли в таком случае k = 4?

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

Здравствуйте, можно ли сделать так, чтобы когда гг дадут какой-нибудь предмет на нём заспавнится ppe эффект и этот эффект будет всегда пока гг не выбросит этот предмет?

  • Не нравится 1
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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