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

Скриптование


Svoboда

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

Может кто поможет с атакой кровососа?

Есть понятное:

 

-- Поцелуй кровососа (Авторы: Artos, Charsi, Shadows)
if self.object:clsid()==clsid.bloodsucker_s and self.object:section()~="bloodsucker_effector" then
local oTarget = self.object:get_enemy()
if oTarget and IsStalker(oTarget) and self.object:see(oTarget) then
local iDist = self.object:position():distance_to(oTarget:position())
if iDist <= 3 then
local iTime = time_global()
if (self.timer_anim or 0) < iTime then
self.timer_anim = iTime + 2000
if oTarget:id()~=0 and self.object:position():distance_to(db.actor:position()) < 5 then
sound_object("monsters\\bloodsucker\\vampire_sucking"):play_at_pos(db.actor,vector():set(0,0,1),0,sound_object.s2d)
end
if oTarget:id()==0 then
if NextAttack < iTime and self.object.health < 0.5 then
NextAttack = iTime + 18000
RestoreActor = iTime + 4500
DirActor = true
db.actor:hide_weapon()
level.disable_input()
level.hide_indicators()
level.add_call(bloodsucker_vampire_timer,bloodsucker_actor_release)
level.add_pp_effector("escape.ppe",1975,true)
level.add_cam_effector("camera_effects\\drunk.anm",1978,false,"")
local oSnd = sound_object("monsters\\bloodsucker\\vampire_sucking")
if not (oSnd and oSnd:playing()) then oSnd:play_no_feedback(oTarget,sound_object.s2d,0,vector(),5.0) end
end
if DirActor then
local pos = self.object:position()
local vDir = pos:sub(oTarget:position())
db.actor:set_actor_direction(-vDir:getH())
vDir:normalize()
local pos = self.object:position():sub(vDir)
db.actor:set_actor_position(pos)
end
end
end
if self.timer_anim and self.timer_anim >= iTime and DirActor then
db.actor.health = -0.002
self.object.health = 0.008
end
end
end
end

 

И есть смутное:

 

--/#+# 'засос кровососа боксёра' --------------------------------------------------
if self.object:clsid() == clsid.bloodsucker_s and self.object.health > 0.25 then
local oTarget = self.object:get_enemy()
if oTarget and IsStalker(oTarget) and self.object:see(oTarget) then
--/ если у кровососа есть враг/цель и кровосос его видит то ...
local iDist = self.object:position():distance_to(oTarget:position())
if iDist <= 2 then --/ дистанция для анимации 'засоса'
local iTime = time_global()
--/ таймер для анимации и хита ...
if (self.timer_anim or 0) < iTime then
self.timer_anim = iTime + 500 --/ таймер анимации ~ 0.5 сек
if self.object:animation_count() > 0 then
self.object:clear_animations()
end
self.object:add_animation("wounded_2_out") --/ варианты: "vampire_0" | "idle"
--/ озвучка 'засоса'
local oSnd = sound_object("material\\dead-body\\collide\\hithard06hl")
oSnd:play_no_feedback(oTarget, sound_object.s2d, 0, vector(), 5.0)
end
--/ хит жертве (притягиваем)
if (self.timer_hit or 0) < iTime and (self.timer_anim and self.timer_anim + 200 >= iTime) then
self.timer_hit = iTime + 10 --/ таймер хита ~ 0.1 сек
local vDir = self.object:direction() --/ вектор кровососа
local vDirHit = vector_rotate_y(vDir,179.0)
local h = hit()
h.draftsman = self.object
h.direction = vDirHit --/ направление хита
h:bone("bip01_spine") --/ для учета 'брони'
h.power = 0.02
level.add_cam_effector("camera_effects\\fusker.anm",959,false,"")
h.impulse = 50/iDist --/ чем ближе - тем сильнее 'засос'
h.type = hit.wound --hit.strike
oTarget:hit(h) --/ наносим хит жертве
--/ разворот жертвы на кровососа. TODO: требует доработки/замены!
if oTarget:id() == db.actor:id() then --/ жертва == актор? (а нужно?)
oTarget:set_actor_direction(vDirHit:getH())
end
end
end
end
end
--/<-----------------------------------------------------------------------

 

 

Второе выдернуто из http://www.amk-team.ru/forum/index.php?showtopic=12793

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

Поделиться этим сообщением


Ссылка на сообщение

Но оно работает. И совершенно без сбоев. Действительно как из пулемёта ... эээ ... присасывается.

Теперь хоть понял, что за паузу отвечает.

Цель привести к состоянию, когда у ГГ хоть с небольшой защитой есть шанс выжить. А то ж будут сплошные сейф-лоады, которые надоедят и геймер бросит мод.

@Dennis_Chikin, Спасибо.

@Карлан, Предложи вариант.

Может проще будет не вертеть ГГ и просто прилепить анимацию опьянения например?

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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