北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
楼主: candyqing

MUSH边用边学(抛砖引玉系列) ------- 白驼初见

[复制链接]
 楼主| 发表于 2017-12-14 07:22:57 | 显示全部楼层
回复 20# shyn


    嗯,像你说的那个例子,实际上那串命令是一次都发给服务器的,不会出现你没有进茶馆就装水的情况,因为不是多线程啊,所以服务器不会出现中间丢了指令又收到你后面的指令。

    不过如果命令一次发送过多,确实是会吃指令的,我记得半年前,大概一次可以发送20个指令以上,服务器都会做出回应,到了现在,如果要保险一点,一次最好只发送15个指令左右,如果命令长了就只能在中间分割开加入延时。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2017-12-14 10:42:08 | 显示全部楼层
回复 21# candyqing

我知道 Zmud 加入延时的指令是「#wa 1000」,
比如:
n;s;w;e;#wa 3000;n;s;d

在执行到「#wa 3000」的时候会延时 3 秒,
那么在 mush 中延时的指令是什么呢?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2017-12-14 12:46:59 | 显示全部楼层
回复 22# shyn

可以用DoAfterSpecial()这个命令来延时(需要事先把命令和时间都算好),或是使用 require "wait" 之后,再使用 wait.time()这个来延时。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2017-12-14 12:58:20 | 显示全部楼层
本帖最后由 shyn 于 2017-12-14 05:03 AM 编辑

回复 23# candyqing

嗯,谢谢,看来只能用这个命令了。
虽然不如「#wa 1000」这种直接写在命令串里方便,但还是可以接受。

我看到你的「城际互联」插件的后缀日期是 2017 年 11 月份的,我还在使用 2016 年的,能否分享一下你的插件呢
另外 我在群共享里看到的 神灯套最新的是1.4,你在上面说的 1.4a 版本,不知道是在哪里下载?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2017-12-14 16:26:09 | 显示全部楼层
本帖最后由 shyn 于 2017-12-14 08:50 AM 编辑

再请教一个问题
如何在触发脚本中获取一个已经存在的变量,并使用这个变量。

比如练功消耗体力,
第一次触发「体力不足」的时候我想使用「yun recover」命令回复体力
第二次触发「体力不足」的时候我想使用「yun qi」命令加快体力回复
这之后再提示「体力不足」不做任何动作,直到睡醒觉后重新统计。

两次睡觉的间隔时间大概是一分钟,而「yun qi」命令的结束时间正好是一分钟,所以等运气结束就睡觉非常好用。(睡觉之前先把体力消耗干净)

我的想法是设置一个变量 a,初始值是 1,
在提示「体力不足」的时候进行判断,
a == 1,yun recover,然后给 a 赋值 a = 2,
a == 2,yun qi,然后给 a 赋值 a =3。
等到需要睡觉的时候再把 a 重新赋值为 1。醒来后开始下一轮练习。

如果再脚本内定义变量,每次触发条件都会重新加载脚本,a 也就失去了计数的功能。
自己在软件中定义的变量,脚本中我又不会获取。

「%0」这个参数可以获取到触发内容
我想应该也有办法获取到软件里自己定义的变量吧。

PS. 软件中的自定义变量我是指 游戏配置-->Scripting-->Variables 中定义的变量

--------------------- 更新 ------------------

我找到方法了,是两个函数

GetVariable("MyName")
SetVariable ("MyName", "Nick Gammon")
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2017-12-15 08:05:57 | 显示全部楼层
本帖最后由 candyqing 于 2017-12-15 12:09 AM 编辑

回复 24# shyn


    城际通这个插件的核心部分是数据库,而完整数据库是不允许分享的,教主的神灯套里带的那个城际通已经是一个完整的插件了,只不过数据库经过简化了(不经过简化是不允许分享的);应该那个1.4就是原来的1.4a,可能是教主把名字修改了。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2017-12-15 08:07:42 | 显示全部楼层
回复 25# shyn

这个里面你用的mc客户端里面定义的变量,不过其实使用脚本定义的全局变量也是可以的,触发器在触发的时候并不会重置全局变量,除非重新解析脚本的时候才会重置全局变量。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2017-12-15 10:19:51 | 显示全部楼层
回复 25# shyn
直接用lua的全局变量就可以,比如
触发条件:体力不足
触发内容:
if _buzu == nil then _buzu = 0 end
if _buzu == 0 then
  Execute("yun recover")
  _buzu = _buzu + 1
elseif _buzu == 1 then
  Execute("yun qi")
  _buzu = _buzu + 1
else
  Execute("sleep")
  _buzu = 0
end
发送到script
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2017-12-15 12:24:01 | 显示全部楼层
回复 28# foolenough

if _buzu == nil then _buzu = 0 end //这个是声明变量并初始化么?
第一次触发的时候 _buzu 初始化为 0
第二次再触发时 _buzu 的值已经是 1 了

我理解的对么?


我原本以为每次触发都会初始化一次,看来是我多想了。
我应该自己尝试一下再来提问的,有些想当然了,谢谢
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2017-12-15 12:27:26 | 显示全部楼层
回复 26# candyqing

我对这个「完整数据库」十分好奇,请给我一份副本,仅供我研究、交流、学习之用,不会用于商业用途,也不会外传,下载后 24 小时删除,感谢楼主! Q:624637624
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-24 03:13 AM , Processed in 0.011516 second(s), 13 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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