Recent Posts

Pages: 1 ... 8 9 [10]
91
The Lounge / Re: Wake up!
« Last post by Furai on March 06, 2022, 01:48:45 pm »
Wow, waking up from my slumber...
92
The Lounge / Re: Wake up!
« Last post by Noldi on March 05, 2022, 01:52:18 pm »
Wake up, wake up my friend
93
Scripting Releases / Re: Zitro Stats & Ranks 3.0 (Steam / HWID)
« Last post by FliesLikeABrick on March 01, 2022, 09:18:53 pm »
Awesome, thank you for your contribution!
94
Need Help? Report Bugs! / Different map coordinates
« Last post by soldat-game on March 01, 2022, 10:52:57 am »
Different map coordinates. Other when map change by time other when map change by players vote.

Say hello to crazy DEEMER who was lucky to get me a discord ban :)
95
Scripting Releases / Zitro Stats & Ranks 3.1-build_12 (Steam / HWID)
« Last post by soldat-game on February 09, 2022, 12:08:50 pm »
Script name: Zitro Stats & Ranks
Script description: Successor of ZitroFUN-Heavy. Stats, ranks, mapstats, topmaps, anti fake. Work with all gamemodes. Using steam / HWID to save profile.
Version: 3_1-Steam-build_11
Author: dominikk26
Compile test: Passed
Core version: Steam 2.8.2+
Script language: English
Point system: Formula ELO 45/1+10k-v/1000
Player rate system: Formula (((Accuracy * KD * WinRatio * RoundWinRatio) / 4.14) * Points) / 2
Download: Attachment! Click here (3_1-Steam-build_11) to download the latest version.
READ THAT!
Survival mode has errors in counting points, if you don't have your own patch script use this: Attachment! Click here
(If you are using your system remember to load up earlier than zitrostats.)
Full description:
Statistics are assigned to the players Steam or HWID.
Script is contatybile with all default gamemodes and not only!

Script Featuring:
  • Anty inflation / deflation points system
  • Balance points for inactivity
  • Performance
  • Stats
  • Otherstats
  • Ranks
  • Survival score fix
  • Smart and ultra-efficient
  • Full survival mode compatibility
  • Auto remove old profiles
  • Hud without lags


CommandsParameters   Description
!reginfoNone   List all commands for players and admins if player is admin.
!zitroNone   It displays some information about the author of the script, the script and the number of profiles on the server.
!topNone   Shows the top 15 best players.
!top<num>: The rank position number   It displays the top 15 players with the middle position indicated in the paramatra.
!top<Player ID>: Ingame player ID
<Part name>: Ingame player part name
<name>: Ingame full player name
   It displays the top 15 players with the middle position indicated in the paramatra.
!topmeNone   It displays the top 15 players when the middle of the player list is in the position of the player typing a command.
!topid<Player ID>: Ingame player ID   It displays the top 15 players with the middle position indicated in the paramatra.
!rankNone   It will display your position in the ranking and the number of points.
!rank<Player ID>: Ingame player ID
<Part name>: Ingame player part name
<name>: Ingame full player name
   It will display the position of the selected player in the ranking and the number of points.
!ranknum<num>: Ranking position   It will display who is in the selected position.
!statsNone   Display your basic statistics.
!stats<Player ID>: Ingame player ID
<Part name>: Ingame player part name
<name>: Ingame full player name
   Displays basic statistics indicated player.
!otherstatsNone   Display your other statistics.
!otherstats<Player ID>: Ingame player ID
<Part name>: Ingame player part name
<name>: Ingame full player name
   Displays other statistics indicated player.
!topmapsNone   Shows the top 15 most played maps.
!topmaps<num>: The rank position number   It displays the top 15 maps with the middle position indicated in the paramatra.
!topmaps<Part name>: Map part name
<name>: Full map name
   It displays the top 15 maps with the middle position indicated in the paramatra.
!mapstatsNone   Display current map statistics.
!mapstats<Part name>: Map part name
<name>: Full map name
   Displays statistics indicated map.
/hudNone   Toggles hud display.
/statusNone   It displays some interesting information about you and how many days of point protection are left.
/status<Player ID>: Ingame player ID
<Part name>: Ingame player part name
<name>: Ingame full player name
   It displays some interesting information about indicated player and how many days of point protection are left.

Admins commandsParameters   Description
/statusaNone or
<player id>: Ingame player ID
<part name>: Ingame player part name
<name>: Ingame full player name
   It works as a normal status but will also count all possible multi accounts according to different criteria.
/privacy<name|steam|hwid|ip>: A required parameter that defines what data to display
<id_up|id_down|count_up|count_down|time_up|time_down|latest_up|latest_down|first_up|first_down>: Not required, default is count_up
<player_id, part_name, full_name>: Not required if you want to view your list
   Lists all the hwid steamid and ip nicks that the player has successfully logged in with. You can get a description of the sort by entering the command without parameters.
/page<page number>Privacy list page number   Shows the indicated page from the privacy list.
/nextNone   Shows the next page from the privacy list.
/lastNone   Shows the previous page from the privacy list.
/resetallplayersstatsNone   Restarts all players statistics. Requires approval /yes.
/resetallmapsstatsNone   Restarts all maps statistics. Requires approval /yes.
/backupcreate<name>: Backup file name   Creates a backup file in the bakup folder with the given name. Requires approval /yes.
/restorebackup<name>: Backup file name   Restores a backup from the selected file. Requires approval /yes.
/removeolderthan<RRRR-MM-DD> | <DD-MM-RRRR>    Deletes all accounts older than the specified date. Separate the numbers can using ./\- or space. Requires approval /yes, in the query it shows how many accounts are to be deleted.
/yesNone   Confirms the performed operation.
/noNone   Rejects the performed operation.
/search<part name>: Players part name   If you are looking for a player name, this command will be helpful.
/checkp<name|steam|hwid|ip|all>: Not required, default all. What type of data to use for the search.
<first|last>: Not required, default is all. What player data to use for the search, from last login or first login If you do not provide a value, the data will search all available data.
<true|false>: Not required, default is false. Limiting the number of searches.
<player id, part name, full name>: Required, player id player part name or full name. This parameter must always be at the end of the command
   Looks for multi-accounts of the indicated player using the specified criteria. Parameters that are not required do not have to be given and their order does not have to be followed.
/checkd<name|steam|hwid|ip>: Required, indicates what data you will enter
<first|last|all>: Not required, default is all.
<true|false>: Not required, default is false. Used when the search type is set to name or ip, when true the search will use compare, so you can search in the ip range. When "name" or "ip" it is always read first, ie on the left.
<true|false>: Not required, default is false. Limiting the number of searches.
<data>: Required, depending on the first parameter, the relevant data associated with it. This parameter must always be at the end of the command.
   Searches for multi-accounts using the entered data. Parameters that are not required do not have to be given and their order does not have to be followed. If the data type is "name" or "ip", the compare parameter is always read as the leftmost parameter.
96
Just did like to leave some heads-up here, that, by using Shell scripts, one can include programs that do more than the Shell itself; say, one can have a Python program or SQL database, which are triggered by the Shell.
Shell is a very versatile and powerful language, suitable to many purposes. However, I really found the C Shell to be superior to Bourne Shells. Furthermore, the C Shell is the only Shell out there which resembles ancient Unix Shells (namely, Thompson and Mashey Shells).
https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.85.7617

97
Server Help / Re: ZitroFUN 3.0 Steam_Beta
« Last post by soldat-game on February 06, 2022, 02:29:03 pm »
Next gen v31
98
Scripting Releases / Re: Server Visit
« Last post by soldat-game on February 06, 2022, 02:14:04 pm »
Script Name: Server Visit
Script Creator: dominikk26
Script Core: III
Version: 1.0.1
Download: Click Me!
Description:
In contrast to this version https://forums.soldat.pl/index.php?topic=35003

Changelog 1.0.1:
- Strong optimizations
- Rewrite the code to make him quit the legacy mode
- Set : Display_Time to seconds
- Add: Base_Color
- Add: Color_Mixer
- Add: Display "This month" and "This year"


Code:
Code: [Select]
unit ServerVisit;

interface

implementation
const
Path = '\data\database.db';
Display_Time = 83; //Valute in seconds
Base_Color = $F48FB1; //Default $23DBDB;
Color_Mixer = 25; //Default 25

var
database: TStringList;

procedure LoadDatabase();
begin
if File.Exists(Script.Dir+Path) then database := File.CreateStringListFromFile(Script.Dir+Path) else begin
database := File.CreateStringList();
database.Append(FormatDateTime('dddd',42911));
database.Append(FormatDateTime('yyyy',date()));
database.Append(FormatDateTime('mmmm',date()));
database.Append(FormatDateTime('dddd',date()));
database.Append('0'); //Today index 4
database.Append('0'); //This week
database.Append('0'); //This month
database.Append('0'); //This year
database.Append('0'); //Total
database.SaveToFile(Script.Dir+Path);
end;
end;

