[rezolvat!]Plugin laser biohazard.

Categoria cu cereri de pluginuri si nu numai.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Forum rules
Accesează link-ul pentru a putea vedea regulile forumului

Daca doriti sa vi se modifice un plugin, va rugam postati aici .
Aliacee
Membru, skill +1
Membru, skill +1
Posts: 108
Joined: 29 Nov 2015, 19:05
Detinator Steam: Da
CS Status: Citesc forumul eXtreamCS.com...!
Fond eXtream: 0
Contact:

06 Jan 2019, 17:29

Plugin Cerut: Plugin laser biohazard.
Descriere (adica ce face el mai exact): As dori si eu daca se poate un plugin de laser pentru modul Biohazard.
Tin sa precisez ca toate pluginurile pentru lasere pe care le-am testat pana acum au urmatoarele bguri:[/color]
1. Daca pui laser peste laser, poti trece, conteaza cine a pus al doielea laser, pot trece zombii, cat si oamenii.
2. Daca pui lasere intr-o runda si te pui la spectator, laserele raman pana cand iesi de pe server sau te bagi inapoi intr-o echipa.
3. Uneori la sfarsitul rundei, poti muri chiar si in laserele tale. Nu conteaza daca esti om sau zombie.
Serverul ruleaza (HLDS/ReHLDS): ReHLDS
Versiune AMX Mod X: 1.8.3
Modul Serverului: Biohazard

Precizari:[/color]
Mi s-a modificat un plugin,de catre un membru staff, unde sustine ca urmatoarele buguri ai fost rezolvate:

"- la sfarsit de runda sau cand cineva se pune spec, laserele sunt eliminate
- nu poti pune laser peste laser
- am scos hudul atunci cand pui tinta pe un laser"

Acesta este pluginul modificat de cate un membru staff din comunitate:[/color]
| Afiseaza codul
#include <amxmodx> 
#include <amxmisc> 
#include <fakemeta> 
#include <hamsandwich> 
#include <xs> 
#include <cstrike> 
#include <biohazard> 

#define PLUGIN "[ZP] LaserMine" 
#define VERSION "2.8.1" 
#define AUTHOR "SandStriker / Shidla / QuZ/DJ_WEST" 

#define RemoveEntity(%1)   engfunc(EngFunc_RemoveEntity,%1) 
#define TASK_PLANT         15100 
#define TASK_RESET         15500 
#define TASK_RELEASE      15900 

#define LASERMINE_TEAM      pev_iuser1 
#define LASERMINE_OWNER      pev_iuser2 
#define LASERMINE_STEP      pev_iuser3 
#define LASERMINE_HITING   pev_iuser4 
#define LASERMINE_COUNT      pev_fuser1 

#define LASERMINE_POWERUP   pev_fuser2 
#define LASERMINE_BEAMTHINK   pev_fuser3 

#define LASERMINE_BEAMENDPOINT   pev_vuser1 
#define MAX_MINES         10 
#define MODE_LASERMINE      0 
#define OFFSET_TEAM         114 
#define OFFSET_MONEY      115 
#define OFFSET_DEATH      444 

#define cs_get_user_team(%1)   CsTeams:get_offset_value(%1,OFFSET_TEAM) 
#define cs_get_user_deaths(%1)   get_offset_value(%1,OFFSET_DEATH) 

new const LMCost = 2 

new const 
   Red_Hum      = 0, 
   Green_Hum    = 0, 
   Blue_Hum   = 255; 

new const 
   Red_Zomb   = 255, 
   Green_Zomb    = 0, 
   Blue_Zomb   = 0; 

enum tripmine_e { 
   TRIPMINE_IDLE1 = 0, 
   TRIPMINE_IDLE2, 
   TRIPMINE_ARM1, 
   TRIPMINE_ARM2, 
   TRIPMINE_FIDGET, 
   TRIPMINE_HOLSTER, 
   TRIPMINE_DRAW, 
   TRIPMINE_WORLD, 
   TRIPMINE_GROUND, 
}; 

enum 
{ 
   POWERUP_THINK, 
   BEAMBREAK_THINK, 
   EXPLOSE_THINK 
}; 

enum 
{ 
   POWERUP_SOUND, 
   ACTIVATE_SOUND, 
   STOP_SOUND 
}; 

new const 
   ENT_MODELS[]   = "models/v_tripmine.mdl", 
   ENT_SOUND1[]   = "weapons/mine_deploy.wav", 
   ENT_SOUND2[]   = "weapons/mine_charge.wav", 
   ENT_SOUND3[]   = "weapons/mine_activate.wav", 
   ENT_SOUND4[]   = "debris/beamstart9.wav", 
   ENT_SOUND5[]   = "items/gunpickup2.wav", 
   ENT_SOUND6[]   = "debris/bustglass1.wav", 
   ENT_SOUND7[]   = "debris/bustglass2.wav", 
   ENT_SPRITE1[]   = "sprites/laserbeam.spr", 
   ENT_SPRITE2[]   = "sprites/lm_explode.spr"; 

new const 
   ENT_CLASS_NAME[]   =   "lasermine", 
   ENT_CLASS_NAME3[]   =   "func_breakable", 
   gSnarkClassName[]   =   "wpn_snark",  
   barnacle_class[]   =   "barnacle",      
   weapon_box[]      =   "weaponbox"; 

new g_EntMine, beam, boom 
new g_LENABLE, g_LFMONEY, g_LAMMO, g_LDMG, g_LBEO, g_LTMAX, g_LCOST, g_LHEALTH, g_LMODE, g_LRADIUS, g_NOROUND 
new g_LRDMG,g_LFF,g_LCBT, g_LDELAY, g_LVISIBLE, g_LSTAMMO, g_LACCESS, g_LGLOW, g_LDMGMODE, g_LCLMODE 
new g_LCBRIGHT, g_LDSEC, g_LCMDMODE, g_LBUYMODE, g_LME, g_LDETAIL; 
new g_msgDeathMsg,g_msgScoreInfo,g_msgDamage,g_msgStatusText; 
new g_dcount[33],g_nowtime,g_MaxPL 
new bool:g_settinglaser[33] 
new ID_BLOOD; 

new Float:plspeed[33], plsetting[33], g_havemine[33], g_deployed[33]; 

public plugin_init() 
{ 
   register_plugin(PLUGIN, VERSION, AUTHOR); 

   RegisterHam(Ham_TakeDamage, ENT_CLASS_NAME3, "Laser_TakeDamage"); 
  
   register_clcmd("+setlaser","CreateLaserMine_Progress_b"); 
   register_clcmd("-setlaser","StopCreateLaserMine"); 
   register_clcmd("+dellaser","ReturnLaserMine_Progress"); 
   register_clcmd("-dellaser","StopReturnLaserMine"); 
   register_clcmd("say","say_lasermine"); 
   register_clcmd("buy_lasermine","BuyLasermine"); 

   register_concmd("bh_untakelm", "luatlaser", ADMIN_LEVEL_B, " - <nume>"); 
   register_concmd("bh_takelm", "puslaser", ADMIN_LEVEL_B, " - <nume>"); 

   g_LENABLE   = register_cvar("bh_ltm","1"); 
   g_LACCESS   = register_cvar("bh_ltm_acs","0"); 
   g_LMODE      = register_cvar("bh_ltm_mode","0"); 
   g_LAMMO      = register_cvar("bh_ltm_ammo","2"); 
   g_LDMG      = register_cvar("bh_ltm_dmg","10000"); 
   g_LCOST      = register_cvar("bh_ltm_cost","5000"); 
   g_LFMONEY   = register_cvar("bh_ltm_fragmoney","1"); 
   g_LHEALTH   = register_cvar("bh_ltm_health","5"); 
   g_LTMAX      = register_cvar("bh_ltm_teammax","100"); 
   g_LRADIUS   = register_cvar("bh_ltm_radius","320.0") 
   g_LRDMG      = register_cvar("bh_ltm_rdmg","100") 
   g_LFF      = register_cvar("bh_ltm_ff","0"); 
   g_LCBT      = register_cvar("bh_ltm_cbt","ALL"); 
   g_LDELAY   = register_cvar("bh_ltm_delay","0.1"); 
   g_LVISIBLE   = register_cvar("bh_ltm_line","1"); 
   g_LGLOW      = register_cvar("bh_ltm_glow","0"); 
   g_LCBRIGHT   = register_cvar("bh_ltm_bright","255"); 
   g_LCLMODE   = register_cvar("bh_ltm_color","0"); 
   g_LDMGMODE   = register_cvar("bh_ltm_ldmgmode","0"); 
   g_LDSEC      = register_cvar("bh_ltm_ldmgseconds","1"); 
   g_LSTAMMO   = register_cvar("bh_ltm_startammo","2"); 
   g_LBUYMODE   = register_cvar("bh_ltm_buymode","1"); 
   g_LCMDMODE   = register_cvar("bh_ltm_cmdmode","1");      
   g_LBEO      = register_cvar("bh_ltm_brokeenemy","1"); 
   g_NOROUND   = register_cvar("bh_ltm_noround","1"); 
   g_LDETAIL  = register_cvar("bh_ltm_realistic_detail", "1");

   register_event("DeathMsg", "DeathEvent", "a"); 
   register_event("CurWeapon", "standing", "be", "1=1"); 
   register_event("ResetHUD", "delaycount", "a"); 
   register_event("ResetHUD", "newround", "b"); 
   register_logevent("endround", 2, "0=World triggered", "1=Round_End");  
   register_event("Damage","CutDeploy_onDamage","b"); 
   g_msgDeathMsg   = get_user_msgid("DeathMsg"); 
   g_msgScoreInfo   = get_user_msgid("ScoreInfo"); 
   g_msgDamage      = get_user_msgid("Damage"); 
   g_msgStatusText = get_user_msgid("StatusText"); 
  
   register_forward(FM_Think, "ltm_Think"); 
   register_forward(FM_PlayerPostThink, "ltm_PostThink"); 
   register_forward(FM_PlayerPreThink, "ltm_PreThink"); 
  
   register_dictionary("lasermines.txt") 
} 

public plugin_precache() 
{ 
   precache_sound(ENT_SOUND1); 
   precache_sound(ENT_SOUND2); 
   precache_sound(ENT_SOUND3); 
   precache_sound(ENT_SOUND4); 
   precache_sound(ENT_SOUND5); 
   precache_sound(ENT_SOUND6); 
   precache_sound(ENT_SOUND7); 
   precache_model(ENT_MODELS); 
   beam = precache_model(ENT_SPRITE1); 
   boom = precache_model(ENT_SPRITE2); 
   return PLUGIN_CONTINUE; 
} 

public plugin_modules() 
{ 
   require_module("fakemeta"); 
   require_module("cstrike"); 
} 

public plugin_cfg() 
{ 
   g_EntMine = engfunc(EngFunc_AllocString,ENT_CLASS_NAME3); 
   arrayset(g_havemine,0,sizeof(g_havemine)); 
   arrayset(g_deployed,0,sizeof(g_deployed)); 
   g_MaxPL = get_maxplayers(); 

   new file[64]; get_localinfo("amxx_configsdir",file,63); 
   format(file, 63, "%s/bh_ltm_cvars.cfg", file); 
   if(file_exists(file)) server_cmd("exec %s", file), server_exec(); 
} 

public luatlaser(id, level, cid) 
{ 
   if (!cmd_access(id, level, cid, 2)) 
   { 
      return PLUGIN_HANDLED 
   } 

   new arg[32] 
    
   read_argv(1, arg, 31) 
   new player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF) 
    
   if (!player) 
      return PLUGIN_HANDLED 

   DeleteTask(player); 
   RemoveAllTripmines(player); 

   new namea[32],namep[32]; 
   get_user_name(id,namea,charsmax(namea)); 
   get_user_name(player,namep,charsmax(namep)); 
   client_printcolor(0, "!g[Biohazard] !yAdminul !g%s !yi-a dezactivat laserele lui !g%s!y.", namea, namep);

   return PLUGIN_HANDLED; 
} 

public puslaser(id, level, cid) 
{ 
   if (!cmd_access(id, level, cid, 2)) 
   { 
      return PLUGIN_HANDLED 
   } 

   new arg[32] 
    
   read_argv(1, arg, 31) 
   new player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF) 
    
   if (!player) 
      return PLUGIN_HANDLED 

   DeleteTask(player); 
   SetStartAmmo(player); 

   new namea[32],namep[32]; 
   get_user_name(id,namea,charsmax(namea)); 
   get_user_name(player,namep,charsmax(namep)); 
   client_printcolor(0, "!g[Biohazard] !yAdminul !g%s !yi-a reactivat laserele lui !g%s!y.", namea, namep);

   return PLUGIN_HANDLED; 
} 

public checkIfspec(id) 
{ 
    if( g_deployed[id] > 0 ) 
    { 
          if(cs_get_user_team(id) == CS_TEAM_SPECTATOR) 
          { 
               DeleteTask(id); 
               RemoveAllTripmines(id); 

               new namep[32]; 
               get_user_name(id,namep,charsmax(namep)); 
               client_printcolor(0,"!g[Biohazard] !yLaserele lui !g%s !gau fost dezactivate deoarece s-a mutat la !gspectatori!y!",namep); 
          } 
     } 
} 

public Laser_TakeDamage(victim, inflictor, attacker, Float:f_Damage, bit_Damage) 
{ 
   if(get_pcvar_num(g_LBEO)) 
   { 
      new i_Owner 

      i_Owner = pev(victim, LASERMINE_OWNER) 
      
      if(CsTeams:pev(victim, LASERMINE_TEAM) == cs_get_user_team(attacker)) 
      
      if(i_Owner != attacker) 
         return HAM_SUPERCEDE 
      return PLUGIN_CONTINUE 
   } 
   return PLUGIN_CONTINUE 
} 

public delaycount(id) 
{ 
   g_dcount[id] = floatround(get_gametime()); 
} 

bool:CheckTime(id) 
{ 
   g_nowtime = floatround(get_gametime()) - g_dcount[id]; 
   if(g_nowtime >= get_pcvar_num(g_LDELAY)) 
      return true; 
   return false; 
} 

public CreateLaserMine_Progress_b(id) 
{ 
   if(get_pcvar_num(g_LCMDMODE) != 0) 
      CreateLaserMine_Progress(id); 
   return PLUGIN_HANDLED; 
} 

public CreateLaserMine_Progress(id) 
{ 
   if(!CreateCheck(id)) 
      return PLUGIN_HANDLED; 
   g_settinglaser[id] = true; 

   message_begin(MSG_ONE, 108, {0,0,0}, id); 
   write_byte(1); 
   write_byte(0); 
   message_end(); 

   set_task(1.2, "Spawn", (TASK_PLANT + id)); 

   return PLUGIN_HANDLED; 
} 

public ReturnLaserMine_Progress(id) 
{ 
   if(!ReturnCheck(id)) 
      return PLUGIN_HANDLED; 
   g_settinglaser[id] = true; 

   message_begin(MSG_ONE, 108, {0,0,0}, id); 
   write_byte(1); 
   write_byte(0); 
   message_end(); 

   set_task(1.2, "ReturnMine", (TASK_RELEASE + id)); 

   return PLUGIN_HANDLED; 
} 

public StopCreateLaserMine(id) 
{ 
   DeleteTask(id); 
   message_begin(MSG_ONE, 108, {0,0,0}, id); 
   write_byte(0); 
   write_byte(0); 
   message_end(); 

   return PLUGIN_HANDLED; 
} 

public StopReturnLaserMine(id) 
{ 
   DeleteTask(id); 
   message_begin(MSG_ONE, 108, {0,0,0}, id); 
   write_byte(0); 
   write_byte(0); 
   message_end(); 

   return PLUGIN_HANDLED; 
} 

public ReturnMine(id) 
{ 
   id -= TASK_RELEASE; 
   new tgt,body,Float:vo[3],Float:to[3]; 
   get_user_aiming(id,tgt,body); 
   if(!pev_valid(tgt)) return; 
   pev(id,pev_origin,vo); 
   pev(tgt,pev_origin,to); 
   if(get_distance_f(vo,to) > 70.0) return; 
   new EntityName[32]; 
   pev(tgt, pev_classname, EntityName, 31); 
   if(!equal(EntityName, ENT_CLASS_NAME)) return; 
   if(pev(tgt,LASERMINE_OWNER) != id) return; 
   RemoveEntity(tgt); 

   g_havemine[id] ++; 
   g_deployed[id] --; 
   emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) 
   ShowAmmo(id) 

   return; 
} 

public Spawn(id) 
{ 
   id -= TASK_PLANT 
  
   new i_Ent = engfunc(EngFunc_CreateNamedEntity,g_EntMine); 
   if(!i_Ent) 
   { 
      client_print(id, print_chat,"[Laesrmine Debug] Can't Create Entity"); 
      return PLUGIN_HANDLED_MAIN; 
   } 
   set_pev(i_Ent,pev_classname,ENT_CLASS_NAME); 

   engfunc(EngFunc_SetModel,i_Ent,ENT_MODELS); 

   set_pev(i_Ent,pev_solid,SOLID_NOT); 
   set_pev(i_Ent,pev_movetype,MOVETYPE_FLY); 

   set_pev(i_Ent,pev_frame,0); 
   set_pev(i_Ent,pev_body,3); 
   set_pev(i_Ent,pev_sequence,TRIPMINE_WORLD); 
   set_pev(i_Ent,pev_framerate,0); 
   set_pev(i_Ent,pev_takedamage,DAMAGE_YES); 
   set_pev(i_Ent,pev_dmg,100.0); 
   set_user_health(i_Ent,get_pcvar_num(g_LHEALTH)); 
   new Float:vOrigin[3]; 
   new   Float:vNewOrigin[3],Float:vNormal[3],Float:vTraceDirection[3], 
      Float:vTraceEnd[3],Float:vEntAngles[3]; 
   pev(id, pev_origin, vOrigin); 
   velocity_by_aim(id, 128, vTraceDirection); 
   xs_vec_add(vTraceDirection, vOrigin, vTraceEnd); 
   engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0); 
   new Float:fFraction; 
   get_tr2(0, TR_flFraction, fFraction); 

   if(fFraction < 1.0) 
   { 
      
      get_tr2(0, TR_vecEndPos, vTraceEnd); 
      get_tr2(0, TR_vecPlaneNormal, vNormal); 
   } 

   xs_vec_mul_scalar(vNormal, 8.0, vNormal); 
   xs_vec_add(vTraceEnd, vNormal, vNewOrigin); 

   engfunc(EngFunc_SetSize, i_Ent, Float:{ -4.0, -4.0, -4.0 }, Float:{ 4.0, 4.0, 4.0 }); 
   engfunc(EngFunc_SetOrigin, i_Ent, vNewOrigin); 

   vector_to_angle(vNormal,vEntAngles); 
   set_pev(i_Ent,pev_angles,vEntAngles); 

   new Float:vBeamEnd[3], Float:vTracedBeamEnd[3]; 
        
   xs_vec_mul_scalar(vNormal, 8192.0, vNormal); 
   xs_vec_add(vNewOrigin, vNormal, vBeamEnd); 

   engfunc(EngFunc_TraceLine, vNewOrigin, vBeamEnd, IGNORE_MONSTERS, -1, 0); 

   get_tr2(0, TR_vecPlaneNormal, vNormal); 
   get_tr2(0, TR_vecEndPos, vTracedBeamEnd); 
  
   set_pev(i_Ent, LASERMINE_OWNER, id); 
   set_pev(i_Ent,LASERMINE_BEAMENDPOINT,vTracedBeamEnd); 
   set_pev(i_Ent,LASERMINE_TEAM,int:cs_get_user_team(id)); 
   new Float:fCurrTime = get_gametime(); 

   set_pev(i_Ent,LASERMINE_POWERUP, fCurrTime + 2.5); 
   set_pev(i_Ent,LASERMINE_STEP,POWERUP_THINK); 
   set_pev(i_Ent,pev_nextthink, fCurrTime + 0.2); 

   PlaySound(i_Ent,POWERUP_SOUND); 
   g_deployed[id]++; 
   g_havemine[id]--; 
   DeleteTask(id); 
   ShowAmmo(id); 
   return 1; 
} 

stock TeamDeployedCount(id) 
{ 
   static i; 
   static CsTeams:t;t = cs_get_user_team(id); 
   static cnt;cnt=0; 

   for(i = 1;i <= g_MaxPL;i++) 
   { 
      if(is_user_connected(i)) 
         if(t == cs_get_user_team(i)) 
            cnt += g_deployed; 
   } 

   return cnt; 
} 

bool:CheckCanTeam(id) 
{ 
   new arg[5],CsTeam:num; 
   get_pcvar_string(g_LCBT,arg,3); 
   if(equali(arg,"Z")) 
   { 
      num = CsTeam:CS_TEAM_T; 
   } 
   else if(equali(arg,"H")) 
   { 
      num = CsTeam:CS_TEAM_CT; 
   } 
   else if(equali(arg,"ALL") || equali(arg,"HZ") || equali(arg,"ZH")) 
   { 
      num = CsTeam:CS_TEAM_UNASSIGNED; 
   } 
   else 
   { 
      num = CsTeam:CS_TEAM_UNASSIGNED; 
   } 
   if(num != CsTeam:CS_TEAM_UNASSIGNED && num != CsTeam:cs_get_user_team(id)) 
      return false; 
   return true; 
} 

bool:CanCheck(id,mode)  
{ 
   if(!get_pcvar_num(g_LENABLE)) 
   { 
      client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOTACTIVE") 

      return false; 
   } 
   if(get_pcvar_num(g_LACCESS) != 0) 
      if(!(get_user_flags(id) & ADMIN_IMMUNITY)) 
      { 
         client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOACCESS") 
         return false; 
      } 
   if(!pev_user_alive(id)) return false; 
   if(!CheckCanTeam(id)) 
   { 
      client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_CBT") 
      return false; 
   } 
   if(mode == 0) 
   { 
      if(g_havemine[id] <= 0) 
      { 
         client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_DONTHAVEMINE") 
         return false; 
      } 
   } 
   if(mode == 1) 
   { 
      if(get_pcvar_num(g_LBUYMODE) == 0) 
      { 
         client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_CANTBUY") 
         return false; 
      } 
      if(g_havemine[id] >= get_pcvar_num(g_LAMMO)) 
      { 
         client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_HAVEMAX") 
         return false; 
      } 
      if(cs_get_user_money(id) < get_pcvar_num(g_LCOST)) 
      { 
         client_print(id, print_chat, "%L %L%d %L", id, "CHATTAG",id, "STR_NOMONEY",get_pcvar_num(g_LCOST),id, "STR_NEEDED") 
         return false; 
      } 
   } 
   if(!CheckTime(id)) 
   { 
      client_print(id, print_chat, "%L %L %d %L", id, "CHATTAG",id, "STR_DELAY",get_pcvar_num(g_LDELAY)-g_nowtime,id, "STR_SECONDS") 
      return false; 
   } 

   return true; 
} 

bool:ReturnCheck(id) 
{ 
   if(!CanCheck(id,-1)) return false; 
   if(g_havemine[id] + 1 > get_pcvar_num(g_LAMMO)) return false; 
   new tgt,body,Float:vo[3],Float:to[3]; 
   get_user_aiming(id,tgt,body); 
   if(!pev_valid(tgt)) return false; 
   pev(id,pev_origin,vo); 
   pev(tgt,pev_origin,to); 
   if(get_distance_f(vo,to) > 70.0) return false; 
   new EntityName[32]; 
   pev(tgt, pev_classname, EntityName, 31); 
   if(!equal(EntityName, ENT_CLASS_NAME)) return false; 
   if(pev(tgt,LASERMINE_OWNER) != id) return false; 
   return true; 
} 

bool:CreateCheck(id) 
{ 
   if(!CanCheck(id,0)) return false; 
  
   if(!game_started() && get_pcvar_num(g_NOROUND)) 
   { 
      client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOROUND") 
      return false; 
   } 
   
   // adaugat de YONTU
   static iEntity, iDummy, cClassname[ 32 ]; 
   get_user_aiming(id, iEntity, iDummy, 9999 ); 

   if( pev_valid( iEntity ) ) 
   { 
        pev( iEntity, pev_classname, cClassname, 31 ); 

        if( equal( cClassname, ENT_CLASS_NAME ) ) 
        { 
             client_print(id, print_chat, "%L Nu poti planta laser peste laser.", id, "CHATTAG") 
             return false;
        } 
   }

   if(g_deployed[id] >= get_pcvar_num(g_LAMMO)) 
   { 
      client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_MAXDEPLOY") 
      return false; 
   } 

   if(TeamDeployedCount(id) >= get_pcvar_num(g_LTMAX)) 
   { 
      client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_MANYPPL") 
      return false; 
   } 
   new Float:vTraceDirection[3], Float:vTraceEnd[3],Float:vOrigin[3]; 
   pev(id, pev_origin, vOrigin); 
   velocity_by_aim(id, 128, vTraceDirection); 
   xs_vec_add(vTraceDirection, vOrigin, vTraceEnd); 
   engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0); 
   new Float:fFraction,Float:vTraceNormal[3]; 
   get_tr2(0, TR_flFraction, fFraction); 
  
   if(fFraction < 1.0) 
   { 
      
      get_tr2(0, TR_vecEndPos, vTraceEnd); 
      get_tr2(0, TR_vecPlaneNormal, vTraceNormal); 

      return true; 
   } 

   client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_PLANTWALL") 
   DeleteTask(id); 
  
   return false; 
} 

public ltm_Think(i_Ent) 
{ 
   if(!pev_valid(i_Ent)) 
      return FMRES_IGNORED; 
   new EntityName[32]; 
   pev(i_Ent, pev_classname, EntityName, 31); 
   if(!get_pcvar_num(g_LENABLE)) return FMRES_IGNORED; 
  
   if(!equal(EntityName, ENT_CLASS_NAME)) 
      return FMRES_IGNORED; 

   static Float:fCurrTime; 
   fCurrTime = get_gametime(); 

   switch(pev(i_Ent, LASERMINE_STEP)) 
   { 
      case POWERUP_THINK : 
      { 
         new Float:fPowerupTime; 
         pev(i_Ent, LASERMINE_POWERUP, fPowerupTime); 

         if(fCurrTime > fPowerupTime) 
         { 
            set_pev(i_Ent, pev_solid, SOLID_BBOX); 
            set_pev(i_Ent, LASERMINE_STEP, BEAMBREAK_THINK); 

            PlaySound(i_Ent, ACTIVATE_SOUND); 
         } 
         if(get_pcvar_num(g_LGLOW)!=0) 
         { 
            if(get_pcvar_num(g_LCLMODE)==0) 
            { 
               switch (pev(i_Ent,LASERMINE_TEAM)) 
               { 
                  
                  case CS_TEAM_T: set_rendering(i_Ent,kRenderFxGlowShell,Red_Zomb,Green_Zomb,Blue_Zomb,kRenderNormal,5); 
                  
                  case CS_TEAM_CT:set_rendering(i_Ent,kRenderFxGlowShell,Red_Hum,Green_Hum,Blue_Hum,kRenderNormal,5); 
               } 
            }else 
            { 
              
               set_rendering(i_Ent,kRenderFxGlowShell,random_num(50 , 200),random_num(50 , 200),random_num(50 , 200),kRenderNormal,5); 
            } 
         } 
         set_pev(i_Ent, pev_nextthink, fCurrTime + 0.1); 
      } 
      case BEAMBREAK_THINK : 
      { 
         static Float:vEnd[3],Float:vOrigin[3]; 
         pev(i_Ent, pev_origin, vOrigin); 
         pev(i_Ent, LASERMINE_BEAMENDPOINT, vEnd); 

         static iHit, Float:fFraction; 
         engfunc(EngFunc_TraceLine, vOrigin, vEnd, DONT_IGNORE_MONSTERS, i_Ent, 0); 

         get_tr2(0, TR_flFraction, fFraction); 
         iHit = get_tr2(0, TR_pHit); 

        
         if(fFraction < 1.0) 
         { 
            
            if(pev_valid(iHit)) 
            { 
               pev(iHit, pev_classname, EntityName, 31); 
              
               if(!equal(EntityName, ENT_CLASS_NAME) && !equal(EntityName, gSnarkClassName) && !equal(EntityName, barnacle_class) && !equal(EntityName, weapon_box)) 
               { 
                  set_pev(i_Ent, pev_enemy, iHit); 

                  if(get_pcvar_num(g_LMODE) == MODE_LASERMINE) 
                     CreateLaserDamage(i_Ent,iHit); 
                  else 
                     if(get_pcvar_num(g_LFF) || CsTeams:pev(i_Ent,LASERMINE_TEAM) != cs_get_user_team(iHit)) 
                        set_pev(i_Ent, LASERMINE_STEP, EXPLOSE_THINK); 

                  if (!pev_valid(i_Ent))  
                     return FMRES_IGNORED; 

                  set_pev(i_Ent, pev_nextthink, fCurrTime + random_float(0.1, 0.3)); 
               } 
            } 
         } 
         if(get_pcvar_num(g_LDMGMODE)!=0) 
            if(pev(i_Ent,LASERMINE_HITING) != iHit) 
               set_pev(i_Ent,LASERMINE_HITING,iHit); 
  
        
         if(pev_valid(i_Ent)) 
         { 
            static Float:fHealth; 
            pev(i_Ent, pev_health, fHealth); 

            if(fHealth <= 0.0 || (pev(i_Ent,pev_flags) & FL_KILLME)) 
            { 
            set_pev(i_Ent, LASERMINE_STEP, EXPLOSE_THINK); 
            set_pev(i_Ent, pev_nextthink, fCurrTime + random_float(0.1, 0.3)); 
            } 
                                
            static Float:fBeamthink; 
            pev(i_Ent, LASERMINE_BEAMTHINK, fBeamthink); 
                    
            if(fBeamthink < fCurrTime && get_pcvar_num(g_LVISIBLE)) 
            { 
               DrawLaser(i_Ent, vOrigin, vEnd); 
               set_pev(i_Ent, LASERMINE_BEAMTHINK, fCurrTime + 0.1); 
            } 
            set_pev(i_Ent, pev_nextthink, fCurrTime + 0.01); 
         } 
      } 
      case EXPLOSE_THINK : 
      { 
        
         set_pev(i_Ent, pev_nextthink, 0.0); 
         PlaySound(i_Ent, STOP_SOUND); 
         g_deployed[pev(i_Ent,LASERMINE_OWNER)]--; 
         CreateExplosion(i_Ent); 
         CreateDamage(i_Ent,get_pcvar_float(g_LRDMG),get_pcvar_float(g_LRADIUS)) 
         RemoveEntity   (i_Ent); 
      } 
   } 

   return FMRES_IGNORED; 
} 

PlaySound(i_Ent, i_SoundType) 
{ 
   switch (i_SoundType) 
   { 
      case POWERUP_SOUND : 
      { 
         emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND1, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); 
         emit_sound(i_Ent, CHAN_BODY , ENT_SOUND2, 0.2, ATTN_NORM, 0, PITCH_NORM); 
      } 
      case ACTIVATE_SOUND : 
      { 
         emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND3, 0.5, ATTN_NORM, 1, 75); 
      } 
      case STOP_SOUND : 
      { 
         emit_sound(i_Ent, CHAN_BODY , ENT_SOUND2, 0.2, ATTN_NORM, SND_STOP, PITCH_NORM); 
         emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND3, 0.5, ATTN_NORM, SND_STOP, 75); 
      } 
   } 
} 

DrawLaser(i_Ent, const Float:v_Origin[3], const Float:v_EndOrigin[3]) 
{
   new tcolor[3]; 
   new teamid = pev(i_Ent, LASERMINE_TEAM); 
   if(get_pcvar_num(g_LCLMODE) == 0) 
   { 
      switch(teamid){ 
         case 1:{ 
            
            tcolor[0] = Red_Zomb; 
            tcolor[1] = Green_Zomb; 
            tcolor[2] = Blue_Zomb; 
         } 
         case 2:{ 
            
            tcolor[0] = Red_Hum; 
            tcolor[1] = Green_Hum; 
            tcolor[2] = Blue_Hum; 
         } 
      } 
   }else 
   { 
      
      tcolor[0] = random_num(50 , 200); 
      tcolor[1] = random_num(50 , 200); 
      tcolor[2] = random_num(50 , 200); 
   } 
   message_begin(MSG_BROADCAST,SVC_TEMPENTITY); 
   write_byte(TE_BEAMPOINTS); 
   engfunc(EngFunc_WriteCoord,v_Origin[0]); 
   engfunc(EngFunc_WriteCoord,v_Origin[1]); 
   engfunc(EngFunc_WriteCoord,v_Origin[2]); 
   engfunc(EngFunc_WriteCoord,v_EndOrigin[0]); 
   engfunc(EngFunc_WriteCoord,v_EndOrigin[1]); 
   engfunc(EngFunc_WriteCoord,v_EndOrigin[2]); 
   write_short(beam); 
   write_byte(0); 
   write_byte(0); 
   write_byte(1);  
   write_byte(5);  
   write_byte(0);  
   write_byte(tcolor[0]); 
   write_byte(tcolor[1]); 
   write_byte(tcolor[2]); 
   write_byte(get_pcvar_num(g_LCBRIGHT)); 
   write_byte(255); 
   message_end(); 
   
   // Get user origin
   static Float:originF[3]
   pev(ID_BLOOD, pev_origin, originF)
   
   // Sparks
   if(get_pcvar_num(g_LDETAIL))
   {
      engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, v_EndOrigin, 0)
      write_byte(TE_SPARKS) // TE id
      engfunc(EngFunc_WriteCoord, v_EndOrigin[0]) // x
      engfunc(EngFunc_WriteCoord, v_EndOrigin[1]) // y
      engfunc(EngFunc_WriteCoord, v_EndOrigin[2]) // z
      message_end();
      
      // Effects when cut
      message_begin(MSG_BROADCAST ,SVC_TEMPENTITY)
      write_byte(TE_EXPLOSION)
      engfunc(EngFunc_WriteCoord, v_EndOrigin[0])
      engfunc(EngFunc_WriteCoord, v_EndOrigin[1])
      engfunc(EngFunc_WriteCoord, v_EndOrigin[2]-10.0)
      write_short(TE_SPARKS)	// sprite index
      write_byte(1)	// scale in 0.1's
      write_byte(30)	// framerate
      write_byte(TE_EXPLFLAG_NODLIGHTS | TE_EXPLFLAG_NOPARTICLES | TE_EXPLFLAG_NOSOUND)	// flags
      message_end()
   }
} 

