I need Help: Error 021
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(id, origin, 3)
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==1) batgirl_physics(id, false)
if (style==2) batgirl_physics(id, true)
if (style>2 || style < 0 ) batgirl_cheapReel( id )
}
//----------------------------------------------------------------------------------------------
public batgirl_physics(id, bool:autoReel)
{
new user_origin[3], user_look[3], user_direction[3], move_direction[3]
new A[3], D[3], buttonadjust[3]
new acceleration, Float:vTowards_A, Float: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(id, user_origin)
get_user_origin(id, user_look,2)
Entvars_Get_Vector(id, EV_VEC_velocity, velocity)
buttonadjust[0]=0
buttonadjust[1]=0
buttonpress = Entvars_Get_Int(id, EV_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] < 0 || (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(id, EV_VEC_velocity, velocity)
}
//----------------------------------------------------------------------------------------------
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(id, user_origin)
Entvars_Get_Vector(id, EV_VEC_velocity, velocity)
new distance = get_distance( g_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(id, EV_VEC_velocity, velocity)
}
//----------------------------------------------------------------------------------------------
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]== 0 ) {
playSoundDenySelect(id)
return PLUGIN_HANDLED
}
if ( g_hooksLeft[id] > 0 ) g_hooksLeft[id]--
if ( g_hooksLeft[id]>=0 && g_hooksLeft[id]<5 ) {
client_print(id, print_center, "You have %d Batgirl hooks left", g_hooksLeft[id] )
}
g_hooked[id] = true
set_user_info(id,"ROPE","1")
get_user_origin(id, user_origin)
get_user_origin(id, g_hookLocation[id], 3)
g_hookLength[id] = get_distance(g_hookLocation[id],user_origin)
set_user_gravity(id,0.001)
beamentpoint(id)
emit_sound(id, CHAN_STATIC, "weapons/xbow_hit2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
parm[1]=get_cvar_num("batgirl_hookstyle")
set_task(HOOK_DELTA_T, "batgirl_checkWeb", id, parm, 2, "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_begin( MSG_BROADCAST, SVC_TEMPENTITY )
write_byte( HOOKBEAMPOINT )
write_short( id )
write_coord( g_hookLocation[id][0] )
write_coord( g_hookLocation[id][1] )
write_coord( g_hookLocation[id][2] )
write_short( g_spriteWeb ) // sprite index
write_byte( 0 ) // start frame
write_byte( 0 ) // framerate
write_byte( HOOKBEAMLIFE ) // life
write_byte( 10 ) // width
write_byte( 0 ) // noise
if (!get_cvar_num("batgirl_teamcolored")) {
write_byte( 250 ) // r, g, b
write_byte( 250 ) // r, g, b
write_byte( 250 ) // r, g, b
}
// Terrorist
else if (get_user_team(id)==1) {
write_byte( 255 ) // r, g, b
write_byte( 0 ) // r, g, b
write_byte( 0 ) // r, g, b
}
// Counter-Terrorist
else {
write_byte( 0 ) // r, g, b
write_byte( 0 ) // r, g, b
write_byte( 255 ) // r, g, b
}
write_byte( 150 ) // brightness
write_byte( 0 ) // speed
message_end( )
g_hookCreated[id] = get_gametime()
}
//----------------------------------------------------------------------------------------------
public killbeam(id)
{
message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
write_byte( HOOKKILLBEAM )
write_short( id )
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 <=0 || 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
|