Petit soucis de script , besoin d'assistance.

Répondre
Partager Rechercher
Bonjour à vous, je viens auprès de mains expertes pour faire analyser mes scripts qui n'ont pas l'effet escompté, enfin pas tout , j'explique:

C'est un truc tout simple ou un objet ouvre un passage sur une pierre runique, jusque la tout va bien la pierre runique disparait et l'objet qui l'ouvre détruis. Ensuite je demande de recreer l'objet à sa place mais rien ne se produit. J'ai ouïe dire qu'il fallait creer l'objet avec un delaycommand avant de le détruire ce que je fais mais ca ne change rien. Voila ma structure:

1/ si présence de l'objet , ca ouvre la discussion donc dans condition d'execution:

Code:
#include "nw_i0_tool"

int StartingConditional()
{

    // Vérifier que le PJ qui parle possède ces objets dans son inventaire
    if(!HasItem(GetPCSpeaker(), "dentdeloupgarou"))
        return FALSE;

    return TRUE;
}
2/ au meme moment je met dans action conséquente le script permettant avec un delaycommand de creer la pierre qui refermera:

Code:
#include "nw_i0_2q4luskan"

void main()
{

string sRoc = "roc_garou";
location lplace = GetLocation (GetWaypointByTag("garou_roc001"));

DelayCommand(20.0, CreateObjectVoid(OBJECT_TYPE_PLACEABLE, sRoc, lplace, TRUE));

}
ensuite la discussion se poursuit une phrase suivante ou je met dans action conséquente la destruction du rocher et de l'objet qui a permis d'ouvrir:

Code:
#include "nw_i0_2q4luskan"

void main()
{
object oTarget = (GetWaypointByTag("garou_roc001"));
object odentdeloupgarou = GetObjectByTag("dentdeloupgarou");


effect eVis = EffectVisualEffect(VFX_DUR_GLOW_GREY);
    ApplyEffectAtLocation(DURATION_TYPE_PERMANENT, eVis, GetLocation(oTarget));


DestroyObject(OBJECT_SELF, 1.0);

if(GetIsObjectValid(odentdeloupgarou) != 0)
        {
        DestroyObject(odentdeloupgarou);
}
}
donc ca ca se produit bien comme il faut mais la pierre ne réapparait pas ensuite, ai-je fais une mauvaise manip?

Bien à vous.
En général, ce type d'erreur est dû à une erreur dans les paramètres de l'instruction. Es-tu sûr du Resref de ton rocher ? (attention, quand on crée un objet, il faut l'appeler par le resref, pas le tag), de la présence de ton waypoint ?
A brûle pourpoing, si tu DelayCommand une création d'objet ou de créature, tu dois le faire à partir d'un objet qui existe encore. Dans ton cas, j'ai l'impression que tu demandes à l'objet qui se détruit de créer quelque chose 20 secondes plus tard et comme il n'existe plus, rien ne se passe.

J'avoue que j'ai du mal à comprendre ta description de l'effet désiré:
Citation :
C'est un truc tout simple ou un objet ouvre un passage sur une pierre runique, jusque la tout va bien la pierre runique disparait et l'objet qui l'ouvre détruis. Ensuite je demande de recreer l'objet à sa place mais rien ne se produit
Je le traduis par
Citation :
C'est un truc tout simple où un objet déclenche un dialogue qui ouvre un passage situé sur une pierre runique. Jusque là tout va bien, la pierre runique disparait et l'objet qui sert à ouvrir le passage est détruit. Ensuite je demande (à qui?) de recreer l'objet à sa place mais rien ne se produit
Si j'ai bien tout capté, le joueur clique sur un objet (une stèle), ça ouvre un passage (qu'est ce que tu appelles passage : une zone, une porte,..?), la pierre runique disparait (celle où le joueur clique ou celle qui sert de passage ?) et tu la recréé (pourquoi la faire disparaitre alors ? Parce qu'elle est recréée ailleurs ?).

En admettant que j'ai capté un fond de vérité, la ligne :

Code PHP:

DelayCommand(20.0CreateObjectVoid(OBJECT_TYPE_PLACEABLEsRoclplaceTRUE)); 

...devrait être

Code PHP:

AssignCommand (oObjectQuiSeraToujoursDansLeModuleDelayCommand(20.0CreateObjectVoid(OBJECT_TYPE_PLACEABLEsRoclplaceTRUE))); 

Dans notre module, nous avons un objet de TAG "UNIVERSAL_SPAWNER" qui est là pour recevoir tous les AssignCommand de respawn créatures et objets.

PS: je relis ton post dans tous les sens et je peux comprendre plusieurs cas de figure:

1- Un objet dans l'inventaire du joueur active un dialogue à partir d'une pierre runique. Dans les actions de ce dialogue, il y a la destruction de la pierre runique, sa recréation dans 20 secondes et l'ouverture d'un passage (porte, trigger).

2- Un objet dans l'inventaire du joueur active un dialogue à partir d'une pierre runique. Dans les actions de ce dialogue, il y a la destruction de l'objet qui active le dialogue, sa recréation dans 20 secondes et l'ouverture d'un passage (porte, trigger).

3- Un objet dans l'inventaire du joueur active un dialogue à partir d'une pierre runique. Dans les actions de ce dialogue, il y a la destruction de la pierre runique et sa recréation dans 20 secondes, ce qui libère le passage au joueur.

Si c'est l'option 3, ce que j'ai dit plus haut est valable. Ton dialogue n'existe plus puisque la pierre runique s'est autodétruite. Elle ne peut donc pas se recréer, elle n'existe plus et l'information qui consiste à dire "dans 20 secondes, je créé une pierre runique à tel endroit" a donc été mise à la poubelle.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés