Aller au contenu


[résolu] Balade Nocturne


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

#1 Kaludas

Kaludas

    Mais je suis où bordel !?


Posté 21 février 2010 - 16:54

Bonjour Wiwilandais(es),

J'aimerai ajouter dans mon mod Manoir du Nécromencien des squelettes et autres créatures de ce type qui se balade la nuit entre les tombes. Mais seulement la nuit. Es ce qu'un script peut faire sa ?

Merci,
"Deus Vult !"
- Templier, Bataille de Kherak

#2 lnari

lnari

    Chocapic Cortexicus


Posté 21 février 2010 - 17:04

Je sais pas sur Oblivion, mais sur Morrowind, il suffisait de faire un test sur GameHour et Enable/Disable, genre :

If ( Gamehour > 7 )
If ( Gamehour < 21 )
If ( GetDisabled == 0 )
Disable
Endif
Return
Endif
Endif

If ( GetDisabled == 1 )
Enable
Endif

Tu vois l'idée ?

#3 DracoKanon

DracoKanon

Posté 21 février 2010 - 17:43

ce qui donnerai pour Oblivion selon moi

Citation

If ( GetDisabled == 0 )
................If ( Gamehour > 7 ) && ( Gamehour < 21 )            
....................Disable
................Endif
Else
................Enable
Endif
return

Auteur des Oblimodules:
-Eye'Sup
-Race Mazkens et Aureals(Saint Doré et Vil Seducteur)
-Race Falmers et Maormers(Elfes des Neiges et Tropicaux)

#4 Shadow she-wolf

Shadow she-wolf

    Le katana de la GBT


Posté 21 février 2010 - 18:05

@DracoKanon: normalement, avec ton script, les squelettes seront toujours en "enable". Car dès que le test "getdisable == 0" sera faux (donc dès que le squelette est bien disablé), tu lui appliques un enable.

Il faudrait intervertir tes deux première lignes (comme c'était le cas dans le script d'Inari), comme ceci:
if ( Gamehour > 7 ) && ( Gamehour < 21 ) 
	If ( GetDisabled == 0 )
		Disable
	EndIf
Else
	Enable
Endif

A noter que le script d'origine d'Inari fonctionne très bien sur Oblivion. :jester:
Il utilise juste un Return au lieu de la structure de type Else, ce qui est sûrement plus propre, bien que moins intuitif...


Par contre, si le joueur se trouve sur place pendant l'heure de changement, ça risque d'être moche.
Donc soit il faudrait tester la présence du PJ, soit jouer un effet magique un peu comme l'invocation d'Haskill.

#5 DracoKanon

DracoKanon

Posté 21 février 2010 - 18:24

Voir le messageShadow she-wolf, le 21.02.2010 à 18:19, dit :

Par contre, si le joueur se trouve sur place pendant l'heure de changement, ça risque d'être moche.
Donc soit il faudrait tester la présence du PJ, soit jouer un effet magique un peu comme l'invocation d'Haskill.
c'est pas faux
en ajoutenent la ligne:
PlayMagicShader Visuals Invocation
?
Auteur des Oblimodules:
-Eye'Sup
-Race Mazkens et Aureals(Saint Doré et Vil Seducteur)
-Race Falmers et Maormers(Elfes des Neiges et Tropicaux)

#6 lnari

lnari

    Chocapic Cortexicus


Posté 21 février 2010 - 18:45

Plus propre ou pas, je sais pas, juste une logique différente. J'ai tendance à mettre les conditions "bloquantes" au début avec des Return (dans le style du If MenuMode Return) et de laisser les résultats plus bas, si rien n'a bloqué. En fait dans les très gros scripts, ça permet d'éviter des If trop embriqués, y'a juste des If sur les conditions restrictives avec Return, puis le reste du script qui est le fonctionnement normal. Je préfère.

A ce compte là :

If ( GetDistance Player > 4096 )
If ( Gamehour > 7 )
If ( Gamehour < 21 )
If ( GetDisabled == 0 )
Disable
Endif
Return
Endif
Endif
Endif

