🤔 Para Refletir :
"O poder da criação está em suas mãos, escreva sua própria história e abra as portas para aventuras inesquecíveis."
- Versyoh

[MZ PlugIn] Game_Tools.js - ferramentas e utilidades

DadoCWB Masculino

Duque
Membro
Membro
"Esto no me gusta"
Juntou-se
02 de Setembro de 2018
Postagens
726
Bravecoins
1.846
banner.jpg

Hoje tirei a tarde para dar uma estudada com o MZ e do meu exercício saiu ese plugin (sei que é tosco) que pretendo ir aprimorando daqui pra frente.
Demo : googleDrive (vc vai precisar do rpg maker mz)

vendor2.jpg

o nome e o valor do item dessa mensagem são obtidos facilmente por meio do plugin.


Pra que serve isso?
Pra um monte de coisas a respeito de uma mesma tarefa. Basicamente o plugin otimiza a venda de um determinado item para o jogador fora da janela da loja. Vamos dizer que um NPC possui um item pra vender ao jogador por um preço x.

Em um procedimento normal você teria que
1) verificar se o jogador tem a quantidade de dinheiro necessária (e você teria que especificar esse valor);
2) Depois vc teria que reduzir a quantidade de gold do jogador;
3) Dar ao jogador o item que ele "comprou".

Com o plugin você apenas diz qual é o item que o NPC possui. Todas as demais verificações quem faz é o script. O código fica mais enxuto e mais legível.

Você ainda pode obter dados como quantidade de idtens vendidos, valor total da compra, nome do item, preço do item por meio de comando simples.



hasGold : Verifica se o grupo (party) possui a quantidade de gold especificada.
removeGold: remove todo o gold do grupo e o armazena em uma variável do database.
itemName: passar o nome de um item para uma variável do banco de dados especificada pelo usuário.
itemPrice: passa o preço de um item para um variável do banco de dados.
canBuy: verifica se o grupo possui gold suficiente para comprar um item espefífico.
buyIfCan: vende ao jogador uma única unidade de um item específico, desde que ele tenha gold para pagar pela compra.
buyIfCan2: vende ao jogador um numero x de itens de um mesmo tipo caso o jogador possua dinheiro para pagar por todos eles.
buyIfCan3: vende qualquer item especificado pelo usuário em desenvolvimento ou tempo de execução.
buyWhileGold: vende ao jogador todos os itens de um mesmo tipo que o gold do grupo puder comprar.

comentario.jpg

Quem se sentir mais a vontade com funções de script ao invés de comando de plugin pode usar a variável $gameTools. Exemplo: $gameTools.hasGold(valor);

comentari2o2.jpg
comentari2o2a.jpg
comentari2o.jpg

Neste exemplo o plugin recebe os atributos do item e a quantidade a ser "comprada" por variáveis do banco de dados.
O plugin não tem bugs mas precisa de uma "enxugada" no código e uma revisão ortográfica. Durante a semana eu farei isso e trarei novas funcionalidades. Se alguém tiver alguma sugestão aceito de bom grado.

LICENÇA: livre para qualquer tipo de uso sem necessidade de créditos ou outra frescura do tipo...

Código:
//=============================================================================
// RPG Maker MZ -  Game_Tools v0.1    13-09-2020
//=============================================================================

