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

Project1

 找回密码
 注册会员
搜索

关于图片代替文字的战斗选项

查看数: 2025 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2010-12-14 20:45

正文摘要:

本帖最后由 5dare 于 2010-12-14 20:51 编辑 我最近在制作一款游戏,我想在战斗中把默认的那几个文字选项给换成图片替代的。例如 显示人物的头像和血条 然后 要是中毒之类的就在血条附近显示  中毒 ...

回复

5dare 发表于 2010-12-15 11:52:59
回复 精灵使者 的帖子

哦,谢谢提醒,我去下载个,不知道能不能下载来。呵呵
精灵使者 发表于 2010-12-15 08:12:37
如果我记得没错的话。宝典里面有图片战斗选项的东西
5dare 发表于 2010-12-14 21:10:06
回复 赤之新月 的帖子

恩。谢谢啦!
赤之新月 发表于 2010-12-14 21:05:58
回复 5dare 的帖子

1、本人英语盲ORZ……用金山快译神马的慢慢找XY坐标吧……
2、嗯,把那个脚本改一下或者换个脚本……搜索一下应该能搜到别的脚本的
5dare 发表于 2010-12-14 21:01:58
回复 赤之新月 的帖子

请问,第一个问题要是改图片出现的位置 要在哪里改啊?
第二个问题的  要是显示那个  我上传的那个图片框框 要怎么 设置?麻烦告诉下谢谢。  
赤之新月 发表于 2010-12-14 20:58:08
嗯,这个和你那个图片不太一样,不过差不多……需要自行配图
  1. #==============================================================================
  2. # Date 12-31-2005
  3. # 重定义类:Window_Base, Window_Help
  4. #==============================================================================
  5. # 脚本功能:
  6. # 实现战斗中和菜单中用图标显示状态,代替原来的文字显示。
  7. # 默认最多同时显示5个状态
  8. #------------------------------------------------------------------------------
  9. # 设置方法:
  10. # 一个状态对应的图标文件名为“状态的动画ID.png”
  11. # 例如某状态的动画ID为50,那么它的图标就是“Icons\50.png”
  12. # 如果找不到对应的文件,会报错 ◎_◎
  13. #==============================================================================

  14. # 注意,在ICON_STATE_IDS中写上需要带图标的状态ID
  15. # ICON_STATE_IDS是一个数组,数组的方法请参考帮助文件
  16. # 例如:
  17. # 只要1,5,8号状态带图标,就这样:ICON_STATE_IDS = [1,5,8]
  18. # 要20到50号状态带图标:ICON_STATE_IDS = 20..50

  19. ICON_STATE_IDS = 1..100

  20. #==============================================================================
  21. # ■ Window_Base
  22. #------------------------------------------------------------------------------
  23. #  游戏中全部窗口的超级类。
  24. #==============================================================================

  25. class Window_Base < Window
  26. #--------------------------------------------------------------------------
  27. # ● 描绘状态
  28. #     actor : 角色
  29. #     x     : 描画目标 X 坐标
  30. #     y     : 描画目标 Y 坐标
  31. #     width : 描画目标的宽
  32. #--------------------------------------------------------------------------
  33. def draw_actor_state(actor, x, y, width = 120)
  34.   state_size = 0
  35.   for state in actor.states
  36.     # 图标数量超出宽度就中断循环
  37.     if state_size >= width / 24
  38.       break
  39.     end
  40.     # 此状态不带图标就跳过
  41.     if !ICON_STATE_IDS.include?(state)
  42.       next
  43.     end
  44.     bitmap = RPG::Cache.icon($data_states[state].name + "_sta.png")
  45.     if actor.states_turn[state] >= $data_states[state].hold_turn/2
  46.       opacity = 255
  47.     else
  48.       opacity = 100
  49.     end
  50.     # 这里的图标大小默认是24x24,要改就改下面那个Rect.new(0, 0, 24, 24)
  51.     self.contents.blt(x + 16 * state_size, y + 8, bitmap, Rect.new(0, 0, 20, 20), opacity)
  52.     state_size += 1
  53.   end
  54. end
  55. end


  56. #==============================================================================
  57. # ■ Window_Help
  58. #------------------------------------------------------------------------------
  59. #  特技及物品的说明、角色的状态显示的窗口。
  60. #==============================================================================

  61. class Window_Help < Window_Base
  62. #--------------------------------------------------------------------------
  63. # ● 设置敌人
  64. #     enemy : 要显示名字和状态的敌人
  65. #--------------------------------------------------------------------------
  66. def set_enemy(enemy)
  67.   # 描绘状态图标
  68.   state_size = 0
  69.   for state in enemy.states
  70.     # 图标数量超出宽度就中断循环
  71.     if state_size >= width / 16
  72.       break
  73.     end
  74.     # 此状态不带图标就跳过
  75.     if !ICON_STATE_IDS.include?(state)
  76.       next
  77.     end
  78.     bitmap = RPG::Cache.icon($data_states[state].name + "_sta.png")
  79.     if enemy.states_turn[state] >= $data_states[state].hold_turn/2
  80.       opacity = 255
  81.     else
  82.       opacity = 100
  83.     end
  84.     self.contents.blt(70 + 16 * state_size, 0, bitmap, Rect.new(0, 0, 24, 24), opacity)
  85.     state_size += 1
  86.   end
  87.   # 描绘敌人名字
  88.   set_text(enemy.name, 1)
  89. end
  90. end

  91. class Game_Battler
  92. attr_reader :states_turn       # 声明状态剩余回合
  93. end
