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

Project1

 找回密码
 注册会员
搜索
查看: 6196|回复: 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

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

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

2
发表于 2013-1-12 13:57:44 | 只看该作者
事件一开始做好注释了么?
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
39 小时
注册时间
2012-10-30
帖子
33
3
 楼主| 发表于 2013-1-12 15:13:53 | 只看该作者
亿万星辰 发表于 2013-1-12 13:57
事件一开始做好注释了么?

什么注释?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
39 小时
注册时间
2012-10-30
帖子
33
4
 楼主| 发表于 2013-1-12 15:49:30 | 只看该作者
有木有人啊
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
5
发表于 2013-1-12 18:53:37 | 只看该作者
您都没有看脚本中的说明吗?一开始要先在事件中第一个指令用注释方式填写敌人ID,这个您究竟有没有做?
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
39 小时
注册时间
2012-10-30
帖子
33
6
 楼主| 发表于 2013-1-12 19:16:27 | 只看该作者
j433463 发表于 2013-1-12 18:53
您都没有看脚本中的说明吗?一开始要先在事件中第一个指令用注释方式填写敌人ID,这个您究竟有没有做? ...

我还没设置敌人纳........难道要在事件标题上做?
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

7
发表于 2013-1-12 19:44:27 | 只看该作者
纲·炎 发表于 2013-1-12 19:16
我还没设置敌人纳........难道要在事件标题上做?

显然你没有仔细的阅读脚本开头的说明,然后就来问问题了……归结于脚本无法使用,殊不知是你自己根本就没有正确的用……你说我该说什么好呀……哎。。。。。
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
39 小时
注册时间
2012-10-30
帖子
33
8
 楼主| 发表于 2013-1-12 19:49:11 | 只看该作者
亿万星辰 发表于 2013-1-12 19:44
显然你没有仔细的阅读脚本开头的说明,然后就来问问题了……归结于脚本无法使用,殊不知是你自己根本就没 ...

..................
我很认真的看了
........
但是看不懂啊
{:2_271:}
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
39 小时
注册时间
2012-10-30
帖子
33
9
 楼主| 发表于 2013-1-12 19:58:11 | 只看该作者
本帖最后由 纲·炎 于 2013-1-12 20:00 编辑
亿万星辰 发表于 2013-1-12 19:44
显然你没有仔细的阅读脚本开头的说明,然后就来问问题了……归结于脚本无法使用,殊不知是你自己根本就没 ...


{:2_264:} 到底怎么弄,请详细说一下啊{:2_271:}
我在一个没注释的地图上可以不会那样啊

点评

你可能是脚本冲突导致出错,可以的话把data文件夹里的Scripts.rvdata2文件发上来看看  发表于 2013-1-12 21:49
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
10
发表于 2013-1-12 20:02:31 | 只看该作者
开启事件后,在事件的执行内容上点两下,开启事件指令页,第一页最下面有个加入注解,点它会有一个输入框,输入敌人的ID,看程式码的正则式,应该是

敌人: 3

这样的写法,注解的颜色是绿色,然后第二行应该再加一个注解,填的是视野范围,应该是

视野: 10

这样的写法,如果没有第二行注解,预设视野范围是 8,也就是八格范围内的有几个敌人事件,战斗时就出现有几个敌人在战斗画面中。

至少这个应该看得懂吧?您对脚本似乎一点都不明白,那设公共事件后添加的语法您恐怕也不知道怎么做...
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-25 13:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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