groks 439 Опубликовано 24 Ноября 2014 Может кто поможет с атакой кровососа? Есть понятное: -- Поцелуй кровососа (Авторы: Artos, Charsi, Shadows)if self.object:clsid()==clsid.bloodsucker_s and self.object:section()~="bloodsucker_effector" thenlocal oTarget = self.object:get_enemy()if oTarget and IsStalker(oTarget) and self.object:see(oTarget) thenlocal iDist = self.object:position():distance_to(oTarget:position())if iDist <= 3 thenlocal iTime = time_global()if (self.timer_anim or 0) < iTime thenself.timer_anim = iTime + 2000if oTarget:id()~=0 and self.object:position():distance_to(db.actor:position()) < 5 thensound_object("monsters\\bloodsucker\\vampire_sucking"):play_at_pos(db.actor,vector():set(0,0,1),0,sound_object.s2d)endif oTarget:id()==0 thenif NextAttack < iTime and self.object.health < 0.5 thenNextAttack = iTime + 18000RestoreActor = iTime + 4500DirActor = truedb.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) endendif DirActor thenlocal 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)endendendif self.timer_anim and self.timer_anim >= iTime and DirActor thendb.actor.health = -0.002self.object.health = 0.008endendendend И есть смутное: --/#+# 'засос кровососа боксёра' --------------------------------------------------if self.object:clsid() == clsid.bloodsucker_s and self.object.health > 0.25 thenlocal 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 thenself.timer_anim = iTime + 500 --/ таймер анимации ~ 0.5 секif self.object:animation_count() > 0 thenself.object:clear_animations()endself.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) thenself.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.objecth.direction = vDirHit --/ направление хитаh:bone("bip01_spine") --/ для учета 'брони'h.power = 0.02level.add_cam_effector("camera_effects\\fusker.anm",959,false,"")h.impulse = 50/iDist --/ чем ближе - тем сильнее 'засос'h.type = hit.wound --hit.strikeoTarget:hit(h) --/ наносим хит жертве--/ разворот жертвы на кровососа. TODO: требует доработки/замены!if oTarget:id() == db.actor:id() then --/ жертва == актор? (а нужно?)oTarget:set_actor_direction(vDirHit:getH())endendendendend--/<----------------------------------------------------------------------- Второе выдернуто из http://www.amk-team.ru/forum/index.php?showtopic=12793 Ну хит я подрезал, ну время атаки можно. Но атака идёт бесконечно и без пауз. Практически нереально выжить. Врезать первый вариант не получается - анимация другая. Можно сделать паузу между атаками во втором варианте? Поделиться этим сообщением Ссылка на сообщение
groks 439 Опубликовано 29 Ноября 2014 Но оно работает. И совершенно без сбоев. Действительно как из пулемёта ... эээ ... присасывается. Теперь хоть понял, что за паузу отвечает. Цель привести к состоянию, когда у ГГ хоть с небольшой защитой есть шанс выжить. А то ж будут сплошные сейф-лоады, которые надоедят и геймер бросит мод. @Dennis_Chikin, Спасибо. @Карлан, Предложи вариант. Может проще будет не вертеть ГГ и просто прилепить анимацию опьянения например? Поделиться этим сообщением Ссылка на сообщение