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

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

Всем привет! Подскажите пожалуйста, почему у меня скрипт работает через раз? Платформа ТЧ, переделал мод худы вещей. Заранее спасибо) Вот скрипт:

 

 

snd = sound_object([[interface\inv_food]])
function use_bread_oz(obj)
    if obj ~= nil then
        if obj:section() == "bread" then
        this.Timer_zrems_1()
         for i = 1, 1 do
           alife():create("baton_b", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
       end
end
    end
end
 
local flo2 = false
local Timer_zrems 
function Timer_zrems_1() --/ запуск таймера 
if not flo2 then
Timer_zrems = time_global() + 1*3000 --/ взводим таймер на 6se
 snd:play_at_pos(db.actor, vector():set(0,0,0), 0, sound_object.s2d)
flo2 = true 
end
 if flo2 and not Timer_zrems then     
            flo2 = false
end
end
 
function Timer_zrems_2() --/ вызывается из ':update' сталкер-биндера
if Timer_zrems and Timer_zrems < time_global() then --/ проверка текущего значения
Timer_zrems = nil --/ выключаем таймер
 this.del_naxren() 
end
end
 
function del_naxren() 
local oitem = db.actor:object("baton_b")
    if oitem then
      db.actor:drop_item(oitem)
      alife():release(alife():object(oitem:id()), true)
end
end

 

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

Портянки прячем под спойлер!

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

Интересует следующий вопрос: возможно ли реализовать проверку получения хита (тип fire_wound) актёром и/или НПС и деление полученого хита на коэффициент (ТЧ 1.0004, АМК-1.4.1). Необходимо для обхода damages.ltx при создании новых костюмов с разной пулестойкостью. В первую очередь возникает проблема именно в грамотном написании функции, иначе бы сам всё проверил.

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

Здесь могла быть ваша реклама.


Подарки

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

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


    и еще замечу что зависит не только от damages крепость чуваков.

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

    @Mododel15, так попробуй:

     

    snd = sound_object([[interface\inv_food]])
    function use_bread_oz( obj )
        if obj == nil then return end
    if obj:section() ~= "bread" then return end
    local s_obj = alife():create( "baton_b", vector(), 0, 0, db.actor:id() )
    snd:play_at_pos(db.actor, vector():set(0,0,0), 0, sound_object.s2d)
    local Timer_zrems = time_global() + 3000
    local effect_start = function()
    if s_obj.online and Timer_zrems < time_global() then
    return true
    end
    end
    local effect_stop = function()
    if snd:playing () then
    snd:stop ()
    end
    alife():release( s_obj, true )
    end
    level.add_call( effect_start, effect_stop )
    end

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

    возможно ли реализовать проверку получения хита (тип fire_wound) актёром и/или НПС и деление полученого хита на коэффициент

    Возможно с использованием x-ray extensions. Там есть коллбэк, который вызывается перед обработкой хита и в нём можно менять параметры хита. Пример можешь найти вот в этом скрипте:

     

    https://github.com/dsh2dsh/op2ogse/blob/master/gamedata/scripts/dsh_art_degrad.script

     

    например в функции apply_outfit_protection.

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

    Буду разбираться с этим, спасибо за информацию. А вот что касается damages, это ведь только для НПС? И можно ли туда добавлять секции, которые будут работать. На практике пробовал и результата не увидел.

    Здесь могла быть ваша реклама.


    Подарки

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

    Значит всё моя невнимательность... Сую голову глубоко и не вижу, что на поверхности.

    Здесь могла быть ваша реклама.


    Подарки

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

     

     

    У меня всё работает. Ищите ошибку у себя.
    Всё перепроверил: и bind_stalker и сам скрипт xr_baton. Получается что кушаю батон, мне спавнится сам худ батона как и раньше, но удаляться худ видимо не хочет. Из-за вылета пришлось убрать в bind_stalker строчку xr_baton.Timer_zrems_2() т.к. в скрипте эта функция отсутствует.
    Ссылка на комментарий

     

     

    У меня всё работает. Ищите ошибку у себя.
    Еще раз перепроверил, со скриптом всё нормально, прописал другой предмет в спавн, всё заработало, значит проблема в конфиге худа baton_b. Помогите исправить пожалуйста

    [baton_activation]

    starting = 0.5, detectors\geiger_click3, 0, 0, 0, 0, "","idle"
    flying = 0, detectors\geiger_click3, 0, 0, 0, 0, "","idle"
    idle_before_spawning = 9, detectors\bomb_timer, 0, 0, 0, 0, "","idle"
    spawning = 0.5, detectors\geiger_click3, 0, 0, 0, 0, "","idle"


    [baton_b]:identity_immunities
    GroupControlSection = spawn_group
    $spawn = "weapons\mine\baton_b"
    hud = baton_b_hud
    animation_slot = 11
    allow_inertion = true
    slot = 2
    attach_angle_offset = 0,0,0
    attach_position_offset = -0.1,-0.1,0
    attach_bone_name = bip01_r_hand
    belt = false
    af_actor_properties = off
    actor_properties = on

    $prefetch = 64
    cform = skeleton
    class = ARTEFACT
    visual = weapons\bred\bred.ogf
    description = "Корка хлеба"
    inv_name = "Огрызок"
    inv_name_short = "Огрызок"
    inv_weight = 0.0
    inv_grid_width = 1
    inv_grid_height = 1
    inv_grid_x = 11
    inv_grid_y = 9
    cost = 8
    jump_height = 0
    lights_enabled = false

    snd_draw = weapons\pm_draw
    snd_holster = weapons\generic_holster
    snd_shoot = weapons\t_pm_shot ;pm_shoot
    snd_empty = weapons\pistol_empty
    snd_reload = weapons\pm_reload, 0.8
    snd_close = weapons\generic_close
    snd_idle_sprint = weapons\generic_close
    snd_hide = weapons\generic_close
    snd_show = weapons\generic_close
    snd_activate = weapons\generic_close
    snd_idle = weapons\generic_close


    ;скорости увеличения (уменьшения)
    health_restore_speed = 0.0
    radiation_restore_speed = 0.0
    satiety_restore_speed = 0.0
    power_restore_speed = 0.0
    bleeding_restore_speed = 0.0
    hit_absorbation_sect = baton_absorbation

    artefact_activation_seq = baton_activation

    [baton_b_hud]
    orientation = 0, 0, 0
    position = 0, 0, 0
    visual = huds\hleb\hleb.ogf

    anim_idle_sprint = hleb_eat
    anim_activate = hleb_eat
    anim_show =hleb_eat
    anim_hide = hleb_holster
    anim_idle = hleb_eat


    [baton_absorbation]
    burn_immunity = 1.0 ;коэффициенты иммунитета
    strike_immunity = 1.0
    shock_immunity = 1.0
    wound_immunity = 1.0
    radiation_immunity = 1.0
    telepatic_immunity = 1.0
    chemical_burn_immunity = 1.0
    explosion_immunity = 1.0
    fire_wound_immunity = 1.0

     

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

     

     

    А вот следующий вопрос: есть zone_flame_small, рядом стоит актор. Дистанция до этого конкретного костра получена, нужно узнать горит он или нет. Можно ли это отследить?

     

    Камрады, неужели ни у кого нет идеи и желания подсказать?

    Как узнать, выключена эта аномалия или включена?

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

    www.amk-zone.de

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

    @Wlad777, вариант 1: добавляешь класс для костров, пишешь им биндер, пишешь методы включения/отключения/проверки и сохранение горения до кучи ~ полчаса займет; вариант 2: составляешь массив всех костров в игре, на апдейте их крутишь и проверяешь что горит что нет, там партикл и лампа, ресетишь и делаешь псевдо-метод проверки активности костра ~ не знаю сколько займет, не делал, но массив не маленький будет.

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

    @Wlad777, ну ведь кто-то этот костер гасит. По умолчанию же он горит. Вот пусть этот кто-то и отмечает факт погашения. Или наоборот, если кто-то костер зажигает, то пусть он отмечает факт загорания.

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

    @Карлан, Очень избыточно для проверки, что рядом можно сожрать еду.

     

    @dsh, мод динамических костров от kstn. Тушит/зажигает через disable_anomaly() / enable_anomaly()

     

    Я думал, может есть способ отследить проигрываются ли партиклы огня, например.

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

    www.amk-zone.de

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

    @Wlad777, ты прикалываешь или что? смотри particle_object, там есть метод playing(), дальше рассказывать?


    только там не партиклы


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

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

     

     

    Wlad777, ты прикалываешь или что?

     

    Вот на такие заходы всегда хочется взять и нагрубить в ответ. Ты считаешь, что все тут скриптеры от бога? Я вот не скриптер, что делать?

     

    Шевеление бровями на форуме уже зашкаливает, по сравнению с начальными годами. :(

     

     

     

    смотри particle_object, там есть метод playing(), дальше рассказывать?

     

    Да, рассказывай.

    Актор стоит у аномалии , её idle_particles в конфиге explosions\campfire_05

    Сделай мне, пожалуйста, отрывок кода, возвращающий true/false, в зависимости от того, активен ли idle_particles

    Добавлено Dennis_Chikin,

    Спрашивать. Подробнее. ЕЩЕ ПОДРОБНЕЕ.

    Отвечающий, обычно, владеет телепатией не сильно лучше спрашивающего. Я бы даже сказал, обычно - заметно хуже. Ибо сам половины вопросов не понимаю.

    • Согласен 3

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

    www.amk-zone.de

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

    Актор стоит у аномалии , её idle_particles в конфиге explosions\campfire_05 Сделай мне, пожалуйста, отрывок кода, возвращающий true/false, в зависимости от того, активен ли idle_particles

    Не сделаешь - проигрывание партиклов аномалией без модификация движка не отслеживается.

     

    Но вообще Карлан говорит четко по делу и про биндер и про 3 объекта :) Слушай его. Вот в скрипте, где у тебя включается костер, добавь установку флажка в true, где выключается - в false. А когда хочешь узнать, горит ли костер, получай значение этого флажка. С большой вероятностью этот флажок в скрипте уже есть.

     

    Шевеление бровями на форуме уже зашкаливает, по сравнению с начальными годами. :(

    А потому как раньше слушать умели, а сейчас все умничать стараются - типа "мы и сами с усами". Изменено пользователем abramcumner

    Подарки

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

    Как узнать, выключена эта аномалия или включена?

    Если стоит xray-extensions, можно попробовать получить текущий стейт аномалии, он хранится в m_eZoneState класса CCustomZone.

     

    Если аномалия выключена, стейт будет равен eZoneStateDisabled.

     

    Сделай мне, пожалуйста, отрывок кода, возвращающий true/false, в зависимости от того, активен ли idle_particles

    Не сделает, объект партикла не получить таким образом. Тут либо получать из движка (как написал я), либо эмуляция (по сути дублирование стейт-системы движка) через скриптовый биндер. Изменено пользователем RayTwitty
    • Согласен 1
    • Полезно 1
    Ссылка на комментарий

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

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

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

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

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

    Войти

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

    Войти

    AMK-Team.ru

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