资源图标

[其他]VBYShop —— 一个商店插件 [2.1] 2022-09-05

没有下载许可
1.修复默认配置文件中默认显示格式报错的问题(想整整多继承,然后坏了)
2.修复[货币.打击]中当NPC受到非玩家伤害报错的问题
1.为许多商店添加[系统显示格式]和[玩家显示格式]
2.添加新的获取 货币 的方式
3.更新了Progress,现在可以修改显示的名称
4.可以设置子命令的权限,是否允许服务器执行,是否需要登录(东西是加了,但是没有例子)
5.添加使用命令 back 可以消耗货币返回死亡点
6.管理命令的Add和Del不止能添加ItemSystemShop的商品了
7.管理命令添加reload子命令,可以进行重载配置文件,/reload重载依然有效
8.优化重载,现在除了常驻事件外的事件都会随着配置文件的重载进行卸载和加载
更新到1.0.0.3,别问我为什么没有1.0.0.2,问就是发过,但是不在这里
不写更新了什么,直接写新的文档(因为我都不知道我更新了什么,一些比较重要的可能会提)

本插件由3个文件(VBY.Class,VBY.Progress,VBY.Shop)集合而成,可能有点大

提示:本插件的配置文件其中的内容都是可以修改的,但是不要改变数据类型,指令部分不可留空,权限不能写null,名称不能写null和[],会报错

Progress 介绍:
配置文件:tshock/Progress.json
JSON:
{
    "指令": {
        "使用": {
            "权限": "vby.progress.use",
            "名称": [ "pg" ]
        },
        "管理": {
            "权限": "vby.progress.admin",
            "名称": [ "pgc" ]
        }
    },//上面两个就不介绍了,都写中文了,还看不懂,权限也不理解的话,别用
    "文本": {
        "Boss名称": [
            "史莱姆王",
            "克苏鲁之眼",
            "世吞或脑子",
            "蜂王",
            "骷髅王",
            "独眼巨鹿",
            "血肉墙",
            "史莱姆皇后",
            "任意机械BOSS",
            "毁灭者",
            "双子魔眼",
            "机械骷髅王",
            "世纪之花",
            "石巨人",
            "猪龙鱼公爵",
            "光之女皇",
            "拜月教邪教徒",
            "日耀柱",
            "星云柱",
            "星旋柱",
            "星尘柱",
            "月亮领主",
            "哀木",
            "南瓜王",
            "常绿尖叫怪",
            "圣诞坦克",
            "冰雪女王"
        ],
        "事件名称": [ "哥布林军队", "海盗入侵", "南瓜月", "霜月", "火星暴乱" ]
    }//上面两个是显示的文本,有顺序的,不想用我写的名称,可以改,这里的文本也关系到shop的进度提示文本
}
命令:
使用命令(默认名称pg):
代码:
Progress
-Boss 描述:查看Boss击败情况 触发词:{b,boss} 参数:[{n,no}] 不写时为显示全部,写了仅显示未击败
-Event 描述:查看事件击败情况 触发词:{e,event} 参数:无
管理命令(默认名称pgc):
代码:
ProgressControl
-Change 描述:修改击败情况
--Boss 描述:修改Boss击败情况 触发词:{b,boss} 参数:Index [Index2] [...] Index值为Progress-Boss显示的值
--Event 描述:修改事件击败情况 触发词:{e,event} 参数:Index [Index2] [...] Index值为Progress-Event显示的值
-Reset 描述:重置全部击败情况 触发词:{r,reset} 参数:无
重载:/reload

