hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2025.07.03. 18:49



Jelenlévő felhasználók

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

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

Regisztrált felhasználók: 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  [6 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: AT4CS
HozzászólásElküldve:2012.03.16. 21:46 
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
hali
a minap vath felrakott a zp-hez egy extra itemet (at4cs rakéta vető)
gondoltam elkezdem átírni public módra csak hogy megakadtam és nem tudom hogy még mit kéne átírni

a projekt sma-ja:
[spoiler]
Kód:
include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>

#define PLUGIN "Extra Item: AT4CS"
#define VERSION "1.0"
#define AUTHOR "Dias"

#define weapon_at4cs "weapon_m249"
#define CSW_AT4CS CSW_M249

#define TASK_CHECKRELOAD 111112
#define TASK_RELOAD 111113

new g_at4cs
new g_had_at4cs[33], Float:g_lastfire[33], Float:g_lastaim[33], g_aiming[33],
g_smoke_id, g_spr_trail, g_spr_exp, is_reloading[33],
cvar_radius, cvar_maxdamage

new const v_model[] = "models/v_at4ex.mdl"
new const p_model[] = "models/p_at4ex.mdl"
new const w_model[] = "models/w_at4ex.mdl"
new const s_model[] = "models/s_rocket.mdl"

new const at4cs_sound[5][] = {
   "weapons/at4-1.wav", // Fire Sound
   "weapons/at4_clipin1.wav", // Clip in 1
   "weapons/at4_clipin2.wav", // Clip in 2
   "weapons/at4_clipin3.wav", // Clip in 3
   "weapons/at4_draw.wav"  // Draw
}

public plugin_init()
{
   register_plugin(PLUGIN, VERSION, AUTHOR)
   
   register_event("CurWeapon", "event_curweapon", "be", "1=1")
   register_event("HLTV", "event_newround", "a", "1=0", "2=0")
   
   register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
   register_forward(FM_CmdStart, "fw_CmdStart")
   register_forward(FM_SetModel, "fw_SetModel")
   
   register_think("at4ex_rocket", "fw_rocket_think")
   register_touch("at4ex_rocket", "*", "fw_rocket_touch")
   
   RegisterHam(Ham_Weapon_Reload, weapon_at4cs, "fw_WeaponReload")
   RegisterHam(Ham_Item_AddToPlayer, weapon_at4cs, "fw_AddToPlayer", 1)
   
   cvar_radius = register_cvar("at4cs_radius", "400.0")
   cvar_maxdamage = register_cvar("at4cs_maxdamage", "1250.0")
   
   g_at4cs = zp_register_extra_item("AT4CS", 38, ZP_TEAM_HUMAN)
   
   register_clcmd("weapon_at4cs", "hook_weapon")
}

public hook_weapon(id)
{
   engclient_cmd(id, weapon_at4cs)
   return PLUGIN_HANDLED
}

public plugin_precache()
{
   engfunc(EngFunc_PrecacheModel, v_model)
   engfunc(EngFunc_PrecacheModel, p_model)
   engfunc(EngFunc_PrecacheModel, w_model)
   engfunc(EngFunc_PrecacheModel, s_model)
   
   engfunc(EngFunc_PrecacheGeneric, "sprites/weapon_at4cs.txt")
   engfunc(EngFunc_PrecacheGeneric, "sprites/at4cs.spr")   
   
   g_smoke_id = engfunc(EngFunc_PrecacheModel, "sprites/effects/rainsplash.spr")
   g_spr_trail = engfunc(EngFunc_PrecacheModel,"sprites/xbeam3.spr")
   g_spr_exp = engfunc(EngFunc_PrecacheModel,"sprites/zerogxplode.spr")
   
   for(new i = 0; i < sizeof(at4cs_sound); i++)
      engfunc(EngFunc_PrecacheSound, at4cs_sound[i])
}

public zp_extra_item_selected(id, itemid)
{
   if(itemid != g_at4cs)
      return PLUGIN_HANDLED
      
   g_had_at4cs[id] = 1
   is_reloading[id] = 0
   g_aiming[id] = 0
   
   fm_give_item(id, weapon_at4cs)
   
   static at4cs
   at4cs = fm_get_user_weapon_entity(id, CSW_AT4CS)

   cs_set_weapon_ammo(at4cs, 1)
   cs_set_user_bpammo(id, CSW_AT4CS, 10)
   
   return PLUGIN_CONTINUE
}

public zp_user_infected_post(id)
{
   g_had_at4cs[id] = 0
   is_reloading[id] = 0
   g_aiming[id] = 0
   
   remove_task(id+TASK_CHECKRELOAD)
   remove_task(id+TASK_RELOAD)   
}

public zp_user_humanized_post(id)
{
   g_had_at4cs[id] = 0
   is_reloading[id] = 0
   g_aiming[id] = 0   
   
   remove_task(id+TASK_CHECKRELOAD)
   remove_task(id+TASK_RELOAD)      
}

public event_newround()
{
   remove_entity_name("at4ex_rocket")
   
   for(new i = 0; i < get_maxplayers(); i++)
   {
      if(is_user_alive(i) && is_user_connected(i))
      {
         remove_task(i+TASK_CHECKRELOAD)
         remove_task(i+TASK_RELOAD)   
      }
   }
}

public event_curweapon(id)
{
   if(!is_user_alive(id) || !is_user_connected(id))
      return PLUGIN_HANDLED
      
   if(get_user_weapon(id) != CSW_AT4CS || !g_had_at4cs[id])
      return PLUGIN_HANDLED
   
   if(cs_get_user_zombie(id) || cs_get_user_survivor(id))
      return PLUGIN_HANDLED
      
   set_pev(id, pev_viewmodel2, v_model)
   set_pev(id, pev_weaponmodel2, p_model)
   
   return PLUGIN_CONTINUE
}

public fw_UpdateClientData_Post(id, sendweapons, cd_handle)
{
   if(!is_user_alive(id) || !is_user_connected(id))
      return FMRES_IGNORED
      
   if(get_user_weapon(id) != CSW_AT4CS || !g_had_at4cs[id])
      return FMRES_IGNORED
      
   if(zp_get_user_zombie(id) || zp_get_user_survivor(id))
      return FMRES_IGNORED
      
   set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001) 

   return FMRES_HANDLED
}

public fw_AddToPlayer(ent, id)
{
   if(!is_valid_ent(ent) || !is_user_alive(id))
      return HAM_IGNORED
      
   if(cs_get_user_zombie(id) || cs_get_user_survivor(id))
      return HAM_IGNORED
      
   if(entity_get_int(ent, EV_INT_impulse) == 61296)
   {
      g_had_at4cs[id] = 1
      entity_set_int(id, EV_INT_impulse, 0)
      
      return HAM_HANDLED
   }      

   if(g_had_at4cs[id])
   {
      message_begin(MSG_ONE, get_user_msgid("WeaponList"), _, id)
      write_string("weapon_at4cs");    // WeaponName
      write_byte(3)                  // PrimaryAmmoID
      write_byte(1)                  // PrimaryAmmoMaxAmount
      write_byte(-1)                   // SecondaryAmmoID
      write_byte(-1)                   // SecondaryAmmoMaxAmount
      write_byte(0)                    // SlotID (0...N)
      write_byte(4)                    // NumberInSlot (1...N)
      write_byte(CSW_AT4CS)            // WeaponID
      write_byte(0)                   // Flags
      message_end()
   }
   
   return HAM_HANDLED   
}

public fw_CmdStart(id, uc_handle, seed)
{
   if(!is_user_alive(id) || !is_user_connected(id))
      return FMRES_IGNORED

   if(get_user_weapon(id) != CSW_AT4CS || !g_had_at4cs[id])
      return FMRES_IGNORED
      
   if(cs_get_user_zombie(id) || zp_get_user_survivor(id))
      return FMRES_IGNORED
      
   static CurButton
   CurButton = get_uc(uc_handle, UC_Buttons)
   
   if(CurButton & IN_ATTACK)
   {
      static Float:CurTime
      CurTime = get_gametime()
      
      static at4cs
      at4cs = fm_find_ent_by_owner(-1, weapon_at4cs, id)      
      
      if(cs_get_weapon_ammo(at4cs) > 0 && !is_reloading[id])
      {
         if(CurTime - 4.5 > g_lastfire[id])
         {
            set_weapon_anim(id, 1)
            emit_sound(id, CHAN_WEAPON, at4cs_sound[0], 1.0, ATTN_NORM, 0, PITCH_NORM)
            
            create_rocket(id)
            
            static Float:Punch_Angles[3]
            
            Punch_Angles[0] = -20.0
            Punch_Angles[1] = 0.0
            Punch_Angles[2] = 0.0
            
            set_pev(id, pev_punchangle, Punch_Angles)
            cs_set_weapon_ammo(at4cs, cs_get_weapon_ammo(at4cs) - 1)
            
            if(cs_get_weapon_ammo(at4cs) <= 0 && !is_reloading[id])
            {
               if(cs_get_user_bpammo(id, CSW_AT4CS) > 0)
               {
                  set_task(1.0, "at4cs_reload", id)
               }
            }
            
            if(cs_get_user_zoom(id))
               cs_set_user_zoom(id, CS_RESET_ZOOM, 1)
            
            g_lastfire[id] = CurTime
         }
      } else {
         if(!is_reloading[id])
         {
            if(cs_get_user_bpammo(id, CSW_AT4CS) > 0)
            {
               if(CurTime - 1.0 > g_lastfire[id])
               {
                  at4cs_reload(id)
                  g_lastfire[id] = CurTime
               }
            }
         }
      }
   }
   
   if(CurButton & IN_ATTACK2)
   {
      static Float:CurTime
      CurTime = get_gametime()
      
      if((CurTime - 0.5 > g_lastaim[id]) && !is_reloading[id])
      {
         if(!g_aiming[id])
         {
            cs_set_user_zoom(id, CS_SET_FIRST_ZOOM, 1)
            g_aiming[id] = 1
         } else {
            cs_set_user_zoom(id, CS_RESET_ZOOM, 1)
            g_aiming[id] = 0
         }
         
         g_lastaim[id] = CurTime
      }
   }
   
   CurButton &= ~IN_ATTACK
   set_uc(uc_handle, UC_Buttons, CurButton)
   
   CurButton &= ~IN_RELOAD
   set_uc(uc_handle, UC_Buttons, CurButton)

   return FMRES_HANDLED
}

public fw_SetModel(ent, const model[])
{
   if(!is_valid_ent(ent))
      return FMRES_IGNORED
   
   static szClassName[33]
   entity_get_string(ent, EV_SZ_classname, szClassName, charsmax(szClassName))
   
   if(!equal(szClassName, "weaponbox"))
      return FMRES_IGNORED
   
   static iOwner
   iOwner = entity_get_edict(ent, EV_ENT_owner)
   
   if(equal(model, "models/w_m249.mdl"))
   {
      static at4cs
      at4cs = find_ent_by_owner(-1, "weapon_m249", ent)
      
      if(!is_valid_ent(at4cs))
         return FMRES_IGNORED;
      
      if(g_had_at4cs[iOwner])
      {
         entity_set_int(at4cs, EV_INT_impulse, 61296)
         g_had_at4cs[iOwner] = 0
         entity_set_model(ent, w_model)
         
         return FMRES_SUPERCEDE
      }
   }
   
   return FMRES_IGNORED
}

public at4cs_reload(id)
{
   if(is_reloading[id])
      return
   
   is_reloading[id] = 1
   set_weapon_anim(id, 3)
   
   set_task(0.1, "checking_reload", id+TASK_CHECKRELOAD, _, _, "b")
   set_task(4.0, "reload_complete", id+TASK_RELOAD)
}

public checking_reload(id)
{
   id -= TASK_CHECKRELOAD
   
   if(cs_get_user_zoom(id))
      cs_set_user_zoom(id, CS_RESET_ZOOM, 1)   
   
   if(get_user_weapon(id) != CSW_AT4CS || !g_had_at4cs[id])
   {
      remove_task(id+TASK_CHECKRELOAD)
      remove_task(id+TASK_RELOAD)
      
      is_reloading[id] = 0
   }
}

public reload_complete(id)
{
   id -= TASK_RELOAD
   
   if(!is_reloading[id])
      return
      
   remove_task(id+TASK_CHECKRELOAD)   
      
   static at4cs
   at4cs = fm_find_ent_by_owner(-1, weapon_at4cs, id)   
   
   cs_set_weapon_ammo(at4cs, 1)
   cs_set_user_bpammo(id, CSW_AT4CS, cs_get_user_bpammo(id, CSW_AT4CS) - 1)
   is_reloading[id] = 0
}

public fw_WeaponReload(ent)
{
   static id
   id = pev(ent, pev_owner)
   
   if(!is_user_alive(id) || !is_user_connected(id))
      return HAM_IGNORED
      
   if(get_user_weapon(id) != CSW_AT4CS || !g_had_at4cs[id])
      return HAM_IGNORED
      
   if(cs_get_user_zombie(id) || cs_get_user_survivor(id))
      return HAM_IGNORED   
      
   static Float:CurTime
   CurTime = get_gametime()      
      
   if(!is_reloading[id])
   {
      if(cs_get_user_bpammo(id, CSW_AT4CS) > 0)
      {
         if(CurTime - 1.0 > g_lastfire[id])
         {
            at4cs_reload(id)
            g_lastfire[id] = CurTime
         }
      }
   }   
      
   return HAM_SUPERCEDE
}

public create_rocket(id)
{
   new ent, Float:Origin[3], Float:Angles[3], Float:Velocity[3]
   
   ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
   engfunc(EngFunc_GetAttachment, id, 0, Origin, Angles)
   pev(id, pev_angles, Angles)
   
   set_pev(ent, pev_origin, Origin)
   set_pev(ent, pev_angles, Angles)
   set_pev(ent, pev_solid, 2)
   set_pev(ent, pev_movetype, 5)
   set_pev(ent, pev_classname, "at4ex_rocket")
   set_pev(ent, pev_owner, id)
   engfunc(EngFunc_SetModel, ent, s_model)
   
   set_pev(ent, pev_mins, {-1.0, -1.0, -1.0})
   set_pev(ent, pev_maxs, {1.0, 1.0, 1.0})
   
   velocity_by_aim(id, 1750, Velocity)
   set_pev(ent, pev_velocity, Velocity)
   
   message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
   write_byte(TE_BEAMFOLLOW) // TE id
   write_short(ent) // entity:attachment to follow
   write_short(g_spr_trail) // sprite index
   write_byte(25) // life in 0.1's
   write_byte(2) // line width in 0.1's
   write_byte(255) // r
   write_byte(255) // g
   write_byte(255) // b
   write_byte(200) // brightness
   message_end()   
   
   set_pev(ent, pev_iuser4, 0)
   set_pev(ent, pev_nextthink, halflife_time() + 0.1)
}

public fw_rocket_think(ent)
{
   if(!pev_valid(ent))
      return

   static Float:Origin[3]
   pev(ent, pev_origin, Origin)
      
   message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
   write_byte(TE_SPRITE)
   engfunc(EngFunc_WriteCoord, Origin[0])
   engfunc(EngFunc_WriteCoord, Origin[1])
   engfunc(EngFunc_WriteCoord, Origin[2])
   write_short(g_smoke_id)
   write_byte(2)
   write_byte(200)
   message_end()
   
   if(pev(ent, pev_iuser4) == 0)
   {
      static Victim
      Victim = FindClosesEnemy(ent)
      
      if(is_user_alive(Victim))
      {
         set_pev(ent, pev_iuser4, Victim)
      }
   } else {
      static Victim
      Victim = pev(ent, pev_iuser4)
      
      if(is_user_alive(Victim))
      {
         static Float:VicOrigin[3]
         pev(Victim, pev_origin, VicOrigin)
         
         turn_to_target(ent, Origin, Victim, VicOrigin)
         hook_ent(ent, Victim, 500.0)
      } else {
         set_pev(ent, pev_iuser4, 0)
      }
   }
      
   set_pev(ent, pev_nextthink, halflife_time() + 0.075)
}

public fw_rocket_touch(rocket, touch)
{
   if(!pev_valid(rocket))
      return   
      
   if(is_user_alive(touch) && pev(rocket, pev_owner) == touch)
      return
      
   static Float:Origin[3]
   pev(rocket, 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(g_spr_exp)   // sprite index
   write_byte(20)   // scale in 0.1's
   write_byte(30)   // framerate
   write_byte(0)   // flags
   message_end()
   
   static owner, iVictim
   
   iVictim = -1
   owner = pev(rocket, pev_owner)   

   while((iVictim = find_ent_in_sphere(iVictim, Origin, get_pcvar_float(cvar_radius))) != 0)
   {
      if((0 < iVictim < 32) && is_user_alive(iVictim)
      && iVictim != owner && zp_get_user_zombie(iVictim))
      {
         new Float:MaxDamage, Float:Damage
         
         MaxDamage = get_pcvar_float(cvar_maxdamage)
         Damage = random_float(MaxDamage - random_float(0.0, 100.0), MaxDamage + random_float(0.0, 100.0))
         
         ExecuteHam(Ham_TakeDamage, iVictim, 0, owner, 0, DMG_BULLET)
         
         static health
         health = get_user_health(iVictim)
            
         if(health - Damage >= 1)
         {
            fm_set_user_health(iVictim, health - floatround(Damage))
         }
         else
         {
            death_message(owner, iVictim, 1)
         }         
      }
   }   
   
   engfunc(EngFunc_RemoveEntity, rocket)
}

stock set_weapon_anim(id, anim)
{
   set_pev(id, pev_weaponanim, anim)

   message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, id)
   write_byte(anim)
   write_byte(pev(id,pev_body))
   message_end()
}

stock death_message(Killer, Victim, ScoreBoard)
{
   // Block death msg
   set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET)
   ExecuteHamB(Ham_Killed, Victim, Killer, 2)
   set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT)
   
   // Death
   make_deathmsg(Killer, Victim, 0, "")

   // Update score board
   if (ScoreBoard)
   {
      message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"))
      write_byte(Killer) // id
      write_short(pev(Killer, pev_frags)) // frags
      write_short(cs_get_user_deaths(Killer)) // deaths
      write_short(0) // class?
      write_short(get_user_team(Killer)) // team
      message_end()
      
      message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"))
      write_byte(Victim) // id
      write_short(pev(Victim, pev_frags)) // frags
      write_short(cs_get_user_deaths(Victim)) // deaths
      write_short(0) // class?
      write_short(get_user_team(Victim)) // team
      message_end()
   }
}

stock FindClosesEnemy(entid)
{
   new Float:Dist
   new Float:maxdistance=300.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)
      && pev(entid, pev_owner) != i && cs_get_user_team(pev(entid, pev_owner)) != cs_get_user_team(i))
      {
         Dist = entity_range(entid, i)
         if(Dist <= maxdistance)
         {
            maxdistance=Dist
            indexid=i
            
            return indexid
         }
      }   
   }   
   return 0
}

stock 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
}

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

stock 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 > 10.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)
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1066\\ f0\\ fs16 \n\\ par }
*/
[/spoiler]

az eredeti sma:
[spoiler]
Kód:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>
#include <zombieplague>

#define PLUGIN "[ZP] Extra Item: AT4CS"
#define VERSION "1.0"
#define AUTHOR "Dias"

#define weapon_at4cs "weapon_m249"
#define CSW_AT4CS CSW_M249

#define TASK_CHECKRELOAD 111112
#define TASK_RELOAD 111113

new g_at4cs
new g_had_at4cs[33], Float:g_lastfire[33], Float:g_lastaim[33], g_aiming[33],
g_smoke_id, g_spr_trail, g_spr_exp, is_reloading[33],
cvar_radius, cvar_maxdamage

