查看: 2584|回复: 1

[已经解决] 这个多格掉宝脚本如何添加条件分歧

[复制链接]
梦石
0
星屑
17561
在线时间
4249 小时
注册时间
2013-7-18
回帖
2491
发表于 2016-2-21 17:33:18 | 显示全部楼层 |阅读模式

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

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

×
举例设置id为1的怪物可掉宝三种情况,也就是三个难度,难度小的爆出东西少,概率小

设置一个游戏难度变量 1号变量 当游戏难度为1时,1号怪掉宝为物品1,2,难度为2时,1号怪掉宝为1,2,3,难度为3时,掉宝为1,2,3,4

掉宝率暂不管,脚本如何改呢,用when ,还是if语句........范例设置在55行

[pre lang="ruby"]class Scene_Battle
  #--------------------------------------------------------------------------
  # ● 开始结束战斗回合
  #--------------------------------------------------------------------------
  def start_phase5
    # 转移到回合 5
    @phase = 5
    # 演奏战斗结束 ME
    $game_system.me_play($game_system.battle_end_me)
    # 还原为战斗开始前的 BGM
    $game_system.bgm_play($game_temp.map_bgm)
    # 初始化 EXP、金钱、宝物
    exp = 0
    gold = 0
    treasures = []
   
    for enemy in $game_troop.enemies
      unless enemy.hidden
        exp += enemy.exp
        gold += enemy.gold
        if rand(100) < enemy.treasure_prob
          if enemy.item_id > 0
            treasures.push($data_items[enemy.item_id])
          end
          if enemy.weapon_id > 0
            treasures.push($data_weapons[enemy.weapon_id])
          end
          if enemy.armor_id > 0
            treasures.push($data_armors[enemy.armor_id])
          end
        end
      end
    end
   
    多格掉宝 = {} # 初始化
   
    # ---------------------------
    # 多格掉宝 设置
    # ---------------------------
   
    # 多格掉宝[敌人id] = [掉宝类型,id以及概率的数组]
   
    # 掉宝类型,id以及概率的数组 说明:
    # 索引为 0 的值
    # 0 是 物品 1 是武器 2 是防具
    # 索引为 1 的值
    # 物品 武器 防具 的 id
    # 索引为 2 的值
    # 概率
   
    # 设置范例

#这里如何添加分歧?

    多格掉宝[1] = [[0, 1, 15], [0, 2, 14]]
   
   
   
    # ----------------------------------------
    for enemy in $game_troop.enemies
    unless enemy.hidden
    if 多格掉宝[enemy.id] != nil
       for i in 多格掉宝[enemy.id]
          概率 = i[2]
          case i[0]
          when 0 # 物品
            if rand(100) < 概率
              if $data_items[i[1]] != nil
                treasures.push($data_items[i[1]])
              end
            end
          when 1 # 武器
            if rand(100) < 概率
              if $data_weapons[i[1]] != nil
                treasures.push($data_weapons[i[1]])
              end
            end
          when 2 # 防具
            if rand(100) < 概率
              if $data_armors[i[1]] != nil
                treasures.push($data_armors[i[1]])
              end
            end
          end
       end
    end
    end
    end
    # ----------------------------------------
    for i in 0...$game_party.actors.size
      actor = $game_party.actors
      if actor.cant_get_exp? == false
        last_level = actor.level
        actor.exp += exp
        if actor.level > last_level
          @status_window.level_up(i)
        end
      end
    end
    # 获得金钱
    $game_party.gain_gold(gold)
    # 获得宝物
    for item in treasures
      case item
      when RPG::Item
        $game_party.gain_item(item.id, 1)
      when RPG::Weapon
        $game_party.gain_weapon(item.id, 1)
      when RPG::Armor
        $game_party.gain_armor(item.id, 1)
      end
    end
    # 生成战斗结果窗口
    @result_window = Window_BattleResult.new(exp, gold, treasures)
    # 设置等待计数
    @phase5_wait_count = 0
  end
end[/pre]
退隐....
梦石
0
星屑
606
在线时间
797 小时
注册时间
2014-7-1
回帖
501

开拓者

发表于 2016-2-21 17:57:30 | 显示全部楼层
本帖最后由 jiushiainilip19 于 2016-2-21 19:02 编辑

if $game_variables[1]==1
多格掉宝[1] = [[0, 1, 15], [0, 2, 14]]
elsif $game_variables[1]==2
多格掉宝[1] = [[0, 1, 15], [0, 2, 14]]
end

case  $game_variables[1]
  when 1
多格掉宝[1] = [[0, 1, 15], [0, 2, 14]]
  when 2
多格掉宝[1] = [[0, 1, 15], [0, 2, 14]]
  when 3
多格掉宝[1] = [[0, 1, 15], [0, 2, 14]]
end

应该看得懂吧 掉什么就自己设定了

点评

明白,只是第2个方法比较省事  发表于 2016-2-21 19:59
第一个因为我没有改变变量==多少 我以为看得明白。  发表于 2016-2-21 19:02
用了第2个,成功了,多谢大侠  发表于 2016-2-21 18:57

评分

参与人数 3星屑 +250 收起 理由
RyanBern + 200 认可答案
y967 + 30 塞糖
夜狠简单 + 20 塞糖

查看全部评分

学习使我疲劳,打工使我疲惫,恋爱使我伤身,吸烟伤我肺腑,饮酒损我形象,旅游使我破费,月底不见铜板,只有在论坛里面看看各种大佬才能使我进去
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部