Project1

标题: 事件仿真暗雷遇敌 [打印本页]

作者: 夏季冰川    时间: 2009-11-23 03:02
标题: 事件仿真暗雷遇敌
本帖最后由 夏季冰川 于 2009-11-23 03:06 编辑

没啥技术含量,高手54吧~

就是用事件制作暗雷遇敌,效果和真的暗雷看上去是一样的.
作用:
      可以在战斗胜利后(暗雷)任意调用公共事件,比如说战斗后随机获得很多宝物,战斗胜利后
回复HP/SP,与精英怪物战斗可以回复更多的HP/SP,以及随机获得经验奖励,学习敌人技能等.
并且可以与其他地图的暗雷混合使用.

优点:操作性强,不需要脚本.并且能针对不同敌人而造出不同效果,任意调用不同数量的公共事件.
缺点:事件的通用缺点----比较麻烦.

另外,这个工程需要用到66的获得物品提示脚本,修改了一下贴出来(增加了些功能):
  1. # ————————————————————————————————————
  2. # 本脚本来自www.66rpg.com,转载请保留此信息
  3. # ————————————————————————————————————
  4.   
  5. # 注意!!!在对话后得到物品,请在对话后先用事件等待3帧,否则对话框来不及消失。

  6. # 新增获得经验值提示,喝水后回复提示和增减等级提示.

  7. # 开关定义:

  8. $不显示金钱窗口 = 3

  9. $不显示物品窗口 = 3

  10. $不显示武器窗口 = 3

  11. $不显示防具窗口 = 3

  12. # 以上开关,当打开的时候,获得物品将不会提示,比如默认打开41号开关,获得金钱不再提示

  13. # ————————————————————————————————————

  14. class Interpreter  
  15.   #--------------------------------------------------------------------------
  16.   # ● 增减金钱
  17.   #--------------------------------------------------------------------------
  18.   def command_125
  19.     value = operate_value(@parameters[0], @parameters[1], @parameters[2])
  20.     $game_party.gain_gold(value)
  21.     if $game_switches[$不显示金钱窗口]==false
  22.       carol3_66RPG = Window_Base.new((640-160)/2,128,180,100)
  23.       carol3_66RPG.contents = Bitmap.new(carol3_66RPG.width - 32, carol3_66RPG.height - 32)
  24.       if value >= 0
  25.         carol3_66RPG.contents.draw_text(0,0,240,32,"获得金钱:")
  26.         #——声效,可以自己改
  27.         Audio.se_play("Audio/SE/"+"006-System06",80,100)
  28.       else
  29.         carol3_66RPG.contents.draw_text(0,0,240,32,"失去金钱:")
  30.         #——声效,可以自己改
  31.         Audio.se_play("Audio/SE/"+"005-System05",80,100)
  32.       end   
  33.       carol3_66RPG.contents.draw_text(0,32,240,32,value.abs.to_s)
  34.       carol3_66RPG.contents.draw_text(0,32,140,32, $data_system.words.gold,2)
  35.       carol3_66RPG.opacity = 160
  36.       for i in 0..30
  37.         Graphics.update
  38.       end
  39.       for i in 0..10
  40.         carol3_66RPG.opacity -= 30
  41.         carol3_66RPG.contents_opacity -= 30
  42.         Graphics.update
  43.       end
  44.       carol3_66RPG.dispose
  45.     end
  46.     return true
  47.   end
  48.   #--------------------------------------------------------------------------
  49.   # ● 增减物品
  50.   #--------------------------------------------------------------------------
  51.   def command_126
  52.     value = operate_value(@parameters[1], @parameters[2], @parameters[3])
  53.     $game_party.gain_item(@parameters[0], value)
  54.     if $game_switches[$不显示物品窗口]==false
  55.       carol3_66RPG_item = $data_items[@parameters[0]]
  56.       carol3_66RPG = Window_Base.new((640-300)/2,128,300,100)
  57.       carol3_66RPG.contents = Bitmap.new(carol3_66RPG.width - 32, carol3_66RPG.height - 32)
  58.       if value >= 0
  59.         carol3_66RPG.contents.draw_text(0,0,240,32,"获得物品:")   
  60.         #——声效,可以自己改
  61.         Audio.se_play("Audio/SE/"+"006-System06",80,100)
  62.       else
  63.         carol3_66RPG.contents.draw_text(0,0,240,32,"失去物品:")   
  64.         #——声效,可以自己改
  65.         Audio.se_play("Audio/SE/"+"005-System05",80,100)
  66.       end
  67.       carol3_66RPG_bitmap = RPG::Cache.icon(carol3_66RPG_item.icon_name)
  68.       carol3_66RPG.contents.blt(0, 32, carol3_66RPG_bitmap, Rect.new(0, 0, 24, 24), 255)
  69.       carol3_66RPG.contents.draw_text(0 + 28, 32, 212, 32, carol3_66RPG_item.name, 0)
  70.       carol3_66RPG.contents.draw_text(0, 32, 268, 32, "×"+value.abs.to_s, 2)
  71.       carol3_66RPG.opacity = 160
  72.       for i in 0..30
  73.         Graphics.update
  74.       end
  75.       for i in 0..10
  76.         carol3_66RPG.opacity -= 30
  77.         carol3_66RPG.contents_opacity -= 30
  78.         Graphics.update
  79.       end
  80.       carol3_66RPG.dispose
  81.     end
  82.     return true
  83.   end
  84.   #--------------------------------------------------------------------------
  85.   # ● 增减武器
  86.   #--------------------------------------------------------------------------
  87.   def command_127
  88.     value = operate_value(@parameters[1], @parameters[2], @parameters[3])
  89.     $game_party.gain_weapon(@parameters[0], value)
  90.     if $game_switches[$不显示武器窗口]==false
  91.       carol3_66RPG_item = $data_weapons[@parameters[0]]
  92.       carol3_66RPG = Window_Base.new((640-300)/2,128,300,100)
  93.       carol3_66RPG.contents = Bitmap.new(carol3_66RPG.width - 32, carol3_66RPG.height - 32)
  94.       if value >= 0
  95.         carol3_66RPG.contents.draw_text(0,0,240,32,"获得武器:")   
  96.         #——声效,可以自己改
  97.         Audio.se_play("Audio/SE/"+"006-System06",80,100)
  98.       else
  99.         carol3_66RPG.contents.draw_text(0,0,240,32,"失去武器:")   
  100.         #——声效,可以自己改
  101.         Audio.se_play("Audio/SE/"+"005-System05",80,100)
  102.       end
  103.       carol3_66RPG_bitmap = RPG::Cache.icon(carol3_66RPG_item.icon_name)
  104.       carol3_66RPG.contents.blt(0, 32, carol3_66RPG_bitmap, Rect.new(0, 0, 24, 24), 255)
  105.       carol3_66RPG.contents.draw_text(0 + 28, 32, 212, 32, carol3_66RPG_item.name, 0)
  106.       carol3_66RPG.contents.draw_text(0, 32, 268, 32, "×"+value.abs.to_s, 2)
  107.       carol3_66RPG.opacity = 160
  108.       for i in 0..30
  109.         Graphics.update
  110.       end
  111.       for i in 0..10
  112.         carol3_66RPG.opacity -= 30
  113.         carol3_66RPG.contents_opacity -= 30
  114.         Graphics.update
  115.       end
  116.       carol3_66RPG.dispose
  117.     end
  118.     return true
  119.   end
  120.   #--------------------------------------------------------------------------
  121.   # ● 增减防具
  122.   #--------------------------------------------------------------------------
  123.   def command_128
  124.     value = operate_value(@parameters[1], @parameters[2], @parameters[3])
  125.     $game_party.gain_armor(@parameters[0], value)
  126.     if $game_switches[$不显示防具窗口]==false
  127.       carol3_66RPG_item = $data_armors[@parameters[0]]
  128.       carol3_66RPG = Window_Base.new((640-300)/2,128,300,100)
  129.       carol3_66RPG.contents = Bitmap.new(carol3_66RPG.width - 32, carol3_66RPG.height - 32)
  130.       if value >= 0
  131.         carol3_66RPG.contents.draw_text(0,0,240,32,"获得防具:")   
  132.         #——声效,可以自己改
  133.         Audio.se_play("Audio/SE/"+"006-System06",80,100)
  134.       else
  135.         carol3_66RPG.contents.draw_text(0,0,240,32,"失去防具:")   
  136.         #——声效,可以自己改
  137.         Audio.se_play("Audio/SE/"+"005-System05",80,100)
  138.       end
  139.       carol3_66RPG_bitmap = RPG::Cache.icon(carol3_66RPG_item.icon_name)
  140.       carol3_66RPG.contents.blt(0, 32, carol3_66RPG_bitmap, Rect.new(0, 0, 24, 24), 255)
  141.       carol3_66RPG.contents.draw_text(0 + 28, 32, 212, 32, carol3_66RPG_item.name, 0)
  142.       carol3_66RPG.contents.draw_text(0, 32, 268, 32, "×"+value.abs.to_s, 2)
  143.       carol3_66RPG.opacity = 160
  144.       for i in 0..30
  145.         Graphics.update
  146.       end
  147.       for i in 0..10
  148.         carol3_66RPG.opacity -= 30
  149.         carol3_66RPG.contents_opacity -= 30
  150.         Graphics.update
  151.       end
  152.       carol3_66RPG.dispose
  153.     end
  154.     return true
  155.   end
  156.   def command_315
  157.     # 获取操作值
  158.     value = operate_value(@parameters[1], @parameters[2], @parameters[3])
  159.     # 处理重复
  160.     iterate_actor(@parameters[0]) do |actor|
  161.       # 更改角色 EXP
  162.       actor.exp += value
  163.     end
  164.       carol3_66RPG = Window_Base.new((640-160)/2,128,180,100)
  165.       carol3_66RPG.contents = Bitmap.new(carol3_66RPG.width - 32, carol3_66RPG.height - 32)
  166.       if value >= 0
  167.         carol3_66RPG.contents.draw_text(0,0,240,32,"获得经验:")
  168.         #——声效,可以自己改
  169.         Audio.se_play("Audio/SE/"+"006-System06",80,100)
  170.       else
  171.         carol3_66RPG.contents.draw_text(0,0,240,32,"失去经验:")
  172.         #——声效,可以自己改
  173.         Audio.se_play("Audio/SE/"+"005-System05",80,100)
  174.       end   
  175.       carol3_66RPG.contents.draw_text(0,32,240,32,value.abs.to_s)
  176.       carol3_66RPG.contents.draw_text(0,32,140,32, "exp",2)
  177.       carol3_66RPG.opacity = 160
  178.       for i in 0..30
  179.         Graphics.update
  180.       end
  181.       for i in 0..10
  182.         carol3_66RPG.opacity -= 30
  183.         carol3_66RPG.contents_opacity -= 30
  184.         Graphics.update
  185.       end
  186.       carol3_66RPG.dispose
  187.     return true
  188.   end
  189.   def command_314
  190.     # 处理重复
  191.     iterate_actor(@parameters[0]) do |actor|
  192.       # 角色全回复
  193.       actor.recover_all
  194.     end
  195.       carol3_66RPG = Window_Base.new((640-160)/2,128,120,60)
  196.       carol3_66RPG.contents = Bitmap.new(carol3_66RPG.width - 32, carol3_66RPG.height - 32)
  197.       carol3_66RPG.contents.draw_text(0,0,240,32,"完全恢复")
  198.         #——声效,可以自己改
  199.         Audio.se_play("Audio/SE/"+"105-Heal01",80,100)
  200.       carol3_66RPG.opacity = 160
  201.       for i in 0..30
  202.         Graphics.update
  203.       end
  204.       for i in 0..10
  205.         carol3_66RPG.opacity -= 30
  206.         carol3_66RPG.contents_opacity -= 30
  207.         Graphics.update
  208.       end
  209.       carol3_66RPG.dispose
  210.     # 继续
  211.     return true
  212.   end
  213.   def command_316
  214.     # 获取操作值
  215.     value = operate_value(@parameters[1], @parameters[2], @parameters[3])
  216.     # 处理重复
  217.     iterate_actor(@parameters[0]) do |actor|
  218.       # 更改角色的等级
  219.       actor.level += value
  220.     end
  221.           carol3_66RPG = Window_Base.new((640-160)/2,128,180,100)
  222.       carol3_66RPG.contents = Bitmap.new(carol3_66RPG.width - 32, carol3_66RPG.height - 32)
  223.       if value >= 0
  224.         carol3_66RPG.contents.draw_text(0,0,240,32,"等级提升:")
  225.         #——声效,可以自己改
  226.         Audio.se_play("Audio/SE/"+"006-System06",80,100)
  227.       else
  228.         carol3_66RPG.contents.draw_text(0,0,240,32,"等级下降:")
  229.         #——声效,可以自己改
  230.         Audio.se_play("Audio/SE/"+"005-System05",80,100)
  231.       end   
  232.       carol3_66RPG.contents.draw_text(0,32,240,32,value.abs.to_s)
  233.       carol3_66RPG.contents.draw_text(0,32,140,32, "级",2)
  234.       carol3_66RPG.opacity = 160
  235.       for i in 0..30
  236.         Graphics.update
  237.       end
  238.       for i in 0..10
  239.         carol3_66RPG.opacity -= 30
  240.         carol3_66RPG.contents_opacity -= 30
  241.         Graphics.update
  242.       end
  243.       carol3_66RPG.dispose
  244.     # 继续
  245.     return true
  246.   end
  247. end
复制代码
截图:


在指定地点插入你想要的公共事件:


目前在范例里制做了5个公共事件,第5个是驱魔香,对于这种事件暗雷的遇敌,驱魔香的用法
有点不同:(30秒内不遇敌)


范例工程:
仿真事件暗雷.rar (190.65 KB, 下载次数: 182)
作者: 后知后觉    时间: 2009-11-23 13:18
仿佛很灵活的样子

反正都用到随机数了.就把随机战斗BGM也加进去吧....
作者: 越前リョーマ    时间: 2009-12-1 22:00
事件并行带变量就怕掉帧。
作者: 瓦沙尔    时间: 2009-12-14 18:43
提示: 作者被禁止或删除 内容自动屏蔽




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