CreateDamage(iCurrent,Float:DmgMAX,Float:Radius) 
{ 
  
   new Float:vecSrc[3]; 
   pev(iCurrent, pev_origin, vecSrc); 

   new AtkID =pev(iCurrent,LASERMINE_OWNER); 
   new TeamID=pev(iCurrent,LASERMINE_TEAM); 

   new ent = -1; 
   new Float:tmpdmg = DmgMAX; 

   new Float:kickback = 0.0; 
  
   new Float:Tabsmin[3], Float:Tabsmax[3]; 
   new Float:vecSpot[3]; 
   new Float:Aabsmin[3], Float:Aabsmax[3]; 
   new Float:vecSee[3]; 
   new trRes; 
   new Float:flFraction; 
   new Float:vecEndPos[3]; 
   new Float:distance; 
   new Float:origin[3], Float:vecPush[3]; 
   new Float:invlen; 
   new Float:velocity[3]; 
   new iHitHP,iHitTeam; 
  
   new Float:falloff; 
   if(Radius > 0.0) 
   { 
      falloff = DmgMAX / Radius; 
   } else { 
      falloff = 1.0; 
   } 
  
   while((ent = engfunc(EngFunc_FindEntityInSphere, ent, vecSrc, Radius)) != 0) 
   { 
      if(!pev_valid(ent)) continue; 
      if(!(pev(ent, pev_flags) & (FL_CLIENT | FL_FAKECLIENT | FL_MONSTER))) 
      { 
        
         continue; 
      } 
      if(!pev_user_alive(ent)) continue; 
      
      kickback = 1.0; 
      tmpdmg = DmgMAX; 
      
      
      pev(ent, pev_absmin, Tabsmin); 
      pev(ent, pev_absmax, Tabsmax); 
      xs_vec_add(Tabsmin,Tabsmax,Tabsmin); 
      xs_vec_mul_scalar(Tabsmin,0.5,vecSpot); 
      pev(iCurrent, pev_absmin, Aabsmin); 
      pev(iCurrent, pev_absmax, Aabsmax); 
      xs_vec_add(Aabsmin,Aabsmax,Aabsmin); 
      xs_vec_mul_scalar(Aabsmin,0.5,vecSee); 
      engfunc(EngFunc_TraceLine, vecSee, vecSpot, 0, iCurrent, trRes); 
      get_tr2(trRes, TR_flFraction, flFraction); 
      
      if(flFraction >= 0.9 || get_tr2(trRes, TR_pHit) == ent) 
      { 
        
         get_tr2(trRes, TR_vecEndPos, vecEndPos); 
         distance = get_distance_f(vecSrc, vecEndPos) * falloff; 
         tmpdmg -= distance; 
         if(tmpdmg < 0.0) 
            tmpdmg = 0.0; 
        
         if(kickback != 0.0) 
         { 
            xs_vec_sub(vecSpot,vecSee,origin); 
            invlen = 1.0/get_distance_f(vecSpot, vecSee); 

            xs_vec_mul_scalar(origin,invlen,vecPush); 
            pev(ent, pev_velocity, velocity) 
            xs_vec_mul_scalar(vecPush,tmpdmg,vecPush); 
            xs_vec_mul_scalar(vecPush,kickback,vecPush); 
            xs_vec_add(velocity,vecPush,velocity); 
            if(tmpdmg < 60.0) 
            { 
               xs_vec_mul_scalar(velocity,12.0,velocity); 
            } else { 
               xs_vec_mul_scalar(velocity,4.0,velocity); 
            } 
            if(velocity[0] != 0.0 || velocity[1] != 0.0 || velocity[2] != 0.0) 
            { 
              
               set_pev(ent, pev_velocity, velocity) 
            } 
         } 

         iHitHP = pev_user_health(ent) - floatround(tmpdmg) 
         iHitTeam = int:cs_get_user_team(ent) 
         if(iHitHP <= 0) 
         { 
            if(iHitTeam != TeamID) 
            { 
               cs_set_user_money(AtkID,cs_get_user_money(AtkID) + get_pcvar_num(g_LFMONEY)) 
               set_score(AtkID,ent,1,iHitHP) 
            }else 
            { 
               if(get_pcvar_num(g_LFF)) 
               { 
                  cs_set_user_money(AtkID,cs_get_user_money(AtkID) - get_pcvar_num(g_LFMONEY)) 
                  set_score(AtkID,ent,-1,iHitHP) 
               } 
            } 
         }else 
         { 
            if(iHitTeam != TeamID || get_pcvar_num(g_LFF)) 
            { 
              
               set_user_health(ent, iHitHP) 
               engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},ent); 
               write_byte(floatround(tmpdmg)) 
               write_byte(floatround(tmpdmg)) 
               write_long(DMG_BULLET) 
               engfunc(EngFunc_WriteCoord,vecSrc[0]) 
               engfunc(EngFunc_WriteCoord,vecSrc[1]) 
               engfunc(EngFunc_WriteCoord,vecSrc[2]) 
               message_end() 
            } 
         } 
      } 
   } 
   return 
} 

bool:pev_user_alive(ent) 
{ 
   new deadflag = pev(ent,pev_deadflag); 
   if(deadflag != DEAD_NO) 
      return false; 
   return true; 
} 

CreateExplosion(iCurrent) 
{ 
   new Float:vOrigin[3]; 
   pev(iCurrent,pev_origin,vOrigin); 

   message_begin(MSG_BROADCAST, SVC_TEMPENTITY); 
   write_byte(99); 
   write_short(iCurrent); 
   message_end(); 

   engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vOrigin, 0); 
   write_byte(TE_EXPLOSION); 
   engfunc(EngFunc_WriteCoord,vOrigin[0]); 
   engfunc(EngFunc_WriteCoord,vOrigin[1]); 
   engfunc(EngFunc_WriteCoord,vOrigin[2]); 
   write_short(boom); 
   write_byte(30); 
   write_byte(15); 
   write_byte(0); 
   message_end(); 
} 

CreateLaserDamage(iCurrent,isHit) 
{ 
   if(isHit < 0) return PLUGIN_CONTINUE 
   switch(get_pcvar_num(g_LDMGMODE)) 
   { 
      case 1: 
      { 
         if(pev(iCurrent,LASERMINE_HITING) == isHit) 
            return PLUGIN_CONTINUE 
      } 
      case 2: 
      { 
         if(pev(iCurrent,LASERMINE_HITING) == isHit) 
         { 
            static Float:cnt 
            static now,htime;now = floatround(get_gametime()) 

            pev(iCurrent,LASERMINE_COUNT,cnt) 
            htime = floatround(cnt) 
            if(now - htime < get_pcvar_num(g_LDSEC)) 
            { 
               return PLUGIN_CONTINUE; 
            }else{ 
               set_pev(iCurrent,LASERMINE_COUNT,get_gametime()) 
            } 
         }else 
         { 
            set_pev(iCurrent,LASERMINE_COUNT,get_gametime()) 
         } 
      } 
   } 

   new Float:vOrigin[3],Float:vEnd[3] 
   pev(iCurrent,pev_origin,vOrigin) 
   pev(iCurrent,pev_vuser1,vEnd) 

   new teamid = pev(iCurrent, LASERMINE_TEAM) 

   new szClassName[32] 
   new Alive,God 
   new iHitTeam,iHitHP,id 
   new hitscore 

   szClassName[0] = '^0' 
   pev(isHit,pev_classname,szClassName,32) 
   if((pev(isHit, pev_flags) & (FL_CLIENT | FL_FAKECLIENT | FL_MONSTER))) 
   { 
      Alive = pev_user_alive(isHit) 
      God = get_user_godmode(isHit) 
      if(!Alive || God) return PLUGIN_CONTINUE 
      iHitTeam = int:cs_get_user_team(isHit) 
      iHitHP = pev_user_health(isHit) - get_pcvar_num(g_LDMG) 
      id = pev(iCurrent,LASERMINE_OWNER) 

      if(iHitHP <= 0) 
      { 
         if(iHitTeam != teamid) 
         { 
            emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM) 
            hitscore = 1 
            cs_set_user_money(id,cs_get_user_money(id) + get_pcvar_num(g_LFMONEY)) 
            set_score(id,isHit,hitscore,iHitHP) 
         } 
         else 
         { 
            if(get_pcvar_num(g_LFF)) 
            { 
               emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM) 
               hitscore = -1 
               cs_set_user_money(id,cs_get_user_money(id) - get_pcvar_num(g_LFMONEY)) 
               set_score(id,isHit,hitscore,iHitHP) 
            } 
         } 
      } 
      else if(iHitTeam != teamid || get_pcvar_num(g_LFF)) 
      { 
         emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM) 
         set_user_health(isHit,iHitHP) 
         set_pev(iCurrent,LASERMINE_HITING,isHit); 
         engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},isHit); 
         write_byte(get_pcvar_num(g_LDMG)) 
         write_byte(get_pcvar_num(g_LDMG)) 
         write_long(DMG_BULLET) 
         engfunc(EngFunc_WriteCoord,vOrigin[0]) 
         engfunc(EngFunc_WriteCoord,vOrigin[1]) 
         engfunc(EngFunc_WriteCoord,vOrigin[2]) 
         message_end() 
      } 
   } 
   else if(equal(szClassName, ENT_CLASS_NAME3)) 
   { 
      new hl; 
      hl = pev_user_health(isHit); 
      set_user_health(isHit,hl-get_pcvar_num(g_LDMG)); 
   } 
   return PLUGIN_CONTINUE 
} 

stock pev_user_health(id) 
{ 
   new Float:health 
   pev(id,pev_health,health) 
   return floatround(health) 
} 

stock set_user_health(id,health) 
{ 
   health > 0 ? set_pev(id, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, id); 
} 

stock get_user_godmode(index) { 
   new Float:val 
   pev(index, pev_takedamage, val) 

   return (val == DAMAGE_NO) 
} 

stock set_user_frags(index, frags) 
{ 
   set_pev(index, pev_frags, float(frags)) 

   return 1 
} 

stock pev_user_frags(index) 
{ 
   new Float:frags; 
   pev(index,pev_frags,frags); 
   return floatround(frags); 
} 

set_score(id,target,hitscore,HP) 
{ 
   new idfrags = pev_user_frags(id) + hitscore 
   set_user_frags(id,idfrags) 
   new tarfrags = pev_user_frags(target) + 1 
   set_user_frags(target,tarfrags) 
   new idteam = int:cs_get_user_team(id) 
   new iddeaths = cs_get_user_deaths(id) 


   message_begin(MSG_ALL, g_msgDeathMsg, {0, 0, 0} ,0) 
   write_byte(id) 
   write_byte(target) 
   write_byte(0) 
   write_string(ENT_CLASS_NAME) 
   message_end() 

   message_begin(MSG_ALL, g_msgScoreInfo) 
   write_byte(id) 
   write_short(idfrags) 
   write_short(iddeaths) 
   write_short(0) 
   write_short(idteam) 
   message_end() 

   set_msg_block(g_msgDeathMsg, BLOCK_ONCE) 

   set_user_health(target, HP) 
} 

public BuyLasermine(id) 
{ 
   if(!CanCheck(id,1)) return PLUGIN_CONTINUE 

   cs_set_user_money(id,cs_get_user_money(id) - get_pcvar_num(g_LCOST)) 
   g_havemine[id]++; 

   client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_BOUGHT") 

   emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) 
   ShowAmmo(id) 
   return PLUGIN_HANDLED 
} 

public zp_extra_item_selected(id, itemid) 
{ 
   if(itemid == g_LME) 
      { 
      cs_set_user_money(id, cs_get_user_money(id) + LMCost) 
      BuyLasermine(id) 
      } 
   return PLUGIN_CONTINUE 
} 

ShowAmmo(id) 
{ 
   new ammo[51] 
   new PlugStat[ 555 char ]; 
   formatex(PlugStat, charsmax(PlugStat), "%L", LANG_PLAYER, "STR_STATE") 
   formatex(ammo, 50, "%s %i/%i",PlugStat, g_havemine[id],get_pcvar_num(g_LAMMO)) 

   message_begin(MSG_ONE, g_msgStatusText, {0,0,0}, id) 
   write_byte(0) 
   write_string(ammo) 
   message_end() 
} 

public showInfo(id) 
{ 
   client_print(id, print_chat, "%L", id, "STR_REF") 
} 

public say_lasermine(id) 
{ 
   new said[32] 
   read_argv(1,said,31); 
   if(!get_pcvar_num(g_LENABLE)) 
   { 
      return PLUGIN_CONTINUE 
   } 
   if(equali(said,"/buy lasermine")||equali(said,"/lm")||equali(said,"buy_lasermine")) 
   { 
      BuyLasermine(id) 
   } 
   else if(equali(said, "lasermine") || equali(said, "/lasermine")) 
   { 
      const SIZE = 1024 
      new msg[SIZE+1],len = 0; 
      len += formatex(msg[len], SIZE - len, "<html><body>") 
      len += formatex(msg[len], SIZE - len, "<p><b>LaserMine</b></p><br/><br/>") 
      len += formatex(msg[len], SIZE - len, "<p>Poti planta lasere numai pe un perete.</p><br/>") 
      len += formatex(msg[len], SIZE - len, "<p>Cu laserele plantate puteti omora zombi.</p><br/><br/>") 
      len += formatex(msg[len], SIZE - len, "<p><b>Introduce aceste comenzi in consola :<br/>") 
      len += formatex(msg[len], SIZE - len, "<b>bind v +setlaser</p>") 
      len += formatex(msg[len], SIZE - len, "<b>bind c +dellaser</p>") 
      len += formatex(msg[len], SIZE - len, "</body></html>") 
      show_motd(id, msg, "Lasermine Entity help") 
      return PLUGIN_CONTINUE 
   } 
   else if(containi(said, "laser") != -1) 
   { 
      showInfo(id) 
      return PLUGIN_CONTINUE 
   } 
   return PLUGIN_CONTINUE 
} 

public standing(id) 
{ 
   if(!g_settinglaser[id]) 
      return PLUGIN_CONTINUE 

   set_pev(id, pev_maxspeed, 1.0) 

   return PLUGIN_CONTINUE 
} 

public ltm_PostThink(id) 
{ 
   if(!g_settinglaser[id] && plsetting[id]){ 
      resetspeed(id) 
   } 
   else if(g_settinglaser[id] && !plsetting[id]) { 
      pev(id, pev_maxspeed,plspeed[id]) 
      set_pev(id, pev_maxspeed, 1.0) 
   } 
   plsetting[id] = g_settinglaser[id] 
   return FMRES_IGNORED 
} 

public ltm_PreThink(id) 
{ 
   if(!pev_user_alive(id) || g_settinglaser[id] == true || is_user_bot(id) || get_pcvar_num(g_LCMDMODE) == 1) 
      return FMRES_IGNORED; 

   if(pev(id, pev_button) & IN_USE && !(pev(id, pev_oldbuttons) & IN_USE)) 
      CreateLaserMine_Progress(id) 
   return FMRES_IGNORED; 
} 

resetspeed(id) 
{ 
   set_pev(id, pev_maxspeed, plspeed[id]) 
} 

public client_putinserver(id) 
{ 
   g_deployed[id] = 0; 
   g_havemine[id] = 0; 
   DeleteTask(id); 
   //set_task( 1.0, "Task_CheckAiming", id + 3389, _, _, "b" ); 
   set_task( 4.0, "checkIfspec", id) 
   return PLUGIN_CONTINUE 
} 

public client_disconnect(id){ 
   if(!get_pcvar_num(g_LENABLE)) 
      return PLUGIN_CONTINUE 
   DeleteTask(id); 
   RemoveAllTripmines(id); 
   return PLUGIN_CONTINUE 
} 

public newround(id) 
{ 
   if(!get_pcvar_num(g_LENABLE)) 
      return PLUGIN_CONTINUE 
   pev(id, pev_maxspeed,plspeed[id]) 
   DeleteTask(id); 
   RemoveAllTripmines(id); 
  
   delaycount(id); 
   SetStartAmmo(id); 
   return PLUGIN_CONTINUE 
} 

public endround() 
{ 
	if(!get_pcvar_num(g_LENABLE)) 
		return PLUGIN_CONTINUE 

	// adaugat de YONTU
	new players[32], num, i, id;
	get_players(players, num);
	for(i = 0; i < num; i++)
	{
		id = players;
		if(is_user_alive(id))
		{
			DeleteTask(id); 
			RemoveAllTripmines(id); 
		}
	}

	return PLUGIN_CONTINUE 
} 

public DeathEvent(){ 
   if(!get_pcvar_num(g_LENABLE)) 
      return PLUGIN_CONTINUE 

   new id = read_data(2) 
   set_task( 4.0, "checkIfspec", id) 
   if(is_user_connected(id)) DeleteTask(id); 
   return PLUGIN_CONTINUE 
} 

public RemoveAllTripmines(i_Owner) 
{ 
   new iEnt = g_MaxPL + 1; 
   new clsname[32]; 
   while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", ENT_CLASS_NAME))) 
   { 
      if(i_Owner) 
      { 
         if(pev(iEnt, LASERMINE_OWNER) != i_Owner) 
            continue; 
         clsname[0] = '^0' 
         pev(iEnt, pev_classname, clsname, sizeof(clsname)-1); 
         if(equali(clsname, ENT_CLASS_NAME)) 
         { 
            PlaySound(iEnt, STOP_SOUND); 
            RemoveEntity(iEnt); 
         } 
      } 
      else 
         set_pev(iEnt, pev_flags, FL_KILLME); 
   } 
   g_deployed[i_Owner]=0; 
} 

SetStartAmmo(id) 
{ 
   new stammo = get_pcvar_num(g_LSTAMMO); 
   if(stammo <= 0) return PLUGIN_CONTINUE; 
   g_havemine[id] = (g_havemine[id] <= stammo) ? stammo : g_havemine[id]; 
   return PLUGIN_CONTINUE; 
} 

public CutDeploy_onDamage(id) 
{ 
   if(get_user_health(id) < 1) 
      DeleteTask(id); 
} 

public DeleteTask(id) 
{ 
   if(task_exists((TASK_PLANT + id))) 
   { 
      remove_task((TASK_PLANT + id)) 
   } 
   if(task_exists((TASK_RELEASE + id))) 
   { 
      remove_task((TASK_RELEASE + id)) 
   } 
   g_settinglaser[id] = false 
   return PLUGIN_CONTINUE; 
} 

stock set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) 
{ 
   static Float:RenderColor[3]; 
   RenderColor[0] = float(r); 
   RenderColor[1] = float(g); 
   RenderColor[2] = float(b); 

   set_pev(entity, pev_renderfx, fx); 
   set_pev(entity, pev_rendercolor, RenderColor); 
   set_pev(entity, pev_rendermode, render); 
   set_pev(entity, pev_renderamt, float(amount)); 

   return 1 
} 

get_offset_value(id, type) 
{ 
   new key = -1; 
   switch(type) 
   { 
      case OFFSET_TEAM: key = OFFSET_TEAM; 
      case OFFSET_MONEY: 
      key = OFFSET_MONEY; 
      case OFFSET_DEATH: key = OFFSET_DEATH; 
   } 
   if(key != -1) 
   { 
      if(is_amd64_server()) key += 25; 
      return get_pdata_int(id, key); 
   } 
   return -1; 
} 

public Task_CheckAiming( iTaskIndex ) 
{ 
    static iClient; 
    iClient = iTaskIndex - 3389; 

    if( is_user_alive( iClient ) ) 
    { 
        static iEntity, iDummy, cClassname[ 32 ]; 
        get_user_aiming( iClient, iEntity, iDummy, 9999 ); 

        if( pev_valid( iEntity ) ) 
        { 
            pev( iEntity, pev_classname, cClassname, 31 ); 

            if( equal( cClassname, ENT_CLASS_NAME ) ) 
            { 
                new name[ 32 ]; 
                new aim = pev( iEntity, LASERMINE_OWNER ); 
                get_user_name( aim, name, charsmax( name ) - 1 ) 
                set_hudmessage( 50, 100, 150, -1.0, 0.60, 0, 6.0, 1.1, 0.0, 0.0, -1 ) 
                show_hudmessage( iClient, "Owner: %s^nHealth: %d", name, pev(iEntity,pev_health ))
            } 
        } 
    } 
} 

stock client_printcolor(const id, const input[], any:...) 
{ 
   new iCount = 1, iPlayers[32] 
   static szMsg[191] 

   vformat(szMsg, charsmax(szMsg), input, 3) 
   replace_all(szMsg, 190, "!g", "^4") 
   replace_all(szMsg, 190, "!y", "^1") 
   replace_all(szMsg, 190, "!t", "^3") 
   replace_all(szMsg, 190, "!w", "^0") 

   if(id) iPlayers[0] = id 
   else get_players(iPlayers, iCount, "ch") 

   for(new i = 0; i < iCount; i++) 
   { 
      if(is_user_connected(iPlayers)) 
      { 
         message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, iPlayers) 
         write_byte(iPlayers) 
         write_string(szMsg) 
         message_end() 
      } 
   } 
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/

Insa tot este tot este problema cu laserer peste laser.
Poza:[/color] https://i.imgur.com/qcM89xN.jpg
Va multumesc!
Last edited by Rainq on 09 Jan 2019, 01:50, edited 3 times in total.
Reason: Editat dupa model
RoyalServer 2
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

06 Jan 2019, 21:08

nu ai mai făcut cerere? cu altă sursă? eu îți salvasem sursa aia..
| Afiseaza codul
#include <amxmodx> 
#include <amxmisc> 
#include <fakemeta> 
#include <hamsandwich> 
#include <xs> 
#include <cstrike> 
#include <biohazard> 

#pragma tabsize 0

#define PLUGIN "[ZP] LaserMine" 
#define VERSION "2.8.1" 
#define AUTHOR "SandStriker / Shidla / QuZ/DJ_WEST" 

#define RemoveEntity(%1)   engfunc(EngFunc_RemoveEntity,%1) 
#define TASK_PLANT         15100 
#define TASK_RESET         15500 
#define TASK_RELEASE      15900 

#define LASERMINE_TEAM      pev_iuser1 
#define LASERMINE_OWNER      pev_iuser2 
#define LASERMINE_STEP      pev_iuser3 
#define LASERMINE_HITING   pev_iuser4 
#define LASERMINE_COUNT      pev_fuser1 

#define LASERMINE_POWERUP   pev_fuser2 
#define LASERMINE_BEAMTHINK   pev_fuser3 

#define LASERMINE_BEAMENDPOINT   pev_vuser1 
#define MAX_MINES         10 
#define MODE_LASERMINE      0 
#define OFFSET_TEAM         114 
#define OFFSET_MONEY      115 
#define OFFSET_DEATH      444 

#define cs_get_user_team(%1)   CsTeams:get_offset_value(%1,OFFSET_TEAM) 
#define cs_get_user_deaths(%1)   get_offset_value(%1,OFFSET_DEATH) 

new const LMCost = 2 

new const 
   Red_Hum      = 0, 
   Green_Hum    = 0, 
   Blue_Hum   = 255; 

new const 
   Red_Zomb   = 255, 
   Green_Zomb    = 0, 
   Blue_Zomb   = 0; 

enum tripmine_e { 
   TRIPMINE_IDLE1 = 0, 
   TRIPMINE_IDLE2, 
   TRIPMINE_ARM1, 
   TRIPMINE_ARM2, 
   TRIPMINE_FIDGET, 
   TRIPMINE_HOLSTER, 
   TRIPMINE_DRAW, 
   TRIPMINE_WORLD, 
   TRIPMINE_GROUND, 
}; 

enum 
{ 
   POWERUP_THINK, 
   BEAMBREAK_THINK, 
   EXPLOSE_THINK 
}; 

enum 
{ 
   POWERUP_SOUND, 
   ACTIVATE_SOUND, 
   STOP_SOUND 
}; 

new const 
   ENT_MODELS[]   = "models/v_tripmine.mdl", 
   ENT_SOUND1[]   = "weapons/mine_deploy.wav", 
   ENT_SOUND2[]   = "weapons/mine_charge.wav", 
   ENT_SOUND3[]   = "weapons/mine_activate.wav", 
   ENT_SOUND4[]   = "debris/beamstart9.wav", 
   ENT_SOUND5[]   = "items/gunpickup2.wav", 
   ENT_SOUND6[]   = "debris/bustglass1.wav", 
   ENT_SOUND7[]   = "debris/bustglass2.wav", 
   ENT_SPRITE1[]   = "sprites/laserbeam.spr", 
   ENT_SPRITE2[]   = "sprites/lm_explode.spr"; 

new const 
   ENT_CLASS_NAME[]   =   "lasermine", 
   ENT_CLASS_NAME3[]   =   "func_breakable", 
   gSnarkClassName[]   =   "wpn_snark",  
   barnacle_class[]   =   "barnacle",      
   weapon_box[]      =   "weaponbox"; 

new g_EntMine, beam, boom 
new g_LENABLE, g_LFMONEY, g_LAMMO, g_LDMG, g_LBEO, g_LTMAX, g_LCOST, g_LHEALTH, g_LMODE, g_LRADIUS, g_NOROUND 
new g_LRDMG,g_LFF,g_LCBT, g_LDELAY, g_LVISIBLE, g_LSTAMMO, g_LACCESS, g_LGLOW, g_LDMGMODE, g_LCLMODE 
new g_LCBRIGHT, g_LDSEC, g_LCMDMODE, g_LBUYMODE, g_LME, g_LDETAIL; 
new g_msgDeathMsg,g_msgScoreInfo,g_msgDamage,g_msgStatusText; 
new g_dcount[33],g_nowtime,g_MaxPL 
new bool:g_settinglaser[33] 
new ID_BLOOD; 

new Float:plspeed[33], plsetting[33], g_havemine[33], g_deployed[33]; 

public plugin_init() 
{ 
   register_plugin(PLUGIN, VERSION, AUTHOR); 

   RegisterHam(Ham_TakeDamage, ENT_CLASS_NAME3, "Laser_TakeDamage"); 
  
   register_clcmd("+setlaser","CreateLaserMine_Progress_b"); 
   register_clcmd("-setlaser","StopCreateLaserMine"); 
   register_clcmd("+dellaser","ReturnLaserMine_Progress"); 
   register_clcmd("-dellaser","StopReturnLaserMine"); 
   register_clcmd("say","say_lasermine"); 
   register_clcmd("buy_lasermine","BuyLasermine"); 

   register_concmd("bh_untakelm", "luatlaser", ADMIN_LEVEL_B, " - <nume>"); 
   register_concmd("bh_takelm", "puslaser", ADMIN_LEVEL_B, " - <nume>"); 

   g_LENABLE   = register_cvar("bh_ltm","1"); 
   g_LACCESS   = register_cvar("bh_ltm_acs","0"); 
   g_LMODE      = register_cvar("bh_ltm_mode","0"); 
   g_LAMMO      = register_cvar("bh_ltm_ammo","2"); 
   g_LDMG      = register_cvar("bh_ltm_dmg","10000"); 
   g_LCOST      = register_cvar("bh_ltm_cost","5000"); 
   g_LFMONEY   = register_cvar("bh_ltm_fragmoney","1"); 
   g_LHEALTH   = register_cvar("bh_ltm_health","5"); 
   g_LTMAX      = register_cvar("bh_ltm_teammax","100"); 
   g_LRADIUS   = register_cvar("bh_ltm_radius","320.0") 
   g_LRDMG      = register_cvar("bh_ltm_rdmg","100") 
   g_LFF      = register_cvar("bh_ltm_ff","0"); 
   g_LCBT      = register_cvar("bh_ltm_cbt","ALL"); 
   g_LDELAY   = register_cvar("bh_ltm_delay","0.1"); 
   g_LVISIBLE   = register_cvar("bh_ltm_line","1"); 
   g_LGLOW      = register_cvar("bh_ltm_glow","0"); 
   g_LCBRIGHT   = register_cvar("bh_ltm_bright","255"); 
   g_LCLMODE   = register_cvar("bh_ltm_color","0"); 
   g_LDMGMODE   = register_cvar("bh_ltm_ldmgmode","0"); 
   g_LDSEC      = register_cvar("bh_ltm_ldmgseconds","1"); 
   g_LSTAMMO   = register_cvar("bh_ltm_startammo","2"); 
   g_LBUYMODE   = register_cvar("bh_ltm_buymode","1"); 
   g_LCMDMODE   = register_cvar("bh_ltm_cmdmode","1");      
   g_LBEO      = register_cvar("bh_ltm_brokeenemy","1"); 
   g_NOROUND   = register_cvar("bh_ltm_noround","1"); 
   g_LDETAIL  = register_cvar("bh_ltm_realistic_detail", "1");

   register_event("DeathMsg", "DeathEvent", "a"); 
   register_event("CurWeapon", "standing", "be", "1=1"); 
   register_event("ResetHUD", "delaycount", "a");

	register_event("HLTV", "newround", "a", "1=0", "2=0")
	register_logevent("endround", 2, "1=Round_End")

   register_event("Damage","CutDeploy_onDamage","b"); 
   g_msgDeathMsg   = get_user_msgid("DeathMsg"); 
   g_msgScoreInfo   = get_user_msgid("ScoreInfo"); 
   g_msgDamage      = get_user_msgid("Damage"); 
   g_msgStatusText = get_user_msgid("StatusText"); 
  
   register_forward(FM_Think, "ltm_Think"); 
   register_forward(FM_PlayerPostThink, "ltm_PostThink"); 
   register_forward(FM_PlayerPreThink, "ltm_PreThink"); 
  
   register_dictionary("lasermines.txt") 
} 

public plugin_precache() 
{ 
   precache_sound(ENT_SOUND1); 
   precache_sound(ENT_SOUND2); 
   precache_sound(ENT_SOUND3); 
   precache_sound(ENT_SOUND4); 
   precache_sound(ENT_SOUND5); 
   precache_sound(ENT_SOUND6); 
   precache_sound(ENT_SOUND7); 
   precache_model(ENT_MODELS); 
   beam = precache_model(ENT_SPRITE1); 
   boom = precache_model(ENT_SPRITE2); 
} 

public plugin_modules() 
{ 
   require_module("fakemeta"); 
   require_module("cstrike"); 
} 

public plugin_cfg() 
{ 
   g_EntMine = engfunc(EngFunc_AllocString,ENT_CLASS_NAME3); 
   arrayset(g_havemine,0,sizeof(g_havemine)); 
   arrayset(g_deployed,0,sizeof(g_deployed)); 
   g_MaxPL = get_maxplayers(); 

   new file[64]; get_localinfo("amxx_configsdir",file,63); 
   format(file, 63, "%s/bh_ltm_cvars.cfg", file); 
   if(file_exists(file)) server_cmd("exec %s", file), server_exec(); 
} 

public luatlaser(id, level, cid) 
{ 
   if (!cmd_access(id, level, cid, 2)) 
   { 
      return PLUGIN_HANDLED 
   } 

   new arg[32] 
    
   read_argv(1, arg, 31) 
   new player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF) 
    
   if (!player) 
      return PLUGIN_HANDLED 

   DeleteTask(player); 
   RemoveAllTripmines(player); 

   new namea[32],namep[32]; 
   get_user_name(id,namea,charsmax(namea)); 
   get_user_name(player,namep,charsmax(namep)); 
   client_printcolor(0, "!g[Biohazard] !yAdminul !g%s !yi-a dezactivat laserele lui !g%s!y.", namea, namep);

   return PLUGIN_HANDLED; 
} 

public puslaser(id, level, cid) 
{ 
   if (!cmd_access(id, level, cid, 2)) 
   { 
      return PLUGIN_HANDLED 
   } 

   new arg[32] 
    
   read_argv(1, arg, 31) 
   new player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF) 
    
   if (!player) 
      return PLUGIN_HANDLED 

   DeleteTask(player); 
   SetStartAmmo(player); 

   new namea[32],namep[32]; 
   get_user_name(id,namea,charsmax(namea)); 
   get_user_name(player,namep,charsmax(namep)); 
   client_printcolor(0, "!g[Biohazard] !yAdminul !g%s !yi-a reactivat laserele lui !g%s!y.", namea, namep);

   return PLUGIN_HANDLED; 
} 

public checkIfspec(id) 
{ 
    if( g_deployed[id] > 0 ) 
    { 
          if(cs_get_user_team(id) == CS_TEAM_SPECTATOR) 
          { 
               DeleteTask(id); 
               RemoveAllTripmines(id); 

               new namep[32]; 
               get_user_name(id,namep,charsmax(namep)); 
               client_printcolor(0,"!g[Biohazard] !yLaserele lui !g%s !gau fost dezactivate deoarece s-a mutat la !gspectatori!y!",namep); 
          } 
     } 
} 

public Laser_TakeDamage(victim, inflictor, attacker, Float:f_Damage, bit_Damage) 
{ 
   if(get_pcvar_num(g_LBEO)) 
   { 
      new i_Owner 

      i_Owner = pev(victim, LASERMINE_OWNER) 
      
      if(CsTeams:pev(victim, LASERMINE_TEAM) == cs_get_user_team(attacker)) 
      
      if(i_Owner != attacker)	return HAM_SUPERCEDE

      return PLUGIN_CONTINUE 
   } 
   return PLUGIN_CONTINUE 
} 

public delaycount(id) 
{ 
   g_dcount[id] = floatround(get_gametime()); 
} 

bool:CheckTime(id) 
{ 
   g_nowtime = floatround(get_gametime()) - g_dcount[id]; 
   if(g_nowtime >= get_pcvar_num(g_LDELAY)) 
      return true; 
   return false; 
} 

public CreateLaserMine_Progress_b(id) 
{ 
   if(get_pcvar_num(g_LCMDMODE) != 0) 
      CreateLaserMine_Progress(id); 
   return PLUGIN_HANDLED; 
} 

public CreateLaserMine_Progress(id) 
{ 
   if(!CreateCheck(id)) 
      return PLUGIN_HANDLED; 
   g_settinglaser[id] = true; 

   message_begin(MSG_ONE, 108, {0,0,0}, id); 
   write_byte(1); 
   write_byte(0); 
   message_end(); 

   set_task(1.2, "Spawn", (TASK_PLANT + id)); 

   return PLUGIN_HANDLED; 
} 

