×

服务器相关

分析一下“WebWhiteList”插件

shwx52 shwx52 发表于2022-04-20 浏览121 评论0
//今天给大家整点分析
//看起来这个插件既有LLSE的部分,也有JS,以及Node的调用,因此就来简单的分析一下
//版权所有 https://www.minebbs.com/threads/webwhitelist.10179/
//LiteXLoader Dev Helper
/// <reference path="C:/LXLbc/JS/Api.js" /> 


ll.registerPlugin("WebWhitelist", "一个可以用网站申请白名单的白名单插件", {"major":2,"minor":2,"revision":0}, {"发布网站":"https://www.minebbs.com/resources/webwhitelist.3654/","插件作者":"嘿嘿"})
//在LiteLader中注册插件并添加插件描述
//配置文件
var conf=new IniConfigFile(".\\plugins\\WebWhitelist\\conf.ini")
var dt_b=new JsonConfigFile(".\\plugins\\WebWhitelist\\Web\\data.json")
var dt_a=new JsonConfigFile(".\\plugins\\WebWhitelist\\data.json")
//定义conf.ini为ini格式的配置文件
conf.init("白名单申请网站","端口",3000)
conf.init("API接口","是否开启",false)
conf.init("API接口","API密钥",system.randomGuid())
conf.init("API接口","API接口端口",3001)
conf.init("语言","没有白名单的提示","您未获邀在此服务器上游玩!")
conf.init("语言","被拉黑提示","您被拉黑了!")
//初始化conf.ini的内容,层层向下。
//配置Node配置文件
var nc={}
//定义新变量数组nc
    nc["list_port"]=conf.getInt("白名单申请网站","端口")
    //从conf.类中读取-白名单申请网站-端口-X的X值
if(conf.getBool("API接口","是否开启")){
//读取-API接口-是否开启的布尔值
    nc["api"]=true
    nc["api_key"]=conf.getStr("API接口","API密钥")
    nc["api_port"]=conf.getInt("API接口","API接口端口")
    //对应端口密钥读取
    File.writeTo(".\\plugins\\WebWhitelist\\Web\\datax",dt_a.read())
    setInterval(()=>{
        File.writeTo(".\\plugins\\WebWhitelist\\Web\\datax",dt_a.read())
    },1000)
}
else{
    nc["api"]=false
}
File.writeTo(".\\plugins\\WebWhitelist\\Web\\node_conf.json",Wdata.toJson(nc))
//启动Node
system.newProcess(".\\plugins\\WebWhitelist\\Web\\start.bat",()=>{})
//注册监听
mc.listen("onJoin",(pl)=>{
    dt_b.reload()
    //进服刷新数据至\web\data.json
    if(dt_b.get(pl.name)==null && dt_a.get(pl.xuid)==null){
        pl.kick(conf.getStr("语言","没有白名单的提示"))
        //使用if语句xuid所对应的玩家名进行校验,如果没有,即踢出,并输出conf.ini中字符串内 语言-没有白名单的提示-X
    }
    else{
        if(dt_a.get(pl.xuid)==null){
            let ls={}
                ls["name"]=pl.name
                ls["ban"]=false
            dt_a.init(pl.xuid,ls)
            pl.tell(`[提示]您的白名单已转正!`)
            dt_b.delete(pl.name)
            //将玩家的xuid载入.\data.json
        }
        if(dt_a.get(pl.xuid).ban==true){
            pl.kick(conf.getStr("语言","被拉黑提示"))
        }
    }
})  
//注册命令
mc.listen("onServerStarted",()=>{
    let cmd=mc.newCommand("wwl","Web白名单")
    cmd.setEnum("p",["in","ban","unban"])
    cmd.setEnum("h",["help"])
    cmd.mandatory("pl",ParamType.Enum,"p","pl",1)
    cmd.mandatory("help",ParamType.Enum,"h","help",1)
    cmd.mandatory("xn",ParamType.Message,"","xn",1)
    cmd.overload(["pl","xn"])
    cmd.overload(["help"])
    cmd.setCallback((cmd,ori,out,res)=>{
        //确认权限
        if(ori.player!=null){if(ori.player.isOP()==false){return}}
        if(res.pl=="in"){
            //查询xuid记录
            if(dt_a.get(res.xn)!=null){
                out.success(`[玩家信息] XBOXID:${dt_a.get(res.xn).name} 是否被ban:${dt_a.get(res.xn).ban}`)
            }
            else{
                //在玩家数据库里寻找
                if(dt_a.get(data.name2xuid(res.xn))!=null){
                    out.success(`[玩家信息] XBOXID:${dt_a.get(data.name2xuid(res.xn)).name} 是否被ban:${dt_a.get(data.name2xuid(res.xn)).ban}`)
                }
                else{
                    out.error(`§c[ERROR]§r未找到玩家信息!`)
                }
            }
        }
        if(res.pl=="ban"){
            //查询xuid记录
            if(dt_a.get(res.xn)!=null){
                let ls=dt_a.get(res.xn)
                if(ls.ban){
                    out.error(`§c[ERROR]§r玩家已经被拉黑了!`)
                }else{
                    ls["ban"]=true
                    dt_a.set(res.xn,ls)
                    out.success(`[提示]玩家拉黑成功!`)
                }
            }
            else{
                //在玩家数据库里寻找
                if(dt_a.get(data.name2xuid(res.xn))!=null){
                    let ls=dt_a.get(data.name2xuid(res.xn))
                    if(ls.ban){
                        out.error(`§c[ERROR]§r玩家已经被拉黑了!`)
                    }else{
                        ls["ban"]=true
                        dt_a.set(res.xn,ls)
                        out.success(`[提示]玩家拉黑成功!`)
                    }
                }
                else{
                    out.error(`§c[ERROR]§r未找到玩家信息!`)
                }
            }
        }
        if(res.pl=="unban"){
            //查询xuid记录
            if(dt_a.get(res.xn)!=null){
                let ls=dt_a.get(res.xn)
                if(ls.ban==false){
                    out.error(`§c[ERROR]§r玩家并没有被拉黑!`)
                }else{
                    ls["ban"]=false
                    dt_a.set(res.xn,ls)
                    out.success(`[提示]解拉黑成功!`)
                }
            }
            else{
                //在玩家数据库里寻找
                if(dt_a.get(data.name2xuid(res.xn))!=null){
                    let ls=dt_a.get(data.name2xuid(res.xn))
                    if(ls.ban==false){
                        out.error(`§c[ERROR]§r玩家并没有被拉黑!`)
                    }else{
                        ls["ban"]=false
                        dt_a.set(res.xn,ls)
                        out.success(`[提示]解拉黑成功!`)
                    }
                }
                else{
                    out.error(`§c[ERROR]§r未找到玩家信息!`)
                }
            }
        }
        if(res.help!=null){
            out.addMessage(`[wwl命令介绍]`)
            out.addMessage(`[查询玩家信息]/wwl in <玩家id或xuid>`)
            out.addMessage(`[拉黑玩家]/wwl ban <玩家id或xuid>`)
            out.addMessage(`[解除拉黑]/wwl unban <玩家id或xuid>`)
            out.addMessage(`[帮助]/wwl help`)
            out.addMessage(`[拉黑介绍]被拉黑玩家不能再次申请白名单,也不能进入服务器!`)
        }
    })
    cmd.setup()
})
//打印信息
log("WebWhitelist加载成功!")
log("输入 ll plugins WebWhitelist 查看具体信息吧!")

服务器相关

SADC服务器 管理组通讯#23

shwx52 shwx52 发表于2022-04-19 浏览76 评论0

哈喽大家好,这里是shwx52。又到了下一阶段服务器大事件(事务安排)时间了。 

Breaking News 

1.人事变动 

*SADC玩家管理  将于今年7月中旬参加SADC 2022 Q3管理转正考试 

*@不务正业的车长 将会以新媒体组成员兼技术合作方入驻SADC  

(车长不会参与服务器管理,作为新媒体组成员发布游戏影片) 

2.内容新增