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

Titulo Menu [Shep]

Iniciado por Shephiroth, 19/03/2020 às 00:38

Título personalizado [Shep]

Compativel com: RMMV

[box class=titlebg]
Condições de Uso
[/box]
Livre para uso comercial e não comercial, edição e/ou compartilhamento.

[box class=titlebg]
Para que serve o script
[/box]
O Script altera o menu inicial do jogo, edições simples mas que podem fazer a diferença.

Modificáveis por parâmetros:

- Localização da janela
- Tamanho da janela
- Personalizar o texto
- Opção sair
- Acrescenta 2 imagens com movimento em loop (nuvens)

Foram utilizadas duas imagens como exemplo:
https://i.imgur.com/urB3sXa.png (nuvem 1)
https://i.imgur.com/3A21MFo.png (nuvem 2)
https://i.imgur.com/7Z7KS2h.png (lua cheia)

Estas devem ser coladas na pasta /titles2 do seu projeto

[box class=titlebg]
Imagens
[/box]
Spoiler

[box class=titlebg]
Script
[/box]
/*:
 * @plugindesc Este plugin personaliza o menu de título inicial do game.
 * @author Shephiroth v.1.0
 *
 * @param Texto do Novo jogo
 * @desc Texto de novo jogo.
 * @default Novo jogo
 *
 * @param Texto do Continuar
 * @desc Texto de continuar.
 * @default Continuar
 *
 * @param Texto do Opcoes
 * @desc Texto para Opções
 * @default Opções
 * 
 * @param Texto do Sair
 * @desc Texto para Sair
 * @default Sair
 *
 * @param Alinhamento da janela
 * @desc Digite o alinhamento da janela sendo "esquerda", "direita" ou "centro"
 * @default direita
 * 
 * @param Alinhamento do texto
 * @desc Digite o alinhamento da texto sendo "esquerda", "direita" ou "centro"
 * @default esquerda
 * 
 * @param Comprimento da Janela (X)
 * @desc Digite o tamanho da texto sendo "pequeno", "medio" ou "grande" ou um número
 * @default pequeno
 * 
 * @param Exibe imagem de Logotipo
 * @desc Digite "sim" ou "não" caso queira apresentar uma imagem para logotipo
 * @default sim
 * 
 * @param Nome da imagem Logotipo
 * @desc Digite o nome da imagem logotipo na pasta TITLES2
 * @default LOGOTIPO
 * 
 * @param Exibe imagem em movimento #1
 * @desc Digite "sim" ou "não" caso queira apresentar uma imagem em movimento
 * @default sim
 * 
 * @param Nome da imagem em movimento #1
 * @desc Digite o nome da imagem em movimento#1 na pasta TITLES2
 * @default nuvens
 * 
 * @param Velocidade do movimento #1
 * @desc Digite um número que represente a velocidade de movimento da imagem 1
 * @default 1.5
 * 
* @param Exibe imagem em movimento #2
 * @desc Digite "sim" ou "não" caso queira apresentar uma imagem em movimento 2
 * @default sim
 * 
 * @param Nome da imagem em movimento #2
 * @desc Digite o nome da imagem em movimento#2 na pasta TITLES2
 * @default nuvens
 * 
 * @param Velocidade do movimento #2
 * @desc Digite um número que represente a velocidade de movimento da imagem 2
 * @default 2
 * 
 * @help
 * ================================================================================
 *    Configurações dos parâmetros
 * ================================================================================
 * No campo dos parâmetros ao lado você poderá configurar qual texto de exibição
 * aparecerá para cada opção no menu principal.
 *
 * As imagens deverão ser salvas na pasta /titles2 e seus nomes devem ser escritos
 * corretamente. Caso queira ocultar alguma imagem basta colocar "não" nos campos
 * de parâmetros ao lado direito.
 * ================================================================================
 *
*/