Shop介绍:
配置目录:tshock/shop
配置文件:tshock/shop/Shop.json
JSON:
{
    "指令": {
        "使用": {
            "权限": "vby.shop.use",
            "名称": [ "shop" ],
            "子命令": null
            },//子命令用于设置子命令需要的权限,需要登录,允许服务器三个参数
        "管理": {
            "权限": "vby.shop.admin",
            "名称": [ "shopctl" ],
            "子命令": null
        }
    },
    "商店": {
        "物品": {
            "系统": {
                "开启": true,
                "系统显示格式": "ID:{buyid} {type} {itemname} {price}{moneyname}/{stack}个",
                "玩家显示格式": "ID:{buyid} {type} {itemname}[i/s{stack}:{type}] {price}{moneyname}/{stack}个",
                "进度": true, //是否进行进度检测
                "区域": true, //是否进行区域检测
                "组": false //是否进行组检测
            },//开启:为false时不会加入命令列表,系统显示格式:控制台执行时的显示,玩家显示格式:玩家执行使用的格式,默认示例每个都使用了全部可替换的单词,不要写其他的
            "玩家": {
                "开启": true,
                "系统显示格式": "ID:{buyid} {itemname} {price}{moneyname}/{stack}个 出售者:{sellername}",
                "玩家显示格式": "ID:{buyid} {itemname}[i/s{stack}:{type}] {price}{moneyname}/{stack}个 出售者:{sellername}",
                "手续费": 0.01  //别的玩家购买商品后出售者获得去除的百分比
            }
        },
        "充值": {
            "开启": true,
            "系统显示格式": "ID:{buyid} {type} {itemname} {price}{moneyname}/{stack}个",
            "玩家显示格式": "ID:{buyid} {type} {itemname}[i/s{stack}:{type}] {price}{moneyname}/{stack}个",
            "进度": true,
            "区域": true,
            "组": false
        },
        "生命": {
            "上限": {
                "开启": true,
                "系统显示格式": "ID:{buyid} {start}-{end} {price}{moneyname}",
                "玩家显示格式": "ID:{buyid} {start}-{end} {price}{moneyname}",
                "进度": true
            },
            "恢复": {
                "开启": true,
                "系统显示格式": "ID:{buyid} {start}-{end} {price}{moneyname}/0.01%",
                "玩家显示格式": "ID:{buyid} {start}-{end} {price}{moneyname}/0.01%",
                "进度": true,
                "重生": true //重生后恢复最大生命的一半血量
            }
        },
        "增益": {
            "开启": true,
            "系统显示格式": "ID:{buyid} {type} {buffname} {price}{moneyname}",
            "玩家显示格式": "ID:{buyid} {type} {buffname} {price}{moneyname}",
            "进度": true,
            "区域": true,
            "组": false,
            "重生": true,  //重生后给予购买的增益,时间为已购买的时间
            "最大时间": 1800,  //购买时间允许的上限,单位秒
            "时间价格": 1000 //购买每秒需要的货币数量
        },
        "npc": {
            "开启": true,
            "系统显示格式": "ID:{buyid} {type} {npcname} {price}{moneyname}/个 {maxstack}个",
            "玩家显示格式": "ID:{buyid} {type} {npcname} {price}{moneyname}/个 {maxstack}个",
            "进度": true,
            "区域": true,
            "组": false,
            "生成": {
                "x": 0,
                "y": 0
            }, //购买NPC后NPC生成位置给予玩家中心的偏移
            "最大数量": 5, //单次购买NPC的最大数量,和MaxStack一起制约单次购买数量
            "间隔": 1  //购买NPC的生成间隔,单位秒,每次1只
        },
        "方块": {
            "开启": true,
            "进度": true,
            "区域": true,
            "组": false,
            "生成": {
                "x": 1,
                "y": 2
            } //购买方块的生成位置和检测偏移,不建议修改,默认为玩家右下角
        }
    },
    "货币": {
        "名称": "余额",
        "打击": {
            "开启": false, //为true时,npc受伤就会给予玩家一个货币
            "排除": [] //排除的npc的id(type,不是netid)
        },
        "击杀": {
            "个数": {
                "开启": true, //npc被杀死后会给予玩家一个货币
                "排除": [] //同打击
            },
            "血量上限": {
                "开启": true,
                "百分比": 0.05 //npc被杀死后给予玩家那个怪物血量上限百分比的货币
            }
        }
    },
    "购买": {
        "进度提示": {
            "开启": true,  //购买时条件不合格是否提示进度不合格
            "详细": true //不合格且提示时是否进行详细显示,会把Progress的数字转换成文本发给玩家
        },
        "区域提示": {
            "开启": true, //购买时条件不合格是否提示区域不合格
            "详细": true //不合格且提示时是否进行详细显示,会把Zone的数字转换成文本发给玩家
        },
        "组提示": true //购买时条件不合格是否提示组不合格
        },
    "其它": {
        "回死亡点": {
            "开启": true, //开启后会记录玩家死亡时的坐标
            "价格": 1000, //返回死亡点需要的货币数量
            "一次": true  //一个记录是否只能使用一次
        },
        "显示全部": true, //是否允许在list命令后添加参数 a 以显示全部商品
        "服务器区域检查": false //非真正玩家进行区域检查时的返回值
    }
}
数据存放:tshock/shop/shop.db (sqlite数据库)
翻译文件(可选):BuffID.json,ItemID.json,PrefixID.json,NpcID.json,TileID.json
翻译文件格式:
JSON:
{
    "ID": "名称",
    "ID2": "名称"
}
翻译文件要加的话就写全,不要缺少ID,不然可能会报错
TileID.json文件比较特殊,文件格式如下:
JSON:
{
    "ID": {
        "子ID": "名称"
    }
}
因为Tile(方块)具有子类型,所以翻译文件一并有子类型
当然你也可以不用,直接-lang 7,不过这样Tile没有名称(没找到Tile的名称在哪获取)

