hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2025.06.16. 20:27



Jelenlévő felhasználók

Jelenleg 409 felhasználó van jelen :: 2 regisztrált, 0 rejtett és 407 vendég

A legtöbb felhasználó (2761 fő) 2025.01.09. 20:06-kor tartózkodott itt.

Regisztrált felhasználók: Bing [Bot], Google [Bot]az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása Hozzászólás a témához  [5 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Dione
HozzászólásElküldve:2012.02.04. 17:00 
Offline
Őskövület
Avatar

Csatlakozott:2011.09.26. 20:33
Hozzászólások:2105
Megköszönt másnak: 28 alkalommal
Megköszönték neki: 33 alkalommal
Hi
Újabb szörny npc-t találtam ezúttal sma-val :D
azt láttam a videón hogy a gyerek beírkálja a képességeit a szörnynek akkor azt fogja csinálni
a kérdésem viszont az hogy automata mod nincs rajta, tehát hogy a szörny magát irányítja?
Kód:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <hamsandwich>

#define DIONE_CLASSNAME "dione"

new dione_model_id
new const dione_model[] = "models/dione/dione.mdl"
new const skill_posion[2][] = {
   "models/dione/ef_poison01.mdl", // Start
   "models/dione/ef_poison02.mdl" // End
}
new const skill_swing[] = "models/dione/ef_swing.mdl"
new const skill_tentacle[][] = {
   "models/dione/ef_tentacle_sign.mdl",
   "models/dione/tentacle.mdl",
   "models/dione/ef_tentacle.mdl"
}

new const skill_bite_sound[] = "dione/zbs_attack_bite.wav"
new const skill_posion_sound[] = "dione/zbs_attack_poison1.wav"
new const skill_swing_sound[] = "dione/boss_swing.wav"
new const skill_rolling_sound[] = "dione/zbs_rolling2.wav"
new const escape_sound[] = "dione/exit1.wav"

new Float:g_origin[3], ent_id, Float:g_angles[3], Float:g_v_angles[3]
new Float:g_poison_touch[33], g_rolling, g_can_do_skill, g_doing_skill
new g_reg, m_iBlood[2], g_can_bite

public plugin_init()
{
   register_plugin("[Dias's NPC] Dione", "1.0", "Dias")
   
   register_touch("poison", "*", "fw_poison_touch")
   register_touch("poison2", "*", "fw_poison2_touch")
   register_touch("tentacle2", "*", "fw_tentacle_touch")
   
   register_touch(DIONE_CLASSNAME, "*", "fw_dione_touch")
   register_think(DIONE_CLASSNAME, "fw_dione_think")
   
   register_clcmd("say /get_origin", "get_origin_first")
   register_clcmd("say /make", "dione_appear")
   
   register_clcmd("say /skill_swing", "dione_do_skill")
   register_clcmd("say /skill_poison", "dione_do_skill2")
   register_clcmd("say /skill_rolling", "dione_do_skill3")
   register_clcmd("say /skill_bite", "dione_do_skill4")
   register_clcmd("say /skill_tentacle", "dione_do_skill5")
}

public plugin_precache()
{
   dione_model_id = engfunc(EngFunc_PrecacheModel, dione_model)
   engfunc(EngFunc_PrecacheModel, skill_swing)
   
   for(new i = 0; i < sizeof(skill_posion); i++)
   {
      engfunc(EngFunc_PrecacheModel, skill_posion[i])
   }
   for(new i = 0; i < sizeof(skill_tentacle); i++)
   {
      engfunc(EngFunc_PrecacheModel, skill_tentacle[i])
   }   
   
   engfunc(EngFunc_PrecacheSound, skill_bite_sound)
   engfunc(EngFunc_PrecacheSound, skill_posion_sound)
   engfunc(EngFunc_PrecacheSound, skill_swing_sound)
   engfunc(EngFunc_PrecacheSound, skill_rolling_sound)
   engfunc(EngFunc_PrecacheSound, escape_sound)
   
   m_iBlood[0] = precache_model("sprites/blood.spr")
   m_iBlood[1] = precache_model("sprites/bloodspray.spr")   
}

public get_origin_first(id)
{
   pev(id, pev_origin, g_origin)
   pev(id, pev_angles, g_angles)
   pev(id, pev_v_angle, g_v_angles)
}

public dione_appear(id)
{
   new ent = create_entity("info_target")
   ent_id = ent
   
   entity_set_origin(ent, g_origin)
   entity_set_vector(ent, EV_VEC_angles, g_angles)
   entity_set_vector(ent, EV_VEC_v_angle, g_v_angles)
   
   entity_set_float(ent, EV_FL_takedamage, 1.0)
   entity_set_float(ent, EV_FL_health, 500.0)
   
   entity_set_string(ent,EV_SZ_classname, DIONE_CLASSNAME)
   entity_set_model(ent, dione_model)
   entity_set_int(ent, EV_INT_solid, SOLID_SLIDEBOX)
   entity_set_int(ent, EV_INT_movetype, MOVETYPE_STEP)
   
   new Float:maxs[3] = {50.0,50.0, 50.0}
   new Float:mins[3] = {-50.0, -50.0,-30.0}
   entity_set_size(ent, mins, maxs)
   entity_set_int(ent, EV_INT_modelindex, dione_model_id)
   
   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, 4)
   
   entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.01)

   if(!g_reg)
   {
      RegisterHamFromEntity(Ham_TakeDamage, ent, "fw_takedmg")
      RegisterHamFromEntity(Ham_Killed, ent, "fw_killed")
      g_reg = 1
   }   
   
   g_can_bite = 0
   g_rolling = 0
   g_can_do_skill = 1
   
   drop_to_floor(ent)
}

