Project1

标题: VX地图循环相关BUG 及 解决方法 [打印本页]

作者: 诡异の猫    时间: 2008-2-11 06:01
标题: VX地图循环相关BUG 及 解决方法
RMVX地图循环存在BUG..
事件处于循环地图的边缘存在部分问题

详情请点击下载范例

试玩一下.
然后你再看看事件的设置你就能明白..

呼呼.终于可以修正所有问题了
若要解决请下载 VX_非官方补丁Pacth包
作者: 趙雲    时间: 2008-2-11 06:05
会被抓住
其他两个是处于循环地图的边界造成的吧。。
作者: 诡异の猫    时间: 2008-2-11 06:08
以下引用趙雲于2008-2-10 22:05:44的发言:

会被抓住
其他两个是处于循环地图的边界造成的吧。。


我知道会被抓住..
只是..那个鬼是靠近角色..
但是..他偏偏要往右边跑..你不觉得奇怪??
如果你把那只鬼的移动方式改为随机..
然后你站再老头左下角..
一直等一直等等那你鬼碰你..
那就启动不了了
作者: 越前リョーマ    时间: 2008-2-11 06:13
……
对哦……

不过既然能转到另一边……
这样接近角色应该也不算有问题……|||
作者: 真の邵东    时间: 2008-2-11 06:16
提示: 作者被禁止或删除 内容自动屏蔽
作者: 诡异の猫    时间: 2008-2-11 06:19
以下引用越前リョーマ于2008-2-10 22:13:15的发言:

……
对哦……

不过既然能转到另一边……
这样接近角色应该也不算有问题……|||


这个只是3个问题中的其中一个!
而且如楼上所说.
如果地图太大..
...那无敌了
作者: 真の邵东    时间: 2008-2-11 06:22
提示: 作者被禁止或删除 内容自动屏蔽
作者: 诡异の猫    时间: 2008-2-11 06:23
以下引用真の邵东于2008-2-10 22:22:15的发言:

