设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: 雨落忧伤
打印 上一主题 下一主题

[已经解决] 请问如何获取Windows用户的用户名

[复制链接]

Lv2.观梦者

梦石
0
星屑
837
在线时间
61 小时
注册时间
2017-10-24
帖子
31
11
 楼主| 发表于 2017-12-10 19:38:46 | 只看该作者
fux2 发表于 2017-12-10 19:16
有了楼上的这段不需要之前的代码了。

嗯,的确是可以……但是问题和刚才那位的是一样的……
就是最后无法显示……不过这个也许是无法解决的吧……

QQ图片20171210193743.png (22.38 KB, 下载次数: 30)

QQ图片20171210193743.png
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42399
在线时间
7602 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

12
发表于 2017-12-10 23:06:25 | 只看该作者
雨落忧伤 发表于 2017-12-10 19:38
嗯,的确是可以……但是问题和刚才那位的是一样的……
就是最后无法显示……不过这个也许是无法解决的吧 ...

在你的脚本最上面插入一页新页,粘贴以下内容,
然后变量设置的地方改成
ENV['UserName'].s2u


  1. class String

  2.   @@MultiByteToWideChar  = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
  3.   @@WideCharToMultiByte  = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')

  4.   def u2w
  5.     i = @@MultiByteToWideChar.call(65001, 0 , self, -1, nil,0)
  6.     buffer = "\0" * (i*2)
  7.     @@MultiByteToWideChar.call(65001, 0 , self, -1, buffer, i)
  8.     buffer.chop!
  9.     return buffer
  10.   end  

  11.   def u2s
  12.     i = @@MultiByteToWideChar.call(65001, 0 , self, -1, nil,0)
  13.     buffer = "\0" * (i*2)
  14.     @@MultiByteToWideChar.call(65001, 0 , self, -1, buffer, i)
  15.     i = @@WideCharToMultiByte.call(0, 0, buffer, -1, nil, 0, nil, nil)
  16.     result = "\0" * i
  17.     @@WideCharToMultiByte.call(0, 0, buffer, -1, result, i, nil, nil)
  18.     result.chop!
  19.     return result
  20.   end

  21.   def s2u
  22.     i = @@MultiByteToWideChar.call(0, 0, self, -1, nil, 0)
  23.     buffer = "\0" * (i*2)
  24.     @@MultiByteToWideChar.call(0, 0, self, -1, buffer, buffer.size / 2)
  25.     i = @@WideCharToMultiByte.call(65001, 0, buffer, -1, nil, 0, nil, nil)
  26.     result = "\0" * i
  27.     @@WideCharToMultiByte.call(65001, 0, buffer, -1, result, result.size, nil, nil)
  28.     result.chop!
  29.     return result
  30.   end
  31. end
复制代码
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
837
在线时间
61 小时
注册时间
2017-10-24
帖子
31
13
 楼主| 发表于 2017-12-11 09:19:22 | 只看该作者
fux2 发表于 2017-12-10 23:06
在你的脚本最上面插入一页新页,粘贴以下内容,
然后变量设置的地方改成
ENV['UserName'].s2u

感谢……不过仍然出现了报错,不知道还有办法解决吗?
我把刚才那段脚本放到了最顶部,然后试了一下就是这样了——

QQ图片20171211091810.png (28.1 KB, 下载次数: 28)

QQ图片20171211091810.png
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21666
在线时间
9418 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

14
发表于 2017-12-11 09:43:35 | 只看该作者
本帖最后由 喵呜喵5 于 2017-12-11 09:45 编辑

插入脚本:
  1. class Game_Interpreter
  2.   def m5_20171211_username(v=nil)
  3.     str = ENV['UserName'].dup
  4.     m2w = Win32API.new('kernel32', 'MultiByteToWideChar', 'ilpipi', 'i')
  5.     w2m = Win32API.new('kernel32', 'WideCharToMultiByte', 'ilpipipp', 'i')
  6.     i = m2w.call(0, 0, str, -1, nil, 0)
  7.     buffer = "\0" * (i*2)
  8.     m2w.call(0, 0, str, -1, buffer, buffer.size / 2)
  9.     i = w2m.call(65001, 0, buffer, -1, nil, 0, nil, nil)
  10.     result = "\0" * i
  11.     w2m.call(65001, 0, buffer, -1, result, result.size, nil, nil)
  12.     result.chop!
  13.     $game_variables[v] = result if v
  14.     return result
  15.   end
  16. end
复制代码


事件的脚本指令中输入:
  1. m5_20171211_username(2)
复制代码

则 2 号变量的值就是当前的用户名,之后在对话中输入 \v[2] 即可显示对应文本

点评

多谢,完美解决!  发表于 2017-12-11 10:11

评分

参与人数 1星屑 +80 收起 理由
fux2 + 80 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

15
发表于 2017-12-11 13:25:25 | 只看该作者
雨落忧伤 发表于 2017-12-10 18:18
多谢提醒,已经尝试了。
确实不会报错了,但是有了一个新的问题,那就是显示出来的是一些无法识别的字符 ...

缺失的是中文吗?
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-23 04:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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