Aller au contenu


Page 1 sur 1
  • Vous ne pouvez pas créer un sujet
  • Vous ne pouvez pas répondre

Aide pour un script Script qui fait que les gardes nous poursuivent.

1er message dans Aide pour un script

L'utilisateur est hors-ligne   nicol74210 Icône
  • Nouveau joueur
  • Groupe : Membres
  • Messages : 18
  • Inscrit : 17/03/2009

Posté mardi 22 décembre 2009 à 10:12

Bonjour tout le monde, ( j'espère que j'ai placé le sujet dans le bon topic )voila je suis en train de développer un mod pour Morrowind intitulé "Le peuple des elfes réfugiés" ( oui je manque d'inspiration :cry2: ) et j'ai un problème pour un script qui fait :

- qu'à un certain moment les gardes de Seyda Nihyn nous poursuivent en courrant,
- s'arrêtent devant nous
- et nous parlent ( commande : ForceGreeting )
- dès qu'ils ont fini de nous parler, ils repartent

Voila mon script : ( ce script est rattaché aux gardes )

Citation

Begin _ESM_garde_seyda_nihyn

Short done

If ( player->GetJournalIndex "_ESM_quete" == 20 )
AIFollow, player, 0 0 0 0 0 0 0 0 0
ForceRun
If ( GetDistance, Player < 100 )
If ( done == 0 )
ForceGreeting
ClearForceRun
AIWander 2000 24 0 60 20 20 20 0 0 0 20 0
set done to 1
Endif
Endif
Else
Return
Endif

End


Les gardes ne font que se tourner vers mon perso quand il est pret, et à la fin du dialogue ils suivent mon perso. :blink:

Est-ce que quelqu'un pourrait m'aider parce-que j'y passe une semaine à régler ce problème, ça m'arrangerait :) .
C'est en marchant, dans les, entraaaiilles ! Que les Barbares vont ààà l'assaauut. Et par le fer des haaaches de bataaiille, tailler la chair et broyeeer les ooooos !


Page 1 sur 1
  • Vous ne pouvez pas créer un sujet
  • Vous ne pouvez pas répondre

Autres réponses dans ce sujet Aide pour un script


L'utilisateur est hors-ligne   darketheal Icône
  • Joueur
  • Groupe : Membres
  • Messages : 91
  • Inscrit : 16/01/2009

Posté mardi 22 décembre 2009 à 11:34

Bon je ne connais pas grand chose aux script de morrowind mais avec un peu de logique je remarque :
- tu as un esle avec rien après donc soit il manque un bout de script soit tu ne le met pas (si on se base sur le C ça ne sert à rien et/ou ça peut générer des erreurs)
- ton script à un return qui ne retourne rien...(en C c'est une procédure mais dans ton cas c'est plutôt une fonction donc ça devrait retourner quelque chose)

Maintenant j'émet une hypothèse : peut être n'est-ce pas AIFollow qu'il faut mettre mais autre chose, encore une fois je n'y connais rien...

Sur ce je te souhaite de trouver la solution rapidement et facilement ^^
Mon serveur CoD4-Frontlines
Image IPB
Mon serveur CoD4-RSM
Image IPB

L'utilisateur est hors-ligne   nicol74210 Icône
  • Nouveau joueur
  • Groupe : Membres
  • Messages : 18
  • Inscrit : 17/03/2009

Posté mardi 22 décembre 2009 à 11:46

D'accord merci, t'avait raison j'ai mis un Else avec Return à la fin, donc ça ne sert à rien .

Mais je pense qu'il faut ajouter une commande genre "If ( GetAIPackageDone == 1 )" ou un truc comme ça...

Je rééssaye et je dis si ça marche ;) .

