Zumbis Online
Últimos assuntos
» [NPC] Frozen Boss
por Eclipse Ontem à(s) 10:27 pm

» [NPC]Alien Boss
por [Dk]Serial-Killer Ontem à(s) 10:11 am

» Serve teste(Ainda estou arrumando meu addons)
por .Cannabis. 8/2/2017, 3:51 pm

» [Gp'Ex] Não Sabia que tinha voltado KKKKKKKK SO QUE NUNCA
por Wilian 4/2/2017, 6:05 pm

» Addons: Dark Plagues 5.0.8
por SoaD^ | [M]aTaDoR.?>* 1/2/2017, 11:18 am

» [Test] Angra Nest controlável
por Wilian 30/1/2017, 8:48 am

» Rapaz voltaram que isso
por .Cannabis. 26/1/2017, 6:15 pm

» Boss Firemonster
por [Dk]Serial-Killer 26/1/2017, 10:59 am

» [AJUDA] Mod Berserker
por [Dk]Serial-Killer 22/1/2017, 8:41 pm

» [AJUDA] Banco
por [Dk]Serial-Killer 22/1/2017, 8:23 pm

Frases filosóficas Zplague:
....
Os membros mais ativos da semana
[Dk]Serial-Killer
 
Eclipse
 
Wilian
 
[P]erfec[T] [S]cr[@]s[H]
 

Adsense

[Ajuda] Oberon Boss

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

[Ajuda] Oberon Boss

Mensagem por hackingzm em 5/10/2013, 12:19 pm

Ola queria saber como eu fasso pra ver quem matou o oberon boss se alguem saber coloca na sma me deixa os comando ou se tem outra forma de saber

hackingzm
Humano
Humano

Masculino Número de Mensagens : 222
Ammo Packs : 1208
Honra : -16
Data de inscrição : 15/08/2013

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: [Ajuda] Oberon Boss

Mensagem por Sergio # em 5/10/2013, 12:22 pm

O Boss não é um jogador, ele não ocupa slot no servidor como um jogador normal, acho que não da para fazer isso... se eu estiver errado que alguém me corrija..

____________________________________________

» ZombiePlague MorTaL GaMes
189.1.164.22:27017
|


Sergio #
Moderador
Moderador

Masculino Número de Mensagens : 681
Ammo Packs : 1539
Honra : 44
Data de inscrição : 16/02/2013

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: [Ajuda] Oberon Boss

Mensagem por hackingzm em 5/10/2013, 12:23 pm

Sergio # escreveu:O Boss não é um jogador, ele não ocupa slot no servidor como um jogador normal, acho que não da para fazer isso... se eu estiver errado que alguém me corrija..
nem no console aparece quem mato ;s

hackingzm
Humano
Humano

Masculino Número de Mensagens : 222
Ammo Packs : 1208
Honra : -16
Data de inscrição : 15/08/2013

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: [Ajuda] Oberon Boss

Mensagem por MtsLa!<3.L em 5/10/2013, 12:31 pm

Eu acho q nao aparece o nome mesmo porque e tipo uma maquina q esta jogando quando vc matar ele nao vai aparecer o nome de quem matou mesmo !

____________________________________________

Quem sabe faz ao vivo :)
-----------------------------------------
Salve - Leozinho - Hawk - Gkf - Junin - J0sh - Rotam
-----------------------------------------
Vem que com nois é vida HAHA!!!!

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

MtsLa!<3.L
Moderador
Moderador

Nick : Estelionatario
Masculino Número de Mensagens : 1237
InfoBanker
Ammo Packs : 1939
Honra : 28
Data de inscrição : 16/03/2013

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: [Ajuda] Oberon Boss

Mensagem por Leozinho em 5/10/2013, 2:36 pm

Posta sma

____________________________________________


Leozinho
Administrador
Administrador

Masculino Número de Mensagens : 2854
Ammo Packs : 2580
Honra : 78
Data de inscrição : 20/11/2011

Ver perfil do usuário leozinho.zp

Voltar ao Topo Ir em baixo

Re: [Ajuda] Oberon Boss

Mensagem por MtsLa!<3.L em 5/10/2013, 2:42 pm


____________________________________________

Quem sabe faz ao vivo :)
-----------------------------------------
Salve - Leozinho - Hawk - Gkf - Junin - J0sh - Rotam
-----------------------------------------
Vem que com nois é vida HAHA!!!!

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

MtsLa!<3.L
Moderador
Moderador

Nick : Estelionatario
Masculino Número de Mensagens : 1237
InfoBanker
Ammo Packs : 1939
Honra : 28
Data de inscrição : 16/03/2013

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: [Ajuda] Oberon Boss

Mensagem por hackingzm em 5/10/2013, 3:13 pm

Leozinho escreveu:Posta sma
ae leozinho sma
Código:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include < xs >
#include <zombieplague>

#define OBERON_CLASSNAME "oberon"

#define FLAG_ACESS                  ADMIN_LEVEL_F

#define OBERON_HEALTH                  100000.0
#define MONEY_DMG                  1000.0
#define MONEY_REWARD                  1000
#define CLASS_NAME                  "npc_oberon"
#define CLASS_TIP                  "Oberon Boss"
#define OBERON_ATTACK_WAITIME                3.0

#define TASK_SKILL 123123123
#define TASK_HOOKINGUP 123312312
#define TASK_HOOKINGDOWN 123312313

