hlmod.hu

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



Jelenlévő felhasználók

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

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: nincs regisztrált felhasználó 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  [ 9 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: Átírás
HozzászólásElküldve: 2011.11.27. 19:18 
Offline
Jómunkásember

Csatlakozott: 2011.07.14. 11:12
Hozzászólások: 320
Megköszönt másnak: 1 alkalommal
Hy bele kéne írni ebbe a plugin-ba, mert még mindíg nagyon buta vagyok ilyesmihez azt hogy 1 cvar-ral lehessen állítani. hogy csak admin használhassa kick joghoz kötve.

Előre is köstönöm.

Az .sma :

Kód:
#include <amxmodx>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <xs>

#define PLUGIN   "Head Hunter SmokeGrenade"
#define AUTHOR   "OT"
#define VERSION   "1.5"

new const DMG_CS_BULLETS_KNIFE   =      (DMG_NEVERGIB | DMG_BULLET)

#define    OFFSET_LAST_HIT_GROUP      75

#define    EV_INT_colisions         EV_INT_iuser2
#define      EV_ENT_target            EV_ENT_euser2
#define      EV_ENT_lasttarget         EV_ENT_euser3
#define      EV_FL_removetime         EV_FL_dmgtime

#define      IMPACT_TIMES            get_pcvar_num(pcv_impact_times)
#define    DISTANCE_SENSE            get_pcvar_float(pcv_dist_sense_player)
#define      DISTANCE_CUT_HEAD         get_pcvar_float(pcv_dist_cut_head)
#define    DISTANCE_CUT_OWNER_HEAD      get_pcvar_float(pcv_dist_owner_head)
#define      EXTRA_VELOCITY            get_pcvar_float(pcv_velocity_follow)
#define      EXTRA_VELOCITY_Z         get_pcvar_float(pcv_velocity_follow_z)

#define    VELOCITY_ADD            get_pcvar_float(pcv_velocity_add)
#define    VELOCITY_BORDER            get_pcvar_float(pcv_velocity_border)
#define      VELOCITY_AIMFORHEAD         get_pcvar_float(pcv_velocity_aimfhead)

#define      RETHINK_BLACK_OUT_TIME      0.02
#define      REMOVE_TIME               get_pcvar_float(pcv_removetime)

#define    RGB_R_COLOR             get_pcvar_num(pcv_color_red)
#define    RGB_G_COLOR             get_pcvar_num(pcv_color_green)
#define    RGB_B_COLOR             get_pcvar_num(pcv_color_blue)

new g_maxplayers

new pcv_velocity_follow
new pcv_velocity_follow_z
new pcv_velocity_border
new pcv_velocity_add
new pcv_velocity_aimfhead
new pcv_dist_sense_player
new pcv_dist_owner_head
new pcv_dist_cut_head
new pcv_impact_times
new pcv_color_red
new pcv_color_green
new pcv_color_blue
new pcv_effects
new pcv_ignore_friendly
new pcv_ignore_owner
new pcv_damage
new pcv_removetime

new spr_nadebits
new   spr_blood_drop
new   spr_blood_spray
new spr_trail
new spr_explosion

new const nade_model[] =
{
   //"w_hegrenade.mdl"
   //"w_flashbang.mdl"
   "w_smokegrenade.mdl"
}

public plugin_precache()
{
   spr_nadebits  = precache_model("models/chromegibs.mdl")
   spr_blood_drop = precache_model("sprites/blood.spr")
   spr_blood_spray = precache_model("sprites/bloodspray.spr")
   spr_trail = precache_model("sprites/laserbeam.spr")
   spr_explosion = precache_model("sprites/shockwave.spr")
}

public plugin_init()
{
   register_plugin(PLUGIN, VERSION, AUTHOR)
   register_cvar("sm_headhunt_vs", VERSION, FCVAR_SPONLY | FCVAR_SERVER)
   
   pcv_dist_cut_head      = register_cvar("smhdh_distance_head_cut", "100.0")
   pcv_dist_sense_player = register_cvar("smhdh_distance_sense", "400.0")
   pcv_dist_owner_head   = register_cvar("smhdh_distance_owner_head_cut", "10.0")
   pcv_impact_times     = register_cvar("smhdh_impact_times", "8")
   
   pcv_color_red        = register_cvar("smhdh_color_red", "0")
   pcv_color_green        = register_cvar("smhdh_color_green", "214")
   pcv_color_blue        = register_cvar("smhdh_color_blue", "198")

   pcv_velocity_follow     = register_cvar("smhdh_velocity_correction", "150.0")
   pcv_velocity_follow_z = register_cvar("smhdh_height_correction", "25.0")
   pcv_velocity_add     = register_cvar("smhdh_velocity_add", "50.0")
   pcv_velocity_border   = register_cvar("smhdh_velocity_border", "200.0")
   pcv_velocity_aimfhead = register_cvar("smhdh_velocity_aim_for_head", "800.0")
   
   pcv_damage           = register_cvar("smhdh_hit_damage", "70.0")
   pcv_removetime        = register_cvar("smhdh_remove_time", "60.0")
   
   pcv_ignore_friendly   = register_cvar("smhdh_ignore_friendly", "1")
   pcv_ignore_owner     = register_cvar("smhdh_ignore_owner", "1")
   pcv_effects           = register_cvar("smhdh_effects", "1")
   
   RegisterHam(Ham_Think, "grenade", "fw_grenade_think")
   RegisterHam(Ham_Touch, "grenade", "fw_touch")
   
   register_forward(FM_SetModel, "fw_setmodel", 1)
   
   g_maxplayers = get_maxplayers()
}

public fw_setmodel(ent, model[])
{
   if (!pev_valid(ent))
   {
      return FMRES_IGNORED
   }
   
   // Not yet thrown
   if (entity_get_float(ent, EV_FL_gravity) == 0.0)
   {
      return FMRES_IGNORED
   }
   
   if (contain(model, nade_model) == -1)
      return FMRES_IGNORED
   
   entity_set_int(ent, EV_INT_movetype, MOVETYPE_BOUNCEMISSILE)
   entity_set_int(ent, EV_INT_colisions, 0)
   entity_set_edict(ent, EV_ENT_target, 0)
   entity_set_size(ent, Float:{-2.0,-4.0,-2.0}, Float:{2.0, 4.0, 2.0})
   
   new color[3]
   color[0] = RGB_R_COLOR
   color[1] = RGB_G_COLOR
   color[2] = RGB_B_COLOR
   
   set_rendering(ent, kRenderFxGlowShell, RGB_R_COLOR, RGB_G_COLOR, RGB_B_COLOR, kRenderTransTexture, 16)
   set_beamfollow(ent, 20, 10, color, 50)
   
   entity_set_float(ent, EV_FL_removetime, get_gametime() + REMOVE_TIME)
   
   return FMRES_IGNORED
}

public fw_grenade_think(ent)
{
   if (entity_get_int(ent, EV_INT_movetype) != MOVETYPE_BOUNCEMISSILE)
      return HAM_IGNORED
   
   if (entity_get_float(ent, EV_FL_removetime) > get_gametime() + REMOVE_TIME)
   {
      entity_set_float(ent, EV_FL_removetime, get_gametime() + REMOVE_TIME)
   }
   
   new owner = pev(ent, pev_owner)
   new Float:origin[3]
   entity_get_vector(ent, EV_VEC_origin, origin)
   
   if (entity_get_float(ent, EV_FL_removetime) < get_gametime() || !is_user_connected(owner) || is_user_connecting(owner))
   {
      clear_beamfollow(ent)
      entity_set_int(ent, EV_INT_flags, FL_KILLME)
      metal_gibs(origin)
      
      return HAM_SUPERCEDE
   }
   
   new team = _:cs_get_user_team(owner)
   
   new target, Float:velocity[3], oldtarget
   target = entity_get_edict(ent, EV_ENT_target)
   oldtarget = entity_get_edict(ent, EV_ENT_lasttarget)
   
   if (target == owner && get_pcvar_num(pcv_ignore_owner))
   {
      target = 0
      entity_set_edict(ent, EV_ENT_target, 0)
   }
   
   if (target == 0)
   {
      entity_get_vector(ent, EV_VEC_velocity, velocity)
      
      if (xs_vec_len(velocity) < VELOCITY_BORDER)
      {
         xs_vec_mul_scalar(velocity, xs_vec_len(velocity) + VELOCITY_ADD, velocity)
         entity_set_vector(ent, EV_VEC_velocity, velocity)
      }
      
      new i = -1, Float:distance = DISTANCE_SENSE, Float:junk[3], pcvar = get_pcvar_num(pcv_ignore_friendly), targetteam
      
      while ((i = find_ent_in_sphere(i, origin, distance)))
      {
         if (i > g_maxplayers)
            break
         
         if (i == owner)
            continue
         
         if (i == oldtarget)
            continue
         
         if (!is_user_connected(i) || is_user_connecting(i))
            continue
         
         if (!is_user_alive(i))
            continue
         
         targetteam = _:cs_get_user_team(i)
         
         if ((team != targetteam && targetteam != _:CS_TEAM_SPECTATOR && targetteam != _:CS_TEAM_UNASSIGNED) || (team == targetteam && !pcvar))
         {
            static Float:o[3]
            entity_get_vector(i, EV_VEC_origin, o)
            entity_get_vector(i, EV_VEC_view_ofs, junk)
            xs_vec_add(o, junk, o)
            static Float:new_distance
            new_distance = get_distance_f(o, origin)
            
            if (new_distance < distance)
            {
               distance = new_distance
               entity_set_edict(ent, EV_ENT_target, i)
            }
         }
      }
      
      if (!get_pcvar_num(pcv_ignore_owner) && entity_range(owner, ent) < distance && entity_get_int(ent, EV_INT_colisions) > 0)
      {
         entity_set_edict(ent, EV_ENT_target, owner)
      }
      
      entity_set_float(ent, EV_FL_nextthink, get_gametime() + RETHINK_BLACK_OUT_TIME)
      
      return HAM_SUPERCEDE
   }
   else if (!is_user_alive(target))
   {
      entity_get_vector(ent, EV_VEC_velocity, velocity)
      
      if (xs_vec_len(velocity) < VELOCITY_BORDER)
      {
         xs_vec_mul_scalar(velocity, xs_vec_len(velocity) + VELOCITY_ADD, velocity)
         entity_set_vector(ent, EV_VEC_velocity, velocity)
      }
      
      entity_set_edict(ent, EV_ENT_target, 0)
      entity_set_float(ent, EV_FL_nextthink, get_gametime() + RETHINK_BLACK_OUT_TIME)
      return HAM_SUPERCEDE
   }
   else
   {
      new Float:aim[3], Float:targetorigin[3], Float:velocity_normal[3], Float:aim_normal[3]
      
      entity_get_vector(target, EV_VEC_origin, targetorigin)
      
      xs_vec_add(targetorigin, Float:{0.0, 0.0, 30.0}, targetorigin)
      
      if (!is_point_visible(origin, targetorigin, ent))
      {
         entity_set_edict(ent, EV_ENT_target, 0)
         entity_set_float(ent, EV_FL_nextthink, get_gametime() + RETHINK_BLACK_OUT_TIME)
         return HAM_SUPERCEDE
      }
      
      xs_vec_sub(targetorigin, origin, aim)
      
      if (xs_vec_len(aim) <= DISTANCE_CUT_HEAD)
      {
         xs_vec_mul_scalar(aim, VELOCITY_AIMFORHEAD/xs_vec_len(aim), aim)
         
         entity_set_vector(ent, EV_VEC_velocity, aim)
         
         if (target == owner && !get_pcvar_num(pcv_ignore_owner) && get_distance_f(targetorigin, origin) <= DISTANCE_CUT_OWNER_HEAD)
         {
            new Float:torigin[3]
            entity_get_vector(owner, EV_VEC_origin, torigin)
            blood(torigin)
            set_pdata_int(owner, OFFSET_LAST_HIT_GROUP, HIT_HEAD, 5)
            ExecuteHamB(Ham_TakeDamage, owner, ent, owner, get_pcvar_float(pcv_damage), DMG_CS_BULLETS_KNIFE)
            entity_set_edict(ent, EV_ENT_target, 0)
            entity_set_edict(ent, EV_ENT_lasttarget, owner)
            
            new color[3] , impacts
            color[0] = RGB_R_COLOR
            color[1] = RGB_G_COLOR
            color[2] = RGB_B_COLOR
            
            create_blast(origin, color)
            
            impacts = entity_get_int(ent, EV_INT_colisions)
            
            impacts++
            
            entity_set_int(ent, EV_INT_colisions, impacts)
            
            if (impacts >= IMPACT_TIMES)
            {
               clear_beamfollow(ent)
               entity_set_int(ent, EV_INT_flags, FL_KILLME)
               metal_gibs(origin)
            }
         }
         
         entity_set_float(ent, EV_FL_nextthink, get_gametime() + RETHINK_BLACK_OUT_TIME)
         return HAM_SUPERCEDE
      }
      
      entity_get_vector(ent, EV_VEC_velocity, velocity)
      
      xs_vec_sub(targetorigin, origin, aim)
      
      xs_vec_normalize(velocity, velocity_normal)
      xs_vec_normalize(aim, aim_normal)
      
      if (xs_vec_len(velocity) < VELOCITY_BORDER)
      {
         xs_vec_mul_scalar(velocity, xs_vec_len(velocity) + VELOCITY_ADD, velocity)
      }
      
      if (xs_vec_dot(aim_normal, velocity_normal) < 0)
      {
         entity_set_edict(ent, EV_ENT_target, 0)
         entity_set_float(ent, EV_FL_nextthink, get_gametime() + RETHINK_BLACK_OUT_TIME)
         entity_set_vector(ent, EV_VEC_velocity, velocity)
         return HAM_SUPERCEDE
      }
      
      if (velocity_normal[0] < aim_normal[0])
      {
         velocity[0] += EXTRA_VELOCITY
      }
      else if (velocity_normal[0] > aim_normal[0])
      {
         velocity[0] -= EXTRA_VELOCITY
      }
      
      if (velocity_normal[1] < aim_normal[1])
      {
         velocity[1] += EXTRA_VELOCITY
      }
      else if (velocity_normal[1] > aim_normal[1])
      {
         velocity[1] -= EXTRA_VELOCITY
      }
      
      if (velocity_normal[2] < aim_normal[2])
      {
         velocity[2] += EXTRA_VELOCITY_Z
      }
      else if (velocity_normal[2] > aim_normal[2])
      {
         velocity[2] -= EXTRA_VELOCITY_Z
      }
      
      velocity[2] += 5.0
      
      entity_set_vector(ent, EV_VEC_velocity, velocity)
   }
   
   entity_set_float(ent, EV_FL_nextthink, get_gametime() + RETHINK_BLACK_OUT_TIME)
   return HAM_SUPERCEDE
}

public fw_touch(toucher, touched)
{
   if (entity_get_int(toucher, EV_INT_movetype) != MOVETYPE_BOUNCEMISSILE)
      return HAM_IGNORED
   
   new Float:origin[3]
   new impacts = entity_get_int(toucher, EV_INT_colisions)
   new owner = entity_get_edict(toucher, EV_ENT_owner)
   entity_get_vector(toucher, EV_VEC_origin, origin)
   
   if (1 <= touched <= g_maxplayers)
   {
      new CsTeams:team[2]
      team[0] = cs_get_user_team(touched)
      team[1] = cs_get_user_team(owner)
      
      if ((team[0] != team[1] && team[0] != CS_TEAM_SPECTATOR && team[0] != CS_TEAM_UNASSIGNED)|| (team[0] == team[1] && !get_pcvar_num(pcv_ignore_friendly)))
      {
         new Float:origin[3]
         entity_get_vector(touched, EV_VEC_origin, origin)
         blood(origin)
         set_pdata_int(touched, OFFSET_LAST_HIT_GROUP, HIT_HEAD, 5)
         ExecuteHamB(Ham_TakeDamage, touched, toucher, owner, get_pcvar_float(pcv_damage), DMG_CS_BULLETS_KNIFE)
         entity_set_edict(toucher, EV_ENT_target, 0)
         entity_set_edict(toucher, EV_ENT_lasttarget, touched)
         
         new color[3]
         color[0] = RGB_R_COLOR
         color[1] = RGB_G_COLOR
         color[2] = RGB_B_COLOR
         
         create_blast(origin, color)
      }
   }
   
   if (touched > g_maxplayers || touched == 0)
   {
      msg_ricochet(origin)
   }
   
   impacts++
   
   entity_set_int(toucher, EV_INT_colisions, impacts)
   
   if (impacts >= IMPACT_TIMES)
   {
      clear_beamfollow(toucher)
      entity_set_int(toucher, EV_INT_flags, FL_KILLME)
      metal_gibs(origin)
   }
   
   return HAM_IGNORED
}

bool:is_point_visible(Float:start[3], Float:end[3], ignore_ent)
{
   static ptr
   ptr = create_tr2()
   
   engfunc(EngFunc_TraceLine, start, end, IGNORE_MONSTERS, ignore_ent, ptr)
   
   static Float:dist
   get_tr2(ptr, TR_flFraction, dist)
   
   free_tr2(ptr)
   
   return ((dist == 1.0) ? true : false)
}

metal_gibs(const Float: origin[3])
{
   if (!get_pcvar_num(pcv_effects))
      return
   
   engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
   write_byte(TE_BREAKMODEL)                                         // TE_BREAKMODEL
   engfunc(EngFunc_WriteCoord,origin[0])                                // x
   engfunc(EngFunc_WriteCoord,origin[1])                                // y
   engfunc(EngFunc_WriteCoord,origin[2] + 24)                             // z
   engfunc(EngFunc_WriteCoord,20.0)                                  // size x
   engfunc(EngFunc_WriteCoord,20.0)                                   // size y
   engfunc(EngFunc_WriteCoord,20.0)                                  // size z
   engfunc(EngFunc_WriteCoord,random_num(-50,50))                          // velocity x
   engfunc(EngFunc_WriteCoord,random_num(-50,50))                         // velocity y
   engfunc(EngFunc_WriteCoord,25.0)                                   // velocity z
   write_byte(10)                                                 // random velocity
   write_short(spr_nadebits)                                          // model
   write_byte(10)                                                   // count
   write_byte(25)                                                  // life
   write_byte(2)                                                  // flags: BREAK_METAL
   message_end()
}

blood(const Float:origin[3])
{
   if (!get_pcvar_num(pcv_effects))
      return
   
   engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
   write_byte(TE_BLOODSPRITE)
   engfunc(EngFunc_WriteCoord, origin[0])
   engfunc(EngFunc_WriteCoord, origin[1])
   engfunc(EngFunc_WriteCoord, origin[2] + 30.0)
   write_short(spr_blood_spray)
   write_short(spr_blood_drop)
   write_byte(248) // color index
   write_byte(15) // size
   message_end()
}


create_blast(Float:originF[3], rgb[3])
{
   if (!get_pcvar_num(pcv_effects))
      return
   
   new origin[3]
   FVecIVec(originF,origin)

   // smallest ring
   message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
   write_byte(TE_BEAMCYLINDER)
   write_coord(origin[0]) // x
   write_coord(origin[1]) // y
   write_coord(origin[2]) // z
   write_coord(origin[0]) // x axis
   write_coord(origin[1]) // y axis
   write_coord(origin[2] + 50) // z axis
   write_short(spr_explosion) // sprite
   write_byte(0) // start frame
   write_byte(0) // framerate
   write_byte(4) // life
   write_byte(60) // width
   write_byte(0) // noise
   write_byte(rgb[0]) // red
   write_byte(rgb[1]) // green
   write_byte(rgb[2]) // blue
   write_byte(100) // brightness
   write_byte(0) // speed
   message_end()
}

// give an entity a beam trail
set_beamfollow(ent, life,width, rgb[3], brightness)
{
   if (!get_pcvar_num(pcv_effects))
      return
   
   message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
   write_byte(TE_BEAMFOLLOW)
   write_short(ent)             // entity
   write_short(spr_trail)          // sprite
   write_byte(life)             // life
   write_byte(width)             // width
   write_byte(rgb[0])  // red
   write_byte(rgb[1])   // green
   write_byte(rgb[2])  // blue
   write_byte(brightness)          // brightness
   message_end()
}

clear_beamfollow(ent)
{
   if (!get_pcvar_num(pcv_effects))
      return
   
   message_begin(MSG_ALL,SVC_TEMPENTITY)
   write_byte(TE_KILLBEAM)
   write_short(ent) // entity
   message_end()
}

msg_ricochet(Float:origin[3])
{
   if (!get_pcvar_num(pcv_effects))
      return
   
   engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
   write_byte(TE_ARMOR_RICOCHET)
   engfunc(EngFunc_WriteCoord, origin[0])
   engfunc(EngFunc_WriteCoord, origin[1])
   engfunc(EngFunc_WriteCoord, origin[2])
   write_byte(5)
   message_end()
}


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Átírás
HozzászólásElküldve: 2011.12.03. 00:47 
Offline
Félisten
Avatar

Csatlakozott: 2008.04.28. 16:04
Hozzászólások: 872
Megköszönt másnak: 7 alkalommal
Megköszönték neki: 59 alkalommal
Favágó módszerrel plugin initbe:
Kód:
 plugin_enabled = register_cvar("smhdh_enabled", "1")

utána minden funkció elejére:
Kód:
if(!plugin_enabled) return PLUGIN_HANDLED 


vagy ignore-d vagy valami ilyesmi. de jobban jársz ha amx_pausecfg pause pluginname parancsot használsz.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Átírás
HozzászólásElküldve: 2011.12.03. 19:45 
Offline
Jómunkásember

Csatlakozott: 2011.07.14. 11:12
Hozzászólások: 320
Megköszönt másnak: 1 alkalommal
Ez nekem ínai aimt írtál Dave sry.

Írja már bele valki pls :(

Nagyon buta vagyok hozzá.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Átírás
HozzászólásElküldve: 2011.12.03. 20:01 
Offline
Developer
Avatar

Csatlakozott: 2011.06.01. 21:11
Hozzászólások: 7965
Megköszönt másnak: 295 alkalommal
Megköszönték neki: 537 alkalommal
digitation írta:
Ez nekem ínai aimt írtál Dave sry.

Írja már bele valki pls :(

Nagyon buta vagyok hozzá.



Ha így álsz a dolgokhoz:)


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Átírás
HozzászólásElküldve: 2011.12.03. 20:12 
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
kiki írta:
digitation írta:
Ez nekem ínai aimt írtál Dave sry.

Írja már bele valki pls :(

Nagyon buta vagyok hozzá.



Ha így álsz a dolgokhoz:)

ja én se tudok:S (mindj megnézem)


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Átírás
HozzászólásElküldve: 2011.12.03. 20:23 
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
cvar: smhdh_csakadmin "1" <-- csak adminnak, smhdh_csakadmin "0" <-- mindenkinek
Teszteld, mondjuk nem hiszem hogy megy :D
Kód:
#include <amxmodx>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <xs>

#define PLUGIN   "Head Hunter SmokeGrenade"
#define AUTHOR   "OT"
#define VERSION   "1.5"

new const DMG_CS_BULLETS_KNIFE   =      (DMG_NEVERGIB | DMG_BULLET)

#define    OFFSET_LAST_HIT_GROUP      75

#define    EV_INT_colisions         EV_INT_iuser2
#define      EV_ENT_target            EV_ENT_euser2
#define      EV_ENT_lasttarget         EV_ENT_euser3
#define      EV_FL_removetime         EV_FL_dmgtime

#define      IMPACT_TIMES            get_pcvar_num(pcv_impact_times)
#define    DISTANCE_SENSE            get_pcvar_float(pcv_dist_sense_player)
#define      DISTANCE_CUT_HEAD         get_pcvar_float(pcv_dist_cut_head)
#define    DISTANCE_CUT_OWNER_HEAD      get_pcvar_float(pcv_dist_owner_head)
#define      EXTRA_VELOCITY            get_pcvar_float(pcv_velocity_follow)
#define      EXTRA_VELOCITY_Z         get_pcvar_float(pcv_velocity_follow_z)

#define    VELOCITY_ADD            get_pcvar_float(pcv_velocity_add)
#define    VELOCITY_BORDER            get_pcvar_float(pcv_velocity_border)
#define      VELOCITY_AIMFORHEAD         get_pcvar_float(pcv_velocity_aimfhead)

#define      RETHINK_BLACK_OUT_TIME      0.02
#define      REMOVE_TIME               get_pcvar_float(pcv_removetime)

#define    RGB_R_COLOR             get_pcvar_num(pcv_color_red)
#define    RGB_G_COLOR             get_pcvar_num(pcv_color_green)
#define    RGB_B_COLOR             get_pcvar_num(pcv_color_blue)

new g_maxplayers

new pcv_velocity_follow
new pcv_velocity_follow_z
new pcv_velocity_border
new pcv_velocity_add
new pcv_velocity_aimfhead
new pcv_dist_sense_player
new pcv_dist_owner_head
new pcv_dist_cut_head
new pcv_impact_times
new pcv_color_red
new pcv_color_green
new pcv_color_blue
new pcv_effects
new pcv_ignore_friendly
new pcv_ignore_owner
new pcv_damage
new pcv_removetime
new pcv_csakadmin

new spr_nadebits
new   spr_blood_drop
new   spr_blood_spray
new spr_trail
new spr_explosion

new const nade_model[] =
{
   //"w_hegrenade.mdl"
   //"w_flashbang.mdl"
   "w_smokegrenade.mdl"
}

public plugin_precache()
{
   spr_nadebits  = precache_model("models/chromegibs.mdl")
   spr_blood_drop = precache_model("sprites/blood.spr")
   spr_blood_spray = precache_model("sprites/bloodspray.spr")
   spr_trail = precache_model("sprites/laserbeam.spr")
   spr_explosion = precache_model("sprites/shockwave.spr")
}

public plugin_init()
{
   register_plugin(PLUGIN, VERSION, AUTHOR)
   register_cvar("sm_headhunt_vs", VERSION, FCVAR_SPONLY | FCVAR_SERVER)
   
   pcv_dist_cut_head      = register_cvar("smhdh_distance_head_cut", "100.0")
   pcv_dist_sense_player = register_cvar("smhdh_distance_sense", "400.0")
   pcv_dist_owner_head   = register_cvar("smhdh_distance_owner_head_cut", "10.0")
   pcv_impact_times     = register_cvar("smhdh_impact_times", "8")
   
   pcv_color_red        = register_cvar("smhdh_color_red", "0")
   pcv_color_green        = register_cvar("smhdh_color_green", "214")
   pcv_color_blue        = register_cvar("smhdh_color_blue", "198")

   pcv_velocity_follow     = register_cvar("smhdh_velocity_correction", "150.0")
   pcv_velocity_follow_z = register_cvar("smhdh_height_correction", "25.0")
   pcv_velocity_add     = register_cvar("smhdh_velocity_add", "50.0")
   pcv_velocity_border   = register_cvar("smhdh_velocity_border", "200.0")
   pcv_velocity_aimfhead = register_cvar("smhdh_velocity_aim_for_head", "800.0")
   
   pcv_damage           = register_cvar("smhdh_hit_damage", "70.0")
   pcv_removetime        = register_cvar("smhdh_remove_time", "60.0")
   
   pcv_ignore_friendly   = register_cvar("smhdh_ignore_friendly", "1")
   pcv_ignore_owner     = register_cvar("smhdh_ignore_owner", "1")
   pcv_effects           = register_cvar("smhdh_effects", "1")
   
   pcv_csakadmin           = register_cvar("smhdh_csakadmin", "1")
   
   RegisterHam(Ham_Think, "grenade", "fw_grenade_think")
   RegisterHam(Ham_Touch, "grenade", "fw_touch")
   
   register_forward(FM_SetModel, "fw_setmodel", 1)
   
   g_maxplayers = get_maxplayers()
}

public fw_setmodel(ent, model[])
{
   if (!pev_valid(ent))
   {
      return FMRES_IGNORED
   }
   
   // Not yet thrown
   if (entity_get_float(ent, EV_FL_gravity) == 0.0)
   {
      return FMRES_IGNORED
   }
   
   if (contain(model, nade_model) == -1)
      return FMRES_IGNORED
   
   entity_set_int(ent, EV_INT_movetype, MOVETYPE_BOUNCEMISSILE)
   entity_set_int(ent, EV_INT_colisions, 0)
   entity_set_edict(ent, EV_ENT_target, 0)
   entity_set_size(ent, Float:{-2.0,-4.0,-2.0}, Float:{2.0, 4.0, 2.0})
   
   new color[3]
   color[0] = RGB_R_COLOR
   color[1] = RGB_G_COLOR
   color[2] = RGB_B_COLOR
   
   set_rendering(ent, kRenderFxGlowShell, RGB_R_COLOR, RGB_G_COLOR, RGB_B_COLOR, kRenderTransTexture, 16)
   set_beamfollow(ent, 20, 10, color, 50)
   
   entity_set_float(ent, EV_FL_removetime, get_gametime() + REMOVE_TIME)
   
   return FMRES_IGNORED
}

public fw_grenade_think(ent, id)
{
  if (get_user_flags(id) & ADMIN_KICK && get_pcvar_num( pcv_csakadmin ) == 1 )
  {
   if (entity_get_int(ent, EV_INT_movetype) != MOVETYPE_BOUNCEMISSILE)
      return HAM_IGNORED
   
   if (entity_get_float(ent, EV_FL_removetime) > get_gametime() + REMOVE_TIME)
   {
      entity_set_float(ent, EV_FL_removetime, get_gametime() + REMOVE_TIME)
   }
   
   new owner = pev(ent, pev_owner)
   new Float:origin[3]
   entity_get_vector(ent, EV_VEC_origin, origin)
   
   if (entity_get_float(ent, EV_FL_removetime) < get_gametime() || !is_user_connected(owner) || is_user_connecting(owner))
   {
      clear_beamfollow(ent)
      entity_set_int(ent, EV_INT_flags, FL_KILLME)
      metal_gibs(origin)
     
      return HAM_SUPERCEDE
   }
   
   new team = _:cs_get_user_team(owner)
   
   new target, Float:velocity[3], oldtarget
   target = entity_get_edict(ent, EV_ENT_target)
   oldtarget = entity_get_edict(ent, EV_ENT_lasttarget)
   
   if (target == owner && get_pcvar_num(pcv_ignore_owner))
   {
      target = 0
      entity_set_edict(ent, EV_ENT_target, 0)
   }
   
   if (target == 0)
   {
      entity_get_vector(ent, EV_VEC_velocity, velocity)
     
      if (xs_vec_len(velocity) < VELOCITY_BORDER)
      {
         xs_vec_mul_scalar(velocity, xs_vec_len(velocity) + VELOCITY_ADD, velocity)
         entity_set_vector(ent, EV_VEC_velocity, velocity)
      }
     
      new i = -1, Float:distance = DISTANCE_SENSE, Float:junk[3], pcvar = get_pcvar_num(pcv_ignore_friendly), targetteam
     
      while ((i = find_ent_in_sphere(i, origin, distance)))
      {
         if (i > g_maxplayers)
            break
         
         if (i == owner)
            continue
         
         if (i == oldtarget)
            continue
         
         if (!is_user_connected(i) || is_user_connecting(i))
            continue
         
         if (!is_user_alive(i))
            continue
         
         targetteam = _:cs_get_user_team(i)
         
         if ((team != targetteam && targetteam != _:CS_TEAM_SPECTATOR && targetteam != _:CS_TEAM_UNASSIGNED) || (team == targetteam && !pcvar))
         {
            static Float:o[3]
            entity_get_vector(i, EV_VEC_origin, o)
            entity_get_vector(i, EV_VEC_view_ofs, junk)
            xs_vec_add(o, junk, o)
            static Float:new_distance
            new_distance = get_distance_f(o, origin)
           
            if (new_distance < distance)
            {
               distance = new_distance
               entity_set_edict(ent, EV_ENT_target, i)
            }
         }
      }
     
      if (!get_pcvar_num(pcv_ignore_owner) && entity_range(owner, ent) < distance && entity_get_int(ent, EV_INT_colisions) > 0)
      {
         entity_set_edict(ent, EV_ENT_target, owner)
      }
     
      entity_set_float(ent, EV_FL_nextthink, get_gametime() + RETHINK_BLACK_OUT_TIME)
     
      return HAM_SUPERCEDE
   }
   else if (!is_user_alive(target))
   {
      entity_get_vector(ent, EV_VEC_velocity, velocity)
     
      if (xs_vec_len(velocity) < VELOCITY_BORDER)
      {
         xs_vec_mul_scalar(velocity, xs_vec_len(velocity) + VELOCITY_ADD, velocity)
         entity_set_vector(ent, EV_VEC_velocity, velocity)
      }
     
      entity_set_edict(ent, EV_ENT_target, 0)
      entity_set_float(ent, EV_FL_nextthink, get_gametime() + RETHINK_BLACK_OUT_TIME)
      return HAM_SUPERCEDE
   }
   else
   {
      new Float:aim[3], Float:targetorigin[3], Float:velocity_normal[3], Float:aim_normal[3]
     
      entity_get_vector(target, EV_VEC_origin, targetorigin)
     
      xs_vec_add(targetorigin, Float:{0.0, 0.0, 30.0}, targetorigin)
     
      if (!is_point_visible(origin, targetorigin, ent))
      {
         entity_set_edict(ent, EV_ENT_target, 0)
         entity_set_float(ent, EV_FL_nextthink, get_gametime() + RETHINK_BLACK_OUT_TIME)
         return HAM_SUPERCEDE
      }
     
      xs_vec_sub(targetorigin, origin, aim)
     
      if (xs_vec_len(aim) <= DISTANCE_CUT_HEAD)
      {
         xs_vec_mul_scalar(aim, VELOCITY_AIMFORHEAD/xs_vec_len(aim), aim)
         
         entity_set_vector(ent, EV_VEC_velocity, aim)
         
         if (target == owner && !get_pcvar_num(pcv_ignore_owner) && get_distance_f(targetorigin, origin) <= DISTANCE_CUT_OWNER_HEAD)
         {
            new Float:torigin[3]
            entity_get_vector(owner, EV_VEC_origin, torigin)
            blood(torigin)
            set_pdata_int(owner, OFFSET_LAST_HIT_GROUP, HIT_HEAD, 5)
            ExecuteHamB(Ham_TakeDamage, owner, ent, owner, get_pcvar_float(pcv_damage), DMG_CS_BULLETS_KNIFE)
            entity_set_edict(ent, EV_ENT_target, 0)
            entity_set_edict(ent, EV_ENT_lasttarget, owner)
           
            new color[3] , impacts
            color[0] = RGB_R_COLOR
            color[1] = RGB_G_COLOR
            color[2] = RGB_B_COLOR
           
            create_blast(origin, color)
           
            impacts = entity_get_int(ent, EV_INT_colisions)
           
            impacts++
           
            entity_set_int(ent, EV_INT_colisions, impacts)
           
            if (impacts >= IMPACT_TIMES)
            {
               clear_beamfollow(ent)
               entity_set_int(ent, EV_INT_flags, FL_KILLME)
               metal_gibs(origin)
            }
         }
         
         entity_set_float(ent, EV_FL_nextthink, get_gametime() + RETHINK_BLACK_OUT_TIME)
         return HAM_SUPERCEDE
      }
     
      entity_get_vector(ent, EV_VEC_velocity, velocity)
     
      xs_vec_sub(targetorigin, origin, aim)
     
      xs_vec_normalize(velocity, velocity_normal)
      xs_vec_normalize(aim, aim_normal)
     
      if (xs_vec_len(velocity) < VELOCITY_BORDER)
      {
         xs_vec_mul_scalar(velocity, xs_vec_len(velocity) + VELOCITY_ADD, velocity)
      }
     
      if (xs_vec_dot(aim_normal, velocity_normal) < 0)
      {
         entity_set_edict(ent, EV_ENT_target, 0)
         entity_set_float(ent, EV_FL_nextthink, get_gametime() + RETHINK_BLACK_OUT_TIME)
         entity_set_vector(ent, EV_VEC_velocity, velocity)
         return HAM_SUPERCEDE
      }
     
      if (velocity_normal[0] < aim_normal[0])
      {
         velocity[0] += EXTRA_VELOCITY
      }
      else if (velocity_normal[0] > aim_normal[0])
      {
         velocity[0] -= EXTRA_VELOCITY
      }
     
      if (velocity_normal[1] < aim_normal[1])
      {
         velocity[1] += EXTRA_VELOCITY
      }
      else if (velocity_normal[1] > aim_normal[1])
      {
         velocity[1] -= EXTRA_VELOCITY
      }
     
      if (velocity_normal[2] < aim_normal[2])
      {
         velocity[2] += EXTRA_VELOCITY_Z
      }
      else if (velocity_normal[2] > aim_normal[2])
      {
         velocity[2] -= EXTRA_VELOCITY_Z
      }
     
      velocity[2] += 5.0
     
      entity_set_vector(ent, EV_VEC_velocity, velocity)
   }
   
   entity_set_float(ent, EV_FL_nextthink, get_gametime() + RETHINK_BLACK_OUT_TIME)
   return HAM_SUPERCEDE
  }
 
  if (get_pcvar_num( pcv_csakadmin ) == 0 )
  {
   if (entity_get_int(ent, EV_INT_movetype) != MOVETYPE_BOUNCEMISSILE)
      return HAM_IGNORED
   
   if (entity_get_float(ent, EV_FL_removetime) > get_gametime() + REMOVE_TIME)
   {
      entity_set_float(ent, EV_FL_removetime, get_gametime() + REMOVE_TIME)
   }
   
   new owner = pev(ent, pev_owner)
   new Float:origin[3]
   entity_get_vector(ent, EV_VEC_origin, origin)
   
   if (entity_get_float(ent, EV_FL_removetime) < get_gametime() || !is_user_connected(owner) || is_user_connecting(owner))
   {
      clear_beamfollow(ent)
      entity_set_int(ent, EV_INT_flags, FL_KILLME)
      metal_gibs(origin)
     
      return HAM_SUPERCEDE
   }
   
   new team = _:cs_get_user_team(owner)
   
   new target, Float:velocity[3], oldtarget
   target = entity_get_edict(ent, EV_ENT_target)
   oldtarget = entity_get_edict(ent, EV_ENT_lasttarget)
   
   if (target == owner && get_pcvar_num(pcv_ignore_owner))
   {
      target = 0
      entity_set_edict(ent, EV_ENT_target, 0)
   }
   
   if (target == 0)
   {
      entity_get_vector(ent, EV_VEC_velocity, velocity)
     
      if (xs_vec_len(velocity) < VELOCITY_BORDER)
      {
         xs_vec_mul_scalar(velocity, xs_vec_len(velocity) + VELOCITY_ADD, velocity)
         entity_set_vector(ent, EV_VEC_velocity, velocity)
      }
     
      new i = -1, Float:distance = DISTANCE_SENSE, Float:junk[3], pcvar = get_pcvar_num(pcv_ignore_friendly), targetteam
     
      while ((i = find_ent_in_sphere(i, origin, distance)))
      {
         if (i > g_maxplayers)
            break
         
         if (i == owner)
            continue
         
         if (i == oldtarget)
            continue
         
         if (!is_user_connected(i) || is_user_connecting(i))
            continue
         
         if (!is_user_alive(i))
            continue
         
         targetteam = _:cs_get_user_team(i)
         
         if ((team != targetteam && targetteam != _:CS_TEAM_SPECTATOR && targetteam != _:CS_TEAM_UNASSIGNED) || (team == targetteam && !pcvar))
         {
            static Float:o[3]
            entity_get_vector(i, EV_VEC_origin, o)
            entity_get_vector(i, EV_VEC_view_ofs, junk)
            xs_vec_add(o, junk, o)
            static Float:new_distance
            new_distance = get_distance_f(o, origin)
           
            if (new_distance < distance)
            {
               distance = new_distance
               entity_set_edict(ent, EV_ENT_target, i)
            }
         }
      }
     
      if (!get_pcvar_num(pcv_ignore_owner) && entity_range(owner, ent) < distance && entity_get_int(ent, EV_INT_colisions) > 0)
      {
         entity_set_edict(ent, EV_ENT_target, owner)
      }
     
      entity_set_float(ent, EV_FL_nextthink, get_gametime() + RETHINK_BLACK_OUT_TIME)
     
      return HAM_SUPERCEDE
   }
   else if (!is_user_alive(target))
   {
      entity_get_vector(ent, EV_VEC_velocity, velocity)
     
      if (xs_vec_len(velocity) < VELOCITY_BORDER)
      {
         xs_vec_mul_scalar(velocity, xs_vec_len(velocity) + VELOCITY_ADD, velocity)
         entity_set_vector(ent, EV_VEC_velocity, velocity)
      }
     
      entity_set_edict(ent, EV_ENT_target, 0)
      entity_set_float(ent, EV_FL_nextthink, get_gametime() + RETHINK_BLACK_OUT_TIME)
      return HAM_SUPERCEDE
   }
   else
   {
      new Float:aim[3], Float:targetorigin[3], Float:velocity_normal[3], Float:aim_normal[3]
     
      entity_get_vector(target, EV_VEC_origin, targetorigin)
     
      xs_vec_add(targetorigin, Float:{0.0, 0.0, 30.0}, targetorigin)
     
      if (!is_point_visible(origin, targetorigin, ent))
      {
         entity_set_edict(ent, EV_ENT_target, 0)
         entity_set_float(ent, EV_FL_nextthink, get_gametime() + RETHINK_BLACK_OUT_TIME)
         return HAM_SUPERCEDE
      }
     
      xs_vec_sub(targetorigin, origin, aim)
     
      if (xs_vec_len(aim) <= DISTANCE_CUT_HEAD)
      {
         xs_vec_mul_scalar(aim, VELOCITY_AIMFORHEAD/xs_vec_len(aim), aim)
         
         entity_set_vector(ent, EV_VEC_velocity, aim)
         
         if (target == owner && !get_pcvar_num(pcv_ignore_owner) && get_distance_f(targetorigin, origin) <= DISTANCE_CUT_OWNER_HEAD)
         {
            new Float:torigin[3]
            entity_get_vector(owner, EV_VEC_origin, torigin)
            blood(torigin)
            set_pdata_int(owner, OFFSET_LAST_HIT_GROUP, HIT_HEAD, 5)
            ExecuteHamB(Ham_TakeDamage, owner, ent, owner, get_pcvar_float(pcv_damage), DMG_CS_BULLETS_KNIFE)
            entity_set_edict(ent, EV_ENT_target, 0)
            entity_set_edict(ent, EV_ENT_lasttarget, owner)
           
            new color[3] , impacts
            color[0] = RGB_R_COLOR
            color[1] = RGB_G_COLOR
            color[2] = RGB_B_COLOR
           
            create_blast(origin, color)
           
            impacts = entity_get_int(ent, EV_INT_colisions)
           
            impacts++
           
            entity_set_int(ent, EV_INT_colisions, impacts)
           
            if (impacts >= IMPACT_TIMES)
            {
               clear_beamfollow(ent)
               entity_set_int(ent, EV_INT_flags, FL_KILLME)
               metal_gibs(origin)
            }
         }
         
         entity_set_float(ent, EV_FL_nextthink, get_gametime() + RETHINK_BLACK_OUT_TIME)
         return HAM_SUPERCEDE
      }
     
      entity_get_vector(ent, EV_VEC_velocity, velocity)
     
      xs_vec_sub(targetorigin, origin, aim)
     
      xs_vec_normalize(velocity, velocity_normal)
      xs_vec_normalize(aim, aim_normal)
     
      if (xs_vec_len(velocity) < VELOCITY_BORDER)
      {
         xs_vec_mul_scalar(velocity, xs_vec_len(velocity) + VELOCITY_ADD, velocity)
      }
     
      if (xs_vec_dot(aim_normal, velocity_normal) < 0)
      {
         entity_set_edict(ent, EV_ENT_target, 0)
         entity_set_float(ent, EV_FL_nextthink, get_gametime() + RETHINK_BLACK_OUT_TIME)
         entity_set_vector(ent, EV_VEC_velocity, velocity)
         return HAM_SUPERCEDE
      }
     
      if (velocity_normal[0] < aim_normal[0])
      {
         velocity[0] += EXTRA_VELOCITY
      }
      else if (velocity_normal[0] > aim_normal[0])
      {
         velocity[0] -= EXTRA_VELOCITY
      }
     
      if (velocity_normal[1] < aim_normal[1])
      {
         velocity[1] += EXTRA_VELOCITY
      }
      else if (velocity_normal[1] > aim_normal[1])
      {
         velocity[1] -= EXTRA_VELOCITY
      }
     
      if (velocity_normal[2] < aim_normal[2])
      {
         velocity[2] += EXTRA_VELOCITY_Z
      }
      else if (velocity_normal[2] > aim_normal[2])
      {
         velocity[2] -= EXTRA_VELOCITY_Z
      }
     
      velocity[2] += 5.0
     
      entity_set_vector(ent, EV_VEC_velocity, velocity)
   }
   
   entity_set_float(ent, EV_FL_nextthink, get_gametime() + RETHINK_BLACK_OUT_TIME)
   return HAM_SUPERCEDE
 }
}

public fw_touch(toucher, touched)
{
   if (entity_get_int(toucher, EV_INT_movetype) != MOVETYPE_BOUNCEMISSILE)
      return HAM_IGNORED
   
   new Float:origin[3]
   new impacts = entity_get_int(toucher, EV_INT_colisions)
   new owner = entity_get_edict(toucher, EV_ENT_owner)
   entity_get_vector(toucher, EV_VEC_origin, origin)
   
   if (1 <= touched <= g_maxplayers)
   {
      new CsTeams:team[2]
      team[0] = cs_get_user_team(touched)
      team[1] = cs_get_user_team(owner)
     
      if ((team[0] != team[1] && team[0] != CS_TEAM_SPECTATOR && team[0] != CS_TEAM_UNASSIGNED)|| (team[0] == team[1] && !get_pcvar_num(pcv_ignore_friendly)))
      {
         new Float:origin[3]
         entity_get_vector(touched, EV_VEC_origin, origin)
         blood(origin)
         set_pdata_int(touched, OFFSET_LAST_HIT_GROUP, HIT_HEAD, 5)
         ExecuteHamB(Ham_TakeDamage, touched, toucher, owner, get_pcvar_float(pcv_damage), DMG_CS_BULLETS_KNIFE)
         entity_set_edict(toucher, EV_ENT_target, 0)
         entity_set_edict(toucher, EV_ENT_lasttarget, touched)
         
         new color[3]
         color[0] = RGB_R_COLOR
         color[1] = RGB_G_COLOR
         color[2] = RGB_B_COLOR
         
         create_blast(origin, color)
      }
   }
   
   if (touched > g_maxplayers || touched == 0)
   {
      msg_ricochet(origin)
   }
   
   impacts++
   
   entity_set_int(toucher, EV_INT_colisions, impacts)
   
   if (impacts >= IMPACT_TIMES)
   {
      clear_beamfollow(toucher)
      entity_set_int(toucher, EV_INT_flags, FL_KILLME)
      metal_gibs(origin)
   }
   
   return HAM_IGNORED
}

bool:is_point_visible(Float:start[3], Float:end[3], ignore_ent)
{
   static ptr
   ptr = create_tr2()
   
   engfunc(EngFunc_TraceLine, start, end, IGNORE_MONSTERS, ignore_ent, ptr)
   
   static Float:dist
   get_tr2(ptr, TR_flFraction, dist)
   
   free_tr2(ptr)
   
   return ((dist == 1.0) ? true : false)
}

metal_gibs(const Float: origin[3])
{
   if (!get_pcvar_num(pcv_effects))
      return
   
   engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
   write_byte(TE_BREAKMODEL)                                         // TE_BREAKMODEL
   engfunc(EngFunc_WriteCoord,origin[0])                                // x
   engfunc(EngFunc_WriteCoord,origin[1])                                // y
   engfunc(EngFunc_WriteCoord,origin[2] + 24)                             // z
   engfunc(EngFunc_WriteCoord,20.0)                                  // size x
   engfunc(EngFunc_WriteCoord,20.0)                                   // size y
   engfunc(EngFunc_WriteCoord,20.0)                                  // size z
   engfunc(EngFunc_WriteCoord,random_num(-50,50))                          // velocity x
   engfunc(EngFunc_WriteCoord,random_num(-50,50))                         // velocity y
   engfunc(EngFunc_WriteCoord,25.0)                                   // velocity z
   write_byte(10)                                                 // random velocity
   write_short(spr_nadebits)                                          // model
   write_byte(10)                                                   // count
   write_byte(25)                                                  // life
   write_byte(2)                                                  // flags: BREAK_METAL
   message_end()
}

blood(const Float:origin[3])
{
   if (!get_pcvar_num(pcv_effects))
      return
   
   engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
   write_byte(TE_BLOODSPRITE)
   engfunc(EngFunc_WriteCoord, origin[0])
   engfunc(EngFunc_WriteCoord, origin[1])
   engfunc(EngFunc_WriteCoord, origin[2] + 30.0)
   write_short(spr_blood_spray)
   write_short(spr_blood_drop)
   write_byte(248) // color index
   write_byte(15) // size
   message_end()
}


create_blast(Float:originF[3], rgb[3])
{
   if (!get_pcvar_num(pcv_effects))
      return
   
   new origin[3]
   FVecIVec(originF,origin)

   // smallest ring
   message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
   write_byte(TE_BEAMCYLINDER)
   write_coord(origin[0]) // x
   write_coord(origin[1]) // y
   write_coord(origin[2]) // z
   write_coord(origin[0]) // x axis
   write_coord(origin[1]) // y axis
   write_coord(origin[2] + 50) // z axis
   write_short(spr_explosion) // sprite
   write_byte(0) // start frame
   write_byte(0) // framerate
   write_byte(4) // life
   write_byte(60) // width
   write_byte(0) // noise
   write_byte(rgb[0]) // red
   write_byte(rgb[1]) // green
   write_byte(rgb[2]) // blue
   write_byte(100) // brightness
   write_byte(0) // speed
   message_end()
}

// give an entity a beam trail
set_beamfollow(ent, life,width, rgb[3], brightness)
{
   if (!get_pcvar_num(pcv_effects))
      return
   
   message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
   write_byte(TE_BEAMFOLLOW)
   write_short(ent)             // entity
   write_short(spr_trail)          // sprite
   write_byte(life)             // life
   write_byte(width)             // width
   write_byte(rgb[0])  // red
   write_byte(rgb[1])   // green
   write_byte(rgb[2])  // blue
   write_byte(brightness)          // brightness
   message_end()
}

clear_beamfollow(ent)
{
   if (!get_pcvar_num(pcv_effects))
      return
   
   message_begin(MSG_ALL,SVC_TEMPENTITY)
   write_byte(TE_KILLBEAM)
   write_short(ent) // entity
   message_end()
}

msg_ricochet(Float:origin[3])
{
   if (!get_pcvar_num(pcv_effects))
      return
   
   engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, origin, 0)
   write_byte(TE_ARMOR_RICOCHET)
   engfunc(EngFunc_WriteCoord, origin[0])
   engfunc(EngFunc_WriteCoord, origin[1])
   engfunc(EngFunc_WriteCoord, origin[2])
   write_byte(5)
   message_end()
}


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Átírás
HozzászólásElküldve: 2011.12.08. 20:26 
Offline
Developer
Avatar

Csatlakozott: 2011.06.01. 21:11
Hozzászólások: 7965
Megköszönt másnak: 295 alkalommal
Megköszönték neki: 537 alkalommal
Szerintem sem megy, ha 0 ha 1 akkor is ugyan az teljesül ha jól látom


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Átírás
HozzászólásElküldve: 2011.12.08. 20:48 
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
de ha 1 akkor admint is kér:
Kód:
if (get_user_flags(id) & ADMIN_KICK && get_pcvar_num( pcv_csakadmin ) == 1 )


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: Átírás
HozzászólásElküldve: 2011.12.08. 20:54 
Offline
Developer
Avatar

Csatlakozott: 2011.06.01. 21:11
Hozzászólások: 7965
Megköszönt másnak: 295 alkalommal
Megköszönték neki: 537 alkalommal
Ja ez csak akkor megy tovább ha ADMIN_KICK joga is megvan meg a cvar is 1en van!


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  [ 9 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 41 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