Project1

标题: 关于地图显示血条的问题 [打印本页]

作者: Elvis。    时间: 2011-8-26 15:06
标题: 关于地图显示血条的问题
  1. DT_SWITCH = 66
  2. #有问题,找蚂蚁 redant修改
  3. #_______________________________________________________________________________
  4. # MOG_MPW HUD Elena V2.0           
  5. #_______________________________________________________________________________
  6. # By Moghunter
  7. # http://www.atelier-rgss.com
  8. #_______________________________________________________________________________
  9. module MOG
  10. #HUD Position.
  11. STMAPX = 476   # X Pos
  12. STMAPY = - 16 # Y Pos
  13. #Disable HUD Switch ID.  
  14. STMAPVIS = 1
  15. #Windowskin name.
  16. STMAPSKIN = ""
  17. #Window Opacity.
  18. STMAPOPA = 0
  19. end
  20. $mogscript = {} if $mogscript == nil
  21. $mogscript["mpstelen"] = true
  22. ###############
  23. # Window_Base #
  24. ###############
  25. class Window_Base < Window   

  26. def draw_maphp2(actor, x, y)
  27. text = RPG::Cache.picture("HP_Tx")   
  28. cw = text.width
  29. ch = text.height
  30. src_rect = Rect.new(0, 0, cw, ch)
  31. self.contents.blt( 75, 0, text, src_rect)
  32. meter = RPG::Cache.picture("HP_Meter")   
  33. cw = meter.width  * actor.hp / actor.maxhp
  34. ch = meter.height
  35. src_rect = Rect.new(0, 0, cw, ch)
  36. self.contents.blt( 94 ,16 , meter, src_rect)
  37. end  

  38. #def draw_mapsp2(actor, x, y)
  39. #meter = RPG::Cache.picture("SP_Meter")   
  40. #cw = meter.width  
  41. #ch = meter.height *  actor.sp / actor.maxsp
  42. #src_rect = Rect.new(0, 0,  cw, ch)
  43. #self.contents.blt( 81, 2, meter,  src_rect)
  44. #end

  45. def draw_mapsp2(actor, x, y)
  46. meter = RPG::Cache.picture("SP_Meter")   
  47. cw = meter.width  
  48. ch = 60 - meter.height *  actor.sp / actor.maxsp
  49. src_rect = Rect.new(0, 0,  cw, ch)
  50. self.contents.blt( 81, 2, meter,  src_rect)
  51. end


  52. def draw_mexp(actor, x, y)
  53. actor = $game_party.actors[0]
  54. if actor.next_exp != 0
  55. rate = actor.now_exp.to_f / actor.next_exp
  56. else
  57. rate = 1
  58. end
  59. bitmap = RPG::Cache.picture("Exp_Meter")
  60. #bitmap.z = 10
  61. if actor.level < 99
  62. cw = bitmap.width
  63. else
  64. cw = bitmap.width
  65. end   
  66. ch = bitmap.height - bitmap.height * rate
  67. src_rect = Rect.new(0, 0, cw, ch)
  68. self.contents.blt(88 , 6, bitmap, src_rect)

  69. end
  70. def nada
  71. face = RPG::Cache.picture("")
  72. end  
  73. def draw_heroface(actor,x,y) #"Graphics/system/menu/headp/" + actor.name + ".png"
  74. face = RPG::Cache.picture("../system/menu/HeadP/"+actor.name+"【地图】.png" ) rescue nada
  75. cw = face.width
  76. ch = face.height
  77. src_rect = Rect.new(0, 0, cw, ch)
  78. self.contents.blt(93 , 8, face, src_rect)
  79. end  

  80. end
  81. ##############
  82. # Game_Actor #
  83. ##############
  84. class Game_Actor < Game_Battler
  85. def now_exp
  86. return @exp - @exp_list[@level]
  87. end
  88. def next_exp
  89. return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
  90. end
  91. end
  92. #####################
  93. # Window_Status_Map #
  94. #####################
  95. class Window_Sthero < Window_Base
  96. def initialize
  97. super(0, 0, 310, 120)
  98. self.contents = Bitmap.new(width - 32, height - 32)
  99. self.windowskin = RPG::Cache.windowskin(MOG::STMAPSKIN)   
  100. self.contents.font.bold = true
  101. self.contents.font.size = 20
  102. self.contents.font.name = "Georgia"
  103. self.opacity = MOG::STMAPOPA

  104. refresh
  105. end  
  106. def refresh
  107.    if $game_switches[DT_SWITCH]
  108. #actor = $game_party.actors[0]

  109. #draw_maphp2(actor, 35, 35)
  110. #draw_mapsp2(actor, - 40, 60)
  111. #draw_mexp(actor, 100, 10)
  112. #draw_heroface(actor, 0, 70) 游啊游
  113.      self.contents.clear
  114. actor = $game_party.actors[0]

  115. draw_maphp2(actor, 35, 35)
  116. draw_mapsp2(actor, - 40, 60)
  117. draw_mexp(actor, 100, 10)
  118. draw_heroface(actor, 0, 70)
  119. end

  120. # draw_actor_statemap(actor, 200, 60, 70)
  121. #draw_actor_levelmap(actor, 80, 10)   

  122. end
  123. end
  124. ###############
  125. # Game_Player #
  126. ###############
  127. class Game_Player < Game_Character
  128. attr_accessor :wref
  129. end
  130. #############
  131. # Scene_Map #
  132. #############
  133. class Scene_Map
  134. alias mog11_main main
  135. def main
  136. @sthero = Window_Sthero.new
  137. @sthero.x = MOG::STMAPX
  138. @sthero.y = MOG::STMAPY
  139. if $game_switches[MOG::STMAPVIS] == false
  140. @sthero.visible = true  
  141. else
  142. @sthero.visible = false  
  143. end  
  144. mog11_main
  145. @sthero.dispose
  146. end
  147. alias mog11_update update
  148. def update
  149. mog11_update
  150. if $game_switches[MOG::STMAPVIS] == false
  151. @sthero.visible = true  
  152. else
  153. @sthero.visible = false  
  154. end
  155. if $game_switches[DT_SWITCH]
  156.     @sthero.visible = true
  157.     if $game_player.wref == true
  158. @sthero.refresh
  159. $game_player.wref = false
  160. end
  161.     else
  162.     @sthero.visible = false  
  163.      $game_player.wref = false
  164.   end
  165.   
  166. #if $game_switches[MOG::STMAPVIS] == false游啊游
  167. #@sthero.visible = true  
  168. #else
  169. #@sthero.visible = false  
  170. #end  
  171. #if $game_player.wref == true
  172. #@sthero.refresh
  173. #$game_player.wref = false
  174. #end
  175. #else
  176. # @sthero.visible = false  
  177.   #$game_player.wref = false

  178. #end

  179. end
  180. end  
  181. ##############
  182. # Game_Party #
  183. ###############
  184. class Game_Party
  185. alias mog11_check_map_slip_damage check_map_slip_damage  
  186. def check_map_slip_damage
  187. for actor in @actors
  188. if actor.hp > 0 and actor.slip_damage?
  189. $game_player.wref = true
  190. end
  191. end
  192. mog11_check_map_slip_damage  
  193. end
  194. end
  195. ###############
  196. # Interpreter #
  197. ###############
  198. class Interpreter
  199. alias mog11_command_311 command_311
  200. def command_311
  201. mog11_command_311
  202. $game_player.wref = true   
  203. end   
  204. alias mog11_command_312 command_312
  205. def command_312
  206. mog11_command_312
  207. $game_player.wref = true   
  208. end   
  209. alias mog11_command_313 command_313
  210. def command_313
  211. mog11_command_313
  212. $game_player.wref = true   
  213. end   
  214. alias mog11_command_314 command_314
  215. def command_314
  216. mog11_command_314
  217. $game_player.wref = true   
  218. end   
  219. alias mog11_command_315 command_315
  220. def command_315
  221. mog11_command_315
  222. $game_player.wref = true   
  223. end   
  224. end   
  225. ################
  226. # Game_Battler #
  227. ################
  228. class Game_Battler
  229. alias mog11_attack_effect attack_effect
  230. def attack_effect(attacker)
  231. mog11_attack_effect(attacker)  
  232. $game_player.wref = true
  233. end
  234. alias mog11_skill_effect skill_effect
  235. def skill_effect(user, skill)
  236. mog11_skill_effect(user, skill)
  237. $game_player.wref = true  
  238. end  
  239. alias mog11_item_effect item_effect
  240. def item_effect(item)
  241. mog11_item_effect(item)
  242. $game_player.wref = true  
  243. end
  244. alias mog11_add_state add_state
  245. def add_state(state_id, force = false)
  246. mog11_add_state(state_id, force = false)
  247. $game_player.wref = true  
  248. end
  249. end
