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

Project1

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

[已经解决] 怎么做到怪物死亡掉落多种物品,且随机掉落?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
111 小时
注册时间
2011-10-1
帖子
217
跳转到指定楼层
1
发表于 2012-1-1 19:01:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
怎么做到怪物死亡掉落多种物品,且随机掉落?
比如:杀死一只野猪,可能得到1个猪肉或得到猪肉+毛皮

Lv2.观梦者

梦石
0
星屑
448
在线时间
628 小时
注册时间
2011-9-27
帖子
3996
2
发表于 2012-1-1 19:05:00 | 只看该作者
如何设置多掉宝? ,地址里的5楼有详细介绍脚本使用方法
http://rpg.blue/forum.php?mod=vi ... =%E6%8E%89%E5%AE%9D
  1. #==============================================================================

  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息

  3. #==============================================================================

  4. # ============================================================================

  5. # 四格掉宝设定 by SailCat

  6. # ============================================================================

  7. # 脚本使用说明:

  8. # 1.复制后插入到Main前面

  9. # 2.数据库设定额外掉宝的概率,在敌人名称那里

  10. #   格式: 敌人名称,宝物2,宝物3,宝物4

  11. #   宝物写法: (I|W|A)n 分别对应: n号道具,n号武器,n号防具 I W A必须大写

  12. #   例: Cockatrice,A5,I5,W3

  13. #       Fishman,I2,I3

  14. #   三栏中任一栏留空不写时,取前一格的设定,全都不写时,取默认宝物设定

  15. # 3.186行是四格概率比设定,在那里填上4个数字就可以更改概率了,该行内容:

  16. #         rarity = [178, 51, 15, 12]

  17. # ============================================================================


  18. #--------------------------------------------------------------------------

  19. # □ RPG::Enemy

  20. #--------------------------------------------------------------------------

  21. module RPG

  22. class Enemy

  23.    def name

  24.      name = @name.split(/,/)[0]

  25.      return name != nil ? name : ""

  26.    end

  27.    def treasure2

  28.      treasure = @name.split(/,/)[1]

  29.      return treasure.to_s

  30.    end

  31.    def treasure3

  32.      treasure = @name.split(/,/)[2]

  33.      return treasure.to_s

  34.    end

  35.    def treasure4

  36.      treasure = @name.split(/,/)[3]

  37.      return treasure.to_s

  38.    end

  39. end

  40. end


  41. #==============================================================================

  42. # ■ Game_Enemy

  43. #------------------------------------------------------------------------------

  44. #  处理敌人的类。本类在 Game_Troop 类 ($game_troop) 的

  45. # 内部使用。

  46. #==============================================================================

  47. class Game_Enemy < Game_Battler

  48. #--------------------------------------------------------------------------

  49. # ● 获取物品 ID2

  50. #--------------------------------------------------------------------------

  51. def item2_id

  52.    if $data_enemies[@enemy_id].treasure2 == ""

  53.      return item_id

  54.    elsif $data_enemies[@enemy_id].treasure2[0,1] != "I"

  55.      return 0

  56.    else

  57.      return $data_enemies[@enemy_id].treasure2[/[0-9]+/].to_i

  58.    end

  59. end

  60. #--------------------------------------------------------------------------

  61. # ● 获取武器 ID2

  62. #--------------------------------------------------------------------------

  63. def weapon2_id

  64.    if $data_enemies[@enemy_id].treasure2 == ""

  65.      return weapon_id

  66.    elsif $data_enemies[@enemy_id].treasure2[0,1] != "W"

  67.      return 0

  68.    else

  69.      return $data_enemies[@enemy_id].treasure2[/[0-9]+/].to_i

  70.    end

  71. end

  72. #--------------------------------------------------------------------------

  73. # ● 获取防具 ID2

  74. #--------------------------------------------------------------------------

  75. def armor2_id

  76.    if $data_enemies[@enemy_id].treasure2 == ""

  77.      return armor_id

  78.    elsif $data_enemies[@enemy_id].treasure2[0,1] != "A"

  79.      return 0

  80.    else

  81.      return $data_enemies[@enemy_id].treasure2[/[0-9]+/].to_i

  82.    end

  83. end

  84. #--------------------------------------------------------------------------

  85. # ● 获取物品 ID3

  86. #--------------------------------------------------------------------------

  87. def item3_id

  88.    if $data_enemies[@enemy_id].treasure3 == ""

  89.      return item2_id

  90.    elsif $data_enemies[@enemy_id].treasure3[0,1] != "I"

  91.      return 0

  92.    else

  93.      return $data_enemies[@enemy_id].treasure3[/[0-9]+/].to_i

  94.    end

  95. end

  96. #--------------------------------------------------------------------------

  97. # ● 获取武器 ID3

  98. #--------------------------------------------------------------------------

  99. def weapon3_id

  100.    if $data_enemies[@enemy_id].treasure3 == ""

  101.      return weapon2_id

  102.    elsif $data_enemies[@enemy_id].treasure3[0,1] != "W"

  103.      return 0

  104.    else

  105.      return $data_enemies[@enemy_id].treasure3[/[0-9]+/].to_i

  106.    end

  107. end

  108. #--------------------------------------------------------------------------

  109. # ● 获取防具 ID3

  110. #--------------------------------------------------------------------------

  111. def armor3_id

  112.    if $data_enemies[@enemy_id].treasure3 == ""

  113.      return armor2_id

  114.    elsif $data_enemies[@enemy_id].treasure3[0,1] != "A"

  115.      return 0

  116.    else

  117.      return $data_enemies[@enemy_id].treasure3[/[0-9]+/].to_i

  118.    end

  119. end

  120. #--------------------------------------------------------------------------

  121. # ● 获取物品 ID4

  122. #--------------------------------------------------------------------------

  123. def item4_id

  124.    if $data_enemies[@enemy_id].treasure4 == ""

  125.      return item3_id

  126.    elsif $data_enemies[@enemy_id].treasure4[0,1] != "I"

  127.      return 0

  128.    else

  129.      return $data_enemies[@enemy_id].treasure4[/[0-9]+/].to_i

  130.    end

  131. end

  132. #--------------------------------------------------------------------------

  133. # ● 获取武器 ID4

  134. #--------------------------------------------------------------------------

  135. def weapon4_id

  136.    if $data_enemies[@enemy_id].treasure4 == ""

  137.      return weapon3_id

  138.    elsif $data_enemies[@enemy_id].treasure4[0,1] != "W"

  139.      return 0

  140.    else

  141.      return $data_enemies[@enemy_id].treasure4[/[0-9]+/].to_i

  142.    end

  143. end

  144. #--------------------------------------------------------------------------

  145. # ● 获取防具 ID4

  146. #--------------------------------------------------------------------------

  147. def armor4_id

  148.    if $data_enemies[@enemy_id].treasure4 == ""

  149.      return armor3_id

  150.    elsif $data_enemies[@enemy_id].treasure4[0,1] != "A"

  151.      return 0

  152.    else

  153.      return $data_enemies[@enemy_id].treasure4[/[0-9]+/].to_i

  154.    end

  155. end

  156. end


  157. #==============================================================================

  158. # ■ Scene_Battle

  159. #------------------------------------------------------------------------------

  160. #  处理战斗画面的类。

  161. #==============================================================================

  162. class Scene_Battle

  163. #--------------------------------------------------------------------------

  164. # ● 开始结束战斗回合

  165. #--------------------------------------------------------------------------

  166. def start_phase5

  167.    # 转移到回合 5

  168.    @phase = 5

  169.    # 演奏战斗结束 ME

  170.    $game_system.me_play($game_system.battle_end_me)

  171.    # 还原为战斗开始前的 BGM

  172.    $game_system.bgm_play($game_temp.map_bgm)

  173.    # 初始化 EXP、金钱、宝物

  174.    exp = 0

  175.    gold = 0

  176.    treasures = []

  177.    # 循环

  178.    for enemy in $game_troop.enemies

  179.      # 敌人不是隐藏状态的情况下

  180.      unless enemy.hidden

  181.        # 获得 EXP、增加金钱

  182.        exp += enemy.exp

  183.        gold += enemy.gold

  184.        # 出现宝物判定

  185.        if rand(100) < enemy.treasure_prob

  186.          rarity = [178, 51, 15, 12]

  187.          case rand(rarity[0] + rarity[1] + rarity[2] + rarity[3])

  188.          when 0..rarity[0] - 1

  189.            if enemy.item_id > 0

  190.              treasures.push($data_items[enemy.item_id])

  191.            end

  192.            if enemy.weapon_id > 0

  193.             treasures.push($data_weapons[enemy.weapon_id])

  194.            end

  195.            if enemy.armor_id > 0

  196.              treasures.push($data_armors[enemy.armor_id])

  197.            end

  198.          when rarity[0]..rarity[0] + rarity[1] - 1

  199.            if enemy.item2_id > 0

  200.              treasures.push($data_items[enemy.item2_id])

  201.            end

  202.            if enemy.weapon2_id > 0

  203.             treasures.push($data_weapons[enemy.weapon2_id])

  204.            end

  205.            if enemy.armor2_id > 0

  206.              treasures.push($data_armors[enemy.armor2_id])

  207.            end

  208.          when rarity[0] + rarity[1]..rarity[0] + rarity[1] + rarity[2] - 1

  209.            if enemy.item3_id > 0

  210.              treasures.push($data_items[enemy.item3_id])

  211.            end

  212.            if enemy.weapon3_id > 0

  213.             treasures.push($data_weapons[enemy.weapon3_id])

  214.            end

  215.            if enemy.armor3_id > 0

  216.              treasures.push($data_armors[enemy.armor3_id])

  217.            end

  218.          else

  219.            if enemy.item4_id > 0

  220.              treasures.push($data_items[enemy.item4_id])

  221.            end

  222.            if enemy.weapon4_id > 0

  223.             treasures.push($data_weapons[enemy.weapon4_id])

  224.            end

  225.            if enemy.armor4_id > 0

  226.              treasures.push($data_armors[enemy.armor4_id])

  227.            end

  228.          end

  229.        end

  230.      end

  231.    end

  232.    # 限制宝物数为 8 个

  233.    treasures = treasures[0..7]

  234.    # 获得 EXP

  235.    for i in 0...$game_party.actors.size

  236.      actor = $game_party.actors[i]

  237.      if actor.cant_get_exp? == false

  238.        last_level = actor.level

  239.        actor.exp += exp

  240.        if actor.level > last_level

  241.          @status_window.level_up(i)

  242.        end

  243.      end

  244.    end

  245.    # 获得金钱

  246.    $game_party.gain_gold(gold)

  247.    # 获得宝物

  248.    for item in treasures

  249.      case item

  250.      when RPG::Item

  251.        $game_party.gain_item(item.id, 1)

  252.      when RPG::Weapon

  253.        $game_party.gain_weapon(item.id, 1)

  254.      when RPG::Armor

  255.        $game_party.gain_armor(item.id, 1)

  256.      end

  257.    end

  258.    # 生成战斗结果窗口

  259.    @result_window = Window_BattleResult.new(exp, gold, treasures)

  260.    # 设置等待计数

  261.    @phase5_wait_count = 100

  262. end

  263. end


  264. #==============================================================================

  265. # 本脚本来自www.66RPG.com,使用和转载请保留此信息

  266. #==============================================================================
复制代码
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
111 小时
注册时间
2011-10-1
帖子
217
3
 楼主| 发表于 2012-1-1 19:06:28 | 只看该作者
小白玩家 发表于 2012-1-1 19:05
如何设置多掉宝? ,地址里的5楼有详细介绍脚本使用方法
http://rpg.blue/forum.php?mod=viewthread&t ...

擦,刚刚才看到也有人问这个问题……

点评

不是……  发表于 2012-1-1 19:07
你们约好的吗?  发表于 2012-1-1 19:07
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 11:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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