new const oberon_model[] = "models/oberon/zbs_bossl_big02.mdl"
new const oberon_knife_effect[] = "models/oberon/ef_knife.mdl"
new const oberon_hole_effect[] = "models/oberon/ef_hole.mdl"
new const oberon_bomb_model[] = "models/oberon/zbs_bossl_big02_bomb.mdl"

new const oberon_appear_sound[] = "oberon/appear.wav"
new const oberon_death_sound[] = "oberon/death.wav"
new const oberon_evolution_sound[] = "oberon/knife.wav"
new const oberon_attack_sound[8][] =
{
  "oberon/attack1.wav",
  "oberon/attack2.wav",
  "oberon/attack3_jump.wav",
  "oberon/attack3.wav",
  "oberon/knife_attack1.wav",
  "oberon/knife_attack2.wav",
  "oberon/knife_attack3_jump.wav",
  "oberon/knife_attack3.wav"
}
new const oberon_hole_sound[] = "oberon/hole.wav"
new const oberon_bomb_sound[] = "oberon/attack_bomb.wav"

new oberon_model_id, g_reg, m_iBlood[2], exp_spr_id
new Float:g_cur_origin[3], Float:g_cur_angles[3], Float:g_cur_v_angle[3]
new g_evolution, g_evoluting, g_doing_other, g_attacking3, Float:g_attacking3_origin[3], g_damagedealt[33] , g_boss_exists[33], g_position_created[33]
new cvar_dmg_ap_allow, cvar_ammodamage, cvar_ammo_quantity

public plugin_init()
{
  register_plugin("[ZP] Addon: Oberon Boss", "1.0", "Dias | [P]erfec[T] [S]cr[@]s[H]")
 
  register_event("HLTV", "event_newround", "a", "1=0", "2=0")
  register_touch(OBERON_CLASSNAME, "*", "fw_touch")
 
  register_clcmd("say /salvar_local_do_oberon", "get_origin")
  register_clcmd("say /criar_oberon", "create_oberon")
  register_clcmd("say salvar_local_do_oberon", "get_origin")
  register_clcmd("say salvar_local_do_oberon", "create_oberon")
  register_clcmd("say .salvar_local_do_oberon", "get_origin")
  register_clcmd("say .salvar_local_do_oberon", "create_oberon")
 
  cvar_dmg_ap_allow = register_cvar("zp_oberon_dmg_ap_reward_allow", "1")      // Ganhar Ammo Packs Por Dano
  cvar_ammodamage = register_cvar("zp_oberon_dmg_for_reward", "1000")      // Dmg Necessario Para Ganhar Ammo Packs
  cvar_ammo_quantity  = register_cvar("zp_oberom_reward_ap_quantity", "50")    // Quantia de Ammo Packs que ira ganhar
}

public plugin_precache()
{
  oberon_model_id = precache_model(oberon_model)
  precache_model(oberon_knife_effect)
  precache_model(oberon_hole_effect)
  precache_model(oberon_bomb_model)
 
  precache_sound(oberon_appear_sound)
  precache_sound(oberon_death_sound)
  precache_sound(oberon_evolution_sound)
  for(new i = 0; i < sizeof(oberon_attack_sound); i++)
  {
      precache_sound(oberon_attack_sound[i])
  }
  precache_sound(oberon_hole_sound)
  precache_sound(oberon_bomb_sound)
 
  m_iBlood[0] = precache_model("sprites/blood.spr")
  m_iBlood[1] = precache_model("sprites/bloodspray.spr") 
  exp_spr_id = precache_model("sprites/zerogxplode.spr")
}

public event_newround()
{
  static ent
  ent = find_ent_by_class(-1, OBERON_CLASSNAME)
 
  if(task_exists(ent+TASK_SKILL)) remove_task(ent+TASK_SKILL)
}

public get_origin(id)
{
  if(get_user_flags(id) & FLAG_ACESS)
  {
      pev(id, pev_origin, g_cur_origin)
      pev(id, pev_angles, g_cur_angles)
      pev(id, pev_v_angle, g_cur_v_angle)
     
      g_position_created[id]++
     
      client_printcolor(id, "!g[ZP Oberon]!y Posicao do Nascimento do Oberon Salva Com Sucesso. Para Invocar digite !t^"say /criar_oberon^"")
  }
  else
  {
      client_printcolor(id,"!g[ZP Oberon]!y Voce Nao Tem Acesso a esse Comando")
  }
}

public create_oberon(id)
{
  if(get_user_flags(id) & FLAG_ACESS)
  {
 
      if(g_position_created[id] == 0)
      {
        client_printcolor(id, "!g[ZP Oberon]!y Voce Tem que Defenir a Posicao de Nascimento Primeiro !g(Digitando:!t say /salvar_local_do_oberon!g)")
        return;
      }
     
      if(g_boss_exists[id] >= 1)
      {
        client_printcolor(id, "!g[ZP Oberon]!y Ja Existe um Oberon no Jogo Nao Pode Criar Mais")
        return;
      }
     
      new ent = create_entity("info_target")
     
      entity_set_origin(ent, g_cur_origin)
      entity_set_vector(ent, EV_VEC_angles, g_cur_angles)
      //entity_set_vector(ent, EV_VEC_v_angle, g_cur_v_angle)
     
      entity_set_float(ent, EV_FL_takedamage, 1.0)
      entity_set_float(ent, EV_FL_health, OBERON_HEALTH + 1000.0)
     
      entity_set_string(ent,EV_SZ_classname, OBERON_CLASSNAME)
      entity_set_model(ent, oberon_model)
      entity_set_int(ent, EV_INT_solid, SOLID_SLIDEBOX)
      entity_set_int(ent, EV_INT_movetype, MOVETYPE_STEP)
     
      new Float:maxs[3] = {100.0, 100.0, 100.0}
      new Float:mins[3] = {-100.0, -100.0, -30.0}
      entity_set_size(ent, mins, maxs)
      entity_set_int(ent, EV_INT_modelindex, oberon_model_id)
     
      set_entity_anim(ent, 1)
     
      set_pev(ent, pev_iuser4, 0)
     
      entity_set_float(ent, EV_FL_nextthink, halflife_time() + 6.0)
      set_task(5.0, "start_oberon", ent)
      g_boss_exists[id]++
      set_task(15.0, "do_random_skill", ent, _, _, "b")
      set_task(5.0, "creditos", id)
     
      set_hudmessage(255, 0, 0, -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1)
      show_hudmessage(id, "O Oberon Foi Solto. Fuja ou Se Esconda !!")
     
      if(!g_reg)
      {
        RegisterHamFromEntity(Ham_TakeDamage, ent, "fw_takedmg", 1)
        RegisterHamFromEntity(Ham_Think, ent, "fw_think")
        g_reg = 1
      } 
     
      g_boss_exists[id]++
      g_boss_exists[id]++
      g_evolution = 0
      g_evoluting = 0
      g_doing_other = 0
     
      drop_to_floor(ent)
      emit_sound(ent, CHAN_BODY, oberon_appear_sound, 1.0, ATTN_NORM, 0, PITCH_NORM)
  }
  else
  {
      client_printcolor(id, "!g[ZP Oberon]!y Voce Nao Tem Acesso a esse Comando")
  }

}

public start_oberon(ent)
{
  set_entity_anim(ent, 2)
}

public fw_think(ent)
{
  if(!is_valid_ent(ent))
      return HAM_IGNORED
     
  if(pev(ent, pev_iuser4) == 1) // Oberon is dead
      return HAM_IGNORED
     
  if(g_evoluting || g_doing_other)
      return HAM_IGNORED
     
  if(pev(ent, pev_health) - 1000.0 <= 0.0)
  {
      set_pev(ent, pev_iuser4, 1)
      set_entity_anim(ent, 20)
      set_task(15.0, "move_entity", ent)
      entity_set_int(ent, EV_INT_solid, SOLID_NOT)
      entity_set_float(ent, EV_FL_takedamage, 0.0)
     
      emit_sound(ent, CHAN_BODY, oberon_death_sound, 1.0, ATTN_NORM, 0, PITCH_NORM)
     
      return HAM_IGNORED
  }
  if((pev(ent, pev_health) - 1000.0 <= OBERON_HEALTH / 2.0) && !g_evolution)
  {
      g_evoluting = 1
      set_entity_anim(ent, 11)
     
      emit_sound(ent, CHAN_BODY, oberon_evolution_sound, 1.0, ATTN_NORM, 0, PITCH_NORM)
      set_task(8.0, "set_new_idle", ent)
     
      return HAM_IGNORED
  } 
 
  static victim
  static Float:Origin[3], Float:VicOrigin[3], Float:distance
 
  victim = FindClosesEnemy(ent)
  pev(ent, pev_origin, Origin)
  pev(victim, pev_origin, VicOrigin)
 
  distance = get_distance_f(Origin, VicOrigin)
 
  if(is_user_alive(victim))
  {
      if(distance <= 250.0)
      {
        if(!is_valid_ent(ent))
            return FMRES_IGNORED 
     
        new Float:Ent_Origin[3], Float:Vic_Origin[3]
       
        pev(ent, pev_origin, Ent_Origin)
        pev(victim, pev_origin, Vic_Origin)       
     
        npc_turntotarget(ent, Ent_Origin, victim, Vic_Origin)
       
        static Attack_Type, attack_anim, attack_sound
        Attack_Type = random_num(1, 2)
       
        if(Attack_Type == 1)
        {
            if(g_evolution)
            {
              attack_anim = 14
              attack_sound = 4
            } else {
              attack_anim = 6
              attack_sound = 0
            }
           
            set_entity_anim(ent, attack_anim)
            emit_sound(ent, CHAN_BODY, oberon_attack_sound[attack_sound], 1.0, ATTN_NORM, 0, PITCH_NORM)
           
            set_task(1.0, "do_takedmg", ent)
           
            entity_set_float(ent, EV_FL_nextthink, get_gametime() + 3.0)
        } else {
            if(g_evolution)
            {
              attack_anim = 15
              attack_sound = 5
            } else {
              attack_anim = 7
              attack_sound = 1
            }
             
            set_entity_anim(ent, attack_anim) 
            emit_sound(ent, CHAN_BODY, oberon_attack_sound[attack_sound], 1.0, ATTN_NORM, 0, PITCH_NORM)
           
            set_task(0.5, "do_takedmg", ent)       
           
            entity_set_float(ent, EV_FL_nextthink, get_gametime() + 3.0)
        }
       
      } else {
        static moving_anim
       
        if(g_evolution)
            moving_anim = 13
        else
            moving_anim = 3     
     
        if(pev(ent, pev_sequence) != moving_anim)
        {
            entity_set_float(ent, EV_FL_animtime, get_gametime())
            entity_set_float(ent, EV_FL_framerate, 1.0)
            entity_set_int(ent, EV_INT_sequence, moving_anim)
        }
           
        new Float:Ent_Origin[3], Float:Vic_Origin[3]
       
        pev(ent, pev_origin, Ent_Origin)
        pev(victim, pev_origin, Vic_Origin)
       
        npc_turntotarget(ent, Ent_Origin, victim, Vic_Origin)
        hook_ent(ent, victim, 100.0)
       
        entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.1)
      }
  } else {
      static idle_anim
     
      if(g_evolution)
        idle_anim = 12
      else
        idle_anim = 2
       
      if(pev(ent, pev_sequence) != idle_anim)
      {
        set_entity_anim(ent, idle_anim)
      } 
       
      entity_set_float(ent, EV_FL_nextthink, get_gametime() + 1.0)
  } 
     
  return HAM_HANDLED
}

public do_random_skill(ent)
{
  if(!pev_valid(ent))
      return PLUGIN_HANDLED
     
  if(g_evoluting)
      return PLUGIN_HANDLED
     
  if(pev(ent, pev_health) - 1000.0 <= 0.0)
      return PLUGIN_HANDLED
 
  static random_skill
  random_skill = random_num(0, 100)
 
  g_doing_other = 1
 
  switch(random_skill)
  {
      case 0..37: {
        do_attack3(ent)
       
      }
      case 38..72: {
        do_hole(ent)
      }
      case 73..100: {
        do_bomb(ent)
      }     
  } 
 
  return PLUGIN_CONTINUE
}

public do_bomb(oberon)
{
  g_doing_other = 1
 
  static bomb_anim
  if(g_evolution)
      bomb_anim = 18
  else
      bomb_anim = 9
     
  set_entity_anim(oberon, bomb_anim)
 
  set_task(3.0, "do_skill_bomb", oberon+2015, _, _, "b")
  set_task(10.0, "stop_skill_bomb", oberon)
}

public stop_skill_bomb(oberon)
{
  remove_task(oberon+2015)
 
  static idle_anim
 
  if(g_evolution)
      idle_anim = 12
  else
      idle_anim = 2
     
  set_entity_anim(oberon, idle_anim)
  set_task(2.0, "reset_think", oberon)
}

public do_skill_bomb(oberon)
{
  oberon -= 2015
  static Float:StartOrigin[3], Float:TempOrigin[6][3], Float:VicOrigin[6][3], Float:Random1
 
  pev(oberon, pev_origin, StartOrigin)
  emit_sound(oberon, CHAN_BODY, oberon_bomb_sound, 1.0, ATTN_NORM, 0, PITCH_NORM)
 
  // 1st Bomb
  Random1 = random_float(100.0, 500.0)
  VicOrigin[0][0] = StartOrigin[0] + Random1
  VicOrigin[0][1] = StartOrigin[1]
  VicOrigin[0][2] = StartOrigin[2]
 
  TempOrigin[0][0] = VicOrigin[0][0] - (Random1 / 2.0)
  TempOrigin[0][1] = VicOrigin[0][1]
  TempOrigin[0][2] = VicOrigin[0][2] + 500.0
 
  // 2nd Bomb
  Random1 = random_float(100.0, 500.0)
  VicOrigin[1][0] = StartOrigin[0]
  VicOrigin[1][1] = StartOrigin[1] + Random1
  VicOrigin[1][2] = StartOrigin[2]
 
  TempOrigin[1][0] = VicOrigin[1][0]
  TempOrigin[1][1] = VicOrigin[1][1] - (Random1 / 2.0)
  TempOrigin[1][2] = VicOrigin[1][2] + 500.0 
 
  // 3rd Bomb
  Random1 = random_float(100.0, 500.0)
  VicOrigin[2][0] = StartOrigin[0] - Random1
  VicOrigin[2][1] = StartOrigin[1]
  VicOrigin[2][2] = StartOrigin[2]
 
  TempOrigin[2][0] = VicOrigin[2][0] - (Random1 / 2.0)
  TempOrigin[2][1] = VicOrigin[2][1]
  TempOrigin[2][2] = VicOrigin[2][2] + 500.0 
 
  // 4th Bomb
  VicOrigin[3][0] = StartOrigin[0]
  VicOrigin[3][1] = StartOrigin[1] - Random1
  VicOrigin[3][2] = StartOrigin[2]
 
  TempOrigin[3][0] = VicOrigin[3][0]
  TempOrigin[3][1] = VicOrigin[3][1] - (Random1 / 2.0)
  TempOrigin[3][2] = VicOrigin[3][2] + 500.0
 
  // 5th Bomb
  VicOrigin[4][0] = StartOrigin[0] + Random1
  VicOrigin[4][1] = StartOrigin[1] + Random1
  VicOrigin[4][2] = StartOrigin[2]
 
  TempOrigin[4][0] = VicOrigin[4][0] - (Random1 / 2.0)
  TempOrigin[4][1] = VicOrigin[4][1] - (Random1 / 2.0)
  TempOrigin[4][2] = VicOrigin[4][2] + 500.0
 
  // 6th Bomb
  VicOrigin[5][0] = StartOrigin[0] + Random1
  VicOrigin[5][1] = StartOrigin[1] - Random1
  VicOrigin[5][2] = StartOrigin[2]
 
  TempOrigin[5][0] = VicOrigin[5][0] + (Random1 / 2.0)
  TempOrigin[5][1] = VicOrigin[5][1] - (Random1 / 2.0)
  TempOrigin[5][2] = VicOrigin[5][2] + 500.0 
 
  for(new i = 0; i < 6; i++)
  {
      make_bomb(StartOrigin, TempOrigin[i], VicOrigin[i])
  } 
}

public make_bomb(Float:StartOrigin[3], Float:TempOrigin[3], Float:VicOrigin[3])
{
  new ent = create_entity("info_target")
 
  StartOrigin[2] += 20.0
 
  entity_set_origin(ent, StartOrigin)
 
  entity_set_string(ent,EV_SZ_classname, "oberon_bomb")
  entity_set_model(ent, oberon_bomb_model)
  entity_set_int(ent, EV_INT_solid, SOLID_NOT)
  entity_set_int(ent, EV_INT_movetype, MOVETYPE_BOUNCE)
 
  new Float:maxs[3] = {10.0,10.0,10.0}
  new Float:mins[3] = {-10.0,-10.0,-5.0}
  entity_set_size(ent, mins, maxs)
 
  entity_set_float(ent, EV_FL_animtime, get_gametime())
  entity_set_float(ent, EV_FL_framerate, 1.0) 
  entity_set_int(ent, EV_INT_sequence, 0)     
 
  static arg[4], arg2[4]
 
  arg[0] = ent
  arg[1] = floatround(TempOrigin[0])
  arg[2] = floatround(TempOrigin[1])
  arg[3] = floatround(TempOrigin[2])

  arg2[0] = ent
  arg2[1] = floatround(VicOrigin[0])
  arg2[2] = floatround(VicOrigin[1])
  arg2[3] = floatround(VicOrigin[2]) 
 
  set_task(0.01, "do_hook_bomb_up", TASK_HOOKINGUP, arg, sizeof(arg), "b")
  set_task(1.0, "do_hook_bomb_down", _, arg2, sizeof(arg2))
  set_task(2.0, "bomb_explode", ent)
}

public bomb_explode(ent)
{
  remove_task(TASK_HOOKINGUP)
  remove_task(TASK_HOOKINGDOWN)
 
  static Float:Origin[3]
  pev(ent, pev_origin, Origin)
 
  message_begin(MSG_BROADCAST ,SVC_TEMPENTITY)
  write_byte(TE_EXPLOSION)
  engfunc(EngFunc_WriteCoord, Origin[0])
  engfunc(EngFunc_WriteCoord, Origin[1])
  engfunc(EngFunc_WriteCoord, Origin[2])
  write_short(exp_spr_id)  // sprite index
  write_byte(20)  // scale in 0.1's
  write_byte(30)  // framerate
  write_byte(0)  // flags
  message_end() 
 
  for(new i = 1; i < get_maxplayers(); i++)
  {
      if(is_user_alive(i) && entity_range(i, ent) <= 300.0)
      {
        static Float:Damage
        Damage = random_float(10.0, 30.0)
       
        if(g_evolution)
            Damage *= 5.0
           
        ExecuteHam(Ham_TakeDamage, i, 300, i, Damage, DMG_BLAST)
        hit_screen(i)
      }
  } 
 
  remove_entity(ent)
  remove_entity_name("oberon_bomb")
 
  set_task(1.0, "remove_bomb", ent)
}

public remove_bomb(ent)
{
  remove_entity(ent)
  remove_entity_name("oberon_bomb")
}

public do_hook_bomb_down(arg[4])
{
  remove_task(TASK_HOOKINGUP)
  set_task(0.01, "do_hook_bomb_down2", TASK_HOOKINGDOWN, arg, sizeof(arg), "b")
}

public do_hook_bomb_down2(arg[4])
{
  static ent, Float:VicOrigin[3]
 
  ent = arg[0]
  VicOrigin[0] = float(arg[1])
  VicOrigin[1] = float(arg[2])
  VicOrigin[2] = float(arg[3]) 
 
  hook_ent2(ent, VicOrigin, 500.0)
}

public do_hook_bomb_up(arg[4])
{
  static ent, Float:TempOrigin[3]
 
  ent = arg[0]
  TempOrigin[0] = float(arg[1])
  TempOrigin[1] = float(arg[2])
  TempOrigin[2] = float(arg[3])
 
  hook_ent2(ent, TempOrigin, 500.0)
}

