Raised This Month: $350 Target: $400
 87%   Almost there!

[Request] Lasermine fix


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
eNNkds
Member
Join Date: Sep 2012
Location: Romania
Old 05-19-2020 , 13:30   [Request] Lasermine fix
Reply With Quote #1

Request fix some erros
Code:
L 05/17/2020 - 16:20:12: Info (map "zm_gbox7") (file "addons/amxmodx/logs/error_20200517.log")
L 05/17/2020 - 16:20:12: [FAKEMETA] Invalid entity
L 05/17/2020 - 16:20:12: [AMXX] Displaying debug trace (plugin "bio_lasermines_final2.amxx")
L 05/17/2020 - 16:20:12: [AMXX] Run time error 10: native error (native "set_pev")
L 05/17/2020 - 16:20:12: [AMXX]    [0] bio_lasermines_final2.sma::ltm_Think (line 1909)
L 05/17/2020 - 16:20:12: [AMXX]    [1] bio_lasermines_final2.sma::CreateLaserDamage (line 2806)
L 05/17/2020 - 16:20:12: [AMXX]    [2] bio_lasermines_final2.sma::ltm_Think (line 1899)
PHP Code:
/* Plugin generated by AMXX-Studio */   

//#define BIOHAZARD_SUPPORT   

//#define UL_MONEY_SUPPORT   





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


#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" // 



#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/v_tripmine.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[]         = "[Biohazard]",   

#else   

CHATTAG[]         = "[Biohazard]",   

#endif   

//STR_MINEDETNATED[]     = "Your lasermine was destroyed.",   

//STR_MINEDETNATED2[]    = "destroyed your lasermine..",   

STR_NOTACTIVE[]     = "Lasermines are inactive.",   

STR_DONTHAVEMINE[]    = "You don't have lasermines.",   

//STR_CANTDEPLOY[]    = "Your team can't plant lasermines!",   

STR_MAXDEPLOY[]        = "You've planted the maximum number of lasermines.",   

STR_MANYPPL[]        = "Prea multe lasere in echipa ta...",   

STR_PLANTWALL[]        = "You need to plant the lasermine on the wall.",   

STR_REF[]        = "Refer to a lasermine rule with this server. say 'lasermine'",   

#if defined BIOHAZARD_SUPPORT       

STR_CBT[]        = "Esti un zombie, nu poti cumpara lasere !",   

#else   

STR_CBT[]        = "Echipa ta nu poate cumpara lasere !",   

#endif   

STR_CANTBUY[]        = "Nu poti cumpara pe acest server.",   

STR_HAVEMAX[]        = "The maximum number of lasermines is 2/2.",   

STR_NOMONEY[]        = "You don't have enough money to buy lasermines! ($",   

STR_NEEDED[]        = "needed)",   

STR_DELAY[]        = "You can buy and plant lasermines in",   

STR_SECONDS[]        = "seconds.",   

STR_BOUGHT[]        = "You just bought 1 lasermine.",   

STR_STATE[]        = "LaserMines Ammo:",   

STR_NOACCESS[]        = "You have no acces to this command.";   



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");    
RegisterHam(Ham_TakeDamage"func_breakable""Lasermine_TakeDamagePre")

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","5000");   

g_LFMONEY    register_cvar("bio_ltm_fragmoney","300");   

g_LHEALTH    register_cvar("bio_ltm_health","500");   

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","1");   

g_LDELAY    register_cvar("bio_ltm_delay","20");   

//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","1");        //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","5000");   

g_LFMONEY    register_cvar("amx_ltm_fragmoney","300");   

g_LHEALTH    register_cvar("amx_ltm_health","500");   

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","1");   

g_LDELAY    register_cvar("amx_ltm_delay","20");   

//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","1");        //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(idatt)

    
DeleteTask(id);
    
RemoveAllTripmines(id);
    
delaycount(id);
    
SetStartAmmo(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,20,255,0,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 );   
    
    
CreateDamage2(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] = 20;   

tcolor[1] = 255;   

tcolor[2] = 0;   

}   

case 
2:{   

tcolor[0] = 0;   

tcolor[1] = 100;   

tcolor[2] = 255;   

}   

}   

}else   





tcolor[0] = 200;   

tcolor[1] = 50;   

tcolor[2] = 100;   

}   

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   

}   

*/   

CreateDamage2(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_disconnected(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);   

}   






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



if(
cs_get_user_team(playerid) == CS_TEAM_T) {

set_hudmessage(25500, -1.00.8200.10.10.10.1);  

show_hudmessage(id"Owner: %s^n Health: %0.1f%%"szPlayerNamefHealth 100 get_pcvar_num(g_LHEALTH));



if(
cs_get_user_team(playerid) == CS_TEAM_CT) {

set_hudmessage(02550, -1.00.8200.10.10.10.1);  

show_hudmessage(id"Owner: %s^n Health: %0.1f%%"szPlayerNamefHealth 100 get_pcvar_num(g_LHEALTH));



}

}

}

public 
Lasermine_TakeDamagePre(victiminflictorattackerFloat:f_Damagebit_Damage)

    if(!
pev_valid(victim)) 
        return 
HAM_IGNORED;

    static 
EntityName[32], Owner

    
pev(victimpev_classnameEntityName31);
    if(!
equal(EntityNameENT_CLASS_NAME))
        return 
HAM_IGNORED;
    
    
Owner pev(victimLASERMINE_OWNER
    if(
Owner != attacker &&  (!is_user_zombie(attacker) && !is_user_zombie(Owner) || is_user_zombie(attacker) && is_user_zombie(Owner)))
        return 
HAM_SUPERCEDE;
    
    return 
HAM_IGNORED 

eNNkds is offline
Send a message via Skype™ to eNNkds
+ARUKARI-
AlliedModders Donor
Join Date: Jul 2004
Location: Japan
Old 05-20-2020 , 01:53   Re: [Request] Lasermine fix
Reply With Quote #2

It uses very old code modified by others.
If possible, we recommend using the latest Lasermine or Mines Platform.
__________________
GitHub
SteamWishlist

六四天安門事件

Last edited by +ARUKARI-; 05-20-2020 at 03:26.
+ARUKARI- is offline
Reply


Thread Tools
Display Modes

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 13:32.


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