Author Topic: Is anyone handy with pascal?  (Read 819 times)

0 Members and 1 Guest are viewing this topic.

Offline Naliz

  • Soldier
  • **
  • Posts: 110
    • R/S Community
Is anyone handy with pascal?
« on: November 08, 2008, 11:40:22 pm »
I'm having a problem with this script. The map function doesn't work.

Code: [Select]
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.

Offline CurryWurst

  • Camper
  • ***
  • Posts: 265
    • Soldat Global Account System
Re: Is anyone handy with pascal?
« Reply #1 on: November 09, 2008, 01:56:00 pm »
SpiltCoffee updated his script and fixed the bug  ;)

http://soldatcentral.com/index.php?page=script&f=62
Soldat Global Account System: #soldat.sgas @ quakenet