Aller au contenu


Désesperé (script Pour Gestion Du Sommeil) [résolu]


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

#1 Helghast

Helghast

Posté 12 avril 2006 - 02:35

Bonsoir.
Bon, je sais qu'il en éxiste déjà d'autres, mais comme aucun dne me convenait complètement, j'ai voulu créer un mod pour gérer le sommeil. Et là je coince : mon script enregistre les heures qui passent, et au bout de x heures, on recoit des malus. Ensuite je voulais faire en sorte que chaque heure passée à dormir se retir du nombre d'heures comptés...et là ca coince. J'ai essayé je ne sais combien de solutions, mais rien à faire : dans le meilleurs des cas, le décompte du temps "ralenti" (et le pire c'est que je comprend absolument pas pourquoi -_- ). Voilà le script :

Spoiler

Si quelqu'un a une solution, je prend :D
Merci d'avence ^^

PS : les messagesbox sont là pour des raisons de test

Modifié par Helghast, 12 avril 2006 - 21:30.

Chaque être vivant mérite le respect, car aucun n'est à blâmer pour sa naissance.

#2 Dradeel

Dradeel

    Dieu du script


Posté 12 avril 2006 - 15:17

Je vois déjà 2 petites erreurs sur le script :

Déjà, tu a pas déclaré de "float fQuestDelayTime" en ademettant que ton script soit attaché a une quete. sans ca, il va s'executer toute les 5 secondes, donc tu va recuperer un temps d'heure de sommeil faux.


....
float fQuestDelayTime

Begin OnAdd player
set fQuestdelayTime to 0.01
.....
Comme ca il s'exectutera a chaque frame.

ensuite tu fais
Begin MenuMode
	If (IsPCSleeping == 1)
		Set DoneSleeping to 1
		Set HeuresDormies to (GetPCSleepHours * 2)
	Endif
End
Hors ce que ca va faire, a chaque exectution de script, ca va écraser ton heuresdormies par une valeur inferieure.. Remplace le donc par ca


Begin MenuMode
	If (IsPCSleeping == 1 && DoneSleeping == 0 );Si on dort, et qu'on est pas rentré dans la boucle
		Set DoneSleeping to 1
		Set HeuresDormies to GetPCSleepHours
	Endif
End


#3 DaesDemon

DaesDemon

Posté 12 avril 2006 - 16:21

Pis t'es sur que tu pourrais pas remplacer :

(A propos faut que ton code soit appele au moins une fois par jour, sinon, je crois que ca marchera pas)

Citation

If (JourBase != GetDayOfWeek)
                Set HeuresNoSleep to (HeuresNoSleep + GetCurrentTime + (24 - HeureBase))
                Set JourBase to GetDayOfWeek
                Set HeureBase to GetCurrentTime
                Return
            ElseIf (JourBase == GetDayOfWeek)
                If (GetCurrentTime >= HeureBase + 1)
                    If (GetCurrentTime < HeureBase + 2)
                        Set HeuresNoSleep to HeuresNoSleep + 1
                        Set HeureBase to GetCurrentTime
                        MessageBox "1 heure passée !"
... et tous tes if
par
short HeuresNoSleepSinceLastCheck
set HeuresNosleepSinceLastCheck to getCurrentTime - HeureBase
if (HeuresNoSleepSinceLastCheck<0) 
	set HeuresNoSleepSinceLastCheck to HeuresNoSleepSinceLastCheck + 24
endif
set HeureNoSleep to HeureNoSleep + HeuresNosSleepSinceLastCheck
set HeureBase to GetCurrentTime
MessageBox "%.0f heure(s) passee(s)',HeuresNoSleepSinceLastCheck


Ou un truc comme ca. Ca me parait bien complique ton truc :woot

#4 Helghast

Helghast

Posté 12 avril 2006 - 21:25

Merci pour ces réponses !
D'autant plus que j'ai conscience que mon script n'est pas forcement très accessible de par son organisation...

En fait, ce script n'est pas associé à une quête, mais à un objet, qui doit être dans l'inventaire (SMPierreSommeil) et pour ce qui est du décompte du temps, ca fonctionne parfaitement ( j'ai effectué je ne sais combien de dizaines de tests :lol: )

Je vais essayer de corriger mon script avec vos conseils, merci encore !

Edit : Eh bien...ca y est, j'ai enfin réussi ! Finalement, j'ai rajouté quelques if par ci par la, et après quelques réactions absolument étranges, j'ai désormais un script qui fonctionne parfaitement : le temps qui passe est engrangé dans une variable, qui lorsqu'elle atteint un certain seul inflige divers malus, et toutes les heures de repos sont retirées de cette variable, et les malus décroissent ainsi progressivement.

Voilà, je met le code ici, au cas ou quelqu'un en aurait l'utilité, et aussi pour voir si quelqu'un d'autre aurait quelques idées pour en réduire la taille sans en changer les effets ^^ (447 lignes quand même...)

notes : Cette version du script a été nettoyée de tous les messages de tests. Les sorts SMFatigue1 à 10 sont les sorts qui infligent les malus au personnage. Ce script ne prend effet que tant que "Pierre de Fatigue" (SMPierreFatigue) se trouve dans l'inventaire du joueur.

Spoiler

Modifié par Helghast, 12 avril 2006 - 21:27.

Chaque être vivant mérite le respect, car aucun n'est à blâmer pour sa naissance.

#5 DaesDemon

DaesDemon

Posté 12 avril 2006 - 22:31

Ben vi voir mon post precedent, tu changes tout tes if en un seul code de trois ligne :)

#6 Jabal

Jabal

Posté 13 avril 2006 - 17:26

helgast , si tu fait un petit mod sur le repos et sur la récup de points de vie ca m'interesse (si tu trouve un moyen efficace d'obtenir un repos facille en exterieur ) vu que tu a l'air motivé  :D

#7 Helghast

Helghast

Posté 13 avril 2006 - 21:58

DaesDemon dit :

Ben vi voir mon post precedent, tu changes tout tes if en un seul code de trois ligne

Oui c'est vrai, pardonne moi :lol: En fait, je m'étais dit "la nuit porte conseil", et en effet, ca a été le cas, ce qui a fait que dés que j'ai pu je me suis lancé sur mon script pour y apporter les modifications dont j'avais eu l'idée, et j'ai laissé de coté ta remarque (ce qui est idiot quand on vient ici demander de l'aide...). Maintenant que mon script marche, je vais essayer d'appliquer ton code en tenant compte des modifications déjà apprtées ^^ merci beaucoup encore une foi :P

Sinon Jabal, en fait je suis en train de plancher sur un système de plugins "réalistes". J'ai prévu de faire :
- gestion des blessures (90%)
- gestion du sommeil (75%)
- gestion de la faim (50%)
- gestion de la nage en armure (0%)

Lorsque j'aurais terminé le tout, je proposerais à la BAL un set de plugins. Voilà ^^

Modifié par Helghast, 13 avril 2006 - 22:00.

Chaque être vivant mérite le respect, car aucun n'est à blâmer pour sa naissance.




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

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