Partagez
Aller en bas
avatar
bobybob08
Membre

Nombre de messages : 11
Distinction : aucune
Date d'inscription : 13/08/2015

Reset une map

le Lun 17 Aoû 2015 - 0:25
Bien le bonsoir.
Je fais, une fois de plus, appel à vous car je rencontre une certaine difficulté.
J'ai créé une map où il y a plusieurs trous dans le sol. Si on va dans le trou, c'est Game Over.
J'ai mis en haut de 2 murs, 2 pierres qu'il faut faire tomber ( ça marche ), qu'il faut faire déplacer ( ça marche ) pour les emmener au niveau des trous afin de les boucher et pouvoir passer. ( ça marche)
LE seul soucis, c'est qu'on peut seulement pousser les pierres. Et évidemment, si on pousse trop vers un mur, impossible de dégager la pierre vu qu'on ne peut la tirer.
JE voulais donc créer un bouton ou une manette à activer pour que le joueur puisse réinitialiser la map comme à l'origine, comme s'il venait d'arriver dans la map.
Est-ce possible ?

Merci d'avance !! Smile


Dernière édition par bobybob08 le Lun 17 Aoû 2015 - 16:36, édité 2 fois
avatar
Spytje
Administrateur

Nombre de messages : 5901
Localisation : La terre
Distinction : Spiraliste [Korn']
Forestia : Projet du mois juillet 2014
Papy Pulkigrat [Yama']
Date d'inscription : 16/03/2008

Re: Reset une map

le Lun 17 Aoû 2015 - 1:21
Sur ton bouton tu peux faire une simple téléportation à l'endroit ou tu te trouves au moment ou tu l'actives.

Normalement ca réinitialise ta map et tes event retournent à leurs positions d'origine.


Autre solution :

Tu ajoutes ce script dans ton éditeur :

Code:
class Game_Map 
  def reload_map
    setup(@map_id)
    SceneManager.scene.instance_variable_get(:@spriteset).refresh_characters
  end
end

Ensuite sur ton bouton que tu utilises pour reset ta map tu met en appel de script :

Code:
$game_map.reload_map
avatar
bobybob08
Membre

Nombre de messages : 11
Distinction : aucune
Date d'inscription : 13/08/2015

Re: Reset une map

le Lun 17 Aoû 2015 - 11:27
D'accord merci de votre réponse !
Je vais tester de ce pas et je vous tiens au jus Wink


EDIT : La première solution ne fonctionne pas. Avec la touche action, je fais une téléportation au meme endroit sur le bouton. La téléportation se fait bien car il y a l'effet de fondu mais les pierres ne retournent pas en haut des murs.

La deuxième solution fonctionne à moitié. En effet, les pierres retournent bien en haut des murs mais il semble que les interrupteurs locaux ne se soient pas réinitialisés car je ne peux plus faire tomber la pierre mais la pousser ( car j'ai mis un bruitage ) et ceci correspond à la 3eme page de l'événement ( si l'interrupteur local précédent est activé )


EDIT 2 : J'ai finalement trouvé le script complété pour réinitialiser les interrupteurs locaux !
LE voici :
Code:

class Game_Map 
  def reload_map
    setup(@map_id)
    @events.each do |id, ev|
      # assumes there are only 4. Bad assumption. Assumes "OFF" is the default state.
      $game_self_switches[[@map_id, id, "A"]] = false
      $game_self_switches[[@map_id, id, "B"]] = false
      $game_self_switches[[@map_id, id, "C"]] = false
      $game_self_switches[[@map_id, id, "D"]] = false
    end
    SceneManager.scene.instance_variable_get(:@spriteset).refresh_characters
  end
end

J'ai trouvé le reste du code sur internet ^^ Mais il se complétait bien avec celui donné par Spywaretof Smile
avatar
Spytje
Administrateur

Nombre de messages : 5901
Localisation : La terre
Distinction : Spiraliste [Korn']
Forestia : Projet du mois juillet 2014
Papy Pulkigrat [Yama']
Date d'inscription : 16/03/2008

Re: Reset une map

le Lun 17 Aoû 2015 - 12:08
Ha oui effectivement j avais pas pensé aux interrupteurs locaux qui eux ne se reinitialise pas en cas de reset mais garde leurs valeurs.
avatar
bobybob08
Membre

Nombre de messages : 11
Distinction : aucune
Date d'inscription : 13/08/2015

Re: Reset une map

le Lun 17 Aoû 2015 - 16:38
Je réouvre le sujet car j'ai de nouveau un soucis.
Justement quand je bouche les trous et que je passe, je change de map par téléportation.
Ensuite je reviens par téléportation et ... Les pierres ont repris leur place initiale en haut des murs.
Les interrupteurs généraux sont reset sauf les locaux.
N'y-a-t'il pas un moyen de ne pas reset les interrupteurs et les emplacements des événements lors d'une téléportation ??
avatar
Spytje
Administrateur

Nombre de messages : 5901
Localisation : La terre
Distinction : Spiraliste [Korn']
Forestia : Projet du mois juillet 2014
Papy Pulkigrat [Yama']
Date d'inscription : 16/03/2008

Re: Reset une map

le Lun 17 Aoû 2015 - 23:21
Tu as tenté de mettre le morceau de script sur ton event qui sert à rentrer sur cette map juste après la ligne de téléportation.
avatar
bobybob08
Membre

Nombre de messages : 11
Distinction : aucune
Date d'inscription : 13/08/2015

Re: Reset une map

le Mar 18 Aoû 2015 - 0:07
Le script trouvé permet de réinitialiser. Là justement, je ne veux pas réinitialiser.
avatar
Spytje
Administrateur

Nombre de messages : 5901
Localisation : La terre
Distinction : Spiraliste [Korn']
Forestia : Projet du mois juillet 2014
Papy Pulkigrat [Yama']
Date d'inscription : 16/03/2008

Re: Reset une map

le Mar 18 Aoû 2015 - 0:22
Ok donc je comprend pas trop ce que tu veux faire.

La valeur d'un interrupteur local ne change pas lorsque tu changes de map par contre tu peux modifier sa valeur depuis une autre map avec le script que tu as plus haut.



avatar
bobybob08
Membre

Nombre de messages : 11
Distinction : aucune
Date d'inscription : 13/08/2015

Re: Reset une map

le Mar 18 Aoû 2015 - 0:39
En fait, j'ai un chemin qui mène à une autre map par téléportation. Le truc, c'est que, sur ce chemin, il y a 2 trous qu'il faut combler à l'aide de grosse pierres rondes que l'on ne peut que pousser.
Ma première demande était de pouvoir reinitialiser la position des pierres si le joueur bloquait les pierres contre un mur rendant alors la progression impossible puisqu'on ne peut pas tirer les pierres. Grâce au script plus haut, ça fonctionne. Une fois les trous bouchés on peut passer. On change de map. Et là quand on revient à la map précédente ( là où il y a les trous bouchés) et bien les roches ne dont plus à l'endroit des trous mais à leur position initiale. Cependant, je ne passe plus à travers les trous car ceci est gérés par des interrupteurs locaux qui n'ont pas été réinitialisés. Par contre les interrupteurs normaux ony été réinitialisés lors de la téléportation. Et là du coup ça me pose un soucis car je voudrais que la position des pierres ne change plus.
Alors j'ai essayé lorsqu'on arrive dur la case de téléportation , de bouger les evenements pierres pour les mettre aux emplacements des trous. Ça fonctionne mais on voit clairement le temps de latence. C'est extrement laid de voir les trous puis 1 seconde après de voir les pierres se téléporter.
Donc ma question : peut-on empêcher la reinitialisation des interrupteurs d'une map lors d'une téléportation ?
avatar
Spytje
Administrateur

Nombre de messages : 5901
Localisation : La terre
Distinction : Spiraliste [Korn']
Forestia : Projet du mois juillet 2014
Papy Pulkigrat [Yama']
Date d'inscription : 16/03/2008

Re: Reset une map

le Mar 18 Aoû 2015 - 0:42
En fait lors d'une téléportation c'est seulement la position de l'event qui se réinitialise les interrupteurs eux ne bouge pas.

Il faudrait que tu regarde pour que ton event au final se termine avec un interrupteur local et pas un simple interrupteur.

Est ce que tu sais faire une petite démo pour que je regarde ou des screens ?
avatar
bobybob08
Membre

Nombre de messages : 11
Distinction : aucune
Date d'inscription : 13/08/2015

Re: Reset une map

le Mar 18 Aoû 2015 - 0:56
En fait lors d'une téléportation c'est seulement la position de l'event qui se réinitialise les interrupteurs eux ne bouge pas.
--> tous les interrupteurs ou seulement les locaux qui ne bougent pas ?

Oui faut que je revois peut mon fonctionnement.

Et bien je peux essayer de faire des screens car je n'ai actuellement rien pour record. Je m'en occupe sûrement demain ! En tout cas, merci de votre aide.
avatar
vincent26
Membre

Nombre de messages : 766
Age : 23
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010

Re: Reset une map

le Mar 18 Aoû 2015 - 1:15
Tu as un inter qui s'active quand tu a finie ton puzzle ?

Si oui ajoute a tes pierre une page avec la condition de cette inter actif
page en processus parralléle qui deplace le rocher a l'emplacement de fin de puzzle (par teleportation de celui-ci)
avatar
scottsummers
Membre

Nombre de messages : 197
Distinction : aucune
Date d'inscription : 14/06/2015

Re: Reset une map

le Mer 19 Aoû 2015 - 17:59
petit moyen détourné :
map 1 : celle ou tu doit combler les trous
une fois que c'est fait : intérupteur "bouché" sur "on"
passage à la map 2
quand le joueur doit revenir à la map 1 :
condition : si "bouché" sur "on" téléport sur la map 3 qui est en fait la même que la 1 mais avec les trous bouchés
avatar
Spytje
Administrateur

Nombre de messages : 5901
Localisation : La terre
Distinction : Spiraliste [Korn']
Forestia : Projet du mois juillet 2014
Papy Pulkigrat [Yama']
Date d'inscription : 16/03/2008

Re: Reset une map

le Dim 23 Aoû 2015 - 11:22
avatar
bobybob08
Membre

Nombre de messages : 11
Distinction : aucune
Date d'inscription : 13/08/2015

Re: Reset une map

le Dim 23 Aoû 2015 - 11:24
Bonjour à tous !
Merci pour vos réponses. Désolé j'étais pas mal occupé ces derniers jours. Il faudra que je teste ces idées mais je pense que la dernière ( avec la copie de map ) va fonctionner.
Merci à tous en tout cas ! Smile
Contenu sponsorisé

Re: Reset une map

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum