1. sayfa (Toplam 3 sayfa)

Biodan Zp moda uyarlanıcak

Gönderilme zamanı: Cum Ağu 19, 2022 12:20 am
gönderen LWZemrahbaba
beyler baslıkta belirttigim gibi çevirme işinden anlamıyorum arastırma yaptım basaramadım rica etsem bunu zp moda uyarlarmısınız
ultimate_laser.fixxed.sma

Biodan Zp moda uyarlanıcak

Gönderilme zamanı: Cum Ağu 19, 2022 6:57 am
gönderen feartwd
En Ustte //#define BIOHAZARD_SUPPORT yaziyor, Onun önündeki // sembollerini kaldir ve tekrar yükle olur

Biodan Zp moda uyarlanıcak

Gönderilme zamanı: Cum Ağu 19, 2022 12:29 pm
gönderen LWZemrahbaba
feartwd yazdı: Cum Ağu 19, 2022 6:57 am En Ustte //#define BIOHAZARD_SUPPORT yaziyor, Onun önündeki // sembollerini kaldir ve tekrar yükle olur
Eve geçim test edip dönüş yapacağım

Biodan Zp moda uyarlanıcak

Gönderilme zamanı: Pzr Ağu 21, 2022 1:14 am
gönderen LWZemrahbaba
feartwd yazdı: Cum Ağu 19, 2022 6:57 am En Ustte //#define BIOHAZARD_SUPPORT yaziyor, Onun önündeki // sembollerini kaldir ve tekrar yükle olur
maalesef çalısmadı

Biodan Zp moda uyarlanıcak

Gönderilme zamanı: Pzr Ağu 21, 2022 5:46 pm
gönderen LWZemrahbaba
@2Adam

Biodan Zp moda uyarlanıcak

Gönderilme zamanı: Pzr Ağu 21, 2022 5:47 pm
gönderen LWZemrahbaba
Yardımcı olucak birisi varmı

Biodan Zp moda uyarlanıcak

Gönderilme zamanı: Pzr Ağu 21, 2022 7:07 pm
gönderen 2Adam
Şimdi zaten eklentini kendisi bir mode uyarlı degil biohazard include kısmını sil panele yükle

Biodan Zp moda uyarlanıcak

Gönderilme zamanı: Pzr Ağu 21, 2022 10:00 pm
gönderen LWZemrahbaba
2Adam yazdı: Pzr Ağu 21, 2022 7:07 pm Şimdi zaten eklentini kendisi bir mode uyarlı degil biohazard include kısmını sil panele yükle
abi bu hataları alıyorum
ultimate_laser.fixxed.sma(150) : error 026: no matching "#if..."
ultimate_laser.fixxed.sma(685) : error 017: undefined symbol "is_user_zombie"

Biodan Zp moda uyarlanıcak

Gönderilme zamanı: Pzr Ağu 21, 2022 10:26 pm
gönderen 2Adam
LWZemrahbaba yazdı: Pzr Ağu 21, 2022 10:00 pm
2Adam yazdı: Pzr Ağu 21, 2022 7:07 pm Şimdi zaten eklentini kendisi bir mode uyarlı degil biohazard include kısmını sil panele yükle
abi bu hataları alıyorum
ultimate_laser.fixxed.sma(150) : error 026: no matching "#if..."
ultimate_laser.fixxed.sma(685) : error 017: undefined symbol "is_user_zombie"
Denermisin

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 UL_MONEY_SUPPORT 
    #include <money_ul> 
#endif 


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

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

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

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

#define LASERMINE_POWERUP    pev_fuser2 
#define LASERMINE_BEAMTHINK    pev_fuser3 

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

#define cs_get_user_team(%1)        CsTeams:get_offset_value(%1,OFFSET_TEAM) 
#define cs_get_user_deaths(%1)        get_offset_value(%1,OFFSET_DEATH) 
#define cs_get_user_money(%1)        get_offset_value(%1,OFFSET_MONEY) 
#define cs_set_user_money(%1,%2)    set_offset_value(%1,OFFSET_MONEY,%2) 



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

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

enum 
{ 
    POWERUP_THINK, 
    BEAMBREAK_THINK, 
    EXPLOSE_THINK 
}; 

enum 
{ 
    POWERUP_SOUND, 
    ACTIVATE_SOUND, 
    STOP_SOUND 
}; 

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

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

new const 
#if defined BIOHAZARD_SUPPORT 
    CHATTAG[]         = "[LastWar'Z]", 
#else 
    CHATTAG[]         = "[LastWar'Z]", 
#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/bhltm_cvars.cfg", file); 
#else 
    format(file, 63, "%s/zp_ltm_cvars.cfg", file); 
#endif 
    if(file_exists(file)) server_cmd("exec %s", file), server_exec(); 

} 

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

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

/*
public event_infect(id, victim) 
{ 
       RemoveAllTripmines(id) 
}  
*/

public logevent_round_end(id)
{
        RemoveAllTripmines(id)
}

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

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

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

    message_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(zp_get_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; 
}  

Biodan Zp moda uyarlanıcak

Gönderilme zamanı: Pzr Ağu 21, 2022 10:56 pm
gönderen LWZemrahbaba
abi virus yayıldıktan sonra lazer kurmaya ızın verılıyor