Skip to content

Releases: ScriptedEvents/ScriptedEventsReloaded

Version 0.16.0 - Experimental

31 Mar 16:27

Choose a tag to compare

Pre-release

SER v0.16: The Syntax Update

Version 0.16 is a major quality-of-life overhaul designed to make your scripts look more like modern code and less like a sea of brackets. We’ve focused on "syntactic sugar" to reduce typing and improve readability across the board.


💎 The Property Revolution (->)

The most significant change in v0.16 is how you access data. We are moving away from clunky method calls and bracketed properties in favor of the arrow operator.

Property Access in Variables

You no longer need to wrap properties in curly braces when defining variables.

  • Old Syntax: $name = {@plr name}
  • New Syntax: $name = @plr -> name

Replacing <Type>Info Methods for References

Specialized info methods (like ItemInfo, DamageInfo, or PickupInfo) have been deprecated or removed in favor of the more intuitive arrow syntax.

  • Old (Item): $type = ItemInfo *item type
  • New (Item): $type = *item -> type
  • Old (Pickup): @owner = PickupInfo *pickup lastOwner
  • New (Pickup): @owner = *pickup -> lastOwner

Direct Property Access

SER now scans references to give you direct access to their underlying properties. You are no longer limited to properties manually added by developers—if it exists in the source code, you can grab it with the -> operator. This opens up deep script customization for almost any game object.

SER Values have Properties

Methods like DurationInfo have been removed in favor of having direct properties of SER values.

  • Old: $seconds = DurationInfo $duration totalSeconds
  • New: $seconds = $duration -> totalSeconds
  • Old: $length = TextLength $text
  • New: $length = $text -> length

Property Chaining

You can now drill down through multiple objects in a single line of code.

  • New Capability: $nameLengthOdd = @sender -> name -> length -> isOdd

⏳ Keyword Rework: wait and wait_until

We have transitioned yielding commands from Methods to Keywords. This better represents their role in controlling the script's internal execution flow. Note the shift to lowercase.

  • Old Syntax: Wait 5s
  • New Syntax: wait 5s
  • Old Syntax: WaitUntil ({AmountOf @all} is 0)
  • New Syntax: wait_until {AmountOf @all} is 0

🧹 Streamlined Logic & Expressions

Math Without the "Bracket Tax"

Math expressions in variable definitions are now much cleaner. The engine is now smart enough to parse these without requiring parentheses.

  • Old Syntax: $five = (2 + 3)
  • New Syntax: $five = 2 + 3

Inline with Statements

To keep your loops and functions compact, the with keyword can now reside on the same line as the header.

  • Old (Loop):
    over @all
        with @plr
        ...
    end
    
  • New (Loop):
    over @all with @plr
        ...
    end
    
  • Old (Function):
    func $Add
        with $a $b
        ...
    end
    
  • New (Function):
    func $Add with $a $b
        ...
    end
    

📝 Modern Scripting Comforts

Inline Comments

You can finally document your code as you write it. Inline comments are now fully supported using the # symbol.

  • Example: Print "Hello" # This method prints "Hello"
  • Example: if $x > $y # Check if $x is bigger than $y

The VSCode color extension

The extension will soon be recieving an update to properly handle the new syntax, but it is not ready yet.

Version 0.15.1

15 Mar 18:34

Choose a tag to compare

Fixes

  • Fixed return and break keywords not terminating functions until a yield
  • Fixed Exiled being requried to load the plugin (again)
  • Fixed SetToyRotation and SetToyScale operating on Exiled toys instead of LabApi toys
  • FIxed addDurationIfActive argument in GiveEffectMethod method not being applied correctly
  • Fixed invalid database storing of text values (@Tosoks67)

Additions

  • Added the ability to get the type of error and stack trace of the error in on_error statement (@Tosoks67)
    attempt
        ...
    on_error
        #              👇       👇
        with $message $type $stackTrace
        ...
    end
    
  • Added color value type (part of literal values)
    # this creates a red color value
    $color = ff0000
    
  • Added SetSpectatability method
  • Added RemoveDBKey method (@Tosoks67)

