Et hop voici un petit guide pour ce que tu voulais faire.
Il faut le script Custom Skills Effect pour le faire.
1 : Création des sorts et objets nécessairesPour l'exemple :
1 Sort qui servira de "liste" pour tous les autres sorts.
1 Sort par objet à lancer.
1 Objet par objet à lancer ( naaaaann pas vrai !! xD )
1 Évent commun pour les variables de charge
1 Interrupteur pour l'évent commun
1 Peu de temps
1 Une petite maitrise de la bidouille des scripts
Pour les réglages, c'est simple :
Le premier sort, dans la boite de commentaires tu mets : <subskills ID,ID> Les ID étant tous les ID des sorts d'alchimie.
Pour le sort de l'objet, règle les dégats, et tout et tout. Le coût tu laisse à 0 hein ^^. Tu mets dans la boite de commentaires : <cost custom x> et <not require learn>. x du cost custom étant le type de coût ( que nous allons définir après ), et not require learn permet de faire que le perso n'a pas besoin d'apprendre la compétance pour qu'elle apparaisse. Tu peux aussi ajouter <require level x>, ce qui fera que le sort n'apparaitre que si le perso est de niveau x ou plus.
Pour l'objet, régle sur inutilisable, le reste importe peu...
2 : Réglages dans le scriptAlors, dans le script Custom Skills Effect recherche la ligne qui fait :
def cost_custom(skill, return_value).
Et après va jusqu'au when 1.
Efface tout ça :
- Code:
-
when 1
cost_icon = 1
cost_name = "Mastery"
cost_name2 = "Mastery Requirement"
cost_value = 10
if cost_value > $game_variables[1]
can_use = false
end
when 2
cost_icon = 64
cost_name = "Pots"
cost_name2 = "Requires"
cost_value = 3
if cost_value > $game_party.item_number($data_items[1])
can_use = false
end
when 3
cost_icon = 65
cost_name = "Ether"
cost_name2 = "Requires"
cost_value = 0
if cost_value > $game_party.item_number($data_items[1])
can_use = false
end
Comme ça on va pouvoir partir sur une base saine.
On commence donc par taper :
- Code:
-
when 1
1 signifie le type du coût custom, c'est le même 1 que l'on doit mettre dans <cost custom 1>.
Ensuite on met
- Code:
-
cost_icon = Numéro de l'icon
cost_name = Texte qui remplace l'icon si non utilisé
cost_name2 = Texte qui indique la nature du coût
Bien sur il faut ne faut pas laisser les Numéro de l'icon/Texte qui remplace l'icon si non utilisé/Texte qui indique la nature du coût et les remplacer parce qu'il faut.
Ensuite on a la condition pour lancer le sort. Si elle n'est pas respecter, le sort ne pourra pas être lancé.
- Code:
-
if cost_value > $game_party.item_number($data_items[ID])
can_use = false
end
Voila ce qu'il faut taper en remplaçant ID par l'ID de l'objet qui sera consommé.
Exemple :
- Code:
-
when 1
cost_icon = 207
cost_name = "Poudre explosive"
cost_name2 = "Ingrédient : Poudre"
cost_value = 1
if cost_value > $game_party.item_number($data_items[21])
can_use = false
end
Ensuite allons un peu plus bas, à la ligne qui commence par def apply_custom_cost(battler, skill).
Ici même chose, il faut effacer une partie pour éviter la confusion.
- Code:
-
when 1
$game_variables[1] -= 10
when 2
$game_party.gain_item($data_items[1], -3)
when 3
$game_party.gain_item($data_items[1], -1)
C'est ce qu'il faut effacer.
Maintenant voila ce qu'il faut coller à la place.
- Code:
-
when 1
$chargesObjet -= 1
if $chargesObjet == 0
$game_party.gain_item($data_items[ID], -1)
text = sprintf("Message")
@message_window.add_instant_text(text)
$chargesObjet = NB Charges
end
Explications :
- Code:
-
when 1
1 signifie le type du coût custom, c'est le même 1 que l'on doit mettre dans <cost custom 1>.
- Code:
-
$chargesObjet -= 1
$chargesObjet est la variable qui contiendra les charges des objets. Cette action retire 1 à la variable., aussi pense à changer $chargeObjet pour chaque objet, pour de la poudre met $chargesPoudre par exemple, pour des potion mets $chargesPotion. Il faut que pour un même objet $chargesObjet soit le même sinon ça buggera.
- Code:
-
if $chargesObjet < 0
Ceci est la condition. C'est à dire que si $chargesObjet vaut 0 ou moins. On pourra passer à la suite. Sinon on passe.
- Code:
-
$game_party.gain_item($data_items[ID], -1)
Si la condition est respectée cela voudra dire que l'objet n'a plus de charges. Donc on retire l'objet. ID est à remplacer par l'ID de l'objet.
- Code:
-
text = sprintf("Message")
@message_window.add_instant_text(text)
Ceci est totalement optionnel. C'est un message qui apparait lorsque l'objet est consommé. Message est à remplacer par le message que tu veux.
- Code:
-
$chargesObjet = NB de charges
Cela réinitialise le nombre de charges à la valeur que tu veux.
- Code:
-
end
Ce end termine la condition. Si tu ne le met pas, RMVX va te renvoyer une erreur.
Voila. Fini ? Non
Il reste l'évent commun à configurer. Celui ci nous servira à faire en sorte que quand l'objet n'est plus dans l'inventaire la variable charge soit à 0 et quand on en retrouve un, elle revienne à sa valeur initiale.
Pour cela c'est très simple :
Un évent commun en processus parallèle, déclenché par l'interrupteur de ton choix. Il faudra le déclencher dès le début du jeu. Sinon le jeu va bugger.
Le contenu :
Une condition par objet !
- Code:
-
Condition : Si l'objet [] est possédé
Condition Si script $chargesObjet == 0
Appeler script : $chargesObjet = NB de charges
Fin Condition
Sinon
Appeler script : $chargesObjet = 0
Fin Condition
Voila, explication : la première condition sert à vérifier si l'objet est possédé.
La deuxième sert à vérifier si la variable de charge de l'objet est égal à zéro ( donc si auparavant il n'y avait pas de charges ), aussi pense à changer $chargeObjet pour chaque objet, pour de la poudre met $chargesPoudre par exemple, pour des potion mets $chargesPotion. Il faut que pour un même objet $chargesObjet soit le même sinon ça buggera.
La valeur doit être la même qu'indiquée dans le script.
L'appel de script permet de changer la variable dans le cas ou le nombre de charges est à 0 ( donc qu'il n'y a plus de charges ni d'objet.
L'appel de script dans le Sinon est là pour enlever toute charge d'un objet s'il n'est plus dans l'inventaire.
Voila voila. J'ai testé, et ça marche parfaitement !
Si t'a des question n'hésite pas !