1. sayfa (Toplam 2 sayfa)

el sonu lazer kalkması

Gönderilme zamanı: Sal Eyl 06, 2022 12:02 am
gönderen LWZemrahbaba
zp-LazerPlugini.sma
arkadaslar mesela birisi zm olunca lazeri insan olarak kalıyor benim istegim insanken zombi olunca direk lazeri kalkmasını ıstıyorum birde zombi ölünce lazer kurması için tekrar 11 saniye bekliyor nasıl yapıcaz

el sonu lazer kalkması

Gönderilme zamanı: Sal Eyl 06, 2022 11:04 am
gönderen 2Adam
LWZemrahbaba yazdı: Sal Eyl 06, 2022 12:02 am zp-LazerPlugini.sma
arkadaslar mesela birisi zm olunca lazeri insan olarak kalıyor benim istegim insanken zombi olunca direk lazeri kalkmasını ıstıyorum birde zombi ölünce lazer kurması için tekrar 11 saniye bekliyor nasıl yapıcaz
Buyrun;

Kod: Tümünü seç

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


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

#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(id, Color: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], 251, msg, 4);

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

	new team, ColorChange, index, MSG_Type;
	
	if(id)
	{
		MSG_Type = MSG_ONE;
		index = id;
	} else {
		index = FindPlayer();
		MSG_Type = MSG_ALL;
	}
	
	team = get_user_team(index);
	ColorChange = ColorSelection(index, MSG_Type, type);

	ShowColorMessage(index, MSG_Type, message);
		
	if(ColorChange)
	{
		Team_Info(index, MSG_Type, TeamName[team]);
	}
}

ShowColorMessage(id, type, message[])
{
	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(type, get_user_msgid_saytext, _, id);
	write_byte(id)		
	write_string(message);
	message_end();	
}

Team_Info(id, type, team[])
{
	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(type, get_user_msgid_teaminfo, _, id);
	write_byte(id);
	write_string(team);
	message_end();

	return 1;
}

ColorSelection(index, type, Color:Type)
{
	switch(Type)
	{
		case RED:
		{
			return Team_Info(index, type, TeamName[1]);
		}
		case BLUE:
		{
			return Team_Info(index, type, TeamName[2]);
		}
		case GREY:
		{
			return Team_Info(index, type, TeamName[0]);
		}
	}

	return 0;
}

