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

Project1

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

[已经过期] 请问如何设计条件掉落?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
121
在线时间
1914 小时
注册时间
2013-9-2
帖子
1770

剧作品鉴家

跳转到指定楼层
1
发表于 2014-11-6 13:28:25 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 zaiy2863 于 2014-11-6 13:30 编辑

即怪物的掉落物(最好还有经验)会随着战斗条件有所不同,如全员平均等级低于XX时,获得的经验值和掉宝双倍
(战斗中使用战斗事件进行判定,如符合条件则开关打开)
找到了好多掉落脚本,但大多数只是增加掉落种类、或者掉落率修正。自己不会改(事件党的硬伤
别告诉我用事件写条件分歧然后判定战斗结束后获得XX物品,看起来太蠢(因为即使不满足条件也能够获得1个,满足条件后还要额外追加)

点评

直接修改默认脚本,不用事件判断的呢?  发表于 2014-11-6 15:44
RM新人,尚在摸索熟悉软件中。对您的指教十分感谢。(鞠躬
RM的新手教程新手教程新手教程
喵雪大触的像素绘画教程

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

2
发表于 2014-11-7 23:54:52 | 只看该作者
Scene_Battle 2的start_phase5可以修改···
  1.   def start_phase5
  2.     # 转移到回合 5
  3.     @phase = 5
  4.     # 演奏战斗结束 ME
  5.     $game_system.me_play($game_system.battle_end_me)
  6.     # 还原为战斗开始前的 BGM
  7.     $game_system.bgm_play($game_temp.map_bgm)
  8.     # 初始化 EXP、金钱、宝物
  9.     exp = 0
  10.     gold = 0
  11.     treasures = []
  12.     # 循环
  13.     for enemy in $game_troop.enemies
  14.       # 敌人不是隐藏状态的情况下
  15.       unless enemy.hidden
  16.         # 获得 EXP、增加金钱
  17.         exp += enemy.exp
  18.         gold += enemy.gold
  19.         # 出现宝物判定
  20.         
  21.         actors_number = 0
  22.         actors_level = 0#初始化
  23.         for actor in $game_party.actors
  24.           if actor.exist?
  25.             actors_level += actor.level#加入角色等级
  26.             actors_number += 1
  27.           end
  28.         end
  29.         if actors_number > 0
  30.           actors_level /= actors_number#计算平均等级
  31.         end
  32.         #p actors_level#测试而已
  33.         if actors_level>10
  34.         if rand(100) < enemy.treasure_prob
  35.           if enemy.item_id > 0
  36.             treasures.push($data_items[enemy.item_id])
  37.           end
  38.           if enemy.weapon_id > 0
  39.             treasures.push($data_weapons[enemy.weapon_id])
  40.           end
  41.           if enemy.armor_id > 0
  42.             treasures.push($data_armors[enemy.armor_id])
  43.           end
  44.         end
  45.         end
  46.       end
  47.     end
  48.     # 限制宝物数为 6 个
  49.     treasures = treasures[0..5]
  50.     # 获得 EXP
  51.     for i in 0...$game_party.actors.size
  52.       actor = $game_party.actors[i]
  53.       if actor.cant_get_exp? == false
  54.         last_level = actor.level
  55.         actor.exp += exp
  56.         if actor.level > last_level
  57.           @status_window.level_up(i)
  58.         end
  59.       end
  60.     end
  61.     # 获得金钱
  62.     $game_party.gain_gold(gold)
  63.     # 获得宝物
  64.     for item in treasures
  65.       case item
  66.       when RPG::Item
  67.         $game_party.gain_item(item.id, 1)
  68.       when RPG::Weapon
  69.         $game_party.gain_weapon(item.id, 1)
  70.       when RPG::Armor
  71.         $game_party.gain_armor(item.id, 1)
  72.       end
  73.     end
  74.     # 生成战斗结果窗口
  75.     @result_window = Window_BattleResult.new(exp, gold, treasures)
  76.     # 设置等待计数
  77.     @phase5_wait_count = 100
  78.   end
复制代码
换掉原来的就够了,这里我只改了一个掉落,全员等级低于10的时候不计算掉落···

如果这样
  1. if $data_items[enemy.item_id]==10 and actors_level<10
  2. treasures.push($data_items[enemy.item_id])
  3. end
复制代码
加到if enemy.item_id > 0下面就会有如果敌人掉落物品是10号物品且队伍平均等级小于10就再来(掉?)一次的效果···
具体的因为系统问题开XPVX各种卡死所以还没测试···应该可以这样弄

点评

所以没把握的话别乱动那个0  发表于 2014-11-8 01:03
需要注意的是treasures = treasures[0..5]这里限定了最大的掉宝数量···如果你敌人多了什么的把5改大,那个0是最小值(不获得宝物为0,宝物数量没负数  发表于 2014-11-8 01:03
感谢,暂时记下了  发表于 2014-11-8 00:54

评分

参与人数 1星屑 +100 收起 理由
RyanBern + 100 塞糖

查看全部评分

[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 05:03

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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