SC3 Changelog

From Soldat Community Wiki
(Redirected from Script Core 3 Changelog)
Jump to: navigation, search

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)