O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

[TSDA] TAGS de Terreno

Iniciado por thiago_d_d, 30/11/2012 às 18:50

30/11/2012 às 18:50 Última edição: 20/01/2017 às 10:03 por King Gerar
TAGS de Terreno


[info float=left border=#6587E4]
Informações:
--------------------------------------------------
.
• Autor: thiago_d_d
• Versão: 1.1
• Incompatibilidade: Desprezível
• Lag gerado: Desprezível
• Customizável: Um pouco
• Requer Recursos Extras: Não
[/info][box class=catbg2]
Resumo
[/box][box class=catbg4]
Aqui venho eu com mais um dos meus melhores scripts. Espero que gostem!
Implementa um sistema quase que idêntico ao sistema de TAGS de terrenos presente nos tileset do RMXP. Com esse script, é possível executar determinadas ações quando o herói pisar em um determinado tile. As ações possíveis vão desde mudar o valor de uma variável a executar um código de script qualquer. Com ele é possível até simular o sistema de pokemon em que pokemons diferentes aparecem em terrenos diferentes(por exemplo, um goldeen só aparece na água).
[/box]


[box class=catbg2]
Instalação e configuração
[/box]
Para instalar o script, cole esse código acima de Main ou na seção de scripts adicionais.Instruções adicionais estão no próprio script:
#===============================================================================
#   * MRM - Comunidade RPG Maker!
#     www.mundorpgmaker.com
#   * GRM - Comunidade RPG Maker!
#     www.galaxiarpgmaker.com.br
# [TSDA] Detecção de tiles
#   --> Versão 1.1
# Última atualização: 22/11/2010
#   ----Créditos
#     thiago_d_d - por fazer o script
#
# -----------------------------------------------------------------------------
# * Características
# -----------------------------------------------------------------------------
#  O script faz com que o valor de uma variável mude de acordo com o
#  terreno que foi pisado. É como se fosse(e é) uma implementação do sistema de
#  terrenos que havia no rpg maker xp e não tem mais no rpg maker vx.
#  PS: também é possível executar códigos em vez de mudar a variável.
# -----------------------------------------------------------------------------
# * Instalação
# -----------------------------------------------------------------------------
#  Cole o código do script acima de Main,ou na seção de script adicionais.
#
# -----------------------------------------------------------------------------
# * Configuração
# -----------------------------------------------------------------------------
#  Para implementar uma ação que irá acontecer num tile, é necessário
#  Seguir os seguintes passos:
#  ----------------------
#   ===> Se o tile for do tileset A
#  ----------------------
#  Para adicionar um novo tile com ação especial, vá abaixo de TILES_A_VALUE
#  e adicione um código nesse formato:
#   [x,y] => k
#  No lugar de x, coloque a posição x do tile no tileset A5.
#  No lugar de y, coloque a posição y do tile no tileset A5.
#  No lugar de k, ponha ação, que pode ser um número, caso queira modificar
#  a variável, ou um código de script dentro de aspas, caso
#  queira executá-lo.
#----------------------
#   ===> Se o tile for não for do tileset A
#  ----------------------
# *1ºPasso
#   Primeiramente, crie um mapa e, nesse mapa, use esse tile.
# 
# *2ºPasso
#   Crie um evento e nesse evento coloque um comando de script:
#     p $game_map.data[x,y,2]
#       ponha o x e y do tile que você posicionou
#   Um valor será mostrado ao testar o jogo. Guarde esse valor.
#
# *3ºPasso
#   Pegue o valor que conseguiu com o 2ºPasso, e adicione essa linha
#   abaixo de TILES_OTHER_VALUE:
#      valor do 2ºPasso => ação
#   Se for para mudar o valor da variável, coloque o valor dela em "Ação"
#   Se for um código, coloque esse código em string.
#
# Caso tenha dúvidas, abaixo há exemplos e comentários
#===============================================================================
module TSDA
  #Id da variável que irá assumir os valores
  TILES_VAR_ID = 1
  TILES_A_VALUE =
  {
     #quando pisar no tile preto no tileset A5, a variável fica o o valor 1
     [0,0] => 1,
     #quando pisar no tile vazio no tileset A5, a variável fica o o valor 2
     [0,1] => 2
  }
  TILES_OTHER_VALUE =
  {
    #Quando pisar na placa de PUB, a variável fica com o valor 1
    7 => 1
  }
end

class Game_Player
  include TSDA
  def var_change
    @changed = 0
    tile_id = $game_map.data[@x,@y,0]
    tile_id2 = $game_map.data[@x,@y,2]
    x = (tile_id / 128 % 2 * 8 + tile_id % 8)
    y = tile_id % 256 / 8 % 16
    pos = [x,y]
    if !TILES_A_VALUE[pos].nil?
      value = TILES_A_VALUE[pos]
      if value.is_a?(Integer)
        $game_variables[TILES_VAR_ID] = value
      elsif value != nil
        eval(value)
      end
    end
    if !TILES_OTHER_VALUE[tile_id2].nil?
      value = TILES_OTHER_VALUE[tile_id2]
      if value.is_a?(Integer)
        $game_variables[TILES_VAR_ID] = value
      else
        eval(value)
      end
    end
  end
  alias tiles_th_updt update
  def update
    if !@changed.nil? & !moving?
      @changed = nil
    end
    var_change if (moving? and @changed.nil?)
    tiles_th_updt
  end
end




[box class=catbg2]
Demo e Imagens
[/box]
Não há necessidade de Demo. Não há efeitos visuais perceptíveis.


[box class=catbg2]
Créditos
[/box]

  • thiago_d_d por fazer o script
  • Falco por dar dicas