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

Project1

 找回密码
 注册会员
搜索
楼主: joe5491
打印 上一主题 下一主题

[原创发布] RMXP更換引擎為RGSS3!!!!

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
122 小时
注册时间
2010-6-22
帖子
54
21
发表于 2013-4-26 21:56:39 | 只看该作者
RMFlash.dll冲突,不过这个前面也有人提到了……{:2_253:}

点评

25樓有修正腳本,看看吧....  发表于 2013-4-27 11:38
檢查一下路徑內有沒有中文字...如果不行的話直接把遊戲放在C://底下試試看...  发表于 2013-4-27 02:24
想辦法修理中....  发表于 2013-4-26 23:00
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
461 小时
注册时间
2008-11-19
帖子
607
22
发表于 2013-4-26 22:43:39 | 只看该作者
原來如此,其實我最期待的就是VA的文字描邊功能,XP實在太難看了,另LZ有提到VA的腳本要轉換過....是要怎麼轉阿@@若是能轉XP就強大了阿!!

点评

如果會讀腳本的話,就自己把一些該改的地方改一改吧。 不會讀的話....就...  发表于 2013-4-27 02:23

评分

参与人数 1星屑 +50 收起 理由
lsu666666 + 50 HI

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
25 小时
注册时间
2013-4-26
帖子
68
23
发表于 2013-4-26 22:47:22 | 只看该作者
XP转VA引擎,会不会导致一些XP的原本脚本功能失效啊{:2_270:}

点评

XP內建的不會,就是怕RUBY1.9裡面有一些東西規定的比較嚴格...  发表于 2013-4-26 23:00
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
1730 小时
注册时间
2009-7-12
帖子
443
24
发表于 2013-4-26 22:58:14 | 只看该作者
本帖最后由 serena718 于 2013-4-26 23:10 编辑

噢,致命性BUG是我個人工程的問題,因為我內部太多腳本,可能哪個發生衝突了OTZ
其實基本上你這個單獨用沒問題的,只是我個人的工程不適用...(懶得移植到其他版本上了,儘管他版的性能較好XD)
說實在我想用RGSS3也只是為了那個Viewport功能,之前把一個VA的地圖類腳本移植到XP,一切都OK,就是Viewport有問題
我原本一直以為是我的寫法不對,後來才發現是VA和XP根本上的差異(淚
現在是用XP套用VX的運行庫,其實也為的不是啥,只是因為換新電腦後才發覺640*480這視窗大小實在有些蛋疼
但我選單什麼的都寫死了,素材也都弄好了,懶的改,乾脆直接用畫面拉伸的方式來放大視窗(XP做不到這點啊泣可休)
如果LZ有空,幫我復刻個VA的Viweport Ver.XP,我就很感激了(喂

点评

話說裡面的腳本已經差不多把VA的物件給洗掉了,在用一次VA的東西可能會比較....p.s.那個地圖不能用XP重畫嗎...  发表于 2013-4-27 02:21
其實我不太知道Viweport幹啥用的...  发表于 2013-4-27 02:19
提到致命性BUG,有個就是我有插入其他地圖類的腳本,原本沒問題的,套用到VA庫,內建的Game_map彈出語法錯誤(汗  发表于 2013-4-26 23:11

那啥…我以為用戶名只是通行碼…
所以我暱稱不是serena718哈,是月見斐夜
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
193 小时
注册时间
2013-3-24
帖子
448
25
 楼主| 发表于 2013-4-27 11:37:10 | 只看该作者
RMFlash修好了~換成底下的腳本(天殺的編碼問題)...

p.s.不過有時播放會沒有聲音....不知如何解決.....(機率變高了....約1/2)
  1. #Flash 播放器 v1.3   作者:灼眼的夏娜
  2. #Only for RGSS3  -by joe59491
  3. class String
  4.   CP_ACP = 0
  5.   CP_UTF8 = 65001
  6.   def u2s
  7.     m2w = Win32API.new("kernel32", "MultiByteToWideChar", "ilpipi", "i")
  8.     w2m = Win32API.new("kernel32", "WideCharToMultiByte", "ilpipipp", "i")
  9.     len = m2w.call(CP_UTF8, 0, self, -1, nil, 0)
  10.     buf = "\0" * (len*2)
  11.     m2w.call(CP_UTF8, 0, self, -1, buf, buf.size/2)
  12.     len = w2m.call(CP_ACP, 0, buf, -1, nil, 0, nil, nil)
  13.     ret = "\0" * len
  14.     w2m.call(CP_ACP, 0, buf, -1, ret, ret.size, nil, nil)
  15.     return ret
  16.   end
  17.   def s2u
  18.     m2w = Win32API.new("kernel32", "MultiByteToWideChar", "ilpipi", "i")
  19.     w2m = Win32API.new("kernel32", "WideCharToMultiByte", "ilpipipp", "i")
  20.     len = m2w.call(CP_ACP, 0, self, -1, nil, 0);
  21.     buf = "\0" * (len*2)
  22.     m2w.call(CP_ACP, 0, self, -1, buf, buf.size/2);
  23.     len = w2m.call(CP_UTF8, 0, buf, -1, nil, 0, nil, nil);
  24.     ret = "\0" * len
  25.     w2m.call(CP_UTF8, 0, buf, -1, ret, ret.size, nil, nil);
  26.     return ret
  27.   end
  28.   def s2u!
  29.     self[0, length] = s2u
  30.   end  
  31.   def u2s!
  32.     self[0, length] = u2s
  33.   end
  34. end

  35. class Bitmap
  36.   RtlMoveMemory_pi = Win32API.new('kernel32', 'RtlMoveMemory', 'pii', 'i')
  37.   RtlMoveMemory_ip = Win32API.new('kernel32', 'RtlMoveMemory', 'ipi', 'i')
  38.   def address
  39.     buffer, ad = "xxxx", object_id * 2 + 16
  40.     RtlMoveMemory_pi.call(buffer, ad, 4); ad = buffer.unpack("L")[0] + 8
  41.     RtlMoveMemory_pi.call(buffer, ad, 4); ad = buffer.unpack("L")[0] + 16
  42.     RtlMoveMemory_pi.call(buffer, ad, 4); return buffer.unpack("L")[0]
  43.   end
  44. end
  45. class RMFlash
  46.   API_NEW                      = Win32API.new("RMFlash", "_new", "piil", "l")
  47.   API_UPDATE            = Win32API.new("RMFlash", "_update", "l", "v")
  48.   API_FREE              = Win32API.new("RMFlash", "_free", "l", "v")
  49.   API_PLAYING     = Win32API.new("RMFlash", "_is_playing", "l", "i")
  50.   API_PAUSE              = Win32API.new("RMFlash", "_pause", "l", "v")
  51.   API_RESUME            = Win32API.new("RMFlash", "_resume", "l", "v")
  52.   API_BACK              = Win32API.new("RMFlash", "_back", "l", "v")
  53.   API_REWIND            = Win32API.new("RMFlash", "_rewind", "l", "v")
  54.   API_FORWARD            = Win32API.new("RMFlash", "_forward", "l", "v")
  55.   API_CURFRAME          = Win32API.new("RMFlash", "_cur_frame", "l", "i")
  56.   API_TOTALFRAME        = Win32API.new("RMFlash", "_total_frames", "l", "i")
  57.   API_GOTOFRAME          = Win32API.new("RMFlash", "_goto_frame", "li", "v")
  58.   API_GETLOOP                  = Win32API.new("RMFlash", "_get_loop", "l", "i")
  59.   API_SETLOOP                  = Win32API.new("RMFlash", "_set_loop", "li", "v")
  60.   API_CLEARALL          = Win32API.new("RMFlash", "_clear_all", "v", "v")
  61.   API_VALID       = Win32API.new("RMFlash", "_valid", "l", "i")
  62.   API_SENDMSG     = Win32API.new("RMFlash", "_send_message", "liii", "l")
  63.   CUR_PATH        = Dir.pwd
  64.   def self.get_version
  65.     return 1.3
  66.   end
  67.   def self.clear_all
  68.     API_CLEARALL.call
  69.   end
  70.   def self.load(name, width, height, v = nil)
  71.     #new("#{CUR_PATH}/#{name}".u2s, width, height,v)
  72.     new("#{CUR_PATH}/#{name}", width, height,v)
  73.   end
  74.   attr_reader   :valid
  75.   def initialize(flash_name, flash_width, flash_height, viewport = nil)
  76.     [url=home.php?mod=space&uid=114926]@sprite[/url] = Sprite.new(viewport)
  77.     @sprite.bitmap = Bitmap.new(flash_width, flash_height)
  78.     @value = API_NEW.call(flash_name, flash_width, flash_height, @sprite.bitmap.address)
  79.     @loop = API_GETLOOP.call(@value) > 0
  80.     @valid = API_VALID.call(@value) > 0
  81.   end
  82.   def viewport
  83.     @sprite.viewport
  84.   end
  85.   def update
  86.     API_UPDATE.call(@value)
  87.   end
  88.   def dispose
  89.     API_FREE.call(@sprite.bitmap.address)
  90.     @sprite.dispose#AVG
  91.   end
  92.   def playing?
  93.     API_PLAYING.call(@value) > 0
  94.   end
  95.   def pause
  96.     API_PAUSE.call(@value)
  97.   end
  98.   def resume
  99.     API_RESUME.call(@value)
  100.   end
  101.   def back
  102.     API_BACK.call(@value)
  103.   end
  104.   def rewind
  105.     API_REWIND.call(@value)
  106.   end
  107.   def forward
  108.     API_FORWARD.call(@value)
  109.   end
  110.   def current_frame
  111.     API_CURFRAME.call(@value)
  112.   end
  113.   def total_frames
  114.     API_TOTALFRAME.call(@value)
  115.   end
  116.   def goto_frame(goal_frame)
  117.     API_GOTOFRAME.call(@value, goal_frame)
  118.   end
  119.   def x
  120.     @sprite.x
  121.   end
  122.   def x=(v)
  123.     @sprite.x = v
  124.   end
  125.   def y
  126.     @sprite.y
  127.   end
  128.   def y=(v)
  129.     @sprite.y = v
  130.   end
  131.   def z
  132.     @sprite.z
  133.   end
  134.   def z=(v)
  135.     @sprite.z = v
  136.   end
  137.   def width
  138.     @sprite.bitmap.width
  139.   end
  140.   def height
  141.     @sprite.bitmap.height
  142.   end
  143.   def loop?
  144.     @loop
  145.   end
  146.   def loop=(v)
  147.     if @loop != v
  148.       @loop = v
  149.       API_SETLOOP.call(@value, v)
  150.     end
  151.   end
  152.   def msg_to_flash(msg, wParam, lParam)
  153.     return API_SENDMSG.call(@value, msg, wParam, lParam)
  154.   end
  155.   #  例
  156.   WM_MOUSEMOVE  = 0x0200
  157.   def make_long(a, b)
  158.     return (a & 0xffff ) | (b & 0xffff) << 16
  159.   end
  160.   def on_mouse_move(x, y)
  161.     return msg_to_flash(WM_MOUSEMOVE, 0, make_long(x, y))
  162.   end
  163. end
  164. RMFlash.clear_all
  165. module Kernel
  166.   alias origin_exit exit unless method_defined? :exit
  167.   def exit(*args)
  168.     RMFlash.clear_all
  169.     origin_exit(*args)
  170.   end
  171. end
复制代码

点评

哎,不支持中文字实在是······游戏工程基本都是用中文字的无助了  发表于 2013-4-27 20:13

评分

参与人数 1星屑 +250 收起 理由
lsu666666 + 250 送上糖果

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
706
在线时间
127 小时
注册时间
2013-2-16
帖子
428
26
发表于 2013-4-27 12:08:25 | 只看该作者
为什么他比我注册的还晚,但是他的经验比我多这么多啊!难道走后门了?

点评

看了你的簽名覺得好有趣?  发表于 2013-4-27 20:48
有後門嗎?我想聽聽....也許你說的是這個...[http://bbs.66rpg.com/thread-303919-1-1.html]  发表于 2013-4-27 12:32
小天终于要填个新坑了,这个游戏的名字是《欲望恶魔~游侠传记》
剧情:★☆☆☆☆☆☆☆☆☆
脚本:★☆☆☆☆☆☆☆☆☆
素材:☆☆☆☆☆☆☆☆☆☆
预计明年这一个浩大的工程既可以完工了。。有木有支持的!?制作工具:RMVA
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
1730 小时
注册时间
2009-7-12
帖子
443
27
发表于 2013-4-27 14:08:36 | 只看该作者
本帖最后由 serena718 于 2013-4-27 14:17 编辑

其實我那個問題跟19樓發生的是差不多的,經我測試,可能是與隊列移動和八方向等腳本衝突
至於Viewport嘛...
http://www.atelier-rgss.com/RGSS/System/ACE_SYS08.html
我是把這個腳本移植到XP上才發現的,似乎VA的viewport不會跟著畫面跑(內建說明檔好想也有寫,只是日文我看不太懂,但他有標示只有RGSS3專有的...)
總之我改的那個腳本(寫法都沒動,只動了一些XP和VA之間沒有的地方),在純XP上沒用(效果有,但表現方式不對...= =)
直到我將他搬到偽VA上(不是LZ你的這個,是我之前找到一個歪國的偽VA方法),卻成功了,正式發現兩版本間的Viewport有問題
後來我在XP上是把刷新ox和oy給去掉了,效果還OK,就是圖片會一直跟著畫面跑,很彆扭

還有發現一個重大BUG,F9失蹤了...

点评

目前的簡單方法是 在測試遊戲時 main裡面加入「$DEBUG=true」,遊戲完成時在拿掉...  发表于 2013-4-27 16:37

那啥…我以為用戶名只是通行碼…
所以我暱稱不是serena718哈,是月見斐夜
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
117
在线时间
552 小时
注册时间
2012-8-18
帖子
1429
28
发表于 2013-4-27 15:43:46 | 只看该作者
LZ你好 在下刚刚使用了阁下的脚本,发现了如下问题:
1.在下使用的是兰触(花晴兰)给的鼠标脚本,在下自己家的鼠标位置判定,他在我自己写的物品界面出现了index判断失误,不知道是不是阁下影响的。
2.在下的物品栏不知为何无法显示项目了
3.在下的自动换行效果没了,目测是self[start,length]失效,这不科学
4.在下根据VX VA以及兰触说的对XP的一些脚本进行了修改和复刻(例如VX里面bitmap的渐变矩形),不知道会不会有什么影响
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
193 小时
注册时间
2013-3-24
帖子
448
29
 楼主| 发表于 2013-4-27 16:25:44 | 只看该作者
无脑之人 发表于 2013-4-27 15:43
LZ你好 在下刚刚使用了阁下的脚本,发现了如下问题:
1.在下使用的是兰触(花晴兰)给的鼠标脚本,在下自己 ...

1.在下使用的是兰触(花晴兰)给的鼠标脚本,在下自己家的鼠标位置判定,他在我自己写的物品界面出现了index判断失误,不知道是不是阁下影响的。   話說RGSS3裡面有重新定義過Input::C、Input::B.....(變成 :C 、:B.....)
2.在下的物品栏不知为何无法显示项目了                              重新檢查腳本裡的顯示問題....
3.在下的自动换行效果没了,目测是self[start,length]失效,这不科学          不科學+1  (用slice吧?)
4.在下根据VX VA以及兰触说的对XP的一些脚本进行了修改和复刻(例如VX里面bitmap的渐变矩形),不知道会不会有什么影响         語法沒用錯就行了,只是不能移回正常的XP而已
5.阁下貌似用::Sprite改变了Sprite,在下的采矿界面因此而无法进行了,请阁下说一下Sprite发生的改动,谢谢              這個Sprite是從XP裡的F1中找出來的...不應該有問題...-_-|||
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
117
在线时间
552 小时
注册时间
2012-8-18
帖子
1429
30
发表于 2013-4-27 16:25:48 | 只看该作者
2和5已经解决 原因是汉字不再是三个字节,和VA和XP解释器的区别问题
  1.   def mouse
  2.     sx = self.x + 16
  3.     zx = self.x + self.width - 16
  4.     sy = self.y + 16
  5.     zy = self.y + self.height - 16
  6.     mx = $mouse.mousex
  7.     my = $mouse.mousey
  8.     return if mx < sx
  9.     return if mx > zx
  10.     return if my < sy-16
  11.     return if my > zy+16
  12.     if my >= zy and my <= zy+16
  13.       if @index < @item_max - @column_max
  14.         if @mouse_push > 60
  15.           @mouse_push = 0
  16.           @index = (@index + @column_max) % @item_max
  17.         end
  18.         @mouse_push += 1
  19.       else
  20.         @mouse_push = 0
  21.       end
  22.     end
  23.     if my >= sy-16 and my <= sy
  24.       if @index < @item_max - @column_max
  25.         if @mouse_push > 60
  26.           @mouse_push = 0
  27.           @index = (@index + @column_max) % @item_max
  28.         end
  29.         @mouse_push += 1
  30.       else
  31.         @mouse_push = 0
  32.       end
  33.     end
  34.     x = mx - sx
  35.     y = my - sy
  36.     cursor_width = (self.width-32) / @column_max
  37.     xindex = (x+self.ox) / cursor_width
  38.     yindex = (y+self.oy) / 32
  39.     @index = yindex * @column_max + xindex
  40.     if @index >= @item_max-1
  41.       @index = @item_max-1
  42.     end
  43.     if @index < 0
  44.       @index = 0
  45.     end
  46.   end
复制代码
这是在下index判定的脚本 求前辈给解答哪里错了(关键是为什么只有物品错了……)
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-3 15:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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