Project1

标题: [新人求救]怎么样设置物品唯一 [打印本页]

作者: 乖乖狼    时间: 2009-11-20 12:32
标题: [新人求救]怎么样设置物品唯一
怪物掉过物品A,一旦掉落过一次后就不会再掉落,怎么去做?谢谢了!
作者: 夏季冰川    时间: 2009-11-20 13:18
把一下脚本插入main之前:
注意用"★"注释的那一段.
  1. class Scene_Battle
  2.   #--------------------------------------------------------------------------
  3.   # ● 开始结束战斗回合
  4.   #--------------------------------------------------------------------------
  5.   def start_phase5
  6.     # 转移到回合 5
  7.     @phase = 5
  8.     # 演奏战斗结束 ME
  9.     $game_system.me_play($game_system.battle_end_me)
  10.     # 还原为战斗开始前的 BGM
  11.     $game_system.bgm_play($game_temp.map_bgm)
  12.     # 初始化 EXP、金钱、宝物
  13.     exp = 0
  14.     gold = 0
  15.     treasures = []
  16.     # 循环
  17.     for enemy in $game_troop.enemies
  18.       # 敌人不是隐藏状态的情况下
  19.       unless enemy.hidden
  20.         # 获得 EXP、增加金钱
  21.         exp += enemy.exp
  22.         gold += enemy.gold
  23.         # 出现宝物判定
  24.         if rand(100) < enemy.treasure_prob
  25.           if enemy.item_id > 0
  26.             treasures.push($data_items[enemy.item_id])
  27.           end
  28.           if enemy.weapon_id > 0
  29.             treasures.push($data_weapons[enemy.weapon_id])
  30.           end
  31.           if enemy.armor_id > 0
  32.             treasures.push($data_armors[enemy.armor_id])
  33.           end
  34.         end
  35.       end
  36.     end
  37.     # 限制宝物数为 6 个
  38.     treasures = treasures[0..5]
  39.     # 获得 EXP
  40.     for i in 0...$game_party.actors.size
  41.       actor = $game_party.actors[i]
  42.       if actor.cant_get_exp? == false
  43.         last_level = actor.level
  44.         actor.exp += exp
  45.         if actor.level > last_level
  46.           @status_window.level_up(i)
  47.         end
  48.       end
  49.     end
  50.     # 获得金钱
  51.     $game_party.gain_gold(gold)
  52.     # 获得宝物
  53.     #★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  54.     for item in treasures
  55.       case item
  56.       when RPG::Item
  57.         if item.id == 5  #物品ID
  58.           if $game_switches[10] == false  #开关ID
  59.              $game_party.gain_item(5, 1)
  60.              $game_switches[10] = true
  61.           end
  62.         else
  63.           $game_party.gain_item(item.id, 1)
  64.         end        
  65.       when RPG::Weapon
  66.         $game_party.gain_weapon(item.id, 1)
  67.       when RPG::Armor
  68.         $game_party.gain_armor(item.id, 1)
  69.       end
  70.     end
  71.     #★★★★★★★★★★★★★★★★★★★★★★★★★★★★
  72.     # 生成战斗结果窗口
  73.     @result_window = Window_BattleResult.new(exp, gold, treasures)
  74.     # 设置等待计数
  75.     @phase5_wait_count = 100
  76.   end
  77. end
复制代码

作者: zoeylau    时间: 2009-11-21 01:20
真没想到这样也可以
作者: 乖乖的狼    时间: 2009-11-22 09:46
提示: 作者被禁止或删除 内容自动屏蔽
作者: 夏季冰川    时间: 2009-11-22 10:21
就是数据库第5号物品只会掉一次,应该很清楚了.
作者: 乖乖的狼    时间: 2009-11-22 10:26
提示: 作者被禁止或删除 内容自动屏蔽
作者: 夏季冰川    时间: 2009-11-22 10:27
数据库-敌人-宝物就能设置啊,如果这个不清楚的话就去看看置顶吧.
作者: 乖乖的狼    时间: 2009-11-22 10:41
提示: 作者被禁止或删除 内容自动屏蔽
作者: 冬季冰川    时间: 2009-11-22 10:42
提示: 作者被禁止或删除 内容自动屏蔽
作者: 悠悠炸弹    时间: 2009-11-22 10:46
其实呢
http://rpg.blue/web/index.php?doc-view-3130
可以利用一下公共事件= =
只不过比较麻烦............
马甲...........冷啊~
作者: kxx1997    时间: 2009-11-22 12:14
怪物掉过物品A,一旦掉落过一次后就不会再掉落,怎么去做?谢谢了!
乖乖狼 发表于 2009-11-20 12:32

其实完全可以靠事件来判断 纯事件的应用.rar (377.19 KB, 下载次数: 43)
我这里有两种方法可以参考一下
作者: 冬季冰川    时间: 2009-11-22 12:22
提示: 作者被禁止或删除 内容自动屏蔽
作者: 乖乖的狼    时间: 2009-11-22 12:32
提示: 作者被禁止或删除 内容自动屏蔽
作者: kxx1997    时间: 2009-11-22 12:41
11# kxx1997
谢谢这位高手,你说的两种方式我都看明白了!
但是我觉得都不可以满足我的需求,条件分歧的判断不支持踩地雷式遇敌,战斗完判断事件虽然支持踩地雷式遇敌人,但是其一战斗结束后不提示物品获得,其二 ...
乖乖的狼 发表于 2009-11-22 12:32