数据库介绍:
SQL:
CREATE TABLE IF NOT EXISTS BuffShop
(
    BuyId  INTEGER(16) NOT NULL UNIQUE      CHECK (BuyId >= 0),
    Type   INTEGER(16) NOT NULL             CHECK (Type >= 0 AND Type <= 338),
    Price  INTEGER(64) NOT NULL DEFAULT 1   CHECK (Price >= 0),
    Progress TEXT(128) NOT NULL DEFAULT '',
    Zone     TEXT(128) NOT NULL DEFAULT '',
    FGroup   TEXT(128) NOT NULL DEFAULT ''
);
CREATE TABLE IF NOT EXISTS ItemChangeShop
(
    BuyId  INTEGER(16) NOT NULL UNIQUE      CHECK (BuyId >= 0),
    Type   INTEGER(32) NOT NULL             CHECK (Type > 0 AND Type <= 5125),
    Stack  INTEGER(32) NOT NULL DEFAULT 1   CHECK (Stack > 0),
    Price  INTEGER(64) NOT NULL DEFAULT 1   CHECK (Price >= 0),
    Prefix INTEGER(16) NOT NULL DEFAULT 0   CHECK (Prefix >= 0),
    PlayerName TEXT    NOT NULL
);
CREATE TABLE IF NOT EXISTS ItemSystemShop
(
    BuyId    INTEGER(16) NOT NULL UNIQUE      CHECK (BuyId >= 0),
    Type     INTEGER(32) NOT NULL             CHECK (Type >= 0 AND Type <= 5125),
    Stack    INTEGER(32) NOT NULL DEFAULT 1   CHECK (Stack > 0),
    Price    INTEGER(64) NOT NULL DEFAULT 1   CHECK (Price >= 0),
    Prefix   INTEGER(16) NOT NULL DEFAULT 0   CHECK (Prefix >= 0 AND Prefix <= 90),
    Progress TEXT(128)   NOT NULL DEFAULT '',
    Zone     TEXT(128)   NOT NULL DEFAULT '',
    FGroup   TEXT(128)   NOT NULL DEFAULT ''
);
CREATE TABLE IF NOT EXISTS LifeHealShop
(
    BuyId    INTEGER(16) NOT NULL UNIQUE      CHECK (BuyId >= 0),
    Start    INTEGER(16) NOT NULL DEFAULT 0   CHECK (Start >=  0),
    End      INTEGER(16) NOT NULL DEFAULT 50  CHECK (End <= 32767),
    Price    INTEGER(64) NOT NULL DEFAULT 1   CHECK (Price >= 0),
    Progress TEXT(128)   NOT NULL DEFAULT ''
);
CREATE TABLE IF NOT EXISTS LifeMaxShop
(
    BuyId    INTEGER(16) NOT NULL UNIQUE      CHECK (BuyId >= 0),
    Start    INTEGER(16) NOT NULL DEFAULT 100 CHECK (Start >=  0),
    End      INTEGER(16) NOT NULL DEFAULT 400 CHECK (End <= 32767),
    Price    INTEGER(64) NOT NULL DEFAULT 1   CHECK (Price >= 0),
    Progress TEXT(128)   NOT NULL DEFAULT ''
);
CREATE TABLE IF NOT EXISTS NpcShop
(
    BuyId    INTEGER(16) NOT NULL UNIQUE    CHECK (BuyId >= 0),
    Type     INTEGER(32) NOT NULL           CHECK (Type >= 0 AND Type <= 670),
    Price    INTEGER(64) NOT NULL DEFAULT 1 CHECK (Price >= 0),
    MaxStack INTEGER(16) NOT NULL DEFAULT 0 CHECK (MaxStack >= 0),
    Progress TEXT(128)   NOT NULL DEFAULT '',
    Zone     TEXT(128)   NOT NULL DEFAULT '',
    FGroup   TEXT(128)   NOT NULL DEFAULT ''
);
CREATE TABLE IF NOT EXISTS PayShop
(
    BuyId    INTEGER(16) NOT NULL UNIQUE      CHECK (BuyId >= 0),
    Type     INTEGER(32) NOT NULL             CHECK (Type >= 0 AND Type <= 5125),
    Stack    INTEGER(32) NOT NULL DEFAULT 1   CHECK (Stack > 0),
    Price    INTEGER(64) NOT NULL DEFAULT 1   CHECK (Price >= 0),
    Prefix   INTEGER(16) NOT NULL DEFAULT -1  CHECK (Prefix >= -1 AND Prefix <= 90),
    Progress TEXT(128)   NOT NULL DEFAULT '',
    Zone     TEXT(128)   NOT NULL DEFAULT '',
    FGroup   TEXT(128)   NOT NULL DEFAULT ''
);
CREATE TABLE IF NOT EXISTS TileShop
(
    BuyId    INTEGER(16) NOT NULL UNIQUE     CHECK (BuyId >= 0),
    Type     INTEGER(32) NOT NULL            CHECK (Type >= 0 AND Type <= 625),
    Size     TEXT(16)    NOT NULL DEFAULT '',
    Price    INTEGER(64) NOT NULL DEFAULT 1  CHECK (Price >= 0),
    Style    INTEGER(16) NOT NULL DEFAULT 0  CHECK (Style >= 0),
    Walls    TEXT(64)    NOT NULL DEFAULT '',
    Bottoms  TEXT(64)    NOT NULL DEFAULT '',
    Progress TEXT(128)   NOT NULL DEFAULT '',
    Zone     TEXT(128)   NOT NULL DEFAULT '',
    FGroup   TEXT(128)   NOT NULL DEFAULT ''
);
CREATE TABLE IF NOT EXISTS PlayerInfo
(
    PlayerId   INTEGER     PRIMARY KEY AUTOINCREMENT,
    PlayerName TEXT(256)   NOT NULL,
    Money      INTEGER(64) NOT NULL DEFAULT 0,
    HaveBuff   TEXT(1024)  NOT NULL DEFAULT '',
    OpenBuff   TEXT(1024)  NOT NULL DEFAULT '',
    BuffTime   INTEGER(32) NOT NULL DEFAULT 0,
    HealStack  INTEGER(32) NOT NULL DEFAULT 0
);
字段:Progress
类型:TEXT
作用:进度检查文本
提示:此进度检查使用仅检查Boss进度,写值为 Progress-Boss的Index,未知值为false,也就是当有未知值时基本上都是无法通过检测的
组合符号:,(和) |(或) -(非)
示例:
1、 1,2,3 要求击败 {史莱姆王 和 克苏鲁之眼 和 世吞或脑子}
2、1,2|3 要求击败 {史莱姆王 和 (克苏鲁之眼 或 世吞或脑子)}
3、-1,2|3 要求击败 {未击败-史莱姆王 和 (克苏鲁之眼 或 世吞或脑子)}

