Bonjour,
Mon but est d'avoir un objet consommable (nourriture) disposant d'un effet magique qui s'active normalement lorsque le joueur est dans une cell spécifique et de façon scriptée lorsqu'il est hors de cette cell.
J'ai ainsi mis un event OnEffectStart sur mon effet magique. C'est tout simple : lorsque le joueur active son potage dans la cell, il obtient un objet, mais lorsqu'il l'active en dehors, il reçoit l'effet standard du potage. Seulement voilà, je ne sais pas comment bloquer ce dernier effet, car ça doit être l'un ou l'autre, mais pas les deux.
BlockOnActivation() ne semble pas fonctionner et ça me paraît trop agressif.
Pour résumer :
If player.isInLocation(CellX)
Effet 1 ; on enlève artificiellement l'objet de l'inventaire du joueur car on bloque son activation normale
Else
debug.notification("Vous mangez votre potage, rien d'autre ne se passe, et vous êtes content")
EndIf
EndofExplicationFoireuse
Merci !
0
Bloquer L'Activation D'Un Effet Magique Sous Conditions
Débuté par
Joubarbe
, 24 janv. 2013 - 17:02
6 réponses à ce sujet
#1
Posté 24 janvier 2013 - 17:02
#2
Posté 24 janvier 2013 - 19:24
BlockActivation() & BlockActivation(false) marchent très bien chez moi.
Je les utilise sur des Actor.
Il faut juste que tu trouves les bons Event pour déclencher l'un ou l'autre.
Je me permets de faire une parenthèse quant à l'utilisation de la fonction IsInLocation(Location akLocation)
Ceci teste si l'object Reference (ou l'Actor) est dans une location, ça ne teste pas une Cell Unique (au cas où tu ne le saurais pas)
Ta partie de script est un activemagiceffect ? ou ObjectReference ?
Je les utilise sur des Actor.
Il faut juste que tu trouves les bons Event pour déclencher l'un ou l'autre.
Citation
If player.isInLocation(CellX)
Ceci teste si l'object Reference (ou l'Actor) est dans une location, ça ne teste pas une Cell Unique (au cas où tu ne le saurais pas)
Ta partie de script est un activemagiceffect ? ou ObjectReference ?
#3
Posté 24 janvier 2013 - 19:28
Pas sûr de comprendre la parenthèse (je ne suis même pas au niveau du bas de l'échelle en script )
ActiveMagicEffect
EDIT : Comment utilise-t-on BlockActivation dans ce cas ? S'il me dit que la fonction n'existe pas, c'est que je dois merder qq part.
ActiveMagicEffect
EDIT : Comment utilise-t-on BlockActivation dans ce cas ? S'il me dit que la fonction n'existe pas, c'est que je dois merder qq part.
Modifié par Joubarbe, 24 janvier 2013 - 19:45.
#4
Posté 24 janvier 2013 - 19:59
BlockActivation() marche pour un ObjectReference, n'importe quel object (Armes, ingrédients, Actors NPC, ...)
c'est expliqué ici : http://www.creationk...ObjectReference
Il faudrait que tu m'expliques exactement ce que tu veux faire car je vois mal un ActiveMagicEffect faire fonctionner le blocage de l'activation.
c'est expliqué ici : http://www.creationk...ObjectReference
Il faudrait que tu m'expliques exactement ce que tu veux faire car je vois mal un ActiveMagicEffect faire fonctionner le blocage de l'activation.
#5
Posté 24 janvier 2013 - 21:19
Bah justement, j'avais bien lu ça, mais moi j'ai un "function is unknown or does not exist"
Et désolé, je ne vois pas quoi expliquer de plus :$
J'vais relire un peu tout ça...
Et désolé, je ne vois pas quoi expliquer de plus :$
J'vais relire un peu tout ça...
#6
Posté 24 janvier 2013 - 21:36
Pas grave... c'est moi qui ai mal compris ce que tu souhaites...
En fait, le BlockActivation() sert à bloquer les intéractions avec l'objet dans le monde.
Dans l'inventaire, tu ne peux bloquer l'activation d'un ingrédient par script (d'après mes tests), tu peux seulement le bloquer si il est posé par terre et dans ce cas, tu ne peux le rammasser.
Cette fonction ne marche pas toute seule, il lui faut un ObjetReference qui l'appelle dans ton ActiveMagicEffect (ex: ObjetProperty.BlockActivation() )
Sinon tu peux très bien placer un script sur ton Objet (c'est un ingrédient je suppose) & appeler la fonction seule BlockActivation()
En fait, le BlockActivation() sert à bloquer les intéractions avec l'objet dans le monde.
Dans l'inventaire, tu ne peux bloquer l'activation d'un ingrédient par script (d'après mes tests), tu peux seulement le bloquer si il est posé par terre et dans ce cas, tu ne peux le rammasser.
Cette fonction ne marche pas toute seule, il lui faut un ObjetReference qui l'appelle dans ton ActiveMagicEffect (ex: ObjetProperty.BlockActivation() )
Sinon tu peux très bien placer un script sur ton Objet (c'est un ingrédient je suppose) & appeler la fonction seule BlockActivation()
#7
Posté 24 janvier 2013 - 22:15
Non c'est une potion et d'après ce que je vois, ça complique les choses.
Ok pour le IsInLocation, mais pour les temples, ça devrait fonctionner (quelle est la bonne fonction à utiliser dans ce cas ?)
Deux problèmes donc :
1/ Celui que je décrivais. Dans la première condition, ma "potion" est tout de même consommée ; ce qui n'a pas de sens vu que je suis censé la donner au temple (par un moyen idiot j'en conviens, mais passons).
2/ La valeur de vente du ragoût (qui est donc une potion et non un ingrédient). Avec ces propriétés j'ai un peu de mal, car là je peux donner 4 ragoûts qui ont chacun une valeur différente. Comment faire pour ne pas avoir 4 Magic Effects à faire ? Non pas que ce soit bien long, mais si je devais faire ça sur 50 ragoûts, ça le deviendrait sans doute. Existe-t-il un moyen de récupérer l'objet qui est lié à l'effet magique ? Comme ça, je pourrais définir "Stew" en tant que variable contenant l'un des 4 ragoûts utilisés.
Pfff, "les scripts me crispent", ça n'a jamais été autant vrai
Event OnEffectStart(Actor akTarget, Actor akCaster) Actor Player = Game.GetPlayer() If Player.IsInLocation(Temple01) player.additem(Gold001, Stew.GetGoldValue()) debug.notification("Poor people thank you! The temple gave you " + Stew.GetGoldValue() + " gold.") Else debug.notification("You could give it to a temple...") endif endevent
Ok pour le IsInLocation, mais pour les temples, ça devrait fonctionner (quelle est la bonne fonction à utiliser dans ce cas ?)
Deux problèmes donc :
1/ Celui que je décrivais. Dans la première condition, ma "potion" est tout de même consommée ; ce qui n'a pas de sens vu que je suis censé la donner au temple (par un moyen idiot j'en conviens, mais passons).
2/ La valeur de vente du ragoût (qui est donc une potion et non un ingrédient). Avec ces propriétés j'ai un peu de mal, car là je peux donner 4 ragoûts qui ont chacun une valeur différente. Comment faire pour ne pas avoir 4 Magic Effects à faire ? Non pas que ce soit bien long, mais si je devais faire ça sur 50 ragoûts, ça le deviendrait sans doute. Existe-t-il un moyen de récupérer l'objet qui est lié à l'effet magique ? Comme ça, je pourrais définir "Stew" en tant que variable contenant l'un des 4 ragoûts utilisés.
Pfff, "les scripts me crispent", ça n'a jamais été autant vrai
0 utilisateur(s) li(sen)t ce sujet
0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)