public do_hole(oberon)
{
  static hole_anim
 
  if(g_evolution)
      hole_anim = 19
  else
      hole_anim = 10
     
  set_entity_anim(oberon, hole_anim)
  emit_sound(oberon, CHAN_BODY, oberon_hole_sound, 1.0, ATTN_NORM, 0, PITCH_NORM)
 
  new ent = create_entity("info_target")
 
  static Float:Origin[3]
  pev(oberon, pev_origin, Origin)
 
  Origin[2] -= 10.0
 
  entity_set_origin(ent, Origin)
 
  entity_set_string(ent,EV_SZ_classname, "hole_hook")
  entity_set_model(ent, oberon_hole_effect)
  entity_set_int(ent, EV_INT_solid, SOLID_NOT)
  entity_set_int(ent, EV_INT_movetype, MOVETYPE_NONE)
 
  new Float:maxs[3] = {1.0,1.0,1.0}
  new Float:mins[3] = {-1.0,-1.0,-1.0}
  entity_set_size(ent, mins, maxs)
 
  entity_set_float(ent, EV_FL_animtime, get_gametime())
  entity_set_float(ent, EV_FL_framerate, 1.0) 
  entity_set_int(ent, EV_INT_sequence, 0) 
 
  set_pev(ent, pev_rendermode, kRenderTransAdd)
  set_pev(ent, pev_renderamt, 255.0) 
 
  drop_to_floor(ent)
 
  for(new i = 0; i < get_maxplayers(); i++)
  {
      if(is_user_alive(i) && entity_range(oberon, i) <= 1000.0)
      {
        static arg[2]
        arg[0] = oberon
        arg[1] = i
       
        set_task(0.01, "do_hook_player", 512512, arg, sizeof(arg), "b")
      }
  }
 
  set_task(5.0, "stop_hook", oberon+2012) 
}

public do_hook_player(arg[2])
{
  static Float:Origin[3], Float:Speed
  pev(arg[0], pev_origin, Origin)
 
  Speed = (1000.0 / entity_range(arg[0], arg[1])) * 75.0
 
  hook_ent2(arg[1], Origin, Speed)
}

public stop_hook(oberon)
{
  oberon -= 2012
 
  static ent
  ent = find_ent_by_class(-1, "hole_hook")
 
  remove_entity(ent)
  remove_task(512512)
 
  do_takedmg(oberon)
  set_task(1.0, "reset_think", oberon)
}

public do_attack3(ent)
{
  static attack3_anim, attack3_sound
 
  if(g_evolution)
  {
      attack3_anim = 16
      attack3_sound = 6
  } else {
      attack3_anim = 8
      attack3_sound = 2
  } 
 
  g_attacking3 = 1
 
  set_entity_anim(ent, attack3_anim)
 
  emit_sound(ent, CHAN_BODY, oberon_attack_sound[attack3_sound], 1.0, ATTN_NORM, 0, PITCH_NORM)
  set_task(0.1, "attack3_jump", ent)
}

public attack3_jump(ent)
{
  set_task(0.01, "hookingup", ent+TASK_HOOKINGUP, _, _, "b")
  set_task(1.0, "hookingdown", ent+TASK_HOOKINGDOWN) 
 
  static Enemy
  Enemy = FindClosesEnemy(ent) 
 
  pev(Enemy, pev_origin, g_attacking3_origin)
}

public hookingup(ent)
{
  ent -= TASK_HOOKINGUP
 
  static Float:Origin[3]
  pev(ent, pev_origin, Origin)
 
  Origin[2] += 1000.0
 
  hook_ent2(ent, Origin, 1000.0)
 
  static Enemy
  Enemy = FindClosesEnemy(ent) 
 
  new Float:Ent_Origin[3], Float:Vic_Origin[3]
 
  pev(ent, pev_origin, Ent_Origin)
  pev(Enemy, pev_origin, Vic_Origin)
 
  npc_turntotarget(ent, Ent_Origin, Enemy, Vic_Origin) 
}

public hookingdown(ent)
{
  ent -= TASK_HOOKINGDOWN
 
  remove_task(ent+TASK_HOOKINGUP)
  set_task(0.5, "set_func1", ent)
 
  set_task(0.01, "hookingdown2", ent+TASK_HOOKINGDOWN, _, _, "b")
}

public set_func1(ent)
{
  set_pev(ent, pev_iuser3, 1)
}

public hookingdown2(ent)
{
  ent -= TASK_HOOKINGDOWN
 
  static Enemy
  Enemy = FindClosesEnemy(ent)
 
  hook_ent2(ent, g_attacking3_origin, 1000.0)
 
  new Float:Ent_Origin[3], Float:Vic_Origin[3]
 
  pev(ent, pev_origin, Ent_Origin)
  pev(Enemy, pev_origin, Vic_Origin)
 
  npc_turntotarget(ent, Ent_Origin, Enemy, Vic_Origin)     
}

public fw_touch(ent, touch)
{
  if(!pev_valid(ent))
      return FMRES_IGNORED
     
  if(g_attacking3 && pev(ent, pev_iuser3) == 1)
  {
      remove_task(ent+TASK_HOOKINGDOWN)
     
      if(is_user_alive(touch))
        user_kill(touch)
       
      g_attacking3 = 0
      set_pev(ent, pev_iuser3, 0)
     
      set_task(0.75, "reset_think", ent)
     
      for(new i = 1; i < get_maxplayers(); i++)
      {
        if(is_user_alive(i) && entity_range(ent, i) <= 300.0)
        {
            hit_screen(i)
           
            static Float:Damage
            Damage = random_float(10.0, 25.0)
           
            if(g_evolution)
              Damage *= 1.5
           
            ExecuteHam(Ham_TakeDamage, i, 0, i, Damage, DMG_BLAST)
        }
      } 
     
      static attack3_sound
      if(g_evolution)
        attack3_sound = 7
      else
        attack3_sound = 3
     
      emit_sound(ent, CHAN_BODY, oberon_attack_sound[attack3_sound], 1.0, ATTN_NORM, 0, PITCH_NORM)     
       
      drop_to_floor(ent)
  }
     
  return FMRES_HANDLED
}

public do_takedmg(ent2)
{
  if(g_evolution)
  {
      new ent = create_entity("info_target")
 
      static Float:Origin[3], Float:Angles[3]
      pev(ent2, pev_origin, Origin)
      pev(ent2, pev_angles, Angles)
     
      entity_set_origin(ent, Origin)
      entity_set_vector(ent, EV_VEC_angles, Angles)
     
      entity_set_string(ent,EV_SZ_classname, "knife_effect")
      entity_set_model(ent, oberon_knife_effect)
      entity_set_int(ent, EV_INT_solid, SOLID_NOT)
      entity_set_int(ent, EV_INT_movetype, MOVETYPE_NONE)
     
      new Float:maxs[3] = {40.0, 40.0, 1.0}
      new Float:mins[3] = {-40.0, -40.0, -1.0}
      entity_set_size(ent, mins, maxs)
     
      drop_to_floor(ent)
     
      set_task(1.0, "remove_knife_effect", ent)
  }
 
  for(new i = 1; i < get_maxplayers(); i++)
  {
      if(is_user_alive(i) && entity_range(ent2, i) <= 300.0)
      {
        hit_screen(i)
       
        static Float:Damage
        Damage = random_float(7.5, 15.0)
       
        if(g_evolution)
            Damage *= 2.0
       
        ExecuteHam(Ham_TakeDamage, i, 0, i, Damage, DMG_BLAST)
      }
  } 
}

public remove_knife_effect(ent)
{
  remove_entity(ent)
}

public set_new_idle(ent)
{
  g_evoluting = 0
  g_evolution = 1
  set_entity_anim(ent, 12)
 
  entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.1)
}

public move_entity(ent)
{
  static Float:Origin[3]
 
  Origin[0] = 4290.0
  Origin[1] = 4290.0
  Origin[2] = 4290.0
 
  set_pev(ent, pev_origin, Origin)
  entity_set_float(ent, EV_FL_nextthink, halflife_time() + 99999999.0)
}

public fw_takedmg(victim, inflictor, attacker, Float:damage, damagebits)
{
  static Float:Origin[3]
  fm_get_aimorigin(attacker, Origin)
 
  client_print(attacker, print_center, "Vida do Oberon: %i", floatround(pev(victim, pev_health) - 1000.0))
 
  create_blood(Origin)
 
  if(get_pcvar_num(cvar_dmg_ap_allow))
  {
      // Store damage dealt
      g_damagedealt[attacker] += floatround(damage)
       
      // Reward ammo packs for every [ammo damage] dealt
      while (g_damagedealt[attacker] > get_pcvar_num(cvar_ammodamage))
      {
        g_damagedealt[attacker] -= get_pcvar_num(cvar_ammodamage)
        zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + get_pcvar_num(cvar_ammo_quantity))
      }
  }
}

stock set_entity_anim(ent, anim)
{
  entity_set_float(ent, EV_FL_animtime, get_gametime())
  entity_set_float(ent, EV_FL_framerate, 1.0)
  entity_set_int(ent, EV_INT_sequence, anim) 
}

stock create_blood(const Float:origin[3])
{
  // Show some blood :)
  message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  write_byte(TE_BLOODSPRITE)
  engfunc(EngFunc_WriteCoord, origin[0])
  engfunc(EngFunc_WriteCoord, origin[1])
  engfunc(EngFunc_WriteCoord, origin[2])
  write_short(m_iBlood[1])
  write_short(m_iBlood[0])
  write_byte(75)
  write_byte(5)
  message_end()
}

