- BlockadeMembre
- Nombre de messages : 194
Age : 32
Distinction : aucune
Date d'inscription : 06/09/2008
Drop conditionnel & multi-drop
Dim 11 Juil 2010 - 17:45
Drop conditionnel & multi-drop
Auteur : Blockade
Date : 11/07/2010
Niveau : Facile
Version : 1.0
Grâce à ce script, vous ne serez plus limité à 2 objets, droppable sur chaque monstre ! De plus vous pourrez faire en sorte que le l'objet soit obtenu à condition qu'un interrupteur est activé, ce qui peut être pratique pour dropper du contenu uniquement si une quête est activée.
Description du script :
- Permet d'avoir du drop supplémentaire
- Permet d'avoir le drop que si un interrupteur est activé
Script :
- Code:
#===============================================================================
# ▼ [VX] Drop conditionnel
#------------------------------------------------------------------------
# Blockade script Library - Drop conditionnel
# Date : 11/07/2010
# Niveau : Facile
# Version : 1.0
# Forum d'origine : http://rpg-maker-vx.bbactif.com/forum.htm
#
# Grâce à ce script, vous ne serez plus limité à 2 objets, droppable sur chaque monstre. De plus
# vous pourrez faire en sorte que le l'objet soit obtenu à condition qu'un interrupteur est activé.
#=======================================================================
# ▼ Mises à jour
# -------------------------------------------------------------------------
# ¤ 11/07/2010 - Version 1.0 - Création du script
#=======================================================================
# ▼ Fonctionnalités
# -------------------------------------------------------------------------
# - Permet d'avoir du drop supplémentaire
# - Permet d'avoir le drop que si un interrupteur est activé
#=======================================================================
# ▼ Installation
# --------------------------------------------------------------------------
# Mettre le script au dessus de Main.
#=======================================================================
# ▼ Utilisation
# --------------------------------------------------------------------------
# Tout se fait dans la base de données par besoin de toucher au script !
# Dans la partie "note" de l'ennemi mettez une expression sous la forme :
# - <drop type_objet:id_objet chance_de_drop,interrupteur>
#
# > type_objet : O si votre drop, est un Objet
# A si votre drop est une Arme
# E si votre drop est un Equipement (armure,bouclier etc...)
#
# > id_objet : mettez l'ID de l'objet/arme/equipement ici
#
# > chance_de_drop : mettez ici un nombre qui permettra de définir la chance que l'objet
# soit droppé (comme dans la base de données). Si vous mettez 45
# par exemple la chance de le dropper sera d'1/45.
#
# > interrupteur : si vous voulez que votre drop soit uniquement droppable si un interrupteur
# soit activé, mettez l'ID de votre interrupteur ici, sinon mettez 0.
#
# Par exemple si vous voulez droper l'arme d'ID 71 avec une chance de 1/88 uniquement si
# l'interrupteur 2 est activé mettez : <drop A:71 88,2>
# Et un dernier exemple, si vous voulez dropper un bouclier d'ID 42 avec une chance de 1/2
# et qui ne requiert aucun interrupteur d'activé (drop supplémentaire) : <drop E:42 2,0>
#=======================================================================
# ▼ Alias et compatibilité
# --------------------------------------------------------------------------
# ► Méthodes réecrites :
# > Game_Troop : make_drop_items
#===============================================================================
$imported = {} if $imported == nil
$imported["DropConditionnel"] = true
module BSL
module DCO
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# TAG_DROPENNEMI
#-------------------------------------------------
# Niveau : Avancé
# Ici vous pourrez changer les tags qui récupèrent les données dans la partie note
# des ennemis. Je vous déconseille vivement de modifier cette partie.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
TAG_DROPENNEMI = /<(?:drop)[ ]([OAE]):(\d+)[ ](\d+),(\d+)>/i
end
end
#==============================================================================
# ** Game_Troop
#------------------------------------------------------------------------------
# Cette class gère l'ensemble des ennemis en combat.
#==============================================================================
class Game_Troop < Game_Unit
#--------------------------------------------------------------------------
# * overwrite method : make_drop_items
#--------------------------------------------------------------------------
def make_drop_items
drop_items = []
for enemy in dead_members
for di in enemy.enemy.items_drop
next if di.kind == 0
next if rand(di.denominator) != 0
if di.kind == 1
drop_items.push($data_items[di.item_id])
elsif di.kind == 2
drop_items.push($data_weapons[di.weapon_id])
elsif di.kind == 3
drop_items.push($data_armors[di.armor_id])
end
end
end
return drop_items
end
end
#==============================================================================
# ** RPG::Enemy
#------------------------------------------------------------------------------
# Class qui gère les données relatives aux ennemis.
#==============================================================================
class RPG::Enemy
include BSL::DCO # Inclusion du module
#--------------------------------------------------------------------------
# * new method : items_drop
#--------------------------------------------------------------------------
def items_drop
items_drop = [drop_item1, drop_item2] # On récupère le drop "normalement" défini (dans le BBD)
self.note.split(/[\r\n]+/).each { |line|
case line
when TAG_DROPENNEMI # Si on repérer un expression régulière
type = $1.to_s.upcase
id = $2.to_i
pourcentage = $3.to_i
id_inter = $4.to_i
next unless id_inter == 0 or $game_switches[id_inter] #On passe à la ligne suivant si les conditions sont pas remplies
drop_item = DropItem.new # Création de l'objet
case type
when "O" # Si c'est un objet
drop_item.item_id = id
drop_item.kind = 1
when "A" # Si c'est une arme
drop_item.weapon_id = id
drop_item.kind = 2
when "E" #Si c'est un équipement (armure)
drop_item.armor_id = id
drop_item.kind = 3
end
drop_item.denominator = pourcentage
items_drop.push(drop_item) # On met l'objet dans la liste des items obtenus
end}
return items_drop
end
end
Installation :
Mettez juste au dessus de main !
Utilisation :
- Code:
# Tout se fait dans la base de données par besoin de toucher au script !
# Dans la partie "note" de l'ennemi mettez une expression sous la forme :
# - <drop type_objet:id_objet chance_de_drop,interrupteur>
#
# > type_objet : O si votre drop, est un Objet
# A si votre drop est une Arme
# E si votre drop est un Equipement (armure,bouclier etc...)
#
# > id_objet : mettez l'ID de l'objet/arme/equipement ici
#
# > chance_de_drop : mettez ici un nombre qui permettra de définir la chance que l'objet
# soit droppé (comme dans la base de données). Si vous mettez 45
# par exemple la chance de le dropper sera d'1/45.
#
# > interrupteur : si vous voulez que votre drop soit uniquement droppable si un interrupteur
# soit activé, mettez l'ID de votre interrupteur ici, sinon mettez 0.
#
# Par exemple si vous voulez droper l'arme d'ID 71 avec une chance de 1/88 uniquement si
# l'interrupteur 2 est activé mettez : <drop A:71 88,2>
# Et un dernier exemple, si vous voulez dropper un bouclier d'ID 42 avec une chance de 1/2
# et qui ne requiert aucun interrupteur d'activé (drop supplémentaire) : <drop E:42 2,0>
Démo : http://www.megaupload.com/?d=10A05QZY
Enjoy =)
- leo99Membre
- Nombre de messages : 95
Localisation : Dans Espritland avec les dieux
Distinction : aucune
Date d'inscription : 29/05/2010
Re: Drop conditionnel & multi-drop
Dim 11 Juil 2010 - 19:24
Blockade et ses scripts Géniaux
C'est trop bien
C'est trop bien
- Dudu'Staffeux retraité
- Nombre de messages : 2060
Age : 33
Distinction : Apprenti KGB-boy en avenir
[Coco' ]
Hamsterphile de service ^^
[Balby' le Fake]
Grand prof de la MA
[Skillo]
Ce grand programmateur, mon coeur, ma vie ! [Hamu']
Date d'inscription : 22/06/2009
Re: Drop conditionnel & multi-drop
Dim 11 Juil 2010 - 21:11
j'ai pas grand choses à dire:
passons au test :
je pense que tu as compris ce que je veux dire
ps: juste une question à quoi te servent ces ligne?
- Code:
class test
def main
initialize
resultat
end
def initialize( simple,court,efficace)
@simple = simple
@court = court
@efficace = efficace
end
def resultat
if simple
if court
if efficace
printf("merci Blockade pour ce script il est très bien")
end
end
end
end
end
passons au test :
- Code:
$scene = test.new (true,true,true)
je pense que tu as compris ce que je veux dire
ps: juste une question à quoi te servent ces ligne?
- Code:
$imported = {} if $imported == nil
$imported["DropConditionnel"] = true
- BlockadeMembre
- Nombre de messages : 194
Age : 32
Distinction : aucune
Date d'inscription : 06/09/2008
Re: Drop conditionnel & multi-drop
Dim 11 Juil 2010 - 22:46
Merci Adurna xDDDDDD j'ai bien rit sur le coup !
L'idée originale viens de KGC et elle est très ingénieuse. Si par exemple plus tard, je crée un script qui réecrit une des méthode que le script utilise, je vais pouvoir mettre une condition :
Cette variable me sert donc à détecter le script, avec une simple variable !
Donc en gros ca donnera :
- Code:
$imported = {} if $imported == nil
$imported["DropConditionnel"] = true
L'idée originale viens de KGC et elle est très ingénieuse. Si par exemple plus tard, je crée un script qui réecrit une des méthode que le script utilise, je vais pouvoir mettre une condition :
- Code:
if $imported["DropConditionnel"]
Cette variable me sert donc à détecter le script, avec une simple variable !
Donc en gros ca donnera :
- Code:
def make_drop_items
methode_du nouveau_script
if $imported["DropConditionnel"]
methode qui va assurer la compatibilité avec DropConditionnel
end
end
- Dudu'Staffeux retraité
- Nombre de messages : 2060
Age : 33
Distinction : Apprenti KGB-boy en avenir
[Coco' ]
Hamsterphile de service ^^
[Balby' le Fake]
Grand prof de la MA
[Skillo]
Ce grand programmateur, mon coeur, ma vie ! [Hamu']
Date d'inscription : 22/06/2009
Re: Drop conditionnel & multi-drop
Dim 11 Juil 2010 - 23:12
ah oui éxélante idée e effet
je vais aussi l'utilisé s'est plus que pratique même
et en effet s'est super simple comme utilisation^^
je vais aussi l'utilisé s'est plus que pratique même
et en effet s'est super simple comme utilisation^^
- Shadow of LifeMembre
- Nombre de messages : 870
Age : 28
Localisation : Joyeux. Comment ça c'est pas la bonne case ?
Distinction : Artiste de la flagornerie.
Porte parole du Ô grand Voilà voilà.
Président du club des masochistes du forum
Fake Gentleman
Soumis ^^
Date d'inscription : 13/09/2009
Re: Drop conditionnel & multi-drop
Lun 12 Juil 2010 - 12:02
Gloups .... c'est là que nous, simples humains, nous nous sentons ridicule ... face à de tels dieux vivants !
Merci pour le script Blockade ! =D
Merci pour le script Blockade ! =D
- InvitéInvité
Re: Drop conditionnel & multi-drop
Lun 12 Juil 2010 - 13:16
Magnifique script en effet
Encore merci pour ta participation Blockade
Encore merci pour ta participation Blockade
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum