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

Project1

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

[已经解决] 如何让敌人和自己的hp和mp的名称不一样?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
14 小时
注册时间
2013-7-22
帖子
38
跳转到指定楼层
1
发表于 2013-7-27 13:00:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 563548341 于 2013-7-29 12:25 编辑

如何让敌人和自己的hp和mp的名称不一样?
我用的是这个脚本:#==============================================================================
# 功能:战斗中显示敌人血和蓝于敌人脚下
# 适用:RMVX Ace
# 作者:殇殃 2012.3.10
# 使用方法:复制整个脚本插入到Main之前
# 注意:由于血条是显示在敌人脚下,所以敌群的位置不能太靠底部,不然会被挡住。
# 可以自行更改坐标修改显示位置、血条的颜色等。
#==============================================================================
# ■ Window_Base
#------------------------------------------------------------------------------
#  游戏中全部窗口的超级类。
#==============================================================================

class Window_Base < Window
#--------------------------------------------------------------------------
# ● 描绘敌人HP
#--------------------------------------------------------------------------
def draw_enemy_hp(enemy, x, y, width = 80)
draw_gauge(x, y, width, enemy.hp_rate, hp_gauge_color1, hp_gauge_color2)
self.contents.font.size = 20
self.contents.font.color = system_color
self.contents.draw_text(x, y, 30, line_height, Vocab::hp_a)
self.contents.font.color = hp_color(enemy)
self.contents.draw_text(x + width - 64, y, 64, line_height, enemy.hp, 2)
#一个数字占16像素
end
def draw_enemy_name(enemy, x, y)
self.contents.font.size = 15
self.contents.font.color = normal_color
self.contents.draw_text(x, y,104, line_height, enemy.name)
end
#--------------------------------------------------------------------------
# ● 绘制敌人MP
#--------------------------------------------------------------------------
def draw_enemy_mp(enemy, x, y, width = 80)
self.contents.font.size = 20
draw_gauge(x, y, width, enemy.mp_rate, mp_gauge_color1, mp_gauge_color2)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 30, line_height, Vocab::mp_a)
self.contents.font.color = mp_color(enemy)
self.contents.draw_text(x + width - 64, y, 64, line_height, enemy.mp, 2)
end
end
#==============================================================================
# ■ Sprite_Battler
#------------------------------------------------------------------------------
#  战斗显示用活动块。Game_Battler 类的实例监视、
# 活动块的状态的监视、活动块状态自动变化。
#==============================================================================

class Sprite_Battler < Sprite_Base
#--------------------------------------------------------------------------
# ● 初始化对象
# viewport : 视区
# battler : 战斗者 (Game_Battler)
#--------------------------------------------------------------------------
def initialize(viewport, battler = nil)
super(viewport)
@battler = battler
@battler_visible = false
@effect_type = nil
@effect_duration = 0
if @battler.is_a?(Game_Enemy)
width = 24 + 80#边距12*2+血条的长度(在draw_enemy_hp中定义)
height = 24 + 24*3 #边距12*2+line_height*2
x = @battler.screen_x - width/2 #screen_x是怪物图片水平方向上的中点位置
y = @battler.screen_y - 12 #边距12,显示HP/MP的窗口无边框
@enemy_hpmp_window = Window_Base.new(x, y, width, height)
@enemy_hpmp_window.opacity = 0
@enemy_hpmp_window.contents = Bitmap.new(width - 24, height - 24)#位图比窗口小24像素取消边框
@enemy_hpmp_window.draw_enemy_hp(@battler, 0, 0)
@old_hp = -1
@enemy_hpmp_window.draw_enemy_mp(@battler, 0, 24)
@old_mp = -1
@enemy_hpmp_window.draw_enemy_name(@battler, 0, 48)
@old_name = nil
end
end
#--------------------------------------------------------------------------
# ● 释放
#--------------------------------------------------------------------------
def dispose
if self.bitmap != nil
self.bitmap.dispose
@enemy_hpmp_window.dispose
end
super
end
#--------------------------------------------------------------------------
# ● 更新画面
#--------------------------------------------------------------------------
def update
super
if @battler == nil
self.bitmap = nil
else
@use_sprite = @battler.use_sprite?
if @use_sprite
update_bitmap
update_origin
update_position
end
setup_new_effect
setup_new_animation
update_effect
if @enemy_hpmp_window != nil and (@old_hp != @battler.hp or @old_mp != @battler.mp)
if @battler.hp == 0
@enemy_hpmp_window.hide
else
@enemy_hpmp_window.contents.clear
@enemy_hpmp_window.draw_enemy_hp(@battler, 0, 0)
@old_hp = @battler.hp
@enemy_hpmp_window.draw_enemy_mp(@battler, 0, 24)
@old_mp = @battler.mp
@enemy_hpmp_window.draw_enemy_name(@battler, 0, 48)
@old_mp = @battler.name
@enemy_hpmp_window.show #怪物死后再被复活
end #if battler.hp == 0
end
end #if @battler == nil
end

