func_buyzone: Now print the titles.txt message hint for telling you to buy stuff.

This commit is contained in:
Marco Cawthorne 2023-03-28 15:28:24 -07:00
parent 0704d3e7fd
commit 92497583a1
Signed by: eukara
GPG Key ID: CE2032F0A2882A22
4 changed files with 63 additions and 39 deletions

View File

@ -83,4 +83,9 @@ func_buyzone::Touch(entity eToucher)
if (team == 0 || team == pl.team) if (team == 0 || team == pl.team)
pl.gflags |= GF_BUYZONE; pl.gflags |= GF_BUYZONE;
if (pl.m_buyMessage == false) {
env_message_single(pl, "Hint_press_buy_to_purchase");
pl.m_buyMessage = true;
}
} }

View File

@ -36,8 +36,8 @@ class CSGameRules:CGameRules
class CSSingleplayerRules:CSGameRules class CSSingleplayerRules:CSGameRules
{ {
/* client */ /* client */
virtual void(NSClientPlayer) PlayerSpawn; virtual void PlayerSpawn(NSClientPlayer);
virtual void(NSClientPlayer) PlayerDeath; virtual void PlayerDeath(NSClientPlayer);
}; };
class CSMultiplayerRules:CSGameRules class CSMultiplayerRules:CSGameRules
@ -48,40 +48,42 @@ class CSMultiplayerRules:CSGameRules
int m_iEscapedTerrorists; int m_iEscapedTerrorists;
int m_iSwapTeamRoundCounter; int m_iSwapTeamRoundCounter;
void() CSMultiplayerRules; void CSMultiplayerRules(void);
virtual void(void) InitPostEnts; virtual void InitPostEnts(void);
virtual void(void) FrameStart; virtual void FrameStart(void);
virtual void(NSClientPlayer) PlayerDisconnect; virtual void PlayerDisconnect(NSClientPlayer);
virtual void(NSClientPlayer) PlayerSpawn; virtual void PlayerSpawn(NSClientPlayer);
virtual void(NSClientPlayer) PlayerPreFrame; virtual void PlayerPreFrame(NSClientPlayer);
virtual void(NSClientPlayer) PlayerDeath; virtual void PlayerDeath(NSClientPlayer);
virtual int(int) MaxItemPerSlot; virtual int MaxItemPerSlot(int);
virtual bool(NSClientPlayer, string) ConsoleCommand; virtual bool ConsoleCommand(NSClientPlayer, string);
/* CS specific */ /* CS specific */
virtual void(void) CreateRescueZones; virtual void CreateRescueZones(void);
virtual void(void) CreateCTBuyzones; virtual void CreateCTBuyzones(void);
virtual void(void) CreateTBuyzones; virtual void CreateTBuyzones(void);
virtual void(float, int) TimerBegin; virtual void TimerBegin(float, int);
virtual void(void) TimerUpdate; virtual void TimerUpdate(void);
virtual bool(NSClientPlayer) BuyingPossible; virtual bool BuyingPossible(NSClientPlayer);
virtual void(int, int, int) RoundOver; virtual void RoundOver(int, int, int);
virtual void(int) RestartRound; virtual void RestartRound(int);
virtual void(NSClientPlayer) DeathCheck; virtual void DeathCheck(NSClientPlayer);
virtual void(NSClientPlayer) MakeBomber; virtual void MakeBomber(NSClientPlayer);
virtual void(NSClientPlayer) MakeVIP; virtual void MakeVIP(NSClientPlayer);
virtual void(void) CountPlayers; virtual void CountPlayers(void);
virtual void(void) SwitchTeams; virtual void SwitchTeams(void);
virtual void(void) TimeOut; virtual void TimeOut(void);
virtual bool(void) IsTeamplay; virtual bool IsTeamplay(void);
virtual void PlayerClearWeaponry(NSClientPlayer);
virtual void PlayerMakePlayable(NSClientPlayer, int);
virtual void PlayerMakeSpectator(NSClientPlayer);
virtual void PlayerRespawn(NSClientPlayer, int);
virtual entity PlayerFindSpawn(float);
virtual void PlayerReset(NSClientPlayer);
virtual void(NSClientPlayer) PlayerClearWeaponry;
virtual void(NSClientPlayer, int) PlayerMakePlayable;
virtual void(NSClientPlayer) PlayerMakeSpectator;
virtual void(NSClientPlayer, int) PlayerRespawn;
virtual entity(float) PlayerFindSpawn;
}; };
void CSEv_JoinAuto(void); void CSEv_JoinAuto(void);

View File

@ -456,8 +456,7 @@ CSMultiplayerRules::RestartRound(int iWipe)
if (iWipe == FALSE) { if (iWipe == FALSE) {
Money_GiveTeamReward(pl); Money_GiveTeamReward(pl);
} else { } else {
pl.money = 0; PlayerReset(pl);
Money_AddMoney(pl, autocvar_mp_startmoney);
} }
} }
for (entity eFind = world; (eFind = findfloat(eFind, ::team, TEAM_CT));) { for (entity eFind = world; (eFind = findfloat(eFind, ::team, TEAM_CT));) {
@ -476,8 +475,7 @@ CSMultiplayerRules::RestartRound(int iWipe)
if (iWipe == FALSE) { if (iWipe == FALSE) {
Money_GiveTeamReward(pl); Money_GiveTeamReward(pl);
} else { } else {
pl.money = 0; PlayerReset(pl);
Money_AddMoney(pl, autocvar_mp_startmoney);
} }
} }
@ -499,8 +497,7 @@ CSMultiplayerRules::RestartRound(int iWipe)
if (iWipe == FALSE) { if (iWipe == FALSE) {
Money_GiveTeamReward(pl); Money_GiveTeamReward(pl);
} else { } else {
pl.money = 0; PlayerReset(pl);
Money_AddMoney(pl, autocvar_mp_startmoney);
} }
} }
@ -981,6 +978,25 @@ CSMultiplayerRules::PlayerMakeSpectator(NSClientPlayer pp)
PlayerClearWeaponry(pl); PlayerClearWeaponry(pl);
} }
/*
=================
PlayerReset
Called when we give the initial starting money, and also when
another player joins and causes the game rules/scores to reset fully
=================
*/
void
CSMultiplayerRules::PlayerReset(NSClientPlayer pl)
{
player p = (player)pl;
/* give the initial server-joining money */
p.money = 0;
Money_AddMoney(pl, autocvar_mp_startmoney);
p.m_buyMessage = false; /* unset the buy message. */
}
/* /*
================= =================
PlayerSpawn PlayerSpawn
@ -995,8 +1011,7 @@ CSMultiplayerRules::PlayerSpawn(NSClientPlayer pl)
PlayerMakeSpectator(pl); PlayerMakeSpectator(pl);
Spawn_ObserverCam(pl); Spawn_ObserverCam(pl);
/* give the initial server-joining money */ PlayerReset(pl);
Money_AddMoney(pl, autocvar_mp_startmoney);
/* we don't belong to any team */ /* we don't belong to any team */
pl.team = TEAM_SPECTATOR; pl.team = TEAM_SPECTATOR;

View File

@ -189,6 +189,8 @@ class player:NSClientPlayer
int charmodel; int charmodel;
int money; int money;
float progress; float progress;
bool m_buyMessage;
#endif #endif
}; };