rpe.sk

Created by Nouma zer

Other available versions. Ordered by newest to oldest versions:

Just so you know, we don't know the file format for every file. If it's just a bunch of random characters, it's probably a .zip or .jar.

options:
    ver: ALPHA-2.0

function rpeLoadServerYaml():
    if yaml "rpe-cfg" is loaded:
        unload yaml "rpe-cfg"
    load yaml "plugins/Skript/scripts/RPE/config.yml" as "rpe-cfg"

    if yaml path "general.prefix" from "rpe-cfg" doesn't exist:
        set yaml value "general.prefix" from "rpe-cfg" to "§6RPE §7»§r"
    if yaml path "general.join_message" from "rpe-cfg" doesn't exist:
        set yaml value "general.join_message" from "rpe-cfg" to "§8[§a+§8] §7$PLAYER s'est réveillé(e) !"
    if yaml path "general.quit_message" from "rpe-cfg" doesn't exist:
        set yaml value "general.quit_message" from "rpe-cfg" to "§8[§c-§8] §7$PLAYER s'est endormi(e) !"
    if yaml path "general.hide_nametags" from "rpe-cfg" doesn't exist:
        set yaml value "general.hide_nametags" from "rpe-cfg" to true
    if yaml path "general.show_damage" from "rpe-cfg" doesn't exist:
        set yaml value "general.show_damage" from "rpe-cfg" to true
    if yaml path "general.force_respawn" from "rpe-cfg" doesn't exist:
        set yaml value "general.force_respawn" from "rpe-cfg" to true
    if yaml path "general.ask_if_he_was_freekilled" from "rpe-cfg" doesn't exist:
        set yaml value "general.ask_if_he_was_freekilled" from "rpe-cfg" to true
    if yaml path "general.motd.1" from "rpe-cfg" doesn't exist:
        set yaml value "general.motd.1" from "rpe-cfg" to "§f§lRoleplay §b§lEssentials §7v{@ver}"
    if yaml path "general.motd.2" from "rpe-cfg" doesn't exist:
        set yaml value "general.motd.2" from "rpe-cfg" to "§6Join us now ! §7https://discord.gg/Hx393nu"
    if yaml path "general.maintenance_motd.1" from "rpe-cfg" doesn't exist:
        set yaml value "general.maintenance_motd.1" from "rpe-cfg" to "§f§lRoleplay §b§lEssentials §7v{@ver}"
    if yaml path "general.maintenance_motd.2" from "rpe-cfg" doesn't exist:
        set yaml value "general.maintenance_motd.2" from "rpe-cfg" to "§6Server §cclosed §6for maintenance !"

    if yaml path "userdata.use_uuid" from "rpe-cfg" doesn't exist:
        set yaml value "userdata.use_uuid" from "rpe-cfg" to true

    if yaml path "economy.use_rpe_eco" from "rpe-cfg" doesn't exist:
        set yaml value "economy.use_rpe_eco" from "rpe-cfg" to true
    if yaml path "economy.money_start" from "rpe-cfg" doesn't exist:
        set yaml value "economy.money_start" from "rpe-cfg" to 20
    if yaml path "economy.symbol" from "rpe-cfg" doesn't exist:
        set yaml value "economy.symbol" from "rpe-cfg" to "$"
    if yaml path "economy.format" from "rpe-cfg" doesn't exist:
        set yaml value "economy.format" from "rpe-cfg" to "$SYMBOL$MONEY"
    if yaml path "economy.singular_currency" from "rpe-cfg" doesn't exist:
        set yaml value "economy.singular_currency" from "rpe-cfg" to "dollar"
    if yaml path "economy.plural_economy" from "rpe-cfg" doesn't exist:
        set yaml value "economy.plural_economy" from "rpe-cfg" to "dollars"

    if yaml path "chat.action_format" from "rpe-cfg" doesn't exist:
        set yaml value "chat.action_format" from "rpe-cfg" to "§7* Quelqu'un $MESSAGE"
    if yaml path "chat.hrp_prefix" from "rpe-cfg" doesn't exist:
        set yaml value "chat.hrp_prefix" from "rpe-cfg" to "!"
    if yaml path "chat.hrp_format" from "rpe-cfg" doesn't exist:
        set yaml value "chat.hrp_format" from "rpe-cfg" to "§8HRP | §7$PLAYER §8» §7$MESSAGE"
    if yaml path "chat.rp_radius" from "rpe-cfg" doesn't exist:
        set yaml value "chat.rp_radius" from "rpe-cfg" to 20
    if yaml path "chat.rp_format" from "rpe-cfg" doesn't exist:
        set yaml value "chat.rp_format" from "rpe-cfg" to "§7Quelqu'un dit §8» §f$MESSAGE"
    if yaml path "chat.rp_use_holograms" from "rpe-cfg" doesn't exist:
        set yaml value "chat.rp_use_holograms" from "rpe-cfg" to true
    save yaml "rpe-cfg"

function rpeLoadPlayerYaml(p: player):
    set {_pp} to {_p}
    if yaml value "userdata.use_uuid" from "rpe-cfg" is true:
        set {_pp} to {_p}'s uuid

    if yaml "rpe-%{_pp}%" is loaded:
        unload yaml "rpe-%{_pp}%"
    load yaml "plugins/Skript/scripts/RPE/userdata/%{_pp}%.yml" as "rpe-%{_pp}%"
    if yaml path "economy.money" from "rpe-%{_pp}%" doesn't exist:
        set yaml value "economy.money" from "rpe-%{_pp}%" to (yaml value "economy.money_start" from "rpe-cfg")

    if yaml path "character.first_name" from "rpe-%{_pp}%" doesn't exist:
        set yaml value "character.first_name" from "rpe-%{_pp}%" to "null"
    save yaml "rpe-%{_pp}%"

function rpeUnloadPlayerYaml(p: player):
    set {_pp} to {_p}
    if yaml value "chat.use_uuid" from "rpe-cfg" is true:
        set {_pp} to {_p}'s uuid

    save yaml "rpe-%{_pp}%"
    unload yaml "rpe-%{_pp}%"

function rpeSetUserdata(p: player, n: text, t: text, v: text):
    set {_pp} to {_p}
    if yaml value "userdata.use_uuid" from "rpe-cfg" is true:
        set {_pp} to {_p}'s uuid

    if {_t} is "set":
        set yaml value "api.%{_n}%" from "rpe-%{_pp}%" to {_v}

    else if {_t} is "add":
        set yaml value "api.%{_n}%" from "rpe-%{_pp}%" to yaml value {_n} from "rpe-%{_pp}%" + {_v}

    else if {_t} is "remove":
        set yaml value "api.%{_n}%" from "rpe-%{_pp}%" to yaml value {_n} from "rpe-%{_pp}%" - {_v}

    save yaml "rpe-%{_pp}%"

function rpeGetUserdata(p: player, n: text) :: text:
    set {_pp} to {_p}
    if yaml value "userdata.use_uuid" from "rpe-cfg" is true:
        set {_pp} to {_p}'s uuid

    return yaml value "api.%{_n}%" from "rpe-%{_pp}%"

command /testt:
    trigger:
        rpeSetUserdata(player, "test.oui", "set", "hello")
        send "done"
        send rpeGetUserdata(player, "test.oui") to player

on load:
    send "   §3_   §b_   §3__" to console
    send "  §3|_) §b|_) §3|_    §fRoleplay §bEssentials §7{@ver}" to console
    send "  §3|\  §b|   §3|__   §3Running on Skript" to console
    send " " to console
    rpeLoadServerYaml()
    loop all players:
        rpeLoadPlayerYaml(loop-player)

on unload:
    clear {rpe::temp::*}

on join:
    set {_m} to yaml value "general.join_message" from "rpe-cfg"
    replace all "$PLAYER" with "%player%" in {_m}
    set join message to {_m}

    if {rpe::maintenance} is true:
        if player doesn't have permission "rpe.maintenance.bypass":
            kick player due to "SORRY WE'RE IN MAINTENANCE MODE!"   # <=== WILL BE ADDED IN MESSAGE.YML
            stop
        else:
            send "§6Le serveur est actuellement en maintenance.%nl%§7Vous avez le droit d'y accéder mais n'oubliez pas que vous êtes l'un des seuls."   # <=== WILL BE ADDED IN MESSAGE.YML
    rpeLoadPlayerYaml(player)
    if yaml value "general.hide_nametags" from "rpe-cfg" is true:
        set player's nametag to "" 

on quit:
    set {_m} to yaml value "general.quit_message" from "rpe-cfg"
    replace all "$PLAYER" with "%player%" in {_m}
    set quit message to {_m}

    rpeUnloadPlayerYaml(player)
    clear {rpe::temp::%player%::*}

on server list ping:
    if {rpe::maintenance} is true:
        set the motd to "%yaml value ""general.maintenance_motd.1"" from ""rpe-cfg""%%nl%%yaml value ""general.maintenance_motd.2"" from ""rpe-cfg""%"
    else:
        set the motd to "%yaml value ""general.motd.1"" from ""rpe-cfg""%%nl%%yaml value ""general.motd.2"" from ""rpe-cfg""%"

command /roleplayessentials [<text>]:
    aliases: /rpe
    trigger:
        if arg 1 isn't set:
            send ""
            send "             <ttp:§7Join us!><url:https://discord.gg/Hx393nu>§f§lRoleplay §b§lEssentials §7v{@ver}"
            send ""
            send " <ttp:§7Run this command!><cmd:/rpe help>§8/rpe help"
            send ""
        else if arg 1 is "help":
            if player has permission "rpe.cmd.help":
                send "§8§m--------------[§7 Roleplay §bEssentials §8§m]--------------"
                send " §7/rpe help §f- Show this help page"
                send "§8§m-----------------------------------------------"
                send "§8[§c!§8] §7Version §l{@ver}"

on damage:
    if yaml value "general.show_damage" from "rpe-cfg" is true:
        set {_damage} to damage
        bind hologram "&c&l-%{_damage}*2%" to victim for 0.75 seconds offset by 0, 1.5, 1

# -- FEATURES A REFAIRE
command /maintenance:
    permission: rpe.maintenance.toggle
    trigger:
        if {rpe::maintenance} isn't true:
            set {rpe::maintenance} to true
            send "on"
        else:
            clear {rpe::maintenance}
            send "off"

function rpeReport(p: player, a: player, r: text):
    if {_r} is "freekill" or "free-kill" or "fk" or "freekil":
        set {_re} to "Free-Kill"
    else if {_r} is "nlr" or "retour" or "retour sur zone":
        set {_re} to "Non respect de la NLR"
    else:
        send "§cRaisons valables: §7Free-Kill, §8NLR%nl%§6Si il manque une raison, contactez le développeur de RPE." to {_p}
        stop
    loop all players:
        if loop-player has permission "rpe.report_see":
            send "§8[§c!§8] §cLe joueur §4%{_p}% §ca signalé §4%{_a}% §cpour §4[§8%{_re}%§4] §c!" to loop-player

command /report [<player>] [<text>]:
    trigger:
        rpeReport(player, arg-1, arg-2)

on death of player:
    if yaml value "general.force_respawn" from "rpe-cfg" is true:
        force player to respawn
    if yaml value "general.ask_if_he_was_freekilled" from "rpe-cfg" is true:
        if event-entity is a player:
            send "%nl%§c§lVous venez d'être victime d'un Free-Kill ?" to player
            send "<ttp:§7Clique !><cmd:/report %event-entity's name% fk>§8Cliquez-ici pour signaler votre agresseur%nl%" to player

# --
# RPE Chat
# --

on chat:
    if message starts with (yaml value "chat.hrp_prefix" from "rpe-cfg"):
        set {_f} to yaml value "chat.hrp_format" from "rpe-cfg"
        replace all "$PLAYER" with "%player%" in {_f}
        replace all "$MESSAGE" with last (length of message - 1) characters of message in {_f}
        set chat format to {_f}
    else:
        cancel event
        set {_f} to yaml value "chat.rp_format" from "rpe-cfg"
        replace all "$PLAYER" with "%player%" in {_f}
        replace all "$MESSAGE" with message in {_f}
        loop all players in radius (yaml value "chat.rp_radius" from "rpe-cfg") of player:
            send {_f} to loop-player

        if yaml value "chat.rp_use_holograms" from "rpe-cfg" is true:
            bind hologram message to player for 4 seconds offset by 0, 2.75, 0
            bind hologram "§8\/" to player for 4 seconds offset by 0, 2.5, 0

