(solut)
Si je puis me permettre, la ca va poser un pb, au remove effect, parce que la tu remove n'importe quoi Rat
Un effet ne peut être retrouver simplement avec ses caractéristiques
Je propose de passer par un objet invisible custo qui place les effets de cette fonction
ca permet de garder le module comme créateur d'autres effets et c'est plus propre je trouve ^_^
on le crée ds le onmoduleload et on l'appel dans la fonction.
je rajoute donc ca :
string sCreatTag = "TAG_DU_CREATOR";
object oCreator = GetObjectByTag(sCreatTag);//il faut que l'objet soit UNIQUE, sinon ca va couiller comme on dit
eEffet = GetFirstEffect(oPJ);
int i=TRUE;
while(GetIsEffectValid(eEffet)&&i){
if(GetEffectCreator(eEffet) == oCreator) i = FALSE;//on a trouve !
else
eEffet = GetNextEffect(oPJ);//sinon on cherche
}
Et voila le truc en entier, non testé ^_^
void PVPolymorph();
void main(){
string sCreator = "RESREF_DU_CREATOR";
string sCreatTag = "TAG_DU_CREATOR";
int i=0;
object oCreator = GetObjectByTag(sCreatTag);//il faut que l'objet soit UNIQUE, sinon ca va couiller comme on dit
//une pitite boucle pour eliminer tous les objets qui pourraient gener
if(!GetIsObjectValid(oCreator))
CreateObject(OBJECT_TYPE_PLACEABLE, sCreator, GetStartingLocation());//je cree l'objet au pt de départ si y en a pas déjà un
PVPolymorph();//pk ne pas garder un si joli nom ^_^
}
void PVPolymorph()
{
string sCreatTag = "TAG_DU_CREATOR";
object oCreator = GetObjectByTag(sCreatTag);//il faut que l'objet soit UNIQUE, sinon ca va couiller comme on dit
object oPJ = GetFirstPC();
effect eEffet = EffectPolymorph(POLYMORPH_TYPE_PANTHER);//modifier le polymorph par ce que lon veux ^^
int nValue=2;
while(GetIsObjectValid(oPJ))
{
int nPVs = GetMaxHitPoints(oPJ);
int iDeclenche = nPVs /4; //A 25% des pvs du joueurs
int nEfface= nPVs/nValue;
int nCurrent = GetCurrentHitPoints(oPJ);
if(nCurrent <= iDeclenche)
AssignCommand(oCreator, ApplyEffectToObject(DURATION_TYPE_PERMANENT,eEffet,oPJ));
//donc la c "oCreator" qui place l'effet, on pourra le retrouver
else
if (nCurrent >= nEfface){
eEffet = GetFirstEffect(oPJ);
int i=TRUE;
while(GetIsEffectValid(eEffet)&&i){
if(GetEffectCreator(eEffet) == oCreator) i = FALSE;//on a trouve !
else
eEffet = GetNextEffect(oPJ);//sinon on cherche
}
RemoveEffect(oPJ,eEffet);
}
oPJ = GetNextPC();
}
DelayCommand(10.0,PVPolymorph());
}
mais compilé ^_^
j'en ai profité pour enlever les fautes d'ortographe
edit : j'avais pas fais l'assign command . . . c'était pas près de marcher
Bon, alors là en l'état y a un pb : les rechargement/déchargement de module
ce que je conseillerais, virer les effets (grace à la boucle donnée) quand on s'en vas, et comme quand on revient ca se remet, tt baigne
là g un doute, les effets restent quand on quitte la partie ?quand on sauvegarde oui (je pense, en fait g jamais trop joué . . . ahem ) donc faudrait prévoir quelque chose à ce moment là . . . voir mieux, ne créer l'objet que si il éxiste pas, ce que je m'empresse de faire tt de suite
reedit : donc voila, maintenant ca marcheras tout nikel, sauvegardes ou pas, déco ou pas (je pense, je connais pas trop les effets, enfin précisement, savoir comment sont stockés les infos sur un effets etc.)
Breeeeeffffff . . . en théorie ca marche
(jusqu'à preuve du contraire quoi)
comment on fais ?
On met ce script dans le onmoduleload, et un crée dans la palette un objet avec pour tag ce qu'on veut, mais il faut le préciser (TAG_CREATOR) et un resref pareil, ce qu'on veut mais faut préciser. L'objet est usable, mais invisible. pas forcement invisible, c'est juste une idée, ca peut être une pancarte indestructible ou que sais je. On peut le placer d'avance dans le module, ca change rien, faut juste qu'il n'y en ai qu'un seul
Ouala, je crois que g tt dit cette fois ci ^_^