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

Project1

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

[已经过期] 如何让一个敌人战斗后能掉落多样物品?

[复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
7 小时
注册时间
2010-1-31
帖子
14
跳转到指定楼层
1
发表于 2010-11-26 21:56:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

Lv1.梦旅人

梦石
0
星屑
50
在线时间
75 小时
注册时间
2010-10-11
帖子
275
2
发表于 2010-11-26 23:20:35 | 只看该作者
  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
在线时间
7 小时
注册时间
2010-1-31
帖子
14
3
 楼主| 发表于 2010-11-27 11:54:24 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
7 小时
注册时间
2010-1-31
帖子
14
4
 楼主| 发表于 2010-11-28 19:09:03 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

夜天の主

梦石
0
星屑
124
在线时间
1552 小时
注册时间
2008-4-13
帖子
2347

开拓者第4届短篇游戏比赛亚军

5
发表于 2010-11-29 09:04:03 | 只看该作者
回复 719008147 的帖子

大致看了一下,似乎在掉宝判定成功的情况下第n个宝物掉落的概率=rarity(n)/(rarity(1)+rarity(2)+rarity(3)+rarity(4))~
简单说就是掉落率高的这里的数字也设置的大一些就好了~具体可以参考脚本189-235行~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-25 21:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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