Aller au contenu


Script à Usage Limité


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

#1 Ona

Ona

Posté 22 octobre 2009 - 00:15

Bonsoir à tous,

J'ai pour une fois une question intéressante, tout du moins je l'espère, voilà je travaille actuellement sur une petite quête qui n'en est pas réellement une, j'entends par là que je ne souhaite ni entrée de journal ni marqueur de quête puisque celle-ci doit accrocher l'intérêt du joueur, ensuite à lui de s'y intéresser ou bien de ne rien faire, j'utilise donc un script tout ce qu'il y a de plus basique, du type des tombes, on active et hop un message apparait, seul souci, c'est que ce script se répète à l'infini et ne permets plus d'accéder à l'inventaire du NPC...

Merci encore de l'aide,

Citation

Scriptname RCDeadMale01Script

Begin OnActivate
MessageBox "Cet homme est mort depuis peu, l'appât du gain n'est pas le mobile du crime à première vue..."
End

Voilà ça peut paraitre tout bête, j'ai même penser à utiliser les variables mais je ne sais pas trop comment m'en sortir...

Ah oui j'ai mis le script en object, puisque comme dit plus haut, je ne souhaite pas faire de quête dessus...



#2 Kaludas

Kaludas

    Mais je suis où bordel !?


Posté 22 octobre 2009 - 00:41

Bonjour à tou(te)s,

Je ne suis pas du tout expert dans ce domaine mais essaye sa :

Scriptname RCDeadMale01Script

Begin OnActivate Player

if IsActionRef player==1
	 MessageBox "Cet homme est mort depuis peu, l'appât du gain n'est pas le mobile du crime à première vue..."
endif



End

A bientôt,

Modifié par Kaludas, 22 octobre 2009 - 01:10.

"Deus Vult !"
- Templier, Bataille de Kherak

#3 guiguizmo91

guiguizmo91

    Concentrer le laid accroit sa conservation !


Posté 22 octobre 2009 - 12:10

Salut. :mrgreen:

Pour reprendre le script de Kaludas, le IsActionRef n'étant pas inutile:

Scriptname RCDeadMale01Script

Begin OnActivate

if IsActionRef player==1
	 MessageBox "Cet homme est mort depuis peu, l'appât du gain n'est pas le mobile du crime à première vue..."
	 Activate
endif

End

En fait, quand un NPC n'a pas de script attaché, le Activate s'exécute de lui même, mais pas de le cas où le NPC a un script. Il faut donc le préciser dans le script en question.

Si tu souhaites que le message n'apparaisse qu'une fois et qu'ensuite, le NPC soit lootable, tu peux faire ceci:

Scriptname RCDeadMale01Script

Short Done

Begin OnActivate

if (Done == 0)
	 MessageBox "Cet homme est mort depuis peu, l'appât du gain n'est pas le mobile du crime à première vue..."
	 Set Done to 1
else
	 Activate
endif

End

Bon courage pour ton mod. :(

#4 Valerian

Valerian

Posté 22 octobre 2009 - 12:19

Si je peux me permettre une remarque de style, il serait préférable (pour moins de lourdeur) de ne pas faire suivre le verbe de trois compléments. (Ici tu as : "mobile", "crime" et "première vue").

Voilà comment je tournerais la chose : "Cet homme est mort depuis peu. A première vue, l'appât du gain n'est pas le mobile du crime..."

[Fin de la parenthèse normative. T'en fais ce que tu veux.  :mrgreen: ]


A'arab Zaraq Aventures. Mod avorté faute d'obtenir les autorisations nécessaires. Actuellement en pourparler avec le Vatican quant à un éventuel rachat de Bethesda.

«Nous sommes les temps éternels et tous les lieux à la fois. Chaque pas est un souvenir. Si cela était visible, nous apparaîtrions un tissu d'ombres vivantes. » Tarej Vesaas

#5 beeratwork

beeratwork

Posté 22 octobre 2009 - 13:03

Onauasoki, tu dis que tu ne veux pas faire de vrai quête, mais comme je vois les chose, le joueur trouve le cadavre, l'active, puis il choisi ou non de savoir pourquoi => scénario !
Si tu ne veux pas de journal de quête, rien ne t'empêche de faire une quête qui contient des stage de quêtes...vide !

Donc cela te permettra aussi de vérifier par rapport à la quête quand certain activateur peuvent afficher un message et s'activer :

Scriptname RCDeadMale01Script

Begin OnActivate player
 if (MyQuest.GetStage == 0)
  MyQuest.SetStage 1
  MessageBox "Cet homme est mort depuis peu, l'appât du gain n'est pas le mobile du crime à première vue..."
  Activate
 endif
End

Ta quête n'est plus là que pour contrôler que tout se passe bien en séquence.

Si le joueur n'est pas censé toucher le cadavre, mais le voir, tu dépose 2 boites de collision (clic droit sur un activateur pierre de welkynd noire ?? (les pierres ayléide qui lancent des éclairs), puis "use info" et tu va voir dans la cell, il doit y avoir des boites de collisionn verte géantes...)
Ces boitent sont scriptées : la 1er, la plus grande qui englobe le champ de vision

Begin OnTrigger player
 if (MyQuest.GetStage == 0)
  MyQuest.SetStage 1
  MessageBox "Un cadavre... les mouches qui s'en élèvent sont inquiétantes..."
 endif
End

La 2ème boîte :

Begin OnTrigger player
 if (MyQuest.GetStage <= 1)
  MyQuest.SetStage 2; Car la 1ère s'est déjà déclenchée !!!
  MessageBox "Je me sens mal tout à coup. Une de ces sales mouches m'a piqué ! Mais je me suis vengé ! Je l'ai décapitée avec mes dents !"
  player.AddSpell MyRise
 endif
End

Et le joueur est malade...

Modifié par beeratwork, 22 octobre 2009 - 13:04.


#6 Ona

Ona

Posté 23 octobre 2009 - 02:24

Merci à vous tous pour vos commentaires,

La seconde méthode de guiguizmo91 est parfaite, un grand merci à toi ! Merci également à toi Valerian pour la tournure de phrase qui était à refaire, allez c'est repartit !






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

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