Добро пожаловать на форум, Гость, это ваша панель
  • Страница 1 из 1
  • 1
Can help me in plugin lasermine
Kaimins
Дата: Понедельник, 16.01.2017, 19:47 | Сообщение # 1
офлайн

  • Сообщения: 10
  • Награды: 0
  • Замечания:
 
Кто-нибудь может помочь с Lasermine плагинов
У меня есть тот же плагин посажено, лазер может быть использован для всех или Vipi.
Но не посадили команду, чтобы иметь возможность использовать оба Vipi как обычные.
Или кто-то может перекодировать так, что Vipi может положить 3 лазер и обычный 1 lazerminu?

Добавлено (30.05.2016, 18:18)
---------------------------------------------
[php]Up pamagite že
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <xs>
#include <cstrike>
//#include <fakemeta_util>
#define PLUGIN "Laser/TripMine Entity"
#define VERSION "2.0"
#define AUTHOR "SandStriker"

#define RemoveEntity(%1) engfunc(EngFunc_RemoveEntity,%1)
#define ACCESSLEVEL ADMIN_LEVEL_H
#define TASK_PLANT 15100
#define TASK_RESET 15500

#define LASERMINE_INT_TEAM pev_iuser1 //EV_INT_iuser1
#define LASERMINE_STEP pev_iuser2
#define LASERMINE_OWNER pev_iuser3 //EV_INT_iuser3
#define LASERMINE_POWERUP pev_fuser1
#define LASERMINE_BEAMTHINK pev_fuser2

#define LASERMINE_BEAMENDPOINT pev_vuser1
//#define MAX_MINES 10
#define MODE_LASERMINE 0

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[] = "weapons/mine_activate.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
CHATTAG[] = "[LaserMines]",
//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'",
STR_CBT[] = "Your team can't buying lasermine!",
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:";

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,
g_LDELAY,/*g_LTHINK,*/g_LVISIBLE;

new g_dcount,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(PLUGIN, VERSION, AUTHOR)

// Add your code here...
register_clcmd("+setlaser","CreateLaserMine_Progress");
register_clcmd("-setlaser","StopCreateLaserMine");
register_clcmd("say","say_lasermine");
register_clcmd("buy_lasermine","BuyLasermine");
g_LENABLE = register_cvar("amx_ltm","1")

g_LMODE = register_cvar("amx_ltm_mode","0")
g_LAMMO = register_cvar("amx_ltm_ammo","2")
g_LDMG = register_cvar("amx_ltm_dmg","10000")
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","200.0")
g_LRDMG = register_cvar("amx_ltm_rdmg","1000")
g_LFF = register_cvar("amx_ltm_ff","0")
g_LCBT = register_cvar("amx_ltm_cbt","ALL")
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")

register_event("DeathMsg", "DeathEvent", "a")
register_event("CurWeapon", "standing", "be", "1=1")
register_event("ResetHUD", "delaycount", "a")
register_event("ResetHUD", "newround", "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" );
}

public plugin_precache()
{
precache_sound(ENT_SOUND1);
precache_sound(ENT_SOUND2);
precache_sound(ENT_SOUND3);
precache_sound(ENT_SOUND4);
precache_sound(ENT_SOUND5);
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();
}

public delaycount()
{
g_dcount = floatround(get_gametime())
}

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

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

new PID[1];
PID[0] = id;
set_task(1.2, "Spawn", (TASK_PLANT + id), PID, 1);

return PLUGIN_HANDLED;
}

public StopCreateLaserMine(id)
{
if (task_exists((TASK_PLANT + id)))
{
remove_task((TASK_PLANT + id));
}
g_settinglaser [id]= false

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

return PLUGIN_HANDLED;
}

