Project1

标题: RMXP更換引擎為RGSS3!!!! [打印本页]

作者: joe5491    时间: 2013-4-24 19:04
标题: RMXP更換引擎為RGSS3!!!!
本帖最后由 joe5491 于 2013-4-28 00:57 编辑

嗯.....因為有感於這個XP的效能和速度....因此我決定....把RPG MAKER VX ACE的引擎換到RMXP上.....

最後結果.............成功了......

在翻找了許許多多的網站後,重新定義了許多東西後,終於更換引擎成功了!!!!

不過呢...可能有些RMXP的腳本會因為RUBY1.9的關係衝突到...(好像1.9對字串比較嚴刻...字串不能亂相加...),或是一些控制視窗的API會卡到...

歐!對了依照常理來講,RMXP的腳本幾乎都可以用(不卡到上述東西的話)...,RMVA的腳本都不能用(可能有例外)...

弄完後...對RGSS3的效能感到....威能.....(對於彈幕遊戲可以到100FPS的我感到驚訝...)
[line]1[/line]
好啦,範例:載點移除...(內附RTP)(裡面的RGSS100j.dll實際是RGSS300.dll,要自己改成合適的名字...)
[line]1[/line]

全屏問題解決了!

範例:載點移除...(內附RTP)(裡面的RGSS100j.dll實際是RGSS301.dll,要自己改成合適的名字...)

RTP問題+p&print解決了!

(v1)範例:http://pan.baidu.com/share/link?shareid=427645&uk=2553703133(內不附RTP,另外RTP.dll記得帶走)

更新了腦殘的pitch問題!

(v2)範例:http://pan.baidu.com/share/link?shareid=429166&uk=2553703133(這個版本重新定義過了 Windown 類)

注意!!!!!這東西跟「中文字」非常容易衝到!!!遊戲內的所有路徑、檔名都最好不要有中文!!!
然後遊戲裡面一些有關字串的東西衝到要記得改!!!!
例如:C:\Users\joe\Dropbox\SkyDrive\Google 雲端硬碟\Project RGSS3    這樣是不好的!!!
例如:C:\Users\joe\Dropbox\SkyDrive\Google\Project RGSS3                   這樣是好的!!!


寫dll檔真麻煩...(C++萬歲~)

p.s.字體預設「標楷體」....這個請自行修改....

注意左上角圖案不一樣...


有價值的參數設定(描邊&陰影)(目前的設定是和XP一模一樣...)


謎之音:RGSS3好像有內建影片播放器的樣子說...
然後腦殘的10秒腳本備份被砍掉哩~
作者: 美丽晨露    时间: 2013-4-24 19:11
全屏不能
无法拉伸到全屏幕啊。
其他功能跟XP有什么不同呢?
莫非能防卡?能提高帧数?
作者: joe5491    时间: 2013-4-24 22:41
本帖最后由 joe5491 于 2013-4-25 01:57 编辑

@美丽晨露

能防卡嗎?   一定可以(99%,如果算法太爛還是沒輒...)(應該可以保證60幀不會掉.....RGSS1正常40幀)
能提高帧数?  可以,要100也可以做到(大概,如果沒過於誇張的計算量的話...ex:彈幕)

正在處理全屏問題....
作者: 美丽晨露    时间: 2013-4-25 10:19
joe5491 发表于 2013-4-24 22:41
@美丽晨露

