このWIKIを編集するにはパスワード入力が必要です

認証パスワード
RSSフィード

数字部分を半角から全角に変更

703 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2009/08/16(日) 23:48:45 ID:0hVgG7qd
VXで質問です。戦闘時のメッセージを「スライムに100のダメージ~」から「スライムに100のダメージ~」という様に、
数字部分を半角から全角に変更したいのですが可能でしょうか?
可能であるならスクリプトをどの様に変更(追加)すれば良いのかをお教えください。よろしくお願いします。

706 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2009/08/17(月) 00:44:12 ID:ZSk/wOlH
>>703
どうやらRubyには半角を全角に変換する関数はないみたい
とりあえず半角数値を全角数値に変換する関数を作ったので参考にされたし
引数には数値の文字列を渡すように作ってる

def to_zenkaku(str)
after_letter = ["0","1","2","3","4","5","6","7","8","9"]

str2 = ""
for i in 0 ... str.length
str2 += after_letter[str[i,1].to_i]
end
return str2
end

708 名前:703[sage] 投稿日:2009/08/17(月) 01:19:53 ID:fHD0Ycsc
>>706
ご回答ありがとうございます!
ただ…書いていただいたスクリプトをどの様にして使えば良いのか解りません;;
何か複雑な処理を要するものなのでしょうか?お時間があれば再度お教えください。

709 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2009/08/17(月) 01:40:27 ID:ZSk/wOlH
>>708
りょーかい。
といっても、複雑な処理はあまり必要なくて
sprintf関数でメッセージを表示しているところで、数値が入るのが確定するときに使えばOK

例:HPダメージの表示(のなかから抜粋)

if target.actor?
 text = sprintf(Vocab::ActorDamage, target.name, target.hp_damage)
 Sound.play_actor_damage
 $game_troop.screen.start_shake(5, 5, 10)
else
 text = sprintf(Vocab::EnemyDamage, target.name, target.hp_damage)
 Sound.play_enemy_damage
 target.blink = true
end

上記のtext = の最後の引数(target.hp_damage)を
to_zenkaku(target.hp_damage.to_s)に変更すれば多分大丈夫だとは思う
XPで動作確認はしてるので、VXでもいけるはず


  • 最終更新:2009-09-04 00:07:26