procedure OnDateCheck();
var New_Data: string;
begin
New_Data := FormatDateTime('dddd', date());
if database[3] <> New_Data then begin
database[3] := New_Data;
database[4] := '0';

if database[0] = New_Data then database[5] := '0';

New_Data := FormatDateTime('mmmm', date());
if database[2] <> New_Data then begin
database[2] := New_Data;
database[6] := '0';

New_Data := FormatDateTime('yyyy', date());
if database[1] <> New_Data then begin
database[1] := New_Data;
database[7] := '0';
end;
end;
database.SaveToFile(Script.Dir+Path);
end;
end;

function FillWith(const Filler: char; Amount: integer): string;
var i: integer;
begin
for i:= 1 to Amount do Result:= Result + Filler;
end;

procedure CreateBox(const Headline: string; const BorderStyleX, BorderStyleY, CornerStyle: char; const Content: TStringList; BorderColor: longint); //By Dominik
var i, MaxSize, len_Headline, Temp_Len: integer;
begin
len_Headline:= length(Headline); MaxSize := len_HeadLine;
for i := 4 to 8 do case i of
0: begin Temp_Len := length('Today     : '+Content[i+4]); if Temp_Len > MaxSize then MaxSize:= Temp_Len; end;
1: begin Temp_Len := length('This week : '+Content[i+4]); if Temp_Len > MaxSize then MaxSize:= Temp_Len; end;
2: begin Temp_Len := length('This month: '+Content[i+4]); if Temp_Len > MaxSize then MaxSize:= Temp_Len; end;
3: begin Temp_Len := length('This year : '+Content[i+4]); if Temp_Len > MaxSize then MaxSize:= Temp_Len; end;
4: begin Temp_Len := length('Over-all  : '+Content[i+4]); if Temp_Len > MaxSize then MaxSize:= Temp_Len; end;
end;
if (MaxSize - len_Headline) mod 2 = 1 then inc(MaxSize, 1);
Players.WriteConsole(CornerStyle + FillWith(BorderStyleX, (MaxSize - len_Headline) div 2) + Headline + FillWith(BorderStyleX, (MaxSize - len_Headline) div 2) + CornerStyle, BorderColor);
for i := 0 to 4 do begin
Temp_Len := i + 4;
case i of
0: Players.WriteConsole(BorderStyleY + 'Today     : ' + Content[Temp_Len] + FillWith(' ', MaxSize - length('Today     : ' + Content[Temp_Len])) + BorderStyleY, BorderColor - ((i + 1) * Color_Mixer));
1: Players.WriteConsole(BorderStyleY + 'This week : ' + Content[Temp_Len] + FillWith(' ', MaxSize - length('This week : ' + Content[Temp_Len])) + BorderStyleY, BorderColor - ((i + 1) * Color_Mixer));
2: Players.WriteConsole(BorderStyleY + 'This month: ' + Content[Temp_Len] + FillWith(' ', MaxSize - length('This month: ' + Content[Temp_Len])) + BorderStyleY, BorderColor - ((i + 1) * Color_Mixer));
3: Players.WriteConsole(BorderStyleY + 'This year : ' + Content[Temp_Len] + FillWith(' ', MaxSize - length('This year : ' + Content[Temp_Len])) + BorderStyleY, BorderColor - ((i + 1) * Color_Mixer));
4: Players.WriteConsole(BorderStyleY + 'Over-all  : ' + Content[Temp_Len] + FillWith(' ', MaxSize - length('Over-all  : ' + Content[Temp_Len])) + BorderStyleY, BorderColor - ((i + 1) * Color_Mixer));
end;
end;
Players.WriteConsole(CornerStyle + FillWith(BorderStyleX, MaxSize) + CornerStyle, BorderColor - (6 * Color_Mixer));
end;

procedure Timers(Ticks: integer);
begin
if Ticks mod (60 * Display_Time) = 0 then begin
OnDateCheck();
CreateBox('_ Server Visits _', '_', '|', '.', database, Base_Color);
end;
end;

procedure JoinGame(Player: TActivePlayer; Team: TTeam);
begin
database[4] := inttostr(strtoint(database[4])+1);
database[5] := inttostr(strtoint(database[5])+1);
database[6] := inttostr(strtoint(database[6])+1);
database[7] := inttostr(strtoint(database[7])+1);
database[8] := inttostr(strtoint(database[8])+1);
database.SaveToFile(Script.Dir+Path);
end;