public ReturnLaserMine_Progress(id) 
{ 
   if(!ReturnCheck(id)) 
      return PLUGIN_HANDLED; 
   g_settinglaser[id] = true; 

   message_begin(MSG_ONE, 108, {0,0,0}, id); 
   write_byte(1); 
   write_byte(0); 
   message_end(); 

   set_task(1.2, "ReturnMine", (TASK_RELEASE + id)); 

   return PLUGIN_HANDLED; 
} 

public StopCreateLaserMine(id) 
{ 
   DeleteTask(id); 
   message_begin(MSG_ONE, 108, {0,0,0}, id); 
   write_byte(0); 
   write_byte(0); 
   message_end(); 

   return PLUGIN_HANDLED; 
} 

public StopReturnLaserMine(id) 
{ 
   DeleteTask(id); 
   message_begin(MSG_ONE, 108, {0,0,0}, id); 
   write_byte(0); 
   write_byte(0); 
   message_end(); 

   return PLUGIN_HANDLED; 
} 

public ReturnMine(id) 
{ 
   id -= TASK_RELEASE; 
   new tgt,body,Float:vo[3],Float:to[3]; 
   get_user_aiming(id,tgt,body); 
   if(!pev_valid(tgt)) return; 
   pev(id,pev_origin,vo); 
   pev(tgt,pev_origin,to); 
   if(get_distance_f(vo,to) > 70.0) return; 
   new EntityName[32]; 
   pev(tgt, pev_classname, EntityName, 31); 
   if(!equal(EntityName, ENT_CLASS_NAME)) return; 
   if(pev(tgt,LASERMINE_OWNER) != id) return; 
   RemoveEntity(tgt); 

   g_havemine[id] ++; 
   g_deployed[id] --; 
   emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) 
   ShowAmmo(id) 

   return; 
} 

public Spawn(id) 
{ 
   id -= TASK_PLANT 
  
   new i_Ent = engfunc(EngFunc_CreateNamedEntity,g_EntMine); 
   if(!i_Ent) 
   { 
      client_print(id, print_chat,"[Laesrmine Debug] Can't Create Entity"); 
      return PLUGIN_HANDLED_MAIN; 
   } 
   set_pev(i_Ent,pev_classname,ENT_CLASS_NAME); 

   engfunc(EngFunc_SetModel,i_Ent,ENT_MODELS); 

   set_pev(i_Ent,pev_solid,SOLID_NOT); 
   set_pev(i_Ent,pev_movetype,MOVETYPE_FLY); 

   set_pev(i_Ent,pev_frame,0); 
   set_pev(i_Ent,pev_body,3); 
   set_pev(i_Ent,pev_sequence,TRIPMINE_WORLD); 
   set_pev(i_Ent,pev_framerate,0); 
   set_pev(i_Ent,pev_takedamage,DAMAGE_YES); 
   set_pev(i_Ent,pev_dmg,100.0); 
   set_user_health(i_Ent,get_pcvar_num(g_LHEALTH)); 
   new Float:vOrigin[3]; 
   new   Float:vNewOrigin[3],Float:vNormal[3],Float:vTraceDirection[3], 
      Float:vTraceEnd[3],Float:vEntAngles[3]; 
   pev(id, pev_origin, vOrigin); 
   velocity_by_aim(id, 128, vTraceDirection); 
   xs_vec_add(vTraceDirection, vOrigin, vTraceEnd); 
   engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0); 
   new Float:fFraction; 
   get_tr2(0, TR_flFraction, fFraction); 

   if(fFraction < 1.0) 
   { 
      
      get_tr2(0, TR_vecEndPos, vTraceEnd); 
      get_tr2(0, TR_vecPlaneNormal, vNormal); 
   } 

   xs_vec_mul_scalar(vNormal, 8.0, vNormal); 
   xs_vec_add(vTraceEnd, vNormal, vNewOrigin); 

   engfunc(EngFunc_SetSize, i_Ent, Float:{ -4.0, -4.0, -4.0 }, Float:{ 4.0, 4.0, 4.0 }); 
   engfunc(EngFunc_SetOrigin, i_Ent, vNewOrigin); 

   vector_to_angle(vNormal,vEntAngles); 
   set_pev(i_Ent,pev_angles,vEntAngles); 

   new Float:vBeamEnd[3], Float:vTracedBeamEnd[3]; 
        
   xs_vec_mul_scalar(vNormal, 8192.0, vNormal); 
   xs_vec_add(vNewOrigin, vNormal, vBeamEnd); 

   engfunc(EngFunc_TraceLine, vNewOrigin, vBeamEnd, IGNORE_MONSTERS, -1, 0); 

   get_tr2(0, TR_vecPlaneNormal, vNormal); 
   get_tr2(0, TR_vecEndPos, vTracedBeamEnd); 
  
   set_pev(i_Ent, LASERMINE_OWNER, id); 
   set_pev(i_Ent,LASERMINE_BEAMENDPOINT,vTracedBeamEnd); 
   set_pev(i_Ent,LASERMINE_TEAM,int:cs_get_user_team(id)); 
   new Float:fCurrTime = get_gametime(); 

   set_pev(i_Ent,LASERMINE_POWERUP, fCurrTime + 2.5); 
   set_pev(i_Ent,LASERMINE_STEP,POWERUP_THINK); 
   set_pev(i_Ent,pev_nextthink, fCurrTime + 0.2); 

   PlaySound(i_Ent,POWERUP_SOUND); 
   g_deployed[id]++; 
   g_havemine[id]--; 
   DeleteTask(id); 
   ShowAmmo(id); 
   return 1; 
} 

stock TeamDeployedCount(id) 
{ 
   static i; 
   static CsTeams:t;t = cs_get_user_team(id); 
   static cnt;cnt=0; 

   for(i = 1;i <= g_MaxPL;i++) 
   { 
      if(is_user_connected(i)) 
         if(t == cs_get_user_team(i)) 
            cnt += g_deployed; 
   } 

   return cnt; 
} 

bool:CheckCanTeam(id) 
{ 
   new arg[5],CsTeam:num; 
   get_pcvar_string(g_LCBT,arg,3); 
   if(equali(arg,"Z")) 
   { 
      num = CsTeam:CS_TEAM_T; 
   } 
   else if(equali(arg,"H")) 
   { 
      num = CsTeam:CS_TEAM_CT; 
   } 
   else if(equali(arg,"ALL") || equali(arg,"HZ") || equali(arg,"ZH")) 
   { 
      num = CsTeam:CS_TEAM_UNASSIGNED; 
   } 
   else 
   { 
      num = CsTeam:CS_TEAM_UNASSIGNED; 
   } 
   if(num != CsTeam:CS_TEAM_UNASSIGNED && num != CsTeam:cs_get_user_team(id)) 
      return false; 
   return true; 
} 

bool:CanCheck(id,mode)  
{ 
   if(!get_pcvar_num(g_LENABLE)) 
   { 
      client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOTACTIVE") 

      return false; 
   } 
   if(get_pcvar_num(g_LACCESS) != 0) 
      if(!(get_user_flags(id) & ADMIN_IMMUNITY)) 
      { 
         client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOACCESS") 
         return false; 
      } 
   if(!pev_user_alive(id)) return false; 
   if(!CheckCanTeam(id)) 
   { 
      client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_CBT") 
      return false; 
   } 
   if(mode == 0) 
   { 
      if(g_havemine[id] <= 0) 
      { 
         client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_DONTHAVEMINE") 
         return false; 
      } 
   } 
   if(mode == 1) 
   { 
      if(get_pcvar_num(g_LBUYMODE) == 0) 
      { 
         client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_CANTBUY") 
         return false; 
      } 
      if(g_havemine[id] >= get_pcvar_num(g_LAMMO)) 
      { 
         client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_HAVEMAX") 
         return false; 
      } 
      if(cs_get_user_money(id) < get_pcvar_num(g_LCOST)) 
      { 
         client_print(id, print_chat, "%L %L%d %L", id, "CHATTAG",id, "STR_NOMONEY",get_pcvar_num(g_LCOST),id, "STR_NEEDED") 
         return false; 
      } 
   } 
   if(!CheckTime(id)) 
   { 
      client_print(id, print_chat, "%L %L %d %L", id, "CHATTAG",id, "STR_DELAY",get_pcvar_num(g_LDELAY)-g_nowtime,id, "STR_SECONDS") 
      return false; 
   } 

   return true; 
} 

bool:ReturnCheck(id) 
{ 
   if(!CanCheck(id,-1)) return false; 
   if(g_havemine[id] + 1 > get_pcvar_num(g_LAMMO)) return false; 
   new tgt,body,Float:vo[3],Float:to[3]; 
   get_user_aiming(id,tgt,body); 
   if(!pev_valid(tgt)) return false; 
   pev(id,pev_origin,vo); 
   pev(tgt,pev_origin,to); 
   if(get_distance_f(vo,to) > 70.0) return false; 
   new EntityName[32]; 
   pev(tgt, pev_classname, EntityName, 31); 
   if(!equal(EntityName, ENT_CLASS_NAME)) return false; 
   if(pev(tgt,LASERMINE_OWNER) != id) return false; 
   return true; 
} 

bool:CreateCheck(id) 
{ 
   if(!CanCheck(id,0)) return false; 
  
   if(!game_started() && get_pcvar_num(g_NOROUND)) 
   { 
      client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOROUND") 
      return false; 
  } 

   if(g_deployed[id] >= get_pcvar_num(g_LAMMO)) 
   { 
      client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_MAXDEPLOY") 
      return false; 
   } 

   if(TeamDeployedCount(id) >= get_pcvar_num(g_LTMAX)) 
   { 
      client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_MANYPPL") 
      return false; 
   } 
   new Float:vTraceDirection[3], Float:vTraceEnd[3],Float:vOrigin[3]; 
   pev(id, pev_origin, vOrigin); 
   velocity_by_aim(id, 128, vTraceDirection); 
   xs_vec_add(vTraceDirection, vOrigin, vTraceEnd); 
   engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0); 
   new Float:fFraction,Float:vTraceNormal[3]; 
   get_tr2(0, TR_flFraction, fFraction); 
  
   if(fFraction < 1.0) 
   { 
      
      get_tr2(0, TR_vecEndPos, vTraceEnd); 
      get_tr2(0, TR_vecPlaneNormal, vTraceNormal); 

      return true; 
   } 

   client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_PLANTWALL") 
   DeleteTask(id); 
  
   return false; 
} 

public ltm_Think(i_Ent) 
{ 
   if(!pev_valid(i_Ent)) 
      return FMRES_IGNORED; 
   new EntityName[32]; 
   pev(i_Ent, pev_classname, EntityName, 31); 
   if(!get_pcvar_num(g_LENABLE)) return FMRES_IGNORED; 
  
   if(!equal(EntityName, ENT_CLASS_NAME)) 
      return FMRES_IGNORED; 

   static Float:fCurrTime; 
   fCurrTime = get_gametime(); 

   switch(pev(i_Ent, LASERMINE_STEP)) 
   { 
      case POWERUP_THINK : 
      { 
         new Float:fPowerupTime; 
         pev(i_Ent, LASERMINE_POWERUP, fPowerupTime); 

         if(fCurrTime > fPowerupTime) 
         { 
            set_pev(i_Ent, pev_solid, SOLID_BBOX); 
            set_pev(i_Ent, LASERMINE_STEP, BEAMBREAK_THINK); 

            PlaySound(i_Ent, ACTIVATE_SOUND); 
         } 
         if(get_pcvar_num(g_LGLOW)!=0) 
         { 
            if(get_pcvar_num(g_LCLMODE)==0) 
            { 
               switch (pev(i_Ent,LASERMINE_TEAM)) 
               { 
                  
                  case CS_TEAM_T: set_rendering(i_Ent,kRenderFxGlowShell,Red_Zomb,Green_Zomb,Blue_Zomb,kRenderNormal,5); 
                  
                  case CS_TEAM_CT:set_rendering(i_Ent,kRenderFxGlowShell,Red_Hum,Green_Hum,Blue_Hum,kRenderNormal,5); 
               } 
            }else 
            { 
              
               set_rendering(i_Ent,kRenderFxGlowShell,random_num(50 , 200),random_num(50 , 200),random_num(50 , 200),kRenderNormal,5); 
            } 
         } 
         set_pev(i_Ent, pev_nextthink, fCurrTime + 0.1); 
      } 
      case BEAMBREAK_THINK : 
      { 
         static Float:vEnd[3],Float:vOrigin[3]; 
         pev(i_Ent, pev_origin, vOrigin); 
         pev(i_Ent, LASERMINE_BEAMENDPOINT, vEnd); 

         static iHit, Float:fFraction; 
         engfunc(EngFunc_TraceLine, vOrigin, vEnd, DONT_IGNORE_MONSTERS, i_Ent, 0); 

         get_tr2(0, TR_flFraction, fFraction); 
         iHit = get_tr2(0, TR_pHit); 

        
         if(fFraction < 1.0) 
         { 
            
            if(pev_valid(iHit)) 
            { 
               pev(iHit, pev_classname, EntityName, 31); 
              
               if(!equal(EntityName, ENT_CLASS_NAME) && !equal(EntityName, gSnarkClassName) && !equal(EntityName, barnacle_class) && !equal(EntityName, weapon_box)) 
               { 
                  set_pev(i_Ent, pev_enemy, iHit); 

                  if(get_pcvar_num(g_LMODE) == MODE_LASERMINE) 
                     CreateLaserDamage(i_Ent,iHit); 
                  else 
                     if(get_pcvar_num(g_LFF) || CsTeams:pev(i_Ent,LASERMINE_TEAM) != cs_get_user_team(iHit)) 
                        set_pev(i_Ent, LASERMINE_STEP, EXPLOSE_THINK); 

                  if (!pev_valid(i_Ent))  
                     return FMRES_IGNORED; 

                  set_pev(i_Ent, pev_nextthink, fCurrTime + random_float(0.1, 0.3)); 
               } 
            } 
         } 
         if(get_pcvar_num(g_LDMGMODE)!=0) 
            if(pev(i_Ent,LASERMINE_HITING) != iHit) 
               set_pev(i_Ent,LASERMINE_HITING,iHit); 
  
        
         if(pev_valid(i_Ent)) 
         { 
            static Float:fHealth; 
            pev(i_Ent, pev_health, fHealth); 

            if(fHealth <= 0.0 || (pev(i_Ent,pev_flags) & FL_KILLME)) 
            { 
            set_pev(i_Ent, LASERMINE_STEP, EXPLOSE_THINK); 
            set_pev(i_Ent, pev_nextthink, fCurrTime + random_float(0.1, 0.3)); 
            } 
                                
            static Float:fBeamthink; 
            pev(i_Ent, LASERMINE_BEAMTHINK, fBeamthink); 
                    
            if(fBeamthink < fCurrTime && get_pcvar_num(g_LVISIBLE)) 
            { 
               DrawLaser(i_Ent, vOrigin, vEnd); 
               set_pev(i_Ent, LASERMINE_BEAMTHINK, fCurrTime + 0.1); 
            } 
            set_pev(i_Ent, pev_nextthink, fCurrTime + 0.01); 
         } 
      } 
      case EXPLOSE_THINK : 
      { 
        
         set_pev(i_Ent, pev_nextthink, 0.0); 
         PlaySound(i_Ent, STOP_SOUND); 
         g_deployed[pev(i_Ent,LASERMINE_OWNER)]--; 
         CreateExplosion(i_Ent); 
         CreateDamage(i_Ent,get_pcvar_float(g_LRDMG),get_pcvar_float(g_LRADIUS)) 
         RemoveEntity   (i_Ent); 
      } 
   } 

   return FMRES_IGNORED; 
} 

PlaySound(i_Ent, i_SoundType) 
{ 
   switch (i_SoundType) 
   { 
      case POWERUP_SOUND : 
      { 
         emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND1, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); 
         emit_sound(i_Ent, CHAN_BODY , ENT_SOUND2, 0.2, ATTN_NORM, 0, PITCH_NORM); 
      } 
      case ACTIVATE_SOUND : 
      { 
         emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND3, 0.5, ATTN_NORM, 1, 75); 
      } 
      case STOP_SOUND : 
      { 
         emit_sound(i_Ent, CHAN_BODY , ENT_SOUND2, 0.2, ATTN_NORM, SND_STOP, PITCH_NORM); 
         emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND3, 0.5, ATTN_NORM, SND_STOP, 75); 
      } 
   } 
} 

DrawLaser(i_Ent, const Float:v_Origin[3], const Float:v_EndOrigin[3]) 
{
   new tcolor[3]; 
   new teamid = pev(i_Ent, LASERMINE_TEAM); 
   if(get_pcvar_num(g_LCLMODE) == 0) 
   { 
      switch(teamid){ 
         case 1:{ 
            
            tcolor[0] = Red_Zomb; 
            tcolor[1] = Green_Zomb; 
            tcolor[2] = Blue_Zomb; 
         } 
         case 2:{ 
            
            tcolor[0] = Red_Hum; 
            tcolor[1] = Green_Hum; 
            tcolor[2] = Blue_Hum; 
         } 
      } 
   }else 
   { 
      
      tcolor[0] = random_num(50 , 200); 
      tcolor[1] = random_num(50 , 200); 
      tcolor[2] = random_num(50 , 200); 
   } 
   message_begin(MSG_BROADCAST,SVC_TEMPENTITY); 
   write_byte(TE_BEAMPOINTS); 
   engfunc(EngFunc_WriteCoord,v_Origin[0]); 
   engfunc(EngFunc_WriteCoord,v_Origin[1]); 
   engfunc(EngFunc_WriteCoord,v_Origin[2]); 
   engfunc(EngFunc_WriteCoord,v_EndOrigin[0]); 
   engfunc(EngFunc_WriteCoord,v_EndOrigin[1]); 
   engfunc(EngFunc_WriteCoord,v_EndOrigin[2]); 
   write_short(beam); 
   write_byte(0); 
   write_byte(0); 
   write_byte(1);  
   write_byte(5);  
   write_byte(0);  
   write_byte(tcolor[0]); 
   write_byte(tcolor[1]); 
   write_byte(tcolor[2]); 
   write_byte(get_pcvar_num(g_LCBRIGHT)); 
   write_byte(255); 
   message_end(); 
   
   	// Get user origin
	static Float:originF[3]
	pev(ID_BLOOD, pev_origin, originF)
   
   	// Sparks
	if(get_pcvar_num(g_LDETAIL)) {
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, v_EndOrigin, 0)
	write_byte(TE_SPARKS) // TE id
	engfunc(EngFunc_WriteCoord, v_EndOrigin[0]) // x
	engfunc(EngFunc_WriteCoord, v_EndOrigin[1]) // y
	engfunc(EngFunc_WriteCoord, v_EndOrigin[2]) // z
	message_end();
      
   	// Effects when cut
		message_begin(MSG_BROADCAST ,SVC_TEMPENTITY)
		write_byte(TE_EXPLOSION)
		engfunc(EngFunc_WriteCoord, v_EndOrigin[0])
		engfunc(EngFunc_WriteCoord, v_EndOrigin[1])
		engfunc(EngFunc_WriteCoord, v_EndOrigin[2]-10.0)
		write_short(TE_SPARKS)	// sprite index
		write_byte(1)	// scale in 0.1's
		write_byte(30)	// framerate
		write_byte(TE_EXPLFLAG_NODLIGHTS | TE_EXPLFLAG_NOPARTICLES | TE_EXPLFLAG_NOSOUND)	// flags
		message_end()
	}
} 

CreateDamage(iCurrent,Float:DmgMAX,Float:Radius) 
{ 
  
   new Float:vecSrc[3]; 
   pev(iCurrent, pev_origin, vecSrc); 

   new AtkID =pev(iCurrent,LASERMINE_OWNER); 
   new TeamID=pev(iCurrent,LASERMINE_TEAM); 

   new ent = -1; 
   new Float:tmpdmg = DmgMAX; 

   new Float:kickback = 0.0; 
  
   new Float:Tabsmin[3], Float:Tabsmax[3]; 
   new Float:vecSpot[3]; 
   new Float:Aabsmin[3], Float:Aabsmax[3]; 
   new Float:vecSee[3]; 
   new trRes; 
   new Float:flFraction; 
   new Float:vecEndPos[3]; 
   new Float:distance; 
   new Float:origin[3], Float:vecPush[3]; 
   new Float:invlen; 
   new Float:velocity[3]; 
   new iHitHP,iHitTeam; 
  
   new Float:falloff; 
   if(Radius > 0.0) 
   { 
      falloff = DmgMAX / Radius; 
   } else { 
      falloff = 1.0; 
   } 
  
   while((ent = engfunc(EngFunc_FindEntityInSphere, ent, vecSrc, Radius)) != 0) 
   { 
      if(!pev_valid(ent)) continue; 
      if(!(pev(ent, pev_flags) & (FL_CLIENT | FL_FAKECLIENT | FL_MONSTER))) 
      { 
        
         continue; 
      } 
      if(!pev_user_alive(ent)) continue; 
      
      kickback = 1.0; 
      tmpdmg = DmgMAX; 
      
      
      pev(ent, pev_absmin, Tabsmin); 
      pev(ent, pev_absmax, Tabsmax); 
      xs_vec_add(Tabsmin,Tabsmax,Tabsmin); 
      xs_vec_mul_scalar(Tabsmin,0.5,vecSpot); 
      pev(iCurrent, pev_absmin, Aabsmin); 
      pev(iCurrent, pev_absmax, Aabsmax); 
      xs_vec_add(Aabsmin,Aabsmax,Aabsmin); 
      xs_vec_mul_scalar(Aabsmin,0.5,vecSee); 
      engfunc(EngFunc_TraceLine, vecSee, vecSpot, 0, iCurrent, trRes); 
      get_tr2(trRes, TR_flFraction, flFraction); 
      
      if(flFraction >= 0.9 || get_tr2(trRes, TR_pHit) == ent) 
      { 
        
         get_tr2(trRes, TR_vecEndPos, vecEndPos); 
         distance = get_distance_f(vecSrc, vecEndPos) * falloff; 
         tmpdmg -= distance; 
         if(tmpdmg < 0.0) 
            tmpdmg = 0.0; 
        
         if(kickback != 0.0) 
         { 
            xs_vec_sub(vecSpot,vecSee,origin); 
            invlen = 1.0/get_distance_f(vecSpot, vecSee); 

            xs_vec_mul_scalar(origin,invlen,vecPush); 
            pev(ent, pev_velocity, velocity) 
            xs_vec_mul_scalar(vecPush,tmpdmg,vecPush); 
            xs_vec_mul_scalar(vecPush,kickback,vecPush); 
            xs_vec_add(velocity,vecPush,velocity); 
            if(tmpdmg < 60.0) 
            { 
               xs_vec_mul_scalar(velocity,12.0,velocity); 
            } else { 
               xs_vec_mul_scalar(velocity,4.0,velocity); 
            } 
            if(velocity[0] != 0.0 || velocity[1] != 0.0 || velocity[2] != 0.0) 
            { 
              
               set_pev(ent, pev_velocity, velocity) 
            } 
         } 

         iHitHP = pev_user_health(ent) - floatround(tmpdmg) 
         iHitTeam = int:cs_get_user_team(ent) 
         if(iHitHP <= 0) 
         { 
            if(iHitTeam != TeamID) 
            { 
               cs_set_user_money(AtkID,cs_get_user_money(AtkID) + get_pcvar_num(g_LFMONEY)) 
               set_score(AtkID,ent,1,iHitHP) 
            }else 
            { 
               if(get_pcvar_num(g_LFF)) 
               { 
                  cs_set_user_money(AtkID,cs_get_user_money(AtkID) - get_pcvar_num(g_LFMONEY)) 
                  set_score(AtkID,ent,-1,iHitHP) 
               } 
            } 
         }else 
         { 
            if(iHitTeam != TeamID || get_pcvar_num(g_LFF)) 
            { 
              
               set_user_health(ent, iHitHP) 
               engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},ent); 
               write_byte(floatround(tmpdmg)) 
               write_byte(floatround(tmpdmg)) 
               write_long(DMG_BULLET) 
               engfunc(EngFunc_WriteCoord,vecSrc[0]) 
               engfunc(EngFunc_WriteCoord,vecSrc[1]) 
               engfunc(EngFunc_WriteCoord,vecSrc[2]) 
               message_end() 
            } 
         } 
      } 
   } 
   return 
} 

bool:pev_user_alive(ent) 
{ 
   new deadflag = pev(ent,pev_deadflag); 
   if(deadflag != DEAD_NO) 
      return false; 
   return true; 
} 

CreateExplosion(iCurrent) 
{ 
   new Float:vOrigin[3]; 
   pev(iCurrent,pev_origin,vOrigin); 

   message_begin(MSG_BROADCAST, SVC_TEMPENTITY); 
   write_byte(99); 
   write_short(iCurrent); 
   message_end(); 

   engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vOrigin, 0); 
   write_byte(TE_EXPLOSION); 
   engfunc(EngFunc_WriteCoord,vOrigin[0]); 
   engfunc(EngFunc_WriteCoord,vOrigin[1]); 
   engfunc(EngFunc_WriteCoord,vOrigin[2]); 
   write_short(boom); 
   write_byte(30); 
   write_byte(15); 
   write_byte(0); 
   message_end(); 
} 

CreateLaserDamage(iCurrent,isHit) 
{ 
   if(isHit < 0) return PLUGIN_CONTINUE 
   switch(get_pcvar_num(g_LDMGMODE)) 
   { 
      case 1: 
      { 
         if(pev(iCurrent,LASERMINE_HITING) == isHit) 
            return PLUGIN_CONTINUE 
      } 
      case 2: 
      { 
         if(pev(iCurrent,LASERMINE_HITING) == isHit) 
         { 
            static Float:cnt 
            static now,htime;now = floatround(get_gametime()) 

            pev(iCurrent,LASERMINE_COUNT,cnt) 
            htime = floatround(cnt) 
            if(now - htime < get_pcvar_num(g_LDSEC)) 
            { 
               return PLUGIN_CONTINUE; 
            }else{ 
               set_pev(iCurrent,LASERMINE_COUNT,get_gametime()) 
            } 
         }else 
         { 
            set_pev(iCurrent,LASERMINE_COUNT,get_gametime()) 
         } 
      } 
   } 

   new Float:vOrigin[3],Float:vEnd[3] 
   pev(iCurrent,pev_origin,vOrigin) 
   pev(iCurrent,pev_vuser1,vEnd) 

   new teamid = pev(iCurrent, LASERMINE_TEAM) 

   new szClassName[32] 
   new Alive,God 
   new iHitTeam,iHitHP,id 
   new hitscore 

   szClassName[0] = '^0' 
   pev(isHit,pev_classname,szClassName,32) 
   if((pev(isHit, pev_flags) & (FL_CLIENT | FL_FAKECLIENT | FL_MONSTER))) 
   { 
      Alive = pev_user_alive(isHit) 
      God = get_user_godmode(isHit) 
      if(!Alive || God) return PLUGIN_CONTINUE 
      iHitTeam = int:cs_get_user_team(isHit) 
      iHitHP = pev_user_health(isHit) - get_pcvar_num(g_LDMG) 
      id = pev(iCurrent,LASERMINE_OWNER) 

      if(iHitHP <= 0) 
      { 
         if(iHitTeam != teamid) 
         { 
            emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM) 
            hitscore = 1 
            cs_set_user_money(id,cs_get_user_money(id) + get_pcvar_num(g_LFMONEY)) 
            set_score(id,isHit,hitscore,iHitHP) 
         } 
         else 
         { 
            if(get_pcvar_num(g_LFF)) 
            { 
               emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM) 
               hitscore = -1 
               cs_set_user_money(id,cs_get_user_money(id) - get_pcvar_num(g_LFMONEY)) 
               set_score(id,isHit,hitscore,iHitHP) 
            } 
         } 
      } 
      else if(iHitTeam != teamid || get_pcvar_num(g_LFF)) 
      { 
         emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM) 
         set_user_health(isHit,iHitHP) 
         set_pev(iCurrent,LASERMINE_HITING,isHit); 
         engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},isHit); 
         write_byte(get_pcvar_num(g_LDMG)) 
         write_byte(get_pcvar_num(g_LDMG)) 
         write_long(DMG_BULLET) 
         engfunc(EngFunc_WriteCoord,vOrigin[0]) 
         engfunc(EngFunc_WriteCoord,vOrigin[1]) 
         engfunc(EngFunc_WriteCoord,vOrigin[2]) 
         message_end() 
      } 
   } 
   else if(equal(szClassName, ENT_CLASS_NAME3)) 
   { 
      new hl; 
      hl = pev_user_health(isHit); 
      set_user_health(isHit,hl-get_pcvar_num(g_LDMG)); 
   } 
   return PLUGIN_CONTINUE 
} 

stock pev_user_health(id) 
{ 
   new Float:health 
   pev(id,pev_health,health) 
   return floatround(health) 
} 

stock set_user_health(id,health) 
{ 
   health > 0 ? set_pev(id, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, id); 
} 

stock get_user_godmode(index) { 
   new Float:val 
   pev(index, pev_takedamage, val) 

   return (val == DAMAGE_NO) 
} 

stock set_user_frags(index, frags) 
{ 
   set_pev(index, pev_frags, float(frags)) 

   return 1 
} 

stock pev_user_frags(index) 
{ 
   new Float:frags; 
   pev(index,pev_frags,frags); 
   return floatround(frags); 
} 

set_score(id,target,hitscore,HP) 
{ 
   new idfrags = pev_user_frags(id) + hitscore 
   set_user_frags(id,idfrags) 
   new tarfrags = pev_user_frags(target) + 1 
   set_user_frags(target,tarfrags) 
   new idteam = int:cs_get_user_team(id) 
   new iddeaths = cs_get_user_deaths(id) 


   message_begin(MSG_ALL, g_msgDeathMsg, {0, 0, 0} ,0) 
   write_byte(id) 
   write_byte(target) 
   write_byte(0) 
   write_string(ENT_CLASS_NAME) 
   message_end() 

   message_begin(MSG_ALL, g_msgScoreInfo) 
   write_byte(id) 
   write_short(idfrags) 
   write_short(iddeaths) 
   write_short(0) 
   write_short(idteam) 
   message_end() 

   set_msg_block(g_msgDeathMsg, BLOCK_ONCE) 

   set_user_health(target, HP) 
} 

public BuyLasermine(id) 
{ 
   if(!CanCheck(id,1)) return PLUGIN_CONTINUE 

   cs_set_user_money(id,cs_get_user_money(id) - get_pcvar_num(g_LCOST)) 
   g_havemine[id]++; 

   client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_BOUGHT") 

   emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) 
   ShowAmmo(id) 
   return PLUGIN_HANDLED 
} 

public zp_extra_item_selected(id, itemid) 
{ 
   if(itemid == g_LME) 
      { 
      cs_set_user_money(id, cs_get_user_money(id) + LMCost) 
      BuyLasermine(id) 
      } 
   return PLUGIN_CONTINUE 
} 

ShowAmmo(id) 
{ 
   new ammo[51] 
   new PlugStat[ 555 char ]; 
   formatex(PlugStat, charsmax(PlugStat), "%L", LANG_PLAYER, "STR_STATE") 
   formatex(ammo, 50, "%s %i/%i",PlugStat, g_havemine[id],get_pcvar_num(g_LAMMO)) 

   message_begin(MSG_ONE, g_msgStatusText, {0,0,0}, id) 
   write_byte(0) 
   write_string(ammo) 
   message_end() 
} 

public showInfo(id) 
{ 
   client_print(id, print_chat, "%L", id, "STR_REF") 
} 

public say_lasermine(id) 
{ 
   new said[32] 
   read_argv(1,said,31); 
   if(!get_pcvar_num(g_LENABLE)) 
   { 
      return PLUGIN_CONTINUE 
   } 
   if(equali(said,"/buy lasermine")||equali(said,"/lm")||equali(said,"buy_lasermine")) 
   { 
      BuyLasermine(id) 
   } 
   else if(equali(said, "lasermine") || equali(said, "/lasermine")) 
   { 
      const SIZE = 1024 
      new msg[SIZE+1],len = 0; 
      len += formatex(msg[len], SIZE - len, "<html><body>") 
      len += formatex(msg[len], SIZE - len, "<p><b>LaserMine</b></p><br/><br/>") 
      len += formatex(msg[len], SIZE - len, "<p>Poti planta lasere numai pe un perete.</p><br/>") 
      len += formatex(msg[len], SIZE - len, "<p>Cu laserele plantate puteti omora zombi.</p><br/><br/>") 
      len += formatex(msg[len], SIZE - len, "<p><b>Introduce aceste comenzi in consola :<br/>") 
      len += formatex(msg[len], SIZE - len, "<b>bind v +setlaser</p>") 
      len += formatex(msg[len], SIZE - len, "<b>bind c +dellaser</p>") 
      len += formatex(msg[len], SIZE - len, "</body></html>") 
      show_motd(id, msg, "Lasermine Entity help") 
      return PLUGIN_CONTINUE 
   } 
   else if(containi(said, "laser") != -1) 
   { 
      showInfo(id) 
      return PLUGIN_CONTINUE 
   } 
   return PLUGIN_CONTINUE 
} 

public standing(id) 
{ 
   if(!g_settinglaser[id]) 
      return PLUGIN_CONTINUE 

   set_pev(id, pev_maxspeed, 1.0) 

   return PLUGIN_CONTINUE 
} 

public ltm_PostThink(id) 
{ 
   if(!g_settinglaser[id] && plsetting[id]){ 
      resetspeed(id) 
   } 
   else if(g_settinglaser[id] && !plsetting[id]) { 
      pev(id, pev_maxspeed,plspeed[id]) 
      set_pev(id, pev_maxspeed, 1.0) 
   } 
   plsetting[id] = g_settinglaser[id] 
   return FMRES_IGNORED 
} 

public ltm_PreThink(id) 
{ 
   if(!pev_user_alive(id) || g_settinglaser[id] == true || is_user_bot(id) || get_pcvar_num(g_LCMDMODE) == 1) 
      return FMRES_IGNORED; 

   if(pev(id, pev_button) & IN_USE && !(pev(id, pev_oldbuttons) & IN_USE)) 
      CreateLaserMine_Progress(id) 
   return FMRES_IGNORED; 
} 

resetspeed(id) 
{ 
   set_pev(id, pev_maxspeed, plspeed[id]) 
} 

public client_putinserver(id) 
{ 
   g_deployed[id] = 0; 
   g_havemine[id] = 0; 
   DeleteTask(id); 
   //set_task( 1.0, "Task_CheckAiming", id + 3389, _, _, "b" ); 
   //set_task( 1.1, "checkIfspec",_,_,_,"b") 
} 

public client_disconnect(id){ 
   if(!get_pcvar_num(g_LENABLE)) 
      return PLUGIN_CONTINUE 
   DeleteTask(id);
   RemoveAllTripmines(id); 
   return PLUGIN_CONTINUE
} 

public newround(id) 
{ 
   if(!get_pcvar_num(g_LENABLE)) 
      return PLUGIN_CONTINUE 

	for(new id=0;id<get_maxplayers();id++)
{
   pev(id, pev_maxspeed,plspeed[id]) 
   DeleteTask(id); 
   RemoveAllTripmines(id); 

   delaycount(id); 
   SetStartAmmo(id);
}
   return PLUGIN_CONTINUE 
}
public endround(id) 
{ 
   if(!get_pcvar_num(g_LENABLE)) 
      return PLUGIN_CONTINUE 
	for(new id=0;id<get_maxplayers();id++)
{
   DeleteTask(id); 
   RemoveAllTripmines(id); 
}
   return PLUGIN_CONTINUE 
}

public DeathEvent(){ 
   if(!get_pcvar_num(g_LENABLE)) 
      return PLUGIN_CONTINUE 

   new id = read_data(2) 
   if(is_user_connected(id))
	{
	DeleteTask(id);
set_task( 0.1, "checkIfspec",_,_,_,"b")
}
   return PLUGIN_CONTINUE 
} 

public RemoveAllTripmines(i_Owner) 
{ 
   new iEnt = g_MaxPL + 1; 
   new clsname[32]; 
   while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", ENT_CLASS_NAME))) 
   { 
      if(i_Owner) 
      { 
         if(pev(iEnt, LASERMINE_OWNER) != i_Owner) 
            continue; 
         clsname[0] = '^0' 
         pev(iEnt, pev_classname, clsname, sizeof(clsname)-1); 
         if(equali(clsname, ENT_CLASS_NAME)) 
         { 
            PlaySound(iEnt, STOP_SOUND); 
            RemoveEntity(iEnt); 
         } 
      } 
      else 
         set_pev(iEnt, pev_flags, FL_KILLME); 
   } 
   g_deployed[i_Owner]=0; 
} 

SetStartAmmo(id) 
{ 
   new stammo = get_pcvar_num(g_LSTAMMO); 
   if(stammo <= 0) return PLUGIN_CONTINUE; 
   g_havemine[id] = (g_havemine[id] <= stammo) ? stammo : g_havemine[id]; 
   return PLUGIN_CONTINUE; 
} 

public CutDeploy_onDamage(id) 
{ 
   if(get_user_health(id) < 1) 
      DeleteTask(id); 
} 

DeleteTask(id) 
{ 
   if(task_exists((TASK_PLANT + id))) 
   { 
      remove_task((TASK_PLANT + id)) 
   } 
   if(task_exists((TASK_RELEASE + id))) 
   { 
      remove_task((TASK_RELEASE + id)) 
   } 
   g_settinglaser[id] = false 
   return PLUGIN_CONTINUE; 
} 

stock set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) 
{ 
   static Float:RenderColor[3]; 
   RenderColor[0] = float(r); 
   RenderColor[1] = float(g); 
   RenderColor[2] = float(b); 

   set_pev(entity, pev_renderfx, fx); 
   set_pev(entity, pev_rendercolor, RenderColor); 
   set_pev(entity, pev_rendermode, render); 
   set_pev(entity, pev_renderamt, float(amount)); 

   return 1 
} 

get_offset_value(id, type) 
{ 
   new key = -1; 
   switch(type) 
   { 
      case OFFSET_TEAM: key = OFFSET_TEAM; 
      case OFFSET_MONEY: 
      key = OFFSET_MONEY; 
      case OFFSET_DEATH: key = OFFSET_DEATH; 
   } 
   if(key != -1) 
   { 
      if(is_amd64_server()) key += 25; 
      return get_pdata_int(id, key); 
   } 
   return -1; 
} 

public Task_CheckAiming( iTaskIndex ) 
{ 
    static iClient; 
    iClient = iTaskIndex - 3389; 

    if( is_user_alive( iClient ) ) 
    { 
        static iEntity, iDummy, cClassname[ 32 ]; 
        get_user_aiming( iClient, iEntity, iDummy, 9999 ); 

        if( pev_valid( iEntity ) ) 
        { 
            pev( iEntity, pev_classname, cClassname, 31 ); 

            if( equal( cClassname, "lasermine" ) ) 
            { 
                new name[ 32 ]; 
                new aim = pev( iEntity, LASERMINE_OWNER ); 
                get_user_name( aim, name, charsmax( name ) - 1 ) 
                set_hudmessage( 50, 100, 150, -1.0, 0.60, 0, 6.0, 1.1, 0.0, 0.0, -1 ) 
                show_hudmessage( iClient, "Owner: %s^nHealth: %d/700", name, pev(iEntity,pev_health ))
            } 
        } 
    } 
} 

stock client_printcolor(const id, const input[], any:...) 
{ 
   new iCount = 1, iPlayers[32] 
   static szMsg[191] 

   vformat(szMsg, charsmax(szMsg), input, 3) 
   replace_all(szMsg, 190, "!g", "^4") 
   replace_all(szMsg, 190, "!y", "^1") 
   replace_all(szMsg, 190, "!t", "^3") 
   replace_all(szMsg, 190, "!w", "^0") 

   if(id) iPlayers[0] = id 
   else get_players(iPlayers, iCount, "ch") 

   for(new i = 0; i < iCount; i++) 
   { 
      if(is_user_connected(iPlayers)) 
      { 
         message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, iPlayers) 
         write_byte(iPlayers) 
         write_string(szMsg) 
         message_end() 
      } 
   } 
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
Aliacee
Membru, skill +1
Membru, skill +1
Posts: 108
Joined: 29 Nov 2015, 19:05
Detinator Steam: Da
CS Status: Citesc forumul eXtreamCS.com...!
Fond eXtream: 0
Contact:

06 Jan 2019, 22:00

Salut, ba da.
Dar a fost mutata la cos de catre un Super Moderator.
Am salvat sursa pe care mi-ai dat-o si am pus-o in descriere aici. ^_^
Aici este vechea postare care mi-a fost mutata la cos: post2745499.html#p2745499
Voiam sa-ti zic ca am testat pluginul, iar problema a ramas simai jos ai o poza.
Poza: https://i.imgur.com/qcM89xN.jpg
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

06 Jan 2019, 23:16

| Afiseaza codul
#include <amxmodx> 
#include <amxmisc> 
#include <fakemeta> 
#include <hamsandwich> 
#include <xs> 
#include <cstrike> 
#include <biohazard> 

#pragma tabsize 0

#define PLUGIN "[ZP] LaserMine" 
#define VERSION "2.8.1" 
#define AUTHOR "SandStriker / Shidla / QuZ/DJ_WEST" 

#define RemoveEntity(%1)   engfunc(EngFunc_RemoveEntity,%1) 
#define TASK_PLANT         15100 
#define TASK_RESET         15500 
#define TASK_RELEASE      15900 

#define LASERMINE_TEAM      pev_iuser1 
#define LASERMINE_OWNER      pev_iuser2 
#define LASERMINE_STEP      pev_iuser3 
#define LASERMINE_HITING   pev_iuser4 
#define LASERMINE_COUNT      pev_fuser1 

#define LASERMINE_POWERUP   pev_fuser2 
#define LASERMINE_BEAMTHINK   pev_fuser3 

#define LASERMINE_BEAMENDPOINT   pev_vuser1 
#define MAX_MINES         10 
#define MODE_LASERMINE      0 
#define OFFSET_TEAM         114 
#define OFFSET_MONEY      115 
#define OFFSET_DEATH      444 

#define cs_get_user_team(%1)   CsTeams:get_offset_value(%1,OFFSET_TEAM) 
#define cs_get_user_deaths(%1)   get_offset_value(%1,OFFSET_DEATH) 

new const LMCost = 2 

new const 
   Red_Hum      = 0, 
   Green_Hum    = 0, 
   Blue_Hum   = 255; 

new const 
   Red_Zomb   = 255, 
   Green_Zomb    = 0, 
   Blue_Zomb   = 0; 

enum tripmine_e { 
   TRIPMINE_IDLE1 = 0, 
   TRIPMINE_IDLE2, 
   TRIPMINE_ARM1, 
   TRIPMINE_ARM2, 
   TRIPMINE_FIDGET, 
   TRIPMINE_HOLSTER, 
   TRIPMINE_DRAW, 
   TRIPMINE_WORLD, 
   TRIPMINE_GROUND, 
}; 

enum 
{ 
   POWERUP_THINK, 
   BEAMBREAK_THINK, 
   EXPLOSE_THINK 
}; 

enum 
{ 
   POWERUP_SOUND, 
   ACTIVATE_SOUND, 
   STOP_SOUND 
}; 

new const 
   ENT_MODELS[]   = "models/v_tripmine.mdl", 
   ENT_SOUND1[]   = "weapons/mine_deploy.wav", 
   ENT_SOUND2[]   = "weapons/mine_charge.wav", 
   ENT_SOUND3[]   = "weapons/mine_activate.wav", 
   ENT_SOUND4[]   = "debris/beamstart9.wav", 
   ENT_SOUND5[]   = "items/gunpickup2.wav", 
   ENT_SOUND6[]   = "debris/bustglass1.wav", 
   ENT_SOUND7[]   = "debris/bustglass2.wav", 
   ENT_SPRITE1[]   = "sprites/laserbeam.spr", 
   ENT_SPRITE2[]   = "sprites/lm_explode.spr"; 

new const 
   ENT_CLASS_NAME[]   =   "lasermine", 
   ENT_CLASS_NAME3[]   =   "func_breakable", 
   gSnarkClassName[]   =   "wpn_snark",  
   barnacle_class[]   =   "barnacle",      
   weapon_box[]      =   "weaponbox"; 

new g_EntMine, beam, boom 
new g_LENABLE, g_LFMONEY, g_LAMMO, g_LDMG, g_LBEO, g_LTMAX, g_LCOST, g_LHEALTH, g_LMODE, g_LRADIUS, g_NOROUND 
new g_LRDMG,g_LFF,g_LCBT, g_LDELAY, g_LVISIBLE, g_LSTAMMO, g_LACCESS, g_LGLOW, g_LDMGMODE, g_LCLMODE 
new g_LCBRIGHT, g_LDSEC, g_LCMDMODE, g_LBUYMODE, g_LME, g_LDETAIL; 
new g_msgDeathMsg,g_msgScoreInfo,g_msgDamage,g_msgStatusText; 
new g_dcount[33],g_nowtime,g_MaxPL 
new bool:g_settinglaser[33] 
new ID_BLOOD; 

new Float:plspeed[33], plsetting[33], g_havemine[33], g_deployed[33]; 

public plugin_init() 
{ 
   register_plugin(PLUGIN, VERSION, AUTHOR); 

   RegisterHam(Ham_TakeDamage, ENT_CLASS_NAME3, "Laser_TakeDamage"); 
  
   register_clcmd("+setlaser","CreateLaserMine_Progress_b"); 
   register_clcmd("-setlaser","StopCreateLaserMine"); 
   register_clcmd("+dellaser","ReturnLaserMine_Progress"); 
   register_clcmd("-dellaser","StopReturnLaserMine"); 
   register_clcmd("say","say_lasermine"); 
   register_clcmd("buy_lasermine","BuyLasermine"); 

   register_concmd("bh_untakelm", "luatlaser", ADMIN_LEVEL_B, " - <nume>"); 
   register_concmd("bh_takelm", "puslaser", ADMIN_LEVEL_B, " - <nume>"); 

   g_LENABLE   = register_cvar("bh_ltm","1"); 
   g_LACCESS   = register_cvar("bh_ltm_acs","0"); 
   g_LMODE      = register_cvar("bh_ltm_mode","0"); 
   g_LAMMO      = register_cvar("bh_ltm_ammo","2"); 
   g_LDMG      = register_cvar("bh_ltm_dmg","10000"); 
   g_LCOST      = register_cvar("bh_ltm_cost","5000"); 
   g_LFMONEY   = register_cvar("bh_ltm_fragmoney","1"); 
   g_LHEALTH   = register_cvar("bh_ltm_health","5"); 
   g_LTMAX      = register_cvar("bh_ltm_teammax","100"); 
   g_LRADIUS   = register_cvar("bh_ltm_radius","320.0") 
   g_LRDMG      = register_cvar("bh_ltm_rdmg","100") 
   g_LFF      = register_cvar("bh_ltm_ff","0"); 
   g_LCBT      = register_cvar("bh_ltm_cbt","ALL"); 
   g_LDELAY   = register_cvar("bh_ltm_delay","0.1"); 
   g_LVISIBLE   = register_cvar("bh_ltm_line","1"); 
   g_LGLOW      = register_cvar("bh_ltm_glow","0"); 
   g_LCBRIGHT   = register_cvar("bh_ltm_bright","255"); 
   g_LCLMODE   = register_cvar("bh_ltm_color","0"); 
   g_LDMGMODE   = register_cvar("bh_ltm_ldmgmode","0"); 
   g_LDSEC      = register_cvar("bh_ltm_ldmgseconds","1"); 
   g_LSTAMMO   = register_cvar("bh_ltm_startammo","2"); 
   g_LBUYMODE   = register_cvar("bh_ltm_buymode","1"); 
   g_LCMDMODE   = register_cvar("bh_ltm_cmdmode","1");      
   g_LBEO      = register_cvar("bh_ltm_brokeenemy","1"); 
   g_NOROUND   = register_cvar("bh_ltm_noround","1"); 
   g_LDETAIL  = register_cvar("bh_ltm_realistic_detail", "1");

   register_event("DeathMsg", "DeathEvent", "a"); 
   register_event("CurWeapon", "standing", "be", "1=1"); 
   register_event("ResetHUD", "delaycount", "a");

	register_event("HLTV", "newround", "a", "1=0", "2=0")
	register_logevent("endround", 2, "1=Round_End")

   register_event("Damage","CutDeploy_onDamage","b"); 
   g_msgDeathMsg   = get_user_msgid("DeathMsg"); 
   g_msgScoreInfo   = get_user_msgid("ScoreInfo"); 
   g_msgDamage      = get_user_msgid("Damage"); 
   g_msgStatusText = get_user_msgid("StatusText"); 
  
   register_forward(FM_Think, "ltm_Think"); 
   register_forward(FM_PlayerPostThink, "ltm_PostThink"); 
   register_forward(FM_PlayerPreThink, "ltm_PreThink"); 
  
   register_dictionary("lasermines.txt") 
} 

public plugin_precache() 
{ 
   precache_sound(ENT_SOUND1); 
   precache_sound(ENT_SOUND2); 
   precache_sound(ENT_SOUND3); 
   precache_sound(ENT_SOUND4); 
   precache_sound(ENT_SOUND5); 
   precache_sound(ENT_SOUND6); 
   precache_sound(ENT_SOUND7); 
   precache_model(ENT_MODELS); 
   beam = precache_model(ENT_SPRITE1); 
   boom = precache_model(ENT_SPRITE2); 
} 

public plugin_modules() 
{ 
   require_module("fakemeta"); 
   require_module("cstrike"); 
} 

public plugin_cfg() 
{ 
   g_EntMine = engfunc(EngFunc_AllocString,ENT_CLASS_NAME3); 
   arrayset(g_havemine,0,sizeof(g_havemine)); 
   arrayset(g_deployed,0,sizeof(g_deployed)); 
   g_MaxPL = get_maxplayers(); 

   new file[64]; get_localinfo("amxx_configsdir",file,63); 
   format(file, 63, "%s/bh_ltm_cvars.cfg", file); 
   if(file_exists(file)) server_cmd("exec %s", file), server_exec(); 
} 

public luatlaser(id, level, cid) 
{ 
   if (!cmd_access(id, level, cid, 2)) 
   { 
      return PLUGIN_HANDLED 
   } 

   new arg[32] 
    
   read_argv(1, arg, 31) 
   new player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF) 
    
   if (!player) 
      return PLUGIN_HANDLED 

   DeleteTask(player); 
   RemoveAllTripmines(player); 

   new namea[32],namep[32]; 
   get_user_name(id,namea,charsmax(namea)); 
   get_user_name(player,namep,charsmax(namep)); 
   client_printcolor(0, "!g[Biohazard] !yAdminul !g%s !yi-a dezactivat laserele lui !g%s!y.", namea, namep);

   return PLUGIN_HANDLED; 
} 

public puslaser(id, level, cid) 
{ 
   if (!cmd_access(id, level, cid, 2)) 
   { 
      return PLUGIN_HANDLED 
   } 

   new arg[32] 
    
   read_argv(1, arg, 31) 
   new player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF) 
    
   if (!player) 
      return PLUGIN_HANDLED 

   DeleteTask(player); 
   SetStartAmmo(player); 

   new namea[32],namep[32]; 
   get_user_name(id,namea,charsmax(namea)); 
   get_user_name(player,namep,charsmax(namep)); 
   client_printcolor(0, "!g[Biohazard] !yAdminul !g%s !yi-a reactivat laserele lui !g%s!y.", namea, namep);

   return PLUGIN_HANDLED; 
} 

public checkIfspec(id) 
{ 
    if( g_deployed[id] > 0 ) 
    { 
          if(cs_get_user_team(id) == CS_TEAM_SPECTATOR) 
          { 
               DeleteTask(id); 
               RemoveAllTripmines(id); 

               new namep[32]; 
               get_user_name(id,namep,charsmax(namep)); 
               client_printcolor(0,"!g[Biohazard] !yLaserele lui !g%s !gau fost dezactivate deoarece s-a mutat la !gspectatori!y!",namep); 
          } 
     } 
} 

public Laser_TakeDamage(victim, inflictor, attacker, Float:f_Damage, bit_Damage) 
{ 
   if(get_pcvar_num(g_LBEO)) 
   { 
      new i_Owner 

      i_Owner = pev(victim, LASERMINE_OWNER) 
      
      if(CsTeams:pev(victim, LASERMINE_TEAM) == cs_get_user_team(attacker)) 
      
      if(i_Owner != attacker)	return HAM_SUPERCEDE

      return PLUGIN_CONTINUE 
   } 
   return PLUGIN_CONTINUE 
} 

public delaycount(id) 
{ 
   g_dcount[id] = floatround(get_gametime()); 
} 

bool:CheckTime(id) 
{ 
   g_nowtime = floatround(get_gametime()) - g_dcount[id]; 
   if(g_nowtime >= get_pcvar_num(g_LDELAY)) 
      return true; 
   return false; 
} 

public CreateLaserMine_Progress_b(id) 
{ 
   if(get_pcvar_num(g_LCMDMODE) != 0) 
      CreateLaserMine_Progress(id); 
   return PLUGIN_HANDLED; 
} 

public CreateLaserMine_Progress(id) 
{ 
   if(!CreateCheck(id)) 
      return PLUGIN_HANDLED; 
   g_settinglaser[id] = true; 

   message_begin(MSG_ONE, 108, {0,0,0}, id); 
   write_byte(1); 
   write_byte(0); 
   message_end(); 

   set_task(1.2, "Spawn", (TASK_PLANT + id)); 

   return PLUGIN_HANDLED; 
} 

public ReturnLaserMine_Progress(id) 
{ 
   if(!ReturnCheck(id)) 
      return PLUGIN_HANDLED; 
   g_settinglaser[id] = true; 

   message_begin(MSG_ONE, 108, {0,0,0}, id); 
   write_byte(1); 
   write_byte(0); 
   message_end(); 

   set_task(1.2, "ReturnMine", (TASK_RELEASE + id)); 

   return PLUGIN_HANDLED; 
} 

public StopCreateLaserMine(id) 
{ 
   DeleteTask(id); 
   message_begin(MSG_ONE, 108, {0,0,0}, id); 
   write_byte(0); 
   write_byte(0); 
   message_end(); 

   return PLUGIN_HANDLED; 
} 

public StopReturnLaserMine(id) 
{ 
   DeleteTask(id); 
   message_begin(MSG_ONE, 108, {0,0,0}, id); 
   write_byte(0); 
   write_byte(0); 
   message_end(); 

   return PLUGIN_HANDLED; 
} 

public ReturnMine(id) 
{ 
   id -= TASK_RELEASE; 
   new tgt,body,Float:vo[3],Float:to[3]; 
   get_user_aiming(id,tgt,body); 
   if(!pev_valid(tgt)) return; 
   pev(id,pev_origin,vo); 
   pev(tgt,pev_origin,to); 
   if(get_distance_f(vo,to) > 70.0) return; 
   new EntityName[32]; 
   pev(tgt, pev_classname, EntityName, 31); 
   if(!equal(EntityName, ENT_CLASS_NAME)) return; 
   if(pev(tgt,LASERMINE_OWNER) != id) return; 
   RemoveEntity(tgt); 

   g_havemine[id] ++; 
   g_deployed[id] --; 
   emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) 
   ShowAmmo(id) 

   return; 
} 

public Spawn(id) 
{ 
   id -= TASK_PLANT 
  
   new i_Ent = engfunc(EngFunc_CreateNamedEntity,g_EntMine); 
   if(!i_Ent) 
   { 
      client_print(id, print_chat,"[Laesrmine Debug] Can't Create Entity"); 
      return PLUGIN_HANDLED_MAIN; 
   } 
   set_pev(i_Ent,pev_classname,ENT_CLASS_NAME); 

   engfunc(EngFunc_SetModel,i_Ent,ENT_MODELS); 

   set_pev(i_Ent,pev_solid,SOLID_BBOX); 
   //set_pev(i_Ent,pev_movetype,MOVETYPE_FLY); 

   set_pev(i_Ent,pev_frame,0); 
   set_pev(i_Ent,pev_body,3); 
   set_pev(i_Ent,pev_sequence,TRIPMINE_WORLD); 
   set_pev(i_Ent,pev_framerate,0); 
   set_pev(i_Ent,pev_takedamage,DAMAGE_YES); 
   set_pev(i_Ent,pev_dmg,100.0); 
   //set_user_health(i_Ent,get_pcvar_num(g_LHEALTH));
	set_pev(i_Ent,pev_health,get_pcvar_num(g_LHEALTH));

   new Float:vOrigin[3],Float:vNewOrigin[3],Float:vNormal[3],Float:vTraceDirection[3],Float:vTraceEnd[3],Float:vEntAngles[3]; 
   pev(id, pev_origin, vOrigin); 
   velocity_by_aim(id, 128, vTraceDirection); 
   xs_vec_add(vTraceDirection, vOrigin, vTraceEnd); 
   engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0); 

   new Float:fFraction; 
   get_tr2(0, TR_flFraction, fFraction); 

   if(fFraction < 1.0) 
   {
      get_tr2(0, TR_vecEndPos, vTraceEnd); 
      get_tr2(0, TR_vecPlaneNormal, vNormal); 
   } 

   xs_vec_mul_scalar(vNormal, 8.0, vNormal); 
   xs_vec_add(vTraceEnd, vNormal, vNewOrigin); 

   engfunc(EngFunc_SetSize, i_Ent, Float:{ -4.0, -4.0, -4.0 }, Float:{ 4.0, 4.0, 4.0 }); 
   engfunc(EngFunc_SetOrigin, i_Ent, vNewOrigin); 

   vector_to_angle(vNormal,vEntAngles); 
   set_pev(i_Ent,pev_angles,vEntAngles); 
        
   xs_vec_mul_scalar(vNormal, 8192.0, vNormal);

   new Float:vBeamEnd[3], Float:vTracedBeamEnd[3];
   engfunc(EngFunc_TraceLine, vNewOrigin, vBeamEnd, IGNORE_MONSTERS, -1, 0); 

   xs_vec_add(vNewOrigin, vNormal, vBeamEnd);

   get_tr2(0, TR_vecPlaneNormal, vNormal); 
   get_tr2(0, TR_vecEndPos, vTracedBeamEnd); 
  
   set_pev(i_Ent, LASERMINE_OWNER, id); 
   set_pev(i_Ent,LASERMINE_BEAMENDPOINT,vTracedBeamEnd); 
   set_pev(i_Ent,LASERMINE_TEAM,int:cs_get_user_team(id)); 
   new Float:fCurrTime = get_gametime(); 

   set_pev(i_Ent,LASERMINE_POWERUP, fCurrTime + 2.5); 
   set_pev(i_Ent,LASERMINE_STEP,POWERUP_THINK); 
   set_pev(i_Ent,pev_nextthink, fCurrTime + 0.2); 

   PlaySound(i_Ent,POWERUP_SOUND); 
   g_deployed[id]++; 
   g_havemine[id]--; 
   DeleteTask(id); 
   ShowAmmo(id); 
   return 1; 
} 

stock TeamDeployedCount(id) 
{ 
   static i; 
   static CsTeams:t;t = cs_get_user_team(id); 
   static cnt;cnt=0; 

   for(i = 1;i <= g_MaxPL;i++) 
   { 
      if(is_user_connected(i)) 
         if(t == cs_get_user_team(i)) 
            cnt += g_deployed; 
   } 

   return cnt; 
} 

bool:CheckCanTeam(id) 
{ 
   new arg[5],CsTeam:num; 
   get_pcvar_string(g_LCBT,arg,3); 
   if(equali(arg,"Z")) 
   { 
      num = CsTeam:CS_TEAM_T; 
   } 
   else if(equali(arg,"H")) 
   { 
      num = CsTeam:CS_TEAM_CT; 
   } 
   else if(equali(arg,"ALL") || equali(arg,"HZ") || equali(arg,"ZH")) 
   { 
      num = CsTeam:CS_TEAM_UNASSIGNED; 
   } 
   else 
   { 
      num = CsTeam:CS_TEAM_UNASSIGNED; 
   } 
   if(num != CsTeam:CS_TEAM_UNASSIGNED && num != CsTeam:cs_get_user_team(id)) 
      return false; 
   return true; 
} 

bool:CanCheck(id,mode)  
{ 
   if(!get_pcvar_num(g_LENABLE)) 
   { 
      client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOTACTIVE") 

      return false; 
   } 
   if(get_pcvar_num(g_LACCESS) != 0) 
      if(!(get_user_flags(id) & ADMIN_IMMUNITY)) 
      { 
         client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOACCESS") 
         return false; 
      } 
   if(!pev_user_alive(id)) return false; 
   if(!CheckCanTeam(id)) 
   { 
      client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_CBT") 
      return false; 
   } 
   if(mode == 0) 
   { 
      if(g_havemine[id] <= 0) 
      { 
         client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_DONTHAVEMINE") 
         return false; 
      } 
   } 
   if(mode == 1) 
   { 
      if(get_pcvar_num(g_LBUYMODE) == 0) 
      { 
         client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_CANTBUY") 
         return false; 
      } 
      if(g_havemine[id] >= get_pcvar_num(g_LAMMO)) 
      { 
         client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_HAVEMAX") 
         return false; 
      } 
      if(cs_get_user_money(id) < get_pcvar_num(g_LCOST)) 
      { 
         client_print(id, print_chat, "%L %L%d %L", id, "CHATTAG",id, "STR_NOMONEY",get_pcvar_num(g_LCOST),id, "STR_NEEDED") 
         return false; 
      } 
   } 
   if(!CheckTime(id)) 
   { 
      client_print(id, print_chat, "%L %L %d %L", id, "CHATTAG",id, "STR_DELAY",get_pcvar_num(g_LDELAY)-g_nowtime,id, "STR_SECONDS") 
      return false; 
   } 

   return true; 
} 

bool:ReturnCheck(id) 
{ 
   if(!CanCheck(id,-1)) return false; 
   if(g_havemine[id] + 1 > get_pcvar_num(g_LAMMO)) return false; 
   new tgt,body,Float:vo[3],Float:to[3]; 
   get_user_aiming(id,tgt,body); 
   if(!pev_valid(tgt)) return false; 
   pev(id,pev_origin,vo); 
   pev(tgt,pev_origin,to); 
   if(get_distance_f(vo,to) > 70.0) return false; 
   new EntityName[32]; 
   pev(tgt, pev_classname, EntityName, 31); 
   if(!equal(EntityName, ENT_CLASS_NAME)) return false; 
   if(pev(tgt,LASERMINE_OWNER) != id) return false; 
   return true; 
} 

bool:CreateCheck(id) 
{ 
   if(!CanCheck(id,0)) return false; 
  
   if(!game_started() && get_pcvar_num(g_NOROUND)) 
   { 
      client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOROUND") 
      return false; 
  } 

   if(g_deployed[id] >= get_pcvar_num(g_LAMMO)) 
   { 
      client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_MAXDEPLOY") 
      return false; 
   } 

   if(TeamDeployedCount(id) >= get_pcvar_num(g_LTMAX)) 
   { 
      client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_MANYPPL") 
      return false; 
   } 
   new Float:vTraceDirection[3], Float:vTraceEnd[3],Float:vOrigin[3]; 
   pev(id, pev_origin, vOrigin); 
   velocity_by_aim(id, 128, vTraceDirection); 
   xs_vec_add(vTraceDirection, vOrigin, vTraceEnd); 
   engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0); 
   new Float:fFraction,Float:vTraceNormal[3]; 
   get_tr2(0, TR_flFraction, fFraction); 
  
   if(fFraction < 1.0) 
   { 
      
      get_tr2(0, TR_vecEndPos, vTraceEnd); 
      get_tr2(0, TR_vecPlaneNormal, vTraceNormal); 

      return true; 
   } 

   client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_PLANTWALL") 
   DeleteTask(id); 
  
   return false; 
} 

public ltm_Think(i_Ent) 
{ 
   if(!pev_valid(i_Ent)||!get_pcvar_num(g_LENABLE))	return FMRES_IGNORED;

   new EntityName[32]; 
   pev(i_Ent, pev_classname, EntityName, 31);
  
   if(!equal(EntityName, ENT_CLASS_NAME))	return FMRES_IGNORED; 

   static Float:fCurrTime; 
   fCurrTime = get_gametime(); 

   switch(pev(i_Ent, LASERMINE_STEP)) 
   { 
      case POWERUP_THINK : 
      { 
         new Float:fPowerupTime; 
         pev(i_Ent, LASERMINE_POWERUP, fPowerupTime); 

         if(fCurrTime > fPowerupTime) 
         { 
            set_pev(i_Ent, pev_solid, SOLID_BBOX); 
            set_pev(i_Ent, LASERMINE_STEP, BEAMBREAK_THINK); 

            PlaySound(i_Ent, ACTIVATE_SOUND); 
         } 
         if(get_pcvar_num(g_LGLOW)!=0) 
         { 
            if(get_pcvar_num(g_LCLMODE)==0) 
            { 
               switch (pev(i_Ent,LASERMINE_TEAM)) 
               { 
                  case CS_TEAM_T: set_rendering(i_Ent,kRenderFxGlowShell,Red_Zomb,Green_Zomb,Blue_Zomb,kRenderNormal,5); 
                  
                  case CS_TEAM_CT:	set_rendering(i_Ent,kRenderFxGlowShell,Red_Hum,Green_Hum,Blue_Hum,kRenderNormal,5); 
               } 
            }
			else	set_rendering(i_Ent,kRenderFxGlowShell,random_num(50 , 200),random_num(50 , 200),random_num(50 , 200),kRenderNormal,5); 
         } 
         set_pev(i_Ent, pev_nextthink, fCurrTime + 0.1); 
      }

      case BEAMBREAK_THINK : 
      { 
         static Float:vEnd[3],Float:vOrigin[3]; 
         pev(i_Ent, pev_origin, vOrigin); 
         pev(i_Ent, LASERMINE_BEAMENDPOINT, vEnd); 

         static iHit, Float:fFraction; 
         engfunc(EngFunc_TraceLine, vOrigin, vEnd, DONT_IGNORE_MONSTERS, i_Ent, 0); 

         get_tr2(0, TR_flFraction, fFraction); 
         iHit = get_tr2(0, TR_pHit); 

         if(fFraction < 1.0) 
         {
            if(pev_valid(iHit)) 
            { 
               pev(iHit, pev_classname, EntityName, 31); 
              
               if(!equal(EntityName, ENT_CLASS_NAME) && !equal(EntityName, gSnarkClassName) && !equal(EntityName, barnacle_class) && !equal(EntityName, weapon_box)) 
               { 
                  set_pev(i_Ent, pev_enemy, iHit); 

                  if(get_pcvar_num(g_LMODE) == MODE_LASERMINE)	CreateLaserDamage(i_Ent,iHit); 
                  else	if(get_pcvar_num(g_LFF) || CsTeams:pev(i_Ent,LASERMINE_TEAM) != cs_get_user_team(iHit))	set_pev(i_Ent, LASERMINE_STEP, EXPLOSE_THINK);

                  set_pev(i_Ent, pev_nextthink, fCurrTime + random_float(0.1, 0.3)); 
               } 
            } 
         } 
         if(get_pcvar_num(g_LDMGMODE)!=0)	if(pev(i_Ent,LASERMINE_HITING) != iHit)	set_pev(i_Ent,LASERMINE_HITING,iHit); 
  
        
         if(pev_valid(i_Ent)) 
         { 
            static Float:fHealth; 
            pev(i_Ent, pev_health, fHealth); 

            if(fHealth <= 0.0 || (pev(i_Ent,pev_flags) & FL_KILLME)) 
            { 
            set_pev(i_Ent, LASERMINE_STEP, EXPLOSE_THINK); 
            set_pev(i_Ent, pev_nextthink, fCurrTime + random_float(0.1, 0.3)); 
            } 
                                
            static Float:fBeamthink; 
            pev(i_Ent, LASERMINE_BEAMTHINK, fBeamthink); 
                    
            if(fBeamthink < fCurrTime && get_pcvar_num(g_LVISIBLE)) 
            { 
               DrawLaser(i_Ent, vOrigin, vEnd); 
               set_pev(i_Ent, LASERMINE_BEAMTHINK, fCurrTime + 0.1); 
            } 
            set_pev(i_Ent, pev_nextthink, fCurrTime + 0.01); 
         } 
      }

      case EXPLOSE_THINK: 
      { 
         set_pev(i_Ent, pev_nextthink, 0.0); 
         PlaySound(i_Ent, STOP_SOUND); 
         g_deployed[pev(i_Ent,LASERMINE_OWNER)]--; 
         CreateExplosion(i_Ent); 
         CreateDamage(i_Ent,get_pcvar_float(g_LRDMG),get_pcvar_float(g_LRADIUS)) 
         RemoveEntity   (i_Ent); 
      } 
   } 

   return FMRES_IGNORED; 
} 

PlaySound(i_Ent, i_SoundType) 
{ 
   switch (i_SoundType) 
   { 
      case POWERUP_SOUND : 
      { 
         emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND1, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); 
         emit_sound(i_Ent, CHAN_BODY , ENT_SOUND2, 0.2, ATTN_NORM, 0, PITCH_NORM); 
      } 
      case ACTIVATE_SOUND : 
      { 
         emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND3, 0.5, ATTN_NORM, 1, 75); 
      } 
      case STOP_SOUND : 
      { 
         emit_sound(i_Ent, CHAN_BODY , ENT_SOUND2, 0.2, ATTN_NORM, SND_STOP, PITCH_NORM); 
         emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND3, 0.5, ATTN_NORM, SND_STOP, 75); 
      } 
   } 
} 

DrawLaser(i_Ent, const Float:v_Origin[3], const Float:v_EndOrigin[3]) 
{
   new tcolor[3]; 
   new teamid = pev(i_Ent, LASERMINE_TEAM); 
   if(get_pcvar_num(g_LCLMODE) == 0) 
   { 
      switch(teamid){ 
         case 1:{ 
            
            tcolor[0] = Red_Zomb; 
            tcolor[1] = Green_Zomb; 
            tcolor[2] = Blue_Zomb; 
         } 
         case 2:{ 
            
            tcolor[0] = Red_Hum; 
            tcolor[1] = Green_Hum; 
            tcolor[2] = Blue_Hum; 
         } 
      } 
   }else 
   { 
      
      tcolor[0] = random_num(50 , 200); 
      tcolor[1] = random_num(50 , 200); 
      tcolor[2] = random_num(50 , 200); 
   } 
   message_begin(MSG_BROADCAST,SVC_TEMPENTITY); 
   write_byte(TE_BEAMPOINTS); 
   engfunc(EngFunc_WriteCoord,v_Origin[0]); 
   engfunc(EngFunc_WriteCoord,v_Origin[1]); 
   engfunc(EngFunc_WriteCoord,v_Origin[2]); 
   engfunc(EngFunc_WriteCoord,v_EndOrigin[0]); 
   engfunc(EngFunc_WriteCoord,v_EndOrigin[1]); 
   engfunc(EngFunc_WriteCoord,v_EndOrigin[2]); 
   write_short(beam); 
   write_byte(0); 
   write_byte(0); 
   write_byte(1);  
   write_byte(5);  
   write_byte(0);  
   write_byte(tcolor[0]); 
   write_byte(tcolor[1]); 
   write_byte(tcolor[2]); 
   write_byte(get_pcvar_num(g_LCBRIGHT)); 
   write_byte(255); 
   message_end(); 
   
   	// Get user origin
	static Float:originF[3]
	pev(ID_BLOOD, pev_origin, originF)
   
   	// Sparks
	if(get_pcvar_num(g_LDETAIL)) {
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, v_EndOrigin, 0)
	write_byte(TE_SPARKS) // TE id
	engfunc(EngFunc_WriteCoord, v_EndOrigin[0]) // x
	engfunc(EngFunc_WriteCoord, v_EndOrigin[1]) // y
	engfunc(EngFunc_WriteCoord, v_EndOrigin[2]) // z
	message_end();
      
   	// Effects when cut
		message_begin(MSG_BROADCAST ,SVC_TEMPENTITY)
		write_byte(TE_EXPLOSION)
		engfunc(EngFunc_WriteCoord, v_EndOrigin[0])
		engfunc(EngFunc_WriteCoord, v_EndOrigin[1])
		engfunc(EngFunc_WriteCoord, v_EndOrigin[2]-10.0)
		write_short(TE_SPARKS)	// sprite index
		write_byte(1)	// scale in 0.1's
		write_byte(30)	// framerate
		write_byte(TE_EXPLFLAG_NODLIGHTS | TE_EXPLFLAG_NOPARTICLES | TE_EXPLFLAG_NOSOUND)	// flags
		message_end()
	}
} 

CreateDamage(iCurrent,Float:DmgMAX,Float:Radius) 
{ 
   new Float:vecSrc[3]; 
   pev(iCurrent, pev_origin, vecSrc); 

   new AtkID=pev(iCurrent,LASERMINE_OWNER); 
   new TeamID=pev(iCurrent,LASERMINE_TEAM); 

   new ent = -1; 
   new Float:tmpdmg = DmgMAX; 

   new Float:kickback = 0.0; 
  
   new Float:Tabsmin[3], Float:Tabsmax[3]; 
   new Float:vecSpot[3]; 
   new Float:Aabsmin[3], Float:Aabsmax[3]; 
   new Float:vecSee[3]; 
   new trRes; 
   new Float:flFraction; 
   new Float:vecEndPos[3]; 
   new Float:distance; 
   new Float:origin[3], Float:vecPush[3]; 
   new Float:invlen; 
   new Float:velocity[3]; 
   new iHitHP,iHitTeam; 
  
   new Float:falloff; 
   if(Radius > 0.0)	falloff = DmgMAX / Radius; 
   else falloff = 1.0;
  
   while((ent = engfunc(EngFunc_FindEntityInSphere, ent, vecSrc, Radius)) != 0) 
   { 
      if(!pev_valid(ent)||!(pev(ent, pev_flags) & (FL_CLIENT | FL_FAKECLIENT | FL_MONSTER))) continue; 

      if(!pev_user_alive(ent)) continue; 
      
      kickback = 1.0; 
      tmpdmg = DmgMAX; 
      
      pev(ent, pev_absmin, Tabsmin); 
      pev(ent, pev_absmax, Tabsmax); 
      xs_vec_add(Tabsmin,Tabsmax,Tabsmin); 
      xs_vec_mul_scalar(Tabsmin,0.5,vecSpot); 
      pev(iCurrent, pev_absmin, Aabsmin); 
      pev(iCurrent, pev_absmax, Aabsmax); 
      xs_vec_add(Aabsmin,Aabsmax,Aabsmin); 
      xs_vec_mul_scalar(Aabsmin,0.5,vecSee); 
      engfunc(EngFunc_TraceLine, vecSee, vecSpot, 0, iCurrent, trRes); 
      get_tr2(trRes, TR_flFraction, flFraction); 
      
      if(flFraction >= 0.9 || get_tr2(trRes, TR_pHit) == ent) 
      { 
         get_tr2(trRes, TR_vecEndPos, vecEndPos); 
         distance = get_distance_f(vecSrc, vecEndPos) * falloff; 
         tmpdmg -= distance; 
         if(tmpdmg < 0.0) 
            tmpdmg = 0.0; 
        
         if(kickback != 0.0) 
         { 
            xs_vec_sub(vecSpot,vecSee,origin); 
            invlen = 1.0/get_distance_f(vecSpot, vecSee); 

            xs_vec_mul_scalar(origin,invlen,vecPush); 
            pev(ent, pev_velocity, velocity) 
            xs_vec_mul_scalar(vecPush,tmpdmg,vecPush); 
            xs_vec_mul_scalar(vecPush,kickback,vecPush); 
            xs_vec_add(velocity,vecPush,velocity); 
            if(tmpdmg < 60.0) 
            { 
               xs_vec_mul_scalar(velocity,12.0,velocity); 
            } else { 
               xs_vec_mul_scalar(velocity,4.0,velocity); 
            } 
            if(velocity[0] != 0.0 || velocity[1] != 0.0 || velocity[2] != 0.0) 
            { 
              
               set_pev(ent, pev_velocity, velocity) 
            } 
         } 

         iHitHP = pev_user_health(ent) - floatround(tmpdmg) 
         iHitTeam = int:cs_get_user_team(ent) 
         if(iHitHP <= 0) 
         { 
            if(iHitTeam != TeamID) 
            { 
               cs_set_user_money(AtkID,cs_get_user_money(AtkID) + get_pcvar_num(g_LFMONEY)) 
               set_score(AtkID,ent,1,iHitHP) 
            }else 
            { 
               if(get_pcvar_num(g_LFF)) 
               { 
                  cs_set_user_money(AtkID,cs_get_user_money(AtkID) - get_pcvar_num(g_LFMONEY)) 
                  set_score(AtkID,ent,-1,iHitHP) 
               } 
            } 
         }else 
         { 
            if(iHitTeam != TeamID || get_pcvar_num(g_LFF)) 
            { 
              
               set_user_health(ent, iHitHP) 
               engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},ent); 
               write_byte(floatround(tmpdmg)) 
               write_byte(floatround(tmpdmg)) 
               write_long(DMG_BULLET) 
               engfunc(EngFunc_WriteCoord,vecSrc[0]) 
               engfunc(EngFunc_WriteCoord,vecSrc[1]) 
               engfunc(EngFunc_WriteCoord,vecSrc[2]) 
               message_end() 
            } 
         } 
      } 
   } 
   return 
} 

bool:pev_user_alive(ent) 
{ 
   new deadflag = pev(ent,pev_deadflag); 
   if(deadflag != DEAD_NO) 
      return false; 
   return true; 
} 

CreateExplosion(iCurrent) 
{ 
   new Float:vOrigin[3]; 
   pev(iCurrent,pev_origin,vOrigin); 

   message_begin(MSG_BROADCAST, SVC_TEMPENTITY); 
   write_byte(99); 
   write_short(iCurrent); 
   message_end(); 

   engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vOrigin, 0); 
   write_byte(TE_EXPLOSION); 
   engfunc(EngFunc_WriteCoord,vOrigin[0]); 
   engfunc(EngFunc_WriteCoord,vOrigin[1]); 
   engfunc(EngFunc_WriteCoord,vOrigin[2]); 
   write_short(boom); 
   write_byte(30); 
   write_byte(15); 
   write_byte(0); 
   message_end(); 
} 

CreateLaserDamage(iCurrent,isHit) 
{ 
   if(isHit < 0) return PLUGIN_CONTINUE

   switch(get_pcvar_num(g_LDMGMODE)) 
   { 
      case 1: 
      { 
         if(pev(iCurrent,LASERMINE_HITING) == isHit)	return PLUGIN_CONTINUE 
      } 
      case 2: 
      { 
         if(pev(iCurrent,LASERMINE_HITING) == isHit) 
         { 
            static Float:cnt 
            static now,htime;now = floatround(get_gametime()) 

            pev(iCurrent,LASERMINE_COUNT,cnt) 
            htime = floatround(cnt) 
            if(now - htime < get_pcvar_num(g_LDSEC)) 
            { 
               return PLUGIN_CONTINUE; 
            }else{ 
               set_pev(iCurrent,LASERMINE_COUNT,get_gametime()) 
            } 
         }else 
         { 
            set_pev(iCurrent,LASERMINE_COUNT,get_gametime()) 
         } 
      } 
   } 

   new Float:vOrigin[3],Float:vEnd[3] 
   pev(iCurrent,pev_origin,vOrigin) 
   pev(iCurrent,pev_vuser1,vEnd) 

   new teamid = pev(iCurrent, LASERMINE_TEAM)

   new szClassName[32] 
   new Alive,God 
   new iHitTeam,iHitHP,id 
   new hitscore 

   szClassName[0] = '^0' 
   pev(isHit,pev_classname,szClassName,32) 
   if((pev(isHit, pev_flags) & (FL_CLIENT | FL_FAKECLIENT | FL_MONSTER))) 
   { 
      Alive = pev_user_alive(isHit)
      God = get_user_godmode(isHit)
      iHitTeam = int:cs_get_user_team(isHit)
      iHitHP = pev_user_health(isHit) - get_pcvar_num(g_LDMG)
      id = pev(iCurrent,LASERMINE_OWNER)
      if(!Alive || God||id==id||cs_get_user_team(id)==cs_get_user_team(isHit)) return PLUGIN_CONTINUE 

      if(iHitHP <= 0) 
      { 
         if(iHitTeam != teamid) 
         { 
            emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM) 
            hitscore = 1 
            cs_set_user_money(id,cs_get_user_money(id) + get_pcvar_num(g_LFMONEY)) 
            set_score(id,isHit,hitscore,iHitHP) 
         } 
         else 
         { 
            if(get_pcvar_num(g_LFF)) 
            { 
               emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM) 
               hitscore = -1 
               cs_set_user_money(id,cs_get_user_money(id) - get_pcvar_num(g_LFMONEY)) 
               set_score(id,isHit,hitscore,iHitHP) 
            } 
         } 
      } 
      else if(iHitTeam != teamid || get_pcvar_num(g_LFF)) 
      { 
         emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM) 
         set_user_health(isHit,iHitHP) 
         set_pev(iCurrent,LASERMINE_HITING,isHit); 
         engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},isHit); 
         write_byte(get_pcvar_num(g_LDMG)) 
         write_byte(get_pcvar_num(g_LDMG)) 
         write_long(DMG_BULLET) 
         engfunc(EngFunc_WriteCoord,vOrigin[0]) 
         engfunc(EngFunc_WriteCoord,vOrigin[1]) 
         engfunc(EngFunc_WriteCoord,vOrigin[2]) 
         message_end() 
      } 
   } 
   else if(equal(szClassName, ENT_CLASS_NAME3)) 
   { 
      new hl; 
      hl = pev_user_health(isHit); 
      set_user_health(isHit,hl-get_pcvar_num(g_LDMG)); 
   } 
   return PLUGIN_CONTINUE 
} 

stock pev_user_health(id)
{ 
   new Float:health 
   pev(id,pev_health,health) 
   return floatround(health) 
} 

stock set_user_health(id,health) 
{ 
   health > 0 ? set_pev(id, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, id); 
} 

stock get_user_godmode(index) { 
   new Float:val 
   pev(index, pev_takedamage, val) 

   return (val == DAMAGE_NO) 
} 

stock set_user_frags(index, frags) 
{ 
   set_pev(index, pev_frags, float(frags)) 

   return 1 
} 

stock pev_user_frags(index) 
{ 
   new Float:frags; 
   pev(index,pev_frags,frags); 
   return floatround(frags); 
} 

set_score(id,target,hitscore,HP) 
{ 
   new idfrags = pev_user_frags(id) + hitscore 
   set_user_frags(id,idfrags) 
   new tarfrags = pev_user_frags(target) + 1 
   set_user_frags(target,tarfrags) 
   new idteam = int:cs_get_user_team(id) 
   new iddeaths = cs_get_user_deaths(id) 


   message_begin(MSG_ALL, g_msgDeathMsg, {0, 0, 0} ,0) 
   write_byte(id) 
   write_byte(target) 
   write_byte(0) 
   write_string(ENT_CLASS_NAME) 
   message_end() 

   message_begin(MSG_ALL, g_msgScoreInfo) 
   write_byte(id) 
   write_short(idfrags) 
   write_short(iddeaths) 
   write_short(0) 
   write_short(idteam) 
   message_end() 

   set_msg_block(g_msgDeathMsg, BLOCK_ONCE) 

   set_user_health(target, HP) 
} 

public BuyLasermine(id) 
{ 
   if(!CanCheck(id,1)) return PLUGIN_CONTINUE 

   cs_set_user_money(id,cs_get_user_money(id) - get_pcvar_num(g_LCOST)) 
   g_havemine[id]++; 

   client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_BOUGHT") 

   emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) 
   ShowAmmo(id) 
   return PLUGIN_HANDLED 
} 

public zp_extra_item_selected(id, itemid) 
{ 
   if(itemid == g_LME) 
      { 
      cs_set_user_money(id, cs_get_user_money(id) + LMCost) 
      BuyLasermine(id) 
      } 
   return PLUGIN_CONTINUE 
} 

ShowAmmo(id) 
{ 
   new ammo[51] 
   new PlugStat[ 555 char ]; 
   formatex(PlugStat, charsmax(PlugStat), "%L", LANG_PLAYER, "STR_STATE") 
   formatex(ammo, 50, "%s %i/%i",PlugStat, g_havemine[id],get_pcvar_num(g_LAMMO)) 

   message_begin(MSG_ONE, g_msgStatusText, {0,0,0}, id) 
   write_byte(0) 
   write_string(ammo) 
   message_end() 
} 

public showInfo(id) 
{ 
   client_print(id, print_chat, "%L", id, "STR_REF") 
} 

public say_lasermine(id) 
{ 
   new said[32] 
   read_argv(1,said,31); 
   if(!get_pcvar_num(g_LENABLE)) 
   { 
      return PLUGIN_CONTINUE 
   } 
   if(equali(said,"/buy lasermine")||equali(said,"/lm")||equali(said,"buy_lasermine")) 
   { 
      BuyLasermine(id) 
   } 
   else if(equali(said, "lasermine") || equali(said, "/lasermine")) 
   { 
      const SIZE = 1024 
      new msg[SIZE+1],len = 0; 
      len += formatex(msg[len], SIZE - len, "<html><body>") 
      len += formatex(msg[len], SIZE - len, "<p><b>LaserMine</b></p><br/><br/>") 
      len += formatex(msg[len], SIZE - len, "<p>Poti planta lasere numai pe un perete.</p><br/>") 
      len += formatex(msg[len], SIZE - len, "<p>Cu laserele plantate puteti omora zombi.</p><br/><br/>") 
      len += formatex(msg[len], SIZE - len, "<p><b>Introduce aceste comenzi in consola :<br/>") 
      len += formatex(msg[len], SIZE - len, "<b>bind v +setlaser</p>") 
      len += formatex(msg[len], SIZE - len, "<b>bind c +dellaser</p>") 
      len += formatex(msg[len], SIZE - len, "</body></html>") 
      show_motd(id, msg, "Lasermine Entity help") 
      return PLUGIN_CONTINUE 
   } 
   else if(containi(said, "laser") != -1) 
   { 
      showInfo(id) 
      return PLUGIN_CONTINUE 
   } 
   return PLUGIN_CONTINUE 
} 

public standing(id) 
{ 
   if(!g_settinglaser[id]) 
      return PLUGIN_CONTINUE 

   set_pev(id, pev_maxspeed, 1.0) 

   return PLUGIN_CONTINUE 
} 

public ltm_PostThink(id) 
{ 
   if(!g_settinglaser[id] && plsetting[id]){ 
      resetspeed(id) 
   } 
   else if(g_settinglaser[id] && !plsetting[id]) { 
      pev(id, pev_maxspeed,plspeed[id]) 
      set_pev(id, pev_maxspeed, 1.0) 
   } 
   plsetting[id] = g_settinglaser[id] 
   return FMRES_IGNORED 
} 

public ltm_PreThink(id) 
{ 
   if(!pev_user_alive(id) || g_settinglaser[id] == true || is_user_bot(id) || get_pcvar_num(g_LCMDMODE) == 1) 
      return FMRES_IGNORED; 

   if(pev(id, pev_button) & IN_USE && !(pev(id, pev_oldbuttons) & IN_USE)) 
      CreateLaserMine_Progress(id) 
   return FMRES_IGNORED; 
} 

resetspeed(id) 
{ 
   set_pev(id, pev_maxspeed, plspeed[id]) 
} 

public client_putinserver(id) 
{ 
   g_deployed[id] = 0; 
   g_havemine[id] = 0; 
   DeleteTask(id); 
   //set_task( 1.0, "Task_CheckAiming", id + 3389, _, _, "b" ); 
   //set_task( 1.1, "checkIfspec",_,_,_,"b") 
} 

public client_disconnect(id){ 
   if(!get_pcvar_num(g_LENABLE)) 
      return PLUGIN_CONTINUE 
   DeleteTask(id);
   RemoveAllTripmines(id); 
   return PLUGIN_CONTINUE
} 

public newround(id) 
{ 
   if(!get_pcvar_num(g_LENABLE)) 
      return PLUGIN_CONTINUE 

	for(new id=0;id<get_maxplayers();id++)
{
   pev(id, pev_maxspeed,plspeed[id]) 
   DeleteTask(id); 
   RemoveAllTripmines(id); 

   delaycount(id); 
   SetStartAmmo(id);
}
   return PLUGIN_CONTINUE 
}
public endround(id) 
{ 
   if(!get_pcvar_num(g_LENABLE)) 
      return PLUGIN_CONTINUE 
	for(new id=0;id<get_maxplayers();id++)
{
   DeleteTask(id); 
   RemoveAllTripmines(id); 
}
   return PLUGIN_CONTINUE 
}

public DeathEvent(){ 
   if(!get_pcvar_num(g_LENABLE)) 
      return PLUGIN_CONTINUE 

   new id = read_data(2) 
   if(is_user_connected(id))
	{
	DeleteTask(id);
set_task( 0.1, "checkIfspec",_,_,_,"b")
}
   return PLUGIN_CONTINUE 
} 

public RemoveAllTripmines(i_Owner) 
{ 
   new iEnt = g_MaxPL + 1; 
   new clsname[32]; 
   while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", ENT_CLASS_NAME))) 
   { 
      if(i_Owner) 
      { 
         if(pev(iEnt, LASERMINE_OWNER) != i_Owner) 
            continue; 
         clsname[0] = '^0' 
         pev(iEnt, pev_classname, clsname, sizeof(clsname)-1); 
         if(equali(clsname, ENT_CLASS_NAME)) 
         { 
            PlaySound(iEnt, STOP_SOUND); 
            RemoveEntity(iEnt); 
         } 
      } 
      else 
         set_pev(iEnt, pev_flags, FL_KILLME); 
   } 
   g_deployed[i_Owner]=0; 
} 

SetStartAmmo(id) 
{ 
   new stammo = get_pcvar_num(g_LSTAMMO); 
   if(stammo <= 0) return PLUGIN_CONTINUE; 
   g_havemine[id] = (g_havemine[id] <= stammo) ? stammo : g_havemine[id]; 
   return PLUGIN_CONTINUE; 
} 

public CutDeploy_onDamage(id) 
{ 
   if(get_user_health(id) < 1) 
      DeleteTask(id); 
} 

DeleteTask(id) 
{ 
   if(task_exists((TASK_PLANT + id))) 
   { 
      remove_task((TASK_PLANT + id)) 
   } 
   if(task_exists((TASK_RELEASE + id))) 
   { 
      remove_task((TASK_RELEASE + id)) 
   } 
   g_settinglaser[id] = false 
   return PLUGIN_CONTINUE; 
} 

stock set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) 
{ 
   static Float:RenderColor[3]; 
   RenderColor[0] = float(r); 
   RenderColor[1] = float(g); 
   RenderColor[2] = float(b); 

   set_pev(entity, pev_renderfx, fx); 
   set_pev(entity, pev_rendercolor, RenderColor); 
   set_pev(entity, pev_rendermode, render); 
   set_pev(entity, pev_renderamt, float(amount)); 

   return 1 
} 

get_offset_value(id, type) 
{ 
   new key = -1; 
   switch(type) 
   { 
      case OFFSET_TEAM: key = OFFSET_TEAM; 
      case OFFSET_MONEY: 
      key = OFFSET_MONEY; 
      case OFFSET_DEATH: key = OFFSET_DEATH; 
   } 
   if(key != -1) 
   { 
      if(is_amd64_server()) key += 25; 
      return get_pdata_int(id, key); 
   } 
   return -1; 
} 

public Task_CheckAiming( iTaskIndex ) 
{ 
    static iClient; 
    iClient = iTaskIndex - 3389; 

    if( is_user_alive( iClient ) ) 
    { 
        static iEntity, iDummy, cClassname[ 32 ]; 
        get_user_aiming( iClient, iEntity, iDummy, 9999 ); 

        if( pev_valid( iEntity ) ) 
        { 
            pev( iEntity, pev_classname, cClassname, 31 ); 

            if( equal( cClassname, "lasermine" ) ) 
            { 
                new name[ 32 ]; 
                new aim = pev( iEntity, LASERMINE_OWNER ); 
                get_user_name( aim, name, charsmax( name ) - 1 ) 
                set_hudmessage( 50, 100, 150, -1.0, 0.60, 0, 6.0, 1.1, 0.0, 0.0, -1 ) 
                show_hudmessage( iClient, "Owner: %s^nHealth: %d/700", name, pev(iEntity,pev_health ))
            } 
        } 
    } 
} 

stock client_printcolor(const id, const input[], any:...) 
{ 
   new iCount = 1, iPlayers[32] 
   static szMsg[191] 

   vformat(szMsg, charsmax(szMsg), input, 3) 
   replace_all(szMsg, 190, "!g", "^4") 
   replace_all(szMsg, 190, "!y", "^1") 
   replace_all(szMsg, 190, "!t", "^3") 
   replace_all(szMsg, 190, "!w", "^0") 

   if(id) iPlayers[0] = id 
   else get_players(iPlayers, iCount, "ch") 

   for(new i = 0; i < iCount; i++) 
   { 
      if(is_user_connected(iPlayers)) 
      { 
         message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, iPlayers) 
         write_byte(iPlayers) 
         write_string(szMsg) 
         message_end() 
      } 
   } 
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
Aliacee
Membru, skill +1
Membru, skill +1
Posts: 108
Joined: 29 Nov 2015, 19:05
Detinator Steam: Da
CS Status: Citesc forumul eXtreamCS.com...!
Fond eXtream: 0
Contact:

06 Jan 2019, 23:29

Este o problema cu laserul, practic...
Poza 1 : https://i.imgur.com/ton28eP.jpg
Poza 2 : https://i.imgur.com/OyZGazQ.jpg
Poza 3 : https://i.imgur.com/KJEsU7l.jpg

Pentru problema 4 si 5, se poate remedia astfel:

La linia 556, adaugi:
public event_infect(victim, attacker) {
RemoveAllTripmines(victim);
}

Insa e cam nasol sa iti dispara laserele...
Sa zicem ca esti om,ti-ai facut baza si te infecteaza un zm.
Tu nu iti mai poti lua laserele inapoi sa le folosesti pentru ucidrea oamenilor...
Last edited by d e a l e r - on 07 Jan 2019, 00:26, edited 1 time in total.
Reason: Ai funcția edit, folosește-o!
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

07 Jan 2019, 00:52

| Afiseaza codul
#include <amxmodx> 
#include <amxmisc> 
#include <fakemeta> 
#include <hamsandwich> 
#include <xs> 
#include <cstrike> 
#include <biohazard> 

#pragma tabsize 0

#define PLUGIN "[ZP] LaserMine" 
#define VERSION "2.8.1" 
#define AUTHOR "SandStriker / Shidla / QuZ/DJ_WEST" 

#define RemoveEntity(%1)   engfunc(EngFunc_RemoveEntity,%1) 
#define TASK_PLANT         15100 
#define TASK_RESET         15500 
#define TASK_RELEASE      15900 

#define LASERMINE_TEAM      pev_iuser1 
#define LASERMINE_OWNER      pev_iuser2 
#define LASERMINE_STEP      pev_iuser3 
#define LASERMINE_HITING   pev_iuser4 
#define LASERMINE_COUNT      pev_fuser1 

#define LASERMINE_POWERUP   pev_fuser2 
#define LASERMINE_BEAMTHINK   pev_fuser3 

#define LASERMINE_BEAMENDPOINT   pev_vuser1 
#define MAX_MINES         10 
#define MODE_LASERMINE      0 
#define OFFSET_TEAM         114 
#define OFFSET_MONEY      115 
#define OFFSET_DEATH      444 

#define cs_get_user_team(%1)   CsTeams:get_offset_value(%1,OFFSET_TEAM) 
#define cs_get_user_deaths(%1)   get_offset_value(%1,OFFSET_DEATH) 

new const LMCost = 2 

new const 
   Red_Hum      = 0, 
   Green_Hum    = 0, 
   Blue_Hum   = 255; 

new const 
   Red_Zomb   = 255, 
   Green_Zomb    = 0, 
   Blue_Zomb   = 0; 

enum tripmine_e { 
   TRIPMINE_IDLE1 = 0, 
   TRIPMINE_IDLE2, 
   TRIPMINE_ARM1, 
   TRIPMINE_ARM2, 
   TRIPMINE_FIDGET, 
   TRIPMINE_HOLSTER, 
   TRIPMINE_DRAW, 
   TRIPMINE_WORLD, 
   TRIPMINE_GROUND, 
}; 

enum 
{ 
   POWERUP_THINK, 
   BEAMBREAK_THINK, 
   EXPLOSE_THINK 
}; 

enum 
{ 
   POWERUP_SOUND, 
   ACTIVATE_SOUND, 
   STOP_SOUND 
}; 

new const 
   ENT_MODELS[]   = "models/v_tripmine.mdl", 
   ENT_SOUND1[]   = "weapons/mine_deploy.wav", 
   ENT_SOUND2[]   = "weapons/mine_charge.wav", 
   ENT_SOUND3[]   = "weapons/mine_activate.wav", 
   ENT_SOUND4[]   = "debris/beamstart9.wav", 
   ENT_SOUND5[]   = "items/gunpickup2.wav", 
   ENT_SOUND6[]   = "debris/bustglass1.wav", 
   ENT_SOUND7[]   = "debris/bustglass2.wav", 
   ENT_SPRITE1[]   = "sprites/laserbeam.spr", 
   ENT_SPRITE2[]   = "sprites/lm_explode.spr"; 

new const 
   ENT_CLASS_NAME[]   =   "lasermine", 
   ENT_CLASS_NAME3[]   =   "func_breakable", 
   gSnarkClassName[]   =   "wpn_snark",  
   barnacle_class[]   =   "barnacle",      
   weapon_box[]      =   "weaponbox"; 

new g_EntMine, beam, boom 
new g_LENABLE, g_LFMONEY, g_LAMMO, g_LDMG, g_LBEO, g_LTMAX, g_LCOST, g_LHEALTH, g_LMODE, g_LRADIUS, g_NOROUND 
new g_LRDMG,g_LFF,g_LCBT, g_LDELAY, g_LVISIBLE, g_LSTAMMO, g_LACCESS, g_LGLOW, g_LDMGMODE, g_LCLMODE 
new g_LCBRIGHT, g_LDSEC, g_LCMDMODE, g_LBUYMODE, g_LME, g_LDETAIL; 
new g_msgDeathMsg,g_msgScoreInfo,g_msgDamage,g_msgStatusText; 
new g_dcount[33],g_nowtime,g_MaxPL 
new bool:g_settinglaser[33] 
new ID_BLOOD; 

new Float:plspeed[33], plsetting[33], g_havemine[33], g_deployed[33]; 

public plugin_init() 
{ 
   register_plugin(PLUGIN, VERSION, AUTHOR); 

   RegisterHam(Ham_TakeDamage, ENT_CLASS_NAME3, "Laser_TakeDamage"); 
  
   register_clcmd("+setlaser","CreateLaserMine_Progress_b"); 
   register_clcmd("-setlaser","StopCreateLaserMine"); 
   register_clcmd("+dellaser","ReturnLaserMine_Progress"); 
   register_clcmd("-dellaser","StopReturnLaserMine"); 
   register_clcmd("say","say_lasermine"); 
   register_clcmd("buy_lasermine","BuyLasermine"); 

   register_concmd("bh_untakelm", "luatlaser", ADMIN_LEVEL_B, " - <nume>"); 
   register_concmd("bh_takelm", "puslaser", ADMIN_LEVEL_B, " - <nume>"); 

   g_LENABLE   = register_cvar("bh_ltm","1"); 
   g_LACCESS   = register_cvar("bh_ltm_acs","0"); 
   g_LMODE      = register_cvar("bh_ltm_mode","0"); 
   g_LAMMO      = register_cvar("bh_ltm_ammo","2"); 
   g_LDMG      = register_cvar("bh_ltm_dmg","10000"); 
   g_LCOST      = register_cvar("bh_ltm_cost","5000"); 
   g_LFMONEY   = register_cvar("bh_ltm_fragmoney","1"); 
   g_LHEALTH   = register_cvar("bh_ltm_health","5"); 
   g_LTMAX      = register_cvar("bh_ltm_teammax","100"); 
   g_LRADIUS   = register_cvar("bh_ltm_radius","320.0") 
   g_LRDMG      = register_cvar("bh_ltm_rdmg","100") 
   g_LFF      = register_cvar("bh_ltm_ff","0"); 
   g_LCBT      = register_cvar("bh_ltm_cbt","ALL"); 
   g_LDELAY   = register_cvar("bh_ltm_delay","0.1"); 
   g_LVISIBLE   = register_cvar("bh_ltm_line","1"); 
   g_LGLOW      = register_cvar("bh_ltm_glow","0"); 
   g_LCBRIGHT   = register_cvar("bh_ltm_bright","255"); 
   g_LCLMODE   = register_cvar("bh_ltm_color","0"); 
   g_LDMGMODE   = register_cvar("bh_ltm_ldmgmode","0"); 
   g_LDSEC      = register_cvar("bh_ltm_ldmgseconds","1"); 
   g_LSTAMMO   = register_cvar("bh_ltm_startammo","2"); 
   g_LBUYMODE   = register_cvar("bh_ltm_buymode","1"); 
   g_LCMDMODE   = register_cvar("bh_ltm_cmdmode","1");      
   g_LBEO      = register_cvar("bh_ltm_brokeenemy","1"); 
   g_NOROUND   = register_cvar("bh_ltm_noround","1"); 
   g_LDETAIL  = register_cvar("bh_ltm_realistic_detail", "1");

   register_event("DeathMsg", "DeathEvent", "a"); 
   register_event("CurWeapon", "standing", "be", "1=1"); 
   register_event("ResetHUD", "delaycount", "a");

	register_event("HLTV", "newround", "a", "1=0", "2=0")
	register_logevent("endround", 2, "1=Round_End")

   register_event("Damage","CutDeploy_onDamage","b"); 
   g_msgDeathMsg   = get_user_msgid("DeathMsg"); 
   g_msgScoreInfo   = get_user_msgid("ScoreInfo"); 
   g_msgDamage      = get_user_msgid("Damage"); 
   g_msgStatusText = get_user_msgid("StatusText"); 
  
   register_forward(FM_Think, "ltm_Think"); 
   register_forward(FM_PlayerPostThink, "ltm_PostThink"); 
   register_forward(FM_PlayerPreThink, "ltm_PreThink"); 
  
   register_dictionary("lasermines.txt") 
} 

