Project1

标题: 换字的脚本 [打印本页]

作者: 迅雷進    时间: 2008-7-21 07:44
标题: 换字的脚本
弱弱的问一下,
请问有没有一些转换字体的脚本,
就是可以把简体字转换成繁体字或者把繁体字转换成简体字,
请问有类似这样的脚本吗? {/gg} {/gg}
请前辈们指教~ [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: cmbljsw    时间: 2008-7-21 07:51
  1. #------------------------------------------------------------------------------
  2. # 本脚本来自www.66RPG.com,功能是将整个游戏中draw_text的简体字全部变为繁体字
  3. # 作者:66RPG技术区版大:灼眼的夏娜
  4. #------------------------------------------------------------------------------
  5. module Conv
  6. def self.c(str)
  7.   
  8.   m2w = Win32API.new("kernel32","MultiByteToWideChar",'ilpipi','i')
  9.   w2m = Win32API.new("kernel32","WideCharToMultiByte",'ilpipipp','i')
  10.   lcms = Win32API.new("kernel32","LCMapString",'llpipi','i')

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

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

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

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

  17.   len = m2w.call(936,0,ret,-1,nil,0)
  18.   buf01 = "\0"*(len*2+1)
  19.   lcms.call(0x0804,0x04000000,ret,-1,buf01,len*2)
  20.   
  21.   len = m2w.call(0,0,buf01,-1,nil,0)
  22.   buf = "\0" * (len*2)
  23.   m2w.call(0,0,buf01,-1,buf,len)

  24.   len = w2m.call(65001,0,buf,-1,nil,0,nil,nil)
  25.   ret = "\0" * (len-1)
  26.   w2m.call(65001,0,buf,-1,ret,len-1,nil,nil)
  27.   
  28.   return ret
  29. end

  30. end

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


偷的……从神话里偷的…… [LINE]1,#dddddd[/LINE]系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
作者: 迅雷進    时间: 2008-7-21 08:17
以下引用cmbljsw于2008-7-20 23:51:42的发言:
偷的……从神话里偷的……

前辈,
请问有没有办法让这个脚本是手动而不是自动的呢?
作者: 凌冰    时间: 2008-7-21 10:37
不是有$I_LOVE_RMXP_6RWORDCONV = true可以操作开关吗?
作者: 迅雷進    时间: 2008-7-21 12:53
以下引用凌冰于2008-7-21 2:37:47的发言:

不是有$I_LOVE_RMXP_6RWORDCONV = true可以操作开关吗?

研究失败,
请问前辈能详细说明一下如何修改/使用呢? {/gg} {/gg}
作者: 灯笼菜刀王    时间: 2008-7-21 13:02
以下引用迅雷進于2008-7-21 4:53:54的发言:


以下引用凌冰于2008-7-21 2:37:47的发言:

不是有$I_LOVE_RMXP_6RWORDCONV = true可以操作开关吗?


研究失败,
请问前辈能详细说明一下如何修改/使用呢?   


直接在事件第三页脚本上操作这句嘛.....true是打开,false是关上。

作者: 迅雷進    时间: 2008-7-21 13:06
以下引用灯笼菜刀王于2008-7-21 5:02:34的发言:
直接在事件第三页脚本上操作这句嘛.....true是打开,false是关上。

就是因为这样才研究失败,
因为把 $I_LOVE_RMXP_6RWORDCONV = true 换成 false 之后就直接当机了(指游戏)… {/ll} {/ll}
作者: 灯笼菜刀王    时间: 2008-7-21 13:15
囧.....

不许关上还算开关嘛...

试试$I_LOVE_RMXP_6RWORDCONV = nil.....
作者: 關重⑦    时间: 2008-7-21 18:46
提示: 作者被禁止或删除 内容自动屏蔽
作者: 迅雷進    时间: 2008-7-21 18:57
以下引用灯笼菜刀王于2008-7-21 5:15:00的发言:

囧.....

不许关上还算开关嘛...

试试$I_LOVE_RMXP_6RWORDCONV = nil.....

抱歉前辈,
小弟算是半个脚本白痴,
不懂得如何入手的说…… {/gg} {/gg}
请前辈指点迷津。
作者: 灯笼菜刀王    时间: 2008-7-21 19:02
我也是半个脚本白痴...唯一的优点大概就是敢于乱试囧,

所以,试试吧,开关只有true和false,false不许用,那还剩个空值 nil 了....
作者: darkten    时间: 2008-7-21 19:03
或者在“$I_LOVE_RMXP_6RWORDCONV = true”那里加上开关判定...
变成:
if $game_switches[1]==true
   $I_LOVE_RMXP_6RWORDCONV = true
else
   $I_LOVE_RMXP_6RWORDCONV = false
end
(语法不确定对不对,有待高手改良)
不知道可不可以...
作者: IamI    时间: 2008-7-21 19:06
LS的一定不可以……因为一个很简单的问题……
$I_LOVE_RMXP_6RWORDCONV 全部大写,这是一个常量
要使用,肯定要对原脚本动手脚
作者: 迅雷進    时间: 2008-7-21 19:09
以下引用灯笼菜刀王于2008-7-21 11:02:49的发言:

我也是半个脚本白痴...唯一的优点大概就是敢于乱试囧,

所以,试试吧,开关只有true和false,false不许用,那还剩个空值 nil 了....

试过了,
无效的说…… {/pz} {/pz}
以下引用darkten于2008-7-21 11:03:12的发言:

或者在“$I_LOVE_RMXP_6RWORDCONV = true”那里加上开关判定...
变成:

if $game_switches[1]==true
  $I_LOVE_RMXP_6RWORDCONV = true
else
  $I_LOVE_RMXP_6RWORDCONV = false
end
(语法不确定对不对,有待高手改良)
不知道可不可以...

这个方法曾经用过,
但是已研究失败的说…… {/gg} {/gg}
作者: 灯笼菜刀王    时间: 2008-7-21 19:10
以下引用IamI于2008-7-21 11:06:43的发言:

LS的一定不可以……因为一个很简单的问题……
$I_LOVE_RMXP_6RWORDCONV 全部大写,这是一个常量!
要使用,肯定要对原脚本动手脚


那,如果用开关代替$I_LOVE_RMXP_6RWORDCONV 呢?
所有有这个值的地方全用开关代替,全局开关本身就可以操作了。
作者: 、「尕訞孑」    时间: 2008-7-21 19:11
提示: 作者被禁止或删除 内容自动屏蔽
作者: dbshy    时间: 2008-7-21 19:12
$t = false
class Bitmap
unless $I_LOVE_RMXP_6RWORDCONV
   alias dx draw_text
   def draw_text(p1, p2, p3 = 0, p4 = 3, p5 = nil, p6 = 0)
     case p1
     when Rect
       str = Conv.c(p2)
    $t ? dx(p1, str, p3) : dx(p1, p2, p3)   
       else
       str = Conv.c(p5)
       dx(p1, p2, p3, p4, str, p6)
     end
   end
   $I_LOVE_RMXP_6RWORDCONV = true
end
end


用$t
下面哪个同理
作者: 迅雷進    时间: 2008-7-21 19:14
以下引用IamI于2008-7-21 11:06:43的发言:

LS的一定不可以……因为一个很简单的问题……
$I_LOVE_RMXP_6RWORDCONV 全部大写,这是一个常量!
要使用,肯定要对原脚本动手脚

请问有何高见呢,
前辈? {/ll} {/ll}
作者: 迅雷進    时间: 2008-7-21 19:16
以下引用dbshy于2008-7-21 11:12:35的发言:

$t = false
class Bitmap
unless $I_LOVE_RMXP_6RWORDCONV
  alias dx draw_text
  def draw_text(p1, p2, p3 = 0, p4 = 3, p5 = nil, p6 = 0)
    case p1
    when Rect
      str = Conv.c(p2)
    $t ? dx(p1, str, p3) : dx(p1, p2, p3)
    else
      str = Conv.c(p5)
      dx(p1, p2, p3, p4, str, p6)
    end
  end
  $I_LOVE_RMXP_6RWORDCONV = true
end
end
用$t

一样当机了… {/gg} {/gg}
作者: IamI    时间: 2008-7-21 19:17
其实也未必一定在一棵树上吊死= =邪恶方法千千万{/tp}
比如说,准备两个字体,安装完毕以后,用Font.deafult_name切换

邪恶完毕
开始准备动脚本
作者: 灯笼菜刀王    时间: 2008-7-21 19:18
以下引用IamI于2008-7-21 11:17:18的发言:

其实也未必一定在一棵树上吊死= =邪恶方法千千万
比如说,准备两个字体,安装完毕以后,用Font.deafult_name切换

邪恶完毕
开始准备动脚本


那只能改变全局字体而已,一些特殊定义的字体就不能换了(除非单独处理= =,其实也可以)
作者: 、「尕訞孑」    时间: 2008-7-21 19:18
提示: 作者被禁止或删除 内容自动屏蔽
作者: dbshy    时间: 2008-7-21 19:20
#------------------------------------------------------------------------------
# 本脚本来自www.66RPG.com,功能是将整个游戏中draw_text的简体字全部变为繁体字
# 作者:66RPG技术区版大:灼眼的夏娜
#------------------------------------------------------------------------------
module Conv
def self.c(str)
  
  m2w = Win32API.new("kernel32","MultiByteToWideChar",'ilpipi','i')
  w2m = Win32API.new("kernel32","WideCharToMultiByte",'ilpipipp','i')
  lcms = Win32API.new("kernel32","LCMapString",'llpipi','i')

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

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

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

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

  len = m2w.call(936,0,ret,-1,nil,0)
  buf01 = "\0"*(len*2+1)
  lcms.call(0x0804,0x04000000,ret,-1,buf01,len*2)
  
  len = m2w.call(0,0,buf01,-1,nil,0)
  buf = "\0" * (len*2)
  m2w.call(0,0,buf01,-1,buf,len)

  len = w2m.call(65001,0,buf,-1,nil,0,nil,nil)
  ret = "\0" * (len-1)
  w2m.call(65001,0,buf,-1,ret,len-1,nil,nil)
  
  return ret
end

end
$t = false
class Bitmap
unless $I_LOVE_RMXP_6RWORDCONV
   alias dx draw_text
   def draw_text(p1, p2, p3 = 0, p4 = 3, p5 = nil, p6 = 0)
     case p1
     when Rect
       str = Conv.c(p2)
     $t ? dx(p1, str, p3) : dx(p1, p2, p3)
     else
       str = Conv.c(p5)
       dx(p1, p2, p3, p4, str, p6)
     end
   end
   $I_LOVE_RMXP_6RWORDCONV = true
end
end

插入以上脚本,需要换的时候输入$t = true
我刚试了一下,可以
作者: 、「尕訞孑」    时间: 2008-7-21 19:22
提示: 作者被禁止或删除 内容自动屏蔽
作者: IamI    时间: 2008-7-21 19:24
dbshy是不是理解错了?两个分开主要是处理两个函数的兼容性,也许是我错了……

$t = false
class Bitmap
   alias dx draw_text
   def draw_text(p1, p2, p3 = 0, p4 = 3, p5 = nil, p6 = 0)
     case p1
     when Rect
      if $t == true
        str = Conv.c(p2)
      else
        str = p2
      end
       dx(p1, str, p3)
     else
      if $t == true
        str = Conv.c(p5)
      else
        str = p5
      end
       dx(p1, p2, p3, p4, str, p6)
     end
   end
end
使用方法同dbshy
作者: dbshy    时间: 2008-7-21 19:27
以下引用IamI于2008-7-21 11:24:26的发言:

dbshy是不是理解错了?两个分开主要是处理两个函数的兼容性

$t = false
class Bitmap
  alias dx draw_text
  def draw_text(p1, p2, p3 = 0, p4 = 3, p5 = nil, p6 = 0)
    case p1
    when Rect
     if $t == true
       str = Conv.c(p2)
     end
      dx(p1, str, p3)
    else
     if $t == true
       str = Conv.c(p5)
     end
      dx(p1, p2, p3, p4, str, p6)
    end
  end
end


我只是下面的没写而已

$t = false
class Bitmap
unless $I_LOVE_RMXP_6RWORDCONV
  alias dx draw_text
  def draw_text(p1, p2, p3 = 0, p4 = 3, p5 = nil, p6 = 0)
    case p1
    when Rect
      str = Conv.c(p2)
    $t ? dx(p1, str, p3) : dx(p1, p2, p3)    else
      str = Conv.c(p5)
    $t ? dx(p1, p2, p3, p4, str, p6) : dx(p1, p2, p3, p4, p5, p6)    end
  end
  $I_LOVE_RMXP_6RWORDCONV = true
end
end


作者: 迅雷進    时间: 2008-7-21 19:28
以下引用dbshy于2008-7-21 11:20:08的发言:
插入以上脚本,需要换的时候输入$t = true
我刚试了一下,可以

请问当前辈用了这个脚本之后,
一开始运行游戏时是简体还是繁体呢?

以下引用、「尕訞孑」于2008-7-21 11:22:03的发言:

...
LZ的意思不是指玩家随意转换么?

正是,
前辈有何高见呢?
作者: dbshy    时间: 2008-7-21 19:30
以下引用IamI于2008-7-21 11:24:26的发言:

dbshy是不是理解错了?两个分开主要是处理两个函数的兼容性,也许是我错了……

$t = false
class Bitmap
  alias dx draw_text
  def draw_text(p1, p2, p3 = 0, p4 = 3, p5 = nil, p6 = 0)
    case p1
    when Rect
     if $t == true
       str = Conv.c(p2)
     else
       str = p2
     end
      dx(p1, str, p3)
    else
     if $t == true
       str = Conv.c(p5)
     else
       str = p5
     end
      dx(p1, p2, p3, p4, str, p6)
    end
  end
end
使用方法同dbshy


[本贴由作者于 2008-7-21 11:25:53 最后编辑]


你去看我的脚本
其实我的方法跟你一样

作者: 、「尕訞孑」    时间: 2008-7-21 19:31
提示: 作者被禁止或删除 内容自动屏蔽
作者: IamI    时间: 2008-7-21 19:32
啊果然一样,眼残= =不过后面一组没加
作者: 、「尕訞孑」    时间: 2008-7-21 19:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: dbshy    时间: 2008-7-21 19:35
可爱范例一头
http://rpg.blue/upload_program/files/Project11_97070539.rar

已经可以下载,其实就是上面的脚本家进去了而已
[LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 、「尕訞孑」    时间: 2008-7-21 19:38
提示: 作者被禁止或删除 内容自动屏蔽
作者: IamI    时间: 2008-7-21 19:39
LSS下载失败= =
另外,废话两句
转换简繁$t = ($t == false)
存档,退出,读档,哇——不过应该没什么大关系吧?!否则要动的东西就多了= =
作者: 、「尕訞孑」    时间: 2008-7-21 19:40
提示: 作者被禁止或删除 内容自动屏蔽
作者: 迅雷進    时间: 2008-7-21 20:33
以下引用dbshy于2008-7-21 11:35:26的发言:

可爱范例一头
http://rpg.blue/upload_program/files/Project11_97070539.rar

已经可以下载,其实就是上面的脚本家进去了而已

前辈,
简体换成繁体就没问题,
但如果把繁体换成简体该怎么办呢? {/gg} {/gg}
(我不是来找碴的,真的!)
作者: 迅雷進    时间: 2008-7-21 20:36
以下引用、「尕訞孑」于2008-7-21 11:33:18的发言:

有个想法...
在菜单中添加一选项...
转换简体跟繁体的...
不过听说比较麻烦..

这个正是我想要的做法。
作者: 、「尕訞孑」    时间: 2008-7-21 20:39
提示: 作者被禁止或删除 内容自动屏蔽
作者: 迅雷進    时间: 2008-7-21 20:42
问题已经解决了,
Anyway,
多谢前辈们的指教~ {/ll} {/ll}
作者: dbshy    时间: 2008-7-21 21:01
以下引用迅雷進于2008-7-21 12:36:46的发言:


以下引用、「尕訞孑」于2008-7-21 11:33:18的发言:

有个想法...
在菜单中添加一选项...
转换简体跟繁体的...
不过听说比较麻烦..


这个正是我想要的做法。


有时间帮你写

作者: 迅雷進    时间: 2008-7-21 21:12
以下引用dbshy于2008-7-21 13:01:51的发言:
有时间帮你写

不,
问题真的已经解决了,
多谢前辈的帮忙~ {/wx} {/wx}
作者: 、「尕訞孑」    时间: 2008-7-21 21:20
提示: 作者被禁止或删除 内容自动屏蔽




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