Novo Botão para Netplay

    Compartilhe

    jiraya
    Administrador
    Administrador

    Mensagens : 1299
    Credibilidade : 54

    Novo Botão para Netplay

    Mensagem por jiraya em Sab Jan 29, 2011 11:42 am

    [Autor: Valentine ]
    Novo Botão para Netplay
    Por Valentine
    [Você precisa estar registrado e conectado para ver esta imagem.]
    Muitos podem dizer que esse tópico deveria estar na área de scripts, mas eu acho que deveria ficar aqui, porque esse script é em relação a Netplays
    Screen:
    [Você precisa estar registrado e conectado para ver esta imagem.]
    Características:
    -Quando mover a janela, o botão moverá junto
    -Quando fechar a janela ou ela ficar invisível o botão também irá ficar invisível
    -Quando passa o mouse por cima do botão, muda a transparência (Opacidade)
    Botão Para Netplay 1.7:
    Código:
    #==============================================================================
    # ** Button Base
    #------------------------------------------------------------------------------
    # By Valentine
    #
    # Instrucion:
    # @button = Button_Base.new(@window,x, y,"Text") {comando}
    #==============================================================================
    class Button_Base < RPG::Sprite
      #--------------------------------------------------------------------------
      # * Object Initialization
      #--------------------------------------------------------------------------
      def initialize(janela,x,y,text,&comando)
        super()
        @text = text
        @janela = janela
        @x = x
        @y = y
        @p_x = x
        @p_y = y
        @comando = comando
        self.x = @janela.x+x
        self.y = @janela.y+y
        self.z = 9999
        self.opacity = 200
        b = Bitmap.new(4,4)
        cx = b.text_size(@text).width
        self.bitmap = Bitmap.new(cx, 24)
        @largura = cx
        refresh
      end
      #--------------------------------------------------------------------------
      # * Refresh
      #--------------------------------------------------------------------------
      def refresh
        self.bitmap.clear
        self.bitmap.fill_rect(0,0,@largura,24, Color.new(255-30, 255-30, 255-30))
        self.bitmap.fill_rect(+1,+1,@largura-2,12-2, Color.new(30, 30, 30))
        self.bitmap.fill_rect(+1,+1+10,@largura-2,14-2, Color.new(10, 10, 10))
        self.bitmap.font.name = "Calibri"
        self.bitmap.font.size = 18
        self.bitmap.font.color = Color.new(0,0,0)
        self.bitmap.draw_text(5,-9, @text.size+102, 42,@text)
        self.bitmap.font.color = Color.new(255,255,255)
        self.bitmap.draw_text(4,-10, @text.size+102, 42,@text)
      end
      #--------------------------------------------------------------------------
      # * In_area?
      #--------------------------------------------------------------------------
      def in_area?(args=[0,0,self.bitmap.width,self.bitmap.height])
        min_x=self.x+args[0]+@janela.x-@janela.ox
        max_x=self.x + args[2]+args[0]+@janela.x-@janela.ox
        min_y=self.y+args[1]+@janela.y-@janela.oy
        max_y=self.y + args[3]+args[1]+@janela.y-@janela.oy
        if $Mouse.x.between?(min_x,max_x) and $Mouse.y.between?(min_y,max_y)
          return true
        end
        return false
      end
      #--------------------------------------------------------------------------
      # * Update
      #--------------------------------------------------------------------------
      def update
        if @janela.visible
          self.x = @janela.x + @p_x
          self.y = @janela.y + @p_y
        end 
        if @janela.visible == true
          self.visible = true
        elsif @janela.visible == false
          self.visible = false
        end
        if in_area?([-110,-100,@largura,24])
          self.opacity = 160
        else
          self.opacity = 200
        end
        if Input.pressed?(Input::Mouse_Left) and in_area?([-110,-100,@largura,24])
        if @comando != nil
          @comando.call
        else
        end
        end
      end
       
    end
    Obs.:
    Lembrando que para o botão funcionar, você deverá trocar o mouse do Netplay 1.7 pelo do Netplay 2.0
    Botão para outros Netplays: (Que tenha Mouse)
    Código:

    #==============================================================================
    # ** Button Base
    #------------------------------------------------------------------------------
    # By Valentine
    #
    # Instrucion:
    # @button = Button_Base.new(@window,x, y,"Text") {comando}
    #==============================================================================
    class Button_Base < RPG::Sprite
      #--------------------------------------------------------------------------
      # * Object Initialization
      #--------------------------------------------------------------------------
      def initialize(janela,x,y,text,&comando)
        super()
        @text = text
        @janela = janela
        @x = x
        @y = y
        @p_x = x
        @p_y = y
        @comando = comando
        self.x = @janela.x+x
        self.y = @janela.y+y
        self.z = 9999
        self.opacity = 200
        b = Bitmap.new(4,4)
        cx = b.text_size(@text).width
        self.bitmap = Bitmap.new(cx+16, 24)
        @largura = cx+16
        refresh
      end
      #--------------------------------------------------------------------------
      # * Refresh
      #--------------------------------------------------------------------------
      def refresh
        self.bitmap.clear
        self.bitmap.fill_rect(0,0,@largura,24, Color.new(255-30, 255-30, 255-30))
        self.bitmap.fill_rect(+1,+1,@largura-2,12-2, Color.new(30, 30, 30))
        self.bitmap.fill_rect(+1,+1+10,@largura-2,14-2, Color.new(10, 10, 10))
        self.bitmap.font.name = "Calibri"
        self.bitmap.font.size = 18
        self.bitmap.font.color = Color.new(0,0,0)
        self.bitmap.draw_text(5,-9, @text.size+102, 42,@text)
        self.bitmap.font.color = Color.new(255,255,255)
        self.bitmap.draw_text(4,-10, @text.size+102, 42,@text)
      end
      #--------------------------------------------------------------------------
      # * In_area?
      #--------------------------------------------------------------------------
      def in_area?(args=[0,0,self.bitmap.width,self.bitmap.height])
        min_x=self.x+args[0]+@janela.viewport.rect.x-@janela.ox
        max_x=self.x + args[2]+args[0]+@janela.viewport.rect.x-@janela.ox
        min_y=self.y+args[1]+@janela.viewport.rect.y-@janela.oy
        max_y=self.y + args[3]+args[1]+@janela.viewport.rect.y-@janela.oy
        if $Mouse.x.between?(min_x,max_x) and $Mouse.y.between?(min_y,max_y)
          return true
        end
        return false
      end
      #--------------------------------------------------------------------------
      # * Update
      #--------------------------------------------------------------------------
      def update
        if @janela.visible
          self.x = @janela.x + @p_x
          self.y = @janela.y + @p_y
        end 
        if @janela.visible == true
          self.visible = true
        elsif @janela.visible == false
          self.visible = false
        end
        if in_area?([-200,-136,@largura,24])
          self.opacity = 160
        else
          self.opacity = 200
        end
        if Input.pressed?(Input::Mouse_Left) and in_area?([-200,-136,@largura,24])
        if @comando != nil
          @comando.call
        else
        end
        end
      end
       
    end
    Obs.:
    Para usar esse script o Netplay deverá ter esses scripts:
    [Você precisa estar registrado e conectado para ver esta imagem.]
    Obs2.:
    Pergunta Frequente: Mas o que muda nos 2 scripts? esse segundo é dependente desses scripts?
    Resposta: Não, é porque se você usar o script errado, quando você for passar o mouse em cima do botão não funcionará a opacidade e nem o comando do botão
    Tutorial de Como Usar:
    Após colocar o script antes de Main, vá ate o script da janela que você quer colocar o botão
    Coloque após o código da variável que chama a window assim:
    @button = Button_Base.new(@window,x, y,"Text") {comando}
    @button = nome da variável (Pode ser qualquer nome que você quiser, mas sempre tem que ser um nome diferente)
    @window = nome da variável que é a window que você quer colocar o botão
    x = posição x
    y = posição y
    "Text" = Texto no botão (Com aspas)
    comando = Quando clicar no botão o que irá aconteçer
    Exemplo No script Login do Netplay
    [Você precisa estar registrado e conectado para ver esta imagem.]
    Depois coloque o nome da variável + .dispose (Dentro do def dispose ou depois da palavra Graphics.freeze)
    [Você precisa estar registrado e conectado para ver esta imagem.]
    Depois coloque o nome da variável + .update (Dentro do def update)
    [Você precisa estar registrado e conectado para ver esta imagem.]
    Para colocar um comando coloque dentro de {}
    [Você precisa estar registrado e conectado para ver esta imagem.]

    Se você quiser usar mais de 2 comandos deverá usar ; entre os comandos
    [Você precisa estar registrado e conectado para ver esta imagem.]
    Como Mudar a Cor dos Botões:
    Vá até a linha 38 a 40
    Código:
        self.bitmap.fill_rect(0,0,@largura,24, Color.new(255-30, 255-30, 255-30))
        self.bitmap.fill_rect(+1,+1,@largura-2,12-2, Color.new(30, 30, 30))
        self.bitmap.fill_rect(+1,+1+10,@largura-2,14-2, Color.new(10, 10, 10))
    Para mudar a cor é so mudar isso:
    Código:
    Color.new(255-30, 255-30, 255-30)
    Color.new(30, 30, 30)
    Color.new(10, 10, 10)
    [Você precisa estar registrado e conectado para ver esta imagem.]
    [center]Créditos:
    Valentine (Por criar e disponibilizar)

      Data/hora atual: Seg Fev 20, 2017 1:10 am