new const v_model[] = "models/zombie_plague/v_at4ex.mdl"
new const p_model[] = "models/zombie_plague/p_at4ex.mdl"
new const w_model[] = "models/zombie_plague/w_at4ex.mdl"
new const s_model[] = "models/zombie_plague/s_rocket.mdl"

new const at4cs_sound[5][] = {
   "weapons/at4-1.wav", // Fire Sound
   "weapons/at4_clipin1.wav", // Clip in 1
   "weapons/at4_clipin2.wav", // Clip in 2
   "weapons/at4_clipin3.wav", // Clip in 3
   "weapons/at4_draw.wav"  // Draw
}

public plugin_init()
{
   register_plugin(PLUGIN, VERSION, AUTHOR)
   
   register_event("CurWeapon", "event_curweapon", "be", "1=1")
   register_event("HLTV", "event_newround", "a", "1=0", "2=0")
   
   register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
   register_forward(FM_CmdStart, "fw_CmdStart")
   register_forward(FM_SetModel, "fw_SetModel")
   
   register_think("at4ex_rocket", "fw_rocket_think")
   register_touch("at4ex_rocket", "*", "fw_rocket_touch")
   
   RegisterHam(Ham_Weapon_Reload, weapon_at4cs, "fw_WeaponReload")
   RegisterHam(Ham_Item_AddToPlayer, weapon_at4cs, "fw_AddToPlayer", 1)
   
   cvar_radius = register_cvar("zp_at4cs_radius", "400.0")
   cvar_maxdamage = register_cvar("zp_at4cs_maxdamage", "1250.0")
   
   g_at4cs = zp_register_extra_item("AT4CS", 38, ZP_TEAM_HUMAN)
   
   register_clcmd("weapon_at4cs", "hook_weapon")
}

public hook_weapon(id)
{
   engclient_cmd(id, weapon_at4cs)
   return PLUGIN_HANDLED
}

public plugin_precache()
{
   engfunc(EngFunc_PrecacheModel, v_model)
   engfunc(EngFunc_PrecacheModel, p_model)
   engfunc(EngFunc_PrecacheModel, w_model)
   engfunc(EngFunc_PrecacheModel, s_model)
   
   engfunc(EngFunc_PrecacheGeneric, "sprites/weapon_at4cs.txt")
   engfunc(EngFunc_PrecacheGeneric, "sprites/at4cs.spr")   
   
   g_smoke_id = engfunc(EngFunc_PrecacheModel, "sprites/effects/rainsplash.spr")
   g_spr_trail = engfunc(EngFunc_PrecacheModel,"sprites/xbeam3.spr")
   g_spr_exp = engfunc(EngFunc_PrecacheModel,"sprites/zerogxplode.spr")
   
   for(new i = 0; i < sizeof(at4cs_sound); i++)
      engfunc(EngFunc_PrecacheSound, at4cs_sound[i])
}

public zp_extra_item_selected(id, itemid)
{
   if(itemid != g_at4cs)
      return PLUGIN_HANDLED
      
   g_had_at4cs[id] = 1
   is_reloading[id] = 0
   g_aiming[id] = 0
   
   fm_give_item(id, weapon_at4cs)
   
   static at4cs
   at4cs = fm_get_user_weapon_entity(id, CSW_AT4CS)

   cs_set_weapon_ammo(at4cs, 1)
   cs_set_user_bpammo(id, CSW_AT4CS, 10)
   
   return PLUGIN_CONTINUE
}

public zp_user_infected_post(id)
{
   g_had_at4cs[id] = 0
   is_reloading[id] = 0
   g_aiming[id] = 0
   
   remove_task(id+TASK_CHECKRELOAD)
   remove_task(id+TASK_RELOAD)   
}

public zp_user_humanized_post(id)
{
   g_had_at4cs[id] = 0
   is_reloading[id] = 0
   g_aiming[id] = 0   
   
   remove_task(id+TASK_CHECKRELOAD)
   remove_task(id+TASK_RELOAD)      
}

public event_newround()
{
   remove_entity_name("at4ex_rocket")
   
   for(new i = 0; i < get_maxplayers(); i++)
   {
      if(is_user_alive(i) && is_user_connected(i))
      {
         remove_task(i+TASK_CHECKRELOAD)
         remove_task(i+TASK_RELOAD)   
      }
   }
}

public event_curweapon(id)
{
   if(!is_user_alive(id) || !is_user_connected(id))
      return PLUGIN_HANDLED
      
   if(get_user_weapon(id) != CSW_AT4CS || !g_had_at4cs[id])
      return PLUGIN_HANDLED
   
   if(zp_get_user_zombie(id) || zp_get_user_survivor(id))
      return PLUGIN_HANDLED
      
   set_pev(id, pev_viewmodel2, v_model)
   set_pev(id, pev_weaponmodel2, p_model)
   
   return PLUGIN_CONTINUE
}

public fw_UpdateClientData_Post(id, sendweapons, cd_handle)
{
   if(!is_user_alive(id) || !is_user_connected(id))
      return FMRES_IGNORED
      
   if(get_user_weapon(id) != CSW_AT4CS || !g_had_at4cs[id])
      return FMRES_IGNORED
      
   if(zp_get_user_zombie(id) || zp_get_user_survivor(id))
      return FMRES_IGNORED
      
   set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001) 

   return FMRES_HANDLED
}

public fw_AddToPlayer(ent, id)
{
   if(!is_valid_ent(ent) || !is_user_alive(id))
      return HAM_IGNORED
      
   if(zp_get_user_zombie(id) || zp_get_user_survivor(id))
      return HAM_IGNORED
      
   if(entity_get_int(ent, EV_INT_impulse) == 61296)
   {
      g_had_at4cs[id] = 1
      entity_set_int(id, EV_INT_impulse, 0)
      
      return HAM_HANDLED
   }      

   if(g_had_at4cs[id])
   {
      message_begin(MSG_ONE, get_user_msgid("WeaponList"), _, id)
      write_string("weapon_at4cs");    // WeaponName
      write_byte(3)                  // PrimaryAmmoID
      write_byte(1)                  // PrimaryAmmoMaxAmount
      write_byte(-1)                   // SecondaryAmmoID
      write_byte(-1)                   // SecondaryAmmoMaxAmount
      write_byte(0)                    // SlotID (0...N)
      write_byte(4)                    // NumberInSlot (1...N)
      write_byte(CSW_AT4CS)            // WeaponID
      write_byte(0)                   // Flags
      message_end()
   }
   
   return HAM_HANDLED   
}

public fw_CmdStart(id, uc_handle, seed)
{
   if(!is_user_alive(id) || !is_user_connected(id))
      return FMRES_IGNORED

   if(get_user_weapon(id) != CSW_AT4CS || !g_had_at4cs[id])
      return FMRES_IGNORED
      
   if(zp_get_user_zombie(id) || zp_get_user_survivor(id))
      return FMRES_IGNORED
      
   static CurButton
   CurButton = get_uc(uc_handle, UC_Buttons)
   
   if(CurButton & IN_ATTACK)
   {
      static Float:CurTime
      CurTime = get_gametime()
      
      static at4cs
      at4cs = fm_find_ent_by_owner(-1, weapon_at4cs, id)      
      
      if(cs_get_weapon_ammo(at4cs) > 0 && !is_reloading[id])
      {
         if(CurTime - 4.5 > g_lastfire[id])
         {
            set_weapon_anim(id, 1)
            emit_sound(id, CHAN_WEAPON, at4cs_sound[0], 1.0, ATTN_NORM, 0, PITCH_NORM)
            
            create_rocket(id)
            
            static Float:Punch_Angles[3]
            
            Punch_Angles[0] = -20.0
            Punch_Angles[1] = 0.0
            Punch_Angles[2] = 0.0
            
            set_pev(id, pev_punchangle, Punch_Angles)
            cs_set_weapon_ammo(at4cs, cs_get_weapon_ammo(at4cs) - 1)
            
            if(cs_get_weapon_ammo(at4cs) <= 0 && !is_reloading[id])
            {
               if(cs_get_user_bpammo(id, CSW_AT4CS) > 0)
               {
                  set_task(1.0, "at4cs_reload", id)
               }
            }
            
            if(cs_get_user_zoom(id))
               cs_set_user_zoom(id, CS_RESET_ZOOM, 1)
            
            g_lastfire[id] = CurTime
         }
      } else {
         if(!is_reloading[id])
         {
            if(cs_get_user_bpammo(id, CSW_AT4CS) > 0)
            {
               if(CurTime - 1.0 > g_lastfire[id])
               {
                  at4cs_reload(id)
                  g_lastfire[id] = CurTime
               }
            }
         }
      }
   }
   
   if(CurButton & IN_ATTACK2)
   {
      static Float:CurTime
      CurTime = get_gametime()
      
      if((CurTime - 0.5 > g_lastaim[id]) && !is_reloading[id])
      {
         if(!g_aiming[id])
         {
            cs_set_user_zoom(id, CS_SET_FIRST_ZOOM, 1)
            g_aiming[id] = 1
         } else {
            cs_set_user_zoom(id, CS_RESET_ZOOM, 1)
            g_aiming[id] = 0
         }
         
         g_lastaim[id] = CurTime
      }
   }
   
   CurButton &= ~IN_ATTACK
   set_uc(uc_handle, UC_Buttons, CurButton)
   
   CurButton &= ~IN_RELOAD
   set_uc(uc_handle, UC_Buttons, CurButton)

   return FMRES_HANDLED
}

public fw_SetModel(ent, const model[])
{
   if(!is_valid_ent(ent))
      return FMRES_IGNORED
   
   static szClassName[33]
   entity_get_string(ent, EV_SZ_classname, szClassName, charsmax(szClassName))
   
   if(!equal(szClassName, "weaponbox"))
      return FMRES_IGNORED
   
   static iOwner
   iOwner = entity_get_edict(ent, EV_ENT_owner)
   
   if(equal(model, "models/w_m249.mdl"))
   {
      static at4cs
      at4cs = find_ent_by_owner(-1, "weapon_m249", ent)
      
      if(!is_valid_ent(at4cs))
         return FMRES_IGNORED;
      
      if(g_had_at4cs[iOwner])
      {
         entity_set_int(at4cs, EV_INT_impulse, 61296)
         g_had_at4cs[iOwner] = 0
         entity_set_model(ent, w_model)
         
         return FMRES_SUPERCEDE
      }
   }
   
   return FMRES_IGNORED
}

