Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Plusieurs pbs

Par Adalorn le 8/7/2002 à 19:20:42 (#1777594)

1er : je n'arrive pas à ne pas faire disparaitre les corps
2éme : actionwait ne marche pas, j'ai trouvé aucun moyen pour faire attendre un script
3éme : ce script ne marche pas, il fait tout planter dans le jeux(mais se compile) :
dans on enter d'un piége


void main()
{
object oPlayer = GetEnteringObject();
object oTargetArea = GetObjectByTag("*******",0);
AssignCommand(oPlayer,ActionJumpToLocation(GetLocation(oTargetArea)));
ApplyEffectToObject (DURATION_TYPE_TEMPORARY, EffectKnockdown(), oPlayer, 3.0);
AssignCommand(oPlayer, SpeakString("***"));
}


4éme :
je place un premier script dans onenter d'un triguer :

void main()
{
object oPlayer = GetEnteringObject();
if((GetItemPossessor(GetObjectByTag("***", 0)) == oPlayer)||(GetLocalInt(GetModule(),"****")))
{
object oTargetArea = GetObjectByTag("******",0);
SetMapPinEnabled(oTargetArea,1);
SetLocalInt(GetModule(),"****",1);
AssignCommand(oPlayer,ActionJumpToLocation(GetLocation(oTargetArea)));
ApplyEffectToObject (DURATION_TYPE_PERMANENT, EffectParalyze(), oPlayer, 0.0);
ActionStartConversation(oPlayer,"*****",TRUE);
}
}

j'ai essaillé aussi avec duration_type_temporary ou _instant
, c pareil
il est suivi, à un moment donné de :

void main()
{
object oPlayer = GetPCSpeaker();
ApplyEffectToObject (DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_IMP_HARM,FALSE), oPlayer, 2.0);
ActionWait(2.0);
RemoveEffect(oPlayer, EffectParalyze());
object oTargetArea = GetObjectByTag("******",0);
AssignCommand(oPlayer,ActionJumpToLocation(GetLocation(oTargetArea)));
ApplyEffectToObject (DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_FIRE,FALSE), oPlayer, 1.0);
}

, et non seulement, il n'enleve pas la paralysie (il ne "jump" donc pas, mais en +, il fait tout à la foi (les effects aussi), à cause de actionwait qui ne fait pas ce que je veux

je crois que c'est tout...

Par gaeriel le 8/7/2002 à 19:40:30 (#1777682)

Es tu sur que l'on peut utilise GetObjectByTag pour faire un pointeur vers une aréa ??? Je pense que tes scripts merdent à cause de ça. (mais c'est juste un suposition, n'ayant pas encore eu le temps de vraiment tester l'éditeur :) )

Par Gargantuel le 8/7/2002 à 20:09:29 (#1777807)

3 - A priori j'ajouterais des tests de controle sur ton script :


void main()
{
object oPlayer = GetEnteringObject();
if (GetIsPC(oPlayer))
{
object oTargetArea = GetObjectByTag("*******",0);
if (oTargetArea != OBJECT_INVALID)
{
AssignCommand(oPlayer,ActionJumpToLocation(GetLocation(oTargetArea)));
ApplyEffectToObject (DURATION_TYPE_TEMPORARY, EffectKnockdown(), oPlayer, 3.0);
AssignCommand(oPlayer, SpeakString("***"));
}
}
}

Par Gargantuel le 8/7/2002 à 20:20:51 (#1777855)

4 - Essaye la fonction DelayCommand, tu auras peut etre plus de succes.
Sinon meme commentaire, tu ne testes pas assez tes retours de variables et si un GetObjectByTag te retourne un OBJECT_INVALID, tu le sais pas et pareil si un GetEnteringObject() te renvoi autre chose qu'un joueur. :(

1- Si tu place un npc lambda avec aucun script ni inventaire et que tu le butes, il disparait ?
Faudrait que tu nous donnes + de billes parce que là je sèche.

2 - Utilise DelayCommand() :)

Bon courage !

Par Adalorn le 9/7/2002 à 9:33:53 (#1779768)

avant que j'ajoute EffectKnockdown(), ça marchait.
Je veux que ça marche aussi pour les NPC, c'est un piége comme les autres (il peut y avoir des conflits?)
même si j'utilise DelayCommand() , il continu à ne pas suprimer la paralysie.
comment il faut faire pour qu'un NPC ne disparaisse pas aprés s mort (j'avait entendu que no permanent death pouvait empecher le corps de disparaitre, mais non...)

Par ZeDuckMaster le 9/7/2002 à 10:34:06 (#1780027)

2 - c'est normal, ActionWait() ajoute une action dans la liste d'action du pnj qui le fait attendre un certain temps. Un trigger n'ayant pas de liste d'actions ton actionwait ne marchera pas.
il n'existe pas a ma connaissance de fonctions permettant de "faire attendre" un script (a moins de coder une fonction qui le fait).

remarque generale sur les scripts :
pourquoi au lieu de :


object oPlayer = GetEnteringObject();
object oTargetArea = GetObjectByTag("*******",0);
AssignCommand(oPlayer,ActionJumpToLocation(GetLocation(oTargetArea)));

ne pas utiliser :

object oPlayer = GetEnteringObject();
object oTargetArea = GetObjectByTag("*******",0);
AssignCommand(oPlayer,ActionJumpToObject(oTargetArea));

.....................?

pour le script 4 :
ton ActionStartConversation me parait un peu bizarre etant donné que c'est l'appellant qui va se mettre a parler avec oPlayer, je penses pas qu'un trigger puisse parler ......

sinon c'est normal que les effets passent avant les actions, car les autres sont des actions, donc posés dans la liste des actions en attendant d'etre traités (donc bien apres....), alors que les effets sont des fonctions appelées telles quelles dans le script (donc instantannées....)

Par Gargantuel le 9/7/2002 à 10:38:37 (#1780045)

Si tu veux que ca marche sur un NPC :


void main()
{
object oPlayer = GetEnteringObject();
if (GetObjectType(oPlayer) == OBJECT_TYPE_CREATURE)
{
object oTargetArea = GetObjectByTag("*******",0);
if (oTargetArea != OBJECT_INVALID)
{
AssignCommand(oPlayer,ActionJumpToLocation(GetLocation(oTargetArea)));
ApplyEffectToObject (DURATION_TYPE_TEMPORARY, EffectKnockdown(), oPlayer, 3.0);
AssignCommand(oPlayer, SpeakString("***"));
}
}
}

Si jamais tu tentes un EffectKnockDown sur autre chose qu'une créature, je suis pas sur que nwn digère ca correctement ...
Pour savoir comment faire qu'un corps ne disparaisse pas il suffit de regarder comment Bioware a fait dans son module prélude fourni avec NWN (tu sais quand les gobelins butent tout le monde dans la zone de training).

Pour ton problème de paralysie, je seche.

Par Adalorn le 9/7/2002 à 12:19:46 (#1780545)

:enerve: plante pareil, je crois que c'est le knockdown qui plante tout, je vais l'essailler tout seul

Edit//:oui, encore un bug, le knockdown plante même tout seul, dés qu'il doit se lancer, quand un perso rentre, pourtant, c'est compilé correctement...

JOL Archives 1.0.1
@ JOL / JeuxOnLine