Paste #41702: Edit of P#41701 - Untitled Paste

Date: 2017/05/05 19:20:59 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


on player clicks in sp_buy_inv:
    - if <context.raw_slot> <= 54 {
      - determine passively cancelled
      } else if <context.is_shift_click> {
      - determine cancelled
      }

    - if <context.raw_slot> <= 9 || <context.item> == <i@sp_glass> {
      - queue clear
      }

    - define worth "<context.item.lore.get[<context.item.lore.size>].after[: ]>"
    - define currency "<yaml[sp].read[shops.<player.flag[shopinfo].get[1]>.currency]||default>"
    - define money "<proc[emoney].context[<def[currency]>]>"
    - define npcid "<player.flag[sp.talking_to].as_npc>"
    #- define player_buypower "<proc[sp_buypower]>"
    - define clicktype_factor "<tern[<context.is_shift_click>]:<el@val[8]>||<el@val[1]>>"

    - if <proc[invspace].sub[<context.item.quantity.mul[<def[clicktype_factor]>].div[64].round_up>]> < 0 {
      - narrate "<&4>Du hast kein Platz!"
      - queue clear
      }

    - if <def[money]> < <def[worth].mul[<def[clicktype_factor]>]> {
      - narrate "<&4>Du hast nicht genug Geld !"
      - queue clear
      }

    - if <def[worth].mul[<def[clicktype_factor]>]> > 1 {
      - define currency_name "<s@g_var.constant[m_<def[currency]>_pl]>"
      } else {
      - define currency_name "<s@g_var.constant[m_<def[currency]>_sg]>"
      }

    - narrate "<&6><def[worth].mul[<def[clicktype_factor]>]> <&f><def[currency_name]> entfernt."
    - run s@emoney_take def:<def[currency]>|<def[worth].mul[<def[clicktype_factor]>]>
    - inject sp_buypower_add
    - adjust <context.item> "lore:<context.item.lore.remove[<context.item.lore.size>]>" save:item
    - repeat <def[clicktype_factor]> {
      - give <entry[item].result>
      }


sp_buypower_take:
  type: task
  debug: true
  speed: 0t
  script:
  - define player_buypower "<def[player_buypower]||<proc[sp_buypower]>>"
  # sp.buypower.<region||default>.<e-id||npcid>
  - define flag_destination "sp.buypower.<player.flag[erpg_region]||general>.<def[npcid].flag[e-id] || <def[npcid]>   >"
  # <destination> :  <proc[buypower]> - ( ( wert * clicktype_factor||1 ) * 100 .as_int  )||unbegrenzt
  - if <def[player_buypower]> matches number {
    - flag player "<def[flag_destination]>:<def[player_buypower].mul[100].sub[<def[worth].mul[<def[clicktype_factor]||1>].mul[100]>].as_int||unbegrenzt>"
    }

sp_buypower_add:
  type: task
  debug: true
  speed: 0t
  script:
  - define player_buypower "<def[player_buypower]||<proc[sp_buypower]>>"
  - define flag_destination "sp.buypower.<player.flag[erpg_region]||general>.<def[npcid].flag[e-id] || <def[npcid]>   >"
  - if <def[player_buypower]> matches number {
    - flag player "<def[flag_destination]>:<def[player_buypower].mul[100].add[<def[worth].mul[<def[clicktype_factor]||1>].mul[100]>].as_int||unbegrenzt>"
    }

#Returns:
# players erpg buypower <FALLBACK> players general buypower <FALLBACK> npcs default buypower <FALLBACK> unbegrenzt
sp_buypower:
  type: procedure
  debug: true
  script:
  - define npcid <player.flag[sp.talking_to].as_npc>
  - define flag_source "<player.flag[sp.buypower.<player.flag[erpg_region]||general>.<def[npcid].flag[e-id] || <def[npcid]>   >]  || <def[npcid].flag[sp.buypower].as_int||x> >"
  - if <def[flag_source]> matches number {
    - determine "<def[flag_source].div[100]>"
    } else {
    - determine unbegrenzt
    }