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

Project1

 找回密码
 注册会员
搜索
查看: 1474|回复: 16
打印 上一主题 下一主题

字体转换脚本的问题

 关闭 [复制链接]

Lv4.逐梦者

ST戰士

梦石
11
星屑
82
在线时间
1155 小时
注册时间
2007-5-5
帖子
3489

第5届短篇游戏比赛季军

跳转到指定楼层
1
发表于 2009-5-7 17:24:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
很早以前小弟曾经求过一个字体转换脚本的问题,
随后也解决了,
但是问题又来了,
以下是当年的脚本:
  1. module Conv
  2. def self.c(str)
  3.   
  4.   m2w = Win32API.new("kernel32","MultiByteToWideChar",'ilpipi','i')
  5.   w2m = Win32API.new("kernel32","WideCharToMultiByte",'ilpipipp','i')
  6.   lcms = Win32API.new("kernel32","LCMapString",'llpipi','i')

  7.   len = m2w.call(65001,0,str,-1,nil,0)
  8.   buf = "\0"*(len*2)

  9.   m2w.call(65001,0,str,-1,buf,len)

  10.   len = w2m.call(0,0,buf,-1,nil,0,nil,nil)
  11.   ret = "\0"*len

  12.   w2m.call(0,0,buf,-1,ret,len,nil,nil)

  13.   len = m2w.call(936,0,ret,-1,nil,0)
  14.   buf01 = "\0"*(len*2+1)
  15.   lcms.call(0x0804,0x04000000,ret,-1,buf01,len*2)
  16.   
  17.   len = m2w.call(0,0,buf01,-1,nil,0)
  18.   buf = "\0" * (len*2)
  19.   m2w.call(0,0,buf01,-1,buf,len)

  20.   len = w2m.call(65001,0,buf,-1,nil,0,nil,nil)
  21.   ret = "\0" * (len-1)
  22.   w2m.call(65001,0,buf,-1,ret,len-1,nil,nil)
  23.   
  24.   return ret
  25. end

  26. end
  27. $t = false
  28. class Bitmap
  29. unless $I_LOVE_RMXP_6RWORDCONV
  30.    alias dx draw_text
  31.    def draw_text(p1, p2, p3 = 0, p4 = 3, p5 = nil, p6 = 0)
  32.      case p1
  33.      when Rect
  34.        str = Conv.c(p2)
  35.      $t ? dx(p1, str, p3) : dx(p1, p2, p3)
  36.      else
  37.        str = Conv.c(p5)
  38.      $t ? dx(p1, p2, p3, p4, str, p6) : dx(p1, p2, p3, p4, p5, p6)  
  39.      end
  40.    end
  41.    $I_LOVE_RMXP_6RWORDCONV = true
  42. end
  43. end
复制代码

当字体转换成繁体以后,
然后就储存游戏,
但是读取游戏后字体又还原了简体,
请问要怎样做才能够让玩家选择了他们要的字体过后然后储存游戏,
等下次再读取游戏之后还是用回他们所选的字体呢?
请前辈们指教~ {/hx} {/hx} {/gg} {/gg}
版务信息:本贴由楼主自主结贴~
我是昵称 JIN 的迅雷進,是一位以日本特攝講解爲主的馬來西亞 YouTuber。

歡迎瀏覽我的頻道:JinRaiXin -迅雷進-

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
2
发表于 2009-5-7 18:00:35 | 只看该作者
这个脚本直接重写了 Bitmap 的 draw_text 方法,把原来的简体字符串映射到了繁体,理论上就算重新读档也不会再次变回简体啊~
我测试了下也没有出现迅兄说的情况诶……
回复 支持 反对

使用道具 举报

Lv4.逐梦者

ST戰士

梦石
11
星屑
82
在线时间
1155 小时
注册时间
2007-5-5
帖子
3489

第5届短篇游戏比赛季军

3
 楼主| 发表于 2009-5-7 18:27:25 | 只看该作者
以下引用紫苏于2009-5-7 10:00:35的发言:

这个脚本直接重写了 Bitmap 的 draw_text 方法,把原来的简体字符串映射到了繁体,理论上就算重新读档也不会再次变回简体啊~
我测试了下也没有出现迅兄说的情况诶……
这是小弟的简繁工程,
请前辈过目过目~ {/gg} {/gg}

>>> ttp://jinraixin.com/entertainment/Download/Project11.rar
我是昵称 JIN 的迅雷進,是一位以日本特攝講解爲主的馬來西亞 YouTuber。

歡迎瀏覽我的頻道:JinRaiXin -迅雷進-
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
4
发表于 2009-5-7 18:41:31 | 只看该作者
哦~原来是在事件中动态更改……
那可以把 $1 这个变量保存到存档文件中,读取时再读回来就行了:
unless $PRAGMA_ONCE

class Scene_Save < Scene_File
  #--------------------------------------------------------------------------
  # ● 写入存档数据
  #     file : 写入用文件对像 (已经打开)
  #--------------------------------------------------------------------------
  alias write_save_data_old write_save_data if
    !method_defined? :write_save_data_old
  def write_save_data(file)
     write_save_data_old(file)
     Marshal.dump($t, file)
  end
end

class Scene_Load < Scene_File
  alias read_save_data_old read_save_data if
    !method_defined? :read_save_data_old
  #--------------------------------------------------------------------------
  # ● 读取存档数据
  #     file : 读取用文件对像 (已经打开)
  #--------------------------------------------------------------------------
  def read_save_data(file)
    read_save_data_old(file)
    $t = Marshal.load(file)
  end
end

$PRAGMA_ONCE = 1
end
回复 支持 反对

使用道具 举报

Lv4.逐梦者

ST戰士

梦石
11
星屑
82
在线时间
1155 小时
注册时间
2007-5-5
帖子
3489

第5届短篇游戏比赛季军

5
 楼主| 发表于 2009-5-7 18:54:24 | 只看该作者
此脚本该加在哪里呢?
我是昵称 JIN 的迅雷進,是一位以日本特攝講解爲主的馬來西亞 YouTuber。

歡迎瀏覽我的頻道:JinRaiXin -迅雷進-
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
6
发表于 2009-5-7 18:55:22 | 只看该作者
以下引用迅雷進于2009-5-7 10:54:24的发言:

此脚本该加在哪里呢?

Main 之前,简体转换繁体脚本之后……
回复 支持 反对

使用道具 举报

Lv4.逐梦者

ST戰士

梦石
11
星屑
82
在线时间
1155 小时
注册时间
2007-5-5
帖子
3489

第5届短篇游戏比赛季军

7
 楼主| 发表于 2009-5-7 19:11:11 | 只看该作者
第25行出现 EOFError
End of file reached...
我是昵称 JIN 的迅雷進,是一位以日本特攝講解爲主的馬來西亞 YouTuber。

歡迎瀏覽我的頻道:JinRaiXin -迅雷進-
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
8
发表于 2009-5-7 19:12:41 | 只看该作者
以下引用迅雷進于2009-5-7 11:11:11的发言:

第25行出现 EOFError
End of file reached...

先把以前的存档删了……因为之前的存档没保存 $1
回复 支持 反对

使用道具 举报

Lv4.逐梦者

ST戰士

梦石
11
星屑
82
在线时间
1155 小时
注册时间
2007-5-5
帖子
3489

第5届短篇游戏比赛季军

9
 楼主| 发表于 2009-5-7 19:18:38 | 只看该作者
建新了新的存档同样还是有问题的说… {/dk} {/dk}
要劳烦前辈看看了。
我是昵称 JIN 的迅雷進,是一位以日本特攝講解爲主的馬來西亞 YouTuber。

歡迎瀏覽我的頻道:JinRaiXin -迅雷進-
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
10
发表于 2009-5-7 19:24:28 | 只看该作者
你看看这个工程吧,我反复测试了下也没有发现问题{/gg}
http://rpg.blue/upload_program/d/紫苏_Project11_122124234.rar
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-27 08:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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