Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Tik kas supranta apie pluginu ir giliau.


halkas

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3763 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

/* Plugin generated by AMXX-Studio */

//#define BIOHAZARD_SUPPORT

//#define UL_MONEY_SUPPORT

#include <amxmodx>

#include <fakemeta>

#include <xs>

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

#define VERSION "+1.4"

#else

#define PLUGIN "Laser/Tripmine Entity"

#define VERSION "2.3"

#endif

#define AUTHOR "SandStriker"

#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 LASERMINE_TEAM pev_iuser1//EV_INT_iuser1

#define LASERMINE_OWNER pev_iuser2 //EV_INT_iuser3

#define LASERMINE_STEP pev_iuser3

#define LASERMINE_HITING pev_iuser4

#define LASERMINE_COUNT pev_fuser1

#define LASERMINE_POWERUP pev_fuser2

#define LASERMINE_BEAMTHINK pev_fuser3

#define LASERMINE_BEAMENDPOINT pev_vuser1

#define MAX_MINES 10

#define MODE_LASERMINE 0

#define OFFSET_TEAM 114

#define OFFSET_MONEY 115

#define OFFSET_DEATH 444

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

#define cs_get_user_deaths(%1) get_offset_value(%1,OFFSET_DEATH)

#define cs_get_user_money(%1) get_offset_value(%1,OFFSET_MONEY)

#define cs_set_user_money(%1,%2) set_offset_value(%1,OFFSET_MONEY,%2)

enum CsTeams {

CS_TEAM_UNASSIGNED = 0,

CS_TEAM_T = 1,

CS_TEAM_CT = 2,

CS_TEAM_SPECTATOR = 3

};

enum tripmine_e {

TRIPMINE_IDLE1 = 0,

TRIPMINE_IDLE2,

TRIPMINE_ARM1,

TRIPMINE_ARM2,

TRIPMINE_FIDGET,

TRIPMINE_HOLSTER,

TRIPMINE_DRAW,

TRIPMINE_WORLD,

TRIPMINE_GROUND,

};

enum

{

POWERUP_THINK,

BEAMBREAK_THINK,

EXPLOSE_THINK

};

enum

{

POWERUP_SOUND,

ACTIVATE_SOUND,

STOP_SOUND

};

new const

ENT_MODELS[] = "models/v_tripmine.mdl",

ENT_SOUND1[] = "weapons/mine_deploy.wav",

ENT_SOUND2[] = "weapons/mine_charge.wav",

ENT_SOUND3[] = "weapons/mine_activate.wav",

ENT_SOUND4[] = "debris/beamstart9.wav",

ENT_SOUND5[] = "items/gunpickup2.wav",

ENT_SOUND6[] = "debris/bustglass1.wav",

ENT_SOUND7[] = "debris/bustglass2.wav",

ENT_SPRITE1[] = "sprites/laserbeam.spr",

ENT_SPRITE2[] = "sprites/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[] = "[bioLaser]",

#else

CHATTAG[] = "[Lasermine]",

#endif

//STR_MINEDETNATED[] = "Your mine has detonated.",

//STR_MINEDETNATED2[] = "detonated your mine.",

STR_NOTACTIVE[] = "Lasermines are not currently active.",

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

//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[] = "You must plant the lasermine on a wall!",

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[] = "Can't buying this server.",

STR_HAVEMAX[] = "You have a maximum lasermine.",

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

STR_NEEDED[] = "needed)",

STR_DELAY[] = "You can buying and deploying lasermine in after",

STR_SECONDS[] = "seconds.",

STR_BOUGHT[] = "You have successfully bought a lasermine.",

STR_STATE[] = "LaserMines Ammo:",

STR_NOACCESS[] = "You can't access, this command.";

new g_EntMine;

new beam, boom

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...

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

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

g_LTMAX = register_cvar("bio_ltm_teammax","10");

g_LRADIUS = register_cvar("bio_ltm_radius","320.0");

g_LRDMG = register_cvar("bio_ltm_rdmg","100"); //radius damage

g_LFF = register_cvar("bio_ltm_ff","0");

g_LCBT = register_cvar("bio_ltm_cbt","ALL");

g_LBUYMODE = register_cvar("bio_ltm_buymode","1");

g_LDELAY = register_cvar("bio_ltm_delay","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","0");

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

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

g_LTMAX = register_cvar("amx_ltm_teammax","10");

g_LRADIUS = register_cvar("amx_ltm_radius","320.0");

g_LRDMG = register_cvar("amx_ltm_rdmg","100"); //radius damage

g_LFF = register_cvar("amx_ltm_ff","0");

g_LCBT = register_cvar("amx_ltm_cbt","ALL");

g_LBUYMODE = register_cvar("amx_ltm_buymode","1");

g_LDELAY = register_cvar("amx_ltm_delay","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","0");

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

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

// -- 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);

return PLUGIN_CONTINUE;

}

public plugin_modules()

{

require_module("fakemeta");

require_module("cstrike");

//require_module("fun")

}

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/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 CreateLaserMine_Progress_b(id)

{

if(get_pcvar_num(g_LCMDMODE) != 0)

CreateLaserMine_Progress(id);

return PLUGIN_HANDLED;

}

public CreateLaserMine_Progress(id)

{

if (!CreateCheck(id))

return PLUGIN_HANDLED;

g_settinglaser[id] = true;

message_begin( MSG_ONE, 108, {0,0,0}, id );

write_byte(1);

write_byte(0);

message_end();

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

return PLUGIN_HANDLED;

}

public ReturnLaserMine_Progress(id)

{

if (!ReturnCheck(id))

return PLUGIN_HANDLED;

g_settinglaser[id] = true;

message_begin( MSG_ONE, 108, {0,0,0}, id );

write_byte(1);

write_byte(0);

message_end();

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

return PLUGIN_HANDLED;

}

public StopCreateLaserMine(id)

{

DeleteTask(id);

message_begin(MSG_ONE, 108, {0,0,0}, id);

write_byte(0);

write_byte(0);

message_end();

return PLUGIN_HANDLED;

}

public StopReturnLaserMine(id)

{

DeleteTask(id);

message_begin(MSG_ONE, 108, {0,0,0}, id);

write_byte(0);

write_byte(0);

message_end();

return PLUGIN_HANDLED;

}

public ReturnMine(id)

{

id -= TASK_RELEASE;

new tgt,body,Float:vo[3],Float:to[3];

get_user_aiming(id,tgt,body);

if(!pev_valid(tgt)) return;

pev(id,pev_origin,vo);

pev(tgt,pev_origin,to);

if(get_distance_f(vo,to) > 70.0) return;

new EntityName[32];

pev(tgt, pev_classname, EntityName, 31);

if(!equal(EntityName, ENT_CLASS_NAME)) return;

if(pev(tgt,LASERMINE_OWNER) != id) return;

RemoveEntity(tgt);

g_havemine[id] ++;

g_deployed[id] --;

emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

ShowAmmo(id)

return;

}

public Spawn( id )

{

id -= TASK_PLANT

// motor

new i_Ent = engfunc(EngFunc_CreateNamedEntity,g_EntMine);

if(!i_Ent)

{

client_print(id,print_chat,"[Laesrmine Debug] Can't Create Entity");

return PLUGIN_HANDLED_MAIN;

}

set_pev(i_Ent,pev_classname,ENT_CLASS_NAME);

engfunc(EngFunc_SetModel,i_Ent,ENT_MODELS);

set_pev(i_Ent,pev_solid,SOLID_NOT);

set_pev(i_Ent,pev_movetype,MOVETYPE_FLY);

set_pev(i_Ent,pev_frame,0);

set_pev(i_Ent,pev_body,3);

set_pev(i_Ent,pev_sequence,TRIPMINE_WORLD);

set_pev(i_Ent,pev_framerate,0);

set_pev(i_Ent,pev_takedamage,DAMAGE_YES);

set_pev(i_Ent,pev_dmg,100.0);

set_user_health(i_Ent,get_pcvar_num(g_LHEALTH));

new Float:vOrigin[3];

new Float:vNewOrigin[3],Float:vNormal[3],Float:vTraceDirection[3],

Float:vTraceEnd[3],Float:vEntAngles[3];

pev( id, pev_origin, vOrigin );

velocity_by_aim( id, 128, vTraceDirection );

xs_vec_add( vTraceDirection, vOrigin, vTraceEnd );

engfunc( EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0 );

new Float:fFraction;

get_tr2( 0, TR_flFraction, fFraction );

// -- 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;

}

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);

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);

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);

return false;

}

#endif

if (!CheckCanTeam(id))

{

client_print(id, print_chat, "%s %s",CHATTAG,STR_CBT);

return false;

}

if( mode == 0)

{

if(g_havemine[id] <= 0)

{

client_print(id, print_chat, "%s %s",CHATTAG,STR_DONTHAVEMINE);

return false;

}

}

if (mode == 1)

{

if (get_pcvar_num(g_LBUYMODE) == 0)

{

client_print(id, print_chat, "%s %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);

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);

return false;

}

return true;

}

bool:ReturnCheck( id )

{

if(!CanCheck(id,-1)) return false;

if(g_havemine[id] + 1 > get_pcvar_num(g_LAMMO)) return false;

new tgt,body,Float:vo[3],Float:to[3];

get_user_aiming(id,tgt,body);

if(!pev_valid(tgt)) return false;

pev(id,pev_origin,vo);

pev(tgt,pev_origin,to);

if(get_distance_f(vo,to) > 70.0) return false;

new EntityName[32];

pev(tgt, pev_classname, EntityName, 31);

if(!equal(EntityName, ENT_CLASS_NAME)) return false;

if(pev(tgt,LASERMINE_OWNER) != id) return false;

return true;

}

bool:CreateCheck( id )

{

if (!CanCheck(id,0)) return false;

if (g_deployed[id] >= get_pcvar_num(g_LAMMO))

{

client_print(id, print_chat, "%s %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);

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)

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,0,kRenderNormal,5);

case CS_TEAM_CT:set_rendering(i_Ent,kRenderFxGlowShell,0,0,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] = 0;

tcolor[2] = 0;

}

case 2:{

tcolor[0] = 0;

tcolor[1] = 0;

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 | FL_MONSTER)))

{

// 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 | FL_MONSTER)))

{

Alive = pev_user_alive(isHit)

God = get_user_godmode(isHit)

if(!Alive || God) return PLUGIN_CONTINUE

iHitTeam = int:cs_get_user_team(isHit)

iHitHP = pev_user_health(isHit) - get_pcvar_num(g_LDMG)

id = pev(iCurrent,LASERMINE_OWNER)//, szNetName[32]

if(iHitHP <= 0)

{

if(iHitTeam != teamid)

{

emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM )

hitscore = 1

cs_set_user_money(id,cs_get_user_money(id) + get_pcvar_num(g_LFMONEY))

set_score(id,isHit,hitscore,iHitHP)

}else

{

if(get_pcvar_num(g_LFF))

{

emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM )

hitscore = -1

cs_set_user_money(id,cs_get_user_money(id) - get_pcvar_num(g_LFMONEY))

set_score(id,isHit,hitscore,iHitHP)

}

}

}else if(iHitTeam != teamid || get_pcvar_num(g_LFF))

{

emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM )

set_user_health(isHit,iHitHP)

set_pev(iCurrent,LASERMINE_HITING,isHit);

engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},isHit);

write_byte(get_pcvar_num(g_LDMG))

write_byte(get_pcvar_num(g_LDMG))

write_long(DMG_BULLET)

engfunc(EngFunc_WriteCoord,vOrigin[0])

engfunc(EngFunc_WriteCoord,vOrigin[1])

engfunc(EngFunc_WriteCoord,vOrigin[2])

message_end()

}

}else if(equal(szClassName, ENT_CLASS_NAME3))

{

new hl;

hl = pev_user_health(isHit);

set_user_health(isHit,hl-get_pcvar_num(g_LDMG));

}

return PLUGIN_CONTINUE

}

stock pev_user_health(id)

{

new Float:health

pev(id,pev_health,health)

return floatround(health)

}

stock set_user_health(id,health)

{

health > 0 ? set_pev(id, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, id);

}

stock get_user_godmode(index) {

new Float:val

pev(index, pev_takedamage, val)

return (val == DAMAGE_NO)

}

stock set_user_frags(index, frags)

{

set_pev(index, pev_frags, float(frags))

return 1

}

stock pev_user_frags(index)

{

new Float:frags;

pev(index,pev_frags,frags);

return floatround(frags);

}

set_score(id,target,hitscore,HP){

new idfrags = pev_user_frags(id) + hitscore// 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_ALL, g_msgDeathMsg, {0, 0, 0} ,0)

write_byte(id)

write_byte(target)

write_byte(0)

write_string(ENT_CLASS_NAME)

message_end()

message_begin(MSG_ALL, g_msgScoreInfo)

write_byte(id)

write_short(idfrags)

write_short(iddeaths)

write_short(0)

write_short(idteam)

message_end()

set_msg_block(g_msgDeathMsg, BLOCK_ONCE)

//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)

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, 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_disconnect(id){

if(!get_pcvar_num( g_LENABLE ))

return PLUGIN_CONTINUE

DeleteTask(id);

RemoveAllTripmines(id);

return PLUGIN_CONTINUE

}

public newround(id){

if(!get_pcvar_num( g_LENABLE ))

return PLUGIN_CONTINUE

pev(id, pev_maxspeed,plspeed[id])

DeleteTask(id);

RemoveAllTripmines(id);

delaycount(id);

SetStartAmmo(id);

return PLUGIN_CONTINUE

}

public 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®;

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;

}

Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3763 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...