Raised This Month: $ Target: $400
 0% 

Solved Lasermine Owner HUD Info


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
PowereXe
Member
Join Date: Jan 2017
Location: Turkey, Istanbul
Old 05-26-2017 , 20:52   Lasermine Owner HUD Info
Reply With Quote #1

My Friend Coded This Plugin. But That's Not Working Properly. Showing First Lasermine Owner Or First Server Connecter. I Create Lasermine, I Look At The Lasermine In Crosshair. But Always Showing Same Name Up To Change The Map. It's Not About Lasermine Plugins. The Problem Is In Hud Info Plugin. Just In Case I Added My Lasermine Plugin.




mRYanna*'s Laser Owner HUD Info Plugin:


PHP Code:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "Lazer Bilgi"
#define VERSION "1.0"
#define AUTHOR "mR.Yanna*"

new hudhandler;

public 
plugin_init() {
 
register_plugin(PLUGINVERSIONAUTHOR)
 
register_forwardFM_TraceLine "fw_TraceLine" );
 
hudhandler CreateHudSyncObj()
}

public 
fw_TraceLineFloat:fStart[3] , Float:fEnd[3] , Conditions id iTrace )
{
    static 
iHit szClass33 ] , szOwnerszHealthszMessage80 ], nick[32];
 
    if( 
pev_valid( ( iHit get_tr2iTrace TR_pHit ) ) ) )
    {
         
peviHit pev_classname szClass charsmaxszClass ) );
 if(
equali(szClass,"lasermine")){
 
peviHit pev_iuser2 szOwner);
 
peviHit pev_healthszHealth )
 
get_user_name(szOwner,nick,31);
 
formatexszMessage79"Lazer Sahibi: %s -- Can: %i"nickszHealth);
 
//formatex( szMessage, 79, "Lazer Sahibi: %s", nick);
 
set_hudmessage(01022040.50.500.01.0)
 
 
ShowSyncHudMsg(idhudhandlerszMessage)
}
    
    }


And My Lasermine Plugin (Works Very Well):
PHP Code:
/* Plugin generated by AMXX-Studio */ 
//#define BIOHAZARD_SUPPORT 
//#define UL_MONEY_SUPPORT 


#include <amxmodx> 
#include <cstrike>
#include <fakemeta> 
#include <xs> 
#include <hamsandwich>

#if defined _colorchat_included
  #endinput
#endif
#define _colorchat_included

enum Color
{
    
NORMAL 1// clients scr_concolor cvar color
    
GREEN// Green Color
    
TEAM_COLOR// Red, grey, blue
    
GREY// grey
    
RED// Red
    
BLUE// Blue
}

new 
TeamName[][] = 
{
    
"",
    
"TERRORIST",
    
"CT",
    
"SPECTATOR"
}

ColorChat(idColor:type, const msg[], {Float,Sql,Result,_}:...)
{
    if( !
get_playersnum() ) return;
    
    new 
message[256];

    switch(
type)
    {
        case 
NORMAL// clients scr_concolor cvar color
        
{
            
message[0] = 0x01;
        }
        case 
GREEN// Green
        
{
            
message[0] = 0x04;
        }
        default: 
// White, Red, Blue
        
{
            
message[0] = 0x03;
        }
    }

    
vformat(message[1], 251msg4);

    
// Make sure message is not longer than 192 character. Will crash the server.
    
message[192] = '^0';

    new 
teamColorChangeindexMSG_Type;
    
    if(
id)
    {
        
MSG_Type MSG_ONE;
        
index id;
    } else {
        
index FindPlayer();
        
MSG_Type MSG_ALL;
    }
    
    
team get_user_team(index);
    
ColorChange ColorSelection(indexMSG_Typetype);

    
ShowColorMessage(indexMSG_Typemessage);
        
    if(
ColorChange)
    {
        
Team_Info(indexMSG_TypeTeamName[team]);
    }
}

ShowColorMessage(idtypemessage[])
{
    static 
bool:saytext_used;
    static 
get_user_msgid_saytext;
    if(!
saytext_used)
    {
        
get_user_msgid_saytext get_user_msgid("SayText");
        
saytext_used true;
    }
    
message_begin(typeget_user_msgid_saytext_id);
    
write_byte(id)        
    
write_string(message);
    
message_end();    
}

Team_Info(idtypeteam[])
{
    static 
bool:teaminfo_used;
    static 
get_user_msgid_teaminfo;
    if(!
teaminfo_used)
    {
        
get_user_msgid_teaminfo get_user_msgid("TeamInfo");
        
teaminfo_used true;
    }
    
message_begin(typeget_user_msgid_teaminfo_id);
    
write_byte(id);
    
write_string(team);
    
message_end();

    return 
1;
}

ColorSelection(indextypeColor:Type)
{
    switch(
Type)
    {
        case 
RED:
        {
            return 
Team_Info(indextypeTeamName[1]);
        }
        case 
BLUE:
        {
            return 
Team_Info(indextypeTeamName[2]);
        }
        case 
GREY:
        {
            return 
Team_Info(indextypeTeamName[0]);
        }
    }

    return 
0;
}

FindPlayer()
{
    new 
= -1;

    while(
<= get_maxplayers())
    {
        if(
is_user_connected(++i))
            return 
i;
    }

    return -
1;
}

#if defined BIOHAZARD_SUPPORT 
    #include <biohazard> 
#endif 

#if defined UL_MONEY_SUPPORT 
    #include <money_ul> 
#endif 


#if AMXX_VERSION_NUM < 180 
    #assert AMX Mod X v1.8.0 or greater library required! 
#endif 

#if defined BIOHAZARD_SUPPORT 
    #define PLUGIN "LTM for BIOHAZARD" 
#else 
    #define PLUGIN "Laser/Tripmine Entity" 
#endif 
#define AUTHOR "SandStriker, Crunch98" //Remaked by Crunch98 for Csyardim.Com

#define RemoveEntity(%1)    engfunc(EngFunc_RemoveEntity,%1) 
//#define ACCESSLEVEL        ADMIN_LEVEL_H 
#define TASK_PLANT        15100 
#define TASK_RESET        15500 
#define TASK_RELEASE        15900 
#define VERSION "2.8.3" 

#define LASERMINE_TEAM        pev_iuser1//EV_INT_iuser1 
#define LASERMINE_OWNER        pev_iuser2 //EV_INT_iuser3 
#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) 
#define cs_get_user_money(%1)        get_offset_value(%1,OFFSET_MONEY) 
#define cs_set_user_money(%1,%2)    set_offset_value(%1,OFFSET_MONEY,%2) 



/*enum CsTeams { 
    CS_TEAM_UNASSIGNED = 0, 
    CS_TEAM_T = 1, 
    CS_TEAM_CT = 2, 
    CS_TEAM_SPECTATOR = 3 
};
*/

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/LaserMines/v_laser_mine.mdl"
    
ENT_SOUND1[]    = "weapons/mine_deploy.wav"
    
ENT_SOUND2[]    = "weapons/mine_charge.wav"
    
ENT_SOUND3[]    = "weapons/mine_activate.wav"
    
ENT_SOUND4[]    = "weapons/electro5.wav"
    
ENT_SOUND5[]    = "items/gunpickup2.wav"
    
ENT_SOUND6[]    = "debris/bustglass1.wav"
    
ENT_SOUND7[]    = "debris/bustglass2.wav",
    
ENT_SPRITE1[]     = "sprites/laserbeam.spr"
    
ENT_SPRITE2[]     = "sprites/zerogxplode.spr"

new const 
    
ENT_CLASS_NAME[]    = "lasermine"
    
//ENT_CLASS_NAME2[]    = "info_target", 
    
ENT_CLASS_NAME3[]    = "func_breakable"

new const 
#if defined BIOHAZARD_SUPPORT 
    
CHATTAG[]         = "[CSYardim]"
#else 
    
CHATTAG[]         = "[CSYardim]"
#endif 
    //STR_MINEDETNATED[]     = "Your mine has detonated.", 
    //STR_MINEDETNATED2[]    = "detonated your mine.", 
    
STR_NOTACTIVE[]     = "Lazerler Aktif Degil."
    
STR_DONTHAVEMINE[]    = "Hic Lazerin Kalmadi."
    
//STR_CANTDEPLOY[]    = "Your team can't deploying lasermine!", 
    
STR_MAXDEPLOY[]        = "Maximum mines have been deployed."
    
STR_MANYPPL[]        = "Too many ppl on your team..."
    
STR_PLANTWALL[]        = "Lazeri Sadece Duvara Kurabilirsin!"
    
STR_REF[]        = "Refer to a lasermine rule with this server. say 'lasermine'"
#if defined BIOHAZARD_SUPPORT     
    
STR_CBT[]        = "Your Zombie! Can't buy and deploying lasermine!"
#else 
    
STR_CBT[]        = "Your Team Can't buy and deploying lasermine!"
#endif 
    
STR_CANTBUY[]        = "Satin Alma Kapali."
    
STR_HAVEMAX[]        = "You have a maximum lasermine."
    
STR_NOMONEY[]        = "You don't have enough money to buy a lasermine! ($"
    
STR_NEEDED[]        = "needed)"
    
STR_DELAY[]        = "Lazer Kurabilmek Icin"
    
STR_SECONDS[]        = "Saniye Beklemelisin."
    
STR_BOUGHT[]        = "You have successfully bought a lasermine."
    
STR_STATE[]        = "Lazer Cephanesi:"
    
STR_NOACCESS[]        = "Bu Komuta Erisim Yetkiniz Yok."

new 
g_EntMine 
new beamboom 
new g_msgid_bartime 
new  
    
g_LENABLE,g_LFMONEY,g_LAMMO,g_LDMG
    
g_LTMAX,g_LCOST,g_LHEALTH,g_LMODE,g_LRADIUS,g_LRDMG,g_LFF,g_LCBT
new 
    
g_LDELAY,/*g_LTHINK,*/g_LVISIBLE
    
g_LSTAMMO,g_LACCESS,g_LGLOW,g_LDMGMODE,g_LCLMODE,g_LCBRIGHT,g_LDSEC,g_LCMDMODE,g_LBUYMODE

