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

Project1

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

动态血槽

 关闭 [复制链接]

Lv1.梦旅人

B

梦石
0
星屑
50
在线时间
26 小时
注册时间
2007-8-26
帖子
3693
跳转到指定楼层
1
发表于 2008-1-28 01:00:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
  1. #==============================================================================
  2. # ■ Game_Battler (分割定义 1)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
  5. # 超级类来使用。
  6. #==============================================================================

  7. class Game_Battler
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_reader   :battler_name             # 战斗者 文件名
  12.   attr_reader   :battler_hue              # 战斗者 色相
  13.   attr_reader   :hp                       # HP
  14.   attr_reader   :sp                       # SP
  15.   attr_reader   :states                   # 状态
  16.   attr_accessor :hidden                   # 隐藏标志
  17.   attr_accessor :immortal                 # 不死身标志
  18.   attr_accessor :damage_pop               # 显示伤害标志
  19.   attr_accessor :damage                   # 伤害值
  20.   attr_accessor :critical                 # 会心一击标志
  21.   attr_accessor :animation_id             # 动画 ID
  22.   attr_accessor :animation_hit            # 动画 击中标志
  23.   attr_accessor :white_flash              # 白色屏幕闪烁标志
  24.   attr_accessor :blink                    # 闪烁标志
  25.   #########################################################
  26.   attr_accessor :hp2
  27.   attr_accessor :sp2
  28.   #########################################################
  29.   #--------------------------------------------------------------------------
  30.   # ● 初始化对像
  31.   #--------------------------------------------------------------------------
  32.   def initialize
  33.     @battler_name = ""
  34.     @battler_hue = 0
  35.     @hp = 0
  36.     @sp = 0
  37.     ##############################################
  38.     @hp2 = 0
  39.     @sp2 = 0
  40.     ##############################################
  41.     @states = []
  42.     @states_turn = {}
  43.     @maxhp_plus = 0
  44.     @maxsp_plus = 0
  45.     @str_plus = 0
  46.     @dex_plus = 0
  47.     @agi_plus = 0
  48.     @int_plus = 0
  49.     @hidden = false
  50.     @immortal = false
  51.     @damage_pop = false
  52.     @damage = nil
  53.     @critical = false
  54.     @animation_id = 0
  55.     @animation_hit = false
  56.     @white_flash = false
  57.     @blink = false
  58.     @current_action = Game_BattleAction.new
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ● 获取 MaxHP
  62.   #--------------------------------------------------------------------------
  63.   def maxhp
  64.     n = [[base_maxhp + @maxhp_plus, 1].max, 999999].min
  65.     for i in @states
  66.       n *= $data_states[i].maxhp_rate / 100.0
  67.     end
  68.     n = [[Integer(n), 1].max, 999999].min
  69.     return n
  70.   end
  71.   #--------------------------------------------------------------------------
  72.   # ● 获取 MaxSP
  73.   #--------------------------------------------------------------------------
  74.   def maxsp
  75.     n = [[base_maxsp + @maxsp_plus, 0].max, 9999].min
  76.     for i in @states
  77.       n *= $data_states[i].maxsp_rate / 100.0
  78.     end
  79.     n = [[Integer(n), 0].max, 9999].min
  80.     return n
  81.   end
  82.   #--------------------------------------------------------------------------
  83.   # ● 获取力量
  84.   #--------------------------------------------------------------------------
  85.   def str
  86.     n = [[base_str + @str_plus, 1].max, 999].min
  87.     for i in @states
  88.       n *= $data_states[i].str_rate / 100.0
  89.     end
  90.     n = [[Integer(n), 1].max, 999].min
  91.     return n
  92.   end
  93.   #--------------------------------------------------------------------------
  94.   # ● 获取灵巧
  95.   #--------------------------------------------------------------------------
  96.   def dex
  97.     n = [[base_dex + @dex_plus, 1].max, 999].min
  98.     for i in @states
  99.       n *= $data_states[i].dex_rate / 100.0
  100.     end
  101.     n = [[Integer(n), 1].max, 999].min
  102.     return n
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # ● 获取速度
  106.   #--------------------------------------------------------------------------
  107.   def agi
  108.     n = [[base_agi + @agi_plus, 1].max, 999].min
  109.     for i in @states
  110.       n *= $data_states[i].agi_rate / 100.0
  111.     end
  112.     n = [[Integer(n), 1].max, 999].min
  113.     return n
  114.   end
  115.   #--------------------------------------------------------------------------
  116.   # ● 获取魔力
  117.   #--------------------------------------------------------------------------
  118.   def int
  119.     n = [[base_int + @int_plus, 1].max, 999].min
  120.     for i in @states
  121.       n *= $data_states[i].int_rate / 100.0
  122.     end
  123.     n = [[Integer(n), 1].max, 999].min
  124.     return n
  125.   end
  126.   #--------------------------------------------------------------------------
  127.   # ● 设置 MaxHP
  128.   #     maxhp : 新的 MaxHP
  129.   #--------------------------------------------------------------------------
  130.   def maxhp=(maxhp)
  131.     @maxhp_plus += maxhp - self.maxhp
  132.     @maxhp_plus = [[@maxhp_plus, -9999].max, 9999].min
  133.     @hp = [@hp, self.maxhp].min
  134.   end
  135.   #--------------------------------------------------------------------------
  136.   # ● 设置 MaxSP
  137.   #     maxsp : 新的 MaxSP
  138.   #--------------------------------------------------------------------------
  139.   def maxsp=(maxsp)
  140.     @maxsp_plus += maxsp - self.maxsp
  141.     @maxsp_plus = [[@maxsp_plus, -9999].max, 9999].min
  142.     @sp = [@sp, self.maxsp].min
  143.   end
  144.   #--------------------------------------------------------------------------
  145.   # ● 设置力量
  146.   #     str : 新的力量
  147.   #--------------------------------------------------------------------------
  148.   def str=(str)
  149.     @str_plus += str - self.str
  150.     @str_plus = [[@str_plus, -999].max, 999].min
  151.   end
  152.   #--------------------------------------------------------------------------
  153.   # ● 设置灵巧
  154.   #     dex : 新的灵巧
  155.   #--------------------------------------------------------------------------
  156.   def dex=(dex)
  157.     @dex_plus += dex - self.dex
  158.     @dex_plus = [[@dex_plus, -999].max, 999].min
  159.   end
  160.   #--------------------------------------------------------------------------
  161.   # ● 设置速度
  162.   #     agi : 新的速度
  163.   #--------------------------------------------------------------------------
  164.   def agi=(agi)
  165.     @agi_plus += agi - self.agi
  166.     @agi_plus = [[@agi_plus, -999].max, 999].min
  167.   end
  168.   #--------------------------------------------------------------------------
  169.   # ● 设置魔力
  170.   #     int : 新的魔力
  171.   #--------------------------------------------------------------------------
  172.   def int=(int)
  173.     @int_plus += int - self.int
  174.     @int_plus = [[@int_plus, -999].max, 999].min
  175.   end
  176.   #--------------------------------------------------------------------------
  177.   # ● 获取命中率
  178.   #--------------------------------------------------------------------------
  179.   def hit
  180.     n = 100
  181.     for i in @states
  182.       n *= $data_states[i].hit_rate / 100.0
  183.     end
  184.     return Integer(n)
  185.   end
  186.   #--------------------------------------------------------------------------
  187.   # ● 获取攻击力
  188.   #--------------------------------------------------------------------------
  189.   def atk
  190.     n = base_atk
  191.     for i in @states
  192.       n *= $data_states[i].atk_rate / 100.0
  193.     end
  194.     return Integer(n)
  195.   end
  196.   #--------------------------------------------------------------------------
  197.   # ● 获取物理防御
  198.   #--------------------------------------------------------------------------
  199.   def pdef
  200.     n = base_pdef
  201.     for i in @states
  202.       n *= $data_states[i].pdef_rate / 100.0
  203.     end
  204.     return Integer(n)
  205.   end
  206.   #--------------------------------------------------------------------------
  207.   # ● 获取魔法防御
  208.   #--------------------------------------------------------------------------
  209.   def mdef
  210.     n = base_mdef
  211.     for i in @states
  212.       n *= $data_states[i].mdef_rate / 100.0
  213.     end
  214.     return Integer(n)
  215.   end
  216.   #--------------------------------------------------------------------------
  217.   # ● 获取回避修正
  218.   #--------------------------------------------------------------------------
  219.   def eva
  220.     n = base_eva
  221.     for i in @states
  222.       n += $data_states[i].eva
  223.     end
  224.     return n
  225.   end
  226.   #--------------------------------------------------------------------------
  227.   # ● 更改 HP
  228.   #     hp : 新的 HP
  229.   #--------------------------------------------------------------------------
  230.   def hp=(hp)
  231.     @hp = [[hp, maxhp].min, 0].max
  232.     # 解除附加的战斗不能状态
  233.     for i in 1...$data_states.size
  234.       if $data_states[i].zero_hp
  235.         if self.dead?
  236.           add_state(i)
  237.         else
  238.           remove_state(i)
  239.         end
  240.       end
  241.     end
  242.   end
  243.   #--------------------------------------------------------------------------
  244.   # ● 更改 SP
  245.   #     sp : 新的 SP
  246.   #--------------------------------------------------------------------------
  247.   def sp=(sp)
  248.     @sp = [[sp, maxsp].min, 0].max
  249.   end
  250.   #--------------------------------------------------------------------------
  251.   # ● 全回复
  252.   #--------------------------------------------------------------------------
  253.   def recover_all
  254.     @hp = maxhp
  255.     @sp = maxsp
  256.     for i in @states.clone
  257.       remove_state(i)
  258.     end
  259.   end
  260.   #--------------------------------------------------------------------------
  261.   # ● 获取当前的动作
  262.   #--------------------------------------------------------------------------
  263.   def current_action
  264.     return @current_action
  265.   end
  266.   #--------------------------------------------------------------------------
  267.   # ● 确定动作速度
  268.   #--------------------------------------------------------------------------
  269.   def make_action_speed
  270.     @current_action.speed = agi + rand(10 + agi / 4)
  271.   end
  272.   #--------------------------------------------------------------------------
  273.   # ● 战斗不能判定
  274.   #--------------------------------------------------------------------------
  275.   def dead?
  276.     return (@hp == 0 and not @immortal)
  277.   end
  278.   #--------------------------------------------------------------------------
  279.   # ● 存在判定
  280.   #--------------------------------------------------------------------------
  281.   def exist?
  282.     return (not @hidden and (@hp > 0 or @immortal))
  283.   end
  284.   #--------------------------------------------------------------------------
  285.   # ● HP 0 判定
  286.   #--------------------------------------------------------------------------
  287.   def hp0?
  288.     return (not @hidden and @hp == 0)
  289.   end
  290.   #--------------------------------------------------------------------------
  291.   # ● 可以输入命令判定
  292.   #--------------------------------------------------------------------------
  293.   def inputable?
  294.     return (not @hidden and restriction <= 1)
  295.   end
  296.   #--------------------------------------------------------------------------
  297.   # ● 可以行动判定
  298.   #--------------------------------------------------------------------------
  299.   def movable?
  300.     return (not @hidden and restriction < 4)
  301.   end
  302.   #--------------------------------------------------------------------------
  303.   # ● 防御中判定
  304.   #--------------------------------------------------------------------------
  305.   def guarding?
  306.     return (@current_action.kind == 0 and @current_action.basic == 1)
  307.   end
  308.   #--------------------------------------------------------------------------
  309.   # ● 休止中判定
  310.   #--------------------------------------------------------------------------
  311.   def resting?
  312.     return (@current_action.kind == 0 and @current_action.basic == 3)
  313.   end
  314. end

  315. #==============================================================================
  316. # ■ Window_BattleStatus
  317. #------------------------------------------------------------------------------
  318. #  显示战斗画面同伴状态的窗口。
  319. #==============================================================================

  320. class Window_BattleStatus < Window_Base
  321.   #--------------------------------------------------------------------------
  322.   # ● 初始化对像
  323.   #--------------------------------------------------------------------------
  324.   def initialize
  325.     super(0, 320, 640, 160)
  326.     self.contents = Bitmap.new(width - 32, height - 32)
  327.     @level_up_flags = [false, false, false, false]
  328.     @refresh_flag = true
  329.     refresh
  330.   end
  331.   #--------------------------------------------------------------------------
  332.   # ● 释放
  333.   #--------------------------------------------------------------------------
  334.   def dispose
  335.     super
  336.   end
  337.   #--------------------------------------------------------------------------
  338.   # ● 设置升级标志
  339.   #     actor_index : 角色索引
  340.   #--------------------------------------------------------------------------
  341.   def level_up(actor_index)
  342.     @level_up_flags[actor_index] = true
  343.   end
  344.   #--------------------------------------------------------------------------
  345.   # ● 刷新
  346.   #--------------------------------------------------------------------------
  347.   def refresh
  348.     self.contents.clear
  349.     @item_max = $game_party.actors.size
  350.     for i in 0...$game_party.actors.size
  351.       actor = $game_party.actors[i]
  352.       actor_x = i * 160 + 4
  353.       draw_actor_name(actor, actor_x, 0)
  354.       draw_actor_hp(actor, actor_x, 32, 120)
  355.       draw_actor_sp(actor, actor_x, 64, 120)
  356.       if @level_up_flags[i]
  357.         self.contents.font.color = normal_color
  358.         self.contents.draw_text(actor_x, 96, 120, 32, "LEVEL UP!")
  359.       else
  360.         draw_actor_state(actor, actor_x, 96)
  361.       end
  362.     end
  363.     ########################################
  364.     @refresh_flag = false
  365.   end
  366.   #--------------------------------------------------------------------------
  367.   # ● 刷新画面
  368.   #--------------------------------------------------------------------------
  369.   def update
  370.     super
  371.     # 主界面的不透明度下降
  372.     if $game_temp.battle_main_phase
  373.       self.contents_opacity -= 4 if self.contents_opacity > 191
  374.     else
  375.       self.contents_opacity += 4 if self.contents_opacity < 255
  376.     end
  377.     #################################################
  378.      for i in 0...$game_party.actors.size
  379.        actor = $game_party.actors[i]
  380.        dhp = actor.maxhp/156
  381.        dsp = actor.maxsp/156


  382.       if actor.hp2 <= actor.hp
  383.         actor.hp
  384.         actor.hp2 += dhp
  385.       else
  386.         actor.hp2 -= dhp
  387.       end

  388.       if actor.sp2 <= actor.sp
  389.         actor.sp2 += dsp
  390.       else
  391.         actor.sp2 -= dsp
  392.       end
  393.       
  394.       actor_x = i * 160 + 4
  395.       draw_actor_hp_meter(actor, actor_x, 32, 120)
  396.       draw_actor_sp_meter(actor, actor_x, 64, 120)
  397.     end
  398.     #######################################################
  399.      refresh if @refresh_flag
  400.   end
  401. end

  402. #========================================================================
  403. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  404. #========================================================================


  405. # —————————————————————————————————

  406. # ▼▲▼ XRXS_BP 2. HP,SPメーター表示 ▼▲▼
  407. # by 桜雅 在土

  408. #========================================================================
  409. # ■ Window_BattleStatus
  410. #========================================================================
  411. class Window_BattleStatus < Window_Base
  412.   #-----------------------------------------------------------------------
  413.   # ● 初始化
  414.   #-----------------------------------------------------------------------
  415.   alias xrxs_bp2_refresh refresh
  416.   def refresh
  417.     xrxs_bp2_refresh
  418.     @item_max = $game_party.actors.size
  419.     for i in 0...$game_party.actors.size
  420.       actor = $game_party.actors[i]
  421.       actor_x = i * 160 + 4
  422.       draw_actor_hp_meter(actor, actor_x, 32, 120)
  423.       draw_actor_sp_meter(actor, actor_x, 64, 120)
  424.     end
  425.   end
  426. end
  427. #========================================================================
  428. # ■ Window_Base
  429. #========================================================================
  430. class Window_Base < Window
  431.   #-----------------------------------------------------------------------
  432.   # ● HP描画
  433.   #-----------------------------------------------------------------------
  434.   def draw_actor_hp_meter(actor, x, y, width = 156, type = 0)
  435.     if type == 1 and actor.hp == 0
  436.       return
  437.     end
  438.     self.contents.font.color = system_color
  439.     self.contents.fill_rect(x-1, y+27, width+2,6, Color.new(0, 0, 0, 255))
  440.    
  441.     w = width * actor.hp2 / [actor.maxhp,1].max
  442.    
  443.     self.contents.fill_rect(x, y+28, w,1, Color.new(255, 96, 96, 255))
  444.     self.contents.fill_rect(x, y+29, w,1, Color.new(255, 0, 0, 255))
  445.     self.contents.fill_rect(x, y+30, w,1, Color.new(128, 0, 0, 255))
  446.     self.contents.fill_rect(x, y+31, w,1, Color.new(0, 0, 0, 255))
  447.   end
  448.   #-----------------------------------------------------------------------
  449.   # ● SP描画
  450.   #-----------------------------------------------------------------------
  451.   def draw_actor_sp_meter(actor, x, y, width = 156, type = 0)
  452.     if type == 1 and actor.hp == 0
  453.       return
  454.     end
  455.     self.contents.font.color = system_color
  456.     self.contents.fill_rect(x-1, y+27, width+2,6, Color.new(0, 0, 0, 255))
  457.    
  458.     w = width * actor.sp2 / [actor.maxsp,1].max
  459.    
  460.     self.contents.fill_rect(x, y+28, w,1, Color.new(128, 255, 255, 255))
  461.     self.contents.fill_rect(x, y+29, w,1, Color.new(0, 255, 255, 255))
  462.     self.contents.fill_rect(x, y+30, w,1, Color.new(0, 192, 192, 255))
  463.     self.contents.fill_rect(x, y+31, w,1, Color.new(0, 128, 128, 255))
  464.   end
  465. end


  466. #========================================================================
  467. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  468. #========================================================================
复制代码


此脚本存在一些Bug。
由于时间问题,待日更正!
不好意思……!{/tp}

Lv1.梦旅人

忘记

梦石
0
星屑
55
在线时间
4 小时
注册时间
2007-12-15
帖子
3062
2
发表于 2008-1-28 01:17:49 | 只看该作者
请上传一张图片{/hx}
因为你哭泣的时候有我想你你被人嘲笑时有我陪你在你感觉最无助的那一刻有个声音鼓励
<font color=#8600E9>忘记</font>
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

3
发表于 2008-1-28 01:41:53 | 只看该作者
鉴于主站类似脚本过多
感谢共享之~~
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

心无天使

梦石
0
星屑
49
在线时间
0 小时
注册时间
2007-12-15
帖子
1016
4
发表于 2008-1-28 03:03:35 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
676
在线时间
224 小时
注册时间
2006-12-7
帖子
839
5
发表于 2008-1-28 05:54:52 | 只看该作者
感谢 下来研究下{/hx}
一直想要的效果 不过貌似很拖速度{/gg}
回复 支持 反对

使用道具 举报

Lv1.梦旅人

B

梦石
0
星屑
50
在线时间
26 小时
注册时间
2007-8-26
帖子
3693
6
 楼主| 发表于 2008-1-28 19:12:06 | 只看该作者
不会啊!我测试的时候看见那血槽掉得很快,不知是爽还是疼!{/hx}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 14:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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