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

Project1

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

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

[复制链接]

Lv4.逐梦者

梦石
0
星屑
13614
在线时间
3850 小时
注册时间
2013-7-18
帖子
2310
跳转到指定楼层
1
发表于 2016-2-21 17:33:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

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

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

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

RUBY 代码复制
  1. class Scene_Battle
  2.   #--------------------------------------------------------------------------
  3.   # ● 开始结束战斗回合
  4.   #--------------------------------------------------------------------------
  5.   def start_phase5
  6.     # 转移到回合 5
  7.     @phase = 5
  8.     # 演奏战斗结束 ME
  9.     $game_system.me_play($game_system.battle_end_me)
  10.     # 还原为战斗开始前的 BGM
  11.     $game_system.bgm_play($game_temp.map_bgm)
  12.     # 初始化 EXP、金钱、宝物
  13.     exp = 0
  14.     gold = 0
  15.     treasures = []
  16.  
  17.     for enemy in $game_troop.enemies
  18.       unless enemy.hidden
  19.         exp += enemy.exp
  20.         gold += enemy.gold
  21.         if rand(100) < enemy.treasure_prob
  22.           if enemy.item_id > 0
  23.             treasures.push($data_items[enemy.item_id])
  24.           end
  25.           if enemy.weapon_id > 0
  26.             treasures.push($data_weapons[enemy.weapon_id])
  27.           end
  28.           if enemy.armor_id > 0
  29.             treasures.push($data_armors[enemy.armor_id])
  30.           end
  31.         end
  32.       end
  33.     end
  34.  
  35.     多格掉宝 = {} # 初始化
  36.  
  37.     # ---------------------------
  38.     # 多格掉宝 设置
  39.     # ---------------------------
  40.  
  41.     # 多格掉宝[敌人id] = [掉宝类型,id以及概率的数组]
  42.  
  43.     # 掉宝类型,id以及概率的数组 说明:
  44.     # 索引为 0 的值
  45.     # 0 是 物品 1 是武器 2 是防具
  46.     # 索引为 1 的值
  47.     # 物品 武器 防具 的 id
  48.     # 索引为 2 的值
  49.     # 概率
  50.  
  51.     # 设置范例
  52.  
  53. #这里如何添加分歧?
  54.  
  55.     多格掉宝[1] = [[0, 1, 15], [0, 2, 14]]
  56.  
  57.  
  58.  
  59.     # ----------------------------------------
  60.     for enemy in $game_troop.enemies
  61.     unless enemy.hidden
  62.     if 多格掉宝[enemy.id] != nil
  63.        for i in 多格掉宝[enemy.id]
  64.           概率 = i[2]
  65.           case i[0]
  66.           when 0 # 物品
  67.             if rand(100) < 概率
  68.               if $data_items[i[1]] != nil
  69.                 treasures.push($data_items[i[1]])
  70.               end
  71.             end
  72.           when 1 # 武器
  73.             if rand(100) < 概率
  74.               if $data_weapons[i[1]] != nil
  75.                 treasures.push($data_weapons[i[1]])
  76.               end
  77.             end
  78.           when 2 # 防具
  79.             if rand(100) < 概率
  80.               if $data_armors[i[1]] != nil
  81.                 treasures.push($data_armors[i[1]])
  82.               end
  83.             end
  84.           end
  85.        end
  86.     end
  87.     end
  88.     end
  89.     # ----------------------------------------
  90.     for i in 0...$game_party.actors.size
  91.       actor = $game_party.actors[i]
  92.       if actor.cant_get_exp? == false
  93.         last_level = actor.level
  94.         actor.exp += exp
  95.         if actor.level > last_level
  96.           @status_window.level_up(i)
  97.         end
  98.       end
  99.     end
  100.     # 获得金钱
  101.     $game_party.gain_gold(gold)
  102.     # 获得宝物
  103.     for item in treasures
  104.       case item
  105.       when RPG::Item
  106.         $game_party.gain_item(item.id, 1)
  107.       when RPG::Weapon
  108.         $game_party.gain_weapon(item.id, 1)
  109.       when RPG::Armor
  110.         $game_party.gain_armor(item.id, 1)
  111.       end
  112.     end
  113.     # 生成战斗结果窗口
  114.     @result_window = Window_BattleResult.new(exp, gold, treasures)
  115.     # 设置等待计数
  116.     @phase5_wait_count = 0
  117.   end
  118. end

山岚野人,快人快语,礼数不周,还望海涵....

Lv2.观梦者

梦石
0
星屑
596
在线时间
797 小时
注册时间
2014-7-1
帖子
578

开拓者

2
发表于 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 塞糖

查看全部评分

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-11 22:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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