Project1

标题: 求 让事件记住自己位置的方法 [打印本页]

作者: 月之寰宇    时间: 2009-5-29 05:58
标题: 求 让事件记住自己位置的方法
在1号地图上某个事件移动到了右上角,当进入别的地图,再回来发现这个事件又回到了自己原来的地方。有什么办法可以解决吗?
最好不要太麻烦,因为有很多事件的~~~~{/pz} [LINE]1,#dddddd[/LINE]此贴于 2009-5-30 10:35:06 被版主darkten提醒,请楼主看到后对本贴做出回应。 [LINE]1,#dddddd[/LINE]版务信息:版主帮忙结贴~
作者: 越前リョーマ    时间: 2009-5-29 06:01
站上有提供办法,不过也得手动的……
据说有人有自动版的,不过暂时没发现…… - -
作者: 月之寰宇    时间: 2009-5-29 06:03
应该以什么为关键字 查询呢?
作者: 越前リョーマ    时间: 2009-5-29 06:06
http://rpg.blue/viewthread.php?tid=104199&page=2  中
[quote]劍之飛龍☆



点数:103
称号:龙骑
经验:42882
帖子:2209
注册:2007-12-31
状态:离线 档案 搜索 邮件 短信 引用  第16楼

我确实有某个脚本可以很好解决某些问题  
[/quote]
建议联系此人…… - -
作者: 水镜风生    时间: 2009-5-29 06:33
事件A(0,0)、B(5,3)。

事件A从(0,0)移动到(5,3),开关打开,事件A消失,事件B出现,也就是B代替了A,大概就是这样子……
作者: ★_茄孓    时间: 2009-5-29 06:48
让该事件并行处理
然后用事件里的脚本功能
内容:

$game_map.events[@event_id].moveto($game_map.width,0)
# @event_id 是本事件的ID,自己可以更换。


这样切换地图后也可以让它直接跑到右上角
作者: TERENCE    时间: 2009-5-29 06:57
不可能不麻烦,
无论要用纯事件做或脚本制作都很困难,

其中的一个原因需要庞大的变量去存取这些所有事件(或NPC)的座标,
当地图很多时 会更可观


如果单一个还好解决
作者: jhhuang    时间: 2009-5-29 15:42
不知道我的方法合不合用
我做游戏的时候,关于这个事件位置是这样处理的
原理就是利用:"多个事件,取而代之"

事件1
事件2
在"事件1"要移动到的地方加1个"事件2"
找个默契使"事件1"消失(独立开关,开关,变量等等都可以做到),"事件2"变成你需要的条件
这个默契比如可以说比如是你刚才说的"当进入别的地图"这个事件加一个 "001开关 == ON"
"事件1"加一个空白事件,"001开关 == ON"时打开
"事件2"设置成需要的效果,"001开关 == ON"时打开
............省略...
作者: 「旅」    时间: 2009-5-29 17:16
一劳永逸-v-
class Game_Map
  alias old_setup setup
  def setup(jiong)
    if @lv_x == nil
      @lv_x = []
      @lv_y = []
      @lv_direction = []
    end
    if @lv_x[jiong]==nil
        @lv_x[jiong]=[]
        @lv_y[jiong]=[]
        @lv_direction[jiong]=[]
    end
    old_setup(jiong)
  end
  def lv_x(one,two)
    return @lv_x[one][two]
  end
  def lv_y(one,two)
    return @lv_y[one][two]
  end
  def lv_x2(one,two,three)
    @lv_x[one][two]=three
  end
  def lv_y2(one,two,three)
    @lv_y[one][two]=three
  end
  def lv_direction(one,two)
    return @lv_direction[one][two]
  end
  def lv_direction2(one,two,three)
    @lv_direction[one][two]=three
  end
end


class Game_Event
  attr_reader   :id
  attr_reader   :map_id
  alias old_update update
  def update
    old_update
    $game_map.lv_x2(@map_id,@id,self.x)
    $game_map.lv_y2(@map_id,@id,self.y)
    $game_map.lv_direction2(@map_id,@id,self.direction)
  end
  def initialize(map_id, event)
    super()
    @map_id = map_id
    @event = event
    @id = @event.id
    @erased = false
    @starting = false
    @through = true
    if $game_map.lv_x(@map_id,@id)!=nil and !$lv_switches
      @event.x = $game_map.lv_x(@map_id,@id)
      @event.y = $game_map.lv_y(@map_id,@id)
      @direction = $game_map.lv_direction(@map_id,@id)
    end
    moveto(@event.x, @event.y)
    refresh
  end
end
class Game_Temp
attr_accessor :lv_switches
end

效果很囧……支持读档。如果不想要的时候,可以利用 事件中的 【脚本】 功能,
$game_temp.lv_switches = true

又想要时,
$game_temp.lv_switches = false [LINE]1,#dddddd[/LINE]系统信息:本贴由本区版主认可为正确答案,66RPG感谢您的热情解答~
作者: TERENCE    时间: 2009-5-29 21:07
LS思路太厉害了..佩服
原来龙仔把它想得太复杂了


於是留名之

提议「旅」
把该脚本发至
RMXP 原创技术发布区

作者: 「旅」    时间: 2009-5-29 21:38
龙皇过奖了>////<

现在就去发帖骗分。
作者: TERENCE    时间: 2009-5-29 22:07
以下引用「旅」于2009-5-29 13:38:06的发言:

龙皇过奖了>////<

现在就去发帖骗分。


原来你已经看到了
刚刚发给你的短信慢了些
SORRY

作者: 帝国罗马    时间: 2009-5-30 06:07
提示: 作者被禁止或删除 内容自动屏蔽




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