Inscrit le : 04/05/2011 Messages : 225
| Sujet: [VX.Ace] Commande "voler" Mar 30 Juil 2013 - 12:51 | |
| Commande simple "voler" Auteur du script: Zetu Introduction:Beaucoup de gens se sont plaint à ce sujet. VXAce n'a pas de script de vol d'objet par défaut. Donc, Zetu a fait ce script de vol simple. Caractéristiques: * Lier une compétence, comme voler, et de prendre des objets à partir d'un ennemi. - Code:
-
module Z05 STEAL_SKILL = /<steal>/i STEAL_OBJ = /<steal[:]*\s*(WEAPON|ITEM|ARMOR|GOLD)\s*(\d+)>/i NO_STEALS = "%s has nothing to steal." STEAL_GOLD = "Stole %s gold from %s." STEAL_ITEM = "Stole %s from %s." end
class Window_BattleLog < Window_Selectable def display_steal(target) item = target.last_stolen_item print item;print "\n" if item.nil? add_text(sprintf(Z05::NO_STEALS, target.name)) print "Nothing to Steal\n" elsif item.is_a?(Integer) add_text(sprintf(Z05::STEAL_GOLD, item, target.name)) print "Stole #{item} Gold\n" else add_text(sprintf(Z05::STEAL_ITEM, item.name, target.name)) print "Stole #{item.name}\n" end target.reset_steal_item end alias z05dd display_damage def display_damage(target, item) z05dd(target, item) display_steal(target) if item.steal? end end
class RPG::UsableItem < RPG::BaseItem def steal? self.note.scan(Z05::STEAL_SKILL){return true} return false end end
class Game_Enemy < Game_Battler attr_reader :last_stolen_item alias z05_initialize initialize def initialize(index, enemy_id) z05_initialize(index, enemy_id) z05_start end def z05_start @steal_data = [] self.enemy.note.scan(Z05::STEAL_OBJ){|type, id| case type when /item/i @steal_data.push($data_items[id.to_i]) when /weapon/i @steal_data.push($data_weapons[id.to_i]) when /armor/i @steal_data.push($data_armors[id.to_i]) when /gold/i @steal_data.push(id.to_i) end } end def apply_steal_effect return nil if @steal_data.size==0 return @last_stolen_item=@steal_data.delete_at(rand(@steal_data.size)) end def item_apply(user, item) super add_item_steal_effect if item.steal? unless @result.missed end def add_item_steal_effect @stolenitem = apply_steal_effect return if @stolenitem.nil? if @stolenitem.is_a?(Integer) $game_party.gain_gold(@stolenitem) else $game_party.gain_item(@stolenitem, 1) end end def reset_steal_item @last_stolen_item=nil end end
Il est recommandé d'utiliser le script "Exact Extention", pour le faire apparaître comme une commande. |
|
Age : 28 Inscrit le : 30/12/2009 Messages : 1067
| Sujet: Re: [VX.Ace] Commande "voler" Jeu 8 Aoû 2013 - 16:54 | |
| D'abord, merci pour tous tes partages Choco, ça fait plaisir ! Je poste ici car c'est le seul script que tu as partagé que j'ai pas compris. Enfin, j'ai pas tout à fait compris comment il fonctionne.. Sinon, ben merci encore |
|
Age : 134 Inscrit le : 14/04/2009 Messages : 1321
| Sujet: Re: [VX.Ace] Commande "voler" Jeu 8 Aoû 2013 - 17:46 | |
| Oui, explique nous bien (même brièvement !) comment fonctionne ce que tu postes o/ |
|
Inscrit le : 04/05/2011 Messages : 225
| Sujet: Re: [VX.Ace] Commande "voler" Jeu 8 Aoû 2013 - 21:04 | |
| N'etant pas scripteur, j'aurais du mal à expliquer comment il fonctionne ^^"
Je sais juste qu'il fonctionne en lien avec le script "Exact extention" |
|
| Sujet: Re: [VX.Ace] Commande "voler" | |
| |
|