Senior Member
|
03-17-2022
, 14:27
Re: [ANY] Random Skybox
|
#9
|
Quote:
Originally Posted by `666
PHP Code:
#pragma semicolon 1 #pragma newdecls required
#include <sourcemod> #include <sdktools>
//custom skies from https://gamebanana.com/mods/cats/561 char ga_sSkyName[][] = { "mr_58", //https://gamebanana.com/mods/334824 "sky_universe", //https://gamebanana.com/mods/350042 "doom", //https://gamebanana.com/mods/323263 "mr_22b" //https://gamebanana.com/mods/218297 };
bool g_bEventHooked = false; char g_sDefaultSky[32]; ConVar g_cvWhenToSet;
public Plugin myinfo = { name = "randomsky", author = "Nullifidian & idea by painkiller", description = "set random sky", version = "1.1", url = "" };
public void OnPluginStart() { RegAdminCmd("sm_randomskysetting", cmd_CheckSky, ADMFLAG_RCON, "Print default & current sky setting for this map"); RegAdminCmd("sm_randomskyrandom", cmd_RandomSky, ADMFLAG_RCON, "Set sky to new random"); RegAdminCmd("sm_randomskydefault", cmd_DefaultSky, ADMFLAG_RCON, "Set sky to default setting");
g_cvWhenToSet = CreateConVar("sm_randomsky", "1.0", "0.0 = disable | 1.0 = on map start | 2.0 = on round start", _, true, 0.0, true, 2.0); AutoExecConfig(true, "randomsky"); HookConVarChange(g_cvWhenToSet, ConVarChanged); }
public void OnMapStart() { DownloadFiles(); CreateTimer(1.0, Timer_CheckSetting); }
public Action Event_RoundStart(Event event, const char[] name, bool dontBroadcast) { SetRandomSky(); }
void SetRandomSky() { ServerCommand("sv_skyname %s", ga_sSkyName[GetRandomInt(0, ((sizeof(ga_sSkyName)) - 1))]); }
Action Timer_CheckSetting(Handle timer) { GetConVarString(FindConVar("sv_skyname"), g_sDefaultSky, sizeof(g_sDefaultSky)); switch (g_cvWhenToSet.FloatValue) { case 0.0: { if (g_bEventHooked) { SetupHookEvent(false); } } case 1.0: { if (g_bEventHooked) { SetupHookEvent(false); } SetRandomSky(); } case 2.0: { if (!g_bEventHooked) { SetupHookEvent(); } } } }
void SetupHookEvent(bool bHook = true) { if (bHook) { HookEvent("round_start", Event_RoundStart, EventHookMode_PostNoCopy); g_bEventHooked = true; } else { UnhookEvent("round_start", Event_RoundStart, EventHookMode_PostNoCopy); g_bEventHooked = false; } }
public Action cmd_CheckSky(int client, int args) { char sBuffer[32]; GetConVarString(FindConVar("sv_skyname"), sBuffer, sizeof(sBuffer)); ReplyToCommand(client, "sv_skyname = %s | default = %s", sBuffer, g_sDefaultSky); return Plugin_Handled; }
public Action cmd_RandomSky(int client, int args) { SetRandomSky(); ReplyToCommand(client, "Done!"); return Plugin_Handled; }
public Action cmd_DefaultSky(int client, int args) { ServerCommand("sv_skyname %s", g_sDefaultSky); ReplyToCommand(client, "Set sky to default: %s", g_sDefaultSky); return Plugin_Handled; }
void ConVarChanged(ConVar convar, const char[] oldValue, const char[] newValue) { if (StringToFloat(newValue) == 2.0) { if (!g_bEventHooked) { SetupHookEvent(); } } else if (g_bEventHooked) { SetupHookEvent(false); } }
void DownloadFiles() { char sBuffer[PLATFORM_MAX_PATH];
char sLower[][] = { "bk", "dn", "ft", "lf", "rt", "up" };
char sUpper[][] = { "BK", "DN", "FT", "LF", "RT", "UP" };
for (int i = 0; i < sizeof(ga_sSkyName); i++) { for (int j = 0; j < 6; j++) { FormatEx(sBuffer, sizeof(sBuffer), "materials/skybox/%s%s.vmt", ga_sSkyName[i], sLower[j]); if (FileExists(sBuffer, false)) { AddFileToDownloadsTable(sBuffer); } else { FormatEx(sBuffer, sizeof(sBuffer), "materials/skybox/%s%s.vmt", ga_sSkyName[i], sUpper[j]); if (FileExists(sBuffer, false)) { AddFileToDownloadsTable(sBuffer); } else { LogError("Can't find: %s", sBuffer); } }
FormatEx(sBuffer, sizeof(sBuffer), "materials/skybox/%s%s.vtf", ga_sSkyName[i], sLower[j]); if (FileExists(sBuffer, false)) { AddFileToDownloadsTable(sBuffer); } else { FormatEx(sBuffer, sizeof(sBuffer), "materials/skybox/%s%s.vtf", ga_sSkyName[i], sUpper[j]); if (FileExists(sBuffer, false)) { AddFileToDownloadsTable(sBuffer); } else { LogError("Can't find: %s", sBuffer); } } } } }
|
That's great, thank you very much, it works perfectly.
Is there a possibility that you could make another plugin I don't know how far your skills go.
But I think it would not be that easy.
Unfortunately, we can't write to you privately.
Last edited by painkiller; 03-17-2022 at 14:28.
|
|