0 Members and 1 Guest are viewing this topic.
const Color = $FFFFFFFF; Health = 65;var Player,Choice: array[1..2] of byte; AfterKillMsg: string; Start,Once: boolean;function FixType(Value: integer): integer;begin Result := StrtoInt(InttoStr(Value));end;function AlivePlayers(Team: shortint): byte;var i: byte;begin for i := 1 to 32 do if (GetPlayerStat(i,'Active') = true) and (GetPlayerStat(i,'Alive') = true) and ((Team = -1) or (GetPlayerStat(i,'Team') = Team)) then Result := Result + 1;end;function WeapNumtoRealWeapNum(Num: byte): byte;begin if Num <= 10 then Result := Num else if Num = 11 then Result := 0 else Result := Num + 2;end;procedure AppOnIdle(Ticks: integer);begin if AfterKillMsg <> '' then begin DrawText(0,AfterKillMsg,300,$FFDF3CA8,3.5 / Length(AfterKillMsg),8,400); AfterKillMsg := ''; end;end;function OnPlayerCommand(ID: Byte; Text: string): boolean;var i,Weap,PlayerNum: byte;begin Result := false; if (GetPiece(Text,' ',0) = '/ready') and ((ID = Player[1]) or (ID = Player[2])) and (Start = false) and (GetPlayerStat(Player[1],'Alive') = true) and (GetPlayerStat(Player[2],'Alive') = true) then begin for i := 1 to 2 do if ID = Player[i] then PlayerNum := i; try Weap := StrtoInt(GetPiece(Text,' ',1)); except WriteConsole(ID,'Invalid input.',Color); end; if (Weap >= 1) and (Weap <= 14) then begin Choice[PlayerNum] := Weap; if Choice[FixType(iif(PlayerNum = 1,2,1))] = Weap then begin WriteConsole(0,'Both players have agreed to choose weapon #' + InttoStr(Weap) + '.',Color); for i := 1 to 2 do begin DoDamage(Player[i],GetPlayerStat(Player[i],'Health') - Health); ForceWeapon(Player[i],WeapNumtoRealWeapNum(Weap),255,0); end; Start := true; end else WriteConsole(0,GetPlayerStat(ID,'Name') + ' has selected weapon #' + InttoStr(Weap) + '.',Color); end else WriteConsole(ID,'Invalid weapon number.',Color); end;end;procedure OnPlayerKill(Killer, Victim: byte; Weapon: string);var i,j: byte;begin if (NumPlayers >= 2) and (((GetPlayerStat(Killer,'Team') <> GetPlayerStat(Victim,'Team')) and (AlivePlayers(GetPlayerStat(Victim,'Team')) = 2) and (AlivePlayers(GetPlayerStat(Killer,'Team')) = 1))) or ((GetPlayerStat(Killer,'Team') = GetPlayerStat(Victim,'Team')) and (AlivePlayers(GetPlayerStat(Killer,'Team')) = 2) and (AlivePlayers(iif(GetPlayerStat(Killer,'Team') = 1,2,1)) = 1)) then begin WriteConsole(0,'1 vs 1! If you want to fight with the same weapon, type',Color); WriteConsole(0,'''/ready _'' where as _ is the weapon number (1-14).',Color); for i := 1 to 32 do if (GetPlayerStat(i,'Active') = true) and (GetPlayerStat(i,'Alive') = true) and (i <> Victim) then begin for j := 1 to 2 do if Player[j] = 0 then begin Player[j] := i; Break; end; if Player[2] <> 0 then Break; end; end; if Start then begin if Killer <> Victim then AfterKillMsg := GetPlayerStat(Killer,'Name') + ' has won the 1 vs 1!'; Start := false; end;end;function OnPlayerDamage(Victim, Shooter: byte; Damage: integer): integer;begin Result := Damage;end;procedure OnPlayerRespawn(ID: byte);var i,j: byte;begin for i := 1 to 2 do begin Player[i] := 0; Choice[i] := 0; end; if (NumPlayers = 2) then begin if Once then begin WriteConsole(0,'1 vs 1! If you want to fight with the same weapon, type',Color); WriteConsole(0,'''/ready _'' where as _ is the weapon number (1-14).',Color); Once := false; end else Once := true; for i := 1 to 32 do if (GetPlayerStat(i,'Active') = true) and (GetPlayerStat(i,'Alive') = true) then begin for j := 1 to 2 do if Player[j] = 0 then begin Player[j] := i; Break; end; if Player[2] <> 0 then Break; end; end;end;procedure OnWeaponChange(ID, PrimaryNum, SecondaryNum: Byte);begin if (Start) and (PrimaryNum <> Choice[1]) then ForceWeapon(ID,WeapNumtoRealWeapNum(Choice[1]),255,0);end;