注意事项
请注意,这个脚本的使用有亿点点麻烦,当前版本的帮助指引也不是很全面,总之bug很多,也可能没法解决,请做好心理准备。在使用前,请将Dice!更新到最新版,不然群管理权限获取会有更多问题
- bot为群管理的群方可使用
- 由于Dice!当前版本缓存机制,设置群管理需bot重启才能读取权限
- 如果要如果骰娘要开启随跑团数据自动更新功能,建议骰主发送【.strGroupCardSet {FormFeed}】将默认的群名片修改回执关闭,不然会一直弹出来,很麻烦
- 该lua不能直接使用,需要更改列在最前面的一些变量,有些东西需要去读代码和注释才能搞定
- 与赵骰不一样,san后面为用户在上一次记录的san值,用以查看pc是否进入不定性疯狂,或许这会比san的上限更常用
- 更改群名片不会影响到log,这点放心吧
说明
于赵骰基础上改动的.sn指令 ver4.0 made by 32w
发布更新于Dice!论坛,bot为群管理方可使用
由于Dice!缓存机制,设置群管理需bot重启才能读取权限,维斯特拉重启时间为每日:看心情
- .sn \\改名片,san后面的值为lastsan,第一次使用lastsan=san
- .st lastsan 70 \\手动设置lastsan
- .newday \\新的一天,改名片,lastsan=当前san
维斯特拉已支持随跑团数据实时更新群名片。
- .sn auto on \\开启
- .sn auto off \\关闭,默认关闭
使用不省略空格的指令调用实时更新,如【.sc 1/1d4】【.st hp-1】可以更新,【.sc1/1d4】【.sthp-1】则不能
(此消息会在使用【.sn help】或第一次在本群使用【.sn】时发送)
效果
源码
--于赵骰基础上改动的.sn指令 made by 32w
--发布更新于Dice!论坛,bot为群管理方可使用
msg_order = {}
local diceQQ="3056492612" --请一定要在这里把这一串改成骰娘的qq号
local allowAuto=true --随跑团数据更新群名片功能的总开关,需要骰主按照教程进行相关配置之后再设置为true。教程我懒得写……很麻烦,可以来问我倒是
local rebootTime="看心情" --既然骰主使用了这个插件,一定也设置好了定时重启功能,请在这里把你的bot的重启时间写一下吧
local version=4.0
msg_order[".sn"]="sn"
function sn(msg)
local name = string.match(msg.fromMsg,"^[%s]*(.-)[%s]*$",4)--匹配文本
local info=""
if(name and #name>0) then --sn后面附带有内容
if(name=="help") then --显示帮助
if(allowAuto) then
return "于赵骰基础上改动的.sn指令 ver"..version.." made by 32w\n发布更新于Dice!论坛,bot为群管理方可使用\n由于Dice!缓存机制,设置群管理需bot重启才能读取权限,{self}重启时间为每日:"..rebootTime.."\n.sn \\\\改名片,san后面的值为lastsan,第一次使用lastsan=san\n.st lastsan 70 \\\\手动设置lastsan\n.newday \\\\新的一天,改名片,lastsan=当前san\f{self}已支持随跑团数据实时更新群名片。\n.sn auto on \\\\开启\n.sn auto off \\\\关闭,默认关闭\n使用不省略空格的指令调用实时更新,如【.sc 1/1d4】【.st hp-1】可以更新,【.sc1/1d4】【.sthp-1】则不能\n(此消息会在使用【.sn help】或第一次在本群使用【.sn】时发送)"
else
return "于赵骰基础上改动的.sn指令 ver"..version.." made by 32w\n发布更新于Dice!论坛,bot为群管理方可使用\n由于Dice!缓存机制,设置群管理需bot重启才能读取权限,{self}重启时间为每日:"..rebootTime.."\n.sn \\\\改名片,san后面的值为lastsan,第一次使用lastsan=san\n.st lastsan 70 \\\\手动设置lastsan\n.newday \\\\新的一天,改名片,lastsan=当前san\f{self}不支持随跑团数据实时更新群名片(此消息会在使用【.sn help】或第一次在本群使用【.sn】时发送)"
end
--return "xxx仿照赵骰且有微小改动的.sn功能ver0.1 made by 32w\n发布于Dice!论坛,访问以获取最新版xxx\n1.使用.sn auto on开启本群随跑团数据更新群名片功能,使用.sn auto off关闭,默认关闭\n 1.1如果骰娘要开启随跑团数据自动更新功能,建议骰主①发送【.strGroupCardSet {Formfeed}】将默认的群名片修改回执关闭\n 1.2②骰主将代码最前面修改为【local allowAuto=true】\n2.由于Dice!内部缓存机制问题,在设置骰娘群管理权限之后,需要重启骰娘才能读取权限。建议使用该插件的骰主发送【】设定每天五点重启mirai来应对。"
elseif(name=="auto on") then
setGroupConf(msg.fromGroup, "cardAutoUpdate", true)
return "实时更新群名片开"
elseif(name=="auto off") then
setGroupConf(msg.fromGroup, "cardAutoUpdate", false)
return "实时更新群名片关"
else
info=name
local order=".group card "..msg.fromQQ.." "..name
eventMsg(order, msg.fromGroup, diceQQ)
end
else
info=update_card(msg)
end
return "{self}已尝试将群名片修改为『"..info.."』,若不成功请发送『.sn help』"
end
msg_order[".newday"]="newday"
function newday(msg)
local lastsan=getPlayerCardAttr(msg.fromQQ, msg.fromGroup, "san",0)
setPlayerCardAttr(msg.fromQQ, msg.fromGroup, "lastsan", lastsan)
update_card(msg)
return "沙漏翻转,{pc}的lastsan值置为"..lastsan..",新的一天到来了"
end
function check_update(msg)
if(allowAuto) then
if(getGroupConf(msg.fromGroup, "cardAutoUpdate", false)) then
update_card(msg)
end
end
end
function update_card(msg)
local order=".group card "..msg.fromQQ.." "
--获取角色卡名称
local pcname=getPlayerCardAttr(msg.fromQQ, msg.fromGroup, "__Name","无名朋友")
if(pcname=="角色卡") then
pcname=getUserConf(msg.fromQQ,"nick#"..msg.fromGroup,"")
end
--获取当前属性
local hp=getPlayerCardAttr(msg.fromQQ, msg.fromGroup, "hp",0)
local san=getPlayerCardAttr(msg.fromQQ, msg.fromGroup, "san",0)
local dex=getPlayerCardAttr(msg.fromQQ, msg.fromGroup, "dex",0)
--获取上限
local maxhp=math.floor((getPlayerCardAttr(msg.fromQQ, msg.fromGroup, "体型",0)+getPlayerCardAttr(msg.fromQQ, msg.fromGroup, "体质",0))/10)
--local maxsan=99-getPlayerCardAttr(msg.fromQQ, msg.fromGroup, "cm",0)
--加载用户在上一次记录的san值,用以查看pc是否进入不定性疯狂,或许这会比san的上限更常用。
--第一次使用sn的时候将会记录当前的san值,如果想要更改,请使用【.newday coc】或者【.st lastsan xx】指令
--如果仍然希望显示san的上限,将这一块代码用--[[]]注释掉,并且将上面一行定义的maxsan前面的注释去除
local maxsan=getPlayerCardAttr(msg.fromQQ, msg.fromGroup, "lastsan",getPlayerCardAttr(msg.fromQQ, msg.fromGroup, "san",0))
setPlayerCardAttr(msg.fromQQ, msg.fromGroup, "lastsan", maxsan)
--到这里为一块
info=pcname.." hp"..hp.."/"..maxhp.." san"..san.."/"..maxsan.." dex"..dex
eventMsg(order..info, msg.fromGroup, diceQQ)
print("changCardOk")
return info
end
--以下部分监听.sc\.st hp\.st san指令,如果不使用实时更新角色卡功能可全部删去
msg_order[".sc "]="sctest"--请注意这里.sc后面跟着的空格很重要,如果删去则会陷入无限循环
function sctest(msg)
local rest = string.match(msg.fromMsg,"^[%s]*(.-)[%s]*$",5)--匹配文本
eventMsg(".sc"..rest, msg.fromGroup, msg.fromQQ)
--执行sc,这里之所以不会陷入无限循环是因为函数只匹配有空格的sc,不匹配无空格的。算是绕了个小圈子
sleepTime(5000)--确保属性修改在前,延迟更新群名片
check_update(msg)
end
msg_order[".st hp"]="sthp"--请注意这里的空格很重要,如果删去则会陷入无限循环
function sthp(msg)
local rest = string.match(msg.fromMsg,"^[%s]*(.-)[%s]*$",7)--匹配文本
eventMsg(".sthp"..rest, msg.fromGroup, msg.fromQQ)
sleepTime(5000)
check_update(msg)
end
msg_order[".st san"]="stsan"--请注意这里的空格很重要,如果删去则会陷入无限循环
function stsan(msg)
local rest = string.match(msg.fromMsg,"^[%s]*(.-)[%s]*$",8)--匹配文本
eventMsg(".stsan"..rest, msg.fromGroup, msg.fromQQ)
sleepTime(5000)
check_update(msg)
end
下载地址