Project1

标题: 怎样制作升级的道具? [打印本页]

作者: jingfp    时间: 2009-11-13 08:43
标题: 怎样制作升级的道具?
本帖最后由 jingfp 于 2009-11-16 13:05 编辑

升级或者增加经验值的道具怎么做,

比如做一个“升级丹”谁吃了谁就升级。或者“经验果”谁吃谁涨经验。
作者: 小幽的马甲    时间: 2009-11-13 09:04
调用公共事件
作者: jingfp    时间: 2009-11-13 09:27
在物品栏里只有HP MP 攻防体精敏的选项,没看到EXP level的。
事件选项里只有给全体或某个ID队员增加exp或level。
我想做的像个恢复剂那样的,菜单里选到谁谁就可以增加1级。
作者: 小幽的马甲    时间: 2009-11-13 10:02
这样啊…利用注释标注下,Scene_Item使用道具那段加个判断。
作者: jingfp    时间: 2009-11-13 10:09
小马甲大人给做个工程吧,注释那里怎样写啊。
作者: 小幽的马甲    时间: 2009-11-13 11:10
很遗憾我现在是手机登录状态…注释里写什么都行,只是做个标记,然后使用物品那段加个类似if item.note==XX的判断
作者: jingfp    时间: 2009-11-13 16:17
这个。。。这个。。。还是不懂啊。。

请小马甲大人回家写个project吧。。:P
作者: wssdrwt    时间: 2009-11-13 17:23
提示: 作者被禁止或删除 内容自动屏蔽
作者: 小幽的马甲    时间: 2009-11-13 21:48
在Game_Battler里分别找到  def item_test与def item_effect,加上红字
  #--------------------------------------------------------------------------
  # ● 物品应用测试
  #     user : 物品使用者
  #     item : 物品
  #    判断在使用对象 HP/MP 满值时禁止回复。
  #--------------------------------------------------------------------------
  def item_test(user, item)
    if item.note == "升级"
      if user.level >= 99
        return false
      else
        return true
      end
    end

    tester = self.clone
    tester.make_obj_damage_value(user, item)
    tester.apply_state_changes(item)
    if tester.hp_damage < 0 or tester.calc_hp_recovery(user, item) > 0
      return true if tester.hp < tester.maxhp
    end
    if tester.mp_damage < 0 or tester.calc_mp_recovery(user, item) > 0
      return true if tester.mp < tester.maxmp
    end
    return true unless tester.added_states.empty?
    return true unless tester.removed_states.empty?
    return true if item.parameter_type > 0
    return false
  end
  #--------------------------------------------------------------------------
  # ● 应用物品效果
  #     user : 物品使用者
  #     item : 物品
  #--------------------------------------------------------------------------
  def item_effect(user, item)
    clear_action_results
    unless item_effective?(user, item)
      @skipped = true
      return
    end
    if rand(100) >= calc_hit(user, item)          # 判断命中
      @missed = true
      return
    end
    if rand(100) < calc_eva(user, item)           # 判断回避
      @evaded = true
      return
    end
    if item.note == "升级"
      user.level_up
      return
    end

    hp_recovery = calc_hp_recovery(user, item)    # 计算 HP 回复量
    mp_recovery = calc_mp_recovery(user, item)    # 计算 MP 回复量
    make_obj_damage_value(user, item)             # 计算伤害
    @hp_damage -= hp_recovery                     # 减去 HP 回复量
    @mp_damage -= mp_recovery                     # 减去 MP 回复量
    make_obj_absorb_effect(user, item)            # 计算吸收效果
    execute_damage(user)                          # 反映伤害
    item_growth_effect(user, item)                # 应用成长效果
    if item.physical_attack and @hp_damage == 0   # 判断物理攻击无效
      return                                    
    end
    apply_state_changes(item)                     # 状态变化
  end

事件里那个道具的注释里写上“升级”,使用条件为菜单中
会与使用到道具注释的脚本冲突
作者: geshujing    时间: 2009-11-14 22:27
受教了 但是看不懂脚本………………
作者: jingfp    时间: 2009-11-16 13:05
又学了一招。




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