Aller au contenu


Function Externe


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

#1 Joubarbe

Joubarbe

Posté 29 janvier 2013 - 22:50

Bonsoir,

J'ai créé deux scripts. Le premier est le principal, le second est le "library". Dans ce dernier, j'ai déclaré ma fonction comme suit :


Function SetBAVWarrior(Actor akTarget)

	float baseHP = akTarget.GetBaseActorValue("Health")
	akTarget.SetActorValue("Health", 100)

EndFunction

Dans le script principal, après avoir déclaré mon playerref, j'ai appelé la fonction : (event OnRead, script extends ObjectReference)

Import Library

If ....
   ...
   SetBAVWarrior(playerref)
   ...
EndIf

Et cela ne fonctionne pas ; le compiler me dit que je ne peux appeler cette fonction de façon autonome. Or, lorsque je mets *exactement* les codes dans le script principal, il n'y a aucun souci.
J'ai regardé les tutos, rien d'extraordinaire, je ne vois pas où je merde. Si j'ai bien compris, il n'est pas nécessaire d'avoir quoi que ce soit à "return" dans Papyrus, donc je sèche :)

#2 Lucead

Lucead

Posté 29 janvier 2013 - 23:15

Le script contenant tes fonctions externes ne doit avoir aucun script parent (pas de clause Extend donc dans la première ligne de ton script). Je pense que c'est ici le seul problème. Dans le cas contraire, peut-être que déclarer ta fonction comme Global pourrait aider. N'hésites pas à regarder des script comme Actor.psc pour voir comment Bethesda fait et reproduire, c'est encore et toujours le meilleur moyen qu'en on sèche :)

Modifié par Lucead, 29 janvier 2013 - 23:15.


#3 Joubarbe

Joubarbe

Posté 29 janvier 2013 - 23:37

Mon script "library" (où je déclare mes fonctions) n'a aucun Extend.
Il suffirait de rajouter un Global à la fin ? C'est de ça dont tu parles ?

EDIT : j'ai à moitié résolu le problème en déclarant mes fonctions dans ma librairie en tant que "Global" et en déclarant mes variables à l'intérieur de chacune de ces fonctions. Pas sûr que ce soit la meilleure solution, étant donné que certaines fonctions rappellent des variables qui existent dans d'autres fonctions.


EDIT² : J'ai finalement réussi en ayant suivi la partie "From Within a Magic Effect Script" de ce tuto . Savoir si j'ai compris, c'est autre chose ; mais en gros il faut passer par une quête servant uniquement à stocker le script servant de "librairie", en y déclarant les variables globales en tant que Property. Ensuite dans le script principal, on n'utilise pas "import", mais une phrase magique du style "myQuestLibScript Property myLibRef auto". Pour appeler les fonctions il faut ensuite écrire : myLibRef.MyFunction(). "MyFunction()" ne doit pas être déclarée en tant que fonction globale.

Modifié par Joubarbe, 30 janvier 2013 - 14:03.





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

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