AlliedModders

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

GAARA54 11-26-2011 15:57

tracers ammo
 
PHP Code:

#include <amxmodx>

#define SHOTGUN_AIMING 32

new light;

new 
tracerslnis_cs 0;

lightning(vec1[3],vec2[3])
{
    
//Lightning
    
message_beginMSG_BROADCAST,SVC_TEMPENTITY);
    
write_byte);
    
write_coord(vec1[0]);
    
write_coord(vec1[1]);
    
write_coord(vec1[2]);
    
write_coord(vec2[0]);
    
write_coord(vec2[1]);
    
write_coord(vec2[2]);
    
write_shortlight );
    
write_byte); // framestart
    
write_byte); // framerate
    
write_byte); // life
    
write_byte20 ); // width
    //write_byte( 30 ); // noise
    
write_byte(ln);
    
write_byte200 ); // r, g, b
    
write_byte200 ); // r, g, b
    
write_byte200 ); // r, g, b
    
write_byte200 ); // brightness
    
write_byte200 ); // speed
    
message_end();

}

tracer(vec1[3],vec2[3]) {
    
message_begin(MSG_PASSVC_TEMPENTITY,vec1 );
    
write_byte/* TE_TRACER - see commo/const.h in HLSDK */
    
write_coord(vec1[0]);
    
write_coord(vec1[1]);
    
write_coord(vec1[2]);
    
write_coord(vec2[0]);
    
write_coord(vec2[1]);
    
write_coord(vec2[2]);
    
message_end();
}

draw(vec1[3],vec2[3]) {
    if(
tracers==1) {
        
tracer(vec1,vec2);
    } else {
        
lightning(vec1,vec2);
    }
}

new 
users_ammo[33];
new 
users_w[33]

public 
drawtracer(id)
{
    if(
tracers==0) {
        return 
PLUGIN_HANDLED;
    }
    new 
ammo read_data(3), weapon read_data(2); // I read it only once to save CPU time.
    
if(users_ammo[id]>ammo && ammo>=&& users_w[id]==weapon) {

        new 
vec1[3], vec2[3];
        if(
tracers == 2) {
            
get_user_origin(id,vec1);
            
vec1[2]+=8;
            
// For lightnings we do it a special way, 'cause lightnings from eye positon look shit
        
} else {
            
get_user_origin(id,vec1,1);
        }
        if(
is_cs==1) {
            
get_user_origin(id,vec2,4);
        } else {
            
get_user_origin(id,vec2,3);
        }
        if(
is_cs == && (weapon==CSW_M3 || weapon==CSW_XM1014)) { // Shotguns in CS
            
draw(vec1,vec2);

            
vec2[0]+=SHOTGUN_AIMING;
            
draw(vec1,vec2);
            
vec2[1]+=SHOTGUN_AIMING;
            
draw(vec1,vec2);
            
vec2[2]+=SHOTGUN_AIMING;
            
draw(vec1,vec2);
            
vec2[0]-=SHOTGUN_AIMING// Repeated substraction is faster then multiplication !
            
vec2[0]-=SHOTGUN_AIMING// Repeated substraction is faster then multiplication !
            
draw(vec1,vec2);
            
vec2[1]-=SHOTGUN_AIMING// Repeated substraction is faster then multiplication !
            
vec2[1]-=SHOTGUN_AIMING// Repeated substraction is faster then multiplication !
            
draw(vec1,vec2);
            
vec2[2]-=SHOTGUN_AIMING// Repeated substraction is faster then multiplication !
            
vec2[2]-=SHOTGUN_AIMING// Repeated substraction is faster then multiplication !
            
draw(vec1,vec2);
        } else {
            
draw(vec1,vec2);
        }
        
users_ammo[id]=ammo;
    } else {
        
users_w[id]=weapon;
        
users_ammo[id]=ammo;
    }
    return 
PLUGIN_HANDLED;
}


public 
checktracervars() {
    
tracers get_cvar_num("amx_tracers");
    
ln get_cvar_num("amx_tracers_ln");
}

public 
amx_settracers(id)
{
    new 
arg1[32];
    new 
nt;
    
read_argv(1,arg1,32);
    
nt str_to_num(arg1);
    if(
nt == 1) {
        
client_print(id,print_console,"[AMX] Advanced Tracers> Tracer mode set to 1, Normal Tracers.");
    } else if(
nt == 2) {
        
client_print(id,print_console,"[AMX] Advanced Tracers> Tracer mode set to 2, Lightning Tracers.");
    } else if(
nt==&& equal(arg1,"0")) {
        
client_print(id,print_console,"[AMX] Advanced Tracers> Tracer mode set to 0, No Tracers.");
    } else {
        
client_print(id,print_console,"[AMX] Advanced Tracers> Please type 0, 1 or 2!");
        return 
PLUGIN_HANDLED;
    }
    
tracers nt;
    
set_cvar_num("amx_tracers",tracers);
    return 
PLUGIN_HANDLED;
}

public 
amx_setamplitude(id)
{
    new 
arg1[32];
    new 
na;
    
read_argv(1,arg1,32);
    
na str_to_num(arg1);
    if(
na>=0) {
        
client_print(id,print_console,"[AMX] Advanced Tracers> Amplitude for Lightning Tracers set to %d.",na);
        
ln na;
        
set_cvar_num("amx_tracers_ln",ln);
    }
    return 
PLUGIN_HANDLED;
}

public 
plugin_precache()
{
    
light precache_model("sprites/lgtning.spr");
    return 
PLUGIN_CONTINUE;
}

public 
plugin_init()
{
    new 
modname[32];
    
register_plugin("Advanced Tracers","0.1","[email protected]");
    
register_event("CurWeapon","drawtracer","be","1=1"); //,"3>=0");
    
register_cvar("amx_tracers","1")
    
register_cvar("amx_tracers_ln","30");
    
register_concmd("amx_settracers","amx_settracers",ADMIN_LEVEL_A,"<0|1|2> Set tracer mode.");
    
register_concmd("amx_setamplitude","amx_setamplitude",ADMIN_LEVEL_A,"<noise> Noise for lightning tracers.");
    
set_task(5.0,"checktracervars",0,"",0,"b");
    
checktracervars();
    
get_modname(modname,32);
    if(
equal(modname,"cstrike")) is_cs 1;
    return 
PLUGIN_CONTINUE;


hi all.
think this plugin have 1 bug - when i shoot from weapon's in normal mode all right
but when i have unlimitted ammo (like extra weapons in zp with unl.ammo) tracers don't work... (when ammo for example always on 50 / 100 when you shooting)
somebody can fix it ?


All times are GMT -4. The time now is 08:24.

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