复制代码
  1. #==============================================================================
  2. # ■ Window_BattleStatus
  3. #------------------------------------------------------------------------------
  4. #  显示战斗画面同伴状态的窗口。
  5. #==============================================================================

  6. class Window_BattleStatus < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     super(0, 320, 640, 160)
  12.     self.contents = Bitmap.new(width - 32, height - 32)
  13.     @level_up_flags = [false, false, false, false]
  14.     #........................................................................
  15.     self.opacity = 0
  16.     @sta_back = []
  17.     @sta_output = []
  18.     @cp_output = []
  19.     @hp_bitmap = RPG::Cache.picture("../system/battle/hmcp/hp_bar.png")
  20.     @mp_bitmap = RPG::Cache.picture("../system/battle/hmcp/mp_bar.png")
  21.     @cp_bitmap = RPG::Cache.picture("../system/battle/hmcp/cp_bar.png")
  22.     @cp_output = []
  23.     @cp_back_bar = Sprite.new
  24.     @cp_back_bar.bitmap = Bitmap.new("Graphics/system/battle/hmcp/cp_back_bar")
  25.     @cp_back_bar.x = 450
  26.     @cp_back_bar.y = 25
  27.     @cp_back_bar.z = self.z + 1
  28.     @actor_cp_sprite = []
  29.     @actor_cp_sprite_back = []
  30.     for actor in $game_party.actors
  31.       @actor_cp_sprite[actor.index] = Sprite.new
  32.       @actor_cp_sprite[actor.index].bitmap = Bitmap.new("Graphics/system/battle/hmcp/sprite/" + actor.name)
  33.       @actor_cp_sprite[actor.index].x = 450
  34.       @actor_cp_sprite[actor.index].y = 25 - 20
  35.       @actor_cp_sprite[actor.index].z = 102
  36.       @actor_cp_sprite_back[actor.index] = Sprite.new
  37.       @actor_cp_sprite_back[actor.index].bitmap = Bitmap.new("Graphics/system/battle/hmcp/cp_sprite")
  38.       @actor_cp_sprite_back[actor.index].x = 450
  39.       @actor_cp_sprite_back[actor.index].y = 25
  40.       @actor_cp_sprite_back[actor.index].z = 102
  41.     end
  42.     for actor_index in 1..$game_party.actors.size
  43.       @cp_output[actor_index] = Sprite.new
  44.       @cp_output[actor_index].bitmap = Bitmap.new(133, 78)
  45.       @cp_output[actor_index].x = 100 + (actor_index - 1) * 133
  46.       @cp_output[actor_index].y = 480 - 78 - 10
  47.       @cp_output[actor_index].z = self.z + 2
  48.       @cp_output[actor_index].bitmap.clear
  49.       @sta_back[actor_index] = Sprite.new
  50.       @sta_back[actor_index].bitmap = Bitmap.new("Graphics/System/Battle/sta_back/" + $game_party.actors[actor_index - 1].name + "_sta.png")
  51.       @sta_back[actor_index].x = 100 + (actor_index - 1) * 133
  52.       @sta_back[actor_index].y = 480 - 78 - 10
  53.       @sta_back[actor_index].z = self.z + 1
  54.       @sta_output[actor_index] = Sprite.new
  55.       @sta_output[actor_index].bitmap = Bitmap.new(133, 78)
  56.       @sta_output[actor_index].x = 100 + (actor_index - 1) * 133
  57.       @sta_output[actor_index].y = 480 - 78 - 10
  58.       @sta_output[actor_index].z = self.z + 2
  59.       @sta_output[actor_index].bitmap.clear
  60.       @sta_output[actor_index].bitmap.font.size = 10
  61.       @sta_output[actor_index].bitmap.font.name = "黑体"
  62.       hp_width = $game_party.actors[actor_index - 1].hp * @hp_bitmap.width/$game_party.actors[actor_index - 1].maxhp
  63.       hp_rect = Rect.new(0, 0, hp_width, 3)
  64.       mp_width = $game_party.actors[actor_index - 1].sp * @mp_bitmap.width/$game_party.actors[actor_index - 1].maxsp
  65.       mp_rect = Rect.new(0, 0, mp_width, 3)
  66.       @sta_output[actor_index].bitmap.blt(66, 44, @hp_bitmap, hp_rect)
  67.       @sta_output[actor_index].bitmap.blt(66, 64, @mp_bitmap, mp_rect)
  68.       @sta_output[actor_index].bitmap.font.color.set(255, 0, 0)
  69.       @sta_output[actor_index].bitmap.draw_text(80, 31, 77, 11,$game_party.actors[actor_index - 1].hp.to_s + "/" + $game_party.actors[actor_index - 1].maxhp.to_s)
  70.       @sta_output[actor_index].bitmap.font.color.set(0, 0, 255)
  71.       @sta_output[actor_index].bitmap.draw_text(80, 51, 77, 11,$game_party.actors[actor_index - 1].sp.to_s + "/" + $game_party.actors[actor_index - 1].maxsp.to_s)
  72.     end
  73.     #........................................................................
  74.     refresh
  75.   end
  76.   #--------------------------------------------------------------------------
  77.   # ● 释放
  78.   #--------------------------------------------------------------------------
  79.   def dispose
  80.     super
  81.     @hp_bitmap.bitmap.dispose
  82.     @hp_bitmap.dispose
  83.     @mp_bitmap.bitmap.dispose
  84.     @mp_bitmap.dispose
  85.     @cp_bitmap.bitmap.dispose
  86.     @cp_bitmap.dispose
  87.     for actor_index in 1..$game_party.actors.size
  88.       @sta_back[actor_index].bitmap.dispose
  89.       @sta_back[actor_index].dispose
  90.       @sta_output[actor_index].bitmap.dispose
  91.       @sta_output[actor_index].dispose
  92.       @cp_output[actor_index].bitmap.dispose
  93.       @cp_output[actor_index].dispose
  94.     end
  95.   end
  96.   #--------------------------------------------------------------------------
  97.   # ● 设置升级标志
  98.   #     actor_index : 角色索引
  99.   #--------------------------------------------------------------------------
  100.   def level_up(actor_index)
  101.     @level_up_flags[actor_index] = true
  102.   end
  103.   #......................................................................
  104.   #--------------------------------------------------------------------------
  105.   # ● 设置正在攻击标志
  106.   #     actor_index : 角色索引
  107.   #--------------------------------------------------------------------------
  108.   def in_atk(actor_index)
  109.     @sta_back[actor_index + 1].bitmap = Bitmap.new("Graphics/System/Battle/sta_back/" + $game_party.actors[actor_index].name + "_sta_atk.png")
  110.   end
  111.   #--------------------------------------------------------------------------
  112.   # ● 设置不在攻击标志
  113.   #     actor_index : 角色索引
  114.   #--------------------------------------------------------------------------
  115.   def out_atk(actor_index)
  116.     @sta_back[actor_index + 1].bitmap = Bitmap.new("Graphics/System/Battle/sta_back/" + $game_party.actors[actor_index].name + "_sta.png")
  117.   end
  118.   #......................................................................
  119.   #--------------------------------------------------------------------------
  120.   # ● 刷新
  121.   #--------------------------------------------------------------------------
  122.   def refresh
  123.     self.contents.clear
  124.     @item_max = $game_party.actors.size
  125.     for i in 0...$game_party.actors.size
  126.       actor = $game_party.actors[i]
  127.       #......................................................................
  128.       actor_x = i * 133 + 100
  129.       @sta_output[i + 1].bitmap.clear
  130.       hp_width = $game_party.actors[i].hp * @hp_bitmap.width/$game_party.actors[i].maxhp
  131.       hp_rect = Rect.new(0, 0, hp_width, 3)
  132.       mp_width = $game_party.actors[i].sp * @mp_bitmap.width/$game_party.actors[i].maxsp
  133.       mp_rect = Rect.new(0, 0, mp_width, 3)
  134.       @sta_output[i + 1].bitmap.blt(66, 44, @hp_bitmap, hp_rect)
  135.       @sta_output[i + 1].bitmap.blt(66, 64, @mp_bitmap, mp_rect)
  136.       @sta_output[i + 1].bitmap.font.color.set(255, 0, 0)
  137.       @sta_output[i + 1].bitmap.draw_text(80, 31, 77, 11,$game_party.actors[i].hp.to_s + "/" + $game_party.actors[i].maxhp.to_s)
  138.       @sta_output[i + 1].bitmap.font.color.set(0, 0, 255)
  139.       @sta_output[i + 1].bitmap.draw_text(80, 51, 77, 11,$game_party.actors[i].sp.to_s + "/" + $game_party.actors[i].maxsp.to_s)
  140.       #......................................................................
  141.       if @level_up_flags[i]
  142.         self.contents.font.color = normal_color
  143.         self.contents.draw_text(actor_x, 96, 120, 32, "LEVEL UP!")
  144.       else
  145.         draw_actor_state(actor, actor_x, 96)
  146.       end
  147.     end
  148.   end
  149.   #--------------------------------------------------------------------------
  150.   # ● 刷新画面
  151.   #--------------------------------------------------------------------------
  152.   def update
  153.     super
  154.     # 主界面的不透明度下降
  155.     if $game_temp.battle_main_phase
  156.       self.contents_opacity -= 4 if self.contents_opacity > 191
  157.     else
  158.       self.contents_opacity += 4 if self.contents_opacity < 255
  159.     end
  160.   end
  161. end
复制代码
  1. #------------------------------------------------------------------------------
  2. #  特技及物品的说明、角色的状态显示的窗口。
  3. #==============================================================================

  4. class Window_Help < Window_Base
  5. #--------------------------------------------------------------------------
  6. # ● 设置敌人
  7. #     enemy : 要显示名字和状态的敌人
  8. #--------------------------------------------------------------------------
  9. def set_enemy(enemy)
  10.   # 描绘状态图标
  11.   state_size = 0
  12.   for state in enemy.states
  13.     # 图标数量超出宽度就中断循环
  14.     if state_size >= width / 16
  15.       break
  16.     end
  17.     # 此状态不带图标就跳过
  18.     if !ICON_STATE_IDS.include?(state)
  19.       next
  20.     end
  21.     bitmap = RPG::Cache.icon($data_states[state].name + "_sta.png")
  22.     if enemy.states_turn[state] >= $data_states[state].hold_turn/2
  23.       opacity = 255
  24.     else
  25.       opacity = 100
  26.     end
  27.     self.contents.blt(70 + 16 * state_size, 0, bitmap, Rect.new(0, 0, 24, 24), opacity)
  28.     state_size += 1
  29.   end
  30.   # 描绘敌人名字
  31.   set_text(enemy.name, 1)
  32. end
  33. end

  34. class Game_Battler
  35. attr_reader :states_turn       # 声明状态剩余回合
  36. end
复制代码
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-5 22:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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