Aller au contenu


Sortir Du Menu Mode?


  • Veuillez vous connecter pour répondre
2 réponses à ce sujet

#1 MagikMike

MagikMike

    Crétins de bugs !


Posté 28 juillet 2009 - 02:08

Voila. Je me suis fait un petit objet tout simple, le sac de couchage...
Le principe c'est pouvoir le prendre dans son inventaire et de le poser au sol..

Ensuite quand on l'active on peut soit :

* le remettre dans l'inventaire
* Dormir

Voici le script en question..

begin MagikM_SCR_sac

short messageOn
short button

if (OnActivate == 1)

	MessageBox "Que voulez vous faire?" "Dormir" "Mettre le sac dans l'inventaire"
	
	set messageOn to 1
endif


if (messageOn == 1)

	set button to GetButtonPressed

	if (button == 0)
		ShowRestMenu
		set messageOn to 0

	elseif (button == 1)
			Player->additem MagikM_sac_couchage 1
			Disable
			SetDelete 1
			set messageOn to 0
	endif

endif


end MagikM_SCR_sac

Bon ca marche. Seulement je m'interroge :

* Plutot que d'appeler directement ShowRestMenu, ne serait t'il pas plus propre d'appeler le script normalement associé aux lits?
  Or le script en question ne fait ShowRestMenu que si Menumode = 0 ... Ce qui n'arrive pas parce que l'utilisateur à du choisir
entre prendre le sac et dormir ;)...

* le SetDelete précédé d'un Disable... c'est pas trop instable ca?
PNOG
PNOS

On a toujours besoin d'un petit PNO chez soi (merci Neluche)

#2 elendell

elendell

    Mécano Dell'Arte


Posté 28 juillet 2009 - 05:09

Bonjour MagikMike,

Citation

* Plutot que d'appeler directement ShowRestMenu, ne serait t'il pas plus propre d'appeler le script normalement associé aux lits?
Je ne vois pas pourquoi ce serait plus propre.

Citation

* le SetDelete précédé d'un Disable... c'est pas trop instable ca?
Je ne vois pas pourquoi non plus mais le "Disable" dans ce cas ne sert à rien. On peut faire "SetDelete" directement.

Par contre, je ne sais pas pourquoi tu supprimes le sac et en redonnes un nouveau. Ils suffit que tu fasses "Activate".
L'inconvénient est que si tu fais "Activate" directement dans "elseif ( button == 1 )", cela engendre un petit bug. Le sac va bien dans l'inventaire immédiatement mais il faut ouvrir 2 fois l'inventaire pour qu'il se dessine.

Pour contrer ce bug visuel, il suffit de faire "Activate" une frame après l'action sur le bouton 1. Voici comment je le ferais :

begin MagikM_SCR_sac

short messageOn
short button

if ( OnActivate == 1 )
	if ( MenuMode == 1 )
		Activate
	else
		MessageBox "Que voulez vous faire?" "Dormir" "Mettre le sac dans l'inventaire"	
		set messageOn to 1
	endif
endif

if ( messageOn == 0 )
elseif ( messageOn == 1 )

	set button to GetButtonPressed

	if ( button == 0 )
		ShowRestMenu
		set messageOn to 0
	elseif ( button == 1 )
		set messageOn to 2
	endif

else
	set messageOn to 0
	Activate
endif

end

Notes :

- J'ai ajouté "MenuMode" pour le cas où le joueur prend le sac par terre en ayant son inventaire ouvert, pour l'y déposer. Il me semble que avoir accès au menu sommeil avec l'inventaire ouvert n'est pas judicieux et d'autre part, ça permet de prendre le sac directement, sans passer par le menu. Mais c'est bien sûr une option facultative.

- "if ( messageOn == 0 )" ne contient aucune instruction volontairement. Comme je retarde "Activate" d'une frame à cause du bug visuel, on se retrouve avec un "elseif" supplémentaire. La plupart du temps, "messageOn" sera à 0, donc le jeu ne continuera pas à tester "messageOn" puisque le premier "if" rencontré sera vrai. On économise un test dans la plupart des frames.

Il n'y a pas de petites économies.  ;)

PS : Il faut que tu laisses un espace entre une parenthèse et un caractère. La plupart du temps, ça fonctionne aussi sans espace mais quelques fois, le manque d'espace génère un bug.

#3 MagikMike

MagikMike

    Crétins de bugs !


Posté 28 juillet 2009 - 13:16

Citation

- J'ai ajouté "MenuMode" pour le cas où le joueur prend le sac par terre en ayant son inventaire ouvert, pour l'y déposer. Il me semble que avoir accès au menu sommeil avec l'inventaire ouvert n'est pas judicieux et d'autre part, ça permet de prendre le sac directement, sans passer par le menu. Mais c'est bien sûr une option facultative.

D'où mon interrogation sur le ShowRestMenu ;)

Sinon merci pour toutes ses suggestions. Ca marche impec !
Juste Activate... Que je suis bête :D
PNOG
PNOS

On a toujours besoin d'un petit PNO chez soi (merci Neluche)




0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)