Habilidade - Teleporte
por KGC
Modificado por Atoa

Scripts RGSS, Resources, Tutorials and Translations by Atoa is licensed under a
Creative Commons Atribuição-Uso Não-Comercial-Compartilhamento pela mesma Licença 2.5 Brasil License.
Permissions beyond the scope of this license may be available at Santuário RPG Maker
por KGC
Modificado por Atoa

Scripts RGSS, Resources, Tutorials and Translations by Atoa is licensed under a
Creative Commons Atribuição-Uso Não-Comercial-Compartilhamento pela mesma Licença 2.5 Brasil License.
Permissions beyond the scope of this license may be available at Santuário RPG Maker
Introdução
Esse script permite que você crie habilidades e/ou itens que teleportam você para locais previamente memorizados. Eu adicionei um sistema de "Negar Teleporte" ao script, assim a habilidade não funciona se você ligar um switch (defindo por você). Útil para alguns momentos da história onde o personagem tem que ir a um local e nao pode voltar.
Características
• Permite adicionar o atributo "Teleporte" a Habilidades e/ou Itens.
• Sistema de Negar teleporte adicionado por Atoa
Screenshots

Como usar
Para instalá-lo, apenas cole o script acima do main.
Primeiro você deve criar um atributo na aba de sistemas com o nome de "Teleporte"
Você deve então criar uma habilidade e/ou um item e adicionar a ele este atributo. Lembre-se de permitir seu uso apenas no Menu. Pois em batalha ela não tem efeito.
Para memorizar um novo local, use o comando Chamar Script e adicione:
Código:
add_teleport(nome, id, x, y, direção)
Onde:- nome: Este é o nome do local para onde você vai se teletransportar.
Não precisa ser necessáriamente o nome do mapa.
Para criar mais de um ponto de teleporte no mesmo mapa, você deve usar nomes diferentes. Por exemplo "Cidade - Saida Norte" e "Cidade - Saida Sul"
- id: ID do mapa para onde o personagem será teleportado.
- x: coordenada X onde o personagem irá aparecer
- y: coordenada Y onde o personagem irá aparecer
- direção: a direção para qual o personagem estará virado ao aparecer no mapa deve ser um valor igual a 2, 4, 6 ou 8
2 = o personagem aparece olhando para baixo
4 = o personagem aparece olhando para esquerda
6 = o personagem aparece olhando para direita
8 = o personagem aparece olhando para direita
Você pode desativar o teleporte ativando o switch de negação de teleporte
"NO_TELEPORT_SWITCH"
Você pode definir a ID desse Switch
Demo
Habilidade de Teleporte.rar
Código:
=begin
#==============================================================================
#?? KGC_Teleport ?
#==============================================================================
Esse script permite criar habilidades ou itens de Teletransporte.
Com ela você pode se teletransportar para locais previamente memorizados
Primeiro você deve criar um atributo na aba de sistemas com o nome
de "Teleporte"
Você deve então criar uma habilidade e/ou um item e adicionar a ele
este atributo. Lembre-se de permitir seu uso apenas no Menu. Pois
em batalha ela não tem efeito.
Para memorizar um novo local, use o comando Chamar Script e adicione:
add_teleport(nome, id, x, y, direção)
Onde:
- nome: Este é o nome do local para onde você vai se teletransportar.
Não precisa ser necessáriamente o nome do mapa.
Para criar mais de um ponto de teleporte no mesmo mapa, você deve usar
nomes diferentes. Por exemplo "Cidade - Saida Norte" e "Cidade - Saida Sul"
- id: ID do mapa para onde o personagem será teleportado.
- x: coordenada X onde o personagem irá aparecer
- y: coordenada Y onde o personagem irá aparecer
- direção: a direção para qual o personagem estará virado ao aparecer no mapa
deve ser um valor igual a 2, 4, 6 ou 8
2 = o personagem aparece olhando para baixo
4 = o personagem aparece olhando para esquerda
6 = o personagem aparece olhando para direita
8 = o personagem aparece olhando para direita
Você pode desativar o teleporte ativando o switch de negação de teleporte
"NO_TELEPORT_SWITCH"
=end
module KGC
#Som ao se teleportar
TELEPORT_SE = RPG::AudioFile.new("018-Teleport01", 80)
#ID Switch de Negação de Teleporte
NO_TELEPORT_SWITCH = 1
end
$game_special_elements = {} if $game_special_elements == nil
$imported = {} if $imported == nil
$data_states = load_data("Data/States.rxdata") if $data_states == nil
$data_system = load_data("Data/System.rxdata") if $data_system == nil
$imported["Teleport"] = true
$game_special_elements["teleport"] = $data_system.elements.index("Teleporte")
#--------------------------------------------------------------------------
def add_teleport(name, id, x, y, dir = 2)
for dest in $game_system.teleport_dest
return if dest == nil || dest[0] == name
end
$game_system.teleport_dest.push([name, id, x, y, dir])
end
#--------------------------------------------------------------------------
def add_teleport_now_place
place = [$game_map.map_name,
$game_map.map_id,
$game_player.x,
$game_player.y,
$game_player.direction]
for dest in $game_system.teleport_dest
return if dest == nil || dest[0] == place[0]
end
$game_system.teleport_dest.push(place)
end
#--------------------------------------------------------------------------
def delete_teleport(name)
for dest in $game_system.teleport_dest
next if dest == nil
if dest[0] == name
$game_system.teleport_dest.delete(dest)
break
end
end
end
#==============================================================================
# ? Game_Temp
#==============================================================================
class Game_Temp
#--------------------------------------------------------------------------
attr_accessor :teleport_calling
attr_accessor :teleport_item
attr_accessor :teleport_user
attr_accessor :teleport_cost_sp
#--------------------------------------------------------------------------
alias initialize_KGC_Teleport initialize
def initialize
initialize_KGC_Teleport
@teleport_item, @teleport_user = nil, nil
@teleport_cost_sp, @teleport_calling = 0, false
end
end
#==============================================================================
# ? Game_System
#==============================================================================
class Game_System
#--------------------------------------------------------------------------
attr_accessor :teleport_dest
attr_accessor :teleport_permit
#--------------------------------------------------------------------------
alias initialize_KGC_Teleport initialize
def initialize
initialize_KGC_Teleport
@teleport_dest, @teleport_permit = [], true
end
end
#==============================================================================
# ? Game_Map
#==============================================================================
class Game_Map
#--------------------------------------------------------------------------
def map_name
mapinfo = load_data("Data/MapInfos.rxdata")
return mapinfo[@map_id].name
end
end
#==============================================================================
# ? Window_Teleport
#==============================================================================
class Window_Teleport < Window_Selectable
#--------------------------------------------------------------------------
def initialize
super(80, 80, 480, 320)
@column_max = 2
refresh
self.back_opacity = 160
self.visible = false
self.index = 0
end
#--------------------------------------------------------------------------
def dest
return @data[self.index]
end
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for dest in $game_system.teleport_dest
next if dest == nil
@data.push(dest)
end
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
def draw_item(index)
dest = @data[index]
x = 4 + index % 2 * 224
y = index / 2 * 32
self.contents.draw_text(x, y, 224, 32, dest[0], 0)
end
#--------------------------------------------------------------------------
def update_cursor_rect
if @index < 0
self.cursor_rect.empty
return
end
row = @index / @column_max
if row < self.top_row
self.top_row = row
end
if row > self.top_row + (self.page_row_max - 1)
self.top_row = row - (self.page_row_max - 1)
end
cursor_width = (self.width - 32) / @column_max
x = @index % @column_max * cursor_width
y = @index / @column_max * 32 - self.oy
self.cursor_rect.set(x, y, cursor_width, 32)
end
end
#==============================================================================
# ? Scene_Map
#==============================================================================
class Scene_Map
#--------------------------------------------------------------------------
alias main_KGC_Teleport main
def main
@teleport_window = Window_Teleport.new
main_KGC_Teleport
@teleport_window.dispose
end
#--------------------------------------------------------------------------
alias update_KGC_Teleport update
def update
update_KGC_Teleport
unless $game_player.moving?
if $game_temp.teleport_calling
call_teleport
end
end
end
#--------------------------------------------------------------------------
def call_teleport
$game_temp.teleport_calling = false
if $game_switches[KGC::NO_TELEPORT_SWITCH] == true
$game_system.se_play($data_system.buzzer_se)
@message_waiting = true
$game_temp.message_proc = Proc.new { @message_waiting = false }
$game_temp.message_text = "Não é possível se teletransportar agora."
else
teleport_flag = false
@teleport_window.refresh
@teleport_window.opacity = 0
@teleport_window.visible = true
@teleport_window.active = true
loop do
@teleport_window.opacity += 16 if @teleport_window.opacity < 255
@teleport_window.update
Graphics.update
Input.update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
if $game_temp.teleport_item != nil
item = $game_temp.teleport_item
$game_party.gain_item(item.id, 1) if item.consumable
$game_temp.teleport_item = nil
elsif $game_temp.teleport_user != nil
$game_temp.teleport_user.sp += $game_temp.teleport_cost_sp
$game_temp.teleport_user = nil
$game_temp.teleport_cost_sp = 0
end
Graphics.freeze
break
end
if Input.trigger?(Input::C)
dest = @teleport_window.dest
if dest == nil
$game_system.se_play($data_system.buzzer_se)
next
end
$game_temp.player_new_map_id = dest[1]
$game_temp.player_new_x = dest[2]
$game_temp.player_new_y = dest[3]
$game_temp.player_new_direction = dest[4]
teleport_flag = true
break
end
end
@teleport_window.visible = false
@teleport_window.active = false
if teleport_flag
$game_temp.player_transferring = true
$game_temp.transition_processing = true
Graphics.freeze
if KGC::TELEPORT_SE.is_a?(RPG::AudioFile)
$game_system.se_play(KGC::TELEPORT_SE)
elsif KGC::TELEPORT_SE.is_a?(String)
Audio.se_play("Audio/SE/" + KGC::TELEPORT_SE)
end
transfer_player
else
Graphics.transition
end
end
end
end
#==============================================================================
# ? Scene_Item
#==============================================================================
class Scene_Item
#--------------------------------------------------------------------------
alias update_item_KGC_Teleport update_item
def update_item
if Input.trigger?(Input::C)
@item = @item_window.item
if @item != nil && @item.is_a?(RPG::Item) &&
@item.element_set.include?($game_special_elements["teleport"])
if $game_system.teleport_permit && @item.is_a?(RPG::Item) &&
$game_party.item_can_use?(@item.id)
$game_system.se_play(@item.menu_se)
$game_party.lose_item(@item.id, 1) if @item.consumable
$game_temp.teleport_item = @item
$game_temp.teleport_calling = true
$scene = Scene_Map.new
else
$game_system.se_play($data_system.buzzer_se)
return
end
return
end
end
update_item_KGC_Teleport
end
end
#==============================================================================
# ? Scene_Skill
#==============================================================================
class Scene_Skill
#--------------------------------------------------------------------------
alias update_skill_KGC_Teleport update_skill
def update_skill
if Input.trigger?(Input::C)
@skill = @skill_window.skill
if @skill != nil && @skill.element_set.include?($game_special_elements["teleport"])
if @skill != nil && @actor.skill_can_use?(@skill.id) &&
$game_system.teleport_permit
$game_system.se_play(@skill.menu_se)
@actor.sp -= @skill.sp_cost
$game_temp.teleport_user = @actor
$game_temp.teleport_cost_sp = @skill.sp_cost
$game_temp.teleport_calling = true
$scene = Scene_Map.new
else
$game_system.se_play($data_system.buzzer_se)
return
end
return
end
end
update_skill_KGC_Teleport
end
end
Perguntas Frequentes
Nenhuma Pergunta Frequente
Créditos e Agradecimentos
•Feito por KGC
•Modificado por Atoa
É isso pessoal, esperem que gostem. =D
Nenhum comentário:
Postar um comentário