查看: 2157|回复: 4

[已经解决] 如何多掉几个宝物

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

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

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

×
默认只能选一个呀?

点评

那个应该不是本脚本内容了……  发表于 2013-8-25 18:23
退隐....
梦石
0
星屑
3905
在线时间
1972 小时
注册时间
2013-1-3
回帖
9146
发表于 2013-8-25 14:27:40 | 显示全部楼层
在多个敌人都有可掉落的物品时,战斗后可能得到多个物品
但是一个敌人只能设置一个掉落物品…

点评

只有这个办法了么,我看见脚本里最多可以掉6个是怎么回事  发表于 2013-8-25 18:37
《宿愿·寻剑篇》正式版已经发布!快去看看!点击进入论坛发布贴
回复

使用道具 举报

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
回帖
1223
发表于 2013-8-25 14:31:09 | 显示全部楼层
有一种笨办法,比如幽灵
在数据库敌人中多复制几个幽灵,并且掉包不同,在队伍设置的时候把不同的幽灵同时加进来。
这就是多格掉宝

点评

只有这个办法了么,我看见脚本里最多可以掉6个是怎么回事  发表于 2013-8-25 15:01
回复

使用道具 举报

梦石
0
星屑
1350
在线时间
275 小时
注册时间
2011-3-18
回帖
36
发表于 2013-8-25 17:09:48 | 显示全部楼层
敌人可掉4种宝物设定方法

脚本功能
将敌人可能掉落的宝物从1种增加到最多4种

使用方法
用法: 将脚本复制后插入到Main前面,然后修改数据库设定

数据库设定:
敌人名称一栏,在名称后添加 宝物2 宝物3 宝物4,各项之间用逗号隔开
宝物名格式: (I|W|A)数字
I W A对应 道具 武器 防具,比如I144就是道具144号
如果省略其中某项,则默认取前一项
如果省略,则默认全部掉落宝物1(也就是数据库"宝物"一栏设定的东西)
例:
幽灵,A2,I32,A3
则除了默认设定的宝物以外,额外掉落:防具2号(第2格),道具32号(第3格),防具3号(第4格)
哥布林,,W1
则除了默认设定的宝物以外,额外掉落:默认宝物(第2格),武器1号(第3格),武器1号(第4格)

冲突可能: RTAB(重定义start_phase5), 战斗特殊效果(利用敌人名称做了偷窃)

脚本设定:见脚本前面的注释


如图:

脚本如下:
[pre lang="ruby" line="1"]#==============================================================================

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

#==============================================================================

# ============================================================================

# 四格掉宝设定 by SailCat

# ============================================================================

# 脚本使用说明:

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

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

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

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

#   例: Cockatrice,A5,I5,W3

#       Fishman,I2,I3

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

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

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

# ============================================================================


#--------------------------------------------------------------------------

# □ RPG::Enemy

#--------------------------------------------------------------------------

module RPG

class Enemy

   def name

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

     return name != nil ? name : ""

   end

   def treasure2

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

     return treasure.to_s

   end

   def treasure3

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

     return treasure.to_s

   end

   def treasure4

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

     return treasure.to_s

   end

end

end


#==============================================================================

# ■ Game_Enemy

#------------------------------------------------------------------------------

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

# 内部使用。

#==============================================================================

class Game_Enemy < Game_Battler

#--------------------------------------------------------------------------

# ● 获取物品 ID2

#--------------------------------------------------------------------------

def item2_id

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

     return item_id

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

     return 0

   else

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

   end

end

#--------------------------------------------------------------------------

# ● 获取武器 ID2

#--------------------------------------------------------------------------

def weapon2_id

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

     return weapon_id

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

     return 0

   else

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

   end

end

#--------------------------------------------------------------------------

# ● 获取防具 ID2

#--------------------------------------------------------------------------

def armor2_id

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

     return armor_id

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

     return 0

   else

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

   end

end

#--------------------------------------------------------------------------

# ● 获取物品 ID3

#--------------------------------------------------------------------------

def item3_id

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

     return item2_id

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

     return 0

   else

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

   end

end

#--------------------------------------------------------------------------

# ● 获取武器 ID3

#--------------------------------------------------------------------------

def weapon3_id

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

     return weapon2_id

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

     return 0

   else

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

   end

end

#--------------------------------------------------------------------------

# ● 获取防具 ID3

#--------------------------------------------------------------------------

def armor3_id

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

     return armor2_id

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

     return 0

   else

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

   end

end

#--------------------------------------------------------------------------

# ● 获取物品 ID4

#--------------------------------------------------------------------------

def item4_id

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

     return item3_id

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

     return 0

   else

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

   end

end

#--------------------------------------------------------------------------

# ● 获取武器 ID4

#--------------------------------------------------------------------------

def weapon4_id

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

     return weapon3_id

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

     return 0

   else

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

   end

end

#--------------------------------------------------------------------------

# ● 获取防具 ID4

#--------------------------------------------------------------------------

def armor4_id

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

     return armor3_id

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

     return 0

   else

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

   end

end

end


#==============================================================================

# ■ Scene_Battle

#------------------------------------------------------------------------------

#  处理战斗画面的类。

#==============================================================================

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、增加金钱

       exp += enemy.exp

       gold += enemy.gold

       # 出现宝物判定

       if rand(100) < enemy.treasure_prob

         rarity = [178, 51, 15, 12]

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

         when 0..rarity[0] - 1

           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

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

           if enemy.item2_id > 0

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

           end

           if enemy.weapon2_id > 0

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

           end

           if enemy.armor2_id > 0

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

           end

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

           if enemy.item3_id > 0

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

           end

           if enemy.weapon3_id > 0

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

           end

           if enemy.armor3_id > 0

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

           end

         else

           if enemy.item4_id > 0

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

           end

           if enemy.weapon4_id > 0

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

           end

           if enemy.armor4_id > 0

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

           end

         end

       end

     end

   end

   # 限制宝物数为 8 个

   treasures = treasures[0..7]

   # 获得 EXP

   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 = 100

end

end


#==============================================================================

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

#==============================================================================[/pre]

点评

这个名字前的N和一竖是什么意思?  发表于 2013-8-25 18:14
好的,辛苦你了  发表于 2013-8-25 18:11

评分

参与人数 1星屑 +70 收起 理由
弗雷德 + 70 认可答案

查看全部评分

回复

使用道具 举报

笑问情缘

梦石
0
星屑
68
在线时间
238 小时
注册时间
2006-5-3
回帖
544
发表于 2013-8-28 12:07:41 来自手机 | 显示全部楼层
其实用明雷的话比较好解决,条件分歧,胜利后代入一个变量还可以随机获得宝物
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部