FindPlayer()
{
	new i = -1;

	while(i <= 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/lazerolmesesi.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[]         = "[ZP]", 
#else 
    CHATTAG[]         = "[ZP]", 
#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 beam, boom 
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(PLUGIN, VERSION, AUTHOR); 
     
    // 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(file, 63, "%s/ltm_cvars.cfg", file); 
#else 
    format(file, 63, "%s/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 zp_infect_user(id){
            RemoveAllTripmines(id);
            g_dcount[id] = false;
} 
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_begin( MSG_ONE_UNRELIABLE, g_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_begin( MSG_ONE_UNRELIABLE, g_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_begin( MSG_ONE_UNRELIABLE, g_msgid_bartime, {0,0,0}, id ); 
    write_short(0); 
    message_end(); 

    return PLUGIN_HANDLED; 
} 

public StopReturnLaserMine(id) 
{ 

    DeleteTask(id); 
    message_begin( MSG_ONE_UNRELIABLE, g_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(tgt, pev_classname, EntityName, 31); 
    if(!equal(EntityName, ENT_CLASS_NAME)) return; 
    if(pev(tgt,LASERMINE_OWNER) != id) return; 
    RemoveEntity(tgt); 

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

    return; 
} 

public Spawn( id ) 
{ 
    id -= TASK_PLANT 
    // 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]; 
    pev( id, pev_origin, vOrigin ); 
    velocity_by_aim( id, 128, vTraceDirection ); 
    xs_vec_add( vTraceDirection, vOrigin, vTraceEnd ); 
     
    engfunc( EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0 ); 
     
    new Float:fFraction; 
    get_tr2( 0, TR_flFraction, fFraction ); 
     

    // -- We hit something! 
    if ( fFraction < 1.0 ) 
    { 
        // -- Save results to be used later. 
        get_tr2( 0, TR_vecEndPos, vTraceEnd ); 
        get_tr2( 0, TR_vecPlaneNormal, vNormal ); 
    } 


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

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

    // -- 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(vNormal, 8192.0, vNormal ); 
    xs_vec_add( vNewOrigin, vNormal, vBeamEnd ); 

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

    get_tr2( 0, TR_vecPlaneNormal, vNormal ); 
    get_tr2( 0, TR_vecEndPos, vTracedBeamEnd ); 

    // -- Save results to be used later. 
    set_pev(i_Ent, LASERMINE_OWNER, id ); 
    set_pev(i_Ent,LASERMINE_BEAMENDPOINT,vTracedBeamEnd); 
    set_pev(i_Ent,LASERMINE_TEAM,int:cs_get_user_team(id)); 
    new Float:fCurrTime = get_gametime(); 

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

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

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

    for(i = 1;i <= g_MaxPL;i++) 
    { 
        if(is_user_connected(i)) 
            if(t == cs_get_user_team(i)) 
                cnt += g_deployed[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_num( g_LENABLE ) ) 
    { 
//        client_print(id, print_chat, "%s %s",CHATTAG,STR_NOTACTIVE);
	ColorChat(id, NORMAL, "^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(id, NORMAL, "^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(id, NORMAL, "^4%s ^3%s",CHATTAG,STR_CBT);
        return false; 
    } 
#endif 
    if (!CheckCanTeam(id)) 
    { 
//       client_print(id, print_chat, "%s %s",CHATTAG,STR_CBT); 
	ColorChat(id, NORMAL, "^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(id, NORMAL, "^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(id, NORMAL, "^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(id, NORMAL, "^4%s ^3%s",CHATTAG,STR_HAVEMAX);
            return false; 
        } 
        if (cs_get_user_money(id) < get_pcvar_num(g_LCOST)) 
        { 
            client_print(id, print_chat, "%s %s%d %s",CHATTAG, STR_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:ReturnCheck( id ) 
{ 
    if(!CanCheck(id,-1)) return false; 
    if(g_havemine[id] + 1 > get_pcvar_num(g_LAMMO)) return false; 
    new tgt,body,Float:vo[3],Float:to[3]; 
    get_user_aiming(id,tgt,body); 
    if(!pev_valid(tgt)) return false; 
    pev(id,pev_origin,vo); 
    pev(tgt,pev_origin,to); 
    if(get_distance_f(vo,to) > 90.0) return false; 
     
    new EntityName[32]; 
    pev(tgt, pev_classname, EntityName, 31); 
    if(!equal(EntityName, ENT_CLASS_NAME)) return false; 
    if(pev(tgt,LASERMINE_OWNER) != id) return false; 
     
    return true; 
} 

bool:CreateCheck( id ) 
{ 
    if (!CanCheck(id,0)) return false; 
    if (g_deployed[id] >= get_pcvar_num(g_LAMMO)) 
    { 
//        client_print(id, print_chat, "%s %s",CHATTAG,STR_MAXDEPLOY); 
	ColorChat(id, NORMAL, "^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(id, NORMAL, "^4%s ^3%s",CHATTAG,STR_MANYPPL);
        return false; 
    } 
     
    new Float:vTraceDirection[3], Float:vTraceEnd[3],Float:vOrigin[3]; 
     
    pev( id, pev_origin, vOrigin ); 
    velocity_by_aim( id, 128, vTraceDirection ); 
    xs_vec_add( vTraceDirection, vOrigin, vTraceEnd ); 
     
    engfunc( EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0 ); 
     
    new Float:fFraction,Float:vTraceNormal[3]; 
    get_tr2( 0, TR_flFraction, fFraction ); 
     
    // -- We hit something! 
    if ( fFraction < 1.0 ) 
    { 
        // -- Save results to be used later. 
        get_tr2( 0, TR_vecEndPos, vTraceEnd ); 
        get_tr2( 0, TR_vecPlaneNormal, vTraceNormal ); 

        //get_tr2( 0, TR_pHit ); 

        return true; 
    } 

//    client_print(id, print_chat, "%s %s",CHATTAG,STR_PLANTWALL)
    ColorChat(id, NORMAL, "^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_Think( i_Ent ) 
{ 
    if ( !pev_valid( i_Ent ) ) 
        return FMRES_IGNORED; 
    new EntityName[32]; 
    pev( i_Ent, pev_classname, EntityName, 31); 
    if(!get_pcvar_num(g_LENABLE)) return FMRES_IGNORED; 
    // -- Entity is not a tripmine, ignoring the next... 
    if ( !equal( EntityName, ENT_CLASS_NAME ) ) 
        return FMRES_IGNORED; 

    static Float:fCurrTime; 
    fCurrTime = get_gametime(); 

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

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

                PlaySound( i_Ent, ACTIVATE_SOUND ); 
            } 
            if(get_pcvar_num(g_LGLOW)!=0) 
            { 
                if(get_pcvar_num(g_LCLMODE)==0) 
                { 
                    switch (pev(i_Ent,LASERMINE_TEAM)) 
                    { 
                        case CS_TEAM_T: set_rendering(i_Ent,kRenderFxGlowShell,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_pev( i_Ent, pev_nextthink, fCurrTime + 0.1 ); 
        } 
        case BEAMBREAK_THINK : 
        { 
            static Float:vEnd[3],Float:vOrigin[3]; 
            pev( i_Ent, pev_origin, vOrigin ); 
            pev( i_Ent, LASERMINE_BEAMENDPOINT, vEnd ); 

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

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

            // -- Something has passed the laser. 
            if ( fFraction < 1.0 ) 
            { 
                // -- Ignoring others tripmines entity. 
                if(pev_valid(iHit)) 
                { 
                    pev( iHit, pev_classname, EntityName, 31 ); 
     
                    if( !equal( EntityName, ENT_CLASS_NAME ) ) 
                    { 
                        set_pev( i_Ent, pev_enemy, iHit ); 
                        if(get_pcvar_num(g_LMODE) == MODE_LASERMINE) 
                            CreateLaserDamage(i_Ent,iHit); 
                        else 
                            if(get_pcvar_num(g_LFF) || CsTeams:pev(i_Ent,LASERMINE_TEAM) != cs_get_user_team(iHit)) 
                                set_pev( i_Ent, LASERMINE_STEP, EXPLOSE_THINK ); 
                 
                        set_pev( i_Ent, pev_nextthink, fCurrTime + random_float( 0.1, 0.3 ) ); 
                    } 
                } 
            } 
            if(get_pcvar_num(g_LDMGMODE)!=0) 
                if(pev(i_Ent,LASERMINE_HITING) != iHit) 
                    set_pev(i_Ent,LASERMINE_HITING,iHit); 
  
            // -- Tripmine is still there. 
            if ( pev_valid( i_Ent )) 
            { 
                static Float:fHealth; 
                pev( i_Ent, pev_health, fHealth ); 

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

    return FMRES_IGNORED; 
} 

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

DrawLaser(i_Ent, const Float:v_Origin[3], const Float:v_EndOrigin[3] ) 
{ 
    new tcolor[3]; 
    new teamid = pev(i_Ent, LASERMINE_TEAM); 
    if(get_pcvar_num(g_LCLMODE) == 0) 
    { 
        switch(teamid){ 
            case 1:{ 
                tcolor[0] = 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(iCurrent, pev_origin, vecSrc); 

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

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

    new Float:kickback = 0.0; 
     
    // 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_FindEntityInSphere, ent, vecSrc, Radius)) != 0) 
    { 
        if(!pev_valid(ent)) continue; 
        if(!(pev(ent, pev_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(ent, pev_absmin, Tabsmin); 
        pev(ent, pev_absmax, Tabsmax); 
        xs_vec_add(Tabsmin,Tabsmax,Tabsmin); 
        xs_vec_mul_scalar(Tabsmin,0.5,vecSpot); 
         
        pev(iCurrent, pev_absmin, Aabsmin); 
        pev(iCurrent, pev_absmax, Aabsmax); 
        xs_vec_add(Aabsmin,Aabsmax,Aabsmin); 
        xs_vec_mul_scalar(Aabsmin,0.5,vecSee); 
         
        engfunc(EngFunc_TraceLine, vecSee, vecSpot, 0, iCurrent, trRes); 
        get_tr2(trRes, TR_flFraction, flFraction); 
        // Explosion can 'see' this entity, so hurt them! (or impact through objects has been enabled xD) 
        if (flFraction >= 0.9 || get_tr2(trRes, TR_pHit) == ent) 
        { 
            // Work out the distance between impact and entity 
            get_tr2(trRes, TR_vecEndPos, vecEndPos); 
             
            distance = get_distance_f(vecSrc, vecEndPos) * 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(vecSpot, vecSee); 

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

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

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

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

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

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

CreateLaserDamage(iCurrent,isHit) 
{ 
        if(isHit < 0 ) return PLUGIN_CONTINUE 
        switch(get_pcvar_num(g_LDMGMODE)) 
        { 
                case 1: 
                { 
                        if(pev(iCurrent,LASERMINE_HITING) == isHit) 
                                return PLUGIN_CONTINUE 
                } 
                case 2: 
                { 
                        if(pev(iCurrent,LASERMINE_HITING) == isHit) 
                        { 
                                static Float:cnt 
                                static now,htime;now = floatround(get_gametime()) 
  
                                pev(iCurrent,LASERMINE_COUNT,cnt) 
                                htime = floatround(cnt) 
                                if(now - htime < get_pcvar_num(g_LDSEC)) 
                                { 
                                        return PLUGIN_CONTINUE; 
                                }else{ 
                                        set_pev(iCurrent,LASERMINE_COUNT,get_gametime()) 
                                } 
                        }else 
                        { 
                                set_pev(iCurrent,LASERMINE_COUNT,get_gametime()) 
                        } 
                } 
        } 
  
        new Float:vOrigin[3],Float:vEnd[3] 
        pev(iCurrent,pev_origin,vOrigin) 
        pev(iCurrent,pev_vuser1,vEnd) 
  
        new teamid = pev(iCurrent, LASERMINE_TEAM) 
  
        new szClassName[32] 
        new Alive,God 
        new iHitTeam,iHitHP,id 
        new hitscore 
  
        
        szClassName[0] = '^0' 
        pev(isHit,pev_classname,szClassName,32) 
        
        if((pev(isHit, pev_flags) & (FL_CLIENT | FL_FAKECLIENT)) && !equal(szClassName, ENT_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(szClassName, ENT_CLASS_NAME3)) 
        { 
                new hl; 
                hl = pev_user_health(isHit); 
                set_user_health(isHit,hl-get_pcvar_num(g_LDMG)); 
        } 
        return PLUGIN_CONTINUE 
} 

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

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

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

    return (val == DAMAGE_NO) 
} 

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

    return 1 
} 

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

set_score(id,target,hitscore,HP){ 

    new idfrags = pev_user_frags(id) + hitscore// 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) + 1 //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_BROADCAST, g_msgDeathMsg, {0, 0, 0} ,0) 
    write_byte(id) 
    write_byte(target) 
    write_byte(0) 
    write_string(ENT_CLASS_NAME) 
    message_end() 

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

    set_msg_block(g_msgDeathMsg, BLOCK_ONCE) 

    //entity_set_float(target, EV_FL_health,float(HP)) 
    set_user_health(target, HP) 
    //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(id, NORMAL, "^4%s ^3%s",CHATTAG,STR_BOUGHT) 
    emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) 
    ShowAmmo(id) 
    return PLUGIN_HANDLED 
} 

ShowAmmo(id) 
{  
    new ammo[51]  
    formatex(ammo, 50, "%s %i/%i",STR_STATE, g_havemine[id],get_pcvar_num(g_LAMMO)) 

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

public showInfo(id) 
{ 
    client_print(id, print_chat, STR_REF)
} 

public say_lasermine(id){ 
    new said[32] 
    read_argv(1,said,31); 
    if( !get_pcvar_num( g_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(id, msg, "Lasermine Entity help") 
        return PLUGIN_CONTINUE 
    } 
    else if (containi(said, "laser") != -1) { 
        showInfo(id) 
        return PLUGIN_CONTINUE 
    } 
    return PLUGIN_CONTINUE 
} 

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

    set_pev(id, pev_maxspeed, 1.0) 
//    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(id, pev_maxspeed,plspeed[id]) 
        set_pev(id, pev_maxspeed, 1.0) 
    } 
    plsetting[id] = g_settinglaser[id] 
    return FMRES_IGNORED 
} 

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

    if(pev(id, pev_button ) & IN_USE && !(pev(id, pev_oldbuttons ) & IN_USE )) 
        //client_print(id,print_chat,"test"); 
        CreateLaserMine_Progress(id) 
    return FMRES_IGNORED; 
} 

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

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

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


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

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

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

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

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

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

#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(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) 
{ 
    static Float:RenderColor[3]; 
    RenderColor[0] = float(r); 
    RenderColor[1] = float(g); 
    RenderColor[2] = float(b); 

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

    return 1 
} 

// Gets offset data 
get_offset_value(id, type) 
{ 
    new key = -1; 
    switch(type) 
    { 
        case OFFSET_TEAM: key = OFFSET_TEAM; 
        case OFFSET_MONEY: 
        { 
#if defined UL_MONEY_SUPPORT 
            return cs_get_user_money_ul(id); 
#else 
            key = OFFSET_MONEY; 
#endif 
        } 
        case OFFSET_DEATH: key = OFFSET_DEATH; 
    } 
     
    if(key != -1) 
    { 
//        if(is_amd64_server()) key += 25; 
        return get_pdata_int(id, key); 
    } 
     
    return -1; 
} 

// Sets offset data 
set_offset_value(id, type, value) 
{ 
    new key = -1; 
    switch(type) 
    { 
        case OFFSET_TEAM: key = OFFSET_TEAM; 
        case OFFSET_MONEY: 
        { 
#if defined UL_MONEY_SUPPORT 
            return cs_set_user_money_ul(id, value); 
#else 
            key = OFFSET_MONEY; 
             
            // Send Money message to update player's HUD 
            message_begin(MSG_ONE_UNRELIABLE, g_msgMoney, {0,0,0}, id); 
            write_long(value); 
            write_byte(1);    // Flash (difference between new and old money) 
            message_end(); 
#endif 
        } 
        case OFFSET_DEATH: key = OFFSET_DEATH; 
    } 
     
    if(key != -1) 
    { 
//        if(is_amd64_server()) key += 25; 
        set_pdata_int(id, key, value); 
    } 
     
    return PLUGIN_CONTINUE; 
}  
Bu daha once bio için oldugu için ona göre ayarlanmış. Şu kısımlardan ayarlarsın.

Kod: Tümünü seç

public zp_infect_user(id){
            RemoveAllTripmines(id);
            g_dcount[id] = false;
} 
public logevent_round_end(id)
{
        RemoveAllTripmines(id)
}

el sonu lazer kalkması

Gönderilme zamanı: Sal Eyl 06, 2022 11:45 am
gönderen LWZemrahbaba
2Adam yazdı: Sal Eyl 06, 2022 11:04 am
LWZemrahbaba yazdı: Sal Eyl 06, 2022 12:02 am zp-LazerPlugini.sma
arkadaslar mesela birisi zm olunca lazeri insan olarak kalıyor benim istegim insanken zombi olunca direk lazeri kalkmasını ıstıyorum birde zombi ölünce lazer kurması için tekrar 11 saniye bekliyor nasıl yapıcaz
Buyrun;

Kod: Tümünü seç

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


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

#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(id, Color: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], 251, msg, 4);

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

	new team, ColorChange, index, MSG_Type;
	
	if(id)
	{
		MSG_Type = MSG_ONE;
		index = id;
	} else {
		index = FindPlayer();
		MSG_Type = MSG_ALL;
	}
	
	team = get_user_team(index);
	ColorChange = ColorSelection(index, MSG_Type, type);

	ShowColorMessage(index, MSG_Type, message);
		
	if(ColorChange)
	{
		Team_Info(index, MSG_Type, TeamName[team]);
	}
}

ShowColorMessage(id, type, message[])
{
	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(type, get_user_msgid_saytext, _, id);
	write_byte(id)		
	write_string(message);
	message_end();	
}

Team_Info(id, type, team[])
{
	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(type, get_user_msgid_teaminfo, _, id);
	write_byte(id);
	write_string(team);
	message_end();

	return 1;
}

ColorSelection(index, type, Color:Type)
{
	switch(Type)
	{
		case RED:
		{
			return Team_Info(index, type, TeamName[1]);
		}
		case BLUE:
		{
			return Team_Info(index, type, TeamName[2]);
		}
		case GREY:
		{
			return Team_Info(index, type, TeamName[0]);
		}
	}

	return 0;
}

FindPlayer()
{
	new i = -1;

	while(i <= 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/lazerolmesesi.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[]         = "[ZP]", 
#else 
    CHATTAG[]         = "[ZP]", 
#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 beam, boom 
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(PLUGIN, VERSION, AUTHOR); 
     
    // 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(file, 63, "%s/ltm_cvars.cfg", file); 
#else 
    format(file, 63, "%s/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 zp_infect_user(id){
            RemoveAllTripmines(id);
            g_dcount[id] = false;
} 
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_begin( MSG_ONE_UNRELIABLE, g_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_begin( MSG_ONE_UNRELIABLE, g_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_begin( MSG_ONE_UNRELIABLE, g_msgid_bartime, {0,0,0}, id ); 
    write_short(0); 
    message_end(); 

    return PLUGIN_HANDLED; 
} 

public StopReturnLaserMine(id) 
{ 

    DeleteTask(id); 
    message_begin( MSG_ONE_UNRELIABLE, g_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(tgt, pev_classname, EntityName, 31); 
    if(!equal(EntityName, ENT_CLASS_NAME)) return; 
    if(pev(tgt,LASERMINE_OWNER) != id) return; 
    RemoveEntity(tgt); 

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

    return; 
} 

public Spawn( id ) 
{ 
    id -= TASK_PLANT 
    // 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]; 
    pev( id, pev_origin, vOrigin ); 
    velocity_by_aim( id, 128, vTraceDirection ); 
    xs_vec_add( vTraceDirection, vOrigin, vTraceEnd ); 
     
    engfunc( EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0 ); 
     
    new Float:fFraction; 
    get_tr2( 0, TR_flFraction, fFraction ); 
     

    // -- We hit something! 
    if ( fFraction < 1.0 ) 
    { 
        // -- Save results to be used later. 
        get_tr2( 0, TR_vecEndPos, vTraceEnd ); 
        get_tr2( 0, TR_vecPlaneNormal, vNormal ); 
    } 


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

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

    // -- 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(vNormal, 8192.0, vNormal ); 
    xs_vec_add( vNewOrigin, vNormal, vBeamEnd ); 

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

    get_tr2( 0, TR_vecPlaneNormal, vNormal ); 
    get_tr2( 0, TR_vecEndPos, vTracedBeamEnd ); 

    // -- Save results to be used later. 
    set_pev(i_Ent, LASERMINE_OWNER, id ); 
    set_pev(i_Ent,LASERMINE_BEAMENDPOINT,vTracedBeamEnd); 
    set_pev(i_Ent,LASERMINE_TEAM,int:cs_get_user_team(id)); 
    new Float:fCurrTime = get_gametime(); 

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

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

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

    for(i = 1;i <= g_MaxPL;i++) 
    { 
        if(is_user_connected(i)) 
            if(t == cs_get_user_team(i)) 
                cnt += g_deployed[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_num( g_LENABLE ) ) 
    { 
//        client_print(id, print_chat, "%s %s",CHATTAG,STR_NOTACTIVE);
	ColorChat(id, NORMAL, "^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(id, NORMAL, "^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(id, NORMAL, "^4%s ^3%s",CHATTAG,STR_CBT);
        return false; 
    } 
#endif 
    if (!CheckCanTeam(id)) 
    { 
//       client_print(id, print_chat, "%s %s",CHATTAG,STR_CBT); 
	ColorChat(id, NORMAL, "^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(id, NORMAL, "^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(id, NORMAL, "^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(id, NORMAL, "^4%s ^3%s",CHATTAG,STR_HAVEMAX);
            return false; 
        } 
        if (cs_get_user_money(id) < get_pcvar_num(g_LCOST)) 
        { 
            client_print(id, print_chat, "%s %s%d %s",CHATTAG, STR_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:ReturnCheck( id ) 
{ 
    if(!CanCheck(id,-1)) return false; 
    if(g_havemine[id] + 1 > get_pcvar_num(g_LAMMO)) return false; 
    new tgt,body,Float:vo[3],Float:to[3]; 
    get_user_aiming(id,tgt,body); 
    if(!pev_valid(tgt)) return false; 
    pev(id,pev_origin,vo); 
    pev(tgt,pev_origin,to); 
    if(get_distance_f(vo,to) > 90.0) return false; 
     
    new EntityName[32]; 
    pev(tgt, pev_classname, EntityName, 31); 
    if(!equal(EntityName, ENT_CLASS_NAME)) return false; 
    if(pev(tgt,LASERMINE_OWNER) != id) return false; 
     
    return true; 
} 

bool:CreateCheck( id ) 
{ 
    if (!CanCheck(id,0)) return false; 
    if (g_deployed[id] >= get_pcvar_num(g_LAMMO)) 
    { 
//        client_print(id, print_chat, "%s %s",CHATTAG,STR_MAXDEPLOY); 
	ColorChat(id, NORMAL, "^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(id, NORMAL, "^4%s ^3%s",CHATTAG,STR_MANYPPL);
        return false; 
    } 
     
    new Float:vTraceDirection[3], Float:vTraceEnd[3],Float:vOrigin[3]; 
     
    pev( id, pev_origin, vOrigin ); 
    velocity_by_aim( id, 128, vTraceDirection ); 
    xs_vec_add( vTraceDirection, vOrigin, vTraceEnd ); 
     
    engfunc( EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0 ); 
     
    new Float:fFraction,Float:vTraceNormal[3]; 
    get_tr2( 0, TR_flFraction, fFraction ); 
     
    // -- We hit something! 
    if ( fFraction < 1.0 ) 
    { 
        // -- Save results to be used later. 
        get_tr2( 0, TR_vecEndPos, vTraceEnd ); 
        get_tr2( 0, TR_vecPlaneNormal, vTraceNormal ); 

        //get_tr2( 0, TR_pHit ); 

        return true; 
    } 

//    client_print(id, print_chat, "%s %s",CHATTAG,STR_PLANTWALL)
    ColorChat(id, NORMAL, "^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_Think( i_Ent ) 
{ 
    if ( !pev_valid( i_Ent ) ) 
        return FMRES_IGNORED; 
    new EntityName[32]; 
    pev( i_Ent, pev_classname, EntityName, 31); 
    if(!get_pcvar_num(g_LENABLE)) return FMRES_IGNORED; 
    // -- Entity is not a tripmine, ignoring the next... 
    if ( !equal( EntityName, ENT_CLASS_NAME ) ) 
        return FMRES_IGNORED; 

    static Float:fCurrTime; 
    fCurrTime = get_gametime(); 

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

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

                PlaySound( i_Ent, ACTIVATE_SOUND ); 
            } 
            if(get_pcvar_num(g_LGLOW)!=0) 
            { 
                if(get_pcvar_num(g_LCLMODE)==0) 
                { 
                    switch (pev(i_Ent,LASERMINE_TEAM)) 
                    { 
                        case CS_TEAM_T: set_rendering(i_Ent,kRenderFxGlowShell,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_pev( i_Ent, pev_nextthink, fCurrTime + 0.1 ); 
        } 
        case BEAMBREAK_THINK : 
        { 
            static Float:vEnd[3],Float:vOrigin[3]; 
            pev( i_Ent, pev_origin, vOrigin ); 
            pev( i_Ent, LASERMINE_BEAMENDPOINT, vEnd ); 

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

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

            // -- Something has passed the laser. 
            if ( fFraction < 1.0 ) 
            { 
                // -- Ignoring others tripmines entity. 
                if(pev_valid(iHit)) 
                { 
                    pev( iHit, pev_classname, EntityName, 31 ); 
     
                    if( !equal( EntityName, ENT_CLASS_NAME ) ) 
                    { 
                        set_pev( i_Ent, pev_enemy, iHit ); 
                        if(get_pcvar_num(g_LMODE) == MODE_LASERMINE) 
                            CreateLaserDamage(i_Ent,iHit); 
                        else 
                            if(get_pcvar_num(g_LFF) || CsTeams:pev(i_Ent,LASERMINE_TEAM) != cs_get_user_team(iHit)) 
                                set_pev( i_Ent, LASERMINE_STEP, EXPLOSE_THINK ); 
                 
                        set_pev( i_Ent, pev_nextthink, fCurrTime + random_float( 0.1, 0.3 ) ); 
                    } 
                } 
            } 
            if(get_pcvar_num(g_LDMGMODE)!=0) 
                if(pev(i_Ent,LASERMINE_HITING) != iHit) 
                    set_pev(i_Ent,LASERMINE_HITING,iHit); 
  
            // -- Tripmine is still there. 
            if ( pev_valid( i_Ent )) 
            { 
                static Float:fHealth; 
                pev( i_Ent, pev_health, fHealth ); 

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

    return FMRES_IGNORED; 
} 

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

DrawLaser(i_Ent, const Float:v_Origin[3], const Float:v_EndOrigin[3] ) 
{ 
    new tcolor[3]; 
    new teamid = pev(i_Ent, LASERMINE_TEAM); 
    if(get_pcvar_num(g_LCLMODE) == 0) 
    { 
        switch(teamid){ 
            case 1:{ 
                tcolor[0] = 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(iCurrent, pev_origin, vecSrc); 

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

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

    new Float:kickback = 0.0; 
     
    // 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_FindEntityInSphere, ent, vecSrc, Radius)) != 0) 
    { 
        if(!pev_valid(ent)) continue; 
        if(!(pev(ent, pev_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(ent, pev_absmin, Tabsmin); 
        pev(ent, pev_absmax, Tabsmax); 
        xs_vec_add(Tabsmin,Tabsmax,Tabsmin); 
        xs_vec_mul_scalar(Tabsmin,0.5,vecSpot); 
         
        pev(iCurrent, pev_absmin, Aabsmin); 
        pev(iCurrent, pev_absmax, Aabsmax); 
        xs_vec_add(Aabsmin,Aabsmax,Aabsmin); 
        xs_vec_mul_scalar(Aabsmin,0.5,vecSee); 
         
        engfunc(EngFunc_TraceLine, vecSee, vecSpot, 0, iCurrent, trRes); 
        get_tr2(trRes, TR_flFraction, flFraction); 
        // Explosion can 'see' this entity, so hurt them! (or impact through objects has been enabled xD) 
        if (flFraction >= 0.9 || get_tr2(trRes, TR_pHit) == ent) 
        { 
            // Work out the distance between impact and entity 
            get_tr2(trRes, TR_vecEndPos, vecEndPos); 
             
            distance = get_distance_f(vecSrc, vecEndPos) * 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(vecSpot, vecSee); 

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

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

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

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

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

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

CreateLaserDamage(iCurrent,isHit) 
{ 
        if(isHit < 0 ) return PLUGIN_CONTINUE 
        switch(get_pcvar_num(g_LDMGMODE)) 
        { 
                case 1: 
                { 
                        if(pev(iCurrent,LASERMINE_HITING) == isHit) 
                                return PLUGIN_CONTINUE 
                } 
                case 2: 
                { 
                        if(pev(iCurrent,LASERMINE_HITING) == isHit) 
                        { 
                                static Float:cnt 
                                static now,htime;now = floatround(get_gametime()) 
  
                                pev(iCurrent,LASERMINE_COUNT,cnt) 
                                htime = floatround(cnt) 
                                if(now - htime < get_pcvar_num(g_LDSEC)) 
                                { 
                                        return PLUGIN_CONTINUE; 
                                }else{ 
                                        set_pev(iCurrent,LASERMINE_COUNT,get_gametime()) 
                                } 
                        }else 
                        { 
                                set_pev(iCurrent,LASERMINE_COUNT,get_gametime()) 
                        } 
                } 
        } 
  
        new Float:vOrigin[3],Float:vEnd[3] 
        pev(iCurrent,pev_origin,vOrigin) 
        pev(iCurrent,pev_vuser1,vEnd) 
  
        new teamid = pev(iCurrent, LASERMINE_TEAM) 
  
        new szClassName[32] 
        new Alive,God 
        new iHitTeam,iHitHP,id 
        new hitscore 
  
        
        szClassName[0] = '^0' 
        pev(isHit,pev_classname,szClassName,32) 
        
        if((pev(isHit, pev_flags) & (FL_CLIENT | FL_FAKECLIENT)) && !equal(szClassName, ENT_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(szClassName, ENT_CLASS_NAME3)) 
        { 
                new hl; 
                hl = pev_user_health(isHit); 
                set_user_health(isHit,hl-get_pcvar_num(g_LDMG)); 
        } 
        return PLUGIN_CONTINUE 
} 

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

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

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

    return (val == DAMAGE_NO) 
} 

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

    return 1 
} 

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

set_score(id,target,hitscore,HP){ 

    new idfrags = pev_user_frags(id) + hitscore// 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) + 1 //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_BROADCAST, g_msgDeathMsg, {0, 0, 0} ,0) 
    write_byte(id) 
    write_byte(target) 
    write_byte(0) 
    write_string(ENT_CLASS_NAME) 
    message_end() 

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

    set_msg_block(g_msgDeathMsg, BLOCK_ONCE) 

    //entity_set_float(target, EV_FL_health,float(HP)) 
    set_user_health(target, HP) 
    //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(id, NORMAL, "^4%s ^3%s",CHATTAG,STR_BOUGHT) 
    emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) 
    ShowAmmo(id) 
    return PLUGIN_HANDLED 
} 

ShowAmmo(id) 
{  
    new ammo[51]  
    formatex(ammo, 50, "%s %i/%i",STR_STATE, g_havemine[id],get_pcvar_num(g_LAMMO)) 

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

public showInfo(id) 
{ 
    client_print(id, print_chat, STR_REF)
} 

public say_lasermine(id){ 
    new said[32] 
    read_argv(1,said,31); 
    if( !get_pcvar_num( g_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(id, msg, "Lasermine Entity help") 
        return PLUGIN_CONTINUE 
    } 
    else if (containi(said, "laser") != -1) { 
        showInfo(id) 
        return PLUGIN_CONTINUE 
    } 
    return PLUGIN_CONTINUE 
} 

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

    set_pev(id, pev_maxspeed, 1.0) 
//    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(id, pev_maxspeed,plspeed[id]) 
        set_pev(id, pev_maxspeed, 1.0) 
    } 
    plsetting[id] = g_settinglaser[id] 
    return FMRES_IGNORED 
} 

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

    if(pev(id, pev_button ) & IN_USE && !(pev(id, pev_oldbuttons ) & IN_USE )) 
        //client_print(id,print_chat,"test"); 
        CreateLaserMine_Progress(id) 
    return FMRES_IGNORED; 
} 

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

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

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


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

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

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

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

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

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

#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(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) 
{ 
    static Float:RenderColor[3]; 
    RenderColor[0] = float(r); 
    RenderColor[1] = float(g); 
    RenderColor[2] = float(b); 

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

    return 1 
} 

// Gets offset data 
get_offset_value(id, type) 
{ 
    new key = -1; 
    switch(type) 
    { 
        case OFFSET_TEAM: key = OFFSET_TEAM; 
        case OFFSET_MONEY: 
        { 
#if defined UL_MONEY_SUPPORT 
            return cs_get_user_money_ul(id); 
#else 
            key = OFFSET_MONEY; 
#endif 
        } 
        case OFFSET_DEATH: key = OFFSET_DEATH; 
    } 
     
    if(key != -1) 
    { 
//        if(is_amd64_server()) key += 25; 
        return get_pdata_int(id, key); 
    } 
     
    return -1; 
} 

// Sets offset data 
set_offset_value(id, type, value) 
{ 
    new key = -1; 
    switch(type) 
    { 
        case OFFSET_TEAM: key = OFFSET_TEAM; 
        case OFFSET_MONEY: 
        { 
#if defined UL_MONEY_SUPPORT 
            return cs_set_user_money_ul(id, value); 
#else 
            key = OFFSET_MONEY; 
             
            // Send Money message to update player's HUD 
            message_begin(MSG_ONE_UNRELIABLE, g_msgMoney, {0,0,0}, id); 
            write_long(value); 
            write_byte(1);    // Flash (difference between new and old money) 
            message_end(); 
#endif 
        } 
        case OFFSET_DEATH: key = OFFSET_DEATH; 
    } 
     
    if(key != -1) 
    { 
//        if(is_amd64_server()) key += 25; 
        set_pdata_int(id, key, value); 
    } 
     
    return PLUGIN_CONTINUE; 
}  
Bu daha once bio için oldugu için ona göre ayarlanmış. Şu kısımlardan ayarlarsın.

Kod: Tümünü seç

public zp_infect_user(id){
            RemoveAllTripmines(id);
            g_dcount[id] = false;
} 
public logevent_round_end(id)
{
        RemoveAllTripmines(id)
}
Public tarafını nasıl ayarliyim anlamadım

el sonu lazer kalkması

Gönderilme zamanı: Sal Eyl 06, 2022 1:07 pm
gönderen 2Adam
Birşey ypmana gerek yok panele kur çalışcak

el sonu lazer kalkması

Gönderilme zamanı: Sal Eyl 06, 2022 7:39 pm
gönderen LWZemrahbaba

2Adam yazdı: Sal Eyl 06, 2022 1:07 pm Birşey ypmana gerek yok panele kur çalışcak
Tamamdır sorun olursa dönüş yapacağım

el sonu lazer kalkması

Gönderilme zamanı: Sal Eyl 06, 2022 11:33 pm
gönderen LWZemrahbaba
2Adam yazdı: Sal Eyl 06, 2022 11:04 am
LWZemrahbaba yazdı: Sal Eyl 06, 2022 12:02 am zp-LazerPlugini.sma
arkadaslar mesela birisi zm olunca lazeri insan olarak kalıyor benim istegim insanken zombi olunca direk lazeri kalkmasını ıstıyorum birde zombi ölünce lazer kurması için tekrar 11 saniye bekliyor nasıl yapıcaz
Buyrun;

Kod: Tümünü seç

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


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

#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(id, Color: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], 251, msg, 4);

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

	new team, ColorChange, index, MSG_Type;
	
	if(id)
	{
		MSG_Type = MSG_ONE;
		index = id;
	} else {
		index = FindPlayer();
		MSG_Type = MSG_ALL;
	}
	
	team = get_user_team(index);
	ColorChange = ColorSelection(index, MSG_Type, type);

	ShowColorMessage(index, MSG_Type, message);
		
	if(ColorChange)
	{
		Team_Info(index, MSG_Type, TeamName[team]);
	}
}

ShowColorMessage(id, type, message[])
{
	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(type, get_user_msgid_saytext, _, id);
	write_byte(id)		
	write_string(message);
	message_end();	
}

Team_Info(id, type, team[])
{
	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(type, get_user_msgid_teaminfo, _, id);
	write_byte(id);
	write_string(team);
	message_end();

	return 1;
}

ColorSelection(index, type, Color:Type)
{
	switch(Type)
	{
		case RED:
		{
			return Team_Info(index, type, TeamName[1]);
		}
		case BLUE:
		{
			return Team_Info(index, type, TeamName[2]);
		}
		case GREY:
		{
			return Team_Info(index, type, TeamName[0]);
		}
	}

	return 0;
}

FindPlayer()
{
	new i = -1;

	while(i <= 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/lazerolmesesi.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[]         = "[ZP]", 
#else 
    CHATTAG[]         = "[ZP]", 
#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 beam, boom 
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(PLUGIN, VERSION, AUTHOR); 
     
    // 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(file, 63, "%s/ltm_cvars.cfg", file); 
#else 
    format(file, 63, "%s/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 zp_infect_user(id){
            RemoveAllTripmines(id);
            g_dcount[id] = false;
} 
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_begin( MSG_ONE_UNRELIABLE, g_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_begin( MSG_ONE_UNRELIABLE, g_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_begin( MSG_ONE_UNRELIABLE, g_msgid_bartime, {0,0,0}, id ); 
    write_short(0); 
    message_end(); 

    return PLUGIN_HANDLED; 
} 

public StopReturnLaserMine(id) 
{ 

    DeleteTask(id); 
    message_begin( MSG_ONE_UNRELIABLE, g_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(tgt, pev_classname, EntityName, 31); 
    if(!equal(EntityName, ENT_CLASS_NAME)) return; 
    if(pev(tgt,LASERMINE_OWNER) != id) return; 
    RemoveEntity(tgt); 

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

    return; 
} 

public Spawn( id ) 
{ 
    id -= TASK_PLANT 
    // 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]; 
    pev( id, pev_origin, vOrigin ); 
    velocity_by_aim( id, 128, vTraceDirection ); 
    xs_vec_add( vTraceDirection, vOrigin, vTraceEnd ); 
     
    engfunc( EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0 ); 
     
    new Float:fFraction; 
    get_tr2( 0, TR_flFraction, fFraction ); 
     

    // -- We hit something! 
    if ( fFraction < 1.0 ) 
    { 
        // -- Save results to be used later. 
        get_tr2( 0, TR_vecEndPos, vTraceEnd ); 
        get_tr2( 0, TR_vecPlaneNormal, vNormal ); 
    } 


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

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

    // -- 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(vNormal, 8192.0, vNormal ); 
    xs_vec_add( vNewOrigin, vNormal, vBeamEnd ); 

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

    get_tr2( 0, TR_vecPlaneNormal, vNormal ); 
    get_tr2( 0, TR_vecEndPos, vTracedBeamEnd ); 

    // -- Save results to be used later. 
    set_pev(i_Ent, LASERMINE_OWNER, id ); 
    set_pev(i_Ent,LASERMINE_BEAMENDPOINT,vTracedBeamEnd); 
    set_pev(i_Ent,LASERMINE_TEAM,int:cs_get_user_team(id)); 
    new Float:fCurrTime = get_gametime(); 

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

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

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

    for(i = 1;i <= g_MaxPL;i++) 
    { 
        if(is_user_connected(i)) 
            if(t == cs_get_user_team(i)) 
                cnt += g_deployed[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_num( g_LENABLE ) ) 
    { 
//        client_print(id, print_chat, "%s %s",CHATTAG,STR_NOTACTIVE);
	ColorChat(id, NORMAL, "^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(id, NORMAL, "^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(id, NORMAL, "^4%s ^3%s",CHATTAG,STR_CBT);
        return false; 
    } 
#endif 
    if (!CheckCanTeam(id)) 
    { 
//       client_print(id, print_chat, "%s %s",CHATTAG,STR_CBT); 
	ColorChat(id, NORMAL, "^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(id, NORMAL, "^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(id, NORMAL, "^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(id, NORMAL, "^4%s ^3%s",CHATTAG,STR_HAVEMAX);
            return false; 
        } 
        if (cs_get_user_money(id) < get_pcvar_num(g_LCOST)) 
        { 
            client_print(id, print_chat, "%s %s%d %s",CHATTAG, STR_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:ReturnCheck( id ) 
{ 
    if(!CanCheck(id,-1)) return false; 
    if(g_havemine[id] + 1 > get_pcvar_num(g_LAMMO)) return false; 
    new tgt,body,Float:vo[3],Float:to[3]; 
    get_user_aiming(id,tgt,body); 
    if(!pev_valid(tgt)) return false; 
    pev(id,pev_origin,vo); 
    pev(tgt,pev_origin,to); 
    if(get_distance_f(vo,to) > 90.0) return false; 
     
    new EntityName[32]; 
    pev(tgt, pev_classname, EntityName, 31); 
    if(!equal(EntityName, ENT_CLASS_NAME)) return false; 
    if(pev(tgt,LASERMINE_OWNER) != id) return false; 
     
    return true; 
} 

bool:CreateCheck( id ) 
{ 
    if (!CanCheck(id,0)) return false; 
    if (g_deployed[id] >= get_pcvar_num(g_LAMMO)) 
    { 
//        client_print(id, print_chat, "%s %s",CHATTAG,STR_MAXDEPLOY); 
	ColorChat(id, NORMAL, "^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(id, NORMAL, "^4%s ^3%s",CHATTAG,STR_MANYPPL);
        return false; 
    } 
     
    new Float:vTraceDirection[3], Float:vTraceEnd[3],Float:vOrigin[3]; 
     
    pev( id, pev_origin, vOrigin ); 
    velocity_by_aim( id, 128, vTraceDirection ); 
    xs_vec_add( vTraceDirection, vOrigin, vTraceEnd ); 
     
    engfunc( EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0 ); 
     
    new Float:fFraction,Float:vTraceNormal[3]; 
    get_tr2( 0, TR_flFraction, fFraction ); 
     
    // -- We hit something! 
    if ( fFraction < 1.0 ) 
    { 
        // -- Save results to be used later. 
        get_tr2( 0, TR_vecEndPos, vTraceEnd ); 
        get_tr2( 0, TR_vecPlaneNormal, vTraceNormal ); 

        //get_tr2( 0, TR_pHit ); 

        return true; 
    } 

//    client_print(id, print_chat, "%s %s",CHATTAG,STR_PLANTWALL)
    ColorChat(id, NORMAL, "^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_Think( i_Ent ) 
{ 
    if ( !pev_valid( i_Ent ) ) 
        return FMRES_IGNORED; 
    new EntityName[32]; 
    pev( i_Ent, pev_classname, EntityName, 31); 
    if(!get_pcvar_num(g_LENABLE)) return FMRES_IGNORED; 
    // -- Entity is not a tripmine, ignoring the next... 
    if ( !equal( EntityName, ENT_CLASS_NAME ) ) 
        return FMRES_IGNORED; 

    static Float:fCurrTime; 
    fCurrTime = get_gametime(); 

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

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

                PlaySound( i_Ent, ACTIVATE_SOUND ); 
            } 
            if(get_pcvar_num(g_LGLOW)!=0) 
            { 
                if(get_pcvar_num(g_LCLMODE)==0) 
                { 
                    switch (pev(i_Ent,LASERMINE_TEAM)) 
                    { 
                        case CS_TEAM_T: set_rendering(i_Ent,kRenderFxGlowShell,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_pev( i_Ent, pev_nextthink, fCurrTime + 0.1 ); 
        } 
        case BEAMBREAK_THINK : 
        { 
            static Float:vEnd[3],Float:vOrigin[3]; 
            pev( i_Ent, pev_origin, vOrigin ); 
            pev( i_Ent, LASERMINE_BEAMENDPOINT, vEnd ); 

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

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

            // -- Something has passed the laser. 
            if ( fFraction < 1.0 ) 
            { 
                // -- Ignoring others tripmines entity. 
                if(pev_valid(iHit)) 
                { 
                    pev( iHit, pev_classname, EntityName, 31 ); 
     
                    if( !equal( EntityName, ENT_CLASS_NAME ) ) 
                    { 
                        set_pev( i_Ent, pev_enemy, iHit ); 
                        if(get_pcvar_num(g_LMODE) == MODE_LASERMINE) 
                            CreateLaserDamage(i_Ent,iHit); 
                        else 
                            if(get_pcvar_num(g_LFF) || CsTeams:pev(i_Ent,LASERMINE_TEAM) != cs_get_user_team(iHit)) 
                                set_pev( i_Ent, LASERMINE_STEP, EXPLOSE_THINK ); 
                 
                        set_pev( i_Ent, pev_nextthink, fCurrTime + random_float( 0.1, 0.3 ) ); 
                    } 
                } 
            } 
            if(get_pcvar_num(g_LDMGMODE)!=0) 
                if(pev(i_Ent,LASERMINE_HITING) != iHit) 
                    set_pev(i_Ent,LASERMINE_HITING,iHit); 
  
            // -- Tripmine is still there. 
            if ( pev_valid( i_Ent )) 
            { 
                static Float:fHealth; 
                pev( i_Ent, pev_health, fHealth ); 

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

    return FMRES_IGNORED; 
} 

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

DrawLaser(i_Ent, const Float:v_Origin[3], const Float:v_EndOrigin[3] ) 
{ 
    new tcolor[3]; 
    new teamid = pev(i_Ent, LASERMINE_TEAM); 
    if(get_pcvar_num(g_LCLMODE) == 0) 
    { 
        switch(teamid){ 
            case 1:{ 
                tcolor[0] = 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(iCurrent, pev_origin, vecSrc); 

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

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

    new Float:kickback = 0.0; 
     
    // 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_FindEntityInSphere, ent, vecSrc, Radius)) != 0) 
    { 
        if(!pev_valid(ent)) continue; 
        if(!(pev(ent, pev_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(ent, pev_absmin, Tabsmin); 
        pev(ent, pev_absmax, Tabsmax); 
        xs_vec_add(Tabsmin,Tabsmax,Tabsmin); 
        xs_vec_mul_scalar(Tabsmin,0.5,vecSpot); 
         
        pev(iCurrent, pev_absmin, Aabsmin); 
        pev(iCurrent, pev_absmax, Aabsmax); 
        xs_vec_add(Aabsmin,Aabsmax,Aabsmin); 
        xs_vec_mul_scalar(Aabsmin,0.5,vecSee); 
         
        engfunc(EngFunc_TraceLine, vecSee, vecSpot, 0, iCurrent, trRes); 
        get_tr2(trRes, TR_flFraction, flFraction); 
        // Explosion can 'see' this entity, so hurt them! (or impact through objects has been enabled xD) 
        if (flFraction >= 0.9 || get_tr2(trRes, TR_pHit) == ent) 
        { 
            // Work out the distance between impact and entity 
            get_tr2(trRes, TR_vecEndPos, vecEndPos); 
             
            distance = get_distance_f(vecSrc, vecEndPos) * 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(vecSpot, vecSee); 

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

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

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

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

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

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

CreateLaserDamage(iCurrent,isHit) 
{ 
        if(isHit < 0 ) return PLUGIN_CONTINUE 
        switch(get_pcvar_num(g_LDMGMODE)) 
        { 
                case 1: 
                { 
                        if(pev(iCurrent,LASERMINE_HITING) == isHit) 
                                return PLUGIN_CONTINUE 
                } 
                case 2: 
                { 
                        if(pev(iCurrent,LASERMINE_HITING) == isHit) 
                        { 
                                static Float:cnt 
                                static now,htime;now = floatround(get_gametime()) 
  
                                pev(iCurrent,LASERMINE_COUNT,cnt) 
                                htime = floatround(cnt) 
                                if(now - htime < get_pcvar_num(g_LDSEC)) 
                                { 
                                        return PLUGIN_CONTINUE; 
                                }else{ 
                                        set_pev(iCurrent,LASERMINE_COUNT,get_gametime()) 
                                } 
                        }else 
                        { 
                                set_pev(iCurrent,LASERMINE_COUNT,get_gametime()) 
                        } 
                } 
        } 
  
        new Float:vOrigin[3],Float:vEnd[3] 
        pev(iCurrent,pev_origin,vOrigin) 
        pev(iCurrent,pev_vuser1,vEnd) 
  
        new teamid = pev(iCurrent, LASERMINE_TEAM) 
  
        new szClassName[32] 
        new Alive,God 
        new iHitTeam,iHitHP,id 
        new hitscore 
  
        
        szClassName[0] = '^0' 
        pev(isHit,pev_classname,szClassName,32) 
        
        if((pev(isHit, pev_flags) & (FL_CLIENT | FL_FAKECLIENT)) && !equal(szClassName, ENT_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(szClassName, ENT_CLASS_NAME3)) 
        { 
                new hl; 
                hl = pev_user_health(isHit); 
                set_user_health(isHit,hl-get_pcvar_num(g_LDMG)); 
        } 
        return PLUGIN_CONTINUE 
} 

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

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

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

    return (val == DAMAGE_NO) 
} 

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

    return 1 
} 

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

set_score(id,target,hitscore,HP){ 

    new idfrags = pev_user_frags(id) + hitscore// 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) + 1 //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_BROADCAST, g_msgDeathMsg, {0, 0, 0} ,0) 
    write_byte(id) 
    write_byte(target) 
    write_byte(0) 
    write_string(ENT_CLASS_NAME) 
    message_end() 

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

    set_msg_block(g_msgDeathMsg, BLOCK_ONCE) 

    //entity_set_float(target, EV_FL_health,float(HP)) 
    set_user_health(target, HP) 
    //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(id, NORMAL, "^4%s ^3%s",CHATTAG,STR_BOUGHT) 
    emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) 
    ShowAmmo(id) 
    return PLUGIN_HANDLED 
} 

ShowAmmo(id) 
{  
    new ammo[51]  
    formatex(ammo, 50, "%s %i/%i",STR_STATE, g_havemine[id],get_pcvar_num(g_LAMMO)) 

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

public showInfo(id) 
{ 
    client_print(id, print_chat, STR_REF)
} 

public say_lasermine(id){ 
    new said[32] 
    read_argv(1,said,31); 
    if( !get_pcvar_num( g_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(id, msg, "Lasermine Entity help") 
        return PLUGIN_CONTINUE 
    } 
    else if (containi(said, "laser") != -1) { 
        showInfo(id) 
        return PLUGIN_CONTINUE 
    } 
    return PLUGIN_CONTINUE 
} 

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

    set_pev(id, pev_maxspeed, 1.0) 
//    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(id, pev_maxspeed,plspeed[id]) 
        set_pev(id, pev_maxspeed, 1.0) 
    } 
    plsetting[id] = g_settinglaser[id] 
    return FMRES_IGNORED 
} 

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

    if(pev(id, pev_button ) & IN_USE && !(pev(id, pev_oldbuttons ) & IN_USE )) 
        //client_print(id,print_chat,"test"); 
        CreateLaserMine_Progress(id) 
    return FMRES_IGNORED; 
} 

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

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

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


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

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

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

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

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

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

#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(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) 
{ 
    static Float:RenderColor[3]; 
    RenderColor[0] = float(r); 
    RenderColor[1] = float(g); 
    RenderColor[2] = float(b); 

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

    return 1 
} 

// Gets offset data 
get_offset_value(id, type) 
{ 
    new key = -1; 
    switch(type) 
    { 
        case OFFSET_TEAM: key = OFFSET_TEAM; 
        case OFFSET_MONEY: 
        { 
#if defined UL_MONEY_SUPPORT 
            return cs_get_user_money_ul(id); 
#else 
            key = OFFSET_MONEY; 
#endif 
        } 
        case OFFSET_DEATH: key = OFFSET_DEATH; 
    } 
     
    if(key != -1) 
    { 
//        if(is_amd64_server()) key += 25; 
        return get_pdata_int(id, key); 
    } 
     
    return -1; 
} 

// Sets offset data 
set_offset_value(id, type, value) 
{ 
    new key = -1; 
    switch(type) 
    { 
        case OFFSET_TEAM: key = OFFSET_TEAM; 
        case OFFSET_MONEY: 
        { 
#if defined UL_MONEY_SUPPORT 
            return cs_set_user_money_ul(id, value); 
#else 
            key = OFFSET_MONEY; 
             
            // Send Money message to update player's HUD 
            message_begin(MSG_ONE_UNRELIABLE, g_msgMoney, {0,0,0}, id); 
            write_long(value); 
            write_byte(1);    // Flash (difference between new and old money) 
            message_end(); 
#endif 
        } 
        case OFFSET_DEATH: key = OFFSET_DEATH; 
    } 
     
    if(key != -1) 
    { 
//        if(is_amd64_server()) key += 25; 
        set_pdata_int(id, key, value); 
    } 
     
    return PLUGIN_CONTINUE; 
}  
Bu daha once bio için oldugu için ona göre ayarlanmış. Şu kısımlardan ayarlarsın.

Kod: Tümünü seç

public zp_infect_user(id){
            RemoveAllTripmines(id);
            g_dcount[id] = false;
} 
public logevent_round_end(id)
{
        RemoveAllTripmines(id)
}
zp_laser_1.8.3fixxed.sma(442) : error 021: symbol already defined: "zp_infect_user"
zp_laser_1.8.3fixxed.sma(443) : warning 218: old style prototypes used with optional semicolumns
zp_laser_1.8.3fixxed.sma(444) : error 010: invalid function or declaration

el sonu lazer kalkması

Gönderilme zamanı: Çrş Eyl 07, 2022 2:31 pm
gönderen LWZemrahbaba
2Adam yazdı: Sal Eyl 06, 2022 1:07 pm Birşey ypmana gerek yok panele kur çalışcak
Hata verdi

el sonu lazer kalkması

Gönderilme zamanı: Çrş Eyl 07, 2022 2:35 pm
gönderen 2Adam
Bu kısmı

public zp_infect_user(id){
RemoveAllTripmines(id);
g_dcount[id] = false;
}

Bunla degişin

public zp_user_infected_post(id){
RemoveAllTripmines(id);
g_dcount[id] = false;
}

el sonu lazer kalkması

Gönderilme zamanı: Prş Eyl 08, 2022 8:45 pm
gönderen LWZemrahbaba
2Adam yazdı: Çrş Eyl 07, 2022 2:35 pm Bu kısmı

public zp_infect_user(id){
RemoveAllTripmines(id);
g_dcount[id] = false;
}

Bunla degişin

public zp_user_infected_post(id){
RemoveAllTripmines(id);
g_dcount[id] = false;
}
zp_laser_1.8.3fixxed.sma(442) : error 021: symbol already defined: "zp_infect_user"
zp_laser_1.8.3fixxed.sma(443) : warning 218: old style prototypes used with optional semicolumns
zp_laser_1.8.3fixxed.sma(444) : error 010: invalid function or declaration

el sonu lazer kalkması

Gönderilme zamanı: Prş Eyl 08, 2022 10:26 pm
gönderen LWZemrahbaba
beyler?