Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > [Script] Recall_Portal - - besoin d'aide
[Script] Recall_Portal - - besoin d'aide
Par Shadowalker le 26/11/2002 à 23:54:32 (#2652406)
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)
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)
tu avais un pas a pas
Par Blam le 27/11/2002 à 12:35:50 (#2655189)
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)
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)
Jaha Effect :D
Demande variante Pierre de rappel
Par Eltannus le 26/1/2003 à 13:20:25 (#3102955)
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)
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)
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)
et bé!
Par Eltannus le 27/1/2003 à 13:30:53 (#3110508)
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)
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)
Vers l'hopitalvoid main()
{
oPC = GetPCSpeaker );
AssignCommand(oPC, JumpToObject(GetWaypointByTag("WP_02")));
}
Vers la forgevoid main()
{
oPC = GetPCSpeaker );
AssignCommand(oPC, JumpToObject(GetWaypointByTag("WP_03)));
}
Vers la banquevoid main()
{
oPC = GetPCSpeaker );
AssignCommand(oPC, JumpToObject(GetWaypointByTag("WP_04")));
}
Et dans ton OnActivateItem il faut que tu metteActionStartConversation(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)
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)
Par Jaha Effect le 29/1/2003 à 17:29:24 (#3127481)
Jaha Effect :D
effectivement coolstar
Par Blam le 29/1/2003 à 17:35:51 (#3127540)
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)
le loup blanc
Par Jaha Effect le 29/1/2003 à 21:26:19 (#3129321)
Jaha Effect :D
Nom d'une confiture de Gnoll
Par Eltannus le 30/1/2003 à 8:57:30 (#3131809)
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)
oPC = GetPCSpeaker );
il faut mettreoPC = GetPCSpeaker ();
Jaha Effect :D
Par eMRaistlin le 30/1/2003 à 9:20:17 (#3131891)
void main()
{
object oPC = GetPCSpeaker ();
AssignCommand(oPC, JumpToObject(GetWaypointByTag("WP_02")));
}
Par Jaha Effect le 30/1/2003 à 9:23:03 (#3131906)
Jaha Effect :D
oula
Par Eltannus le 30/1/2003 à 12:48:59 (#3133030)
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)
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)
ActionStartConversation(oPC, "dial_direction", TRUE);
Jaha Effect :D
Merci
Par Eltannus le 31/1/2003 à 12:15:12 (#3140513)
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)
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)
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)
Jaha Effect :D
bien compris
Par Eltannus le 31/1/2003 à 21:42:17 (#3144704)
Amicalement Eltannus
Par jwrk le 1/2/2003 à 10:44:58 (#3147128)
Par jwrk le 1/2/2003 à 20:24:28 (#3150248)
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)
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)
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)
------------------------------------------------------------------------------------
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)
Par Jaha Effect le 2/2/2003 à 23:24:45 (#3157680)
Jaha Effect :D
JOL Archives 1.0.1
@ JOL / JeuxOnLine