The sprinting code is untouched.
Yes, I do respawn the players. I'd like to note that I've only seen
this happen to living players.. due to the fact that the game crashes
when a player dies in debug mode -- it has an invalid velocity upon
death for some reason I've yet to debug out. The code for resetting the
world is as follows (this is taken from
http://www.sourcewiki.org/wiki/index.php/Resetting_the_Map, with some
changes):
void CHL2MPRules::ResetWorld() {
m_bInRestart = true;
CBaseEntity *pEnt, *tmpEnt;
pEnt = gEntList.FirstEnt();
CBaseCombatWeapon *weap;
string name;
while (pEnt != NULL) {
name = pEnt->GetClassname();
if( name.rfind("weapon_") != string::npos ||
name.rfind("gear_") != string::npos ) {
weap = (CBaseCombatWeapon *)pEnt;
if( weap && weap->GetOwner() ) { // It's equipped, so
save it
pEnt = gEntList.NextEnt( pEnt );
}
else {
tmpEnt = gEntList.NextEnt( pEnt );
UTIL_Remove( pEnt );
pEnt = tmpEnt;
}
}
else if (filter.ShouldCreateEntity (pEnt->GetClassname() ) )
{
// if we don't need to keep the entity, we remove it from
the list
tmpEnt = gEntList.NextEnt (pEnt);
UTIL_Remove (pEnt);
pEnt = tmpEnt;
} else
{
// if we need to keep it, we move on to the next entity
pEnt = gEntList.NextEnt (pEnt);
}
}
gEntList.CleanupDeleteList();
// with any unrequired entities removed, we use
MapEntity_ParseAllEntities to reparse the map entities
// this in effect causes them to spawn back to their normal
position.
MapEntity_ParseAllEntities( engine->GetMapEntitiesString(),
&filter, true);
// print a message to all clients telling them that the round is
restarting
UTIL_ClientPrintAll( HUD_PRINTCENTER, "Round restarting..." );
g_pLastSpawn = NULL;
// now we've got all our entities back in place and looking
pretty, we need to respawn all the players
for (int i = 1; i <= gpGlobals->maxClients; i++ )
{
CBaseEntity *plr = UTIL_PlayerByIndex( i );
if ( plr )
{
plr->Spawn();
} else {
break;
}
}
m_flIntermissionEndTime = 0.0f;
m_bInRestart = false;
}
m_bInRestart is only used for checking when the player is allowed to
spawn, to make sure they don't respawn in the middle of a round.
Thanks,
-- Andrew Orner
Jason Houston wrote:
--
[ Picked text/plain from multipart/alternative ]
Can you paste a snippet, we can't see how everything interacts.
Whatever needs reseting would probably be reset when you respawn the
players(you do that, right? not just teleport them?). If not, take a look at
all the checks on those things, and see what might not be reset, then add
something to your spawn or whatever function to reset them.
But yes, paste a snippet, it's not like we want to steal your code :) The
resetting function and your sprint ones would be nice.
--
Draco
--
_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please
visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders
_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please
visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders