yea, just declare this with the other variables at the top of the script:
SCAR Code:
var
CurrentPrioritie : integer;
HighestPrioritie : integer;
replace declareplayers with this
your good miners prioritie 0, noobs prioritie 1
remember to change highestprioritie
SCAR Code:
procedure DeclarePlayers;
begin
HowManyPlayers := 9; //No CurrentPlayer, The priorities will sort that out
CurrentPrioritie := 0; //Will start at this priorite, stops at highest prioritie (last group of players)
HighestPrioritie := 5;
NumberOfPlayers(HowManyPlayers);
Players[0].Name :='apple0';
Players[0].Integer1 := 0; //Prioritie
Players[0].Active:= True;
Players[1].Name :='bill1';
Players[1].Integer1 := 1; //Prioritie
Players[1].Active:= True;
Players[2].Name :='chicken3';
Players[2].Integer1 := 3; //Prioritie
Players[2].Active:= True;
Players[3].Name :='dewww1';
Players[3].Integer1 := 1; //Prioritie
Players[3].Active:= True;
Players[4].Name :='eww2';
Players[4].Integer1 := 2; //Prioritie
Players[4].Active:= True;
Players[5].Name :='failure2';
Players[5].Integer1 := 2; //Prioritie
Players[5].Active:= True;
Players[6].Name :='giggity5';
Players[6].Integer1 := 5; //Prioritie
Players[6].Active:= True;
Players[7].Name :='holley5';
Players[7].Integer1 := 5; //Prioritie
Players[7].Active:= True;
Players[8].Name :='import6'; //shouldn't play, prioritie 6.
Players[8].Integer1 := 6; //Prioritie
Players[8].Active:= True;
end;
add these 3 functions anywhere:
SCAR Code:
function AnyActive(Prioritie : integer) : boolean;
var
i, a : integer;
begin
a := GetArrayLength(Players) - 1;
for i := 0 to a do
if Players[i].integer1 = Prioritie then
if Players[i].Active then
begin
Result := True;
Exit;
end;
end;
function IsLastActiveInPrioritie(Player, Prioritie : integer) : boolean;
var
i,a : integer;
begin
result := True;
a := GetArrayLength(Players) - 1;
if Player = a then Exit;
for i := Player + 1 to a do
if Players[i].Active then
if Players[i].Integer1 = Prioritie then
begin
Result := False
Exit;
end;
end;
procedure PNextPlayer(active : boolean);
var
i, a : integer;
firstloop : boolean;
begin
Players[CurrentPlayer].Active := active;
if AnyActive(CurrentPrioritie) then
begin
a := GetArrayLength(Players) - 1;
if IsLastActiveInPrioritie(CurrentPlayer, CurrentPrioritie) then
CurrentPlayer := -1;
for i := CurrentPlayer + 1 to a do
if Players[i].Integer1 = CurrentPrioritie then
if Players[i].Active then
begin
CurrentPlayer := i;
LoginPlayer;
Writeln(Players[i].Name);
Exit;
end;
end else
begin
if CurrentPrioritie = HighestPrioritie then
begin
if not AnyActive(HighestPrioritie) then
begin
Writeln('No More Players! Terminating!');
TerminateScript;
end;
end;
CurrentPrioritie := CurrentPrioritie + 1;
PNextPlayer(Active);
end;
end;
Edit -> Replace in script
with
Its pretty much does what you say =S just a bit more complicated.. overall, it gets the job done.