字段:Zone
类型:TEXT
作用:区域检查文本
提示:Server(非真正玩家)进行区域检查时会返回 Shop.json内 [其他.服务器区域检查] 的值,写法和Progress字段一样,以下是对应
代码:
Select Case checks
    Case "", "0"
        result = True
    Case "1"
        result = .ZoneDungeon'地牢
    Case "2"
        result = .ZoneCorrupt'腐化
    Case "3"
        result = .ZoneHallow '神圣
    Case "4"
        result = .ZoneMeteor'流星
    Case "5"
        result = .ZoneJungle'丛林
    Case "6"
        result = .ZoneSnow'雪原
    Case "7"
        result = .ZoneCrimson'猩红
    Case "8"
        result = .ZoneWaterCandle'水蜡烛
    Case "9"
        result = .ZonePeaceCandle'和平蜡烛
    Case "10"
        result = .ZoneTowerSolar'日耀
    Case "11"
        result = .ZoneTowerVortex'星漩
    Case "12"
        result = .ZoneTowerNebula'星云
    Case "13"
        result = .ZoneTowerStardust'星尘
    Case "14"
        result = .ZoneDesert'沙漠
    Case "15"
        result = .ZoneGlowshroom'蘑菇
    Case "16"
        result = .ZoneUndergroundDesert'地下沙漠
    Case "17"
        result = .ZoneSkyHeight '天空
    Case "18"
        result = .ZoneOverworldHeight '地表
    Case "19"
        result = .ZoneDirtLayerHeight '地下(泥土层)
    Case "20"
        result = .ZoneRockLayerHeight '洞穴(岩石层)
    Case "21"
        result = .ZoneUnderworldHeight '地狱
    Case "22"
        result = .ZoneBeach '沙滩(海洋)
    Case "23"
        result = .ZoneRain '雨
    Case "24"
        result = .ZoneSandstorm '沙尘暴
    Case "25"
        result = .ZoneOldOneArmy '旧日军团
    Case "26"
        result = .ZoneGranite '花岗岩
    Case "27"
        result = .ZoneMarble '大理石
    Case "28"
        result = .ZoneHive '蜂巢
    Case "29"
        result = .ZoneGemCave '宝石洞穴
    Case "30"
        result = .ZoneLihzhardTemple '神庙
    Case "31"
        result = .ZoneGraveyard '墓地
    Case Else
        result = False
