Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const
- Color = $FFFFFFFF;
- VotePerc = 51;
- InitTime = 60;
- AddTime = 10;
- var
- Enable: boolean;
- Time: integer;
- Voted: array[1..32] of boolean;
- procedure DisableVoteNext;
- begin
- Enable := false;
- end;
- procedure ActivateServer();
- begin
- Enable := true;
- end;
- procedure AppOnIdle(Ticks: integer);
- var
- i: byte;
- begin
- if (Time > 0) then begin
- Time := Time - 1;
- if (Time = 0) then begin
- for i := 1 to 32 do Voted[i] := false;
- WriteConsole(0, 'Nextmap vote failed', Color);
- end;
- end;
- end;
- function OnCommand(Id: byte; Text: string): boolean;
- begin
- if ((LowerCase(Copy(Text, 1, 8)) = '/restart') or (LowerCase(Copy(Text, 1, 8)) = '/nextmap') or ((LowerCase(Copy(Text, 1, 4)) = '/map') and (FileExists('maps/' + Copy(Text, 6, Length(Text)) + '.PMS')))) then DisableVoteNext;
- end;
- procedure OnMapChange(NewMap: string);
- var
- i: byte;
- begin
- Enable := true;
- for i := 1 to 32 do Voted[i] := false;
- Time := 0;
- end;
- procedure OnJoinGame(ID, Team: byte);
- begin
- Voted[ID] := false;
- end;
- procedure OnLeaveGame(ID, Team: byte; Kicked: boolean);
- var
- i, Total: byte;
- begin
- Voted[ID] := false;
- for i := 1 to 32 do if (GetPlayerStat(i, 'Active') = true) and (Voted[i]) then Total := Total + 1;
- if (Total > 0) then begin
- if (100 * Total / (NumPlayers - NumBots) >= VotePerc) then begin
- for i := 1 to 32 do Voted[ID] := false;
- DisableVoteNext;
- WriteConsole(0, 'Nextmap vote passed', Color);
- Command('/nextmap');
- end else WriteConsole(0,FloattoStr(RoundTo(100 * Total / (NumPlayers - NumBots), 2)) + '% / ' + InttoStr(VotePerc) + '% required for a vote pass', Color);
- end;
- end;
- procedure OnPlayerSpeak(ID: byte; Text: string);
- var
- i, Total: byte;
- begin
- if ((LowerCase(Text) = '!nextmap') and (Enable)) then begin
- if Voted[ID] then WriteConsole(ID, 'You have already voted.', Color) else if (Time = 0) then Time := InitTime else Time := Time + Addtime;
- Voted[ID] := true;
- for i := 1 to 32 do if (GetPlayerStat(i, 'Active') = true) and (Voted[i]) then Total := Total + 1;
- if (100 * Total / (NumPlayers - NumBots) >= VotePerc) then begin
- for i := 1 to 32 do Voted[ID] := false;
- DisableVoteNext;
- WriteConsole(0, 'Nextmap vote passed', Color);
- Command('/nextmap');
- end else WriteConsole(0,FloattoStr(RoundTo(100 * Total / (NumPlayers - NumBots), 2)) + '% / ' + InttoStr(VotePerc) + '% required for a vote pass', Color);
- end;
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement