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

Project1

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

[RMVX发布] 【补丁?】地图循环时的『接近主角』『远离主角』修正

[复制链接]

Lv3.寻梦者

梦石
0
星屑
4397
在线时间
1910 小时
注册时间
2010-12-21
帖子
2365
跳转到指定楼层
1
发表于 2011-2-2 09:33:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
这个不知道有人发过没有……
新手第一次正式改出来的脚本……
(其实纯粹是小白鼠,曾经实验用了刚刚学到的类方法和函数,最后都没用上,直接做记录用分歧解决了……:L )
部分参考了诡异の猫前辈的VX_hotfix 2补丁
(不知道更新过了没有,那个我下载不了,最后是在某灯光脚本范例里找到的……貌似我找到的还不是完整版?)
(我找到的)诡异の猫前辈的脚本里只有『靠近』的循环方向设定,但是我用的是自定义路线——『接近主角』
于是就发现了这个问题……
以下是脚本:

  1. #==========================================
  2. # ■ VX_个人补丁?  ●循环地图的『接近主角』与『远离主角』调整●
  3. #------------------------------------------------------------------------------
  4. # ◎ 基本没啥技术含量的补丁,在使用诡异の猫前辈的补丁后发现的问题
  5. #    于是仿造其原理,修正了『接近主角』与『远离主角』时,靠近地图
  6. #    边缘会使事件反方向移动到问题
  7. # ☆ (远离主角时如果设置了循环,而地图较小,事件会慌张的在地图边
  8. #     缘徘徊哦~~)
  9. # ▲ 本脚本出产于 http://rpg.blue                             by:黄亦天
  10. #==============================================
  11. class Game_Character

  12.   #--------------------------------------------------------------------------
  13.   # ● 接近主角
  14.   #--------------------------------------------------------------------------
  15.   def move_toward_player
  16.     sx = @x - $game_player.x
  17.     sy = @y - $game_player.y
  18.     if sx != 0 or sy != 0   
  19.       if sx.abs > sy.abs
  20.         if $game_map.loop_horizontal?
  21.           if sx > 0
  22.             sx.abs > ( $game_map.width / 2 ) ? move_right : move_left
  23.           else
  24.             sx.abs > ( $game_map.width / 2 ) ? move_left : move_right
  25.           end
  26.         else
  27.           sx > 0 ? move_left : move_right
  28.         end
  29.         if @move_failed and sy != 0
  30.           if  $game_map.loop_vertical?
  31.             if sy > 0
  32.               sy.abs > ( $game_map.height / 2 ) ? move_down : move_up
  33.             else
  34.               sy.abs > ( $game_map.height / 2 ) ? move_up : move_down
  35.             end
  36.           else
  37.             sy > 0 ? move_up : move_down
  38.           end
  39.         end
  40.       else
  41.         if  $game_map.loop_vertical?
  42.             if sy > 0
  43.               sy.abs > ( $game_map.height / 2 ) ? move_down : move_up
  44.             else
  45.               sy.abs > ( $game_map.height / 2 ) ? move_up : move_down
  46.             end
  47.         else
  48.           sy > 0 ? move_up : move_down
  49.         end
  50.         if @move_failed and sx != 0
  51.           if $game_map.loop_horizontal?
  52.           if sx > 0
  53.             sx.abs > ( $game_map.width / 2 ) ? move_right : move_left
  54.           else
  55.             sx.abs > ( $game_map.width / 2 ) ? move_left : move_right
  56.           end
  57.           else
  58.             sx > 0 ? move_left : move_right
  59.           end
  60.         end
  61.       end
  62.     end
  63.   end

  64.   #--------------------------------------------------------------------------
  65.   # ● 远离主角
  66.   #--------------------------------------------------------------------------
  67.   def move_away_from_player
  68.     sx = @x - $game_player.x
  69.     sy = @y - $game_player.y
  70.     if sx != 0 or sy != 0   
  71.       if sx.abs > sy.abs
  72.         if $game_map.loop_horizontal?
  73.           if sx > 0
  74.             sx.abs > ( $game_map.width / 2 ) ? move_left : move_right
  75.           else
  76.             sx.abs > ( $game_map.width / 2 ) ? move_right : move_left
  77.           end
  78.         else
  79.           sx > 0 ? move_left : move_right
  80.         end
  81.         if @move_failed and sy != 0
  82.           if  $game_map.loop_vertical?
  83.             if sy > 0
  84.               sy.abs > ( $game_map.height / 2 ) ? move_up : move_down
  85.             else
  86.               sy.abs > ( $game_map.height / 2 ) ? move_down : move_up
  87.             end
  88.           else
  89.             sy > 0 ? move_up : move_down
  90.           end
  91.         end
  92.       else
  93.         if  $game_map.loop_vertical?
  94.             if sy > 0
  95.               sy.abs > ( $game_map.height / 2 ) ? move_up : move_down
  96.             else
  97.               sy.abs > ( $game_map.height / 2 ) ? move_down : move_up
  98.             end
  99.         else
  100.           sy > 0 ? move_up : move_down
  101.         end
  102.         if @move_failed and sx != 0
  103.           if $game_map.loop_horizontal?
  104.           if sx > 0
  105.             sx.abs > ( $game_map.width / 2 ) ? move_left : move_right
  106.           else
  107.             sx.abs > ( $game_map.width / 2 ) ? move_right : move_left
  108.           end
  109.           else
  110.             sx > 0 ? move_left : move_right
  111.           end
  112.         end
  113.       end
  114.     end
  115.   end
  116. end
复制代码
以下是范例(混入了之前的三个补丁,VX_HKS1那个是上面的脚本)
接近主角与远离主角修正.rar (291.82 KB, 下载次数: 74)
范例中的坐标窗口请54之,那个窗口开启后,若返回标题或者存档后读取都会很杯具~~

点评

⊙_⊙太谢谢了!  发表于 2013-10-4 08:44
绿坝娘素材库企划

素材库获取方法:暂时中止,需求者私聊。

Lv1.梦旅人

梦石
0
星屑
239
在线时间
2399 小时
注册时间
2008-4-11
帖子
12326

贵宾第6届短篇游戏比赛季军

2
发表于 2011-2-3 01:21:00 | 只看该作者
具体是什么用的。。有点迷糊

点评

这个只是修正『接近主角』/『远离主角』的问题。至于『靠近』,还是要靠诡异の猫前辈的补丁~~  发表于 2011-2-3 01:51
哦,原来是循环地图的补丁  发表于 2011-2-3 01:42
可以把整个脚本ctrl + Q 临时注释掉,试一下效果  发表于 2011-2-3 01:38
默认地图循环的时候,会出现灵异现象,站在循环地图边缘的时候,会出现事件逆行的现象(跨过整个地图再去找你,但实际上只有几步之差)  发表于 2011-2-3 01:37
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 00:26

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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