public dione_do_skill()
{
   g_doing_skill = 1
   dione_swing()
}

public dione_do_skill2()
{
   g_doing_skill = 1
   dione_poison()
}

public dione_do_skill3()
{
   g_doing_skill = 1
   dione_rolling()
}

public dione_do_skill4()
{
   g_can_bite = 1
}

public dione_do_skill5()
{
   g_doing_skill = 1
   dione_tentacle()
}

public fw_dione_think(ent)
{
   if(!is_valid_ent(ent))
      return FMRES_IGNORED
      
   if(!g_doing_skill && g_can_bite)
   {
      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 <= 300.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)
            
            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, 8)      
            
            emit_sound(victim, CHAN_BODY, skill_bite_sound, 1.0, ATTN_NORM, 0, PITCH_NORM)
            
            static arg[2]
            arg[0] = ent
            arg[1] = victim
            
            set_task(0.5, "dione_attack", _, arg, sizeof(arg))
            set_task(1.0, "dione_attack2", victim)
            entity_set_float(ent, EV_FL_nextthink, get_gametime() + 3.0)
         } else {
            
            if(pev(ent, pev_sequence) != 5)
            {
               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, 5)
            }
               
            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)
            
            entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.5)
         }
      } else {
         if(pev(ent, pev_sequence) != 4)
         {
            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, 4)
         }
            
         entity_set_float(ent, EV_FL_nextthink, get_gametime() + 1.0)
      }      
   } else {
      entity_set_float(ent, EV_FL_nextthink, get_gametime() + 2.0)
   }
   
   return FMRES_HANDLED
}

public dione_attack(arg[])
{
   static ent, victim
   ent = arg[0]
   victim = arg[1]
   
   ExecuteHam(Ham_TakeDamage, victim, 0, victim, random_float(15.0, 30.0), DMG_BLAST)
   
   set_task(1.5, "stop_attack", ent)
}

public dione_attack2(victim)
{
   ExecuteHam(Ham_TakeDamage, victim, 0, victim, random_float(15.0, 30.0), DMG_BLAST)
}

public stop_attack(ent)
{
   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, 4)   
}

public fw_takedmg(victim, inflictor, attacker, Float:damage, damagebits)
{
   static Float:Origin[3]
   pev(victim, pev_origin, Origin)
   
   create_blood(Origin)   
}

public fw_killed(ent2, attacker)
{
   static ent
   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, "temp_zb")
   entity_set_model(ent, dione_model)
   
   new Float:maxs[3] = {50.0,50.0, 50.0}
   new Float:mins[3] = {-50.0, -50.0,-30.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, 16)      
   
   set_task(5.0, "set_dione_run", ent)
   set_task(10.0, "remove_temp_zb", ent)
   
   emit_sound(ent, CHAN_BODY, escape_sound, 1.0, ATTN_NORM, 0, PITCH_NORM)
   
   drop_to_floor(ent)
}

public set_dione_run(ent)
{
   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, 17)
}

public remove_temp_zb(ent)
{
   remove_entity(ent)
}

// ====================== TENTACLE SKILL ==============================
public dione_tentacle()
{
   if(!g_can_do_skill)
      return PLUGIN_HANDLED
   
   static ent
   ent = ent_id
   
   g_doing_skill = 1
   
   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, 9)   
   
   set_task(2.5, "make_hole_tentacle", ent)
   
   return PLUGIN_CONTINUE
}

public make_hole_tentacle(ent)
{
   static Float:Origin[3], Float:beam_origin[30][3], Float:Angles[3]
   
   entity_get_vector(ent, EV_VEC_origin, Origin)
   entity_get_vector(ent, EV_VEC_v_angle, Angles)

   // 1st
   beam_origin[0][0] = Origin[0]
   beam_origin[0][1] = Origin[1] + 100.0
   beam_origin[0][2] = Origin[2]
   
   // 2nd
   beam_origin[1][0] = Origin[0]
   beam_origin[1][1] = Origin[1] + 200.0
   beam_origin[1][2] = Origin[2]

   // 3rd
   beam_origin[2][0] = Origin[0]
   beam_origin[2][1] = Origin[1] + 300.0
   beam_origin[2][2] = Origin[2]

   // 4th
   beam_origin[3][0] = Origin[0]
   beam_origin[3][1] = Origin[1] + 400.0
   beam_origin[3][2] = Origin[2]

   // 5th
   beam_origin[4][0] = Origin[0]
   beam_origin[4][1] = Origin[1] + 500.0
   beam_origin[4][2] = Origin[2]

   // 6th
   beam_origin[5][0] = Origin[0] + 100.0
   beam_origin[5][1] = Origin[1] + 100.0
   beam_origin[5][2] = Origin[2]

   // 7th
   beam_origin[6][0] = Origin[0] + 200.0
   beam_origin[6][1] = Origin[1] + 200.0
   beam_origin[6][2] = Origin[2]

   // 8th
   beam_origin[7][0] = Origin[0] + 300.0
   beam_origin[7][1] = Origin[1] + 300.0
   beam_origin[7][2] = Origin[2]
   
   // 9th
   beam_origin[8][0] = Origin[0] + 400.0
   beam_origin[8][1] = Origin[1] + 400.0
   beam_origin[8][2] = Origin[2]
   
   // 10th
   beam_origin[9][0] = Origin[0] + 500.0
   beam_origin[9][1] = Origin[1] + 500.0
   beam_origin[9][2] = Origin[2]
   
   // 11th
   beam_origin[10][0] = Origin[0] - 100.0
   beam_origin[10][1] = Origin[1] + 100.0
   beam_origin[10][2] = Origin[2]

   // 12th
   beam_origin[11][0] = Origin[0] - 200.0
   beam_origin[11][1] = Origin[1] + 200.0
   beam_origin[11][2] = Origin[2]

   // 13th
   beam_origin[12][0] = Origin[0] - 300.0
   beam_origin[12][1] = Origin[1] + 300.0
   beam_origin[12][2] = Origin[2]

   // 14th
   beam_origin[13][0] = Origin[0] - 400.0
   beam_origin[13][1] = Origin[1] + 400.0
   beam_origin[13][2] = Origin[2]
   
   // 15th
   beam_origin[14][0] = Origin[0] - 500.0
   beam_origin[14][1] = Origin[1] + 500.0
   beam_origin[14][2] = Origin[2]
   
   // II
   
   // 1st
   beam_origin[15][0] = Origin[0]
   beam_origin[15][1] = Origin[1] - 100.0
   beam_origin[15][2] = Origin[2]
   
   // 2nd
   beam_origin[16][0] = Origin[0]
   beam_origin[16][1] = Origin[1] - 200.0
   beam_origin[16][2] = Origin[2]

   // 3rd
   beam_origin[17][0] = Origin[0]
   beam_origin[17][1] = Origin[1] - 300.0
   beam_origin[17][2] = Origin[2]

   // 4th
   beam_origin[18][0] = Origin[0]
   beam_origin[18][1] = Origin[1] - 400.0
   beam_origin[18][2] = Origin[2]

   // 5th
   beam_origin[19][0] = Origin[0]
   beam_origin[19][1] = Origin[1] - 500.0
   beam_origin[19][2] = Origin[2]

   // 6th
   beam_origin[20][0] = Origin[0] - 100.0
   beam_origin[20][1] = Origin[1] - 100.0
   beam_origin[20][2] = Origin[2]

   // 7th
   beam_origin[21][0] = Origin[0] - 200.0
   beam_origin[21][1] = Origin[1] - 200.0
   beam_origin[21][2] = Origin[2]

   // 8th
   beam_origin[22][0] = Origin[0] - 300.0
   beam_origin[22][1] = Origin[1] - 300.0
   beam_origin[22][2] = Origin[2]
   
   // 9th
   beam_origin[23][0] = Origin[0] - 400.0
   beam_origin[23][1] = Origin[1] - 400.0
   beam_origin[23][2] = Origin[2]
   
   // 10th
   beam_origin[24][0] = Origin[0] - 500.0
   beam_origin[24][1] = Origin[1] - 500.0
   beam_origin[24][2] = Origin[2]
   
   // 11th
   beam_origin[25][0] = Origin[0] + 100.0
   beam_origin[25][1] = Origin[1] - 100.0
   beam_origin[25][2] = Origin[2]

   // 12th
   beam_origin[26][0] = Origin[0] + 200.0
   beam_origin[26][1] = Origin[1] - 200.0
   beam_origin[26][2] = Origin[2]

   // 13th
   beam_origin[27][0] = Origin[0] + 300.0
   beam_origin[27][1] = Origin[1] - 300.0
   beam_origin[27][2] = Origin[2]

   // 14th
   beam_origin[28][0] = Origin[0] + 400.0
   beam_origin[28][1] = Origin[1] - 400.0
   beam_origin[28][2] = Origin[2]
   
   // 15th
   beam_origin[29][0] = Origin[0] + 500.0
   beam_origin[29][1] = Origin[1] - 500.0
   beam_origin[29][2] = Origin[2]
   
   for(new i; i < 30; i++)
   {
      make_tentacle(beam_origin[i], Angles)
   }      
   
   set_task(8.0, "set_default_anim", ent)
}

public make_tentacle(Float:Origin[3], Float:Angles[3])
{
   new ent = create_entity("info_target")

   Origin[2] += 5.0
   
   entity_set_origin(ent, Origin)
   entity_set_vector(ent, EV_VEC_v_angle, Angles)
   
   entity_set_string(ent,EV_SZ_classname, "tentacle")
   entity_set_model(ent, skill_tentacle[0])
   entity_set_int(ent, EV_INT_solid, SOLID_SLIDEBOX)
   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)      
   
   set_task(4.0, "tentacle_change", ent)
   
   //drop_to_floor(ent)
}

public tentacle_change(ent)
{
   entity_set_model(ent, skill_tentacle[1])
   
   entity_set_string(ent,EV_SZ_classname, "tentacle2")
   
   new Float:maxs[3] = {26.0,26.0,36.0}
   new Float:mins[3] = {-26.0,-26.0,-36.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, kRenderNormal)
   set_pev(ent, pev_renderamt, 255.0)      
   
   set_task(1.0, "tentacle_change2", ent)
}

public tentacle_change2(ent)
{
   entity_set_model(ent, skill_tentacle[2])
   entity_set_string(ent,EV_SZ_classname, "tentacle")
   
   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)      
   
   set_task(3.0, "remove_tentacle", ent)
}

public remove_tentacle(ent)
{
   remove_entity(ent)
   
   g_doing_skill = 0
}

public set_default_anim(ent)
{
   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, 4)      
}

public fw_tentacle_touch(tentacle, touch)
{
   if(is_user_alive(touch))
   {
      static Float:CurTime
      CurTime = get_gametime()
      
      if(CurTime - 0.1 > g_poison_touch[touch])
      {
         static ent
         ent = find_ent_by_owner(-1, "weapon_knife", touch)
         ExecuteHamB(Ham_TakeDamage, touch, ent, touch, 5.0, DMG_BLAST)   
         
         g_poison_touch[touch] = CurTime
      }
   }   
}

// ====================== ROLLING SKILL ==============================
public dione_rolling()
{
   if(!g_can_do_skill)
      return PLUGIN_HANDLED
   
   static ent
   ent = ent_id
   
   g_doing_skill = 1
   
   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, 13)
   
   set_task(0.75, "do_rolling", ent)
   set_task(2.0, "stop_rolling", ent)
   
   return PLUGIN_CONTINUE
}

public do_rolling(ent)
{
   g_rolling = 1
   
   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, 14)
   
   emit_sound(ent, CHAN_BODY, skill_rolling_sound, 1.0, ATTN_NORM, 0, PITCH_NORM)
   
   static Float:Velocity[3]
   velocity_by_aim(ent, 1250, Velocity)
   
   entity_set_vector(ent, EV_VEC_velocity, Velocity)
   
   for(new i = 1; i < get_maxplayers(); i++)
   {
      if(is_user_alive(i) && entity_range(i, ent) <= 500.0)
      {
         message_begin(MSG_ONE, get_user_msgid("ScreenShake"),{0,0,0}, i)
         write_short(1<<14)
         write_short(1<<13)
         write_short(1<<13)
         message_end()
      }
   }
   
   drop_to_floor(ent)
}

public stop_rolling(ent)
{
   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, 15)
   
   static Float:Velocity[3]
   velocity_by_aim(ent, 0, Velocity)
   
   entity_set_vector(ent, EV_VEC_velocity, Velocity)   
   drop_to_floor(ent)
   
   g_rolling = 0
   
   set_task(1.0, "restart_rolling", ent)
}

public restart_rolling(ent)
{
   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, 4)   

   g_doing_skill = 0
   
   drop_to_floor(ent)
}

public fw_dione_touch(dione, touch)
{
   if(!g_rolling)
      return FMRES_IGNORED
      
   if(is_user_alive(touch))
   {
      user_kill(touch)
   }
   
   return FMRES_HANDLED
}

// ====================== SWING SKILL ==============================
public dione_swing()
{
   if(!g_can_do_skill)
      return PLUGIN_HANDLED   
   
   static ent
   ent = ent_id
   
   g_doing_skill = 1
   
   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, 7)
   
   emit_sound(ent, CHAN_BODY, skill_swing_sound, 1.0, ATTN_NORM, 0, PITCH_NORM)
   
   set_task(1.0, "attack_swing", ent)
   set_task(1.5, "remove_swing_model", ent)
   set_task(2.0, "stop_swing", ent)

   return PLUGIN_CONTINUE
}

public attack_swing(dione)
{
   new ent = create_entity("info_target")

   static Float:Origin[3]
   entity_get_vector(dione, EV_VEC_origin, Origin)
   
   Origin[2] -= 30.0
   entity_set_origin(ent, Origin)
   
   entity_set_string(ent,EV_SZ_classname, "swing")
   entity_set_model(ent, skill_swing)
   entity_set_int(ent, EV_INT_solid, SOLID_SLIDEBOX)
   entity_set_int(ent, EV_INT_movetype, MOVETYPE_NONE)
   
   new Float:maxs[3] = {16.0,16.0,36.0}
   new Float:mins[3] = {-16.0,-16.0,-36.0}
   entity_set_size(ent, mins, maxs)
   
   set_pev(ent, pev_rendermode, kRenderTransAdd)
   set_pev(ent, pev_renderamt, 255.0)   
   
   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)   
   
   for(new i = 1; i < get_maxplayers(); i++)
   {
      if(is_user_alive(i) && entity_range(i, dione) <= 300.0)
      {
         message_begin(MSG_ONE, get_user_msgid("ScreenShake"),{0,0,0}, i)
         write_short(1<<14)
         write_short(1<<13)
         write_short(1<<13)
         message_end()
         
         ExecuteHamB(Ham_TakeDamage, i, 0, i, 15.0, DMG_BLAST)   
      
         new wpn, wpnname[32]
         wpn = get_user_weapon(i)
         if(get_weaponname(wpn, wpnname, charsmax(wpnname)))
         {
            engclient_cmd(i, "drop", wpnname)
         }
      }
   }
   
   drop_to_floor(ent)
}

public remove_swing_model(ent)
{
   static ent2
   ent2 = find_ent_by_class(-1, "swing")
   
   remove_entity(ent2)   
}

public stop_swing(ent)
{
   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, 4)   
   
   g_doing_skill = 0
}

// ====================== POISON SKILL ==============================
public dione_poison()
{
   if(!g_can_do_skill)
      return PLUGIN_HANDLED   
   
   static ent
   ent = ent_id
   
   g_doing_skill = 1
   
   emit_sound(ent, CHAN_BODY, skill_posion_sound, 1.0, ATTN_NORM, 0, PITCH_NORM)
   
   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, random_num(11, 12))
   
   set_task(3.5, "attack_poison", ent)
   
   return PLUGIN_CONTINUE
}

public attack_poison(dione)
{
   static Float:Velocity[3], Float:Origin[3], Float:Angles[3], Float:V_Angles[3]

   engfunc(EngFunc_GetAttachment, dione, 0, Origin, Angles)
   
   //entity_get_vector(dione, EV_VEC_origin, Origin)
   entity_get_vector(dione, EV_VEC_angles, Angles)
   entity_get_vector(dione, EV_VEC_v_angle, V_Angles)
   
   new ent = create_entity("info_target")

   entity_set_origin(ent, Origin)
   
   entity_set_vector(ent, EV_VEC_angles, Angles)
   entity_set_vector(ent, EV_VEC_v_angle, V_Angles)
   
   entity_set_string(ent,EV_SZ_classname, "poison")
   entity_set_model(ent, skill_posion[0])
   entity_set_int(ent, EV_INT_solid, SOLID_SLIDEBOX)
   entity_set_int(ent, EV_INT_movetype, MOVETYPE_FLY)
   
   new Float:maxs[3] = {16.0,16.0,36.0}
   new Float:mins[3] = {-16.0,-16.0,-36.0}
   entity_set_size(ent, mins, maxs)
   
   velocity_by_aim(dione, 1500, Velocity)
   entity_set_vector(ent, EV_VEC_velocity, Velocity)
   
   entity_set_float(dione, EV_FL_animtime, get_gametime())
   entity_set_float(dione, EV_FL_framerate, 1.0)   
   entity_set_int(dione, EV_INT_sequence, 4)   
}

public fw_poison_touch(poison, touch)
{
   entity_set_int(poison, EV_INT_movetype, MOVETYPE_NONE)
   
   static Float:Origin[3], Float:beam_origin[8][3]
   entity_get_vector(poison, EV_VEC_origin, Origin)

   // 1st
   beam_origin[0][0] = Origin[0] + 100.0
   beam_origin[0][1] = Origin[1] + 50.0
   beam_origin[0][2] = Origin[2]
   
   // 2nd
   beam_origin[1][0] = Origin[0] + 100.0
   beam_origin[1][1] = Origin[1] - 50.0
   beam_origin[1][2] = Origin[2]

   // 3rd
   beam_origin[2][0] = Origin[0] - 100.0
   beam_origin[2][1] = Origin[1] - 50.0
   beam_origin[2][2] = Origin[2]

   // 4th
   beam_origin[3][0] = Origin[0] - 100.0
   beam_origin[3][1] = Origin[1] + 50.0
   beam_origin[3][2] = Origin[2]

   // 5th
   beam_origin[4][0] = Origin[0] + 50.0
   beam_origin[4][1] = Origin[1] + 100.0
   beam_origin[4][2] = Origin[2]

   // 6th
   beam_origin[5][0] = Origin[0] + 50.0
   beam_origin[5][1] = Origin[1] - 100.0
   beam_origin[5][2] = Origin[2]

   // 7th
   beam_origin[6][0] = Origin[0] - 50.0
   beam_origin[6][1] = Origin[1] - 100.0
   beam_origin[6][2] = Origin[2]

   // 8th
   beam_origin[7][0] = Origin[0] - 50.0
   beam_origin[7][1] = Origin[1] + 100.0
   beam_origin[7][2] = Origin[2]
   
   Origin[2] -= 35.0
   make_acid(Origin)
   
   for(new i; i < 8; i++)
   {
      make_acid(beam_origin[i])
   }   
   
   new Float:remove_origin[3] = {999999.9,999999.9,999999.0}   
   entity_set_origin(poison, remove_origin)   
}

public fw_poison2_touch(poison, touch)
{
   if(is_user_alive(touch))
   {
      static Float:CurTime
      CurTime = get_gametime()
      
      if(CurTime - 1.0 > g_poison_touch[touch])
      {
         static ent
         ent = find_ent_by_owner(-1, "weapon_knife", touch)
         ExecuteHamB(Ham_TakeDamage, touch, ent, touch, 10.0, DMG_BLAST)   
         
         g_poison_touch[touch] = CurTime
      }
   }
}

public remove_poison(ent)
{
   remove_entity(ent)
   
   g_doing_skill = 0
}

public make_acid(Float:Origin[3])
{
   new ent = create_entity("info_target")
   
   entity_set_origin(ent, Origin)

   set_pev(ent, pev_rendermode, kRenderTransAdd)
   set_pev(ent, pev_renderamt, 150.0)
   
   entity_set_string(ent,EV_SZ_classname, "poison2")
   entity_set_model(ent, skill_posion[1])
   entity_set_int(ent, EV_INT_solid, SOLID_BBOX)
   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(5.0, "remove_poison", ent)
}

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)
{
   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 / 250.0

      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 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()
}


ja és ez a leírás járt hozzá csak én nem vagyok valami nagy angolos :D
    First of all. Type: /get_origin -> To get your current origin so the boss will appear in that origin
    Type: /make -> Make the boss in the origin you got

    List Skill:
    - Swing | Type: /skill_swing
    - Spray Poison | Type: /skill_poison
    - Tentacle | Type: /skill_tentacle
    - Rolling | Type: /skill_rolling
    - Auto Bite | Type: /skill_bite

    ~ Dias


A hozzászólást 1 alkalommal szerkesztették, utoljára rericsi8 2012.02.04. 17:03-kor.

Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Dione
HozzászólásElküldve:2012.02.04. 17:03 
Offline
Developer
Avatar

Csatlakozott:2011.06.01. 21:11
Hozzászólások:7966
Megköszönt másnak: 295 alkalommal
Megköszönték neki: 537 alkalommal
Kód:
  1.    register_clcmd("say /skill_swing", "dione_do_skill")

  2.    register_clcmd("say /skill_poison", "dione_do_skill2")

  3.    register_clcmd("say /skill_rolling", "dione_do_skill3")

  4.    register_clcmd("say /skill_bite", "dione_do_skill4")

  5.    register_clcmd("say /skill_tentacle", "dione_do_skill5")


Ebbe nincs benne hogy magát irányítsa

_________________
http://www.easyrankup.eu


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Dione
HozzászólásElküldve:2012.02.04. 17:05 
Offline
Őskövület
Avatar

Csatlakozott:2011.09.26. 20:33
Hozzászólások:2105
Megköszönt másnak: 28 alkalommal
Megköszönték neki: 33 alkalommal
és ez?
Kód:
register_clcmd("say /get_origin", "get_origin_first")
register_clcmd("say /make", "dione_appear")


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Dione
HozzászólásElküldve:2012.02.04. 17:06 
Offline
Tiszteletbeli

Csatlakozott:2010.02.04. 19:12
Hozzászólások:3528
Megköszönt másnak: 26 alkalommal
Megköszönték neki: 180 alkalommal
rericsi8 írta:
és ez?
Kód:
register_clcmd("say /get_origin", "get_origin_first")
register_clcmd("say /make", "dione_appear")

1. a jelenlegi helyzeted(ide fogja letenni a bosst)
2. szörny készítése

_________________
http://www.ebateam.eu/


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Dione
HozzászólásElküldve:2012.02.04. 17:07 
Offline
Tiszteletbeli
Avatar

Csatlakozott:2011.09.18. 13:01
Hozzászólások:4274
Megköszönt másnak: 55 alkalommal
Megköszönték neki: 515 alkalommal
Ezt te tudod a mapokra tenni /make parancsal :D
Majd a skilled is te aktivalod parancsal

_________________
Idk. Csak ugy funbooo.
Kép


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése: Rendezés 
Új téma nyitása Hozzászólás a témához  [5 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: Google [Bot] valamint 25 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole