北大侠客行MUD论坛

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

请教这个mush的alias问题

[复制链接]
发表于 2009-5-31 14:09:43 | 显示全部楼层
输入 andao;7,发送
enter shudong
say 天堂有路你不走呀
d
7

没有问题,你的具体问题是什么
其中 行俺注释掉了,否则找不到文件

[ 本帖最后由 duno 于 2009-5-31 02:11 PM 编辑 ]
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2009-5-31 14:15:10 | 显示全部楼层
不是在命令栏里输入andao;7
输入一个包含andao的alias,比如huyidao.,我观察下发给服务器的字符串就直接是andao;7....这样的.andao不展开了.导致不能运行.
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2009-5-31 14:17:40 | 显示全部楼层
红色部分为修改,增加递归调用,可解决不解释andao的问题,原作者用了coroutine,俺没仔细看,不知道有没有竞争冒险之类的问题
测试了下,huyidao没有问题
function exec_alias(s)
        temp_thread_path=coroutine.create(function (s)
                        local p_temp = Split(s,";");
                        for i,v in ipairs(p_temp) do
                                if alias_table[v] then
                                        exec_alias (alias_table[v])
                                elseif
nil~=string.find(v,"#%d+ ") then
                                        world.Send(do_table[string.sub(v,string.find(v,"#%d+ "))]..string.sub(v,string.find(v," .+")));
                                elseif nil~=string.find(v,"#wa") then  
                                        world.DoAfterSpecial(string.sub(v,string.find(v,"%d+")) / 2000,"coroutine.resume(temp_thread_path);",12);
                                        coroutine.yield();
                                else
                                        world.Send(v);
                                end
                        end
        end)
        coroutine.resume(temp_thread_path,s);
end

[ 本帖最后由 duno 于 2009-5-31 02:20 PM 编辑 ]
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2009-5-31 14:27:27 | 显示全部楼层
将exec_alias中

world.Send(v)

这句,改为

Execute(v)

可以解决。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2009-5-31 14:34:00 | 显示全部楼层
两种方法都可以解决,赞一下两位大侠.
结帖
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2009-5-31 14:43:08 | 显示全部楼层
又有新问题,此贴不能结,,,
当alias中包含alias,如wudang,quanzhen 这样的,又包含#wa 2000需要暂停的.
taoyuan 就只解释wudang, gumu就只解释到quanzhen,#wa 后面的不发送了.
......
无论是duno的还是ddid的,都这样..
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2009-5-31 15:11:30 | 显示全部楼层
没有看到有关
coroutine.resume(temp_thread_path);",12);
coroutine.yield();

两个函数的脚本,到GAMMON的网站上SEARCH了一下,好像有,正在研究中……
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2009-5-31 15:21:28 | 显示全部楼层
DoAfterXXX没有正确按时触发
这个插件谁写的?有其他辅助部分没?
constants.lua是什么内容?常量列表?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2009-5-31 15:28:07 | 显示全部楼层
coroutine.resume yield 是继续执行和挂起的,
doafterspeial没有触法.插件是论坛上下的.年代久远忘记了,当是只有这么个xml,没有包含文件.
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2009-5-31 15:30:47 | 显示全部楼层
哦,我看了看,好象constants是生成了脚本执行的日志.world文件夹下有.
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-28 12:30 AM , Processed in 0.011734 second(s), 13 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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