public plugin_precache() 
{ 
   precache_sound(ENT_SOUND1); 
   precache_sound(ENT_SOUND2); 
   precache_sound(ENT_SOUND3); 
   precache_sound(ENT_SOUND4); 
   precache_sound(ENT_SOUND5); 
   precache_sound(ENT_SOUND6); 
   precache_sound(ENT_SOUND7); 
   precache_model(ENT_MODELS); 
   beam = precache_model(ENT_SPRITE1); 
   boom = precache_model(ENT_SPRITE2); 
} 

public plugin_modules() 
{ 
   require_module("fakemeta"); 
   require_module("cstrike"); 
} 

public plugin_cfg() 
{ 
   g_EntMine = engfunc(EngFunc_AllocString,ENT_CLASS_NAME3); 
   arrayset(g_havemine,0,sizeof(g_havemine)); 
   arrayset(g_deployed,0,sizeof(g_deployed)); 
   g_MaxPL = get_maxplayers(); 

   new file[64]; get_localinfo("amxx_configsdir",file,63); 
   format(file, 63, "%s/bh_ltm_cvars.cfg", file); 
   if(file_exists(file)) server_cmd("exec %s", file), server_exec(); 
} 

public luatlaser(id, level, cid) 
{ 
   if (!cmd_access(id, level, cid, 2)) 
   { 
      return PLUGIN_HANDLED 
   } 

   new arg[32] 
    
   read_argv(1, arg, 31) 
   new player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF) 
    
   if (!player) 
      return PLUGIN_HANDLED 

   DeleteTask(player); 
   RemoveAllTripmines(player); 

   new namea[32],namep[32]; 
   get_user_name(id,namea,charsmax(namea)); 
   get_user_name(player,namep,charsmax(namep)); 
   client_printcolor(0, "!g[Biohazard] !yAdminul !g%s !yi-a dezactivat laserele lui !g%s!y.", namea, namep);

   return PLUGIN_HANDLED; 
} 

public puslaser(id, level, cid) 
{ 
   if (!cmd_access(id, level, cid, 2)) 
   { 
      return PLUGIN_HANDLED 
   } 

   new arg[32] 
    
   read_argv(1, arg, 31) 
   new player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF) 
    
   if (!player) 
      return PLUGIN_HANDLED 

   DeleteTask(player); 
   SetStartAmmo(player); 

   new namea[32],namep[32]; 
   get_user_name(id,namea,charsmax(namea)); 
   get_user_name(player,namep,charsmax(namep)); 
   client_printcolor(0, "!g[Biohazard] !yAdminul !g%s !yi-a reactivat laserele lui !g%s!y.", namea, namep);

   return PLUGIN_HANDLED; 
} 

public checkIfspec(id) 
{ 
    if( g_deployed[id] > 0 ) 
    { 
          if(cs_get_user_team(id) == CS_TEAM_SPECTATOR) 
          { 
               DeleteTask(id); 
               RemoveAllTripmines(id); 

               new namep[32]; 
               get_user_name(id,namep,charsmax(namep)); 
               client_printcolor(0,"!g[Biohazard] !yLaserele lui !g%s !gau fost dezactivate deoarece s-a mutat la !gspectatori!y!",namep); 
          } 
     } 
} 

public Laser_TakeDamage(victim, inflictor, attacker, Float:f_Damage, bit_Damage) 
{ 
   if(get_pcvar_num(g_LBEO)) 
   { 
      new i_Owner 

      i_Owner = pev(victim, LASERMINE_OWNER) 
      
      if(CsTeams:pev(victim, LASERMINE_TEAM) == cs_get_user_team(attacker)) 
      
      if(i_Owner != attacker)	return HAM_SUPERCEDE

      return PLUGIN_CONTINUE 
   } 
   return PLUGIN_CONTINUE 
} 

public delaycount(id) 
{ 
   g_dcount[id] = floatround(get_gametime()); 
} 

bool:CheckTime(id) 
{ 
   g_nowtime = floatround(get_gametime()) - g_dcount[id]; 
   if(g_nowtime >= get_pcvar_num(g_LDELAY)) 
      return true; 
   return false; 
} 

public CreateLaserMine_Progress_b(id) 
{ 
   if(get_pcvar_num(g_LCMDMODE) != 0) 
      CreateLaserMine_Progress(id); 
   return PLUGIN_HANDLED; 
} 

public CreateLaserMine_Progress(id) 
{ 
   if(!CreateCheck(id)) 
      return PLUGIN_HANDLED; 
   g_settinglaser[id] = true; 

   message_begin(MSG_ONE, 108, {0,0,0}, id); 
   write_byte(1); 
   write_byte(0); 
   message_end(); 

   set_task(1.2, "Spawn", (TASK_PLANT + id)); 

   return PLUGIN_HANDLED; 
} 

public ReturnLaserMine_Progress(id) 
{ 
   if(!ReturnCheck(id)) 
      return PLUGIN_HANDLED; 
   g_settinglaser[id] = true; 

   message_begin(MSG_ONE, 108, {0,0,0}, id); 
   write_byte(1); 
   write_byte(0); 
   message_end(); 

   set_task(1.2, "ReturnMine", (TASK_RELEASE + id)); 

   return PLUGIN_HANDLED; 
} 

public StopCreateLaserMine(id) 
{ 
   DeleteTask(id); 
   message_begin(MSG_ONE, 108, {0,0,0}, id); 
   write_byte(0); 
   write_byte(0); 
   message_end(); 

   return PLUGIN_HANDLED; 
} 

public StopReturnLaserMine(id) 
{ 
   DeleteTask(id); 
   message_begin(MSG_ONE, 108, {0,0,0}, id); 
   write_byte(0); 
   write_byte(0); 
   message_end(); 

   return PLUGIN_HANDLED; 
} 

public ReturnMine(id) 
{ 
   id -= TASK_RELEASE; 
   new tgt,body,Float:vo[3],Float:to[3]; 
   get_user_aiming(id,tgt,body); 
   if(!pev_valid(tgt)) return; 
   pev(id,pev_origin,vo); 
   pev(tgt,pev_origin,to); 
   if(get_distance_f(vo,to) > 70.0) return; 
   new EntityName[32]; 
   pev(tgt, pev_classname, EntityName, 31); 
   if(!equal(EntityName, ENT_CLASS_NAME)) return; 
   if(pev(tgt,LASERMINE_OWNER) != id) return; 
   RemoveEntity(tgt); 

   g_havemine[id] ++; 
   g_deployed[id] --; 
   emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) 
   ShowAmmo(id) 

   return; 
} 

public Spawn(id) 
{ 
   id -= TASK_PLANT 
  
   new i_Ent = engfunc(EngFunc_CreateNamedEntity,g_EntMine); 
   if(!i_Ent) 
   { 
      client_print(id, print_chat,"[Laesrmine Debug] Can't Create Entity"); 
      return PLUGIN_HANDLED_MAIN; 
   } 
   set_pev(i_Ent,pev_classname,ENT_CLASS_NAME); 

   engfunc(EngFunc_SetModel,i_Ent,ENT_MODELS); 

   set_pev(i_Ent,pev_solid,SOLID_BBOX); 
   set_pev(i_Ent,pev_movetype,MOVETYPE_FLY); 

   set_pev(i_Ent,pev_frame,0); 
   set_pev(i_Ent,pev_body,3); 
   set_pev(i_Ent,pev_sequence,TRIPMINE_WORLD); 
   set_pev(i_Ent,pev_framerate,0); 
   set_pev(i_Ent,pev_takedamage,DAMAGE_YES); 
   set_pev(i_Ent,pev_dmg,100.0); 
   //set_user_health(i_Ent,get_pcvar_num(g_LHEALTH));
	set_pev(i_Ent,pev_health,get_pcvar_num(g_LHEALTH));

   new Float:vOrigin[3],Float:vNewOrigin[3],Float:vNormal[3],Float:vTraceDirection[3],Float:vTraceEnd[3],Float:vEntAngles[3]; 
   pev(id, pev_origin, vOrigin); 
   velocity_by_aim(id, 128, vTraceDirection); 
   xs_vec_add(vTraceDirection, vOrigin, vTraceEnd); 
   engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0); 

   new Float:fFraction; 
   get_tr2(0, TR_flFraction, fFraction); 

   if(fFraction < 1.0) 
   {
      get_tr2(0, TR_vecEndPos, vTraceEnd); 
      get_tr2(0, TR_vecPlaneNormal, vNormal); 
   } 

   xs_vec_mul_scalar(vNormal, 8.0, vNormal); 
   xs_vec_add(vTraceEnd, vNormal, vNewOrigin); 

   engfunc(EngFunc_SetSize, i_Ent, Float:{ -4.0, -4.0, -4.0 }, Float:{ 4.0, 4.0, 4.0 }); 
   engfunc(EngFunc_SetOrigin, i_Ent, vNewOrigin); 

   vector_to_angle(vNormal,vEntAngles); 
   set_pev(i_Ent,pev_angles,vEntAngles); 
        
   xs_vec_mul_scalar(vNormal, 8192.0, vNormal);

   new Float:vBeamEnd[3], Float:vTracedBeamEnd[3];
   engfunc(EngFunc_TraceLine, vNewOrigin, vBeamEnd, IGNORE_MONSTERS, -1, 0); 

   xs_vec_add(vNewOrigin, vNormal, vBeamEnd);

   get_tr2(0, TR_vecPlaneNormal, vNormal); 
   get_tr2(0, TR_vecEndPos, vTracedBeamEnd); 
  
   set_pev(i_Ent, LASERMINE_OWNER, id); 
   set_pev(i_Ent,LASERMINE_BEAMENDPOINT,vTracedBeamEnd); 
   set_pev(i_Ent,LASERMINE_TEAM,int:cs_get_user_team(id)); 
   new Float:fCurrTime = get_gametime(); 

   set_pev(i_Ent,LASERMINE_POWERUP, fCurrTime + 2.5); 
   set_pev(i_Ent,LASERMINE_STEP,POWERUP_THINK); 
   set_pev(i_Ent,pev_nextthink, fCurrTime + 0.2); 

   PlaySound(i_Ent,POWERUP_SOUND); 
   g_deployed[id]++; 
   g_havemine[id]--; 
   DeleteTask(id); 
   ShowAmmo(id); 
   return 1; 
} 

stock TeamDeployedCount(id) 
{ 
   static i; 
   static CsTeams:t;t = cs_get_user_team(id); 
   static cnt;cnt=0; 

   for(i = 1;i <= g_MaxPL;i++) 
   { 
      if(is_user_connected(i)) 
         if(t == cs_get_user_team(i)) 
            cnt += g_deployed; 
   } 

   return cnt; 
} 

bool:CheckCanTeam(id) 
{ 
   new arg[5],CsTeam:num; 
   get_pcvar_string(g_LCBT,arg,3); 
   if(equali(arg,"Z")) 
   { 
      num = CsTeam:CS_TEAM_T; 
   } 
   else if(equali(arg,"H")) 
   { 
      num = CsTeam:CS_TEAM_CT; 
   } 
   else if(equali(arg,"ALL") || equali(arg,"HZ") || equali(arg,"ZH")) 
   { 
      num = CsTeam:CS_TEAM_UNASSIGNED; 
   } 
   else 
   { 
      num = CsTeam:CS_TEAM_UNASSIGNED; 
   } 
   if(num != CsTeam:CS_TEAM_UNASSIGNED && num != CsTeam:cs_get_user_team(id)) 
      return false; 
   return true; 
} 

bool:CanCheck(id,mode)  
{ 
   if(!get_pcvar_num(g_LENABLE)) 
   { 
      client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOTACTIVE") 

      return false; 
   } 
   if(get_pcvar_num(g_LACCESS) != 0) 
      if(!(get_user_flags(id) & ADMIN_IMMUNITY)) 
      { 
         client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOACCESS") 
         return false; 
      } 
   if(!pev_user_alive(id)) return false; 
   if(!CheckCanTeam(id)) 
   { 
      client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_CBT") 
      return false; 
   } 
   if(mode == 0) 
   { 
      if(g_havemine[id] <= 0) 
      { 
         client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_DONTHAVEMINE") 
         return false; 
      } 
   } 
   if(mode == 1) 
   { 
      if(get_pcvar_num(g_LBUYMODE) == 0) 
      { 
         client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_CANTBUY") 
         return false; 
      } 
      if(g_havemine[id] >= get_pcvar_num(g_LAMMO)) 
      { 
         client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_HAVEMAX") 
         return false; 
      } 
      if(cs_get_user_money(id) < get_pcvar_num(g_LCOST)) 
      { 
         client_print(id, print_chat, "%L %L%d %L", id, "CHATTAG",id, "STR_NOMONEY",get_pcvar_num(g_LCOST),id, "STR_NEEDED") 
         return false; 
      } 
   } 
   if(!CheckTime(id)) 
   { 
      client_print(id, print_chat, "%L %L %d %L", id, "CHATTAG",id, "STR_DELAY",get_pcvar_num(g_LDELAY)-g_nowtime,id, "STR_SECONDS") 
      return false; 
   } 

   return true; 
} 

bool:ReturnCheck(id) 
{ 
   if(!CanCheck(id,-1)) return false; 
   if(g_havemine[id] + 1 > get_pcvar_num(g_LAMMO)) return false; 
   new tgt,body,Float:vo[3],Float:to[3]; 
   get_user_aiming(id,tgt,body); 
   if(!pev_valid(tgt)) return false; 
   pev(id,pev_origin,vo); 
   pev(tgt,pev_origin,to); 
   if(get_distance_f(vo,to) > 70.0) return false; 
   new EntityName[32]; 
   pev(tgt, pev_classname, EntityName, 31); 
   if(!equal(EntityName, ENT_CLASS_NAME)) return false; 
   if(pev(tgt,LASERMINE_OWNER) != id) return false; 
   return true; 
} 

bool:CreateCheck(id) 
{ 
   if(!CanCheck(id,0)) return false; 
  
   if(!game_started() && get_pcvar_num(g_NOROUND)) 
   { 
      client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOROUND") 
      return false; 
  } 

   if(g_deployed[id] >= get_pcvar_num(g_LAMMO)) 
   { 
      client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_MAXDEPLOY") 
      return false; 
   } 

   if(TeamDeployedCount(id) >= get_pcvar_num(g_LTMAX)) 
   { 
      client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_MANYPPL") 
      return false; 
   } 
   new Float:vTraceDirection[3], Float:vTraceEnd[3],Float:vOrigin[3]; 
   pev(id, pev_origin, vOrigin); 
   velocity_by_aim(id, 128, vTraceDirection); 
   xs_vec_add(vTraceDirection, vOrigin, vTraceEnd); 
   engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0); 
   new Float:fFraction,Float:vTraceNormal[3]; 
   get_tr2(0, TR_flFraction, fFraction); 
  
   if(fFraction < 1.0) 
   { 
      
      get_tr2(0, TR_vecEndPos, vTraceEnd); 
      get_tr2(0, TR_vecPlaneNormal, vTraceNormal); 

      return true; 
   } 

   client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_PLANTWALL") 
   DeleteTask(id); 
  
   return false; 
} 

public ltm_Think(i_Ent) 
{ 
   if(!pev_valid(i_Ent)||!get_pcvar_num(g_LENABLE))	return FMRES_IGNORED;

   new EntityName[32]; 
   pev(i_Ent, pev_classname, EntityName, 31);
  
   if(!equal(EntityName, ENT_CLASS_NAME))	return FMRES_IGNORED; 

   static Float:fCurrTime; 
   fCurrTime = get_gametime(); 

   switch(pev(i_Ent, LASERMINE_STEP)) 
   { 
      case POWERUP_THINK : 
      { 
         new Float:fPowerupTime; 
         pev(i_Ent, LASERMINE_POWERUP, fPowerupTime); 

         if(fCurrTime > fPowerupTime) 
         { 
            set_pev(i_Ent, pev_solid, SOLID_BBOX); 
            set_pev(i_Ent, LASERMINE_STEP, BEAMBREAK_THINK); 

            PlaySound(i_Ent, ACTIVATE_SOUND); 
         } 
         if(get_pcvar_num(g_LGLOW)!=0) 
         { 
            if(get_pcvar_num(g_LCLMODE)==0) 
            { 
               switch (pev(i_Ent,LASERMINE_TEAM)) 
               { 
                  case CS_TEAM_T: set_rendering(i_Ent,kRenderFxGlowShell,Red_Zomb,Green_Zomb,Blue_Zomb,kRenderNormal,5); 
                  
                  case CS_TEAM_CT:	set_rendering(i_Ent,kRenderFxGlowShell,Red_Hum,Green_Hum,Blue_Hum,kRenderNormal,5); 
               } 
            }
			else	set_rendering(i_Ent,kRenderFxGlowShell,random_num(50 , 200),random_num(50 , 200),random_num(50 , 200),kRenderNormal,5); 
         } 
         set_pev(i_Ent, pev_nextthink, fCurrTime + 0.1); 
      }

      case BEAMBREAK_THINK : 
      { 
         static Float:vEnd[3],Float:vOrigin[3]; 
         pev(i_Ent, pev_origin, vOrigin); 
         pev(i_Ent, LASERMINE_BEAMENDPOINT, vEnd); 

         static iHit, Float:fFraction; 
         engfunc(EngFunc_TraceLine, vOrigin, vEnd, DONT_IGNORE_MONSTERS, i_Ent, 0); 

         get_tr2(0, TR_flFraction, fFraction); 
         iHit = get_tr2(0, TR_pHit); 

         if(fFraction < 1.0) 
         {
            if(pev_valid(iHit)) 
            { 
               pev(iHit, pev_classname, EntityName, 31); 
              
               if(!equal(EntityName, ENT_CLASS_NAME) && !equal(EntityName, gSnarkClassName) && !equal(EntityName, barnacle_class) && !equal(EntityName, weapon_box)) 
               { 
                  set_pev(i_Ent, pev_enemy, iHit); 

                  if(get_pcvar_num(g_LMODE) == MODE_LASERMINE)	CreateLaserDamage(i_Ent,iHit); 
                  else	if(get_pcvar_num(g_LFF) || CsTeams:pev(i_Ent,LASERMINE_TEAM) != cs_get_user_team(iHit))	set_pev(i_Ent, LASERMINE_STEP, EXPLOSE_THINK);

                  set_pev(i_Ent, pev_nextthink, fCurrTime + random_float(0.1, 0.3)); 
               } 
            } 
         } 
         if(get_pcvar_num(g_LDMGMODE)!=0)	if(pev(i_Ent,LASERMINE_HITING) != iHit)	set_pev(i_Ent,LASERMINE_HITING,iHit); 
  
        
         if(pev_valid(i_Ent)) 
         { 
            static Float:fHealth; 
            pev(i_Ent, pev_health, fHealth); 

            if(fHealth <= 0.0 || (pev(i_Ent,pev_flags) & FL_KILLME)) 
            { 
            set_pev(i_Ent, LASERMINE_STEP, EXPLOSE_THINK); 
            set_pev(i_Ent, pev_nextthink, fCurrTime + random_float(0.1, 0.3)); 
            } 
                                
            static Float:fBeamthink; 
            pev(i_Ent, LASERMINE_BEAMTHINK, fBeamthink); 
                    
            if(fBeamthink < fCurrTime && get_pcvar_num(g_LVISIBLE)) 
            { 
               DrawLaser(i_Ent, vOrigin, vEnd); 
               set_pev(i_Ent, LASERMINE_BEAMTHINK, fCurrTime + 0.1); 
            } 
            set_pev(i_Ent, pev_nextthink, fCurrTime + 0.01); 
         } 
      }

      case EXPLOSE_THINK: 
      { 
         set_pev(i_Ent, pev_nextthink, 0.0); 
         PlaySound(i_Ent, STOP_SOUND); 
         g_deployed[pev(i_Ent,LASERMINE_OWNER)]--; 
         CreateExplosion(i_Ent); 
         CreateDamage(i_Ent,get_pcvar_float(g_LRDMG),get_pcvar_float(g_LRADIUS)) 
         RemoveEntity   (i_Ent); 
      } 
   } 

   return FMRES_IGNORED; 
} 

PlaySound(i_Ent, i_SoundType) 
{ 
   switch (i_SoundType) 
   { 
      case POWERUP_SOUND : 
      { 
         emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND1, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); 
         emit_sound(i_Ent, CHAN_BODY , ENT_SOUND2, 0.2, ATTN_NORM, 0, PITCH_NORM); 
      } 
      case ACTIVATE_SOUND : 
      { 
         emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND3, 0.5, ATTN_NORM, 1, 75); 
      } 
      case STOP_SOUND : 
      { 
         emit_sound(i_Ent, CHAN_BODY , ENT_SOUND2, 0.2, ATTN_NORM, SND_STOP, PITCH_NORM); 
         emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND3, 0.5, ATTN_NORM, SND_STOP, 75); 
      } 
   } 
} 

DrawLaser(i_Ent, const Float:v_Origin[3], const Float:v_EndOrigin[3]) 
{
   new tcolor[3]; 
   new teamid = pev(i_Ent, LASERMINE_TEAM); 
   if(get_pcvar_num(g_LCLMODE) == 0) 
   { 
      switch(teamid){ 
         case 1:{ 
            
            tcolor[0] = Red_Zomb; 
            tcolor[1] = Green_Zomb; 
            tcolor[2] = Blue_Zomb; 
         } 
         case 2:{ 
            
            tcolor[0] = Red_Hum; 
            tcolor[1] = Green_Hum; 
            tcolor[2] = Blue_Hum; 
         } 
      } 
   }else 
   { 
      
      tcolor[0] = random_num(50 , 200); 
      tcolor[1] = random_num(50 , 200); 
      tcolor[2] = random_num(50 , 200); 
   } 
   message_begin(MSG_BROADCAST,SVC_TEMPENTITY); 
   write_byte(TE_BEAMPOINTS); 
   engfunc(EngFunc_WriteCoord,v_Origin[0]); 
   engfunc(EngFunc_WriteCoord,v_Origin[1]); 
   engfunc(EngFunc_WriteCoord,v_Origin[2]); 
   engfunc(EngFunc_WriteCoord,v_EndOrigin[0]); 
   engfunc(EngFunc_WriteCoord,v_EndOrigin[1]); 
   engfunc(EngFunc_WriteCoord,v_EndOrigin[2]); 
   write_short(beam); 
   write_byte(0); 
   write_byte(0); 
   write_byte(1);  
   write_byte(5);  
   write_byte(0);  
   write_byte(tcolor[0]); 
   write_byte(tcolor[1]); 
   write_byte(tcolor[2]); 
   write_byte(get_pcvar_num(g_LCBRIGHT)); 
   write_byte(255); 
   message_end(); 
   
   	// Get user origin
	static Float:originF[3]
	pev(ID_BLOOD, pev_origin, originF)
   
   	// Sparks
	if(get_pcvar_num(g_LDETAIL)) {
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, v_EndOrigin, 0)
	write_byte(TE_SPARKS) // TE id
	engfunc(EngFunc_WriteCoord, v_EndOrigin[0]) // x
	engfunc(EngFunc_WriteCoord, v_EndOrigin[1]) // y
	engfunc(EngFunc_WriteCoord, v_EndOrigin[2]) // z
	message_end();
      
   	// Effects when cut
		message_begin(MSG_BROADCAST ,SVC_TEMPENTITY)
		write_byte(TE_EXPLOSION)
		engfunc(EngFunc_WriteCoord, v_EndOrigin[0])
		engfunc(EngFunc_WriteCoord, v_EndOrigin[1])
		engfunc(EngFunc_WriteCoord, v_EndOrigin[2]-10.0)
		write_short(TE_SPARKS)	// sprite index
		write_byte(1)	// scale in 0.1's
		write_byte(30)	// framerate
		write_byte(TE_EXPLFLAG_NODLIGHTS | TE_EXPLFLAG_NOPARTICLES | TE_EXPLFLAG_NOSOUND)	// flags
		message_end()
	}
} 

CreateDamage(iCurrent,Float:DmgMAX,Float:Radius) 
{ 
   new Float:vecSrc[3]; 
   pev(iCurrent, pev_origin, vecSrc); 

   new AtkID=pev(iCurrent,LASERMINE_OWNER); 
   new TeamID=pev(iCurrent,LASERMINE_TEAM); 

   new ent = -1; 
   new Float:tmpdmg = DmgMAX; 

   new Float:kickback = 0.0; 
  
   new Float:Tabsmin[3], Float:Tabsmax[3]; 
   new Float:vecSpot[3]; 
   new Float:Aabsmin[3], Float:Aabsmax[3]; 
   new Float:vecSee[3]; 
   new trRes; 
   new Float:flFraction; 
   new Float:vecEndPos[3]; 
   new Float:distance; 
   new Float:origin[3], Float:vecPush[3]; 
   new Float:invlen; 
   new Float:velocity[3]; 
   new iHitHP,iHitTeam; 
  
   new Float:falloff; 
   if(Radius > 0.0)	falloff = DmgMAX / Radius; 
   else falloff = 1.0;
  
   while((ent = engfunc(EngFunc_FindEntityInSphere, ent, vecSrc, Radius)) != 0) 
   { 
      if(!pev_valid(ent)||!(pev(ent, pev_flags) & (FL_CLIENT | FL_FAKECLIENT | FL_MONSTER))) continue; 

      if(!pev_user_alive(ent)) continue; 
      
      kickback = 1.0; 
      tmpdmg = DmgMAX; 
      
      pev(ent, pev_absmin, Tabsmin); 
      pev(ent, pev_absmax, Tabsmax); 
      xs_vec_add(Tabsmin,Tabsmax,Tabsmin); 
      xs_vec_mul_scalar(Tabsmin,0.5,vecSpot); 
      pev(iCurrent, pev_absmin, Aabsmin); 
      pev(iCurrent, pev_absmax, Aabsmax); 
      xs_vec_add(Aabsmin,Aabsmax,Aabsmin); 
      xs_vec_mul_scalar(Aabsmin,0.5,vecSee); 
      engfunc(EngFunc_TraceLine, vecSee, vecSpot, 0, iCurrent, trRes); 
      get_tr2(trRes, TR_flFraction, flFraction); 
      
      if(flFraction >= 0.9 || get_tr2(trRes, TR_pHit) == ent) 
      { 
         get_tr2(trRes, TR_vecEndPos, vecEndPos); 
         distance = get_distance_f(vecSrc, vecEndPos) * falloff; 
         tmpdmg -= distance; 
         if(tmpdmg < 0.0) 
            tmpdmg = 0.0; 
        
         if(kickback != 0.0) 
         { 
            xs_vec_sub(vecSpot,vecSee,origin); 
            invlen = 1.0/get_distance_f(vecSpot, vecSee); 

            xs_vec_mul_scalar(origin,invlen,vecPush); 
            pev(ent, pev_velocity, velocity) 
            xs_vec_mul_scalar(vecPush,tmpdmg,vecPush); 
            xs_vec_mul_scalar(vecPush,kickback,vecPush); 
            xs_vec_add(velocity,vecPush,velocity); 
            if(tmpdmg < 60.0) 
            { 
               xs_vec_mul_scalar(velocity,12.0,velocity); 
            } else { 
               xs_vec_mul_scalar(velocity,4.0,velocity); 
            } 
            if(velocity[0] != 0.0 || velocity[1] != 0.0 || velocity[2] != 0.0) 
            { 
              
               set_pev(ent, pev_velocity, velocity) 
            } 
         } 

         iHitHP = pev_user_health(ent) - floatround(tmpdmg) 
         iHitTeam = int:cs_get_user_team(ent) 
         if(iHitHP <= 0) 
         { 
            if(iHitTeam != TeamID) 
            { 
               cs_set_user_money(AtkID,cs_get_user_money(AtkID) + get_pcvar_num(g_LFMONEY)) 
               set_score(AtkID,ent,1,iHitHP) 
            }else 
            { 
               if(get_pcvar_num(g_LFF)) 
               { 
                  cs_set_user_money(AtkID,cs_get_user_money(AtkID) - get_pcvar_num(g_LFMONEY)) 
                  set_score(AtkID,ent,-1,iHitHP) 
               } 
            } 
         }else 
         { 
            if(iHitTeam != TeamID || get_pcvar_num(g_LFF)) 
            { 
              
               set_user_health(ent, iHitHP) 
               engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},ent); 
               write_byte(floatround(tmpdmg)) 
               write_byte(floatround(tmpdmg)) 
               write_long(DMG_BULLET) 
               engfunc(EngFunc_WriteCoord,vecSrc[0]) 
               engfunc(EngFunc_WriteCoord,vecSrc[1]) 
               engfunc(EngFunc_WriteCoord,vecSrc[2]) 
               message_end() 
            } 
         } 
      } 
   } 
   return 
} 

bool:pev_user_alive(ent) 
{ 
   new deadflag = pev(ent,pev_deadflag); 
   if(deadflag != DEAD_NO) 
      return false; 
   return true; 
} 

CreateExplosion(iCurrent) 
{ 
   new Float:vOrigin[3]; 
   pev(iCurrent,pev_origin,vOrigin); 

   message_begin(MSG_BROADCAST, SVC_TEMPENTITY); 
   write_byte(99); 
   write_short(iCurrent); 
   message_end(); 

   engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vOrigin, 0); 
   write_byte(TE_EXPLOSION); 
   engfunc(EngFunc_WriteCoord,vOrigin[0]); 
   engfunc(EngFunc_WriteCoord,vOrigin[1]); 
   engfunc(EngFunc_WriteCoord,vOrigin[2]); 
   write_short(boom); 
   write_byte(30); 
   write_byte(15); 
   write_byte(0); 
   message_end(); 
} 

CreateLaserDamage(iCurrent,isHit) 
{ 
   if(isHit < 0) return PLUGIN_CONTINUE

   switch(get_pcvar_num(g_LDMGMODE)) 
   { 
      case 1: 
      { 
         if(pev(iCurrent,LASERMINE_HITING) == isHit)	return PLUGIN_CONTINUE 
      } 
      case 2: 
      { 
         if(pev(iCurrent,LASERMINE_HITING) == isHit) 
         { 
            static Float:cnt 
            static now,htime;now = floatround(get_gametime()) 

            pev(iCurrent,LASERMINE_COUNT,cnt) 
            htime = floatround(cnt) 
            if(now - htime < get_pcvar_num(g_LDSEC)) 
            { 
               return PLUGIN_CONTINUE; 
            }else{ 
               set_pev(iCurrent,LASERMINE_COUNT,get_gametime()) 
            } 
         }else 
         { 
            set_pev(iCurrent,LASERMINE_COUNT,get_gametime()) 
         } 
      } 
   } 

   new Float:vOrigin[3],Float:vEnd[3] 
   pev(iCurrent,pev_origin,vOrigin) 
   pev(iCurrent,pev_vuser1,vEnd) 

   new teamid = pev(iCurrent, LASERMINE_TEAM)

   new szClassName[32] 
   new Alive,God 
   new iHitTeam,iHitHP,id 
   new hitscore 

   szClassName[0] = '^0' 
   pev(isHit,pev_classname,szClassName,32) 
   if((pev(isHit, pev_flags) & (FL_CLIENT | FL_FAKECLIENT | FL_MONSTER))) 
   { 
      Alive = pev_user_alive(isHit)
      God = get_user_godmode(isHit)
      iHitTeam = int:cs_get_user_team(isHit)
      iHitHP = pev_user_health(isHit) - get_pcvar_num(g_LDMG)
      id = pev(iCurrent,LASERMINE_OWNER)
      if(!Alive || God||id==id||cs_get_user_team(id)==cs_get_user_team(isHit)) return PLUGIN_CONTINUE 

      if(iHitHP <= 0) 
      { 
         if(iHitTeam != teamid) 
         { 
            emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM) 
            hitscore = 1 
            cs_set_user_money(id,cs_get_user_money(id) + get_pcvar_num(g_LFMONEY)) 
            set_score(id,isHit,hitscore,iHitHP) 
         } 
         else 
         { 
            if(get_pcvar_num(g_LFF)) 
            { 
               emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM) 
               hitscore = -1 
               cs_set_user_money(id,cs_get_user_money(id) - get_pcvar_num(g_LFMONEY)) 
               set_score(id,isHit,hitscore,iHitHP) 
            } 
         } 
      } 
      else if(iHitTeam != teamid || get_pcvar_num(g_LFF)) 
      { 
         emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM) 
         set_user_health(isHit,iHitHP) 
         set_pev(iCurrent,LASERMINE_HITING,isHit); 
         engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},isHit); 
         write_byte(get_pcvar_num(g_LDMG)) 
         write_byte(get_pcvar_num(g_LDMG)) 
         write_long(DMG_BULLET) 
         engfunc(EngFunc_WriteCoord,vOrigin[0]) 
         engfunc(EngFunc_WriteCoord,vOrigin[1]) 
         engfunc(EngFunc_WriteCoord,vOrigin[2]) 
         message_end() 
      } 
   } 
   else if(equal(szClassName, ENT_CLASS_NAME3)) 
   { 
      new hl; 
      hl = pev_user_health(isHit); 
      set_user_health(isHit,hl-get_pcvar_num(g_LDMG)); 
   } 
   return PLUGIN_CONTINUE 
} 

stock pev_user_health(id)
{ 
   new Float:health 
   pev(id,pev_health,health) 
   return floatround(health) 
} 

stock set_user_health(id,health) 
{ 
   health > 0 ? set_pev(id, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, id); 
} 

stock get_user_godmode(index) { 
   new Float:val 
   pev(index, pev_takedamage, val) 

   return (val == DAMAGE_NO) 
} 

stock set_user_frags(index, frags) 
{ 
   set_pev(index, pev_frags, float(frags)) 

   return 1 
} 

stock pev_user_frags(index) 
{ 
   new Float:frags; 
   pev(index,pev_frags,frags); 
   return floatround(frags); 
} 

set_score(id,target,hitscore,HP) 
{ 
   new idfrags = pev_user_frags(id) + hitscore 
   set_user_frags(id,idfrags) 
   new tarfrags = pev_user_frags(target) + 1 
   set_user_frags(target,tarfrags) 
   new idteam = int:cs_get_user_team(id) 
   new iddeaths = cs_get_user_deaths(id) 


   message_begin(MSG_ALL, g_msgDeathMsg, {0, 0, 0} ,0) 
   write_byte(id) 
   write_byte(target) 
   write_byte(0) 
   write_string(ENT_CLASS_NAME) 
   message_end() 

   message_begin(MSG_ALL, g_msgScoreInfo) 
   write_byte(id) 
   write_short(idfrags) 
   write_short(iddeaths) 
   write_short(0) 
   write_short(idteam) 
   message_end() 

   set_msg_block(g_msgDeathMsg, BLOCK_ONCE) 

   set_user_health(target, HP) 
} 

public BuyLasermine(id) 
{ 
   if(!CanCheck(id,1)) return PLUGIN_CONTINUE 

   cs_set_user_money(id,cs_get_user_money(id) - get_pcvar_num(g_LCOST)) 
   g_havemine[id]++; 

   client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_BOUGHT") 

   emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) 
   ShowAmmo(id) 
   return PLUGIN_HANDLED 
} 

public zp_extra_item_selected(id, itemid) 
{ 
   if(itemid == g_LME) 
      { 
      cs_set_user_money(id, cs_get_user_money(id) + LMCost) 
      BuyLasermine(id) 
      } 
   return PLUGIN_CONTINUE 
} 

ShowAmmo(id) 
{ 
   new ammo[51] 
   new PlugStat[ 555 char ]; 
   formatex(PlugStat, charsmax(PlugStat), "%L", LANG_PLAYER, "STR_STATE") 
   formatex(ammo, 50, "%s %i/%i",PlugStat, g_havemine[id],get_pcvar_num(g_LAMMO)) 

   message_begin(MSG_ONE, g_msgStatusText, {0,0,0}, id) 
   write_byte(0) 
   write_string(ammo) 
   message_end() 
} 

public showInfo(id) 
{ 
   client_print(id, print_chat, "%L", id, "STR_REF") 
} 

public say_lasermine(id) 
{ 
   new said[32] 
   read_argv(1,said,31); 
   if(!get_pcvar_num(g_LENABLE)) 
   { 
      return PLUGIN_CONTINUE 
   } 
   if(equali(said,"/buy lasermine")||equali(said,"/lm")||equali(said,"buy_lasermine")) 
   { 
      BuyLasermine(id) 
   } 
   else if(equali(said, "lasermine") || equali(said, "/lasermine")) 
   { 
      const SIZE = 1024 
      new msg[SIZE+1],len = 0; 
      len += formatex(msg[len], SIZE - len, "<html><body>") 
      len += formatex(msg[len], SIZE - len, "<p><b>LaserMine</b></p><br/><br/>") 
      len += formatex(msg[len], SIZE - len, "<p>Poti planta lasere numai pe un perete.</p><br/>") 
      len += formatex(msg[len], SIZE - len, "<p>Cu laserele plantate puteti omora zombi.</p><br/><br/>") 
      len += formatex(msg[len], SIZE - len, "<p><b>Introduce aceste comenzi in consola :<br/>") 
      len += formatex(msg[len], SIZE - len, "<b>bind v +setlaser</p>") 
      len += formatex(msg[len], SIZE - len, "<b>bind c +dellaser</p>") 
      len += formatex(msg[len], SIZE - len, "</body></html>") 
      show_motd(id, msg, "Lasermine Entity help") 
      return PLUGIN_CONTINUE 
   } 
   else if(containi(said, "laser") != -1) 
   { 
      showInfo(id) 
      return PLUGIN_CONTINUE 
   } 
   return PLUGIN_CONTINUE 
} 

public standing(id) 
{ 
   if(!g_settinglaser[id]) 
      return PLUGIN_CONTINUE 

   set_pev(id, pev_maxspeed, 1.0) 

   return PLUGIN_CONTINUE 
} 

public ltm_PostThink(id) 
{ 
   if(!g_settinglaser[id] && plsetting[id]){ 
      resetspeed(id) 
   } 
   else if(g_settinglaser[id] && !plsetting[id]) { 
      pev(id, pev_maxspeed,plspeed[id]) 
      set_pev(id, pev_maxspeed, 1.0) 
   } 
   plsetting[id] = g_settinglaser[id] 
   return FMRES_IGNORED 
} 

public ltm_PreThink(id) 
{ 
   if(!pev_user_alive(id) || g_settinglaser[id] == true || is_user_bot(id) || get_pcvar_num(g_LCMDMODE) == 1) 
      return FMRES_IGNORED; 

   if(pev(id, pev_button) & IN_USE && !(pev(id, pev_oldbuttons) & IN_USE)) 
      CreateLaserMine_Progress(id) 
   return FMRES_IGNORED; 
} 

resetspeed(id) 
{ 
   set_pev(id, pev_maxspeed, plspeed[id]) 
} 

public client_putinserver(id) 
{ 
   g_deployed[id] = 0; 
   g_havemine[id] = 0; 
   DeleteTask(id); 
   //set_task( 1.0, "Task_CheckAiming", id + 3389, _, _, "b" ); 
   //set_task( 1.1, "checkIfspec",_,_,_,"b") 
} 

public client_disconnect(id){ 
   if(!get_pcvar_num(g_LENABLE)) 
      return PLUGIN_CONTINUE 
   DeleteTask(id);
   RemoveAllTripmines(id); 
   return PLUGIN_CONTINUE
} 

public newround(id) 
{ 
   if(!get_pcvar_num(g_LENABLE)) 
      return PLUGIN_CONTINUE 

	for(new id=0;id<get_maxplayers();id++)
{
   pev(id, pev_maxspeed,plspeed[id]) 
   DeleteTask(id); 
   RemoveAllTripmines(id); 

   delaycount(id); 
   SetStartAmmo(id);
}
   return PLUGIN_CONTINUE 
}
public endround(id) 
{ 
   if(!get_pcvar_num(g_LENABLE)) 
      return PLUGIN_CONTINUE 
	for(new id=0;id<get_maxplayers();id++)
{
   DeleteTask(id); 
   RemoveAllTripmines(id); 
}
   return PLUGIN_CONTINUE 
}

public DeathEvent(){ 
   if(!get_pcvar_num(g_LENABLE)) 
      return PLUGIN_CONTINUE 

   new id = read_data(2) 
   if(is_user_connected(id))
	{
	DeleteTask(id);
set_task( 0.1, "checkIfspec",_,_,_,"b")
}
   return PLUGIN_CONTINUE 
} 

public event_infect(victim, attacker) {
RemoveAllTripmines(victim);
if(g_deployed[victim])	g_havemine[id]=get_pcvar_num(g_LSTAMMO)
}
public RemoveAllTripmines(i_Owner) 
{ 
   new iEnt = g_MaxPL + 1; 
   new clsname[32]; 
   while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", ENT_CLASS_NAME))) 
   { 
      if(i_Owner) 
      { 
         if(pev(iEnt, LASERMINE_OWNER) != i_Owner) 
            continue; 
         clsname[0] = '^0' 
         pev(iEnt, pev_classname, clsname, sizeof(clsname)-1); 
         if(equali(clsname, ENT_CLASS_NAME)) 
         { 
            PlaySound(iEnt, STOP_SOUND); 
            RemoveEntity(iEnt); 
         } 
      } 
      else 
         set_pev(iEnt, pev_flags, FL_KILLME); 
   } 
   g_deployed[i_Owner]=0; 
} 

SetStartAmmo(id) 
{ 
   new stammo = get_pcvar_num(g_LSTAMMO); 
   if(stammo <= 0) return PLUGIN_CONTINUE; 
   g_havemine[id] = (g_havemine[id] <= stammo) ? stammo : g_havemine[id]; 
   return PLUGIN_CONTINUE; 
} 

public CutDeploy_onDamage(id) 
{ 
   if(get_user_health(id) < 1) 
      DeleteTask(id); 
} 

DeleteTask(id) 
{ 
   if(task_exists((TASK_PLANT + id))) 
   { 
      remove_task((TASK_PLANT + id)) 
   } 
   if(task_exists((TASK_RELEASE + id))) 
   { 
      remove_task((TASK_RELEASE + id)) 
   } 
   g_settinglaser[id] = false 
   return PLUGIN_CONTINUE; 
} 

stock set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) 
{ 
   static Float:RenderColor[3]; 
   RenderColor[0] = float(r); 
   RenderColor[1] = float(g); 
   RenderColor[2] = float(b); 

   set_pev(entity, pev_renderfx, fx); 
   set_pev(entity, pev_rendercolor, RenderColor); 
   set_pev(entity, pev_rendermode, render); 
   set_pev(entity, pev_renderamt, float(amount)); 

   return 1 
} 

get_offset_value(id, type) 
{ 
   new key = -1; 
   switch(type) 
   { 
      case OFFSET_TEAM: key = OFFSET_TEAM; 
      case OFFSET_MONEY: 
      key = OFFSET_MONEY; 
      case OFFSET_DEATH: key = OFFSET_DEATH; 
   } 
   if(key != -1) 
   { 
      if(is_amd64_server()) key += 25; 
      return get_pdata_int(id, key); 
   } 
   return -1; 
} 

public Task_CheckAiming( iTaskIndex ) 
{ 
    static iClient; 
    iClient = iTaskIndex - 3389; 

    if( is_user_alive( iClient ) ) 
    { 
        static iEntity, iDummy, cClassname[ 32 ]; 
        get_user_aiming( iClient, iEntity, iDummy, 9999 ); 

        if( pev_valid( iEntity ) ) 
        { 
            pev( iEntity, pev_classname, cClassname, 31 ); 

            if( equal( cClassname, "lasermine" ) ) 
            { 
                new name[ 32 ]; 
                new aim = pev( iEntity, LASERMINE_OWNER ); 
                get_user_name( aim, name, charsmax( name ) - 1 ) 
                set_hudmessage( 50, 100, 150, -1.0, 0.60, 0, 6.0, 1.1, 0.0, 0.0, -1 ) 
                show_hudmessage( iClient, "Owner: %s^nHealth: %d/700", name, pev(iEntity,pev_health ))
            } 
        } 
    } 
} 

stock client_printcolor(const id, const input[], any:...) 
{ 
   new iCount = 1, iPlayers[32] 
   static szMsg[191] 

   vformat(szMsg, charsmax(szMsg), input, 3) 
   replace_all(szMsg, 190, "!g", "^4") 
   replace_all(szMsg, 190, "!y", "^1") 
   replace_all(szMsg, 190, "!t", "^3") 
   replace_all(szMsg, 190, "!w", "^0") 

   if(id) iPlayers[0] = id 
   else get_players(iPlayers, iCount, "ch") 

   for(new i = 0; i < iCount; i++) 
   { 
      if(is_user_connected(iPlayers)) 
      { 
         message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, iPlayers) 
         write_byte(iPlayers) 
         write_string(szMsg) 
         message_end() 
      } 
   } 
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
Aliacee
Membru, skill +1
Membru, skill +1
Posts: 108
Joined: 29 Nov 2015, 19:05
Detinator Steam: Da
CS Status: Citesc forumul eXtreamCS.com...!
Fond eXtream: 0
Contact:

07 Jan 2019, 07:17

Imi spune in felul urmator:
bio_ultimate_lasermine.sma(1309) : error 017: undefined symbol "id"
Poza: https://i.imgur.com/AqRUa7A.png
Am incercat si online.
User avatar
Laurentiu P.
Fost moderator
Fost moderator
Posts: 2549
Joined: 10 Jul 2013, 21:26
Detinator Steam: Da
Reputatie: Fost super moderator
Fond eXtream: 100
Has thanked: 26 times
Been thanked: 62 times
Contact:

07 Jan 2019, 07:28

Aliacee wrote:Imi spune in felul urmator:
bio_ultimate_lasermine.sma(1309) : error 017: undefined symbol "id"
Poza: https://i.imgur.com/AqRUa7A.png
Am incercat si online.
Unde vezi tu bio_ultimate_lasermine.sma in poza aia ? Din ce vad ai compilat stuck.sma, unde ti-a dat eroarea pe linia 1309
no...
Aliacee
Membru, skill +1
Membru, skill +1
Posts: 108
Joined: 29 Nov 2015, 19:05
Detinator Steam: Da
CS Status: Citesc forumul eXtreamCS.com...!
Fond eXtream: 0
Contact:

07 Jan 2019, 09:50

Am copiat sursa pa care mi-a dat-o Adryyy si am pus-o si eu in primul fiser pe care l-am gasit pe desktop, in acest caz "stuck.sma".
Daca ai sa transformi sursa in amxx, o sa-ti dea aceasta eroare.
Dar sa ma conving, i-am schimbat si numele la fisier in "bio_ultimate_lasermine.sma".
Partea cu:[/color] bio_ultimate_lasermine.sma(1309) : error 017: undefined symbol "id"
Mi-a dat pe un site roman de compiler.
Cred ca stii despre care este vorba, incepe cu F.
Insa nu am vrut sa fac print la acel site sa nu se considere reclama sau ceva de genu'. :D
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

07 Jan 2019, 18:29

| Afiseaza codul
#include <amxmodx> 
#include <amxmisc> 
#include <fakemeta> 
#include <hamsandwich> 
#include <xs> 
#include <cstrike> 
#include <biohazard> 

#pragma tabsize 0

#define PLUGIN "[ZP] LaserMine" 
#define VERSION "2.8.1" 
#define AUTHOR "SandStriker / Shidla / QuZ/DJ_WEST" 

#define RemoveEntity(%1)   engfunc(EngFunc_RemoveEntity,%1) 
#define TASK_PLANT         15100 
#define TASK_RESET         15500 
#define TASK_RELEASE      15900 

#define LASERMINE_TEAM      pev_iuser1 
#define LASERMINE_OWNER      pev_iuser2 
#define LASERMINE_STEP      pev_iuser3 
#define LASERMINE_HITING   pev_iuser4 
#define LASERMINE_COUNT      pev_fuser1 

#define LASERMINE_POWERUP   pev_fuser2 
#define LASERMINE_BEAMTHINK   pev_fuser3 

#define LASERMINE_BEAMENDPOINT   pev_vuser1 
#define MAX_MINES         10 
#define MODE_LASERMINE      0 
#define OFFSET_TEAM         114 
#define OFFSET_MONEY      115 
#define OFFSET_DEATH      444 

#define cs_get_user_team(%1)   CsTeams:get_offset_value(%1,OFFSET_TEAM) 
#define cs_get_user_deaths(%1)   get_offset_value(%1,OFFSET_DEATH) 

new const LMCost = 2 

new const 
   Red_Hum      = 0, 
   Green_Hum    = 0, 
   Blue_Hum   = 255; 

new const 
   Red_Zomb   = 255, 
   Green_Zomb    = 0, 
   Blue_Zomb   = 0; 

enum tripmine_e { 
   TRIPMINE_IDLE1 = 0, 
   TRIPMINE_IDLE2, 
   TRIPMINE_ARM1, 
   TRIPMINE_ARM2, 
   TRIPMINE_FIDGET, 
   TRIPMINE_HOLSTER, 
   TRIPMINE_DRAW, 
   TRIPMINE_WORLD, 
   TRIPMINE_GROUND, 
}; 

enum 
{ 
   POWERUP_THINK, 
   BEAMBREAK_THINK, 
   EXPLOSE_THINK 
}; 

enum 
{ 
   POWERUP_SOUND, 
   ACTIVATE_SOUND, 
   STOP_SOUND 
}; 

new const 
   ENT_MODELS[]   = "models/v_tripmine.mdl", 
   ENT_SOUND1[]   = "weapons/mine_deploy.wav", 
   ENT_SOUND2[]   = "weapons/mine_charge.wav", 
   ENT_SOUND3[]   = "weapons/mine_activate.wav", 
   ENT_SOUND4[]   = "debris/beamstart9.wav", 
   ENT_SOUND5[]   = "items/gunpickup2.wav", 
   ENT_SOUND6[]   = "debris/bustglass1.wav", 
   ENT_SOUND7[]   = "debris/bustglass2.wav", 
   ENT_SPRITE1[]   = "sprites/laserbeam.spr", 
   ENT_SPRITE2[]   = "sprites/lm_explode.spr"; 

new const 
   ENT_CLASS_NAME[]   =   "lasermine", 
   ENT_CLASS_NAME3[]   =   "func_breakable", 
   gSnarkClassName[]   =   "wpn_snark",  
   barnacle_class[]   =   "barnacle",      
   weapon_box[]      =   "weaponbox"; 

new g_EntMine, beam, boom 
new g_LENABLE, g_LFMONEY, g_LAMMO, g_LDMG, g_LBEO, g_LTMAX, g_LCOST, g_LHEALTH, g_LMODE, g_LRADIUS, g_NOROUND 
new g_LRDMG,g_LFF,g_LCBT, g_LDELAY, g_LVISIBLE, g_LSTAMMO, g_LACCESS, g_LGLOW, g_LDMGMODE, g_LCLMODE 
new g_LCBRIGHT, g_LDSEC, g_LCMDMODE, g_LBUYMODE, g_LME, g_LDETAIL; 
new g_msgDeathMsg,g_msgScoreInfo,g_msgDamage,g_msgStatusText; 
new g_dcount[33],g_nowtime,g_MaxPL 
new bool:g_settinglaser[33] 
new ID_BLOOD; 

new Float:plspeed[33], plsetting[33], g_havemine[33], g_deployed[33]; 

public plugin_init() 
{ 
   register_plugin(PLUGIN, VERSION, AUTHOR); 

   RegisterHam(Ham_TakeDamage, ENT_CLASS_NAME3, "Laser_TakeDamage"); 
  
   register_clcmd("+setlaser","CreateLaserMine_Progress_b"); 
   register_clcmd("-setlaser","StopCreateLaserMine"); 
   register_clcmd("+dellaser","ReturnLaserMine_Progress"); 
   register_clcmd("-dellaser","StopReturnLaserMine"); 
   register_clcmd("say","say_lasermine"); 
   register_clcmd("buy_lasermine","BuyLasermine"); 

   register_concmd("bh_untakelm", "luatlaser", ADMIN_LEVEL_B, " - <nume>"); 
   register_concmd("bh_takelm", "puslaser", ADMIN_LEVEL_B, " - <nume>"); 

   g_LENABLE   = register_cvar("bh_ltm","1"); 
   g_LACCESS   = register_cvar("bh_ltm_acs","0"); 
   g_LMODE      = register_cvar("bh_ltm_mode","0"); 
   g_LAMMO      = register_cvar("bh_ltm_ammo","2"); 
   g_LDMG      = register_cvar("bh_ltm_dmg","10000"); 
   g_LCOST      = register_cvar("bh_ltm_cost","5000"); 
   g_LFMONEY   = register_cvar("bh_ltm_fragmoney","1"); 
   g_LHEALTH   = register_cvar("bh_ltm_health","5"); 
   g_LTMAX      = register_cvar("bh_ltm_teammax","100"); 
   g_LRADIUS   = register_cvar("bh_ltm_radius","320.0") 
   g_LRDMG      = register_cvar("bh_ltm_rdmg","100") 
   g_LFF      = register_cvar("bh_ltm_ff","0"); 
   g_LCBT      = register_cvar("bh_ltm_cbt","ALL"); 
   g_LDELAY   = register_cvar("bh_ltm_delay","0.1"); 
   g_LVISIBLE   = register_cvar("bh_ltm_line","1"); 
   g_LGLOW      = register_cvar("bh_ltm_glow","0"); 
   g_LCBRIGHT   = register_cvar("bh_ltm_bright","255"); 
   g_LCLMODE   = register_cvar("bh_ltm_color","0"); 
   g_LDMGMODE   = register_cvar("bh_ltm_ldmgmode","0"); 
   g_LDSEC      = register_cvar("bh_ltm_ldmgseconds","1"); 
   g_LSTAMMO   = register_cvar("bh_ltm_startammo","2"); 
   g_LBUYMODE   = register_cvar("bh_ltm_buymode","1"); 
   g_LCMDMODE   = register_cvar("bh_ltm_cmdmode","1");      
   g_LBEO      = register_cvar("bh_ltm_brokeenemy","1"); 
   g_NOROUND   = register_cvar("bh_ltm_noround","1"); 
   g_LDETAIL  = register_cvar("bh_ltm_realistic_detail", "1");

   register_event("DeathMsg", "DeathEvent", "a"); 
   register_event("CurWeapon", "standing", "be", "1=1"); 
   register_event("ResetHUD", "delaycount", "a");

	register_event("HLTV", "newround", "a", "1=0", "2=0")
	register_logevent("endround", 2, "1=Round_End")

   register_event("Damage","CutDeploy_onDamage","b"); 
   g_msgDeathMsg   = get_user_msgid("DeathMsg"); 
   g_msgScoreInfo   = get_user_msgid("ScoreInfo"); 
   g_msgDamage      = get_user_msgid("Damage"); 
   g_msgStatusText = get_user_msgid("StatusText"); 
  
   register_forward(FM_Think, "ltm_Think"); 
   register_forward(FM_PlayerPostThink, "ltm_PostThink"); 
   register_forward(FM_PlayerPreThink, "ltm_PreThink"); 
  
   register_dictionary("lasermines.txt") 
} 

public plugin_precache() 
{ 
   precache_sound(ENT_SOUND1); 
   precache_sound(ENT_SOUND2); 
   precache_sound(ENT_SOUND3); 
   precache_sound(ENT_SOUND4); 
   precache_sound(ENT_SOUND5); 
   precache_sound(ENT_SOUND6); 
   precache_sound(ENT_SOUND7); 
   precache_model(ENT_MODELS); 
   beam = precache_model(ENT_SPRITE1); 
   boom = precache_model(ENT_SPRITE2); 
} 

public plugin_modules() 
{ 
   require_module("fakemeta"); 
   require_module("cstrike"); 
} 

public plugin_cfg() 
{ 
   g_EntMine = engfunc(EngFunc_AllocString,ENT_CLASS_NAME3); 
   arrayset(g_havemine,0,sizeof(g_havemine)); 
   arrayset(g_deployed,0,sizeof(g_deployed)); 
   g_MaxPL = get_maxplayers(); 

   new file[64]; get_localinfo("amxx_configsdir",file,63); 
   format(file, 63, "%s/bh_ltm_cvars.cfg", file); 
   if(file_exists(file)) server_cmd("exec %s", file), server_exec(); 
} 

public luatlaser(id, level, cid) 
{ 
   if (!cmd_access(id, level, cid, 2)) 
   { 
      return PLUGIN_HANDLED 
   } 

   new arg[32] 
    
   read_argv(1, arg, 31) 
   new player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF) 
    
   if (!player) 
      return PLUGIN_HANDLED 

   DeleteTask(player); 
   RemoveAllTripmines(player); 

   new namea[32],namep[32]; 
   get_user_name(id,namea,charsmax(namea)); 
   get_user_name(player,namep,charsmax(namep)); 
   client_printcolor(0, "!g[Biohazard] !yAdminul !g%s !yi-a dezactivat laserele lui !g%s!y.", namea, namep);

   return PLUGIN_HANDLED; 
} 

public puslaser(id, level, cid) 
{ 
   if (!cmd_access(id, level, cid, 2)) 
   { 
      return PLUGIN_HANDLED 
   } 

   new arg[32] 
    
   read_argv(1, arg, 31) 
   new player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF) 
    
   if (!player) 
      return PLUGIN_HANDLED 

   DeleteTask(player); 
   SetStartAmmo(player); 

   new namea[32],namep[32]; 
   get_user_name(id,namea,charsmax(namea)); 
   get_user_name(player,namep,charsmax(namep)); 
   client_printcolor(0, "!g[Biohazard] !yAdminul !g%s !yi-a reactivat laserele lui !g%s!y.", namea, namep);

   return PLUGIN_HANDLED; 
} 

public checkIfspec(id) 
{ 
    if( g_deployed[id] > 0 ) 
    { 
          if(cs_get_user_team(id) == CS_TEAM_SPECTATOR) 
          { 
               DeleteTask(id); 
               RemoveAllTripmines(id); 

               new namep[32]; 
               get_user_name(id,namep,charsmax(namep)); 
               client_printcolor(0,"!g[Biohazard] !yLaserele lui !g%s !gau fost dezactivate deoarece s-a mutat la !gspectatori!y!",namep); 
          } 
     } 
} 

public Laser_TakeDamage(victim, inflictor, attacker, Float:f_Damage, bit_Damage) 
{ 
   if(get_pcvar_num(g_LBEO)) 
   { 
      new i_Owner 

      i_Owner = pev(victim, LASERMINE_OWNER) 
      
      if(CsTeams:pev(victim, LASERMINE_TEAM) == cs_get_user_team(attacker)) 
      
      if(i_Owner != attacker)	return HAM_SUPERCEDE

      return PLUGIN_CONTINUE 
   } 
   return PLUGIN_CONTINUE 
} 

public delaycount(id) 
{ 
   g_dcount[id] = floatround(get_gametime()); 
} 

bool:CheckTime(id) 
{ 
   g_nowtime = floatround(get_gametime()) - g_dcount[id]; 
   if(g_nowtime >= get_pcvar_num(g_LDELAY)) 
      return true; 
   return false; 
} 

public CreateLaserMine_Progress_b(id) 
{ 
   if(get_pcvar_num(g_LCMDMODE) != 0) 
      CreateLaserMine_Progress(id); 
   return PLUGIN_HANDLED; 
} 

public CreateLaserMine_Progress(id) 
{ 
   if(!CreateCheck(id)) 
      return PLUGIN_HANDLED; 
   g_settinglaser[id] = true; 

   message_begin(MSG_ONE, 108, {0,0,0}, id); 
   write_byte(1); 
   write_byte(0); 
   message_end(); 

   set_task(1.2, "Spawn", (TASK_PLANT + id)); 

   return PLUGIN_HANDLED; 
} 

public ReturnLaserMine_Progress(id) 
{ 
   if(!ReturnCheck(id)) 
      return PLUGIN_HANDLED; 
   g_settinglaser[id] = true; 

   message_begin(MSG_ONE, 108, {0,0,0}, id); 
   write_byte(1); 
   write_byte(0); 
   message_end(); 

   set_task(1.2, "ReturnMine", (TASK_RELEASE + id)); 

   return PLUGIN_HANDLED; 
} 

public StopCreateLaserMine(id) 
{ 
   DeleteTask(id); 
   message_begin(MSG_ONE, 108, {0,0,0}, id); 
   write_byte(0); 
   write_byte(0); 
   message_end(); 

   return PLUGIN_HANDLED; 
} 

public StopReturnLaserMine(id) 
{ 
   DeleteTask(id); 
   message_begin(MSG_ONE, 108, {0,0,0}, id); 
   write_byte(0); 
   write_byte(0); 
   message_end(); 

   return PLUGIN_HANDLED; 
} 

public ReturnMine(id) 
{ 
   id -= TASK_RELEASE; 
   new tgt,body,Float:vo[3],Float:to[3]; 
   get_user_aiming(id,tgt,body); 
   if(!pev_valid(tgt)) return; 
   pev(id,pev_origin,vo); 
   pev(tgt,pev_origin,to); 
   if(get_distance_f(vo,to) > 70.0) return; 
   new EntityName[32]; 
   pev(tgt, pev_classname, EntityName, 31); 
   if(!equal(EntityName, ENT_CLASS_NAME)) return; 
   if(pev(tgt,LASERMINE_OWNER) != id) return; 
   RemoveEntity(tgt); 

   g_havemine[id] ++; 
   g_deployed[id] --; 
   emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) 
   ShowAmmo(id) 

   return; 
} 

public Spawn(id) 
{ 
   id -= TASK_PLANT 
  
   new i_Ent = engfunc(EngFunc_CreateNamedEntity,g_EntMine); 
   if(!i_Ent) 
   { 
      client_print(id, print_chat,"[Laesrmine Debug] Can't Create Entity"); 
      return PLUGIN_HANDLED_MAIN; 
   } 
   set_pev(i_Ent,pev_classname,ENT_CLASS_NAME); 

   engfunc(EngFunc_SetModel,i_Ent,ENT_MODELS); 

   set_pev(i_Ent,pev_solid,SOLID_BBOX); 
   set_pev(i_Ent,pev_movetype,MOVETYPE_FLY); 

   set_pev(i_Ent,pev_frame,0); 
   set_pev(i_Ent,pev_body,3); 
   set_pev(i_Ent,pev_sequence,TRIPMINE_WORLD); 
   set_pev(i_Ent,pev_framerate,0); 
   set_pev(i_Ent,pev_takedamage,DAMAGE_YES); 
   set_pev(i_Ent,pev_dmg,100.0); 
   //set_user_health(i_Ent,get_pcvar_num(g_LHEALTH));
	set_pev(i_Ent,pev_health,get_pcvar_num(g_LHEALTH));

   new Float:vOrigin[3],Float:vNewOrigin[3],Float:vNormal[3],Float:vTraceDirection[3],Float:vTraceEnd[3],Float:vEntAngles[3]; 
   pev(id, pev_origin, vOrigin); 
   velocity_by_aim(id, 128, vTraceDirection); 
   xs_vec_add(vTraceDirection, vOrigin, vTraceEnd); 
   engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0); 

   new Float:fFraction; 
   get_tr2(0, TR_flFraction, fFraction); 

   if(fFraction < 1.0) 
   {
      get_tr2(0, TR_vecEndPos, vTraceEnd); 
      get_tr2(0, TR_vecPlaneNormal, vNormal); 
   } 

   xs_vec_mul_scalar(vNormal, 8.0, vNormal); 
   xs_vec_add(vTraceEnd, vNormal, vNewOrigin); 

   engfunc(EngFunc_SetSize, i_Ent, Float:{ -4.0, -4.0, -4.0 }, Float:{ 4.0, 4.0, 4.0 }); 
   engfunc(EngFunc_SetOrigin, i_Ent, vNewOrigin); 

   vector_to_angle(vNormal,vEntAngles); 
   set_pev(i_Ent,pev_angles,vEntAngles); 
        
   xs_vec_mul_scalar(vNormal, 8192.0, vNormal);

   new Float:vBeamEnd[3], Float:vTracedBeamEnd[3];
   engfunc(EngFunc_TraceLine, vNewOrigin, vBeamEnd, IGNORE_MONSTERS, -1, 0); 

   xs_vec_add(vNewOrigin, vNormal, vBeamEnd);

   get_tr2(0, TR_vecPlaneNormal, vNormal); 
   get_tr2(0, TR_vecEndPos, vTracedBeamEnd); 
  
   set_pev(i_Ent, LASERMINE_OWNER, id); 
   set_pev(i_Ent,LASERMINE_BEAMENDPOINT,vTracedBeamEnd); 
   set_pev(i_Ent,LASERMINE_TEAM,int:cs_get_user_team(id)); 
   new Float:fCurrTime = get_gametime(); 

   set_pev(i_Ent,LASERMINE_POWERUP, fCurrTime + 2.5); 
   set_pev(i_Ent,LASERMINE_STEP,POWERUP_THINK); 
   set_pev(i_Ent,pev_nextthink, fCurrTime + 0.2); 

   PlaySound(i_Ent,POWERUP_SOUND); 
   g_deployed[id]++; 
   g_havemine[id]--; 
   DeleteTask(id); 
   ShowAmmo(id); 
   return 1; 
} 

stock TeamDeployedCount(id) 
{ 
   static i; 
   static CsTeams:t;t = cs_get_user_team(id); 
   static cnt;cnt=0; 

   for(i = 1;i <= g_MaxPL;i++) 
   { 
      if(is_user_connected(i)) 
         if(t == cs_get_user_team(i)) 
            cnt += g_deployed; 
   } 

   return cnt; 
} 

bool:CheckCanTeam(id) 
{ 
   new arg[5],CsTeam:num; 
   get_pcvar_string(g_LCBT,arg,3); 
   if(equali(arg,"Z")) 
   { 
      num = CsTeam:CS_TEAM_T; 
   } 
   else if(equali(arg,"H")) 
   { 
      num = CsTeam:CS_TEAM_CT; 
   } 
   else if(equali(arg,"ALL") || equali(arg,"HZ") || equali(arg,"ZH")) 
   { 
      num = CsTeam:CS_TEAM_UNASSIGNED; 
   } 
   else 
   { 
      num = CsTeam:CS_TEAM_UNASSIGNED; 
   } 
   if(num != CsTeam:CS_TEAM_UNASSIGNED && num != CsTeam:cs_get_user_team(id)) 
      return false; 
   return true; 
} 

bool:CanCheck(id,mode)  
{ 
   if(!get_pcvar_num(g_LENABLE)) 
   { 
      client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOTACTIVE") 

      return false; 
   } 
   if(get_pcvar_num(g_LACCESS) != 0) 
      if(!(get_user_flags(id) & ADMIN_IMMUNITY)) 
      { 
         client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOACCESS") 
         return false; 
      } 
   if(!pev_user_alive(id)) return false; 
   if(!CheckCanTeam(id)) 
   { 
      client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_CBT") 
      return false; 
   } 
   if(mode == 0) 
   { 
      if(g_havemine[id] <= 0) 
      { 
         client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_DONTHAVEMINE") 
         return false; 
      } 
   } 
   if(mode == 1) 
   { 
      if(get_pcvar_num(g_LBUYMODE) == 0) 
      { 
         client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_CANTBUY") 
         return false; 
      } 
      if(g_havemine[id] >= get_pcvar_num(g_LAMMO)) 
      { 
         client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_HAVEMAX") 
         return false; 
      } 
      if(cs_get_user_money(id) < get_pcvar_num(g_LCOST)) 
      { 
         client_print(id, print_chat, "%L %L%d %L", id, "CHATTAG",id, "STR_NOMONEY",get_pcvar_num(g_LCOST),id, "STR_NEEDED") 
         return false; 
      } 
   } 
   if(!CheckTime(id)) 
   { 
      client_print(id, print_chat, "%L %L %d %L", id, "CHATTAG",id, "STR_DELAY",get_pcvar_num(g_LDELAY)-g_nowtime,id, "STR_SECONDS") 
      return false; 
   } 

   return true; 
} 

bool:ReturnCheck(id) 
{ 
   if(!CanCheck(id,-1)) return false; 
   if(g_havemine[id] + 1 > get_pcvar_num(g_LAMMO)) return false; 
   new tgt,body,Float:vo[3],Float:to[3]; 
   get_user_aiming(id,tgt,body); 
   if(!pev_valid(tgt)) return false; 
   pev(id,pev_origin,vo); 
   pev(tgt,pev_origin,to); 
   if(get_distance_f(vo,to) > 70.0) return false; 
   new EntityName[32]; 
   pev(tgt, pev_classname, EntityName, 31); 
   if(!equal(EntityName, ENT_CLASS_NAME)) return false; 
   if(pev(tgt,LASERMINE_OWNER) != id) return false; 
   return true; 
} 

