Project1

标题: 请问如何自动设置输出格式 [打印本页]

作者: 思考_William    时间: 2011-8-18 00:28
提示: 作者被禁止或删除 内容自动屏蔽
作者: 忧雪の伤    时间: 2011-8-18 01:02
本帖最后由 忧雪の伤 于 2011-8-18 01:10 编辑


  1. module Kernel
  2.   def convert_integer(integer)
  3.     string = String integer
  4.     return string if string.size.eql? 2
  5.     return '0' + string if string.size.eql? 1
  6.     string[0, string.size - 2] = ''
  7.     return convert_integer string
  8.   end
  9. end

复制代码


不支持 Float
返回 string

作者: orzfly    时间: 2011-8-18 01:41
本帖最后由 orzfly 于 2011-8-18 02:12 编辑
  1. module Kernel;def convert_integer(integer,length=4);return sprintf('%0'+length.to_s_old+'d',integer.to_i)[-length,length];end;end;class Fixnum<Integer;@@def_to_s||=false;((alias to_s_old to_s);@@def_to_s=true)unless(method_defined?(:to_s_old)|@@def_to_s);def to_s(*args);args.size!=0?to_s_old(*args):convert_integer(self);end;end
复制代码
像大部分脚本一样插入在Main前后,整个游戏都是4位数。真蛋疼。这个是蛋疼用的,能替换掉全局。

2楼的一行精简版在这里。
  1. module Kernel;def convert_integer(integer,length=4);return sprintf('%0'+length.to_s_old+'d',integer.to_i)[-length,length];end;end
复制代码
这个的使用方法:在脚本中找到你要设置位数的那个变量的绘制(draw_text 后面的),比如角色的等级
我找到了Window_Base的
  1.   #--------------------------------------------------------------------------
  2.   # ● 水平的描画
  3.   #     actor : 角色
  4.   #     x     : 描画目标 X 坐标
  5.   #     y     : 描画目标 Y 坐标
  6.   #--------------------------------------------------------------------------
  7.   def draw_actor_level(actor, x, y)
  8.     self.contents.font.color = system_color
  9.     self.contents.draw_text(x, y, 32, WLH, Vocab::level_a)
  10.     self.contents.font.color = normal_color
  11.     self.contents.draw_text(x + 32, y, 24, WLH, actor.level, 2)
  12.   end
复制代码
里面有个actor.level,把它改成convert_integer(actor.level, 2)就变成两位了。
同理下面的
  1.   #--------------------------------------------------------------------------
  2.   # ● HP的描画
  3.   #     actor : 角色
  4.   #     x     : 描画目标 X 坐标
  5.   #     y     : 描画目标 Y 坐标
  6.   #     width : 宽
  7.   #--------------------------------------------------------------------------
  8.   def draw_actor_hp(actor, x, y, width = 120)
  9.     draw_actor_hp_gauge(actor, x, y, width)
  10.     self.contents.font.color = system_color
  11.     self.contents.draw_text(x, y, 30, WLH, Vocab::hp_a)
  12.     self.contents.font.color = hp_color(actor)
  13.     xr = x + width
  14.     if width < 120
  15.       self.contents.draw_text(xr - 40, y, 40, WLH, actor.hp, 2)
  16.     else
  17.       self.contents.draw_text(xr - 90, y, 40, WLH, actor.hp, 2)
  18.       self.contents.font.color = normal_color
  19.       self.contents.draw_text(xr - 50, y, 10, WLH, "/", 2)
  20.       self.contents.draw_text(xr - 40, y, 40, WLH, actor.maxhp, 2)
  21.     end
  22.   end
复制代码
把actor.hp改成convert_integer(actor.hp, 4),把actor.maxhp改成convert_integer(actor.maxhp, 4)。角色的HP就都变成4位显示了。

自己研究。




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