Paste #72080: Untitled Paste

Date: 2020/07/09 10:26:34 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


# |==================================|
# |          Slime Economy           |
# | Internal economy manager for     |
# | $lime.                           |
# |==================================|
#
# Author: mcmonkey
# For: New2PC
# Denizen version: REL-1710
# Original Date: 2019-08-11
# Last Update Date: 2020-06-10
#
# Setup:
# Just add the script.
# Adjust the ranks list below.
#
# Give ops permissions:
# slime.balance.other
# slime.eco.edit
#

slime_max_money:
    type: procedure
    debug: false
    definitions: player
    script:
    - define player <[player]||<player>>
    # ================ List ranks -> amount here, keep it from highest to lowest. ================
    - if <[player].has_permission[eco.500000]>:
        - determine 500000
    - if <[player].has_permission[eco.250000]>:
        - determine 250000
    - if <[player].has_permission[eco.100000]>:
        - determine 100000
    - if <[player].has_permission[eco.50000]>:
        - determine 50000
    - if <[player].has_permission[eco.10000]>:
        - determine 10000
    - if <[player].has_permission[eco.5000]>:
        - determine 5000
    # The default limit
    - determine 2500
    # ================ End editable ================

Slime_Economy:
  type: economy
  debug: false
  priority: normal
  name single: $lime
  name plural: $limes
  digits: 0
  format: $<amount.round>
  balance: <player.flag[slime_money].round||0>
  has: <player.money.is[or_more].than[<amount.round>]||false>
  withdraw:
  - flag <player> slime_money:-:<[amount].round>
  deposit:
  - if !<player.is_online>:
    - flag player banked_money:+:<[amount].round>
    - stop
  - define orig_money <player.money>
  - flag <player> slime_money:+:<[amount].round>
  - if <player.flag[slime_money]> > <proc[slime_max_money]>:
    - flag player slime_money:<proc[slime_max_money]>
    - narrate "<red>You lost <green><server.economy.format[<[amount].add[<[orig_money]>].sub[<player.money>]>]><red> to the void, due to exceeding your max."

balance_command:
    type: command
    debug: false
    name: balance
    usage: /balance
    description: Shows your current balance.
    aliases:
    - bal
    script:
    - if <context.args.size> == 0:
        - narrate "<gold>Your wallet balance is <green><player.formatted_money><gold>. Your max is <server.economy.format[<proc[slime_max_money]>]>."
    - else if <player.has_permission[slime.balance.other].global>:
        - define player <server.match_offline_player[<context.args.get[1]>]||null>
        - if <[player]> == null:
            - narrate "<red>'<context.args.get[1]>' is not a valid player."
            - stop
        - narrate "<green><[player].name><gold>'s balance is <green><[player].money.formatted><gold>."
    - else:
        - narrate "<red>You don't have permission to look at the balance of others."
        - stop

pay_command:
    type: command
    debug: false
    name: pay
    usage: /pay [player] [amount]
    description: Sends money to a player.
    script:
    - if <context.args.size.is[less].than[2]>:
        - narrate "<red>/pay [player] [amount]"
        - stop
    - define player <server.match_offline_player[<context.args.get[1]>]||null>
    - if <[player]> == null:
        - narrate "<red>'<context.args.get[1]>' is not a valid player."
        - stop
    - define amount <context.args.get[2].escaped>
    - if !<[amount].is_decimal>:
        - narrate "<red>'<[amount]>' is not a valid number."
        - stop
    - if <[amount]> <= 0:
        - narrate "<red>May only pay a positive number."
        - stop
    - if <[amount]> > <player.money>:
        - narrate "<red>You don't have <green><server.economy.format[<[amount]>]><red> in your wallet."
        - stop
    - define targetmax <proc[slime_max_money].context[<[player]>]>
    - if <[amount].add[<[player].money>]> > <[targetmax]>:
        - narrate "<green><[player].name><gold> does not have room in their wallet for <green><server.economy.format[<[amount]>]><red>."
        - stop
    - take money quantity:<[amount]>
    - give money quantity:<[amount]> player:<[player]>
    - narrate "<gold>Sent <server.economy.format[<[amount]>]><gold> to <green><[player].name><gold>."
    - narrate "<gold>You received <server.economy.format[<[amount]>]><gold> from <green><player.name><gold>." t:<[player]>

economy_command:
    type: command
    name: economy
    usage: /economy give/take/set [player] [amount]
    description: Gives, takes, or sets the economy value for a specific player.
    aliases:
    - eco
    - slimeeconomy
    - slimeeco
    permission: slime.eco.edit
    script:
    - if <context.args.size.is[less].than[3]> || give|take|set !contains <context.args.get[1]>:
        - narrate "<red>/economy give/take/set [player] [amount]"
        - stop
    - define player <server.match_offline_player[<context.args.get[2]>]||null>
    - if <[player]> == null:
        - narrate "<red>'<context.args.get[1]>' is not a valid player."
        - stop
    - define amount <context.args.get[3].escaped>
    - if !<[amount].is_decimal>:
        - narrate "<red>'<[amount]>' is not a valid number."
        - stop
    - choose <context.args.get[1]>:
        - case give:
            - give money quantity:<[amount]> player:<[player]>
        - case take:
            - take money quantity:<[amount]> player:<[player]>
        - case set:
            - money set quantity:<[amount]> player:<[player]>
    - narrate "<green><[player].name><gold>'s balance has been updated to <green><[player].money.formatted><gold>."