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

Project1

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

關於45度戰鬥的血槽

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
7 小时
注册时间
2009-1-1
帖子
263
跳转到指定楼层
1
发表于 2009-4-11 17:42:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
  1. # ————————————————————————————————————
  2. # 本脚本来自www.66rpg.com,转载请保留此信息
  3. # ————————————————————————————————————
  4. #==============================================================================
  5. # ■ Spriteset_Battle
  6. #------------------------------------------------------------------------------
  7. #  处理战斗画面的活动块的类。本类在 Scene_Battle 类
  8. # 的内部使用。
  9. #==============================================================================
  10. #==============================================================================
  11. #相关修改:45度战斗背景活动块
  12. #==============================================================================

  13. class Spriteset_Battle
  14. #--------------------------------------------------------------------------
  15. # ● 定义实例变量
  16. #--------------------------------------------------------------------------
  17. attr_reader   :viewport1                # 敌人方的显示端口
  18. attr_reader   :viewport2                # 角色方的显示端口
  19. #--------------------------------------------------------------------------
  20. # ● 初始化变量
  21. #--------------------------------------------------------------------------
  22. def initialize
  23.    # 生成显示端口
  24.    @viewport0 = Viewport.new(0, 0, 640, 480)
  25.    @viewport1 = Viewport.new(0, 0, 640, 480)
  26.    @viewport2 = Viewport.new(0, 0, 640, 480)
  27.    @viewport3 = Viewport.new(0, 0, 640, 480)
  28.    @viewport4 = Viewport.new(0, 0, 640, 480)
  29.    @viewport2.z = 101
  30.    @viewport3.z = 200
  31.    @viewport4.z = 5000
  32.    # 生成战斗背景活动块
  33.    @battleback_sprite = Sprite.new(@viewport0)
  34.    
  35.    
  36.    @battleanimation_id = 0
  37.    
  38.    # 生成敌人活动块
  39.    @enemy_sprites = []
  40.    for enemy in $game_troop.enemies.reverse
  41.      @enemy_sprites.push(Sprite_Battler.new(@viewport1, enemy))
  42.    end
  43.    # 生成敌人活动块
  44.    @actor_sprites = []
  45.    @actor_sprites.push(Sprite_Battler.new(@viewport2))
  46.    @actor_sprites.push(Sprite_Battler.new(@viewport2))
  47.    @actor_sprites.push(Sprite_Battler.new(@viewport2))
  48.    @actor_sprites.push(Sprite_Battler.new(@viewport2))
  49.    # 生成天候
  50.    @weather = RPG::Weather.new(@viewport1)
  51.    # 生成图片活动块
  52.    @picture_sprites = []
  53.    for i in 51..100
  54.      @picture_sprites.push(Sprite_Picture.new(@viewport3,
  55.        $game_screen.pictures[i]))
  56.    end
  57.    # 生成计时器块
  58.    @timer_sprite = Sprite_Timer.new
  59.    # 刷新画面
  60.    update
  61. end
  62. #--------------------------------------------------------------------------
  63. # ● 释放
  64. #--------------------------------------------------------------------------
  65. def dispose
  66.    # 如果战斗背景位图存在的情况下就释放
  67.    if @battleback_sprite.bitmap != nil
  68.      @battleback_sprite.bitmap.dispose
  69.    end
  70.    # 释放战斗背景活动块
  71.    @battleback_sprite.dispose
  72.    # 释放敌人活动块、角色活动块
  73.    for sprite in @enemy_sprites + @actor_sprites
  74.      sprite.dispose
  75.    end
  76.    # 释放天候
  77.    @weather.dispose
  78.    # 释放图片活动块
  79.    for sprite in @picture_sprites
  80.      sprite.dispose
  81.    end
  82.    # 释放计时器活动块
  83.    @timer_sprite.dispose
  84.    # 释放显示端口
  85.    @viewport1.dispose
  86.    @viewport2.dispose
  87.    @viewport3.dispose
  88.    @viewport4.dispose
  89. end
  90. #--------------------------------------------------------------------------
  91. # ● 显示效果中判定
  92. #--------------------------------------------------------------------------
  93. def effect?
  94.    # 如果是在显示效果中的话就返回 true
  95.    for sprite in @enemy_sprites + @actor_sprites
  96.      return true if sprite.effect?
  97.    end
  98.    return false
  99. end
  100. #--------------------------------------------------------------------------
  101. # ● 刷新画面
  102. #--------------------------------------------------------------------------
  103. def update
  104.    # 刷新角色的活动块 (对应角色的替换)
  105.    @actor_sprites[0].battler = $game_party.actors[0]
  106.    @actor_sprites[1].battler = $game_party.actors[1]
  107.    @actor_sprites[2].battler = $game_party.actors[2]
  108.    @actor_sprites[3].battler = $game_party.actors[3]

  109.     # 战斗背景的文件名与现在情况有差异的情况下
  110.    if @battleback_name != $game_temp.battleback_name
  111.      @battleback_name = $game_temp.battleback_name
  112.      if @battleback_sprite.bitmap != nil
  113.        @battleback_sprite.bitmap.dispose
  114.      end
  115.      @battleback_sprite.bitmap = RPG::Cache.battleback(@battleback_name)
  116.      @battleback_sprite.src_rect.set(0, 0, 640, 480)
  117.    end
  118.    # 刷新战斗者的活动块
  119.    for sprite in @enemy_sprites + @actor_sprites
  120.      sprite.update
  121.    end
  122.    # 刷新天气图形
  123.    @weather.type = $game_screen.weather_type
  124.    @weather.max = $game_screen.weather_max
  125.    @weather.update
  126.    # 刷新图片活动块
  127.    for sprite in @picture_sprites
  128.      sprite.update
  129.    end
  130.    # 刷新计时器活动块
  131.    @timer_sprite.update
  132.    # 设置画面的色调与震动位置
  133.    @viewport1.tone = $game_screen.tone
  134.    @viewport1.ox = $game_screen.shake
  135.    # 设置画面的闪烁色
  136.    @viewport4.color = $game_screen.flash_color
  137.    # 刷新显示端口
  138.    @viewport1.update
  139.    @viewport2.update
  140.    @viewport4.update
  141. end
  142. end


  143. #==============================================================================
  144. # ■ Game_Actor
  145. #------------------------------------------------------------------------------
  146. #  处理角色的类。本类在 Game_Actors 类 ($game_actors)
  147. # 的内部使用、Game_Party 类请参考 ($game_party) 。
  148. #==============================================================================

  149. class Game_Actor < Game_Battler
  150. #--------------------------------------------------------------------------
  151. # ● 取得战斗画面的 X 坐标
  152. #--------------------------------------------------------------------------
  153. def screen_x
  154. case self.index
  155. when 0
  156.   return 350
  157. when 1
  158.   return 430
  159. when 2
  160.   return 510
  161. when 3
  162.   return 580
  163. else
  164.   return 600

  165. end
  166. end
  167. #--------------------------------------------------------------------------
  168. # ● 取得战斗画面的 Y 坐标
  169. #--------------------------------------------------------------------------
  170. def screen_y
  171. case self.index
  172. when 0
  173.   return 430
  174. when 1
  175.   return 395
  176. when 2
  177.   return 360
  178. when 3
  179.   return 325
  180. else
  181.   return 1000
  182. end
  183. end
  184. #--------------------------------------------------------------------------
  185. # ● 取得战斗画面的 Z 坐标
  186. #--------------------------------------------------------------------------
  187. def screen_z
  188. case self.index
  189. when 0
  190.   return 10
  191. when 1
  192.   return 9
  193. when 2
  194.   return 8
  195. when 3
  196.   return 7
  197. else
  198.   return 0
  199.   end
  200. end
  201. end


  202. #==============================================================================
  203. # ■ Window_Base
  204. #------------------------------------------------------------------------------
  205. #  游戏中全部窗口的超级类。
  206. #==============================================================================

  207. class Window_Base < Window
  208. #--------------------------------------------------------------------------
  209. # ● 描绘 HP
  210. #     actor : 角色
  211. #     x     : 描画目标 X 坐标
  212. #     y     : 描画目标 Y 坐标
  213. #     width : 描画目标的宽
  214. #--------------------------------------------------------------------------
  215. def draw_actor_hp1(actor, x, y, width = 72)
  216.   # 描绘字符串 "HP"
  217.   self.contents.font.color = system_color
  218.   self.contents.draw_text(x, y, 24, 24, $data_system.words.hp)
  219.   # 计算描绘 MaxHP 所需的空间
  220.   if width - 24 >= 32
  221.     hp_x = x + 32# + width - 24
  222.   end
  223.   # 描绘 HP
  224.   self.contents.font.color = actor.hp == 0 ? knockout_color :
  225.     actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
  226.   self.contents.draw_text(hp_x, y, 32, 24, actor.hp.to_s, 2)
  227. end
  228. #--------------------------------------------------------------------------
  229. # ● 描绘 SP
  230. #     actor : 角色
  231. #     x     : 描画目标 X 坐标
  232. #     y     : 描画目标 Y 坐标
  233. #     width : 描画目标的宽
  234. #--------------------------------------------------------------------------
  235. def draw_actor_sp1(actor, x, y, width = 72)
  236.   # 描绘字符串 "SP"
  237.   self.contents.font.color = system_color
  238.   self.contents.draw_text(x, y, 24, 24, $data_system.words.sp)
  239.   # 计算描绘 MaxSP 所需的空间
  240.   if width - 24 >= 32
  241.     sp_x = x + 32# + width - 24
  242.   end
  243.   # 描绘 SP
  244.   self.contents.font.color = actor.sp == 0 ? knockout_color :
  245.     actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
  246.   self.contents.draw_text(sp_x, y, 32, 24, actor.sp.to_s, 2)
  247. end
  248. end





  249. #==============================================================================
  250. # ■ Window_BattleStatus
  251. #------------------------------------------------------------------------------
  252. #  显示战斗画面同伴状态的窗口。
  253. #==============================================================================

  254. class Window_BattleStatus < Window_Base
  255. #--------------------------------------------------------------------------
  256. # ● 初始化对像
  257. #--------------------------------------------------------------------------
  258. #$data_system_level_up_me = "Audio/ME/升级音乐"
  259. def initialize
  260.   super(0, 0, 640, 480)
  261.   self.contents = Bitmap.new(width - 10, height - 32)
  262.   self.opacity = 0
  263.   @level_up_flags = [false, false, false, false]
  264.   refresh
  265. end
  266. #--------------------------------------------------------------------------
  267. # ● 释放
  268. #--------------------------------------------------------------------------
  269. def dispose
  270.   super
  271. end
  272. #--------------------------------------------------------------------------
  273. # ● 设置升级标志
  274. #     actor_index : 角色索引
  275. #--------------------------------------------------------------------------
  276. def level_up(actor_index)
  277.   @level_up_flags[actor_index] = true
  278. end
  279. #--------------------------------------------------------------------------
  280. # ● 刷新
  281. #--------------------------------------------------------------------------
  282. def refresh
  283.   self.contents.clear
  284.   @item_max = $game_party.actors.size
  285.    for i in 0...$game_party.actors.size
  286.     actor = $game_party.actors[i]
  287.     case i
  288.       when 0
  289.        x = 310
  290.        y = 390
  291.       when 1
  292.        x = 390
  293.        y = 340
  294.       when 2
  295.        x = 480
  296.        y = 300
  297.       when 3
  298.        x = 550
  299.        y = 270
  300.      end
  301.     if @level_up_flags[i]
  302.       self.contents.font.color = normal_color
  303.       self.contents.draw_text(x, y, 80, 24, "LEVEL UP!")
  304.       Audio.me_stop
  305. #        Audio.me_play($data_system_level_up_me)
  306.     else
  307.     draw_actor_hp1(actor, x-15, y-15, 80)
  308.     draw_actor_sp1(actor, x-15, y+5, 80)
  309.    end
  310.   end
  311. end

  312. #--------------------------------------------------------------------------
  313. # ● 刷新画面
  314. #--------------------------------------------------------------------------
  315. def update
  316.   super
  317.   # 主界面的不透明度下降
  318.   if $game_temp.battle_main_phase
  319.     self.contents_opacity -= 50 if self.contents_opacity > 1
  320.   else
  321.     self.contents_opacity += 50 if self.contents_opacity < 255
  322.   end
  323. end
  324. end





  325. #==============================================================================
  326. # ■ Window_BattleStatus
  327. #==============================================================================
  328. class Window_BattleStatus < Window_Base
  329. #--------------------------------------------------------------------------
  330. # ● 初始化
  331. #--------------------------------------------------------------------------
  332. alias xrxs_bp2_refresh refresh
  333. def refresh
  334.   xrxs_bp2_refresh
  335.   @item_max = $game_party.actors.size
  336.    for i in 0...$game_party.actors.size
  337.     actor = $game_party.actors[i]
  338.     case i
  339.       when 0
  340.        x = 310
  341.        y = 390
  342.       when 1
  343.        x = 390
  344.        y = 340
  345.       when 2
  346.        x = 480
  347.        y = 300
  348.       when 3
  349.        x = 550
  350.        y = 270
  351.      end
  352.     draw_actor_hp_meter(actor, x, y, 50)
  353.     draw_actor_sp_meter(actor, x, y + 8, 50)
  354.   end
  355. end
  356. end
  357. #==============================================================================
  358. # ■ Window_Base
  359. #==============================================================================
  360. class Window_Base < Window
  361. #--------------------------------------------------------------------------
  362. # ● HP描画
  363. #--------------------------------------------------------------------------
  364. def draw_actor_hp_meter(actor, x, y, width = 156, type = 0)
  365.   if type == 1 and actor.hp == 0
  366.     return
  367.   end
  368.   self.contents.font.color = system_color
  369.   self.contents.fill_rect(x-1, y+27, width+2,6, Color.new(0, 0, 0, 25))
  370.   w = width * actor.hp / actor.maxhp
  371.   self.contents.fill_rect(x, y+28, w,1, Color.new(255, 96, 96, 255))
  372.   self.contents.fill_rect(x, y+29, w,1, Color.new(255, 0, 0, 255))
  373.   self.contents.fill_rect(x, y+30, w,1, Color.new(128, 0, 0, 255))
  374.   self.contents.fill_rect(x, y+31, w,1, Color.new(0, 0, 0, 255))
  375.   
  376.   end
  377. #--------------------------------------------------------------------------
  378. # ● SP描画
  379. #--------------------------------------------------------------------------
  380. def draw_actor_sp_meter(actor, x, y, width = 156, type = 0)
  381.   if type == 1 and actor.hp == 0
  382.     return
  383.   end
  384.   self.contents.font.color = system_color
  385.   self.contents.fill_rect(x-1, y+27, width+2,6, Color.new(0, 0, 0, 255))
  386.   w = width * actor.sp / actor.maxsp
  387.   self.contents.fill_rect(x, y+28, w,1, Color.new(128, 255, 255, 255))
  388.   self.contents.fill_rect(x, y+29, w,1, Color.new(0, 255, 255, 255))
  389.   self.contents.fill_rect(x, y+30, w,1, Color.new(0, 192, 192, 255))
  390.   self.contents.fill_rect(x, y+31, w,1, Color.new(0, 128, 128, 255))
  391. end
  392. end
复制代码

這是我的45度腳本誰會把血槽改為RTAB的血槽版本啊
头像被屏蔽

Lv1.梦旅人 (禁止发言)

迷失的小白

梦石
0
星屑
50
在线时间
1 小时
注册时间
2009-3-17
帖子
231
2
发表于 2009-6-12 08:00:00 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
7 小时
注册时间
2009-1-1
帖子
263
3
 楼主| 发表于 2009-4-18 18:15:26 | 只看该作者
自頂……可不可以吧血槽換一下嘛難看死啦
回复 支持 反对

使用道具 举报

Lv1.梦旅人


梦石
0
星屑
89
在线时间
24 小时
注册时间
2006-5-27
帖子
11425

贵宾

4
发表于 2009-4-18 18:16:27 | 只看该作者
更换血槽图片?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
7 小时
注册时间
2009-1-1
帖子
263
5
 楼主| 发表于 2009-4-18 20:34:07 | 只看该作者
换成RTAB式的血槽
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-12 05:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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