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

Project1

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

[已经解决] 状态描绘显示区域问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
53 小时
注册时间
2012-11-7
帖子
44
跳转到指定楼层
1
发表于 2013-1-9 15:14:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 xb370777978 于 2013-1-9 15:27 编辑





显示问题,状态显示区域有问题。。。怎么解决
RUBY 代码复制
  1. #==============================================================================
  2. # 多重状态     Ver. 1.1                 by Claimh
  3. #------------------------------------------------------------------------------
  4. # [url]http://www.k3.dion.ne.jp/~claimh/[/url]
  5. #==============================================================================
  6.  
  7. class Window_Base < Window
  8.   #--------------------------------------------------------------------------
  9.   #  生成状态文字
  10.   #--------------------------------------------------------------------------
  11.   def make_battler_state_text_over3(battler, width, need_normal)
  12.     brackets_width = self.contents.text_size("[]").width
  13.     text = ""
  14.     text0 = ""
  15.     ret_text = ["",""]
  16.     for i in battler.states
  17.       if $data_states[i].rating >= 1
  18.         if text == ""
  19.           text = $data_states[i].name
  20.         else
  21.           new_text = text + "/" + $data_states[i].name
  22.           text_width = self.contents.text_size(new_text).width
  23.           if text_width > width - brackets_width
  24.             text0 = new_text
  25.             text = ""
  26.             new_text = ""
  27.             text_width = 0
  28.           else
  29.             text = new_text
  30.           end
  31.         end
  32.       end
  33.     end
  34.     if text == "" and text0 == ""
  35.       ret_text = ["[正常]", ""]
  36.     elsif text0 == ""
  37.       ret_text[0] = "[" + text + "]"
  38.       ret_text[1] = ""
  39.     else
  40.       ret_text[0] = "[" + text0 + "]"
  41.       if text != ""
  42.         ret_text[1] = "[" + text + "]"
  43.       else
  44.         ret_text[1] = ""
  45.       end
  46.     end
  47.     return ret_text
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # 描绘角色状态
  51.   #--------------------------------------------------------------------------
  52.   def draw_actor_state(actor, x, y, width = 60)
  53.     text = make_battler_state_text_over3(actor, width, true)
  54.     self.contents.font.color = actor.hp == 0 ? knockout_color : normal_color
  55.     if text[1] == ""
  56.       self.contents.draw_text(x-5, y, width+5, 68, text[0])
  57.     else
  58.       self.contents.font.size = 20
  59.       self.contents.draw_text(x-5, y - 15 , width+5, 68, text[0])
  60.       self.contents.draw_text(x-5, y + 8, width+5, 68, text[1])
  61.     end
  62.   end
  63. end
  64.  
  65. #==============================================================================
  66. # 本脚本来自[url]www.66RPG.com[/url],使用和转载请保留此信息
  67. #==============================================================================
RUBY 代码复制
  1. # ————————————————————————————————————
  2. # 本脚本来自[url]www.66rpg.com[/url],转载请保留此信息
  3. # ————————————————————————————————————
  4.  
  5. # HP/SP/EXPゲージ表示スクリプト Ver 1.00
  6. # 配布元・サポートURL
  7. # [url]http://members.jcom.home.ne.jp/cogwheel/[/url]
  8.  
  9. #==============================================================================
  10. # ■ Game_Actor
  11. #------------------------------------------------------------------------------
  12. #  アクターを扱うクラスです。このクラスは Game_Actors クラス ($game_actors)
  13. # の内部で使用され、Game_Party クラス ($game_party) からも参照されます。
  14. #==============================================================================
  15.  
  16. class Game_Actor < Game_Battler
  17.   def now_exp
  18.     return [url=home.php?mod=space&uid=13302]@exp[/url] - @exp_list[@level]
  19.   end
  20.   def next_exp
  21.     return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
  22.   end
  23. end
  24.  
  25. #==============================================================================
  26. # ■ Window_Base
  27. #------------------------------------------------------------------------------
  28. #  ゲーム中のすべてのウィンドウのスーパークラスです。
  29. #==============================================================================
  30.  
  31. class Window_Base < Window
  32.   #--------------------------------------------------------------------------
  33.   # ● HP ゲージの描画
  34.   #--------------------------------------------------------------------------
  35.   # オリジナルのHP描画を draw_actor_hp_original と名前変更
  36.   alias :draw_actor_hp_original :draw_actor_hp
  37.   def draw_actor_hp(actor, x, y, width = 144)
  38.     # 変数rateに 現在のHP/MHPを代入
  39.     if actor.maxhp != 0
  40.       rate = actor.hp.to_f / actor.maxhp
  41.     else
  42.       rate = 0
  43.     end
  44.     # plus_x:X座標の位置補正 rate_x:X座標の位置補正(%) plus_y:Y座標の位置補正
  45.     # plus_width:幅の補正 rate_width:幅の補正(%) height:縦幅
  46.     # align1:描画タイプ1 0:左詰め 1:中央揃え 2:右詰め
  47.     # align2:描画タイプ2 0:上詰め 1:中央揃え 2:下詰め
  48.     # align3:ゲージタイプ 0:左詰め 1:右詰め
  49.     plus_x = 0
  50.     rate_x = 0
  51.     plus_y = 20
  52.     plus_width = 0
  53.     rate_width = 100
  54.     height = 20
  55.     align1 = 1
  56.     align2 = 2
  57.     align3 = 0
  58.     # グラデーション設定 grade1:空ゲージ grade2:実ゲージ
  59.     # (0:横にグラデーション 1:縦にグラデーション 2:斜めにグラデーション(激重))
  60.     grade1 = 1
  61.     grade2 = 0
  62.     # 色設定。color1:外枠,color2:中枠
  63.     # color3:空ゲージダークカラー,color4:空ゲージライトカラー
  64.     # color5:実ゲージダークカラー,color6:実ゲージライトカラー
  65.     color1 = Color.new(0, 0, 0, 192)
  66.     color2 = Color.new(255, 255, 192, 192)
  67.     color3 = Color.new(0, 0, 0, 192)
  68.     color4 = Color.new(64, 0, 0, 192)
  69.     color5 = Color.new(80 - 24 * rate, 80 * rate, 14 * rate, 192)
  70.     color6 = Color.new(240 - 72 * rate, 240 * rate, 62 * rate, 192)
  71.     # 変数spに描画するゲージの幅を代入
  72.     if actor.maxhp != 0
  73.       hp = (width + plus_width) * actor.hp * rate_width / 100 / actor.maxhp
  74.     else
  75.       hp = 0
  76.     end
  77.     # ゲージの描画
  78.     gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
  79.                 width, plus_width + width * rate_width / 100,
  80.                 height, hp, align1, align2, align3,
  81.                 color1, color2, color3, color4, color5, color6, grade1, grade2)
  82.     # オリジナルのHP描画処理を呼び出し
  83.     draw_actor_hp_original(actor, x, y, width)
  84.   end
  85.   #--------------------------------------------------------------------------
  86.   # ● SP ゲージの描画
  87.   #--------------------------------------------------------------------------
  88.   # オリジナルのSP描画を draw_actor_sp_original と名前変更
  89.   alias :draw_actor_sp_original :draw_actor_sp
  90.   def draw_actor_sp(actor, x, y, width = 144)
  91.     # 変数rateに 現在のSP/MSPを代入
  92.     if actor.maxsp != 0
  93.       rate = actor.sp.to_f / actor.maxsp
  94.     else
  95.       rate = 1
  96.     end
  97.     # plus_x:X座標の位置補正 rate_x:X座標の位置補正(%) plus_y:Y座標の位置補正
  98.     # plus_width:幅の補正 rate_width:幅の補正(%) height:縦幅
  99.     # align1:描画タイプ1 0:左詰め 1:中央揃え 2:右詰め
  100.     # align2:描画タイプ2 0:上詰め 1:中央揃え 2:下詰め
  101.     # align3:ゲージタイプ 0:左詰め 1:右詰め
  102.     plus_x = 0
  103.     rate_x = 0
  104.     plus_y = 30
  105.     plus_width = 0
  106.     rate_width = 100
  107.     height = 20
  108.     align1 = 1
  109.     align2 = 2
  110.     align3 = 0
  111.     # グラデーション設定 grade1:空ゲージ grade2:実ゲージ
  112.     # (0:横にグラデーション 1:縦にグラデーション 2:斜めにグラデーション(激重))
  113.     grade1 = 1
  114.     grade2 = 0
  115.     # 色設定。color1:外枠,color2:中枠
  116.     # color3:空ゲージダークカラー,color4:空ゲージライトカラー
  117.     # color5:実ゲージダークカラー,color6:実ゲージライトカラー
  118.     color1 = Color.new(0, 0, 0, 192)
  119.     color2 = Color.new(255, 255, 192, 192)
  120.     color3 = Color.new(0, 0, 0, 192)
  121.     color4 = Color.new(0, 64, 0, 192)
  122.     color5 = Color.new(14 * rate, 80 - 24 * rate, 80 * rate, 192)
  123.     color6 = Color.new(62 * rate, 240 - 72 * rate, 240 * rate, 192)
  124.     # 変数spに描画するゲージの幅を代入
  125.     if actor.maxsp != 0
  126.       sp = (width + plus_width) * actor.sp * rate_width / 100 / actor.maxsp
  127.     else
  128.       sp = (width + plus_width) * rate_width / 100
  129.     end
  130.     # ゲージの描画
  131.     gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
  132.                 width, plus_width + width * rate_width / 100,
  133.                 height, sp, align1, align2, align3,
  134.                 color1, color2, color3, color4, color5, color6, grade1, grade2)
  135.     # オリジナルのSP描画処理を呼び出し
  136.     draw_actor_sp_original(actor, x, y, width)
  137.   end
  138.   #--------------------------------------------------------------------------
  139.   # ● EXP ゲージの描画
  140.   #--------------------------------------------------------------------------
  141.   # オリジナルのEXP描画を draw_actor_sp_original と名前変更
  142.   alias :draw_actor_exp_original :draw_actor_exp
  143.   def draw_actor_exp(actor, x, y, width = 204)
  144.     # 変数rateに 現在のexp/nextexpを代入
  145.     if actor.next_exp != 0
  146.       rate = actor.now_exp.to_f / actor.next_exp
  147.     else
  148.       rate = 1
  149.     end
  150.     # plus_x:X座標の位置補正 rate_x:X座標の位置補正(%) plus_y:Y座標の位置補正
  151.     # plus_width:幅の補正 rate_width:幅の補正(%) height:縦幅
  152.     # align1:描画タイプ1 0:左詰め 1:中央揃え 2:右詰め
  153.     # align2:描画タイプ2 0:上詰め 1:中央揃え 2:下詰め
  154.     # align3:ゲージタイプ 0:左詰め 1:右詰め
  155.     plus_x = 0
  156.     rate_x = 0
  157.     plus_y = 25
  158.     plus_width = 0
  159.     rate_width = 100
  160.     height = 10
  161.     align1 = 1
  162.     align2 = 2
  163.     align3 = 0
  164.     # グラデーション設定 grade1:空ゲージ grade2:実ゲージ
  165.     # (0:横にグラデーション 1:縦にグラデーション 2:斜めにグラデーション(激重))
  166.     grade1 = 1
  167.     grade2 = 0
  168.     # 色設定。color1:外枠,color2:中枠
  169.     # color3:空ゲージダークカラー,color4:空ゲージライトカラー
  170.     # color5:実ゲージダークカラー,color6:実ゲージライトカラー
  171.     color1 = Color.new(0, 0, 0, 192)
  172.     color2 = Color.new(255, 255, 192, 192)
  173.     color3 = Color.new(0, 0, 0, 192)
  174.     color4 = Color.new(64, 0, 0, 192)
  175.     color5 = Color.new(80 * rate, 80 - 80 * rate ** 2, 80 - 80 * rate, 192)
  176.     color6 = Color.new(240 * rate, 240 - 240 * rate ** 2, 240 - 240 * rate, 192)
  177.     # 変数expに描画するゲージの幅を代入
  178.     if actor.next_exp != 0
  179.       exp = (width + plus_width) * actor.now_exp * rate_width /
  180.                                                           100 / actor.next_exp
  181.     else
  182.       exp = (width + plus_width) * rate_width / 100
  183.     end
  184.     # ゲージの描画
  185.     gauge_rect(x + plus_x + width * rate_x / 100, y + plus_y,
  186.                 width, plus_width + width * rate_width / 100,
  187.                 height, exp, align1, align2, align3,
  188.                 color1, color2, color3, color4, color5, color6, grade1, grade2)
  189.     # オリジナルのEXP描画処理を呼び出し
  190.     draw_actor_exp_original(actor, x, y)
  191.   end
  192.   #--------------------------------------------------------------------------
  193.   # ● ゲージの描画
  194.   #--------------------------------------------------------------------------
  195.   def gauge_rect(x, y, rect_width, width, height, gauge, align1, align2, align3,
  196.                 color1, color2, color3, color4, color5, color6, grade1, grade2)
  197.     case align1
  198.     when 1
  199.       x += (rect_width - width) / 2
  200.     when 2
  201.       x += rect_width - width
  202.     end
  203.     case align2
  204.     when 1
  205.       y -= height / 2
  206.     when 2
  207.       y -= height
  208.     end
  209.     # 枠描画
  210.     self.contents.fill_rect(x, y, width, height, color1)
  211.     self.contents.fill_rect(x + 1, y + 1, width - 2, height - 2, color2)
  212.     if align3 == 0
  213.       if grade1 == 2
  214.         grade1 = 3
  215.       end
  216.       if grade2 == 2
  217.         grade2 = 3
  218.       end
  219.     end
  220.     if (align3 == 1 and grade1 == 0) or grade1 > 0
  221.       color = color3
  222.       color3 = color4
  223.       color4 = color
  224.     end
  225.     if (align3 == 1 and grade2 == 0) or grade2 > 0
  226.       color = color5
  227.       color5 = color6
  228.       color6 = color
  229.     end
  230.     # 空ゲージの描画
  231.     self.contents.gradation_rect(x + 2, y + 2, width - 4, height - 4,
  232.                                   color3, color4, grade1)
  233.     if align3 == 1
  234.       x += width - gauge
  235.     end
  236.     # 実ゲージの描画
  237.     self.contents.gradation_rect(x + 2, y + 2, gauge - 4, height - 4,
  238.                                   color5, color6, grade2)
  239.   end
  240. end
  241.  
  242. #------------------------------------------------------------------------------
  243. #  Bitmapクラスに新たな機能を追加します。
  244. #==============================================================================
  245.  
  246. class Bitmap
  247.   #--------------------------------------------------------------------------
  248.   # ● 矩形をグラデーション表示
  249.   #     color1 : スタートカラー
  250.   #     color2 : エンドカラー
  251.   #     align  :  0:横にグラデーション
  252.   #               1:縦にグラデーション
  253.   #               2:斜めにグラデーション(激重につき注意)
  254.   #--------------------------------------------------------------------------
  255.   def gradation_rect(x, y, width, height, color1, color2, align = 0)
  256.     if align == 0
  257.       for i in x...x + width
  258.         red   = color1.red + (color2.red - color1.red) * (i - x) / (width - 1)
  259.         green = color1.green +
  260.                 (color2.green - color1.green) * (i - x) / (width - 1)
  261.         blue  = color1.blue +
  262.                 (color2.blue - color1.blue) * (i - x) / (width - 1)
  263.         alpha = color1.alpha +
  264.                 (color2.alpha - color1.alpha) * (i - x) / (width - 1)
  265.         color = Color.new(red, green, blue, alpha)
  266.         fill_rect(i, y, 1, height, color)
  267.       end
  268.     elsif align == 1
  269.       for i in y...y + height
  270.         red   = color1.red +
  271.                 (color2.red - color1.red) * (i - y) / (height - 1)
  272.         green = color1.green +
  273.                 (color2.green - color1.green) * (i - y) / (height - 1)
  274.         blue  = color1.blue +
  275.                 (color2.blue - color1.blue) * (i - y) / (height - 1)
  276.         alpha = color1.alpha +
  277.                 (color2.alpha - color1.alpha) * (i - y) / (height - 1)
  278.         color = Color.new(red, green, blue, alpha)
  279.         fill_rect(x, i, width, 1, color)
  280.       end
  281.     elsif align == 2
  282.       for i in x...x + width
  283.         for j in y...y + height
  284.           red   = color1.red + (color2.red - color1.red) *
  285.                   ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  286.           green = color1.green + (color2.green - color1.green) *
  287.                   ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  288.           blue  = color1.blue + (color2.blue - color1.blue) *
  289.                   ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  290.           alpha = color1.alpha + (color2.alpha - color1.alpha) *
  291.                   ((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  292.           color = Color.new(red, green, blue, alpha)
  293.           set_pixel(i, j, color)
  294.         end
  295.       end
  296.     elsif align == 3
  297.       for i in x...x + width
  298.         for j in y...y + height
  299.           red   = color1.red + (color2.red - color1.red) *
  300.                 ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  301.           green = color1.green + (color2.green - color1.green) *
  302.                 ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  303.           blue  = color1.blue + (color2.blue - color1.blue) *
  304.                 ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  305.           alpha = color1.alpha + (color2.alpha - color1.alpha) *
  306.                 ((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
  307.           color = Color.new(red, green, blue, alpha)
  308.           set_pixel(i, j, color)
  309.         end
  310.       end
  311.     end
  312.   end
  313. end

Lv5.捕梦者

梦石
0
星屑
33671
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

2
发表于 2013-1-11 14:30:18 | 只看该作者
同学,调坐标不是在Window_Base里面。
比如你第一张图,应该在Window_MenuStatus 第32行:draw_actor_state(actor, x + 90, y + 32),调X,Y
         第二张图在Window_BattleStatus第46行:draw_actor_state(actor, actor_x, 96),调X,Y
如果无效的话,请在外挂脚本里找相应的窗口调。

评分

参与人数 1梦石 +1 收起 理由
hcm + 1 认可答案

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
53 小时
注册时间
2012-11-7
帖子
44
3
 楼主| 发表于 2013-1-13 15:27:28 | 只看该作者
芯☆淡茹水 发表于 2013-1-11 14:30
同学,调坐标不是在Window_Base里面。
比如你第一张图,应该在Window_MenuStatus 第32行:draw_actor_state ...

哦哦哦- -原来是这里。。。谢谢帮忙- -找了好久木有找到呢- -
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-8 02:13

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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