资源图标

免费 SimpleShop 1.0.0

没有下载权限
支持核心
Paper
原创/转载
原创
作者
秋华
前置
可选: NeigeItems、ItemSpace、Vault、PlayerPoints、KetherFactory
支持版本
1.20.1

SimpleShop​

简单商店

一款商店插件 可以实现购买或兑换功能

功能列表​

  • ItemSpace兼容 能够实现检查空间物品扣除
  • 每种商店支持不同的ui
  • 定期刷新
  • 购买上限
  • 随机商品

指令​

[]为必填 <>为可选
  • /SimpleShop reload [权限: SimpleShop.reload] 重新加载全部配置文件
  • /SimpleShop open [商店id] <玩家名字> [权限: SimpleShop.open.商店id] 打开一个指定商店

配置文件​

YAML:
Debug: true
#每次发包时发送的物品数量 也可以理解成一页中显示的数量
DisplayItemAmount: 6
#ItemSpace兼容
ItemSpace:
  #是否启用
  enable: false
  #需要这个权限才扣除仓库物品 否则扣除背包的
  permissions: RoleSystem.ItemSpace
  #检查的仓库  留空则在全部仓库查询
  ItemSpaceId: "普通仓库"


#在ui内相应的操作会触发 SimpleShopMessage 这个包 包的内容是返回相应的文本 支持papi解析
#<amount>是购买数量
#<item> 商品名称
#<permission> 权限名称
#<money> 需要的钱
#<points> 需要的点券
Message:
  switchShop: "你无权切换到此商店"  #当使用切换商店包时
  moneyLack: "购买 <item> X <amount> 失败,缺少经济<money>"
  pointsLack: "购买 <item> X <amount> 失败,缺少点券<points>"
  itemLack: "购买 <item> X <amount> 失败,缺少所需材料"
  permissionLack: "购买 <item> X <amount> 失败,缺少所需权限<permission>"
  successBuy: "成功购买 <item> X <amount>"
  playerBuyAmountMax: "购买次数达到上限"


#数据库
Database:
  type: sqlite   #sqlite或者mysql   mysql才需要配置下面的部分
  dataBaseName: SimpleShop   #数据库名称
  username: root  #账户名称
  password: root  #密码
  port: 3306  #端口
  ip: 127.0.0.1  #ip
  autoSave: 15 #自动保存间隔 分钟
  loadDelay: 40 #加载延迟tick

Shop为商店文件夹商店名字是配置名称
YAML:
#这个商店使用的Ui主题
UiTheme: "示例商店ui"
#自定义的信息传递 ax那边使用该节点名称即可获取 支持papi解析 解析对象为查看者
# 内置的参数名称
# pages 当前页数
# pagesMax 最大页数
Packet:
  title: "示例商店"

# 商店类型
# Player 以玩家为单位存储的商店 即为商品和购买次数玩家独立
# World 以世界为单位存储的商店 即为商品和购买次数世界独立
ShopType: "Player"
# 这个商店的刷新周期  DAILY每天刷新(过午夜)  WEEKLY每周刷新(周日到周一)  MONTHLY每月刷新(跨月)
# World类型的商店 是没有持久化存储的 他的数据在世界卸载或者关服时就删除了 刷新周期也是无效
RefreshCycle: "DAILY"


#商品列表
Shelves:
  示例商品1:
    #自定义的信息传递 支持papi解析 解析对象为查看者
    # 内置的参数名称
    # isBuy 是否满足购买需求
    # goodsId 商品的id
    # buyAmount 玩家剩余可购买次数
    # buyAmountMax 可以购买的次数
    packet:
      title: "这是一个示例商品1 100%刷新"
    # 允许购买的次数 -1是无限
    buyAmountMax: 2
    # 这个物品出现的概率 1=100%
    probability: 1
    #展示物品 均不支持papi解析
    displayItem:
      name: 展示品1 #物品名称
      material: PAPER #物品材质 如果填写 NeigeItems 则使用物品名称对应的ni物品库物品  并且下面的一些物品参数均可移除
      model: -1 #模型数据 -1不使用
      lore: #描述列表
      amount: #显示的数量
      textura: #如果物品材质为 PLAYER_HEAD 这里则指定头颅材质
    #这个条件支持原版的物品材质类型 需要全大写 优先检查材质 其次才是名字
    #money为经济
    #points为点券
    #permission为权限
    condition:
      - "&f测试掉落物1::2"
      - "&f测试掉落物2::10"
      - "money::1000"
    #展示需要的物品
    displayNeedItem:
      经济:
        name: 需要经济X1000
        material: PAPER
        model: -1
        lore:
        amount: 1
      测试掉落物1:
        name: 测试掉落物1
        material: PAPER
        model: -1
        lore:
        amount: 5
      测试掉落物2:
        name: 测试掉落物2
        material: PAPER
        model: -1
        lore:
        amount: 10
    #购买成功后执行的动作列表 安装KetherFactory后则是执行ke动作列表 否则执行控制台命令 支持papi解析 解析对象为购买者 <value>会解析成数量
    actions:
      - tell "%player_name% 成功购买<amount>个示例商品1"
    #失败时执行的
    deny:
      - tell "%player_name% 购买<amount>个示例商品1失败"

  示例商品2:
    packet:
      title: "这是一个示例商品2 50%刷新"
    buyAmountMax: 10
    probability: 0.5
    displayItem:
      name: 展示品2
      material: PAPER
      model: -1
      lore:
      amount:
      textura:
    condition:
      - "&f测试掉落物1::2"
      - "&f测试掉落物2::10"
      - "money::1000"
    displayNeedItem:
      经济:
        name: 需要经济X1000
        material: PAPER
        model: -1
        lore:
        amount: 1
      测试掉落物1:
        name: 测试掉落物1
        material: PAPER
        model: -1
        lore:
        amount: 5
      测试掉落物2:
        name: 测试掉落物2
        material: PAPER
        model: -1
        lore:
        amount: 10
    actions:
    deny:

  示例商品3:
    packet:
      title: "这是一个示例商品3 20%刷新"
    buyAmountMax: 10
    probability: 0.5
    displayItem:
      name: 展示品3
      material: PAPER
      model: -1
      lore:
      amount:
      textura:
    condition:
      - "&f测试掉落物1::2"
      - "&f测试掉落物2::10"
      - "money::1000"
    displayNeedItem:
      经济:
        name: 需要经济X1000
        material: PAPER
        model: -1
        lore:
        amount: 1
      测试掉落物1:
        name: 测试掉落物1
        material: PAPER
        model: -1
        lore:
        amount: 5
      测试掉落物2:
        name: 测试掉落物2
        material: PAPER
        model: -1
        lore:
        amount: 10
    actions:
    deny:

图片中的配置下载地址
通过网盘分享的文件:插件示例配置.zip
链接: https://pan.baidu.com/s/1ZDBTU8FEhgZjB-qs8qdY-A?pwd=856h 提取码: 856h

UI收发包说明​

SimpleShopMessagePacket是当前界面获取的消息
里面一般只有一个参数 meg 即为消息内容

SimpleShopPacket在商店打开或者刷新时的包
内置参数 pages 当前页数 pagesMax 最大页数
同时包含商店配置内的Packet内容

SimpleShopGoodsItemPacket在商店打开或者刷新时的包
key是商品名称 value是这个物品显示的槽位id
实际上这个包并不是必须使用的 你可以手动设置槽位 槽位id是 SimpleShopGoodsItemSlot_0 开始 每有一个商品 结尾数字+1 你可以直接提前配置好相应数量的槽位来展示物品

SimpleShopGoodsNeedPacket当你发送了商品包后会收到的包
内置参数 isBuy 是否满足购买需求 goodsId 商品的id buyAmount 玩家剩余可购买次数 buyAmountMax 可以购买的次数 同时包含商品配置内的Packet内容

SimpleShopGoodsNeedItemPacket当你发送了商品包后会收到的包
他的内容是需求物品 key是显示物品的槽位id value是数量
实际上这个包并不是必须使用的 你可以手动设置槽位 槽位id是 SimpleShopGoodsNeedItemSlot_0 开始 每有一个需求物品 结尾数字+1 你可以直接提前配置好相应数量的槽位来展示物品

Packet.send('SimpleShop', 'switchShop', '商店名称')
切换商店包 会切换到指定商店

Packet.send('SimpleShop', 'prevPage')
prevPage是翻页包 是上一页

Packet.send('SimpleShop', 'nextPage')
nextPage是翻页包 是下一页

Packet.send('SimpleShop', 'giveGoodsInfo', 商品id)
获取一个商品信息

Packet.send('SimpleShop', 'buyGoods', var.当前选中商品id, "数量")
购买商品包

内容展示​

1752054865908.webp


1752054874955.webp

1752054880649.webp
作者
御明花月秋华
下载
2
查看
26
首次发布
最后更新

评分

0.00 星 0 星

分享此资源