Raised This Month: $ Target: $400
 0% 

Suggestion / Subplugin Request [Request] Mine destroy punisher


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
skakac.33
Member
Join Date: Aug 2009
Old 04-01-2010 , 17:24   [Request] Mine destroy punisher
Reply With Quote #1

Hi,
I have request for plugin that punish team players that destroys your lasermine.
Lasermine plugin: Laser/TripMine Entity v2.3 by +ARUKARI-

Descliption:
  • When somebody from your team destroys your lasermine you get a menu like:
"Nick" destroyed your lasermine slap him to 1hp yes/no (or slay him yes/no).
skakac.33 is offline
artos
Senior Member
Join Date: Mar 2010
Old 04-01-2010 , 17:39   Re: [Request] Mine destroy punisher
Reply With Quote #2

Very good idea! It would be useful.

If anyone would destroy a laser mine teammate, he would be killed.
artos is offline
Send a message via Skype™ to artos
r1laX
Senior Member
Join Date: Mar 2010
Old 04-02-2010 , 02:43   Re: [Request] Mine destroy punisher
Reply With Quote #3

Quote:
Originally Posted by skakac.33 View Post
Hi,
I have request for plugin that punish team players that destroys your lasermine.
Lasermine plugin: Laser/TripMine Entity v2.3 by +ARUKARI-

Descliption:
  • When somebody from your team destroys your lasermine you get a menu like:
"Nick" destroyed your lasermine slap him to 1hp yes/no (or slay him yes/no).
i have another idea when a teammate destroy the lasermine (cost 8 AP) the teammate will have to give 8 AP to the one who place the lasermine.

if he doesn't have 8 AP then he will die
__________________
I'm New
SORRY FOR MY BAD ENGLISH
r1laX is offline
Melisko
Senior Member
Join Date: Feb 2010
Old 04-02-2010 , 02:52   Re: [Request] Mine destroy punisher
Reply With Quote #4

Quote:
Originally Posted by r1laX View Post
i have another idea when a teammate destroy the lasermine (cost 8 AP) the teammate will have to give 8 AP to the one who place the lasermine.

if he doesn't have 8 AP then he will die
On one zombie server , there was a LM plugin , and players can go through mines and cant destroy them (ofcourse zombies can destroy it)
Melisko is offline
r1laX
Senior Member
Join Date: Mar 2010
Old 04-02-2010 , 03:17   Re: [Request] Mine destroy punisher
Reply With Quote #5

Quote:
Originally Posted by Melisko View Post
On one zombie server , there was a LM plugin , and players can go through mines and cant destroy them (ofcourse zombies can destroy it)
they can go through the mine but they can destroy it
__________________
I'm New
SORRY FOR MY BAD ENGLISH
r1laX is offline
Old 04-02-2010, 03:23
buzzy147
This message has been deleted by buzzy147.
Melisko
Senior Member
Join Date: Feb 2010
Old 04-02-2010 , 03:23   Re: [Request] Mine destroy punisher
Reply With Quote #7

Quote:
Originally Posted by r1laX View Post
they can go through the mine but they can destroy it
No no no , they couldnt destroy the mine
Melisko is offline
SpILL
Veteran Member
Join Date: Oct 2009
Location: Karachi, Pakistan
Old 04-02-2010 , 03:02   Re: [Request] Mine destroy punisher
Reply With Quote #8

There is another way..
Only apposition team can destroy lasers, neither you nor your teammates.
SEARCH!
__________________


SpILL is offline
Shidla
Senior Member
Join Date: Nov 2008
Location: Russia, Moscow
Old 04-02-2010 , 08:54   Re: [Request] Mine destroy punisher
Reply With Quote #9

http://forums.alliedmods.net/showthr...29#post1122329
__________________
[Russian Federation] NOT USSR
This is madness?! This is Shidla!
[ZP] Laser Mine 2.8.2 ML (NEW !!2013!!) | [ZP] New Win Msg 1.4
| [ZP] MutaDote 1.1
Shidla is offline
Send a message via ICQ to Shidla Send a message via Skype™ to Shidla
skakac.33
Member
Join Date: Aug 2009
Old 04-03-2010 , 01:58   Re: [Request] Mine destroy punisher
Reply With Quote #10

Quote:
Originally Posted by Shidla View Post
Quote:
Originally Posted by artos View Post
Yes i got it! Here you go SMA file.

PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <xs>
#include <zombieplague>

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

#define PLUGIN "LaserMine AP"
#define VERSION "2.32"
#define AUTHOR "SandStriker/Shidla/QuZ/DJ_WEST"

#define RemoveEntity(%1)   engfunc(EngFunc_RemoveEntity,%1)
#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)


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[]   = "items/suitchargeok1.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_NAME3[]   = "func_breakable";

new const
   
CHATTAG[]       = "[ЛазерныеМины]",

   
STR_NOTACTIVE[]    = "МИНЫ ВЫКЛЮЧЕНЫ!",
   
STR_DONTHAVEMINE[]   = "У Вас нет лазерных мин.",
   
STR_MAXDEPLOY[]      = "Установлен максимум  мин.",
   
STR_MANYPPL[]      = "Слишком много мин для  вашей команды...",
   
STR_PLANTWALL[]      = "Мины нужно ставить на  стену!",
   
STR_REF[]      = "Чтоб узнать как ставить  мины пропишите в консоли: 'say lasermine'",
   
STR_CBT[]      = "Вы не можете ставить мины!",
   
STR_CANTBUY[]      = "Can't buying this server.",
   
STR_HAVEMAX[]      = "У Вас максимум Лазерных  Мин.",
   
STR_NOMONEY[]      = "У Вас не достаточно  средств (нужно ",
   
STR_NEEDED[]      = "бонусa",
   
STR_DELAY[]      = "Вы можете покупать и  ставить мины через",
   
STR_SECONDS[]      = "сек.",
   
STR_BOUGHT[]      = "Вы купили лазерную мину!",
   
STR_STATE[]      = "Количество мин:",
   
STR_NOACCESS[]      = "И куда ты ломишься?!";

new 
g_EntMine;
new 
beamboom
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;
new 
Float:plspeed[33]
new 
plsetting[33]
new 
g_havemine[33];
new 
g_deployed[33];

public 
plugin_init()
{
   
register_plugin(PLUGINVERSIONAUTHOR);

   
// Вызываем функцию Laser_TakeDamage при  получении урона объектом ENT_CLASS_NAME3  (func_breakable)
   
RegisterHam(Ham_TakeDamageENT_CLASS_NAME3"Laser_TakeDamage")
   
   
// 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");

   
g_LENABLE   register_cvar("zp_ltm","1")
   
g_LACCESS   register_cvar("zp_ltm_acs","0")  //0 all, 1 admin
   
g_LMODE      register_cvar("zp_ltm_mode","0"//0 lasermine, 1  tripmine
   
g_LAMMO      register_cvar("zp_ltm_ammo","5")
   
g_LDMG      register_cvar("zp_ltm_dmg","60"//laser hit dmg
   
g_LCOST      register_cvar("zp_ltm_cost","5")
   
g_LFMONEY   register_cvar("zp_ltm_fragmoney","300")
   
g_LHEALTH   register_cvar("zp_ltm_health","5")
   
g_LTMAX      register_cvar("zp_ltm_teammax","100")
   
g_LRADIUS   register_cvar("zp_ltm_radius","320.0")
   
g_LRDMG      register_cvar("zp_ltm_rdmg","100"//radius damage
   
g_LFF      register_cvar("zp_ltm_ff","0")
   
g_LCBT      register_cvar("zp_ltm_cbt","ALL")
   
g_LDELAY   register_cvar("zp_ltm_delay","0.1")
   
//g_LTHINK = register_cvar("zp_ltm_think","0.01")
   
g_LVISIBLE   register_cvar("zp_ltm_line","1")
   
g_LGLOW      register_cvar("zp_ltm_glow","0")
   
g_LCBRIGHT   register_cvar("zp_ltm_bright","255")//laser line  brightness.
   
g_LCLMODE   register_cvar("zp_ltm_color","0"//0 is team color,1  is green
   
g_LDMGMODE   register_cvar("zp_ltm_ldmgmode","0"//0 - frame dmg, 1  - once dmg, 2 - 1 second dmg
   
g_LDSEC      register_cvar("zp_ltm_ldmgseconds","1"//mode 2 only,  damage / seconds. default 1 (sec)
   
g_LSTAMMO   register_cvar("zp_ltm_startammo","1")
   
g_LBUYMODE   register_cvar("zp_ltm_buymode","1");
   
g_LCMDMODE   register_cvar("zp_ltm_cmdmode","0");      //0 is +USE  key, 1 is bind, 2 is each.

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

   
// -- 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);
   
format(file63"%s/zp_ltm_cvars_ap.cfg"file);
   if(
file_exists(file)) server_cmd("exec %s"file), server_exec();

}

public 
Laser_TakeDamage(victiminflictorattackerFloat:f_Damage,  bit_Damage)
{
    new 
i_Owner

    
// Получаем ID игрока, который поставил  мину
    
i_Owner pev(victimLASERMINE_OWNER)

    
// Если команда того, кто поставил  мину и того, кто атаковал совпадают
    
if (CsTeams:pev(victimLASERMINE_TEAM) ==  cs_get_user_team(attacker))
    
// Если тот кто поставил мину, не  совпадает с тем, кто ее атаковал, то  прекращаем выполнение
    
if (i_Owner != attacker)
        return 
HAM_SUPERCEDE
        
    
return PLUGIN_CONTINUE
}

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_beginMSG_ONE108, {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_beginMSG_ONE108, {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_ONE108, {0,0,0}, id);
   
write_byte(0);
   
write_byte(0);
   
message_end();

   return 
PLUGIN_HANDLED;
}

public 
StopReturnLaserMine(id)
{

   
DeleteTask(id);
   
message_begin(MSG_ONE108, {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(tgtpev_classnameEntityName31);
   if(!
equal(EntityNameENT_CLASS_NAME)) return;
   if(
pev(tgt,LASERMINE_OWNER) != id) return;
   
RemoveEntity(tgt);

   
g_havemine[id] ++;
   
g_deployed[id] --;
   
emit_sound(idCHAN_ITEMENT_SOUND5VOL_NORMATTN_NORM0,  PITCH_NORM)
   
ShowAmmo(id)

   return;
}

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

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


   
xs_vec_mul_scalarvNormal8.0vNormal );
   
xs_vec_addvTraceEndvNormalvNewOrigin );

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

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

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

   
engfuncEngFunc_TraceLinevNewOriginvBeamEndIGNORE_MONSTERS,  -1);

   
get_tr20TR_vecPlaneNormalvNormal );
   
get_tr20TR_vecEndPosvTracedBeamEnd );

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

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

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

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

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

   return 
cnt;
}

bool:CheckCanTeam(id)
{
   new 
arg[5],CsTeam:num;
   
get_pcvar_string(g_LCBT,arg,3);
   if(
equali(arg,"T"))
   {
      
num CsTeam:CS_TEAM_T;
   }
   else if(
equali(arg,"CT"))
   {
      
num CsTeam:CS_TEAM_CT;
   }
   else if(
equali(arg,"ALL"))
   {
      
num CsTeam:CS_TEAM_UNASSIGNED;
   }   
   else
   {
      
num CsTeam:CS_TEAM_UNASSIGNED;
   }
   if(
num != CsTeam:CS_TEAM_UNASSIGNED && num !=  CsTeam:cs_get_user_team(id))
      return 
false;
   return 
true;
}

bool:CanCheck(id,mode)
{
   if( !
get_pcvar_numg_LENABLE ) || zp_is_nemesis_round() ||  zp_is_survivor_round() || !zp_has_round_started())
   {
      
client_print(idprint_chat"%s %s",CHATTAG,STR_NOTACTIVE);
      return 
false;
   }
   if( 
get_pcvar_num(g_LACCESS) != 0)
      if(!(
get_user_flags(id) & ADMIN_IMMUNITY))
      {
         
client_print(idprint_chat"%s %s",CHATTAG,STR_NOACCESS);
         return 
false;
      }
   if(!
pev_user_alive(id)) return false;
   if (!
CheckCanTeam(id))
   {
      
client_print(idprint_chat"%s %s",CHATTAG,STR_CBT);
      return 
false;
   }
   if( 
mode == 0)
   {
      if(
g_havemine[id] <= 0)
      {
         
client_print(idprint_chat"%s %s",CHATTAG,STR_DONTHAVEMINE);
         return 
false;
      }
   }
   if (
mode == 1)
   {
      if (
get_pcvar_num(g_LBUYMODE) == 0)
      {
         
client_print(idprint_chat"%s %s",CHATTAG,STR_CANTBUY);
         return 
false;
      }
      if (
g_havemine[id] >= get_pcvar_num(g_LAMMO))
      {
         
client_print(idprint_chat"%s %s",CHATTAG,STR_HAVEMAX);
         return 
false;
      }
      if (
zp_get_user_ammo_packs(id) < get_pcvar_num(g_LCOST))
      {
         
client_print(idprint_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:ReturnCheckid )
{
   if(!
CanCheck(id,-1)) return false;
   if(
g_havemine[id] + get_pcvar_num(g_LAMMO)) return false;
   new 
tgt,body,Float:vo[3],Float:to[3];
   
get_user_aiming(id,tgt,body);
   if(!
pev_valid(tgt)) return false;
   
pev(id,pev_origin,vo);
   
pev(tgt,pev_origin,to);
   if(
get_distance_f(vo,to) > 70.0) return false;
   
   new 
EntityName[32];
   
pev(tgtpev_classnameEntityName31);
   if(!
equal(EntityNameENT_CLASS_NAME)) return false;
   if(
pev(tgt,LASERMINE_OWNER) != id) return false;
   
   return 
true;
}

bool:CreateCheckid )
{
   if (!
CanCheck(id,0)) return false;
   if (
g_deployed[id] >= get_pcvar_num(g_LAMMO))
   {
      
client_print(idprint_chat"%s %s",CHATTAG,STR_MAXDEPLOY);
      return 
false;
   }

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

      return 
true;
   }

   
client_print(idprint_chat"%s %s",CHATTAG,STR_PLANTWALL)
   
DeleteTask(id);
   
// -- Did not touched something. (not solid)
   
return false;
}

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

   static 
Float:fCurrTime;
   
fCurrTime get_gametime();

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

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

            
PlaySoundi_EntACTIVATE_SOUND );
         }
         if(
get_pcvar_num(g_LGLOW)!=0)
         {
            if(
get_pcvar_num(g_LCLMODE)==0)
            {
               switch (
pev(i_Ent,LASERMINE_TEAM))
               {
                  
// цвет лазера Т
                  
case CS_TEAM_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_pevi_Entpev_nextthinkfCurrTime 0.1 );
      }
      case 
BEAMBREAK_THINK :
      {
         static 
Float:vEnd[3],Float:vOrigin[3];
         
pevi_Entpev_originvOrigin );
         
pevi_EntLASERMINE_BEAMENDPOINTvEnd );

         static 
iHitFloat:fFraction;
         
engfuncEngFunc_TraceLinevOriginvEnd,  DONT_IGNORE_MONSTERSi_Ent);

         
get_tr20TR_flFractionfFraction );
         
iHit get_tr20TR_pHit );

         
// -- Something has passed the laser.
         
if ( fFraction 1.0 )
         {
            
// -- Ignoring others tripmines entity.
            
if(pev_valid(iHit))
            {
               
peviHitpev_classnameEntityName31 );
   
               if( !
equalEntityNameENT_CLASS_NAME ) )
               {
                  
set_pevi_Entpev_enemyiHit );
                  if(
get_pcvar_num(g_LMODE) == MODE_LASERMINE)
                     
CreateLaserDamage(i_Ent,iHit);
                  else
                     if(
get_pcvar_num(g_LFF) ||  CsTeams:pev(i_Ent,LASERMINE_TEAM) != cs_get_user_team(iHit))
                        
set_pevi_EntLASERMINE_STEPEXPLOSE_THINK );
            
                  
set_pevi_Entpev_nextthinkfCurrTime +  random_float0.10.3 ) );
               }
            }
         }
         if(
get_pcvar_num(g_LDMGMODE)!=0)
            if(
pev(i_Ent,LASERMINE_HITING) != iHit)
               
set_pev(i_Ent,LASERMINE_HITING,iHit);
 
         
// -- Tripmine is still there.
         
if ( pev_validi_Ent ))
         {
            static 
Float:fHealth;
        
pevi_Entpev_healthfHealth );

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

   return 
FMRES_IGNORED;
}

PlaySoundi_Enti_SoundType )
{
   switch ( 
i_SoundType )
   {
      case 
POWERUP_SOUND :
      {
         
emit_soundi_EntCHAN_VOICEENT_SOUND1VOL_NORMATTN_NORM,  0PITCH_NORM );
         
emit_soundi_EntCHAN_BODY ENT_SOUND20.2ATTN_NORM0,  PITCH_NORM );
      }
      case 
ACTIVATE_SOUND :
      {
         
emit_soundi_EntCHAN_VOICEENT_SOUND30.5ATTN_NORM1,  75 );
      }
      case 
STOP_SOUND :
      {
         
emit_soundi_EntCHAN_BODY ENT_SOUND20.2ATTN_NORM,  SND_STOPPITCH_NORM );
         
emit_soundi_EntCHAN_VOICEENT_SOUND30.5ATTN_NORM,  SND_STOP75 );
      }
   }
}

DrawLaser(i_Ent, const Float:v_Origin[3], const Float:v_EndOrigin[3] )
{
   new 
tcolor[3];
   new 
teamid pev(i_EntLASERMINE_TEAM);
   if(
get_pcvar_num(g_LCLMODE) == 0)
   {
      switch(
teamid){
         case 
1:{
            
tcolor[0] = 255;
            
tcolor[1] = 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)
            {
                zp_set_user_ammo_packs(AtkID,zp_get_user_ammo_packs(AtkID) +  get_pcvar_num(g_LFMONEY))
               set_score(AtkID,Player,1,iHitHP)
            }else
            {
               if(get_pcvar_num(g_LFF))
               {
                   zp_set_user_ammo_packs(AtkID,zp_get_user_ammo_packs(AtkID) -  get_pcvar_num(g_LFMONEY))
                  set_score(AtkID,Player,-1,iHitHP)
               }
            }
         }else
         {
            if(iHitTeam != TeamID || get_pcvar_num(g_LFF))
            {
               set_user_health(Player, iHitHP)
               message_begin(MSG_ONE_UNRELIABLE, g_msgDamage, {0,0,0},  Player) 
               write_byte(dmg)
               write_byte(dmg)
               write_long(DMG_BULLET)
               engfunc(EngFunc_WriteCoord,vOrigin[0])
               engfunc(EngFunc_WriteCoord,vOrigin[1])
               engfunc(EngFunc_WriteCoord,vOrigin[2])
               message_end()
            }
         }
      }
      Player =   engfunc(EngFunc_FindEntityInSphere,Player,vOrigin,Radius)
   }
   return PLUGIN_CONTINUE
}
*/
CreateDamage(iCurrent,Float:DmgMAX,Float:Radius)
{
   
// Get given parameters
   
   
new Float:vecSrc[3];
   
pev(iCurrentpev_originvecSrc);

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

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

   new 
Float:kickback 0.0;
   
   
// Needed for doing some nice calculations :P
   
new Float:Tabsmin[3], Float:Tabsmax[3];
   new 
Float:vecSpot[3];
   new 
Float:Aabsmin[3], Float:Aabsmax[3];
   new 
Float:vecSee[3];
   new 
trRes;
   new 
Float:flFraction;
   new 
Float:vecEndPos[3];
   new 
Float:distance;
   new 
Float:origin[3], Float:vecPush[3];
   new 
Float:invlen;
   new 
Float:velocity[3];
   new 
iHitHP,iHitTeam;
   
// Calculate falloff
   
new Float:falloff;
   if (
Radius 0.0)
   {
      
falloff DmgMAX Radius;
   } else {
      
falloff 1.0;
   }
   
   
// Find monsters and players inside a specifiec radius
   
while((ent engfunc(EngFunc_FindEntityInSphereentvecSrc,  Radius)) != 0)
   {
      if(!
pev_valid(ent)) continue;
      if(!(
pev(entpev_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(entpev_absminTabsmin);
      
pev(entpev_absmaxTabsmax);
      
xs_vec_add(Tabsmin,Tabsmax,Tabsmin);
      
xs_vec_mul_scalar(Tabsmin,0.5,vecSpot);
      
      
pev(iCurrentpev_absminAabsmin);
      
pev(iCurrentpev_absmaxAabsmax);
      
xs_vec_add(Aabsmin,Aabsmax,Aabsmin);
      
xs_vec_mul_scalar(Aabsmin,0.5,vecSee);
      
      
engfunc(EngFunc_TraceLinevecSeevecSpot0iCurrenttrRes);
      
get_tr2(trResTR_flFractionflFraction);
      
// Explosion can 'see' this entity, so hurt them! (or impact  through objects has been enabled xD)
      
if (flFraction >= 0.9 || get_tr2(trResTR_pHit) == ent)
      {
         
// Work out the distance between impact and entity
         
get_tr2(trResTR_vecEndPosvecEndPos);
         
         
distance get_distance_f(vecSrcvecEndPos) * falloff;
         
tmpdmg -= distance;
         if(
tmpdmg 0.0)
            
tmpdmg 0.0;
         
         
// Kickback Effect
         
if(kickback != 0.0)
         {
            
xs_vec_sub(vecSpot,vecSee,origin);
            
            
invlen 1.0/get_distance_f(vecSpotvecSee);

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

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

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

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

   
message_begin(MSG_BROADCASTSVC_TEMPENTITY);
   
write_byte(99); //99 = KillBeam
   
write_short(iCurrent);
   
message_end();

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

CreateLaserDamage(iCurrent,isHit)
{
   if(
isHit ) return PLUGIN_CONTINUE
   
switch(get_pcvar_num(g_LDMGMODE))
   {
      case 
1:
      {
         if(
pev(iCurrent,LASERMINE_HITING) == isHit)
            return 
PLUGIN_CONTINUE
      
}
      case 
2:
      {
         if(
pev(iCurrent,LASERMINE_HITING) == isHit)
         {
            static 
Float:cnt
            
static now,htime;now floatround(get_gametime())

            
pev(iCurrent,LASERMINE_COUNT,cnt)
            
htime floatround(cnt)
            if(
now htime get_pcvar_num(g_LDSEC))
            {
               return 
PLUGIN_CONTINUE;
            }else{
               
set_pev(iCurrent,LASERMINE_COUNT,get_gametime())
            }
         }else
         {
            
set_pev(iCurrent,LASERMINE_COUNT,get_gametime())
         }
      }
   }

   new 
Float:vOrigin[3],Float:vEnd[3]
   
pev(iCurrent,pev_origin,vOrigin)
   
pev(iCurrent,pev_vuser1,vEnd)

   new 
teamid pev(iCurrentLASERMINE_TEAM)

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

   
   szClassName
[0] = '^0'
   
pev(isHit,pev_classname,szClassName,32)
   
   if((
pev(isHitpev_flags) & (FL_CLIENT FL_FAKECLIENT |  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(isHitCHAN_WEAPONENT_SOUND41.0ATTN_NORM,  0PITCH_NORM )
            
hitscore 1
            zp_set_user_ammo_packs
(id,zp_get_user_ammo_packs(id) +  get_pcvar_num(g_LFMONEY))
            
set_score(id,isHit,hitscore,iHitHP)
         }else
         {
            if(
get_pcvar_num(g_LFF))
            {
               
emit_sound(isHitCHAN_WEAPONENT_SOUND41.0,  ATTN_NORM0PITCH_NORM )
               
hitscore = -1                           
               zp_set_user_ammo_packs
(id,zp_get_user_ammo_packs(id) -  get_pcvar_num(g_LFMONEY))
               
set_score(id,isHit,hitscore,iHitHP)
            }
         }
      }else if(
iHitTeam != teamid || get_pcvar_num(g_LFF))
      {
         
emit_sound(isHitCHAN_WEAPONENT_SOUND41.0ATTN_NORM0,  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(szClassNameENT_CLASS_NAME3))
   {
      new 
hl;
      
hl pev_user_health(isHit);
      
set_user_health(isHit,hl-get_pcvar_num(g_LDMG));
   }
   return 
PLUGIN_CONTINUE
}

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

stock set_user_health(id,health)
{
   
health set_pev(idpev_healthfloat(health)) :  dllfunc(DLLFunc_ClientKillid);
}

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

   return (
val == DAMAGE_NO)
}

stock set_user_frags(indexfrags)
{
   
set_pev(indexpev_fragsfloat(frags))

   return 
1
}

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

set_score(id,target,hitscore,HP){

   new 
idfrags pev_user_frags(id) + hitscore// get_user_frags(id) +  hitscore   
   
set_user_frags(id,idfrags)
   
   new 
tarfrags pev_user_frags(target) + //get_user_frags(target) + 1
   
set_user_frags(target,tarfrags)
   
   new 
idteam int:cs_get_user_team(id)
   new 
iddeaths cs_get_user_deaths(id)


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

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

   
set_msg_block(g_msgDeathMsgBLOCK_ONCE)

   
set_user_health(targetHP)

}

public 
BuyLasermine(id)
{   
   if( !
CanCheck(id,1) ) return PLUGIN_CONTINUE
   zp_set_user_ammo_packs
(id,zp_get_user_ammo_packs(id) -  get_pcvar_num(g_LCOST))
   
g_havemine[id]++;
   
client_print(idprint_chat"%s %s",CHATTAG,STR_BOUGHT)
   
emit_sound(idCHAN_ITEMENT_SOUND5VOL_NORMATTN_NORM0,  PITCH_NORM)
   
ShowAmmo(id)
   return 
PLUGIN_HANDLED
}

ShowAmmo(id)

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

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


public 
showInfo(id)
{
   
client_print(idprint_chatSTR_REF)
}

public 
say_lasermine(id){
   new 
said[32]
   
read_argv(1,said,31);
   if( !
get_pcvar_numg_LENABLE ) || zp_is_nemesis_round() ||  zp_is_survivor_round() || !zp_has_round_started())
   {
      return 
PLUGIN_CONTINUE
   
}
   
   if (
equali(said,"/buy  lasermine")||equali(said,"/lm")||equali(said,"buy_lasermine")){
      
BuyLasermine(id)
   }else if (
equali(said"lasermine") || equali(said"/lasermine")){
      const 
SIZE 1024
      
new msg[SIZE+1],len 0;
      
len += formatex(msg[len], SIZE len"<html><body>")
      
len += formatex(msg[len], SIZE len,  "<p><b>LaserMine</b></p><br/><br/>")
      
len += formatex(msg[len], SIZE len"<p>You can be setting  the mine on the wall.</p><br/>")
      
len += formatex(msg[len], SIZE len"<p>That laser will  give what touched it damage.</p><br/><br/>")
      
len += formatex(msg[len], SIZE len"<p><b>LaserMine  Commands</b></p><br/><br/>")
      
len += formatex(msg[len], SIZE len"<p><b>Say /buy  lasermine</b> or <b>Say /lm</b> //buying  lasermine<br/>")
      
len += formatex(msg[len], SIZE len,  "<b>buy_lasermine</b> //bind ^"F2^" buy_lasermine : using F2  buying lasermine<br/>")
      
len += formatex(msg[len], SIZE len,  "<b>+setlaser</b> //bind mouse3 +setlaser : using mouse3 set  lasermine on wall<br/>")
      
len += formatex(msg[len], SIZE len,  "</body></html>")
      
show_motd(idmsg"Lasermine Entity help")
      return 
PLUGIN_CONTINUE
   
}
   else if (
containi(said"laser") != -1) {
      
showInfo(id)
      return 
PLUGIN_CONTINUE
   
}
   return 
PLUGIN_CONTINUE
}

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

   set_pev
(idpev_maxspeed1.0)
//   ShowAmmo(id)

   
return PLUGIN_CONTINUE
}

public 
ltm_PostThink(id
{
   if (!
g_settinglaser[id] && plsetting[id]){
      
resetspeed(id)
   }
   else if (
g_settinglaser[id] && !plsetting[id]) {
      
pev(idpev_maxspeed,plspeed[id])
      
set_pev(idpev_maxspeed1.0)
   }
   
plsetting[id] = g_settinglaser[id]
   return 
FMRES_IGNORED
}

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

   if(
pev(idpev_button ) & IN_USE && !(pev(id,  pev_oldbuttons ) & IN_USE ))
      
CreateLaserMine_Progress(id)
   return 
FMRES_IGNORED;
}

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

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

public 
client_disconnect(id){
   if( !
get_pcvar_numg_LENABLE ) || zp_is_nemesis_round() ||  zp_is_survivor_round() || !zp_has_round_started())
      return 
PLUGIN_CONTINUE
   DeleteTask
(id);
   
RemoveAllTripmines(id);
   return 
PLUGIN_CONTINUE
}


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

public 
DeathEvent(){
   if( !
get_pcvar_numg_LENABLE ) || zp_is_nemesis_round() ||  zp_is_survivor_round() || !zp_has_round_started())
      return 
PLUGIN_CONTINUE

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

public 
RemoveAllTripminesi_Owner )
{
   new 
iEnt g_MaxPL 1;
   new 
clsname[32];
   while( ( 
iEnt engfuncEngFunc_FindEntityByStringiEnt,  "classname"ENT_CLASS_NAME ) ) )
   {
      if ( 
i_Owner )
      {
         if( 
peviEntLASERMINE_OWNER ) != i_Owner )
            continue;
         
clsname[0] = '^0'
         
peviEntpev_classnameclsnamesizeof(clsname)-);
                
         if ( 
equaliclsnameENT_CLASS_NAME ) )
         {
            
PlaySoundiEntSTOP_SOUND );
            
RemoveEntityiEnt );
         }
      }
      else
         
set_peviEntpev_flagsFL_KILLME );
   }
   
g_deployed[i_Owner]=0;
}

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

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

DeleteTask(id)
{
   if (
task_exists((TASK_PLANT id)))
   {
      
remove_task((TASK_PLANT id))
   }
   if (
task_exists((TASK_RELEASE id)))
   {
      
remove_task((TASK_RELEASE id))
   }
   
g_settinglaser[id] = false
   
return PLUGIN_CONTINUE;
}

stock set_rendering(entityfx kRenderFxNone255255=  255render kRenderNormalamount 16)
{
   static 
Float:RenderColor[3];
   
RenderColor[0] = float(r);
   
RenderColor[1] = float(g);
   
RenderColor[2] = float(b);

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

   return 
1
}

// Gets offset data
get_offset_value(idtype)
{
   new 
key = -1;
   switch(
type)
   {
      case 
OFFSET_TEAMkey OFFSET_TEAM;
      case 
OFFSET_MONEY:
      
key OFFSET_MONEY;
      case 
OFFSET_DEATHkey OFFSET_DEATH;
   }
   
   if(
key != -1)
   {
      if(
is_amd64_server()) key += 25;
      return 
get_pdata_int(idkey);
   }
   
   return -
1;

@Edit
Woops i forgot to put CFG file.

PHP Code:
// Конфиг дазеных мин за БОНУСЫ
zp_ltm 1            // 1 - мины включены
zp_ltm_acs 0            // 0 - могут ставить все, 1 -  админы
zp_ltm_mode 0            // 0 - просто лазер, 1 -  взрывающаяся
zp_ltm_ammo 5            // сколько можно покупать
zp_ltm_dmg 10            // урон от мины
zp_ltm_cost 2            // стоимость мины (!В  БОНУСАХ!)
zp_ltm_fragmoney 1        // сколько бонусов давать  за убийство
zp_ltm_health 5            // жизьнь мины
zp_ltm_teammax 50        // сколько может поставить  команда
zp_ltm_radius 0.1        // радиус установки
zp_ltm_rdmg 1000        // максимальный радиус  урона
zp_ltm_ff 0            // 1 - может убивать своих; 0 -  не может
zp_ltm_cbt ALL            // какая команда может  покупать
zp_ltm_delay 0.1        // через какое время в сек.  можно купить следующую
zp_ltm_line 1            // 0 - не показывать лазер; 1 -  показывать
zp_ltm_glow 1            // отблеск
zp_ltm_bright 200        // яркость
zp_ltm_color 0            // луч: 0 - цвет команды; 1 -  зеленый
zp_ltm_ldmgmode 0        // 0 - frame dmg, 1 - once dmg, 2 - 1 second  dmg
zp_ltm_ldmgseconds 1        // mode 2 only, damage / seconds. default 1  (sec)
zp_ltm_buymode 1        // разрешить покупку через  чат
zp_ltm_cmdmode 1        //0 is +USE key, 1 is bind, 2 is each.
zp_ltm_startammo 0 
Don't ask me what those tags mean.

This plugin is broken, it's full of bugs, and my server has 200mb log because of this plugin..
skakac.33 is offline
Reply



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

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

Forum Jump


All times are GMT -4. The time now is 17:13.


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