new 
g_dcount[33],g_nowtime,g_MaxPL 
new bool:g_settinglaser[33
new 
g_msgDeathMsg,g_msgScoreInfo,g_msgDamage,g_msgStatusText,g_msgMoney
new 
Float:plspeed[33
new 
plsetting[33
new 
g_havemine[33]; 
new 
g_deployed[33]; 

public 
plugin_init() { 
    
register_plugin(PLUGINVERSIONAUTHOR); 
     
    
// Add your code here... 
    
RegisterHam(Ham_Killed"player""fw_PlayerKilled");  
    
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_logevent("logevent_round_end"2"1=Round_End")
//    register_logevent("logevent_round_start", 2, "1=Round_Start")

#if defined BIOHAZARD_SUPPORT 
    
g_LENABLE    register_cvar("bio_ltm","1"); 
    
g_LACCESS    register_cvar("bio_ltm_acs","0");          //0 all, 1 admin 
    
g_LMODE        register_cvar("bio_ltm_mode","0");         //0 lasermine, 1 tripmine 
    
g_LAMMO        register_cvar("bio_ltm_ammo","2"); 
    
g_LDMG        register_cvar("bio_ltm_dmg","60");        //laser hit dmg 
    
g_LCOST        register_cvar("bio_ltm_cost","2500"); 
    
g_LFMONEY    register_cvar("bio_ltm_fragmoney","300"); 
    
g_LHEALTH    register_cvar("bio_ltm_health","5000"); 
    
g_LTMAX        register_cvar("bio_ltm_teammax","200"); 
    
g_LRADIUS    register_cvar("bio_ltm_radius","320.0"); 
    
g_LRDMG        register_cvar("bio_ltm_rdmg","100");         //radius damage 
    
g_LFF        register_cvar("bio_ltm_ff","0"); 
    
g_LCBT        register_cvar("bio_ltm_cbt","ALL"); 
    
g_LBUYMODE    register_cvar("bio_ltm_buymode","0"); 
    
g_LDELAY    register_cvar("bio_ltm_delay","15"); 
//    g_LTHINK = register_cvar("bio_ltm_think","0.01"); 
    
g_LVISIBLE    register_cvar("bio_ltm_line","1"); 
    
g_LGLOW        register_cvar("bio_ltm_glow","1"); 
    
g_LCBRIGHT    register_cvar("bio_ltm_bright","255");    //laser line brightness. 
    
g_LCLMODE    register_cvar("bio_ltm_color","0");        //0 is team color,1 is green 
    
g_LDMGMODE    register_cvar("bio_ltm_ldmgmode","0");     //0 - frame dmg, 1 - once dmg, 2 - 1 second dmg 
    
g_LDSEC        register_cvar("bio_ltm_ldmgseconds","1");    //mode 2 only, damage / seconds. default 1 (sec) 
    
g_LSTAMMO    register_cvar("bio_ltm_startammo","2"); 
    
g_LCMDMODE    register_cvar("bio_ltm_cmdmode","0");        //0 is +USE key, 1 is bind, 2 is each. 
#else 
    
g_LENABLE    register_cvar("amx_ltm","1"); 
    
g_LACCESS    register_cvar("amx_ltm_acs","0");          //0 all, 1 admin 
    
g_LMODE        register_cvar("amx_ltm_mode","0");         //0 lasermine, 1 tripmine 
    
g_LAMMO        register_cvar("amx_ltm_ammo","2"); 
    
g_LDMG        register_cvar("amx_ltm_dmg","60");         //laser hit dmg 
    
g_LCOST        register_cvar("amx_ltm_cost","2500"); 
    
g_LFMONEY    register_cvar("amx_ltm_fragmoney","300"); 
    
g_LHEALTH    register_cvar("amx_ltm_health","5000"); 
    
g_LTMAX        register_cvar("amx_ltm_teammax","200"); 
    
g_LRADIUS    register_cvar("amx_ltm_radius","320.0"); 
    
g_LRDMG        register_cvar("amx_ltm_rdmg","100");        //radius damage 
    
g_LFF        register_cvar("amx_ltm_ff","0"); 
    
g_LCBT        register_cvar("amx_ltm_cbt","ALL"); 
    
g_LBUYMODE    register_cvar("amx_ltm_buymode","0"); 
    
g_LDELAY    register_cvar("amx_ltm_delay","15"); 
//    g_LTHINK = register_cvar("amx_ltm_think","0.01") 
    
g_LVISIBLE    register_cvar("amx_ltm_line","1"); 
    
g_LGLOW        register_cvar("amx_ltm_glow","1"); 
    
g_LCBRIGHT    register_cvar("amx_ltm_bright","255");    //laser line brightness. 
    
g_LCLMODE    register_cvar("amx_ltm_color","0");         //0 is team color,1 is green 
    
g_LDMGMODE    register_cvar("amx_ltm_ldmgmode","0");     //0 - frame dmg, 1 - once dmg, 2 - 1 second dmg 
    
g_LDSEC        register_cvar("amx_ltm_ldmgseconds","1");    //mode 2 only, damage / seconds. default 1 (sec) 
    
g_LSTAMMO    register_cvar("amx_ltm_startammo","2"); 
    
g_LCMDMODE    register_cvar("amx_ltm_cmdmode","0");        //0 is +USE key, 1 is bind, 2 is each. 
#endif 
    
register_event("DeathMsg""DeathEvent""a"); 
    
register_event("CurWeapon""standing""be""1=1"); 
    
register_event("ResetHUD""delaycount""a"); 
    
register_event("ResetHUD""newround""b"); 
    
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"); 
    
g_msgMoney    get_user_msgid("Money"); 
    
g_msgid_bartime get_user_msgid("BarTime"
    
// -- Forward. 
    
register_forward(FM_Think"ltm_Think" ); 
    
register_forward(FM_PlayerPostThink"ltm_PostThink" ); 
    
register_forward(FM_PlayerPreThink"ltm_PreThink"); 


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); 
    
precache_sound("buttons/button2.wav")
     
    return 
PLUGIN_CONTINUE



public 
fw_PlayerKilled(id

    
RemoveAllTripmines(id);
    
DeleteTask(id);
}  

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); 
#if defined BIOHAZARD_SUPPORT 
    
format(file63"%s/bhltm_cvars.cfg"file); 
#else 
    
format(file63"%s/zp_ltm_cvars.cfg"file); 
#endif 
    
if(file_exists(file)) server_cmd("exec %s"file), server_exec(); 



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 event_infect(id, victim) 

       RemoveAllTripmines(id) 
}  
*/

public logevent_round_end(id)
{
        
RemoveAllTripmines(id)
}

/*
public logevent_round_start()
{
    server_cmd("amx_cvar amx_ltm 1")
}
*/

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_beginMSG_ONE_UNRELIABLEg_msgid_bartime, {0,0,0}, id ); 
    
write_short(1); 
    
message_end(); 

    
set_task(1.2"Spawn", (TASK_PLANT id));
    
client_cmd(id"spk buttons/button3.wav");

    return 
PLUGIN_HANDLED


public 
ReturnLaserMine_Progress(id

    if (!
ReturnCheck(id))
    return 
PLUGIN_HANDLED
    
g_settinglaser[id] = true

    
message_beginMSG_ONE_UNRELIABLEg_msgid_bartime, {0,0,0}, id ); 
    
write_short(1); 
    
message_end();
    
set_task(1.2"ReturnMine", (TASK_RELEASE id));
    
client_cmd(id"spk buttons/button3.wav");

    return 
PLUGIN_HANDLED


public 
StopCreateLaserMine(id


    
DeleteTask(id); 
    
message_beginMSG_ONE_UNRELIABLEg_msgid_bartime, {0,0,0}, id ); 
    
write_short(0); 
    
message_end(); 

    return 
PLUGIN_HANDLED


public 
StopReturnLaserMine(id


    
DeleteTask(id); 
    
message_beginMSG_ONE_UNRELIABLEg_msgid_bartime, {0,0,0}, id ); 
    
write_short(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) > 90.0) return; 
     
    new 
EntityName[32]; 
    
pev(tgtpev_classnameEntityName31); 
    if(!
equal(EntityNameENT_CLASS_NAME)) return; 
    if(
pev(tgt,LASERMINE_OWNER) != id) return; 
    
RemoveEntity(tgt); 

    
g_havemine[id] ++; 
    
g_deployed[id] --; 
    
emit_sound(idCHAN_ITEMENT_SOUND5VOL_NORMATTN_NORM0PITCH_NORM
    
ShowAmmo(id

    return; 


public 
Spawnid 

    
id -= TASK_PLANT 
    
// motor 
    
new i_Ent engfunc(EngFunc_CreateNamedEntity,g_EntMine); 
    if(!
i_Ent
    { 
        
client_print(id,print_chat,"[Lasermine 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]; 
    
pevidpev_originvOrigin ); 
    
velocity_by_aimid128vTraceDirection ); 
    
xs_vec_addvTraceDirectionvOriginvTraceEnd ); 
     
    
engfuncEngFunc_TraceLinevOriginvTraceEndDONT_IGNORE_MONSTERSid); 
     
    new 
Float:fFraction
    
get_tr20TR_flFractionfFraction ); 
     

    
// -- We hit something! 
    
if ( fFraction 1.0 
    { 
        
// -- Save results to be used later. 
        
get_tr20TR_vecEndPosvTraceEnd ); 
        
get_tr20TR_vecPlaneNormalvNormal ); 
    } 


    
xs_vec_mul_scalarvNormal8.0vNormal ); 
    
xs_vec_addvTraceEndvNormalvNewOrigin ); 

    
engfunc(EngFunc_SetSizei_EntFloat:{ -4.0, -4.0, -4.0 }, Float:{ 4.04.04.0 } ); 
    
engfunc(EngFunc_SetOrigini_EntvNewOrigin ); 

    
// -- Rotate tripmine. 
    
vector_to_angle(vNormal,vEntAngles ); 
    
set_pev(i_Ent,pev_angles,vEntAngles ); 

    
// -- Calculate laser end origin. 
    
new Float:vBeamEnd[3], Float:vTracedBeamEnd[3]; 
         
    
xs_vec_mul_scalar(vNormal8192.0vNormal ); 
    
xs_vec_addvNewOriginvNormalvBeamEnd ); 

    
engfuncEngFunc_TraceLinevNewOriginvBeamEndIGNORE_MONSTERS, -1); 

    
get_tr20TR_vecPlaneNormalvNormal ); 
    
get_tr20TR_vecEndPosvTracedBeamEnd ); 

    
// -- Save results to be used later. 
    
set_pev(i_EntLASERMINE_OWNERid ); 
    
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_POWERUPfCurrTime 2.5 ); 
    
    
set_pev(i_Ent,LASERMINE_STEP,POWERUP_THINK); 
    
set_pev(i_Ent,pev_nextthinkfCurrTime 0.2 ); 

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


stock TeamDeployedCount(id

    
//new tid[32]; 
     
    
static i
    static 
CsTeams:t;cs_get_user_team(id); 
    static 
cnt;cnt=0

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

    return 
cnt


bool:CheckCanTeam(id

    new 
arg[5],CsTeam:num
    
get_pcvar_string(g_LCBT,arg,3); 
    if(
equali(arg,"T")) 
    { 
        
num CsTeam:CS_TEAM_T
    } 
    else if(
equali(arg,"CT")) 
    { 
        
num CsTeam:CS_TEAM_CT
    } 
    else if(
equali(arg,"ALL")) 
    { 
        
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_numg_LENABLE ) ) 
    { 
//        client_print(id, print_chat, "%s %s",CHATTAG,STR_NOTACTIVE);
    
ColorChat(idNORMAL"^4%s ^3%s",CHATTAG,STR_NOTACTIVE);
        
client_cmd(id"spk buttons/button2.wav");
        return 
false
    } 
    if( 
get_pcvar_num(g_LACCESS) != 0
        if(!(
get_user_flags(id) & ADMIN_IMMUNITY)) 
        { 
//            client_print(id, print_chat, "%s %s",CHATTAG,STR_NOACCESS);
        
ColorChat(idNORMAL"^4%s ^3%s",CHATTAG,STR_NOACCESS);            
            return 
false
        } 
    if(!
pev_user_alive(id)) return false
#if defined BIOHAZARD_SUPPORT 
    
if(is_user_zombie(id)) 
    { 
//        client_print(id, print_chat, "%s %s",CHATTAG,STR_CBT); 
    
ColorChat(idNORMAL"^4%s ^3%s",CHATTAG,STR_CBT);
        return 
false
    } 
#endif 
    
if (!CheckCanTeam(id)) 
    { 
//       client_print(id, print_chat, "%s %s",CHATTAG,STR_CBT); 
    
ColorChat(idNORMAL"^4%s ^3%s",CHATTAG,STR_CBT); 
        return 
false
    } 
    if( 
mode == 0
    { 
        if(
g_havemine[id] <= 0
        { 
//            client_print(id, print_chat, "%s %s",CHATTAG,STR_DONTHAVEMINE);
        
ColorChat(idNORMAL"^4%s ^3%s",CHATTAG,STR_DONTHAVEMINE);
        
client_cmd(id"spk buttons/button2.wav");
            return 
false
        } 
    } 
    if (
mode == 1
    { 
        if (
get_pcvar_num(g_LBUYMODE) == 0
        { 
//            client_print(id, print_chat, "%s %s",CHATTAG,STR_CANTBUY); 
        
ColorChat(idNORMAL"^4%s ^3%s",CHATTAG,STR_CANTBUY);
            return 
false
        } 
        if (
g_havemine[id] >= get_pcvar_num(g_LAMMO)) 
        { 
//            client_print(id, print_chat, "%s %s",CHATTAG,STR_HAVEMAX); 
        
ColorChat(idNORMAL"^4%s ^3%s",CHATTAG,STR_HAVEMAX);
            return 
false
        } 
        if (
cs_get_user_money(id) < get_pcvar_num(g_LCOST)) 
        { 
            
client_print(idprint_chat"%s %s%d %s",CHATTAGSTR_NOMONEY,get_pcvar_num(g_LCOST),STR_NEEDED); 
            return 
false
        } 
    } 
    if(!
CheckTime(id)) 
    { 
//        client_print(id,print_chat, "%s %s %d %s",CHATTAG,STR_DELAY,get_pcvar_num(g_LDELAY)-g_nowtime,STR_SECONDS);
    
ColorChat(id,NORMAL"^4%s ^3%s ^1%d ^3%s",CHATTAG,STR_DELAY,get_pcvar_num(g_LDELAY)-g_nowtime,STR_SECONDS);
        
client_cmd(id"spk buttons/button2.wav");
        return 
false
    } 

    return 
true


bool:ReturnCheckid 

    if(!
CanCheck(id,-1)) return false
    if(
g_havemine[id] + 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) > 90.0) return false
     
    new 
EntityName[32]; 
    
pev(tgtpev_classnameEntityName31); 
    if(!
equal(EntityNameENT_CLASS_NAME)) return false
    if(
pev(tgt,LASERMINE_OWNER) != id) return false
     
    return 
true


bool:CreateCheckid 

    if (!
CanCheck(id,0)) return false
    if (
g_deployed[id] >= get_pcvar_num(g_LAMMO)) 
    { 
//        client_print(id, print_chat, "%s %s",CHATTAG,STR_MAXDEPLOY); 
    
ColorChat(idNORMAL"^4%s ^3%s",CHATTAG,STR_MAXDEPLOY);
        return 
false
    } 

    
//client_print(id,print_chat,"[Lasermine] your team deployed %d",TeamDeployedCount(id)) 
    
if(TeamDeployedCount(id) >= get_pcvar_num(g_LTMAX)) 
    { 
//        client_print(id, print_chat, "%s %s",CHATTAG,STR_MANYPPL); 
    
ColorChat(idNORMAL"^4%s ^3%s",CHATTAG,STR_MANYPPL);
        return 
false
    } 
     
    new 
Float:vTraceDirection[3], Float:vTraceEnd[3],Float:vOrigin[3]; 
     
    
pevidpev_originvOrigin ); 
    
velocity_by_aimid128vTraceDirection ); 
    
xs_vec_addvTraceDirectionvOriginvTraceEnd ); 
     
    
engfuncEngFunc_TraceLinevOriginvTraceEndDONT_IGNORE_MONSTERSid); 
     
    new 
Float:fFraction,Float:vTraceNormal[3]; 
    
get_tr20TR_flFractionfFraction ); 
     
    
// -- We hit something! 
    
