View Single Post
Author Message
Arje
Senior Member
Join Date: Apr 2020
Location: Córdoba, Argentina
Old 01-18-2022 , 09:11   I need Help: Error 021
Reply With Quote #1

Hi, i compile this batgirl.sma in amx 1.8.3 and i get this error :

// C:\Program Files (x86)\Counter-Strike 1.6\cstrike\addons\amxmodx\scripting\include\ VexdUM.inc(24) : error 021: symbol already defined: "radius_damage"
// C:\Program Files (x86)\Counter-Strike 1.6\cstrike\addons\amxmodx\scripting\include\ VexdUM.inc(30) : error 021: symbol already defined: "DispatchKeyValue"
// C:\Program Files (x86)\Counter-Strike 1.6\cstrike\addons\amxmodx\scripting\include\ VexdUM.inc(34) : error 021: symbol already defined: "trace_line"
// C:\Program Files (x86)\Counter-Strike 1.6\cstrike\addons\amxmodx\scripting\sh_batgi rl.sma(377) : warning 233: symbol "client_disconnect" is marked as deprecated: Use client_disconnected() instead.

PHP Code:
//Batgirl - Based off of Spiderman

/* CVARS - copy and paste to shconfig.cfg

//Batgirl
batgirl_level 9
batgirl_moveacc 650            //How quickly she can move while on the zipline
batgirl_reelspeed 1000        //How fast hook line reels in
batgirl_hookstyle 3            //1=spacedude, 2=spacedude auto reel (spiderman), 3=cheap kids real    (batgirl)
batgirl_hooksky 0            //0=no sky hooking 1=sky hooking allowed
batgirl_teamcolored 1        //1=teamcolored zip lines 0=white zip lines
batgirl_maxhooks -1            //Max ammout of hooks allowed (-1 is an unlimited ammount)

*/

#include <amxmod>
#include <Vexd_Utilities>
#include <superheromod>

#if !defined AMX_NEW
  #include <xtrafun>  //Only for the constants, doesn't use any functions
#endif

// GLOBAL VARIABLES
#define HOOKBEAMLIFE  100
#define HOOKBEAMPOINT 1
#define HOOKKILLBEAM  99
#define HOOK_DELTA_T  0.1  // units per second
#define CONTENTS_SKY -6

new gHeroName[]="Batgirl"
new bool:g_hasBatgirlPower[SH_MAXSLOTS+1]
new 
g_hookLocation[SH_MAXSLOTS+1][3]
new 
g_hookLength[SH_MAXSLOTS+1]
new 
bool:g_hooked[SH_MAXSLOTS+1]
new 
Float:g_hookCreated[SH_MAXSLOTS+1]
new 
g_hooksLeft[SH_MAXSLOTS+1]
new 
g_spriteWeb
//----------------------------------------------------------------------------------------------
public plugin_init()
{
    
// Plugin Info
    
register_plugin("SUPERHERO Batgirl","1.1","sharky/JTP10181")

    
// DO NOT EDIT THIS FILE TO CHANGE CVARS, USE THE SHCONFIG.CFG
    
register_cvar("batgirl_level""9" )
    
register_cvar("batgirl_moveacc""680" )
    
register_cvar("batgirl_reelspeed""1000" )
    
register_cvar("batgirl_hookstyle""3" )
    
register_cvar("batgirl_hooksky""0" )
    
register_cvar("batgirl_teamcolored""1" )
    
register_cvar("batgirl_maxhooks""-1" )

    
// FIRE THE EVENT TO CREATE THIS SUPERHERO!
    
shCreateHero(gHeroName"Bati-Gancho, obten un Hook""Obten un bati-gancho que te permite hookearte por todo el mapa. - Pone en say /bind para aprender a bindear."true"batgirl_level" )

    
// REGISTER EVENTS THIS HERO WILL RESPOND TO! (AND SERVER COMMANDS)

    // KEY UP
    
register_srvcmd("batgirl_ku""batgirl_ku")
    
shRegKeyUp(gHeroName"batgirl_ku")

    
// KEY DOWN
    
register_srvcmd("batgirl_kd""batgirl_kd")
    
shRegKeyDown(gHeroName"batgirl_kd")

    
// DEATH
    
register_event("DeathMsg""batgirl_death""a")  // Re-uses KeyUp!

    // INIT
    
register_srvcmd("batgirl_init""batgirl_init")
    
shRegHeroInit(gHeroName"batgirl_init")

    
// Reset the HookCounts every round (regardless of batgirlpower)
    
register_event("ResetHUD","newRound","b")

}
//----------------------------------------------------------------------------------------------
public plugin_precache()
{
    
precache_sound("weapons/xbow_hit2.wav")
    
g_spriteWeb precache_model("sprites/zbeam4.spr")
}
//----------------------------------------------------------------------------------------------
public batgirl_init()
{
    new 
temp[6]
    
// First Argument is an id
    
read_argv(1,temp,5)
    new 
id=str_to_num(temp)

    
// 2nd Argument is 0 or 1 depending on whether the id has iron man powers
    
read_argv(2,temp,5)
    new 
hasPowers=str_to_num(temp)

    
g_hasBatgirlPower[id] = (hasPowers != 0)
    if ( 
g_hooked[id] ) batgirl_hookOff(id)
}
//----------------------------------------------------------------------------------------------
public batgirl_kd()
{
    new 
temp[6]
    
read_argv(1,temp,5)
    new 
id=str_to_num(temp)

    if ( 
g_hooked[id] || !is_user_alive(id) || !g_hasBatgirlPower[id] || !hasRoundStarted() ) return

    if (
PassAimTest(id)) batgirl_hookOn(id)
}
//----------------------------------------------------------------------------------------------
public batgirl_ku()
{
    new 
temp[10]
    
read_argv(1,temp,9)
    new 
id=str_to_num(temp)

    if ( 
g_hooked[id] ) batgirl_hookOff(id)
}
//----------------------------------------------------------------------------------------------
public batgirl_death()
{
    new 
id=read_data(2)

    if ( 
g_hooked[id] ) batgirl_hookOff(id)

    return 
PLUGIN_CONTINUE
}
//----------------------------------------------------------------------------------------------
PassAimTest(id) {
    new 
origin[3]
    new 
Float:Orig[3]
    
get_user_origin(idorigin3)
    
Orig[0]=float(origin[0])
    
Orig[1]=float(origin[1])
    
Orig[2]=float(origin[2])
    new 
AimAt PointContents(Orig)
    if (
AimAt == CONTENTS_SKY && !get_cvar_num("batgirl_hooksky")) {
        
client_print(id,print_chat,"[SH](BatGirl) No puedes usar el hook en el cielo.")
        return 
false
    
}
    return 
true
}
//----------------------------------------------------------------------------------------------
public batgirl_checkWeb(parm[])
{
    new 
id=parm[0]
    new 
style=parm[1]

    if (
style==1batgirl_physics(idfalse)
    if (
style==2batgirl_physics(idtrue)
    if (
style>|| style batgirl_cheapReelid )
}
//----------------------------------------------------------------------------------------------
public batgirl_physics(idbool:autoReel)
{
    new 
user_origin[3], user_look[3], user_direction[3], move_direction[3]
    new 
A[3], D[3], buttonadjust[3]
    new 
accelerationFloat:vTowards_AFloat:DvTowards_A
    
new Float:velocity[3], null[3], buttonpress

    
if ( !g_hooked[id]  ) return

    if (!
is_user_alive(id)) {
        
batgirl_hookOff(id)
        return
    }

    if ( 
g_hookCreated[id] + HOOKBEAMLIFE/10 <= get_gametime() ) {
        
beamentpoint(id)
    }

    
null[0] = 0
    null
[1] = 0
    null
[2] = 0

    get_user_origin
(iduser_origin)
    
get_user_origin(iduser_look,2)

    
Entvars_Get_Vector(idEV_VEC_velocityvelocity)

    
buttonadjust[0]=0
    buttonadjust
[1]=0

    buttonpress 
Entvars_Get_Int(idEV_INT_button)

    if (
buttonpress&IN_FORWARD) {
        
buttonadjust[0]+=1
    
}
    if (
buttonpress&IN_BACK) {
        
buttonadjust[0]-=1
    
}
    if (
buttonpress&IN_MOVERIGHT) {
        
buttonadjust[1]+=1
    
}
    if (
buttonpress&IN_MOVELEFT) {
        
buttonadjust[1]-=1
    
}
    if (
buttonpress&IN_JUMP) {
        
buttonadjust[2]+=1
    
}
    if (
buttonpress&IN_DUCK) {
        
buttonadjust[2]-=1
    
}

    if (
buttonadjust[0] || buttonadjust[1]) {
        
user_direction[0] = user_look[0] - user_origin[0]
        
user_direction[1] = user_look[1] - user_origin[1]

        
move_direction[0] = buttonadjust[0]*user_direction[0] + user_direction[1]*buttonadjust[1]
        
move_direction[1] = buttonadjust[0]*user_direction[1] - user_direction[0]*buttonadjust[1]
        
move_direction[2] = 0

        velocity
[0] += move_direction[0] * get_cvar_float("batgirl_moveacc") * HOOK_DELTA_T get_distance(null,move_direction)
        
velocity[1] += move_direction[1] * get_cvar_float("batgirl_moveacc") * HOOK_DELTA_T get_distance(null,move_direction)
    }
    if (
buttonadjust[2] < || (buttonadjust[2] && g_hookLength[id] >= 60)) {
        
g_hookLength[id] -= floatround(buttonadjust[2] * get_cvar_float("batgirl_reelspeed") * HOOK_DELTA_T)
    }
    else if (
autoReel && !(buttonpress&IN_DUCK) && g_hookLength[id] >= 200) {
        
buttonadjust[2] += 1
        g_hookLength
[id] -= floatround(buttonadjust[2] * get_cvar_float("batgirl_reelspeed") * HOOK_DELTA_T)
    }

    
A[0] = g_hookLocation[id][0] - user_origin[0]
    
A[1] = g_hookLocation[id][1] - user_origin[1]
    
A[2] = g_hookLocation[id][2] - user_origin[2]

    
D[0] = A[0]*A[2] / get_distance(null,A)
    
D[1] = A[1]*A[2] / get_distance(null,A)
    
D[2] = -(A[1]*A[1] + A[0]*A[0]) / get_distance(null,A)

    new 
aDistance get_distance(null,D) ? get_distance(null,D) : 1
    acceleration 
= (-get_cvar_num("sv_gravity")) * D[2] / aDistance

    vTowards_A 
= (velocity[0] * A[0] + velocity[1] * A[1] + velocity[2] * A[2]) / get_distance(null,A)
    
DvTowards_A float((get_distance(user_origin,g_hookLocation[id]) - g_hookLength[id]) * 4)

    if (
get_distance(null,D)>10) {
        
velocity[0] += (acceleration HOOK_DELTA_T D[0]) / get_distance(null,D)
        
velocity[1] += (acceleration HOOK_DELTA_T D[1]) / get_distance(null,D)
        
velocity[2] += (acceleration HOOK_DELTA_T D[2]) / get_distance(null,D)
    }

    
velocity[0] += ((DvTowards_A vTowards_A) * A[0]) / get_distance(null,A)
    
velocity[1] += ((DvTowards_A vTowards_A) * A[1]) / get_distance(null,A)
    
velocity[2] += ((DvTowards_A vTowards_A) * A[2]) / get_distance(null,A)

    
Entvars_Set_Vector(idEV_VEC_velocityvelocity)
}
//----------------------------------------------------------------------------------------------
public batgirl_cheapReel(id)
{
    
// Cheat Web - just drags you where you shoot it...

    
if ( !g_hooked[id] ) return

    new 
user_origin[3]
    new 
Float:velocity[3]

    if (!
is_user_alive(id)) {
        
batgirl_hookOff(id)
        return
    }

    
get_user_origin(iduser_origin)

    
Entvars_Get_Vector(idEV_VEC_velocityvelocity)

    new 
distance get_distanceg_hookLocation[id], user_origin )
    if ( 
distance 60 ) {
        
velocity[0] = (g_hookLocation[id][0] - user_origin[0]) * ( 1.0 get_cvar_num("batgirl_reelspeed") / distance )
        
velocity[1] = (g_hookLocation[id][1] - user_origin[1]) * ( 1.0 get_cvar_num("batgirl_reelspeed") / distance )
        
velocity[2] = (g_hookLocation[id][2] - user_origin[2]) * ( 1.0 get_cvar_num("batgirl_reelspeed") / distance )
    }
    else {
        
velocity[0] = 0.0
        velocity
[1] = 0.0
        velocity
[2] = 0.0
    
}

    
Entvars_Set_Vector(idEV_VEC_velocityvelocity)
}
//----------------------------------------------------------------------------------------------
public batgirl_hookOn(id)
{
    new 
parm[2], user_origin[3]
    
parm[0] = id

    
if ( !is_user_alive(id) ) return PLUGIN_HANDLED

    
if ( g_hooksLeft[id]== ) {
        
playSoundDenySelect(id)
        return 
PLUGIN_HANDLED
    
}

    if ( 
g_hooksLeft[id] > g_hooksLeft[id]--

    if ( 
g_hooksLeft[id]>=&& g_hooksLeft[id]<) {
        
client_print(idprint_center"You have %d Batgirl hooks left"g_hooksLeft[id] )
    }

    
g_hooked[id] = true
    set_user_info
(id,"ROPE","1")
    
get_user_origin(iduser_origin)
    
get_user_origin(idg_hookLocation[id], 3)
    
g_hookLength[id] = get_distance(g_hookLocation[id],user_origin)
    
set_user_gravity(id,0.001)
    
beamentpoint(id)
    
emit_sound(idCHAN_STATIC"weapons/xbow_hit2.wav"1.0ATTN_NORM0PITCH_NORM)
    
parm[1]=get_cvar_num("batgirl_hookstyle")
    
set_task(HOOK_DELTA_T"batgirl_checkWeb"idparm2"b")

    return 
PLUGIN_CONTINUE
}
//----------------------------------------------------------------------------------------------
public batgirl_hookOff(id)
{
    
g_hooked[id] = false
    set_user_info
(id,"ROPE","0")
    
killbeam(id)
    if ( 
is_user_connected(id) ) shSetGravityPower(id)
    
remove_task(id)
}
//----------------------------------------------------------------------------------------------
public beamentpoint(id)
{
    
message_beginMSG_BROADCASTSVC_TEMPENTITY )
    
write_byteHOOKBEAMPOINT )
    
write_shortid )
    
write_coordg_hookLocation[id][0] )
    
write_coordg_hookLocation[id][1] )
    
write_coordg_hookLocation[id][2] )
    
write_shortg_spriteWeb // sprite index
    
write_byte)            // start frame
    
write_byte)            // framerate
    
write_byteHOOKBEAMLIFE // life
    
write_byte10 )           // width
    
write_byte)            // noise
    
if (!get_cvar_num("batgirl_teamcolored")) {
        
write_byte250 )     // r, g, b
        
write_byte250 )       // r, g, b
        
write_byte250 )       // r, g, b
    
}
    
// Terrorist
    
else if (get_user_team(id)==1) {
        
write_byte255 )     // r, g, b
        
write_byte)       // r, g, b
        
write_byte)       // r, g, b
    
}
    
// Counter-Terrorist
    
else {
        
write_byte)      // r, g, b
        
write_byte)      // r, g, b
        
write_byte255 )    // r, g, b
    
}
    
write_byte150 )          // brightness
    
write_byte)            // speed
    
message_end( )
    
g_hookCreated[id] = get_gametime()
}
//----------------------------------------------------------------------------------------------
public killbeam(id)
{
    
message_beginMSG_BROADCASTSVC_TEMPENTITY )
    
write_byteHOOKKILLBEAM )
    
write_shortid )
    
message_end()
}
//----------------------------------------------------------------------------------------------
public newRound(id)
{
    
g_hooksLeft[id] = get_cvar_num("batgirl_maxhooks")
    if ( 
g_hooked[id] ) batgirl_hookOff(id)
}
//----------------------------------------------------------------------------------------------
public client_disconnect(id)
{
    
// stupid check but lets see
    
if ( id <=|| id>32 ) return PLUGIN_CONTINUE

    
// Yeah don't want any left over residuals
    
remove_task(id)

    return 
PLUGIN_CONTINUE
}
//---------------------------------------------------------------------------------------------- 
I don't know how to solve it
Arje is offline