Project1

标题: 中毒而死~~ [打印本页]

作者: yehaojie    时间: 2008-7-29 22:01
标题: 中毒而死~~
我在测试战斗时突然发现一个问题-_-

如图当怪物是中毒伤害而死的话,怪物不会消失---(角色也是如此,如果角色中毒伤害而死,也不会消失-_-||)
如何解决? [LINE]1,#dddddd[/LINE]此贴于 2008-7-31 0:40:40 被版主darkten提醒,请楼主看到后对本贴做出回应。
作者: 凌冰    时间: 2008-7-29 22:04
不是默认系统的错误

把你的范例传上来吧
作者: yehaojie    时间: 2008-7-29 22:29
我只弄了些战斗的{/gg}
http://rpg.blue/upload_program/f ... 文件_97770557.rar
作者: zl90349166    时间: 2008-7-29 22:34
提示: 作者被禁止或删除 内容自动屏蔽
作者: yehaojie    时间: 2008-7-29 22:36
以下引用zl90349166于2008-7-29 14:34:23的发言:

这不可能是RMXP本身的错误吧?估计是LZ的数据库里的设置有问题!
顺便再问一句。。。请问LZ发的这张图片中的敌人的素材是在哪找
的?

不会吧~我设置的应该对啊~{/gg}-_-对了~这设置跟因状态死亡好象没关系{/gg}
作者: 很牛滴靓仔⒅    时间: 2008-7-29 22:38
提示: 作者被禁止或删除 内容自动屏蔽
作者: yehaojie    时间: 2008-7-29 22:39
以下引用很牛滴靓仔⒅于2008-7-29 14:38:07的发言:

是什么战斗?超级横板?横板?45度?全动画?还是.....

纯45度~只是角度调成了横板
忘了说~有战斗待机{/gg}
作者: 很牛滴靓仔⒅    时间: 2008-7-29 22:40
提示: 作者被禁止或删除 内容自动屏蔽
作者: yehaojie    时间: 2008-7-29 22:56
  1. #==============================================================================
  2. # ■ Game_Battler (分割定义 2)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
  5. # 超级类来使用。
  6. #==============================================================================

  7. class Game_Battler
  8.   #--------------------------------------------------------------------------
  9.   # ● 检查状态
  10.   #     state_id : 状态 ID
  11.   #--------------------------------------------------------------------------
  12.   def state?(state_id)
  13.     # 如果符合被附加的状态的条件就返回 ture
  14.     return @states.include?(state_id)
  15.   end
  16.   #--------------------------------------------------------------------------
  17.   # ● 判断状态是否为 full
  18.   #     state_id : 状态 ID
  19.   #--------------------------------------------------------------------------
  20.   def state_full?(state_id)
  21.     # 如果符合被附加的状态的条件就返回 false
  22.     unless self.state?(state_id)
  23.       return false
  24.     end
  25.     # 秩序回合数 -1 (自动状态) 然后返回 true
  26.     if @states_turn[state_id] == -1
  27.       return true
  28.     end
  29.     # 当持续回合数等于自然解除的最低回合数时返回 ture
  30.     return @states_turn[state_id] == $data_states[state_id].hold_turn
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● 附加状态
  34.   #     state_id : 状态 ID
  35.   #     force    : 强制附加标志 (处理自动状态时使用)
  36.   #--------------------------------------------------------------------------
  37.   def add_state(state_id, force = false)
  38.     # 无效状态的情况下
  39.     if $data_states[state_id] == nil
  40.       # 过程结束
  41.       return
  42.     end
  43.     # 无法强制附加的情况下
  44.     unless force
  45.       # 已存在的状态循环
  46.       for i in @states
  47.         # 新的状态和已经存在的状态 (-) 同时包含的情况下、
  48.         # 本状态不包含变化为新状态的状态变化 (-)
  49.         # (ex : 战斗不能与附加中毒同时存在的场合)
  50.         if $data_states[i].minus_state_set.include?(state_id) and
  51.            not $data_states[state_id].minus_state_set.include?(i)
  52.           # 过程结束
  53.           return
  54.         end
  55.       end
  56.     end
  57.     # 无法附加本状态的情况下
  58.     unless state?(state_id)
  59.       # 状态 ID 追加到 @states 序列中
  60.       @states.push(state_id)
  61.       # 选项 [当作 HP 0 的状态] 有效的情况下
  62.       if $data_states[state_id].zero_hp
  63.         # HP 更改为 0
  64.         @hp = 0
  65.       end
  66.       # 所有状态的循环
  67.       for i in 1...$data_states.size
  68.         # 状态变化 (+) 处理
  69.         if $data_states[state_id].plus_state_set.include?(i)
  70.           add_state(i)
  71.         end
  72.         # 状态变化 (-) 处理
  73.         if $data_states[state_id].minus_state_set.include?(i)
  74.           remove_state(i)
  75.         end
  76.       end
  77.       # 按比例大的排序 (值相等的情况下按照强度排序)
  78.       @states.sort! do |a, b|
  79.         state_a = $data_states[a]
  80.         state_b = $data_states[b]
  81.         if state_a.rating > state_b.rating
  82.           -1
  83.         elsif state_a.rating < state_b.rating
  84.           +1
  85.         elsif state_a.restriction > state_b.restriction
  86.           -1
  87.         elsif state_a.restriction < state_b.restriction
  88.           +1
  89.         else
  90.           a <=> b
  91.         end
  92.       end
  93.     end
  94.     # 强制附加的场合
  95.     if force
  96.       # 设置为自然解除的最低回数 -1 (无效)
  97.       @states_turn[state_id] = -1
  98.     end
  99.     # 不能强制附加的场合
  100.     unless  @states_turn[state_id] == -1
  101.       # 设置为自然解除的最低回数
  102.       @states_turn[state_id] = $data_states[state_id].hold_turn
  103.     end
  104.     # 无法行动的场合
  105.     unless movable?
  106.       # 清除行动
  107.       @current_action.clear
  108.     end
  109.     # 检查 HP 及 SP 的最大值
  110.     @hp = [@hp, self.maxhp].min
  111.     @sp = [@sp, self.maxsp].min
  112.   end
  113.   #--------------------------------------------------------------------------
  114.   # ● 解除状态
  115.   #     state_id : 状态 ID
  116.   #     force    : 强制解除标志 (处理自动状态时使用)
  117.   #--------------------------------------------------------------------------
  118.   def remove_state(state_id, force = false)
  119.     # 无法附加本状态的情况下
  120.     if state?(state_id)
  121.       # 被强制附加的状态、并不是强制解除的情况下
  122.       if @states_turn[state_id] == -1 and not force
  123.         # 过程结束
  124.         return
  125.       end
  126.       # 现在的 HP 为 0 当作选项 [当作 HP 0 的状态]有效的场合
  127.       if @hp == 0 and $data_states[state_id].zero_hp
  128.         # 判断是否有另外的 [当作 HP 0 的状态]状态
  129.         zero_hp = false
  130.         for i in @states
  131.           if i != state_id and $data_states[i].zero_hp
  132.             zero_hp = true
  133.           end
  134.         end
  135.         # 如果可以解除战斗不能、将 HP 更改为 1
  136.         if zero_hp == false
  137.           @hp = 1
  138.         end
  139.       end
  140.       # 将状态 ID 从 @states 队列和 @states_turn hash 中删除
  141.       @states.delete(state_id)
  142.       @states_turn.delete(state_id)
  143.     end
  144.     # 检查 HP 及 SP 的最大值
  145.     @hp = [@hp, self.maxhp].min
  146.     @sp = [@sp, self.maxsp].min
  147.   end
  148.   #--------------------------------------------------------------------------
  149.   # ● 获取状态的动画 ID
  150.   #--------------------------------------------------------------------------
  151.   def state_animation_id
  152.     # 一个状态也没被附加的情况下
  153.     if @states.size == 0
  154.       return 0
  155.     end
  156.     # 返回概率最大的状态动画 ID
  157.     return $data_states[@states[0]].animation_id
  158.   end
  159.   #--------------------------------------------------------------------------
  160.   # ● 获取限制
  161.   #--------------------------------------------------------------------------
  162.   def restriction
  163.     restriction_max = 0
  164.     # 从当前附加的状态中获取最大的 restriction
  165.     for i in @states
  166.       if $data_states[i].restriction >= restriction_max
  167.         restriction_max = $data_states[i].restriction
  168.       end
  169.     end
  170.     return restriction_max
  171.   end
  172.   #--------------------------------------------------------------------------
  173.   # ● 判断状态 [无法获得 EXP]
  174.   #--------------------------------------------------------------------------
  175.   def cant_get_exp?
  176.     for i in @states
  177.       if $data_states[i].cant_get_exp
  178.         return true
  179.       end
  180.     end
  181.     return false
  182.   end
  183.   #--------------------------------------------------------------------------
  184.   # ● 判断状态 [无法回避攻击]
  185.   #--------------------------------------------------------------------------
  186.   def cant_evade?
  187.     for i in @states
  188.       if $data_states[i].cant_evade
  189.         return true
  190.       end
  191.     end
  192.     return false
  193.   end
  194.   #--------------------------------------------------------------------------
  195.   # ● 判断状态 [连续伤害]
  196.   #--------------------------------------------------------------------------
  197.   def slip_damage?
  198.     for i in @states
  199.       if $data_states[i].slip_damage
  200.         return true
  201.       end
  202.     end
  203.     return false
  204.   end
  205.   #--------------------------------------------------------------------------
  206.   # ● 解除战斗用状态 (战斗结束时调用)
  207.   #--------------------------------------------------------------------------
  208.   def remove_states_battle
  209.     for i in @states.clone
  210.       if $data_states[i].battle_only
  211.         remove_state(i)
  212.       end
  213.     end
  214.   end
  215.   #--------------------------------------------------------------------------
  216.   # ● 状态自然解除 (回合改变时调用)
  217.   #--------------------------------------------------------------------------
  218.   def remove_states_auto
  219.     for i in @states_turn.keys.clone
  220.       if @states_turn[i] > 0
  221.         @states_turn[i] -= 1
  222.       elsif rand(100) < $data_states[i].auto_release_prob
  223.         remove_state(i)
  224.       end
  225.     end
  226.   end
  227.   #--------------------------------------------------------------------------
  228.   # ● 状态攻击解除 (受到物理伤害时调用)
  229.   #--------------------------------------------------------------------------
  230.   def remove_states_shock
  231.     for i in @states.clone
  232.       if rand(100) < $data_states[i].shock_release_prob
  233.         remove_state(i)
  234.       end
  235.     end
  236.   end
  237.   #--------------------------------------------------------------------------
  238.   # ● 状态变化 (+) 的适用
  239.   #     plus_state_set  : 状态变化 (+)
  240.   #--------------------------------------------------------------------------
  241.   def states_plus(plus_state_set)
  242.     # 清除有效标志
  243.     effective = false
  244.     # 循环 (附加状态)
  245.     for i in plus_state_set
  246.       # 无法防御本状态的情况下
  247.       unless self.state_guard?(i)
  248.         # 这个状态如果不是 full 的话就设置有效标志
  249.         effective |= self.state_full?(i) == false
  250.         # 状态为 [不能抵抗] 的情况下
  251.         if $data_states[i].nonresistance
  252.           # 设置状态变化标志
  253.           @state_changed = true
  254.           # 附加状态
  255.           add_state(i)
  256.         # 这个状态不是 full 的情况下
  257.         elsif self.state_full?(i) == false
  258.           # 将状态的有效度变换为概率、与随机数比较
  259.           if rand(100) < [0,100,80,60,40,20,0][self.state_ranks[i]]
  260.             # 设置状态变化标志
  261.             @state_changed = true
  262.             # 附加状态
  263.             add_state(i)
  264.           end
  265.         end
  266.       end
  267.     end
  268.     # 过程结束
  269.     return effective
  270.   end
  271.   #--------------------------------------------------------------------------
  272.   # ● 状态变化 (-) 的使用
  273.   #     minus_state_set : 状态变化 (-)
  274.   #--------------------------------------------------------------------------
  275.   def states_minus(minus_state_set)
  276.     # 清除有效标志
  277.     effective = false
  278.     # 循环 (解除状态)
  279.     for i in minus_state_set
  280.       # 如果这个状态被附加则设置有效标志
  281.       effective |= self.state?(i)
  282.       # 设置状态变化标志
  283.       @state_changed = true
  284.       # 解除状态
  285.       remove_state(i)
  286.     end
  287.     # 过程结束
  288.     return effective
  289.   end
  290. end
复制代码

是不是要改这个?{/gg}




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