幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1766|回复: 7

[RMXP] 求一个遇敌脚本

[复制链接]

11

主题

49

帖子

467

积分

④见习

我们的聚在一起的目的

积分
467
QQ
发表于 2010-1-28 22:14:30 | 显示全部楼层 |阅读模式
求一个像 VX  那样的可以在一个大地图上设定不同区域遇到不同怪物的脚本?
回复

使用道具 举报

15

主题

88

帖子

794

积分

⑤进阶

积分
794
QQ
发表于 2010-1-28 23:17:28 | 显示全部楼层
可以用地形标志功能 以前66有录像教程教这个了的
回复 支持 反对

使用道具 举报

0

主题

42

帖子

347

积分

④见习

积分
347
发表于 2010-1-29 12:32:15 | 显示全部楼层
记录坐标区域来做遇敌
或用变量来做区域遇敌
或用地形标志来做区域遇敌
或用脚本来做区域遇敌
那我讲一个最简单的区域遇敌

变量0001 = 角色的地形标志#在图块先制作好地形01234567
条件分岐变量0001 = 0
随机遇敌#弄个随机数 或者用步数 之类的弄遇敌
分岐结束

条件分岐变量0001 = 1
随机遇敌
分岐结束               以此类推
回复 支持 反对

使用道具 举报

11

主题

49

帖子

467

积分

④见习

我们的聚在一起的目的

积分
467
QQ
 楼主| 发表于 2010-1-29 20:08:20 | 显示全部楼层
这样的也好,不过如果是做大地图的话可能会用到很多重复的图块,我觉的还是设定地图坐标的要好一点。
回复 支持 反对

使用道具 举报

0

主题

42

帖子

347

积分

④见习

积分
347
发表于 2010-1-30 01:32:00 | 显示全部楼层
想用坐标的话
那我来讲一下简单的做法
例如:变量0001 =主角的 X坐标
      变量0002=主角的 Y坐标
条件分岐:变量0001 >= 0 #0以上
                    变量0002 >= 0
                   变量0001 <= 100#100以下
                   变量0002 <= 100
                   随机遇敌或者步数遇敌
         分岐结束
我做个比例。。如果你要做大地图的话那你自己计算坐标
回复 支持 反对

使用道具 举报

11

主题

49

帖子

467

积分

④见习

我们的聚在一起的目的

积分
467
QQ
 楼主| 发表于 2010-1-30 21:33:16 | 显示全部楼层
谢谢 我回去试试
回复 支持 反对

使用道具 举报

11

主题

49

帖子

467

积分

④见习

我们的聚在一起的目的

积分
467
QQ
 楼主| 发表于 2010-1-31 01:36:50 | 显示全部楼层
哈哈 ……我自己找到了,原来就在自己的电脑里,只是一直没有注意。是我很久以前找到的,是从以前66上找到的,所以就拿出来了。



#复制一下脚本
=begin


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


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

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

如:

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


=end
module Control_Enemys
OLD_ENEMYS = [0]#区域遇敌+普通遇敌
#以下设置遇敌坐标
RANGS =  [  
#坐标型区域遇敌
#[1,[3,5],[3,3]],
#[4,[9,11],[5,5]]
]
TYPE = 1#
end
class Game_Player
  attr_writer :encounter_count
end
class Game_Map
  attr_writer :encounter_list
end
class Scene_Map
  def update
    loop do
      $game_map.update
      $game_system.map_interpreter.update
      $game_player.update
      $game_system.update
      $game_screen.update
      unless $game_temp.player_transferring
        break
      end
      transfer_player
      if $game_temp.transition_processing
        break
      end
    end
    @spriteset.update
    @message_window.update
    if $game_temp.gameover
      $scene = Scene_Gameover.new
      return
    end
    if $game_temp.to_title
      $scene = Scene_Title.new
      return
    end
    if $game_temp.transition_processing
      $game_temp.transition_processing = false
      if $game_temp.transition_name == ""
        Graphics.transition(20)
      else
        Graphics.transition(40, "Graphics/Transitions/" +
          $game_temp.transition_name)
      end
    end
    if $game_temp.message_window_showing
      return
    end
    if Control_Enemys::TYPE == 1
      if $game_player.encounter_count == 0 and Control_Enemys::OLD_ENEMYS != []
      unless $game_system.map_interpreter.running? or
             $game_system.encounter_disabled   
        n = rand(Control_Enemys::OLD_ENEMYS.size)
        troop_id = Control_Enemys::OLD_ENEMYS[n]
        if $data_troops[troop_id] != nil
          $game_temp.battle_calling = true
          $game_temp.battle_troop_id = troop_id
          $game_temp.battle_can_escape = true
          $game_temp.battle_can_lose = false
          $game_temp.battle_proc = nil
         end
        end
      end  
    end  
    else
     for i in Control_Enemys::RANGS
      if $game_player.x >= i[1][0] and $game_player.x <= i[1][1] and
       $game_player.y >= i[2][0] and $game_player.y <= i[2][1]
      if $game_player.encounter_count == 0 and i[0] != []
      unless $game_system.map_interpreter.running? or
             $game_system.encounter_disabled
        enemys = []
        enemys.push(i[0])
        n = rand(enemys.size)
        troop_id = enemys[n]
        if $data_troops[troop_id] != nil
          $game_temp.battle_calling = true
          $game_temp.battle_troop_id = troop_id
          $game_temp.battle_can_escape = true
          $game_temp.battle_can_lose = false
          $game_temp.battle_proc = nil
         end
        end
       end  
     end
   end
    if Control_Enemys::TYPE == 2
     if $game_player.encounter_count == 0 and $game_map.encounter_list != []
      unless $game_system.map_interpreter.running? or
             $game_system.encounter_disabled
        n = rand($game_map.encounter_list.size)
        troop_id = $game_map.encounter_list[n]
        if $data_troops[troop_id] != nil
          $game_temp.battle_calling = true
          $game_temp.battle_troop_id = troop_id
          $game_temp.battle_can_escape = true
          $game_temp.battle_can_lose = false
          $game_temp.battle_proc = nil
        end
      end
    end
   end
    if Input.trigger?(Input::B)
      unless $game_system.map_interpreter.running? or
        $game_system.menu_disabled
        $game_temp.menu_calling = true
        $game_temp.menu_beep = true
      end
    end
    if $DEBUG and Input.press?(Input::F9)
      $game_temp.debug_calling = true
    end
    unless $game_player.moving?
      if $game_temp.battle_calling
        call_battle
      elsif $game_temp.shop_calling
        call_shop
      elsif $game_temp.name_calling
        call_name
      elsif $game_temp.menu_calling
        call_menu
      elsif $game_temp.save_calling
        call_save
      elsif $game_temp.debug_calling
        call_debug
      end
    end
  end
end
回复 支持 反对

使用道具 举报

15

主题

88

帖子

794

积分

⑤进阶

积分
794
QQ
发表于 2010-1-31 10:30:28 | 显示全部楼层
这个好用么?我也试试去
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-5-16 03:45 , Processed in 0.031034 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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