If ( GetDisabled == 1 )
Enable
Endif

Comme ça, on disable que si le player est hors de portée. S'il est dans la zone, de toutes façons, il finira soit par se battre, soit par s'éloigner, entraînant la disparition du squelette d'une façon ou d'une autre, dans un délai assez court... :jester:

Modifié par lnari, 21 février 2010 - 18:49.


#7 Kaludas

Kaludas

    Mais je suis où bordel !?


Posté 21 février 2010 - 19:46

Bonsoir à tou(te)s,

Je vois pas mal de réponse sur mon sujet et j'en suis très content  :jester:

Donc si je comprends bien sa serai le dernier code que l'on me donne qui serai le mieux (celui d'Inari)
"Deus Vult !"
- Templier, Bataille de Kherak

#8 Shadow she-wolf

Shadow she-wolf

    Le katana de la GBT


Posté 21 février 2010 - 19:52

Voir le messageDracoKanon, le 21.02.2010 à 18:38, dit :

en ajoutenent la ligne:
PlayMagicShader Visuals Invocation
?
L'idée est là, mais c'est un peu plus compliqué que cela.

J'avais, pour un projet, fait un simulacre de sort de téléportation pour un PNJ, j'avais donc particulièrement soigné la disparition du PNJ, pour cela je m'étais inspirée du script d'Haskill.


Si j'adapte à la situation, on aurait ceci (je crois):
Float Fadetimer
Float HaskillAlpha
Short FadeOnce

Begin GameMode

if (fadeOnce == 1 )
	Set HaskillAlpha to .9
	Set FadeTimer to 4
	SetActorAlpha HaskillAlpha
	set fadeOnce to 2
endif

if ( FadeOnce == 2 )
	if ( FadeTimer > 0 )
		Set FadeTimer to ( FadeTimer - GetSecondsPassed )
		Set HaskillAlpha to ( HaskillAlpha - .01 )
		SetActorAlpha HaskillAlpha
	elseif ( FadeTimer <= 0 )
		Set HaskillAlpha to 0
		Set FadeOnce to 3
		Set FadeTimer to 0
	endif
endif

if ( fadeOnce == 4 )
	SetGhost 1
	Set HaskillAlpha to 0.9
	Set FadeTimer to 4
	SetActorAlpha HaskillAlpha
	set fadeOnce to 5
endif

if ( FadeOnce == 5 )
	if ( FadeTimer > 0 )
		Set FadeTimer to ( FadeTimer - GetSecondsPassed )
		Set HaskillAlpha to ( HaskillAlpha - .01 )
		SetActorAlpha HaskillAlpha
	elseif ( FadeTimer <= 0 )
		Set HaskillAlpha to 0
		Set FadeOnce to 0
		Set FadeTimer to 0
		Disable
	endif
endif

If ( Gamehour > 7 ) && ( Gamehour < 21 )
	If ( GetDisabled == 0 ) && ((FadeOnce == 0) || (FadeOnce == 3))
		Set FadeOnce to 4
		stoplook
		pme STRP
	Endif
	Return
Endif

If ( GetDisabled == 1 ) && (FadeOnce == 0)
	Set FadeOnce to 1
	pme STRP
Endif

End
Tout de suite, c'est violent comme script.
Et encore, je ne suis pas certaine qu'il fonctionne correctement en l'état...

Je crois qu'il vaut mieux préférer la méthode d'Inari pour ne pas se prendre la tête. :jester:


Citation

Plus propre ou pas, je sais pas, juste une logique différente.
C'est plus propre dans le sens où le moteur de script n'ira pas lire toute une partie du script. Ensuite, ça dépend des proportions...

#9 Kaludas

Kaludas

    Mais je suis où bordel !?


Posté 21 février 2010 - 20:30

Alors j'ai assayer ton script Inari :

ScriptName MNCreatureScript


If ( GetDistance Player > 0 )
   If ( Gamehour > 7 )
	  If ( Gamehour < 21 )
		 If ( GetDisabled == 0 )
		 Disable
		 Endif
	 Return
	 Endif
   Endif
