北大侠客行MUD论坛

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

请问mush中如何用简单方法实现zmud中的#mess?

[复制链接]
发表于 2015-1-7 16:37:44 | 显示全部楼层 |阅读模式
本帖最后由 purbam 于 2015-1-7 06:12 PM 编辑

因为不方便使用声音,所以希望实现弹窗,并且是在mush最小化时仍然能够弹出
zmud中可以使用#mess,mush中也找到个类似的lua自带函数utils.msgbox,不过似乎限制在mush窗口内,不能在mush最小化时弹出到桌面。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2015-1-7 19:03:00 | 显示全部楼层
回复 1# purbam


    呃(⊙o⊙)…

标准MUSH命令里好像没太有这么人性化的设定?(我不太了解……)

这里提供一个不那么原生的方法,利用MUSH的os.execute()函数,执行DOS指令,用弹出的cmd控制台窗口进行提示,具体代码是:

os.execute("echo 密信来了!&pause")
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2015-1-7 19:16:20 | 显示全部楼层
楼主刚发这个帖子的时候我就看到了,只是刚刚才想到解决方案。。
感谢楼主,让我在思考这个问题的时候想通了另一件困扰自己很久的事情,关于未来有了一个新的决定^_^
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2015-1-7 20:22:23 | 显示全部楼层
回复  purbam


    呃(⊙o⊙)…

标准MUSH命令里好像没太有这么人性化的设定?(我不太了解……)
...
cappuccino 发表于 2015-1-7 07:03 PM


看来还是要用系统命令,不过我没想到利用dos窗口,这样就简单多了,差点去研究脚本的gui kit..
太感谢了
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2015-1-8 15:40:54 | 显示全部楼层
MUSH系统发声可参考如下代码:只能是英文。


  1. require "luacom"
  2.         talk=luacom.CreateObject("SAPI.Spvoice")
  3.         function speak(str)
  4.                 talk:speak(str);return
  5.         end
  6. speak("Master has gaven you a letter!")
复制代码
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2015-2-22 15:03:37 | 显示全部楼层
umsgbox
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2015-2-23 14:04:32 | 显示全部楼层
本帖最后由 supertu 于 2015-2-23 02:07 PM 编辑

无论通过LUA对COM或者DLL调用系统的MessageBox函数,都能实现最小化窗口后的弹窗。
只是过程要稍微麻烦点,需要用到COM封装知识或者遵循LUA对DLL调用Cfunction的规范。

下面以DLL调用为例:

  1. int msgbox(lua_State* L)
  2.   {
  3.     const char* message = luaL_checkstring(L, 1);
  4.     const char* caption = luaL_optstring(L, 2, "");
  5.     int result = MessageBox(NULL, message, caption, MB_OK);
  6.     lua_pushnumber(L, result);
  7.     return 1;
  8.   }
复制代码



很明显看出是调用了系统自带的MessageBox的函数。



测试环境为 WIN7 64bit + Mushclient4.94 + GNU GCC

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2015-2-23 16:22:22 | 显示全部楼层
恩,我现在用Perl,perl里面直接通过Win32::MsgBox模块调用系统messagebox还是挺方便的
use Win32;
sub MyNote {
  my $msg = "$_[0]";
  Win32::MsgBox("$msg",0x40000,"Warn");
}
0x40000就是让messagebox总在最前
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2015-2-23 17:00:39 | 显示全部楼层
条条道路通罗马。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2015-6-5 00:13:58 | 显示全部楼层
问题来了,js里面应该如何搞呢?
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-24 08:53 PM , Processed in 0.013956 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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