Aller au contenu


Apprendre Un Sort Par Script


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

#1 Gwen Armor

Gwen Armor

Posté 18 février 2006 - 11:29

Bonjour à tous,
Je rencontre un petit soucis avec ce script.

Le Pj trouve une clef, et quand il s'en saisit, il apprend un sort (mais qu'une fois), puis la clef doit se mettre dans l'inventaire pour son usage normal, càd ouvrir une porte.

Sauf qu'actuellement, je ne peux pas ramasser la clef, j'apprends juste le sort.

:D

begin Gwen_LearnSpell_Levitate
; Script  du dôme de l'Alchimiste

	short doOnce

if ( menumode == 1 )
		return
	endif

if ( OnActivate == 1)
	If (doOnce == 0)
		Playsound "mysticism hit"
   		messagebox "Vous apprenez un sort de lévitation"
   		player->AddSpell, "Gwen_levitate"
		set doOnce to 1
	endif
endif

end Gwen_LearnSpell_Levitate

Merci.
Gwen Armor.
---------------------------------------------
L'essentiel est invisible aux yeux
---------------------------------------------

#2 Fandorn Delavie

Fandorn Delavie

    Défilé de mods


Posté 18 février 2006 - 11:34

begin Gwen_LearnSpell_Levitate

short OnPCAdd

if ( OnPCAdd == 1 )
	Playsound "mysticism hit"
	messagebox "Vous apprenez un sort de lévitation"
	player->AddSpell, "Gwen_levitate"
	set OnPCAdd to 0
endif

end

Je te conseil l'utilisation de OnPCAdd :) c'est plus simple :D
Je ne suis pas sur de l'effet si on ajoute plusieurs fois un meme sort au PJ.
Peut etre serait il sage de tester la presence de ce sort avant de l'ajouter... mais peut etre que ca ne change rien :)
Modules bêta sur True Morrowind en attendant d'être sur wiwiland... Deja des millions de téléchargements :)

#3 Angora

Angora

    Danse avec les bugs


Posté 18 février 2006 - 11:49

Le script de Fandorn est plus simple, effectivement, mais à titre indicatif, la correction de ton script serait toute bête :

begin Gwen_LearnSpell_Levitate
; Script  du dôme de l'Alchimiste

short doOnce

If ( MenuMode == 1 )
	Return
Endif

If ( OnActivate == 1)
	If (doOnce == 0)
		Playsound "mysticism hit"
   		messagebox "Vous apprenez un sort de lévitation"
   		player->AddSpell, "Gwen_levitate"
		Set doOnce to 1
		Activate; sinon il ne se passe rien de plus, la clef n'est "activée" donc pas ramassée.
	Else
		Activate; même chose qu'en haut, on ne pourrait sans ça ramasser la clef une seconde fois.
	Endif
Endif

End Gwen_LearnSpell_Levitate


Quand on utilise If OnActivate dans un script, on court-circuite l'activation normale, donc si l'on veut également qu'il y ait une activation normale, il faut rajouter Activate. C'est comme cela que fonctionnent les scripts de portes inouvrables ou d'objets inramassables, dont voici un exemple simple :

Begin Inactivation

If ( OnActivate )
EndIf

End

Voilà. On met ça sur une porte, et impossible de l'ouvrir. On met ça sur un objet, et on ne peut plus le ramasser (façon simple de transformer vite fait un misc item en static...), on met ça sur un PNJ et on ne peut plus lui parler. Ni le fouiller une fois mort ou quand on est en mode pickpocket.


Quand à ce qui est d'apprendre un même sort plusieurs fois de suite, aucun problème, si ce n'est que ça sera agaçant d'avoir sans arrêt la messagebox...

Donc on pourrait faire ceci :

Begin Gwen_LearnSpell_Levitate

short OnPCAdd

If ( MenuMode == 1 )
	Return
Endif

If ( OnPCAdd == 1 )
	If ( Player->GetSpell "Gwen_levitate" == 0 )
		Playsound "mysticism hit"
		messagebox "Vous apprenez un sort de lévitation"
		Player->AddSpell, "Gwen_levitate"
		set OnPCAdd to 0
	EndIf
EndIf

End

Ou bien :

begin Gwen_LearnSpell_Levitate
; Script  du dôme de l'Alchimiste

If ( MenuMode == 1 )
	Return
Endif

If ( OnActivate == 1 )
	If ( Player->GetSpell "Gwen_levitate" == 0 )
		Playsound "mysticism hit"
   		messagebox "Vous apprenez un sort de lévitation"
   		player->AddSpell, "Gwen_levitate"
		Activate; sinon il ne se passe rien de plus, la clef n'est "activée" donc pas ramassée.
	Else
		Activate; même chose qu'en haut, on ne pourrait sans ça ramasser la clef une seconde fois.
	Endif
Endif

end Gwen_LearnSpell_Levitate

Je préfère ça à l'utilisation de doOnce, on est sûr que rien ne pourra fausser le script. (Par exemple, un bug de doublon faisant qu'une deuxième clef apparait, le joueur connaîtrait déjà le sort mais on lui dirait quand même qu'il l'apprend encore avec le script à doOnce, mais pas si le test est fait sur l'existence du sort dans le grimoire du perso.)

Modifié par Angora, 18 février 2006 - 11:58.

Le saviez-vous ?

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 Gwen Armor

Gwen Armor

Posté 18 février 2006 - 11:52

Merci Fandorn,  :D

Je vais essayer avec OnPcAdd, comme tu me le proposes. Cela semble bien.

Tu me proposes aussi de tester la présence du sort avant de l'ajouter.
En fait, c'est un sort de lévitation avec un Id perso, ce qui fait que le pj ne peut pas déjà le posséder. Je dois donc mal comprendre ton conseil, est-ce qu'il faut mettre le test pour les autres fois ou il prendra la clef par exemple après l'avoir posé hors inventaire ?

@+ Gwen.

[Edit] Merci Angora, ton explication très claire va m'être utile pour beaucoup de scripts.

Modifié par Gwen Armor, 18 février 2006 - 11:55.

---------------------------------------------
L'essentiel est invisible aux yeux
---------------------------------------------

#5 Fandorn Delavie

Fandorn Delavie

    Défilé de mods


Posté 18 février 2006 - 12:01

Voir le messageGwen Armor, le 18.02.2006 à 11:52, dit :

Tu me proposes aussi de tester la présence du sort avant de l'ajouter.

Reponse dans le poste d'angora :D

if ( player->Getspell ...
Modules bêta sur True Morrowind en attendant d'être sur wiwiland... Deja des millions de téléchargements :)

#6 Gwen Armor

Gwen Armor

Posté 18 février 2006 - 12:30

Merci Angora & Fandorn,
Vos conseils sont une grande aide, j'apprends beaucoup de vos réponses.
J'ai testé à fond le script final d'Angora avec test sur la présence du sort, il marche à la perfection.  :D

Plus que quelques petites choses et le mod pourra partir en test...

Gwen
---------------------------------------------
L'essentiel est invisible aux yeux
---------------------------------------------




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

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