diff options
| author | aura <nw@moneybot.cc> | 2026-02-17 23:42:09 +0100 |
|---|---|---|
| committer | aura <nw@moneybot.cc> | 2026-02-17 23:42:09 +0100 |
| commit | 5e2eb7d67ae933b7566f1944d0bb7744da03d586 (patch) | |
| tree | 054acff1113270a9cd07933df760f3768c1b6853 /sourcemod/scripting/gokz-racing/race.sp | |
| parent | 341db13a008dc12bb22ceb50452d93d01476308c (diff) | |
move source stuff to its own folder
Diffstat (limited to 'sourcemod/scripting/gokz-racing/race.sp')
| -rw-r--r-- | sourcemod/scripting/gokz-racing/race.sp | 221 |
1 files changed, 0 insertions, 221 deletions
diff --git a/sourcemod/scripting/gokz-racing/race.sp b/sourcemod/scripting/gokz-racing/race.sp deleted file mode 100644 index 5ddc2a8..0000000 --- a/sourcemod/scripting/gokz-racing/race.sp +++ /dev/null @@ -1,221 +0,0 @@ -/* - Race info storing and accessing using a StringMap. - Each race is given a unique race ID when created. - See the RaceInfo enum for what information is accessible. - See the RaceStatus enum for possible race states. -*/ - - - -static StringMap raceInfo; -static int lastRaceID; - - - -// =====[ GENERAL ]===== - -int GetRaceInfo(int raceID, RaceInfo prop) -{ - ArrayList info; - if (raceInfo.GetValue(IntToStringEx(raceID), info)) - { - return info.Get(view_as<int>(prop)); - } - else - { - return -1; - } -} - -static bool SetRaceInfo(int raceID, RaceInfo prop, int value) -{ - ArrayList info; - if (raceInfo.GetValue(IntToStringEx(raceID), info)) - { - int oldValue = info.Get(view_as<int>(prop)); - if (oldValue != value) - { - info.Set(view_as<int>(prop), value); - Call_OnRaceInfoChanged(raceID, prop, oldValue, value); - } - return true; - } - else - { - return false; - } -} - -int IncrementFinishedRacerCount(int raceID) -{ - int finishedRacers = GetRaceInfo(raceID, RaceInfo_FinishedRacerCount) + 1; - SetRaceInfo(raceID, RaceInfo_FinishedRacerCount, finishedRacers); - return finishedRacers; -} - -int GetRaceHost(int raceID) -{ - return GetClientOfUserId(GetRaceInfo(raceID, RaceInfo_HostUserID)); -} - -ArrayList GetUnfinishedRacers(int raceID) -{ - ArrayList racers = new ArrayList(); - for (int i = 1; i <= MaxClients; i++) - { - if (GetRaceID(i) == raceID && !IsFinished(i)) - { - racers.Push(i); - } - } - return racers; -} - -int GetUnfinishedRacersCount(int raceID) -{ - ArrayList racers = GetUnfinishedRacers(raceID); - int count = racers.Length; - delete racers; - return count; -} - -ArrayList GetAcceptedRacers(int raceID) -{ - ArrayList racers = new ArrayList(); - for (int i = 1; i <= MaxClients; i++) - { - if (GetRaceID(i) == raceID && IsAccepted(i)) - { - racers.Push(i); - } - } - return racers; -} - -int GetAcceptedRacersCount(int raceID) -{ - ArrayList racers = GetAcceptedRacers(raceID); - int count = racers.Length; - delete racers; - return count; -} - - - -// =====[ REGISTRATION ]===== - -int RegisterRace(int host, int type, int course, int mode, int checkpointRule, int cooldownRule) -{ - int raceID = ++lastRaceID; - - ArrayList info = new ArrayList(1, view_as<int>(RACEINFO_COUNT)); - info.Set(view_as<int>(RaceInfo_ID), raceID); - info.Set(view_as<int>(RaceInfo_Status), RaceStatus_Pending); - info.Set(view_as<int>(RaceInfo_HostUserID), GetClientUserId(host)); - info.Set(view_as<int>(RaceInfo_FinishedRacerCount), 0); - info.Set(view_as<int>(RaceInfo_Type), type); - info.Set(view_as<int>(RaceInfo_Course), course); - info.Set(view_as<int>(RaceInfo_Mode), mode); - info.Set(view_as<int>(RaceInfo_CheckpointRule), checkpointRule); - info.Set(view_as<int>(RaceInfo_CooldownRule), cooldownRule); - - raceInfo.SetValue(IntToStringEx(raceID), info); - - Call_OnRaceRegistered(raceID); - - return raceID; -} - -static void UnregisterRace(int raceID) -{ - ArrayList info; - if (raceInfo.GetValue(IntToStringEx(raceID), info)) - { - delete info; - raceInfo.Remove(IntToStringEx(raceID)); - } -} - - - -// =====[ START ]===== - -bool StartRace(int raceID) -{ - SetRaceInfo(raceID, RaceInfo_Status, RaceStatus_Countdown); - - for (int client = 1; client <= MaxClients; client++) - { - if (GetRaceID(client) == raceID) - { - StartRacer(client); - GOKZ_PrintToChat(client, true, "%t", "Race Countdown Started"); - } - } - - CreateTimer(RC_COUNTDOWN_TIME, Timer_EndCountdown, raceID); - - return true; -} - -public Action Timer_EndCountdown(Handle timer, int raceID) -{ - SetRaceInfo(raceID, RaceInfo_Status, RaceStatus_Started); - return Plugin_Continue; -} - - - -// =====[ ABORT ]===== - -bool AbortRace(int raceID) -{ - SetRaceInfo(raceID, RaceInfo_Status, RaceStatus_Aborting); - - for (int client = 1; client <= MaxClients; client++) - { - if (GetRaceID(client) == raceID) - { - AbortRacer(client); - GOKZ_PrintToChat(client, true, "%t", "Race Has Been Aborted"); - GOKZ_PlayErrorSound(client); - } - } - - UnregisterRace(raceID); - - return true; -} - - - -// =====[ EVENTS ]===== - -void OnPluginStart_Race() -{ - raceInfo = new StringMap(); -} - -void OnFinish_Race(int raceID) -{ - if (GetUnfinishedRacersCount(raceID) == 0) - { - UnregisterRace(raceID); - } -} - -void OnRequestAccepted_Race(int raceID) -{ - if (GetRaceInfo(raceID, RaceInfo_Type) == RaceType_Duel) - { - StartRace(raceID); - } -} - -void OnRequestDeclined_Race(int raceID) -{ - if (GetRaceInfo(raceID, RaceInfo_Type) == RaceType_Duel) - { - AbortRace(raceID); - } -}
\ No newline at end of file |
