Arena RPG Maker
Olá, visitante!
Seja bem-vindo ao fórum Arena RPG Maker, caso queira aprender sobre criação de jogos, está no fórum certo. Esperamos que possa aprender tanto quanto possa nos ensinar aqui.

Atenciosamente,
Equipe Arena RPG Maker.
Arena RPG Maker

Estamos de volta o/ ... Ou não.Eu amo a -Dark
Doações para o fórum abertas, clique aqui e saiba mais.
Últimos assuntos
» Pokémon Genesis Online! (PGO)
Qua 05 Jul 2017, 17:08 por Lexar

» Tileset Converter to MV
Sex 12 Maio 2017, 13:07 por Douggi

» [Dúvida] Como tirar a porcentagem de esquiva
Ter 09 Maio 2017, 22:15 por Neil Flame Runner

» Pack Resources, Sprites e etc
Qua 23 Dez 2015, 09:30 por raydengv

» Download RPG Maker 2003 + RTP em português
Ter 22 Dez 2015, 08:14 por ::KimMax::

» Fantasy Art Online
Dom 18 Out 2015, 16:42 por daviih123

» Você vai ter medo do Nerve gear?
Sab 25 Jul 2015, 16:02 por Kirito-kun

» O Barato é louco
Sab 27 Jun 2015, 15:26 por Halt

» Download RPG Maker 2000 + RTP em português
Qui 21 Maio 2015, 19:28 por Wismael

» Divulgando meu grupo e página do Facebook
Ter 19 Maio 2015, 13:06 por Halt


Você não está conectado. Conecte-se ou registre-se

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

1 Habilidade para Teleportar em Qua 26 Set 2012, 18:26

Carlos

avatar
Administrador
Administrador
Introdução:

Esse script permite que você crie habilidades e/ou itens que teleportam você para locais previamente memorizados. 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.

Como Utilizar:

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


Você pode desativar o teleporte ativando o switch de negação de teleporte
"NO_TELEPORT_SWITCH"
Você pode definir a ID desse Switch

Script:

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

Demo: Habilidade para Teleportar

Screenshots:

Spoiler:
[Você precisa estar registrado e conectado para ver esta imagem.]



[Você precisa estar registrado e conectado para ver esta imagem.]



[Você precisa estar registrado e conectado para ver esta imagem.]



[Você precisa estar registrado e conectado para ver esta imagem.]



Créditos:

Spoiler:
Feito por KGC
Modificado por Atoa






Última edição por ChaCauL em Qui 27 Set 2012, 17:26, editado 1 vez(es)


__________________________________________
[Você precisa estar registrado e conectado para ver esta imagem.]


[Você precisa estar registrado e conectado para ver esta imagem.]

[Você precisa estar registrado e conectado para ver esta imagem.]
Ver perfil do usuário http://arenarpgmaker.eclipserpg.com

2 Re: Habilidade para Teleportar em Qui 27 Set 2012, 08:02

lucasferraz

avatar
Membro de Honra
Membro de Honra
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

Brother, dá uma arrumada.
Valeu pelo Script!


__________________________________________
[Você precisa estar registrado e conectado para ver esta imagem.]
Ver perfil do usuário

3 Re: Habilidade para Teleportar em Sex 28 Set 2012, 06:57

Duran

avatar
Membro de Honra
Membro de Honra
Rapaz, eu fiz um sistema desse no meu jogo, porém, eles precisam de um cristal que leva a um mapa cheio de teleports, sendo que o único teleport liberado é o inicial, que segundo a força de lá "É o único teleport que leva a lugares diferentes, pois ele te leva para casa), para conseguir os outros, você precisa de outros cristais que abrem os portais.


__________________________________________

[Você precisa estar registrado e conectado para ver esta imagem.]
[Você precisa estar registrado e conectado para ver esta imagem.]
Ver perfil do usuário http://www.pausaprointervalo.com.br

Conteúdo patrocinado


Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum