diff options
| author | navewindre <nw@moneybot.cc> | 2023-12-04 18:06:10 +0100 |
|---|---|---|
| committer | navewindre <nw@moneybot.cc> | 2023-12-04 18:06:10 +0100 |
| commit | aef0d1c1268ab7d4bc18996c9c6b4da16a40aadc (patch) | |
| tree | 43e766b51704f4ab8b383583bdc1871eeeb9c698 /sourcemod/scripting/gokz-localdb.sp | |
| parent | 38f1140c11724da05a23a10385061200b907cf6e (diff) | |
bbbbbbbbwaaaaaaaaaaa
Diffstat (limited to 'sourcemod/scripting/gokz-localdb.sp')
| -rw-r--r-- | sourcemod/scripting/gokz-localdb.sp | 188 |
1 files changed, 188 insertions, 0 deletions
diff --git a/sourcemod/scripting/gokz-localdb.sp b/sourcemod/scripting/gokz-localdb.sp new file mode 100644 index 0000000..d9b07c2 --- /dev/null +++ b/sourcemod/scripting/gokz-localdb.sp @@ -0,0 +1,188 @@ +#include <sourcemod> + +#include <geoip> + +#include <gokz/core> +#include <gokz/localdb> + +#undef REQUIRE_EXTENSIONS +#undef REQUIRE_PLUGIN +#include <gokz/jumpstats> +#include <updater> + +#pragma newdecls required +#pragma semicolon 1 + + + +public Plugin myinfo = +{ + name = "GOKZ Local DB", + author = "DanZay", + description = "Provides database for players, maps, courses and times", + version = GOKZ_VERSION, + url = GOKZ_SOURCE_URL +}; + +#define UPDATER_URL GOKZ_UPDATER_BASE_URL..."gokz-localdb.txt" + +Database gH_DB = null; +DatabaseType g_DBType = DatabaseType_None; +bool gB_ClientSetUp[MAXPLAYERS + 1]; +bool gB_ClientPostAdminChecked[MAXPLAYERS + 1]; +bool gB_Cheater[MAXPLAYERS + 1]; +int gI_PBJSCache[MAXPLAYERS + 1][MODE_COUNT][JUMPTYPE_COUNT][JUMPSTATDB_CACHE_COUNT]; +bool gB_MapSetUp; +int gI_DBCurrentMapID; + +#include "gokz-localdb/api.sp" +#include "gokz-localdb/commands.sp" +#include "gokz-localdb/options.sp" + +#include "gokz-localdb/db/sql.sp" +#include "gokz-localdb/db/helpers.sp" +#include "gokz-localdb/db/cache_js.sp" +#include "gokz-localdb/db/create_tables.sp" +#include "gokz-localdb/db/save_js.sp" +#include "gokz-localdb/db/save_time.sp" +#include "gokz-localdb/db/set_cheater.sp" +#include "gokz-localdb/db/setup_client.sp" +#include "gokz-localdb/db/setup_database.sp" +#include "gokz-localdb/db/setup_map.sp" +#include "gokz-localdb/db/setup_map_courses.sp" +#include "gokz-localdb/db/timer_setup.sp" + + + +// =====[ PLUGIN EVENTS ]===== + +public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max) +{ + CreateNatives(); + RegPluginLibrary("gokz-localdb"); + return APLRes_Success; +} + +public void OnPluginStart() +{ + LoadTranslations("gokz-localdb.phrases"); + + CreateGlobalForwards(); + RegisterCommands(); + DB_SetupDatabase(); +} + +public void OnAllPluginsLoaded() +{ + if (LibraryExists("updater")) + { + Updater_AddPlugin(UPDATER_URL); + } + + char auth[32]; + for (int client = 1; client <= MaxClients; client++) + { + if (IsClientAuthorized(client) && GetClientAuthId(client, AuthId_Engine, auth, sizeof(auth))) + { + OnClientAuthorized(client, auth); + } + } +} + +public void OnLibraryAdded(const char[] name) +{ + if (StrEqual(name, "updater")) + { + Updater_AddPlugin(UPDATER_URL); + } +} + + + +// =====[ OTHER EVENTS ]===== + +public void OnConfigsExecuted() +{ + DB_SetupMap(); +} + +public void GOKZ_DB_OnMapSetup(int mapID) +{ + DB_SetupMapCourses(); + + for (int client = 1; client < MAXPLAYERS + 1; client++) + { + if (IsValidClient(client) && !IsFakeClient(client) && + gB_ClientPostAdminChecked[client] && + GOKZ_GetOption(client, gC_DBOptionNames[DBOption_AutoLoadTimerSetup]) == DBOption_Enabled) + { + DB_LoadTimerSetup(client); + } + } +} + +public void OnMapEnd() +{ + gB_MapSetUp = false; +} + +public void OnClientAuthorized(int client, const char[] auth) +{ + DB_SetupClient(client); +} + +public void OnClientPostAdminCheck(int client) +{ + // We need this after OnClientPutInServer cause that's where the VBs get reset + gB_ClientPostAdminChecked[client] = true; + + if (gB_MapSetUp && GOKZ_GetOption(client, gC_DBOptionNames[DBOption_AutoLoadTimerSetup]) == DBOption_Enabled) + { + DB_LoadTimerSetup(client); + } +} + +public void GOKZ_DB_OnClientSetup(int client, int steamID, bool cheater) +{ + DB_CacheJSPBs(client, steamID); +} + +public void GOKZ_OnOptionsLoaded(int client) +{ + if (gB_MapSetUp && gB_ClientPostAdminChecked[client] && GOKZ_GetOption(client, gC_DBOptionNames[DBOption_AutoLoadTimerSetup]) == DBOption_Enabled) + { + DB_LoadTimerSetup(client); + } +} + +public void OnClientDisconnect(int client) +{ + gB_ClientSetUp[client] = false; + gB_ClientPostAdminChecked[client] = false; +} + +public void GOKZ_OnCourseRegistered(int course) +{ + if (gB_MapSetUp) + { + DB_SetupMapCourse(course); + } +} + +public void GOKZ_OnOptionsMenuReady(TopMenu topMenu) +{ + OnOptionsMenuReady_Options(); + OnOptionsMenuReady_OptionsMenu(topMenu); +} + +public void GOKZ_OnTimerEnd_Post(int client, int course, float time, int teleportsUsed) +{ + int mode = GOKZ_GetCoreOption(client, Option_Mode); + int style = GOKZ_GetCoreOption(client, Option_Style); + DB_SaveTime(client, course, mode, style, time, teleportsUsed); +} + +public void GOKZ_JS_OnLanding(Jump jump) +{ + OnLanding_SaveJumpstat(jump); +} |