function rpeAction(p: player, t: text):
    loop all players in radius (yaml value "chat.rp_radius" from "rpe-cfg") of {_p}:
        set {_f} to yaml value "chat.action_format" from "rpe-cfg"
        replace all "$PLAYER" with "%{_p}%" in {_f}
        replace all "$MESSAGE" with {_t} in {_f}
        send {_f} to loop-player

command /me <text>:
    trigger:
        rpeAction(player, arg-1)

command /action <text>:
    trigger:
        rpeAction(player, arg-1)

command /moi <text>:
    aliases: /je
    trigger:
        rpeAction(player, arg-1)

function rpeBroadcast(p: player, t: text):
    if {_p} has permission "rpe.broadcast":
        replace all "&" with "§" in {_t}
        broadcast "%nl% §8§m--§7 Annonce de §e%{_p}% §8§m-------------------------%nl%§e      ➥ §f%{_t}%%nl% "   # <=== WILL BE ADDED IN MESSAGE.YML
        loop 3 times:
            send actionbar with "§e%{_p}% §7➜ §f%{_t}%" to all players
            wait 1 second
    else:
        send "§cVous n'avez pas la permission !" to {_p}

command /broadcast <text>:
    trigger:
        rpeBroadcast(player, arg-1)

command /bc <text>:
    trigger:
        rpeBroadcast(player, arg-1)

command /annonce <text>:
    trigger:
        rpeBroadcast(player, arg-1)

command /advert <text>:
    usage: /advert <message>
    aliases: /pub
    permission: rpe.broadcast.pub
    trigger:
        broadcast "§ePublicité | §7%player% §8» §f%arg-1%"

command /ano <text>:
    usage: /ano <message>
    permission: rpe.broadcast.ano
    trigger:
        broadcast "§7Anonyme | §7§k%player%§8 » §f%arg-1%"

# --
# RPE Cars
# --

function rpeCarSpawn(p: player, t: integer):
    if yaml path "cars.%{_t}%" from "rpe-cfg" doesn't exist:
        set yaml value "cars.%{_t}%.speed" from "rpe-cfg" to 1.5
        set yaml value "cars.%{_t}%.block" from "rpe-cfg" to bedrock
        save yaml "rpe-cfg"

    set {_pp} to {_p}
    if yaml value "userdata.use_uuid" from "rpe-cfg" is true:
        set {_pp} to {_p}'s uuid

    if yaml value "cars.owned.%{_t}%" from "rpe-%{_pp}%" is true:
        loop all entities:
            if loop-entity has scoreboard tag "owner:%{_p}%":
                send "already out" to {_p}
                stop

        spawn armor stand at {_p}'s location
        set {_s} to last spawned entity
        add "{Small:1}" to {_s}'s entity-nbt
        add "{Invisible:1}" to {_s}'s entity-nbt
        add "owner:%{_p}%" to {_s}'s scoreboard tags
        add "locked:0" to {_s}'s scoreboard tags
        add "type:%{_t}%" to {_s}'s scoreboard tags
        set helmet of {_s} to (yaml value "cars.%{_t}%.block" from "rpe-cfg")

        send "out" to {_p}
    else:
        send "not owned" to {_p}

on rightclick on entity:
    if event-entity is armor stand:
        cancel event
        if player's tool isn't stick:
            if event-entity has scoreboard tag "locked:0":
                make player ride event-entity
                set {rpe::temp::%player%::oldPos} to player's location
            else:
                send "locked" to event-player

        else:
            if event-entity has scoreboard tag "owner:%player%":
                if event-entity has scoreboard tag "locked:0":
                    remove "locked:0" from event-entity's scoreboard tags
                    add "locked:1" to event-entity's scoreboard tags
                    send "locked" to event-player
                else:
                    remove "locked:1" from event-entity's scoreboard tags
                    add "locked:0" to event-entity's scoreboard tags
                    send "unlocked" to event-player
            else:
                send "not yours" to event-player

every seconds:
    loop all players:
        set {_lp} to loop-player
        if {_lp}'s vehicle is armor stand:
            if {rpe::temp::%{_lp}%::oldPos} is set:
                set {_b} to distance between block at {rpe::temp::%{_lp}%::oldPos} and {_lp}'s location - 0.35
                if {_b} < 0:
                    set {_b} to 0
                send action bar "%{_b}%b/s" to {_lp}
            set {rpe::temp::%{_lp}%::oldPos} to {_lp}'s location

on vehicle steer forward:
    if player's vehicle is armor stand:
        push vehicle of player forward at speed 0.3
        add "{Rotation:[%player's yaw%f,0f]}" to player's vehicle's entity-nbt
        set {_c} to random integer between 2 and 4
        drawDot count {_c}, particle "smoke", center player, visibleRange 10

on vehicle steer backward:
    if player's vehicle is armor stand:
        push vehicle of player backwards at speed 0.15
        add "{Rotation:[%player's yaw%f,0f]}" to player's vehicle's entity-nbt

on damage:
    if victim is an armor stand:
        if attacker has permission "rpe.cars.destroy":
            delete victim

# --
# RPE Eco
# --

on vault deposit request:
    set {_pp} to event-offlineplayer
    if yaml value "userdata.use_uuid" from "rpe-cfg" is true:
        set {_pp} to event-offlineplayer's uuid
    set yaml value "economy.money" from "rpe-%{_pp}%" to (yaml value "economy.money" from "rpe-%{_pp}%") + event-number
    save yaml "rpe-%{_pp}%"
    return economy response with amount modified event-number, new balance (yaml value "economy.money" from "rpe-%{_pp}%"), response type success, and error message "none"

on vault withdraw request:
    set {_pp} to event-offlineplayer
    if yaml value "userdata.use_uuid" from "rpe-cfg" is true:
        set {_pp} to event-offlineplayer's uuid
    set yaml value "economy.money" from "rpe-%{_pp}%" to (yaml value "economy.money" from "rpe-%{_pp}%") - event-number
    save yaml "rpe-%{_pp}%"
    return economy response with amount modified event-number, new balance (yaml value "economy.money" from "rpe-%{_pp}%"), response type success, and error message "none"

on vault check player balance request:
    set {_pp} to event-offlineplayer
    if yaml value "userdata.use_uuid" from "rpe-cfg" is true:
        set {_pp} to event-offlineplayer's uuid
    if (yaml value "economy.money" from "rpe-%{_pp}%") is greater than event-number:
        return true
    else:
        return false

on vault create player account request:
    set {_pp} to event-offlineplayer
    if yaml value "userdata.use_uuid" from "rpe-cfg" is true:
        set {_pp} to event-offlineplayer's uuid
    set yaml value "economy.money" from "rpe-%{_pp}%" to (yaml value "economy.money_start" from "rpe-cfg")
    return true

on vault currency decimals request:
    return 2

on vault enabled status request:
    return true

on vault economy name request:
    return "RPE Eco"

on vault format currency request:
    set {_s} to yaml value "economy.symbol" from "rpe-cfg"
    set {_f} to yaml value "economy.format" from "rpe-cfg"
    replace all "$SYMBOL" with {_s} in {_f}
    replace all "$MONEY" with "%event-number%" in {_f}
    return {_f}

on vault player has account request:
    set {_pp} to event-offlineplayer
    if yaml value "userdata.use_uuid" from "rpe-cfg" is true:
        set {_pp} to event-offlineplayer's uuid
    if yaml path "economy.money" from "rpe-%{_pp}%" exists:
        return true
    else:
        return false

on vault player balance request:
    set {_pp} to event-offlineplayer
    if yaml value "userdata.use_uuid" from "rpe-cfg" is true:
        set {_pp} to event-offlineplayer's uuid
    return (yaml value "economy.money" from "rpe-%{_pp}%")

on vault plural currency name request:
    return (yaml value "economy.plural_currency" from "rpe-cfg")

on vault singular currency name request:
    return (yaml value "economy.singular_currency" from "rpe-cfg")

# What's new in ALPHA-1.1 ?
#  • Join & quit messages
#  • Broadcasts
#  • Userdata manipulation
#  • /pub and /ano
#  • Damage indicator