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.