能防卡嗎?   一定可以(99%,如果算法太爛還是沒輒...)(應該可以保證60幀不會掉.....RGSS1正常 ...

好棒的说啊
话说我要怎么做才能将已经完成的游戏
置入VA的引擎功能呢?
作者: joe5491    时间: 2013-4-25 12:55
美丽晨露 发表于 2013-4-25 10:19
好棒的说啊
话说我要怎么做才能将已经完成的游戏
置入VA的引擎功能呢? ...

第一,先把RTP放進原遊戲....(這系統不會尋找系統裡的RTP....)
把game.exe和RGSS10Xj.dll換成新的game.exe跟RGSS10Xj.dll(範例裡的)
然後把Font資料夾放進去,接者打開腳本編輯器,把RPGXP->RGSS3 (part 1)和RPGXP->RGSS3 (part 2)移過去,part1放最上面、part2放最下面。然後可能會有一些些的小衝突(不會太大,除非是動到視窗API...)
就這樣
作者: 美丽晨露    时间: 2013-4-25 15:33
joe5491 发表于 2013-4-25 12:55
第一,先把RTP放進原遊戲....(這系統不會尋找系統裡的RTP....)
把game.exe和RGSS10Xj.dll換成新的game.ex ...

如果没有使用RTP素材的话就不用放入RTP了吧
作者: joe5491    时间: 2013-4-25 22:06
美丽晨露 发表于 2013-4-25 15:33
如果没有使用RTP素材的话就不用放入RTP了吧

是可以這樣說啦...

不過一般人都會用RTP吧...
作者: serena718    时间: 2013-4-26 01:02
感謝LZ分享,雖然在逛外站時就知道這方法了XD
不過我的工程套用至這個方法後會出現致命性BUG,只好使用RGSS2移植了
不過LZ可否看下這個帖呢?
http://rpg.blue/thread-234534-1-1.html
這個是將RGSS2移植至XP的縮減版,他的範例包裡有個導入RTP的腳本
不知LZ可否也能將該功能復刻至這個RGSS3引擎
因為我覺得要導入RTP很煩(喂)
還有Tilemap也實在是蛋疼到一個極點的地方……
作者: 火星·奈    时间: 2013-4-26 08:09
这个真心帅爆咯。貌似全屏还是有些小问题,lz解决下吧.
作者: 89444640    时间: 2013-4-26 10:40
都复制过来出这个--
作者: 诺亚之城    时间: 2013-4-26 13:10
整合后,标题菜单都没出现就立刻自动关闭了。。。
看来我用不了。
作者: 弗雷德    时间: 2013-4-26 16:12
这个碉堡了,终于可以在效率与XP的地图层级之间做到鱼和熊掌兼得啦!
作者: 美丽晨露    时间: 2013-4-26 17:48
不行啊,无法使用到已经做好的工程的说
看来是对外部的DLL有相对的限制
作者: sai90306    时间: 2013-4-26 18:05
弱弱的問一下,換成RGSS3引擎和原本的除了效能之外還有什麼差別嗎?所以腳本寫法還是跟XP一樣嗎?但不能用VA腳本感覺好可惜阿= =
作者: 美丽晨露    时间: 2013-4-26 18:41
RMFlash.dll
冲突,无法进行FLASH播放
作者: aaa895688    时间: 2013-4-26 18:48
动画优先顺序出现问题了~不知是不是只有我这样~
作者: 八宝粥先生    时间: 2013-4-26 19:44
跪求VX引擎转换为RGSS3!
作者: 6rp    时间: 2013-4-26 21:11
看来下一步是写一段自动转换两种脚本的代码了。
作者: wingzeroplus    时间: 2013-4-26 21:25
莫非事件里不能使用 按钮XX被按下时 之类的东西?只要按了方向键就出这个……

作者: T君的暴走    时间: 2013-4-26 21:49
屌炸天
作者: Judgement    时间: 2013-4-26 21:56
RMFlash.dll冲突,不过这个前面也有人提到了……{:2_253:}
作者: sai90306    时间: 2013-4-26 22:43
原來如此,其實我最期待的就是VA的文字描邊功能,XP實在太難看了,另LZ有提到VA的腳本要轉換過....是要怎麼轉阿@@若是能轉XP就強大了阿!!
作者: 茉莉花上的露水    时间: 2013-4-26 22:47
XP转VA引擎,会不会导致一些XP的原本脚本功能失效啊{:2_270:}
作者: serena718    时间: 2013-4-26 22:58
本帖最后由 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,我就很感激了(喂
作者: joe5491    时间: 2013-4-27 11:37
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
复制代码

作者: 1142881837    时间: 2013-4-27 12:08
为什么他比我注册的还晚,但是他的经验比我多这么多啊!难道走后门了?
作者: serena718    时间: 2013-4-27 14:08
本帖最后由 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失蹤了...
作者: 无脑之人    时间: 2013-4-27 15:43
LZ你好 在下刚刚使用了阁下的脚本,发现了如下问题:
1.在下使用的是兰触(花晴兰)给的鼠标脚本,在下自己家的鼠标位置判定,他在我自己写的物品界面出现了index判断失误,不知道是不是阁下影响的。
2.在下的物品栏不知为何无法显示项目了
3.在下的自动换行效果没了,目测是self[start,length]失效,这不科学
4.在下根据VX VA以及兰触说的对XP的一些脚本进行了修改和复刻(例如VX里面bitmap的渐变矩形),不知道会不会有什么影响
作者: joe5491    时间: 2013-4-27 16:25
无脑之人 发表于 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中找出來的...不應該有問題...-_-|||
作者: 无脑之人    时间: 2013-4-27 16:25
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判定的脚本 求前辈给解答哪里错了(关键是为什么只有物品错了……)
作者: 无脑之人    时间: 2013-4-27 17:57
在下经过实验证明 换了RGSS3之后 不是鼠标那里出问题了 而是Window_Selectable的下拉功能被破坏了,光标显示的也不对 求解决……
作者: 无脑之人    时间: 2013-4-27 22:36
完美了,谢谢LZ
作者: sai90306    时间: 2013-4-27 23:24
本帖最后由 sai90306 于 2013-4-27 23:27 编辑

種麼和中文衝突阿,好可惜{:2_253:},求V3版,相容中文{:2_264:}
作者: sai90306    时间: 2013-4-28 09:45
嗚...報錯了...
昨天下了之後心血來潮的去測試了文字描邊...
改TRUE

運行卻出錯了

{:2_253:}
並且改回FALSE之後再開仍會抱同樣的錯誤

作者: chd114    时间: 2013-4-28 17:51
如果文字我不想要这种怎么办
作者: chd114    时间: 2013-4-29 18:38
还是用RUBY的脚本吗?那这样的话是不是说装备不能像RMAV那样加最大HP、最大SP?
作者: 火星·奈    时间: 2013-4-30 20:49
joe5491 发表于 2013-4-25 12:55
第一,先把RTP放進原遊戲....(這系統不會尋找系統裡的RTP....)
把game.exe和RGSS10Xj.dll換成新的game.ex ...

全屏后有的地方,没有显示出来.
作者: ProfesstionR    时间: 2013-5-5 07:36
楼主为什么
    @skilltimes = {}
    for skill in $data_skills
      @skilltimes[skill.id] = 5
    end
这样一段代码执行起来会出错?
undefind method 'id' for nil::NilClass
作者: 你最珍贵    时间: 2013-5-5 10:38
“找不到指定程序”
作者: 无脑之人    时间: 2013-5-18 12:30
貌似修改分辨率的功能失效了啊……求修复……做STG很需要撒……
作者: 无脑之人    时间: 2013-5-19 18:45
@joe5491 求解决分辨率问题
作者: yzdel619835    时间: 2014-1-18 04:37
为什么我会感觉运行起来比以前更慢了呢?
作者: ky52879    时间: 2014-10-11 11:04
joe5491 发表于 2013-4-25 22:06
是可以這樣說啦...

不過一般人都會用RTP吧...

请问LZ,这个错误是怎么回事呢?

PS:出错步骤,我用了一个【中文名】的文件,然后把这个文件删掉了,本来应该报错“找不到xxx”的,但是代码貌似读取中文无力,于是报错了,求解决!


作者: 过眼云烟    时间: 2014-10-11 14:13
是不是有些dll里包含的类没写全呢,比如$game_party.actors[0].id的id等,如果包含这些脚本都会报错呢。还是希望lz能进一步完善一下~~
作者: 乐之魂    时间: 2015-6-12 20:54
LZ能不能换回原来RMXP的字体啊,宋体是书写体啊,用宋体好难看,黑体不好看吗,好可惜,LZ帮忙换下吧,用微软的黑体,教我怎么弄好吗谢谢
作者: 乐之魂    时间: 2015-6-12 21:03
chd114 发表于 2013-4-28 17:51
如果文字我不想要这种怎么办

LZ能告诉我怎么搜吗,Xp怎么换原来的字体?
作者: chd114    时间: 2015-6-12 22:23
乐之魂 发表于 2015-6-12 04:03
LZ能告诉我怎么搜吗,Xp怎么换原来的字体?

我不是楼主···
作者: 黑化宙斯    时间: 2015-6-14 17:56
先給個讚
但這個腳本加上文章顯示強化腳本
會無法顯示文字...
作者: 乐之魂    时间: 2015-6-16 16:50
chd114 发表于 2015-6-12 22:23
我不是楼主···

宋体是书写体,放游戏里很不适合啊,黑体方而更好点,现在有些国产爪机字体也弄成宋体,这样还不如不换……




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