public at4cs_reload(id)
{
   if(is_reloading[id])
      return
   
   is_reloading[id] = 1
   set_weapon_anim(id, 3)
   
   set_task(0.1, "checking_reload", id+TASK_CHECKRELOAD, _, _, "b")
   set_task(4.0, "reload_complete", id+TASK_RELOAD)
}

public checking_reload(id)
{
   id -= TASK_CHECKRELOAD
   
   if(cs_get_user_zoom(id))
      cs_set_user_zoom(id, CS_RESET_ZOOM, 1)   
   
   if(get_user_weapon(id) != CSW_AT4CS || !g_had_at4cs[id])
   {
      remove_task(id+TASK_CHECKRELOAD)
      remove_task(id+TASK_RELOAD)
      
      is_reloading[id] = 0
   }
}

public reload_complete(id)
{
   id -= TASK_RELOAD
   
   if(!is_reloading[id])
      return
      
   remove_task(id+TASK_CHECKRELOAD)   
      
   static at4cs
   at4cs = fm_find_ent_by_owner(-1, weapon_at4cs, id)   
   
   cs_set_weapon_ammo(at4cs, 1)
   cs_set_user_bpammo(id, CSW_AT4CS, cs_get_user_bpammo(id, CSW_AT4CS) - 1)
   is_reloading[id] = 0
}

public fw_WeaponReload(ent)
{
   static id
   id = pev(ent, pev_owner)
   
   if(!is_user_alive(id) || !is_user_connected(id))
      return HAM_IGNORED
      
   if(get_user_weapon(id) != CSW_AT4CS || !g_had_at4cs[id])
      return HAM_IGNORED
      
   if(zp_get_user_zombie(id) || zp_get_user_survivor(id))
      return HAM_IGNORED   
      
   static Float:CurTime
   CurTime = get_gametime()      
      
   if(!is_reloading[id])
   {
      if(cs_get_user_bpammo(id, CSW_AT4CS) > 0)
      {
         if(CurTime - 1.0 > g_lastfire[id])
         {
            at4cs_reload(id)
            g_lastfire[id] = CurTime
         }
      }
   }   
      
   return HAM_SUPERCEDE
}

public create_rocket(id)
{
   new ent, Float:Origin[3], Float:Angles[3], Float:Velocity[3]
   
   ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
   engfunc(EngFunc_GetAttachment, id, 0, Origin, Angles)
   pev(id, pev_angles, Angles)
   
   set_pev(ent, pev_origin, Origin)
   set_pev(ent, pev_angles, Angles)
   set_pev(ent, pev_solid, 2)
   set_pev(ent, pev_movetype, 5)
   set_pev(ent, pev_classname, "at4ex_rocket")
   set_pev(ent, pev_owner, id)
   engfunc(EngFunc_SetModel, ent, s_model)
   
   set_pev(ent, pev_mins, {-1.0, -1.0, -1.0})
   set_pev(ent, pev_maxs, {1.0, 1.0, 1.0})
   
   velocity_by_aim(id, 1750, Velocity)
   set_pev(ent, pev_velocity, Velocity)
   
   message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
   write_byte(TE_BEAMFOLLOW) // TE id
   write_short(ent) // entity:attachment to follow
   write_short(g_spr_trail) // sprite index
   write_byte(25) // life in 0.1's
   write_byte(2) // line width in 0.1's
   write_byte(255) // r
   write_byte(255) // g
   write_byte(255) // b
   write_byte(200) // brightness
   message_end()   
   
   set_pev(ent, pev_iuser4, 0)
   set_pev(ent, pev_nextthink, halflife_time() + 0.1)
}

public fw_rocket_think(ent)
{
   if(!pev_valid(ent))
      return

   static Float:Origin[3]
   pev(ent, pev_origin, Origin)
      
   message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
   write_byte(TE_SPRITE)
   engfunc(EngFunc_WriteCoord, Origin[0])
   engfunc(EngFunc_WriteCoord, Origin[1])
   engfunc(EngFunc_WriteCoord, Origin[2])
   write_short(g_smoke_id)
   write_byte(2)
   write_byte(200)
   message_end()
   
   if(pev(ent, pev_iuser4) == 0)
   {
      static Victim
      Victim = FindClosesEnemy(ent)
      
      if(is_user_alive(Victim))
      {
         set_pev(ent, pev_iuser4, Victim)
      }
   } else {
      static Victim
      Victim = pev(ent, pev_iuser4)
      
      if(is_user_alive(Victim))
      {
         static Float:VicOrigin[3]
         pev(Victim, pev_origin, VicOrigin)
         
         turn_to_target(ent, Origin, Victim, VicOrigin)
         hook_ent(ent, Victim, 500.0)
      } else {
         set_pev(ent, pev_iuser4, 0)
      }
   }
      
   set_pev(ent, pev_nextthink, halflife_time() + 0.075)
}

