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

Project1

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

[已经过期] 即时遇敌无法使用?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
39 小时
注册时间
2012-10-30
帖子
33
跳转到指定楼层
1
发表于 2013-1-12 13:15:50 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 纲·炎 于 2013-1-12 13:18 编辑

我做了事件标题,然后运行游戏时会有
不过我记得以前不会这样。
脚本如下:
RUBY 代码复制
  1. #===============================================================
  2. # ■ 即时遇敌,
  3. #---------------------------------------------------------------
  4. #    碰到什么怪物,周围是什么怪物战斗中就是什么怪物
  5. #===============================================================
  6. =begin
  7. 使用说明
  8.  
  9. 在地图上放置事件,事件的第一个指令用注释
  10. 在里面填写 敌人: ID (注意是半角冒号),决定触碰到此事件时所战斗的敌人
  11. 第二行可以填写 视野: 数字 ,决定本事件追逐主角的视野范围(默认为8)
  12. 触碰后就会触发战斗,敌人队伍依照主角身边的敌人事件设定生成
  13. 如果主角身边有5个敌人事件,则敌人队伍有五个
  14.  
  15. 战斗胜利、失败、逃跑后的公共事件,先设定好,把ID填写在脚本当中
  16. ($win_common_event_id 这几行)
  17.  
  18. 数据库里面的敌人队伍可以照常使用,没有影响。
  19. 作为敌人的事件也可以照常放置其他的指令,执行完后才会执行战斗
  20.  
  21. =end
  22.  
  23.  
  24. $win_common_event_id = 1    # 战胜时的公共事件
  25. $lose_common_event_id = 2   # 战败时的公共事件
  26. $escape_common_event_id = 3 # 逃跑时的公共事件
  27.  
  28. class Game_Character < Game_CharacterBase
  29.   def move_type_toward_player
  30.     # 计算与主角的距离
  31.     sx = (@x - $game_player.x).abs
  32.     sy = (@y - $game_player.y).abs
  33.     # 如果纵横共计离开 20 个元件
  34.     if sx + sy >= approach_range
  35.       # 随机
  36.       move_random
  37.       return
  38.     end
  39.     # 随机 0~5 的分支
  40.     case rand(6)
  41.     when 0..3  # 接近主角
  42.       move_toward_player
  43.     when 4  # 随机
  44.       move_random
  45.     when 5  # 前进一步
  46.       move_forward
  47.     end
  48.   end
  49.   def approach_range
  50.     return 8
  51.   end
  52. end
  53. class Game_Event < Game_Character
  54.   #--------------------------------------------------------------------------
  55.   # ● 初始化对像
  56.   #     map_id : 地图 ID
  57.   #     event  : 事件 (RPG::Event)
  58.   #--------------------------------------------------------------------------
  59.   alias old_initialize initialize
  60.   def initialize(map_id, event)
  61.     old_initialize(map_id, event)
  62.     name = event.name
  63.     @enemy_id = 0
  64.     @approach_range = 8
  65.     setup_as_enemy
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # ● 返回视野距离
  69.   #--------------------------------------------------------------------------
  70.   def approach_range
  71.     return @approach_range
  72.   end
  73.   #--------------------------------------------------------------------------
  74.   # ● 判断事件是否存在
  75.   #--------------------------------------------------------------------------
  76.   def exist?
  77.     return !@erased
  78.   end
  79.   #--------------------------------------------------------------------------
  80.   # ● 将事件设为敌人
  81.   #--------------------------------------------------------------------------
  82.   def setup_as_enemy
  83.     enemy_comment = @list[0]
  84.     scope_comment = @list[1] if @list[1] && @list[1].code == 408
  85.     return if enemy_comment.code != 108
  86.     # 读取敌人 ID
  87.     if enemy_comment.parameters[0] =~ /(?:敌人):(?:\s|)(\d+)/
  88.       @enemy_id = $1.to_i
  89.     else
  90.       return
  91.     end
  92.     # 读取敌人视野距离
  93.     if scope_comment.parameters[0] =~ /(?:视野):(?:\s|)(\d+)/
  94.       @approach_range = $1.to_i
  95.     end
  96.     command = RPG::EventCommand.new(355, 0, ["$instant_encounter_battle=true"])
  97.     @list.push(command) # 执行脚本
  98.     command = RPG::EventCommand.new(301, 0, [0, 1, true, true])
  99.     @list.push(command) # 战斗处理
  100.     command = RPG::EventCommand.new(601, 0)
  101.     @list.push(command) # 战胜时的场合
  102.     command = RPG::EventCommand.new(117, 1, [$win_common_event_id])
  103.     @list.push(command) # 呼叫公共事件
  104.     command = RPG::EventCommand.new(602, 0)
  105.     @list.push(command) # 逃跑时的场合
  106.     command = RPG::EventCommand.new(117, 1, [$escape_common_event_id])
  107.     @list.push(command) # 呼叫公共事件
  108.     command = RPG::EventCommand.new(603, 0)
  109.     @list.push(command) # 战败时的场合
  110.     command = RPG::EventCommand.new(117, 1, [$lose_common_event_id])
  111.     @list.push(command) # 呼叫公共事件
  112.     command = RPG::EventCommand.new(604, 0)
  113.     @list.push(command) # 战斗处理结束
  114.     command = RPG::EventCommand.new
  115.     @list.push(command)
  116.   end
  117.   #--------------------------------------------------------------------------
  118.   # ● 判断事件是否为敌人
  119.   #--------------------------------------------------------------------------
  120.   def isEnemy?
  121.     return @enemy_id > 0
  122.   end
  123.   attr_reader :enemy_id # 指定的敌人ID
  124. end
  125. class Game_Map
  126.   ENCOUNTER_RANGE = 3 #这个代表遇到敌人的范围大小
  127.   #--------------------------------------------------------------------------
  128.   # ●获取指定范围内的事件
  129.   #     x : X 坐标
  130.   #     y : Y 坐标
  131.   #     l : 范围
  132.   #--------------------------------------------------------------------------
  133.   def scope_event
  134.     scope_event = []
  135.     x = $game_player.x
  136.     y = $game_player.y
  137.     for event in $game_map.events.values
  138.       next unless event.isEnemy?
  139.       if (event.x - x).abs + (event.y - y).abs <=ENCOUNTER_RANGE and event.exist?
  140.         scope_event.push(event.id)
  141.         break if scope_event.size >= 8
  142.       end
  143.     end
  144.     return scope_event
  145.   end
  146. end
  147. module BattleManager
  148.   #--------------------------------------------------------------------------
  149.   # ● 处理战斗结束
  150.   #--------------------------------------------------------------------------
  151.   class << self
  152.     alias instant_encounter_setup setup
  153.     def setup(troop_id, can_escape = true, can_lose = false)
  154.       if $instant_encounter_battle
  155.         $data_troops[1].members = []
  156.         scope_event = $game_map.scope_event
  157.         size = scope_event.size
  158.         for i in 1..size
  159.           temp = RPG::Troop::Member.new
  160.           temp.enemy_id = $game_map.events[scope_event[i-1]].enemy_id
  161.           if size > 4
  162.             temp.x = Graphics.width * (i - 0.5) / size
  163.             temp.y = 288 / 2*(i%2+1)
  164.             temp.y += 100*((i+1)%2)
  165.           else
  166.             temp.x = Graphics.width * (i - 0.5) / size
  167.             temp.y = 288
  168.           end
  169.           $data_troops[1].members.push(temp)
  170.           $instant_encounter_battle = false
  171.         end
  172.       end
  173.       instant_encounter_setup(troop_id, can_escape, can_lose)
  174.     end
  175.     alias instant_encounter_battle_end battle_end
  176.     def battle_end(result)
  177.       if result == 0
  178.         # 战斗结束后清除事件(未完成)
  179.         scope_event = $game_map.scope_event
  180.         $game_troop.members.size.times{ |i|
  181.           $game_map.events[scope_event[i]].erase
  182.         }
  183.       end
  184.       instant_encounter_battle_end(result)
  185.     end
  186.   end
  187. end