End Select
直接上代码,懒得写
别问我这些区域是怎么判定的,问就是我不知道,问游戏去,游戏答不答不关我事

字段:FGroup
类型:TEXT
作用:组检查文本
提示:使用VB.NET的Like运算符,写法和Progress一样,没有转义符,所以请不要在组内使用 ,-| 这三个符号,官方Like使用文档:https://docs.microsoft.com/zh-cn/dotnet/visual-basic/language-reference/operators/like-operator,看不懂也和我没关系,直接全文本

字段:BuyId
类型:INTEGER
作用:购买时使用的ID
限制:要求0-32767,超过此范围的无法购买

字段:Type
类型:INTEGER
作用:购买后使用的ID
限制:自己看隐藏的Sql语句

字段:Price
类型:INTEGER
作用:价格(单价)
限制:别写太大,计算会炸

字段:Stack
类型:INTEGER
作用:数量(购买一次的)
限制:同Price

字段:Prefix
类型:INTEGER
作用:物品前缀
提示:物品商店专属字段
限制:0到90,Pay商店为 -1 到 90

字段:Start ,End
类型:INTEGER
作用:限制购买范围(判定为 Start>= 已有值 >= End)
提示:生命恢复和生命上限专属字段
限制:0-32767

字段:MaxStack
类型:INTEGER
作用:限制NPC购买时世界已有此Type的NPC的最大数量
提示:NPC商店专属字段
示例:5,此时如果世界上已有 5 个此Type的NPC,将不给购买,如果少于5个且购买数量+已有数量大于5,会把购买数量削减至两数之差

字段:PlayerName
类型:TEXT
作用:玩家名称

字段:Size
类型:TEXT
作用:物块商店放置物块的大小
提示:物块商店专属字段
限制:目前只能写 22 32 33 这三个之一

字段:Style
类型:INTEGER
作用:物块子类型
提示:物块商店专属字段,不要乱写子类型,乱写报错我不管

字段:Walls
类型:TEXT
作用:墙要求
提示:物块商店专属字段,购买时检测放置区域的墙ID,要不不写,要不就写Size两个数字乘积,-1为任何,比如Size是22,你要写4(2x2)个,要不就不写

字段:Bottoms
类型:TEXT
作用:底部物块要求
提示:物块商店专属字段,购买时检测放置区域底部的物块ID,要不不写,要不就写Size第一个数,-1为任何,比如Size是22,你要写2个,要不就不写

PlayerInfo表的不讲了,自己翻译一下

