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

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

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

 

 

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

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

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

@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, это ведь только для НПС? И можно ли туда добавлять секции, которые будут работать. На практике пробовал и результата не увидел.

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

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

 

 

У меня всё работает. Ищите ошибку у себя.
Всё перепроверил: и 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
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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