end

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21636
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

2
发表于 2013-7-27 14:17:44 | 只看该作者


替换掉你原来的脚本

RUBY 代码复制
  1. #==============================================================================
  2. # 功能:战斗中显示敌人血和蓝于敌人脚下
  3. # 适用:RMVX Ace
  4. # 作者:殇殃 2012.3.10
  5. # 使用方法:复制整个脚本插入到Main之前
  6. # 注意:由于血条是显示在敌人脚下,所以敌群的位置不能太靠底部,不然会被挡住。
  7. # 可以自行更改坐标修改显示位置、血条的颜色等。
  8. #==============================================================================
  9. # ■ Window_Base
  10. #------------------------------------------------------------------------------
  11. #  游戏中全部窗口的超级类。
  12. #==============================================================================
  13.  
  14. module Vocab
  15.  
  16.   HPE = "血"
  17.  
  18.   MPE = "魔"
  19.  
  20.  
  21. end
  22.  
  23. class Window_Base < Window
  24. #--------------------------------------------------------------------------
  25. # ● 描绘敌人HP
  26. #--------------------------------------------------------------------------
  27.  
  28.   def draw_enemy_hp(enemy, x, y, width = 80)
  29.     draw_gauge(x, y, width, enemy.hp_rate, hp_gauge_color1, hp_gauge_color2)
  30.     self.contents.font.size = 20
  31.     self.contents.font.color = system_color
  32.     self.contents.draw_text(x, y, 30, line_height, Vocab::HPE)
  33.     self.contents.font.color = hp_color(enemy)
  34.     self.contents.draw_text(x + width - 64, y, 64, line_height, enemy.hp, 2)
  35. #一个数字占16像素
  36.   end
  37.  
  38.   def draw_enemy_name(enemy, x, y)
  39.     self.contents.font.size = 15
  40.     self.contents.font.color = normal_color
  41.     self.contents.draw_text(x, y,104, line_height, enemy.name)
  42.   end
  43. #--------------------------------------------------------------------------
  44. # ● 绘制敌人MP
  45. #--------------------------------------------------------------------------
  46.   def draw_enemy_mp(enemy, x, y, width = 80)
  47.     self.contents.font.size = 20
  48.     draw_gauge(x, y, width, enemy.mp_rate, mp_gauge_color1, mp_gauge_color2)
  49.     self.contents.font.color = system_color
  50.     self.contents.draw_text(x, y, 30, line_height, Vocab::MPE)
  51.     self.contents.font.color = mp_color(enemy)
  52.     self.contents.draw_text(x + width - 64, y, 64, line_height, enemy.mp, 2)
  53.   end
  54. end
  55. #==============================================================================
  56. # ■ Sprite_Battler
  57. #------------------------------------------------------------------------------
  58. #  战斗显示用活动块。Game_Battler 类的实例监视、
  59. # 活动块的状态的监视、活动块状态自动变化。
  60. #==============================================================================
  61.  
  62. class Sprite_Battler < Sprite_Base
  63. #--------------------------------------------------------------------------
  64. # ● 初始化对象
  65. # viewport : 视区
  66. # battler : 战斗者 (Game_Battler)
  67. #--------------------------------------------------------------------------
  68. def initialize(viewport, battler = nil)
  69. super(viewport)
  70. [url=home.php?mod=space&uid=133701]@battler[/url] = battler
  71. @battler_visible = false
  72. @effect_type = nil
  73. @effect_duration = 0
  74. if @battler.is_a?(Game_Enemy)
  75. width = 24 + 80#边距12*2+血条的长度(在draw_enemy_hp中定义)
  76. height = 24 + 24*3 #边距12*2+line_height*2
  77. x = @battler.screen_x - width/2 #screen_x是怪物图片水平方向上的中点位置
  78. y = @battler.screen_y - 12 #边距12,显示HP/MP的窗口无边框
  79. @enemy_hpmp_window = Window_Base.new(x, y, width, height)
  80. @enemy_hpmp_window.opacity = 0
  81. @enemy_hpmp_window.contents = Bitmap.new(width - 24, height - 24)#位图比窗口小24像素取消边框
  82. @enemy_hpmp_window.draw_enemy_hp(@battler, 0, 0)
  83. @old_hp = -1
  84. @enemy_hpmp_window.draw_enemy_mp(@battler, 0, 24)
  85. @old_mp = -1
  86. @enemy_hpmp_window.draw_enemy_name(@battler, 0, 48)
  87. @old_name = nil
  88. end
  89. end
  90. #--------------------------------------------------------------------------
  91. # ● 释放
  92. #--------------------------------------------------------------------------
  93. def dispose
  94. if self.bitmap != nil
  95. self.bitmap.dispose
  96. @enemy_hpmp_window.dispose
  97. end
  98. super
  99. end
  100. #--------------------------------------------------------------------------
  101. # ● 更新画面
  102. #--------------------------------------------------------------------------
  103. def update
  104. super
  105. if @battler == nil
  106. self.bitmap = nil
  107. else
  108. @use_sprite = @battler.use_sprite?
  109. if @use_sprite
  110. update_bitmap
  111. update_origin
  112. update_position
  113. end
  114. setup_new_effect
  115. setup_new_animation
  116. update_effect
  117. if @enemy_hpmp_window != nil and (@old_hp != @battler.hp or @old_mp != @battler.mp)
  118. if @battler.hp == 0
  119. @enemy_hpmp_window.hide
  120. else
  121. @enemy_hpmp_window.contents.clear
  122. @enemy_hpmp_window.draw_enemy_hp(@battler, 0, 0)
  123. @old_hp = @battler.hp
  124. @enemy_hpmp_window.draw_enemy_mp(@battler, 0, 24)
  125. @old_mp = @battler.mp
  126. @enemy_hpmp_window.draw_enemy_name(@battler, 0, 48)
  127. @old_mp = @battler.name
  128. @enemy_hpmp_window.show #怪物死后再被复活
  129. end #if battler.hp == 0
  130. end
  131. end #if @battler == nil
  132. end
  133.  
  134. end



(这脚本的排版真蛋疼= =)

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
14 小时
注册时间
2013-7-22
帖子
38
3
 楼主| 发表于 2013-7-29 12:22:58 | 只看该作者
喵呜喵5 发表于 2013-7-27 14:17
替换掉你原来的脚本

#============================================================================= ...

不行,说70行错误
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21636
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

4
发表于 2013-7-29 13:51:02 | 只看该作者
563548341 发表于 2013-7-29 12:22
不行,说70行错误

把第70行
@battler = battler
改成
@battler = battler


艹,这个是论坛的bug,论坛自动@ 了一个叫battler的用户导致代码出错了

点评

论坛会把@识别为email地址,很坑~  发表于 2013-7-29 17:02
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
14 小时
注册时间
2013-7-22
帖子
38
5
 楼主| 发表于 2013-7-29 17:19:48 | 只看该作者
本帖最后由 563548341 于 2013-7-29 17:21 编辑
喵呜喵5 发表于 2013-7-29 13:51
把第70行
@battler = battler
改成


有区别吗?是不是把[/url]去掉

点评

[url=home.php?mod=space&uid=133701]@battler[/url] = battler 改成 @battler = battler  发表于 2013-7-29 20:34
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21636
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

6
发表于 2013-7-29 18:15:10 手机端发表。 | 只看该作者
563548341 发表于 2013-7-29 17:19
有区别吗?是不是把[/url]去掉

区别大了,
正是论坛自动在那句的前后加上了[url][/url]才会报错的,把url那个中括号整个删掉
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-18 04:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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