bool:CreateCheck(id) 
{ 
   if(!CanCheck(id,0)) return false; 
  
   if(!game_started() && get_pcvar_num(g_NOROUND)) 
   { 
      client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOROUND") 
      return false; 
  } 

   if(g_deployed[id] >= get_pcvar_num(g_LAMMO)) 
   { 
      client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_MAXDEPLOY") 
      return false; 
   } 

   if(TeamDeployedCount(id) >= get_pcvar_num(g_LTMAX)) 
   { 
      client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_MANYPPL") 
      return false; 
   } 
   new Float:vTraceDirection[3], Float:vTraceEnd[3],Float:vOrigin[3]; 
   pev(id, pev_origin, vOrigin); 
   velocity_by_aim(id, 128, vTraceDirection); 
   xs_vec_add(vTraceDirection, vOrigin, vTraceEnd); 
   engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0); 
   new Float:fFraction,Float:vTraceNormal[3]; 
   get_tr2(0, TR_flFraction, fFraction); 
  
   if(fFraction < 1.0) 
   { 
      
      get_tr2(0, TR_vecEndPos, vTraceEnd); 
      get_tr2(0, TR_vecPlaneNormal, vTraceNormal); 

      return true; 
   } 

   client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_PLANTWALL") 
   DeleteTask(id); 
  
   return false; 
} 

public ltm_Think(i_Ent) 
{ 
   if(!pev_valid(i_Ent)||!get_pcvar_num(g_LENABLE))	return FMRES_IGNORED;

   new EntityName[32]; 
   pev(i_Ent, pev_classname, EntityName, 31);
  
   if(!equal(EntityName, ENT_CLASS_NAME))	return FMRES_IGNORED; 

   static Float:fCurrTime; 
   fCurrTime = get_gametime(); 

   switch(pev(i_Ent, LASERMINE_STEP)) 
   { 
      case POWERUP_THINK : 
      { 
         new Float:fPowerupTime; 
         pev(i_Ent, LASERMINE_POWERUP, fPowerupTime); 

         if(fCurrTime > fPowerupTime) 
         { 
            set_pev(i_Ent, pev_solid, SOLID_BBOX); 
            set_pev(i_Ent, LASERMINE_STEP, BEAMBREAK_THINK); 

            PlaySound(i_Ent, ACTIVATE_SOUND); 
         } 
         if(get_pcvar_num(g_LGLOW)!=0) 
         { 
            if(get_pcvar_num(g_LCLMODE)==0) 
            { 
               switch (pev(i_Ent,LASERMINE_TEAM)) 
               { 
                  case CS_TEAM_T: set_rendering(i_Ent,kRenderFxGlowShell,Red_Zomb,Green_Zomb,Blue_Zomb,kRenderNormal,5); 
                  
                  case CS_TEAM_CT:	set_rendering(i_Ent,kRenderFxGlowShell,Red_Hum,Green_Hum,Blue_Hum,kRenderNormal,5); 
               } 
            }
			else	set_rendering(i_Ent,kRenderFxGlowShell,random_num(50 , 200),random_num(50 , 200),random_num(50 , 200),kRenderNormal,5); 
         } 
         set_pev(i_Ent, pev_nextthink, fCurrTime + 0.1); 
      }

      case BEAMBREAK_THINK : 
      { 
         static Float:vEnd[3],Float:vOrigin[3]; 
         pev(i_Ent, pev_origin, vOrigin); 
         pev(i_Ent, LASERMINE_BEAMENDPOINT, vEnd); 

         static iHit, Float:fFraction; 
         engfunc(EngFunc_TraceLine, vOrigin, vEnd, DONT_IGNORE_MONSTERS, i_Ent, 0); 

         get_tr2(0, TR_flFraction, fFraction); 
         iHit = get_tr2(0, TR_pHit); 

         if(fFraction < 1.0) 
         {
            if(pev_valid(iHit)) 
            { 
               pev(iHit, pev_classname, EntityName, 31); 
              
               if(!equal(EntityName, ENT_CLASS_NAME) && !equal(EntityName, gSnarkClassName) && !equal(EntityName, barnacle_class) && !equal(EntityName, weapon_box)) 
               { 
                  set_pev(i_Ent, pev_enemy, iHit); 

                  if(get_pcvar_num(g_LMODE) == MODE_LASERMINE)	CreateLaserDamage(i_Ent,iHit); 
                  else	if(get_pcvar_num(g_LFF) || CsTeams:pev(i_Ent,LASERMINE_TEAM) != cs_get_user_team(iHit))	set_pev(i_Ent, LASERMINE_STEP, EXPLOSE_THINK);

                  set_pev(i_Ent, pev_nextthink, fCurrTime + random_float(0.1, 0.3)); 
               } 
            } 
         } 
         if(get_pcvar_num(g_LDMGMODE)!=0)	if(pev(i_Ent,LASERMINE_HITING) != iHit)	set_pev(i_Ent,LASERMINE_HITING,iHit); 
  
        
         if(pev_valid(i_Ent)) 
         { 
            static Float:fHealth; 
            pev(i_Ent, pev_health, fHealth); 

            if(fHealth <= 0.0 || (pev(i_Ent,pev_flags) & FL_KILLME)) 
            { 
            set_pev(i_Ent, LASERMINE_STEP, EXPLOSE_THINK); 
            set_pev(i_Ent, pev_nextthink, fCurrTime + random_float(0.1, 0.3)); 
            } 
                                
            static Float:fBeamthink; 
            pev(i_Ent, LASERMINE_BEAMTHINK, fBeamthink); 
                    
            if(fBeamthink < fCurrTime && get_pcvar_num(g_LVISIBLE)) 
            { 
               DrawLaser(i_Ent, vOrigin, vEnd); 
               set_pev(i_Ent, LASERMINE_BEAMTHINK, fCurrTime + 0.1); 
            } 
            set_pev(i_Ent, pev_nextthink, fCurrTime + 0.01); 
         } 
      }

      case EXPLOSE_THINK: 
      { 
         set_pev(i_Ent, pev_nextthink, 0.0); 
         PlaySound(i_Ent, STOP_SOUND); 
         g_deployed[pev(i_Ent,LASERMINE_OWNER)]--; 
         CreateExplosion(i_Ent); 
         CreateDamage(i_Ent,get_pcvar_float(g_LRDMG),get_pcvar_float(g_LRADIUS)) 
         RemoveEntity   (i_Ent); 
      } 
   } 

   return FMRES_IGNORED; 
} 

PlaySound(i_Ent, i_SoundType) 
{ 
   switch (i_SoundType) 
   { 
      case POWERUP_SOUND : 
      { 
         emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND1, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); 
         emit_sound(i_Ent, CHAN_BODY , ENT_SOUND2, 0.2, ATTN_NORM, 0, PITCH_NORM); 
      } 
      case ACTIVATE_SOUND : 
      { 
         emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND3, 0.5, ATTN_NORM, 1, 75); 
      } 
      case STOP_SOUND : 
      { 
         emit_sound(i_Ent, CHAN_BODY , ENT_SOUND2, 0.2, ATTN_NORM, SND_STOP, PITCH_NORM); 
         emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND3, 0.5, ATTN_NORM, SND_STOP, 75); 
      } 
   } 
} 

DrawLaser(i_Ent, const Float:v_Origin[3], const Float:v_EndOrigin[3]) 
{
   new tcolor[3]; 
   new teamid = pev(i_Ent, LASERMINE_TEAM); 
   if(get_pcvar_num(g_LCLMODE) == 0) 
   { 
      switch(teamid){ 
         case 1:{ 
            
            tcolor[0] = Red_Zomb; 
            tcolor[1] = Green_Zomb; 
            tcolor[2] = Blue_Zomb; 
         } 
         case 2:{ 
            
            tcolor[0] = Red_Hum; 
            tcolor[1] = Green_Hum; 
            tcolor[2] = Blue_Hum; 
         } 
      } 
   }else 
   { 
      
      tcolor[0] = random_num(50 , 200); 
      tcolor[1] = random_num(50 , 200); 
      tcolor[2] = random_num(50 , 200); 
   } 
   message_begin(MSG_BROADCAST,SVC_TEMPENTITY); 
   write_byte(TE_BEAMPOINTS); 
   engfunc(EngFunc_WriteCoord,v_Origin[0]); 
   engfunc(EngFunc_WriteCoord,v_Origin[1]); 
   engfunc(EngFunc_WriteCoord,v_Origin[2]); 
   engfunc(EngFunc_WriteCoord,v_EndOrigin[0]); 
   engfunc(EngFunc_WriteCoord,v_EndOrigin[1]); 
   engfunc(EngFunc_WriteCoord,v_EndOrigin[2]); 
   write_short(beam); 
   write_byte(0); 
   write_byte(0); 
   write_byte(1);  
   write_byte(5);  
   write_byte(0);  
   write_byte(tcolor[0]); 
   write_byte(tcolor[1]); 
   write_byte(tcolor[2]); 
   write_byte(get_pcvar_num(g_LCBRIGHT)); 
   write_byte(255); 
   message_end(); 
   
   	// Get user origin
	static Float:originF[3]
	pev(ID_BLOOD, pev_origin, originF)
   
   	// Sparks
	if(get_pcvar_num(g_LDETAIL)) {
	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, v_EndOrigin, 0)
	write_byte(TE_SPARKS) // TE id
	engfunc(EngFunc_WriteCoord, v_EndOrigin[0]) // x
	engfunc(EngFunc_WriteCoord, v_EndOrigin[1]) // y
	engfunc(EngFunc_WriteCoord, v_EndOrigin[2]) // z
	message_end();
      
   	// Effects when cut
		message_begin(MSG_BROADCAST ,SVC_TEMPENTITY)
		write_byte(TE_EXPLOSION)
		engfunc(EngFunc_WriteCoord, v_EndOrigin[0])
		engfunc(EngFunc_WriteCoord, v_EndOrigin[1])
		engfunc(EngFunc_WriteCoord, v_EndOrigin[2]-10.0)
		write_short(TE_SPARKS)	// sprite index
		write_byte(1)	// scale in 0.1's
		write_byte(30)	// framerate
		write_byte(TE_EXPLFLAG_NODLIGHTS | TE_EXPLFLAG_NOPARTICLES | TE_EXPLFLAG_NOSOUND)	// flags
		message_end()
	}
} 

CreateDamage(iCurrent,Float:DmgMAX,Float:Radius) 
{ 
   new Float:vecSrc[3]; 
   pev(iCurrent, pev_origin, vecSrc); 

   new AtkID=pev(iCurrent,LASERMINE_OWNER); 
   new TeamID=pev(iCurrent,LASERMINE_TEAM); 

   new ent = -1; 
   new Float:tmpdmg = DmgMAX; 

   new Float:kickback = 0.0; 
  
   new Float:Tabsmin[3], Float:Tabsmax[3]; 
   new Float:vecSpot[3]; 
   new Float:Aabsmin[3], Float:Aabsmax[3]; 
   new Float:vecSee[3]; 
   new trRes; 
   new Float:flFraction; 
   new Float:vecEndPos[3]; 
   new Float:distance; 
   new Float:origin[3], Float:vecPush[3]; 
   new Float:invlen; 
   new Float:velocity[3]; 
   new iHitHP,iHitTeam; 
  
   new Float:falloff; 
   if(Radius > 0.0)	falloff = DmgMAX / Radius; 
   else falloff = 1.0;
  
   while((ent = engfunc(EngFunc_FindEntityInSphere, ent, vecSrc, Radius)) != 0) 
   { 
      if(!pev_valid(ent)||!(pev(ent, pev_flags) & (FL_CLIENT | FL_FAKECLIENT | FL_MONSTER))) continue; 

      if(!pev_user_alive(ent)) continue; 
      
      kickback = 1.0; 
      tmpdmg = DmgMAX; 
      
      pev(ent, pev_absmin, Tabsmin); 
      pev(ent, pev_absmax, Tabsmax); 
      xs_vec_add(Tabsmin,Tabsmax,Tabsmin); 
      xs_vec_mul_scalar(Tabsmin,0.5,vecSpot); 
      pev(iCurrent, pev_absmin, Aabsmin); 
      pev(iCurrent, pev_absmax, Aabsmax); 
      xs_vec_add(Aabsmin,Aabsmax,Aabsmin); 
      xs_vec_mul_scalar(Aabsmin,0.5,vecSee); 
      engfunc(EngFunc_TraceLine, vecSee, vecSpot, 0, iCurrent, trRes); 
      get_tr2(trRes, TR_flFraction, flFraction); 
      
      if(flFraction >= 0.9 || get_tr2(trRes, TR_pHit) == ent) 
      { 
         get_tr2(trRes, TR_vecEndPos, vecEndPos); 
         distance = get_distance_f(vecSrc, vecEndPos) * falloff; 
         tmpdmg -= distance; 
         if(tmpdmg < 0.0) 
            tmpdmg = 0.0; 
        
         if(kickback != 0.0) 
         { 
            xs_vec_sub(vecSpot,vecSee,origin); 
            invlen = 1.0/get_distance_f(vecSpot, vecSee); 

            xs_vec_mul_scalar(origin,invlen,vecPush); 
            pev(ent, pev_velocity, velocity) 
            xs_vec_mul_scalar(vecPush,tmpdmg,vecPush); 
            xs_vec_mul_scalar(vecPush,kickback,vecPush); 
            xs_vec_add(velocity,vecPush,velocity); 
            if(tmpdmg < 60.0) 
            { 
               xs_vec_mul_scalar(velocity,12.0,velocity); 
            } else { 
               xs_vec_mul_scalar(velocity,4.0,velocity); 
            } 
            if(velocity[0] != 0.0 || velocity[1] != 0.0 || velocity[2] != 0.0) 
            { 
              
               set_pev(ent, pev_velocity, velocity) 
            } 
         } 

         iHitHP = pev_user_health(ent) - floatround(tmpdmg) 
         iHitTeam = int:cs_get_user_team(ent) 
         if(iHitHP <= 0) 
         { 
            if(iHitTeam != TeamID) 
            { 
               cs_set_user_money(AtkID,cs_get_user_money(AtkID) + get_pcvar_num(g_LFMONEY)) 
               set_score(AtkID,ent,1,iHitHP) 
            }else 
            { 
               if(get_pcvar_num(g_LFF)) 
               { 
                  cs_set_user_money(AtkID,cs_get_user_money(AtkID) - get_pcvar_num(g_LFMONEY)) 
                  set_score(AtkID,ent,-1,iHitHP) 
               } 
            } 
         }else 
         { 
            if(iHitTeam != TeamID || get_pcvar_num(g_LFF)) 
            { 
              
               set_user_health(ent, iHitHP) 
               engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},ent); 
               write_byte(floatround(tmpdmg)) 
               write_byte(floatround(tmpdmg)) 
               write_long(DMG_BULLET) 
               engfunc(EngFunc_WriteCoord,vecSrc[0]) 
               engfunc(EngFunc_WriteCoord,vecSrc[1]) 
               engfunc(EngFunc_WriteCoord,vecSrc[2]) 
               message_end() 
            } 
         } 
      } 
   } 
   return 
} 

bool:pev_user_alive(ent) 
{ 
   new deadflag = pev(ent,pev_deadflag); 
   if(deadflag != DEAD_NO) 
      return false; 
   return true; 
} 

CreateExplosion(iCurrent) 
{ 
   new Float:vOrigin[3]; 
   pev(iCurrent,pev_origin,vOrigin); 

   message_begin(MSG_BROADCAST, SVC_TEMPENTITY); 
   write_byte(99); 
   write_short(iCurrent); 
   message_end(); 

   engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vOrigin, 0); 
   write_byte(TE_EXPLOSION); 
   engfunc(EngFunc_WriteCoord,vOrigin[0]); 
   engfunc(EngFunc_WriteCoord,vOrigin[1]); 
   engfunc(EngFunc_WriteCoord,vOrigin[2]); 
   write_short(boom); 
   write_byte(30); 
   write_byte(15); 
   write_byte(0); 
   message_end(); 
} 

CreateLaserDamage(iCurrent,isHit) 
{ 
   if(isHit < 0) return PLUGIN_CONTINUE

   switch(get_pcvar_num(g_LDMGMODE)) 
   { 
      case 1: 
      { 
         if(pev(iCurrent,LASERMINE_HITING) == isHit)	return PLUGIN_CONTINUE 
      } 
      case 2: 
      { 
         if(pev(iCurrent,LASERMINE_HITING) == isHit) 
         { 
            static Float:cnt 
            static now,htime;now = floatround(get_gametime()) 

            pev(iCurrent,LASERMINE_COUNT,cnt) 
            htime = floatround(cnt) 
            if(now - htime < get_pcvar_num(g_LDSEC)) 
            { 
               return PLUGIN_CONTINUE; 
            }else{ 
               set_pev(iCurrent,LASERMINE_COUNT,get_gametime()) 
            } 
         }else 
         { 
            set_pev(iCurrent,LASERMINE_COUNT,get_gametime()) 
         } 
      } 
   } 

   new Float:vOrigin[3],Float:vEnd[3] 
   pev(iCurrent,pev_origin,vOrigin) 
   pev(iCurrent,pev_vuser1,vEnd) 

   new teamid = pev(iCurrent, LASERMINE_TEAM)

   new szClassName[32] 
   new Alive,God 
   new iHitTeam,iHitHP,id 
   new hitscore 

   szClassName[0] = '^0' 
   pev(isHit,pev_classname,szClassName,32) 
   if((pev(isHit, pev_flags) & (FL_CLIENT | FL_FAKECLIENT | FL_MONSTER))) 
   { 
      Alive = pev_user_alive(isHit)
      God = get_user_godmode(isHit)
      iHitTeam = int:cs_get_user_team(isHit)
      iHitHP = pev_user_health(isHit) - get_pcvar_num(g_LDMG)
      id = pev(iCurrent,LASERMINE_OWNER)
      if(!Alive || God||id==id||cs_get_user_team(id)==cs_get_user_team(isHit)) return PLUGIN_CONTINUE 

      if(iHitHP <= 0) 
      { 
         if(iHitTeam != teamid) 
         { 
            emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM) 
            hitscore = 1 
            cs_set_user_money(id,cs_get_user_money(id) + get_pcvar_num(g_LFMONEY)) 
            set_score(id,isHit,hitscore,iHitHP) 
         } 
         else 
         { 
            if(get_pcvar_num(g_LFF)) 
            { 
               emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM) 
               hitscore = -1 
               cs_set_user_money(id,cs_get_user_money(id) - get_pcvar_num(g_LFMONEY)) 
               set_score(id,isHit,hitscore,iHitHP) 
            } 
         } 
      } 
      else if(iHitTeam != teamid || get_pcvar_num(g_LFF)) 
      { 
         emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM) 
         set_user_health(isHit,iHitHP) 
         set_pev(iCurrent,LASERMINE_HITING,isHit); 
         engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},isHit); 
         write_byte(get_pcvar_num(g_LDMG)) 
         write_byte(get_pcvar_num(g_LDMG)) 
         write_long(DMG_BULLET) 
         engfunc(EngFunc_WriteCoord,vOrigin[0]) 
         engfunc(EngFunc_WriteCoord,vOrigin[1]) 
         engfunc(EngFunc_WriteCoord,vOrigin[2]) 
         message_end() 
      } 
   } 
   else if(equal(szClassName, ENT_CLASS_NAME3)) 
   { 
      new hl; 
      hl = pev_user_health(isHit); 
      set_user_health(isHit,hl-get_pcvar_num(g_LDMG)); 
   } 
   return PLUGIN_CONTINUE 
} 

stock pev_user_health(id)
{ 
   new Float:health 
   pev(id,pev_health,health) 
   return floatround(health) 
} 

stock set_user_health(id,health) 
{ 
   health > 0 ? set_pev(id, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, id); 
} 

stock get_user_godmode(index) { 
   new Float:val 
   pev(index, pev_takedamage, val) 

   return (val == DAMAGE_NO) 
} 

stock set_user_frags(index, frags) 
{ 
   set_pev(index, pev_frags, float(frags)) 

   return 1 
} 

stock pev_user_frags(index) 
{ 
   new Float:frags; 
   pev(index,pev_frags,frags); 
   return floatround(frags); 
} 

set_score(id,target,hitscore,HP) 
{ 
   new idfrags = pev_user_frags(id) + hitscore 
   set_user_frags(id,idfrags) 
   new tarfrags = pev_user_frags(target) + 1 
   set_user_frags(target,tarfrags) 
   new idteam = int:cs_get_user_team(id) 
   new iddeaths = cs_get_user_deaths(id) 


   message_begin(MSG_ALL, g_msgDeathMsg, {0, 0, 0} ,0) 
   write_byte(id) 
   write_byte(target) 
   write_byte(0) 
   write_string(ENT_CLASS_NAME) 
   message_end() 

   message_begin(MSG_ALL, g_msgScoreInfo) 
   write_byte(id) 
   write_short(idfrags) 
   write_short(iddeaths) 
   write_short(0) 
   write_short(idteam) 
   message_end() 

   set_msg_block(g_msgDeathMsg, BLOCK_ONCE) 

   set_user_health(target, HP) 
} 

public BuyLasermine(id) 
{ 
   if(!CanCheck(id,1)) return PLUGIN_CONTINUE 

   cs_set_user_money(id,cs_get_user_money(id) - get_pcvar_num(g_LCOST)) 
   g_havemine[id]++; 

   client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_BOUGHT") 

   emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) 
   ShowAmmo(id) 
   return PLUGIN_HANDLED 
} 

public zp_extra_item_selected(id, itemid) 
{ 
   if(itemid == g_LME) 
      { 
      cs_set_user_money(id, cs_get_user_money(id) + LMCost) 
      BuyLasermine(id) 
      } 
   return PLUGIN_CONTINUE 
} 

ShowAmmo(id) 
{ 
   new ammo[51] 
   new PlugStat[ 555 char ]; 
   formatex(PlugStat, charsmax(PlugStat), "%L", LANG_PLAYER, "STR_STATE") 
   formatex(ammo, 50, "%s %i/%i",PlugStat, g_havemine[id],get_pcvar_num(g_LAMMO)) 

   message_begin(MSG_ONE, g_msgStatusText, {0,0,0}, id) 
   write_byte(0) 
   write_string(ammo) 
   message_end() 
} 

public showInfo(id) 
{ 
   client_print(id, print_chat, "%L", id, "STR_REF") 
} 

public say_lasermine(id) 
{ 
   new said[32] 
   read_argv(1,said,31); 
   if(!get_pcvar_num(g_LENABLE)) 
   { 
      return PLUGIN_CONTINUE 
   } 
   if(equali(said,"/buy lasermine")||equali(said,"/lm")||equali(said,"buy_lasermine")) 
   { 
      BuyLasermine(id) 
   } 
   else if(equali(said, "lasermine") || equali(said, "/lasermine")) 
   { 
      const SIZE = 1024 
      new msg[SIZE+1],len = 0; 
      len += formatex(msg[len], SIZE - len, "<html><body>") 
      len += formatex(msg[len], SIZE - len, "<p><b>LaserMine</b></p><br/><br/>") 
      len += formatex(msg[len], SIZE - len, "<p>Poti planta lasere numai pe un perete.</p><br/>") 
      len += formatex(msg[len], SIZE - len, "<p>Cu laserele plantate puteti omora zombi.</p><br/><br/>") 
      len += formatex(msg[len], SIZE - len, "<p><b>Introduce aceste comenzi in consola :<br/>") 
      len += formatex(msg[len], SIZE - len, "<b>bind v +setlaser</p>") 
      len += formatex(msg[len], SIZE - len, "<b>bind c +dellaser</p>") 
      len += formatex(msg[len], SIZE - len, "</body></html>") 
      show_motd(id, msg, "Lasermine Entity help") 
      return PLUGIN_CONTINUE 
   } 
   else if(containi(said, "laser") != -1) 
   { 
      showInfo(id) 
      return PLUGIN_CONTINUE 
   } 
   return PLUGIN_CONTINUE 
} 

public standing(id) 
{ 
   if(!g_settinglaser[id]) 
      return PLUGIN_CONTINUE 

   set_pev(id, pev_maxspeed, 1.0) 

   return PLUGIN_CONTINUE 
} 

public ltm_PostThink(id) 
{ 
   if(!g_settinglaser[id] && plsetting[id]){ 
      resetspeed(id) 
   } 
   else if(g_settinglaser[id] && !plsetting[id]) { 
      pev(id, pev_maxspeed,plspeed[id]) 
      set_pev(id, pev_maxspeed, 1.0) 
   } 
   plsetting[id] = g_settinglaser[id] 
   return FMRES_IGNORED 
} 

public ltm_PreThink(id) 
{ 
   if(!pev_user_alive(id) || g_settinglaser[id] == true || is_user_bot(id) || get_pcvar_num(g_LCMDMODE) == 1) 
      return FMRES_IGNORED; 

   if(pev(id, pev_button) & IN_USE && !(pev(id, pev_oldbuttons) & IN_USE)) 
      CreateLaserMine_Progress(id) 
   return FMRES_IGNORED; 
} 

resetspeed(id) 
{ 
   set_pev(id, pev_maxspeed, plspeed[id]) 
} 

public client_putinserver(id) 
{ 
   g_deployed[id] = 0; 
   g_havemine[id] = 0; 
   DeleteTask(id); 
   //set_task( 1.0, "Task_CheckAiming", id + 3389, _, _, "b" ); 
   //set_task( 1.1, "checkIfspec",_,_,_,"b") 
} 

public client_disconnect(id){ 
   if(!get_pcvar_num(g_LENABLE)) 
      return PLUGIN_CONTINUE 
   DeleteTask(id);
   RemoveAllTripmines(id); 
   return PLUGIN_CONTINUE
} 

public newround(id) 
{ 
   if(!get_pcvar_num(g_LENABLE)) 
      return PLUGIN_CONTINUE 

	for(new id=0;id<get_maxplayers();id++)
{
   pev(id, pev_maxspeed,plspeed[id]) 
   DeleteTask(id); 
   RemoveAllTripmines(id); 

   delaycount(id); 
   SetStartAmmo(id);
}
   return PLUGIN_CONTINUE 
}
public endround(id) 
{ 
   if(!get_pcvar_num(g_LENABLE)) 
      return PLUGIN_CONTINUE 
	for(new id=0;id<get_maxplayers();id++)
{
   DeleteTask(id); 
   RemoveAllTripmines(id); 
}
   return PLUGIN_CONTINUE 
}

public DeathEvent(){ 
   if(!get_pcvar_num(g_LENABLE)) 
      return PLUGIN_CONTINUE 

   new id = read_data(2) 
   if(is_user_connected(id))
	{
	DeleteTask(id);
set_task( 0.1, "checkIfspec",_,_,_,"b")
}
   return PLUGIN_CONTINUE 
} 

public event_infect(victim, attacker) {
RemoveAllTripmines(victim);
if(g_deployed[victim])	g_havemine[victim]=get_pcvar_num(g_LSTAMMO)
}
public RemoveAllTripmines(i_Owner) 
{ 
   new iEnt = g_MaxPL + 1; 
   new clsname[32]; 
   while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", ENT_CLASS_NAME))) 
   { 
      if(i_Owner) 
      { 
         if(pev(iEnt, LASERMINE_OWNER) != i_Owner) 
            continue; 
         clsname[0] = '^0' 
         pev(iEnt, pev_classname, clsname, sizeof(clsname)-1); 
         if(equali(clsname, ENT_CLASS_NAME)) 
         { 
            PlaySound(iEnt, STOP_SOUND); 
            RemoveEntity(iEnt); 
         } 
      } 
      else 
         set_pev(iEnt, pev_flags, FL_KILLME); 
   } 
   g_deployed[i_Owner]=0; 
} 

SetStartAmmo(id) 
{ 
   new stammo = get_pcvar_num(g_LSTAMMO); 
   if(stammo <= 0) return PLUGIN_CONTINUE; 
   g_havemine[id] = (g_havemine[id] <= stammo) ? stammo : g_havemine[id]; 
   return PLUGIN_CONTINUE; 
} 

public CutDeploy_onDamage(id) 
{ 
   if(get_user_health(id) < 1) 
      DeleteTask(id); 
} 

DeleteTask(id) 
{ 
   if(task_exists((TASK_PLANT + id))) 
   { 
      remove_task((TASK_PLANT + id)) 
   } 
   if(task_exists((TASK_RELEASE + id))) 
   { 
      remove_task((TASK_RELEASE + id)) 
   } 
   g_settinglaser[id] = false 
   return PLUGIN_CONTINUE; 
} 

stock set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) 
{ 
   static Float:RenderColor[3]; 
   RenderColor[0] = float(r); 
   RenderColor[1] = float(g); 
   RenderColor[2] = float(b); 

   set_pev(entity, pev_renderfx, fx); 
   set_pev(entity, pev_rendercolor, RenderColor); 
   set_pev(entity, pev_rendermode, render); 
   set_pev(entity, pev_renderamt, float(amount)); 

   return 1 
} 

get_offset_value(id, type) 
{ 
   new key = -1; 
   switch(type) 
   { 
      case OFFSET_TEAM: key = OFFSET_TEAM; 
      case OFFSET_MONEY: 
      key = OFFSET_MONEY; 
      case OFFSET_DEATH: key = OFFSET_DEATH; 
   } 
   if(key != -1) 
   { 
      if(is_amd64_server()) key += 25; 
      return get_pdata_int(id, key); 
   } 
   return -1; 
} 

public Task_CheckAiming( iTaskIndex ) 
{ 
    static iClient; 
    iClient = iTaskIndex - 3389; 

    if( is_user_alive( iClient ) ) 
    { 
        static iEntity, iDummy, cClassname[ 32 ]; 
        get_user_aiming( iClient, iEntity, iDummy, 9999 ); 

        if( pev_valid( iEntity ) ) 
        { 
            pev( iEntity, pev_classname, cClassname, 31 ); 

            if( equal( cClassname, "lasermine" ) ) 
            { 
                new name[ 32 ]; 
                new aim = pev( iEntity, LASERMINE_OWNER ); 
                get_user_name( aim, name, charsmax( name ) - 1 ) 
                set_hudmessage( 50, 100, 150, -1.0, 0.60, 0, 6.0, 1.1, 0.0, 0.0, -1 ) 
                show_hudmessage( iClient, "Owner: %s^nHealth: %d/700", name, pev(iEntity,pev_health ))
            } 
        } 
    } 
} 

stock client_printcolor(const id, const input[], any:...) 
{ 
   new iCount = 1, iPlayers[32] 
   static szMsg[191] 

   vformat(szMsg, charsmax(szMsg), input, 3) 
   replace_all(szMsg, 190, "!g", "^4") 
   replace_all(szMsg, 190, "!y", "^1") 
   replace_all(szMsg, 190, "!t", "^3") 
   replace_all(szMsg, 190, "!w", "^0") 

   if(id) iPlayers[0] = id 
   else get_players(iPlayers, iCount, "ch") 

   for(new i = 0; i < iCount; i++) 
   { 
      if(is_user_connected(iPlayers)) 
      { 
         message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, iPlayers) 
         write_byte(iPlayers) 
         write_string(szMsg) 
         message_end() 
      } 
   } 
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
Aliacee
Membru, skill +1
Membru, skill +1
Posts: 108
Joined: 29 Nov 2015, 19:05
Detinator Steam: Da
CS Status: Citesc forumul eXtreamCS.com...!
Fond eXtream: 0
Contact:

07 Jan 2019, 18:47

Am testat pluginul, iar acestea sunt problemele:[/color]
Poza 1:[/color] https://i.imgur.com/B79ZBsX.jpg
Poza 2:[/color] https://i.imgur.com/aBxGIWq.jpg
Poza 3:[/color] https://i.imgur.com/AKDocNZ.jpg
Iar acesta sunt este:[/color] bh_ltm_cvars.cfg
| Afiseaza codul
//lasermine ON/OFF (1 / 0)
bh_ltm "1"

//lasermine access level (0 is all, 1 is admin only)
bh_ltm_acs "0"

//lasermine mode (0 is killing laser, 1 is tripmine)
bh_ltm_mode "0"

//max have ammo and max deploy count.
bh_ltm_ammo "4"

//laser hit damage.
bh_ltm_dmg "1000"

//buying lasermine cost.
bh_ltm_cost "2500"

//kill enemy +money
bh_ltm_fragmoney "300"

//lasermines health. over 1000 is very hard mine :)
bh_ltm_health "700"

//max team deploy count.
bh_ltm_teammax "100"

//lasermine explode radius. ( it's float value)
bh_ltm_radius "320.0"

//lasermine explode damage. ( on center )
bh_ltm_rdmg "200"

//lasermine friendly fire.
bh_ltm_ff "0"

//lasermine can buying and deploying team.( ALL, T, CT )
bh_ltm_cbt "ALL"

//can say cmd buying. 0 is off , 1 is on. (/buy lasermine or /lm)
bh_ltm_buymode "1"

//lasermine round start deploying delay.
bh_ltm_delay "15"

//lasermine visible mode of laserline (0 is invisible, 1 is visible)
bh_ltm_line "1"

//glowing lasermine. (color is laser line color 0 is off, 1 is on )
bh_ltm_glow "1"

//laser line brightness.
bh_ltm_bright "255"

//laser line color mode. ( 0 is team color, 1 is green )
bh_ltm_color "0"

//laser hit damage mode. (0 is frame dmg, 1 is once dmg, 2 is seconds dmg)
bh_ltm_ldmgmode "0"

//seconds dmg. (dmg mode 2 only, damage / seconds default 1 sec)
bh_ltm_ldmgseconds "1"

//round start have ammo.
bh_ltm_startammo "2"

//command mode. (0 is +USE key, 1 is bind, 2 is each)
bh_ltm_cmdmode "1"

//lasermine effect. (0 is disable / 1 enable)
bh_ltm_realistic_detail "1"

// Binds
bind v +setlaser
bind c +dellaser

//Lasermine Configuration File
echo Executing Biohazard Lasermine Configuration File
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

07 Jan 2019, 19:36

tu ești fată?
problemele trecute,mai sunt?
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
Post Reply

Return to “Cereri”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 33 guests