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

Charset bugado

Iniciado por Zombie, 15/04/2017 às 19:03

15/04/2017 às 19:03 Última edição: 15/04/2017 às 20:57 por Revali

Coloquei a pixel art certinho no template que do rpg maker mv, já confirmei e é o certo, mas na hora de testar fica isso, sou bem novo nessa engine, como posso resolver isso?

Poderia postar a imagem do charset aqui?


Citação de: Revali online 15/04/2017 às 20:58
Poderia postar a imagem do charset aqui?

Só fiz essa parte para ver se ficava certo no jogo, se quiser monto o resto.

16/04/2017 às 20:27 #3 Última edição: 16/04/2017 às 20:30 por Speed
 Olá Zombie.
O problema é que o maker não lê esse tipo de template que você montou.
Use esse:


Nesse template você vai colocar o seu personagem. Sendo:
1º fileira: Personagem andando para baixo;
2º fileira: Personagem andando para a direita;
3º fileira: Personagem andando para a esquerda;
4º fileira personagem andando para cima.

O do meio é sempre o sprite parado. E o movimento de leitura é: (meio) -> (direita) -> (meio) -> (esquerda) -> recomeça.
E como é um char "solto" você precisa usar um "$" antes do nome do personagem, se não o maker corta ele errado.

Citação de: Speed online 16/04/2017 às 20:27
Olá Zombie.
O problema é que o maker não lê esse tipo de template que você montou.
Use esse:


Nesse template você vai colocar o seu personagem. Sendo:
1º fileira: Personagem andando para baixo;
2º fileira: Personagem andando para a direita;
3º fileira: Personagem andando para a esquerda;
4º fileira personagem andando para cima.

O do meio é sempre o sprite parado. E o movimento de leitura é: (meio) -> (direita) -> (meio) -> (esquerda) -> recomeça.
E como é um char "solto" você precisa usar um "$" antes do nome do personagem, se não o maker corta ele errado.
A questão é que tenho que usar um maior que esse, com 7 frames, pois estou usando um plugin que permite usar mais frames nas animações, ai quando coloco o template maior que o normal mesmo com plugin ele fica assim.
Aqui o plugin:
Spoiler
//=============================================================================
//  ExtraMovementFrames.js
//=============================================================================
//  Version: 1.0.3
//  Date: 10 November 2015
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/*:
 * @author Modern Algebra (rmrk.net)
 * @plugindesc Set sprites with more than 3 frames of animation
 * 
 * @param Cycle Time
 * @desc The normal number of frames to complete animation cycle for custom sprites
 * @default 60
 * 
 * @param Default Idle Frame
 * @desc The idle frame for custom sprites unless changed in the filename
 * @default 0
 * 
 * @param Default Pattern
 * @desc Set patterns for custom sprites unless changed in the filename.
 * @default []
 * 
 * @help INSTRUCTIONS:
 * 
 * To create sprites that have more than 3 frames of animation, you need
 * to rename the character graphic to something of the form:
 *
 *      RegularName%(x)
 *          x : the number of frames in each character sprite
 * 
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * EXAMPLES:
 * 
 *     $001-Fighter01%(4)
 *         // This graphic is a single character with four frames of animation.
 * 
 *     022-Actors12%(6)
 *         // This graphic would be interpreted as a character sheet of 8 
 *         // characters each having six frames of animation.
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * 
 * Additionally, this script also allows you to specify the "idle" frame (the 
 * frame where the sprite is not moving), and also the pattern if you wish to so
 * specify. In essence, all you need to do is add those integers after the
 * number of frames:
 * 
 *     Regular_Name%(x y z1 z2 ... zn)
 *         x : the number of frames in each character sprite
 *         y : the idle frame (the frame shown when sprite is not moving)
 *         z1 ... zn : the pattern.
 * 
 * If you choose to specify a pattern, then the idle frame is not automatically 
 * included in the pattern and should be repeated if you want it to appear
 * 
 * When naming your files, be aware that the first frame in a sprite is index 0, 
 * the second frame is index 1, etc.
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * EXAMPLES:
 * 
 *     $003-Fighter03%(4 2)
 *         // This graphic is a single character with four frames of animation. 
 *         // The idle frame is 2 (the third one over). The pattern when moving 
 *         // would be 2 3 0 1, 2 3 0 1, etc. (unless default patterns set - 
 *         // see below)
 * 
 *     032-People05%(4 0 1 0 3 2)
 *         // This graphic would be interpreted as a character sheet of 8 
 *         // characters, each having four frames of animation. The idle frame is 
 *         // 0 (the first in the sheet), and the pattern is 1 0 3 2, 
 *         // 1 0 3 2, etc.
 * 
 *     $003-Fighter03%(6 0 1 2 3 4 5)
 *         // This graphic is a single character with six frames of animation. 
 *         // The idle frame is 0 (the first frame). The pattern when moving 
 *         // is 1 2 3 4 5, 1 2 3 4 5, etc. 
 * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 * PLUGIN SETTINGS:
 * 
 *     Cycle Time = 60
 * 
 * Cycle Time is the number of frames it will take to complete a full 
 * animation cycle for custom sprites at normal speed. It must be set to an
 * integer.
 * 
 * 
 *     Default Idle Frame = 0
 * 
 * If you do not specify an idle frame for custom sprites in the file name, then it
 * will be this frame. You must set this to an integer.
 * 
 *     Default Pattern = []
 * 
 * If you do not specify a pattern, then what happens depends on what you write 
 * in the plugin setting for "Default Pattern". For this setting, you have the 
 * option of writing in arrays of numbers in the following format:
 * 
 *     [x y z1 z2 ... zn]
 *         x : number of frames in the sprites for which this pattern is default
 *         y : idle frame
 *         z1 z2 ... zn : the pattern
 * 
 * If you have setup one of those arrays for the number of frames which this
 * custom sprite has, then it will use that pattern and idle frame.
 * 
 * If you have not set up a default pattern for this number of frames, then the 
 * animation will simply cycle through the number of frames, starting with the 
 * idle frame and moving right. The idle frame will be included in the animation.
 *
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * EXAMPLES
 * 
 *     Default Pattern = [5 1 2 3 4 3 2]
 *         // Whenever you set up a custom sprite that has 5 frames of animation
 *         // but do not specify a pattern, the idle frame will be 1 and the
 *         // pattern will be 2 3 4 3 2, 2 3 4 3 2, etc.
 * 
 *     Default Pattern = [5 1 2 3 4 3 2], [6 0 1 2 5 4 3 0]
 *         // Whenever you set up a custom sprite that has 5 frames of animation
 *         // but do not specify a pattern, the idle frame will be 1 and the
 *         // pattern will be 2 3 4 3 2, 2 3 4 3 2, etc.
 *         // Whenever you set up a custom sprite that has 6 frames of animation
 *         // but do not specify a pattern, the idle frame will be 0 and the 
 *         // pattern will be 1 2 5 4 3 0, 1 2 5 4 3 0, etc.
 */
//=============================================================================

var Imported = Imported || {};
Imported.MA_ExtraMovementFrames = true;

var ModernAlgebra = ModernAlgebra || {};
ModernAlgebra.EMF = {};

(function() {
    
    // Get Script Name, in case user unexpectedly altered it
    var path = document.currentScript.src;
    var scriptName = path.substring(path.lastIndexOf('/')+1).match(/^(.+?)(\.[^.]*$|$)/)[1];
    
    // Set Parameters
    ModernAlgebra.EMF.parameters = PluginManager.parameters(scriptName);
    ModernAlgebra.EMF.cycleTime = (+ModernAlgebra.EMF.parameters['Cycle Time']) || 60; // Default = 60
    ModernAlgebra.EMF.idleFrame = (+ModernAlgebra.EMF.parameters['Default Idle Frame']) || 0; // Default = 0
    ModernAlgebra.EMF.defaultPattern = [];
    
    var emfPattMatch = ModernAlgebra.EMF.parameters['Default Pattern'].match(/\[.+?\]/g); // Default []
    if (emfPattMatch) {
        // Get all arrays of numbers
        for (var i = 0; i < emfPattMatch.length; i++) {
            digitMatch = emfPattMatch[i].match(/\d+/g);
            if (digitMatch) { ModernAlgebra.EMF.defaultPattern.push(digitMatch.map(Number)); }
        }
    }
    
    //=========================================================================
    // ImageManager
    //=========================================================================
    // isEmfCharacter - Checks if filename is a customly animated sprite
    ImageManager.isEmfCharacter = function(filename) {
        return !!filename.match(/\%[\(\[][\d\s]+[\)\]]/); // check filename for %() or %[]
    };
    
    //=========================================================================
    // Game_CharacterBase
    //=========================================================================
    // initMembers 
    ModernAlgebra.EMF.GameCharacterBase_initMembers =
            Game_CharacterBase.prototype.initMembers;
    Game_CharacterBase.prototype.initMembers = function() {
        this.maClearEmfCharacterState();
        ModernAlgebra.EMF.GameCharacterBase_initMembers.apply(this, arguments); // original method
    };
    
    // maClearEmfCharacterState
    Game_CharacterBase.prototype.maClearEmfCharacterState = function() {
        this._isEmfCharacter = false;
        this._emfCharacterState = { frameNum: 3, idleFrame: ModernAlgebra.EMF.idleFrame, pattern: [2, 1, 0, 1] };
    };
    
    // isEmfCharacter - Check whether a customly animated sprites
    Game_CharacterBase.prototype.isEmfCharacter = function() {
        return this._isEmfCharacter;
    };
    
    // emfCharacterState - makes this._emfCharacterState public
    Game_CharacterBase.prototype.emfCharacterState = function() {
        return this._emfCharacterState;
    };
    
    // setImage - adjusts to call EMF setup method
    ModernAlgebra.EMF.GameCharacterBase_setImage =
            Game_CharacterBase.prototype.setImage;
    Game_CharacterBase.prototype.setImage = function() {
        ModernAlgebra.EMF.GameCharacterBase_setImage.apply(this, arguments); // original method
        this.maemfSetupEmfCharacter();
        this.resetPattern();
    };
    
    // maSetupEmfCharacter - setup custom animation sprite
    Game_CharacterBase.prototype.maemfSetupEmfCharacter = function() {
        this.maClearEmfCharacterState();
        var charName = this.characterName();
        if (ImageManager.isEmfCharacter(charName)) {
            var sign = charName.match(/(?:\%[\(\[])[\d\s]+(?:[\)\]])/);
            var signArgs = sign[0].match(/\d+/g); // array of digit strings
            if (signArgs) {
                this._isEmfCharacter = true;
                // Map arguments in file name to an array of numbers
                signArgs = signArgs.map(Number);
                signArgsLength = signArgs.length;
                this.emfCharacterState().frameNum = signArgs.shift();
                this.emfCharacterState().idleFrame = (signArgsLength > 1) ? signArgs.shift() : ModernAlgebra.EMF.idleFrame;
                if (signArgsLength > 2) {
                    this.emfCharacterState().pattern = signArgs;
                } else {
                    var success = false;
                    // Check for a default match for this number of frames
                    for (var i = 0; i < ModernAlgebra.EMF.defaultPattern.length; i++) {
                        if (ModernAlgebra.EMF.defaultPattern[i][0] === this.emfCharacterState().frameNum) {
                            this.emfCharacterState().idleFrame = ModernAlgebra.EMF.defaultPattern[i][1];
                            this.emfCharacterState().pattern = ModernAlgebra.EMF.defaultPattern[i].slice(2, (ModernAlgebra.EMF.defaultPattern[i].length));
                            success = true;
                            break;
                        }
                    }
                    // If still no pattern specified
                    if (!success) {
                        // Populate pattern with a simple cycle starting after idle
                        this.emfCharacterState().pattern = [];
                        var idleFramePlus = this.emfCharacterState().idleFrame + 1;
                        for (var i = 0; i < this.emfCharacterState().frameNum; i++) {
                            this.emfCharacterState().pattern.push((i + idleFramePlus) % this.emfCharacterState().frameNum);
                        }
                    }
                }
            }
        }
    };
    
    // animationWait
    ModernAlgebra.EMF.GameCharacterBase_animationWait = 
            Game_CharacterBase.prototype.animationWait;
    Game_CharacterBase.prototype.animationWait = function() {
        // If EMF Character
        if (this.isEmfCharacter()) {
            var realSpeed = this.realMoveSpeed();
            var frameNum = this.maxPattern();
            return Math.floor((8 - realSpeed)*(ModernAlgebra.EMF.cycleTime / (4*frameNum))); // CycleTime divided by number of frames in animation
        } else { 
            // Run Default Method - approx. 60 frames at normal speed
            return ModernAlgebra.EMF.GameCharacterBase_animationWait.apply(this, arguments) // original method 
        }
    };
    
    // maxPattern 
    ModernAlgebra.EMF.GameCharacterBase_maxPattern =
                Game_CharacterBase.prototype.maxPattern;
    Game_CharacterBase.prototype.maxPattern = function() {
        if (this.isEmfCharacter()) {
            return this.emfCharacterState().pattern.length; // Length of pattern array
        } else {
            return ModernAlgebra.EMF.GameCharacterBase_maxPattern.apply(this, arguments); // original method
        } 
    };
    
    // pattern
    ModernAlgebra.EMF.GameCharacterBase_pattern = 
            Game_CharacterBase.prototype.pattern;
    Game_CharacterBase.prototype.pattern = function() {
        if (this.isEmfCharacter()) {
            if (this._pattern < 0) {
                return this.emfCharacterState().idleFrame; // Idle Frame if _pattern < 0
            } else {
                var patternIndex = (this._pattern % this.emfCharacterState().pattern.length);
                return this.emfCharacterState().pattern[patternIndex]; // index of pattern array
            }
        } else {
            return ModernAlgebra.EMF.GameCharacterBase_pattern.apply(this, arguments); // original method
        }
    };
    
    // isOriginalPattern - Original pattern is -1 for custom sprites
    ModernAlgebra.EMF.GameCharacterBase_isOriginalpattern = 
            Game_CharacterBase.prototype.isOriginalPattern;
    Game_CharacterBase.prototype.isOriginalPattern = function() {
        if (this.isEmfCharacter()) {
            return this.pattern() === -1;
        } else {
            return ModernAlgebra.EMF.GameCharacterBase_isOriginalpattern.apply(this, arguments); // original method
        } 
    };
    
    // straighten - Straighten to original pattern
    ModernAlgebra.EMF.GameCharacterBase_straighten =
            Game_CharacterBase.prototype.straighten;
    Game_CharacterBase.prototype.straighten = function() {
        if (this.isEmfCharacter()) {
            if (this.hasWalkAnime() || this.hasStepAnime()) {
                this._pattern = -1;
            }
            this._animationCount = 0;
        } else {
            ModernAlgebra.EMF.GameCharacterBase_straighten.apply(this, arguments)
        }
    };
        
    // resetPattern - Idle is -1 for custom sprites
    ModernAlgebra.EMF.GameCharacterBase_resetPattern = 
            Game_CharacterBase.prototype.resetPattern;
    Game_CharacterBase.prototype.resetPattern = function() {
        if (this.isEmfCharacter()) {
            this.setPattern(-1);
        } else {
            ModernAlgebra.EMF.GameCharacterBase_resetPattern.apply(this, arguments); // original method
        } 
    };
    
    //=========================================================================
    // Game_Event
    //=========================================================================
    // setupPageSettings - adjust original pattern
    ModernAlgebra.EMF.GameEvent_setupPageSettings = 
            Game_Event.prototype.setupPageSettings;
    Game_Event.prototype.setupPageSettings = function() {
        ModernAlgebra.EMF.GameEvent_setupPageSettings.apply(this, arguments);
        // Original pattern is always idle for custom sprites
        if (this.isEmfCharacter()) { this._originalPattern = -1; }
        this.resetPattern();
    };
        
    //=========================================================================
    // Sprite_Character
    //=========================================================================
    // patternWidth - afjust based on number of frames
    ModernAlgebra.EMF.SpriteCharacter_patternWidth =
            Sprite_Character.prototype.patternWidth;
    Sprite_Character.prototype.patternWidth = function() {
        var pw = ModernAlgebra.EMF.SpriteCharacter_patternWidth.apply(this, arguments)
        if (this._character.isEmfCharacter()) {
            var frameNum = this._character.emfCharacterState().frameNum;
            return ((pw*3) / frameNum);
        } else {
            return pw;
        }
    };
    
})();
[close]