我算个屁高手……只会运用事件而已
如果你的要求说……我想想办法
作者: 乖乖的狼    时间: 2009-11-22 12:46
提示: 作者被禁止或删除 内容自动屏蔽
作者: 冬季冰川    时间: 2009-11-22 12:54
提示: 作者被禁止或删除 内容自动屏蔽
作者: 乖乖的狼    时间: 2009-11-22 13:03
提示: 作者被禁止或删除 内容自动屏蔽
作者: 冬季冰川    时间: 2009-11-22 13:07
提示: 作者被禁止或删除 内容自动屏蔽
作者: 乖乖的狼    时间: 2009-11-22 13:11
提示: 作者被禁止或删除 内容自动屏蔽
作者: kxx1997    时间: 2009-11-22 13:14
还有经过测试,一旦开关10被打开后,别的怪物也不掉落物品了(其他物品),那怕掉率100%!
乖乖的狼 发表于 2009-11-22 13:11

其中不是有段脚本吗
        if item.id == 5  #物品ID

          if $game_switches[10] == false  #开关ID

             $game_party.gain_item(5, 1)

             $game_switches[10] = true

          end
作者: 乖乖的狼    时间: 2009-11-22 13:18
提示: 作者被禁止或删除 内容自动屏蔽
作者: 冬季冰川    时间: 2009-11-22 13:22
提示: 作者被禁止或删除 内容自动屏蔽
作者: 乖乖的狼    时间: 2009-11-22 13:28
提示: 作者被禁止或删除 内容自动屏蔽
作者: kxx1997    时间: 2009-11-22 13:30
我有个办法可以打开1.03的工程
首先用RM1.02创建一工程
然后把1.03的Audio、Data、Graphics给覆盖到1.02的那个工程里
作者: 冬季冰川    时间: 2009-11-22 13:36
提示: 作者被禁止或删除 内容自动屏蔽
作者: 乖乖的狼    时间: 2009-11-22 13:36
提示: 作者被禁止或删除 内容自动屏蔽
作者: 冬季冰川    时间: 2009-11-22 13:39
提示: 作者被禁止或删除 内容自动屏蔽
作者: kxx1997    时间: 2009-11-22 13:40
另外LZ可以灵活点嘛,比如设计两个长的一模一样的幽灵,然后其中一个会掉物品,
然后在战斗那放一个会掉物品的,其余的不会掉物品.

我的事件里就是这样地……
作者: 冬季冰川    时间: 2009-11-22 13:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: 乖乖的狼    时间: 2009-11-22 14:11
提示: 作者被禁止或删除 内容自动屏蔽
作者: 乖乖的狼    时间: 2009-11-22 14:14
提示: 作者被禁止或删除 内容自动屏蔽
作者: 夏季冰川    时间: 2009-11-22 14:31
本帖最后由 夏季冰川 于 2009-11-22 14:58 编辑
27# 冬季冰川
这种思路我想过,但是这样不可以用踩地雷式的遇敌!
乖乖的狼 发表于 2009-11-22 14:14

可以踩啊,等伙我做个工程给看看.

刚刚那个不够完善,我给你个完善并且有注释的(其实有可能打算发到技术区):
仿真事件暗雷.rar (191.24 KB, 下载次数: 33)
不过话说回来,事件虽然能做出来,但是终归比较麻烦.脚本会简单些.
作者: 夏季冰川    时间: 2009-11-22 14:45
本帖最后由 夏季冰川 于 2009-11-22 14:55 编辑

好了,这个是脚本的方法,其中2号幽灵才会掉物品,蜥蜴会掉别的东东.
脚本单次掉落.rar (186.46 KB, 下载次数: 41)
楼上的真的高手啊,完全可以满足需求了!谢谢您!
还有个问题问下,你给我的“事件仿真暗雷” 战斗后你给变量6赋值了5,变量6的值是怎么变回0的啊! ...
乖乖的狼 发表于 2009-11-22 14:11

不用回0啊,回0后那个物品又会掉落了.
作者: 乖乖的狼    时间: 2009-11-22 14:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: 上帝的眼睛    时间: 2009-11-22 15:00
本帖最后由 上帝的眼睛 于 2009-11-22 15:04 编辑

不要问我为什么要用图片……

[line]1[/line]
下面是广告时间……
http://rpg.blue/viewthread.php?tid=136193&extra=page%3D1
您还在为RMXP的版本问题而头疼么?
您还在为缺少RGSS103J.DLL的错误而不知所措么?
那么就来使用无聊的RMXP版本转换工具吧……
它可以以极快的速度帮你转换好RMXP的版本,关联到右键菜单,方便使用
实在是打家劫舍,杀人放火,必备良品……
- -b
作者: 夏季冰川    时间: 2009-11-22 15:03
本帖最后由 夏季冰川 于 2009-11-22 15:06 编辑

其实效果是一样的拉,为了省事我就改改吧.
25L已修改.




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