事件:
名称:ServerJoin
类型:常驻
作用:创建VBYShopPlayer

名称:ServerLeave
类型:常驻
作用:保存并删除VBYShopPlayer

名称:Reload
类型:常驻
作用:/reload 时重载配置文件

名称:ToDB
类型:常驻
作用:每隔10分钟自动保存所有VBYShopPlayer数据到数据库

名称:EffectHeal
类型:跟随配置
作用:额外恢复使用事件

名称:NpcStrike
类型:跟随配置
作用:货币.打击 使用事件

名称:NpcKilled
类型:跟随配置
作用:货币.击杀 使用事件

名称:KillMe
类型:跟随配置
作用:其他.回死亡点 使用事件

名称:PlayerSpawn
类型:跟随配置
作用:增益商店给予增益(商店.增益.重生),商店.恢复.生命.恢复.重生(恢复最大生命的一半) 使用事件

命令:
普通命令(默认为shop):
代码:
-Buff
 描述:增益商店
 描述命令:是
 文本:b,buff
 直接执行:否
--Buy
  描述:购买
  描述命令:否
  文本:b,buy
  直接执行:否
  帮助文本:ID [ID2] [...] 购买增益
--Close
  描述:关闭
  描述命令:否
  文本:c,close
  直接执行:否
  帮助文本:ID [ID2] [...] 关闭增益
--List
  描述:列表
  描述命令:否
  文本:l,list
  直接执行:是
--Open
  描述:打开
  描述命令:否
  文本:o,open
  直接执行:否
  帮助文本:ID [ID2] [...] 打开关闭的增益
--State
  描述:状态
  描述命令:否
  文本:s,state
  直接执行:是
--Time
  描述:时间
  描述命令:否
  文本:t,time
  直接执行:否
  帮助文本:num 购买增益时间
-Change
 描述:交易商店
 描述命令:是
 文本:c,change
 直接执行:否
--Add
  描述:上架
  描述命令:否
  文本:a,add
  直接执行:否
  帮助文本:Price 售卖当前手持物品
--Buy
  描述:购买
  描述命令:否
  文本:b,buy
  直接执行:否
  帮助文本:BuyId 购买物品
--Cancel
  描述:取消
  描述命令:否
  文本:c,cancel
  直接执行:否
  帮助文本:<all | buyid> 取消售卖物品
--List
  描述:列表
  描述命令:否
  文本:l,list
  直接执行:是
-Item
 描述:物品商店
 描述命令:是
 文本:i,item
 直接执行:否
--Buy
  描述:购买
  描述命令:否
  文本:b,buy
  直接执行:否
  帮助文本:ID [Stack = 1] 购买物品
--List
  描述:列表
  描述命令:否
  文本:l,list
  直接执行:是
-Life
 描述:生命相关
 描述命令:是
 文本:l,life
 直接执行:否
--Heal
  描述:额外恢复
  描述命令:是
  文本:h,heal
  直接执行:否
---Buy
   描述:购买
   描述命令:否
   文本:b,buy
   直接执行:否
   帮助文本:<ID> [Stack = 1] 购买额外恢复
---List
   描述:列表
   描述命令:否
   文本:l,list
   直接执行:是
--Max
  描述:最大生命
  描述命令:是
  文本:m,max
  直接执行:否
---Buy
   描述:购买
   描述命令:否
   文本:b,buy
   直接执行:否
   帮助文本:<ID> [Stack = 1] 购买最大生命
---List
   描述:列表
   描述命令:否
   文本:l,list
   直接执行:是
-Money
 描述:剩余货币
 描述命令:否
 文本:m,money
 直接执行:是
-NPC
 描述:NPC商店
 描述命令:是
 文本:n,npc
 直接执行:否
--Buy
  描述:购买
  描述命令:否
  文本:b,buy
  直接执行:否
  帮助文本:<NpcId> [Stack = 1] 购买NPC
--List
  描述:列表
  描述命令:否
  文本:l,list
  直接执行:是
-Pay
 描述:充值商店
 描述命令:是
 文本:p,pay
 直接执行:否
--Buy
  描述:购买
  描述命令:否
  文本:b,buy
  直接执行:否
  帮助文本:<ID> [Stack = 1] 购买余额
  提示:这里和物品商店相反,Price是买一次会给的货币数量,而Type是要扣除的物品ID,Stack是一次要扣除的物品数量,Prefix 在这可以写-1,表示可以支付任意前缀的物品,-1以外的都要求相等