Improvements

  • Improved the serhelp methods command to list methods that can be added by frameworks, even if a given framework is not present

Version 0.15

08 Mar 13:05

Choose a tag to compare

CustomCommand flag additions

  • *command local variable
  • ResetGlobalCommandCooldown method
  • ResetPlayerCommandCooldown method
  • -- invalidRankMessage argument
  • -- neededPermission argument
  • -- noPermissionMessage argument
  • -- onCooldownMessage argument
  • -- globalCooldown argument
  • -- onGlobalCooldownMessage argument
  • Optional arguments for -- arguments option

Enum flag changes

(not to be confused with script flags)

  • Added new syntax to define multiple enum values for the same argument using | syntax
    Instead of using ToFlags method, use the Val1|Val2|Val3 system instead.
    Example: SetPrimitiveObjectProperties *toy _ _ Collidable|Visible
    Be sure to NOT put a space there! Doing so will result in SER viewing them as different arguments.
  • Removed ToFlags method

Fixes

  • Fixed damage option of DamageInfo method returning text instead of a number
  • Fixed the description in text arguments saying that text can be provided without quotes when not
  • Fixed Chance method having inverted chance of returning true
  • Fixed stop keyword crashing the server if used in specific circumstances
  • Fixed RespawnWaveInfo not being compatible with all wave references (@Tosoks67)
  • Fixed EXILED being required for SER to load (@Tosoks67)
  • Fixed some enums not being searchable using serhelp command
  • Fixed obsolete enum values being listed as available to use
  • Fixed events tring to create invalid variables
  • Fixed TPRoom method erroring when not providing optional arguments
  • Fixed incorrect tracking of running scripts resulting in "ghost scripts"
  • Fixed OnEvent flag not erroring when provided with an incorrect event name

Additions

  • Added default value of RemoteAdmin for lock reason argument in LockElevator method
  • Added more example scripts
  • Added attempt and on_error statements (@Tosoks67)
  • Added Overlapping method
  • Added FriendlyFire method

Improvements

  • Checking if script is attempting to use a yielding method inside {} brackets
  • Better checking of inputs in enum arguments
  • Printing of StaticTextValue and DynamicTextValue types in method help
  • If script has multiple errors, all of them will be provided in a list, instead of only the first one
  • Added hint to use serhelp <enum name> in enum argument
  • Better error message formatting for invalid tokens
  • Custom error for when an invalid method is used inside {} brackets

Version 0.14.1 - Experimental 3

06 Mar 18:55

Choose a tag to compare

Pre-release

Fixes

  • Fixed incorrect tracking of running scripts resulting in "ghost scripts"
  • Fixed OnEvent flag not erroring when provided with an incorrect event name

Improvements

  • Better error message formatting for invalid tokens
  • Custom error for when an invalid method is used inside {} brackets

Removed

  • ToFlags method

Enum flag rework

(not to be confused with script flags)

Instead of using ToFlags to include multiple enum values, you can now use the | (pipe) operator like so:
SetPrimitiveObjectProperties *toy _ _ Collidable|Visible


Changes from version 0.14.1 - experimental 2

Fixes

  • Fixed error when trying to get a friendly name of a value
  • Fixed error when some events tried to create invalid variables
  • Fixed TPRoom method erroring when not providing optional arguments

Added

  • FriendlyFire method

Changes from version 0.14.1 - experimental 1

Fixes

  • damage option of DamageInfo method returning text instead of a number
  • Description in text arguments saying that text can be provided without quotes when not
  • Chance method having inverted chance of returning true
  • stop keyword crashing the server if used in specific circumstances
  • RespawnWaveInfo not being compatible with all wave references (@Tosoks67)
  • EXILED being required for SER to load (@Tosoks67)
  • Some enums not being searchable using serhelp command
  • Obsolete enum values wont be listed as available to use

Additions

  • Default value of RemoteAdmin for lock reason argument in LockElevator method
  • More example scripts
  • attempt and on_error statements (@Tosoks67)
  • -- invalidRankMessage argument for CustomCommand flag
  • Overlapping method

Improvements

  • Checking if script is attempting to use a yielding method inside {} brackets
  • Better checking of inputs in enum arguments
  • Printing of StaticTextValue and DynamicTextValue types in method help
  • If script has multiple errors, all of them will be provided in a list, instead of only the first one
  • Added hint to use serhelp <enum name> in enum argument

Version 0.14.1 - Experimental 2

05 Mar 18:07

Choose a tag to compare

Pre-release

Fixes

  • Fixed error when trying to get a friendly name of a value
  • Fixed error when some events tried to create invalid variables
  • Fixed TPRoom method erroring when not providing optional arguments

Added

  • FriendlyFire method

Changes from version 0.14.1 - experimental 1

Fixes

  • damage option of DamageInfo method returning text instead of a number
  • Description in text arguments saying that text can be provided without quotes when not
  • Chance method having inverted chance of returning true
  • stop keyword crashing the server if used in specific circumstances
  • RespawnWaveInfo not being compatible with all wave references (@Tosoks67)
  • EXILED being required for SER to load (@Tosoks67)
  • Some enums not being searchable using serhelp command
  • Obsolete enum values wont be listed as available to use

Additions

  • Default value of RemoteAdmin for lock reason argument in LockElevator method
  • More example scripts
  • attempt and on_error statements (@Tosoks67)
  • -- invalidRankMessage argument for CustomCommand flag
  • Overlapping method

Improvements

  • Checking if script is attempting to use a yielding method inside {} brackets
  • Better checking of inputs in enum arguments
  • Printing of StaticTextValue and DynamicTextValue types in method help
  • If script has multiple errors, all of them will be provided in a list, instead of only the first one
  • Added hint to use serhelp <enum name> in enum argument

Version 0.14.1 - Experimental

28 Feb 16:57

Choose a tag to compare

Pre-release

Fixes

  • damage option of DamageInfo method returning text instead of a number
  • Description in text arguments saying that text can be provided without quotes when not
  • Chance method having inverted chance of returning true
  • stop keyword crashing the server if used in specific circumstances
  • RespawnWaveInfo not being compatible with all wave references (@Tosoks67)
  • EXILED being required for SER to load (@Tosoks67)
  • Some enums not being searchable using serhelp command
  • Obsolete enum values wont be listed as available to use

Additions

  • Default value of RemoteAdmin for lock reason argument in LockElevator method
  • More example scripts
  • attempt and on_error statements (@Tosoks67)
  • -- invalidRankMessage argument for CustomCommand flag
  • Overlapping method

Improvements

  • Checking if script is attempting to use a yielding method inside {} brackets
  • Better checking of inputs in enum arguments
  • Printing of StaticTextValue and DynamicTextValue types in method help
  • If script has multiple errors, all of them will be provided in a list, instead of only the first one
  • Added hint to use serhelp <enum name> in enum argument

Version 0.14

19 Feb 18:02

Choose a tag to compare

UCR and Voting via plugin integrations

These are methods that are loaded when other plugins are detected, adding more features!

Callvote plugin methods

  • StartVote
  • StartVoteAndWait
  • VoteOption

Uncomplicated Custom Roles plugin methods

  • GetUCRRole
  • SetUCRRole
  • UCRRoleInfo
  • GetPlayersWithUCRRole

Admin Toy methods

Used for handling admin toys, like spawning, modifying, teleporting etc.

Better global variables

  • Added verifications for name collisions with other variables.
  • Replaced GlobalVariable method with global keyword. (@Tosoks67)
# This will create a global variable
global $myGlobalVar = "hello!"

foreach -> over keyword change

Changed the name of the foreach loop to over loop for better readability.
No functionality was changed.

# This is how it looks
over @all
    Print "found player!"
end

over @all
    with @plr

    Print "found player {@plr name}!"
end

Stricter checks for running scripts

When a script uses !-- OnEvent or !-- CustomCommand, running it by any other mean will not be possible.

Other additions:

  • more example scripts
  • ToFlags method
  • IsLiteral method
  • SetAppearance method (EXILED must be installed)
  • PlayWaveEffect method
  • GetVariableByName method
  • fixed minor bugs

New contributor: @Unbistrackted

Fixed plugin bridge error.

Version 0.13.1

02 Feb 21:15

Choose a tag to compare

Added 2 new arguments for CustomCommand flag:

  1. cooldown - players will have to wait until the cooldown finishes before running the command again
  2. neededRank - only players with the provided rank(s) can run the command

Example:

!-- CustomCommand vipbroadcast 
-- arguments text
-- availableFor player
-- neededRank vip
-- cooldown 2m

# sends a simple broadcast to everyone - VIP benefit
Broadcast * 10s "* VIP BROADCAST *<br>[{@sender name}]<br>{$text}"

Other changes:

  • Fixed the example script for discord webhook having an active webhook URL

Version 0.13.0

31 Jan 11:07

Choose a tag to compare

Version 0.13.0 adds Discord methods, HTTP methods, and a lot more!
Check out the new example script discordServerInfo to see how you can use the new Discord integration!

Added:

Discord methods:

  • SendDiscordMessage
  • EditDiscordMessage (@Tosoks67)
  • SendDiscordMessageAndWait
  • DeleteDiscordMessage (@Tosoks67)
  • DiscordMessage
  • DiscordEmbed
  • EmbedAuthor
  • EmbedField
  • EnbedFooter

HTTP methods:

  • HTTPGet
  • HTTPPost
  • HTTPPatch (@Tosoks67)
  • CreateJSON
  • AppendJSON
  • FormatToReadableJSON
  • JSONInfo
  • ParseJSON

Text methods:

  • TextLength
  • SubText
  • TrimText
  • PadText (@Tosoks67)

Other:

  • Get096Targets method (@Tosoks67)
  • ServerInfo method (@Tosoks67)
  • ReplaceTextInVariable method (@Tosoks67)
  • HexToInt method (@Tosoks67)
  • IntToHex method (@Tosoks67)
  • isDummy player property (@Tosoks67)
  • isNpc player property (@Tosoks67)
  • syntax for skipping not required arguments
  • Chance method
  • GetWaveTimer method
  • FormatDuration method
  • more options for TimeInfo method (@Tosoks67)
  • discordServerInfo example script

Fixed:

  • Example scripts being outdated
  • Flags sometimes not being registered
  • RespawnWave method not being compatible with NW wave objects
  • literal variables sometimes formatting with debug metadata (@Tosoks67)
  • text escape characters being removed on manipulation

Removed:

  • @scp173Observers variable (Get173Observers method now fully replaces the @scp173Observers variable) (@Tosoks67)
  • Eval method (the parentheses system works the exact same way)
  • ParseResultInfo method (renamed to ResultInfo)
  • RespawnWaveInfo "secondsLeft" (changed to "timeLeft" and now returns a Duration value)

Version 0.13.0 - Experimental 2

26 Jan 20:25

Choose a tag to compare

Pre-release

Discord webhooks, HTTP and much, much more!

Added:

Discord methods:

  • SendDiscordMessage method
  • EditDiscordMessage method
  • SendDiscordMessageAndWait method
  • DiscordMessage method
  • DiscordEmbed method
  • EmbedAuthor method
  • EmbedField method
  • EnbedFooter method

HTTP methods:

  • HTTPGet method
  • HTTPPost method
  • HTTPPatch method
  • CreateJSON method
  • AppendJSON method
  • FormatToReadableJSON method
  • JSONInfo method
  • ParseJSON method

Other:

  • Get096Targets method
  • ServerInfo method
  • ReplaceTextInVariable method
  • HexToInt method
  • IntToHex method
  • isDummy player property
  • isNpc player property
  • syntax for skipping not required arguments
  • Chance method
  • GetWaveTimer method
  • FormatDuration method

Fixed:

  • Example scripts being outdated
  • Flags sometimes not being registered
  • RespawnWave method not being compatible with NW wave objects
  • literal variables sometimes formatting with debug metadata
  • text escape characters being removed on manipulation

Changed:

  • Get173Observers method now fully replaces the @scp173Observers variable
  • RespawnWave "secondsLeft" to "timeLeft" and now returns a Duration value
  • ParseResultInfo method to ResultInfo method

Removed:

  • @scp173Observers variable
  • Eval method