Sommeil Interrompu & Message Quand On Sort D'une Cell
#1
Posté 27 décembre 2005 - 16:59
mon mod est en progression je sens que celui-ci je vais le réussir je m'y investi à foooond !! ( même si personne ne peut/veut s'associer à moi lol )
voilà alors j'ai encore besoin de scripts ( et c'est pas fini ! ) :
Je voudrais avoir un script qui fait que lorsque je rentre dans la cellule 9:9 et 10:9, je peux ressortir à la seule contrainte qu'un garde m'interpelle et me fasse passer un message, ensuite libre à moi de rester ou partir ! mais voilà, enfait c'est pas un garde c'est un messagebox quoi, c'est plus simple et c'est ce que je souhaite
donc voilà si vous avez une idée merci à vous ^^
2ème script, enfait là c'est plus compliqué, il faut que j'explique la scène:
lorsque ce garde me dit que je devrais rester car une tempête risque de se lever, je vais me reposer cans une auberge, et je m'endors, et à ( exemple ) 2:00 du mat, mon sommeil est interrompu et je retrouve un gars ( id: HOMME ) dans ma chambre, il me entame le dialogue
j'attends vos réponses avec impatience j'étudie en ce moment la structure des scripts, les fonctions, etc ... les scripts que je demande là pourront m'aider à mieux comprendre ! ^^
Merci
°°Merci
°°°°Merci !
~~~
#2
Posté 27 décembre 2005 - 17:59
Si c'est lors d'un dialogue avec un PNJ, il serait plus simple d'utiliser le champ "Result" d'une entrée de dialogue.
Pour ton 2e script, place l'HOMME dans l'endroit de la chambre souhaité, et adjoins lui ce script. N'hésite pas à poser tes questions.
BEGIN Script_2___sur_HOMME short doOnce if ( doOnce == 1 ) Return endif if ( gamehour == 2 ); gamehour est une varibale globale gérée toute seule qui donne l'heure en cours. if ( GetPCSleep == 1 ) PositionCell x, y, z, 0, "ID_CELL_AUBERGE" WakeUpPc ForceGreeting Set doOnce to 1 endif endif END
Il faut que écrives toi-même les coordonnées x, y, z, en mettant celles uù tu veux que le PNJ soit téléporté dans ta chambre.
Modifié par MysticalShadow, 28 décembre 2005 - 12:24.
#3
Posté 27 décembre 2005 - 18:07
Pour le premier, utilise CellChanged et GetPCCell.
short dedans short doOnce if ( CellChanged ) if ( dedans == 1 ) if ( doOnce == 0 ) MessageBox "Coucou, blablablabla..."; mets ta messagebox ici set doOnce to 1 endif endif endif If ( GetPCCell 9, 9 ) set dedans to 1 ElseIf ( GetPCCell 10, 9 ) set dedans to 1 Else set dedans to 0 Endif
Voilà, tu crée un nouvel activateur et tu colle ce script dessus, puis tu place cet activateur dans les deux cellules concernées.
Bon, pour le deuxième script, quelqu'un d'autre te l'a déjà fait, mais sinon je t'aurais dit juste de regarder le script des assassins de Tribunal...
En français, il n'y a jamais, jamais, JAMAIS, J-A-M-A-I-S, de cédille à un 'c' devant un 'e', un 'i' ou un 'y'. Jamais. Sans aucune exception. Pas la moindre. Zéro. Cédille devant e, i ou y = faute. Un point, c'est tout, c'est comme ça, ça a toujours été comme ça, et ça le sera toujours.
#4
Posté 28 décembre 2005 - 11:32
Mystical shadow:
en fait, le personnage ( normalement ) à l'étage en bas devant le bar, la nuit il est censé aller vers sa chambre ( normal ) et donc dans MA chambre, il n'y a personne, je m'endore, et hop sommeil interrompu et cet homme se trouve devant moi !
en fait:
LUI: bar ---------------------------> ma chambre
MOI: chambre avant sommeil ---> chambre après sommeil interompu
sinon angora je suis désolé mais je comprends pas bien ce script, est-ce que je dois modifier quelques chose là-dedans ( oui le message lol ) mais à part ça ?
Merci merci
~~~~~~~
#5
Posté 28 décembre 2005 - 12:24
#6
Posté 28 décembre 2005 - 14:07
SiNdA, le 28.12.2005 à 11:32, dit :
Bah, bien sûr. Pour commencer, il faut lui donner un nom (j'ai pas mis les begin et end). J'ai pas non plus mis le classique if ( menumode == 1 ) return endif destiné à éviter que le script ne tourne quand il n'en a pas besoin.
Et bien sûr, si ta messagebox est du genre "cliquez dans l'un des choix proposés" il faut mettre toute la gestion des choix... Là c'est juste la logique du code : tu commence par regarder si le joueur a changé de cellule [if cellchanged == 1 )]. Si oui, est-ce qu'il était dans la zone avant [if (dedans == 1 )] ? Alors, comme il a changé de cellule, il n'est sans doute plus dans la zone maintenant. Bien. L'a-t-on déjà averti [(if (doOnce == 0)]? Si non, on le fait maintenant, et on note qu'il est averti [(set doOnce to 1)].
Bon, tout ça c'est bien gentil, mais encore faut-il avoir du code pour savoir si le joueur est dedans ou non. Donc on regarde ça. Si le joueur est dans une des deux cellules concernées, alors on met dedans à 1, sinon on met dedans à 0.
La raison pour laquelle cette partie-là du code vient après la première (au lieu d'avant, ce qui pourrait sembler plus logique), c'est que sinon dedans passerait à 0 avant de regarder si le joueur à changé de cellule, et donc le code avec la boite de message ne s'exécuterait jamais...
En français, il n'y a jamais, jamais, JAMAIS, J-A-M-A-I-S, de cédille à un 'c' devant un 'e', un 'i' ou un 'y'. Jamais. Sans aucune exception. Pas la moindre. Zéro. Cédille devant e, i ou y = faute. Un point, c'est tout, c'est comme ça, ça a toujours été comme ça, et ça le sera toujours.
#7
Posté 30 décembre 2005 - 00:41
j'mexplique, Nitro a regardé aussi le script, il a changé deux trois trucs, m'as expliqué vite fait pourqauoi et tout, on essaye, ca marche pas ! le gars change pas de place !! c'est abuzé lol j'ai l'impression qu'avec moi aucun script fonctionne !
je mes le script
( le gars doit interrompre mon sommeil à 2h du matin, et rien ne se passe )
Begin 5Aa_poivrotauberge
short DoOnce
if ( DoOnce == 1 )
Return
endif
if ( DoOnce == 0 )
if ( gamehour == 2 )
if ( GetPCSleep == 1 )
5Aa_Poivrot -> PositionCell, 459,289,268,0, "Auberge de Gloire"
WakeUpPc
ForceGreeting
Set DoOnce to 1
endif
endif
endif
End
voilà !
ps: merci pour ton aide nitro c'est super sympa
#8
Posté 30 décembre 2005 - 01:18
Citation
GameHour étant une variable de type float ce genre de test ne peut pas marcher.
#9
Posté 30 décembre 2005 - 12:28
en fait c'est le script du début du mod il me bloque trop lol si j'ai pas ce script le mod ne commencera jamais !
merci
#10
Posté 30 décembre 2005 - 12:40
Il faut donc mieux se servir d'inégalités.
#11
Posté 30 décembre 2005 - 12:48
donc comment il doit faire pour qu'il soit intérrpmpu dans sont sommeil?
peut il mettre au bout de 6 heures qu'il dort, il est réveiller?
#12
Posté 30 décembre 2005 - 14:00
Citation
Pour corriger cela il suffit de changer == en >= ; par contre, si à 2h on ne dort pas, ça se déclenchera ensuite dès qu'on commence à dormir, et il faut corriger le script pour éviter d'être réveillé de suite si on s'endort avant minuit le premier jour.
#13
Posté 30 décembre 2005 - 14:26
Begin 5Aa_poivrotauberge short DoOnce short heuredujeu if ( DoOnce == 1 ) Return endif set heuredujeu to gamehour if ( DoOnce == 0 ) if ( heuredujeu == 2 ) if ( GetPCSleep == 1 ) 5Aa_Poivrot -> PositionCell, 459,289,268,0, "Auberge de Gloire" WakeUpPc ForceGreeting Set DoOnce to 1 endif endif endif End
De cette façon, GameHour est "convertie" en variable entière et ton égalité peut fonctionner.
En français, il n'y a jamais, jamais, JAMAIS, J-A-M-A-I-S, de cédille à un 'c' devant un 'e', un 'i' ou un 'y'. Jamais. Sans aucune exception. Pas la moindre. Zéro. Cédille devant e, i ou y = faute. Un point, c'est tout, c'est comme ça, ça a toujours été comme ça, et ça le sera toujours.
#14
Posté 30 décembre 2005 - 14:27
ca marche génial j'suis content !
mais bon ... vous allez m'etrangler ... parceque c'est pas fini lol
en fait il faudrait que cet homme qui apparaît devant moi me dises quelques chose de PRECIS qu'il ne dis pas à chaque fois qu'on va le saluer, vous voyez ?
voilà pis sinon ben la nuit fodrait qu'il y est plus personne dans l'auberge mais je crois que je vais prendre le script des personnages qui rentrent chez eux la nuit !
~~~~
merci
#15
Posté 30 décembre 2005 - 15:10
SiNdA, le 30.12.2005 à 14:27, dit :
Tu cale ton dialogue spécial avant les autres de ce perso et tu met comme condition en "local" dial = 1 et en result tu met set dial to 0 pour éviter qu'il redise la même chose ensuite.
C'est une solution, il doit y en avoir pas mal d'autres...
#16
Posté 30 décembre 2005 - 19:21
voilà donc merci j'espee quand j'aurais besoin d'autres scripts vous serez là
au final, voici le script que j'ai utilisé :
Citation
short DoOnce
short heuredujeu
if ( DoOnce == 1 )
Return
endif
Set heuredujeu to gamehour
if ( DoOnce == 0 )
if ( heuredujeu == 2 )
if ( GetPCSleep == 1 )
5Aa_Poivrot -> PositionCell, 459,289,268,0, "Ravën, Auberge de Gloire"
WakeUpPc
ForceGreeting
Set DoOnce to 1
endif
endif
endif
End
ensuite j'ai caché le perso qui doit apparaîtr derriere un mur, comme ça on le voit pas, et à 2h precise il apparait et parle !!
c'est classe merci
#17
Posté 30 décembre 2005 - 20:01
ben là j'deviens fou, en fait quand le script s'effectue ils me disent qu'il y a une erreur à mon script, qu'il faut entrer une value line 1 !!!
et ben ...
#18
Posté 31 décembre 2005 - 00:01
D'autre part, est-ce que le fait d'aller dormir dans la chambre de l'auberge se déclenche par un dialogue précis, qui a lieu dans la même cellule que celle où est originellement le PNJ qui apparaît à 2h du matin ? Et est-ce que ce PNJ est unique?
EDIT: je ne sais pas pourquoi tu as rajouté ce test "if ( DoOnce == 0 )", mais il est complètement inutile.
Modifié par MysticalShadow, 31 décembre 2005 - 00:05.
#19
Posté 31 décembre 2005 - 15:02
SiNdA, le 30.12.2005 à 20:01, dit :
ben là j'deviens fou, en fait quand le script s'effectue ils me disent qu'il y a une erreur à mon script, qu'il faut entrer une value line 1 !!!
et ben ...
Et normalement en ligne 1 on a le Begin avec le nom du script, donc il doit y avoir en effet quelque chose.
Hors d'après ton "coller" la ligne 1 est vide, supprime donc cette ligne fantôme...
Je suppose que le prob vient de là.
#20
Posté 02 janvier 2006 - 03:24
bonne nuit
0 utilisateur(s) li(sen)t ce sujet
0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)