(function() {

    // PARÂMETROS #############################################

    var parameters = PluginManager.parameters('TittleMenuShep');
    var txtNovoJogo = String(parameters['Texto do Novo jogo'] || 'Novo jogo');
    var txtContinuar = String(parameters['Texto do Continuar'] || 'Continuar');
    var txtOpcoes = String(parameters['Texto do Opcoes'] || 'Opções');
    var txtSair = String(parameters['Texto do Sair'] || 'Sair');
    var alinhamentoJanela = String(parameters['Alinhamento da janela'] || 'direita');
    var alinhamentoTexto = String(parameters['Alinhamento do texto'] || 'esquerda');
    var tamanhoJanela = String(parameters['Comprimento da Janela (X)'] || 'pequeno');
    var exibeLogotipo = String(parameters['Exibe imagem de Logotipo'] || 'sim');
    var nomeImagemLogotipo = String(parameters['Nome da imagem Logotipo'] || 'logotipo');
    var exibeImagemMovimento1 = String(parameters['Exibe imagem em movimento #1'] || 'sim');    
    var nomeImagemMovimento1 = String(parameters['Nome da imagem em movimento #1'] || 'nuvens');
    var velocidadeImagemMovimento1 =  Number(parameters['Velocidade do movimento #1'] || '1.5');
    var exibeImagemMovimento2 = String(parameters['Exibe imagem em movimento #2'] || 'sim');    
    var nomeImagemMovimento2 = String(parameters['Nome da imagem em movimento #2'] || 'nuvens2');
    var velocidadeImagemMovimento2 = Number(parameters['Velocidade do movimento #2'] || '2');

    // CARREGA AS IMAGENS ###############################
    
    var _Shep_Menu_title_background_createBackground = Scene_Title.prototype.createBackground
    Scene_Title.prototype.createBackground = function() {
        _Shep_Menu_title_background_createBackground.call(this); 
        this._backSprite1 = new Sprite(ImageManager.loadTitle1($dataSystem.title1Name));
        this._backSprite3 = new Sprite(ImageManager.loadTitle2($dataSystem.title2Name));
        this.addChild(this._backSprite1);
        this.addChild(this._backSprite3);    

        if (exibeLogotipo.toLowerCase()=="sim"){
            this._backSprite2 = new Sprite(ImageManager.loadTitle1(nomeImagemLogotipo));
            this.addChild(this._backSprite2);    
        }

        this.createTitleSprite();
        this.createBackgroundMoving();
    };
    
    // CRIACAO DAS IMAGENS ###############################

    Scene_Title.prototype.createBackgroundMoving = function() {
        this._backgroundMoving = new TitleBackgroundMoving;
        this._titleField.addChild(this._backgroundMoving);
    };  

    // ADICIONA AS IMAGENS ###############################

    Scene_Title.prototype.createTitleSprite = function() {
        this._titleField = new Sprite();
        this.addChild(this._titleField);
    };  

    //##############################################################

    function TitleBackgroundMoving() {
        this.initialize.apply(this, arguments);
    };

    TitleBackgroundMoving.prototype = Object.create(Sprite.prototype);

    // INICIA AS IMAGENS EM MOVIMENTO ###############################

    TitleBackgroundMoving.prototype.initialize = function() {
        Sprite.prototype.initialize.call(this);

        if (exibeImagemMovimento1.toLowerCase()=="sim"){
            this._imgMove1 = ImageManager.loadTitle2(nomeImagemMovimento1);
            this._backSprite4 = new TilingSprite();
            this._backSprite4.bitmap = this._imgMove1;
            this.addChild(this._backSprite4);
        }
        
        if (exibeImagemMovimento2.toLowerCase()=="sim"){
            this._imgMove2 = ImageManager.loadTitle2(nomeImagemMovimento2);
            this._backSprite5 = new TilingSprite();
            this._backSprite5.bitmap = this._imgMove2;
            this.addChild(this._backSprite5);
        }
    };

    // ATUALIZA AS IMAGENS EM MOVIMENTO ###############################

    TitleBackgroundMoving.prototype.update = function() {
        
        if (exibeImagemMovimento1.toLowerCase()=="sim"){
            this._backSprite4.move(0,0,Graphics.boxWidth,Graphics.boxHeight);
            this._backSprite4.origin.x += velocidadeImagemMovimento1;
        }
            
        if (exibeImagemMovimento2.toLowerCase()=="sim"){
            this._backSprite5.move(0,0,Graphics.boxWidth,Graphics.boxHeight);
            this._backSprite5.origin.x += velocidadeImagemMovimento2;
        }
    };

    // CRIA E APRESENTA O TÍTULO ESCRITO (SE HOUVER) ###############################

    Scene_Title.prototype.createForeground = function() {
        this._gameTitleSprite = new Sprite(new Bitmap(Graphics.width, Graphics.height));
        this.addChild(this._gameTitleSprite);
        if ($dataSystem.optDrawTitle) {
            this.drawGameTitle();
        }
    };
    
    // CONFIGURAÇÕES DO TÍTULO ESCRITO (SE HOUVER) ###############################

    Scene_Title.prototype.drawGameTitle = function() {
        var x = 20;
        var y = 50;
        var maxWidth = Graphics.width - x * 2;
        var text = $dataSystem.gameTitle;
        this._gameTitleSprite.bitmap.outlineColor = 'black';
        this._gameTitleSprite.bitmap.outlineWidth = 8;
        this._gameTitleSprite.bitmap.fontSize = 40;
        this._gameTitleSprite.bitmap.drawText(text, x, y, maxWidth, 48, 'center');
    };
    
    // CRIA OS COMANDOS EXTRAS DO MENU ###############################

    Scene_Title.prototype.createCommandWindow = function() {
        this._commandWindow = new Window_TitleCommand();
        this._commandWindow.setHandler('newGame',  this.commandNewGame.bind(this));
        this._commandWindow.setHandler('continue', this.commandContinue.bind(this));
        this._commandWindow.setHandler('options',  this.commandOptions.bind(this));
        this._commandWindow.setHandler('sair',  this.commandSair.bind(this));
        this.addWindow(this._commandWindow);
    };

    // COMANDO SAIR ##########################################

    Scene_Title.prototype.commandSair = function() {
        SceneManager.exit();
    };
    
    // TAMANHO DA JANELA ###################################

    Window_TitleCommand.prototype.windowWidth = function() {
        switch(tamanhoJanela.toLowerCase()){
            case 'pequeno':
                return 200;
            case 'medio':
                return 350;
            case 'grande':
                return 500;
            default:
                return tamanhoJanela;
        }
    };
    
    // ALINHAMENTO DA JANELA ###################################

    Window_TitleCommand.prototype.updatePlacement = function() {    
        switch(alinhamentoJanela.toLowerCase()){
            case 'direita':
                this.x = (Graphics.boxWidth - this.width);
                this.y = Graphics.boxHeight - this.height;
            break
            case 'esquerda':
                this.x = 0;
                this.y = Graphics.boxHeight - this.height;
            break
            case 'centro':
                this.x = (Graphics.boxWidth - this.width) /2;
                this.y = Graphics.boxHeight - this.height -96;
            break
            default:
                this.x = (Graphics.boxWidth - this.width) /2;
                this.y = Graphics.boxHeight - this.height -96;
        }

    };

    // EXIBE OPÇÕES #############################################
    
    Window_TitleCommand.prototype.makeCommandList = function() {
        this.addCommand(txtNovoJogo,   'newGame');
        this.addCommand(txtContinuar, 'continue', this.isContinueEnabled());
        this.addCommand(txtOpcoes,   'options');
        this.addCommand(txtSair,   'sair');
    };

    // ALINHAMENTO DO TEXTO ###################################

    Window_TitleCommand.prototype.itemTextAlign = function() {
        switch(alinhamentoTexto.toLowerCase()){
            case 'direita':
                return 'right';
            case 'esquerda':
                return 'left';
            case 'centro':
                return 'center';
            default:
                return 'center';
        }
    };

})();

[box class=titlebg]
Créditos e Avisos
[/box]
Criador: Não é necessário, mas caso se sinta a vontade pode citar Shephiroth
Aceito todas sugestões para melhora-lo :D
.

CitarCriador: Não é necessário, mas caso se sinta a vontade pode citar Shephiroth

Precisa sim poxa, você que fez! :D

Boa Sheph! Agora vai vir vários plugins maneiros seu! Isso mais por preferência minha, mas eu curto bastante as opções por imagens também.

Oh stop it you :P

Obrigado meu queridasso!

Eu tive um pane enquanto desenvolvia pois não sabia o que fazer, tive 38091839 ideias de que fazer, então talvez eu faça outros scripts de título, para cada ideia que tive, uma com os comandos por imagens, outra com opções extras (créditos, new game+, etc)...

Valeu mais uma vez man :)

Anyway
See yaa'
.

Muito bom, parabéns e obrigado por compartilhar.