initialization
begin
Game.OnJoin := @JoinGame;
Game.OnClockTick := @Timers;
LoadDatabase();
end;

finalization;
end.
99
Server Help / Re: What statistics to display with !stats and !otherstats
« Last post by soldat-game on February 04, 2022, 08:10:26 pm »
This is the steam version of the zitrofun 3.0_beta:


has one bug that i can't locate it throws outofrange once every few hours. The script will automatically recompile and work fine. If someone wants to test and help locate the error, I will be grateful.
I focused on developing only the steam version.. Action has been heavily redesigned compared to the steam version. And the display of huds does not burden the server anymore.
100
Scripting Releases / Spawnpoints control
« Last post by soldat-game on January 31, 2022, 03:59:58 pm »
Script Name: Spawnpoints control
Script Description: With this script you can delete and add new respawn points without interfering with the map.
Original Author(s): Dominik
Core Version: 1.0
Test on server: 2.8.2
Download: Attachment

Incredibly useful script that is useful for converting maps from ctf to deatchmatch or teammatch and more.

/displayspawns - This command will enable the visibility of the player spawnpoints. The designation is a sign "+" and assigned team color. The command works in switch mode.
/removeallspawn - Clears the entire map from all spawnpoints.
/removenearspawn - Clears the entire map from all spawnpoints. The maximum distance can be set here "Nearby_Spawn_Max_Dist = 50;" at the beginning of the script
/createspawn <0-4> Creates a spawnpoin for team <0 - 4> is the team id. 0 - No team, 1 - Alpha, 2 - Bravo, 3 - Charlie, 4 - Delta. Creates in the place where you are currently.
/createspawn - Creates a spawnpoin for no team. Creates in the place where you are currently.
/countspawns - Will print a list of all available spawnpoints.
/saveallspawns - Saves your own spawn points settings. As a result, changing the map will not remove them.

If you have saved the configuration of spawnpoints, and want to restore default settings - go to the "data" folder in the script folder and remove a file named as a map name next change map.
Remember that in deathmatch (no team) mode, players can respawn on objects such as flags, when they do not have their respawn point.


Configuration:
Code: [Select]
GOOD = $66CC66;
BAD = $B22222;
Nearby_Spawn_Max_Dist = 50;


Code: (Pascal) [Select]
unit Respawn_Controls;

interface

const
GOOD = $66CC66;
BAD = $B22222;
Nearby_Spawn_Max_Dist = 50;

type TMap_Spawns = record
Active: boolean;
Style: byte;
X, Y: LongInt;
end;

var
Map_Data: array of TMap_Spawns;
Active_Display: array[1..32] of boolean;
Used_Spawns: array of boolean;
Map_Is_Change: boolean;

implementation

function GetPieceSC3(Str, Reg: string; Number: Word): string;
var Res: TStringList;
begin
try
Res := File.CreateStringList;
SplitRegExpr(QuoteRegExprMetaChars(Reg), Str, Res);
Result := Res.Strings[Number];
except
Result := '';
finally
Res.Free;
end;
end;

procedure LeaveGame(Player: TActivePlayer; Kicked: Boolean);
begin
Active_Display[Player.ID] := false;
end;

function Admins_Commands(Player: TActivePlayer; Text: string): boolean;
var New_Spawn: TNewSpawnPoint; Data: TStringList; Lower_Case_Text: String; Temp_Dist, Last_Min_Dist: Single; i, Temp_Byte: byte; Found_Data: array[0..4] of byte;
begin
Result := false;
Lower_Case_Text := LowerCase(Text);

if Lower_Case_Text = '/displayspawns' then begin
if Active_Display[Player.ID] then begin
Active_Display[Player.ID] := false;
Player.WriteConsole('displayspawns = false', BAD);
for i := 1 to 254 do Player.WorldText(i+30, ' ', 1, $808080, 0.001, 0, 0);
end else
begin
Active_Display[Player.ID] := true;
Player.WriteConsole('displayspawns = true', GOOD);
end;
exit;
end;

