Aller au contenu


Demande De Scripts: Ingredient Dans Coffre = Action !


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

#1 SiNdA

SiNdA

Posté 04 février 2006 - 12:53

salut salut !!

voilà j'ai besoin d'un script assez facile à la base mais qui est ... difficile  :monstre:

j'explique :

si une globale ( on va la nommer Alpha ) est à 0, rien ne se passe, après un dialogue elle passe à 1.

Alpha == 1

dès lors, lorsqu'on place une série d'ingredients dans un coffre bien précis, Alpha passe à 2, et la personne qui a fait passer Alpha à 1 tout à l'heure change de dialogue puisque Alpha est à 2, et à le fin de ce nouveau dialogue Alpha passe à 3,

Alpha == 3

dès lors, on place une aute série d'ingrédient dans le même coffre, mais les ingrédients qu'on avait placé dedans auparavant ont disparus ! si la nouvelle série introduite dans le coffre est bonne, Alpha passe à 4, et le dialogue change à nouveau, et à la fin de ce nouveau dialogue, Alpha passe à 5, etc... etc ... etc...

donc voilà en fait il faudrait un script pour le coffre, celui-ci detectera si les bons ingredients sont dans le coffre:

si oui il change Alpha, et la série dans le coffre disparaît
si non le joueur perd 50% de sa santé, et la série du coffre dispararaît ...

ouaaaaa c'est dur en me relisant j'ai l'impression que c'est du chinois !!

voilà merci j'ai uniquement besoin du script du coffre pour le rete je sais comment faire,

voilà les references :

une série d'ingrédient: ing1 ; ing2 ; ing3
nouvelle série : 2ing1 ; 2ing2 ; 2ing3
etc ...

globale Alpha ( il faudrait me dire que respecter à sa création merci  :assassin: )

et voilà merci bonne lecture j'espère que ce n'est pas trop compliqué :paladin:

merci bonne appétit

#2 Fandorn Delavie

Fandorn Delavie

    Défilé de mods


Posté 04 février 2006 - 17:11

begin _script_coffre

if ( Alpha == 1 )
	 if ( GetItemCount, "ing1" != 1 )
		  return
	 endif	 
	 if ( GetItemCount, "ing2" != 1 )
		  return
	 endif	 
	 if ( GetItemCount, "ing3" != 1 )
		  return
	 endif	 
	 RemoveItem, "ing1", 1
	 RemoveItem, "ing2", 1
	 RemoveItem, "ing3", 1
	 Set Alpha to 2
endif

if ( Alpha == 3 )
	 if ( GetItemCount, "2ing1" != 1 )
		  return
	 endif	 
	 if ( GetItemCount, "2ing2" != 1 )
		  return
	 endif	 
	 if ( GetItemCount, "2ing3" != 1 )
		  return
	 endif	 
	 RemoveItem, "2ing1", 1
	 RemoveItem, "2ing2", 1
	 RemoveItem, "2ing3", 1
	 Set Alpha to 4
endif

end

Ce script permet de detecter qu'un bonne série est placé dans le coffre ( les quantité doivent etre respectée ), mais ne permet pas de detecter si celle si est mauvaise.

En effet, il est difficile ( voir impossible ) de detecter le contenu d'un coffre , car il faudrai tester tout les element existant du jeu ( et y'en a beaucoup )

Cependant :

Il est possible de verifier le contenu lorsque le joueur referme le coffre. Si celui ci ne contien pas les bon ingrediant, il se "vide" et blesse le PJ.

Pour faire disparaitre la totalité du contenu d'un coffre, il faut faire disparaitre le coffre et en placer un tout neuf ( voir script poubelle )

Il est possible de detecter quand le PJ est en train de regarder le contenu du coffre :
C'est le cas a partir du moment ou il a "activé" ce coffre, et tant que le jeu est en "menumod"


begin _script_coffre

short CoffreOuvert
short MauvaiseRecette


if ( GetDisabled == 1 ); si le coffre a été disablé, on l'efface de la memoire
	 SetDelete 1
	 return
endif

If ( OnActivate == 1 )
	 Activate
	 Set CoffreOuvert to 1
endif
 
if ( CoffreOuvert == 0 ); si le coffre n'est pas ouvert
	 return
endif

if ( MenuMode == 1 ); si on est toujours en mod menu - le coffre est donc toujours ouvert
	 return
endif

; test le contenu du coffre en fonction de Alpha
if ( Alpha == 1 )
	 if ( GetItemCount, "ing1" != 1 )
		  Set MauvaiseRecette to 1
	 endif	 
	 if ( GetItemCount, "ing2" != 1 )
		  Set MauvaiseRecette to 1
	 endif	 
	 if ( GetItemCount, "ing3" != 1 )
		  Set MauvaiseRecette to 1
	 endif	 

	  if ( MauvaiseRecette == 1 )
		 player->modCurrentHealth, -10; j'ai mi 10 PV car j'avais la flemme de calculer 50%;)
	  else
		 Set Alpha to 2
	  endif

	  PlaceAtMe, 1, 0, 0, "nouveau coffre"
 	  Disable
	  Return
endif

if ( Alpha == 3 )
	
................

endif

end

Ce 2eme script ne detectera pas si tu as mis des mauvais ingredients dans le coffre ... mais il testera si les ingredients nécessaires sont dans le coffre lors de la fermeture de celui ci, et dans le cas contraire, fera bobo au PJ.
Dans tout les cas, lors de la fermeture du coffre, il sera remplacé par un nouveau coffre vide
Modules bêta sur True Morrowind en attendant d'être sur wiwiland... Deja des millions de téléchargements :)

#3 a3jv

a3jv

    ... à 4 je reviens.


Posté 04 février 2006 - 17:47

J'ai aussi étudié un script mais avec les mêmes conclusions que Fandorn Delavie :
j'ai oté 20 pv en cas d'erreur le % c'est galère.
Par contre j'ai zappé le vidage du coffre en cas d'erreur (c'est encore plus galère). La solution la plus simple serait que dans les dialogues on demande au PJ de retirer les mauvais ingrédients s'il s'est trompé et de recommencer s'il le veut, sinon on peut aussi rajouter des messages box genre "vous avez fait une errreur, videz le coffre et recommencez."
Begin mon_coffre

Short activation

if ( OnActivate == 1 )
	activate
	set activation to 1
endif

if ( MenuMode == 1 )
	return
endif

if ( activation == 1 )
	if ( Alpha == 1 )
		if ( GetItemCount ing1 == 1 )
			if ( GetItemCount ing2 == 1 )
				if ( GetItemCount ing3 == 1 )
					set Alpha to 2
					RemoveItem ing1 1
					RemoveItem ing2 1
					RemoveItem ing3 1
					else
					Playeur->ModCurrentHealth -20
				endif
			endif
		endif
		set activation to 0
	endif
endif

if ( activation == 1 )
	if ( Alpha == 3 )
		if ( GetItemCount 2ing1 == 1 )
			if ( GetItemCount 2ing2 == 1 )
				if ( GetItemCount 2ing3 == 1 )
					set Alpha to 4
					RemoveItem 2ing1 1
					RemoveItem 2ing2 1
					RemoveItem 2ing3 1
					else
					Playeur->ModCurrentHealth -20
				endif
			endif
		endif
		set activation to 0
	endif
endif



End

Pour la globale je crois qu'il faut aller à Global, faire "new", puis la noter avec value 0 dans ce cas.

Edit : J'ai déplacé les lignes "MenuMode" car le "retourn" ne revient qu'au  "if" précédent il me semble et pas au début du script.

Modifié par a3jv, 04 février 2006 - 17:56.

Les choses n'ont que l'importance ou la valeur qu'on leur donne.




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

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