Endif

If ( GetDisabled == 1 )
Enable
Endif

Et ma ligne 3 ne marche pas
"Deus Vult !"
- Templier, Bataille de Kherak

#10 Shadow she-wolf

Shadow she-wolf

    Le katana de la GBT


Posté 21 février 2010 - 20:33

Tu as oublié de définir les blocs.

Les "Begin GameMode" et autres "End".

#11 beeratwork

beeratwork

Posté 23 février 2010 - 12:18

scn DisableBetween07And21

Begin GameMode
; Si c'est l'heure de s'évapporer
	if (GameHour > 7 && GameHour < 21)
; Si actif
		if (GetDisabled == 0)
	; Si a distance suffisante
			if (GetDistance player >= 512)
				Enable
			endif
		endif
; Si c'est l'heure d'apparaître
	else
; Si inactif
		if (GetDisabled == 1)
	; Si a distance suffisante
			if (GetDistance player >= 512)
				Disable
			endif
		endif
	endif
End


#12 lnari

lnari

    Chocapic Cortexicus


Posté 23 février 2010 - 12:22

Tu oublies aussi, Kaludas, que If GetDistance Player > 0 ça sert à rien et c'est automatiquement vrai. Le but c'est de vérifier si le joueur est assez loin pour faire disparaître le squelette au matin sans que ça doit trop flag. En général pour ce genre de truc je mets 4096 de distance.

#13 beeratwork

beeratwork

Posté 23 février 2010 - 15:59

C'est sûr qu'à 4096 on ne voit pas une créature se balader au loin ?

#14 Kaludas

Kaludas

    Mais je suis où bordel !?


Posté 23 février 2010 - 16:57

Bonjour,

J'ai preferer mettre 0 meme si c'est un peu bizarre

sinon Shadow she-Wolf ma aider pour de que j'avais oublier

Je [résolu]
"Deus Vult !"
- Templier, Bataille de Kherak

#15 Shadow she-wolf

Shadow she-wolf

    Le katana de la GBT


Posté 23 février 2010 - 17:24

Voir le messageKaludas, le 23.02.2010 à 17:11, dit :

J'ai preferer mettre 0 meme si c'est un peu bizarre
Ça ne sert à rien de tester la distance dans ce cas.

"GetDistance > 0" sera toujours vrai...

#16 Dorjé

Dorjé

    3e433ème effet d'un papillon tibétain


Posté 23 février 2010 - 17:28

Comme ça, à la va vite je dirais oui, puisque sous fallout3 notamment de nombreux mods rajoutent des goules, mais uniquement la nuit. Je serais toi j'irai faire un saut sur leur script pour bvoir comment il est construit, 99% de chance qu'il soit identique pour Oblivion :shocked:
Essayer ne veut rien dire. Fais le ou ne le fais pas ! (maître Yoda :) )

Lien : PROJET MORROWIND 3E433 (Morrowind dans Oblivion !)

#17 Kaludas

Kaludas

    Mais je suis où bordel !?


Posté 23 février 2010 - 17:34

Voir le messageShadow she-wolf, le 23.02.2010 à 17:38, dit :

Voir le messageKaludas, le 23.02.2010 à 17:11, dit :

J'ai preferer mettre 0 meme si c'est un peu bizarre
Ça ne sert à rien de tester la distance dans ce cas.

"GetDistance > 0" sera toujours vrai...

Mais j'ai jamais dis que je voulais tester une distance

Je veux juste faire apparaitre des squelettes la nuit
"Deus Vult !"
- Templier, Bataille de Kherak

#18 Shadow she-wolf

Shadow she-wolf

    Le katana de la GBT


Posté 23 février 2010 - 17:57

Voir le messageKaludas, le 23.02.2010 à 17:48, dit :

Mais j'ai jamais dis que je voulais tester une distance

Je veux juste faire apparaitre des squelettes la nuit
...Alors pourquoi avoir placé un test ?


Copier/coller bêtement n'est pas une bonne solution...




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

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