I'm having a problem with this script. The map function doesn't work.
const
ClMessage = $FFFF0000;
var
Unpause: boolean;
UnpauseCount: integer;
Paused: boolean;
function Split(const Source: string; const Delimiter: string): tstringarray;
var
i,x,d: integer;
s: string;
begin
d := Length(Delimiter);
x := 0;
i := 1;
SetArrayLength(Result,1);
while i <= Length(source) do begin
s := Copy(Source,i,d);
if s = Delimiter then begin
Inc(i,d);
Inc(x,1);
SetArrayLength(result,x + 1);
end else begin
Result[x] := Result[x] + Copy(s,1,1);
Inc(i,1);
end;
end;
end;
procedure ActivateServer();
begin
Unpause := false;
UnpauseCount := 0;
Paused := false;
end;
procedure AppOnIdle(Ticks: integer);
begin
if (Unpause = true) then begin
if (UnpauseCount = 0) then begin
WriteConsole(0,'Go!',ClMessage);
WriteLn('Go!');
Command('/unpause'); Command('/unpause'); Command('/unpause');
UnpauseCount := 0;
Unpause := false;
Paused := false;
end
else if (UnpauseCount > 0) then begin
WriteConsole(0,InttoStr(UnpauseCount)+'..',ClMessage);
WriteLn(InttoStr(UnpauseCount)+'..');
UnpauseCount := UnpauseCount - 1;
end;
end;
end;
procedure OnJoinTeam(ID, Team: byte);
begin
WriteConsole(ID,'AutoGather is running on this server. Type !help for commands',ClMessage);
end;
function OnCommand(ID: Byte; Text: string): boolean;
begin
//---/unpause
if (MaskCheck(lowercase(Text),'/unpause*')) and (Paused = true) and (Unpause = false) then begin
//Setup all the variables to go! AppOnIdle will do the rest.
Unpause := true;
UnpauseCount := 5;
WriteConsole(0,'Unpausing...',ClMessage);
WriteLn('Unpausing...');
Result := true;
end
//---/pause
else if (MaskCheck(lowercase(Text),'/pause*')) then begin
//If it is unpausing, break the countdown and stay paused...
if (Unpause = true) then begin
Unpause := false;
UnpauseCount := 0;
WriteConsole(0,'>>>Countdown Cancelled<<<',ClMessage);
WriteLn('>>>Countdown Cancelled<<<');
end
//otherwise... just pause.
else if (Paused = false) then
Paused := true;
end;
end;
procedure OnMapChange(NewMap: String);
begin
Unpause := false;
UnpauseCount := 0;
Paused := false;
end;
procedure OnPlayerSpeak(ID: Byte; Text: string);
var
Map: string;
Mapslist: TStringArray;
Password: string;
begin
if (MaskCheck(lowercase(Text),'!up')) or (MaskCheck(lowercase(Text),'!unpause')) then begin
OnCommand(255,'/unpause');
end
else if (MaskCheck(lowercase(Text),'!p')) or (MaskCheck(lowercase(Text),'!pause')) then begin
OnCommand(255,'/pause');
Command('/pause');
WriteConsole(0,'Paused',ClMessage);
end
else if (MaskCheck(lowercase(Text),'!r')) or (MaskCheck(lowercase(Text),'!restart')) then begin
Command('/restart');
WriteConsole(0,'Restarting...',ClMessage);
end
else if (MaskCheck(lowercase(Text),'!ub')) or (MaskCheck(lowercase(Text),'!unbanlast')) then begin
Command('/unbanlast');
WriteConsole(0,'Unbanned',ClMessage);
end
else if (MaskCheck(lowercase(Text),'!map')) then begin
Map := GetPiece(Text,' ',1);
if (FileExists('maps/'+Map+'.PMS')) then
Command('/map '+Map)
else
WriteConsole(0,'Map '+Map+' not found!',ClMessage);
end
else if (MaskCheck(lowercase(Text),'!random')) then
if (FileExists('mapslist.txt')) then begin
Mapslist := Split(ReadFile('mapslist.txt'),chr(13)+chr(10));
Map := Mapslist[Random(0,Arrayhigh(Mapslist)+1)];
Command('/map '+Map);
end else
WriteConsole(0,'Unable to choose a random map!',ClMessage)
else if (MaskCheck(lowercase(Text),'!1')) then
Command('/setteam1 '+IntToStr(ID))
else if (MaskCheck(lowercase(Text),'!2')) then
Command('/setteam2 '+IntToStr(ID))
else if (MaskCheck(lowercase(Text),'!5')) then
Command('/setteam5 '+IntToStr(ID))
else if (MaskCheck(lowercase(Text),'!help')) then begin
WriteConsole(ID,'AutoGather Commands',ClMessage);
WriteConsole(ID,'!pause, !p - Pauses the game',ClMessage);
WriteConsole(ID,'!unpause, !p - Unpauses the game',ClMessage);
WriteConsole(ID,'!restart, !r - Restarts the game',ClMessage);
WriteConsole(ID,'!unbanlast, !ub - Unbans the last player banned',ClMessage);
WriteConsole(ID,'!map <map> - Changes to the specified map',ClMessage);
WriteConsole(ID,'!random - Chooses a random',ClMessage);
WriteConsole(ID,'!1, !2, !5 - Moves you to the specified team',ClMessage);
end;
end;
Thanks in advance.