/*:
* @target MZ
* @plugindesc Uma série de funções que agilizam o desenvolvimento.
* @author DadoCWB eudado gmail.com
*
* @help Game_Tools.js
*
* Este plugin possui traz uma sére de comandos simples porém de grande utilidade
* para automatizar funções rotineiras.
*
* 1) Verifica se o grupo possui ou não uma quantidade especificada de gold e
*    retorna a resposta em uma $gameSwitches especificada.
*
* @command hasGold
* @text hasGold
* @desc Verifica se o grupo possui a quantidade de gold especificada.
*
* @arg switchId
* @type number
* @default 1
* @desc Id da Switch que receberá a resposta da verificação
*
* @arg valor
* @type number
* @desc Essa é a quantidade de ouro a ser verificada
*
*
* 2) Remove todo o ouro do grupo
*
* @command removeGold
* @text removeGold
* @desc Remove todo o ouro do grupo e o armazena em uma gameVariable do banco de dados
*
* @arg variableId
* @type number
* @default 1
* @desc Id da variavel que receberá a quanidade  de  moedas removidas do grupo
*
*
* 3) Passa o nome de um item para uma variável do Banco de Dados

* @command itemName
* @text itemName
* @desc passa o nome de um item/armadura/equipamento à uma variável do database
*
* @arg type
* @type number
* @default 0
* @desc 0: item; 1: arma; 2: armadura.
*
* @arg itemId
* @type number
* @default 0
* @desc id do item/arma/equipamento cujo nome se deseja saber.
*
* @arg variableId
* @type number
* @default 1
* @desc Id da variável do banco de dados que receberá o nome do item.
*
* 4) Passa o nome de um item para uma variável do Banco de Dados

* @command itemPrice
* @text itemPrice
* @desc passa o preço de um item/armadura/equipamento à uma variável do database
*
* @arg type
* @type number
* @default 0
* @desc 0: item; 1: arma; 2: armadura.
*
* @arg itemId
* @type number
* @default 0
* @desc id do item/arma/equipamento cujo nome se deseja saber.
*
* @arg variableId
* @type number
* @default 1
* @desc Id da variável do banco de dados que receberá o nome do item.
*
* 5) verifica se o grupo possui golds para comprar determinado item.
*    se sim ativa a switch do database especificada
*
* @command canBuy
* @text canBuy
* @desc verifica se o grupo possui ou não dinheiro para comprar um item
*
* @arg type
* @type number
* @default 0
* @desc 0: item; 1: arma; 2: armadura.
*
* @arg itemId
* @type number
* @default 0
* @desc id do item/arma/equipamento cujo nome se deseja saber.
*
* @arg switchId
* @type number
* @default 1
* @desc Id da switch do banco de dados que receberá o nome do item.
*
* 6) Vende um ou mais itens ao jogador se ele possuir gold sufieicente.
*    a gameVariable vai armazenar o valor da compra.
*
* @command buyIfCan
* @text buyIfCan
* @desc Vende um ou + itens de um memso tipo ao jogador caso ele possua dinheiro para pagar.
*
* @arg type
* @type number
* @default 0
* @desc 0: item; 1: arma; 2: armadura.
*
* @arg itemId
* @type number
* @default 0
* @desc id do item/arma/equipamento cujo nome se deseja saber.
*
* @arg qtd
* @type number
* @default 1
* @desc Quantidade de itens que o jogador deseja comprar.
*
* @arg variableId
* @type number
* @default 1
* @desc Id da variable do banco de dados que receberá o valor da transação efetuada.

* 6) Vende um ou mais itens ao jogador se ele possuir gold sufieicente.
*    a gameVariable vai armazenar o valor da compra.
*
* @command buyIfCan2
* @text buyIfCan
* @desc Vende um ou + itens de um memso tipo ao jogador caso ele possua dinheiro para pagar.
*
* @arg type
* @type number
* @default 0
* @desc 0: item; 1: arma; 2: armadura.
*
* @arg itemId
* @type number
* @default 0
* @desc id do item/arma/equipamento cujo nome se deseja saber.
*
* @arg qtdVarId
* @type number
* @default 1
* @desc id da variavel do database que arazena irá dizer a quantidade de items a serem comprados pelo jogador.
*
* @arg variableId
* @type number
* @default 1
* @desc Id da variable do banco de dados que receberá o valor da transação efetuada.

* 7) Vende ao jogador todos os itens que o dinheiro dele puder comprar
*
* @command buyWhileGold
* @text buyWhileGold
* @desc Vende ao jogador todos os itens que o dinheiro dele puder comprar
*
* @arg type
* @type number
* @default 0
* @desc 0: item; 1: arma; 2: armadura.
*
* @arg itemId
* @type number
* @default 0
* @desc id do item/arma/equipamento cujo nome se deseja saber.
*
* @arg qtdVarId
* @type number
* @default 1
* @desc id da variavel do database que arazena irá dizer a quantidade de items COMPRADAS pelo jogador.
*
* @arg variableId
* @type number
* @default 1
* @desc Id da variable do banco de dados que receberá o valor da transação efetuada.
*
* 8) Vende a quantidade de itens especificada por variáveis se o jogador puir gold sufieicente.
*    a gameVariable vai armazenar o valor da compra.
*
* @command buyIfCan3
* @text buyIfCan
* @desc Vende um ou + itens de um memso tipo ao jogador caso ele possua dinheiro para pagar.
*
* @arg type
* @type number
* @default 0
* @min 0
* @max 2
* @desc id da variável do banco de dados que está armazenando o tipo de item.
*
* @arg itemId
* @type number
* @default 0
* @desc variável d banco de dados que está armazenando o id do item que se deseja
*
* @arg qtdVarId
* @type number
* @default 1
* @desc id da variavel do banco de dados que está armazenando a quanidade desejada.
*
* @arg variableId
* @type number
* @default 1
* @desc Id da variable do banco de dados que receberá o valor da transação efetuada.
*/

//===============================================================================================================================
// PlugIn Commands
//===============================================================================================================================
(() => {
    const pluginName = "Game_Tools";

    PluginManager.registerCommand(pluginName, "hasGold", args => {
       let switchId     = Number(args.switchId);
       let valor      = Number(args.valor);
        $gameTools.hasGold(valor, switchId);
    });


    PluginManager.registerCommand(pluginName, "removeGold", args => {
        let variableId = Number(args.variableId);
        $gameTools.removeGold(variableId);
    });

    PluginManager.registerCommand(pluginName, "itemName", args => {
       let type         = Number(args.type);
       let itemId        = Number(args.itemId);
       let variableId     = Number(args.variableId);

       let name = $gameTools.itemName(itemId, type);
       $gameVariables.setValue(variableId, [name]);
    });


    PluginManager.registerCommand(pluginName, "itemPrice", args => {
       let type         = Number(args.type);
       let itemId        = Number(args.itemId);
       let variableId     = Number(args.variableId);

       let price = $gameTools.itemPrice(itemId, type);
       $gameVariables.setValue(variableId, price);
    });

    PluginManager.registerCommand(pluginName, "canBuy", args => {
       let type         = Number(args.type);
       let itemId        = Number(args.itemId);
       let switchId     = Number(args.switchId);

       let can = $gameTools.canBuy(itemId, type);
       $gameSwitches.setValue(switchId, can);
    });

    PluginManager.registerCommand(pluginName, "buyIfCan", args => {
       let type         = Number(args.type);
       let itemId        = Number(args.itemId);
       let qtd             = Number(args.qtd);
       let variableId     = Number(args.variableId);

       $gameVariables.setValue(variableId, 0);
       let valor = $gameTools.buyIfCan(itemId,type, qtd);
       $gameVariables.setValue(variableId, valor);
    });

    PluginManager.registerCommand(pluginName, "buyIfCan2", args => {
       let type         = Number(args.type);
       let itemId        = Number(args.itemId);
       let qtdVarId        = Number(args.qtdVarId);
       let variableId     = Number(args.variableId);

       $gameVariables.setValue(variableId, 0);
       let qtd         = $gameVariables.value(qtdVarId);
       let valor     = $gameTools.buyIfCan(itemId,type, qtd);
       $gameVariables.setValue(variableId, valor);
    });

    PluginManager.registerCommand(pluginName, "buyIfCan3", args => {
       let type     = $gameVariables.value( Number(args.type)         );
       let itemId    = $gameVariables.value( Number(args.itemId)     );
       let qtd        = $gameVariables.value( Number(args.qtdVarId)     );
       let variableId     = Number(args.variableId);

       $gameVariables.setValue(variableId, 0);
       let valor     = $gameTools.buyIfCan(itemId,type, qtd);
       $gameVariables.setValue(variableId, valor);
    });



    PluginManager.registerCommand(pluginName, "buyWhileGold", args => {
       let type         = Number(args.type);
       let itemId        = Number(args.itemId);
       let qtdVarId        = Number(args.qtdVarId);
       let variableId     = Number(args.variableId);

       $gameVariables.setValue(variableId, 0);
       $gameVariables.setValue(qtdVarId, 0);

       let gold  = $gameParty.gold();
       let price = $gameTools.itemPrice(itemId,type);
       alert(gold);
       if(gold>=price){
           alert("boa krl");
               let qtd   = Math.floor(gold/price);
               let valor = price *qtd;
               let item = $gameTools.item(itemId);
               $gameParty.gainItem(item, qtd);
               $gameParty.loseGold(valor);
               $gameVariables.setValue(variableId, valor);
               $gameVariables.setValue(qtdVarId, qtd);
          }
    });

})();

//===============================================================================================================================
//Game_Tools
//===============================================================================================================================
function Game_Tools(){
    this.initialize.apply(this);
};

Game_Tools.prototype.initialize=function(){
    this._tools =1;
};

Game_Tools.prototype.teste=function(){
    alert(switchGold);
}
//-------------------------------------------------------------------------------------------------------------------------------
//  Gold
//-------------------------------------------------------------------------------------------------------------------------------
// Verifica se o grupo de personagens possui (ou não) a quantidade de gold especificada (valor).
// Se o grupo possui a quantidade de gold especificada, a gameSwitch indicada recebe true, do contrário recebe false.
Game_Tools.prototype.hasGold=function(valor, switchId=1){
    $gameSwitches.setValue(switchId,false);
    if (this.onlyHasGold(valor)){
        $gameSwitches.setValue(switchId,true);
    }
};

// Verifica se o grupo de personagens possui (ou não) a quantidade de gold especificada (valor).
// Se o grupo possui a quantidade de gold especificada retorna true, do contrário retorna false.
Game_Tools.prototype.onlyHasGold=function(valor){
    let gold = $gameParty.gold();
    if (gold >=valor){
        return true;
    }else{
        return false;
    }
};

//remove o ouro do grupo e armazena o valor removido em um avariavel do banco de dados
Game_Tools.prototype.removeGold=function(variableId=1){
    let gold = $gameParty.gold();
    $gameParty.loseGold(gold);
    $gameVariables.setValue(variableId,gold);
};

//-------------------------------------------------------------------------------------------------------------------------------
//  Item
//-------------------------------------------------------------------------------------------------------------------------------
//Vende um item ao jogador se ele tiver dinheir pra comprar;
//essa função permite que um item de mesmo tipo seja vendido
Game_Tools.prototype.buyIfCan=function(id,type, qtd=1){
    let price = this.itemPrice(id, type);
    let valor = price * qtd;
    let can = this.onlyHasGold(valor);
    if(can){
        switch (type){
            case 0: var  item = $dataItems[id];     break;
            case 1: var  item = $dataWeapons[id];     break;
            case 2: var  item = $dataArmors[id];     break;
        }

        $gameParty.gainItem(item,qtd);
        $gameParty.loseGold(valor);
        return valor;
    }
    return 0;
};


//verifica se o grupo possui dinheiro suficiente para comprar um determinado item
Game_Tools.prototype.canBuy=function(id,type){
    var price = this.itemPrice(id, type);
    return this.onlyHasGold(price);
};

//retorna o nme de um item conforme o tipo e a id
//type 0: item
//type 1: arma
//type 2: equipamento
Game_Tools.prototype.itemName=function(id=1,type=0){
    switch (type){
        case 0: return $dataItems[id].name; break;
        case 1: return $dataWeapons[id].name; break;
        case 2: return $dataArmors[id].name; break;
    }
};

//retorna o nme de um item conforme o tipo e a id
//type 0: item
//type 1: arma
//type 2: equipamento
Game_Tools.prototype.itemPrice=function(id=1,type=0){
    switch (type){
        case 0: return $dataItems[id].price; break;
        case 1: return $dataWeapons[id].price; break;
        case 2: return $dataArmors[id].price; break;
    }
};

//retorna o objeto item
//type 0: item
//type 1: arma
//type 2: equipamento
Game_Tools.prototype.item=function(id=1,type=0){
    switch (type){
        case 0: return $dataItems[id]; break;
        case 1: return $dataWeapons[id]; break;
        case 2: return $dataArmors[id]; break;
    }
};

//===============================================================================================================================
// PlugIn Commands
//===============================================================================================================================
$gameTools=null;
var _gameTools_createGameObjects = DataManager.createGameObjects;
DataManager.createGameObjects = function() {
    _gameTools_createGameObjects.call(this);

    $gameTools =new Game_Tools();

};
 
Última edição:
Voltar
Topo Inferior