Difference between revisions of "SC3 Changelog"

From Soldat Community Wiki
Jump to: navigation, search
 
(19 intermediate revisions by 2 users not shown)
Line 3: Line 3:
 
{| class="wikitable"
 
{| class="wikitable"
 
! SoldatServer Version !! Changelog
 
! SoldatServer Version !! Changelog
 +
|-
 +
| 2.8.2 ||
 +
+ Added procedure [[TActivePlayer.RequestDiscordToken]]
 +
+ Added [[TGame.OnSteamAuth]] event
 +
+ Added [[TActivePlayer.SteamID]] and [[TActivePlayer.SteamIDString]] properties
 +
+ Added [[TMath|ScriptMath]] unit
 +
+ Added arctan to SC2
 +
+ Added SC3 [[TActivePlayer.ChangeTeam|TActivePlayer.ChangeTeam(Team, JoinType)]]
 +
+ Added missing [[TActivePlayer.PlaySound]]
 +
+ Added Players.Active[] and Players.Active.Count to SC3
 +
+ Added OnBeforeJoinTeam event to SC3
 +
- Removed TTeam.Add
 +
 +
~ Modified SC3 Player.OnBeforeRespawn now returns spawn position
 +
~ Modified SC3 TTeam.Players[] property to return TActivePlayer instead of TPlayer
 +
~ Modified SC3 TActivePlayer.Dummy is now RW
 +
~ Modified SC3 TActivePlayer.Alive is now read only (R)
 +
~ Modified KickPlayer fails on admin only if it's a ping, flood or vote related kick
 +
~ Modified TPlayer.Health and TPlayer.Vest are RW now
 +
~ Marked SC3 OnTCPCommand as deprecated
 +
~ Moved OnBeforeMapChange event to fire at round end (5s before "real" map switch)
 +
 +
* Fixed SC3 OnLeaveGame giving wrong team parameter, possibly crashing the server
 +
* Fixed SC3 OnAdminCommand sometimes not honoring the result
 +
* Fixed SC3 TActivePlayer.ChangeTeam not honoring Team parameter correctly
 +
* Fixed ForceWeapon function working with wrong Gun objects
 +
* Fixed console executed commands not calling Game.OnAdminCommand in SC3
 +
* Fixed regenerating polygons not calling OnPlayerDamage
 +
* Fixed TActivePlayer.Ping is always 1 #666
 
|-
 
|-
 
| 2.8.1 ||
 
| 2.8.1 ||
 
  + Added [[TActiveBullet.Owner]] property (Read only)
 
  + Added [[TActiveBullet.Owner]] property (Read only)
  + Added [[Script.OnUnhandledException]]
+
  + Added [[TScript.OnUnhandledException]]
 
   
 
   
  ~ Modified [[TPlayer.Alive]], [[TActivePlayer.Admin|Admin]], [[TActivePlayer.Human|Human]] and [[TPlayer.Dummy|Dummy]] properties to also check if player is active and return accordingly.
+
  ~ Modified [[TPlayer.Alive]], [[TActivePlayer.IsAdmin|IsAdmin]], [[TActivePlayer.Human|Human]] and [[TPlayer.Dummy|Dummy]] properties to also check if player is active and return accordingly.
 
  ~ Modified [[TActivePlayer.Deaths]] is now Read-Write
 
  ~ Modified [[TActivePlayer.Deaths]] is now Read-Write
  ~ Modified [[Script.OnException]] to be a procedure instead of function
+
  ~ Modified [[TScript.OnException]] to be a procedure instead of function
 
  ~ Modified SC3 exception handler now unloads the script if exception is thrown
 
  ~ Modified SC3 exception handler now unloads the script if exception is thrown
 
  ~ Modified SC3 exception handler should output more meaningful messages, even with debug mode off
 
  ~ Modified SC3 exception handler should output more meaningful messages, even with debug mode off
  ~ Modified [[TPlayer.Kick]], added Reason parameter
+
  ~ Modified [[TActivePlayer.Kick]], added Reason parameter
 
  ~ Modified [[TPlayers.Add]], added JoinType parameter
 
  ~ Modified [[TPlayers.Add]], added JoinType parameter
  ~ Modified Health and Vest are now stored as decimal values
+
  ~ Modified [[TPlayer.Health]] and [[TPlayer.Vest]] are now stored as decimal values
 
  ~ Modified [[TPlayer.Health]] type is now Single
 
  ~ Modified [[TPlayer.Health]] type is now Single
  ~ Modified [[TPlayer.OnDamage]] event now accepts Damage parameter as Single instead of Integer, return type changed accordingly
+
  ~ Modified [[TActivePlayer.OnDamage]] event now accepts Damage parameter as Single instead of Integer, return type changed accordingly
 
   
 
   
 
  * Fixed issues with SC3 FileAPI sometimes not working properly
 
  * Fixed issues with SC3 FileAPI sometimes not working properly
  * Fixed [[Script.Unload]] and [[Script.Recompile]] either not working or crashing
+
  * Fixed [[TScript.Unload]] and [[TScript.Recompile]] either not working or crashing
  * Fixed SC3 [[Script.OnException]] message sometimes being empty
+
  * Fixed SC3 [[TScript.OnException]] message sometimes being empty
 
  * Fixed SC3 [[TActivePlayer.OnKill|OnKill]] provided WeaponID value instead of BulletID
 
  * Fixed SC3 [[TActivePlayer.OnKill|OnKill]] provided WeaponID value instead of BulletID
 
  * Fixed [[TActivePlayer.ForceWeapon|ForceWeapon]] sometimes didn't apply ammo
 
  * Fixed [[TActivePlayer.ForceWeapon|ForceWeapon]] sometimes didn't apply ammo
  * Fixed [[TPlayer.OnVoteKickStart]] crashing when vote started by the server due to cheat detection
+
  * Fixed [[TActivePlayer.OnVoteKickStart]] crashing when vote started by the server due to cheat detection
 
  * Fixed SC3 script recompilation crashed the server when the new version had compile time errors.
 
  * Fixed SC3 script recompilation crashed the server when the new version had compile time errors.
 
|-
 
|-
 
| 2.8.0 ||
 
| 2.8.0 ||
  + Added basic conversion functions to SC3: [[weap2obj]], [[menu2obj]], [[obj2weap]], [[obj2menu]], [[weap2menu]], [[menu2weap]]
+
  + Added basic conversion functions to SC3: {{link|ScriptCore3|weap2obj}}, {{link|ScriptCore3|menu2obj}}, {{link|ScriptCore3|obj2weap}}, {{link|ScriptCore3|obj2menu}}, {{link|ScriptCore3|weap2menu}}, {{link|ScriptCore3|menu2weap}}
  + Added missing [[Game.TickCount]] to SC3
+
  + Added missing [[TGame.TickCount]] to SC3
  + Added missing [[TPlayer.KeyFlagThrow]] to SC3
+
  + Added missing [[TActivePlayer.KeyFlagThrow]] to SC3
 
   
 
   
 
  * Fixed [[TActivePlayer.OnWeaponChange]] was sometimes called too late
 
  * Fixed [[TActivePlayer.OnWeaponChange]] was sometimes called too late
 
  * Fixed added missing [[TPlayer.Vest|Vest]] property to SC3 [[TPlayer]]
 
  * Fixed added missing [[TPlayer.Vest|Vest]] property to SC3 [[TPlayer]]
  * Fixed [[TScript.ScriptName]] in SC3 Legacy mode contained full path instead of just folder name
+
  * Fixed [[TScript.Name]] in SC3 Legacy mode contained full path instead of just folder name
 
  * Fixed unpredictable [[TActivePlayer.OnWeaponChange|OnWeaponChange]] behavior when calling [[TActivePlayer.ForceWeapon|ForceWeapon]] from within
 
  * Fixed unpredictable [[TActivePlayer.OnWeaponChange|OnWeaponChange]] behavior when calling [[TActivePlayer.ForceWeapon|ForceWeapon]] from within
 
  * Fixed wrong player coordinates in [[TActivePlayer.OnAfterRespawn|OnAfterRespawn]] (SC3 only)
 
  * Fixed wrong player coordinates in [[TActivePlayer.OnAfterRespawn|OnAfterRespawn]] (SC3 only)
Line 49: Line 78:
 
  + Added SC3 property [[TActivePlayer.MouseAimX]] (read write - SmallInt) (write only works on bots)
 
  + Added SC3 property [[TActivePlayer.MouseAimX]] (read write - SmallInt) (write only works on bots)
 
  + Added SC3 property [[TActivePlayer.MouseAimY]] (read write - SmallInt) (write only works on bots)
 
  + Added SC3 property [[TActivePlayer.MouseAimY]] (read write - SmallInt) (write only works on bots)
  + Added SC3 [[Game.AdminPassword]] property (string - read write)
+
  + Added SC3 [[TGame.AdminPassword]] property (string - read write)
 
  + Added SC3 object constants: OBJECT_ALPHA_FLAG, OBJECT_BRAVO_FLAG, OBJECT_POINTMATCH_FLAG,  
 
  + Added SC3 object constants: OBJECT_ALPHA_FLAG, OBJECT_BRAVO_FLAG, OBJECT_POINTMATCH_FLAG,  
 
  OBJECT_USSOCOM, OBJECT_DESERT_EAGLE, OBJECT_HK_MP5, OBJECT_AK74, OBJECT_STEYR_AUG, OBJECT_SPAS12,
 
  OBJECT_USSOCOM, OBJECT_DESERT_EAGLE, OBJECT_HK_MP5, OBJECT_AK74, OBJECT_STEYR_AUG, OBJECT_SPAS12,
Line 60: Line 89:
 
  WTYPE_CHAINSAW, WTYPE_LAW, WTYPE_FLAMER, WTYPE_BOW, WTYPE_BOW2, WTYPE_M2, WTYPE_NOWEAPON,  
 
  WTYPE_CHAINSAW, WTYPE_LAW, WTYPE_FLAMER, WTYPE_BOW, WTYPE_BOW2, WTYPE_M2, WTYPE_NOWEAPON,  
 
  WTYPE_FRAGGRENADE, WTYPE_CLUSTERGRENADE, WTYPE_CLUSTER, WTYPE_THROWNKNIFE
 
  WTYPE_FRAGGRENADE, WTYPE_CLUSTERGRENADE, WTYPE_CLUSTER, WTYPE_THROWNKNIFE
  + Added SC3 function [[MD5]](A: string): string;
+
  + Added SC3 function [[ScriptCore3.MD5|Md5]](A: string): string;
 
  + Added SC3 type [[TBannedHW]] = record HW: string; Time: Integer; Reason: string; end;
 
  + Added SC3 type [[TBannedHW]] = record HW: string; Time: Integer; Reason: string; end;
 
  + Added SC3 type [[TBannedIP]] = record IP: ShortString; Time: Integer; Reason: string; end;
 
  + Added SC3 type [[TBannedIP]] = record IP: ShortString; Time: Integer; Reason: string; end;
  + Added SC3 class [[TBanLists]] (accessible over global variable "[[Game.BanLists]]")
+
  + Added SC3 class [[TBanLists]] (accessible over global variable "[[TGame.BanLists|Game.BanLists]]")
 
  + Added SC3 procedure [[TBanLists.AddHWBan]](HW, Reason: string; Duration: Integer);
 
  + Added SC3 procedure [[TBanLists.AddHWBan]](HW, Reason: string; Duration: Integer);
 
  + Added SC3 procedure [[TBanLists.AddIPBan]](IP: ShortString; Reason: string; Duration: Integer);
 
  + Added SC3 procedure [[TBanLists.AddIPBan]](IP: ShortString; Reason: string; Duration: Integer);
Line 91: Line 120:
 
  ~ Modified SC3 property [[TActivePlayer.KeyProne]] access mode to read write (write only works on bots)
 
  ~ Modified SC3 property [[TActivePlayer.KeyProne]] access mode to read write (write only works on bots)
 
   
 
   
  * Fixed [[TMap.SpawnObject]] function had swapped knife and saw
+
  * Fixed [[TMap.AddObject]] function had swapped knife and saw
 
  * Fixed votes started via script didn't work properly
 
  * Fixed votes started via script didn't work properly
 
  * Fixed SC3 property [[TActivePlayer.KeyProne]] returns position instead pressed key
 
  * Fixed SC3 property [[TActivePlayer.KeyProne]] returns position instead pressed key
  * Fixed SC3 [[Game.Password]] shows admin password instead of game password #604
+
  * Fixed SC3 [[TGame.Password]] shows admin password instead of game password #604
  * Fixed SC3 [[Game.Password]] property was read only
+
  * Fixed SC3 [[TGame.Password]] property was read only
 
  * Fixed SC3 joining the game increases sometimes team count by 2 instead of 1
 
  * Fixed SC3 joining the game increases sometimes team count by 2 instead of 1
  * Fixed SC3 [[Game.Teams]] [[TTeam.Player]] property returned nil or an error
+
  * Fixed SC3 [[TGame.Teams]] [[TTeam.Player|Player]] property returned nil or an error
 
|-
 
|-
 
| 2.7.8 ||
 
| 2.7.8 ||
  + Added SC3 function [[StrToDateTime]](const S: string): TDateTime;
+
  + Added SC3 function [[ScriptCore3.StrToDateTime|StrToDateTime]](const S: string): TDateTime;
 
  + Added SC3 event [[TGame.OnTCPCommand]](Ip: string; Port: Word; Command: string): Boolean;
 
  + Added SC3 event [[TGame.OnTCPCommand]](Ip: string; Port: Word; Command: string): Boolean;
 
  + Added SC3 event [[TActivePlayer.OnKitPickup]](Player: TActivePlayer; Kit: TActiveMapObject)
 
  + Added SC3 event [[TActivePlayer.OnKitPickup]](Player: TActivePlayer; Kit: TActiveMapObject)
Line 106: Line 135:
 
  + Added SC3 procedure [[TActivePlayer.WorldText]](Layer: Byte; Text: string; Delay: Integer; Color: Longint; Scale, X, Y: Single)
 
  + Added SC3 procedure [[TActivePlayer.WorldText]](Layer: Byte; Text: string; Delay: Integer; Color: Longint; Scale, X, Y: Single)
 
  + Added SC3 procedure [[TPlayers.WorldText]](Layer: Byte; Text: string; Delay: Integer; Color: Longint; Scale, X, Y: Single)
 
  + Added SC3 procedure [[TPlayers.WorldText]](Layer: Byte; Text: string; Delay: Integer; Color: Longint; Scale, X, Y: Single)
  + Added SC3 procedure [[TGame.TOnAdminConnect]](Ip: string; Port: Word)
+
  + Added SC3 event [[TGame.OnAdminConnect]](Ip: string; Port: Word)
  + Added SC3 procedure [[TGame.TOnAdminDisconnect]](Ip: string; Port: Word)
+
  + Added SC3 event [[TGame.OnAdminDisconnect]](Ip: string; Port: Word)
 
  + Added SC3 procedure [[TActivePlayer.SetVelocity]](VelX, VelY: Single)
 
  + Added SC3 procedure [[TActivePlayer.SetVelocity]](VelX, VelY: Single)
 
  + Added SC3 function [[TGame.TOnAdminCommand]](Player: TActivePlayer; Command: string): boolean
 
  + Added SC3 function [[TGame.TOnAdminCommand]](Player: TActivePlayer; Command: string): boolean
Line 144: Line 173:
 
  * Fixed [[TOnWeaponChangeEvent]] does not hold valueable data #582
 
  * Fixed [[TOnWeaponChangeEvent]] does not hold valueable data #582
 
  * Fixed [[TActiveObject]]'s Style is 0 (Flags) #584
 
  * Fixed [[TActiveObject]]'s Style is 0 (Flags) #584
  * Fixed [[TActivePlayer.OnFlagDrop]] [[TActiveFlag.ID|Flag.ID]] can't be accessed or duplicates #585
+
  * Fixed [[TActivePlayer.OnFlagDrop]] [[TActiveMapObject.ID|Flag.ID]] can't be accessed or duplicates #585
 
  * Fixed [[TActivePlayer.Alive|Player.Alive]] := FALSE deals damage (doesn't always kill) #586
 
  * Fixed [[TActivePlayer.Alive|Player.Alive]] := FALSE deals damage (doesn't always kill) #586
 
  * Fixed [[TActivePlayer.Move]] causes players to drop weapons and flags randomly #142
 
  * Fixed [[TActivePlayer.Move]] causes players to drop weapons and flags randomly #142
Line 169: Line 198:
 
{| class="wikitable"
 
{| class="wikitable"
 
| 2.7.8.b2 ||
 
| 2.7.8.b2 ||
  + event [[TGame.OnTCPCommand]]
+
  + event TGame.OnTCPCommand
  + function [[StrToDateTime]]
+
  + function StrToDateTime
 
   
 
   
  * [[OnKillEvent]] declaration changed (Killer, Victim: TActivePlayer; BulletID: Byte)
+
  * OnKillEvent declaration changed (Killer, Victim: TActivePlayer; BulletID: Byte)
  * [[TOnTCPMessageEvent]] declaration changed (Ip: string; Port: Word; Message: string)
+
  * TOnTCPMessageEvent declaration changed (Ip: string; Port: Word; Message: string)
  * Fixed [[TOnWeaponChangeEvent]] does not hold valueable data #582
+
  * Fixed TOnWeaponChangeEvent does not hold valueable data #582
  * Fixed [[TActiveObject]]'s Style is 0 (Flags) #584
+
  * Fixed TActiveObject's Style is 0 (Flags) #584
  * Fixed [[Player.Alive]] := FALSE deals damage (doesn't always kill) #586
+
  * Fixed Player.Alive := FALSE deals damage (doesn't always kill) #586
  * Fixed [[TPlayer.OnFlagDrop]] Flag.ID can't be accessed or duplicates #585
+
  * Fixed TPlayer.OnFlagDrop Flag.ID can't be accessed or duplicates #585
  * Fixed [[MovePlayer]] causes players to drop weapons and flags randomly #142
+
  * Fixed MovePlayer causes players to drop weapons and flags randomly #142
  * Fixed [[MovePlayer]] randomly kills and respawns player #247
+
  * Fixed MovePlayer randomly kills and respawns player #247
  * Fixed Server refuses client if [[MovePlayer]] is used on connection #587
+
  * Fixed Server refuses client if MovePlayer is used on connection #587
  * Fixed SC3 [[TMapObject.Style]] results to be the same as in wiki
+
  * Fixed SC3 TMapObject.Style results to be the same as in wiki
  * Fixed SC3 using [[Game.OnRequest]] crashes server
+
  * Fixed SC3 using TGame.OnRequest crashes server
  * Reverted "Modified SC3 type [[TOnKillEvent]] declaration changed (Killer, Victim: TActivePlayer; Bullet: TActiveMapBullet)"
+
  * Reverted "Modified SC3 type TOnKillEvent declaration changed (Killer, Victim: TActivePlayer; Bullet: TActiveMapBullet)"
 
|-
 
|-
 
|-
 
|-
 
| 2.7.8.b1 ||
 
| 2.7.8.b1 ||
  + event [[TActivePlayer.OnKitPickup]]
+
  + event TActivePlayer.OnKitPickup
  + event [[TActivePlayer.OnFlagDrop]]
+
  + event TActivePlayer.OnFlagDrop
  + procedure [[TActivePlayer.WorldText]]
+
  + procedure TActivePlayer.WorldText
  + procedure [[TPlayers.WorldText]]
+
  + procedure TPlayers.WorldText
  + event [[TGame.OnAdminConnect]]
+
  + event TGame.OnAdminConnect
  + event [[TGame.OnAdminDisconnect]]
+
  + event TGame.OnAdminDisconnect
  + procedure [[TActivePlayer.SetVelocity]]
+
  + procedure TActivePlayer.SetVelocity
  + event [[TGame.OnAdminCommand]]
+
  + event TGame.OnAdminCommand
  + event [[TGame.OnTCPMessage]]
+
  + event TGame.OnTCPMessage
  + function [[TMap.CreateBulletVector]]
+
  + function TMap.CreateBulletVector
  + function [[TMap.CreateBullet]]
+
  + function TMap.CreateBullet
  + function [[Distance]]
+
  + function Distance
  + property [[TActivePlayer.IsAdmin]]
+
  + property TActivePlayer.IsAdmin
  + property [[TGame.CurrentMap]]
+
  + property TGame.CurrentMap
  + class [[TMapsList]]
+
  + class TMapsList
  + procedure [[TMapsList.AddMap]]
+
  + procedure TMapsList.AddMap
  + procedure [[TMapsList.RemoveMap]]
+
  + procedure TMapsList.RemoveMap
  + function [[TMapsList.GetMapIdByName]]
+
  + function TMapsList.GetMapIdByName
  + property [[TMapsList.Map]]
+
  + property TMapsList.Map
  + property [[TMapsList.CurrentMapId]]
+
  + property TMapsList.CurrentMapId
  + property [[TMapsList.MapsCount]]
+
  + property TMapsList.MapsCount
  + class [[TGlobal]]
+
  + class TGlobal
  + property [[TGlobal.DateSeparator]]
+
  + property TGlobal.DateSeparator
  + property [[TGlobal.ShortDateFormat]]
+
  + property TGlobal.ShortDateFormat
  + class [[TActiveMapBullet]]
+
  + class TActiveMapBullet
  + function [[TActiveMapBullet.GetOwnerWeaponId]]
+
  + function TActiveMapBullet.GetOwnerWeaponId
  + property [[TActiveMapBullet.ID]]
+
  + property TActiveMapBullet.ID
  + property [[TActiveMapBullet.Active]]
+
  + property TActiveMapBullet.Active
  + property [[TActiveMapBullet.Style]]
+
  + property TActiveMapBullet.Style
  + property [[TActiveMapBullet.X]]
+
  + property TActiveMapBullet.X
  + property [[TActiveMapBullet.Y]]
+
  + property TActiveMapBullet.Y
  + property [[TActiveMapBullet.VelX]]
+
  + property TActiveMapBullet.VelX
  + property [[TActiveMapBullet.VelY]]
+
  + property TActiveMapBullet.VelY
 
   
 
   
  * procedure name TActivePlayer.Forward altered to [[TActivePlayer.ForwardTo]]
+
  * procedure name TActivePlayer.Forward altered to TActivePlayer.ForwardTo
  * [[TOnRequestEvent]] declaration changed (+ Hw)
+
  * TOnRequestEvent declaration changed (+ Hw)
  * [[TOnDamageEvent]] declaration changed (BulletID: Byte to Bullet: TActiveMapBullet)
+
  * TOnDamageEvent declaration changed (BulletID: Byte to Bullet: TActiveMapBullet)
  * [[TOnKillEvent]] declaration changed (BulletID: Byte to Bullet: TActiveMapBullet)
+
  * TOnKillEvent declaration changed (BulletID: Byte to Bullet: TActiveMapBullet)
 
|-
 
|-
 
|}
 
|}
  
 
[[Category:ScriptCore_3]]
 
[[Category:ScriptCore_3]]

Latest revision as of 10:50, 10 May 2020

Full releases

SoldatServer Version Changelog
2.8.2
+ Added procedure TActivePlayer.RequestDiscordToken
+ Added TGame.OnSteamAuth event
+ Added TActivePlayer.SteamID and TActivePlayer.SteamIDString properties
+ Added ScriptMath unit
+ Added arctan to SC2
+ Added SC3 TActivePlayer.ChangeTeam(Team, JoinType)
+ Added missing TActivePlayer.PlaySound
+ Added Players.Active[] and Players.Active.Count to SC3
+ Added OnBeforeJoinTeam event to SC3
- Removed TTeam.Add
~ Modified SC3 Player.OnBeforeRespawn now returns spawn position
~ Modified SC3 TTeam.Players[] property to return TActivePlayer instead of TPlayer
~ Modified SC3 TActivePlayer.Dummy is now RW
~ Modified SC3 TActivePlayer.Alive is now read only (R)
~ Modified KickPlayer fails on admin only if it's a ping, flood or vote related kick
~ Modified TPlayer.Health and TPlayer.Vest are RW now
~ Marked SC3 OnTCPCommand as deprecated
~ Moved OnBeforeMapChange event to fire at round end (5s before "real" map switch)

* Fixed SC3 OnLeaveGame giving wrong team parameter, possibly crashing the server
* Fixed SC3 OnAdminCommand sometimes not honoring the result
* Fixed SC3 TActivePlayer.ChangeTeam not honoring Team parameter correctly
* Fixed ForceWeapon function working with wrong Gun objects
* Fixed console executed commands not calling Game.OnAdminCommand in SC3
* Fixed regenerating polygons not calling OnPlayerDamage
* Fixed TActivePlayer.Ping is always 1 #666
2.8.1
+ Added TActiveBullet.Owner property (Read only)
+ Added TScript.OnUnhandledException

~ Modified TPlayer.Alive, IsAdmin, Human and Dummy properties to also check if player is active and return accordingly.
~ Modified TActivePlayer.Deaths is now Read-Write
~ Modified TScript.OnException to be a procedure instead of function
~ Modified SC3 exception handler now unloads the script if exception is thrown
~ Modified SC3 exception handler should output more meaningful messages, even with debug mode off
~ Modified TActivePlayer.Kick, added Reason parameter
~ Modified TPlayers.Add, added JoinType parameter
~ Modified TPlayer.Health and TPlayer.Vest are now stored as decimal values
~ Modified TPlayer.Health type is now Single
~ Modified TActivePlayer.OnDamage event now accepts Damage parameter as Single instead of Integer, return type changed accordingly

* Fixed issues with SC3 FileAPI sometimes not working properly
* Fixed TScript.Unload and TScript.Recompile either not working or crashing
* Fixed SC3 TScript.OnException message sometimes being empty
* Fixed SC3 OnKill provided WeaponID value instead of BulletID
* Fixed ForceWeapon sometimes didn't apply ammo
* Fixed TActivePlayer.OnVoteKickStart crashing when vote started by the server due to cheat detection
* Fixed SC3 script recompilation crashed the server when the new version had compile time errors.
2.8.0
+ Added basic conversion functions to SC3: weap2obj, menu2obj, obj2weap, obj2menu, weap2menu, menu2weap
+ Added missing TGame.TickCount to SC3
+ Added missing TActivePlayer.KeyFlagThrow to SC3

* Fixed TActivePlayer.OnWeaponChange was sometimes called too late
* Fixed added missing Vest property to SC3 TPlayer
* Fixed TScript.Name in SC3 Legacy mode contained full path instead of just folder name
* Fixed unpredictable OnWeaponChange behavior when calling ForceWeapon from within
* Fixed wrong player coordinates in OnAfterRespawn (SC3 only)
* Fixed TActivePlayer.OnWeaponChange event sometimes called with weird weapon parameters
* Fixed incorrect Weapon being passed to TActivePlayer.OnKill
* Fixed TActivePlayer.Move not broadcasted to players when set on bot
* Fixed TActivePlayer.SetVelocity not broadcasted to players when set on bot
* Fixed Random function in SC2 producing weird results
* Fixed SC3 sometimes throwing access violations when hitting exception  
  (most noticable when trying to load non existing dll
2.7.9
+ Added SC3 property TActivePlayer.IsProne (read only - boolean)
+ Added SC3 property TActivePlayer.MouseAimX (read write - SmallInt) (write only works on bots)
+ Added SC3 property TActivePlayer.MouseAimY (read write - SmallInt) (write only works on bots)
+ Added SC3 TGame.AdminPassword property (string - read write)
+ Added SC3 object constants: OBJECT_ALPHA_FLAG, OBJECT_BRAVO_FLAG, OBJECT_POINTMATCH_FLAG, 
OBJECT_USSOCOM, OBJECT_DESERT_EAGLE, OBJECT_HK_MP5, OBJECT_AK74, OBJECT_STEYR_AUG, OBJECT_SPAS12,
OBJECT_RUGER77, OBJECT_M79, OBJECT_BARRET_M82A1, OBJECT_MINIMI, OBJECT_MINIGUN, OBJECT_RAMBO_BOW, 
OBJECT_MEDICAL_KIT, OBJECT_GRENADE_KIT, OBJECT_FLAMER_KIT, OBJECT_PREDATOR_KIT, OBJECT_VEST_KIT, 
OBJECT_BERSERK_KIT, OBJECT_CLUSTER_KIT, OBJECT_PARACHUTE, OBJECT_COMBAT_KNIFE, OBJECT_CHAINSAW, 
OBJECT_LAW, OBJECT_STATIONARY_GUN
+ Added SC3 weapon constants: WTYPE_EAGLE, WTYPE_MP5, WTYPE_AK74, WTYPE_STEYRAUG, WTYPE_SPAS12, 
WTYPE_RUGER77, WTYPE_M79, WTYPE_BARRETT, WTYPE_M249, WTYPE_MINIGUN, WTYPE_USSOCOM, WTYPE_KNIFE, 
WTYPE_CHAINSAW, WTYPE_LAW, WTYPE_FLAMER, WTYPE_BOW, WTYPE_BOW2, WTYPE_M2, WTYPE_NOWEAPON, 
WTYPE_FRAGGRENADE, WTYPE_CLUSTERGRENADE, WTYPE_CLUSTER, WTYPE_THROWNKNIFE
+ Added SC3 function Md5(A: string): string;
+ Added SC3 type TBannedHW = record HW: string; Time: Integer; Reason: string; end;
+ Added SC3 type TBannedIP = record IP: ShortString; Time: Integer; Reason: string; end;
+ Added SC3 class TBanLists (accessible over global variable "Game.BanLists")
+ Added SC3 procedure TBanLists.AddHWBan(HW, Reason: string; Duration: Integer);
+ Added SC3 procedure TBanLists.AddIPBan(IP: ShortString; Reason: string; Duration: Integer);
+ Added SC3 function TBanLists.DelHWBan(HW: string): Boolean;
+ Added SC3 function TBanLists.DelIPBan(IP: ShortString): Boolean;
+ Added SC3 function TBanLists.IsBannedHW(HW: string): Boolean;
+ Added SC3 function TBanLists.IsBannedIP(IP: ShortString): Boolean;
+ Added SC3 function TBanLists.GetHWBanId(HW: string): Integer;
+ Added SC3 function TBanLists.GetIPBanId(IP: ShortString): Integer;
+ Added SC3 property TBanLists.HW (read only - array of TBannedHW)
+ Added SC3 property TBanLists.IP (read only - array of TBannedIP)
+ Added SC3 property TBanLists.BannedHWCount: (read only - Integer)
+ Added SC3 property TBanLists.BannedIPCount (read only - Integer)

~ Modified modifying velocity of bots to be less laggy
~ Modified MovePlayer function to be less laggy on bots
~ Modified SC3 property TActivePlayer.KeyUp access mode to read write (write only works on bots)
~ Modified SC3 property TActivePlayer.KeyLeft access mode to read write (write only works on bots)
~ Modified SC3 property TActivePlayer.KeyRight access mode to read write (write only works on bots)
~ Modified SC3 property TActivePlayer.KeyShoot access mode to read write (write only works on bots)
~ Modified SC3 property TActivePlayer.KeyJetpack access mode to read write (write only works on bots)
~ Modified SC3 property TActivePlayer.KeyGrenade access mode to read write (write only works on bots)
~ Modified SC3 property TActivePlayer.KeyChangeWeap access mode to read write (write only works on bots)
~ Modified SC3 property TActivePlayer.KeyThrow access mode to read write (write only works on bots)
~ Modified SC3 property TActivePlayer.KeyReload access mode to read write (write only works on bots)
~ Modified SC3 property TActivePlayer.KeyCrouch access mode to read write (write only works on bots)
~ Modified SC3 property TActivePlayer.KeyProne access mode to read write (write only works on bots)

* Fixed TMap.AddObject function had swapped knife and saw
* Fixed votes started via script didn't work properly
* Fixed SC3 property TActivePlayer.KeyProne returns position instead pressed key
* Fixed SC3 TGame.Password shows admin password instead of game password #604
* Fixed SC3 TGame.Password property was read only
* Fixed SC3 joining the game increases sometimes team count by 2 instead of 1
* Fixed SC3 TGame.Teams Player property returned nil or an error
2.7.8
+ Added SC3 function StrToDateTime(const S: string): TDateTime;
+ Added SC3 event TGame.OnTCPCommand(Ip: string; Port: Word; Command: string): Boolean;
+ Added SC3 event TActivePlayer.OnKitPickup(Player: TActivePlayer; Kit: TActiveMapObject)
+ Added SC3 event TActivePlayer.OnFlagDrop(Player: TActivePlayer; Flag: TActiveFlag; Team: Byte; Thrown: Boolean)
+ Added SC3 procedure TActivePlayer.WorldText(Layer: Byte; Text: string; Delay: Integer; Color: Longint; Scale, X, Y: Single)
+ Added SC3 procedure TPlayers.WorldText(Layer: Byte; Text: string; Delay: Integer; Color: Longint; Scale, X, Y: Single)
+ Added SC3 event TGame.OnAdminConnect(Ip: string; Port: Word)
+ Added SC3 event TGame.OnAdminDisconnect(Ip: string; Port: Word)
+ Added SC3 procedure TActivePlayer.SetVelocity(VelX, VelY: Single)
+ Added SC3 function TGame.TOnAdminCommand(Player: TActivePlayer; Command: string): boolean
+ Added SC3 function TGame.TOnTCPMessage(Ip: string; Port: Word; Text: string): boolean
+ Added SC3 function TMap.CreateBulletVector(A, B: TVector; HitM: Single; sStyle: Byte; Owner: TActivePlayer): Integer
+ Added SC3 function TMap.CreateBullet(X, Y, VelX, VelY, HitM_ Single; sStyle: Byte; Owner: TActivePlayer): Integer
+ Added SC3 function Distance(X1, X2, Y1, Y2: Single): Single
+ Added SC3 property TActivePlayer.IsAdmin (read write - Boolean)
+ Added SC3 property TGame.CurrentMap (read only - string)
+ Added SC3 class TMapsList (accessible over global variable "Game.MapsList")
+ Added SC3 procedure TMapsList.AddMap(Name: string)
+ Added SC3 procedure TMapsList.RemoveMap(Name: string)
+ Added SC3 function TMapsList.GetMapIdByName(Name: string): Integer
+ Added SC3 property TMapsList.Map (read only - array of string)
+ Added SC3 property TMapsList.CurrentMapId (read write - Integer)
+ Added SC3 property TMapsList.MapsCount (read only - Integer)
+ Added SC3 class TGlobal (accessible over global variable "Global")
+ Added SC3 property TGlobal.DateSeparator (read write - string)
+ Added SC3 property TGlobal.ShortDateFormat (read write - string)
+ Added SC3 class TActiveMapBullet (accessible over global Byte array "Map.Bullets")
+ Added SC3 function TActiveMapBullet.GetOwnerWeaponId: Integer
+ Added SC3 property TActiveMapBullet.ID (read only - Byte)
+ Added SC3 property TActiveMapBullet.Active (read only - Boolean)
+ Added SC3 property TActiveMapBullet.X (read only - Single)
+ Added SC3 property TActiveMapBullet.Y (read only - Single)
+ Added SC3 property TActiveMapBullet.VelX (read only - Single)
+ Added SC3 property TActiveMapBullet.VelY (read only - Single)

~ Modified SC3 type TOnKillEvent declaration to procedure(Killer, Victim: TActivePlayer; BulletID: Byte)
~ Modified SC3 type TOnTCPMessageEvent declaration to procedure(Ip: string; Port: Word; Message: string)
~ Modified request game log line from "IP:PORT requesting game..." to "IP:PORT|HWID requesting game..."
~ Modified SC3 procedure name TActivePlayer.Forward altered to TActivePlayer.ForwardTo
~ Modified SC3 type TOnRequestEvent declaration to function(Ip, Hw: string; Port: Word; State: Byte; Forwarded: Boolean; Password: string): Integer
~ Modified SC3 type TOnDamageEvent declaration to function(Shooter, Victim: TActivePlayer; Damage: Integer; Bullet: TActiveMapBullet): Integer

* Fixed TOnWeaponChangeEvent does not hold valueable data #582
* Fixed TActiveObject's Style is 0 (Flags) #584
* Fixed TActivePlayer.OnFlagDrop Flag.ID can't be accessed or duplicates #585
* Fixed Player.Alive := FALSE deals damage (doesn't always kill) #586
* Fixed TActivePlayer.Move causes players to drop weapons and flags randomly #142
* Fixed TActivePlayer.Move randomly kills and respawns player #247
* Fixed Server refuses client if TActivePlayer.Move is used on connection #587
* Fixed SC3 TMapObject.Style results to be the same as in wiki
* Fixed SC3 using TGame.OnRequest crashes server
* Fixed SC3 Variable TGame.VotePercent is always set up on 0 #532
* Fixed SC3 TActivePlayer.Ban always bans for 0 minutes #576
* Fixed OnVoteMap/OnVoteMapStartevents are not working as intended #550
* Fixed SC3 - TActivePlayer.OnWeaponChange does not provide changed weapon information #577
* Fixed SC3 - TActivePlayer.OnKill/TActivePlayer.OnDamage - WeaponType is unpredictable #356
* Fixed TActivePlayer.BigText with layer 0 causes WriteConsole behaviour #400
* Fixed SC3 StrToDate doesn't work as intended #401
* Fixed /recompile <script> hangs up admin client #578
* Fixed SC3 Strange TMap.RayCast values when walking "into" the wall #395
* Fixed SC3 some server crashes after unhandled exception
* Fixed SC3 some function results could be ignored in some cases

Other versions

2.7.8.b2
+ event TGame.OnTCPCommand
+ function StrToDateTime

* OnKillEvent declaration changed (Killer, Victim: TActivePlayer; BulletID: Byte)
* TOnTCPMessageEvent declaration changed (Ip: string; Port: Word; Message: string)
* Fixed TOnWeaponChangeEvent does not hold valueable data #582
* Fixed TActiveObject's Style is 0 (Flags) #584
* Fixed Player.Alive := FALSE deals damage (doesn't always kill) #586
* Fixed TPlayer.OnFlagDrop Flag.ID can't be accessed or duplicates #585
* Fixed MovePlayer causes players to drop weapons and flags randomly #142
* Fixed MovePlayer randomly kills and respawns player #247
* Fixed Server refuses client if MovePlayer is used on connection #587
* Fixed SC3 TMapObject.Style results to be the same as in wiki
* Fixed SC3 using TGame.OnRequest crashes server
* Reverted "Modified SC3 type TOnKillEvent declaration changed (Killer, Victim: TActivePlayer; Bullet: TActiveMapBullet)"
2.7.8.b1
+ event TActivePlayer.OnKitPickup
+ event TActivePlayer.OnFlagDrop
+ procedure TActivePlayer.WorldText
+ procedure TPlayers.WorldText
+ event TGame.OnAdminConnect
+ event TGame.OnAdminDisconnect
+ procedure TActivePlayer.SetVelocity
+ event TGame.OnAdminCommand
+ event TGame.OnTCPMessage
+ function TMap.CreateBulletVector
+ function TMap.CreateBullet
+ function Distance
+ property TActivePlayer.IsAdmin
+ property TGame.CurrentMap
+ class TMapsList
+ procedure TMapsList.AddMap
+ procedure TMapsList.RemoveMap
+ function TMapsList.GetMapIdByName
+ property TMapsList.Map
+ property TMapsList.CurrentMapId
+ property TMapsList.MapsCount
+ class TGlobal
+ property TGlobal.DateSeparator
+ property TGlobal.ShortDateFormat
+ class TActiveMapBullet
+ function TActiveMapBullet.GetOwnerWeaponId
+ property TActiveMapBullet.ID
+ property TActiveMapBullet.Active
+ property TActiveMapBullet.Style
+ property TActiveMapBullet.X
+ property TActiveMapBullet.Y
+ property TActiveMapBullet.VelX
+ property TActiveMapBullet.VelY

* procedure name TActivePlayer.Forward altered to TActivePlayer.ForwardTo
* TOnRequestEvent declaration changed (+ Hw)
* TOnDamageEvent declaration changed (BulletID: Byte to Bullet: TActiveMapBullet)
* TOnKillEvent declaration changed (BulletID: Byte to Bullet: TActiveMapBullet)