--List
  描述:列表
  描述命令:否
  文本:l,list
  直接执行:是
-Tile
 描述:放置物商店
 描述命令:是
 文本:t,tile
 直接执行:否
--Buy
  描述:购买
  描述命令:否
  文本:b,buy
  直接执行:否
  帮助文本:<ID> 购买放置物
--List
  描述:列表
  描述命令:否
  文本:l,list
  直接执行:是
-Back
 描述:返回死亡点
 描述命令:否
 文本:ba,back
 直接执行:是
管理命令(默认为shopctl):
代码:
-Add
 描述:添加数据
 描述命令:是
 文本:a,add
 直接执行:否
--Buff
  描述:添加增益商品
  描述命令:否
  文本:b,buff
  直接执行:否
  帮助文本:<BuyId> <Type> <Price> [Progress] [Zone] [FGroup] 添加增益商品
--ItemChange
  描述:添加交易物品
  描述命令:否
  文本:c,change
  直接执行:否
  帮助文本:Type Stack Price [Prefix] 添加一次性售卖物品
--ItemSystem
  描述:添加系统商品
  描述命令:否
  文本:i,item
  直接执行:否
  帮助文本:<BuyId> <Type> <Stack> <Price> [Prefix] [Progress] [Zone] [FGroup] 添加系统商品
--LifeHeal
  描述:添加恢复商品
  描述命令:否
  文本:h,heal
  直接执行:否
  帮助文本:<BuyId> <Start> <End> <Price> [Progress] 添加恢复商品
--LifeMax
  描述:添加生命上限商品
  描述命令:否
  文本:m,max
  直接执行:否
  帮助文本:<BuyId> <Start> <End> <Price> [Progress] 添加生命上限商品
--NPC
  描述:添加NPC商品
  描述命令:否
  文本:n,npc
  直接执行:否
  帮助文本:<BuyId> <Type> <Price> <MaxStack> [Progress] [Zone] [FGroup] 添加NPC商品
--Pay
  描述:添加充值商品
  描述命令:否
  文本:p,pay
  直接执行:否
  帮助文本:<BuyId> <Type> <Stack> <Price> [Prefix] [Progress] [Zone] [FGroup] 添加充值商品
--Tile
  描述:添加方块商品
  描述命令:否
  文本:t,tile
  直接执行:否
  帮助文本:<BuyId> <Type> <Size> <Price> [Style] [Walls] [Bottoms] [Progress] [Zone] [FGroup] 添加方块商品
-Check
 描述:查看数据
 描述命令:否
 文本:ch,check
 直接执行:否
 帮助文本:<id(i)|name(n)> <PlayerId|PlayerName> 查看玩家信息
-Clear
 描述:清空数据
 描述命令:否
 文本:cl,clear
 直接执行:否
 帮助文本:表名|money|playerinfo
-Del
 描述:删除数据
 描述命令:是
 文本:d,del
 直接执行:否
--Buff
  描述:删除增益商品
  描述命令:否
  文本:b,buff
  直接执行:否
  帮助文本:BuyId [BuyId2] [...] 删除增益商品
--ItemChange
  描述:删除交易物品
  描述命令:否
  文本:c,change
  直接执行:否
  帮助文本:BuyId [BuyId2] [...] 删除交易物品
--ItemSystem
  描述:删除系统商品
  描述命令:否
  文本:i,item
  直接执行:否
  帮助文本:BuyId [BuyId2] [...] 删除系统商品
--LifeHeal
  描述:删除恢复商品
  描述命令:否
  文本:h,heal
  直接执行:否
  帮助文本:BuyId [BuyId2] [...] 删除恢复商品
--LifeMax
  描述:删除生命上限商品
  描述命令:否
  文本:m,max
  直接执行:否
  帮助文本:BuyId [BuyId2] [...] 删除生命上限商品
--NPC
  描述:删除NPC商品
  描述命令:否
  文本:n,npc
  直接执行:否
  帮助文本:BuyId [BuyId2] [...] 删除NPC商品
