AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   help (https://forums.alliedmods.net/showthread.php?t=75169)

tuty 07-31-2008 14:49

help
 
PHP Code:

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <xs>
#include <cstrike>
#include <biohazard>
//#include <fakemeta_util>

#define PLUGIN "LTM for BIOHAZARD"
#define VERSION "+1.1"
#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_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_DEATH         444
#define bio_get_user_team(%1)   CsTeams:get_pdata_int(%1, OFFSET_TEAM)
#define cs_get_user_deaths(%1)  get_pdata_int(%1, OFFSET_DEATH)

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
    
CHATTAG[]         = "[BIOLASER]",
    
//STR_MINEDETNATED[]     = "Laserul tau a fost detonat!",
    //STR_MINEDETNATED2[]    = "a detonat laserul tau.",
    
STR_NOTACTIVE[]     = "Laserele nu sunt active momentan.",
    
STR_DONTHAVEMINE[]    = "Sorry, nu ai niciun laser",
    
STR_CANTDEPLOY[]    = "Echipa ta nu poate pune lasere !",
    
STR_MAXDEPLOY[]        = "Ai ajuns la limita de lasere!",
    
STR_MANYPPL[]        = "Prea multa lume din echipa ta...",
    
STR_PLANTWALL[]        = "Trebuie sa plantezi laserul pe perete!",
    
STR_REF[]        = "Daca te referi la lasere pe acest server, scrie 'laserhelp'",
    
STR_CBT[]        = "Esti zombie! Nu poti sa cumperi si sa pui un laser!",
    
STR_HAVEMAX[]        = "Ai limita de lasere.",
    
STR_NOMONEY[]        = "Nu ai destui bani sa cumperi un laser($",
    
STR_NEEDED[]        = "iti trebuie)",
    
STR_DELAY[]        = "Poti sa cumperi si sa pui lasere dupa",
    
STR_SECONDS[]        = "secunde",
    
STR_BOUGHT[]        = "Ai cumparat cu succes un laser",
    
STR_STATE[]        = "Lasere:",
    
STR_NOACCESS[]        = "Nu poti accesa comanda aceasta!";

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;

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(PLUGINVERSIONAUTHOR)
    
    
// 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("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","1")
    
g_LDMG        register_cvar("bio_ltm_dmg","1000"//laser hit dmg
    
g_LCOST        register_cvar("bio_ltm_cost","1000")
    
g_LFMONEY    register_cvar("bio_ltm_fragmoney","500")
    
g_LHEALTH    register_cvar("bio_ltm_health","800")
    
g_LTMAX        register_cvar("bio_ltm_teammax","10")
    
g_LRADIUS    register_cvar("bio_ltm_radius","320.0")
    
g_LRDMG        register_cvar("bio_ltm_rdmg","200"//radius damage
    
g_LFF        register_cvar("bio_ltm_ff","0")
    
g_LCBT        register_cvar("bio_ltm_cbt","ALL")
    
g_LDELAY    register_cvar("bio_ltm_delay","15")
    
//g_LTHINK = register_cvar("bio_ltm_think","0.01")
    
g_LVISIBLE    register_cvar("bio_ltm_line","1")
    
g_LGLOW        register_cvar("bio_ltm_glow","1")
    
g_LCBRIGHT    register_cvar("bio_ltm_bright","255")//laser line brightness.
    
g_LCLMODE    register_cvar("bio_ltm_color","1"//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")

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

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_ONE108, {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), PID1);
    

    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 
Spawnids[] )
{
    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_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_MONSTERSid);
    
    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:{ -8.0, -8.0, -8.0 }, Float:{ 8.08.08.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:bio_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)
{
    
//new tid[32];
    
    
static i;
    static 
CsTeams:t;bio_get_user_team(id);
    static 
cnt;cnt=0;

    for(
1;<= g_MaxPL;i++)
    {
        if(
is_user_connected(i))
            if(
== bio_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:bio_get_user_team(id))
        return 
false;
    return 
true
}

bool:CanCheck(id,mode)
{
    if( !
get_pcvar_numg_LENABLE ) )
    {
        
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(!
is_user_alive(id)) return false
    
if(is_user_zombie(id))
    {
        
client_print(idprint_chat"%s %s",CHATTAG,STR_CBT)
        return 
false
    
}
    if (!
CheckCanTeam(id))
    {
        
client_print(idprint_chat"%s %s",CHATTAG,STR_CANTDEPLOY)    
        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 (
g_havemine[id] >= get_pcvar_num(g_LAMMO)){
            
client_print(idprint_chat"%s %s",CHATTAG,STR_HAVEMAX)    
            return 
false
        
}
        if (
cs_get_user_money(id) < get_pcvar_num(g_LCOST)) {
            
client_print(idprint_chat"%s %s%d %s",CHATTAGSTR_NOMONEY,get_pcvar_num(g_LCOST),STR_NEEDED)    
            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
    
}

    return 
true;
}

bool:CreateCheckid )
{
    if (!
CanCheck(id,0)) return false
    
if (g_deployed[id] >= get_pcvar_num(g_LAMMO))  //unhandled error
    
{
        
client_print(idprint_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(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_MONSTERSid);
    
    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 );

        
//get_tr2( 0, TR_pHit );

        
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[sizeof(ENT_CLASS_NAME)+1];
    static const 
size sizeof(ENT_CLASS_NAME);
    
pevi_Entpev_classnameEntityNamesize);
    if(!
get_pcvar_num(g_LENABLE)) 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_Tset_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_TraceLinevOriginvEndDONT_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_classnameEntityNamesize );
    
                    if( !
equalEntityNameENT_CLASS_NAME ) )
                    {
                        
set_pevi_Entpev_enemyiHit );
                        if(
get_pcvar_num(g_LMODE) == MODE_LASERMINE)
                            
CreateLaserDamage(i_Ent,iHit);
                        else
                            
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 ) || (pev(i_Ent,pev_health) > 0.0))
            {
                static 
Float:fHealth;
                
pevi_Entpev_healthfHealth );

                if( 
fHealth )
                {
                    
set_pevi_EntLASERMINE_STEPEXPLOSE_THINK );
                    
set_pevi_Entpev_nextthinkfCurrTime random_float0.10.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_NORM0PITCH_NORM );
            
emit_soundi_EntCHAN_BODY ENT_SOUND20.2ATTN_NORM0PITCH_NORM );
        }
        case 
ACTIVATE_SOUND :
        {
            
emit_soundi_EntCHAN_VOICEENT_SOUND30.5ATTN_NORM175 );
        }
        case 
STOP_SOUND :
        {
            
emit_soundi_EntCHAN_BODY ENT_SOUND20.2ATTN_NORMSND_STOPPITCH_NORM );
            
emit_soundi_EntCHAN_VOICEENT_SOUND30.5ATTN_NORMSND_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)
                {
                    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(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_FindEntityInSphereentvecSrcRadius)) != 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
        }
        
        
// 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)
        
vecSpot[0] = (Tabsmin[0] + Tabsmax[0]) * 0.5
        vecSpot
[1] = (Tabsmin[1] + Tabsmax[1]) * 0.5
        vecSpot
[2] = (Tabsmin[2] + Tabsmax[2]) * 0.5
        
        pev
(iCurrentpev_absminAabsmin)
        
pev(iCurrentpev_absmaxAabsmax)
        
vecSee[0] = (Aabsmin[0] + Aabsmax[0]) * 0.5
        vecSee
[1] = (Aabsmin[1] + Aabsmax[1]) * 0.5
        vecSee
[2] = (Aabsmin[2] + Aabsmax[2]) * 0.5
        
        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)
            {
                
origin[0] = vecSpot[0] - vecSee[0]
                
origin[1] = vecSpot[1] - vecSee[1]
                
origin[2] = vecSpot[2] - vecSee[2]
                
                
invlen 1.0/get_distance_f(vecSpotvecSee)
                
vecPush[0] = origin[0] * invlen
                vecPush
[1] = origin[1] * invlen
                vecPush
[2] = origin[2] * invlen
                
                pev
(entpev_velocityvelocity)
                
velocity[0] = velocity[0] + vecPush[0] * tmpdmg kickback
                velocity
[1] = velocity[1] + vecPush[1] * tmpdmg kickback
                velocity
[2] = velocity[2] + vecPush[2] * tmpdmg kickback
                
                
if(tmpdmg 60.0)
                {
                    
velocity[0] *= 12.0
                    velocity
[1] *= 12.0
                    velocity
[2] *= 12.0
                
} else {
                    
velocity[0] *= 4.0
                    velocity
[1] *= 4.0
                    velocity
[2] *= 4.0
                
}
                
                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:bio_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(entiHitHP)
                    
message_begin(MSG_ONE_UNRELIABLEg_msgDamage, {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
}


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

    
message_begin(MSG_BROADCASTSVC_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()
}

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 is_user_alive(isHit)
        
God get_user_godmode(isHit)
        if(!
Alive || God) return PLUGIN_CONTINUE
             
        iHitTeam 
int:bio_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_NORM0PITCH_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(isHitCHAN_WEAPONENT_SOUND41.0ATTN_NORM0PITCH_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(isHitCHAN_WEAPONENT_SOUND41.0ATTN_NORM0PITCH_NORM )
            
set_user_health(isHit,iHitHP)
            
set_pev(iCurrent,LASERMINE_HITING,isHit);
            
message_begin(MSG_ONE_UNRELIABLEg_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 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)
    
//set_user_frags(id, idfrags)
    //entity_set_float(id, EV_FL_frags, float(idfrags))
    
    
new tarfrags pev_user_frags(target) + //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:bio_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)

    
//entity_set_float(target, EV_FL_health,float(HP))
    
set_user_health(targetHP)
    
//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]++;
    
emit_sound(idCHAN_ITEMENT_SOUND5VOL_NORMATTN_NORM0PITCH_NORM)
    
client_print(idprint_chat"%s %s",CHATTAG,STR_BOUGHT)
    
ShowAmmo(id)
    return 
PLUGIN_HANDLED
}

ShowAmmo(id)

    new 
ammo[51
    
formatex(ammo50"%s %i/%i",STR_STATEg_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 )  ){
//        client_print(id, print_chat, "%s Laserele nu sunt momentan active.",CHATTAG)
        
return PLUGIN_CONTINUE
    
}
    
    if (
equali(said,"/laser")||equali(said,"/laser")){
        
BuyLasermine(id)
    }else if (
equali(said"/laserhelp") || equali(said"/laserhelp")){
        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>Lasere Biologice</b></p><br/><br/>")
        
len += formatex(msg[len], SIZE len"<p>Poti sa plasezi un laser pe perete.</p><br/>")
        
len += formatex(msg[len], SIZE len"<p>Daca un inamic a atins acest laser, va muri.</p><br/><br/>")
        
len += formatex(msg[len], SIZE len"<p><b>Comenzi disponibile</b></p><br/><br/>")
        
len += formatex(msg[len], SIZE len"<p><b>Scrie /laser</b>  | pentru a cumpara laser<br/>")
        
len += formatex(msg[len], SIZE len"<b>buy_lasermine</b> | bindeaza ^"F2^" buy_lasermine : si folosesti F2 pentru a cumpara lasere<br/>")
        
len += formatex(msg[len], SIZE len"<b>Va uram</b> | distractie placuta si spor la frage!!l<br/>")
        
len += formatex(msg[len], SIZE len"</body></html>")
        
show_motd(idmsg"//BIOLASER Ajutor\\")
        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 (!
is_user_alive(id) || is_user_zombie(id) || g_settinglaser[id] == true || is_user_bot(id))
        return 
FMRES_IGNORED;

    if(
pev(idpev_button ) & IN_USE && !(pev(idpev_oldbuttons ) & IN_USE ))
        
//client_print(id,print_chat,"test");
        
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 ))
        return 
PLUGIN_CONTINUE
    DeleteTask
(id);
    
RemoveAllTripmines(id);
    return 
PLUGIN_CONTINUE
}


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

public 
DeathEvent(){
    if(!
get_pcvar_numg_LENABLE ))
        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] <= 0) ? stammo g_havemine[id];
    return 
PLUGIN_CONTINUE;
}

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

public 
event_infect2(id)
{
    
DeleteTask(id);
    return 
PLUGIN_CONTINUE
}

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

stock set_rendering(entityfx kRenderFxNone255255255render 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


i need help to compile this plugin...give's to me 4 errors :shock:

YamiKaitou 07-31-2008 14:54

Re: help
 
As per the Global Forum Rules, you need to have a descriptive topic. If you wish for this topic to stay open, please correct the topic title before you post again.

Dr. Jan Itor 07-31-2008 14:57

Re: help
 
compiles fine for me whats ur errors?

tuty 07-31-2008 15:04

Re: help
 
this errors-> image with errors

PS: Can u give me the amxx result on this code? :mrgreen: thx

YamiKaitou 07-31-2008 15:26

Re: help
 
Quote:

Originally Posted by YamiKaitou (Post 662396)
As per the Global Forum Rules, you need to have a descriptive topic. If you wish for this topic to stay open, please correct the topic title before you post again.



All times are GMT -4. The time now is 05:35.

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