EDIT : Ca ne marche pas quand même. Faut que je trouve un autre moyen. :help: :cry2: . Il y a AIWander, AIEscort, AITravel et AIFollow. Je pense que je devrait utiliser AITravel ( c'est le seul que je connaisse pas :laugh: ).

EDIT2 : C'est pas la peine, ça ne marche pas quand même.
C'est en marchant, dans les, entraaaiilles ! Que les Barbares vont ààà l'assaauut. Et par le fer des haaaches de bataaiille, tailler la chair et broyeeer les ooooos !

L'utilisateur est hors-ligne   Confridín Icône
  • Qu'onfi quoi?
  • Groupe : Administrateurs
  • Messages : 3 720
  • Inscrit : 11/08/2006

Posté mardi 22 décembre 2009 à 19:56

Essaie avec un script global (donc non attaché à un personnage mais à un activateur situé dans la cell)

Citation

Begin _ESM_garde_seyda_nihyn

Short done


If ( done == 0 )
If ( player->GetJournalIndex "_ESM_quete" == 20 )
"IDGARDE"->AIFollow, player, 0 0 0 0 0 0 0 0 0
"IDGARDE"->ForceRun
(refaire avec chacun des gardes)
Set done to 1
endif
elseif ( done == 1 )
If ( "IDGARDE"->GetDistance, Player < 100 )
ForceGreeting
"IDGARDE"->ClearForceRun
"IDGARDE"->AIWander 2000 24 0 60 20 20 20 0 0 0 20 0
set done to 2
endif
Endif

End


L'utilisateur est hors-ligne   nicol74210 Icône
  • Nouveau joueur
  • Groupe : Membres
  • Messages : 18
  • Inscrit : 17/03/2009

Posté mercredi 23 décembre 2009 à 09:39

D'accord je vais tester ce matin. Merci pour le conseil :) .

EDIT : J'ai attaché le script à un coprin violet ( UNIQUE ) mais les gardes ne font rien, même si je n'attache pas le script à quelque chose. Il faut que ça soit moi qui enclenche le dialogue pour qu'ils me parlent. :peur: :smiley_suicidaire: .
Faut que j'y arrive c'est un truc qui est essentiel pour mon mod.
C'est en marchant, dans les, entraaaiilles ! Que les Barbares vont ààà l'assaauut. Et par le fer des haaaches de bataaiille, tailler la chair et broyeeer les ooooos !

L'utilisateur est hors-ligne   Katan-Amn Icône
  • Ca plane pour moi, moi moi moi moi !
  • Groupe : Membres d'honneur
  • Messages : 1 649
  • Inscrit : 26/09/2006

Posté mercredi 23 décembre 2009 à 14:22

A mon avis, se sont les commandes "AIFollow, player, 0 0 0 0 0 0 0 0 0" et "ForceRun" qui ne se lance pas. Mets un messagebox juste à la suite, pour voir si il te l'affiche quand ton journal est a 20.
 Messagebox "Lancement du AIfollow" 


Si le message s'affiche, c'est qu'il y a un soucis avec la ligne AIFollow...
Image IPB
Ils ne savaient pas que c'était impossible, alors ils l'ont fait.


L'utilisateur est hors-ligne   Confridín Icône
  • Qu'onfi quoi?
  • Groupe : Administrateurs
  • Messages : 3 720
  • Inscrit : 11/08/2006

Posté mercredi 23 décembre 2009 à 20:15

Chaque garde a bien un ID différent ?

L'utilisateur est hors-ligne   nicol74210 Icône
  • Nouveau joueur
  • Groupe : Membres
  • Messages : 18
  • Inscrit : 17/03/2009

Posté jeudi 24 décembre 2009 à 10:32

Confridin >> Non c'est tous "Imperial Guard".

Katan >> OK je vais tester merci.

EDIT : Lorsque mon journal est à 20, le message s'affiche une infinité de fois, les gardes ne font que se tourner vers moi et quand je suis à moins de 100 unités d'un des gardes, ils me parlent mais avec plein de MessageBox après.
En fait, je pense ( incroyable ! :laugh: ) que le problème c'est que les gardes me poursuivent tant que je suis à plus de 100 unités d'eux, et quand je suis à moins de 100 unités d'eux, ils me parlent, le "done" devient 1 et donc ils arrêtent de me poursuivre. Mais le hic c'est que mon journal est toujours à 20 et aussi à 40 donc les gardes continuent de me poursuivre. C'est donc : une commande pour poursuivre, une pour arrêter et après une infinité pour me re-poursuivre qui sont enclenchées !
Alors je vais tester un nouveau script . Le voici :

Citation

Begin _ESM_garde_seyda_nihyn



If ( player->GetJournalIndex "_ESM_quete" =! 20 )
Return
Endif

If ( player->GetJournalIndex "_ESM_quete" > 20 )
Return
Endif

AIFollow, player, 0 0 0 0 0 0 0 0 0
ForceRun

If ( GetDistance, Player > 500 )
Return
Endif

ForceGreeting
ClearForceRun
AIWander 2000 24 0 60 20 20 20 0 0 0 20 0

End

Parce-que le Journal est mis à jour à 40 quand les gardes nous parlent, à 30 c'est quand on a annulé la quête.

C'est en marchant, dans les, entraaaiilles ! Que les Barbares vont ààà l'assaauut. Et par le fer des haaaches de bataaiille, tailler la chair et broyeeer les ooooos !

L'utilisateur est hors-ligne   Confridín Icône
  • Qu'onfi quoi?
  • Groupe : Administrateurs
  • Messages : 3 720
  • Inscrit : 11/08/2006

Posté jeudi 24 décembre 2009 à 13:52

Ca ne marchera pas.

Pour qu'un script d'action fonctionne, il faut que l'identifiant soit unique. Il faut donc que chaque garde possède une ID différente, et que chaque ID ne soit présent qu'une fois dans tout le jeu. Ensuite, utilise mon script et ca devrait fonctionner.

Mais il y a peut-être plus simple. Il suffirait d'ajouter par script une amende au joueur. Les gardes vont ainsi se précipiter dessus naturellement, et il suffira de créer un dialogue spécifique avec comme condition "être garde", "être dans seyda" et avoir l'entrée journal à 20. ;)