stock fm_get_aimorigin(index, Float:origin[3])
{
  new Float:start[3], Float:view_ofs[3];
  pev(index, pev_origin, start);
  pev(index, pev_view_ofs, view_ofs);
  xs_vec_add(start, view_ofs, start);
 
  new Float:dest[3];
  pev(index, pev_v_angle, dest);
  engfunc(EngFunc_MakeVectors, dest);
  global_get(glb_v_forward, dest);
  xs_vec_mul_scalar(dest, 9999.0, dest);
  xs_vec_add(start, dest, dest);
 
  engfunc(EngFunc_TraceLine, start, dest, 0, index, 0);
  get_tr2(0, TR_vecEndPos, origin);
 
  return 1;


public FindClosesEnemy(entid)
{
  new Float:Dist
  new Float:maxdistance=4000.0
  new indexid=0 
  for(new i=1;i<=get_maxplayers();i++){
      if(is_user_alive(i) && is_valid_ent(i) && can_see_fm(entid, i))
      {
        Dist = entity_range(entid, i)
        if(Dist <= maxdistance)
        {
            maxdistance=Dist
            indexid=i
           
            return indexid
        }
      } 
  } 
  return 0
}

public npc_turntotarget(ent, Float:Ent_Origin[3], target, Float:Vic_Origin[3])
{
  if(target)
  {
      new Float:newAngle[3]
      entity_get_vector(ent, EV_VEC_angles, newAngle)
      new Float:x = Vic_Origin[0] - Ent_Origin[0]
      new Float:z = Vic_Origin[1] - Ent_Origin[1]

      new Float:radians = floatatan(z/x, radian)
      newAngle[1] = radians * (180 / 3.14)
      if (Vic_Origin[0] < Ent_Origin[0])
        newAngle[1] -= 180.0
       
      entity_set_vector(ent, EV_VEC_angles, newAngle)
  }
}

public bool:can_see_fm(entindex1, entindex2)
{
  if (!entindex1 || !entindex2)
      return false

  if (pev_valid(entindex1) && pev_valid(entindex1))
  {
      new flags = pev(entindex1, pev_flags)
      if (flags & EF_NODRAW || flags & FL_NOTARGET)
      {
        return false
      }

      new Float:lookerOrig[3]
      new Float:targetBaseOrig[3]
      new Float:targetOrig[3]
      new Float:temp[3]

      pev(entindex1, pev_origin, lookerOrig)
      pev(entindex1, pev_view_ofs, temp)
      lookerOrig[0] += temp[0]
      lookerOrig[1] += temp[1]
      lookerOrig[2] += temp[2]

      pev(entindex2, pev_origin, targetBaseOrig)
      pev(entindex2, pev_view_ofs, temp)
      targetOrig[0] = targetBaseOrig [0] + temp[0]
      targetOrig[1] = targetBaseOrig [1] + temp[1]
      targetOrig[2] = targetBaseOrig [2] + temp[2]

      engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) //  checks the had of seen player
      if (get_tr2(0, TraceResult:TR_InOpen) && get_tr2(0, TraceResult:TR_InWater))
      {
        return false
      }
      else
      {
        new Float:flFraction
        get_tr2(0, TraceResult:TR_flFraction, flFraction)
        if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
        {
            return true
        }
        else
        {
            targetOrig[0] = targetBaseOrig [0]
            targetOrig[1] = targetBaseOrig [1]
            targetOrig[2] = targetBaseOrig [2]
            engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) //  checks the body of seen player
            get_tr2(0, TraceResult:TR_flFraction, flFraction)
            if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
            {
              return true
            }
            else
            {
              targetOrig[0] = targetBaseOrig [0]
              targetOrig[1] = targetBaseOrig [1]
              targetOrig[2] = targetBaseOrig [2] - 17.0
              engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) //  checks the legs of seen player
              get_tr2(0, TraceResult:TR_flFraction, flFraction)
              if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
              {
                  return true
              }
            }
        }
      }
  }
  return false
}

public hook_ent(ent, victim, Float:speed)
{
  static Float:fl_Velocity[3]
  static Float:VicOrigin[3], Float:EntOrigin[3]

  pev(ent, pev_origin, EntOrigin)
  pev(victim, pev_origin, VicOrigin)
 
  static Float:distance_f
  distance_f = get_distance_f(EntOrigin, VicOrigin)

  if (distance_f > 60.0)
  {
      new Float:fl_Time = distance_f / speed

      fl_Velocity[0] = (VicOrigin[0] - EntOrigin[0]) / fl_Time
      fl_Velocity[1] = (VicOrigin[1] - EntOrigin[1]) / fl_Time
      fl_Velocity[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time
  } else
  {
      fl_Velocity[0] = 0.0
      fl_Velocity[1] = 0.0
      fl_Velocity[2] = 0.0
  }

  entity_set_vector(ent, EV_VEC_velocity, fl_Velocity)
}

public hook_ent2(ent, Float:VicOrigin[3], Float:speed)
{
  static Float:fl_Velocity[3]
  static Float:EntOrigin[3]

  pev(ent, pev_origin, EntOrigin)
 
  static Float:distance_f
  distance_f = get_distance_f(EntOrigin, VicOrigin)

  if (distance_f > 60.0)
  {
      new Float:fl_Time = distance_f / speed

      fl_Velocity[0] = (VicOrigin[0] - EntOrigin[0]) / fl_Time
      fl_Velocity[1] = (VicOrigin[1] - EntOrigin[1]) / fl_Time
      fl_Velocity[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time
  } else
  {
      fl_Velocity[0] = 0.0
      fl_Velocity[1] = 0.0
      fl_Velocity[2] = 0.0
  }

  entity_set_vector(ent, EV_VEC_velocity, fl_Velocity)
}

public hit_screen(id)
{
  message_begin(MSG_ONE, get_user_msgid("ScreenShake"),{0,0,0}, id)
  write_short(1<<14)
  write_short(1<<13)
  write_short(1<<13)
  message_end() 
}

public reset_think(ent)
{
  g_doing_other = 0
  entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.1)
}

public creditos(id)
{
  set_hudmessage(0, 255, 255, -1.0, 0.89, 1, 0.0, 5.0, 1.0, 1.0, -1)
  show_hudmessage(id, "Plugin de Boss Editado Por: [P]erfec[T] [S]cr[@]s[H]")
}
 

stock client_printcolor(const id, const input[], any:...)
{
        new count = 1, players[32]
        static msg[191]
        vformat(msg, 190, input, 3)

        replace_all(msg, 190, "!g", "^4")  // Chat Verde
        replace_all(msg, 190, "!y", "^1")  // Chat Normal
        replace_all(msg, 190, "!t", "^3")  // Chat Do Time Tr=Vermelho Ct=Azul Spec=Branco

        if (id) players[0] = id; else get_players(players, count, "ch")
        {
                for (new i = 0; i < count; i++)
                {
                        if (is_user_connected(players[i]))
                        {
                                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
                                write_byte(players[i]);
                                write_string(msg);
                                message_end();
                        }
                }
        }
}

hackingzm
Humano
Humano

Masculino Número de Mensagens : 222
Ammo Packs : 1208
Honra : -16
Data de inscrição : 15/08/2013

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: [Ajuda] Oberon Boss

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum