Skip to content

Commit

Permalink
Use info_player_deathmatch entity if possible
Browse files Browse the repository at this point in the history
* also add some info command to tell if the map can dm or not
  • Loading branch information
nullsystem committed Sep 16, 2024
1 parent ef05825 commit d2d8667
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 3 deletions.
18 changes: 18 additions & 0 deletions mp/src/game/server/neo/neo_dm_spawn.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -160,9 +160,27 @@ static void DMSpawnComCallbackTeleportNext()
}
}

static void DMSpawnComCallbackMapinfo()
{
char szCurrentMapName[MAX_MAP_NAME + 1];
V_strcpy_safe(szCurrentMapName, STRING(gpGlobals->mapname));

int iEntCount = 0;
CBaseEntity *entDMSpawn = nullptr;
while ((entDMSpawn = gEntList.FindEntityByClassname(entDMSpawn, "info_player_deathmatch")))
{
++iEntCount;
}

Msg("Deathmatch spawns for: %s\ndmspawn spawns count: %d\ninfo_player_deathmatch count: %d\nAllow deathmatch: %s",
szCurrentMapName, gDMSpawnLocs.Size(), iEntCount, (iEntCount > 0 || !gDMSpawnLocs.IsEmpty()) ? "YES" : "NO");
}

ConCommand neo_sv_dmspawn_create("neo_sv_dmspawn_create", &DMSpawnComCallbackCreate, "", FCVAR_USERINFO | FCVAR_CHEAT);
ConCommand neo_sv_dmspawn_removeall("neo_sv_dmspawn_removeall", &DMSpawnComCallbackRemoveAll, "", FCVAR_USERINFO | FCVAR_CHEAT);
ConCommand neo_sv_dmspawn_printlocs("neo_sv_dmspawn_printlocs", &DMSpawnComCallbackPrintLocs, "", FCVAR_USERINFO | FCVAR_CHEAT);
ConCommand neo_sv_dmspawn_save("neo_sv_dmspawn_save", &DMSpawnComCallbackSave, "", FCVAR_USERINFO | FCVAR_CHEAT);
ConCommand neo_sv_dmspawn_load("neo_sv_dmspawn_load", &DMSpawnComCallbackLoad, "", FCVAR_USERINFO | FCVAR_CHEAT);
ConCommand neo_sv_dmspawn_teleportnext("neo_sv_dmspawn_teleportnext", &DMSpawnComCallbackTeleportNext, "", FCVAR_USERINFO | FCVAR_CHEAT);
ConCommand neo_sv_dmspawn_mapinfo("neo_sv_dmspawn_mapinfo", &DMSpawnComCallbackMapinfo, "", FCVAR_USERINFO);
ConVar neo_sv_dmspawn_useent("neo_sv_dmspawn_useent", "0", FCVAR_USERINFO);
13 changes: 10 additions & 3 deletions mp/src/game/server/neo/neo_player.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ CNEOGameRulesProxy* neoGameRules;
extern CBaseEntity *g_pLastSpawn;

extern ConVar neo_sv_ignore_wep_xp_limit;
extern ConVar neo_sv_dmspawn_useent;

ConVar sv_neo_can_change_classes_anytime("sv_neo_can_change_classes_anytime", "0", FCVAR_CHEAT | FCVAR_REPLICATED, "Can players change classes at any moment, even mid-round?",
true, 0.0f, true, 1.0f);
Expand Down Expand Up @@ -2030,14 +2031,20 @@ CBaseEntity* CNEO_Player::EntSelectSpawnPoint( void )
edict_t *player = edict();
#endif

// TODO (nullsystem): If mappers want to set the DM spawn: info_player_dm?

CBaseEntity *pSpot = NULL;
CBaseEntity *pLastSpawnPoint = g_pLastSpawn;
const char *pSpawnpointName = "info_player_start";
const auto alternate = NEORules()->roundAlternate();

if (NEORules()->IsTeamplay())
// NEO TODO (nullsystem): Teamplay vs non-teamplay
// info_player_deathmatch is from HL2MP, but maps can utilize HL2MP and this entity anyway
const bool bIsTeamplay = NEORules()->IsTeamplay();
if (neo_sv_dmspawn_useent.GetBool() || !bIsTeamplay)
{
pSpawnpointName = "info_player_deathmatch";
pLastSpawnPoint = g_pLastSpawn;
}
else
{
if (GetTeamNumber() == TEAM_JINRAI)
{
Expand Down

0 comments on commit d2d8667

Please sign in to comment.