Rpg zelda construct tout pour rpg maker et + |
| | Jour/Nuit | |
| | Auteur | Message |
---|
Link Roi
Nombre de messages : 401 Date d'inscription : 25/01/2006
| Sujet: Jour/Nuit Dim 5 Fév à 18:00 | |
| Comme vous l'aurez deviné, ce scrîpt gère les passages jour/nuit avec horloge et comptage des jours passés. La, vous me direz "y'a déjà des tutos sur comment faire avec des évènements", et moi je vous répond "oui, mais s'il sont un peu plus facile à mettre en place, ils sont en revanche très rigide et difficiles à utiliser (enfin, c'est mon avis)"... Enfin bon, pour vous en rendre mieux compte, lisez les quelques lignes qui suivent:
I] Avantages et inconvénients d'un scrîpt par rapport à un évènement
Bon, j'avoue que je n'ai pas comparé en détail... Par contre, d'après les vieux souvenirs des évènements que je faisais sous rm2k, la gestion du temps et du ton de l'écran est plus facile, surtout lors des passages du jour à la nuit et inversement. J'ai un très bon exemple: Imaginons que vous faites le passage jour/nuit avec la commande "changer ton de l'écran" et vous mettez un fondu de 50 secondes (j'exagère peut-être, mais c'est pour l'exemple...). Donc voilà, vous jouez et il commence à faire nuit, mais au bout de 10 secondes vous entrez dans une maison... Ben dans la maison, il fait très claire (parce que dans la maison, y'a des lumières, et si y'en a pas, il fait tout noire parce que vous êtes assez intéligent pour mettre ni lumière ni fenêtre!)! Bon, jusque là, il n'y a pas vraiment de problème, sauf que comme la maison est nulle (y'a ni lumière, ni fenêtre!), ben vous resortez au bout de 2sec... Et maintenant? 10+2=12 secondes de passées depuis que la nuit à commencée à tomber et il ne fait ni tout à fait jour, ni tout à fait nuit... Comment régler le ton d'écran? Avec une variable bien sûr! et tout un tas de calcules compliqué! ou alors si vous n'aimez pas les calcules, y vous reste plus qu'à faire pleins de conditions du genre "si 1sec alors sinon si 2sec alors sinon si 3sec...". Bref, pas très pratique! Voici maintenant la commande "scrîpt" à insérer dans votre évènement si vous utilisez le scrîpt qui suit: "$game_jours.modifier_luminosite(true)"!!!
C'est vrai que j'ai utilisé un exemple assez particulier, et pour la pluspart je pense qu'un simple évènement commun peut vous suffire, c'est à vous de tester la différence dans votre projet.
Autres points positifs: *vous pouvez le régler pour qu'il n'utilise aucune variable du jeu (même s'il y en a une taff, moi j'y tiens à mes variables! j'en ai utilisé 10 à peine 10 que je pense déjà qu'il m'en reste que 4990!) *gestion configurable du défilement du temps (vitesse, saut à des heures précises) et d'autres réglages possibles... *(avec une certaine connaissance du ruby) possibilité de faire varier le ton de l'écran en fonction de l'heure comme vous le souhaitez!
Points négatifs: *ben, il faut copier le scrîpt et insérer quelques lignes ici et là... *la configuration de départ
Niveau de difficulté à l'utilisation: ça peut paraître difficile, mais une fois que l'on connaît les quelques commandes, c'est pas plus dur qu'un évènement commun. Niveau de difficulté pour l'instalation: si vous pensez encore qu'un ordinateur c'est intéligent, abstenez vous de toucher à des scripts!...
II] Instaler le scrîpt
A] Créez un scrîpt nomé Game_Jours au dessus du scrîpt Main et copiez-y ce code:
Citation: #============================================= # # # Game_Jours (auteur: _MNGB) # # #=============================================
class Game_Jours
def initialize @variables = [0, 0, 0, 0, 0, 0, 0, 0] @fraction = 0 # fraction de seconde au bout de laquelle le temps passé dans le jeu est recalculé @speed = 0 # secondes du jeu écoulés lors d'une vraie fraction de seconde @secondes = 0 @minutes = 0 @heures = 0 @jours = 0 @luminosite = false # si true, alors la lumière change en fonction du moment de la journée (jour/nuit) @moment = 0 # ici: 0 = nuit / 1 = aube / 2 = matin / 3 = jour / 4 = crépuscule / 5 = soir / 6 = nuit @i = 0 # i-ème seconde depuis le début du moment @ton = Tone.new(0, 0, 0, 0) @transfert = [@ton, @luminosite] @fraction_sec = 0 refresh end
def refresh @fraction_sec = (Graphics.frame_count * @fraction) / Graphics.frame_rate if @speed > 0 horaire end if @luminosite journee end end
def update if (Graphics.frame_count * @fraction) / Graphics.frame_rate != @fraction_sec refresh end end
def horaire @secondes += @speed # défilement des secondes @minutes += @secondes / 60 # convertion en minute @secondes %= 60 @heures += @minutes / 60 # convertion en heure @minutes %= 60 @jours += @heures / 24 # convertion en jour @heures %= 24 moment end
def moment # calcule de @moment et @i en fonction de l'heure @moment = 0 # au début de la journée (0h) il fait nuit @i = (((@heures * 60) + @minutes) * 60) + @secondes if @heures >= 6 # s'il est plus de 6h, alors c'est au moins l'aube @moment = 1 @i -= 6 * 60 * 60 end if @heures >= 7 # s'il est plus de 7h, alors c'est au moins le matin @moment = 2 @i -= 1 * 60 * 60 end if @heures >= 8 # s'il est plus de 8h, alors c'est au moins le jour @moment = 3 @i -= 1 * 60 * 60 end if @heures >= 18 # s'il est plus de 18h, alors c'est au moins le crépuscule @moment = 4 @i -= 10 * 60 * 60 end if @heures >= 19 # s'il est plus de 19h, alors c'est au moins le soir @moment = 5 @i -= 1 * 60 * 60 end if @heures >= 20 # s'il est plus de 20h, alors c'est la nuit @moment = 6 @i -= 1 * 60 * 60 end end
def journee case @moment when 0 # nuit changement_luminosite(-120, -120, -120, 0) when 1 # aube changement_luminosite(-120 + (@i * 1.65 / 60), -120 + (@i * 1 / 60), -120 + (@i * 0.5 / 60), 0) when 2 # matin changement_luminosite(-21 + (@i * 0.35 / 60), -60 + (@i * 1 / 60), -90 + (@i * 1.5 / 60), 0) when 3 # jour changement_luminosite(0, 0, 0, 0) when 4 # crépuscule changement_luminosite(- (@i * 0.35 / 60), - (@i * 1.2 / 60), - (@i * 1.5 / 60), 0) when 5 # soir changement_luminosite(-21 - (@i * 1.65 / 60), -72 - (@i * 0.8 / 60), -90 - (@i * 1.5 / 60), 0) when 6 # nuit changement_luminosite(-120, -120, -120, 0) else # si aucun de ces moments (en cas d'erreur) changement_luminosite(0, 0, 0, 0) end end
def changement_luminosite(rouge = 0, vert = 0, bleu = 0, intensite = 0) @ton = Tone.new(rouge, vert, bleu, intensite) $game_screen.start_tone_change(@ton, 0) end
def teleport(transfert_ton, transfert_luminosite) @transfert = [transfert_ton, transfert_luminosite] end
def transfert @ton = @transfert[0] @luminosite = @transfert[1] if @luminosite journee else $game_screen.start_tone_change(@ton, 0) end end
def lire # sauver dans les variables du jeu lire_fraction(@variables[0]) lire_speed(@variables[1]) lire_secondes(@variables[2]) lire_minutes(@variables[3]) lire_heures(@variables[4]) lire_jours(@variables[5]) lire_moment(@variables[6]) lire_luminosite(@variables[7]) end
def change # lire les variables de jeu change_fraction(@variables[0]) change_speed(@variables[1]) change_secondes(@variables[2]) change_minutes(@variables[3]) change_heures(@variables[4]) change_jours(@variables[5]) change_moment(@variables[6]) change_luminosite(@variables[7]) end
def valeur_fraction return @fraction end
def valeur_speed return @speed end
def valeur_secondes return @secondes end
def valeur_minutes return @minutes end
def valeur_heures return @heures end
def valeur_jours return @jours end
def valeur_moment return @moment end
def valeur_luminosite return @luminosite end
def modifier_fraction(fraction = 0) @fraction = fraction end
def modifier_speed(speed = 0) @speed = speed end
def modifier_secondes(secondes = 0) @secondes = secondes end
def modifier_minutes(minutes = 0) @minutes = minutes end
def modifier_heures(heures = 0) @heures = heures in_variables end
def modifier_jours(jours = 0) @jours = jours end
def modifier_moment(moment = 0) @moment = moment end
def modifier_luminosite(luminosite = false) @luminosite = luminosite end
def variables_fraction(variable = 0) @variables[0] = 0 if (variable > 0) and (variable <= 5000) @variables[0] = variable end end
def variables_speed(variable = 0) @variables[1] = 0 if (variable > 0) and (variable <= 5000) @variables[1] = variable end end
def variables_secondes(variable = 0) @variables[2] = 0 if (variable > 0) and (variable <= 5000) @variables[2] = variable end end
def variables_minutes(variable = 0) @variables[3] = 0 if (variable > 0) and (variable <= 5000) @variables[3] = variable end end
def variables_heures(variable = 0) @variables[4] = 0 if (variable > 0) and (variable <= 5000) @variables[4] = variable end end
def variables_jours(variable = 0) @variables[5] = 0 if (variable > 0) and (variable <= 5000) @variables[5] = variable end end
def variables_moment(variable = 0) @variables[6] = 0 if (variable > 0) and (variable <= 5000) @variables[6] = variable end end
def variables_luminosite(switche = 0) @variables[7] = 0 if (switche > 0) and (switche <= 5000) @variables[7] = switche end end
def lire_fraction(variable = 0) if (variable > 0) and (variable <= 5000) $game_variables[variable] = @fraction end end
def lire_speed(variable = 0) if variable > 0 and variable <= 5000 $game_variables[variable] = @speed end end
def lire_secondes(variable = 0) if variable > 0 and variable <= 5000 $game_variables[variable] = @secondes end end
def lire_minutes(variable = 0) if variable > 0 and variable <= 5000 $game_variables[variable] = @minutes end end
def lire_heures(variable = 0) if variable > 0 and variable <= 5000 $game_variables[variable] = @heures end end
def lire_jours(variable = 0) if variable > 0 and variable <= 5000 $game_variables[variable] = @jours end end
def lire_moment(variable = 0) if variable > 0 and variable <= 5000 $game_variables[variable] = @moment end end
def lire_luminosite(switche = 0) if switche > 0 and switche <= 5000 $game_switches[switche] = @luminosite end switche = true end
def change_fraction(variable = 0) if variable > 0 and variable <= 5000 @fraction = $game_variables[variable] end end
def change_speed(variable = 0) if variable > 0 and variable <= 5000 @speed = $game_variables[variable] end end
def change_secondes(variable = 0) if variable > 0 and variable <= 5000 @secondes = $game_variables[variable] end end
def change_minutes(variable = 0) if variable > 0 and variable <= 5000 @minutes = $game_variables[variable] end end
def change_heures(variable = 0) if variable > 0 and variable <= 5000 @heures = $game_variables[variable] end end
def change_jours(variable = 0) if variable >= 0 and variable <= 5000 @jours = $game_variables[variable] end end
def change_moment(variable = 0) if variable > 0 and variable <= 5000 @moment = $game_variables[variable] end end
def change_luminosite(switche = 0) if switche > 0 and switche <= 5000 @luminosite = $game_switches[switche] end switche = true end
end
B] Insérez ensuite cette ligne dans le scrîpt nommé Scene_Title à la ligne 129
Citation: $game_jours = Game_Jours.new
Si vous avez déjà fait des modifications dans ce scrîpt et que les numéros de lignes ont changés, voici le groupe de ligne après lequel il faut insérer le code (dans la methode command_new_game):
(118) $game_temp = Game_Temp.new (119) $game_system = Game_System.new (120) $game_switches = Game_Switches.new (121) $game_variables = Game_Variables.new (122) $game_self_switches = Game_SelfSwitches.new (123) $game_screen = Game_Screen.new (124) $game_actors = Game_Actors.new (125) $game_party = Game_Party.new (126) $game_troop = Game_Troop.new (127) $game_map = Game_Map.new (128) $game_player = Game_Player.new $game_jours = Game_Jours.new
C] Insérez dans le scrîpt Scene_Save à la ligne 83
Citation: Marshal.dump($game_jours, file)
Toujours si vous avez déjà éffectué des modifications, l'insertion s'éffectue après le groupe de lignes dans write_save_data(file):
(73) Marshal.dump($game_system, file) (74) Marshal.dump($game_switches, file) (75) Marshal.dump($game_variables, file) (76) Marshal.dump($game_self_switches, file) (77) Marshal.dump($game_screen, file) (78) Marshal.dump($game_actors, file) (79) Marshal.dump($game_party, file) (80) Marshal.dump($game_troop, file) (81) Marshal.dump($game_map, file) (82) Marshal.dump($game_player, file) Marshal.dump($game_jours, file)
D] Insérez dans à la ligene 83 du scrîpt Scene_Load
Citation: $game_jours = Marshal.load(file)
Vous obtenez alors dans read_save_data(file):
(73) $game_system = Marshal.load(file) (74) $game_switches = Marshal.load(file) (75) $game_variables = Marshal.load(file) (76) $game_self_switches = Marshal.load(file) (77) $game_screen = Marshal.load(file) (78) $game_actors = Marshal.load(file) (79) $game_party = Marshal.load(file) (80) $game_troop = Marshal.load(file) (81) $game_map = Marshal.load(file) (82) $game_player = Marshal.load(file) $game_jours = Marshal.load(file)
E] Enfin, insérez cette dernière ligne de code à la ligne 53 du scrîpt Scene_Map
Citation: $game_jours.update
De même, si vous avez déjà fait des modifications et que les lignes ont changées, le code se place dans la methode update avant ces lignes:
$game_jours.update (53) $game_map.update (54) $game_system.map_interpreter.update (55) $game_player.update
III] Configurer
Le plus facile, c'est de créer un évènement qui se déclanche lors d'une nouvelle partie. Vous n'aurez alors qu'à utiliser les commandes que je décrirais plus bas. Si vous préférez, vous pouvez changer directement les valeurs par défaut mises dans la methode initialize (lignes 11 à 25). Voici les significations des différentes variables (pour les programmeurs en ruby):
*@variables[]: numéro des variables de jeu dans lesquelles sont stockées les variables utiles du scrîpt. Mettez la valeur correspondant à la variable que vous voulez utiliser (entre 1 et 5000) ou 0 pour désactiver. Les variables "utiles" sont dans l'ordre: @fraction, @speed, @secondes, @minutes, @heures, @jours, @moment et @luminosite (cette dernière est stockée dans un switche, et pas dans une variable). Pour les déscriptions, lire la suite.
*@fraction: le temps écoulé et le changement du ton de l'écran son recalculés toutes les fractions de secondes (exemple: @fraction = 5[/front], le calcule se fait tous les 5ème de secondes). A 0, plus aucun calcule n'est effectué.
*[font=Verdana]@speed: vitesse d'écoulement du temps dans le jeu (dépend de @fraction). Exemple: @speed = 24 et @fraction = 5, on a 24 secondes dans le jeu qui s'écoulent en 1/5 de seconde réelle.
*@secondes, @minutes, @heures, @jours: comme l'indique leurs noms.
*@moment: le moment de la journée (aube, matin, jour, crépuscule, soir, nuit). Si @fraction != 0 et @speed != 0 ("!=" signifie "différent de"), c'est inutile d'y toucher car cette variable est recalculée en fonction de l'heure... Mais sinon, vous pouvez décider qu'il fait nuit à 14h!
*@luminosite: si cette variable vaut true, le ton de l'écran change en fonction du moment de la journée. Sinon ça ne change pas quelle que soit l'heure.
*@ton(): ton d'écran par défaut. Les chiffres entre parenthèses corespondent réspectivement aux valeurs du rouge, vert, bleu et d'intensité. | |
| | | Link Roi
Nombre de messages : 401 Date d'inscription : 25/01/2006
| Sujet: Re: Jour/Nuit Dim 5 Fév à 18:01 | |
| IV] Utilisation
Voici les commandes à insérer dans vos évènements en fonction de ce que vous voulez faire... Pour insérer ces commandes, dans l'évènement, faites nouvelle commande et dans la 3ème page tout en bas à droite appuyez sur "insérer scrîpt...".
*$game_jours.teleport(Tone.new(r, v, b, i), booleen[i]): avant une téléportation, pour indiquer les paramètres de la nouvelle map (pas obligatoire si rien ne change). Remplacez [i]booleen par true ou false selon si vous voulez que sur la nouvelle map le ton change en fonction de l'heure ou non. Si vous mettez true, remplacez r, v, b et i par 0, sinon remplacez les par les valeurs du ton d'écran de la nouvelle map.
*$game_jours.modifier_fraction(), $game_jours.modifier_speed(), $game_jours.modifier_secondes(), $game_jours.modifier_minutes(), $game_jours.modifier_heures(), $game_jours.modifier_jours(), $game_jours.modifier_moment(), $game_jours.modifier_luminosite(): Pour changer leurs valeurs en utilisant mettant simplemant la nouvelle valeur entre les parenthèses (tous des nombres, sauf $game_jours.change_luminausite qui vaut true ou false).
*$game_jours.variable_fraction(), $game_jours.variable_speed(), $game_jours.variable_secondes(), $game_jours.variable_minutes(), $game_jours.variable_heures(), $game_jours.variable_jours(), $game_jours.variable_moment(), $game_jours.variable_luminosite(): Pour réserver les variables de jeu (dont le numéro est entre parenthèse, 0 pour ne pas réserver de variable) afin d'y stocker des variables du scrîpt.
*$game_jours.lire: lit toutes les variables du scrîpt et les enregistre dans les variables du jeu réservée.
*$game_jours.change: change tous les parametres en fonction des valeurs dans les variables réservées.
*$game_jours.lire_fraction(), $game_jours.lire_speed(), ... Donne la valeur d'une variable du scrîpt dans une variable de jeu (dont le numéro est celui entre parenthèse).
*$game_jours.change_fraction(), $game_jours.change_speed(), ... Change la valeur d'une variable du scrîpt d'après une variable de jeu (dont le numéro est celui entre parenthèse).
... J'éspère que ces explications qui ont l'air compliquées (elles le sont pas, c'est juste que j'explique mal) ne vont pas trop vous décourager... En ce qui me concerne, comme c'est moi qui a écrit le scrîpt, je vois très facilement toutes les utilitées! | |
| | | neo_1255 Page
Nombre de messages : 7 Date d'inscription : 27/02/2006
| Sujet: Re: Jour/Nuit Lun 27 Fév à 14:05 | |
| | |
| | | Link Roi
Nombre de messages : 401 Date d'inscription : 25/01/2006
| Sujet: Re: Jour/Nuit Lun 27 Fév à 14:47 | |
| oui vrement et ces plus facile a utilisé | |
| | | samy Page
Nombre de messages : 8 Date d'inscription : 02/03/2006
| Sujet: Problème de script ! Jeu 2 Mar à 19:31 | |
| Bonjour, je voudrais vous dire, que le script, ne marche pas chez moi, il est écrit : "Script scene_map ne fonctionne pas en 53 à la ligne | |
| | | Link Roi
Nombre de messages : 401 Date d'inscription : 25/01/2006
| Sujet: Re: Jour/Nuit Jeu 2 Mar à 19:43 | |
| Va te presenter dans la section presentation | |
| | | samy Page
Nombre de messages : 8 Date d'inscription : 02/03/2006
| Sujet: Problème de script ! Jeu 2 Mar à 19:47 | |
| Bonjour, je voudrais vous dire, que le script, ne marche pas chez moi, il est écrit : "Script scene_map ne fonctionne pas en 53 à la ligne | |
| | | Link Roi
Nombre de messages : 401 Date d'inscription : 25/01/2006
| Sujet: Re: Jour/Nuit Jeu 2 Mar à 19:48 | |
| | |
| | | samy Page
Nombre de messages : 8 Date d'inscription : 02/03/2006
| Sujet: Re: Jour/Nuit Jeu 2 Mar à 19:51 | |
| Voilà cela est fait ! C'est Samy ! | |
| | | Link Roi
Nombre de messages : 401 Date d'inscription : 25/01/2006
| Sujet: Re: Jour/Nuit Jeu 2 Mar à 19:54 | |
| ah oui dans le c] et le d] il y a cet emoticone vous le remplacer par un 8 et une ) | |
| | | samy Page
Nombre de messages : 8 Date d'inscription : 02/03/2006
| Sujet: Re: Jour/Nuit Jeu 2 Mar à 19:58 | |
| Merci encore, bon jusqu'à là, cela marche mais lorsque, je fais inserer un script, que dois-je mettre ? (normalement cela est call_......) Merci ! | |
| | | Link Roi
Nombre de messages : 401 Date d'inscription : 25/01/2006
| Sujet: Re: Jour/Nuit Jeu 2 Mar à 20:02 | |
| | |
| | | samy Page
Nombre de messages : 8 Date d'inscription : 02/03/2006
| Sujet: Re: Jour/Nuit Jeu 2 Mar à 20:04 | |
| Je suis vraiment désolé, mais je n'ai pas tout compris, je voudrais un call_.... pour un truc normal, je ne veux rien changer ! | |
| | | samy Page
Nombre de messages : 8 Date d'inscription : 02/03/2006
| Sujet: Re: Jour/Nuit Jeu 2 Mar à 20:21 | |
| Mr Link, je voudrais donner la démo de mon jeu a l'un des createurs (de ce jeu), pourriez vous m'aidez, je ne comprend , pourqu'oi il n'y a pas call_.... dans UTILISATION ? et si vous pourriez repondre a mon message au dessus, ce serais sympa de votre part ! Merci ! | |
| | | Link Roi
Nombre de messages : 401 Date d'inscription : 25/01/2006
| Sujet: Re: Jour/Nuit Jeu 2 Mar à 22:26 | |
| JCOMPREND POS POUR LA DEMO IL FAUT CREER L'INSTALATEUR ET L'HEBERGER | |
| | | samy Page
Nombre de messages : 8 Date d'inscription : 02/03/2006
| Sujet: Re: Jour/Nuit Ven 3 Mar à 21:06 | |
| Je sais comment l'on fait pour passer une démo a une personne, j'ai meme créé un forum et un site !!!! La question est expliquez moi clairement, la facon d'appller le script jour/nuit dans inserer un script | |
| | | CoCo Page
Nombre de messages : 4 Date d'inscription : 28/02/2006
| Sujet: Re: Jour/Nuit Mar 7 Mar à 15:10 | |
| write_save_data(file): je le trouve pastu peu me dire ou bs le trouver | |
| | | Contenu sponsorisé
| Sujet: Re: Jour/Nuit | |
| |
| | | | Jour/Nuit | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |
|