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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

[Script] Recall_Portal - - besoin d'aide

Par Shadowalker le 26/11/2002 à 23:54:32 (#2652406)

Bonsoir tout le monde,

Je viens de passer la soirée entière à chercher comment activer la légendaire Pierre de Rappel dans mon module, et rien à faire, j'ai eu beau recopier mot par mot les scripts et autres tag à partir des modules officiels, rien à faire, ça ne marche pas.

Par facilité, j'ai gardé la pierre de rappel telle qu'elle était. Mais lorsque mon joueur l'active, alors même que j'ai créé un Recall_Portal à l'identique de ceux des modules officiels, rien ne se passe. Du coup, alors que mon aventure tend à mener très loin les joueurs, ceux-ci doivent sans arrêt faire des aller-retour pour refaire le plein de ceci ou cela.

Est-ce que quelqu'un serait assez charitable pour m'aider ici s'il vous plait ? Si quelqu'un pouvait me dire comment procéder pour parvenir à créer dans un module perso le même principe que la pierre de rappel, je lui en serait réellement très reconnaissant.

Merci d'avance,

Amicalement,

Shadowalker.

P.S.: J'ai fait une recherche rapide par mot-clef concernant ce type de problème, et visiblement il n'a pas encore été traîté. Si tel avait été le cas, excusez-m'en, je ne l'ai pas trouvé. :)

Par Jaha Effect le 27/11/2002 à 0:47:28 (#2652743)

Bon alors voilà une réponse :)

D'abord ta pierre de rappel est très bien, par contre y'a deux choses à modifier.

Sur le OnActivateItem des propriétés de ton module tu met le scripte suivant :

void main()
{
object oItem=GetItemActivated();


if(GetTag(oItem) == "NW_IT_RECALL")
{
location LastRecallUsed;
LastRecallUsed = GetLocation(GetItemActivator());
SetLocalLocation(GetItemActivator(),"LastRecallUsed",LastRecallUsed);
SetLocalInt(GetItemActivator(),"HasRecalled",1);
ActionCastFakeSpellAtObject ( SPELL_DISMISSAL , GetItemActivator());
DelayCommand (0.5,
AssignCommand(GetItemActivator(),
JumpToLocation(GetLocation(GetObjectByTag("NW_RECALL_PORTAL")))));

}
}


mais là c'est qu'une partie du boulot parcequ'il y a encore le dialogue du portail de rappel à épurer parceque c'est un beau bordel.
On va créer un nouveau dialogue avec un nom quelconque.

Racine
Ceci est un portail de rappel
Ne rien faire[FIN DIALOGUE]
Repartir d'où je viens[FIN DIALOGUE]
(dans les conditions d'execution, inserer ce scripte)
//::///////////////////////////////////////////////
//:: FileName sc_003
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
//:: Created By: Script Wizard
//:: Created On: 2002-07-10 13:24:29
//:://////////////////////////////////////////////
int StartingConditional()
{

// Inspect local variables
if(!(GetLocalInt(GetPCSpeaker(), "HasRecalled") == 1))
return FALSE;

return TRUE;
}


(dans actions consequentes, inserer ce scripte)

void main()
{

location WhereToGo;
WhereToGo = GetLocalLocation(GetPCSpeaker(),"LastRecallUsed");
AssignCommand(GetPCSpeaker(),JumpToLocation(WhereToGo));
}




Voilà, j'espère que tu as tout compris :)

Jaha Effect :D

Ps: désolé pour la syntaxe de mon OnActivateItem mais j'ai d'autres choses dedans et ça me faisait chier de le réécrire mais il marche très bien comme ça alors si ça amuse quelqu'un de le bricoler :)

Par Jaha Effect le 27/11/2002 à 11:59:24 (#2654899)

Si un modo pouvait rajouter ce poste à la liste de scripte svp.

tu avais un pas a pas

Par Blam le 27/11/2002 à 12:35:50 (#2655189)

sur rappel en fonction des alignement
ou c'est detaillé
mais bon la tu as une solution en direct.

prends l'habitude de verifier ce qui a deja ete fait (c'est en permanent)

Par Shadowalker le 27/11/2002 à 12:48:30 (#2655295)

Merci beaucoup, je rentre à peine du boulot, je vais reprendre mon module tout de suite.

J'espérais vraiment que quelqu'un réponde à ça, merci encore pour ton aide Jaha Effect :).

Par coolstar le 27/11/2002 à 13:36:26 (#2655739)

prends l'habitude de verifier ce qui a deja ete fait (c'est en permanent)
P.S.: J'ai fait une recherche rapide par mot-clef concernant ce type de problème, et visiblement il n'a pas encore été traîté. Si tel avait été le cas, excusez-m'en, je ne l'ai pas trouvé.

Par Jaha Effect le 27/11/2002 à 22:28:07 (#2660266)

Ce fut un plaisir ;)

Jaha Effect :D

Demande variante Pierre de rappel

Par Eltannus le 26/1/2003 à 13:20:25 (#3102955)

Bonjour, encore un petit mot pour faire appel a vos compétences

en travaillant sur notre module ( Eltannus a le front qui dégouline ) nous souhaiterions avoir une variante de la pierre de rappel.

Serait il possible lors que le PJ actionne la pierre, une fenêtre puisse s'ouvrir avec 3 choix de direction
1- Hopital pour des soins tag"WP_02"
2- Forge pour vendre acheter tag "WP_03"
3- Banque ( votre concept de banque les amis) tag "WP_04"

Dans ce cas le portail de retour, je dois implanter un portail de retour dans chacun de ses endroits qui ramène au lieu ou le PJ a actionné la pierre. Est ce que je peux utiliser votre script de portail de retour dans ce cadre sur 3 portails ( portaux au pluriel )

Merci de votre réponse les p'tits génies

Amicalement

Eltannus a une pierre qui n'amasse pas mousse

re

Par Eltannus le 26/1/2003 à 21:18:29 (#3106371)

salut

Y aurait il une bonne ame pour nous scripter cette pierre

amicalement

Eltannus a une pierre qui roule

Par Le loup blanc le 27/1/2003 à 12:27:22 (#3110033)

Ben bonjour tous!
Sympa la soluce mais moi je sais po programer (je sais chu nul j'ai mon pc depuis 7mois).
Le nwn ma epoustoufler dans le domaine des script vu que c est la premiere fois que je vois ça et malheureusement c'est du chinois pour moi.
Est-ce que par hasard quelqu'un pourrai me convertir a cela et eclairer ma lantern de bobet:D ?
ça serai cool card mon monde MS CITY devien énorme et tous le monde sauf les courageux ce casse(malgres les panneau et les fleche par terre:D ) Merci au venerables Dieu du pc de votre aide

Par Archamedes_Fr le 27/1/2003 à 12:32:15 (#3110076)

Alors je ne puis que fortement te conseiller de faire un tour par ici...

et bé!

Par Eltannus le 27/1/2003 à 13:30:53 (#3110508)

Archamendes

Puisque tu a la gentillesse de me donner le lien ci dessus, donne moi STP la bonne direction à prendre sur la page ou se trouve tout ces multiples liens, pour aller au plus vite. Je sens bien que tu maîtrises tout les contenus de tous ces liens. Bravo

Eltannus est a la croisée des chemins. Hummm! que disent tous ces panneaux...

script pierre de rappel

Par Eltannus le 28/1/2003 à 13:01:29 (#3117728)

Npus avons realiser ce script pour une destination mais je souhaiterais en mettre 3 trois.

Vers hopital tag WP_02
Vers forge tag WP_03
Vers banque tag WP_04

Comment puis je implanter cela dans le script si dessous pour avoir une fenetre qui s'active et permettre au PJ de choisir sa destination


void main()
{
object oItem = GetItemActivated();
object oPc = GetItemActivator();
location loc = GetLocation(oPc);
{
if (GetTag(oItem) == "tag de l'objet qui quand utilisé teleportera vers...")
SetLocalLocation(oItem, "BINDPOINT", loc);
SetLocalInt(oItem, "USED", 1);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_2), loc);
AssignCommand( oPc, JumpToLocation( GetLocation( GetWaypointByTag( "destination" ))));
}
}

Merci de votre aide

Eltannus vous ouvre sa fenêtre

Par Jaha Effect le 28/1/2003 à 14:03:25 (#3118167)

Il te faut un JumpToOject dans les actions consequentes de ton dialogue de pierre de rappel
Vers l'hopital

void main()
{
oPC = GetPCSpeaker );
AssignCommand(oPC, JumpToObject(GetWaypointByTag("WP_02")));
}


Vers la forge
void main()
{
oPC = GetPCSpeaker );
AssignCommand(oPC, JumpToObject(GetWaypointByTag("WP_03)));
}


Vers la banque
void main()
{
oPC = GetPCSpeaker );
AssignCommand(oPC, JumpToObject(GetWaypointByTag("WP_04")));
}


Et dans ton OnActivateItem il faut que tu mette

ActionStartConversation(GetLastUsedBy(), "resrefdetondialogue", TRUE);

En supprimant ce qui est inutile dans le script de la pierre de rappel

Jaha Effect :D

Merci JaJa Effect

Par Eltannus le 29/1/2003 à 12:35:53 (#3124912)

Ha lalalaa! C'est dame bien sur

Merci bcp je vais rectifier et je vous tiens au courant

Amicalement

Eltannus Un mage qui à la fâcheuse manie de se téléporter dans les pubs

Par jwrk le 29/1/2003 à 17:24:44 (#3127442)

Le resref du dialogue est-il le nom sous lequel on l'enregistre ? Je n'ai pas vu de champ "resref" dans la fenêtre de dialogue comme dans celle des objets.

Par Jaha Effect le 29/1/2003 à 17:29:24 (#3127481)

Oui c'est le nom de ton dialogue.

Jaha Effect :D

effectivement coolstar

Par Blam le 29/1/2003 à 17:35:51 (#3127540)

ca a ete deplacé ou effacé

donc je remet les scripts ici


#include "NW_I0_Plot"

void main()
{
object oItem = GetItemActivated();
object oUser = GetItemActivator();
if (oItem == GetObjectByTag("NW_IT_RECALL"))
{
int nAlignementGE = GetAlignmentGoodEvil(oUser);
int nAlignementLC = GetAlignmentLawChaos(oUser);
object oPortail;
if (nAlignementGE == ALIGNMENT_EVIL && nAlignementLC == ALIGNMENT_CHAOTIC)
oPortail = GetObjectByTag("WP_RECALL_CE");
else if (nAlignementGE == ALIGNMENT_EVIL && nAlignementLC == ALIGNMENT_NEUTRAL)
oPortail = GetObjectByTag("WP_RECALL_NE");
else if (nAlignementGE == ALIGNMENT_EVIL && nAlignementLC == ALIGNMENT_LAWFUL)
oPortail = GetObjectByTag("WP_RECALL_LE");
else if (nAlignementGE == ALIGNMENT_NEUTRAL && nAlignementLC == ALIGNMENT_CHAOTIC)
oPortail = GetObjectByTag("WP_RECALL_CN");
else if (nAlignementGE == ALIGNMENT_NEUTRAL && nAlignementLC == ALIGNMENT_NEUTRAL)
oPortail = GetObjectByTag("WP_RECALL_N");
else if (nAlignementGE == ALIGNMENT_NEUTRAL && nAlignementLC == ALIGNMENT_LAWFUL)
oPortail = GetObjectByTag("WP_RECALL_LN");
else if (nAlignementGE == ALIGNMENT_GOOD && nAlignementLC == ALIGNMENT_CHAOTIC)
oPortail = GetObjectByTag("WP_RECALL_CG");
else if (nAlignementGE == ALIGNMENT_GOOD && nAlignementLC == ALIGNMENT_NEUTRAL)
oPortail = GetObjectByTag("WP_RECALL_NG");
else if (nAlignementGE == ALIGNMENT_GOOD && nAlignementLC == ALIGNMENT_LAWFUL)
oPortail = GetObjectByTag("WP_RECALL_LB");
AssignCommand(oUser, ClearAllActions());
AssignCommand(oUser, ActionJumpToObject(oPortail));
IsRecall();

}
//{

//IsRecall();

//}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Chapitre A
-LA CREATION DU POINT DE CHUTE D'UN MORT

I-Pas de tri
création d'un Waypoint appelé: WP_DEATH_TEMPLE
c'est la qu'apparaitra le personnage mort en cours d'aventure.

II-Tri par alignement
création des waypoints appelés: WP_LAWFUL_NEUTRAL
WP_LAWFUL_EVIL
WP_LAWFUL_GOOD
WP_CHAOTIC_NEUTRAL
WP_CHAOTIC_EVIL
WP_CHAOTIC_GOOD
WP_NEUTRAL_EVIL
WP_NEUTRAL_GOOD
WP_NEUTRAL_NEUTRAL
WP_DEFAULT_RESPAWN

III


Chapitre B
-LA CREATION DU PORTAIL DE RETOUR SIMPLE

I-On déclare le script
Edit/module properties/events/onActiveItem/it_10_plot

ce script:
///////debut////////////////////
#include "NW_i0_plot"
void main()
{
IsRecall();
}
//////fin/////////////////////////

II-On crée le portail de retour (RECALL PORTAL)

III-Dans le OnUsed du portail
Script: nw_recall_portal

ce script:
/////debut//////
void main()
{
ActionStartConversation(GetLastUsedBy());
}
/////fin/////////
Lance une conversation dans advanced/conversation
IV-Création de la conversation : nw_00_retour

portail: téléportation ou lieu du dernier déces ?
réponse a) téléportation
réponse b) dernier déces

V-Réponse a)_Dernière téléportation
action taken/script "teleporte"
ce script teleporte


/////debut/////
#include "nw_i0_plot"
int CanAffordIt()
{
int nCost = 0; //Change 0 to the number of gold to take from Player
//As the cost of portal use.
// * remove the gold from the player
// * I'm having the player remove it from himself
// * but since I'm also destroying it, this will work

if (GetGold(GetPCSpeaker()) >= nCost)
{
TakeGold(nCost, GetPCSpeaker());
return TRUE;
}
return FALSE;
}

void main()
{
CanAffordIt();
location lLoc = GetLocalLocation(GetPCSpeaker(), "NW_L_LOC_RECALL");
// * Portal stores last location to jump to for future players
SetLocalInt(OBJECT_SELF, "NW_L_LOC_EVERUSED", 1);
SetLocalLocation(OBJECT_SELF, "NW_L_LOC_LAST_RECALL", lLoc);
ApplyEffectAtLocation(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_IMP_UNSUMMON), lLoc);
AssignCommand(GetPCSpeaker(), JumpToLocation(lLoc));
}
/////fin/////

VI-Réponse b)Dernier déces
action taken/script retourdeces
ce script "retourdeces":

/////debut/////
void main()
{

object oSelf = OBJECT_SELF;
effect eVis = EffectVisualEffect(VFX_IMP_UNSUMMON);
ApplyEffectAtLocation(DURATION_TYPE_PERMANENT, eVis, GetLocalLocation(GetPCSpeaker(),"NW_L_I_DIED_HERE"));
SetLocalInt(GetPCSpeaker(), "NW_L_I_DIED", 0);
object oPC = GetPCSpeaker();
ActionCastFakeSpellAtObject(SPELL_FREEDOM_OF_MOVEMENT, OBJECT_SELF);
AssignCommand(GetPCSpeaker(), DelayCommand(0.5, JumpToLocation(GetLocalLocation(oPC,"NW_L_I_DIED_HERE"))));
}
/////fin/////


Chapitre C
-LA CREATION DU PORTAIL DE RETOUR DANS CHAQUE TEMPLE.

I-Créer un portail de retour neutre (commun)
Tag "NW_RECALL_PORTAL

II-Créer un autre portail
Changer son tag ex: "NW_PASSAGE_TEMPLE
Créer une conversation:
portail " voulez vous aller au temple?"
Réponse a) oui
Réponse b) non

III-Réponse a) oui
Mettre dans le Action Taken ce script:

///////debut////////////////////////////////////:
void main()
{
object oItem = GetItemActivated();
object oUser = GetItemActivator();
if (oItem == GetObjectByTag("NW_IT_RECALL"))
{
int nAlignementGE = GetAlignmentGoodEvil(oUser);
int nAlignementLC = GetAlignmentLawChaos(oUser);
object oPortail;
if (nAlignementGE == ALIGNMENT_EVIL && nAlignementLC == ALIGNMENT_CHAOTIC)
oPortail = GetObjectByTag("WP_RECALL_CE");
else if (nAlignementGE == ALIGNMENT_EVIL && nAlignementLC == ALIGNMENT_NEUTRAL)
oPortail = GetObjectByTag("WP_RECALL_NE");
else if (nAlignementGE == ALIGNMENT_EVIL && nAlignementLC == ALIGNMENT_LAWFUL)
oPortail = GetObjectByTag("WP_RECALL_LE");
else if (nAlignementGE == ALIGNMENT_NEUTRAL && nAlignementLC == ALIGNMENT_CHAOTIC)
oPortail = GetObjectByTag("WP_RECALL_CN");
else if (nAlignementGE == ALIGNMENT_NEUTRAL && nAlignementLC == ALIGNMENT_NEUTRAL)
oPortail = GetObjectByTag("WP_RECALL_N");
else if (nAlignementGE == ALIGNMENT_NEUTRAL && nAlignementLC == ALIGNMENT_LAWFUL)
oPortail = GetObjectByTag("WP_RECALL_LN");
else if (nAlignementGE == ALIGNMENT_GOOD && nAlignementLC == ALIGNMENT_CHAOTIC)
oPortail = GetObjectByTag("WP_RECALL_CG");
else if (nAlignementGE == ALIGNMENT_GOOD && nAlignementLC == ALIGNMENT_NEUTRAL)
oPortail = GetObjectByTag("WP_RECALL_NG");
else if (nAlignementGE == ALIGNMENT_GOOD && nAlignementLC == ALIGNMENT_LAWFUL)
oPortail = GetObjectByTag("WP_RECALL_LB");
AssignCommand(oUser, ClearAllActions());
AssignCommand(oUser, ActionJumpToObject(oPortail));
}
}

///////////:fin///////////////////////////////////////////////////////////////////////////////:


IV-Mettre dans le temple
a coté des portails de recall (dont le tag est changé)
les Waypoints correspondants
ex: WP_RECALL_CN

Par Le loup blanc le 29/1/2003 à 21:05:09 (#3129145)

Ouuuaaa c'est hard ton truc la moi qui n arrive po a faire simplement chanter ou parler un personnage et meme utiliser le journal pour cree un scénario he ben la je suis a plaindre :sanglote: :sanglote: :sanglote: pauvre de ma personne peu être j'y arriverai un jour

le loup blanc

Par Jaha Effect le 29/1/2003 à 21:26:19 (#3129321)

Tu veux pas nous mettre des balises PHP stp, blam là c'est illisible :(

Jaha Effect :D

Nom d'une confiture de Gnoll

Par Eltannus le 30/1/2003 à 8:57:30 (#3131809)

Salut JaJa

J'ai fait la rectification dans le OnActivedItem

et fait mon dialogue de Pierre. J'y ai place des scripts de direction

void main()
{
oPC = GetPCSpeaker );
AssignCommand(oPC, JumpToObject(GetWaypointByTag("WP_02")));
}

Mon compilateur ne veux pas le compiler

Erreur No left bracket on arg list

oula! etant donner que mon anglais est plus bas que mes notions de scripts mouarfff

JaJa vite ta baguette magique

Eltannus un ami qui vous veux du bien

Par Jaha Effect le 30/1/2003 à 9:02:16 (#3131826)

Elle est là l'erreur, Bracket ça veux dire parenthèse et y'en a une qui manque ici

oPC = GetPCSpeaker );

il faut mettre
oPC = GetPCSpeaker ();


Jaha Effect :D

Par eMRaistlin le 30/1/2003 à 9:20:17 (#3131891)

et comme on aime les script qui compilent bien, on va meme mettre :


void main()
{
object oPC = GetPCSpeaker ();
AssignCommand(oPC, JumpToObject(GetWaypointByTag("WP_02")));
}

Par Jaha Effect le 30/1/2003 à 9:23:03 (#3131906)

Vi je deviens un peu fénéant au bout de 38h sans dormir à scripter et mapper comme un fou :)

Jaha Effect :D

oula

Par Eltannus le 30/1/2003 à 12:48:59 (#3133030)

38 h sans dormir!
Damned mais comment fais tu?

tu tournes à quoi, café calva....

Mon cher JaJa, tu sais que les 35 heures existent...et surtout qu'ils ne sont pas a faire de façon continue. On peut les repartir sur la semaine.... mouarffff

Et oui, je comprends qu'on puisse oublier une petite ), mais c'est autant pour moi ( moi qui dort 38 h d'affilé ), j'aurais pu le voir ( je n'étais pas encore reveillé ) remouarfff

Eltannus....tiens je suis passé Ecuyer. Super.....je file vite au marché pour echanger mon superbe bourricot de Palfrenier, car j'ai proposition d'un certain crieur publique qui vend un sympathique canasson...je sens que je vais me faire avoir!

re script pierre de Rappel

Par Eltannus le 31/1/2003 à 9:06:00 (#3139267)

Bonjour a tous

Pour la pierre de Rappel, j'ai mis ce script
void main()
{
object oItem = GetItemActivated();
object oPc = GetItemActivator();
location loc = GetLocation(oPc);
{
if (GetTag(oItem) == "tag de l'objet qui quand utilisé teleportera vers...")
SetLocalLocation(oItem, "BINDPOINT", loc);
SetLocalInt(oItem, "USED", 1);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_2), loc);
}
}
Comme je souhaitais ouvrir une fenetre qui puisse permettre au PJ de choisir 3 direction à partir d'un dialogue, vous m'avez conseillé judicieusement
J'ai créé le dial avec les scripts qui vous m'avez donner plus haut pour aller vers mes 3 wp.

Mon pb est que je n'arrive pas a inclure dans le script ci dessus une ligne de commande qui lance le dial "dial_direction"
j'ai essayé d'inclure cette commande
ActionStartConversation(GetLastUsedBy(),"dial_direction",TRUE);
mais elle ne fonctionne pas.

Auriez vous une idee s'il vous plait

Eltannus le mage au dialogue difficile

Par Jaha Effect le 31/1/2003 à 9:38:14 (#3139409)

Je crois que ça marchera mieux comme ça :)

ActionStartConversation(oPC, "dial_direction", TRUE);


Jaha Effect :D

Merci

Par Eltannus le 31/1/2003 à 12:15:12 (#3140513)

dit moi JaJA

cette ligne, ou serait le meilleur endroit pour la placer dans le script?

Amicalement

Par Jaha Effect le 31/1/2003 à 17:43:43 (#3142992)

Comme ça, ça compile très bien

void main()
{
object oItem = GetItemActivated();
object oPc = GetItemActivator();
location loc = GetLocation(oPc);
{
if (GetTag(oItem) == "TAG")
SetLocalLocation(oItem, "BINDPOINT", loc);
SetLocalInt(oItem, "USED", 1);
ActionStartConversation(GetItemActivator(), "dial_direction", TRUE);
}
}


Jaha Effect :D

Eureka

Par Eltannus le 31/1/2003 à 21:20:21 (#3144583)

Merci infiniment cela fonctionne du feu des Dieux

j'ai fait une variante que je livre un peu plus tard pour votre bibliotheque si vous le souhaitez

A vous tous je vous remercie

maintenant, je vais travailler sur le portail de teleportation et de retour avant deces

Eltannus qui vous remercie de votre aide

Par Jaha Effect le 31/1/2003 à 21:27:02 (#3144619)

Par contre essaye de mettre tes scriptes entre des balises PHP, c'est vraiment lourd à décrypter sinon :)

Jaha Effect :D

bien compris

Par Eltannus le 31/1/2003 à 21:42:17 (#3144704)

Message reçu , il en sera ainsi

Amicalement Eltannus

Par jwrk le 1/2/2003 à 10:44:58 (#3147128)

J'ai voulu faire un script pour un objet qui parle de la sorte, mais étrangement, s'il compile le mieux du monde, il ne fonctionne pas en cours de jeu. Connaitriez-vous un moyen de voir où un script ne fonctionne pas en dehors de la compilation ?

Par Florin le 1/2/2003 à 10:51:07 (#3147150)

Si ça peut t'aider tu as ici

Par jwrk le 1/2/2003 à 20:24:28 (#3150248)

Ceal m'a aidé e n effet merci. Cela m'a permis de situer le problème, il est au niveau du déclenchement de dialogue.

J'ai fait ce script dans le Onactivateitem:

void main()
{
object oItem = GetItemActivated();
object oPc = GetItemActivator();
{
if (GetTag(oItem) == "cartepirate")
SendMessageToPC(GetFirstPC(), "bonjour");

void main()
{
object oItem = GetItemActivated();
object oPc = GetItemActivator();
{
if (GetTag(oItem) == "cartepirate")
SendMessageToPC(GetFirstPC(), "grave");

ActionStartConversation(GetLastUsedBy(),"cartepirate",TRUE);


}
}



}
}

cartepirate est le tag de mon object et le resref de mon dialogue. Le jeu me dit bien bonjour mais ne déclenche pas le dialogue, pourtant je crois bien que le code est le même que certains des vôtre. Voyez-vous d'où peu venir le problème d ans cette damnée ligne
ActionStartConversation(GetLastUsedBy(),"cartepirate",TRUE); ?

Par Jedaï le 1/2/2003 à 20:39:32 (#3150331)

Euh..tu me fais peur là ..
C'est une erreur de copier-coller le main() au beau milieu du main(), n'est-ce pas ? :D

Ben sinon, le script correct devrait donner ça :


void main()
{
object oItem = GetItemActivated();
object oPC = GetItemActivator();

if (GetTag(oItem) == "cartepirate")
{
AssignCommand(oPC, ActionStartConversation(oPC,"cartepirate",TRUE));
}
}


Ca devrait marcher si le tag et le resref sont bon.:ange:

Par jwrk le 2/2/2003 à 11:01:12 (#3153231)

Oui, c'est bien une erreur de copier-coller.

Ceci dit, le tag est bon, puisqu'il affiche bonjour. Voyons... Ah, j'ai compris, j'ai oublié le AssignCommand. Merci.

P.S.: Cela compile, je vais voir si cela marche.

P.P.S.: On m'a souvent dit que j'étais effrayant, et parfois ce n'était pas un reproche...

Par Jedaï le 2/2/2003 à 12:00:47 (#3153493)

On m'a souvent dit que j'étais effrayant, et parfois ce n'était pas un reproche...


;)

Pierre mutildirections

Par Eltannus le 2/2/2003 à 22:57:41 (#3157551)

voici le script pour une pierre multidirections
------------------------------------------------------------------------------------
phase 1:

Creer le blueprint et le tag de la pierre de rappel
------------------------------------------------------------------------------------
Phase 2

Script a mettre dans le OnActivedItem

void main()

{
object oItem = GetItemActivated();
object oPierre = GetObjectByTag("Tag de la pierre");
object oPc = GetItemActivator();
location loc = GetLocation(oPc);
{
if (GetTag(oItem) == "Tag de la pierre")
{
SetLocalLocation(oItem, "BINDPOINT", loc);
SetLocalInt(oItem, "USED", 1);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_2), loc);
AssignCommand( oPc, JumpToLocation( GetLocation( GetWaypointByTag( "WP_00" ))));
}
if (GetTag(oItem) == "Tag de la pierre")
{
SetLocalInt(oItem, "USED", 1);
AssignCommand( oPc, ActionStartConversation( oPc, "reference dialoque", TRUE ) );
}
}
}

Remplacer "tag de la pierre" uniquement et "reference dialogue"
------------------------------------------------------------------------------------

Phase 3

Placer un waypoint dans les endroits souhaités

par exemple hopital nom:hopital tag:WP_O1 ect...WP_02...

------------------------------------------------------------------------------------
Phase 4

puis
creer un dialogue "reference dialogue" par exemple "dial_direction"

1) PnJ: Quelle direction voulez vous prendre ( fin de dialogue )

2) PJ: Je veux prendre la direction de l'hopital ( fin de dialogue )

placer dans actions consequentes

void main()
{
object oPc = GetPCSpeaker();
location loc = GetLocation(oPc);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_2), loc);
AssignCommand( oPc, JumpToLocation( GetLocation( GetWaypointByTag( "tag way point corespondant à lalocalisation" ))));//Change le TAG pour une autre destination -> un script par destination :/
}

3) PJ: Je veux prendre la direction de la forge ( fin de dialogue )

placer dans actions consequentes

void main()
{
object oPc = GetPCSpeaker();
location loc = GetLocation(oPc);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_2), loc);
AssignCommand( oPc, JumpToLocation( GetLocation( GetWaypointByTag( "tagwaypoint correspondant à la localisation" ))));//Change le TAG pour une autre destination -> un script par destination :/
}

4) PJ: Je veux prendre la direction de la banque ( fin de dialogue )

placer dans actions consequentes

void main()
{
object oPc = GetPCSpeaker();
location loc = GetLocation(oPc);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_2), loc);
AssignCommand( oPc, JumpToLocation( GetLocation( GetWaypointByTag( "Tag waypoint correspondant à la localisation" ))));//Change le TAG pour une autre destination -> un script par destination :/
}

5) PJ: Je veux prendre la direction du port ( fin de dialogue )

placer dans actions consequentes

void main()
{
object oPc = GetPCSpeaker();
location loc = GetLocation(oPc);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_2), loc);
AssignCommand( oPc, JumpToLocation( GetLocation( GetWaypointByTag( "Tag waypoint correspondant à la localisation" ))));//Change le TAG pour une autre destination -> un script par destination :/
}

------------------------------------------------------------------------------------

6) revenir au dernier endroit

je dois faire un complement avec une derniere possibilite vers dernier point d'action de la pierre par le PJ. Ainsi le Pj qui se trouve a l'autre bout du module pourra revenir à l'endroit ou il se trouvait précedemment.
------------------------------------------------------------------------------------

Et voila

Eltannus vous souhaites une bonne direction et que le Dieu des direction soit avec vous...et que le Dieu des Pierres aussi.

Par Kaïba le 2/2/2003 à 23:20:45 (#3157661)

heu... Eltannus il serais bien que tu met les différents script entre des balises php pour la lisibilités car la on ne si retrouve pas :maboule: :rasta:

Par Jaha Effect le 2/2/2003 à 23:24:45 (#3157680)

Hum et les balises PHP :)

Jaha Effect :D

JOL Archives 1.0.1
@ JOL / JeuxOnLine