Project1
标题:
悬赏2vip 整合脚本角色跟随与传送脚本
[打印本页]
作者:
yangff
时间:
2007-7-16 20:43
标题:
悬赏2vip 整合脚本角色跟随与传送脚本
传送脚本是:
#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================
# 自定义内容解释:
# TOWNS[编号]=["地名,可以随便写",开关编号,[传送去的地图id,传送去的地图x,
# 传送去的地图y],角色朝向]
#
# 编号请按照0、1、2、3……顺序往下排布
# 当编号的开关打开的时候,才可以选择这个传送地点
# 角色朝向,2为下,4为左,6为右,8为上,具体可以参考自己数字小键盘的方向和数字关系
# 如果是其他方向请自己改。
#
# 需要制作脚本,请点击66rpg.com最底部的QQ交谈
#
# 使用方法:在需要传送的传送门、传送石、传送羽毛、传送旅店一类的地方使用公共事件:
# 呼叫脚本:$scene = Scene_Teleport.new
#
# 制作者:柳柳
#==============================================================================
TOWNS=[]
TOWNS[0]=["古德城堡东门",1,[1,2,3],2]
TOWNS[1]=["古德城堡西门",2,[1,2,5],4]
#==============================================================================
# ■ Window_Teleport
#------------------------------------------------------------------------------
# 处理传送的窗口
#==============================================================================
class Window_Teleport < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
super(640,640,64,64)
self.contents = Bitmap.new(width, height)
self.opacity = 180
get_towns
draw_towns
@column_max = 1
end
#--------------------------------------------------------------------------
# ● 获取可到达的城镇和窗口大小
#--------------------------------------------------------------------------
def get_towns
@carol3_towns = []
@width_temp = 0
@cont_use = false
for town in TOWNS
if $game_switches[town[1]]==true
@carol3_towns.push(town)
if contents.text_size(town[0]).width >= @width_temp
@width_temp = contents.text_size(town[0]).width
end
end
end
@item_max = @carol3_towns.size
if @item_max == 0
@carol3_towns[0] = ["没有可以传送的地方",1,[1,1,1]]
@width_temp = contents.text_size(@carol3_towns[0][0]).width
@item_max = 1
@cont_use = true
end
self.width = [@width_temp+32,480].min
self.height = [(@item_max+1)*32,360].min
self.x = (640-self.width)/2
self.y = (480-self.height)/2
self.contents = Bitmap.new(width-32,row_max*32)
end
#--------------------------------------------------------------------------
# ● 描绘城镇名称
#--------------------------------------------------------------------------
def draw_towns
for i in 0...@carol3_towns.size
self.contents.draw_text(0,i*32,@width_temp,32,@carol3_towns[i][0],1)
end
end
#--------------------------------------------------------------------------
# ● 返回的内容
#========================================================================
# ● 地图编号
#--------------------------------------------------------------------------
def map_id
return @carol3_towns[self.index][2][0]
end
#--------------------------------------------------------------------------
# ● 地图x坐标
#--------------------------------------------------------------------------
def map_x
return @carol3_towns[self.index][2][1]
end
#--------------------------------------------------------------------------
# ● 地图y坐标
#--------------------------------------------------------------------------
def map_y
return @carol3_towns[self.index][2][2]
end
#--------------------------------------------------------------------------
# ● 角色朝向
#--------------------------------------------------------------------------
def map_direction
return @carol3_towns[self.index][2][3]
end
#--------------------------------------------------------------------------
# ● 判断是否一个城市都没有
#--------------------------------------------------------------------------
def cant_use?
return @cont_use
end
end
#==============================================================================
# ■ Scene_Teleport
#------------------------------------------------------------------------------
# 处理传送执行的类
#==============================================================================
class Scene_Teleport
#--------------------------------------------------------------------------
# ● 主处理
#--------------------------------------------------------------------------
def main
$game_system.se_play($data_system.decision_se)
@carol3_trans_white = false
@carol3_map_sprite = Spriteset_Map.new
@carol3_teleport_window = Window_Teleport.new
if @carol3_teleport_window.cant_use?
@carol3_teleport_window.index = -1
else
@carol3_teleport_window.index = 0
end
@carol3_teleport_window.active = true
Graphics.transition
loop do
Graphics.update
Input.update
carol3_update
if $scene != self
break
end
end
if @carol3_trans_white==true
@carol3_white_sprite = Sprite.new
@carol3_white_sprite.bitmap = Bitmap.new(640,480)
@carol3_white_sprite.opacity = 0
@carol3_white_sprite.bitmap.fill_rect(0, 0, 640, 480, Color.new(255,255,255,255))
for i in 0..20
@carol3_white_sprite.opacity += 15
@carol3_teleport_window.opacity -= 12
@carol3_teleport_window.contents_opacity -= 12
Graphics.update
end
Graphics.freeze
Graphics.transition(0)
Graphics.update
@carol3_map_sprite.dispose
$game_map.setup($game_temp.player_new_map_id)
$game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
$game_player.turn_down
$game_player.straighten
$game_map.autoplay
Graphics.frame_reset
for i in 0..20
@carol3_white_sprite.opacity -= 15
Graphics.update
end
@carol3_white_sprite.dispose
@carol3_teleport_window.dispose
Graphics.freeze
else
Graphics.freeze
@carol3_teleport_window.dispose
@carol3_map_sprite.dispose
end
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def carol3_update
@carol3_teleport_window.update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
end
if Input.trigger?(Input::C)
if @carol3_teleport_window.index == -1
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
else
$game_temp.player_new_map_id = @carol3_teleport_window.map_id
$game_temp.player_new_x = @carol3_teleport_window.map_x
$game_temp.player_new_y = @carol3_teleport_window.map_y
$game_temp.player_new_direction = @carol3_teleport_window.map_direction
$game_temp.player_transferring = true
$game_temp.transition_processing = true
$game_temp.transition_name = ""
$scene = Scene_Map.new
@carol3_trans_white = true
Audio.se_play("Audio/SE/" + "018-Teleport01",100,100)
return
end
end
end
end
#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================
复制代码
跟随脚本是或主站上其他的跟随脚本:
class Game_Character
attr_accessor :move_speed
end
class Game_Map
attr_accessor :oldroute
attr_accessor :oldeventsnums
attr_reader :map
alias initialize_old initialize
def initialize
initialize_old
@oldroute = []
@oldeventsnums = 0
end
end
class Game_Player < Game_Character
alias update_old update
def update
last_moving = moving?
unless moving? or $game_system.map_interpreter.running? or
@move_route_forcing or $game_temp.message_window_showing
case Input.dir4
when 2
if passable?(@x, @y, 2)
$game_map.oldroute.push([@x,@y,2])
if $game_map.oldroute.size == $game_party.actors.size
$game_map.oldroute.shift
end
end
move_down
when 4
if passable?(@x, @y, 4)
$game_map.oldroute.push([@x,@y,4])
if $game_map.oldroute.size == $game_party.actors.size
$game_map.oldroute.shift
end
end
move_left
when 6
if passable?(@x, @y, 6)
$game_map.oldroute.push([@x,@y,6])
if $game_map.oldroute.size == $game_party.actors.size
$game_map.oldroute.shift
end
end
move_right
when 8
if passable?(@x, @y, 8)
$game_map.oldroute.push([@x,@y,8])
if $game_map.oldroute.size == $game_party.actors.size
$game_map.oldroute.shift
end
end
move_up
end
end
update_old
end
end
class Interpreter
def command_129
actor = $game_actors[@parameters[0]]
if actor != nil
if @parameters[1] == 0
if @parameters[2] == 1
$game_actors[@parameters[0]].setup(@parameters[0])
end
$game_party.add_actor(@parameters[0])
$scene.del_follow
$scene.follow_system
else
$game_party.remove_actor(@parameters[0])
$scene.del_follow
$scene.follow_system
end
end
return true
end
end
class Scene_Map
alias main_old main
def main
@spriteset = Spriteset_Map.new
if $game_variables[1000] == 0
follow_system
$game_variables[1000] = 1
end
main_old
end
alias update_old update
def update
follow_system_update
update_old
end
alias transfer_player_old transfer_player
def transfer_player
$game_temp.player_transferring = false
if $game_map.map_id != $game_temp.player_new_map_id
del_follow
$game_map.setup($game_temp.player_new_map_id)
end
$game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
follow_system
transfer_player_old
end
def follow_system
$game_map.oldeventsnums = $game_map.events.size
if $game_party.actors.size>=2
for i in 2..$game_party.actors.size
# 为事件加上名字考虑做srpg用
name = "我军,"+i.to_s
character_name = $game_party.actors[i-1].character_name
party_event($game_player.x,$game_player.y,name,character_name)
$game_map.oldroute.push([$game_player.x,$game_player.y,$game_player.direction])
end
end
end
def del_follow
$game_map.oldroute.clear
for i in 1..($game_map.events.size-$game_map.oldeventsnums)
$game_map.events.delete($game_map.oldeventsnums+i)
end
end
def party_event(x,y,name,character_name)
$game_map.events[$game_map.events.size+1] = Game_Event.new($game_map.map_id,produce_party_event(x,y,name,character_name))
$game_map.map.events[$game_map.events.size] = produce_party_event(x,y,name,character_name)
@spriteset.dispose
@spriteset = Spriteset_Map.new
end
def produce_party_event(x,y,name,character_name)
e = RPG::Event.new(x,y)
e.id = $game_map.events.size
e.name = name
e.pages = [RPG::Event::Page.new]
e.pages[0].graphic = RPG::Event::Page::Graphic.new
e.pages[0].graphic.character_name = character_name
e.pages[0].through = true
return e
end
def follow_system_update
num = $game_map.oldeventsnums
n = $game_player.move_speed
s=$game_map.oldroute.size-1
if s>=0
#$game_map.events[num+1].move_speed = n
if $game_map.events[num+1].x>$game_map.oldroute[s][0]
$game_map.events[num+1].move_left
elsif $game_map.events[num+1].x<$game_map.oldroute[s][0]
$game_map.events[num+1].move_right
elsif $game_map.events[num+1].y>$game_map.oldroute[s][1]
$game_map.events[num+1].move_up
elsif $game_map.events[num+1].y<$game_map.oldroute[s][1]
$game_map.events[num+1].move_down
end
end
if s>=1
$game_map.events[num+2].move_speed = n
if $game_map.events[num+2].x>$game_map.oldroute[s-1][0]
$game_map.events[num+2].move_left
elsif $game_map.events[num+2].x<$game_map.oldroute[s-1][0]
$game_map.events[num+2].move_right
elsif $game_map.events[num+2].y>$game_map.oldroute[s-1][1]
$game_map.events[num+2].move_up
elsif $game_map.events[num+2].y<$game_map.oldroute[s-1][1]
$game_map.events[num+2].move_down
end
end
if s>=2
$game_map.events[num+3].move_speed = n
if $game_map.events[num+3].x>$game_map.oldroute[s-2][0]
$game_map.events[num+3].move_left
elsif $game_map.events[num+3].x<$game_map.oldroute[s-2][0]
$game_map.events[num+3].move_right
elsif $game_map.events[num+3].y>$game_map.oldroute[s-2][1]
$game_map.events[num+3].move_up
elsif $game_map.events[num+3].y<$game_map.oldroute[s-2][1]
$game_map.events[num+3].move_down
end
end
end
end
复制代码
[LINE]1,#dddddd[/LINE]
版务信息:本贴由楼主自主结贴~
作者:
yangff
时间:
2007-7-16 20:43
标题:
悬赏2vip 整合脚本角色跟随与传送脚本
传送脚本是:
#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================
# 自定义内容解释:
# TOWNS[编号]=["地名,可以随便写",开关编号,[传送去的地图id,传送去的地图x,
# 传送去的地图y],角色朝向]
#
# 编号请按照0、1、2、3……顺序往下排布
# 当编号的开关打开的时候,才可以选择这个传送地点
# 角色朝向,2为下,4为左,6为右,8为上,具体可以参考自己数字小键盘的方向和数字关系
# 如果是其他方向请自己改。
#
# 需要制作脚本,请点击66rpg.com最底部的QQ交谈
#
# 使用方法:在需要传送的传送门、传送石、传送羽毛、传送旅店一类的地方使用公共事件:
# 呼叫脚本:$scene = Scene_Teleport.new
#
# 制作者:柳柳
#==============================================================================
TOWNS=[]
TOWNS[0]=["古德城堡东门",1,[1,2,3],2]
TOWNS[1]=["古德城堡西门",2,[1,2,5],4]
#==============================================================================
# ■ Window_Teleport
#------------------------------------------------------------------------------
# 处理传送的窗口
#==============================================================================
class Window_Teleport < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
super(640,640,64,64)
self.contents = Bitmap.new(width, height)
self.opacity = 180
get_towns
draw_towns
@column_max = 1
end
#--------------------------------------------------------------------------
# ● 获取可到达的城镇和窗口大小
#--------------------------------------------------------------------------
def get_towns
@carol3_towns = []
@width_temp = 0
@cont_use = false
for town in TOWNS
if $game_switches[town[1]]==true
@carol3_towns.push(town)
if contents.text_size(town[0]).width >= @width_temp
@width_temp = contents.text_size(town[0]).width
end
end
end
@item_max = @carol3_towns.size
if @item_max == 0
@carol3_towns[0] = ["没有可以传送的地方",1,[1,1,1]]
@width_temp = contents.text_size(@carol3_towns[0][0]).width
@item_max = 1
@cont_use = true
end
self.width = [@width_temp+32,480].min
self.height = [(@item_max+1)*32,360].min
self.x = (640-self.width)/2
self.y = (480-self.height)/2
self.contents = Bitmap.new(width-32,row_max*32)
end
#--------------------------------------------------------------------------
# ● 描绘城镇名称
#--------------------------------------------------------------------------
def draw_towns
for i in 0...@carol3_towns.size
self.contents.draw_text(0,i*32,@width_temp,32,@carol3_towns[i][0],1)
end
end
#--------------------------------------------------------------------------
# ● 返回的内容
#========================================================================
# ● 地图编号
#--------------------------------------------------------------------------
def map_id
return @carol3_towns[self.index][2][0]
end
#--------------------------------------------------------------------------
# ● 地图x坐标
#--------------------------------------------------------------------------
def map_x
return @carol3_towns[self.index][2][1]
end
#--------------------------------------------------------------------------
# ● 地图y坐标
#--------------------------------------------------------------------------
def map_y
return @carol3_towns[self.index][2][2]
end
#--------------------------------------------------------------------------
# ● 角色朝向
#--------------------------------------------------------------------------
def map_direction
return @carol3_towns[self.index][2][3]
end
#--------------------------------------------------------------------------
# ● 判断是否一个城市都没有
#--------------------------------------------------------------------------
def cant_use?
return @cont_use
end
end
#==============================================================================
# ■ Scene_Teleport
#------------------------------------------------------------------------------
# 处理传送执行的类
#==============================================================================
class Scene_Teleport
#--------------------------------------------------------------------------
# ● 主处理
#--------------------------------------------------------------------------
def main
$game_system.se_play($data_system.decision_se)
@carol3_trans_white = false
@carol3_map_sprite = Spriteset_Map.new
@carol3_teleport_window = Window_Teleport.new
if @carol3_teleport_window.cant_use?
@carol3_teleport_window.index = -1
else
@carol3_teleport_window.index = 0
end
@carol3_teleport_window.active = true
Graphics.transition
loop do
Graphics.update
Input.update
carol3_update
if $scene != self
break
end
end
if @carol3_trans_white==true
@carol3_white_sprite = Sprite.new
@carol3_white_sprite.bitmap = Bitmap.new(640,480)
@carol3_white_sprite.opacity = 0
@carol3_white_sprite.bitmap.fill_rect(0, 0, 640, 480, Color.new(255,255,255,255))
for i in 0..20
@carol3_white_sprite.opacity += 15
@carol3_teleport_window.opacity -= 12
@carol3_teleport_window.contents_opacity -= 12
Graphics.update
end
Graphics.freeze
Graphics.transition(0)
Graphics.update
@carol3_map_sprite.dispose
$game_map.setup($game_temp.player_new_map_id)
$game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
$game_player.turn_down
$game_player.straighten
$game_map.autoplay
Graphics.frame_reset
for i in 0..20
@carol3_white_sprite.opacity -= 15
Graphics.update
end
@carol3_white_sprite.dispose
@carol3_teleport_window.dispose
Graphics.freeze
else
Graphics.freeze
@carol3_teleport_window.dispose
@carol3_map_sprite.dispose
end
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def carol3_update
@carol3_teleport_window.update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
end
if Input.trigger?(Input::C)
if @carol3_teleport_window.index == -1
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
else
$game_temp.player_new_map_id = @carol3_teleport_window.map_id
$game_temp.player_new_x = @carol3_teleport_window.map_x
$game_temp.player_new_y = @carol3_teleport_window.map_y
$game_temp.player_new_direction = @carol3_teleport_window.map_direction
$game_temp.player_transferring = true
$game_temp.transition_processing = true
$game_temp.transition_name = ""
$scene = Scene_Map.new
@carol3_trans_white = true
Audio.se_play("Audio/SE/" + "018-Teleport01",100,100)
return
end
end
end
end
#==============================================================================
# 本脚本来自www.66RPG.com,使用和转载请保留此信息
#==============================================================================
复制代码
跟随脚本是或主站上其他的跟随脚本:
class Game_Character
attr_accessor :move_speed
end
class Game_Map
attr_accessor :oldroute
attr_accessor :oldeventsnums
attr_reader :map
alias initialize_old initialize
def initialize
initialize_old
@oldroute = []
@oldeventsnums = 0
end
end
class Game_Player < Game_Character
alias update_old update
def update
last_moving = moving?
unless moving? or $game_system.map_interpreter.running? or
@move_route_forcing or $game_temp.message_window_showing
case Input.dir4
when 2
if passable?(@x, @y, 2)
$game_map.oldroute.push([@x,@y,2])
if $game_map.oldroute.size == $game_party.actors.size
$game_map.oldroute.shift
end
end
move_down
when 4
if passable?(@x, @y, 4)
$game_map.oldroute.push([@x,@y,4])
if $game_map.oldroute.size == $game_party.actors.size
$game_map.oldroute.shift
end
end
move_left
when 6
if passable?(@x, @y, 6)
$game_map.oldroute.push([@x,@y,6])
if $game_map.oldroute.size == $game_party.actors.size
$game_map.oldroute.shift
end
end
move_right
when 8
if passable?(@x, @y, 8)
$game_map.oldroute.push([@x,@y,8])
if $game_map.oldroute.size == $game_party.actors.size
$game_map.oldroute.shift
end
end
move_up
end
end
update_old
end
end
class Interpreter
def command_129
actor = $game_actors[@parameters[0]]
if actor != nil
if @parameters[1] == 0
if @parameters[2] == 1
$game_actors[@parameters[0]].setup(@parameters[0])
end
$game_party.add_actor(@parameters[0])
$scene.del_follow
$scene.follow_system
else
$game_party.remove_actor(@parameters[0])
$scene.del_follow
$scene.follow_system
end
end
return true
end
end
class Scene_Map
alias main_old main
def main
@spriteset = Spriteset_Map.new
if $game_variables[1000] == 0
follow_system
$game_variables[1000] = 1
end
main_old
end
alias update_old update
def update
follow_system_update
update_old
end
alias transfer_player_old transfer_player
def transfer_player
$game_temp.player_transferring = false
if $game_map.map_id != $game_temp.player_new_map_id
del_follow
$game_map.setup($game_temp.player_new_map_id)
end
$game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
follow_system
transfer_player_old
end
def follow_system
$game_map.oldeventsnums = $game_map.events.size
if $game_party.actors.size>=2
for i in 2..$game_party.actors.size
# 为事件加上名字考虑做srpg用
name = "我军,"+i.to_s
character_name = $game_party.actors[i-1].character_name
party_event($game_player.x,$game_player.y,name,character_name)
$game_map.oldroute.push([$game_player.x,$game_player.y,$game_player.direction])
end
end
end
def del_follow
$game_map.oldroute.clear
for i in 1..($game_map.events.size-$game_map.oldeventsnums)
$game_map.events.delete($game_map.oldeventsnums+i)
end
end
def party_event(x,y,name,character_name)
$game_map.events[$game_map.events.size+1] = Game_Event.new($game_map.map_id,produce_party_event(x,y,name,character_name))
$game_map.map.events[$game_map.events.size] = produce_party_event(x,y,name,character_name)
@spriteset.dispose
@spriteset = Spriteset_Map.new
end
def produce_party_event(x,y,name,character_name)
e = RPG::Event.new(x,y)
e.id = $game_map.events.size
e.name = name
e.pages = [RPG::Event::Page.new]
e.pages[0].graphic = RPG::Event::Page::Graphic.new
e.pages[0].graphic.character_name = character_name
e.pages[0].through = true
return e
end
def follow_system_update
num = $game_map.oldeventsnums
n = $game_player.move_speed
s=$game_map.oldroute.size-1
if s>=0
#$game_map.events[num+1].move_speed = n
if $game_map.events[num+1].x>$game_map.oldroute[s][0]
$game_map.events[num+1].move_left
elsif $game_map.events[num+1].x<$game_map.oldroute[s][0]
$game_map.events[num+1].move_right
elsif $game_map.events[num+1].y>$game_map.oldroute[s][1]
$game_map.events[num+1].move_up
elsif $game_map.events[num+1].y<$game_map.oldroute[s][1]
$game_map.events[num+1].move_down
end
end
if s>=1
$game_map.events[num+2].move_speed = n
if $game_map.events[num+2].x>$game_map.oldroute[s-1][0]
$game_map.events[num+2].move_left
elsif $game_map.events[num+2].x<$game_map.oldroute[s-1][0]
$game_map.events[num+2].move_right
elsif $game_map.events[num+2].y>$game_map.oldroute[s-1][1]
$game_map.events[num+2].move_up
elsif $game_map.events[num+2].y<$game_map.oldroute[s-1][1]
$game_map.events[num+2].move_down
end
end
if s>=2
$game_map.events[num+3].move_speed = n
if $game_map.events[num+3].x>$game_map.oldroute[s-2][0]
$game_map.events[num+3].move_left
elsif $game_map.events[num+3].x<$game_map.oldroute[s-2][0]
$game_map.events[num+3].move_right
elsif $game_map.events[num+3].y>$game_map.oldroute[s-2][1]
$game_map.events[num+3].move_up
elsif $game_map.events[num+3].y<$game_map.oldroute[s-2][1]
$game_map.events[num+3].move_down
end
end
end
end
复制代码
[LINE]1,#dddddd[/LINE]
版务信息:本贴由楼主自主结贴~
作者:
yangff
时间:
2007-7-18 03:28
快啊!
作者:
simounF
时间:
2007-7-18 05:49
提示:
作者被禁止或删除 内容自动屏蔽
作者:
yangff
时间:
2007-7-25 04:50
thank
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1