public Spawn( ids[] )
{
new id = ids[0];
// 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_pev(i_Ent,pev_health, float(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:{ -8.0, -8.0, -8.0 }, Float:{ 8.0, 8.0, 8.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_INT_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]--;
g_settinglaser [id]= false
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:CreateCheck( id )
{
if( !get_pcvar_num( g_LENABLE ) )
{
client_print(id, print_chat, "%s %s",CHATTAG,STR_NOTACTIVE)
return false
}
if(g_settinglaser [id]|| task_exists((TASK_PLANT + id))) return false
if(!is_user_alive(id)) return false
if(!CheckTime()){
client_print(id,print_chat, "%s %s %d %s",CHATTAG,STR_DELAY,get_pcvar_num(g_LDELAY)-g_nowtime,STR_SECONDS)
return false
}
if(g_havemine [id]<= 0){
client_print(id, print_chat, "%s %s",CHATTAG,STR_DONTHAVEMINE)
return false
}

if (!CheckCanTeam(id))
{
client_print(id, print_chat, "%s %s",CHATTAG,STR_CANTDEPLOY)
return false
}
if (g_deployed [id]>= get_pcvar_num(g_LAMMO))  //unhandled error
{
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)
g_settinglaser [id]= false
// -- Did not touched something. (not solid)
return false;
}

public ltm_Think( i_Ent )
{
if ( !pev_valid( i_Ent ) )
return FMRES_IGNORED;
new EntityName[sizeof(ENT_CLASS_NAME)+1];
static const size = sizeof(ENT_CLASS_NAME);
pev( i_Ent, pev_classname, EntityName, size);
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 );
}

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.
pev( iHit, pev_classname, EntityName, size );

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
set_pev( i_Ent, LASERMINE_STEP, EXPLOSE_THINK );

set_pev( i_Ent, pev_nextthink, fCurrTime + random_float( 0.1, 0.3 ) );
}
}

// -- Tripmine is still there.
if ( pev_valid( i_Ent ) )
{
static Float:fHealth;
pev( i_Ent, pev_health, fHealth );

if( fHealth < 0 )
{
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) && pev(i_Ent, LASERMINE_STEP) != EXPLOSE_THINK)
{
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_num(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_INT_TEAM);
switch(teamid){
case 1:{
tcolor[0] = 255
tcolor[1] = 0
tcolor[2] = 0
}
case 2:{
tcolor[0] = 0
tcolor[1] = 0
tcolor[2] = 255
}
}
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(11) //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(255)
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_INT_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);
Player = engfunc(EngFunc_FindEntityInSphere,Player,vOrigin,Radius);
while(Player != 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:cs_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
}

CreateExplosion(iCurrent)
{

new Float:vOrigin[3]
pev(iCurrent,pev_origin,vOrigin)
//entity_get_vector(iCurrent, EV_VEC_origin, vOrigin)

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

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(3)
engfunc(EngFunc_WriteCoord,vOrigin[0])
engfunc(EngFunc_WriteCoord,vOrigin[1])
engfunc(EngFunc_WriteCoord,vOrigin[2])
write_short(boom)
write_byte(50)
write_byte(15)
write_byte(0)
message_end()
/*
if (iHit == -1)
{
client_print(id, print_chat, "%s %s",CHATTAG,STR_MINEDETNATED)
} else
{
szNetName[0] = '^0'
engfunc(EngFunc_AllocString,iHit,szNetName)
//entity_get_string(iHit, EV_SZ_netname, szNetName, 32)
client_print(id, print_chat, "%s %s %s",CHATTAG,szNetName,STR_MINEDETNATED2)
}
*/
}

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

//new isHit = fm_trace_line(iCurrent, vOrigin, vEnd, vTrace)
new teamid = pev(iCurrent, LASERMINE_INT_TEAM)

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

if(isHit < 0 ) return PLUGIN_CONTINUE

szClassName[0] = '^0'
pev(isHit,pev_classname,szClassName,32)

if(equal(szClassName, "player"))
{
Alive = is_user_alive(isHit)
God = get_user_godmode(isHit)
if(!Alive || God) return PLUGIN_CONTINUE

iHitTeam = int:cs_get_user_team(isHit)
//iHitHP = entity_get_float(isHit,EV_FL_health) - float(LASER_HIT_DMG)
iHitHP = pev_user_health(isHit) - get_pcvar_num(g_LDMG)
id = pev(iCurrent,LASERMINE_OWNER)//, szNetName[32]
if( get_pcvar_num(g_LMODE) == MODE_LASERMINE)
{
if(iHitHP <= 0)
{
if(iHitTeam != teamid)
{
hitscore = 1
cs_set_user_money(id,cs_get_user_money(id) + get_pcvar_num(g_LFMONEY))
//set_user_health(iHit, 0)
//entity_set_float(iHit, EV_FL_health,0.0)
emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM )
set_score(id,isHit,hitscore,iHitHP)
//entity_get_string(iHit, EV_SZ_netname, szNetName, 32)
//client_print(id, print_chat, " [LaserMines]%s killed your mine.",szNetName)
}else
{
if(get_pcvar_num(g_LFF))
{
hitscore = -1
cs_set_user_money(id,cs_get_user_money(id) - get_pcvar_num(g_LFMONEY))
emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM )
set_score(id,isHit,hitscore,iHitHP)
//set_user_health(iHit, 0)
//entity_set_float(iHit, EV_FL_health, 0.0)
//entity_get_string(iHit, EV_SZ_netname, szNetName, 32)
//client_print(id, print_chat, " [LaserMines]%s killed your mine.",szNetName)
}
}
}else if(iHitTeam != teamid || get_pcvar_num(g_LFF))
{
//entity_set_float(isHit,EV_FL_health,iHitHP)
//set_user_health(isHit, iHitHP)
set_user_health(isHit,iHitHP)
message_begin(MSG_ONE_UNRELIABLE, g_msgDamage, {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
{
CreateExplosion(iCurrent)
CreateDamage(iCurrent,get_pcvar_num(g_LRDMG),get_pcvar_float(g_LRADIUS))
RemoveEntity(iCurrent);
}
}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( !get_pcvar_num( g_LENABLE )  ){
client_print(id, print_chat, "%s %s",CHATTAG,STR_NOTACTIVE)
return PLUGIN_CONTINUE
}
if (!CheckCanTeam(id))
{
client_print(id, print_chat, "%s %s",CHATTAG,STR_CBT)
return PLUGIN_HANDLED
}
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 PLUGIN_HANDLED
}
if (g_havemine [id]>= get_pcvar_num(g_LAMMO)){
client_print(id, print_chat, "%s %s",CHATTAG,STR_HAVEMAX)
return PLUGIN_HANDLED
}
if(!CheckTime())
{
client_print(id,print_chat, "%s %s %d %s",CHATTAG,STR_DELAY,get_pcvar_num(g_LDELAY)-g_nowtime,STR_SECONDS)
return PLUGIN_HANDLED
}
cs_set_user_money(id,cs_get_user_money(id) - get_pcvar_num(g_LCOST))
g_havemine[id]++;
emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
client_print(id, print_chat, "%s %s",CHATTAG,STR_BOUGHT)
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
}

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

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

public client_disconnect(id){
if(!get_pcvar_num( g_LENABLE ))
return PLUGIN_CONTINUE
g_settinglaser [id]= false
RemoveAllTripmines(id);
return PLUGIN_CONTINUE
}

public newround(id){
if(!get_pcvar_num( g_LENABLE ))
return PLUGIN_CONTINUE
pev(id, pev_maxspeed,plspeed[id])
g_settinglaser [id]= false
RemoveAllTripmines(id);
return PLUGIN_CONTINUE
}

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

new id = read_data(2)
if (task_exists(TASK_PLANT+id))
remove_task(TASK_PLANT+id)
g_settinglaser [id]
= false
return PLUGIN_CONTINUE
}

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;
}[/php]

Добавлено (03.06.2016, 11:31)
---------------------------------------------
UP can help me

Добавлено (16.01.2017, 19:47)
---------------------------------------------
Bumup


Сообщение отредактировал Kaimins - Понедельник, 16.01.2017, 19:49
 
  • Страница 1 из 1
  • 1
Поиск: