Project1

标题: 怎么设置怪物掉落多个物品? [打印本页]

作者: zui3320    时间: 2011-7-17 22:34
标题: 怎么设置怪物掉落多个物品?
怎么设置怪物掉落多个物品? 弄来弄去还是只能设置掉落一个dsu_plus_rewardpost_czw
作者: Wind2010    时间: 2011-7-17 22:44
  1. $shizi_battle_result = []
  2. #上面这个依旧是初始化用,不用管
  3. $shizi_battle_result_goldrand = false #是否开启随机金钱
  4. $shizi_battle_result_goldrandnum = 50 #随机幅度为50
  5. $shizi_battle_result_exprand = false #是否开启随机经验
  6. $shizi_battle_result_exprandnum = 30 #随机幅度为30
  7. $shizi_battle_result_max = 99 #最多获得99件宝物
  8. #宝物设置的格式:
  9. #$shizi_battle_result[*] = [怪物ID,[ [宝物类型,宝物ID,宝物出现几率] , [宝物类型,宝物ID,宝物出现几率]]
  10. #宝物类型:
  11. #0、物品
  12. #1、武器
  13. #2、防具
  14. $shizi_battle_result[0] = [1,[[2,1,70],[1,2,40]]]
  15. #下面是脚本内容
  16. class Scene_Battle
  17.   def start_phase5
  18.     @phase = 5
  19.     $game_system.me_play($game_system.battle_end_me)
  20.     $game_system.bgm_play($game_temp.map_bgm)
  21.     exp = 0
  22.     gold = 0
  23.     treasures = []
  24.     for enemy in $game_troop.enemies
  25.       unless enemy.hidden
  26.         exp += enemy.exp
  27.         gold += enemy.gold
  28.         if rand(100) < enemy.treasure_prob
  29.           if enemy.item_id > 0
  30.             treasures.push($data_items[enemy.item_id])
  31.           end
  32.           if enemy.weapon_id > 0
  33.             treasures.push($data_weapons[enemy.weapon_id])
  34.           end
  35.           if enemy.armor_id > 0
  36.             treasures.push($data_armors[enemy.armor_id])
  37.           end
  38.           for i in $shizi_battle_result
  39.             if enemy.id == i[0]
  40.               for shizi in i[1]
  41.                 if rand(100) < shizi[2]
  42.                   case shizi[0]
  43.                   when 0
  44.                     treasures.push($data_items[shizi[1]])
  45.                   when 1
  46.                     treasures.push($data_weapons[shizi[1]])
  47.                   when 2
  48.                     treasures.push($data_armors[shizi[1]])
  49.                   end
  50.                 end
  51.               end
  52.             end
  53.           end
  54.         end
  55.       end
  56.     end
  57.     treasures = treasures[0...$shizi_battle_result_max]
  58.     gold = rand($shizi_battle_result_goldrandnum*2)-$shizi_battle_result_goldrandnum+gold if gold >= $shizi_battle_result_goldrandnum and $shizi_battle_result_goldrand == true
  59.     exp = rand($shizi_battle_result_exprandnum*2)-$shizi_battle_result_exprandnum+exp if exp >= $shizi_battle_result_exprandnum and $shizi_battle_result_exprand == true
  60.     for i in 0...$game_party.actors.size
  61.       actor = $game_party.actors[i]
  62.       if actor.cant_get_exp? == false
  63.         last_level = actor.level
  64.         actor.exp += exp
  65.         if actor.level > last_level
  66.           @status_window.level_up(i)
  67.         end
  68.       end
  69.     end
  70.     $game_party.gain_gold(gold)
  71.     for item in treasures
  72.       case item
  73.       when RPG::Item
  74.         $game_party.gain_item(item.id, 1)
  75.       when RPG::Weapon
  76.         $game_party.gain_weapon(item.id, 1)
  77.       when RPG::Armor
  78.         $game_party.gain_armor(item.id, 1)
  79.       end
  80.     end
  81.     @result_window = Window_BattleResult.new(exp, gold, treasures)
  82.     @phase5_wait_count = 100
  83.   end
  84. end
复制代码

作者: zui3320    时间: 2011-7-17 22:57
Wind2010 发表于 2011-7-17 22:44

不是太懂!!!!!
作者: xiezhen6805    时间: 2011-7-17 23:58
掉落多物品.rar (189.62 KB, 下载次数: 273)

可以直接用脚本来实现,比如“战斗处理——幽灵*2”,然后战斗结束得到物品,如果需要加入得到物品的概率的话就用变量分歧来操作,具体看范例。变量因为只是是随机数,所以可以用在多个事件中。。




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