Project1
标题:
设置事件位置后再回到这个地图,事件有回原位置了
[打印本页]
作者:
电车之熊
时间:
2018-2-9 15:20
标题:
设置事件位置后再回到这个地图,事件有回原位置了
我 与一个NPC对话 然后 “设置事件位置"将这个NPC移到其他的位置了
但
是当我离开这个地图后,有回到这个地图时,这个NPC又回原位置了?
请大大帮助
作者:
xiaohuangdi
时间:
2018-2-9 16:02
参考 入门教学篇 如何使用变量与独立开关
作者:
Nil2018
时间:
2018-2-9 16:14
不懂帮不帮得上
# =============================================================================
# TheoAllen - 记忆事件位置
# Version : 1.0
# Contact : www.rpgmakerid.com (or) http://theolized.blogspot.com
# (This script documentation is written in informal indonesian language)
# =============================================================================
($imported ||= {})[:Theo_MemorizeEvent] = true
# =============================================================================
# CHANGE LOGS:
# -----------------------------------------------------------------------------
# 2013.06.18 - Finished script
# =============================================================================
=begin
介绍 :
本脚本可以在玩家进入下一张地图时,记忆事件的位置。玩家从其他地图回到该地图时
事件会出现在之前的相同位置上。
使用方法 :
将本脚本放在插件脚本和基础模块之下,Main之上
事件名以此标志作为开头: <memorize>
则该事件的位置可以被记忆。
使用条款 :
署名脚本作者, TheoAllen. 你可以自由编辑此脚本,只要你不声明你是脚本的原作者
如果你想用此脚本于商业游戏,请和我共享收益.别忘了给我一份免费的游戏拷贝.
=end
# =============================================================================
# 无设定
# =============================================================================
module THEO
module MAP
module REGEXP
MEMORIZE = /<(?:MEMORIZE|memorize)>(.*)/
end
end
end
Point = Struct.new(:x,:y)
class Event_Memorizer
def initialize
@data = {}
end
def [](key)
if @data[key].nil?
event = $game_map.events[key[1]]
@data[key] = Point.new(event.x,event.y)
end
return @data[key]
end
def []=(key,value)
@data[key] = value
end
end
class Game_System
attr_accessor :event_pos
alias pre_evmemorize_init initialize
def initialize
pre_evmemorize_init
init_event_memorizer
end
def init_event_memorizer
@event_pos = Event_Memorizer.new
end
end
class Game_Event < Game_Character
def name
@event.name
end
end
class Scene_Map < Scene_Base
include THEO::MAP
alias pre_evmemorize_transfer pre_transfer
def pre_transfer
pre_evmemorize_transfer
save_events_location
end
def save_events_location
$game_map.events.each do |id,event|
case event.name
when REGEXP::MEMORIZE
$game_system.event_pos[[$game_map.map_id,id]]=Point.new(event.x,event.y)
end
end
end
end
class Game_Map
include THEO::MAP
alias pre_setup_evmemorize setup
def setup(map_id)
pre_setup_evmemorize(map_id)
load_events_location
end
def load_events_location
events.each do |id,event|
case event.name
when REGEXP::MEMORIZE
point = $game_system.event_pos[[map_id,id]]
event.moveto(point.x,point.y)
end
end
end
end
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1