Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ShopSystem ver 1.2
- #Created By しそ#1459
- #{money.%player%}
- #/sell
- #/selling (player)
- #/shop
- options:
- max_selling: 30 #プレイヤーが出品できる最大値
- variables:
- {shop.player.delete} = on #サーバーに一定時間ログインしなかった場合自動的にShopの出品物を消す on|off
- {shop.player.delete.time} = 7 #↑の時間設定(日) 初期設定では7日
- command /sell [<integer>]:
- trigger:
- if arg 1 is not set:
- send "&5========SHOP========"
- send "&6&l売りたいアイテムを手にもって&a↓&6のコマンドを入力してください。"
- send "&6&l/sell (値段)"
- stop
- if player's held item is air:
- send "&c手にアイテムを持ってください。"
- stop
- if size of {shop.player.%player%::*} >= {@max_selling}:
- send "&cあなたは出品できる数が上限に達しました。"
- stop
- if arg 1 < 1:
- send "&c1より大きい数字を入力してください。"
- stop
- if {shop.count.%player%} is not set:
- set {shop.count.%player%} to 100
- if {shop.delete.time.%player%} is not set:
- set {shop.sell.delete.time::*} to player
- add 1 to {shop.count.%player%}
- set {shop::%player%%{shop.count.%player%}%} to player's held item #all shop
- set {shop.player.%player%::%player%%{shop.count.%player%}%} to player's held item #player selling
- set {price::%player%%{shop.count.%player%}%} to "%arg 1%"
- set {shop.item::%player%%{shop.count.%player%}%} to player's held item
- set {shop.delete.time.%player%} to floor(unix timestamp of now) + {shop.player.delete.time} * 86400
- if name of player's held item is not set:
- send "&6&l%player's held item%&aを出品しました! &6&l値段&7->&e%arg 1%"
- else:
- send "&6&l%name of player's held item%&aを出品しました! &6&l値段&7->&e%arg 1%"
- if lore of player's held item is set:
- set {shop.lore.%player%%{shop.count.%player%}%::*} to lore of player's held item
- remove player's held item from player
- command /shop:
- trigger:
- if {shop.money.%player%} is not set:
- set {shop.money.%player%} to 0
- sound(player, "block.chest.open")
- set {_slotnum} to 9
- open chest with 6 row named "&a&lSHOP" to player
- set slot 0 of player's current inventory to ender chest named "&6&lItem list"
- if size of {shop::*} >= 28:
- set slot 53 of player's current inventory to arrow named "&6Next Page"
- set slot 48 of player's current inventory to chest named "&d&l稼いだ金額:%{shop.money.%player%}%"
- set slot 49 of player's current inventory to gold nugget named "&6&lお金:&e&l%player's money%"
- if {shop.count.%player%} is set:
- set slot 50 of player's current inventory to paper named "&6現在出品しているものを確認する。"
- else:
- set slot 50 of player's current inventory to paper named "&c現在出品しているものはありません。"
- set slot 0 of player's current inventory to ender chest named "&6&lItem list"
- loop {shop::*}:
- set {shop.page.%player%::%loop-index%} to loop-value
- loop {shop.page.%player%::*}:
- add 1 to {_slotnum}
- set {_playername} to subtext of loop-index from characters 1 to (length of loop-index - 3)
- set {_shop.price::*} to loop-index split at {_playername}
- if {_slotnum} is 17 or 26 or 35:
- add 2 to {_slotnum}
- if {_slotnum} >= 44:
- stop loop
- stop
- if {shop.lore.%loop-index%::*} is set:
- set slot {_slotnum} of player's current inventory to loop-value with lore "&f&k<ekitou%loop-index%" and "&6Price&7:&e&l%{price::%{_playername}%%{_shop.price::2}%}%" and "&6出品者&7:&b&l%{_playername}%" and "&f&k<ekitou%loop-index%" and "" and {shop.lore.%loop-index%::*}
- else:
- set slot {_slotnum} of player's current inventory to loop-value with lore "&f&k<ekitou%loop-index%" and "&6Price&7:&e&l%{price::%{_playername}%%{_shop.price::2}%}%" and "&6出品者&7:&b&l%{_playername}%" and "&f&k<ekitou%loop-index%"
- delete {shop.page.%player%::%loop-index%}
- command /selling [<player>]:
- trigger:
- if arg 1 is not set:
- send "&5========SHOP========"
- send "&6&l/selling (プレイヤー)"
- stop
- open chest with 6 row named "&a&l%arg 1%が出品している物" to player
- set {_slotnum} to 0
- loop {shop.player.%arg 1%::*}:
- set {_playername} to subtext of loop-index from characters 1 to (length of loop-index - 3)
- set {_shop.price::*} to loop-index split at {_playername}
- if {shop.lore.%loop-index%::*} is set:
- set slot {_slotnum} of player's current inventory to loop-value with lore "&f&k<ekitou%loop-index%" and "&6Price&7:&e&l%{price::%{_playername}%%{_shop.price::2}%}%" and "&6出品者&7:&b&l%{_playername}%" and "&f&k<ekitou%loop-index%" and "" and {shop.lore.%loop-index%::*}
- else:
- set slot {_slotnum} of player's current inventory to loop-value with lore "&f&k<ekitou%loop-index%" and "&6Price&7:&e&l%{price::%{_playername}%%{_shop.price::2}%}%" and "&6出品者&7:&b&l%{_playername}%" and "&f&k<ekitou%loop-index%"
- add 1 to {_slotnum}
- stop
- on inventory click:
- #player selling
- if name of player's current inventory contain "が出品している物":
- cancel event
- if clicked inventory is player's inventory:
- cancel event
- stop
- set {_price::*} to line 2 of lore of clicked item split at "&6Price&7:&e&l"
- if {_price::2} parsed as number > player's money:
- sound(player, "entity.wolf.whine")
- send "&cお金が足りません。"
- stop
- if player's money is not set:
- send "&4エラー -> &e%player%&4の変数&a{money.%%player%%}&4が設定されていません。 &3(Shop.sk)" to ops
- send "&cエラー、運営に連絡してください。"
- stop
- set {_player.sell::*} to line 3 of lore of clicked item split at "&6出品者&7:&b&l"
- if {_player.sell::2} parsed as player is player:
- send "&c自分で出品した物は購入できません。"
- close player's inventory
- stop
- set {_shop.indexnum::*} to line 1 of lore of clicked item split at "&f&k<ekitou%{_player.sell::2}%"
- set {buyselect.index.%player%} to "%{_player.sell::2}%%{_shop.indexnum::2}%"
- set {buyselect.price.%player%} to {_price::2}
- set {buyselect.sell.%player%} to {_player.sell::2}
- set {buyselect.item.%player%} to clicked item
- close player's inventory
- wait a tick
- open chest with 1 row named "&5&l本当に購入しますか?" to player
- set slot 2 of player's current inventory to light green wool named "&a購入する"
- set slot 6 of player's current inventory to red wool named "&cキャンセル"
- set slot 4 of player's current inventory to barrier block named "&6&l購入内容" with lore "&6&lItem&7->%name of clicked item%" and "&6&lPrice&7->&e&l%{_price::2}%" and "&6&l出品者&7->&b%{buyselect.sell.%player%}%"
- stop
- #item buying
- if name of player's current inventory contain "本当に購入しますか?":
- cancel event
- if clicked inventory is player's inventory:
- stop
- if name of clicked item is "&a購入する":
- if player doesn't have enough space for barrier block:
- send "&cインベントリに空きを作ってください。"
- close player's inventory
- stop
- if {shop::%{buyselect.index.%player%}%} is not set:
- send "&c先に他のプレイヤーに買われました。"
- close player's inventory
- stop
- give {shop.item::%{buyselect.index.%player%}%} to player
- remove {buyselect.price.%player%} parsed as number from player's money
- if name of {buyselect.item.%player%} is not set:
- send "%{buyselect.item.%player%}%&aを購入しました。"
- else:
- send "%name of {buyselect.item.%player%}%&aを購入しました。"
- add {buyselect.price.%player%} parsed as number to {money.%{buyselect.sell.%player%}%}
- add {buyselect.price.%player%} parsed as number to {shop.money.%{buyselect.sell.%player%}%}
- if name of {buyselect.item.%player%} is not set:
- send "&e%player%&6が%{buyselect.item.%player%}%&6を購入しました。" to {buyselect.sell.%player%} parsed as player
- else:
- send "&e%player%&6が%name of {buyselect.item.%player%}%&6を購入しました。" to {buyselect.sell.%player%} parsed as player
- delete {shop::%{buyselect.index.%player%}%}
- delete {shop.player.%{buyselect.sell.%player%}%::%{buyselect.index.%player%}%}
- delete {shop.item.%{buyselect.sell.%player%}%}
- delete {shop.lore.%{buyselect.index.%player%}%::*}
- if {buyselect.sell.%player%} parsed as player is offline:
- if name of {buyselect.item.%player%} is not set:
- add "&e%player%&6が%{buyselect.item.%player%}%&6を購入しました。" to {shop.notice.%{buyselect.sell.%player%}%::*}
- else:
- add "&e%player%&6が%name of {buyselect.item.%player%}%&6を購入しました。" to {shop.notice.%{buyselect.sell.%player%}%::*}
- close player's inventory
- stop
- if name of clicked item is "&cキャンセル":
- cancel event
- if clicked inventory is player's inventory:
- stop
- send "&c購入をキャンセルしました。"
- close player's inventory
- stop
- #item come back
- if name of player's current inventory contain "現在出品しているもの":
- cancel event
- if clicked inventory is player's inventory:
- stop
- if clicked item is air:
- stop
- if clicked slot is -999:
- stop
- set {_player.sell::*} to line 3 of lore of clicked item split at "&6出品者&7:&b&l"
- set {_shop.indexnum::*} to line 1 of lore of clicked item split at "&f&k<ekitou%{_player.sell::2}%"
- set {itemcomeback.index.%player%} to "%{_player.sell::2}%%{_shop.indexnum::2}%"
- set {itemcomeback.sell.%player%} to {_player.sell::2}
- close player's inventory
- open chest with 1 row named "&6&lアイテムを戻す" to player
- set slot 2 of player's current inventory to light green wool named "&aアイテムを戻す"
- set slot 6 of player's current inventory to red wool named "&cキャンセル"
- stop
- if name of player's current inventory contain "アイテムを戻す":
- cancel event
- if name of clicked item contain "アイテムを戻す":
- cancel event
- if player doesn't have enough space for barrier block:
- send "&cインベントリに空きを作ってください。"
- close player's inventory
- stop
- give {shop.item::%{itemcomeback.index.%player%}%} to player
- delete {shop::%{itemcomeback.index.%player%}%}
- delete {shop.player.%player%::%{itemcomeback.index.%player%}%}
- delete {shop.lore.%{itemcomeback.index.%player%}%::*}
- send "&6アイテムを戻しました。" to player
- close player's inventory
- stop
- if name of clicked item contain "キャンセル":
- close player's inventory
- stop
- if name of clicked item contain "現在出品しているものはありません":
- cancel event
- stop
- if name of clicked item contain "稼いだ金額":
- cancel event
- stop
- name of player's current inventory contain "SHOP"
- cancel event
- if clicked slot is -999:
- stop
- if clicked slot is empty:
- stop
- if name of clicked item contain "Item list":
- cancel event
- stop
- if name of clicked item contain "お金":
- cancel event
- stop
- if clicked inventory is player's inventory:
- cancel event
- stop
- if name of clicked item contain "Next Page":
- cancel event
- sound(player, "block.chest.open")
- set {_slotnum} to 9
- open chest with 6 row named "&a&lSHOP" to player
- set slot 0 of player's current inventory to ender chest named "&6&lItem list"
- if size of {shop.page.%player%::*} >= 28:
- set slot 53 of player's current inventory to arrow named "&6Next Page"
- set slot 48 of player's current inventory to chest named "&e&l稼いだ金額:%{shop.money.%player%}%"
- set slot 49 of player's current inventory to gold nugget named "&6&lお金:&e&l%player's money%"
- set slot 45 of player's current inventory to arrow named "&6&lTOPに戻る。"
- if {shop.count.%player%} is set:
- set slot 50 of player's current inventory to paper named "&6現在出品しているものを確認する。"
- else:
- set slot 50 of player's current inventory to paper named "&c現在出品しているものはありません。"
- loop {shop.page.%player%::*}:
- add 1 to {_slotnum}
- set {_playername} to subtext of loop-index from characters 1 to (length of loop-index - 3)
- set {_shop.price::*} to loop-index split at {_playername}
- if {_slotnum} is 17 or 26 or 35:
- add 2 to {_slotnum}
- if {_slotnum} >= 44:
- stop loop
- stop
- if {shop.lore.%loop-index%::*} is set:
- set slot {_slotnum} of player's current inventory to loop-value with lore "&f&k<ekitou%loop-index%" and "&6Price&7:&e&l%{price::%{_playername}%%{_shop.price::2}%}%" and "&6出品者&7:&b&l%{_playername}%" and "&f&k<ekitou%loop-index%" and "" and {shop.lore.%loop-index%::*}
- else:
- set slot {_slotnum} of player's current inventory to loop-value with lore "&f&k<ekitou%loop-index%" and "&6Price&7:&e&l%{price::%{_playername}%%{_shop.price::2}%}%" and "&6出品者&7:&b&l%{_playername}%" and "&f&k<ekitou%loop-index%"
- delete {shop.page.%player%::%loop-index%}
- stop
- if name of clicked item contain "TOPに戻る":
- cancel event
- close player's inventory
- execute player command "/shop"
- stop
- if name of clicked item contain "TTTTTTTTTF":
- sound(player, "entity.villager.no")
- stop
- if name of clicked item contain "出品しているものを確認する":
- cancel event
- close player's inventory
- open chest with 6 row named "&a&l現在出品しているもの" to player
- set {_slotnum} to 0
- loop {shop.player.%player%::*}:
- set {_playername} to subtext of loop-index from characters 1 to (length of loop-index - 3)
- set {_shop.price::*} to loop-index split at {_playername}
- if {shop.lore.%loop-index%::*} is set:
- set slot {_slotnum} of player's current inventory to loop-value with lore "&f&k<ekitou%loop-index%" and "&6Price&7:&e&l%{price::%{_playername}%%{_shop.price::2}%}%" and "&6出品者&7:&b&l%{_playername}%" and "&f&k<ekitou%loop-index%" and "" and {shop.lore.%loop-index%::*}
- else:
- set slot {_slotnum} of player's current inventory to loop-value with lore "&f&k<ekitou%loop-index%" and "&6Price&7:&e&l%{price::%{_playername}%%{_shop.price::2}%}%" and "&6出品者&7:&b&l%{_playername}%" and "&f&k<ekitou%loop-index%"
- add 1 to {_slotnum}
- stop
- #Main Shop System
- set {_price::*} to line 2 of lore of clicked item split at "&6Price&7:&e&l"
- if {_price::2} parsed as number > player's money:
- sound(player, "entity.wolf.whine")
- send "&cお金が足りません。"
- stop
- if player's money is not set:
- send "&4エラー -> &e%player%&4の変数 &a{money.%%player%%} &4が設定されていません。" to ops
- send "&cエラー、運営に連絡してください。"
- stop
- set {_player.sell::*} to line 3 of lore of clicked item split at "&6出品者&7:&b&l"
- if {_player.sell::2} parsed as player is player: #debug用の#
- send "&c自分で出品した物は購入できません。"
- close player's inventory
- stop
- set {_shop.indexnum::*} to line 1 of lore of clicked item split at "&f&k<ekitou%{_player.sell::2}%"
- set {buyselect.index.%player%} to "%{_player.sell::2}%%{_shop.indexnum::2}%"
- set {buyselect.price.%player%} to {_price::2}
- set {buyselect.sell.%player%} to {_player.sell::2}
- set {buyselect.item.%player%} to clicked item
- close player's inventory
- wait a tick
- open chest with 1 row named "&5&l本当に購入しますか?" to player
- set slot 2 of player's current inventory to light green wool named "&a購入する"
- set slot 6 of player's current inventory to red wool named "&cキャンセル"
- if name of clicked item is not set:
- set slot 4 of player's current inventory to barrier block named "&6&l購入内容" with lore "&6&lItem&7->%clicked item%" and "&6&lPrice&7->&e&l%{_price::2}%" and "&6&l出品者&7->&b%{buyselect.sell.%player%}%"
- else:
- set slot 4 of player's current inventory to barrier block named "&6&l購入内容" with lore "&6&lItem&7->%name of clicked item%" and "&6&lPrice&7->&e&l%{_price::2}%" and "&6&l出品者&7->&b%{buyselect.sell.%player%}%"
- on skript start:
- {shop.player.delete} is true
- loop {shop.sell.delete.time::*}:
- {shop.delete.time.%loop-value%} is set
- floor(unix timestamp of now) >= {shop.delete.time.%loop-value%}
- set {shop.notice.%loop-value-1%::*} to "&cあなたは%{shop.player.delete.time}%日間サーバーにログインしなかったのでShopの出品物を削除しました。"
- set {_shop.delete.num} to 100
- loop 100 times:
- add 1 to {_shop.delete.num}
- delete {shop.player.%loop-value-1%::%loop-value-1%%{_shop.delete.num}%}
- delete {shop::%loop-value-1%%{_shop.delete.num}%}
- delete {shop.lore.%loop-value-1%%{_shop.delete.num}%::*}
- remove loop-value-1 from {shop.sell.delete.time::*}
- delete {shop.delete.time.%loop-value-1%}
- on join:
- if {shop.delete.time.%player%} is set:
- set {shop.delete.time.%player%} to floor(unix timestamp of now) + {shop.player.delete.time} * 86400
- if {shop.notice.%player%::*} is set:
- loop {shop.notice.%player%::*}:
- send "%loop-value%"
- if loop-value contains "サーバーにログインしなかったので":
- wait 3 seconds
- open chest with 1 row named "&cこの画面を閉じるとアイテムは消去されます。" to player
- set {_slotnum} to 0
- loop {shop.player.%player%::*}:
- set slot {_slotnum} of player's current inventory to loop-value-2
- add 1 to {_slotnum}
- delete {shop.notice.%player%::*}
- command /shopdelete [<player>]:
- permission: admin
- trigger:
- if arg 1 is not set:
- send "&9/shopdelete &e(player)"
- send "&9そのプレイヤーが出品したものをすべて消去します。"
- stop
- set {_shop.delete.number} to 100
- loop 900 times:
- add 1 to {_shop.delete.number}
- delete {shop::%arg 1%%{_shop.delete.number}%}
- delete {shop.player.%arg 1%::%arg 1%%{_shop.delete.number}%}
- delete {price::%arg 1%%{_shop.delete.number}%}
- delete {shop.item::%arg 1%%{_shop.delete.number}%}
- delete {shop.delete.time.%arg 1%}
- send "&e%arg 1%&6の出品したものをすべて消去しました。"
- function sound(p: player, sound: text):
- play sound "%{_sound}%" with volume 1 and pitch 1 at {_p} for {_p}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement