Project1

标题: [已解决]另一个问题单问了 [打印本页]

作者: 本子喵    时间: 2017-4-6 13:40
标题: [已解决]另一个问题单问了
本帖最后由 本子喵 于 2017-4-9 16:55 编辑

这个是一个自动复活的脚本,但是每回合只能复活一次,打游戏时候却敌人一回合干死好几次,怎么能改成每回合多次复活呢?

1.png (51.7 KB, 下载次数: 30)

1.png

作者: 本子喵    时间: 2017-4-6 13:47
还有这个能力超帅气,能把hp伤害50%转化成mp伤害,一次攻击同时造成hpmp损伤,但是却限定了技能和敌人攻击,没法添加在人物备注,怎么改能让人物常规攻击也能用呢,这个要是太难改就算了

2.png (9.53 KB, 下载次数: 35)

2.png

3.png (15.98 KB, 下载次数: 36)

3.png

4.png (34.23 KB, 下载次数: 38)

4.png

5.png (15.76 KB, 下载次数: 38)

5.png

6.png (23.81 KB, 下载次数: 37)

6.png

7.png (10.39 KB, 下载次数: 39)

7.png

作者: 本子喵    时间: 2017-4-6 19:15
喵喵喵没人吗~

20160214232445_PRw8v_thumb_700_0.jpg (25.88 KB, 下载次数: 38)

20160214232445_PRw8v_thumb_700_0.jpg

作者: 本子喵    时间: 2017-4-6 21:08
本子喵 发表于 2017-4-6 19:15
喵喵喵没人吗~

可是萌新连半窍都不通,只会按关键字搜索
作者: 本子喵    时间: 2017-4-6 21:13
  #--------------------------------------------------------------------------
  # ☆ オートリザレクションのメッセージの表示
  #--------------------------------------------------------------------------
  def display_autorevive_message(battler)
    return if battler.hp != 0
#~     p "オートリザレクション"
    fmt = Vocab::Revive
    add_text(sprintf(fmt, battler.name))
    wait
  end

  # ☆ オートリザレクション判定(追加定義)
  #--------------------------------------------------------------------------
  def auto_revive
    read = battler_add_ability(1)
    return false if @actor_add_cheack[1] == true
    return false if @actor_add_delay[1] > 0
    return false if @actor_add_counter[1] < 1
    @actor_add_cheack[1] = true
    read = battler_add_ability(1) # ここでやってええやろ add zorome
    return false if read[1] < rand(100) #確率判定
    return 1 if read[0] > 1  
    return read[0] if read[0] != 0
    return false
  end
  #--------------------------------------------------------------------------
  # ☆ オートリザレクション(追加定義)
  #--------------------------------------------------------------------------
  def revive_life(rper)
    if self.hp != 0
      @actor_add_cheack[1] = false
      return
    end
    self.hp = (mhp * rper).to_i
    self.mp = (mmp * rper).to_i
    #オートリザレクションステートの解除
    states.each do |state|
      if state.battler_add_ability(1)[0] != 0
        erase_state(state.id)
      end
    end   
    @actor_add_counter[1] -= 1
  end

      #オートリザレクション
      read_arr = [0,0,0,0]
      while cheak_note do
        cheak_note.match(/<オートリザレクション\s?(\d+)%\s?,\s?(\d+)%\s?,\s?(\d+)\s?,\s?(\d+)>/)
        if $1 && $2 && $3 && $4
          value = [[read_arr[0],$1.to_i].max,[read_arr[1],$2.to_i].max,[read_arr[2],$3.to_i].max,[read_arr[3],$4.to_i].max]
          read_arr = value
        end
        cheak_note = $'
      end
      battler_add = read_arr

    # オートリザレクション、踏みとどまり配列を作成
    auto_revive_battler = Array.new
    all_battle_members.each do |battler|
      push = battler.auto_revive
      auto_revive_battler.push([battler,push]) if push
    end
   

    #オートリザレクション実行
    auto_revive_battler.each do |battler_list|
      @log_window.display_autorevive_message(battler_list[0])
      battler_list[0].revive_life(battler_list[1])
      refresh_status
      @log_window.wait_and_clear
    end
   
    #オートリザレクション配列を作成
    auto_revive_battler = Array.new

      #オートリザレクション
      push = battler.auto_revive
      auto_revive_battler.push([battler,push]) if push

    #オートリザレクション実行
    auto_revive_battler.each do |battler_list|
      @log_window.display_autorevive_message(battler_list[0])
      battler_list[0].revive_life(battler_list[1])
      refresh_status
      @log_window.wait_and_clear
    end

这是萌新找到的所有关于自动复活的脚本了
作者: 本子喵    时间: 2017-4-6 21:18
  # ● [追加]:MP同時ダメージ add zorome
  #--------------------------------------------------------------------------
  def m_double_rate
#~     rate = 0
   
    return 0 unless @note
    @note.match(/<#{DRAIN_ATTACK::MPDDR}[::](\S+)>/)
    return 0 unless $1
    return $1.to_i
   
  end # def

    # MP同時ダメージ処理 add zorome
    if item.is_a?(RPG::Skill) == true
      # temp_md_rate = user.m_double_rate # 武器防具ならこっちだが、
      temp_md_rate = item.m_double_rate # スキルなので
      if temp_md_rate > 0
        # p "Game_Battler make_damage_value item.id = #{item.id}" # add zorome
        # p "  元 value = #{value}"
        # p "  元 temp_md_rate = #{temp_md_rate}"
        temp_md_damage = value * temp_md_rate / 100
        # temp_md_damage = value * temp_md_rate * 0.01 # 少数は×
        value -= temp_md_damage.round.to_i
        value = 0 if value < 0
        # p "  temp_md_damage = #{temp_md_damage}"
        # p "  減 value = #{value}"
      end
    end

    # MP同時ダメージ処理 add zorome
    if item.is_a?(RPG::Skill) == true
      if temp_md_rate > 0
        @result.mp_damage += temp_md_damage.to_i
        @result.mp_damage = [self.mp, @result.mp_damage].min
      end
      
  # ● [追加]:MP同時ダメージ add zorome
  #--------------------------------------------------------------------------
#~   def m_double_rate
#~     rate = 0
#~     feature_objects.each do |object|
#~       data = object.note
#~       data.each_line { |line|
#~       memo = line.scan(/<#{DRAIN_ATTACK::MPDDR}[::](\S+)>/)
#~       memo = memo.flatten
#~       rate += memo[0].to_i if memo != nil && !memo.empty?
#~       }
#~     end
#~     return rate
#~   end # def
end # class
这个是帅气的mp同时伤害转换,萌新还是按搜索来的,这个要不行就算了,只是帅气,上边那个一回合多次触发自动复活更重要一些
作者: 世界第一中二    时间: 2017-4-6 22:13
本帖最后由 世界第一中二 于 2017-4-6 22:15 编辑

你说的这个不就是战法么
老鹰大大有帮我写过脚本,给你啦,这是第二个问题的解答
  1. #==============================================================================
  2. # ■ MP百分比抵消HP伤害的装备  by 老鹰
  3. #------------------------------------------------------------------------------
  4. #  在 武器/护甲 的备注栏填写 <Mega Ring> 即可作为此类装备
  5. #    注:多件装备下,效果会叠加
  6. #
  7. #  ---装备效果
  8. #    利用角色当前的 mp百分比 转化 所受伤害百分比 为 mp伤害
  9. #    例: mp为50点,mmp为100点,受到 40点伤害,
  10. #         则转化 (mp)50 / (mmp)100 % 伤害为 mp伤害(即 40* 50/100)
  11. #         剩余部分依旧为 hp伤害(即 40 - 40*50/100)
  12. #    注:当剩余mp不足时,溢出伤害依旧扣除hp
  13. #    注2:本实现并不考虑显示问题,请自行整合战斗系统中关于 result.mp_damage 数值的显示
  14. #
  15. #  ---实现
  16. #    在确定下为 hp伤害 后,直接最后再调整为 mp伤害
  17. #==============================================================================
  18. class Game_ActionResult
  19.   def make_mp_offset_damage(actor)
  20.     @mp_damage = (1.0 * actor.mp / actor.mmp * @hp_damage).to_i
  21.     @mp_damage = actor.mp if @mp_damage > actor.mp
  22.     @hp_damage -= @mp_damage
  23.   end
  24. end

  25. class Game_Actor < Game_Battler
  26.   alias eagle_mage_offset_make_damage make_damage_value
  27.   def make_damage_value(user, item)
  28.     eagle_mage_offset_make_damage(user, item)
  29.     check_mega_offset unless item.damage.to_mp? || @result.hp_damage < 0
  30.   end

  31.   def check_mega_offset
  32.     equips.each do |i|
  33.       next unless i
  34.       @result.make_mp_offset_damage(self) if (i.note =~ /<Mega Ring>/) != nil
  35.     end
  36.   end
  37. end
复制代码


具体效果参照我这个帖子:https://rpg.blue/forum.php?mod=viewthread&tid=399038
作者: 本子喵    时间: 2017-4-7 00:49
世界第一中二 发表于 2017-4-6 22:13
你说的这个不就是战法么
老鹰大大有帮我写过脚本,给你啦,这是第二个问题的解答

不是这个不是这个,你这个是用mp抵消hp伤害,是防御,窝想要的是攻击转换
就是窝正常打敌人一下伤害100点hp,这个转换后就变成了窝打一下敌人
敌人同时损失50点hp、50点mp
作者: 阿薩男爵    时间: 2017-4-7 06:37
我大概看了一下你这个问题,给你一个解决方案,我之前一个游戏里也设计过这么一类角色,战斗中每回合结束如果处于战斗不能的状态就会自动复活。
既然你要求的是多次复活,我也可以告诉你这个办法。
要做到这个效果根本不需要用脚本,公用事件就可以了。
首先,在公用事件里面设置这么一个事件,大意就是让你的同伴自动复活。
(如果是特定同伴有这样的能力,那么有几个就设置几个)

之后在【所有的】【敌群】文件里这样设置一下,这样的效果就是每回合都会判定一次。

如果是持有特定道具才会有这样的效果的话,比如持有【身代人形】或【免死符】的时候可以自动复活一次,就需要这样设置。

可以看出这个和之前的是同一个事件,所有的设置都在这个公用事件里面改动即可。
希望能帮到你,如果这个方法遇到什么问题也可以留言问我。
作者: 本子喵    时间: 2017-4-7 11:14
阿薩男爵 发表于 2017-4-7 06:37
我大概看了一下你这个问题,给你一个解决方案,我之前一个游戏里也设计过这么一类角色,战斗中每回合结束如 ...

2333~虽然很感谢前辈,但是实在不想用这个啊,那个游戏很大,敌群999个....
作者: congwsbn    时间: 2017-4-7 11:23
第一个大概、可能、也许是这一句…(这脚本弹错的我也没法测试
  1. return false if @actor_add_counter[1] < 1
复制代码

把最后那个1改成其它数字试试看?无限就是999之类的
作者: 本子喵    时间: 2017-4-7 12:01
congwsbn 发表于 2017-4-7 11:23
第一个大概、可能、也许是这一句…(这脚本弹错的我也没法测试

把最后那个1改成其它数字试试看?无限就是9 ...

已经试过了,还是一回合触发一次
作者: 本子喵    时间: 2017-4-7 12:17
本子喵 发表于 2017-4-7 12:01
已经试过了,还是一回合触发一次

那个游戏超变态的,基本上都是两排五六个以上敌人群殴主角,而且敌人好多都有多段攻击,到后期一回合死几次都是正常,要不是作者给主角弄了个消耗黄金抵消伤害,后期敌人一个回合主角就要损失数万甚至十数万的hp,但是这个游戏绝大部分敌人根本不掉金币,不掉金币,因为很重要所以说两次,所以窝才想给主角开个小挂
作者: 本子喵    时间: 2017-4-8 14:27
(抽泣抽泣~)萌新求大佬支援~

5f738bd4b31c8701159edfcf207f9e2f0708ffeb.jpg (31.29 KB, 下载次数: 34)

5f738bd4b31c8701159edfcf207f9e2f0708ffeb.jpg

作者: 本子喵    时间: 2017-4-8 17:28
萌新已经解决自动复活的问题了2333,继续求问帅气的mp伤害转换问题




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