Paste #18322: Premium

Date: 2015/07/17 21:09:10 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


PremiumCheck:
  type: world
  events:
    on player joins:
    - if <player.in_group[premium].global> {
      - flag <player> isPremium
      - flag global premiumPlayers:++
      - narrate "Thanks for being a premium member!"
      - queue clear
    }
    - define onlineplayers <server.list_online_players>
    - foreach <def[onlineplayers]> {
      - if <%value%.has_flag[isPremium]> {
        - flag global premiumPlayers:++
      } else {
        - flag global regularPlayers:++
      }
      - run PremiumTask
      - if <server.flag[capReached].is[==].to[1]> {
        - execute as_server "kick <player.name> Regular player limit reached. Purchase premium for unlimited access to Gaia!"
      }
    }
    on player quits:
    - if <player.has_flag[isPremium]> {
      - flag <player> isPremium:!
      - flag global premiumPlayers:--
    } else {
      - flag <player> regularPlayers:!
      - flag global regularPlayers:--
    }
    on shutdown:
      - flag global premiumPlayers:0
      - flag global regularPlayers:0

PremiumTask:
  type: task
  script:
  - define premiums <flag[premiumPlayers].as_int>
  - define regulars <flag[regularPlayers].as_int>
  - define difference <def[premiums].sub[<def[regulars]>]>
  - if <def[difference].is[OR_MORE].to[10]> {
    #flag true
    - flag global capReached:0
  } else {
    #flag false
    - flag global capReached:1
  }

ShowPlayers:
  type: command
  name: showplayers
  usage: /showplayers
  description: Display premium and regular players.
  permission: denizen.showplayers
  script:
  - narrate "Premium Players: <global.flag[premiumPlayers].as_int> || Regular Players: <global.flag[regularPlayers].as_int>"