000
27.09.2006, 20:38
RikkuZooo
|
Hallo, ich hab mal ne frage und zwar wenn ich einen Bot in mein Server lade dann und dann denn bot um bringe dann Spwant der nicht mehr kann mir mal da einer helfen achso und der rennt die ganze zeit nur mit der Grafy rum das muss man doch auch andern können oder hier der code von bot:
#include "cbase.h" #include "player.h" #include "hl2mp_player.h" #include "in_buttons.h" #include "movehelper_server.h"
void ClientPutInServer( edict_t *pEdict, const char *playername ); void Bot_Think( CHL2MP_Player *pBot );
#ifdef _BOT_IMPL
ConVar bot_forcefireweapon( "bot_forcefireweapon", "", 0, "Force bots with the specified weapon to fire." ); ConVar bot_forceattack2( "bot_forceattack2", "0", 0, "When firing, use attack2." ); ConVar bot_forceattackon( "bot_forceattackon", "0", 0, "When firing, don't tap fire, hold it down." ); ConVar bot_flipout( "bot_flipout", "0", 0, "When on, all bots fire their guns." ); ConVar bot_defend( "bot_defend", "0", 0, "Set to a team number, and that team will all keep their combat shields raised." ); ConVar bot_changeclass( "bot_changeclass", "0", 0, "Force all bots to change to the specified class." ); ConVar bot_zombie( "bot_zombie", "0", 0, "Brraaaaaiiiins." ); static ConVar bot_mimic( "bot_mimic", "0", 0, "Bot uses usercmd of player by index." ); static ConVar bot_mimic_yaw_offset( "bot_mimic_yaw_offset", "0", 0, "Offsets the bot yaw." ); ConVar bot_attack( "bot_attack", "1", 0, "Shoot!" );
ConVar bot_sendcmd( "bot_sendcmd", "", 0, "Forces bots to send the specified command." );
ConVar bot_crouch( "bot_crouch", "0", 0, "Bot crouches" );
static int BotNumber = 1; static int g_iNextBotTeam = -1; static int g_iNextBotClass = -1;
typedef struct { bool backwards;
float nextturntime; bool lastturntoright;
float nextstrafetime; float sidemove;
QAngle forwardAngle; QAngle lastAngles; float m_flJoinTeamTime; int m_WantedTeam; int m_WantedClass; } botdata_t;
static botdata_t g_BotData[ MAX_PLAYERS ];
CBasePlayer *BotPutInServer( bool bFrozen, int iTeam ) { g_iNextBotTeam = iTeam;
char botname[ 64 ]; Q_snprintf( botname, sizeof( botname ), "Bot%02i", BotNumber );
edict_t *pEdict = engine->CreateFakeClient( botname );
if (!pEdict) { Msg( "Failed to create Bot.\n"); return NULL; }
CHL2MP_Player *pPlayer = ((CHL2MP_Player *)CBaseEntity::Instance( pEdict )); pPlayer->ClearFlags(); pPlayer->AddFlag( FL_CLIENT | FL_FAKECLIENT );
if ( bFrozen ) pPlayer->AddEFlags( EFL_BOT_FROZEN );
BotNumber++;
g_BotData[pPlayer->entindex()-1].m_WantedTeam = iTeam; g_BotData[pPlayer->entindex()-1].m_flJoinTeamTime = gpGlobals->curtime + 0.3;
return pPlayer; }
void Bot_RunAll( void ) { for ( int i = 1; i <= gpGlobals->maxClients; i++ ) { CHL2MP_Player *pPlayer = ToHL2MPPlayer( UTIL_PlayerByIndex( i ) );
if ( pPlayer && (pPlayer->GetFlags() & FL_FAKECLIENT) ) { Bot_Think( pPlayer ); } } }
bool RunMimicCommand( CUserCmd& cmd ) { if ( bot_mimic.GetInt() <= 0 ) return false;
if ( bot_mimic.GetInt() > gpGlobals->maxClients ) return false;
CBasePlayer *pPlayer = UTIL_PlayerByIndex( bot_mimic.GetInt() ); if ( !pPlayer ) return false;
if ( !pPlayer->GetLastUserCommand() ) return false;
cmd = *pPlayer->GetLastUserCommand(); cmd.viewangles[YAW] += bot_mimic_yaw_offset.GetFloat();
return true; }
static void RunPlayerMove( CHL2MP_Player *fakeclient, const QAngle& viewangles, float forwardmove, float sidemove, float upmove, unsigned short buttons, byte impulse, float frametime ) { if ( !fakeclient ) return;
CUserCmd cmd;
float flOldFrametime = gpGlobals->frametime; float flOldCurtime = gpGlobals->curtime;
float flTimeBase = gpGlobals->curtime + gpGlobals->frametime - frametime; fakeclient->SetTimeBase( flTimeBase );
Q_memset( &cmd, 0, sizeof( cmd ) );
if ( !RunMimicCommand( cmd ) && !bot_zombie.GetBool() ) { VectorCopy( viewangles, cmd.viewangles ); cmd.forwardmove = forwardmove; cmd.sidemove = sidemove; cmd.upmove = upmove; cmd.buttons = buttons; cmd.impulse = impulse; cmd.random_seed = random->RandomInt( 0, 0x7fffffff ); }
if( bot_crouch.GetInt() ) cmd.buttons |= IN_DUCK;
if ( bot_attack.GetBool() ) cmd.buttons |= IN_ATTACK;
MoveHelperServer()->SetHost( fakeclient ); fakeclient->PlayerRunCommand( &cmd, MoveHelperServer() );
fakeclient->SetLastUserCommand( cmd );
fakeclient->pl.fixangle = FIXANGLE_NONE;
gpGlobals->frametime = flOldFrametime; gpGlobals->curtime = flOldCurtime; }
void Bot_Think( CHL2MP_Player *pBot ) { pBot->AddFlag( FL_FAKECLIENT );
botdata_t *botdata = &g_BotData[ ENTINDEX( pBot->edict() ) - 1 ];
QAngle vecViewAngles; float forwardmove = 0.0; float sidemove = botdata->sidemove; float upmove = 0.0; unsigned short buttons = 0; byte impulse = 0; float frametime = gpGlobals->frametime;
vecViewAngles = pBot->GetLocalAngles();
--
AirChina Mobile
|