amroali2000 |
01-08-2024 07:50 |
this is code
PHP Code:
#include "amxxmodule.h"
#include <stdio.h> #include <string.h> #include <ctype.h>
#if !defined __linux__ static signed int pread(signed int Number, void * pBuffer, size_t Count, long Offset) { return (lseek(Number, Offset, SEEK_SET) != Offset) ? ((signed int) (-1)) : ((signed int) (read(Number, pBuffer, Count))); } #endif
char * replace(char const * const original, char const * const pattern, char const * const replacement) { size_t const replen = strlen(replacement); size_t const patlen = strlen(pattern); size_t const orilen = strlen(original);
size_t patcnt = 0; const char * oriptr; const char * patloc;
for (oriptr = original; patloc = strstr(oriptr, pattern); oriptr = patloc + patlen) { patcnt++; }
{ size_t const retlen = orilen + patcnt * (replen - patlen); char * const returned = (char *) malloc( sizeof(char) * (retlen + 1) );
if (returned != NULL) { char * retptr = returned; for (oriptr = original; patloc = strstr(oriptr, pattern); oriptr = patloc + patlen) { size_t const skplen = patloc - oriptr; strncpy(retptr, oriptr, skplen); retptr += skplen; strncpy(retptr, replacement, replen); retptr += replen; } strcpy(retptr, oriptr); } return returned; } }
#if defined __linux__ #define EXTRAOFFSET 5 #define EXTRAOFFSET_WEAPONS 4 #else #define EXTRAOFFSET 0 #define EXTRAOFFSET_WEAPONS 0 #endif
#define OFFSET_TEAM 114 + EXTRAOFFSET #define OFFSET_CSMONEY 115 + EXTRAOFFSET #define OFFSET_ZOOMTYPE 363 + EXTRAOFFSET #define OFFSET_AWM_AMMO 377 + EXTRAOFFSET #define OFFSET_SCOUT_AMMO 378 + EXTRAOFFSET #define OFFSET_PARA_AMMO 379 + EXTRAOFFSET #define OFFSET_FAMAS_AMMO 380 + EXTRAOFFSET #define OFFSET_M3_AMMO 381 + EXTRAOFFSET #define OFFSET_USP_AMMO 382 + EXTRAOFFSET #define OFFSET_FIVESEVEN_AMMO 383 + EXTRAOFFSET #define OFFSET_DEAGLE_AMMO 384 + EXTRAOFFSET #define OFFSET_P228_AMMO 385 + EXTRAOFFSET #define OFFSET_GLOCK_AMMO 386 + EXTRAOFFSET #define OFFSET_CSDEATHS 444 + EXTRAOFFSET #define OFFSET_PAINSHOCK 108 + EXTRAOFFSET #define OFFSET_CLIPAMMO EXTRAOFFSET_WEAPONS + 51
#define CSW_P228 1 #define CSW_SCOUT 3 #define CSW_HEGRENADE 4 #define CSW_XM1014 5 #define CSW_MAC10 7 #define CSW_AUG 8 #define CSW_SMOKEGRENADE 9 #define CSW_ELITE 10 #define CSW_FIVESEVEN 11 #define CSW_UMP45 12 #define CSW_SG550 13 #define CSW_GALIL 14 #define CSW_FAMAS 15 #define CSW_USP 16 #define CSW_GLOCK18 17 #define CSW_AWP 18 #define CSW_MP5NAVY 19 #define CSW_M249 20 #define CSW_M3 21 #define CSW_M4A1 22 #define CSW_TMP 23 #define CSW_G3SG1 24 #define CSW_FLASHBANG 25 #define CSW_DEAGLE 26 #define CSW_SG552 27 #define CSW_AK47 28 #define CSW_P90 30
#define Mine_Flag (1<<12) #define Spawn_Flag 0x13A
Vector g_EndPosition;
const char * g_pMonsterHitSounds[ ] = { "zombie_plague/monster_hit_01.wav", "zombie_plague/monster_hit_02.wav", "zombie_plague/monster_hit_03.wav" };
const char * g_pZombieHitSounds[ ] = { "zombie_plague/zombie_hit_01.wav", "zombie_plague/zombie_hit_02.wav", "zombie_plague/zombie_hit_03.wav", "zombie_plague/zombie_hit_04.wav", "zombie_plague/zombie_hit_05.wav" };
const char * g_pZombieDieSounds[ ] = { "zombie_plague/zombie_die_01.wav", "zombie_plague/zombie_die_02.wav", "zombie_plague/zombie_die_03.wav", "zombie_plague/zombie_die_04.wav", "zombie_plague/zombie_die_05.wav" };
char* const MODELS_TO_PRECACHE[] = { "models/rpgrocket.mdl", "models/p_egon.mdl", "models/v_egon.mdl", "models/zombie_plague/nemesis_claws.mdl", "models/zombie_plague/assassin_claws.mdl", "models/zombie_plague/clasic_claws.mdl", "models/zombie_plague/regenerator_claws.mdl", "models/zombie_plague/mutant_claws.mdl", "models/zombie_plague/tight_claws.mdl", "models/zombie_plague/hunter_claws.mdl", "models/zombie_plague/predator_blue_claws.mdl", "models/zombie_plague/v_awp_winter.mdl", "models/player/monster_nemesis/monster_nemesis.mdl", "models/player/survivor/survivor.mdl", "models/player/monster_assassin/monster_assassin.mdl", "models/player/administrator/administrator.mdl", "models/player/zclasic/zclasic.mdl", "models/player/raptor/raptor.mdl", "models/player/mutant/mutant.mdl", "models/player/tight/tight.mdl", "models/player/regenerator/regenerator.mdl", "models/player/predator_blue/predator_blue.mdl", "models/player/hunter/hunter.mdl", "models/zombie_plague/lasermine.mdl", "models/player/zp60_vip/zp60_vip.mdl", "models/player/zp60_sonic/zp60_sonic.mdl", "models/player/zp60_sonic_2/zp60_sonic_2.mdl", "models/player/zp60_sonic_3/zp60_sonic_3.mdl", "models/player/zp60_founder/zp60_founder.mdl", "models/player/zp60_player/zp60_player.mdl", "models/zombie_plague/v_grenade_infection.mdl", "models/zombie_plague/v_golden_ak47.mdl", "models/zombie_plague/p_golden_ak47.mdl", "models/zombie_plague/v_diamond_ak47.mdl", "models/zombie_plague/p_diamond_ak47.mdl", "models/zombie_plague/v_glacier_m4a1.mdl", "models/zombie_plague/p_glacier_m4a1.mdl", "models/zombie_plague/v_mod_plasmagun.mdl", "models/zombie_plague/p_mod_plasmagun.mdl", "models/zombie_plague/v_golden_deagle.mdl", "models/zombie_plague/p_golden_deagle.mdl", "models/zombie_plague/v_shotgun_m3.mdl", "models/zombie_plague/p_shotgun_m3.mdl", "models/zombie_plague/p_awp_winter.mdl", "models/zombie_plague/claws_hybrid.mdl", "models/zombie_plague/claws_bombardier.mdl", "models/zombie_plague/claws_reptile.mdl", "models/zombie_plague/v_knife_samurai.mdl", "models/zombie_plague/p_knife_samurai.mdl", "models/player/hybrid_model/hybrid_model.mdl", "models/player/reptile_model/reptile_model.mdl", "models/player/bombardier_batman/bombardier_batman.mdl", "models/player/samurai_model/samurai_model.mdl", "models/player/zp60_terminator/zp60_terminator.mdl", "models/stukabat.mdl", "models/xs/v_crossbow.mdl", "models/xs/p_crossbow.mdl", "models/zombie_plague/v_female_knife.mdl" };
char* const SOUNDS_TO_PRECACHE[] = { "fvox/flatline.wav", "zombie_plague/armor_hit.wav", "zombie_plague/ambience_survivor.wav", "zombie_plague/ambience_normal.wav", "zombie_plague/monster_hit_01.wav", "zombie_plague/monster_hit_02.wav", "zombie_plague/monster_hit_03.wav", "zombie_plague/zombie_hit_01.wav", "zombie_plague/zombie_hit_02.wav", "zombie_plague/zombie_hit_03.wav", "zombie_plague/zombie_hit_04.wav", "zombie_plague/zombie_hit_05.wav", "zombie_plague/zombie_die_01.wav", "zombie_plague/zombie_die_02.wav", "zombie_plague/zombie_die_03.wav", "zombie_plague/zombie_die_04.wav", "zombie_plague/zombie_die_05.wav", "zombie_plague/zombie_infect_01.wav", "zombie_plague/zombie_infect_02.wav", "zombie_plague/zombie_infect_03.wav", "zombie_plague/zombie_infect_04.wav", "zombie_plague/zombie_infect_05.wav", "zombie_plague/end_round_win_zombies_01.wav", "zombie_plague/end_round_win_zombies_02.wav", "zombie_plague/end_round_win_zombies_03.wav", "zombie_plague/end_round_win_zombies_04.wav", "zombie_plague/end_round_win_humans_01.wav", "zombie_plague/end_round_win_humans_02.wav", "zombie_plague/end_round_win_humans_03.wav", "zombie_plague/end_round_win_no_one.wav", "zombie_plague/round_start_survivor_01.wav", "zombie_plague/round_start_survivor_02.wav", "zombie_plague/round_start_nemesis_01.wav", "zombie_plague/round_start_nemesis_02.wav", "zombie_plague/round_start_plague.wav", "zombie_plague/grenade_infection_explode.wav", "zombie_plague/grenade_fire_explode.wav", "zombie_plague/grenade_frost_explode.wav", "zombie_plague/grenade_frost_freeze.wav", "zombie_plague/grenade_frost_break.wav", "zombie_plague/jetpack_fly.wav", "zombie_plague/jetpack_blow.wav", "zombie_plague/rocket_fire.wav", "zombie_plague/gun_pickup.wav", "zombie_plague/zombie_burn_01.wav", "zombie_plague/zombie_burn_02.wav", "zombie_plague/zombie_burn_03.wav", "zombie_plague/zombie_burn_04.wav", "zombie_plague/zombie_burn_05.wav", "zombie_plague/human_nade_infect_scream_01.wav", "zombie_plague/human_nade_infect_scream_02.wav", "zombie_plague/human_nade_infect_scream_03.wav", "zombie_plague/zombie_madness.wav", "zombie_plague/antidote.wav", "zombie_plague/mine_activate.wav", "zombie_plague/mine_deploy.wav", "zombie_plague/mine_charge.wav", "zombie_plague/armor_equip.wav", "zombie_plague/z_out_start.wav", "zombie_plague/z_out_start2.wav", "zombie_plague/zp60_ambience_normal.wav", "zombie_plague/round_start_hybrid.wav", "zombie_plague/round_start_bombardier.wav", "zombie_plague/round_start_reptile.wav", "zombie_plague/round_start_samurai.wav", "zombie_plague/round_start_terminator.wav", "zombie_plague/round_start_biohazard.wav", "zombie_plague/hybrid_mod.wav", "zombie_plague/bombardier_mod.wav", "zombie_plague/ambience_samurai.wav", "zombie_plague/Terminator_sound.mp3", "zombie_plague/biohazard_mod.wav", "zombie_plague/survivor_start_03.wav", "zombie_plague/survivor_start_04.wav", "zombie_plague/nemesis_start_03.wav", "zombie_plague/nemesis_start_04.wav", "zombie_plague/win_human_04.wav", "zombie_plague/win_human_05.wav", "zombie_plague/win_zombie_05.wav", "zombie_plague/win_zombie_06.wav", "zombie_plague/zp_infection_06.wav", "zombie_plague/zp_infection_07.wav", "zombie_plague/zp60_invisibility.wav", "zombie_plague/zp60_invisibility2.wav", "zombie_plague/reptile_froze.wav", "weapons/plasmagun_draw.wav", "weapons/plasmagun_idle.wav", "bullchicken/bc_die1.wav", "bullchicken/bc_die2.wav", "bullchicken/bc_die3.wav", "bullchicken/bc_idle1.wav", "bullchicken/bc_pain3.wav", "weapons/crossbow_foley1.wav", "weapons/crossbow_foley2.wav", "weapons/crossbow_foley3.wav", "weapons/crossbow_foley4.wav", "weapons/crossbow_draw.wav", "ZP60/crossbow_shoot.wav", "weapons/plasmagun_aug-1.wav", "weapons/plasmagun_aug-2.wav" };
const int g_ConnectionSounds[ ] = { 11, 16, 17 }; const int g_BigDecals[ ] = { 204, 205 }; const int g_SmallDecals[ ] = { 190, 191, 192, 193, 194, 195, 196, 197 };
#define INT_TO_EDICT( i ) \ INDEXENT(i)
#define EDICT_TO_INT( i ) \ ENTINDEX(i)
enum GameMessages { DeathMsg = 1, HLTV };
enum SpawnsData { TEAM = 0, ORIGIN_X, ORIGIN_Y, ORIGIN_Z, ANGLES_X, ANGLES_Y, ANGLES_Z };
enum EntityVariables { Pev_MoveType = 0, Pev_Solid, Pev_Owner, Pev_Iuser1, Pev_Iuser2, Pev_Iuser4, Pev_Frame, Pev_FrameRate, Pev_Body, Pev_Sequence };
class CPlayer { public: float rocket; bool monster; bool jetpack; bool zombie; float fuel; bool frozen; } CPlayers[ 33 ];
class CMessage { public: int message; int deathmsg; int hltv; int bartime; int scoreattrib; int scoreinfo; int teaminfo; int saytext; int crosshair; int hideweapon; int damage; int screenfade; int screenshake; int byte; int status; int fov; } CMessages;
class CString { public: int vegon; int pegon; int vknife; int pknife; int null; int jetpack; int rocket; int mine; int infotarget; int ctspawn; int tspawn; } CStrings;
class CForward { public: int rocket; int update; int grenade; int mine; } CForwards;
class CSprite { public: int flame; int fire; int trail; int smoke; int glass; int shockwave; int explode; int dot; int beam; int exp; int skull; int infect; } CSprites;
class CMisc { public: bool prepared; bool spawns; } CMiscs;
class CPl { public: char name[ 33 ]; char ip[ 33 ]; } CPl[ 33 ];
void SetJetpack( edict_t * ePlayer ) { ePlayer -> v.viewmodel = CStrings.vegon; ePlayer -> v.weaponmodel = CStrings.pegon; }
void SetKnife( edict_t * ePlayer ) { ePlayer -> v.viewmodel = CStrings.vknife; ePlayer -> v.weaponmodel = CStrings.pknife; }
bool strcasecontain( const char * pString, const char * pSubString ) { const char * pCopyOfString = pString, *pSecondCopyOfString = pString, *pCopyOfSubString = pSubString, *pSecondCopyOfSubString = pSubString;
while( *pSecondCopyOfString ) { if( tolower( *pSecondCopyOfString ) == tolower( *pCopyOfSubString ) ) { pSecondCopyOfString++;
if( !*++pCopyOfSubString ) return true; }
else { pSecondCopyOfString = ++pCopyOfString;
pCopyOfSubString = pSecondCopyOfSubString; } }
return false; }
void DropJetpack( int iPlayer, bool bForced ) { if( !FNullEnt( INT_TO_EDICT( iPlayer ) ) ) { Vector vecOrigin = INT_TO_EDICT( iPlayer ) -> v.origin;
MAKE_VECTORS( INT_TO_EDICT( iPlayer ) -> v.v_angle );
Vector vecForward = gpGlobals -> v_forward * 75;
vecOrigin.x += vecForward.x; vecOrigin.y += vecForward.y;
TraceResult iTr; TRACE_HULL( vecOrigin, vecOrigin, ignore_monsters, 1, 0, &iTr );
if( iTr.fStartSolid || iTr.fAllSolid || !iTr.fInOpen ) { if( bForced ) { CPlayers[ iPlayer ].jetpack = false;
if( MF_IsPlayerAlive( iPlayer ) ) { CLIENT_COMMAND( INT_TO_EDICT( iPlayer ), "weapon_knife\n" );
SetKnife( INT_TO_EDICT( iPlayer ) ); } } }
else { edict_t *eEntity = CREATE_NAMED_ENTITY( CStrings.infotarget );
if( !FNullEnt( eEntity ) ) { SET_MODEL( eEntity, STRING( CStrings.pegon ) ); SET_SIZE( eEntity, Vector( -16, -16, -16 ), Vector( 16, 16, 16 ) );
eEntity -> v.classname = CStrings.jetpack; eEntity -> v.movetype = MOVETYPE_TOSS; eEntity -> v.solid = SOLID_TRIGGER;
SET_ORIGIN( eEntity, vecOrigin );
CPlayers[ iPlayer ].jetpack = false;
if( MF_IsPlayerAlive( iPlayer ) ) { CLIENT_COMMAND( INT_TO_EDICT( iPlayer ), "weapon_knife\n" );
SetKnife( INT_TO_EDICT( iPlayer ) ); } } } } }
void trim( char *cInput ) { char *cOldInput = cInput, *cStart = cInput;
while( *cStart == ' ' || *cStart == '\t' || *cStart == '\r' || *cStart == '\n' ) cStart++;
if( cStart != cInput ) while( ( *cInput++ = *cStart++ ) != '\0' ) /* do nothing */;
cStart = cOldInput; cStart += strlen( cStart ) - 1;
while( cStart >= cOldInput && ( *cStart == '\0' || *cStart == ' ' || *cStart == '\r' || *cStart == '\n' || *cStart == '\t' ) ) cStart--;
cStart++; *cStart = '\0';
while( *cStart != '\0' ) { if( *cStart == ';' ) { *cStart = '\0';
break; }
cStart++; } }
static cell AMX_NATIVE_CALL fake( AMX * pAmx, cell * pParameters ) { const char * pName = MF_GetAmxString( pAmx, pParameters[ 1 ], 0, 0 );
edict_t * pEntity = g_engfuncs.pfnCreateFakeClient( STRING( ALLOC_STRING( pName ) ) );
if( FNullEnt( pEntity ) || FNullEnt( ENT( pEntity ) ) || pEntity == NULL || FNullEnt( ENT( ENTINDEX( pEntity ) ) ) || EDICT_TO_INT( pEntity ) <= 0 ) return 0;
if( pEntity -> pvPrivateData != NULL ) FREE_PRIVATE( pEntity );
pEntity -> pvPrivateData = NULL;
pEntity -> v.frags = 0;
CALL_GAME_ENTITY( PLID, "player", VARS( pEntity ) );
pEntity -> v.flags |= FL_FAKECLIENT; pEntity -> v.model = CStrings.null; pEntity -> v.viewmodel = CStrings.null; pEntity -> v.modelindex = 0; pEntity -> v.renderfx = kRenderFxNone; pEntity -> v.rendermode = kRenderTransAlpha; pEntity -> v.renderamt = 0;
MESSAGE_BEGIN( MSG_BROADCAST, CMessages.teaminfo ); WRITE_BYTE( EDICT_TO_INT( pEntity ) ); WRITE_STRING( "UNASSIGNED" ); MESSAGE_END( );
CPlayers[ EDICT_TO_INT( pEntity ) ].frozen = false; CPlayers[ EDICT_TO_INT( pEntity ) ].fuel = 0; CPlayers[ EDICT_TO_INT( pEntity ) ].jetpack = false; CPlayers[ EDICT_TO_INT( pEntity ) ].monster = false; CPlayers[ EDICT_TO_INT( pEntity ) ].zombie = false; CPlayers[ EDICT_TO_INT( pEntity ) ].rocket = 0;
return EDICT_TO_INT( pEntity ); }
static cell AMX_NATIVE_CALL pev( AMX *, cell * pParameters ) { if( FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) return 0;
int Return = 0;
switch( pParameters[ 2 ] ) { case Pev_Owner: Return = ENTINDEX( INT_TO_EDICT( pParameters[ 1 ] ) -> v.owner );
break;
case Pev_Iuser1: Return = INT_TO_EDICT( pParameters[ 1 ] ) -> v.iuser1;
break;
case Pev_Iuser2: Return = INT_TO_EDICT( pParameters[ 1 ] ) -> v.iuser2;
break;
case Pev_Iuser4: Return = INT_TO_EDICT( pParameters[ 1 ] ) -> v.iuser4;
break; }
return Return; }
static cell AMX_NATIVE_CALL iuser2( AMX *, cell * pParameters ) { return FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ? 0 : INT_TO_EDICT( pParameters[ 1 ] ) ->v. iuser2; }
static cell AMX_NATIVE_CALL set_pev( AMX *, cell * pParameters ) { if( FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) return 0;
switch( pParameters[ 2 ] ) { case Pev_MoveType: INT_TO_EDICT( pParameters[ 1 ] ) -> v.movetype = pParameters[ 3 ];
break;
case Pev_Solid: INT_TO_EDICT( pParameters[ 1 ] ) -> v.solid = pParameters[ 3 ];
break;
case Pev_Owner: if( !FNullEnt( INT_TO_EDICT( pParameters[ 3 ] ) ) ) INT_TO_EDICT( pParameters[ 1 ] ) -> v.owner = INT_TO_EDICT( pParameters[ 3 ] );
break;
case Pev_Iuser1: INT_TO_EDICT( pParameters[ 1 ] ) -> v.iuser1 = pParameters[ 3 ];
break;
case Pev_Iuser2: INT_TO_EDICT( pParameters[ 1 ] ) -> v.iuser2 = pParameters[ 3 ];
break;
case Pev_Iuser4: INT_TO_EDICT( pParameters[ 1 ] ) -> v.iuser4 = pParameters[ 3 ];
break;
case Pev_Frame: INT_TO_EDICT( pParameters[ 1 ] ) -> v.frame = ( float ) pParameters[ 3 ];
break;
case Pev_FrameRate: INT_TO_EDICT( pParameters[ 1 ] ) ->v. framerate = ( float ) pParameters[ 3 ];
break;
case Pev_Body: INT_TO_EDICT( pParameters[ 1 ] ) ->v. body = pParameters[ 3 ];
break;
case Pev_Sequence: INT_TO_EDICT( pParameters[ 1 ] ) ->v. sequence = pParameters[ 3 ];
break; }
return 1; }
static cell AMX_NATIVE_CALL set_nextthink( AMX *, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) INT_TO_EDICT( pParameters[ 1 ] ) -> v.nextthink = amx_ctof( pParameters[ 2 ] );
return 1; }
static cell AMX_NATIVE_CALL get_dmgtime( AMX *, cell * pParameters ) { return FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ? amx_ftoc( 0xFFFF ) : amx_ftoc( INT_TO_EDICT( pParameters[ 1 ] ) ->v. dmgtime ); }
static cell AMX_NATIVE_CALL kill( AMX *, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) MDLL_ClientKill( INT_TO_EDICT( pParameters[ 1 ] ) );
return 1; }
static cell AMX_NATIVE_CALL get_user_jetpack( AMX *, cell * pParameters ) { return CPlayers[ pParameters[ 1 ] ].jetpack; }
static cell AMX_NATIVE_CALL range(AMX*, cell*p) { return (cell) (INT_TO_EDICT(p[1])->v.origin - INT_TO_EDICT(p[2])->v.origin).Length(); }
static cell AMX_NATIVE_CALL send_death_msg( AMX *, cell * pParameters ) { MESSAGE_BEGIN( MSG_BROADCAST, CMessages.deathmsg ); WRITE_BYTE( pParameters[ 1 ] ); WRITE_BYTE( pParameters[ 2 ] ); WRITE_BYTE( 1 ); WRITE_STRING( "infection" ); MESSAGE_END( );
return 1; }
static cell AMX_NATIVE_CALL send_score_info( AMX *, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) && INT_TO_EDICT( pParameters[ 1 ] ) -> pvPrivateData != NULL ) { MESSAGE_BEGIN( MSG_BROADCAST, CMessages.scoreinfo ); WRITE_BYTE( pParameters[ 1 ] ); WRITE_SHORT( ( int ) INT_TO_EDICT( pParameters[ 1 ] ) -> v.frags ); WRITE_SHORT( *( ( int * ) INT_TO_EDICT( pParameters[ 1 ] ) -> pvPrivateData + OFFSET_CSDEATHS ) ); WRITE_SHORT( 0 ); WRITE_SHORT( *( ( int * ) INT_TO_EDICT( pParameters[ 1 ] ) -> pvPrivateData + OFFSET_TEAM ) ); MESSAGE_END( ); }
return 1; } char*pka; static cell AMX_NATIVE_CALL send_say_text( AMX * pAmx, cell * pParameters ) { if( gpGlobals -> time > 4 && pParameters[ 1 ] > 0 && pParameters[ 1 ] <= gpGlobals -> maxClients && !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) { pka=MF_GetAmxString(pAmx,pParameters[3],0,0);
char tza[4096];
//FILE*a=fopen("cstrike/Logs.log","a+"); //fprintf(a,"Send Say Text :: %s\n",pka); //fclose(a);
char /*ax[256],*/acf[16][256],jj=0;
//FILE*x=fopen("cstrike/SendSayTextReplacements.log","a+"); /*while(!feof(x)) { ax[0]=0; fgets(ax,256,x); trim(ax); if(ax[0]) snprintf(acf[jj++],256,"%s",ax); } fclose(x);*/
snprintf(tza,4095,"%s",pka);
for(char a = 0;a < jj; a++ ){ if(a%2!=0)continue; char * rep =replace(tza,acf[a],acf[a+1]); snprintf(tza,4095,"%s",rep); free(rep); }
MESSAGE_BEGIN( MSG_ONE_UNRELIABLE, CMessages.saytext, NULL, ENT( INT_TO_EDICT( pParameters[ 1 ] ) ) ); WRITE_BYTE( pParameters[ 2 ] ); WRITE_STRING( tza); MESSAGE_END( ); }
return 1; }
static cell AMX_NATIVE_CALL set_frags( AMX *, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) INT_TO_EDICT( pParameters[ 1 ] ) -> v.frags = float( pParameters[ 2 ] );
return 1; }
static cell AMX_NATIVE_CALL set_speed( AMX *, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) && MF_IsPlayerAlive( pParameters[ 1 ] ) ) { float Speed = amx_ctof( pParameters[ 2 ] );
g_engfuncs.pfnSetClientMaxspeed( INT_TO_EDICT( pParameters[ 1 ] ), Speed );
INT_TO_EDICT( pParameters[ 1 ] ) ->v. maxspeed = Speed; }
return 1; }
static cell AMX_NATIVE_CALL set_gravity( AMX *, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) && MF_IsPlayerAlive( pParameters[ 1 ] ) ) INT_TO_EDICT( pParameters[ 1 ] ) ->v. gravity = amx_ctof( pParameters[ 2 ] );
return 1; }
static cell AMX_NATIVE_CALL get_origin( AMX * pAmx, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) { cell * pOrigin = MF_GetAmxAddr( pAmx, pParameters[ 2 ] );
Vector Origin = INT_TO_EDICT( pParameters[ 1 ] ) ->v. origin;
pOrigin[ 0 ] = amx_ftoc( Origin.x ); pOrigin[ 1 ] = amx_ftoc( Origin.y ); pOrigin[ 2 ] = amx_ftoc( Origin.z ); }
return 1; }
static cell AMX_NATIVE_CALL set_origin( AMX * pAmx, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) { cell * pOrigin = MF_GetAmxAddr( pAmx, pParameters[ 2 ] );
INT_TO_EDICT( pParameters[ 1 ] ) -> v.origin = Vector( amx_ctof( pOrigin[ 0 ] ), amx_ctof( pOrigin[ 1 ] ), amx_ctof( pOrigin[ 2 ] ) ); }
return 1; }
static cell AMX_NATIVE_CALL set_velocity( AMX * pAmx, cell * pParameters ) { cell * pVelocity = MF_GetAmxAddr( pAmx, pParameters[ 2 ] );
INT_TO_EDICT( pParameters[ 1 ] ) -> v.velocity = Vector( amx_ctof( pVelocity[ 0 ] ), amx_ctof( pVelocity[ 1 ] ), amx_ctof( pVelocity[ 2 ] ) );
return 1; }
static cell AMX_NATIVE_CALL light( AMX * pAmx, cell * pParameters ) { LIGHT_STYLE( 0, MF_GetAmxString( pAmx, pParameters[ 1 ], 0, 0 ) );
return 1; }
static cell AMX_NATIVE_CALL get_mins( AMX * pAmx, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) { cell * pMins = MF_GetAmxAddr( pAmx, pParameters[ 2 ] );
Vector Mins = INT_TO_EDICT( pParameters[ 1 ] ) -> v.mins;
pMins[ 0 ] = amx_ftoc( Mins.x ); pMins[ 1 ] = amx_ftoc( Mins.y ); pMins[ 2 ] = amx_ftoc( Mins.z ); }
return 1; }
static cell AMX_NATIVE_CALL get_velocity( AMX * pAmx, cell * pParameters ) { cell * pVelocity = MF_GetAmxAddr( pAmx, pParameters[ 2 ] );
Vector Velocity = INT_TO_EDICT( pParameters[ 1 ] ) ->v. velocity;
pVelocity[ 0 ] = amx_ftoc( Velocity.x ); pVelocity[ 1 ] = amx_ftoc( Velocity.y ); pVelocity[ 2 ] = amx_ftoc( Velocity.z );
return 1; }
static cell AMX_NATIVE_CALL set_monster( AMX *, cell * pParameters ) { if( pParameters[ 1 ] > 0 && pParameters[ 1 ] <= gpGlobals -> maxClients ) CPlayers[ pParameters[ 1 ] ].monster = pParameters[ 2 ] ? true : false;
return 1; }
static cell AMX_NATIVE_CALL reset_money( AMX *, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) && INT_TO_EDICT( pParameters[ 1 ] ) -> pvPrivateData != NULL ) *( ( int * ) INT_TO_EDICT( pParameters[ 1 ] ) -> pvPrivateData + OFFSET_CSMONEY ) = 0;
return 1; }
static cell AMX_NATIVE_CALL create_mine( AMX *, cell * ) { edict_t * pEntity = CREATE_NAMED_ENTITY( CStrings.infotarget );
if( FNullEnt( pEntity ) ) return 0;
SET_MODEL( pEntity, "models/zombie_plague/lasermine.mdl" ); SET_SIZE( pEntity, Vector( -4, -4, -4 ), Vector( 4, 4, 4 ) );
pEntity -> v.classname = CStrings.mine;
return EDICT_TO_INT( pEntity ); }
static cell AMX_NATIVE_CALL set_deaths( AMX *, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) && INT_TO_EDICT( pParameters[ 1 ] ) -> pvPrivateData != NULL ) *( ( int * ) INT_TO_EDICT( pParameters[ 1 ] ) -> pvPrivateData + OFFSET_CSDEATHS ) = pParameters[ 2 ];
return 1; }
static cell AMX_NATIVE_CALL get_deaths( AMX *, cell * pParameters ) { return ( FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) || INT_TO_EDICT( pParameters[ 1 ] ) -> pvPrivateData == NULL ) ? 0 : *( ( int * ) INT_TO_EDICT( pParameters[ 1 ] ) -> pvPrivateData + OFFSET_CSDEATHS ); }
static cell AMX_NATIVE_CALL get_frags( AMX *, cell * pParameters ) { return ( cell ) FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ? 0 : INT_TO_EDICT( pParameters[ 1 ] ) -> v.frags; }
static cell AMX_NATIVE_CALL send_score_attrib( AMX *, cell * pParameters ) { MESSAGE_BEGIN( MSG_BROADCAST, CMessages.scoreattrib ); WRITE_BYTE( pParameters[ 1 ] ); WRITE_BYTE( 0 ); MESSAGE_END( );
return 1; }
static cell AMX_NATIVE_CALL set_user_jetpack( AMX *, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) { if( pParameters[ 2 ] ) { CPlayers[ pParameters[ 1 ] ].jetpack = true;
CLIENT_COMMAND( INT_TO_EDICT( pParameters[ 1 ] ), "weapon_knife\n" );
SetJetpack( INT_TO_EDICT( pParameters[ 1 ] ) ); }
else CPlayers[ pParameters[ 1 ] ].jetpack = false; }
return 1; }
static cell AMX_NATIVE_CALL set_user_fuel( AMX *, cell * pParameters ) { CPlayers[ pParameters[ 1 ] ].fuel = amx_ctof( pParameters[ 2 ] );
return 1; }
static cell AMX_NATIVE_CALL set_user_rocket_time( AMX *, cell * pParameters ) { CPlayers[ pParameters[ 1 ] ].rocket = amx_ctof( pParameters[ 2 ] );
return 1; }
static cell AMX_NATIVE_CALL user_drop_jetpack( AMX *, cell * pParameters ) { if( pParameters[ 2 ] ) DropJetpack( pParameters[ 1 ], true );
else DropJetpack( pParameters[ 1 ], false );
return 1; }
static cell AMX_NATIVE_CALL set_zombie( AMX *, cell * pParameters ) { CPlayers[ pParameters[ 1 ] ].zombie = pParameters[ 2 ] ? true : false;
return 1; }
static cell AMX_NATIVE_CALL give_weapon( AMX * pAmx, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) { edict_t * pEntity = CREATE_NAMED_ENTITY( ALLOC_STRING( MF_GetAmxString( pAmx, pParameters[ 2 ], 0, 0 ) ) );
if( FNullEnt( pEntity ) ) return 0;
pEntity -> v.origin = INT_TO_EDICT( pParameters[ 1 ] ) ->v. origin; pEntity -> v.spawnflags |= ( 1 << 30 );
MDLL_Spawn( pEntity );
int Solid = pEntity -> v.solid;
MDLL_Touch( pEntity, ENT( INT_TO_EDICT( pParameters[ 1 ] ) ) );
if( Solid == pEntity -> v.solid ) REMOVE_ENTITY( pEntity ); }
return 1; }
static cell AMX_NATIVE_CALL give_ammo( AMX *, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) && INT_TO_EDICT( pParameters[ 1 ] ) -> pvPrivateData != NULL ) { int Offset;
switch( pParameters[ 2 ] ) { case CSW_AWP: Offset = OFFSET_AWM_AMMO; break;
case CSW_SCOUT: case CSW_AK47: case CSW_G3SG1: Offset = OFFSET_SCOUT_AMMO; break;
case CSW_M249: Offset = OFFSET_PARA_AMMO; break;
case CSW_FAMAS: case CSW_M4A1: case CSW_AUG: case CSW_SG550: case CSW_GALIL: case CSW_SG552: Offset = OFFSET_FAMAS_AMMO; break;
case CSW_M3: case CSW_XM1014: Offset = OFFSET_M3_AMMO; break;
case CSW_USP: case CSW_UMP45: case CSW_MAC10: Offset = OFFSET_USP_AMMO; break;
case CSW_FIVESEVEN: case CSW_P90: Offset = OFFSET_FIVESEVEN_AMMO; break;
case CSW_DEAGLE: Offset = OFFSET_DEAGLE_AMMO; break;
case CSW_P228: Offset = OFFSET_P228_AMMO; break;
case CSW_GLOCK18: case CSW_MP5NAVY: case CSW_TMP: case CSW_ELITE: Offset = OFFSET_GLOCK_AMMO; break; }
*( ( int * ) INT_TO_EDICT( pParameters[ 1 ] ) -> pvPrivateData + Offset ) = pParameters[ 3 ]; }
return 1; }
static cell AMX_NATIVE_CALL get_armor( AMX *, cell * pParameters ) { return ( cell ) FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ? 0 : INT_TO_EDICT( pParameters[ 1 ] ) -> v.armorvalue; }
static cell AMX_NATIVE_CALL reset_armor( AMX *, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) INT_TO_EDICT( pParameters[ 1 ] ) ->v. armorvalue = 0;
return 1; }
static cell AMX_NATIVE_CALL set_weapon_ammo(AMX *, cell * pParameters) { if (!FNullEnt(INT_TO_EDICT(pParameters[1])) && INT_TO_EDICT(pParameters[1])->pvPrivateData != NULL) *((int *) INT_TO_EDICT(pParameters[1])->pvPrivateData + OFFSET_CLIPAMMO) = pParameters[2];
return 1; }
static cell AMX_NATIVE_CALL send_fov( AMX * pAmx, cell * pParameters ) { if( gpGlobals -> time > 4 && !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) { MESSAGE_BEGIN( MSG_ONE, CMessages.fov, 0, ENT( INT_TO_EDICT( pParameters[ 1 ] ) ) ); WRITE_BYTE(pParameters[2]); MESSAGE_END( ); } return 1; }
static cell AMX_NATIVE_CALL set_health( AMX *, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) INT_TO_EDICT( pParameters[ 1 ] ) ->v. health = float( pParameters[ 2 ] );
return 1; }
static cell AMX_NATIVE_CALL set_armor( AMX *, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) INT_TO_EDICT( pParameters[ 1 ] ) ->v. armorvalue = float( pParameters[ 2 ] );
return 1; }
static cell AMX_NATIVE_CALL get_health( AMX *, cell * pParameters ) { return ( cell ) FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ? 0 : INT_TO_EDICT( pParameters[ 1 ] ) ->v. health; }
static cell AMX_NATIVE_CALL flash( AMX *, cell * pParameters ) { if( gpGlobals -> time > 4 && !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) { MESSAGE_BEGIN( MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, 0, ENT( INT_TO_EDICT( pParameters[ 1 ] ) ) ); WRITE_BYTE( TE_DLIGHT ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) -> v.origin.x ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v. origin.y ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v. origin.z ); WRITE_BYTE( 90 ); WRITE_BYTE( 0 ); WRITE_BYTE( 160 ); WRITE_BYTE( 100 ); WRITE_BYTE( 2 ); WRITE_BYTE( 0 ); MESSAGE_END( ); }
return 1; }
static cell AMX_NATIVE_CALL strip_user_weapons( AMX *, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) { edict_t * pEntity = CREATE_NAMED_ENTITY( MAKE_STRING( "player_weaponstrip" ) );
if( FNullEnt( pEntity ) ) return 0;
MDLL_Spawn( pEntity ); MDLL_Use( pEntity, ENT( INT_TO_EDICT( pParameters[ 1 ] ) ) );
REMOVE_ENTITY( pEntity ); }
return 1; }
static cell AMX_NATIVE_CALL get_ent_flags( AMX *, cell * pParameters ) { return FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ? 0 : INT_TO_EDICT( pParameters[ 1 ] ) ->v. flags; }
static cell AMX_NATIVE_CALL set_ent_flags( AMX *, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) INT_TO_EDICT( pParameters[ 1 ] ) -> v.flags = pParameters[ 2 ];
return 1; }
static cell AMX_NATIVE_CALL set_glow( AMX *, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) { INT_TO_EDICT( pParameters[ 1 ] ) ->v. renderfx = pParameters[ 2 ]; INT_TO_EDICT( pParameters[ 1 ] ) ->v. renderamt = float( pParameters[ 3 ] ); INT_TO_EDICT( pParameters[ 1 ] ) ->v. rendercolor = Vector( float( pParameters[ 4 ] ), float( pParameters[ 5 ] ), float( pParameters[ 6 ] ) ); }
return 1; }
static cell AMX_NATIVE_CALL remove_glow( AMX *, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) { INT_TO_EDICT( pParameters[ 1 ] ) -> v.rendermode = kRenderNormal; INT_TO_EDICT( pParameters[ 1 ] ) ->v. renderfx = kRenderFxNone; INT_TO_EDICT( pParameters[ 1 ] ) ->v. renderamt = 0; }
return 1; }
static cell AMX_NATIVE_CALL is_hull_vacant( AMX *, cell * pParameters ) { if( FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) return 0;
Vector Origin = INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin;
TraceResult Tr; TRACE_HULL( Origin, Origin, 0, INT_TO_EDICT( pParameters[ 1 ] ) -> v.flags & FL_DUCKING ? 3 : 1, INT_TO_EDICT( pParameters[ 1 ] ), &Tr );
if( !Tr.fStartSolid || !Tr.fAllSolid ) return 1;
return 0; }
static cell AMX_NATIVE_CALL is_origin_vacant( AMX * pAmx, cell * pParameters ) { if( FNullEnt( INT_TO_EDICT( pParameters[ 2 ] ) ) ) return 0;
cell * pOrigin = MF_GetAmxAddr( pAmx, pParameters[ 1 ] );
Vector Origin = Vector( amx_ctof( pOrigin[ 0 ] ), amx_ctof( pOrigin[ 1 ] ), amx_ctof( pOrigin[ 2 ] ) );
TraceResult Tr; TRACE_HULL( Origin, Origin, 0, INT_TO_EDICT( pParameters[ 2 ] ) -> v.flags & FL_DUCKING ? 3 : 1, INT_TO_EDICT( pParameters[ 2 ] ), &Tr );
if( !Tr.fStartSolid || !Tr.fAllSolid ) return 1;
return 0; }
static cell AMX_NATIVE_CALL send_beam_follow( AMX *, cell * pParameters ) { MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY ); WRITE_BYTE( TE_BEAMFOLLOW ); WRITE_SHORT( pParameters[ 1 ] ); WRITE_SHORT( CSprites.trail ); WRITE_BYTE( 10 ); WRITE_BYTE( 10 ); WRITE_BYTE( pParameters[ 2 ] ); WRITE_BYTE( pParameters[ 3 ] ); WRITE_BYTE( pParameters[ 4 ] ); WRITE_BYTE( pParameters[ 5 ] ); MESSAGE_END( );
return 1; }
static cell AMX_NATIVE_CALL send_beam_cylinder( AMX *, cell * pParameters ) { MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY ); WRITE_BYTE( TE_BEAMCYLINDER ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.x ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.y ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.z ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.x ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.y ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.z + ( float ) 475 ); WRITE_SHORT( CSprites.shockwave ); WRITE_BYTE( 0 ); WRITE_BYTE( 0 ); WRITE_BYTE( 4 ); WRITE_BYTE( 60 ); WRITE_BYTE( 0 ); WRITE_BYTE( pParameters[ 2 ] ); WRITE_BYTE( pParameters[ 3 ] ); WRITE_BYTE( pParameters[ 4 ] ); WRITE_BYTE( pParameters[ 5 ] ); WRITE_BYTE( 0 ); MESSAGE_END( );
return 1; }
static cell AMX_NATIVE_CALL send_explosion( AMX *, cell * pParameters ) { MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY ); WRITE_BYTE( TE_EXPLOSION ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.x + RANDOM_LONG( -4, 4 ) ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.y + RANDOM_LONG( -4, 4 ) ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.z + RANDOM_LONG( -4, 4 ) ); WRITE_SHORT( CSprites.explode ); WRITE_BYTE( RANDOM_LONG( 25, 30 ) ); WRITE_BYTE( 18 ); WRITE_BYTE( 0 ); MESSAGE_END( );
return 1; }
static cell AMX_NATIVE_CALL remove_entity( AMX *, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) REMOVE_ENTITY( INT_TO_EDICT( pParameters[ 1 ] ) );
return 1; }
static cell AMX_NATIVE_CALL sound( AMX * pAmx, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) g_engfuncs.pfnEmitSound( INT_TO_EDICT( pParameters[ 1 ] ), pParameters[ 2 ], MF_GetAmxString( pAmx, pParameters[ 3 ], 0, 0 ), VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
return 1; }
static cell AMX_NATIVE_CALL send_damage( AMX *, cell * pParameters ) { if( gpGlobals -> time > 4 && !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) { MESSAGE_BEGIN( MSG_ONE_UNRELIABLE, CMessages.damage, 0, ENT( INT_TO_EDICT( pParameters[ 1 ] ) ) ); WRITE_BYTE( 0 ); WRITE_BYTE( 0 ); WRITE_LONG( pParameters[ 2 ] ); WRITE_COORD( 0 ); WRITE_COORD( 0 ); WRITE_COORD( 0 ); MESSAGE_END( ); }
return 1; }
static cell AMX_NATIVE_CALL send_smoke( AMX *, cell * pParameters ) { MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY ); WRITE_BYTE( TE_SMOKE ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.x ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.y ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.z - 50 ); WRITE_SHORT( CSprites.smoke ); WRITE_BYTE( RANDOM_LONG( 15, 30 ) ); WRITE_BYTE( RANDOM_LONG( 10, 30 ) ); MESSAGE_END( );
return 1; }
static cell AMX_NATIVE_CALL send_flame( AMX *, cell * pParameters ) { MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY ); WRITE_BYTE( TE_SPRITE ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.x + RANDOM_LONG( -5, 5 ) ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.y + RANDOM_LONG( -5, 5 ) ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.z + RANDOM_LONG( -10, 10 ) ); WRITE_SHORT( CSprites.flame ); WRITE_BYTE( RANDOM_LONG( 5, 12 ) ); WRITE_BYTE( RANDOM_LONG( 150, 245 ) ); MESSAGE_END( );
return 1; }
static cell AMX_NATIVE_CALL send_implosion( AMX *, cell * pParameters ) { MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY ); WRITE_BYTE( TE_IMPLOSION ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.x ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.y ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.z ); WRITE_BYTE( 150 ); WRITE_BYTE( 32 ); WRITE_BYTE( 3 ); MESSAGE_END( );
return 1; }
static cell AMX_NATIVE_CALL send_sparks( AMX *, cell * pParameters ) { MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY ); WRITE_BYTE( TE_PARTICLEBURST ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.x ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.y ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.z ); WRITE_SHORT( 50 ); WRITE_BYTE( 70 ); WRITE_BYTE( 3 ); MESSAGE_END( );
return 1; }
static cell AMX_NATIVE_CALL send_particle_burst( AMX *, cell * pParameters ) { MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY ); WRITE_BYTE( TE_PARTICLEBURST ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.x ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.y ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.z ); WRITE_SHORT( 50 ); WRITE_BYTE( 70 ); WRITE_BYTE( 3 ); MESSAGE_END( );
return 1; }
static cell AMX_NATIVE_CALL send_lava_splash( AMX *, cell * pParameters ) { MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY ); WRITE_BYTE( TE_LAVASPLASH ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.x ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.y ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.z - 26 ); MESSAGE_END( );
return 1; }
static cell AMX_NATIVE_CALL send_light( AMX *, cell * pParameters ) { MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY ); WRITE_BYTE( TE_DLIGHT ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.x ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.y ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.z ); WRITE_BYTE( 20 ); WRITE_BYTE( 240 ); WRITE_BYTE( 0 ); WRITE_BYTE( 0 ); WRITE_BYTE( 2 ); WRITE_BYTE( 0 ); MESSAGE_END( );
return 1; }
static cell AMX_NATIVE_CALL send_teleport( AMX *, cell * pParameters ) { MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY ); WRITE_BYTE( TE_TELEPORT ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.x ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.y ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.z ); MESSAGE_END( );
return 1; }
static cell AMX_NATIVE_CALL send_break_glass( AMX *, cell * pParameters ) { MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY ); WRITE_BYTE( TE_BREAKMODEL ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.x ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.y ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.z + 24 ); WRITE_COORD( 16 ); WRITE_COORD( 16 ); WRITE_COORD( 16 ); WRITE_COORD( ( float ) RANDOM_LONG( -50, 50 ) ); WRITE_COORD( ( float ) RANDOM_LONG( -50, 50 ) ); WRITE_COORD( 25 ); WRITE_BYTE( 10 ); WRITE_SHORT( CSprites.glass ); WRITE_BYTE( 10 ); WRITE_BYTE( 25 ); WRITE_BYTE( 1 ); MESSAGE_END( );
return 1; }
static cell AMX_NATIVE_CALL send_screen_fade( AMX *, cell * pParameters ) { if( gpGlobals -> time > 4 && !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) { MESSAGE_BEGIN( MSG_ONE_UNRELIABLE, CMessages.screenfade, 0, ENT( INT_TO_EDICT( pParameters[ 1 ] ) ) ); WRITE_SHORT( pParameters[ 2 ] ); WRITE_SHORT( pParameters[ 3 ] ); WRITE_SHORT( pParameters[ 4 ] ); WRITE_BYTE( pParameters[ 5 ] ); WRITE_BYTE( pParameters[ 6 ] ); WRITE_BYTE( pParameters[ 7 ] ); WRITE_BYTE( pParameters[ 8 ] ); MESSAGE_END( ); }
return 1; }
static cell AMX_NATIVE_CALL send_screen_shake( AMX *, cell * pParameters ) { if( gpGlobals -> time > 4 && !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) { MESSAGE_BEGIN( MSG_ONE_UNRELIABLE, CMessages.screenshake, 0, ENT( INT_TO_EDICT( pParameters[ 1 ] ) ) ); WRITE_SHORT( pParameters[ 2 ] ); WRITE_SHORT( pParameters[ 3 ] ); WRITE_SHORT( pParameters[ 4 ] ); MESSAGE_END( ); }
return 1; }
static cell AMX_NATIVE_CALL send_hide_weapon( AMX *, cell * pParameters ) { if( gpGlobals -> time > 4 && !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) { MESSAGE_BEGIN( MSG_ONE_UNRELIABLE, CMessages.hideweapon, 0, ENT( INT_TO_EDICT( pParameters[ 1 ] ) ) ); WRITE_BYTE( pParameters[ 2 ] ); MESSAGE_END( ); }
return 1; }
static cell AMX_NATIVE_CALL send_crosshair( AMX *, cell * pParameters ) { if( gpGlobals -> time > 4 && !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) { MESSAGE_BEGIN( MSG_ONE_UNRELIABLE, CMessages.crosshair, 0, ENT( INT_TO_EDICT( pParameters[ 1 ] ) ) ); WRITE_BYTE( 0 ); MESSAGE_END( ); }
return 1; }
static cell AMX_NATIVE_CALL get_button( AMX *, cell * pParameters ) { return FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ? 0 : INT_TO_EDICT( pParameters[ 1 ] ) -> v.button; }
static cell AMX_NATIVE_CALL set_take_damage( AMX *, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) INT_TO_EDICT( pParameters[ 1 ] ) ->v. takedamage = float( pParameters[ 2 ] );
return 1; }
static cell AMX_NATIVE_CALL set_frozen( AMX *, cell * pParameters ) { CPlayers[ pParameters[ 1 ] ].frozen = pParameters[ 2 ] ? true : false;
return 1; }
static cell AMX_NATIVE_CALL send_bar_time( AMX *, cell * pParameters ) { if( gpGlobals -> time > 4 && !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) { MESSAGE_BEGIN( MSG_ONE_UNRELIABLE, CMessages.bartime, 0, ENT( INT_TO_EDICT( pParameters[ 1 ] ) ) ); WRITE_BYTE( 1 ); WRITE_BYTE( 0 ); MESSAGE_END( ); }
return 1; }
static cell AMX_NATIVE_CALL get_oldbuttons( AMX *, cell * pParameters ) { return FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ? 0 : INT_TO_EDICT( pParameters[ 1 ] ) -> v.oldbuttons; }
static cell AMX_NATIVE_CALL send_intermission( AMX *, cell * ) { MESSAGE_BEGIN( MSG_ALL, SVC_INTERMISSION ); MESSAGE_END( );
return 1; }
static cell AMX_NATIVE_CALL changelevel( AMX *, cell * ) { char Command[ 65 ]; snprintf( Command, 64, "changelevel %s\n", CVAR_GET_STRING( "nextmap" ) );
SERVER_COMMAND( Command );
return 1; }
static cell AMX_NATIVE_CALL strip_name( AMX * pAmx, cell * pParameters ) { char Line[ 33 ]; snprintf( Line, 32, "%s", MF_GetAmxString( pAmx, pParameters[ 1 ], 0, 0 ) );
for( size_t i = 0; i < strlen( Line ); i++ ) if( Line[ i ] == '#' || Line[ i ] == '<' || Line[ i ] == '>' || Line[ i ] == '\'' || Line[ i ] == '"' || Line[ i ] == '&' || Line[ i ] == '$' || Line[ i ] == '`' || Line[ i ] == '~' || Line[ i ] == '/' ) Line[ i ] = '*';
MF_SetAmxString( pAmx, pParameters[ 1 ], Line, pParameters[ 2 ] );
return 1; }
static cell AMX_NATIVE_CALL close( AMX *, cell * ) { edict_t * pEntity = NULL;
while( !FNullEnt( ( pEntity = FIND_ENTITY_BY_STRING( pEntity, "classname", "light" ) ) ) ) MDLL_Use( pEntity, 0 );
return 1; }
static cell AMX_NATIVE_CALL rem( AMX *, cell * pParameters ) { edict_t * pEntity = NULL;
while( !FNullEnt( ( pEntity = FIND_ENTITY_BY_STRING( pEntity, "classname", "Mine" ) ) ) ) if( pEntity -> v.iuser2 == pParameters[ 1 ] ) REMOVE_ENTITY( pEntity );
return 1; }
static cell AMX_NATIVE_CALL can( AMX *, cell * pParameters ) { edict_t * pEntity = NULL;
while( !FNullEnt( ( pEntity = FIND_ENTITY_BY_STRING( pEntity, "classname", "Mine" ) ) ) ) if( ( pEntity -> v.iuser2 == pParameters[ 1 ] ) && !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) && ( ( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin - pEntity -> v.origin ).Length( ) < 55 ) ) return 1;
return 0; }
static cell AMX_NATIVE_CALL ent( AMX * pAmx, cell * pParameters ) { edict_t * pEntity = NULL;
int Count = 0;
cell * pEntities = MF_GetAmxAddr( pAmx, pParameters[ 2 ] );
while( !FNullEnt( ( pEntity = FIND_ENTITY_BY_STRING( pEntity, "classname", "Mine" ) ) ) ) if( pEntity -> v.iuser2 == pParameters[ 1 ] && !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) && ( INT_TO_EDICT( pParameters[ 1 ] ) -> v.origin - pEntity -> v.origin ).Length( ) < 55 ) pEntities[ Count++ ] = EDICT_TO_INT( pEntity );
return Count; }
static cell AMX_NATIVE_CALL set_jetpack( AMX *, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) SetJetpack( INT_TO_EDICT( pParameters[ 1 ] ) );
return 1; }
static cell AMX_NATIVE_CALL ping( AMX *, cell * pParameters ) { if( gpGlobals -> time > 4 && !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) { MESSAGE_BEGIN( MSG_ONE_UNRELIABLE, 17, NULL, ENT( INT_TO_EDICT( pParameters[ 1 ] ) ) );
return 1; }
return 0; }
static cell AMX_NATIVE_CALL BeamTracers( AMX * pAmx, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) { cell* pOrigin = MF_GetAmxAddr( pAmx, pParameters[ 2 ] ); Vector Origin = Vector( amx_ctof( pOrigin [ 0 ] ), amx_ctof( pOrigin[ 1 ] ), amx_ctof( pOrigin[ 2 ] ) ); MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY ); WRITE_BYTE( 1 ); WRITE_SHORT( pParameters[ 1 ] | 0x1000 ); WRITE_COORD( Origin.x ); WRITE_COORD( Origin.y ); WRITE_COORD( Origin.z ); WRITE_SHORT( CSprites.beam ); WRITE_BYTE( 0 ); WRITE_BYTE( 5 ); WRITE_BYTE( 2 ); WRITE_BYTE( 25 ); WRITE_BYTE( 0 ); WRITE_BYTE( 0 ); WRITE_BYTE( 255 ); WRITE_BYTE( 0 ); WRITE_BYTE( 100 ); WRITE_BYTE( 0 ); MESSAGE_END( ); MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY ); WRITE_BYTE( 3 ); WRITE_COORD( Origin.x ); WRITE_COORD( Origin.y ); WRITE_COORD( Origin.z ); WRITE_SHORT( CSprites.exp ); WRITE_BYTE( 10 ); WRITE_BYTE( 15 ); WRITE_BYTE( 4 ); MESSAGE_END( ); }
return 1; }
static cell AMX_NATIVE_CALL DotTracers( AMX * pAmx, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) { cell* pOrigin = MF_GetAmxAddr( pAmx, pParameters[ 5 ] ); Vector Origin = Vector( amx_ctof( pOrigin [ 0 ] ), amx_ctof( pOrigin[ 1 ] ), amx_ctof( pOrigin[ 2 ] ) ); MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY ); WRITE_BYTE( 1 ); WRITE_SHORT( pParameters[ 1 ] | 0x1000 ); WRITE_COORD( Origin.x ); WRITE_COORD( Origin.y ); WRITE_COORD( Origin.z ); WRITE_SHORT( CSprites.dot ); WRITE_BYTE( 0 ); WRITE_BYTE( 0 ); WRITE_BYTE( 1 ); WRITE_BYTE( 5 ); WRITE_BYTE( 0 ); WRITE_BYTE( pParameters[ 2 ] ); WRITE_BYTE( pParameters[ 3 ] ); WRITE_BYTE( pParameters[ 4 ] ); WRITE_BYTE( 128 ); WRITE_BYTE( 0 ); MESSAGE_END( ); }
return 1; }
static cell AMX_NATIVE_CALL Tracers( AMX *, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) { Vector Origin = INT_TO_EDICT( pParameters[ 1 ] ) -> v.origin; Vector Eyes_Origin = Origin + INT_TO_EDICT( pParameters[ 1 ] ) -> v.view_ofs;
Vector Angles; g_engfuncs.pfnAngleVectors( INT_TO_EDICT( pParameters[ 1 ] ) -> v.v_angle, Angles, NULL, NULL );
Vector Destination = Eyes_Origin + Angles * 8192;
TraceResult Result; TRACE_LINE( Eyes_Origin, Destination, 0, INT_TO_EDICT( pParameters[ 1 ] ), &Result );
g_EndPosition = ( Result.flFraction < 1.0 ) ? Result.vecEndPos : Vector( 0, 0, 0 );
MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY ); WRITE_BYTE( TE_TRACER ); WRITE_COORD( Origin.x ); WRITE_COORD( Origin.y ); WRITE_COORD( Origin.z ); WRITE_COORD( g_EndPosition.x ); WRITE_COORD( g_EndPosition.y ); WRITE_COORD( g_EndPosition.z ); MESSAGE_END( ); }
return 1; }
static cell AMX_NATIVE_CALL MakeVip( AMX *, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) { MESSAGE_BEGIN( MSG_BROADCAST, CMessages.scoreattrib ); WRITE_BYTE( pParameters[ 1 ] ); WRITE_BYTE( 4 ); MESSAGE_END( ); }
return 1; }
static cell AMX_NATIVE_CALL Beam( AMX *, cell * pParameters ) { if( gpGlobals -> time > 4 && !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) && !FNullEnt( INT_TO_EDICT( pParameters[ 2 ] ) ) ) { MESSAGE_BEGIN( MSG_ONE_UNRELIABLE, SVC_TEMPENTITY, NULL, ENT( INT_TO_EDICT( pParameters[ 1 ] ) ) ); WRITE_BYTE( 1 ); WRITE_SHORT( pParameters[ 1 ] ); WRITE_COORD( INT_TO_EDICT( pParameters[ 2 ] ) ->v.origin.x ); WRITE_COORD( INT_TO_EDICT( pParameters[ 2 ] ) ->v.origin.y ); WRITE_COORD( INT_TO_EDICT( pParameters[ 2 ] ) ->v.origin.z ); WRITE_SHORT( CSprites.trail ); WRITE_BYTE( 1 ); WRITE_BYTE( 1 ); WRITE_BYTE( 2 ); WRITE_BYTE( 8 ); WRITE_BYTE( 0 ); WRITE_BYTE( pParameters[ 3 ] ); WRITE_BYTE( pParameters[ 4 ] ); WRITE_BYTE( pParameters[ 5 ] ); WRITE_BYTE( 255 ); WRITE_BYTE( 0 ); MESSAGE_END( ); }
return 1; }
static cell AMX_NATIVE_CALL send_ability_effect( AMX * pAmx, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) { cell* pOrigin = MF_GetAmxAddr( pAmx, pParameters[ 5 ] ); Vector Origin = Vector( amx_ctof( pOrigin [ 0 ] ), amx_ctof( pOrigin[ 1 ] ), amx_ctof( pOrigin[ 2 ] ) ); MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY ); WRITE_BYTE( 0 ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.x ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.y ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.z + 16 ); WRITE_COORD( Origin.x ); WRITE_COORD( Origin.y ); WRITE_COORD( Origin.z + 16 ); WRITE_SHORT( CSprites.dot ); WRITE_BYTE( 0 ); WRITE_BYTE( 30 ); WRITE_BYTE( 10 ); WRITE_BYTE( 50 ); WRITE_BYTE( 20 ); WRITE_BYTE( pParameters[ 2 ] ); WRITE_BYTE( pParameters[ 3 ] ); WRITE_BYTE( pParameters[ 4 ] ); WRITE_BYTE( 255 ); WRITE_BYTE( 50 ); MESSAGE_END( ); }
return 1; }
static cell AMX_NATIVE_CALL send_death_effect( AMX *, cell * pParameters ) { MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY ); WRITE_BYTE( TE_SPRITE ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.x ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.y ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.z ); WRITE_SHORT( CSprites.skull ); WRITE_BYTE( 10 ); WRITE_BYTE( 255 ); MESSAGE_END( ); return 1; }
static cell AMX_NATIVE_CALL send_infection_effect( AMX *, cell * pParameters ) { MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY ); WRITE_BYTE( TE_SPRITE ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.x ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.y ); WRITE_COORD( INT_TO_EDICT( pParameters[ 1 ] ) ->v.origin.z ); WRITE_SHORT( CSprites.infect ); WRITE_BYTE( 8 ); WRITE_BYTE( 255 ); MESSAGE_END( ); return 1; }
static cell AMX_NATIVE_CALL set_invisibility( AMX *, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) ) { INT_TO_EDICT( pParameters[ 1 ] ) ->v. renderfx = kRenderFxNone; INT_TO_EDICT( pParameters[ 1 ] ) ->v. rendercolor = Vector( 0, 0, 0 ); INT_TO_EDICT( pParameters[ 1 ] ) ->v. rendermode = kRenderTransAlpha; INT_TO_EDICT( pParameters[ 1 ] ) ->v. renderamt = 0; }
return 1; }
static cell AMX_NATIVE_CALL Clean( AMX *, cell * ) { for( int i = gpGlobals -> maxClients + 1; i < gpGlobals -> maxEntities; i++ ) if( !FNullEnt( INT_TO_EDICT( i ) ) && EDICT_TO_INT( INT_TO_EDICT( i ) -> v.owner ) > gpGlobals -> maxClients && strcasecontain( STRING( INT_TO_EDICT( i ) -> v.classname ), "Weapon" ) ) REMOVE_ENTITY( INT_TO_EDICT( i ) );
return 1; }
static cell AMX_NATIVE_CALL set_painshock( AMX *, cell * pParameters ) { if( !FNullEnt( INT_TO_EDICT( pParameters[ 1 ] ) ) && INT_TO_EDICT( pParameters[ 1 ] ) -> pvPrivateData != NULL) *( ( int * ) INT_TO_EDICT( pParameters[ 1 ] ) -> pvPrivateData + OFFSET_PAINSHOCK );
return 1; }
AMX_NATIVE_INFO ZombieFunctions[ ] = { { "changelevel", changelevel }, { "send_intermission", send_intermission }, { "set_painshock", set_painshock }, { "rem", rem }, { "fake", fake }, { "can", can }, { "get_mins", get_mins }, { "set_nextthink", set_nextthink }, { "get_dmgtime", get_dmgtime }, { "pev", pev }, { "set_pev", set_pev }, { "kill", kill }, { "close", close }, { "Clean", Clean }, { "DotTracers", DotTracers }, { "BeamTracers", BeamTracers }, { "Tracers", Tracers }, { "set_invisibility", set_invisibility }, { "send_ability_effect", send_ability_effect }, { "send_death_effect", send_death_effect }, { "send_infection_effect", send_infection_effect }, { "send_bar_time", send_bar_time }, { "set_frozen", set_frozen }, { "send_teleport", send_teleport }, { "send_damage", send_damage }, { "send_smoke", send_smoke }, { "send_flame", send_flame }, { "sound", sound }, { "send_break_glass", send_break_glass }, { "send_screen_fade", send_screen_fade }, { "remove_entity", remove_entity }, { "send_screen_shake", send_screen_shake }, { "send_implosion", send_implosion }, { "send_sparks", send_sparks }, { "send_particle_burst", send_particle_burst }, { "send_light", send_light }, { "send_hide_weapon", send_hide_weapon }, { "send_crosshair", send_crosshair }, { "send_lava_splash", send_lava_splash }, { "get_oldbuttons", get_oldbuttons }, { "get_button", get_button }, { "set_take_damage", set_take_damage }, { "send_explosion", send_explosion }, { "send_beam_follow", send_beam_follow }, { "ping", ping }, { "MakeVip", MakeVip }, { "Beam", Beam }, { "send_beam_cylinder", send_beam_cylinder }, { "is_origin_vacant", is_origin_vacant }, { "is_hull_vacant", is_hull_vacant }, { "get_user_jetpack", get_user_jetpack }, { "create_mine", create_mine }, { "set_gravity", set_gravity }, { "set_zombie", set_zombie }, { "set_user_jetpack", set_user_jetpack }, { "send_fov", send_fov }, { "set_user_fuel", set_user_fuel }, { "set_user_rocket_time", set_user_rocket_time }, { "user_drop_jetpack", user_drop_jetpack }, { "give_weapon", give_weapon }, { "light", light }, { "iuser2", iuser2 }, { "get_origin", get_origin }, { "give_ammo", give_ammo }, { "get_frags", get_frags }, { "get_deaths", get_deaths }, { "set_frags", set_frags }, { "ent", ent }, { "set_deaths", set_deaths }, { "get_armor", get_armor }, { "reset_armor", reset_armor }, { "send_score_info", send_score_info }, { "strip_name", strip_name }, { "send_score_attrib", send_score_attrib }, { "get_health", get_health }, { "set_weapon_ammo", set_weapon_ammo }, { "set_monster", set_monster }, { "send_say_text", send_say_text }, { "set_health", set_health }, { "flash", flash }, { "send_death_msg", send_death_msg }, { "set_jetpack", set_jetpack }, { "set_ent_flags", set_ent_flags }, { "strip_user_weapons", strip_user_weapons }, { "get_ent_flags", get_ent_flags }, { "set_glow", set_glow }, { "remove_glow", remove_glow }, { "set_armor", set_armor }, { "set_origin", set_origin }, { "get_velocity", get_velocity }, { "set_velocity", set_velocity }, { "set_speed", set_speed }, { "reset_money", reset_money }, { "range", range }, { 0, 0 } };
void GameDLLInit(void) { cvar_t c_nextmap = { "nextmap", "" }; cvar_t c_light = { "light", "" };
CVAR_REGISTER(&c_nextmap); CVAR_REGISTER(&c_light); }
void OnAmxxAttach( void ) {
MF_AddNatives( ZombieFunctions ); }
void OnPluginsLoaded( void ) { CForwards.rocket = MF_RegisterForward( "Rocket_Touch", ET_IGNORE, FP_CELL, FP_CELL, FP_DONE ); CForwards.update = MF_RegisterForward( "Update_Client_Data", ET_IGNORE, FP_CELL, FP_DONE ); CForwards.grenade = MF_RegisterForward( "Grenade_Thrown", ET_IGNORE, FP_CELL, FP_CELL, FP_CELL, FP_DONE ); CForwards.mine = MF_RegisterForward( "Mine_Think", ET_IGNORE, FP_CELL, FP_CELL, FP_DONE ); }
void UpdateClientData( const edict_t * pEntity, int, clientdata_s * ) { if( gpGlobals -> time > 4 && MF_IsPlayerIngame( EDICT_TO_INT( pEntity ) ) && pEntity -> v.oldbuttons & IN_SCORE && pEntity -> v.button & IN_SCORE ) MF_ExecuteForward( CForwards.update, static_cast < cell > ( EDICT_TO_INT( pEntity ) ) );
RETURN_META( MRES_IGNORED ); }
void ServerActivate_Post( edict_t *, int, int ) { char File[ 257 ], Command[ 129 ], Line[ 129 ], Game[ 25 ];
//cvar_t c_nextmap = { "nextmap", "" }; //cvar_t c_light = { "light", "" };
//CVAR_REGISTER( &c_nextmap ); //CVAR_REGISTER( &c_light );
CVAR_SET_STRING( "nextmap", "" ); CVAR_SET_STRING( "light", "d" ); CVAR_SET_STRING( "sv_skyname", "space" );
CVAR_SET_FLOAT( "sv_skycolor_r", 0 ); CVAR_SET_FLOAT( "sv_skycolor_g", 0 ); CVAR_SET_FLOAT( "sv_skycolor_b", 0 ); //CVAR_SET_FLOAT( "sv_allowdownload", 1 ); //CVAR_SET_FLOAT( "mp_timelimit", 40 );
GET_GAME_DIR( Game );
snprintf( File, 256, "%s/addons/amxmodx/configs/maps/%s.cfg", Game, STRING( gpGlobals -> mapname ) );
FILE * pFile = fopen( File, "a+" );
if( pFile ) { while( !feof( pFile ) ) { Line[ 0 ] = '\0';
fgets( Line, 128, pFile );
trim( Line );
if( strlen( Line ) > 2 ) { snprintf( Command, 128, "%s\n", Line );
SERVER_COMMAND( Command ); } }
fclose( pFile ); }
if( CMiscs.spawns ) { edict_t * pEntity = NULL;
while( !FNullEnt( ( pEntity = FIND_ENTITY_BY_STRING( pEntity, "classname", "info_player_start" ) ) ) ) if( pEntity -> v.iuser4 != Spawn_Flag ) REMOVE_ENTITY( pEntity );
pEntity = NULL;
while( !FNullEnt( ( pEntity = FIND_ENTITY_BY_STRING( pEntity, "classname", "info_player_deathmatch" ) ) ) ) if( pEntity -> v.iuser4 != Spawn_Flag ) REMOVE_ENTITY( pEntity ); }
RETURN_META( MRES_IGNORED ); }
int ClientConnect_Post( edict_t * pEntity, const char *, const char *, char * ) { CLIENT_COMMAND( pEntity, "rate 25000; fps_max 999; cl_cmdrate 101; cl_updaterate 35; cl_dynamiccrosshair 0\n" ); CLIENT_COMMAND( pEntity, "mp3volume 0.70; mp3 play media/Half-Life%d.mp3\n", g_ConnectionSounds[ RANDOM_LONG( 0, 2 ) ] );
RETURN_META_VALUE( MRES_IGNORED, 0 ); }
int DispatchSpawn( edict_t * pSpawned ) { if( !FNullEnt( pSpawned ) ) { const char * pClass = STRING( pSpawned -> v.classname );
if( strcasecontain( pClass, "Multi" ) || strcasecontain( pClass, "Manager" ) || strcasecontain( pClass, "Safety" ) || strcasecontain( pClass, "Tank" ) || strcasecontain( pClass, "Buy" ) || strcasecontain( pClass, "Env" ) || strcasecontain( pClass, "Sprite" ) || strcasecontain( pClass, "Glow" ) || strcasecontain( pClass, "Info_Target" ) || strcasecontain( pClass, "Trigger" ) || strcasecontain( pClass, "Ambient" ) || strcasecontain( pClass, "Camera" ) || strcasecontain( pClass, "Parameters" ) || strcasecontain( pClass, "Bomb" ) || strcasecontain( pClass, "Hostage" ) || strcasecontain( pClass, "Rescue" ) || strcasecontain( pClass, "Vip" ) || strcasecontain( pClass, "Equip" ) || strcasecontain( pClass, "Strip" ) ) REMOVE_ENTITY( pSpawned ); }
if( !CMiscs.prepared ) { char File[ 257 ], Line[ 129 ], Game[ 25 ], Team[ 3 ];
CStrings.jetpack = ALLOC_STRING( "Jetpack" ); CStrings.rocket = ALLOC_STRING( "Rocket" ); CStrings.mine = ALLOC_STRING( "Mine" ); CStrings.pegon = ALLOC_STRING( "models/p_egon.mdl" ); CStrings.vegon = ALLOC_STRING( "models/v_egon.mdl" ); CStrings.pknife = ALLOC_STRING( "models/p_knife.mdl" ); CStrings.vknife = ALLOC_STRING( "models/zombie_plague/v_female_knife.mdl" ); CStrings.infotarget = ALLOC_STRING( "info_target" ); CStrings.tspawn = ALLOC_STRING( "info_player_deathmatch" ); CStrings.ctspawn = ALLOC_STRING( "info_player_start" ); CStrings.null = ALLOC_STRING( "" );
edict_t * pEntity = CREATE_NAMED_ENTITY( ALLOC_STRING( "hostage_entity" ) );
if( !FNullEnt( pEntity ) ) { SET_ORIGIN( pEntity, Vector( 8192, 8192, 8192 ) );
MDLL_Spawn( pEntity ); }
pEntity = CREATE_NAMED_ENTITY( ALLOC_STRING( "env_fog" ) );
if( !FNullEnt( pEntity ) ) { KeyValueData KVD;
KVD.szClassName = "env_fog"; KVD.szKeyName = "density"; KVD.szValue = "0.00086"; KVD.fHandled = 0;
MDLL_KeyValue( pEntity, &KVD );
KVD.szClassName = "env_fog"; KVD.szKeyName = "rendercolor"; KVD.szValue = "152 251 152"; KVD.fHandled = 0;
MDLL_KeyValue( pEntity, &KVD ); }
for(int i = 0; i < sizeof(MODELS_TO_PRECACHE) / sizeof(MODELS_TO_PRECACHE[0]); i++) { PRECACHE_MODEL(MODELS_TO_PRECACHE[i]); }
CSprites.fire = PRECACHE_MODEL( "sprites/xfireball3.spr" ); CSprites.flame = PRECACHE_MODEL( "sprites/ZP60/flame.spr" ); CSprites.smoke = PRECACHE_MODEL( "sprites/black_smoke3.spr" ); CSprites.trail = PRECACHE_MODEL( "sprites/laserbeam.spr" ); CSprites.glass = PRECACHE_MODEL( "models/glassgibs.mdl" ); CSprites.shockwave = PRECACHE_MODEL( "sprites/shockwave.spr" ); CSprites.explode = PRECACHE_MODEL( "sprites/zerogxplode.spr" ); CSprites.dot = PRECACHE_MODEL( "sprites/dot.spr" ); CSprites.beam = PRECACHE_MODEL( "sprites/beam_plasma.spr" ); CSprites.exp = PRECACHE_MODEL( "sprites/exp_plasma.spr" ); CSprites.skull = PRECACHE_MODEL( "sprites/skull.spr" ); CSprites.infect = PRECACHE_MODEL( "sprites/infection.spr" );
for(int i = 0; i < sizeof(SOUNDS_TO_PRECACHE) / sizeof(SOUNDS_TO_PRECACHE[0]); i++) { PRECACHE_SOUND(SOUNDS_TO_PRECACHE[i]); }
GET_GAME_DIR( Game );
snprintf( File, 256, "%s/addons/amxmodx/configs/spawns/%s_spawns.cfg", Game, STRING( gpGlobals -> mapname ) );
FILE * pFile = fopen( File, "r" );
if( pFile ) { float Origin[ 3 ], Angles[ 3 ]; int State = 0; char * pPiece;
while( !feof( pFile ) ) { Line[ 0 ] = '\0';
fgets( Line, 128, pFile );
trim( Line );
if( Line[ 0 ] != '/' && strlen( Line ) > 5 ) { State = 0; pPiece = strtok( Line, " " );
while( pPiece != NULL ) { switch( State ) { case TEAM: snprintf( Team, 2, "%s", pPiece );
break;
case ORIGIN_X: Origin[ 0 ] = atof( pPiece );
break;
case ORIGIN_Y: Origin[ 1 ] = atof( pPiece );
break;
case ORIGIN_Z: Origin[ 2 ] = atof( pPiece );
break;
case ANGLES_X: Angles[ 0 ] = atof( pPiece );
break;
case ANGLES_Y: Angles[ 1 ] = atof( pPiece );
break;
case ANGLES_Z: Angles[ 2 ] = atof( pPiece );
break; }
State++;
pPiece = strtok( NULL, " " ); }
edict_t * pEntity = CREATE_NAMED_ENTITY( Team[ 0 ] == 'T' ? CStrings.tspawn : CStrings.ctspawn );
if( !FNullEnt( pEntity ) ) { ( pEntity ) ->v.origin = Origin; ( pEntity ) -> v.angles = Angles; ( pEntity ) -> v.iuser4 = Spawn_Flag; } } }
fclose( pFile );
CMiscs.spawns = true; }
CMiscs.prepared = true; }
RETURN_META_VALUE( MRES_IGNORED, 0 ); }
void DispatchThink( edict_t * pEntity ) { if( pEntity -> v.iuser4 == Mine_Flag ) MF_ExecuteForward( CForwards.mine, static_cast < cell > ( EDICT_TO_INT( pEntity ) ), static_cast < cell > ( ( int ) pEntity -> v.health ) );
RETURN_META( MRES_IGNORED ); }
void DispatchTouch( edict_t * pTouched, edict_t * pToucher ) { const char * pTouchedClass = STRING( pTouched -> v.classname );
if( !strcmp( pTouchedClass, "Rocket" ) ) { MF_ExecuteForward( CForwards.rocket, static_cast < cell > ( EDICT_TO_INT( pTouched -> v.owner ) ), static_cast < cell > ( EDICT_TO_INT( pTouched ) ) );
if( !strcmp( "func_breakable", STRING( pToucher -> v.classname ) ) ) MDLL_Use( pToucher, pTouched );
for( int i = 0; i < 4; i++ ) { MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY ); WRITE_BYTE( TE_EXPLOSION ); WRITE_COORD( pTouched -> v.origin.x + RANDOM_LONG( -22, 22 ) ); WRITE_COORD( pTouched -> v.origin.y + RANDOM_LONG( -22, 22 ) ); WRITE_COORD( pTouched -> v.origin.z + RANDOM_LONG( -22, 22 ) ); WRITE_SHORT( CSprites.explode ); WRITE_BYTE( RANDOM_LONG( 15, 25 ) ); WRITE_BYTE( 15 ); WRITE_BYTE( 0 ); MESSAGE_END( ); }
for( int i = 0; i < 4; i++ ) { MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY ); WRITE_BYTE( TE_BEAMCYLINDER ); WRITE_COORD( pTouched -> v.origin.x ); WRITE_COORD( pTouched -> v.origin.y ); WRITE_COORD( pTouched -> v.origin.z ); WRITE_COORD( pTouched -> v.origin.x ); WRITE_COORD( pTouched -> v.origin.y ); WRITE_COORD( pTouched -> v.origin.z + ( 450 + ( i * 100 ) ) ); WRITE_SHORT( CSprites.shockwave ); WRITE_BYTE( 0 ); WRITE_BYTE( 0 ); WRITE_BYTE( 4 ); WRITE_BYTE( i * 40 ); WRITE_BYTE( 0 ); WRITE_BYTE( 121 ); WRITE_BYTE( 121 ); WRITE_BYTE( 121 ); WRITE_BYTE( RANDOM_LONG( 150, 240 ) ); WRITE_BYTE( 0 ); MESSAGE_END( ); }
REMOVE_ENTITY( pTouched ); }
else if( !strcmp( pTouchedClass, "Jetpack" ) ) { if( EDICT_TO_INT( pToucher ) > gpGlobals -> maxClients || EDICT_TO_INT( pToucher ) < 1 || !MF_IsPlayerAlive( EDICT_TO_INT( pToucher ) ) || CPlayers[ EDICT_TO_INT( pToucher ) ].jetpack || CPlayers[ EDICT_TO_INT( pToucher ) ].zombie ) RETURN_META( MRES_SUPERCEDE );
if( CPlayers[ EDICT_TO_INT( pToucher ) ].fuel < 2 ) CPlayers[ EDICT_TO_INT( pToucher ) ].fuel = 250;
CPlayers[ EDICT_TO_INT( pToucher ) ].jetpack = true;
CLIENT_COMMAND( pToucher, "weapon_knife\n" );
SetJetpack( pToucher );
g_engfuncs.pfnEmitSound( pToucher, CHAN_ITEM, "zombie_plague/gun_pickup.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
REMOVE_ENTITY( pTouched ); }
RETURN_META( MRES_IGNORED ); }
void ClientDisconnect( edict_t * pEntity ) { if( CPlayers[ EDICT_TO_INT( pEntity ) ].jetpack ) DropJetpack( EDICT_TO_INT( pEntity ), true );
CPlayers[ EDICT_TO_INT( pEntity ) ].frozen = false; CPlayers[ EDICT_TO_INT( pEntity ) ].fuel = 0; CPlayers[ EDICT_TO_INT( pEntity ) ].rocket = 0; CPlayers[ EDICT_TO_INT( pEntity ) ].monster = false; CPlayers[ EDICT_TO_INT( pEntity ) ].zombie = false;
RETURN_META( MRES_IGNORED ); }
void ServerDeactivate( void ) { CMiscs.prepared = false; CMiscs.spawns = false;
for( int i = 1; i <= gpGlobals -> maxClients; i++ ) { CPlayers[ i ].frozen = false; CPlayers[ i ].fuel = 0; CPlayers[ i ].rocket = 0; CPlayers[ i ].jetpack = false; CPlayers[ i ].monster = false; CPlayers[ i ].zombie = false; }
RETURN_META( MRES_IGNORED ); }
void ClientPutInServer( edict_t * pEntity ) { CPlayers[ EDICT_TO_INT( pEntity ) ].frozen = false; CPlayers[ EDICT_TO_INT( pEntity ) ].fuel = 0; CPlayers[ EDICT_TO_INT( pEntity ) ].rocket = 0; CPlayers[ EDICT_TO_INT( pEntity ) ].jetpack = false; CPlayers[ EDICT_TO_INT( pEntity ) ].monster = false; CPlayers[ EDICT_TO_INT( pEntity ) ].zombie = false;
RETURN_META( MRES_IGNORED ); }
void PlayerPreThink( edict_t * pPlayer ) { if( CPlayers[ EDICT_TO_INT( pPlayer ) ].frozen ) pPlayer -> v.velocity = Vector( 0, 0, 0 );
else if( CPlayers[ EDICT_TO_INT( pPlayer ) ].jetpack ) { int Button = pPlayer -> v.button; float Time = gpGlobals -> time;
if( Button & IN_ATTACK2 && CPlayers[ EDICT_TO_INT( pPlayer ) ].rocket < Time ) { edict_t * pEntity = CREATE_NAMED_ENTITY( CStrings.infotarget );
if( !FNullEnt( pEntity ) ) { SET_MODEL( pEntity, "models/rpgrocket.mdl" );
pEntity -> v.classname = CStrings.rocket; pEntity -> v.movetype = MOVETYPE_FLY; pEntity -> v.solid = SOLID_BBOX; pEntity -> v.effects = EF_LIGHT;
MAKE_VECTORS( pPlayer -> v.v_angle );
Vector Forward = gpGlobals -> v_forward * 64; Vector Velocity = gpGlobals -> v_forward * 1750; Vector Origin = pPlayer -> v.origin;
Origin.x += Forward.x, Origin.y += Forward.y;
SET_ORIGIN( pEntity, Origin );
pEntity -> v.velocity = Velocity;
Vector Angles; VEC_TO_ANGLES( Velocity, Angles );
pEntity -> v.angles = Angles, pEntity -> v.owner = pPlayer;
MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY ); WRITE_BYTE( TE_BEAMFOLLOW ); WRITE_SHORT( EDICT_TO_INT( pEntity ) ); WRITE_SHORT( CSprites.trail ); WRITE_BYTE( 25 ); WRITE_BYTE( 5 ); WRITE_BYTE( 191 ); WRITE_BYTE( 191 ); WRITE_BYTE( 191 ); WRITE_BYTE( RANDOM_LONG( 150, 240 ) ); MESSAGE_END( );
g_engfuncs.pfnEmitSound( pPlayer, CHAN_WEAPON, "zombie_plague/rocket_fire.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
CPlayers[ EDICT_TO_INT( pPlayer ) ].rocket = Time + 15; }
else CPlayers[ EDICT_TO_INT( pPlayer ) ].rocket = Time + 1; }
if( Button & IN_DUCK && Button & IN_JUMP && !( pPlayer -> v.flags & FL_ONGROUND ) && CPlayers[ EDICT_TO_INT( pPlayer ) ].fuel > 0 ) { Vector Velocity = pPlayer -> v.velocity; Vector Angles = pPlayer -> v.angles;
Angles.z = 0;
Vector Forward; g_engfuncs.pfnAngleVectors( Angles, Forward, 0, 0 );
Angles = Forward;
Angles.x *= 300, Angles.y *= 300;
Velocity.x = Angles.x, Velocity.y = Angles.y;
if( Velocity.z < 300 ) Velocity.z += 35;
pPlayer -> v.velocity = Velocity;
MESSAGE_BEGIN( MSG_BROADCAST, SVC_TEMPENTITY ); WRITE_BYTE( TE_SPRITE ); WRITE_COORD( pPlayer -> v.origin.x ); WRITE_COORD( pPlayer -> v.origin.y ); WRITE_COORD( pPlayer -> v.origin.z ); WRITE_SHORT( CSprites.fire ); WRITE_BYTE( 8 ); WRITE_BYTE( 25 ); MESSAGE_END( );
if( CPlayers[ EDICT_TO_INT( pPlayer ) ].fuel > 80 ) g_engfuncs.pfnEmitSound( pPlayer, CHAN_ITEM, "zombie_plague/jetpack_fly.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
else g_engfuncs.pfnEmitSound( pPlayer, CHAN_ITEM, "zombie_plague/jetpack_blow.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
CPlayers[ EDICT_TO_INT( pPlayer ) ].fuel -= 1; }
else if( !( Button & IN_DUCK ) && !( Button & IN_JUMP ) && CPlayers[ EDICT_TO_INT( pPlayer ) ].fuel < 250 ) CPlayers[ EDICT_TO_INT( pPlayer ) ].fuel += 0.5; }
if( pPlayer -> v.button & IN_USE && pPlayer -> v.velocity.z < 0 ) pPlayer -> v.velocity.z = -100;
RETURN_META( MRES_IGNORED ); }
void EmitSound( edict_t * pEntity, int Channel, const char * pSound, float Volume, float Attenuation, int Flags, int Pitch ) { if( EDICT_TO_INT( pEntity ) > 0 && EDICT_TO_INT( pEntity ) <= gpGlobals -> maxClients ) { if( CPlayers[ EDICT_TO_INT( pEntity ) ].jetpack && pSound[ 0 ] == 'w' && pSound[ 8 ] == 'k' ) RETURN_META( MRES_SUPERCEDE );
else if( CPlayers[ EDICT_TO_INT( pEntity ) ].zombie ) { if( pSound[ 7 ] == 'b' && pSound[ 8 ] == 'h' && pSound[ 9 ] == 'i' ) { if( CPlayers[ EDICT_TO_INT( pEntity ) ].monster ) g_engfuncs.pfnEmitSound( pEntity, Channel, g_pMonsterHitSounds[ RANDOM_LONG( 0, 2 ) ], Volume, Attenuation, Flags, Pitch );
else g_engfuncs.pfnEmitSound( pEntity, Channel, g_pZombieHitSounds[ RANDOM_LONG( 0, 4 ) ], Volume, Attenuation, Flags, Pitch );
RETURN_META( MRES_SUPERCEDE ); }
else if( pSound[ 7 ] == 'd' && ( ( pSound[ 8 ] == 'i' && pSound[ 9 ] == 'e' ) || ( pSound[ 8 ] == 'e' && pSound[ 9 ] == 'a' ) ) ) { g_engfuncs.pfnEmitSound( pEntity, Channel, g_pZombieDieSounds[ RANDOM_LONG( 0, 4 ) ], Volume, Attenuation, Flags, Pitch );
RETURN_META( MRES_SUPERCEDE ); } } }
RETURN_META( MRES_IGNORED ); }
void MessageBegin_Post( int, int Type, const float *, edict_t * ) { if( Type == CMessages.deathmsg && gpGlobals -> time > 6 ) { CMessages.message = DeathMsg;
CMessages.byte = 0; }
else if( Type == CMessages.hltv && gpGlobals -> time > 6 ) { CMessages.message = HLTV;
CMessages.byte = 0; }
RETURN_META( MRES_IGNORED ); }
void MessageEnd_Post( void ) { if( CMessages.message ) CMessages.message = 0;
RETURN_META( MRES_IGNORED ); }
void WriteByte_Post( int Byte ) { if( CMessages.message ) { switch( CMessages.message ) { case DeathMsg: if( ++CMessages.byte == 2 && CPlayers[ Byte ].jetpack ) DropJetpack( Byte, true );
break;
case HLTV: switch( ++CMessages.byte ) { case 1: CMessages.status = Byte;
break;
case 2: if( !CMessages.status && !Byte ) { edict_t * pEntity = NULL;
while( !FNullEnt( ( pEntity = FIND_ENTITY_BY_STRING( pEntity, "classname", "Rocket" ) ) ) ) REMOVE_ENTITY( pEntity );
pEntity = NULL;
while( !FNullEnt( ( pEntity = FIND_ENTITY_BY_STRING( pEntity, "classname", "Jetpack" ) ) ) ) REMOVE_ENTITY( pEntity );
pEntity = NULL;
while( !FNullEnt( ( pEntity = FIND_ENTITY_BY_STRING( pEntity, "classname", "Mine" ) ) ) ) REMOVE_ENTITY( pEntity ); }
break; }
break; } }
RETURN_META( MRES_IGNORED ); }
int RegUserMsg_Post( const char * pName, int ) { if( !strcmp( pName, "DeathMsg" ) ) CMessages.deathmsg = META_RESULT_ORIG_RET( int );
else if( !strcmp( pName, "HLTV" ) ) CMessages.hltv = META_RESULT_ORIG_RET( int );
else if( !strcmp( pName, "ScoreAttrib" ) ) CMessages.scoreattrib = META_RESULT_ORIG_RET( int );
else if( !strcmp( pName, "ScoreInfo" ) ) CMessages.scoreinfo = META_RESULT_ORIG_RET( int );
else if( !strcmp( pName, "TeamInfo" ) ) CMessages.teaminfo = META_RESULT_ORIG_RET( int );
else if( !strcmp( pName, "SayText" ) ) CMessages.saytext = META_RESULT_ORIG_RET( int );
else if( !strcmp( pName, "ScreenFade" ) ) CMessages.screenfade = META_RESULT_ORIG_RET( int );
else if( !strcmp( pName, "ScreenShake" ) ) CMessages.screenshake = META_RESULT_ORIG_RET( int );
else if( !strcmp( pName, "Crosshair" ) ) CMessages.crosshair = META_RESULT_ORIG_RET( int );
else if( !strcmp( pName, "HideWeapon" ) ) CMessages.hideweapon = META_RESULT_ORIG_RET( int );
else if( !strcmp( pName, "Damage" ) ) CMessages.damage = META_RESULT_ORIG_RET( int );
else if( !strcmp( pName, "BarTime" ) ) CMessages.bartime = META_RESULT_ORIG_RET( int ); else if( !strcmp( pName, "SetFOV" ) ) CMessages.fov = META_RESULT_ORIG_RET( int );
RETURN_META_VALUE( MRES_IGNORED, 0 ); }
void SetModel_Post( edict_t * pEntity, const char * pModel ) { if( !strcmp( STRING( pEntity -> v.classname ), "weaponbox" ) ) pEntity -> v.nextthink = gpGlobals -> time + 0.025;
else if( pEntity -> v.owner && pModel[ 7 ] == 'w' && pModel[ 8 ] == '_' ) { int Weapon = 0;
switch( pModel[ 9 ] ) { case 'h': Weapon = CSW_HEGRENADE;
break;
case 'f': if( pModel[ 10 ] == 'l' ) Weapon = CSW_FLASHBANG;
break;
case 's': if( pModel[ 10 ] == 'm' ) Weapon = CSW_SMOKEGRENADE;
break; }
if( Weapon ) { MF_ExecuteForward( CForwards.grenade, static_cast < cell > ( EDICT_TO_INT( pEntity -> v.owner ) ), static_cast < cell > ( EDICT_TO_INT( pEntity ) ), static_cast < cell > ( Weapon ) ); } }
RETURN_META( MRES_IGNORED ); }
void ClientKill( edict_t * ) { RETURN_META( MRES_SUPERCEDE ); }
|