if ( fFraction 1.0 
    { 
        
// -- Save results to be used later. 
        
get_tr20TR_vecEndPosvTraceEnd ); 
        
get_tr20TR_vecPlaneNormalvTraceNormal ); 

        
//get_tr2( 0, TR_pHit ); 

        
return true
    } 

//    client_print(id, print_chat, "%s %s",CHATTAG,STR_PLANTWALL)
    
ColorChat(idNORMAL"^4%s ^3%s",CHATTAG,STR_PLANTWALL)
    
client_cmd(id"spk buttons/button2.wav");    
    
DeleteTask(id); 
    
// -- Did not touched something. (not solid) 
    
return false


public 
ltm_Thinki_Ent 

    if ( !
pev_validi_Ent ) ) 
        return 
FMRES_IGNORED
    new 
EntityName[32]; 
    
pevi_Entpev_classnameEntityName31); 
    if(!
get_pcvar_num(g_LENABLE)) return FMRES_IGNORED
    
// -- Entity is not a tripmine, ignoring the next... 
    
if ( !equalEntityNameENT_CLASS_NAME ) ) 
        return 
FMRES_IGNORED

    static 
Float:fCurrTime
    
fCurrTime get_gametime(); 

    switch( 
pevi_EntLASERMINE_STEP ) ) 
    { 
        case 
POWERUP_THINK 
        { 
            new 
Float:fPowerupTime
            
pevi_EntLASERMINE_POWERUPfPowerupTime ); 

            if( 
fCurrTime fPowerupTime 
            { 
                
set_pevi_Entpev_solidSOLID_BBOX ); 
                
set_pevi_EntLASERMINE_STEPBEAMBREAK_THINK ); 

                
PlaySoundi_EntACTIVATE_SOUND ); 
            } 
            if(
get_pcvar_num(g_LGLOW)!=0
            { 
                if(
get_pcvar_num(g_LCLMODE)==0
                { 
                    switch (
pev(i_Ent,LASERMINE_TEAM)) 
                    { 
                        case 
CS_TEAM_Tset_rendering(i_Ent,kRenderFxGlowShell,255,0,20,kRenderNormal,5); 
                        case 
CS_TEAM_CT:set_rendering(i_Ent,kRenderFxGlowShell,0,100,255,kRenderNormal,5); 
                    } 
                }else 
                { 
                    
set_rendering(i_Ent,kRenderFxGlowShell,0,255,0,kRenderNormal,5); 
                } 
            } 
            
set_pevi_Entpev_nextthinkfCurrTime 0.1 ); 
        } 
        case 
BEAMBREAK_THINK 
        { 
            static 
Float:vEnd[3],Float:vOrigin[3]; 
            
pevi_Entpev_originvOrigin ); 
            
pevi_EntLASERMINE_BEAMENDPOINTvEnd ); 

            static 
iHitFloat:fFraction
            
engfuncEngFunc_TraceLinevOriginvEndDONT_IGNORE_MONSTERSi_Ent); 

            
get_tr20TR_flFractionfFraction ); 
            
iHit get_tr20TR_pHit ); 

            
// -- Something has passed the laser. 
            
if ( fFraction 1.0 
            { 
                
// -- Ignoring others tripmines entity. 
                
if(pev_valid(iHit)) 
                { 
                    
peviHitpev_classnameEntityName31 ); 
     
                    if( !
equalEntityNameENT_CLASS_NAME ) ) 
                    { 
                        
set_pevi_Entpev_enemyiHit ); 
                        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_pevi_EntLASERMINE_STEPEXPLOSE_THINK ); 
                 
                        
set_pevi_Entpev_nextthinkfCurrTime random_float0.10.3 ) ); 
                    } 
                } 
            } 
            if(
get_pcvar_num(g_LDMGMODE)!=0
                if(
pev(i_Ent,LASERMINE_HITING) != iHit
                    
set_pev(i_Ent,LASERMINE_HITING,iHit); 
  
            
// -- Tripmine is still there. 
            
if ( pev_validi_Ent )) 
            { 
                static 
Float:fHealth
                
pevi_Entpev_healthfHealth ); 

                if( 
fHealth <= 0.0 || (pev(i_Ent,pev_flags) & FL_KILLME)) 
                { 
                    
set_pevi_EntLASERMINE_STEPEXPLOSE_THINK ); 
                    
set_pevi_Entpev_nextthinkfCurrTime random_float0.10.3 ) ); 
                } 
                     
                static 
Float:fBeamthink
                
pevi_EntLASERMINE_BEAMTHINKfBeamthink ); 
                     
                if( 
fBeamthink fCurrTime && get_pcvar_num(g_LVISIBLE)) 
                { 
                    
DrawLaser(i_EntvOriginvEnd ); 
                    
set_pevi_EntLASERMINE_BEAMTHINKfCurrTime 0.1 ); 
                } 
                
set_pevi_Entpev_nextthinkfCurrTime 0.01 ); 
            } 
        } 
        case 
EXPLOSE_THINK 
        { 
            
// -- Stopping entity to think 
            
set_pevi_Entpev_nextthink0.0 ); 
            
PlaySoundi_EntSTOP_SOUND ); 
            
g_deployed[pev(i_Ent,LASERMINE_OWNER)]--; 
            
CreateExplosioni_Ent ); 
            
CreateDamage(i_Ent,get_pcvar_float(g_LRDMG),get_pcvar_float(g_LRADIUS)) 
            
RemoveEntity   i_Ent ); 
        } 
    } 

    return 
FMRES_IGNORED


PlaySoundi_Enti_SoundType 

    switch ( 
i_SoundType 
    { 
        case 
POWERUP_SOUND 
        { 
            
emit_soundi_EntCHAN_VOICEENT_SOUND1VOL_NORMATTN_NORM0PITCH_NORM ); 
            
emit_soundi_EntCHAN_BODY ENT_SOUND20.2ATTN_NORM0PITCH_NORM ); 
        } 
        case 
ACTIVATE_SOUND 
        { 
            
emit_soundi_EntCHAN_VOICEENT_SOUND30.5ATTN_NORM175 ); 
        } 
        case 
STOP_SOUND 
        { 
            
emit_soundi_EntCHAN_BODY ENT_SOUND20.2ATTN_NORMSND_STOPPITCH_NORM ); 
            
emit_soundi_EntCHAN_VOICEENT_SOUND30.5ATTN_NORMSND_STOP75 ); 
        } 
    } 


DrawLaser(i_Ent, const Float:v_Origin[3], const Float:v_EndOrigin[3] ) 

    new 
tcolor[3]; 
    new 
teamid pev(i_EntLASERMINE_TEAM); 
    if(
get_pcvar_num(g_LCLMODE) == 0
    { 
        switch(
teamid){ 
            case 
1:{ 
                
tcolor[0] = 255
                
tcolor[1] = 20
                
tcolor[2] = 0
            } 
            case 
2:{ 
                
tcolor[0] = 0
                
tcolor[1] = 100
                
tcolor[2] = 255
            } 
        } 
    }else 
    { 
        
tcolor[0] = 0
        
tcolor[1] = 255
        
tcolor[2] = 0
    } 
    
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]); //Random 
    
engfunc(EngFunc_WriteCoord,v_EndOrigin[1]); //Random 
    
engfunc(EngFunc_WriteCoord,v_EndOrigin[2]); //Random 
    
write_short(beam); 
    
write_byte(0); 
    
write_byte(0); 
    
write_byte(1);    //Life 
    
write_byte(5);    //Width 
    
write_byte(0);    //wave 
    
write_byte(tcolor[0]); // r 
    
write_byte(tcolor[1]); // g 
    
write_byte(tcolor[2]); // b 
    
write_byte(get_pcvar_num(g_LCBRIGHT)); 
    
write_byte(255); 
    
message_end(); 

/* 
CreateDamage(iCurrent,DmgMAX,Float:Radius) 

    new AtkID = pev(iCurrent,LASERMINE_OWNER)// entity_get_int(iCurrent,LASERMINE_OWNER) 
    new TeamID= pev(iCurrent,LASERMINE_TEAM) //entity_get_int(iCurrent,LASERMINE_INT_TEAM) 
    new Player = -1; 
    new Float:distance,dmg; 
    new Float:tOrigin[3]; 
    new Float:vOrigin[3]; 
    new iHitHP,iHitTeam; 
    pev(iCurrent,pev_origin,vOrigin); 
    while((Player = engfunc(EngFunc_FindEntityInSphere, Player, vOrigin, Radius)) != 0) 
    { 
        if(is_user_alive(Player)) 
        { 
            pev(Player,pev_origin,tOrigin) 
            distance = get_distance_f(vOrigin, tOrigin) 
            dmg = floatround(DmgMAX - ((DmgMAX / Radius) * distance)) 
            iHitHP = pev_user_health(Player) - dmg 
            iHitTeam = int:bio_get_user_team(Player) 
            if(iHitHP <= 0) 
            { 
                if(iHitTeam != TeamID) 
                { 
                    cs_set_user_money(AtkID,cs_get_user_money(AtkID) + get_pcvar_num(g_LFMONEY)) 
                    set_score(AtkID,Player,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,Player,-1,iHitHP) 
                    } 
                } 
            }else 
            { 
                if(iHitTeam != TeamID || get_pcvar_num(g_LFF)) 
                { 
                    //set_pev(Player,pev_health,iHitHP) 
                    set_user_health(Player, iHitHP) 
                    message_begin(MSG_ONE_UNRELIABLE, g_msgDamage, {0,0,0}, Player)  
                    write_byte(dmg) 
                    write_byte(dmg) 
                    write_long(DMG_BULLET) 
                    engfunc(EngFunc_WriteCoord,vOrigin[0]) 
                    engfunc(EngFunc_WriteCoord,vOrigin[1]) 
                    engfunc(EngFunc_WriteCoord,vOrigin[2]) 
                    message_end() 
                } 
            } 
        } 
        Player =  engfunc(EngFunc_FindEntityInSphere,Player,vOrigin,Radius) 
    } 
    return PLUGIN_CONTINUE 

*/ 
CreateDamage(iCurrent,Float:DmgMAX,Float:Radius

    
// Get given parameters 
     
    
new Float:vecSrc[3]; 
    
pev(iCurrentpev_originvecSrc); 

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

    new 
ent = -1
    new 
Float:tmpdmg DmgMAX

    new 
Float:kickback 0.0
     
    
// Needed for doing some nice calculations :P 
    
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
    
// Calculate falloff 
    
new Float:falloff
    if (
Radius 0.0
    { 
        
falloff DmgMAX Radius
    } else { 
        
falloff 1.0
    } 
     
    
// Find monsters and players inside a specifiec radius 
    
while((ent engfunc(EngFunc_FindEntityInSphereentvecSrcRadius)) != 0
    { 
        if(!
pev_valid(ent)) continue; 
        if(!(
pev(entpev_flags) & (FL_CLIENT FL_FAKECLIENT))) 
        { 
            
// Entity is not a player or monster, ignore it 
            
continue; 
        } 
        if(!
pev_user_alive(ent)) continue; 
        
// Reset data 
        
kickback 1.0
        
tmpdmg DmgMAX
         
        
// The following calculations are provided by Orangutanz, THANKS! 
        // We use absmin and absmax for the most accurate information 
        
pev(entpev_absminTabsmin); 
        
pev(entpev_absmaxTabsmax); 
        
xs_vec_add(Tabsmin,Tabsmax,Tabsmin); 
        
xs_vec_mul_scalar(Tabsmin,0.5,vecSpot); 
         
        
pev(iCurrentpev_absminAabsmin); 
        
pev(iCurrentpev_absmaxAabsmax); 
        
xs_vec_add(Aabsmin,Aabsmax,Aabsmin); 
        
xs_vec_mul_scalar(Aabsmin,0.5,vecSee); 
         
        
engfunc(EngFunc_TraceLinevecSeevecSpot0iCurrenttrRes); 
        
get_tr2(trResTR_flFractionflFraction); 
        
// Explosion can 'see' this entity, so hurt them! (or impact through objects has been enabled xD) 
        
if (flFraction >= 0.9 || get_tr2(trResTR_pHit) == ent
        { 
            
// Work out the distance between impact and entity 
            
get_tr2(trResTR_vecEndPosvecEndPos); 
             
            
distance get_distance_f(vecSrcvecEndPos) * falloff
            
tmpdmg -= distance
            if(
tmpdmg 0.0
                
tmpdmg 0.0
             
            
// Kickback Effect 
            
if(kickback != 0.0
            { 
                
xs_vec_sub(vecSpot,vecSee,origin); 
                 
                
invlen 1.0/get_distance_f(vecSpotvecSee); 

                
xs_vec_mul_scalar(origin,invlen,vecPush); 
                
pev(entpev_velocityvelocity
                
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
                { 
                    
// There's some movement todo :) 
                    
set_pev(entpev_velocityvelocity
                } 
            } 

            
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_pev(Player,pev_health,iHitHP) 
                    
set_user_health(entiHitHP
                    
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_BROADCASTSVC_TEMPENTITY); 
    
write_byte(99); //99 = KillBeam 
    
write_short(iCurrent); 
    
message_end(); 

    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYvOrigin0); 
    
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 ) 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(iCurrentLASERMINE_TEAM
  
        new 
szClassName[32
        new 
Alive,God 
        
new iHitTeam,iHitHP,id 
        
new hitscore 
  
        
        szClassName
[0] = '^0' 
        
pev(isHit,pev_classname,szClassName,32
        
        if((
pev(isHitpev_flags) & (FL_CLIENT FL_FAKECLIENT)) && !equal(szClassNameENT_CLASS_NAME)) 
        { 
                
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)//, szNetName[32] 
                
if(iHitHP <= 0
                { 
                        if(
iHitTeam != teamid
                        { 
                                
client_cmd(isHit"spk %s"ENT_SOUND4
                                
hitscore 
                                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)) 
                                { 
                                        
client_cmd(isHit"spk %s"ENT_SOUND4
                                        
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)) 
                { 
                        
client_cmd(isHit"spk %s"ENT_SOUND4
                        
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(szClassNameENT_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 set_pev(idpev_healthfloat(health)) : dllfunc(DLLFunc_ClientKillid); 


stock get_user_godmode(index) { 
    new 
Float:val 
    pev
(indexpev_takedamageval

    return (
val == DAMAGE_NO


stock set_user_frags(indexfrags

    
set_pev(indexpev_fragsfloat(frags)) 

    return 



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// get_user_frags(id) + hitscore     
    
set_user_frags(id,idfrags
    
//set_user_frags(id, idfrags) 
    //entity_set_float(id, EV_FL_frags, float(idfrags)) 
     
    
new tarfrags pev_user_frags(target) + //get_user_frags(target) + 1 
    
set_user_frags(target,tarfrags
    
//set_user_frags(target,tarfrags) 
    //entity_set_float(target, EV_FL_frags, float(tarfrags)) 
     
    
new idteam int:cs_get_user_team(id
    new 
iddeaths cs_get_user_deaths(id


    
message_begin(MSG_BROADCASTg_msgDeathMsg, {000} ,0
    
write_byte(id
    
write_byte(target
    
write_byte(0
    
write_string(ENT_CLASS_NAME
    
message_end() 

    
message_begin(MSG_BROADCASTg_msgScoreInfo
    
write_byte(id
    
write_short(idfrags
    
write_short(iddeaths
    
write_short(0
    
write_short(idteam
    
message_end() 

    
set_msg_block(g_msgDeathMsgBLOCK_ONCE

    
//entity_set_float(target, EV_FL_health,float(HP)) 
    
set_user_health(targetHP
    
//set_pev(target,pev_health,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, "%s %s",CHATTAG,STR_BOUGHT) 
    
ColorChat(idNORMAL"^4%s ^3%s",CHATTAG,STR_BOUGHT
    
emit_sound(idCHAN_ITEMENT_SOUND5VOL_NORMATTN_NORM0PITCH_NORM
    
ShowAmmo(id
    return 
PLUGIN_HANDLED 


ShowAmmo(id
{  
    new 
ammo[51]  
    
formatex(ammo50"%s %i/%i",STR_STATEg_havemine[id],get_pcvar_num(g_LAMMO)) 

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

public 
showInfo(id

    
client_print(idprint_chatSTR_REF)


public 
say_lasermine(id){ 
    new 
said[32
    
read_argv(1,said,31); 
    if( !
get_pcvar_numg_LENABLE )  ){ 
//        client_print(id, print_chat, "%s Lasermines are not currently active.",CHATTAG) 
        
return PLUGIN_CONTINUE 
    

     
    if (
equali(said,"/buy lasermine")||equali(said,"/lm")){ 
        
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>You can be setting the mine on the wall.</p><br/>"
        
len += formatex(msg[len], SIZE len"<p>That laser will give what touched it damage.</p><br/><br/>"
        
len += formatex(msg[len], SIZE len"<p><b>LaserMine Commands</b></p><br/><br/>"
        
len += formatex(msg[len], SIZE len"<p><b>Say /buy lasermine</b> or <b>Say /lm</b> //buying lasermine<br/>"
        
len += formatex(msg[len], SIZE len"<b>buy_lasermine</b> //bind ^"F2^" buy_lasermine : using F2 buying lasermine<br/>"
        
len += formatex(msg[len], SIZE len"<b>+setlaser</b> //bind mouse3 +setlaser : using mouse3 set lasermine on wall<br/>"
        
len += formatex(msg[len], SIZE len"</body></html>"
        
show_motd(idmsg"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
(idpev_maxspeed1.0
//    ShowAmmo(id) 

    
return PLUGIN_CONTINUE 


public 
ltm_PostThink(id)  

    if (!
g_settinglaser[id] && plsetting[id]){ 
        
resetspeed(id
    } 
    else if (
g_settinglaser[id] && !plsetting[id]) { 
        
pev(idpev_maxspeed,plspeed[id]) 
        
set_pev(idpev_maxspeed1.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(idpev_button ) & IN_USE && !(pev(idpev_oldbuttons ) & IN_USE )) 
        
//client_print(id,print_chat,"test"); 
        
CreateLaserMine_Progress(id
    return 
FMRES_IGNORED


resetspeed(id

    
set_pev(idpev_maxspeedplspeed[id]) 


public 
client_putinserver(id){ 
    
g_deployed[id] = 0
    
g_havemine[id] = 0
    
DeleteTask(id); 
    return 
PLUGIN_CONTINUE 


public 
client_disconnect(id){ 
    if(!
get_pcvar_numg_LENABLE )) 
        return 
PLUGIN_CONTINUE 
    DeleteTask
(id); 
    
RemoveAllTripmines(id); 
    return 
PLUGIN_CONTINUE 



public 
newround(id){ 
    if(!
get_pcvar_numg_LENABLE )) 
        return 
PLUGIN_CONTINUE 
    pev
(idpev_maxspeed,plspeed[id]) 
    
DeleteTask(id); 
    
RemoveAllTripmines(id); 
    
delaycount(id); 
    
SetStartAmmo(id); 
    return 
PLUGIN_CONTINUE 


public 
DeathEvent(){ 
    if(!
get_pcvar_numg_LENABLE )) 
        return 
PLUGIN_CONTINUE 

    
new id read_data(2
    if(
is_user_connected(id)) DeleteTask(id); 
    return 
PLUGIN_CONTINUE 


public 
RemoveAllTripminesi_Owner 

    new 
iEnt g_MaxPL 1
    new 
clsname[32]; 
    while( ( 
iEnt engfuncEngFunc_FindEntityByStringiEnt"classname"ENT_CLASS_NAME ) ) ) 
    { 
        if ( 
i_Owner 
        { 
            if( 
peviEntLASERMINE_OWNER ) != i_Owner 
                continue; 
            
clsname[0] = '^0' 
            
peviEntpev_classnameclsnamesizeof(clsname)-); 
                 
            if ( 
equaliclsnameENT_CLASS_NAME ) ) 
            { 
                
PlaySoundiEntSTOP_SOUND ); 
                
RemoveEntityiEnt ); 
            } 
        } 
        else 
            
set_peviEntpev_flagsFL_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); 


#if defined BIOHAZARD_SUPPORT 
public event_infect2(id

//    DeleteTask(id); 
    
return PLUGIN_CONTINUE 

#endif 

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(entityfx kRenderFxNone255255255render kRenderNormalamount 16

    static 
Float:RenderColor[3]; 
    
RenderColor[0] = float(r); 
    
RenderColor[1] = float(g); 
    
RenderColor[2] = float(b); 

    
set_pev(entitypev_renderfxfx); 
    
set_pev(entitypev_rendercolorRenderColor); 
    
set_pev(entitypev_rendermoderender); 
    
set_pev(entitypev_renderamtfloat(amount)); 

    return 



// Gets offset data 
get_offset_value(idtype

    new 
key = -1
    switch(
type
    { 
        case 
OFFSET_TEAMkey OFFSET_TEAM
        case 
OFFSET_MONEY
        { 
#if defined UL_MONEY_SUPPORT 
            
return cs_get_user_money_ul(id); 
#else 
            
key OFFSET_MONEY
#endif 
        

        case 
OFFSET_DEATHkey OFFSET_DEATH
    } 
     
    if(
key != -1
    { 
        if(
is_amd64_server()) key += 25
        return 
get_pdata_int(idkey); 
    } 
     
    return -
1


// Sets offset data 
set_offset_value(idtypevalue

    new 
key = -1
    switch(
type
    { 
        case 
OFFSET_TEAMkey OFFSET_TEAM
        case 
OFFSET_MONEY
        { 
#if defined UL_MONEY_SUPPORT 
            
return cs_set_user_money_ul(idvalue); 
#else 
            
key OFFSET_MONEY
             
            
// Send Money message to update player's HUD 
            
message_begin(MSG_ONE_UNRELIABLEg_msgMoney, {0,0,0}, id); 
            
write_long(value); 
            
write_byte(1);    // Flash (difference between new and old money) 
            
message_end(); 
#endif 
        

        case 
OFFSET_DEATHkey OFFSET_DEATH
    } 
     
    if(
key != -1
    { 
        if(
is_amd64_server()) key += 25
        
set_pdata_int(idkeyvalue); 
    } 
     
    return 
PLUGIN_CONTINUE


Last edited by PowereXe; 05-28-2017 at 15:23.
PowereXe is offline
PartialCloning
Senior Member
Join Date: Dec 2015
Old 05-26-2017 , 21:20   Re: [REQ/SMA Edit] Lasermine Owner HUD Info
Reply With Quote #2

Change line 28: szOwner = pev( iHit , pev_iuser2);

Look up "naming convention", the names of the variables are a mess.
PartialCloning is offline
PowereXe
Member
Join Date: Jan 2017
Location: Turkey, Istanbul
Old 05-27-2017 , 06:14   Re: [REQ/SMA Edit] Lasermine Owner HUD Info
Reply With Quote #3

PHP Code:
peviHit pev_iuser2 szOwner); 
Changed To:

PHP Code:
szOwner peviHit pev_iuser2); 
But Plugin Not Working
PowereXe is offline
sirerick
Senior Member
Join Date: Jul 2012
Location: Venezuela
Old 05-27-2017 , 07:21   Re: [REQ/SMA Edit] Lasermine Owner HUD Info
Reply With Quote #4

test. u no need extra plugin for this. just use this.

PHP Code:
/* Plugin generated by AMXX-Studio */  
//#define BIOHAZARD_SUPPORT  
//#define UL_MONEY_SUPPORT  


#include <amxmodx>  
#include <cstrike> 
#include <fakemeta>  
#include <xs>  
#include <hamsandwich> 

#if defined _colorchat_included 
#endinput 
#endif 
#define _colorchat_included 

enum Color 
{
     
    
NORMAL 1// clients scr_concolor cvar color 
    
GREEN// Green Color 
    
TEAM_COLOR// Red, grey, blue 
    
GREY// grey 
    
RED// Red 
    
BLUE// Blue 


new 
TeamName[][] =  
{
     
    
""
    
"TERRORIST"
    
"CT"
    
"SPECTATOR" 


ColorChat(idColor:type, const msg[], {Float,Sql,Result,_}:...) 
{
     
    if( !
get_playersnum() ) return; 

    new 
message[256]; 

    switch(
type
    {
         
        case 
NORMAL// clients scr_concolor cvar color 
        
{
             
            
message[0] = 0x01
        } 
        case 
GREEN// Green 
        
{
             
            
message[0] = 0x04
        } 
        default: 
// White, Red, Blue 
        
{
             
            
message[0] = 0x03
        } 
    } 

    
vformat(message[1], 251msg4); 

    
// Make sure message is not longer than 192 character. Will crash the server. 
    
message[192] = '^0'

    new 
teamColorChangeindexMSG_Type

    if(
id
    {
         
        
MSG_Type MSG_ONE
        
index id
    } else { 
        
index FindPlayer(); 
        
MSG_Type MSG_ALL
    } 

    
team get_user_team(index); 
    
ColorChange ColorSelection(indexMSG_Typetype); 

    
ShowColorMessage(indexMSG_Typemessage); 

    if(
ColorChange
    {
         
        
Team_Info(indexMSG_TypeTeamName[team]); 
    } 


ShowColorMessage(idtypemessage[]) 
{
     
    static 
bool:saytext_used
    static 
get_user_msgid_saytext
    if(!
saytext_used
    {
         
        
get_user_msgid_saytext get_user_msgid("SayText"); 
        
saytext_used true
    } 
    
message_begin(typeget_user_msgid_saytext_id); 
    
write_byte(id)         
    
write_string(message); 
    
message_end();     


Team_Info(idtypeteam[]) 
{
     
    static 
bool:teaminfo_used
    static 
get_user_msgid_teaminfo
    if(!
teaminfo_used
    {
         
        
get_user_msgid_teaminfo get_user_msgid("TeamInfo"); 
        
teaminfo_used true
    } 
    
message_begin(typeget_user_msgid_teaminfo_id); 
    
write_byte(id); 
    
write_string(team); 
    
message_end(); 

    return 
1


ColorSelection(indextypeColor:Type
{
     
    switch(
Type
    {
         
        case 
RED
        {
             
            return 
Team_Info(indextypeTeamName[1]); 
        } 
        case 
BLUE
        {
             
            return 
Team_Info(indextypeTeamName[2]); 
        } 
        case 
GREY
        {
             
            return 
Team_Info(indextypeTeamName[0]); 
        } 
    } 

    return 
0


FindPlayer() 
{
     
    new 
= -1

    while(
<= get_maxplayers()) 
    {
         
        if(
is_user_connected(++i)) 
        return 
i
    } 

    return -
1


#if defined BIOHAZARD_SUPPORT  
#include <biohazard>  
#endif  

#if defined UL_MONEY_SUPPORT  
#include <money_ul>  
#endif  


#if AMXX_VERSION_NUM < 180  
#assert AMX Mod X v1.8.0 or greater library required!  
#endif  

#if defined BIOHAZARD_SUPPORT  
#define PLUGIN "LTM for BIOHAZARD"  
#else  
#define PLUGIN "Laser/Tripmine Entity"  
#endif  
#define AUTHOR "SandStriker, Crunch98" //Remaked by Crunch98 for Csyardim.Com 

#define RemoveEntity(%1)    engfunc(EngFunc_RemoveEntity,%1)  
//#define ACCESSLEVEL        ADMIN_LEVEL_H  
#define TASK_PLANT        15100  
#define TASK_RESET        15500  
#define TASK_RELEASE        15900  
#define VERSION "2.8.3"  

#define LASERMINE_TEAM        pev_iuser1//EV_INT_iuser1  
#define LASERMINE_OWNER        pev_iuser2 //EV_INT_iuser3  
#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)  
#define cs_get_user_money(%1)        get_offset_value(%1,OFFSET_MONEY)  
#define cs_set_user_money(%1,%2)    set_offset_value(%1,OFFSET_MONEY,%2)  



/*enum CsTeams {  
    CS_TEAM_UNASSIGNED = 0,  
    CS_TEAM_T = 1,  
    CS_TEAM_CT = 2,  
    CS_TEAM_SPECTATOR = 3  
}; 
*/ 

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/LaserMines/v_laser_mine.mdl",  
ENT_SOUND1[]    = "weapons/mine_deploy.wav",  
ENT_SOUND2[]    = "weapons/mine_charge.wav",  
ENT_SOUND3[]    = "weapons/mine_activate.wav",  
ENT_SOUND4[]    = "weapons/electro5.wav",  
ENT_SOUND5[]    = "items/gunpickup2.wav",  
ENT_SOUND6[]    = "debris/bustglass1.wav",  
ENT_SOUND7[]    = "debris/bustglass2.wav"
ENT_SPRITE1[]     = "sprites/laserbeam.spr",  
ENT_SPRITE2[]     = "sprites/zerogxplode.spr";  

new const  
ENT_CLASS_NAME[]    = "lasermine",  
//ENT_CLASS_NAME2[]    = "info_target",  
ENT_CLASS_NAME3[]    = "func_breakable";  

new const  
#if defined BIOHAZARD_SUPPORT  
CHATTAG[]         = "[CSYardim]",  
#else  
CHATTAG[]         = "[CSYardim]",  
#endif  
//STR_MINEDETNATED[]     = "Your mine has detonated.",  
//STR_MINEDETNATED2[]    = "detonated your mine.",  
STR_NOTACTIVE[]     = "Lazerler Aktif Degil.",  
STR_DONTHAVEMINE[]    = "Hic Lazerin Kalmadi.",  
//STR_CANTDEPLOY[]    = "Your team can't deploying lasermine!",  
STR_MAXDEPLOY[]        = "Maximum mines have been deployed.",  
STR_MANYPPL[]        = "Too many ppl on your team...",  
STR_PLANTWALL[]        = "Lazeri Sadece Duvara Kurabilirsin!",  
STR_REF[]        = "Refer to a lasermine rule with this server. say 'lasermine'",  
#if defined BIOHAZARD_SUPPORT      
STR_CBT[]        = "Your Zombie! Can't buy and deploying lasermine!",  
#else  
STR_CBT[]        = "Your Team Can't buy and deploying lasermine!",  
#endif  
STR_CANTBUY[]        = "Satin Alma Kapali.",  
STR_HAVEMAX[]        = "You have a maximum lasermine.",  
STR_NOMONEY[]        = "You don't have enough money to buy a lasermine! ($",  
STR_NEEDED[]        = "needed)",  
STR_DELAY[]        = "Lazer Kurabilmek Icin",  
STR_SECONDS[]        = "Saniye Beklemelisin.",  
STR_BOUGHT[]        = "You have successfully bought a lasermine.",  
STR_STATE[]        = "Lazer Cephanesi:",  
STR_NOACCESS[]        = "Bu Komuta Erisim Yetkiniz Yok.";  

new 
g_EntMine  
new beamboom  
new g_msgid_bartime  
new   
g_LENABLE,g_LFMONEY,g_LAMMO,g_LDMG,  
g_LTMAX,g_LCOST,g_LHEALTH,g_LMODE,g_LRADIUS,g_LRDMG,g_LFF,g_LCBT;  
new  
g_LDELAY,/*g_LTHINK,*/g_LVISIBLE,  
g_LSTAMMO,g_LACCESS,g_LGLOW,g_LDMGMODE,g_LCLMODE,g_LCBRIGHT,g_LDSEC,g_LCMDMODE,g_LBUYMODE;  

new 
g_dcount[33],g_nowtime,g_MaxPL  
new bool:g_settinglaser[33]  
new 
g_msgDeathMsg,g_msgScoreInfo,g_msgDamage,g_msgStatusText,g_msgMoney;  
new 
Float:plspeed[33]  
new 
plsetting[33]  
new 
g_havemine[33];  
new 
g_deployed[33];  

public 
plugin_init() {  
    
register_plugin(PLUGINVERSIONAUTHOR);  

    
// Add your code here...  
    
RegisterHam(Ham_Killed"player""fw_PlayerKilled");   
    
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_logevent("logevent_round_end"2"1=Round_End"
    
//    register_logevent("logevent_round_start", 2, "1=Round_Start") 

    #if defined BIOHAZARD_SUPPORT  
    
g_LENABLE    register_cvar("bio_ltm","1");  
    
g_LACCESS    register_cvar("bio_ltm_acs","0");          //0 all, 1 admin  
    
g_LMODE        register_cvar("bio_ltm_mode","0");         //0 lasermine, 1 tripmine  
    
g_LAMMO        register_cvar("bio_ltm_ammo","2");  
    
g_LDMG        register_cvar("bio_ltm_dmg","60");        //laser hit dmg  
    
g_LCOST        register_cvar("bio_ltm_cost","2500");  
    
g_LFMONEY    register_cvar("bio_ltm_fragmoney","300");  
    
g_LHEALTH    register_cvar("bio_ltm_health","5000");  
    
g_LTMAX        register_cvar("bio_ltm_teammax","200");  
    
g_LRADIUS    register_cvar("bio_ltm_radius","320.0");  
    
g_LRDMG        register_cvar("bio_ltm_rdmg","100");         //radius damage  
    
g_LFF        register_cvar("bio_ltm_ff","0");  
    
g_LCBT        register_cvar("bio_ltm_cbt","ALL");  
    
g_LBUYMODE    register_cvar("bio_ltm_buymode","0");  
    
g_LDELAY    register_cvar("bio_ltm_delay","15");  
    
//    g_LTHINK = register_cvar("bio_ltm_think","0.01");  
    
g_LVISIBLE    register_cvar("bio_ltm_line","1");  
    
g_LGLOW        register_cvar("bio_ltm_glow","1");  
    
g_LCBRIGHT    register_cvar("bio_ltm_bright","255");    //laser line brightness.  
    
g_LCLMODE    register_cvar("bio_ltm_color","0");        //0 is team color,1 is green  
    
g_LDMGMODE    register_cvar("bio_ltm_ldmgmode","0");     //0 - frame dmg, 1 - once dmg, 2 - 1 second dmg  
    
g_LDSEC        register_cvar("bio_ltm_ldmgseconds","1");    //mode 2 only, damage / seconds. default 1 (sec)  
    
g_LSTAMMO    register_cvar("bio_ltm_startammo","2");  
    
g_LCMDMODE    register_cvar("bio_ltm_cmdmode","0");        //0 is +USE key, 1 is bind, 2 is each.  
    #else  
    
g_LENABLE    register_cvar("amx_ltm","1");  
    
g_LACCESS    register_cvar("amx_ltm_acs","0");          //0 all, 1 admin  
    
g_LMODE        register_cvar("amx_ltm_mode","0");         //0 lasermine, 1 tripmine  
    
g_LAMMO        register_cvar("amx_ltm_ammo","2");  
    
g_LDMG        register_cvar("amx_ltm_dmg","60");         //laser hit dmg  
    
g_LCOST        register_cvar("amx_ltm_cost","2500");  
    
g_LFMONEY    register_cvar("amx_ltm_fragmoney","300");  
    
g_LHEALTH    register_cvar("amx_ltm_health","5000");  
    
g_LTMAX        register_cvar("amx_ltm_teammax","200");  
    
g_LRADIUS    register_cvar("amx_ltm_radius","320.0");  
    
g_LRDMG        register_cvar("amx_ltm_rdmg","100");        //radius damage  
    
g_LFF        register_cvar("amx_ltm_ff","0");  
    
g_LCBT        register_cvar("amx_ltm_cbt","ALL");  
    
g_LBUYMODE    register_cvar("amx_ltm_buymode","0");  
    
g_LDELAY    register_cvar("amx_ltm_delay","15");  
    
//    g_LTHINK = register_cvar("amx_ltm_think","0.01")  
    
g_LVISIBLE    register_cvar("amx_ltm_line","1");  
    
g_LGLOW        register_cvar("amx_ltm_glow","1");  
    
g_LCBRIGHT    register_cvar("amx_ltm_bright","255");    //laser line brightness.  
    
g_LCLMODE    register_cvar("amx_ltm_color","0");         //0 is team color,1 is green  
    
g_LDMGMODE    register_cvar("amx_ltm_ldmgmode","0");     //0 - frame dmg, 1 - once dmg, 2 - 1 second dmg  
    
g_LDSEC        register_cvar("amx_ltm_ldmgseconds","1");    //mode 2 only, damage / seconds. default 1 (sec)  
    
g_LSTAMMO    register_cvar("amx_ltm_startammo","2");  
    
g_LCMDMODE    register_cvar("amx_ltm_cmdmode","0");        //0 is +USE key, 1 is bind, 2 is each.  
    #endif  
    
register_event("DeathMsg""DeathEvent""a");  
    
register_event("CurWeapon""standing""be""1=1");  
    
register_event("ResetHUD""delaycount""a");  
    
register_event("ResetHUD""newround""b");  
    
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");  
    
g_msgMoney    get_user_msgid("Money");  
    
g_msgid_bartime get_user_msgid("BarTime")  
    
// -- Forward.  
    
register_forward(FM_Think"ltm_Think" );  
    
register_forward(FM_PlayerPostThink"ltm_PostThink" );  
    
register_forward(FM_PlayerPreThink"ltm_PreThink");  
    
register_forwardFM_TraceLine "fw_TraceLine" ); 
}  

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);  
    
precache_sound("buttons/button2.wav"

    return 
PLUGIN_CONTINUE;  
}  


public 
fw_PlayerKilled(id)  
{
      
    
RemoveAllTripmines(id); 
    
DeleteTask(id); 
}   

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);  
    
#if defined BIOHAZARD_SUPPORT  
    
format(file63"%s/bhltm_cvars.cfg"file);  
    
#else  
    
format(file63"%s/zp_ltm_cvars.cfg"file);  
    
#endif  
    
if(file_exists(file)) server_cmd("exec %s"file), server_exec();  

}  

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 event_infect(id, victim)  
{
      
    RemoveAllTripmines(id)  
}   
*/ 

public logevent_round_end(id
{
     
    
RemoveAllTripmines(id


/* 
public logevent_round_start() 
{
     
    server_cmd("amx_cvar amx_ltm 1") 

*/ 

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_beginMSG_ONE_UNRELIABLEg_msgid_bartime, {0,0,0}, id );  
    
write_short(1);  
    
message_end();  

    
set_task(1.2"Spawn", (TASK_PLANT id)); 
    
client_cmd(id"spk buttons/button3.wav"); 

    return 
PLUGIN_HANDLED;  
}  

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

    
message_beginMSG_ONE_UNRELIABLEg_msgid_bartime, {0,0,0}, id );  
    
write_short(1);  
    
message_end(); 
    
set_task(1.2"ReturnMine", (TASK_RELEASE id)); 
    
client_cmd(id"spk buttons/button3.wav"); 

    return 
PLUGIN_HANDLED;  
}  

public 
StopCreateLaserMine(id)  
{
      

    
DeleteTask(id);  
    
message_beginMSG_ONE_UNRELIABLEg_msgid_bartime, {0,0,0}, id );  
    
write_short(0);  
    
message_end();  

    return 
PLUGIN_HANDLED;  
}  

public 
StopReturnLaserMine(id)  
{
      

    
DeleteTask(id);  
    
message_beginMSG_ONE_UNRELIABLEg_msgid_bartime, {0,0,0}, id );  
    
write_short(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) > 90.0) return;  

    new 
EntityName[32];  
    
pev(tgtpev_classnameEntityName31);  
    if(!
equal(EntityNameENT_CLASS_NAME)) return;  
    if(
pev(tgt,LASERMINE_OWNER) != id) return;  
    
RemoveEntity(tgt);  

    
g_havemine[id] ++;  
    
g_deployed[id] --;  
    
emit_sound(idCHAN_ITEMENT_SOUND5VOL_NORMATTN_NORM0PITCH_NORM)  
    
ShowAmmo(id)  

    return;  
}  

public 
Spawnid )  
{
      
    
id -= TASK_PLANT  
    
// motor  
    
new i_Ent engfunc(EngFunc_CreateNamedEntity,g_EntMine);  
    if(!
i_Ent)  
    {
          
        
client_print(id,print_chat,"[Lasermine 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];  
    
pevidpev_originvOrigin );  
    
velocity_by_aimid128vTraceDirection );  
    
xs_vec_addvTraceDirectionvOriginvTraceEnd );  

    
engfuncEngFunc_TraceLinevOriginvTraceEndDONT_IGNORE_MONSTERSid);  

    new 
Float:fFraction;  
    
get_tr20TR_flFractionfFraction );  


    
// -- We hit something!  
    
if ( fFraction 1.0 )  
    {
          
        
// -- Save results to be used later.  
        
get_tr20TR_vecEndPosvTraceEnd );  
        
get_tr20TR_vecPlaneNormalvNormal );  
    }  


    
xs_vec_mul_scalarvNormal8.0vNormal );  
    
xs_vec_addvTraceEndvNormalvNewOrigin );  

    
engfunc(EngFunc_SetSizei_EntFloat:{ -4.0, -4.0, -4.0 }, Float:{ 4.04.04.0 } );  
    
engfunc(EngFunc_SetOrigini_EntvNewOrigin );  

    
// -- Rotate tripmine.  
    
vector_to_angle(vNormal,vEntAngles );  
    
set_pev(i_Ent,pev_angles,vEntAngles );  

    
// -- Calculate laser end origin.  
    
new Float:vBeamEnd[3], Float:vTracedBeamEnd[3];  

    
xs_vec_mul_scalar(vNormal8192.0vNormal );  
    
xs_vec_addvNewOriginvNormalvBeamEnd );  

    
engfuncEngFunc_TraceLinevNewOriginvBeamEndIGNORE_MONSTERS, -1);  

    
get_tr20TR_vecPlaneNormalvNormal );  
    
get_tr20TR_vecEndPosvTracedBeamEnd );  

    
// -- Save results to be used later.  
    
set_pev(i_EntLASERMINE_OWNERid );  
    
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_POWERUPfCurrTime 2.5 );  

    
set_pev(i_Ent,LASERMINE_STEP,POWERUP_THINK);  
    
set_pev(i_Ent,pev_nextthinkfCurrTime 0.2 );  

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

stock TeamDeployedCount(id)  
{
      
    
//new tid[32];  

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

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

    return 
cnt;  
}  

bool:CheckCanTeam(id)  
{
      
    new 
arg[5],CsTeam:num;  
    
get_pcvar_string(g_LCBT,arg,3);  
    if(
equali(arg,"T"))  
    {
          
        
num CsTeam:CS_TEAM_T;  
    }  
    else if(
equali(arg,"CT"))  
    {
          
        
num CsTeam:CS_TEAM_CT;  
    }  
    else if(
equali(arg,"ALL"))  
    {
          
        
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_numg_LENABLE ) )  
    {
          
        
//        client_print(id, print_chat, "%s %s",CHATTAG,STR_NOTACTIVE); 
        
ColorChat(idNORMAL"^4%s ^3%s",CHATTAG,STR_NOTACTIVE); 
        
client_cmd(id"spk buttons/button2.wav"); 
        return 
false;  
    }  
    if( 
get_pcvar_num(g_LACCESS) != 0)  
    if(!(
get_user_flags(id) & ADMIN_IMMUNITY))  
    {
          
        
//            client_print(id, print_chat, "%s %s",CHATTAG,STR_NOACCESS); 
        
ColorChat(idNORMAL"^4%s ^3%s",CHATTAG,STR_NOACCESS);             
        return 
false;  
    }  
    if(!
pev_user_alive(id)) return false;  
    
#if defined BIOHAZARD_SUPPORT  
    
if(is_user_zombie(id))  
    {
          
        
//        client_print(id, print_chat, "%s %s",CHATTAG,STR_CBT);  
        
ColorChat(idNORMAL"^4%s ^3%s",CHATTAG,STR_CBT); 
        return 
false;  
    }  
    
#endif  
    
if (!CheckCanTeam(id))  
    {
          
        
//       client_print(id, print_chat, "%s %s",CHATTAG,STR_CBT);  
        
ColorChat(idNORMAL"^4%s ^3%s",CHATTAG,STR_CBT);  
        return 
false;  
    }  
    if( 
mode == 0)  
    {
          
        if(
g_havemine[id] <= 0)  
        {
              
            
//            client_print(id, print_chat, "%s %s",CHATTAG,STR_DONTHAVEMINE); 
            
ColorChat(idNORMAL"^4%s ^3%s",CHATTAG,STR_DONTHAVEMINE); 
            
client_cmd(id"spk buttons/button2.wav"); 
            return 
false;  
        }  
    }  
    if (
mode == 1)  
    {
          
        if (
get_pcvar_num(g_LBUYMODE) == 0)  
        {
              
            
//            client_print(id, print_chat, "%s %s",CHATTAG,STR_CANTBUY);  
            
ColorChat(idNORMAL"^4%s ^3%s",CHATTAG,STR_CANTBUY); 
            return 
false;  
        }  
        if (
g_havemine[id] >= get_pcvar_num(g_LAMMO))  
        {
              
            
//            client_print(id, print_chat, "%s %s",CHATTAG,STR_HAVEMAX);  
            
ColorChat(idNORMAL"^4%s ^3%s",CHATTAG,STR_HAVEMAX); 
            return 
false;  
        }  
        if (
cs_get_user_money(id) < get_pcvar_num(g_LCOST))  
        {
              
            
client_print(idprint_chat"%s %s%d %s",CHATTAGSTR_NOMONEY,get_pcvar_num(g_LCOST),STR_NEEDED);  
            return 
false;  
        }  
    }  
    if(!
CheckTime(id))  
    {
          
        
//        client_print(id,print_chat, "%s %s %d %s",CHATTAG,STR_DELAY,get_pcvar_num(g_LDELAY)-g_nowtime,STR_SECONDS); 
        
ColorChat(id,NORMAL"^4%s ^3%s ^1%d ^3%s",CHATTAG,STR_DELAY,get_pcvar_num(g_LDELAY)-g_nowtime,STR_SECONDS); 
        
client_cmd(id"spk buttons/button2.wav"); 
        return 
false;  
    }  

    return 
true;  
}  

bool:ReturnCheckid )  
{
      
    if(!
CanCheck(id,-1)) return false;  
    if(
g_havemine[id] + 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) > 90.0) return false;  

    new 
EntityName[32];  
    
pev(tgtpev_classnameEntityName31);  
    if(!
equal(EntityNameENT_CLASS_NAME)) return false;  
    if(
pev(tgt,LASERMINE_OWNER) != id) return false;  

    return 
true;  
}  

bool:CreateCheckid )  
{
      
    if (!
CanCheck(id,0)) return false;  
    if (
g_deployed[id] >= get_pcvar_num(g_LAMMO))  
    {
          
        
//        client_print(id, print_chat, "%s %s",CHATTAG,STR_MAXDEPLOY);  
        
ColorChat(idNORMAL"^4%s ^3%s",CHATTAG,STR_MAXDEPLOY); 
        return 
false;  
    }  

    
//client_print(id,print_chat,"[Lasermine] your team deployed %d",TeamDeployedCount(id))  
    
if(TeamDeployedCount(id) >= get_pcvar_num(g_LTMAX))  
    {
          
        
//        client_print(id, print_chat, "%s %s",CHATTAG,STR_MANYPPL);  
        
ColorChat(idNORMAL"^4%s ^3%s",CHATTAG,STR_MANYPPL); 
        return 
false;  
    }  

    new 
Float:vTraceDirection[3], Float:vTraceEnd[3],Float:vOrigin[3];  

    
pevidpev_originvOrigin );  
    
velocity_by_aimid128vTraceDirection );  
    
xs_vec_addvTraceDirectionvOriginvTraceEnd );  

    
engfuncEngFunc_TraceLinevOriginvTraceEndDONT_IGNORE_MONSTERSid);  

    new 
Float:fFraction,Float:vTraceNormal[3];  
    
get_tr20TR_flFractionfFraction );  

    
// -- We hit something!  
    
if ( fFraction 1.0 )  
    {
          
        
// -- Save results to be used later.  
        
get_tr20TR_vecEndPosvTraceEnd );  
        
get_tr20TR_vecPlaneNormalvTraceNormal );  

        
//get_tr2( 0, TR_pHit );  

        
return true;  
    }  

    
//    client_print(id, print_chat, "%s %s",CHATTAG,STR_PLANTWALL) 
    
ColorChat(idNORMAL"^4%s ^3%s",CHATTAG,STR_PLANTWALL
    
client_cmd(id"spk buttons/button2.wav");     
    
DeleteTask(id);  
    
// -- Did not touched something. (not solid)  
    
return false;  
}  

public 
ltm_Thinki_Ent )  
{
      
    if ( !
pev_validi_Ent ) )  
    return 
FMRES_IGNORED;  
    new 
EntityName[32];  
    
pevi_Entpev_classnameEntityName31);  
    if(!
get_pcvar_num(g_LENABLE)) return FMRES_IGNORED;  
    
// -- Entity is not a tripmine, ignoring the next...  
    
if ( !equalEntityNameENT_CLASS_NAME ) )  
    return 
FMRES_IGNORED;  

    static 
Float:fCurrTime;  
    
fCurrTime get_gametime();  

    switch( 
pevi_EntLASERMINE_STEP ) )  
    {
          
        case 
POWERUP_THINK :  
        {
              
            new 
Float:fPowerupTime;  
            
pevi_EntLASERMINE_POWERUPfPowerupTime );  

            if( 
fCurrTime fPowerupTime )  
            {
                  
                
set_pevi_Entpev_solidSOLID_BBOX );  
                
set_pevi_EntLASERMINE_STEPBEAMBREAK_THINK );  

                
PlaySoundi_EntACTIVATE_SOUND );  
            }  
            if(
get_pcvar_num(g_LGLOW)!=0)  
            {
                  
                if(
get_pcvar_num(g_LCLMODE)==0)  
                {
                      
                    switch (
pev(i_Ent,LASERMINE_TEAM))  
                    {
                          
                        case 
CS_TEAM_Tset_rendering(i_Ent,kRenderFxGlowShell,255,0,20,kRenderNormal,5);  
                        case 
CS_TEAM_CT:set_rendering(i_Ent,kRenderFxGlowShell,0,100,255,kRenderNormal,5);  
                    }  
                }else  
                {
                      
                    
set_rendering(i_Ent,kRenderFxGlowShell,0,255,0,kRenderNormal,5);  
                }  
            }  
            
set_pevi_Entpev_nextthinkfCurrTime 0.1 );  
        }  
        case 
BEAMBREAK_THINK :  
        {
              
            static 
Float:vEnd[3],Float:vOrigin[3];  
            
pevi_Entpev_originvOrigin );  
            
pevi_EntLASERMINE_BEAMENDPOINTvEnd );  

            static 
iHitFloat:fFraction;  
            
engfuncEngFunc_TraceLinevOriginvEndDONT_IGNORE_MONSTERSi_Ent);  

            
get_tr20TR_flFractionfFraction );  
            
iHit get_tr20TR_pHit );  

            
// -- Something has passed the laser.  
            
if ( fFraction 1.0 )  
            {
                  
                
// -- Ignoring others tripmines entity.  
                
if(pev_valid(iHit))  
                {
                      
                    
peviHitpev_classnameEntityName31 );  

                    if( !
equalEntityNameENT_CLASS_NAME ) )  
                    {
                          
                        
set_pevi_Entpev_enemyiHit );  
                        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_pevi_EntLASERMINE_STEPEXPLOSE_THINK );  

                        
set_pevi_Entpev_nextthinkfCurrTime random_float0.10.3 ) );  
                    }  
                }  
            }  
            if(
get_pcvar_num(g_LDMGMODE)!=0)  
            if(
pev(i_Ent,LASERMINE_HITING) != iHit)  
            
set_pev(i_Ent,LASERMINE_HITING,iHit);  

            
// -- Tripmine is still there.  
            
if ( pev_validi_Ent ))  
            {
                  
                static 
Float:fHealth;  
                
pevi_Entpev_healthfHealth );  

                if( 
fHealth <= 0.0 || (pev(i_Ent,pev_flags) & FL_KILLME))  
                {
                      
                    
set_pevi_EntLASERMINE_STEPEXPLOSE_THINK );  
                    
set_pevi_Entpev_nextthinkfCurrTime random_float0.10.3 ) );  
                }  

                static 
Float:fBeamthink;  
                
pevi_EntLASERMINE_BEAMTHINKfBeamthink );  

                if( 
fBeamthink fCurrTime && get_pcvar_num(g_LVISIBLE))  
                {
                      
                    
DrawLaser(i_EntvOriginvEnd );  
                    
set_pevi_EntLASERMINE_BEAMTHINKfCurrTime 0.1 );  
                }  
                
set_pevi_Entpev_nextthinkfCurrTime 0.01 );  
            }  
        }  
        case 
EXPLOSE_THINK :  
        {
              
            
// -- Stopping entity to think  
            
set_pevi_Entpev_nextthink0.0 );  
            
PlaySoundi_EntSTOP_SOUND );  
            
g_deployed[pev(i_Ent,LASERMINE_OWNER)]--;  
            
CreateExplosioni_Ent );  
            
CreateDamage(i_Ent,get_pcvar_float(g_LRDMG),get_pcvar_float(g_LRADIUS))  
            
RemoveEntity   i_Ent );  
        }  
    }  

    return 
FMRES_IGNORED;  
}  

PlaySoundi_Enti_SoundType )  
{
      
    switch ( 
i_SoundType )  
    {
          
        case 
POWERUP_SOUND :  
        {
              
            
emit_soundi_EntCHAN_VOICEENT_SOUND1VOL_NORMATTN_NORM0PITCH_NORM );  
            
emit_soundi_EntCHAN_BODY ENT_SOUND20.2ATTN_NORM0PITCH_NORM );  
        }  
        case 
ACTIVATE_SOUND :  
        {
              
            
emit_soundi_EntCHAN_VOICEENT_SOUND30.5ATTN_NORM175 );  
        }  
        case 
STOP_SOUND :  
        {
              
            
emit_soundi_EntCHAN_BODY ENT_SOUND20.2ATTN_NORMSND_STOPPITCH_NORM );  
            
emit_soundi_EntCHAN_VOICEENT_SOUND30.5ATTN_NORMSND_STOP75 );  
        }  
    }  
}  

DrawLaser(i_Ent, const Float:v_Origin[3], const Float:v_EndOrigin[3] )  
{
      
    new 
tcolor[3];  
    new 
teamid pev(i_EntLASERMINE_TEAM);  
    if(
get_pcvar_num(g_LCLMODE) == 0)  
    {
          
        switch(
teamid){  
            case 
1:{  
                
tcolor[0] = 255;  
                
tcolor[1] = 20;  
                
tcolor[2] = 0;  
            }  
            case 
2:{  
                
tcolor[0] = 0;  
                
tcolor[1] = 100;  
                
tcolor[2] = 255;  
            }  
        }  
    }else  
    {
          
        
tcolor[0] = 0;  
        
tcolor[1] = 255;  
        
tcolor[2] = 0;  
    }  
    
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]); //Random  
    
engfunc(EngFunc_WriteCoord,v_EndOrigin[1]); //Random  
    
engfunc(EngFunc_WriteCoord,v_EndOrigin[2]); //Random  
    
write_short(beam);  
    
write_byte(0);  
    
write_byte(0);  
    
write_byte(1);    //Life  
    
write_byte(5);    //Width  
    
write_byte(0);    //wave  
    
write_byte(tcolor[0]); // r  
    
write_byte(tcolor[1]); // g  
    
write_byte(tcolor[2]); // b  
    
write_byte(get_pcvar_num(g_LCBRIGHT));  
    
write_byte(255);  
    
message_end();  
}  
/*  
CreateDamage(iCurrent,DmgMAX,Float:Radius)  
{
      
    new AtkID = pev(iCurrent,LASERMINE_OWNER)// entity_get_int(iCurrent,LASERMINE_OWNER)  
    new TeamID= pev(iCurrent,LASERMINE_TEAM) //entity_get_int(iCurrent,LASERMINE_INT_TEAM)  
    new Player = -1;  
    new Float:distance,dmg;  
    new Float:tOrigin[3];  
    new Float:vOrigin[3];  
    new iHitHP,iHitTeam;  
    pev(iCurrent,pev_origin,vOrigin);  
    while((Player = engfunc(EngFunc_FindEntityInSphere, Player, vOrigin, Radius)) != 0)  
    {
          
        if(is_user_alive(Player))  
        {
              
            pev(Player,pev_origin,tOrigin)  
            distance = get_distance_f(vOrigin, tOrigin)  
            dmg = floatround(DmgMAX - ((DmgMAX / Radius) * distance))  
            iHitHP = pev_user_health(Player) - dmg  
            iHitTeam = int:bio_get_user_team(Player)  
            if(iHitHP <= 0)  
            {
                  
                if(iHitTeam != TeamID)  
                {
                      
                    cs_set_user_money(AtkID,cs_get_user_money(AtkID) + get_pcvar_num(g_LFMONEY))  
                    set_score(AtkID,Player,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,Player,-1,iHitHP)  
                    }  
                }  
            }else  
            {
                  
                if(iHitTeam != TeamID || get_pcvar_num(g_LFF))  
                {
                      
                    //set_pev(Player,pev_health,iHitHP)  
                    set_user_health(Player, iHitHP)  
                    message_begin(MSG_ONE_UNRELIABLE, g_msgDamage, {0,0,0}, Player)   
                    write_byte(dmg)  
                    write_byte(dmg)  
                    write_long(DMG_BULLET)  
                    engfunc(EngFunc_WriteCoord,vOrigin[0])  
                    engfunc(EngFunc_WriteCoord,vOrigin[1])  
                    engfunc(EngFunc_WriteCoord,vOrigin[2])  
                    message_end()  
                }  
            }  
        }  
        Player =  engfunc(EngFunc_FindEntityInSphere,Player,vOrigin,Radius)  
    }  
    return PLUGIN_CONTINUE  
}  
*/  
CreateDamage(iCurrent,Float:DmgMAX,Float:Radius)  
{
      
    
// Get given parameters  

    
new Float:vecSrc[3];  
    
pev(iCurrentpev_originvecSrc);  

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

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

    new 
Float:kickback 0.0;  

    
// Needed for doing some nice calculations :P  
    
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;  
    
// Calculate falloff  
    
new Float:falloff;  
    if (
Radius 0.0)  
    {
          
        
falloff DmgMAX Radius;  
    } else {  
        
falloff 1.0;  
    }  

    
// Find monsters and players inside a specifiec radius  
    
while((ent engfunc(EngFunc_FindEntityInSphereentvecSrcRadius)) != 0)  
    {
          
        if(!
pev_valid(ent)) continue;  
        if(!(
pev(entpev_flags) & (FL_CLIENT FL_FAKECLIENT)))  
        {
              
            
// Entity is not a player or monster, ignore it  
            
continue;  
        }  
        if(!
pev_user_alive(ent)) continue;  
        
// Reset data  
        
kickback 1.0;  
        
tmpdmg DmgMAX;  

        
// The following calculations are provided by Orangutanz, THANKS!  
        // We use absmin and absmax for the most accurate information  
        
pev(entpev_absminTabsmin);  
        
pev(entpev_absmaxTabsmax);  
        
xs_vec_add(Tabsmin,Tabsmax,Tabsmin);  
        
xs_vec_mul_scalar(Tabsmin,0.5,vecSpot);  

        
pev(iCurrentpev_absminAabsmin);  
        
pev(iCurrentpev_absmaxAabsmax);  
        
xs_vec_add(Aabsmin,Aabsmax,Aabsmin);  
        
xs_vec_mul_scalar(Aabsmin,0.5,vecSee);  

        
engfunc(EngFunc_TraceLinevecSeevecSpot0iCurrenttrRes);  
        
get_tr2(trResTR_flFractionflFraction);  
        
// Explosion can 'see' this entity, so hurt them! (or impact through objects has been enabled xD)  
        
if (flFraction >= 0.9 || get_tr2(trResTR_pHit) == ent)  
        {
              
            
// Work out the distance between impact and entity  
            
get_tr2(trResTR_vecEndPosvecEndPos);  

            
distance get_distance_f(vecSrcvecEndPos) * falloff;  
            
tmpdmg -= distance;  
            if(
tmpdmg 0.0)  
            
tmpdmg 0.0;  

            
// Kickback Effect  
            
if(kickback != 0.0)  
            {
                  
                
xs_vec_sub(vecSpot,vecSee,origin);  

                
invlen 1.0/get_distance_f(vecSpotvecSee);  

                
xs_vec_mul_scalar(origin,invlen,vecPush);  
                
pev(entpev_velocityvelocity)  
                
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)  
                {
                      
                    
// There's some movement todo :)  
                    
set_pev(entpev_velocityvelocity)  
                }  
            }  

            
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_pev(Player,pev_health,iHitHP)  
                    
set_user_health(entiHitHP)  
                    
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_BROADCASTSVC_TEMPENTITY);  
    
write_byte(99); //99 = KillBeam  
    
write_short(iCurrent);  
    
message_end();  

    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYvOrigin0);  
    
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 ) 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(iCurrentLASERMINE_TEAM)  

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


    szClassName
[0] = '^0'  
    
pev(isHit,pev_classname,szClassName,32)  

    if((
pev(isHitpev_flags) & (FL_CLIENT FL_FAKECLIENT)) && !equal(szClassNameENT_CLASS_NAME))  
    {
          
        
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)//, szNetName[32]  
        
if(iHitHP <= 0)  
        {
              
            if(
iHitTeam != teamid)  
            {
                  
                
client_cmd(isHit"spk %s"ENT_SOUND4)  
                
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))  
                {
                      
                    
client_cmd(isHit"spk %s"ENT_SOUND4)  
                    
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))  
        {
              
            
client_cmd(isHit"spk %s"ENT_SOUND4)  
            
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(szClassNameENT_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 set_pev(idpev_healthfloat(health)) : dllfunc(DLLFunc_ClientKillid);  
}  

stock get_user_godmode(index) {  
    new 
Float:val  
    pev
(indexpev_takedamageval)  

    return (
val == DAMAGE_NO)  
}  

stock set_user_frags(indexfrags)  
{
      
    
set_pev(indexpev_fragsfloat(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// get_user_frags(id) + hitscore      
    
set_user_frags(id,idfrags)  
    
//set_user_frags(id, idfrags)  
    //entity_set_float(id, EV_FL_frags, float(idfrags))  

    
new tarfrags pev_user_frags(target) + //get_user_frags(target) + 1  
    
set_user_frags(target,tarfrags)  
    
//set_user_frags(target,tarfrags)  
    //entity_set_float(target, EV_FL_frags, float(tarfrags))  

    
new idteam int:cs_get_user_team(id)  
    new 
iddeaths cs_get_user_deaths(id)  


    
message_begin(MSG_BROADCASTg_msgDeathMsg, {000} ,0)  
    
write_byte(id)  
    
write_byte(target)  
    
write_byte(0)  
    
write_string(ENT_CLASS_NAME)  
    
message_end()  

    
message_begin(MSG_BROADCASTg_msgScoreInfo)  
    
write_byte(id)  
    
write_short(idfrags)  
    
write_short(iddeaths)  
    
write_short(0)  
    
write_short(idteam)  
    
message_end()  

    
set_msg_block(g_msgDeathMsgBLOCK_ONCE)  

    
//entity_set_float(target, EV_FL_health,float(HP))  
    
set_user_health(targetHP)  
    
//set_pev(target,pev_health,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, "%s %s",CHATTAG,STR_BOUGHT)  
    
ColorChat(idNORMAL"^4%s ^3%s",CHATTAG,STR_BOUGHT)  
    
emit_sound(idCHAN_ITEMENT_SOUND5VOL_NORMATTN_NORM0PITCH_NORM)  
    
ShowAmmo(id)  
    return 
PLUGIN_HANDLED  
}  

ShowAmmo(id)  
{
       
    new 
ammo[51]   
    
formatex(ammo50"%s %i/%i",STR_STATEg_havemine[id],get_pcvar_num(g_LAMMO))  

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

public 
showInfo(id)  
{
      
    
client_print(idprint_chatSTR_REF
}  

public 
say_lasermine(id){  
    new 
said[32]  
    
read_argv(1,said,31);  
    if( !
get_pcvar_numg_LENABLE )  ){  
        
//        client_print(id, print_chat, "%s Lasermines are not currently active.",CHATTAG)  
        
return PLUGIN_CONTINUE  
    
}  

    if (
equali(said,"/buy lasermine")||equali(said,"/lm")){  
        
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>You can be setting the mine on the wall.</p><br/>")  
        
len += formatex(msg[len], SIZE len"<p>That laser will give what touched it damage.</p><br/><br/>")  
        
len += formatex(msg[len], SIZE len"<p><b>LaserMine Commands</b></p><br/><br/>")  
        
len += formatex(msg[len], SIZE len"<p><b>Say /buy lasermine</b> or <b>Say /lm</b> //buying lasermine<br/>")  
        
len += formatex(msg[len], SIZE len"<b>buy_lasermine</b> //bind ^"F2^" buy_lasermine : using F2 buying lasermine<br/>")  
        
len += formatex(msg[len], SIZE len"<b>+setlaser</b> //bind mouse3 +setlaser : using mouse3 set lasermine on wall<br/>")  
        
len += formatex(msg[len], SIZE len"</body></html>")  
        
show_motd(idmsg"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
(idpev_maxspeed1.0)  
    
//    ShowAmmo(id)  

    
return PLUGIN_CONTINUE  
}  

public 
ltm_PostThink(id)   
{
      
    if (!
g_settinglaser[id] && plsetting[id]){  
        
resetspeed(id)  
    }  
    else if (
g_settinglaser[id] && !plsetting[id]) {  
        
pev(idpev_maxspeed,plspeed[id])  
        
set_pev(idpev_maxspeed1.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(idpev_button ) & IN_USE && !(pev(idpev_oldbuttons ) & IN_USE ))  
    
//client_print(id,print_chat,"test");  
    
CreateLaserMine_Progress(id)  
    return 
FMRES_IGNORED;  
}  

resetspeed(id)  
{
      
    
set_pev(idpev_maxspeedplspeed[id])  
}  

public 
client_putinserver(id){  
    
g_deployed[id] = 0;  
    
g_havemine[id] = 0;  
    
DeleteTask(id);  
    return 
PLUGIN_CONTINUE  
}  

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


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

public 
DeathEvent(){  
    if(!
get_pcvar_numg_LENABLE ))  
    return 
PLUGIN_CONTINUE  

    
new id read_data(2)  
    if(
is_user_connected(id)) DeleteTask(id);  
    return 
PLUGIN_CONTINUE  
}  

public 
RemoveAllTripminesi_Owner )  
{
      
    new 
iEnt g_MaxPL 1;  
    new 
clsname[32];  
    while( ( 
iEnt engfuncEngFunc_FindEntityByStringiEnt"classname"ENT_CLASS_NAME ) ) )  
    {
          
        if ( 
i_Owner )  
        {
              
            if( 
peviEntLASERMINE_OWNER ) != i_Owner )  
            continue;  
            
clsname[0] = '^0'  
            
peviEntpev_classnameclsnamesizeof(clsname)-);  

            if ( 
equaliclsnameENT_CLASS_NAME ) )  
            {
                  
                
PlaySoundiEntSTOP_SOUND );  
                
RemoveEntityiEnt );  
            }  
        }  
        else  
        
set_peviEntpev_flagsFL_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);  
}  

#if defined BIOHAZARD_SUPPORT  
public event_infect2(id)  
{
      
    
//    DeleteTask(id);  
    
return PLUGIN_CONTINUE  
}  
#endif  

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(entityfx kRenderFxNone255255255render kRenderNormalamount 16)  
{
      
    static 
Float:RenderColor[3];  
    
RenderColor[0] = float(r);  
    
RenderColor[1] = float(g);  
    
RenderColor[2] = float(b);  

    
set_pev(entitypev_renderfxfx);  
    
set_pev(entitypev_rendercolorRenderColor);  
    
set_pev(entitypev_rendermoderender);  
    
set_pev(entitypev_renderamtfloat(amount));  

    return 
1  
}  

// Gets offset data  
get_offset_value(idtype)  
{
      
    new 
key = -1;  
    switch(
type)  
    {
          
        case 
OFFSET_TEAMkey OFFSET_TEAM;  
        case 
OFFSET_MONEY:  
        {
              
            
#if defined UL_MONEY_SUPPORT  
            
return cs_get_user_money_ul(id);  
            
#else  
            
key OFFSET_MONEY;  
            
#endif  
        
}  
        case 
OFFSET_DEATHkey OFFSET_DEATH;  
    }  

    if(
key != -1)  
    {
          
        if(
is_amd64_server()) key += 25;  
        return 
get_pdata_int(idkey);  
    }  

    return -
1;  
}  

// Sets offset data  
set_offset_value(idtypevalue)  
{
      
    new 
key = -1;  
    switch(
type)  
    {
          
        case 
OFFSET_TEAMkey OFFSET_TEAM;  
        case 
OFFSET_MONEY:  
        {
              
            
#if defined UL_MONEY_SUPPORT  
            
return cs_set_user_money_ul(idvalue);  
            
#else  
            
key OFFSET_MONEY;  

            
// Send Money message to update player's HUD  
            
message_begin(MSG_ONE_UNRELIABLEg_msgMoney, {0,0,0}, id);  
            
write_long(value);  
            
write_byte(1);    // Flash (difference between new and old money)  
            
message_end();  
            
#endif  
        
}  
        case 
OFFSET_DEATHkey OFFSET_DEATH;  
    }  

    if(
key != -1)  
    {
          
        if(
is_amd64_server()) key += 25;  
        
set_pdata_int(idkeyvalue);  
    }  

    return 
PLUGIN_CONTINUE;  

public 
fw_TraceLineFloat:fStart[3] , Float:fEnd[3] , Conditions id iTrace 

    static 
entszClassName[33], szPlayerName[32], playeridFloatfHealth;
  
    if( 
pev_valid( ( ent get_tr2iTrace TR_pHit ) ) ) ) 
    { 
        
pev(entpev_classnameszClassNameszClassName,32)
        
pev(entpev_healthfHealth )
    
        if(
equal(szClassNameENT_CLASS_NAME)) 
        {
            
playerid pev(entLASERMINE_OWNER)
            
get_user_name(playeridszPlayerName31
            
            
set_hudmessage(5050255, -1.00.800.10.10.10.1); 
            
show_hudmessage(id"Lasermine de: %s^nVida: %0.1f%%"szPlayerNamefHealth 100 get_pcvar_numg_pCvarg_LHEALTH ] )); 
        }
    }

__________________
√ Zombie plague + greats updates. finished.
√ Surf-Mod level + greats updates Finished.
√ Zombie Scenario like cso. Finished.
Click Here
√ Call Of Duty MOD. Finished.
Click Here


Sorry for my bad english. I'm using translate.
sirerick is offline
PowereXe
Member
Join Date: Jan 2017
Location: Turkey, Istanbul
Old 05-27-2017 , 16:30   Re: [REQ/SMA Edit] Lasermine Owner HUD Info
Reply With Quote #5

I Tried Plugin Which You Edited. But These Problems...

g_pCvar Not Defined. But I Don't Know How Can I Define.

PHP Code:
show_hudmessage(id"Lasermine de: %s^nVida: %0.1f%%"szPlayerNamefHealth 100 get_pcvar_numg_pCvarg_LHEALTH ] )); 

Last edited by PowereXe; 05-27-2017 at 16:38.
PowereXe is offline
sirerick
Senior Member
Join Date: Jul 2012
Location: Venezuela
Old 05-27-2017 , 21:21   Re: [REQ/SMA Edit] Lasermine Owner HUD Info
Reply With Quote #6

my bad

PHP Code:
get_pcvar_numg_pCvarg_LHEALTH ] ) 
--->

PHP Code:
get_pcvar_num(g_LHEALTH
__________________
√ Zombie plague + greats updates. finished.
√ Surf-Mod level + greats updates Finished.
√ Zombie Scenario like cso. Finished.
Click Here
√ Call Of Duty MOD. Finished.
Click Here


Sorry for my bad english. I'm using translate.
sirerick is offline
PartialCloning
Senior Member
Join Date: Dec 2015
Old 05-27-2017 , 21:21   Re: [REQ/SMA Edit] Lasermine Owner HUD Info
Reply With Quote #7

Quote:
Originally Posted by PowereXe View Post
PHP Code:
peviHit pev_iuser2 szOwner); 
Changed To:

PHP Code:
szOwner peviHit pev_iuser2); 
But Plugin Not Working
What does it say when aiming at the entity?

Replace the whole fw_TraceLine function with:
Code:
public fw_TraceLine(Float:fStart[3], Float:fEnd[3], Conditions, id, iTrace) {     static iHit, szClass[33], Owner, Float:Health, szMessage[80], nick[32];     if(pev_valid((iHit = get_tr2(iTrace, TR_pHit))))     {         pev(iHit, pev_classname, szClass, charsmax(szClass));         if(equali(szClass,"lasermine"))         {             Owner = pev(iHit, pev_iuser2);             pev(iHit, pev_health, Health);             get_user_name(Owner, nick, charsmax(nick));             formatex(szMessage, charsmax(szMessage), "Lazer Sahibi: %s -- Can: %.0f", nick, Health);             set_hudmessage(0, 102, 204, 0.5, 0.5, 0, 0.0, 1.0);             ShowSyncHudMsg(id, hudhandler, szMessage);         }     } }

Last edited by PartialCloning; 05-27-2017 at 21:22.
PartialCloning is offline
PowereXe
Member
Join Date: Jan 2017
Location: Turkey, Istanbul
Old 05-28-2017 , 06:23   Re: [REQ/SMA Edit] Lasermine Owner HUD Info
Reply With Quote #8

Quote:
Originally Posted by sirerick View Post
my bad

PHP Code:
get_pcvar_numg_pCvarg_LHEALTH ] ) 
--->

