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

Project1

 找回密码
 注册会员
搜索
查看: 95|回复: 3

[原创发布] [新三作]又一个任意扩展的办法

[复制链接]

Lv2.观梦者

梦石
0
星屑
459
在线时间
3739 小时
注册时间
2011-2-26
帖子
1836

开拓者

发表于 2019-1-2 08:44:43 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

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

x
昨天和喵喵喵还有各位讨论了一下一个像seiran20这样的扩展工具向的基础库能少到多少个功能

一直缩减到只有declapi和declexe,还是不满意,晚上想到了这个方法,哪怕RGSS没提供Win32API都可以扩展。

这个例子需要有一个第三方的ruby(比如rubyinstaller)。不过你自己用这个方法可以用任意语言和开发工具。
方法是利用管道。

先写一个run.rb
RUBY 代码复制打印下载
  1. require 'open3'
  2. path = 'Game.exe'
  3. Open3.popen3(path) do |stdin, stdout, stderr, thr|
  4.      while 0
  5.          rs, ws = IO.select([stdout], [stdin], [], 0.01)
  6.          if r = rs[0]
  7.              line = stdout.gets
  8.              if line =~ /\[ruby\](.*)/
  9.                 r = eval($1).inspect
  10.                 stdin.write r
  11.                 stdin.write "\n"
  12.                 stdin.flush
  13.              end
  14.          end
  15.  
  16.          break if !thr.alive?
  17.          sleep 0.01
  18.      end
  19. end


然后RM脚本里面写: (RMXP/VX/VA测试通过)
RUBY 代码复制打印
  1. STDOUT.puts "[ruby]'Hello world'.reverse"
  2. STDOUT.flush
  3. print STDIN.gets
  4. STDOUT.puts "[ruby]RUBY_DESCRIPTION"
  5. STDOUT.flush
  6. print STDIN.gets


然后用
SHELL 代码复制打印
  1. ruby run.rb
  2. #或
  3. rubyw run.rb

来运行

可以看到想怎么扩展就怎么扩展,两边约好就行了。
不过,这个会覆盖原有的STDOUT,也就是你想在VA里面p点东西到控制台就看不见了。
你可以把没有[ruby]开头的行直接输出,或者提供一个自制的调试协议,比如有[debug]开头的行输出一下。

练习:
1. 利用Marshal,以及stdin和stdout的binmode,做一个一般的从外部ruby来eval的协议
   1.1* 把这个改成有关多线程乱序的,有可能前一个eval的执行结果要稍后才能返回
2. 利用C#/Powershell和简单的文本自制协议或者json(我写过一个jsonparser可以直接用)来扩展功能到.NET
3. *用sinatra和这里的方法做一个可以实时显示变量名和值的网页,可以在网页上修改值,会自动同步到游戏,而不用跑F9
   这个练习是表示这么做一个辅助开发工具还是挺便宜的。

评分

参与人数 1+1 收起 理由
VIPArcher + 1

查看全部评分

RML正在开发中
项目: https://github.com/RGSS3/PML
发布: http://seiran.mist.so/rml/rml.html
应援: https://afdian.net/@seiran

Lv2.观梦者

梦石
0
星屑
296
在线时间
338 小时
注册时间
2010-12-15
帖子
926

开拓者

发表于 2019-1-2 15:27:44 | 显示全部楼层
既然能扩展到 .Net 不能支持 IronRuby 和咸鱼有啥区别 ?

点评

(可以直接用IronRuby或者JRuby跑主楼那个代码  发表于 2019-1-2 19:05
哪里不支持了  发表于 2019-1-2 19:05
回复 支持 反对

使用道具 举报

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

本版积分规则

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

站长信箱:fux2@moe9th.com|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2019-1-21 02:10

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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