Try this. I didn't test it but I think it should work.
var
CurMap: string;
kills: array[1..32] of integer;
HKills: integer;
HName: string;
procedure ResetKills();
var
i: integer;
begin
for i := 1 to 32 do begin
kills[i] := 0;
end;
end;
procedure HighestSpree();
begin
if HKills > 1 then begin
Command('/say Highest spree by: ' + HName + ' with ' + IntToStr(HKills) + ' kills!');
HName := '';
HKills := 0;
end;
end;
procedure ks_OnMapChange();
begin
ResetKills();
HighestSpree();
end;
procedure ks_OnCommand(ID: byte;Text: string);
begin
if StrPos('/map', Text) = 1 then
begin
if StrPos(CurrentMap, Text) = 6 then
begin
ResetKills();
HighestSpree();
end;
end;
if StrPos('/restart', Text) = 1 then
begin
ResetKills();
HighestSpree();
end;
if StrPos('/spree', Text) = 1 then
begin
if HKills > 1 then begin
Command('/say Highest spree by: ' + HName + ' with ' + IntToStr(HKills) + ' kills!');
end;
end;
end;
procedure ks_OnLeaveGame(ID, Team: byte; Kicked: boolean);
begin
kills[ID] := 0;
end;
procedure ks_OnPlayerKill(Killer, Victim: byte; Weapon: string);
var
spree: array[1..25] of string;
i: integer;
j: integer;
killsNeeded: integer;
begin
killsNeeded := 3; //number of kills needed to count as a killing spree
//spree where x represents the current number of spree kills player has
//more can be added just be sure to change the spree array size
spree[killsNeeded] := ' is on a Killing Spree!';
spree[5] := ' is on a Rampage!';
spree[7] := ' is Dominating!';
spree[9] := ' is Unstoppable!';
spree[11] := ' is Wicked Sick!';
spree[13] := ' is Godlike!';
spree[15] := ' is Unfreakingbelievable!';
spree[20] := ' is now a STAR PLAYER!';
i := Killer;
j := Victim;
if Killer <> Victim then begin //needed for servers with survival mode
kills[i] := kills[i] + 1
if kills[i] > HKills then begin
HKills := kills[i];
HName := IDToName(Killer);
end;
if (kills[j] >= killsNeeded) then begin
WriteConsole(0, IDToName(Victim) + '''s ' + inttostr(kills[j]) + ' kills spree ended by ' + IDToName(Killer), RGB(255, 0, 0));
end;
kills[j] := 0;
if (kills[i] <= Arrayhigh(spree) + 1) then begin
if (spree[kills[i]] <> '') then
WriteConsole(0, IDToName(killer) + spree[kills[i]], RGB(0, 0, 255));
end;
end;
end;
function OnRequestGame(IP: string;State: integer):integer;
begin
Result := State;
end;
procedure OnWeaponChange(ID, PrimaryNum, SecondaryNum: byte);
begin
end;
procedure OnJoinGame(ID, Team: byte);
begin
end;
procedure OnJoinTeam(ID, Team: byte);
begin
end;
procedure OnLeaveGame(ID, Team: byte; Kicked: boolean);
begin
ks_OnLeaveGame(ID, Team, Kicked);
end;
procedure OnFlagGrab(ID, TeamFlag: byte; GrabbedInBase: boolean);
begin
end;
procedure OnFlagReturn(ID, TeamFlag: byte);
begin
end;
procedure OnFlagScore(ID, TeamFlag: byte);
begin
end;
procedure OnMapChange(NewMap: string);
begin
ks_OnMapChange();
end;
procedure OnPlayerKill(Killer, Victim: byte; Weapon: string);
begin
ks_OnPlayerKill(Killer, Victim, Weapon);
end;
function OnPlayerDamage(Victim, Shooter: byte; Damage: integer): integer;
begin
Result := Damage;
end;
procedure OnPlayerRespawn(ID: byte);
begin
end;
procedure OnPlayerSpeak(ID: byte; Text: string);
begin
end;
procedure ActivateServer();
begin
CurMap := CurrentMap;
end;
procedure AppOnIdle(Ticks: integer);
begin
if Ticks mod 2 = 0 then begin //Every 2 seconds
if ((CurMap <> CurrentMap) and (TimeLeft > 0)) then
begin
OnMapChange(CurrentMap);
CurMap := CurrentMap;
end;
end;
// Here other stuff
end;
function OnCommand(ID: Byte; Text: string): boolean;
begin
ks_OnCommand(ID, Text);
Result := false;
end;
function OnPlayerCommand(ID: Byte; Text: string): boolean;
begin
Result := false;
end;
procedure OnException(ErrorMessage: string);
begin
// WriteFile('ErrorLog.txt', ErrorMessage);
end;
procedure OnAdminConnect(IP: string);
begin
end;
procedure OnAdminDisconnect(IP: string);
begin
end;
procedure OnAdminMessage(IP, Msg: string);
begin
end;