forward switchmode(); forward StopChangemodeTimer(); static changemodetimer, currentmode ; enum smode { Mode[50], Time } static const ModeInfo[][smode] = { {"Gamemode 1", 300000}, {"Gamemode 2", 300000}, {"Gamemode 3", 300000}, {"Gamemode 4", 300000} }; public OnGameModeInit() { new randmode = random( sizeof (ModeInfo) ); currentmode = randmode; changemodetimer = SetTimer("switchmode", ModeInfo[currentmode][Time], false); return 1; } public OnGameModeExit() { KillTimer(changemodetimer); currentmode = 0; return 1; } public StopChangemodeTimer() { KillTimer(changemodetimer); return 1; } public switchmode() { new modestring[50], randmode = random( sizeof (ModeInfo) ) ; format(modestring, sizeof(modestring), "The Next mode will be %s!", ModeInfo[currentmode][Mode]); SendClientMessageToAll(0x32CD32FF, modestring); format(modestring,sizeof(modestring), "changemode %s", ModeInfo[currentmode][Mode]); SendRconCommand(modestring); currentmode = randmode; changemodetimer = SetTimer("switchmode", ModeInfo[currentmode][Time], false); return 1; }
randmode = random( sizeof (ModeInfo) )
if(randmode < sizeof(ModeInfo)) {
randmode++;
}
else {
randmode = 0;
}
public switchmode() { new modestring[50] ; if(randmode < sizeof(ModeInfo)) { randmode++; } else { randmode = 0; } format(modestring, sizeof(modestring), "The Next mode will be %s!", ModeInfo[currentmode][Mode]); SendClientMessageToAll(0x32CD32FF, modestring); format(modestring,sizeof(modestring), "changemode %s", ModeInfo[currentmode][Mode]); SendRconCommand(modestring); currentmode = randmode; changemodetimer = SetTimer("switchmode", ModeInfo[currentmode][Time], false); return 1; }
If you're going to load multiple gamemodes in sequence, why not just do it from the server.cfg? It has multiple gamemode support just for this.
But if you want the names and stuff, yea keep it like you have it above. |
public switchmode() { new modestring[50], randmode ; if(randmode < sizeof(ModeInfo)) { randmode++; } else { randmode = 0; } format(modestring, sizeof(modestring), "The Next mode will be %s!", ModeInfo[currentmode][Mode]); SendClientMessageToAll(0x32CD32FF, modestring); format(modestring,sizeof(modestring), "changemode %s", ModeInfo[currentmode][Mode]); SendRconCommand(modestring); currentmode = randmode; changemodetimer = SetTimer("switchmode", ModeInfo[currentmode][Time], false); return 1; }
random( sizeof (ModeInfo) );
#include <a_samp> new changemodetimer, currentmode = 0; enum smode { Mode[50], Time } stock const ModeInfo[][smode] = { {"Gamemode 1", 300000}, //Make sure this ("Gamemode 1") is the first one in your server otherwise the sequence will be mixed {"Gamemode 2", 300000}, {"Gamemode 3", 300000}, {"Gamemode 4", 300000} }; public OnGameModeInit() { changemodetimer = SetTimer("switchmode", ModeInfo[currentmode][Time], false); //This timer will be started everytime a new Gamemode is loaded return 1; } public OnGameModeExit() { KillTimer(changemodetimer); //This will prevent errors if you manually change the Gamemode return 1; } forward switchmode(); public switchmode() { new modestring[50]; //This works like a loop, so when it reach the last Gamemode it will change to the first again if(currentmode < sizeof(ModeInfo)) ++currentmode; else currentmode = 0; format(modestring, sizeof(modestring), "The Next mode will be %s!", ModeInfo[currentmode][Mode]); SendClientMessageToAll(0x32CD32FF, modestring); format(modestring,sizeof(modestring), "changemode %s", ModeInfo[currentmode][Mode]); SendRconCommand(modestring); return 1; }