if Lower_Case_Text = '/removeallspawn' then begin
for i := 1 to 254 do if Map.Spawns[i].Active then begin
if (Map.Spawns[i].Style = 0) or (Map.Spawns[i].Style = 1) or (Map.Spawns[i].Style = 2) or (Map.Spawns[i].Style = 3) or (Map.Spawns[i].Style = 4) then Map.Spawns[i].Active := false;
inc(Temp_Byte, 1);
end;
Player.WriteConsole('Remove all '+inttostr(Temp_Byte)+' players spawnpoints.',GOOD);
exit;
end;

if Lower_Case_Text = '/removenearspawn' then begin
Last_Min_Dist := Nearby_Spawn_Max_Dist;
for i := 1 to 254 do if Map.Spawns[i].Active then begin
if (Map.Spawns[i].Style = 0) or (Map.Spawns[i].Style = 1) or (Map.Spawns[i].Style = 2) or (Map.Spawns[i].Style = 3) or (Map.Spawns[i].Style = 4) then begin
Temp_Dist := Distance(Map.Spawns[i].X, Map.Spawns[i].Y, Player.X, Player.Y);
if Temp_Dist < Nearby_Spawn_Max_Dist then if Temp_Dist < Last_Min_Dist then begin
Last_Min_Dist := Temp_Dist;
Temp_Byte := i;
end;
end;
end;
if Temp_Byte <> 0 then begin
Player.WriteConsole('Remove player spawnpoint ID: '+inttostr(Temp_Byte)+', X: '+inttostr(Map.Spawns[Temp_Byte].X)+', Y: '+inttostr(Map.Spawns[Temp_Byte].Y),GOOD);
Map.Spawns[Temp_Byte].Active := false;
end else Player.WriteConsole('No player spawnpoints found nearby.',BAD);
exit;
end;

if ExecRegExpr('^(\/createspawn\s[0-4]|\/createspawn)$',Lower_Case_Text) then begin
try
New_Spawn := TNewSpawnPoint.Create;
New_Spawn.Active := true;
New_Spawn.X := Round(Player.X);
New_Spawn.y := Round(Player.Y-15);
if Length(Lower_Case_Text) > 12 then New_Spawn.Style := strtoint(GetPieceSC3(Lower_Case_Text,' ', 1)) else New_Spawn.Style := 0;
Map.AddSpawnPoint(New_Spawn);
except
Player.WriteConsole('Failed to add player spawnpoint!',BAD);
finally
New_Spawn.Free;
Player.WriteConsole('Add player spawnpoint X: '+inttostr(Round(Player.X))+', Y: '+inttostr(Round(Player.Y)),GOOD);
end;
exit;
end;

if Lower_Case_Text = '/countspawns' then begin
for i := 1 to 254 do if Map.Spawns[i].Active then begin
if Map.Spawns[i].Style = 0 then inc(Found_Data[0],1);
if Map.Spawns[i].Style = 1 then inc(Found_Data[1],1);
if Map.Spawns[i].Style = 2 then inc(Found_Data[2],1);
if Map.Spawns[i].Style = 3 then inc(Found_Data[3],1);
if Map.Spawns[i].Style = 4 then inc(Found_Data[4],1);
end;
if Found_Data[0] + Found_Data[1] + Found_Data[2] + Found_Data[3] + Found_Data[4] > 0 then begin
Player.WriteConsole('Found on this map '+Game.CurrentMap+' active player spawns: ', GOOD);
Player.WriteConsole('No team spawns: '+inttostr(Found_Data[0]), GOOD);
Player.WriteConsole('Alpha   spawns: '+inttostr(Found_Data[1]), GOOD);
Player.WriteConsole('Bravo   spawns: '+inttostr(Found_Data[2]), GOOD);
Player.WriteConsole('Charlie spawns: '+inttostr(Found_Data[3]), GOOD);
Player.WriteConsole('Delta   spawns: '+inttostr(Found_Data[4]), GOOD);
end else Player.WriteConsole('No found player spawnpoint on this map '+Game.CurrentMap+'.', BAD);
end;

if Lower_Case_Text = '/saveallspawns' then begin
Data := File.CreateStringList();
for i := 1 to 254 do if Map.Spawns[i].Active then begin
if (Map.Spawns[i].Style = 0) or (Map.Spawns[i].Style = 1) or (Map.Spawns[i].Style = 2) or (Map.Spawns[i].Style = 3) or (Map.Spawns[i].Style = 4) then begin
Data.Append('true');
Data.Append(inttostr(Map.Spawns[i].Style));
Data.Append(inttostr(Map.Spawns[i].X));
Data.Append(inttostr(Map.Spawns[i].Y));
end;
end;
if Data.Count > 0 then begin
Data.SaveToFile(Script.Dir+'\data\'+Game.CurrentMap);
Player.WriteConsole('New '+inttostr(Data.Count/4)+' player spawnpoints layout has been saved.', GOOD);
end else Player.WriteConsole('No players spawn points to save.', BAD);
Data.Free;

end;

end;

procedure Timers(Ticks: integer);
var i, c: byte;
begin
for i := 1 to 32 do if Players[i].Active then if Active_Display[i] then for c := 1 to 254 do if Map.Spawns[c].Active then begin
case Map.Spawns[c].Style of
0: Players[i].WorldText(c+30, '+', 80, $808080, 0.08, Map.Spawns[c].X, Map.Spawns[c].Y);
1: Players[i].WorldText(c+30, '+', 80, $FF0000, 0.08, Map.Spawns[c].X, Map.Spawns[c].Y);
2: Players[i].WorldText(c+30, '+', 80, $0000FF, 0.08, Map.Spawns[c].X, Map.Spawns[c].Y);
3: Players[i].WorldText(c+30, '+', 80, $FFFF00, 0.08, Map.Spawns[c].X, Map.Spawns[c].Y);
4: Players[i].WorldText(c+30, '+', 80, $00FF00, 0.08, Map.Spawns[c].X, Map.Spawns[c].Y);
end;
end;
end;

procedure After_Change(NewMap: string);
var New_Spawn: TNewSpawnPoint; i: byte;
begin
if Length(Map_Data) > 0 then begin

for i := 1 to 254 do if Map.Spawns[i].Active then begin
if (Map.Spawns[i].Style = 0) or (Map.Spawns[i].Style = 1) or (Map.Spawns[i].Style = 2) or (Map.Spawns[i].Style = 3) or (Map.Spawns[i].Style = 4) then Map.Spawns[i].Active := false;
end;

for i := 0 to Length(Map_Data)-1 do begin
try
New_Spawn := TNewSpawnPoint.Create;
New_Spawn.Active := true;
New_Spawn.X := Map_Data[i].X;
New_Spawn.y := Map_Data[i].Y;
New_Spawn.Style := Map_Data[i].Style;
Map.AddSpawnPoint(New_Spawn);
except
Players.WriteConsole('Failed to add player spawnpoint! (ID: '+inttostr(i)+')',BAD);
finally
New_Spawn.Free;
end;
end;

for i := 1 to 32 do if Players[i].Active then Players[i].ChangeTeam(0, TJoinSilent);
end;

Map_Is_Change := false;
end;

procedure Before_Change(NewMap: string);
var Data: TStringList; Spawnpoints_Counts, i, Temp_Data_ID, Counts: byte;
begin
Map_Is_Change := true;
SetLength(Map_Data, 0);

if File.Exists(Script.Dir+'\data\'+NewMap) then begin
Data := File.CreateStringListFromFile(Script.Dir+'\data\'+NewMap);

if Data.Count > 0 then begin
Spawnpoints_Counts := Data.Count/4;
for i := 0 to Spawnpoints_Counts - 1 do if Data[Temp_Data_ID] = 'true' then begin
SetLength(Map_Data, Counts + 1);
SetLength(Used_Spawns, Counts + 1);
Used_Spawns[Counts] := false;
Map_Data[Counts].Active := true;
Map_Data[Counts].Style := strtoint(Data[Temp_Data_ID+1]);
Map_Data[Counts].X := strtoint(Data[Temp_Data_ID+2]);
Map_Data[Counts].Y := strtoint(Data[Temp_Data_ID+3]);
Temp_Data_ID := Temp_Data_ID + 4;
inc(Counts, 1);
end;
end;

Data.Free;
end;

end;

function OnDamage(Shooter, Victim: TActivePlayer; Damage: Single; BulletId: byte): Single;
begin
if Map_Is_Change then result := 0 else Result := Damage;
end;

procedure ScriptDecl();
var i:byte;
begin
Game.OnLeave := @LeaveGame;
Game.OnAdminCommand := @Admins_Commands;
Game.TickThreshold := 5;
Game.OnClockTick := @Timers;
Map.OnBeforeMapChange := @Before_Change;
Map.OnAfterMapChange := @After_Change;
for i := 1 to 32 do Players[i].OnDamage := @OnDamage;
end;

initialization
begin
ScriptDecl();
end;

end.




Pages: 1 ... 8 9 [10]