public fw_rocket_touch(rocket, touch)
{
   if(!pev_valid(rocket))
      return   
      
   if(is_user_alive(touch) && pev(rocket, pev_owner) == touch)
      return
      
   static Float:Origin[3]
   pev(rocket, 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(g_spr_exp)   // sprite index
   write_byte(20)   // scale in 0.1's
   write_byte(30)   // framerate
   write_byte(0)   // flags
   message_end()
   
   static owner, iVictim
   
   iVictim = -1
   owner = pev(rocket, pev_owner)   

   while((iVictim = find_ent_in_sphere(iVictim, Origin, get_pcvar_float(cvar_radius))) != 0)
   {
      if((0 < iVictim < 32) && is_user_alive(iVictim)
      && iVictim != owner && zp_get_user_zombie(iVictim))
      {
         new Float:MaxDamage, Float:Damage
         
         MaxDamage = get_pcvar_float(cvar_maxdamage)
         Damage = random_float(MaxDamage - random_float(0.0, 100.0), MaxDamage + random_float(0.0, 100.0))
         
         ExecuteHam(Ham_TakeDamage, iVictim, 0, owner, 0, DMG_BULLET)
         
         static health
         health = get_user_health(iVictim)
            
         if(health - Damage >= 1)
         {
            fm_set_user_health(iVictim, health - floatround(Damage))
         }
         else
         {
            death_message(owner, iVictim, 1)
         }         
      }
   }   
   
   engfunc(EngFunc_RemoveEntity, rocket)
}

stock set_weapon_anim(id, anim)
{
   set_pev(id, pev_weaponanim, anim)

   message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, id)
   write_byte(anim)
   write_byte(pev(id,pev_body))
   message_end()
}

stock death_message(Killer, Victim, ScoreBoard)
{
   // Block death msg
   set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET)
   ExecuteHamB(Ham_Killed, Victim, Killer, 2)
   set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT)
   
   // Death
   make_deathmsg(Killer, Victim, 0, "")

   // Update score board
   if (ScoreBoard)
   {
      message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"))
      write_byte(Killer) // id
      write_short(pev(Killer, pev_frags)) // frags
      write_short(cs_get_user_deaths(Killer)) // deaths
      write_short(0) // class?
      write_short(get_user_team(Killer)) // team
      message_end()
      
      message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"))
      write_byte(Victim) // id
      write_short(pev(Victim, pev_frags)) // frags
      write_short(cs_get_user_deaths(Victim)) // deaths
      write_short(0) // class?
      write_short(get_user_team(Victim)) // team
      message_end()
   }
}

stock FindClosesEnemy(entid)
{
   new Float:Dist
   new Float:maxdistance=300.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)
      && pev(entid, pev_owner) != i && cs_get_user_team(pev(entid, pev_owner)) != cs_get_user_team(i))
      {
         Dist = entity_range(entid, i)
         if(Dist <= maxdistance)
         {
            maxdistance=Dist
            indexid=i
            
            return indexid
         }
      }   
   }   
   return 0
}

stock 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
}

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

stock 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 > 10.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)
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1066\\ f0\\ fs16 \n\\ par }
*/
[/spoiler]

örülnék ha valaki tudna segíteni mert akkor már remélhetően a többit magamtól írom át és feltöltögetném az oldalra :)


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: AT4CS
HozzászólásElküldve:2012.03.16. 21:51 
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
de komolyan mar ezzel tokolsz amikor ottvan a nst_buymenu :)Ahoz csak model+sound+spr kell :dvagy ami tartozik a fegyverhez es beleirod az ini-be majd tudod vasarolni :D

_________________
Idk. Csak ugy funbooo.
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: AT4CS
HozzászólásElküldve:2012.03.16. 21:52 
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
hát... nincs vásárlási cvar hozzá
szerverre kell nekem :)


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: AT4CS
HozzászólásElküldve:2012.03.17. 06:22 
Offline
Nagyúr
Avatar

Csatlakozott:2011.09.07. 18:41
Hozzászólások:642
Megköszönt másnak: 15 alkalommal
Megköszönték neki: 6 alkalommal
Hát én láttam sima bazookat am kérd meg az orosz diast biztos megcsinálja egy kis léért :D

_________________
Kép
Kép
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: AT4CS
HozzászólásElküldve:2012.03.17. 09:09 
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
Vath írta:
Hát én láttam sima bazookat am kérd meg az orosz diast biztos megcsinálja egy kis léért :D


nem szóltam -.-
vegyük úgy hogy ez a téma nem is volt


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: AT4CS
HozzászólásElküldve:2012.03.17. 09:35 
Offline
Nagyúr
Avatar

Csatlakozott:2011.09.07. 18:41
Hozzászólások:642
Megköszönt másnak: 15 alkalommal
Megköszönték neki: 6 alkalommal
Csak hülyültem na bocsesz érte :D

_________________
Kép
Kép
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  [6 hozzászólás ] 


Ki van itt

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