Project1

标题: 区域遇敌-脚本简洁版(无事件) [打印本页]

作者: ★_茄孓    时间: 2008-7-10 03:29
标题: 区域遇敌-脚本简洁版(无事件)
类型 0 = 单独区域遇敌, 1 = 区域遇敌+普通遇敌 , 2 = 普通遇敌
使用方法在脚本中,比较简便使用!


看到事件设置区域敌人好象很麻烦,所以写了个脚本简洁版的......
好象很不理想的方法,但是写成了{/gg}
好了不多说!
贴脚本
  1. =begin


  2. ■ 区域遇敌-脚本版 By 茄子
  3. 联系QQ 9244579


  4. 轻松设置某个区域遇敌的敌人ID
  5. 在每个地图上放一个并行事件
  6. 事件内容为脚本(也就是设置该地图的敌人)
  7. 如:

  8. Control_Enemys::RANGS = [  
  9. [1,[0,3],[0,3]],   
  10. 数据分别为
  11. [数据库里敌人队伍1,[起始X坐标0,目的X坐标3],[起始Y坐标0,目的Y坐标3]]
  12. ==>该敌人ID=1)<==     ================>该敌人遇到的范围<=============
  13. 该ID是数据库中队伍的ID,不是敌人的ID。
  14. 遇敌概率还是在地图上设置
  15. 如果不需要区域遇敌,类型 0 = 单独区域遇敌, 1 = 区域遇敌+普通遇敌 , 2 = 普通遇敌
  16. 普通遇敌遇到的就是你原来在地图上设置的敌人了。
  17. Control_Enemys::TYPE = 2
  18. ]
  19. 设置完后在最后需要设置现在地图原来的敌人编号

  20. 如:

  21. 原来地图设置敌人两个编号为 1 2 都是幽灵
  22. Control_Enemys::OLD_ENEMYS = [1,2] 这样以便返回以前的敌人。


  23. =end
  24. module Control_Enemys
  25. OLD_ENEMYS = [1,2]
  26. RANGS =  [  
  27. [1,[0,3],[0,3]],
  28. [4,[16,19],[0,3]]
  29. ]
  30. TYPE = 0
  31. end
  32. class Game_Player
  33.   attr_writer :encounter_count
  34. end
  35. class Game_Map
  36.   attr_writer :encounter_list
  37. end
  38. class Scene_Map
  39.   def update
  40.     loop do
  41.       $game_map.update
  42.       $game_system.map_interpreter.update
  43.       $game_player.update
  44.       $game_system.update
  45.       $game_screen.update
  46.       unless $game_temp.player_transferring
  47.         break
  48.       end
  49.       transfer_player
  50.       if $game_temp.transition_processing
  51.         break
  52.       end
  53.     end
  54.     @spriteset.update
  55.     @message_window.update
  56.     if $game_temp.gameover
  57.       $scene = Scene_Gameover.new
  58.       return
  59.     end
  60.     if $game_temp.to_title
  61.       $scene = Scene_Title.new
  62.       return
  63.     end
  64.     if $game_temp.transition_processing
  65.       $game_temp.transition_processing = false
  66.       if $game_temp.transition_name == ""
  67.         Graphics.transition(20)
  68.       else
  69.         Graphics.transition(40, "Graphics/Transitions/" +
  70.           $game_temp.transition_name)
  71.       end
  72.     end
  73.     if $game_temp.message_window_showing
  74.       return
  75.     end
  76.     if Control_Enemys::TYPE == 1
  77.       if $game_player.encounter_count == 0 and Control_Enemys::OLD_ENEMYS != []
  78.       unless $game_system.map_interpreter.running? or
  79.              $game_system.encounter_disabled   
  80.         n = rand(Control_Enemys::OLD_ENEMYS.size)
  81.         troop_id = Control_Enemys::OLD_ENEMYS[n]
  82.         if $data_troops[troop_id] != nil
  83.           $game_temp.battle_calling = true
  84.           $game_temp.battle_troop_id = troop_id
  85.           $game_temp.battle_can_escape = true
  86.           $game_temp.battle_can_lose = false
  87.           $game_temp.battle_proc = nil
  88.          end
  89.         end
  90.       end  
  91.     end  
  92.     else
  93.      for i in Control_Enemys::RANGS
  94.       if $game_player.x >= i[1][0] and $game_player.x <= i[1][1] and
  95.        $game_player.y >= i[2][0] and $game_player.y <= i[2][1]
  96.       if $game_player.encounter_count == 0 and i[0] != []
  97.       unless $game_system.map_interpreter.running? or
  98.              $game_system.encounter_disabled
  99.         enemys = []
  100.         enemys.push(i[0])
  101.         n = rand(enemys.size)
  102.         troop_id = enemys[n]
  103.         if $data_troops[troop_id] != nil
  104.           $game_temp.battle_calling = true
  105.           $game_temp.battle_troop_id = troop_id
  106.           $game_temp.battle_can_escape = true
  107.           $game_temp.battle_can_lose = false
  108.           $game_temp.battle_proc = nil
  109.          end
  110.         end
  111.        end  
  112.      end
  113.    end
  114.     if Control_Enemys::TYPE == 2
  115.      if $game_player.encounter_count == 0 and $game_map.encounter_list != []
  116.       unless $game_system.map_interpreter.running? or
  117.              $game_system.encounter_disabled
  118.         n = rand($game_map.encounter_list.size)
  119.         troop_id = $game_map.encounter_list[n]
  120.         if $data_troops[troop_id] != nil
  121.           $game_temp.battle_calling = true
  122.           $game_temp.battle_troop_id = troop_id
  123.           $game_temp.battle_can_escape = true
  124.           $game_temp.battle_can_lose = false
  125.           $game_temp.battle_proc = nil
  126.         end
  127.       end
  128.     end
  129.    end
  130.     if Input.trigger?(Input::B)
  131.       unless $game_system.map_interpreter.running? or
  132.         $game_system.menu_disabled
  133.         $game_temp.menu_calling = true
  134.         $game_temp.menu_beep = true
  135.       end
  136.     end
  137.     if $DEBUG and Input.press?(Input::F9)
  138.       $game_temp.debug_calling = true
  139.     end
  140.     unless $game_player.moving?
  141.       if $game_temp.battle_calling
  142.         call_battle
  143.       elsif $game_temp.shop_calling
  144.         call_shop
  145.       elsif $game_temp.name_calling
  146.         call_name
  147.       elsif $game_temp.menu_calling
  148.         call_menu
  149.       elsif $game_temp.save_calling
  150.         call_save
  151.       elsif $game_temp.debug_calling
  152.         call_debug
  153.       end
  154.     end
  155.   end
  156. end
复制代码

然后在放个范例吧
这样比较好容易上手。
点我下载范例

作者: v2sam    时间: 2008-7-10 06:14
嗯~~这样啊~~不过做区域遇敌还是VX方便些~{/dy}
作者: 菜鸟小白    时间: 2008-7-10 20:51
提示: 作者被禁止或删除 内容自动屏蔽
作者: ONEWateR    时间: 2008-7-10 21:08
以下引用v2sam于2008-7-9 22:14:53的发言:

嗯~~这样啊~~不过做区域遇敌还是VX方便些~


是啊.....

这让我想起了口袋
作者: 菜鸟小白    时间: 2008-7-10 21:21
提示: 作者被禁止或删除 内容自动屏蔽
作者: ★_茄孓    时间: 2008-7-11 02:15
汗``抱歉哈,是事件里的脚本没有加#给注释掉所以出现的问题
本来我已经修改了!更换了,不知为何也这样!
再次修改完毕!{/tp}
作者: ★_茄孓    时间: 2008-7-11 02:31
某使用者发短信告诉我,进入工程,找到那个区域,第一步就遇敌了。
因为我在设置该地图时,遇敌率为5步,所以到达区域时早就
超过5步了,你可以更改地图设置中的步数。来调整遇敌率。
作者: 菜鸟小白    时间: 2008-7-11 02:34
提示: 作者被禁止或删除 内容自动屏蔽
作者: t57663893    时间: 2008-7-11 03:34
不错的遇敌方法{/cy}
作者: gonglinyuan    时间: 2008-7-21 20:37
很不错哦
作者: zhmdmzx    时间: 2009-6-3 07:04
难道一个区域只能设定一种怪物吗??
作者: 后知后觉    时间: 2009-6-3 08:19
以下引用zhmdmzx于2009-6-2 23:04:36的发言:

难道一个区域只能设定一种怪物吗??

2008年8月10日注册到今天才发第一帖 你也潜得够深的- -

用变量操作的随机数
当为0的时候
Control_Enemys::RANGS = [  
[1,[0,3],[0,3]],   
当为1的时候
Control_Enemys::RANGS = [  
[2,[0,3],[0,3]],   
当为2的时候
Control_Enemys::RANGS = [  
[3,[0,3],[0,3]],   
等等 看自己的需要




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