PHP Code:
get_pcvar_num(g_LHEALTH
Thanx Dude. Worked. I Could'nt Test With Players But I Test On Myself HLDS. Laser Owner: Me (I'm Not Sure If Somebody Create Lasermine And Writing My Name ). Laser Health Is Working Very Well.
If You Can Test Please Tell Me. I Haven't Got A Public Server. Only HLDS And Podbots (They Can't Create Laser)
PowereXe is offline
PowereXe
Member
Join Date: Jan 2017
Location: Turkey, Istanbul
Old 05-28-2017 , 06:24   Re: [REQ/SMA Edit] Lasermine Owner HUD Info
Reply With Quote #9

Quote:
Originally Posted by PartialCloning View Post
What does it say when aiming at the entity?

Replace the whole fw_TraceLine function with:
Code:
public fw_TraceLine(Float:fStart[3], Float:fEnd[3], Conditions, id, iTrace) {     static iHit, szClass[33], Owner, Float:Health, szMessage[80], nick[32];     if(pev_valid((iHit = get_tr2(iTrace, TR_pHit))))     {         pev(iHit, pev_classname, szClass, charsmax(szClass));         if(equali(szClass,"lasermine"))         {             Owner = pev(iHit, pev_iuser2);             pev(iHit, pev_health, Health);             get_user_name(Owner, nick, charsmax(nick));             formatex(szMessage, charsmax(szMessage), "Lazer Sahibi: %s -- Can: %.0f", nick, Health);             set_hudmessage(0, 102, 204, 0.5, 0.5, 0, 0.0, 1.0);             ShowSyncHudMsg(id, hudhandler, szMessage);         }     } }
Thanks Dude. It's Worked. Showed My Name. But I'm Not Sure About That In Public Server. Because Lasermine Health Seemed Wrong.
PowereXe is offline
siska15
Junior Member
Join Date: Jun 2017
Old 07-06-2017 , 16:51   Re: Lasermine Owner HUD Info
Reply With Quote #10

Please sma dowloading link pls

Last edited by siska15; 07-06-2017 at 16:51.
siska15 is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 07:40.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode