Advertisement
Guest User

Untitled

a guest
Jul 27th, 2013
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.47 KB | None | 0 0
  1. const
  2. Color = $FFFFFFFF;
  3. VotePerc = 51;
  4. InitTime = 60;
  5. AddTime = 10;
  6.  
  7. var
  8. Enable: boolean;
  9. Time: integer;
  10. Voted: array[1..32] of boolean;
  11.  
  12. procedure DisableVoteNext;
  13. begin
  14. Enable := false;
  15. end;
  16.  
  17. procedure ActivateServer();
  18. begin
  19. Enable := true;
  20. end;
  21.  
  22. procedure AppOnIdle(Ticks: integer);
  23. var
  24. i: byte;
  25. begin
  26. if (Time > 0) then begin
  27. Time := Time - 1;
  28. if (Time = 0) then begin
  29. for i := 1 to 32 do Voted[i] := false;
  30. WriteConsole(0, 'Nextmap vote failed', Color);
  31. end;
  32. end;
  33. end;
  34.  
  35. function OnCommand(Id: byte; Text: string): boolean;
  36. begin
  37. 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;
  38. end;
  39.  
  40. procedure OnMapChange(NewMap: string);
  41. var
  42. i: byte;
  43. begin
  44. Enable := true;
  45. for i := 1 to 32 do Voted[i] := false;
  46. Time := 0;
  47. end;
  48.  
  49. procedure OnJoinGame(ID, Team: byte);
  50. begin
  51. Voted[ID] := false;
  52. end;
  53.  
  54. procedure OnLeaveGame(ID, Team: byte; Kicked: boolean);
  55. var
  56. i, Total: byte;
  57. begin
  58. Voted[ID] := false;
  59. for i := 1 to 32 do if (GetPlayerStat(i, 'Active') = true) and (Voted[i]) then Total := Total + 1;
  60. if (Total > 0) then begin
  61. if (100 * Total / (NumPlayers - NumBots) >= VotePerc) then begin
  62. for i := 1 to 32 do Voted[ID] := false;
  63. DisableVoteNext;
  64. WriteConsole(0, 'Nextmap vote passed', Color);
  65. Command('/nextmap');
  66. end else WriteConsole(0,FloattoStr(RoundTo(100 * Total / (NumPlayers - NumBots), 2)) + '% / ' + InttoStr(VotePerc) + '% required for a vote pass', Color);
  67. end;
  68. end;
  69.  
  70. procedure OnPlayerSpeak(ID: byte; Text: string);
  71. var
  72. i, Total: byte;
  73. begin
  74. if ((LowerCase(Text) = '!nextmap') and (Enable)) then begin
  75. if Voted[ID] then WriteConsole(ID, 'You have already voted.', Color) else if (Time = 0) then Time := InitTime else Time := Time + Addtime;
  76. Voted[ID] := true;
  77. for i := 1 to 32 do if (GetPlayerStat(i, 'Active') = true) and (Voted[i]) then Total := Total + 1;
  78. if (100 * Total / (NumPlayers - NumBots) >= VotePerc) then begin
  79. for i := 1 to 32 do Voted[ID] := false;
  80. DisableVoteNext;
  81. WriteConsole(0, 'Nextmap vote passed', Color);
  82. Command('/nextmap');
  83. end else WriteConsole(0,FloattoStr(RoundTo(100 * Total / (NumPlayers - NumBots), 2)) + '% / ' + InttoStr(VotePerc) + '% required for a vote pass', Color);
  84. end;
  85. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement