//========================================================= //========================================================= edict_t *CGameRules :: GetPlayerSpawnSpot( CBasePlayer *pPlayer ) { edict_t *pentSpawnSpot = EntSelectSpawnPoint( pPlayer ); pPlayer->pev->origin = VARS(pentSpawnSpot)->origin + Vector(0,0,1); pPlayer->pev->v_angle = g_vecZero; pPlayer->pev->velocity = g_vecZero; pPlayer->pev->angles = VARS(pentSpawnSpot)->angles; pPlayer->pev->punchangle = g_vecZero; pPlayer->pev->fixangle = TRUE; return pentSpawnSpot; }
/* <ad89d> ../cstrike/dlls/gamerules.cpp:59 */ edict_t *CGameRules::__MAKE_VHOOK(GetPlayerSpawnSpot)(CBasePlayer *pPlayer) { edict_t *pentSpawnSpot = EntSelectSpawnPoint(pPlayer); pPlayer->pev->origin = VARS(pentSpawnSpot)->origin;// + Vector(0, 0, 1); pPlayer->pev->origin.z += 1; pPlayer->pev->v_angle = g_vecZero; pPlayer->pev->velocity = g_vecZero; pPlayer->pev->angles = VARS(pentSpawnSpot)->angles; pPlayer->pev->punchangle = g_vecZero; pPlayer->pev->fixangle = 1; return pentSpawnSpot; }
edict_t *CGameRules::GetPlayerSpawnSpot(CBasePlayer *pPlayer) { // gat valid spawn point edict_t *pentSpawnSpot = EntSelectSpawnPoint(pPlayer); // Move the player to the place it said. pPlayer->pev->origin = VARS(pentSpawnSpot)->origin + Vector(0, 0, 1); pPlayer->pev->v_angle = g_vecZero; pPlayer->pev->velocity = g_vecZero; pPlayer->pev->angles = VARS(pentSpawnSpot)->angles; pPlayer->pev->punchangle = g_vecZero; pPlayer->pev->fixangle = 1; return pentSpawnSpot; }
//========================================================= //========================================================= edict_t *CGameRules :: GetPlayerSpawnSpot( CBasePlayer *pPlayer ) { edict_t *pentSpawnSpot = EntSelectSpawnPoint( pPlayer ); pPlayer->pev->origin = VARS(pentSpawnSpot)->origin + Vector( 0, 0, 1 ); pPlayer->pev->viewangles = g_vecZero; pPlayer->pev->velocity = g_vecZero; pPlayer->pev->angles = VARS( pentSpawnSpot )->angles; pPlayer->pev->punchangle = g_vecZero; pPlayer->pev->fixangle = TRUE; if( pentSpawnSpot->v.spawnflags & 1 ) // the START WITH SUIT flag { g_startSuit = TRUE; } return pentSpawnSpot; }
//----------------------------------------------------------------------------- // Purpose: Move the player to a spectating position //----------------------------------------------------------------------------- void CDiscArena::MoveToSpectator( CBasePlayer *pPlayer ) { // Find the spectator spawn position CBaseEntity *pSpot = UTIL_FindEntityByClassname( NULL, "info_player_spectator"); if ( pSpot ) { pPlayer->StartObserver( pSpot->pev->origin, pSpot->pev->angles); } else { // Find any spawn point edict_t *pentSpawnSpot = EntSelectSpawnPoint( pPlayer ); pPlayer->StartObserver( VARS(pentSpawnSpot)->origin, VARS(pentSpawnSpot)->angles); } pPlayer->pev->team = 0; pPlayer->Observer_SetMode( OBS_LOCKEDVIEW ); }
//========================================================= //========================================================= edict_t *CGameRules :: GetPlayerSpawnSpot( CBasePlayer *pPlayer ) { edict_t *pentSpawnSpot = EntSelectSpawnPoint( pPlayer ); CBaseEntity *pSpawnSpot = CBaseEntity::Instance( pentSpawnSpot ); pPlayer->SetAbsOrigin( pSpawnSpot->GetAbsOrigin() + Vector(0,0,1) ); pPlayer->pev->v_angle = g_vecZero; pPlayer->SetAbsVelocity( g_vecZero ); pPlayer->SetAbsAngles( pSpawnSpot->GetAbsAngles() ); pPlayer->pev->punchangle = g_vecZero; pPlayer->pev->fixangle = TRUE; if( pSpawnSpot->pev->spawnflags & 1 ) // the START WITH SUIT flag { pPlayer->pev->weapons |= BIT( WEAPON_SUIT ); } return pentSpawnSpot; }
/* <ad89d> ../cstrike/dlls/gamerules.cpp:59 */ edict_t *CGameRules::__MAKE_VHOOK(GetPlayerSpawnSpot)(CBasePlayer *pPlayer) { edict_t *pentSpawnSpot = EntSelectSpawnPoint(pPlayer); #if HOOK_GAMEDLL // TODO: fix test demo pPlayer->pev->origin = VARS(pentSpawnSpot)->origin; pPlayer->pev->origin.z += 1; #else pPlayer->pev->origin = VARS(pentSpawnSpot)->origin + Vector(0, 0, 1); #endif // HOOK_GAMEDLL pPlayer->pev->v_angle = g_vecZero; pPlayer->pev->velocity = g_vecZero; pPlayer->pev->angles = VARS(pentSpawnSpot)->angles; pPlayer->pev->punchangle = g_vecZero; pPlayer->pev->fixangle = 1; return pentSpawnSpot; }
/* <ad89d> ../cstrike/dlls/gamerules.cpp:59 */ edict_t *CGameRules::__MAKE_VHOOK(GetPlayerSpawnSpot)(CBasePlayer *pPlayer) { // gat valid spawn point edict_t *pentSpawnSpot = EntSelectSpawnPoint(pPlayer); // Move the player to the place it said. #ifndef PLAY_GAMEDLL pPlayer->pev->origin = VARS(pentSpawnSpot)->origin + Vector(0, 0, 1); #else // TODO: fix test demo pPlayer->pev->origin = VARS(pentSpawnSpot)->origin; pPlayer->pev->origin.z += 1; #endif // PLAY_GAMEDLL pPlayer->pev->v_angle = g_vecZero; pPlayer->pev->velocity = g_vecZero; pPlayer->pev->angles = VARS(pentSpawnSpot)->angles; pPlayer->pev->punchangle = g_vecZero; pPlayer->pev->fixangle = 1; return pentSpawnSpot; }
// Use CMD_ARGV, CMD_ARGV, and CMD_ARGC to get pointers the character string command. void ClientCommand( edict_t *pEntity ) { const char *pcmd = CMD_ARGV(0); const char *pstr; // Is the client spawned yet? if ( !pEntity->pvPrivateData ) return; entvars_t *pev = &pEntity->v; if ( FStrEq(pcmd, "say" ) ) { Host_Say( pEntity, 0 ); } else if ( FStrEq(pcmd, "say_team" ) ) { Host_Say( pEntity, 1 ); } else if ( FStrEq(pcmd, "spectate" ) ) { // Prevent this is the cvar is set if ( allow_spectators.value ) { CBasePlayer *pPlayer = GetClassPtr((CBasePlayer *)pev); edict_t *pentSpawnSpot = EntSelectSpawnPoint( pPlayer ); pPlayer->StartObserver( VARS(pentSpawnSpot)->origin, VARS(pentSpawnSpot)->angles); } } else if ( FStrEq(pcmd, "ob_mode" ) ) { CBasePlayer *pPlayer = GetClassPtr((CBasePlayer *)pev); pPlayer->ObserverInput_ChangeMode(); } else if ( FStrEq(pcmd, "ob_prev" ) ) { CBasePlayer *pPlayer = GetClassPtr((CBasePlayer *)pev); pPlayer->ObserverInput_PrevPlayer(); } else if ( FStrEq(pcmd, "ob_next" ) ) { CBasePlayer *pPlayer = GetClassPtr((CBasePlayer *)pev); pPlayer->ObserverInput_NextPlayer(); } else if ( FStrEq(pcmd, "give" ) ) { if ( g_flWeaponCheat != 0.0) { int iszItem = ALLOC_STRING( CMD_ARGV(1) ); // Make a copy of the classname GetClassPtr((CBasePlayer *)pev)->GiveNamedItem( STRING(iszItem) ); } } else if ( FStrEq(pcmd, "drop" ) ) { // player is dropping an item. GetClassPtr((CBasePlayer *)pev)->DropPlayerItem((char *)CMD_ARGV(1)); } else if ( FStrEq(pcmd, "fov" ) ) { if ( g_flWeaponCheat && CMD_ARGC() > 1) { GetClassPtr((CBasePlayer *)pev)->m_iFOV = atoi( CMD_ARGV(1) ); } else { CLIENT_PRINTF( pEntity, print_console, UTIL_VarArgs( "\"fov\" is \"%d\"\n", (int)GetClassPtr((CBasePlayer *)pev)->m_iFOV ) ); } } else if ( FStrEq(pcmd, "use" ) ) { GetClassPtr((CBasePlayer *)pev)->SelectItem((char *)CMD_ARGV(1)); } else if (((pstr = strstr(pcmd, "weapon_")) != NULL) && (pstr == pcmd)) { GetClassPtr((CBasePlayer *)pev)->SelectItem(pcmd); } else if (FStrEq(pcmd, "lastinv" )) { GetClassPtr((CBasePlayer *)pev)->SelectLastItem(); } else if ( g_pGameRules->ClientCommand( GetClassPtr((CBasePlayer *)pev), pcmd ) ) { // MenuSelect returns true only if the command is properly handled, so don't print a warning } else { // tell the user they entered an unknown command char command[128]; // check the length of the command (prevents crash) // max total length is 192 ...and we're adding a string below (#Game_unknown_command) strncpy( command, pcmd, 127 ); command[127] = '\0'; ClientPrint( &pEntity->v, HUD_PRINTCONSOLE, "#Game_unknown_command", command ); } }