Aldeia RPG

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Suporte ao desenvolvimento de jogos


2 participantes

    Tela de Seleção Custom

    Merim
    Merim
    Novato
    Novato


    Mensagens : 21
    Créditos : 7

    Tela de Seleção Custom Empty Tela de Seleção Custom

    Mensagem por Merim Seg Nov 18, 2024 8:45 pm

    Introdução 
    O tela de seleção é bem simples de customizar , apesar de simples creio que dê para fazer algo legal 

    Sobre o Script 
    - O script modifica cores e layout em geral 
    -Chars Centralizados 
    -Coloca mais 2 slots totalizando 5 Slots (padrão é 3 )
    Tudo por código não requer mudança gráfica na pasta System ,(UseChar.PNG) dispensa isso
    Você pode modificar as cores por RGB , True ou False para ativar ou desativar o que bem entender
    Antes de tudo faça um backup do seu projeto
    Printscreen
    Tela de Seleção Custom Printu10
    Aqui está completa com fundo ,fase, sprite , barra, cor fundo dos nos nomes
    Tela de Seleção Custom Prints10
    Aqui está sem a barra do topo na seleção , ambas as barras de seleção são ativar ou desativar e podem ser trocadas de cor
    Tela de Seleção Custom Prints11
    Aqui sem o fundo nas faces
    Tela de Seleção Custom Prints12
    Aqui só os sprites , sem a face , sem fundo  e sem a barra do topo
    Tela de Seleção Custom Printf10
    aqui só as faces , sem fundo e sem sprite 
    Tela de Seleção Custom Printf11

    Aqui só modifiquei o RGB da cor do fundo dos nomes 
    Tela de Seleção Custom Printm10
    Aqui alterei a cor do fundo ...bem como podem ver é custom ... dá para brincar  Very Happy
    E modificar outras coisas porém fique a seu critério

    MUDANÇAS


    1- Vamos ao script [VS]  Configs  em  # Quantidade máxima de heróis por conta coloque o número '5'
    >>> MAX_ACTORS = 5


    2- Procure pelo script de nome [VS]Window_UseChar e substitua ele todo por esse script abaixo
    Código:
    #==============================================================================
    # ** Window_UseChar
    #------------------------------------------------------------------------------
    #  Esta classe lida com a janela de seleção de personagens.
    #------------------------------------------------------------------------------
    #  Autor: Valentine       Mod: Merim
    #==============================================================================

    # Configurações
    SHOW_FACES = true        # Mostrar faces
    SHOW_SPRITES = true      # Mostrar sprites
    SHOW_SLOT_BACKGROUND = true  # Mostrar fundo dos slots
    SHOW_TOP_BAR = true      # Mostrar barra superior
    SHOW_BOTTOM_BAR = true   # Mostrar barra inferior
    SLOT_BG_COLOR = Color.new(100, 100, 15)  # Cor de fundo dos slots

    class Window_UseChar < Window_Base

      SLOT_WIDTH  = 96  # Tamanho do slot ajustado para 96x96 pixels
      SLOT_HEIGHT = 96  # Tamanho do slot ajustado para 96x96 pixels
      SLOT_MARGIN = 10
      NAME_BG_COLOR = Color.new(128, 0, 128)  # Cor de fundo ajustável para o nome
      NAME_TEXT_COLOR = Color.new(255, 255, 255)  # Cor do texto do nome em branco
      BAR_COLOR = Color.new(128, 0, 128)     # Cor da barra

      def initialize
        # Ajuste a largura e altura da janela para acomodar 5 slots
        super(adjust_x, adjust_y, SLOT_WIDTH * Configs::MAX_ACTORS + SLOT_MARGIN * (Configs::MAX_ACTORS - 1) + 60, 240)  # Ajuste na largura da janela
        self.closable = true
        self.title = Vocab::UseChar
        @create_button = Button.new(self, self.width - 120, 180, Vocab::Create, 97) { create_actor }  # Ajuste na posição do botão criar
        @play_button = Button.new(self, self.width - 120, 180, Vocab::Play, 97) { use_actor }  # Alinhar botão Entrar com o Criar
        @delete_button = Button.new(self, 20, 180, Vocab::Delete, 97) { remove_actor }
        @cursor_index = -1  # Índice inicial do cursor fora do slot
        refresh
      end

      def adjust_x
        Graphics.width / 2 - width / 2  # Centraliza a janela
      end

      def adjust_y
        Graphics.height / 2 - height / 2
      end

      def hide_window
        DataManager.back_login
      end

      def refresh
        contents.clear
        draw_slots if SHOW_SLOT_BACKGROUND  # Exibir slots conforme configuração
        Configs::MAX_ACTORS.times do |actor_id|
          x = 110 * actor_id + 8
          y = 40  # Desce as faces
          if $network.actors.has_key?(actor_id)
            draw_name_background(x, y - 35)  # Desce os nomes
            draw_text(x, y - 35, SLOT_WIDTH, line_height, $network.actors[actor_id].name, 1)  # Ajuste na posição e cor do texto
            draw_face($network.actors[actor_id].face_name, $network.actors[actor_id].face_index, x, y) if SHOW_FACES  # Face ajustada para centralizar
            draw_actor_graphic($network.actors[actor_id], x + SLOT_WIDTH / 2, y + SLOT_HEIGHT) if SHOW_SPRITES
          else
            draw_name_background(x, y - 35)  # Desce os nomes
            draw_text(x, y - 35, SLOT_WIDTH, line_height, Vocab::Empty, 1)  # Ajuste na posição e cor do texto
          end
        end
        draw_cursor_bar(110 * $actor_id + 8, 35) if SHOW_TOP_BAR  # Ajuste da barra roxa para ficar centralizada
        draw_bottom_bar(110 * $actor_id + 8, 137) if SHOW_BOTTOM_BAR  # Barra inferior ajustada mais para cima
        refresh_buttons
      end

      def draw_slots
        Configs::MAX_ACTORS.times do |slot_id|
          x = 110 * slot_id + SLOT_MARGIN
          y = 40  # Desce as faces
          draw_slot(x, y)
        end
      end

      def draw_slot(x, y)
        rect = Rect.new(x, y, SLOT_WIDTH, SLOT_HEIGHT)
        contents.fill_rect(rect, SLOT_BG_COLOR)  # Usa a cor configurada para o fundo do slot
      end

      def draw_name_background(x, y)
        bg_rect = Rect.new(x, y, SLOT_WIDTH, line_height)
        contents.fill_rect(bg_rect, NAME_BG_COLOR)
      end

      def draw_cursor_bar(x, y)
        rect = Rect.new(x + 8, y, SLOT_WIDTH - 16, 5)  # Ajuste da largura da barra roxa para 80 pixels e centralização
        contents.fill_rect(rect, BAR_COLOR)
      end

      def draw_bottom_bar(x, y)
        rect = Rect.new(x + 8, y, SLOT_WIDTH - 16, 5)  # Ajuste da largura da barra inferior para 80 pixels e centralização
        contents.fill_rect(rect, BAR_COLOR)
      end

      def cursor_color
        BAR_COLOR
      end

      def normal_color
        Color.new(200, 200, 200, 128)  # Fundo cinza claro
      end

      def refresh_buttons
        if $network.actors.has_key?($actor_id)
          @create_button.visible = false
          @play_button.visible = true
          @delete_button.visible = true
        else
          @create_button.visible = true
          @play_button.visible = false
          @delete_button.visible = false
        end
      end

      def remove_actor
        $windows[:password].show($actor_id)
      end

      def create_actor
        SceneManager.scene.change_background('Title3')
        $windows[:create_char].show($actor_id)
        $windows[:password].hide
        hide
      end

      def use_actor
        if Configs::LOADING_TIME == 0
          $network.send_use_actor($actor_id)
        else
          SceneManager.scene.change_background(Configs::LOADING_TITLES[rand(ConfigsLOADING_TITLES.size)])
          SceneManager.scene.config_icon.visible = false
          SceneManager.scene.loading_bar.visible = true
          $windows[:vip_time].hide
          $windows[:password].hide
          $windows[:config].hide
          hide
        end
      end

      def update
        super
        close_windows
        next_actor if Input.trigger?(:RIGHT)
        prev_actor if Input.trigger?(:LEFT)
        remove_actor if Input.trigger?(:DELETE) && $network.actors.has_key?($actor_id)
        ok if Input.trigger?(:C)
        update_cursor
      end

      def close_windows
        return unless Input.trigger?(:B)
        $windows[:config].hide
        $windows[:password].hide
        $windows[:alert].hide
      end

      def next_actor
        return if $actor_id == Configs::MAX_ACTORS - 1
        $actor_id += 1
        refresh
      end

      def prev_actor
        return if $actor_id == 0
        $actor_id -= 1
        refresh
      end

      def ok
        if !$network.actors.has_key?($actor_id)
          create_actor
        elsif $windows[:password].visible
          $windows[:password].delete
        elsif $windows[:alert].visible
          $windows[:alert].hide
        else
          use_actor
        end
      end

      def update_cursor
        return unless Mouse.click?(:L)
        Configs::MAX_ACTORS.times do |actor_id|
          if in_area?(110 * actor_id + 8, 40, SLOT_WIDTH, SLOT_HEIGHT)  # Ajuste do ponto de referência para a área de clique
            $actor_id = actor_id
            refresh
            break
          end
        end
      end

    end


    Qualquer bug ou algo do tipo favor reportar nesse post , até o presente momento não tive nenhum 
    Grande abraço ! e bom desenvolvimento a todos.

    Valentine e Manticora gostam desta mensagem

    Manticora
    Manticora
    Membro Ativo
    Membro Ativo


    Mensagens : 266
    Créditos : 62

    Ficha do personagem
    Nível: 1
    Experiência:
    Tela de Seleção Custom Left_bar_bleue0/0Tela de Seleção Custom Empty_bar_bleue  (0/0)
    Vida:
    Tela de Seleção Custom Left_bar_bleue30/30Tela de Seleção Custom Empty_bar_bleue  (30/30)

    Tela de Seleção Custom Empty Re: Tela de Seleção Custom

    Mensagem por Manticora Ter Nov 19, 2024 8:26 am

    Ficou bem legal as mudanças na tela de seleção. Obrigado por compartilhar!
    1+
    Merim
    Merim
    Novato
    Novato


    Mensagens : 21
    Créditos : 7

    Tela de Seleção Custom Empty Re: Tela de Seleção Custom

    Mensagem por Merim Ter Nov 19, 2024 7:55 pm

    Manticora escreveu:Ficou bem legal as mudanças na tela de seleção. Obrigado por compartilhar!
    1+
    Obrigado pelo feedback  Very Happy

    Conteúdo patrocinado


    Tela de Seleção Custom Empty Re: Tela de Seleção Custom

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Qui Dez 12, 2024 10:28 am