Project1

标题: 想做一个可以不踩暗雷的东西! [打印本页]

作者: 菜鸟小新    时间: 2008-2-14 12:25
提示: 作者被禁止或删除 内容自动屏蔽
作者: 最後一滴淚    时间: 2008-2-14 12:35
地形标致加条件分岐.....再加自己动脑
作者: 菜鸟小新    时间: 2008-2-14 12:39
提示: 作者被禁止或删除 内容自动屏蔽
作者: 菜鸟小新    时间: 2008-2-14 12:40
提示: 作者被禁止或删除 内容自动屏蔽
作者: 凌冰    时间: 2008-2-14 12:41
怎么又是你啊!菜鸟小新!我今天看到你好几个帖子了,还是建议你自己动脑
作者: 菜鸟小新    时间: 2008-2-14 13:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: 凌冰    时间: 2008-2-14 15:15
那我补充一个问题
假设你有幽灵驱魔香
使用后,你是想不再遇到包含幽灵的队伍
还是想遇到的队伍里不再包含幽灵
作者: 橡让    时间: 2008-2-14 17:54
使用该物品后发生公共事件,在公共事件里设定禁止遇敌。
在地图的出口处设置事件,设定可以遇敌。
这样出了地图就可以遇敌了。 [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 凌冰    时间: 2008-2-14 18:21
就写成这样了,我也不再废话了

  1. #-------------------------------------------------------------------------------
  2. #特种驱魔香(地图中不遇到特定敌人)By 凌冰
  3. #下面设定驱魔时间,在物品的说明里添加EE敌人ID或ETE敌人ID(后面的敌人ID填你要驱魔
  4. #的敌人的ID),可以缺省,缺省则默认为无驱魔功效。
  5. #举例1,某物品名称为幽灵驱魔香,说明中包含EE1,也就是驱逐ID为1的敌人,即幽灵
  6. #则使用幽灵驱魔香后遇到的队伍里不再包含幽灵
  7. #举例2,某物品名称为幽灵驱魔香香香,说明中包含ETE1,也就是驱逐包含幽灵的队伍
  8. #则使用幽灵驱魔香香香后不再遇到包含幽灵的队伍
  9. #另外感谢一下飞虫的三点建议
  10. #-------------------------------------------------------------------------------
  11. $驱魔时间 = 60
  12. #-------------------------------------------------------------------------------
  13. module RPG
  14.   class Item
  15.     def enemy_expel
  16.       return 0 if @description.split(/EE/)[1] == nil
  17.      return @description.split(/EE/)[1].to_i
  18.    end
  19.    def enemy_troop_expel
  20.      return 0 if @description.split(/ETE/)[1] == nil
  21.      return @description.split(/ETE/)[1].to_i
  22.    end
  23.    def description
  24.      des = @description.split(/EE/)[0]  if @description.split(/EE/)[1] != nil
  25.      des = @description.split(/ETE/)[0]  if @description.split(/ETE/)[1] != nil
  26.      des = "" if des == nil
  27.      return des
  28.    end
  29.    def scope
  30.      if @description.split(/ETE/)[1] != nil or @description.split(/EE/)[1] != nil
  31.      return 0
  32.      end
  33.    end
  34.   end
  35. end
  36. class Scene_Item
  37.   alias eci_update_item update_item
  38.   def update_item
  39.     eci_update_item
  40.     if Input.trigger?(Input::C)
  41.       if @item.enemy_expel > 0
  42.         $enemy_expel_switch = true
  43.       $enemy_expel = @item.enemy_expel
  44.       $game_system.timer = $驱魔时间 * Graphics.frame_rate
  45.       $game_system.timer_working = true
  46.         $game_party.lose_item(@item.id, 1)
  47.       end
  48.       if @item.enemy_troop_expel > 0
  49.         $enemy_troop_expel_switch = true
  50.       $enemy_troop_expel = @item.enemy_troop_expel
  51.       $game_system.timer = $驱魔时间 * Graphics.frame_rate
  52.       $game_system.timer_working = true
  53.         $game_party.lose_item(@item.id, 1)
  54.       end
  55.     end
  56.   end
  57. end

  58. class Sprite_Timer < Sprite
  59.   def update
  60.     super
  61.     # 设置计时器执行中为可见
  62.     self.visible = $game_system.timer_working
  63.     # 如果有必要再次描绘计时器
  64.     if $game_system.timer / Graphics.frame_rate != @total_sec
  65.       # 清除窗口内容
  66.       self.bitmap.clear
  67.       # 计算总计秒数
  68.       @total_sec = $game_system.timer / Graphics.frame_rate
  69.       # 生成计时器显示用字符串
  70.       if $enemy_expel_switch and @total_sec < 1
  71.         $game_system.timer_working = false
  72.         $enemy_expel_switch = false
  73.       end
  74.       if $enemy_troop_expel_switch and @total_sec < 1
  75.         $enemy_troop_expel_switch = false
  76.         $game_system.timer_working = false
  77.       end
  78.       min = @total_sec / 60
  79.       sec = @total_sec % 60
  80.       text = sprintf("%02d:%02d", min, sec)
  81.       # 描绘计时器
  82.       self.bitmap.font.color.set(255, 255, 255)
  83.       self.bitmap.draw_text(self.bitmap.rect, text, 1)
  84.     end
  85.   end
  86. end
  87. class Game_Troop
  88.   def setup(troop_id)
  89.     # 由敌人序列的设置来确定队伍的设置
  90.     @enemies = []
  91.     troop = $data_troops[troop_id]
  92.     for i in 0...troop.members.size
  93.       enemy = $data_enemies[troop.members[i].enemy_id]
  94.       if enemy != nil
  95.         unless $enemy_expel_switch and enemy.id == $enemy_expel
  96.         @enemies.push(Game_Enemy.new(troop_id, i))
  97.         end
  98.       end
  99.       if @enemies.size == 0
  100.         $zero_troop = troop_id
  101.       end
  102.     end
  103.   end
  104. end
  105. class Game_Map
  106.   def encounter_list
  107.     troop_list = []
  108.       for id in @map.encounter_list
  109.         for i in 0...$data_troops[id].members.size
  110.           unless $enemy_troop_expel_switch and
  111.                  $data_troops[id].members[i].enemy_id == $enemy_troop_expel
  112.                  if id == $zero_troop
  113.                     troop_list.push(id)
  114.                 end
  115.           end
  116.         end
  117.       end
  118.     return troop_list
  119.   end
  120. end
复制代码

http://rpg.blue/viewthread.php?tid=77014
我刚发的帖子,里面有范例,脚本是一样的
作者: 飞虫    时间: 2008-2-14 18:41
提示: 作者被禁止或删除 内容自动屏蔽
作者: 凌冰    时间: 2008-2-14 20:15
上面和发布区的脚本都根据飞虫的三点要求修改过了{/hx}
作者: egnas    时间: 2008-2-14 22:46
用事件不就行了吗,感觉用地形标志加条件分歧,比系统自带的那种踩暗雷设置效果要好
比如你可以设置只有在草地地形才能遇到蛇,诸如此类的
还是建议LZ多动动脑哦
作者: 菜鸟小新    时间: 2008-2-15 02:31
提示: 作者被禁止或删除 内容自动屏蔽
作者: 凌冰    时间: 2008-2-15 02:37
那就按照我给的脚本,在物品说明添加 EE敌人ID
ETE 就54好了
作者: 凌冰    时间: 2008-2-15 02:40
或者自行修改,把与ETE相关的删掉就好了。虽然我帮你删也不过是举手之劳,但是,我想这应该不难,动动脑子吧!对你多少会有帮助
作者: 7613105    时间: 2008-2-15 02:57
提示: 作者被禁止或删除 内容自动屏蔽




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