服务器set即将取消,mushclient替代方案
本帖最后由 suwuji 于 2018-8-18 10:41 AM 编辑我是没做过走路还要一步一set的机器人的。服务器上自定义set主要是应对掉线,重入等一些特殊情况做的长久保存。wiz说set消耗资源即将取消。那么我们直接把set缓存内容放到自己的电脑上为好。实际上mushclient有自定义变量保存机制,不过需要保存world文件,并不方便,我们可以自定义文件存储这些信息,那么即使mushclient崩溃重启,基本上也能够还原数据。
代码很少my_var_sets = {}
function Default_PlayerName()
if player_name == nil then
player_name = GetVariable('player_name')
if player_name == nil then
print("请设置player_name变量")
end
end
return player_name
end
function loadset(playerName)
if playerName == nil then
playerName = Default_PlayerName()
end
for line in io.lines(playerName..".set") do
for k,v in string.gmatch(line,"([^=]+)=(.+)") do
my_var_sets = v
end
end
end
function saveset(playerName)
if playerName == nil then
playerName = Default_PlayerName()
end
local file = io.open(playerName..".set","w+")
if file~=nil then
for k,v in pairs(my_var_sets) do
file:write(k.."="..v.."\n")
end
file:close()
end
end
function set(name,value,cached)
my_var_sets=value
if cached~=true then
saveset()
end
end
function get(name,cached)
if cached~=true then
loadset()
end
if my_var_sets~=nil then
return my_var_sets
else
return nil
end
end使用方法,首先定义默认的player_name变量表示玩家姓名id,最后会生成默认名称.set文件存储变量
获取变量get(name)
设置变量set(name,value)
删除变量set(name)
限制:变量名称中不要含有=符号,value中可以含有=符号
默认情况下使用,默认自动存取文件内容速度上足够,如果有异常频繁存取的情况,请使用get(name,true),和set(name,value,true)的形式来抑制磁盘操作,例如在循环中操作上万次以上的时候。 太高端了,看不懂yct63. 高手,学习学习
页:
[1]