Scripted Events Reloaded (SER) is an SCP:SL plugin that adds a custom scripting language for server-side events.
Making plugins with C# is NOT an easy thing, especially for beginners. If you want to get started with SCP:SL server-side scripting, SER is a great way to begin.
SER simplifies the most essential plugin features into a friendly package. All you need to get started is a text editor and a server!
- Simplification of the most essential features like commands, events and player management.
- No compilation required, while C# plugins require a full development environment, compilation, and DLL management.
- Lots of built-in features like AudioPlayer, Databases, Discord webhooks, HTTP and more!
- Extendable with frameworks like UCR, EXILED or Callvote, but without any dependencies!
- Plugin docs are available directly on the server using the
serhelpcommand. - Helpful community available to help you with any questions you may have.
(these scripts may be outdated, check the Example Scripts folder for the latest example scripts)
!-- OnEvent Joined
Broadcast @evPlayer 10s "Welcome to the server {@evPlayer -> name}!"
!-- OnEvent Death
# check if player died without an attacker
if {VarExists @evAttacker} is false
stop
end
# give the attacker a coin
GiveItem @evAttacker Coin
# define the command with custom attributes
!-- CustomCommand vipbc
-- description "broadcasts a message to all players - VIP only"
-- neededRank vip svip mvip
-- arguments message
-- availableFor Player
-- cooldown 2m
# send the broadcast to all players
Broadcast @all 10s "{@sender -> name} used VIP broadcast<br>{$message}"
!-- CustomCommand healscp
-- description "heals a random SCP"
-- availableFor Player
-- cooldown 10s
# dont allow SCPs to use this command
if {@sender -> team} is "SCPs"
stop
end
# get a random SCP that is not a SCP-079
@randomScp = LimitPlayers {RemovePlayers @scpPlayers @scp079Players} 1
# get 5% of the SCP's max health
$healAmount = RoundNumber ({@randomScp -> maxHealth} * 0.05)
Heal @randomScp $healAmount
Broadcast @randomScp 4s "{@sender -> name} healed you with {$healAmount} HP!"
!-- OnEvent RoundStarted
# there is a 50% chance that the event will not happen
if {Chance 50%}
Print "Hot Potato event will not be loaded"
stop
end
Print "Hot Potato event was loaded"
Broadcast @all 5s "Be ready for a Hot Potato!"
# this is the main loop of the event
forever
wait 1m
# Get a random player from the alive players that are not SCPs
@potatoCarrier = LimitPlayers {RemovePlayers @alivePlayers @scpPlayers} 1
# if no player is alive, continue to next attempt
if {AmountOf @potatoCarrier} is 0
continue
end
# if the inventory is full, continue to next attempt
if {@potatoCarrier -> inventory -> length} is 8
continue
end
Hint @potatoCarrier 3s "YOU HAVE THE HOT POTATO! DROP IT OR DIE!"
GiveItem @potatoCarrier GunA7
wait 6s
# Check if they still have the item (GunA7) in their inventory
over {@potatoCarrier -> inventory} with *item
if {*item -> type} isnt "GunA7"
continue
end
# when GunA7 is found, explode the player
AdvDestroyItem *item
Explode @potatoCarrier
Broadcast @all 5s "Player {@potatoCarrier -> name} has failed the Hot Potato!"
# 70% chance that the event to continue, else stop the event
if {Chance 70%}
Broadcast @all 5s "The Hot Potato will return soon!"
continue
else
Broadcast @all 5s "The Hot Potato got tired and will not return..."
stop
end
end
# if the loop finishes without finding GunA7, it means the player has dropped it
AdvDestroyItem *item
Broadcast @all 5s "The Hot Potato has been neutralized... but it will return!"
end
Check the syntax definition for guidance about SER script-making.