如果玩家初始位置不是在事件标题地图上就可以用

Lv1.梦旅人

梦石
0
星屑
50
在线时间
39 小时
注册时间
2012-10-30
帖子
33
21
 楼主| 发表于 2013-1-13 11:14:50 | 只看该作者
viva0072008 发表于 2013-1-12 22:41
这个原帖有个范例,但老实说这脚本本身问题比较多,不建议使用,游戏的正常战斗结束的时候会发生181行错误 ...

那请问有没有较好的明雷?难道要用事件?

点评

这个你论坛搜一下明雷就有很多了,当然也有脚本可以做到明雷的效果,例如MOG的范围感应器。  发表于 2013-1-13 17:04
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
366 小时
注册时间
2009-7-14
帖子
124
20
发表于 2013-1-12 22:41:12 | 只看该作者
这个原帖有个范例,但老实说这脚本本身问题比较多,不建议使用,游戏的正常战斗结束的时候会发生181行错误,再者有个比较奇葩的BUG,那就是你即时遇敌的战斗,如果你逃走了,在触发正常战斗的话,敌人永远是你上次逃走的那些……而且这个即时遇敌的战斗没法很好调用敌群中的事件设置,感觉弊大于利。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
39 小时
注册时间
2012-10-30
帖子
33
19
 楼主| 发表于 2013-1-12 22:00:40 | 只看该作者
Q多少,我加你呗@Sion
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
39 小时
注册时间
2012-10-30
帖子
33
18
 楼主| 发表于 2013-1-12 21:54:09 | 只看该作者
Scripts.rar (153.77 KB, 下载次数: 25)
@Sion  

点评

你mei论坛又大姨妈了害我连发...  发表于 2013-1-12 22:01
qq272915903  发表于 2013-1-12 22:00
qq272915903  发表于 2013-1-12 22:00
事件标题是怎么设计的……我进游戏去没报错。  发表于 2013-1-12 21:59
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
17
发表于 2013-1-12 21:26:00 | 只看该作者
跳过标题页脚本是光的圆周率写的那个,事件标题则是我自己做的,只用一个变量记录编号,一个事件独立开关和六张选项图,档案下载在这帖子底下:

http://rpg.blue/forum.php?mod=vi ... p;page=1#pid2083873

我用这个加上即时遇敌脚本,进入事件标题没有发生您说的情况。
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
39 小时
注册时间
2012-10-30
帖子
33
16
 楼主| 发表于 2013-1-12 21:17:53 | 只看该作者
j433463 发表于 2013-1-12 20:55
我自制事件标题页,有加上这明雷脚本,测试没有遇到您说的问题,不知您事件标题弄了啥?
倒是有战斗后的错 ...

你用的脚本是什么?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
39 小时
注册时间
2012-10-30
帖子
33
15
 楼主| 发表于 2013-1-12 21:01:32 | 只看该作者
j433463 发表于 2013-1-12 20:55
我自制事件标题页,有加上这明雷脚本,测试没有遇到您说的问题,不知您事件标题弄了啥?
倒是有战斗后的错 ...

{:2_271:} 你QQ多少,我加你

点评

我沒QQ的,那長什麼樣子我都不知道,即時通訊軟件這玩意兒我不踫的。  发表于 2013-1-12 21:14
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
14
发表于 2013-1-12 20:55:18 | 只看该作者
我自制事件标题页,有加上这明雷脚本,测试没有遇到您说的问题,不知您事件标题弄了啥?
倒是有战斗后的错误讯息,就跟那个即时遇敌脚本发布帖一样,都是 181 行的问题,
或者,看看亿万版主有没有什么发现?
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
39 小时
注册时间
2012-10-30
帖子
33
13
 楼主| 发表于 2013-1-12 20:40:51 | 只看该作者
j433463 发表于 2013-1-12 20:22
既然知道,那您怎么说看不懂说明呢?让我还以为您看不懂脚本。

而且您这脚本似乎不完整,有些方法和变量没 ...

我也不知道,我把我的事件标题放在范例里面一样用不了,是不是会冲突的啊,哎
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-2-18 11:11

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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