复制代码
所用脚本为《隋唐乱》里面的“地图显示血条经验值”,将其移植到我的工程里之后,刚进入游戏时并没显示血条图片,而当我按ESC进入菜单然后退出后血条图片才会显示,这是怎么回事呢?求解啊~dsu_plus_rewardpost_czw


Elvis。于2011-8-27 17:15补充以下内容:
#_______________________________________________________________________________
# MOG_MPW HUD Elena V2.0           
#_______________________________________________________________________________
# By Moghunter
# http://www.atelier-rgss.com
#_______________________________________________________________________________
module MOG
#HUD Position.
STMAPX = -20   # X Pos
STMAPY = -22 # Y Pos
#Disable HUD Switch ID.  
STMAPVIS = 3
#Windowskin name.
STMAPSKIN = "系统·体验皮肤"
#Window Opacity.
STMAPOPA = 0
end
$mogscript = {} if $mogscript == nil
$mogscript["mpstelen"] = true
###############
# Window_Base #
###############
class Window_Base < Window   
def draw_maphp2(actor, x, y)
back = RPG::Cache.picture("系统·命气值条(空)")   
cw = back.width  
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)   
self.contents.blt(x + 9, y - ch + 16, back, src_rect)
meter = RPG::Cache.picture("系统·命值条")   
cw = meter.width  * actor.hp / actor.maxhp
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + -35, y - ch + 40, meter, src_rect)
text = RPG::Cache.picture("系统·命气值条(空)")   
cw = text.width  
ch = text.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 0, y - ch + 0, text, src_rect)
self.contents.font.color = Color.new(0,0,0,0)
self.contents.draw_text(x + 161, y - 1, 48, 32, actor.hp.to_s, 2)
self.contents.font.color = Color.new(0,0,0,0)
self.contents.draw_text(x + 160, y - 2, 48, 32, actor.hp.to_s, 2)   
end  
def draw_mapsp2(actor, x, y)
back = RPG::Cache.picture("系统·命气值条(空)")   
cw = back.width  
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)   
self.contents.blt(x + 97, y - ch + 9, back, src_rect)
meter = RPG::Cache.picture("系统·气值条")   
cw = meter.width  * actor.sp / actor.maxsp
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 42, y - ch + 15, meter, src_rect)
text = RPG::Cache.picture("系统·气字样")   
cw = text.width  
ch = text.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 0, y - ch + 0, text, src_rect)
self.contents.font.color = Color.new(0,0,0,0)
self.contents.draw_text(x + 161, y - 1, 48, 32, actor.sp.to_s, 2)   
self.contents.font.color = Color.new(0,0,0,0)
self.contents.draw_text(x + 160, y - 2, 48, 32, actor.sp.to_s, 2)   
end
def draw_mexp(actor, x, y)
actor = $game_party.actors[0]
bitmap2 = RPG::Cache.picture("系统·修历值条(空)")
cw = bitmap2.width
ch = bitmap2.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + -99 , y - ch +64, bitmap2, src_rect)
if actor.next_exp != 0
rate = actor.now_exp.to_f / actor.next_exp
else
rate = 1
end
bitmap = RPG::Cache.picture("系统·修历值条")
if actor.level < 99
cw = bitmap.width * rate
else
cw = bitmap.width
end   
ch = bitmap.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + -99 , y - ch + 64, bitmap, src_rect)
self.contents.font.color = Color.new(00,0,0,0)
self.contents.draw_text(x + 55, y + 1, 84, 32, " ",0)
self.contents.font.color = Color.new(0,0,0,0)
self.contents.draw_text(x + 54, y, 84, 32, " ",0)
end
def nada
face = RPG::Cache.picture("")
end  
def draw_heroface(actor,x,y)
face = RPG::Cache.picture(actor.name + "_face") rescue nada
cw = face.width
ch = face.height
src_rect = Rect.new(0, -5, cw, ch)
self.contents.blt(x , y - ch, face, src_rect)   
end  
def draw_actor_statemap(actor, x, y, width = 120)
text = make_battler_state_text(actor, width, true)
self.contents.font.color = Color.new(0,0,0,0)
self.contents.draw_text(x + 1, y + 1, width, 32, text)
self.contents.font.color = Color.new(0,0,0,0)
self.contents.draw_text(x, y, width, 32, text)
end
def draw_actor_levelmap(actor, x, y)
self.contents.font.color = Color.new(0,0,0,0)
self.contents.draw_text(x, y, 32, 32, "Lv")
self.contents.font.color = Color.new(0,0,0,0)   
self.contents.draw_text(x + 1, y + 1, 32, 32, "Lv")
self.contents.font.color = Color.new(0,0,0,0)
self.contents.draw_text(x + 30, y, 24, 32, actor.level.to_s, 1)
self.contents.font.color = Color.new(0,0,0,0)   
self.contents.draw_text(x + 31, y + 1, 24, 32, actor.level.to_s, 1)   
end
end
##############
# Game_Actor #
##############
class Game_Actor < Game_Battler
def now_exp
return @exp - @exp_list[@level]
end
def next_exp
return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
end
end
#####################
# Window_Status_Map #
#####################
class Window_Sthero < Window_Base
def initialize
super(0, 0, 310, 120)
self.contents = Bitmap.new(width - 32, height - 32)
self.windowskin = RPG::Cache.windowskin(MOG::STMAPSKIN)   
self.contents.font.bold = true
self.contents.font.size = 20
self.contents.font.name = "Georgia"
self.opacity = MOG::STMAPOPA
refresh
end  
def refresh
self.contents.clear
actor = $game_party.actors[0]
draw_maphp2(actor, 35, 35)
draw_mapsp2(actor, - 40, 60)
draw_heroface(actor, 0, 70)
draw_actor_statemap(actor, 200, 60, 70)
draw_actor_levelmap(actor, 80, 10)   
draw_mexp(actor, 100, 10)
end
end
###############
# Game_Player #
###############
class Game_Player < Game_Character
attr_accessor :wref
end
#############
# Scene_Map #
#############
class Scene_Map
alias mog11_main main
def main
@sthero = Window_Sthero.new
@sthero.x = MOG::STMAPX
@sthero.y = MOG::STMAPY
if $game_switches[MOG::STMAPVIS] == false
@sthero.visible = true  
else
@sthero.visible = false  
end  
mog11_main
@sthero.dispose
end
alias mog11_update update
def update
if $game_switches[MOG::STMAPVIS] == false
@sthero.visible = true  
else
@sthero.visible = false  
end  
if $game_player.wref == true
@sthero.refresh
$game_player.wref = false
end
mog11_update
end  
end  
##############
# Game_Party #
###############
class Game_Party
alias mog11_check_map_slip_damage check_map_slip_damage  
def check_map_slip_damage
for actor in @actors
if actor.hp > 0 and actor.slip_damage?
$game_player.wref = true
end
end
mog11_check_map_slip_damage  
end
end
###############
# Interpreter #
###############
class Interpreter
alias mog11_command_311 command_311
def command_311
mog11_command_311
$game_player.wref = true   
end   
alias mog11_command_312 command_312
def command_312
mog11_command_312
$game_player.wref = true   
end   
alias mog11_command_313 command_313
def command_313
mog11_command_313
$game_player.wref = true   
end   
alias mog11_command_314 command_314
def command_314
mog11_command_314
$game_player.wref = true   
end   
alias mog11_command_315 command_315
def command_315
mog11_command_315
$game_player.wref = true   
end   
end   
################
# Game_Battler #
################
class Game_Battler
alias mog11_attack_effect attack_effect
def attack_effect(attacker)
mog11_attack_effect(attacker)  
$game_player.wref = true
end
alias mog11_skill_effect skill_effect
def skill_effect(user, skill)
mog11_skill_effect(user, skill)
$game_player.wref = true  
end  
alias mog11_item_effect item_effect
def item_effect(item)
mog11_item_effect(item)
$game_player.wref = true  
end
alias mog11_add_state add_state
def add_state(state_id, force = false)
mog11_add_state(state_id, force = false)
$game_player.wref = true  
end
end

找到可行的脚本了,问题了结,与君共享~{:4_95:}

作者: 蛋黄派    时间: 2011-8-29 17:08
什么问题?

作者: rainfly    时间: 2011-8-29 17:41
  1. class Bitmap
  2.   def draw_rect(x,y,width,height,start_color,end_color)
  3.     # 开始的颜色
  4.     start_red = start_color.red
  5.     start_green = start_color.green
  6.     start_blue = start_color.blue
  7.     start_alpha = start_color.alpha
  8.     # 结束的颜色
  9.     end_red = end_color.red
  10.     end_green = end_color.green
  11.     end_blue = end_color.blue
  12.     end_alpha = end_color.alpha
  13.     for i in 0...width
  14.       for j in 0...height
  15.         # 获取颜色
  16.         red = (start_red * width + i * (end_red - start_red)) / width
  17.         green = (start_green * width + i * (end_green - start_green)) / width
  18.         blue = (start_blue * width + i * (end_blue - start_blue)) / width
  19.         alpha = (start_alpha * width + i * (end_alpha - start_alpha)) / width
  20.         self.set_pixel(x + i, y + j, Color.new(red,green,blue,alpha))
  21.       end
  22.     end
  23.   end
  24. end
复制代码
给你个画血条的脚本




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