--Pay
  描述:删除充值商品
  描述命令:否
  文本:p,pay
  直接执行:否
  帮助文本:BuyId [BuyId2] [...] 删除充值商品
--Tile
  描述:删除方块商品
  描述命令:否
  文本:t,tile
  直接执行:否
  帮助文本:BuyId [BuyId2] [...] 删除方块商品
-Edit
 描述:数据编辑
 描述命令:是
 文本:e,edit
 直接执行:否
--LifeMax
  描述:最大生命
  描述命令:否
  文本:l,lifemax
  直接执行:否
  帮助文本:<id(i)|name(n)> <PlayerId|PlayerName> num 修改玩家最大生命
--Money
  描述:玩家货币
  描述命令:否
  文本:m,money
  直接执行:否
  帮助文本:<id(i)|name(n)> <PlayerId|PlayerName> 修改玩家货币数量
--Price
  描述:物品价格
  描述命令:否
  文本:p,price
  直接执行:否
  帮助文本:id(i) Type 修改商品价格
-List
 描述:列出数据
 描述命令:否
 文本:l,list
 直接执行:否
 帮助文本:playerid(i)
-Reload
 描述:重载
 描述命令:否
 文本:r,reload
 直接执行:是
-State
 描述:查看状态
 描述命令:否
 文本:s,state
 直接执行:是
<>表示自己写 []表示可选 []<>都没的也是自己写,那是旧帮助,懒得改,[id] [id2] [...] 这种的是多值的,只要符合条件,就能往后叠加,购买ID(BuyId)和数量(Stack)都硬性限制小于等于32767,BuyId最小为0,Stack最小为1,()内表示可以使用的缩写
管理命令都不大行,还是改数据库来的直接,也就删除有一手,添加嘛……
帮助有ID 和 name 双选项的命令,玩家在线时,ID为/who -i出现的index,玩家不在线时,ID为PlayerInfo的PlayerID,管理命令.Edit.LifeMax只能修改在线玩家,不能修改离线玩家
可能用到的链接
物品(Item)ID NPCID 增益(Buff)ID 图格(Tile)ID 墙(Wall)ID 前缀(Prefix)ID
1、全部表都使用BuyId作为购买ID,不再是个别Type个别BuyId

2、ShopCtl
Add 子命令修改:可以添加除Playerinfo以外所有表的数据
Del 子命令修改:不再只能删除ItemSystemShop商品,删除ID全部改为BuyId
Clear 子命令修改:参数:表名 、playerinfo 、money,用于清除表数据、清除全部玩家数据,清空玩家货币数量

3、Shop
添加back(ba)子命令,用于消耗货币返回死亡点,需在配置文件启用,配置文件其它修改
"其它": {
"回死亡点": {
"开启": true,
"价格": 1000,
"一次": true
},
"服务器区域检查": false
},
如果 一次 为 true,使用back后删除死亡点记录
部分启用关系到事件的注册和注销,最好的办法是重启服务器,而不是/reload,reload只会重新加载子命令(没写事件的东西)

4、大部分表添加FGroup字段,用于检测用户组是否合格,使用VB的Like运算符进行通配,也就是 * 和 ?,继承了Progress和Zone的 或(|) 和 非(-)

5、TileShop添加字段Bottoms字段(底部检测)和Walls字段(墙检测),两个字段均要求要不为空字符串,不检测写-1,使用英文逗号分隔,size添加33选项(原只有22和32),
比如想放置蜂王的幼虫,这个物体的体积为3x3,那么size要写33,如果要求背景,那么需要Walls写9(3x3)个墙ID,比如1,1,1,1,1,1,1,1,1,如果要求底部,Bottoms写3个(3x1)个方块ID,不检测就写-1,如果数量不合格,都会判定不通过

6、条件不合格添加详细显示
"购买": {
"进度提示": {
"开启": true,
"详细": true
},
"区域提示": {
"开启": true,
"详细": true
},
"组提示": true
}
当详细显示时会显示需要的内容,比如这个商品要求打败世纪之花,会进行提示,非详细只会显示不通过,组无详细显示

7、修复一些shop命令的bug

8、电脑不行,使用视频录不起,开个泰拉勉强,多来个录屏直接PPT

* 这是一则由 Google AdSense 自动推荐的广告,与本站无关,不对其真实性与可靠性负责

顶部