VX的 BUG 真多呀`~~
过完年 可能就 有 XX 两位数以上了吧~~~


虽然它BUG多
但他也有优点.
擅用他的优点就行.
我也不是故意挑他刺..
只是让大家知道下而已- -
有空的话写下补丁.
可是..剩下3天了..我的作业{/ll}{/ll}
作者: 真の邵东    时间: 2008-2-11 06:25
提示: 作者被禁止或删除 内容自动屏蔽
作者: 诡异の猫    时间: 2008-2-11 06:29
以下引用真の邵东于2008-2-10 22:25:38的发言:

    作业 - -`~~
  我重来没写过`!

[本贴由作者于 2008-2-10 22:25:47 最后编辑]

我谈话很容易跳话题- -
这里不适合说这些..
所以..回正体吧!
版主原谅.{/hx}
作者: 趙雲    时间: 2008-2-11 06:39
见顶楼吧~

匆忙修改了一下 修复朝向和触发问题
还有BUG的话只能明天看了,睡觉去~


顺便,楼主不去EB工作真是太可惜了。。{/hx} [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 雪色涟漪    时间: 2008-2-11 06:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: 诡异の猫    时间: 2008-2-11 07:00
以下引用趙雲于2008-2-10 22:39:42的发言:
匆忙修改了一下 修复朝向和触发问题
还有BUG的话只能明天看了,睡觉去~


顺便,楼主不去EB工作真是太可惜了。。


[本贴由作者于 2008-2-10 22:41:06 最后编辑]

我还正准备写呢- -
被你抢先了- -
那个..赵云大哥你太粗心了 Game_Character 你写成 Game_Map了...{/hx}

对你的话无语...
讽刺我嘛- -{/gg}
作者: 趙雲    时间: 2008-2-11 18:07
以下引用诡异の猫于2008-2-10 23:00:15的发言:
我还正准备写呢- -
被你抢先了- -
那个..赵云大哥你太粗心了 Game_Character 你写成 Game_Map了...

对你的话无语...
讽刺我嘛- -



可能昨天太匆忙了…

那剩下一个问题你自己解决好了,偶还没完全理解你的意思。

我最后那句话是充满诚意的,绝对没有讽刺的意思{/hx}
作者: 诡异の猫    时间: 2008-2-11 19:40
以下引用趙雲于2008-2-11 10:07:51的发言:
可能昨天太匆忙了…

那剩下一个问题你自己解决好了,偶还没完全理解你的意思。

我最后那句话是充满诚意的,绝对没有讽刺的意思

那个..我要写作业- -
没心情去弄脚本了- -
有空你就顺便修复下好了..{/hx}
作者: 趙雲    时间: 2008-2-12 02:05
  1. class Game_Character
  2.   #--------------------------------------------------------------------------
  3.   # ● 接近玩家
  4.   #--------------------------------------------------------------------------
  5.   def move_toward_player
  6.     sx = distance_x_from_player
  7.     sy = distance_y_from_player

  8.     sx += $game_map.width * 2 if $game_map.loop_horizontal? and sx < - $game_map.width  and sx > - $game_map.width * 2
  9.     sy += $game_map.height * 2 if $game_map.loop_vertical? and sy < - $game_map.height  and sy > - $game_map.height * 2

  10.     if sx != 0 or sy != 0
  11.       if sx.abs > sy.abs                  # 如果横向距离长
  12.         sx > 0 ? move_left : move_right   # 左右方向优先
  13.         if @move_failed and sy != 0
  14.           sy > 0 ? move_up : move_down
  15.         end
  16.       else                                # 如果纵向距离等长
  17.         sy > 0 ? move_up : move_down      # 上下方向优先
  18.         if @move_failed and sx != 0
  19.           sx > 0 ? move_left : move_right
  20.         end
  21.       end
  22.     end
  23.   end
  24.   #--------------------------------------------------------------------------
  25.   # ● 远离玩家
  26.   #--------------------------------------------------------------------------
  27.   def move_away_from_player
  28.     sx = distance_x_from_player
  29.     sy = distance_y_from_player
  30.     sx += $game_map.width * 2 if $game_map.loop_horizontal? and sx < - $game_map.width  and sx > - $game_map.width * 2
  31.     sy += $game_map.height * 2 if $game_map.loop_vertical? and sy < - $game_map.height  and sy > - $game_map.height * 2     
  32.     if sx != 0 or sy != 0
  33.       if sx.abs > sy.abs                  # 如果横向距离长
  34.         sx > 0 ? move_right : move_left   # 左右方向优先
  35.         if @move_failed and sy != 0
  36.           sy > 0 ? move_down : move_up
  37.         end
  38.       else                                # 如果纵向距离等长
  39.         sy > 0 ? move_down : move_up      # 上下方向优先
  40.         if @move_failed and sx != 0
  41.           sx > 0 ? move_right : move_left
  42.         end
  43.       end
  44.     end
  45.   end
  46.   
  47.   #--------------------------------------------------------------------------
  48.   # ● 计算与玩家的 X 距离
  49.   #--------------------------------------------------------------------------
  50.   def distance_x_from_player
  51.     sx = @x - $game_player.x
  52.     if $game_map.loop_horizontal?         # 是否横向循环
  53.       if sx == 1 - $game_map.width
  54.         sx += $game_map.width  
  55.       elsif sx.abs > $game_map.width / 2     # 绝对值是否大于地图的一半?
  56.         sx -= $game_map.width             # 引用地图的宽度
  57.       end
  58.     end
  59.     return sx
  60.   end
  61.   #--------------------------------------------------------------------------
  62.   # ● 计算与玩家的 Y 距离
  63.   #--------------------------------------------------------------------------
  64.   def distance_y_from_player
  65.     sy = @y - $game_player.y
  66.     if $game_map.loop_vertical?           # 是否纵向循环
  67.       if sy == 1 - $game_map.height
  68.         sy += $game_map.height     
  69.       elsif sy.abs > $game_map.height / 2    # 绝对值是否大于地图的一半?
  70.         sy -= $game_map.height            # 引用地图的高度
  71.       end
  72.     end
  73.     return sy
  74.   end
  75. end
  76. class Game_Event
  77.   #--------------------------------------------------------------------------
  78.   # ● 判断接触事件启动
  79.   #--------------------------------------------------------------------------
  80.   def check_event_trigger_touch(x, y)
  81.     return if $game_map.interpreter.running?
  82.     x +=  $game_map.width if $game_map.loop_horizontal? and x < 0
  83.     y +=  $game_map.height if $game_map.loop_vertical? and y < 0   
  84.     if @trigger == 2 and $game_player.pos?(x, y)
  85.       start if not jumping? and @priority_type == 1
  86.     end
  87.   end

  88. end


  89. class Game_Player
  90.     def check_event_trigger_touch(x, y)
  91.     x -=  $game_map.width if $game_map.loop_horizontal? and x == $game_map.width
  92.     y -=  $game_map.height if $game_map.loop_vertical? and y == $game_map.height
  93.     return false if $game_map.interpreter.running?
  94.     result = false
  95.     for event in $game_map.events_xy(x, y)
  96.       if [1,2].include?(event.trigger) and event.priority_type == 1
  97.         event.start
  98.         result = true
  99.       end
  100.     end
  101.     return result
  102.   end
  103. end
复制代码


3bugKO版,猫拿去测试吧。
作者: 诡异の猫    时间: 2008-2-12 05:54
3bugKO版,猫拿去测试吧。

最后那个问题仍然存在.
就是人物站在老头左下方那鬼不会往左走去碰角色(除了偶尔碰巧)
我改了好多次还是解决不了- -
不知道问题出再哪里.
作者: 趙雲    时间: 2008-2-12 16:43
我测试的时候怎么都正常了{/fd}
鬼每次都会向主角的方向移动的。
对了,接近并不完全是靠近主角,有一定几率随机和向前一步的,猫再测试一下看看。




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