Project1

标题: 如何在没出错的时候用指令调出报错弹窗?已解决 [打印本页]

作者: 爱羊真知己    时间: 2023-1-26 14:37
标题: 如何在没出错的时候用指令调出报错弹窗?已解决
本帖最后由 爱羊真知己 于 2023-1-30 13:48 编辑

VA的报错弹窗和正常弹窗界面是不一样的。正常弹窗是可以用脚本调出的,但报错弹窗我还没找到方法。那么如何用脚本调出报错弹窗呢?(弹窗中的文字需要能自定义,且游戏不会真的崩掉)如果直接调不行,更改正常弹窗以达到此效果也行。(需要保留正常弹窗及msgbox指令)
另外,再问一个问题:可以用插入的脚本覆盖RMVA自带且不在编辑器中的系统界面、文字、指令(例如上文的弹窗,exit指令)吗?如果做不到,利用dll(放在游戏目录中,不是安装目录)可以做到吗?
作者: 爱羊真知己    时间: 2023-1-26 14:39
不要问我要这个干什么……
作者: 爱羊真知己    时间: 2023-1-26 15:30
(回复@alexncf125 )啊……果然稀奇古怪的东西VA做不到。
作者: KB.Driver    时间: 2023-1-26 22:52
本帖最后由 KB.Driver 于 2023-1-31 20:52 编辑

(1)这两段插入脚本编辑器

RUBY 代码复制
  1. class String
  2.   CP_ACP = 0
  3.   CP_UTF8 = 65001
  4.  
  5.   MultiByteToWideChar = Win32API.new(*%w[kernel32 MultiByteToWideChar ilpipi i])
  6.   WideCharToMultiByte = Win32API.new(*%w[kernel32 WideCharToMultiByte ilpipipp i])
  7.  
  8.   def utf8_to_gb2312
  9.     n = 0
  10.     i = MultiByteToWideChar.call(CP_UTF8, 0, self, -1, nil, 0)
  11.     buffer = "\0" * (i * 2)
  12.     MultiByteToWideChar.call(CP_UTF8, 0, self, -1, buffer, i)
  13.     i = WideCharToMultiByte.call(CP_ACP, 0, buffer, -1, nil, 0, nil, nil)
  14.     result = "\0" * i
  15.     WideCharToMultiByte.call(CP_ACP, 0, buffer, -1, result, i, nil, nil)
  16.     result.chop!
  17.     return result
  18.   end
  19.  
  20.   def gb2312_to_utf8
  21.     n = self.size
  22.     i = MultiByteToWideChar.call(CP_ACP, 0, self, n+1, nil, 0)
  23.     buffer = "\0" * (i*2)
  24.     i = MultiByteToWideChar.call(CP_ACP, 0, self, n+1, buffer, i)
  25.     i = WideCharToMultiByte.call(CP_UTF8, 0, buffer, -1, nil, 0, nil, nil)
  26.     result = "\0" * i
  27.     WideCharToMultiByte.call(CP_UTF8, 0, buffer, -1, result, i, nil, nil)
  28.     result.chop!
  29.     return result
  30.   end
  31. end


RUBY 代码复制
  1. GetForegroundWindow = Win32API.new(*%W[user32.dll GetForegroundWindow v l])
  2. MessageBox = Win32API.new(*%W[user32.dll MessageBox lppl l])
  3. Hwnd = GetForegroundWindow.call


(2)事件脚本用这个

RUBY 代码复制
  1. text = "测试文本\n\n这是第二行"
  2. title = "测试标题"
  3. MessageBox.call(Hwnd, text.utf8_to_gb2312, title.utf8_to_gb2312, 48)


(3)效果参考

RM自身的报错


使用脚本的效果,是不是一模一样?


可以用事件脚本触发,编辑文字显示不同内容


作者: 爱羊真知己    时间: 2023-1-27 13:49
KB.Driver 发表于 2023-1-26 22:52
(1)这两段插入脚本编辑器

class String

这个脚本第12行崩溃了……(SyntaxError)
所以你测试这个脚本时是用新游戏测试的吗?
作者: 爱羊真知己    时间: 2023-1-27 16:02
本帖最后由 爱羊真知己 于 2023-1-27 16:58 编辑
爱羊真知己 发表于 2023-1-27 13:49
这个脚本第12行崩溃了……(SyntaxError)
所以你测试这个脚本时是用新游戏测试的吗? ...


或者Steam的RM才能用?
作者: KB.Driver    时间: 2023-1-27 20:54
爱羊真知己 发表于 2023-1-27 13:49
这个脚本第12行崩溃了……(SyntaxError)
所以你测试这个脚本时是用新游戏测试的吗? ...

我检查了一下,复制上来的时候不知道为什么少了一个逗号。
现在改好了,你可以再试一下。
作者: 爱羊真知己    时间: 2023-1-28 16:37
KB.Driver 发表于 2023-1-27 20:54
我检查了一下,复制上来的时候不知道为什么少了一个逗号。
现在改好了,你可以再试一下。 ...

谢谢……不对啊,为什么内容和标题都只显示第一个字?
作者: KB.Driver    时间: 2023-1-31 20:54
爱羊真知己 发表于 2023-1-28 16:37
谢谢……不对啊,为什么内容和标题都只显示第一个字?

有点离谱,我从脚本编辑器复制到论坛然后发布,-1就自动动变成1了。
感谢 @gqxastg  帮忙回复。
作者: 爱羊真知己    时间: 2023-2-1 12:55
KB.Driver 发表于 2023-1-31 20:54
有点离谱,我从脚本编辑器复制到论坛然后发布,-1就自动动变成1了。
感谢 @gqxastg  帮忙回复。 ...

主要是我也不敢乱改,毕竟我曾经因为乱改这种需要调用PC系统数据的脚本导致游戏崩溃,改回去、删除脚本都没用,最后换了一个Scripts.rvdata2才正常……




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