L'utilisateur est hors-ligne   nicol74210 Icône
  • Nouveau joueur
  • Groupe : Membres
  • Messages : 18
  • Inscrit : 17/03/2009

Posté jeudi 24 décembre 2009 à 14:44

Ouais merci pour l'info mais j'ai déjà essayé il y a 5 jours. J'ai déjà testé ton script mais sans l'identifiant unique. Je vais essayer de créer un garde et faire le script en global comme tu me l'a dit.

Faut que je me replonge dans "le scripting pour les abru novices".

EDIT : Merci pour l'astuce ça a marché, mon script ( enfin ... le tien ) est impec'.

EDIT2 : J'espère que je vais pas trop vous ralentir, à force de demander des question. ^^
C'est en marchant, dans les, entraaaiilles ! Que les Barbares vont ààà l'assaauut. Et par le fer des haaaches de bataaiille, tailler la chair et broyeeer les ooooos !

L'utilisateur est hors-ligne   Katan-Amn Icône
  • Ca plane pour moi, moi moi moi moi !
  • Groupe : Membres d'honneur
  • Messages : 1 649
  • Inscrit : 26/09/2006

Posté mercredi 30 décembre 2009 à 16:00

Je pige pas comment ça se fait que le script ne marchait pas, étant rattaché au garde....
Image IPB
Ils ne savaient pas que c'était impossible, alors ils l'ont fait.


L'utilisateur est hors-ligne   nicol74210 Icône
  • Nouveau joueur
  • Groupe : Membres
  • Messages : 18
  • Inscrit : 17/03/2009

Posté mercredi 30 décembre 2009 à 19:43

Parce-que le script se rattachait à des gardes qui ont tous le même ID. Mais quand je disais que les gardes se tournent vers moi c'est normal : ils se tourneraient même sans le script ( j'suis vraiment con bête moi quand je veux )

:arrow: .

Pour l'instant mon mod avance bien, j'ai pû continuer grâce à votre aide.
C'est en marchant, dans les, entraaaiilles ! Que les Barbares vont ààà l'assaauut. Et par le fer des haaaches de bataaiille, tailler la chair et broyeeer les ooooos !

L'utilisateur est hors-ligne   Katan-Amn Icône
  • Ca plane pour moi, moi moi moi moi !
  • Groupe : Membres d'honneur
  • Messages : 1 649
  • Inscrit : 26/09/2006

Posté jeudi 31 décembre 2009 à 00:47

Normalement, si tu ne cible pas une fonction, tu peux la laisser telle quelle dans le script, elle agira sur l'objet au quel il est assigné.
Image IPB
Ils ne savaient pas que c'était impossible, alors ils l'ont fait.


L'utilisateur est hors-ligne   nicol74210 Icône
  • Nouveau joueur
  • Groupe : Membres
  • Messages : 18
  • Inscrit : 17/03/2009

Posté jeudi 31 décembre 2009 à 10:48

Ouais ben c'est ça que je trouve anormal, mais ça devait être le fait que le même script soit utilisé plusieurs fois pour des personnages qui ont un ID identique. Fallait faire un garde à l'ID unique.
C'est en marchant, dans les, entraaaiilles ! Que les Barbares vont ààà l'assaauut. Et par le fer des haaaches de bataaiille, tailler la chair et broyeeer les ooooos !

Page 1 sur 1
  • Vous ne pouvez pas créer un sujet
  • Vous ne pouvez pas répondre

1 utilisateur(s) sur ce sujet
0 invité(s) et 1 utilisateur(s) anonyme(s)



RochMedia & Play-Mod : Mods, Jeux vidéos et Mod Stargate
Powered By IP.Board © 2009 IPS, Inc