Project1

标题: 游戏内嵌输入法。[更新字母。] [打印本页]

作者: 神思    时间: 2010-8-21 17:04
标题: 游戏内嵌输入法。[更新字母。]
本帖最后由 神思 于 2010-8-22 14:51 编辑

貌似在很久很久以前是chaos还是谁说过全屏的时候输入法看不到待选列表来着。

其实这玩意很久以前就想做的了,不过由于一直搞不明白那结构体。所以不了了之了。
今天又把之前的那些资料翻出来看了一下,貌似以前不懂的现在貌似能懂呢{:nm_7:} 。
所以自虐心又起了。。。。

然而这个东西并不是完善的,比如智能ABC翻页的时候=。=那该死的结构体居然无反应。
其余的都没什么问题。。。貌似。。{:nm_7:}

这玩意问题多多{:nm_1:} ,就不发布了。
会玩的就拿去玩吧,无保修


WinIME CRT.rar (228.1 KB, 下载次数: 1095)

{:nm_7:} 更新英文字母。。。。。
作者: 懒De说    时间: 2010-8-21 17:13
汗,脚本'GameIME'的8行发生了RuntimeError LoadLibrary:WinIME.dll
作者: 429259591    时间: 2010-8-21 17:13
LZ为什么不发到发布区呢?
作者: 「旅」    时间: 2010-8-21 17:13
本帖最后由 「旅」 于 2010-8-21 17:19 编辑

话说没有退格?感觉不错~~~好东西的说~~~

我最近也在做输入的,是可以换行的喵~~不过有一些很囧的问题~~

输入脚本.rar (255.8 KB, 下载次数: 858)

[line]1[/line]

话说测试的字不要在意,想起暴风啥龙的小说后打进去的……><
作者: 神思    时间: 2010-8-21 17:14
{:nm_1:}奇怪,那压缩包里不是有个WinIME.dll么,难道被杀毒软件喀嚓了。?
作者: 雷欧纳德    时间: 2010-8-21 17:19
居然把全拼输入法解决了。。。思思过来嘴一个吧
作者: 神思    时间: 2010-8-21 17:19
话说没有退格?感觉不错~~~好东西的说~~~

我最近也在做输入的,是可以换行的喵~~不过有一些很囧的问题~~

...
「旅」 发表于 2010-8-21 17:13



呵呵,夏娜那个的原理是建立一个Edit窗口,我的是直接获取IMM数据。呵呵。
作者: DeathKing    时间: 2010-8-21 17:21
本帖最后由 DeathKing 于 2010-8-21 17:23 编辑

准备用于RMirb(偷笑)

[line]1[/line]

遵循FSL啊,那是好东西,那就帮你延长保质期吧,囧

模块也不用再嵌套那么多了 ^_^
作者: 神思    时间: 2010-8-21 17:25
{:nm_1:}对了,死君,问个问题,为什么一开始RM无法接收IME呢。?
非要p一个才能接收,搞得我还在里面创建了一个1,1的窗口。。
作者: 越前リョーマ    时间: 2010-8-21 17:27
一直觉得让RM输入内容就是脑抽了  = =
特别是选字,如果想弄个回答问题的,莫非把字都凑进去?不过就算打字,要是不完全一样也不行……感觉给人物自己命名倒不是太重要的玩意呢。

接下去的用途……聊天?
作者: 神思    时间: 2010-8-21 17:30
一直觉得让RM输入内容就是脑抽了  = =
特别是选字,如果想弄个回答问题的,莫非把字都凑进去?不过就算打字 ...
越前リョーマ 发表于 2010-8-21 17:27

{:nm_7:}呃..其实说真的,除了开头输入名字外,我真的想不到有什么地方会用的上..



作者: DeathKing    时间: 2010-8-21 17:37
回复 神思 的帖子

使用到的地方有点多。
现在主要是想办法让他支持像搜狗输入的英文

至于那个问题么,我不是很了解Windows下编程,所以指望老板(紫苏)来解答了。
   
作者: moy    时间: 2010-8-21 17:38
回复 神思 的帖子

如果在有锻造系统的游戏里能自主命名武器防具啥的话...
   
作者: 神思    时间: 2010-8-21 17:43
本帖最后由 神思 于 2010-8-21 17:47 编辑
回复

使用到的地方有点多。
现在主要是想办法让他支持像搜狗输入的英文

至于那个问题么,我不是很了解Wi ...
DeathKing 发表于 2010-8-21 17:37



{:nm_7:}其实直接处理WM_CHAR的话应该是可以的。
只是有个地方很纠结,就是 当输入中文的时候呢 他是分2次发的 一次一半ORZ。。
=。=无法判断的地方就是 这到底是半个中文呢,?还是一个英文。。

而WM_IME_CHAR就是一整个中文ORZ...
作者: 小传子    时间: 2010-8-21 17:57
思思到了另外一座山峰了
作者: 越前リョーマ    时间: 2010-8-21 18:08
回复

如果在有锻造系统的游戏里能自主命名武器防具啥的话...
moy 发表于 2010-8-21 17:38

其实能自己命名也没什么意思吧 = =
倒是可以给抓来的宠物命名什么的囧

作者: 紫苏    时间: 2010-8-22 02:32
本帖最后由 紫苏 于 2010-8-22 02:37 编辑

WinIME 动态链接了 VC++ 运行时的函数:
    MSVCR90.dll
              10002050 Import Address Table
              100022D0 Import Name Table
                     0 time date stamp
                     0 Index of first forwarder reference

                  173 _except_handler4_common
                  31C _onexit
                  276 _lock
                   96 __dllonexit
                  3E6 _unlock
                   8C __clean_type_info_names_internal
                  14B _crt_debugger_hook
                   6A __CppXcptFilter
                  10B _adjust_fdiv
                  115 _amsg_exit
                  205 _initterm_e
                  204 _initterm
                  160 _decode_pointer
                  16B _encoded_null
                  4E4 free
                  287 _malloc_crt
                  16A _encode_pointer

没装运行时的人自然就找不到了,可以静态链接
wndProc 都没有链接 msvcr,winIME 可能是忘了?

另外 ASCII 和多字节字符开头是可以区分的,通常多字节字符第一个字节不会是 ASCII 范围内的字符
作者: 火ZHI意志    时间: 2010-8-22 08:16
也许可以实现了
自输入备忘录系统…………
作者: 神思    时间: 2010-8-22 12:56
{:nm_7:}更新老,无耻的UP。。。
作者: 木葬枫    时间: 2010-8-22 13:00
小旅也写了一个0.0
作者: 神思    时间: 2010-8-22 13:02
本帖最后由 神思 于 2010-8-22 13:05 编辑
WinIME 动态链接了 VC++ 运行时的函数:
    MSVCR90.dll
              10002050 Import Address Table
   ...
紫苏 发表于 2010-8-22 02:32



{:nm_7:}其实关于这个CRT我真的不太明白。
好像是C依赖。?
那应该如何添加呢。?
作者: 紫苏    时间: 2010-8-22 13:51
回复 神思 的帖子

就是 DLL 本身的代码段里没有 CRT 的代码,而是在运行时动态链接已有的 CRT 的 DLL(MSVCR90.dll)调用里边的函数。一般如果有多个 DLL 用到了 CRT 就可以在发布的时候附上这个 DLL,否则就可以做一个静态链接,这样用到的函数代码会在编译时就链接到自己写的 DLL 里(前后可以看到 DLL 的体积差别)
在 VS 的 IDE 里具体方法是:设置 [工程选项 - 配置属性 - C/C++ - 代码生成 - 运行时库] 为多线程 /MT 即可
作者: 神思    时间: 2010-8-22 13:56
本帖最后由 神思 于 2010-8-22 14:00 编辑

{:nm_7:}容量猛增加5倍......

对了,我还有一个问题,就是,怎么判断一个键是否一个可输入的字符呢。?

比如按下BackSpace时=。=也会有个CHAR消息啊。而且值是8.。。。。
作者: 紫苏    时间: 2010-8-22 14:14
http://www.asciitable.com/

应该就 13、32 到 126 这些吧
作者: 柳柳    时间: 2010-9-9 00:19
唔,顶一下,准备用这个了……神思能提供保修服务么?
————————————————————————————————————————
经检查,问题还是不少,下面我准备用10连贴展示一下这个系统融入到格斗纹章的过程囧……
作者: orochi2k    时间: 2010-9-9 02:33
邪恶地插楼打断10连
作者: 柳柳    时间: 2010-9-9 02:49

初步能用了,目前还只有一个窗口。另外每次初始化的时候有一个小窗不知为啥……
作者: 柳柳    时间: 2010-9-9 03:12
连贴3号:已经被改得很混乱了……
发现小bug一个:
Window_Description的refresh:
return self.clear if des == "\000"
return if @temp == des
这个,对只有一种输入法+一种英文的电脑来说,切换掉之后就回不来了……
修改为:
    if des == "\000"
      @temp = des
      self.clear
      return
    end
    return if @temp == des

唔……继续努力中……
作者: 小传子    时间: 2010-9-9 04:25
初步能用了,目前还只有一个窗口。另外每次初始化的时候有一个小窗不知为啥…… ...
柳柳 发表于 2010-9-9 02:49

纳尼?柳你要弄一个积分上传吗?


作者: 柳柳    时间: 2010-9-9 05:19
回楼上,不是积分上传,而是如果验证是6R用户,可以获得7点试玩点数,用来开启游戏中的战役


继续,话说居然在笛子的要求下,输入密码变成了这个样子

好了,基本bug都解决了,下面就看DLL有没有一些奇怪的bug了……N多有点内存小泄露的DLL在我这个杯具游戏中都会被报错,被报错……话说这个范例工程也没有测试.dispose的情况,还是如此学院派啊……
作者: 柳柳    时间: 2010-9-9 08:35
神思见到回复:
Win32API.new("WndProc.dll", "ReSetProc", "l", "l")

这什么东西?重置窗口之后,一到运算量大的地方,帧速就没法看了。
作者: 冰舞蝶恋    时间: 2010-9-9 11:35
回复 柳柳 的帖子

思考中……如果把66rpg的登陸介面換成這樣……會是什麼後果呢……
作者: 灼眼的夏娜    时间: 2010-9-9 12:44
一一 不错~~  思思加油

具体细节可以参考msdxsdk的Using an Input Method Editor in a Game 文章~~

ps:还是希望能够使用gdi的窗口的(笑
作者: 柳柳    时间: 2010-9-9 13:05
话说还挺好用的,就这么用了..
作者: 紫苏    时间: 2010-9-10 01:12
回复 灼眼的夏娜 的帖子

夏娜~某柳说运算量大的时候卡,难道是因为用 Ruby 的方法作为窗口过程函数效率太低?Ruby 1.8 速度大鸭梨 O.o
作者: 灼眼的夏娜    时间: 2010-9-10 07:45

思思= =
作者: 神思    时间: 2010-9-10 11:08
T_T我现在在学校…没电脑…所以…那个…无法维护…
作者: sebuu    时间: 2010-9-10 15:21
脚本是不是很难啊!




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1