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

Project1

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

[已经解决] 【悬赏1V】谁能帮我做个战斗HP、MP条

[复制链接]

Lv4.逐梦者

梦石
0
星屑
5334
在线时间
453 小时
注册时间
2011-2-11
帖子
1108
跳转到指定楼层
1
发表于 2011-2-27 20:40:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 耶和华 于 2011-2-27 20:41 编辑

我用的是行走图横板战斗,如图:

要求:
1、首先把原来的蓝色框框和主角的名字,hp等先去掉(废话,PIA飞~~
2、看图,黑色的圈内为主角姓名,红色圈内为HP条,蓝色圈内为MP条,状态放在哪里呢?随便找个位置一塞就OK。
3、一定要美观一点,不要只随便移了移位置。当然,不要弄得太绚丽,只要略美观即可。
4、那个图只是随便一圈,用来代替文字表达下想法,具体位置自己定就可以。
5、若主角名字的显示需要用图片,还请附带个 范例.psd。
6、若不想美化一下 下面那640*160大小的地方,就用一片黑色就行,因为我的战斗背景是640*320的,不是全屏的。

ps:1V也许很可怜,不过没有再多的了。  若帖子沉了,那这1V就悲剧了。。
    明天(周一)到周五我上学,所以你有充足的时间。

另,若没有人给做,斑竹能不能再把1V重新给我。。 你是伟大的。。

点评

稍安勿躁,3个工作日内完成。  发表于 2011-2-27 20:46

Lv1.梦旅人

梦石
0
星屑
50
在线时间
129 小时
注册时间
2009-3-29
帖子
432
2
发表于 2011-3-4 12:19:41 | 只看该作者
回复:没有能力或者没有时间的请不要乱接任务.....
PS:要不是你(阿夏依岚)说你接,我早就做了!

点评

支持抢生意。  发表于 2011-3-4 13:48
做一个游戏也用这么长时间........
PS:说我自己呢
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
104
在线时间
93 小时
注册时间
2008-8-11
帖子
209
3
发表于 2011-3-5 00:14:06 | 只看该作者
  1. # ————————————————————————————————————
  2. # 本脚本来自www.66rpg.com,转载请保留此信息
  3. # ————————————————————————————————————

  4. # ▼▲▼ XRXS_BP 7. バトルステータス?クリアデザイン ver.1.03 ▼▲▼
  5. # by 桜雅 在土

  6. #==============================================================================
  7. # ■ Window_BattleStatus
  8. #==============================================================================
  9. class Window_BattleStatus < Window_Base
  10.   #--------------------------------------------------------------------------
  11.   # ● 公開インスタンス変数
  12.   #--------------------------------------------------------------------------
  13.   attr_accessor :update_cp_only # CPメーターのみの更新
  14.   #--------------------------------------------------------------------------
  15.   # ● オブジェクト初期化
  16.   #--------------------------------------------------------------------------
  17.   alias xrxs_bp7_initialize initialize
  18.   def initialize
  19.     # 初期化
  20.     @previous_hp = []
  21.     @previous_sp = []
  22.     # 呼び戻す
  23.     xrxs_bp7_initialize
  24.     # ↓Full-Viewの場合は下二行の # を消してください。
  25.     self.opacity = 160
  26.     self.back_opacity = 160  
  27.    
  28. =begin   
  29.    @hp = []
  30.    for j in 0...$game_party.actors.size
  31.      @hp[j] = $game_party.actors[j].hp
  32.    end
  33.    @refresh_flag = true
  34.    refresh
  35. =end   
  36.    
  37.    
  38.   end
  39. #★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  40.   def draw_battler_graphic(actor, x, y)
  41.     battler=RPG::Cache.battler(actor.battler_name, actor.battler_hue)
  42.     w = battler.width
  43.     h = battler.height
  44.     self.contents.blt(x-w/2, y-h, battler, Rect.new(0, 0, w,h),255)
  45.     self.z = 20
  46.   end
  47. #★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

  48.   #--------------------------------------------------------------------------
  49.   # ● リフレッシュ
  50.   #--------------------------------------------------------------------------
  51.   alias xrxs_bp7_refresh refresh
  52.   def refresh
  53.     # CPメーターの更新のみ の場合
  54.     if @update_cp_only
  55.       xrxs_bp7_refresh
  56.       return
  57.     end
  58.     # 変更するものがない場合、飛ばす
  59.     @item_max = $game_party.actors.size
  60.     bool = false
  61.     for i in 0...@item_max
  62.       actor = $game_party.actors[i]
  63.       if (@previous_hp[i] != actor.hp) or (@previous_sp[i] != actor.sp)
  64.         bool = true
  65.       end
  66.     end
  67.     return if bool == false
  68.     # 描写を開始
  69.     self.contents.clear
  70.     for i in 0...@item_max
  71.       actor = $game_party.actors[i]
  72.       actor_x = i * 160 + 21
  73.       # 歩行キャラグラフィックの描写
  74.       draw_battler_graphic(actor, actor_x + 43, 80)
  75.       # HP/SPメーターの描写
  76.       
  77.       
  78.       draw_actor_hp_meter_line(actor, actor_x - 17, 82, 120, 10)
  79.       
  80.       
  81.       draw_actor_sp_meter_line(actor, actor_x - 17, 98, 120, 10)
  82.       # HP数値の描写
  83.       self.contents.font.size = 18 # HP/SP数値の文字の大きさ
  84.       self.contents.font.color = Color.new(0,0,0,192)
  85.       self.contents.draw_text(actor_x, 72, 96, 24, actor.hp.to_s, 2)
  86.       self.contents.font.color = actor.hp == 0 ? knockout_color :
  87.       actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
  88.       self.contents.draw_text(actor_x-2, 70, 96, 24, actor.hp.to_s, 2)
  89.       # SP数値の描写
  90.       self.contents.font.color = Color.new(0,0,0,192)
  91.       self.contents.draw_text(actor_x, 88, 96, 24, actor.sp.to_s, 2)
  92.       self.contents.font.color = actor.sp == 0 ? knockout_color :
  93.       actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
  94.       self.contents.draw_text(actor_x-2, 86, 96, 24, actor.sp.to_s, 2)
  95.       # 用語「HP」と用語「SP」の描写
  96.       self.contents.font.size = 18 # 用語「HP/SP」の文字の大きさ
  97.       self.contents.font.color = Color.new(0,0,0,192)
  98.       self.contents.draw_text(actor_x - 7, 74, 196, 24, $data_system.words.hp)
  99.       self.contents.draw_text(actor_x - 7, 90, 196, 24, $data_system.words.sp)
  100.       self.contents.font.color = system_color # 用語「HP/SP」の文字の色
  101.       self.contents.draw_text(actor_x - 7, 72, 196, 24, $data_system.words.hp)
  102.       self.contents.draw_text(actor_x - 7, 88, 196, 24, $data_system.words.sp)
  103.       # ステートの描写
  104.       draw_actor_state(actor, actor_x-20, 103) #X- 55
  105.       # 描画角色姓名
  106.       #draw_actor_name(actor, actor_x-17, 103)
  107.       # 値を更新
  108.       @previous_hp[i] = actor.hp
  109.       @previous_sp[i] = actor.sp
  110.     end
  111.   end
  112. end
  113. #==============================================================================
  114. # ■ Window_Base
  115. #==============================================================================
  116. class Window_Base < Window
  117.   #--------------------------------------------------------------------------
  118.   # ● HPメーター の描画
  119.   #--------------------------------------------------------------------------
  120.   def draw_actor_hp_meter_line(actor, x, y, width = 156, height = 4)
  121.     w = width * actor.hp / actor.maxhp
  122.     hp_color_1 = Color.new(255, 0, 0, 192)
  123.     hp_color_2 = Color.new(255, 255, 0, 192)
  124.     self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
  125.     draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
  126.     x -= 1
  127.     y += (height/4).floor
  128.     self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
  129.     draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
  130.     x -= 1
  131.     y += (height/4).ceil
  132.     self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
  133.     draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
  134.     x -= 1
  135.     y += (height/4).ceil
  136.     self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
  137.     draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
  138.   end
  139.   #--------------------------------------------------------------------------
  140.   # ● SPメーター の描画
  141.   #--------------------------------------------------------------------------
  142.   def draw_actor_sp_meter_line(actor, x, y, width = 156, height = 4)
  143.     w = width * actor.sp / actor.maxsp
  144.     hp_color_1 = Color.new( 0, 0, 255, 192)
  145.     hp_color_2 = Color.new( 0, 255, 255, 192)
  146.     self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
  147.     draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
  148.     x -= 1
  149.     y += (height/4).floor
  150.     self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
  151.     draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
  152.     x -= 1
  153.     y += (height/4).ceil
  154.     self.contents.fill_rect(x+8, y+4, width, (height/4).ceil , Color.new(0, 0, 0, 128))
  155.     draw_line(x, y, x + w, y, hp_color_1, (height/4).ceil , hp_color_2)
  156.     x -= 1
  157.     y += (height/4).ceil
  158.     self.contents.fill_rect(x+8, y+4, width, (height/4).floor, Color.new(0, 0, 0, 128))
  159.     draw_line(x, y, x + w, y, hp_color_1, (height/4).floor, hp_color_2)
  160.   end
  161.   #--------------------------------------------------------------------------
  162.   # ● 名前の描画
  163.   #--------------------------------------------------------------------------
  164.   alias xrxs_bp7_draw_actor_name draw_actor_name
  165.   def draw_actor_name(actor, x, y)
  166.     xrxs_bp7_draw_actor_name(actor, x, y) #if @draw_ban != true
  167.   end
  168.   #--------------------------------------------------------------------------
  169.   # ● ステートの描画
  170.   #--------------------------------------------------------------------------
  171.   alias xrxs_bp7_draw_actor_state draw_actor_state
  172.   def draw_actor_state(actor, x, y, width = 120)
  173.     xrxs_bp7_draw_actor_state(actor, x, y, width) if @draw_ban != true
  174.   end
  175.   #--------------------------------------------------------------------------
  176.   # ● HP の描画
  177.   #--------------------------------------------------------------------------
  178.   alias xrxs_bp7_draw_actor_hp draw_actor_hp
  179.   def draw_actor_hp(actor, x, y, width = 144)
  180.     xrxs_bp7_draw_actor_hp(actor, x, y, width) if @draw_ban != true
  181.   end
  182.   #--------------------------------------------------------------------------
  183.   # ● SP の描画
  184.   #--------------------------------------------------------------------------
  185.   alias xrxs_bp7_draw_actor_sp draw_actor_sp
  186.   def draw_actor_sp(actor, x, y, width = 144)
  187.     xrxs_bp7_draw_actor_sp(actor, x, y, width) if @draw_ban != true
  188.   end
  189. end
  190. #==============================================================================
  191. # ■ Scene_Battle
  192. #==============================================================================
  193. class Scene_Battle
  194.   #--------------------------------------------------------------------------
  195.   # ● フレーム更新
  196.   #--------------------------------------------------------------------------
  197.   alias xrxs_bp7_update update
  198.   def update
  199.     xrxs_bp7_update
  200.     # メッセージウィンドウ表示中の場合
  201.     if $game_temp.message_window_showing
  202.       @status_window.update_cp_only = true      
  203.     else
  204.       @status_window.update_cp_only = false
  205.     end
  206.   end
  207. end
  208. #==============================================================================
  209. # ◇ 外部ライブラリ
  210. #==============================================================================
  211. class Window_Base
  212.   #--------------------------------------------------------------------------
  213.   # ● ライン描画 軽量版 by 桜雅 在土
  214.   #--------------------------------------------------------------------------
  215.   def draw_lineght(start_x, start_y, end_x, end_y, start_color)
  216.     # 描写距離の計算。大きめに直角時の長さ。
  217.     distance = (start_x - end_x).abs + (start_y - end_y).abs
  218.     # 描写開始
  219.     for i in 1..distance
  220.       x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
  221.       y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
  222.       self.contents.set_pixel(x, y, start_color)
  223.     end
  224.   end
  225.   #--------------------------------------------------------------------------
  226.   # ● ライン描画 by 桜雅 在土
  227.   #--------------------------------------------------------------------------
  228.   def draw_line(start_x, start_y, end_x, end_y, start_color, width = 1, end_color = start_color)
  229.     # 描写距離の計算。大きめに直角時の長さ。
  230.     distance = (start_x - end_x).abs + (start_y - end_y).abs
  231.     # 描写開始
  232.     if end_color == start_color
  233.       for i in 1..distance
  234.         x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
  235.         y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
  236.         if width == 1
  237.           self.contents.set_pixel(x, y, start_color)
  238.         else
  239.           self.contents.fill_rect(x, y, width, width, start_color)
  240.         end
  241.       end
  242.     else
  243.       for i in 1..distance
  244.         x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
  245.         y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
  246.         r = start_color.red * (distance-i)/distance + end_color.red * i/distance
  247.         g = start_color.green * (distance-i)/distance + end_color.green * i/distance
  248.         b = start_color.blue * (distance-i)/distance + end_color.blue * i/distance
  249.         a = start_color.alpha * (distance-i)/distance + end_color.alpha * i/distance
  250.         if width == 1
  251.           self.contents.set_pixel(x, y, Color.new(r, g, b, a))
  252.         else
  253.           self.contents.fill_rect(x, y, width, width, Color.new(r, g, b, a))
  254.         end
  255.       end
  256.     end
  257.   end
  258. end

复制代码
找到个现成的
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5334
在线时间
453 小时
注册时间
2011-2-11
帖子
1108
4
 楼主| 发表于 2011-3-5 09:21:37 | 只看该作者
本帖最后由 耶和华 于 2011-3-5 11:03 编辑

回复 451483807 的帖子

这不就是最普通的血条么。。
我要的效果就类似于像这样的。。只不过没有那个绿的CP条而已(换成经验槽也行)

点评

图片已给 。难道.png的图片看不见么?  发表于 2011-3-5 11:01
能给予图片?  发表于 2011-3-5 10:51
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6855
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

5
发表于 2011-3-5 13:01:30 | 只看该作者
随便做了个很普通的条.用到了 桜雅 在土 的 draw_line
这个 draw_line 的最主要的用途就是 描绘的区域可以渐变色.
真正是我写的其实只有 8 行.从36行到第43行是我添的.
然后就是把别的东西移了下坐标.就这样.
想要华丽什么的.就自行提供血条蓝条的图片素材.
  1. #==============================================================================
  2. # ■ Window_BattleStatus
  3. #==============================================================================

  4. class Window_BattleStatus < Window_Base
  5.   #--------------------------------------------------------------------------
  6.   # ● 初始化对像
  7.   #--------------------------------------------------------------------------
  8.   def initialize
  9.     super(0, 320, 640, 160)
  10.     self.contents = Bitmap.new(width - 32, height - 32)
  11.     @level_up_flags = [false, false, false, false]
  12.     refresh
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 释放
  16.   #--------------------------------------------------------------------------
  17.   def dispose
  18.     super
  19.   end
  20.   #--------------------------------------------------------------------------
  21.   # ● 设置升级标志
  22.   #     actor_index : 角色索引
  23.   #--------------------------------------------------------------------------
  24.   def level_up(actor_index)
  25.     @level_up_flags[actor_index] = true
  26.   end
  27.   #--------------------------------------------------------------------------
  28.   # ● 刷新
  29.   #--------------------------------------------------------------------------
  30.   def refresh
  31.     self.contents.clear
  32.     @item_max = $game_party.actors.size
  33.     for i in 0...$game_party.actors.size
  34.       actor = $game_party.actors[i]
  35.       hp_w = 112 * actor.hp / actor.maxhp
  36.       sp_w = 112 * actor.sp / actor.maxsp
  37.       hp_s_c = Color.new(255,   0,   0, 255)
  38.       hp_e_c = Color.new(255, 210*hp_w/112, 210*hp_w/112, 255)
  39.       sp_s_c = Color.new(  0,   0, 255, 255)
  40.       sp_e_c = Color.new(210*sp_w/112, 210*sp_w/112, 255, 255)
  41.       draw_line(128, i*32+18, 128+hp_w, i*32+18, hp_s_c, 8, hp_e_c)
  42.       draw_line(256, i*32+18, 256+sp_w, i*32+18, sp_s_c, 8, sp_e_c)
  43.       draw_actor_name(actor, 0, i*32)
  44.       draw_actor_hp(actor, 128+16, i*32, 96)
  45.       draw_actor_sp(actor, 256+16, i*32, 96)
  46.       if @level_up_flags[i]
  47.         self.contents.font.color = normal_color
  48.         self.contents.draw_text(384, i*32, 224, 32, "LEVEL UP!")
  49.       else
  50.         draw_actor_state(actor, 384, i*32, 224)
  51.       end
  52.     end
  53.   end
  54.   #--------------------------------------------------------------------------
  55.   # ● 刷新画面
  56.   #--------------------------------------------------------------------------
  57.   def update
  58.     super
  59.     # 主界面的不透明度下降
  60.     if $game_temp.battle_main_phase
  61.       self.contents_opacity -= 4 if self.contents_opacity > 191
  62.     else
  63.       self.contents_opacity += 4 if self.contents_opacity < 255
  64.     end
  65.   end
  66.   #--------------------------------------------------------------------------
  67.   # ● ライン描画 by 桜雅 在土
  68.   #--------------------------------------------------------------------------
  69.   def draw_line(start_x, start_y, end_x, end_y, start_color, width = 1, end_color = start_color)
  70.     # 描写距離の計算。大きめに直角時の長さ。
  71.     distance = (start_x - end_x).abs + (start_y - end_y).abs
  72.     # 描写開始
  73.     if end_color == start_color
  74.       for i in 1..distance
  75.         x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
  76.         y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
  77.         if width == 1
  78.           self.contents.set_pixel(x, y, start_color)
  79.         else
  80.           self.contents.fill_rect(x, y, width, width, start_color)
  81.         end
  82.       end
  83.     else
  84.       for i in 1..distance
  85.         x = (start_x + 1.0 * (end_x - start_x) * i / distance).to_i
  86.         y = (start_y + 1.0 * (end_y - start_y) * i / distance).to_i
  87.         r = start_color.red * (distance-i)/distance + end_color.red * i/distance
  88.         g = start_color.green * (distance-i)/distance + end_color.green * i/distance
  89.         b = start_color.blue * (distance-i)/distance + end_color.blue * i/distance
  90.         a = start_color.alpha * (distance-i)/distance + end_color.alpha * i/distance
  91.         if width == 1
  92.           self.contents.set_pixel(x, y, Color.new(r, g, b, a))
  93.         else
  94.           self.contents.fill_rect(x, y, width, width, Color.new(r, g, b, a))
  95.         end
  96.       end
  97.     end
  98.   end
  99. end
复制代码
站里的血条脚本数不胜数.随便找个华丽的拿来改下坐标就能用.
如果说改坐标都不会的话.那我也没什么好说的.自己去翻录像教程看.











你知道得太多了

回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
183
在线时间
201 小时
注册时间
2010-9-20
帖子
286
6
发表于 2011-3-6 14:00:35 | 只看该作者
我磨磨唧唧你催催促促终于填好了=。=
怎么说呢,还勉强看得过去吧,也就是几个现成的脚本改了一下而已。
其他的不想说了,看工程吧。
实在没搞懂您的意思,于是就按照自己的想法做了-。- Project15.rar (526.6 KB, 下载次数: 39)
似乎有很多人在找签名出处呢。。嗯嗯,没错,就是fux童鞋~
上榜(误)的斑竹们应该知道~
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 13:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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