void CMomentumPlayer::Spawn() { SetModel(ENTITY_MODEL); BaseClass::Spawn(); AddFlag(FL_GODMODE); // do this here because we can't get a local player in the timer class ConVarRef gm("mom_gamemode"); switch (gm.GetInt()) { case MOMGM_BHOP: case MOMGM_SURF: case MOMGM_UNKNOWN: default: EnableAutoBhop(); break; case MOMGM_SCROLL: DisableAutoBhop(); break; } // Reset all bool gameevents IGameEvent *mapZoneEvent = gameeventmanager->CreateEvent("player_inside_mapzone"); IGameEvent *runSaveEvent = gameeventmanager->CreateEvent("run_save"); IGameEvent *timerStartEvent = gameeventmanager->CreateEvent("timer_started"); IGameEvent *practiceModeEvent = gameeventmanager->CreateEvent("practice_mode"); if (mapZoneEvent) { mapZoneEvent->SetBool("inside_startzone", false); mapZoneEvent->SetBool("inside_endzone", false); mapZoneEvent->SetBool("map_finished", false); mapZoneEvent->SetInt("current_stage", 0); mapZoneEvent->SetInt("stage_ticks", 0); gameeventmanager->FireEvent(mapZoneEvent); } if (runSaveEvent) { runSaveEvent->SetBool("run_saved", false); runSaveEvent->SetBool("run_posted", false); gameeventmanager->FireEvent(runSaveEvent); } if (timerStartEvent) { timerStartEvent->SetBool("timer_isrunning", false); gameeventmanager->FireEvent(timerStartEvent); } if (practiceModeEvent) { practiceModeEvent->SetBool("has_practicemode", false); gameeventmanager->FireEvent(practiceModeEvent); } RegisterThinkContext("THINK_EVERY_TICK"); RegisterThinkContext("CURTIME"); RegisterThinkContext("THINK_AVERAGE_STATS"); RegisterThinkContext("CURTIME_FOR_START"); SetContextThink(&CMomentumPlayer::UpdateRunStats, gpGlobals->curtime + gpGlobals->interval_per_tick, "THINK_EVERY_TICK"); SetContextThink(&CMomentumPlayer::CheckForBhop, gpGlobals->curtime, "CURTIME"); SetContextThink(&CMomentumPlayer::CalculateAverageStats, gpGlobals->curtime + AVERAGE_STATS_INTERVAL, "THINK_AVERAGE_STATS"); SetContextThink(&CMomentumPlayer::LimitSpeedInStartZone, gpGlobals->curtime, "CURTIME_FOR_START"); SetNextThink(gpGlobals->curtime); }
void CFR_Player::Spawn() { RegisterThinkContext("NectarContext"); SetContextThink(&CFR_Player::NectarThink, gpGlobals->curtime, "NectarContext"); BaseClass::Spawn(); }
//==================================================================== // Creación en el mapa //==================================================================== void CAP_PlayerInfected::Spawn() { ConVarRef infected_health("sk_infected_health"); int iMaxHealth = infected_health.GetInt() + RandomInt( 1, 5 ); CB_MeleeCharacter::SetOuter( this ); BaseClass::Spawn(); // El Director será el responsable de crearnos // Mientras tanto seremos invisibles y no nos moveremos AddEffects( EF_NODRAW ); AddFlag( FL_FREEZING ); SetCollisionGroup( COLLISION_GROUP_NONE ); m_takedamage = DAMAGE_NO; // Esto hará que el Director lo tome como uno de sus hijos SetName( AllocPooledString(DIRECTOR_CHILD_NAME) ); // Seleccionamos un color para nuestra ropa SetClothColor(); // Establecemos la salud SetMaxHealth( iMaxHealth ); SetHealth( iMaxHealth ); // Más información m_iNextIdleSound = IDLE_SOUND_INTERVAL; m_iNextAttack = ATTACK_INTERVAL; // Solicitamos un lugar para el Spawn RegisterThinkContext( "RequestDirectorSpawn" ); SetContextThink( &CAP_PlayerInfected::RequestDirectorSpawn, gpGlobals->curtime, "RequestDirectorSpawn" ); }
void CMomentumPlayer::Spawn() { SetModel(ENTITY_MODEL); SetBodygroup(1, 11);//BODY_PROLATE_ELLIPSE // BASECLASS SPAWN MUST BE AFTER SETTING THE MODEL, OTHERWISE A NULL HAPPENS! BaseClass::Spawn(); AddFlag(FL_GODMODE); RemoveSolidFlags(FSOLID_NOT_SOLID); // this removes the flag that was added while switching to spectator mode which // prevented the player from activating triggers // do this here because we can't get a local player in the timer class ConVarRef gm("mom_gamemode"); switch (gm.GetInt()) { case MOMGM_BHOP: case MOMGM_SURF: case MOMGM_UNKNOWN: default: EnableAutoBhop(); break; case MOMGM_SCROLL: DisableAutoBhop(); break; } // Reset all bool gameevents IGameEvent *runSaveEvent = gameeventmanager->CreateEvent("run_save"); IGameEvent *runUploadEvent = gameeventmanager->CreateEvent("run_upload"); IGameEvent *timerStartEvent = gameeventmanager->CreateEvent("timer_state"); m_RunData.m_bIsInZone = false; m_RunData.m_bMapFinished = false; m_RunData.m_iCurrentZone = 0; m_bHasPracticeMode = false; ResetRunStats(); if (runSaveEvent) { runSaveEvent->SetBool("run_saved", false); gameeventmanager->FireEvent(runSaveEvent); } if (runUploadEvent) { runUploadEvent->SetBool("run_posted", false); runUploadEvent->SetString("web_msg", ""); gameeventmanager->FireEvent(runUploadEvent); } if (timerStartEvent) { timerStartEvent->SetInt("ent", entindex()); timerStartEvent->SetBool("is_running", false); gameeventmanager->FireEvent(timerStartEvent); } // Linear/etc map g_Timer->DispatchMapInfo(); RegisterThinkContext("THINK_EVERY_TICK"); RegisterThinkContext("CURTIME"); RegisterThinkContext("THINK_AVERAGE_STATS"); RegisterThinkContext("CURTIME_FOR_START"); RegisterThinkContext("TWEEN"); SetContextThink(&CMomentumPlayer::UpdateRunStats, gpGlobals->curtime + gpGlobals->interval_per_tick, "THINK_EVERY_TICK"); SetContextThink(&CMomentumPlayer::CheckForBhop, gpGlobals->curtime, "CURTIME"); SetContextThink(&CMomentumPlayer::CalculateAverageStats, gpGlobals->curtime + AVERAGE_STATS_INTERVAL, "THINK_AVERAGE_STATS"); SetContextThink(&CMomentumPlayer::LimitSpeedInStartZone, gpGlobals->curtime, "CURTIME_FOR_START"); SetContextThink(&CMomentumPlayer::TweenSlowdownPlayer, gpGlobals->curtime, "TWEEN"); SetNextThink(gpGlobals->curtime); DevLog("Finished spawn!\n"); }