北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 4674|回复: 2

服务器set即将取消,mushclient替代方案

[复制链接]
发表于 2018-8-18 18:37:50 | 显示全部楼层 |阅读模式
本帖最后由 suwuji 于 2018-8-18 10:41 AM 编辑

我是没做过走路还要一步一set的机器人的。服务器上自定义set主要是应对掉线,重入等一些特殊情况做的长久保存。wiz说set消耗资源即将取消。那么我们直接把set缓存内容放到自己的电脑上为好。实际上mushclient有自定义变量保存机制,不过需要保存world文件,并不方便,我们可以自定义文件存储这些信息,那么即使mushclient崩溃重启,基本上也能够还原数据。
代码很少
  1. my_var_sets = {}

  2. function Default_PlayerName()
  3.         if player_name == nil then
  4.                 player_name = GetVariable('player_name')
  5.                 if player_name == nil then
  6.                         print("请设置player_name变量")
  7.                 end
  8.         end
  9.         return player_name
  10. end

  11. function loadset(playerName)
  12.         if playerName == nil then
  13.                 playerName = Default_PlayerName()
  14.         end
  15.         for line in io.lines(playerName..".set") do
  16.                 for k,v in string.gmatch(line,"([^=]+)=(.+)") do
  17.                         my_var_sets[k] = v
  18.                 end
  19.         end
  20. end

  21. function saveset(playerName)
  22.         if playerName == nil then
  23.                 playerName = Default_PlayerName()
  24.         end
  25.         local file = io.open(playerName..".set","w+")
  26.         if file~=nil then
  27.                 for k,v in pairs(my_var_sets) do
  28.                         file:write(k.."="..v.."\n")
  29.                 end
  30.                 file:close()
  31.         end
  32. end

  33. function set(name,value,cached)
  34.         my_var_sets[name]=value
  35.         if cached~=true then
  36.                 saveset()
  37.         end
  38. end

  39. function get(name,cached)
  40.         if cached~=true then
  41.                 loadset()
  42.         end
  43.         if my_var_sets[name]~=nil then
  44.                 return my_var_sets[name]
  45.         else
  46.                 return nil
  47.         end
  48. end
复制代码
使用方法,首先定义默认的player_name变量表示玩家姓名id,最后会生成默认名称.set文件存储变量
获取变量get(name)
设置变量set(name,value)
删除变量set(name)


限制:变量名称中不要含有=符号,value中可以含有=符号

默认情况下使用,默认自动存取文件内容速度上足够,如果有异常频繁存取的情况,请使用get(name,true),和set(name,value,true)的形式来抑制磁盘操作,例如在循环中操作上万次以上的时候。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2018-8-18 19:09:17 | 显示全部楼层
太高端了,看不懂
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2018-8-25 13:26:44 | 显示全部楼层
高手,学习学习
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-24 01:29 AM , Processed in 0.009675 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表