Já viram qual a arte dessa semana?Exposição dos Artistas #8
6 Respostas   144 Visualizações
0 Membros e 1 Visitante estão vendo este tópico.
var a = $gameActors.actor(1).equips()[1]; a ? a.etypeId == 2 : false
♦Se: Script: var a = $gameActors.actor(1).equips()[1]; a ? a.etypeId == 2 : false ♦ :Se Não ♦Texto: : : Melhor equipar um Escudo! ♦ :Fim♦
/*:-------------------------------------------------------------------------------@title Equip Slots Core@author Hime --> HimeWorks (http://himeworks.com)@date Apr 15, 2016@version 1.5@filename HIME_EquipSlotsCore.js@url http://himeworks.com/2015/11/equip-slots-core/If you have any questions or concerns, you can contact me at any ofthe following sites:Main Website: http://himeworks.comFacebook: https://www.facebook.com/himeworkscom/Twitter: https://twitter.com/HimeWorksYoutube: https://www.youtube.com/c/HimeWorksTumblr: http://himeworks.tumblr.com/-------------------------------------------------------------------------------@plugindesc v1.5 - Fornece ferramentas para configurar slots de equipar personalizadospara cada ator individualmente.@help -------------------------------------------------------------------------------== Description ==Video: https://www.youtube.com/watch?v=fXcA0IdPsPgPor padrão, o RPG Maker oferece 5 tipos de equipamentos para trabalhar com: Weapon Shield Head Body Accessory Você também tem a capacidade de adicionar e modificar slots de equipamento diretamenteo banco de dados.No entanto, um problema que você pode notar é que todo ator teráaqueles equipam slots, mesmo que eles não possam usar nenhum dos equipamentos que vocêprojetado para esses slots.Outro problema é que você não pode adicionar várias cópias do mesmo slot paraum ator: eles só podem ter um de cada. Quer usar dois acessórios?Não pode ser feito.Este plugin resolve esse problema. Ele fornece maneiras para você personalizaros atores equipam os slots, permitindo que você escolha exatamente quais slotseles terão no jogo.== Termos de Uso ==- Gratuito para uso em projetos não comerciais com créditos- Entre em contato para uso comercial== Change Log ==1.5 - Apr 15, 2016 * added support for multiple equip types for equips. * standardized the way to check whether an equip slot can hold an item1.4 - Apr 11, 2016 * Change the way etype ID is checked * Fixed "Change Equipment" command1.3 - Mar 14, 2016 * Added support for adding and removing equip slots using script calls1.2 - Nov 20, 2015 * updated to support enemy equips1.1 - Nov 18, 2015 * updated to support Yanfly's EquipCore1.0 - Nov 12, 2015 * initial release== Usage ==-- Adicionando slots de equipar --Primeiro, se você estiver usando este plugin, a caixa padrão "Initial equipment"não será mais usado. Em vez disso, você gerenciará todos os slots de equip equipusando tags de nota.Para adicionar um slot equip, use a seguinte tag de nota: <equip slot: ETYPE> O ETYPE, que é a abreviação de "equip type", é um dos tipos de equipamentosque você configurou para o seu projeto. Você pode ver isso na guia Tipos.Você pode escrever o ID do etipo ou escrever o nome exatodo tipo. Por exemplo, Weapon é equipar tipo 1, então você pode escrever <equip slot: 1> <equip slot: Weapon> Dependendo de suas preferências Eu recomendaria escrever o texto completonome para que fique mais claro, mas se você mudar os nomes dos tipos de equipamentovocê precisará lembrar de atualizar essas tags de nota.Se você quiser adicionar mais slots equip, basta adicionar mais tags de notas.Quer 3 armas e 2 anéis, assumindo que eles estão no banco de dados? <equip slot: Weapon> <equip slot: Weapon> <equip slot: Weapon> <equip slot: Ring> <equip slot: Ring>-- Especificando o equipamento inicial --Como a caixa Initial Equipment não é mais usada, você precisaráencontre outra maneira de especificá-los.O equip equipar a nota da etiqueta de suporte inicial equipa, usando algo chamado"Código do Item", e está escrito assim: <equip slot: ETYPE ITEMCODE>Um código de item é uma forma rápida de referenciar uma arma, armadura ouitem. Eles se parecem com isso: a1 - armor 1 w3 - weapon 3 i5 - item 5 Então, por exemplo, se você quer que seu ator tenha um slot de arma comarma 4 do banco de dados como o seu primeiro equipar, use a tag de nota <equip slot: Weapon w4> -- Adicionando e Removendo Equip Slots Dinamicamente --Você pode querer adicionar ou remover equip slots durante o jogo.Para adicionar um slot equip, use a chamada de scriptACTOR.addEquipSlot(ETYPE)Onde o ACTOR é uma referência a um objeto Game_Actor, e o ETYPE éo nome ou ID do slot equip que você deseja adicionar.Por exemplo, você pode escrever $gameActors.actor(2).addEquipSlot(4) $gameActors.actor(2).addEquipSlot("Accessory") Para dar ao ator 2 um slot extra equip do tipo 4 e "Acessório"A remoção de slots é feita usando uma chamada de script semelhante ACTOR.removeEquipSlot(ETYPE) Por exemplo, se você quiser remover o slot equip que você adicionou antes, você podeescrever $gameActors.actor(2).removeEquipSlot(4) $gameActors.actor(2).removeEquipSlot("Accessory") Um slot equipar aleatório desse tipo será removido. Se o slot equip contiverum item, o item não será equipado e retornará ao inventário.Se não houver tal slot equip, nada acontecerá.-- Vários tipos de equipamentos --Por padrão, todos os equipamentos possuem um tipo de equipamento.Você pode atribuir tipos de equipamentos adicionais usando tags de notas.Com vários tipos de equipamentos, você pode colocar o mesmo equipamento em vários slotsda sua escolha.Para atribuir tipos de equipamentos adicionais, armaduras de notas ou armas com <equip type: TYPE /> Você pode atribuir quantos tipos de equipamentos desejar. -- Cenas Personalizadas --Este plugin fornece uma funcionalidade de slot equipável. O objetivoé ser capaz de usá-lo com * qualquer * equip scene, se é ocena padrão ou uma cena personalizada.------------------------------------------------------------------------------- */ var Imported = Imported || {} ;var TH = TH || {};Imported.EquipSlotsCore = 1;TH.EquipSlotsCore = TH.EquipSlotsCore || {};function Game_EquipSlot() { this.initialize.apply(this, arguments);};(function ($) { $.Regex = /<equip[-_ ]slot:\s+(\w+)(?:\s+(\w)(\d+))?>/img $.EtypeRegex = /<equip[-_ ]type:\s*(.+?)\s*\/>/img $.etypeIds = function(obj) { if (obj.etypeIds === undefined) { obj.etypeIds = [obj.etypeId]; var res; while (res = $.EtypeRegex.exec(obj.note)) { obj.etypeIds.push($.getEtypeId(res[1])); } } return obj.etypeIds; } $.etypeNameToId = function(etypeName) { if (!$.etypeMap) { $.etypeMap = {} for (var i = 1; i < $dataSystem.equipTypes.length; i++) { var name = $dataSystem.equipTypes[i].toUpperCase(); $.etypeMap[name] = i; } } return $.etypeMap[etypeName.toUpperCase()]; } $.getEtypeId = function(etypeId) { if (isNaN(etypeId)) { etypeId = $.etypeNameToId(etypeId); } else { etypeId = Math.floor(etypeId) } return etypeId; }; Game_EquipSlot.prototype.initialize = function() { this._etypeId = 1; this._item = new Game_Item(); }; Game_EquipSlot.prototype.setEtypeId = function(etypeID) { this._etypeId = etypeID; }; Game_EquipSlot.prototype.etypeId = function() { return this._etypeId; }; Game_EquipSlot.prototype.setObject = function(item) { this._item.setObject(item); }; Game_EquipSlot.prototype.object = function() { return this._item.object(); }; Game_EquipSlot.prototype.setEquip = function(isWeapon, item) { this._item.setEquip(isWeapon, item); }; /* Support for multiple equip types */ Game_EquipSlot.prototype.canEquip = function(item) { ids = $.etypeIds(item); return ids.contains(this._etypeId); } Game_EquipSlot.prototype.isEtypeId = function(id) { return this._etypeId === id; }; /***************************************************************************/ var TH_EquipSlotsCore_GameBattler_initMembers = Game_Battler.prototype.initMembers; Game_Battler.prototype.initMembers = function() { this._equips = []; TH_EquipSlotsCore_GameBattler_initMembers.call(this); }; /* Returns equip slot objects */ Game_Battler.prototype.equipSlotList = function() { return this._equips; }; /* Returns all of the equip slot types for the battler * Purely for backwards compatibility */ Game_Battler.prototype.equipSlots = function() { var slots = this._equips; var ids = []; for (var i = 0; i < slots.length; i++) { ids.push(slots[i].etypeId()); } return ids; }; Game_Battler.prototype.equips = function() { return this._equips.map(function(item) { return item.object(); }); }; Game_Battler.prototype.initEquips = function(equips) { var baseSlots = this.baseSlots(); if (baseSlots.length > 0) { var maxSlots = baseSlots.length; this._equips = []; for (var i = 0; i < maxSlots; i++) { this._equips[i] = JsonEx.makeDeepCopy(baseSlots[i]); } this.releaseUnequippableItems(true); this.refresh(); } }; /* Base equip slots for the battler */ Game_Battler.prototype.baseSlots = function() { return []; } Game_Battler.prototype.getBaseSlots = function(battler) { if (!battler.baseEquipSlots) { battler.baseEquipSlots = []; var res; while (res = $.Regex.exec(battler.note)) { var equipSlot = new Game_EquipSlot(); var etypeId = res[1]; var itemType = res[2]; var itemID = res[3]; // /* Not a number. Assume it's the name of an equip type */ etypeId = $.getEtypeId(etypeId); equipSlot.setEtypeId(etypeId); if (itemType) { equipSlot.setEquip(itemType.toLowerCase() === "w", Math.floor(itemID)); } battler.baseEquipSlots.push(equipSlot); } } return battler.baseEquipSlots; }; Game_Battler.prototype.weapons = function() { return this.equips().filter(function(item) { return item && DataManager.isWeapon(item); }); }; Game_Battler.prototype.armors = function() { return this.equips().filter(function(item) { return item && DataManager.isArmor(item); }); }; /* Finds the first equip slot with the given equip type */ Game_Battler.prototype.getSlotByEtypeId = function(etypeId) { var slots = this._equips; for (var i = 0; i < slots.length; i++) { if (slots[i].isEtypeId(etypeId)) { return i; } } }; /* Overwrite. */ Game_Battler.prototype.changeEquip = function(slotId, item) { if (this.tradeItemWithParty(item, this.equips()[slotId]) && (!item || this.equipSlotList()[slotId].canEquip(item))) { this._equips[slotId].setObject(item); this.refresh(); } }; /* Ovewrite. We need to find a slot. Assumes 1 is the weapon type */ Game_Battler.prototype.changeEquipById = function(etypeId, itemId) { var slotId = this.getSlotByEtypeId(etypeId); if (this.equipSlots()[slotId] === 1) { this.changeEquip(slotId, $dataWeapons[itemId]); } else { this.changeEquip(slotId, $dataArmors[itemId]); } }; /* Adds a new equip slot to the actor */ Game_Battler.prototype.addEquipSlot = function(etypeId) { var equipSlot = new Game_EquipSlot(); etypeId = $.getEtypeId(etypeId); equipSlot.setEtypeId(etypeId); this._equips.push(equipSlot); }; /* Removes one instance of the specified equip slot. If an object * exists in that slot, the object is un-equipped. */ Game_Battler.prototype.removeEquipSlot = function(etypeId) { etypeId = $.getEtypeId(etypeId); var slots = this._equips; for (var i = 0; i < slots.length; i++) { if (slots[i].isEtypeId(etypeId)) { this.tradeItemWithParty(null, slots[i].object()); slots.splice(i, 1); break; } }; }; /* Overwrite */ Game_Battler.prototype.releaseUnequippableItems = function(forcing) { for (;;) { var slots = this.equipSlotList(); var slotTypes = this.equipSlots(); var equips = this.equips(); var changed = false; for (var i = 0; i < equips.length; i++) { var item = equips[i]; if (item && (!this.canEquip(item) || !slots[i].canEquip(item))) { if (!forcing) { this.tradeItemWithParty(null, item); } this._equips[i].setObject(null); changed = true; } } if (!changed) { break; } } }; /* Overwrite */ Game_Battler.prototype.bestEquipItem = function(slotId) { var slot = this.equipSlotList()[slotId]; var etypeId = this.equipSlots()[slotId]; var items = $gameParty.equipItems().filter(function(item) { return slot.canEquip(item) && this.canEquip(item); }, this); var bestItem = null; var bestPerformance = -1000; for (var i = 0; i < items.length; i++) { var performance = this.calcEquipItemPerformance(items[i]); if (performance > bestPerformance) { bestPerformance = performance; bestItem = items[i]; } } return bestItem; }; /***************************************************************************/ /* Pulled up */ var TH_GameActor_equipSlots = Game_Actor.prototype.equipSlots; Game_Actor.prototype.equipSlots = function() { return Game_Battler.prototype.equipSlots.call(this); }; /* Pulled up */ Game_Actor.prototype.equips = function() { return Game_Battler.prototype.equips.call(this); }; /* Pulled up */ Game_Actor.prototype.weapons = function() { return Game_Battler.prototype.weapons.call(this); }; /* Pulled up */ Game_Actor.prototype.armors = function() { return Game_Battler.prototype.armors.call(this); }; /* Pulled up */ var TH_GameActor_initEquips = Game_Actor.prototype.initEquips; Game_Actor.prototype.initEquips = function(equips) { Game_Battler.prototype.initEquips.call(this, equips); }; /* Pulled up */ Game_Actor.prototype.changeEquipById = function(etypeId, itemId) { Game_Battler.prototype.changeEquipById.call(this, etypeId, itemId); }; /* Pulled up */ Game_Actor.prototype.changeEquip = function(slotId, item) { Game_Battler.prototype.changeEquip.call(this, slotId, item); }; /* Pulled up */ Game_Actor.prototype.releaseUnequippableItems = function(forcing) { Game_Battler.prototype.releaseUnequippableItems.call(this, forcing); }; /* Pulled up */ Game_Actor.prototype.bestEquipItem = function(slotId) { return Game_Battler.prototype.bestEquipItem.call(this, slotId); }; /* By default, we check the actor for any equip slots */ Game_Actor.prototype.baseSlots = function() { var slots = Game_Battler.prototype.baseSlots.call(this); return slots.concat(this.getBaseSlots(this.actor())) }; /***************************************************************************/ /* Overwrite. Ask if the equip slot can hold the item */ Window_EquipItem.prototype.includes = function(item) { if (item === null) { return true; } if (this._slotId < 0 || !this._actor.equipSlotList()[this._slotId].canEquip(item)) { return false; } return this._actor.canEquip(item); }; /***************************************************************************/ })(TH.EquipSlotsCore);
Atualizei o código. Vê se funciona agora, é o mesmo link.