Raised This Month: $51 Target: $400
 12% 

I need Help: Error 021


Post New Thread Reply   
 
Thread Tools Display Modes
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
Arje
Senior Member
Join Date: Apr 2020
Location: Córdoba, Argentina
Old 01-18-2022 , 22:02   Re: I need Help: Error 021
Reply With Quote #2

Well I was able to solve it, I just had to modify the following lines in engine.inc

PHP Code:
native DispatchKeyValue(...);

native radius_damage(const Float:fExplodeAt[3], iDamageMultiplieriRadiusMultiplier);

native trace_line(iIgnoreEnt, const Float:fStart[3], const Float:fEnd[3], Float:vReturn[3]); 
To

PHP Code:
#if !defined AMXMOD_BCOMPAT
native DispatchKeyValue(...);
#endif

#if !defined AMXMOD_BCOMPAT
native radius_damage(const Float:fExplodeAt[3], iDamageMultiplieriRadiusMultiplier);
#endif

#if !defined AMXMOD_BCOMPAT
native trace_line(iIgnoreEnt, const Float:fStart[3], const Float:fEnd[3], Float:vReturn[3]);
#endif 
Arje 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 21:56.


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