Shepher Admin
Número de Mensagens : 87 Idade : 28
| Assunto: [RGSS]Habilidade Teleporte Seg maio 31, 2010 6:50 pm | |
| Habilidade - Teleporte por KGC Modificado por Atoa
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 ScreenshotsComo usarPara 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 DemoHabilidade de Teleporte.rarScript- Spoiler:
- 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 FrequentesNenhuma Pergunta Frequente Créditos e Agradecimentos• Feito por KGC• Modificado por Atoa | |
|