设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 6962|回复: 11
打印 上一主题 下一主题

[RMVA发布] [VX移植] 即时遇敌系统 v1.0

[复制链接]

Lv2.观梦者

天仙

梦石
0
星屑
610
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

跳转到指定楼层
1
发表于 2012-3-8 12:57:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 雪流星 于 2012-3-8 19:55 编辑

没搜索到原VX版脚本的帖子,脚本工程是从此帖下载的
谁知道的话帮我贴一下连结,谢谢

说明写在脚本里面了
范例工程:
http://hop.tl/QMyGHP7J96dT168yTv
http://115.com/file/e733ay1n

更新日志:
2012-03-08
* 更新功能:不需占用数据库中敌人队伍的位置
* 新增功能:增加敌人视野效果
* 功能修改:敌人设置改在事件指令中,名称空出来可以照常随便使用

  1. #===============================================================
  2. # ■ 即时遇敌,
  3. #---------------------------------------------------------------
  4. #    碰到什么怪物,周围是什么怪物战斗中就是什么怪物
  5. #===============================================================
  6. =begin
  7. 使用说明

  8. 在地图上放置事件,事件的第一个指令用注释
  9. 在里面填写 敌人: ID (注意是半角冒号),决定触碰到此事件时所战斗的敌人
  10. 第二行可以填写 视野: 数字 ,决定本事件追逐主角的视野范围(默认为8)
  11. 触碰后就会触发战斗,敌人队伍依照主角身边的敌人事件设定生成
  12. 如果主角身边有5个敌人事件,则敌人队伍有五个

  13. 战斗胜利、失败、逃跑后的公共事件,先设定好,把ID填写在脚本当中
  14. ($win_common_event_id 这几行)

  15. 数据库里面的敌人队伍可以照常使用,没有影响。
  16. 作为敌人的事件也可以照常放置其他的指令,执行完后才会执行战斗

  17. =end


  18. $win_common_event_id = 1    # 战胜时的公共事件
  19. $lose_common_event_id = 2   # 战败时的公共事件
  20. $escape_common_event_id = 3 # 逃跑时的公共事件

  21. class Game_Character < Game_CharacterBase
  22.   def move_type_toward_player
  23.     # 计算与主角的距离
  24.     sx = (@x - $game_player.x).abs
  25.     sy = (@y - $game_player.y).abs
  26.     # 如果纵横共计离开 20 个元件
  27.     if sx + sy >= approach_range
  28.       # 随机
  29.       move_random
  30.       return
  31.     end
  32.     # 随机 0~5 的分支
  33.     case rand(6)
  34.     when 0..3  # 接近主角
  35.       move_toward_player
  36.     when 4  # 随机
  37.       move_random
  38.     when 5  # 前进一步
  39.       move_forward
  40.     end
  41.   end
  42.   def approach_range
  43.     return 8
  44.   end
  45. end
  46. class Game_Event < Game_Character
  47.   #--------------------------------------------------------------------------
  48.   # ● 初始化对像
  49.   #     map_id : 地图 ID
  50.   #     event  : 事件 (RPG::Event)
  51.   #--------------------------------------------------------------------------
  52.   alias old_initialize initialize
  53.   def initialize(map_id, event)
  54.     old_initialize(map_id, event)
  55.     name = event.name
  56.     @enemy_id = 0
  57.     @approach_range = 8
  58.     setup_as_enemy
  59.   end
  60.   #--------------------------------------------------------------------------
  61.   # ● 返回视野距离
  62.   #--------------------------------------------------------------------------
  63.   def approach_range
  64.     return @approach_range
  65.   end
  66.   #--------------------------------------------------------------------------
  67.   # ● 判断事件是否存在
  68.   #--------------------------------------------------------------------------
  69.   def exist?
  70.     return !@erased
  71.   end
  72.   #--------------------------------------------------------------------------
  73.   # ● 将事件设为敌人
  74.   #--------------------------------------------------------------------------
  75.   def setup_as_enemy
  76.     enemy_comment = @list[0]
  77.     scope_comment = @list[1] if @list[1] && @list[1].code == 408
  78.     return if enemy_comment.code != 108
  79.     # 读取敌人 ID
  80.     if enemy_comment.parameters[0] =~ /(?:敌人):(?:\s|)(\d+)/
  81.       @enemy_id = $1.to_i
  82.     else
  83.       return
  84.     end
  85.     # 读取敌人视野距离
  86.     if scope_comment.parameters[0] =~ /(?:视野):(?:\s|)(\d+)/
  87.       @approach_range = $1.to_i
  88.     end
  89.     command = RPG::EventCommand.new(355, 0, ["$instant_encounter_battle=true"])
  90.     @list.push(command) # 执行脚本
  91.     command = RPG::EventCommand.new(301, 0, [0, 1, true, true])
  92.     @list.push(command) # 战斗处理
  93.     command = RPG::EventCommand.new(601, 0)
  94.     @list.push(command) # 战胜时的场合
  95.     command = RPG::EventCommand.new(117, 1, [$win_common_event_id])
  96.     @list.push(command) # 呼叫公共事件
  97.     command = RPG::EventCommand.new(602, 0)
  98.     @list.push(command) # 逃跑时的场合
  99.     command = RPG::EventCommand.new(117, 1, [$escape_common_event_id])
  100.     @list.push(command) # 呼叫公共事件
  101.     command = RPG::EventCommand.new(603, 0)
  102.     @list.push(command) # 战败时的场合
  103.     command = RPG::EventCommand.new(117, 1, [$lose_common_event_id])
  104.     @list.push(command) # 呼叫公共事件
  105.     command = RPG::EventCommand.new(604, 0)
  106.     @list.push(command) # 战斗处理结束
  107.     command = RPG::EventCommand.new
  108.     @list.push(command)
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ● 判断事件是否为敌人
  112.   #--------------------------------------------------------------------------
  113.   def isEnemy?
  114.     return @enemy_id > 0
  115.   end
  116.   attr_reader :enemy_id # 指定的敌人ID
  117. end
  118. class Game_Map
  119.   ENCOUNTER_RANGE = 3 #这个代表遇到敌人的范围大小
  120.   #--------------------------------------------------------------------------
  121.   # ●获取指定范围内的事件
  122.   #     x : X 坐标
  123.   #     y : Y 坐标
  124.   #     l : 范围
  125.   #--------------------------------------------------------------------------
  126.   def scope_event
  127.     scope_event = []
  128.     x = $game_player.x
  129.     y = $game_player.y
  130.     for event in $game_map.events.values
  131.       next unless event.isEnemy?
  132.       if (event.x - x).abs + (event.y - y).abs <=ENCOUNTER_RANGE and event.exist?
  133.         scope_event.push(event.id)
  134.         break if scope_event.size >= 8
  135.       end
  136.     end
  137.     return scope_event
  138.   end
  139. end
  140. module BattleManager
  141.   #--------------------------------------------------------------------------
  142.   # ● 处理战斗结束
  143.   #--------------------------------------------------------------------------
  144.   class << self
  145.     alias instant_encounter_setup setup
  146.     def setup(troop_id, can_escape = true, can_lose = false)
  147.       if $instant_encounter_battle
  148.         $data_troops[1].members = []
  149.         scope_event = $game_map.scope_event
  150.         size = scope_event.size
  151.         for i in 1..size
  152.           temp = RPG::Troop::Member.new
  153.           temp.enemy_id = $game_map.events[scope_event[i-1]].enemy_id
  154.           if size > 4
  155.             temp.x = Graphics.width * (i - 0.5) / size
  156.             temp.y = 288 / 2*(i%2+1)
  157.             temp.y += 100*((i+1)%2)
  158.           else
  159.             temp.x = Graphics.width * (i - 0.5) / size
  160.             temp.y = 288
  161.           end
  162.           $data_troops[1].members.push(temp)
  163.           $instant_encounter_battle = false
  164.         end
  165.       end
  166.       instant_encounter_setup(troop_id, can_escape, can_lose)
  167.     end
  168.     alias instant_encounter_battle_end battle_end
  169.     def battle_end(result)
  170.       if result == 0
  171.         # 战斗结束后清除事件(未完成)
  172.         scope_event = $game_map.scope_event
  173.         $game_troop.members.size.times{ |i|
  174.           $game_map.events[scope_event[i]].erase
  175.         }
  176.       end
  177.       instant_encounter_battle_end(result)
  178.     end
  179.   end
  180. end
复制代码
VA脚本开工中...
偷窃脚本1.0 - 已完成

Lv1.梦旅人

梦石
0
星屑
66
在线时间
140 小时
注册时间
2012-2-6
帖子
384
2
发表于 2012-3-8 13:30:57 | 只看该作者
流星出品,总是精品。

点评

我想说这都算水那6楼算什么?  发表于 2012-6-3 19:55

评分

参与人数 1星屑 -40 收起 理由
Kimu -40 看你水至少第二次了

查看全部评分

签名是什么?可以吃么?
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
610
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

3
 楼主| 发表于 2012-3-9 09:55:42 | 只看该作者
2012-03-08
* 更新功能:不需占用数据库中敌人队伍的位置
* 新增功能:增加敌人视野效果
* 功能修改:敌人设置改在事件指令中,名称空出来可以照常随便使用

点评

虽然调用1号敌人队伍来用,不过1号队伍还是能正常战斗  发表于 2012-3-9 12:32
需要占用1号数据库。不是不需要占用  发表于 2012-3-9 11:10
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
123 小时
注册时间
2012-2-12
帖子
73
4
发表于 2012-3-10 22:02:43 | 只看该作者
示范下载不了!
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
610
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

5
 楼主| 发表于 2012-3-11 00:59:39 | 只看该作者
[email protected] 发表于 2012-3-10 08:02
示范下载不了!

两个连接都下载不了??
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
23 小时
注册时间
2011-1-26
帖子
5
6
发表于 2012-4-13 10:21:30 | 只看该作者
马克一下
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
271
在线时间
2088 小时
注册时间
2011-7-28
帖子
1145
7
发表于 2012-4-13 10:36:49 | 只看该作者
本帖最后由 不会脚本 于 2012-4-13 10:40 编辑

不明白真正含义,貌似是升级出错……
(图挂的好厉害)即使遇敌的181行发生NoMethodError……之类的
[color=Red][b]我没有签名[/b][/color]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
12 小时
注册时间
2012-5-24
帖子
6
8
发表于 2012-6-3 02:27:20 | 只看该作者
我是新手..不过能学习的我都不会放过的...
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1316
在线时间
831 小时
注册时间
2007-12-25
帖子
1558
9
发表于 2012-6-4 13:00:49 | 只看该作者
哈哈,我的脚本竟然被移植,很荣幸的说。
精卫赤龙腾   
总是存在一种强大,去完成似乎不可能的事情.
无畏战乾程   
或是需要一种勇气,去挑战几乎不存在的胜利.
一味玄真魂     
这是拥有一种恒心,去化解根本没有解的困难.
烈卫开天径    
只是带着一种决心,去争取残存的最后的希望。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1010
在线时间
423 小时
注册时间
2010-12-26
帖子
337
10
发表于 2012-8-9 16:27:43 | 只看该作者
范例失效

评分

参与人数 1星屑 -2000 收起 理由
忧雪の伤 -2000 刷版

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-26 16:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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