mmmmh, moi non plus je n'ai pas trouvé ton tuto matsuo (Les Tutos de Matsuo... ça sonne bien...)
Personnellement, je pense que pour faire un tel système, les variables de locales de Mirai no Hikari seraient assez utiles, tout simplement, pour que le temps de repousse de chaque arbre soit indépendant, ne pas avoir à gaspiller une variable normale juste pour ça, et pour un gain de temps, et oui, dès qu'on a fait un arbre, on copie/colle l'évent où on veut sans avoir à modifier à chaque fois la variable ^^
Donc pour moi, on ferait comme suit:
Tout d'abord, rajoute dans l'éditeur le script de Mirai no Hikari suivant:
- Code:
-
#===================================================================
# Auteur : Miraino Hikari
# Version : 1.0 (25juin2008)
# Sert à ajouter des variables locales dans les events.
# Pour afficher la valeur dans un message,
# \SV[MAPID,EVENTID,VARID]
# où MAPID est l'ID de la carte où se trouve l'événement
# EVENTID est l'ID de l'event
# VARID est l'ID de la variable locale (entier ou chaîne)
#
# exemples :
# \SV["B"] affiche la variable B de l'event courant
# \SV[4] affiche la variable 4 de l'event courant
# \SV[1,7,"A"] affiche la variable A de l'event 7 de la carte 1
# \SV[2,4,5] affiche la variable 5 de l'event 4 de la carte 2
#
# Des instructions concernant l'affectation de ces variables sont
# présentes sur http://rpg-maker-vx.bbactif.com/
#===================================================================
# ID des variables de contrôl utilisé lors de l'affichage de la valeur dans un message
# facultatif si la valeur n'est jamais affichée.
$MAP_ID_MESSAGE_VAR = 95
$EVENT_ID_MESSAGE_VAR = 96
class Game_SelfVars
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
@data = {}
end
#--------------------------------------------------------------------------
# * Get Self Switch
# key : key
#--------------------------------------------------------------------------
def [](key)
if @data[key] == nil
return 0
else
return @data[key]
end
end
#--------------------------------------------------------------------------
# * Set Self Switch
# key : key
#--------------------------------------------------------------------------
def []=(key, value)
@data[key] = value
end
end
class Scene_Title < Scene_Base
alias orig_obj_creation_SelfVars create_game_objects
def create_game_objects
orig_obj_creation_SelfVars
$game_self_vars = Game_SelfVars.new
end
end
class Game_Event < Game_Character
def get_id
return @id
end
def get_map
return @map_id
end
end
class Window_Message < Window_Selectable
alias conv_sp_char_SelfVars convert_special_characters
def convert_special_characters
conv_sp_char_SelfVars
#convertie les self varaibles de type "string" par référence à un autre event
@text.gsub!(/\\SV\[(\d+),(\d+),\"(\D+)\"\]/i) { $game_self_vars[[$1.to_i,$2.to_i,$3.to_s]] }
#convertie les self varaibles de type "integer" par référence à un autre event
@text.gsub!(/\\SV\[(\d+),(\d+),(\d+)\]/i) { $game_self_vars[[$1.to_i,$2.to_i,$3.to_i]] }
#convertie les self varaibles de type "string" sur l'event courant
@text.gsub!(/\\SV\[\"(\D+)\"\]/i) { $game_self_vars[[$game_variables[$MAP_ID_MESSAGE_VAR].to_i,$game_variables[$EVENT_ID_MESSAGE_VAR].to_i,$1.to_s]] }
#convertie les self varaibles de type "integer" sur l'event courant
@text.gsub!(/\\SV\[(\d+)\]/i) { $game_self_vars[[$game_variables[$MAP_ID_MESSAGE_VAR].to_i,$game_variables[$EVENT_ID_MESSAGE_VAR].to_i,$1.to_i]] }
end
end
Puis, sur ta map, tu crées un évent de l'apparence de ton arbre,
au niveau du héros (sinon, l'évènement ne fonctionnera pas), tu y mets les commandes suivantes (c'est un exemple de présentation):
Message: Couper l'arbre ?
Choix: Oui, Non
Si oui:
Effet sonore: Slash1Ajouter objet: Bout de boisMessage: Vous obtenez un bout de bois
Interrupteur local A activéSi Non:
Fin Choix
Voilà, bon, ça c'était juste pour faire en sorte de couper le bois, faire un petit bruit, donner le bois et passer à la page 2 de l'évent.
Dans la page 2, comme condition de déclenchement (la partie de gauche), tu mets donc l'
interrupteur local A, que l'on a activé, dans le cas où l'arbre était coupé.
Tu mets l'apparence que tu souhaites (si toutefois tu veux mettre une apparence) et tu mets l'évènement en
processus parallèle (pour que cela se lance directement quand la page est appelée).
Tu y mets ensuite les commandes suivantes:
Script: #préparation
event = get_character(0)
m_v = $MAP_ID_MESSAGE_VAR
e_v = $EVENT_ID_MESSAGE_VAR
$game_variables[m_v]= map = event.get_map
$game_variables[e_v]= id = event.get_id
#affectation
@repousse = [map, id, "A"]
$game_self_vars[@repousse]=0BoucleAttendre 60 framesScript: $game_self_vars[@repousse]+=1Condition: Script: $game_self_vars[@repousse]==5
Sortir de la boucle
Fin de la condition
Fin de la boucleDésactiver interrupteur local AQue fait donc cette deuxième page?
Le premier script crée une variable locale @repousse et la réinitialise, pour que l'arbre puisse repousser plusieurs fois (sinon il va compter une fois jusqu'à cinq, puis jusqu'à dix, quinze, etc.)
Ensuite, je crée un chronomètre grâce à cette variable. Je fais attendre à chaque fois 60 frames, soit une seconde, et à chaque seconde, j'augmente la variable @repousse de 1
Dans ma condition, je demande si @repousse est arrivé à 5 (remplace ce nombre par le temps que tu souhaites que le joueur attende avant que l'arbre ne repousse
en secondes) Si tel est le cas, alors je quitte la boucle et je désactive l'interrupteur pour retourner à la première page de l'évènement et ainsi faire réapparaître l'arbre, si @repousse est différent de cinq, alors il recommence la boucle et l'augmente jusqu'à ce qu'elle arrive à 5...
Voilà, j'espère que mes explications étaient assez claires pour toi et t'auront aidé
Sur ce, bon making ^^'