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

Exemplos de RGSS3

Iniciado por Sotelie, 09/10/2018 às 13:11

09/10/2018 às 13:11 Última edição: 09/10/2018 às 13:15 por Sotelie
Como minhas aulas de ruby estão pausadas, vários membros chegaram pra mim me perguntando como fazer algumas coisas em RGSS3.
Neste tópico eu estarei provendo exemplos de coisas simples que vocês podem fazer na engine. O intuito é que vocês que estiverem com dúvidas, postem neste tópico pedidos de exemplos e eu, ou outro programador que estiver disposto a ajudar, proveja exemplos.

[box2 class=titlebg title=Exemplos do Sotelie]
Mostrando uma imagem de background no menu:
# Mostrando uma imagem de background no menu.
class Scene_Menu < Scene_MenuBase
  
  # Vamos criar um alias no método start.
  alias :my_test_start :start
  def start
    # Criando o sprite.
    @my_background_sprite = Sprite.new
    
    # Atribuindo um bitmap (imagem) ao nosso sprite. Exemplos:
    #@my_background_sprite.bitmap = Cache.system('Imagem na pasta System')
    #@my_background_sprite.bitmap = Cache.picture('Imagem na pasta Pictures')
    
    # Neste exemplo você cria um bitmap novo, do zero.
    # Note que ele não será adicionado ao cache.
    # @my_background_sprite.bitmap = Bitmap.new('Caminho/da/imagem')
    
    @my_background_sprite.bitmap = Cache.title1('Book')
    
    # O z define o quão na frente das outras imagens o sprite estará.
    # Como o fundo padrão do menu (que é uma screenshot do mapa) ficará acima
    # do nosso sprite assim que chamarmos o start original, vamos colocar o
    # nosso sprite na frente.
    @my_background_sprite.z = 10
    
    # Agora chamaremos o start original para que o menu seja criado normalmente.
    my_test_start
  end
  
end


Resultado
[close]

Exemplo de animação extremamente simples na janela de seleção do título:
# Exemplo de animação extremamente simples na janela de seleção do título.
class Scene_Title < Scene_Base
  
  # Criando um alias no método start,
  alias :my_test_start :start
  def start
    my_test_start # Chamando o start original.
    
    # Aqui vamos colocar a janela de comando pra fora da tela.
    @command_window.x = -@command_window.width
    
    # Vamos calcular a posição x final para onde a janela deslizará.
    # Basicamente é: Largura da tela / 2 - Largura da janela / 2
    @final_x = Graphics.width * 0.5 - @command_window.width * 0.5
  end
  
  # Criando um alias no método update caso outro script esteja usando ele.
  alias :my_test_update :update
  def update
    my_test_update # Chamando o update original.
    
    # Vamos deslizar a posição x da janela pra direita até ele passar da
    # posição final.
    @command_window.x += 4 if @command_window.x < @final_x
    
    # Vamos fazer com que a posição x seja igual a posição final caso a janela
    # passe do limite.
    @command_window.x = @final_x if @command_window.x > @final_x
    
    # Note que enquanto a janela desliza, ela ainda pode ser selecionada.
    # Você pode desativar a janela usando @command_window.deactivate no start, e
    # usar @command_window.activate assim que ela parar de deslizar. Ex:
    
    # (no start) @command_window.deactivate
    # (no update, que seria aqui)
    # if @command_window.x == @final_x && !@command_window.active
    #   @command_window.activate
    # end
  end
  
end


Resultado
[close]
[/box2]

Caso o tópico termine longo, eventualmente atingiremos o limite de caracteres. Caso isso ocorra, estarei movendo todos os exemplos para o Github, e colocarei aqui os links para lá.
Infelizmente como não ando mais mexendo no MV, proverei apenas exemplos para o Ace. No entanto caso precisem, pensarei em fazer exemplos para o MV.

Esses exemplos assumem que você esteja usando um projeto vazio.

09/10/2018 às 19:23 #1 Última edição: 11/10/2018 às 08:07 por Corvo
Boa, às vezes são essas coisinhas simples que dão trabalho justamente por serem simples. O pessoal não se dá ao trabalho de ensinar. o/

[box2 class=titlebg title=Exemplos do Corvo]
Usando o campo de notas no database.

# Nem sempre é preciso criar novas classes para criar métodos.
class Scene_Shop  
  def selling_price
    # Verificando a caixa de notas:
    if @item.note.include?("treasure")
      @item.price
    else
      @item.price / 2
    end    
  end  
end
#===============================================================================


Resultado
Neste exemplo criamos um tipo de item que não sofre desvalorização ao ser vendido.

Configuração
[close]
Resultado
[close]
[close]


Criando um comando que pode ser chamado por eventos.

#==============================================================================
# ** Game_Interpreter
#------------------------------------------------------------------------------
#  An interpreter for executing event commands. This class is used within the
# Game_Map, Game_Troop, and Game_Event classes.
#==============================================================================

class Game_Interpreter
  #--------------------------------------------------------------------------
  # * Seu Método
  #     Argumento : Descrição
  #--------------------------------------------------------------------------
  def function(arg)
    # Configuração
  end
end


Resultado

O método acima, por ter sido colocado dentro do Game_Interpreter, pode ser chamado por eventos sempre que necessário:



Os argumentos devem ser informados na chamada. É um modo prático de executar métodos que não exijam uma classe inteira para realizar pequenas tarefas.
[close]
[/box2]