Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Teleporte selon la classe AIDE SVP
Teleporte selon la classe AIDE SVP
Par ruru666 le 3/2/2003 à 9:34:54 (#3159175)
OBJECTIF / Commentaire :
Au préalable vous devrez faire autant de waypoints que de classe.
Par exemple faite un waypoint avec un tag WP_BARBARIAN, ainsi le barbare sortira par la alors que le clerc non héhé
void main()
{
object oUser = GetLastUsedBy();
int nClassID1 = GetClassByPosition( 1, oUser );
// int nClassID2 = GetClassByPosition( 2, oUser );
// int nClassID3 = GetClassByPosition( 3, oUser );
object oWP;
switch ( nClassID1 )
{
case 0: // Point de sortie pour le barbare
oWP = GetObjectByTag( "WP_BARBARIAN" );
break;
case 1: // Point de sortie pour le barde
oWP = GetObjectByTag( "WP_BARD" );
break;
case 2: // Point de sortie pour le clerc
oWP = GetObjectByTag( "WP_CLERIC" );
break;
case 3: // Point de sortie pour le druide
oWP = GetObjectByTag( "WP_DRUID" );
break;
case 4: // Point de sortie pour le guerrier
oWP = GetObjectByTag( "WP_FIGHTER" );
break;
case 5: // Point de sortie pour le moine
oWP = GetObjectByTag( "WP_MONK" );
break;
case 6: // Point de sortie pour le paladin
oWP = GetObjectByTag( "WP_PALADIN" );
break;
case 7: // Point de sortie pour le ranger
oWP = GetObjectByTag( "WP_RANGER" );
break;
case 8: // Point de sortie pour le rogue
oWP = GetObjectByTag( "WP_ROGUE" );
break;
case 9: // Point de sortie pour le sorcier
oWP = GetObjectByTag( "WP_SORCERER" );
break;
case 10: // Point de sortie pour le magicien
oWP = GetObjectByTag( "WP_WIZARD" );
break;
}
AssignCommand( oUser, ActionJumpToObject( oWP ));
}
Par Kaïba le 3/2/2003 à 10:03:39 (#3159322)
Par ruru666 le 3/2/2003 à 10:09:55 (#3159353)
Par eMRaistlin le 3/2/2003 à 10:17:45 (#3159391)
Par ruru666 le 3/2/2003 à 10:22:51 (#3159409)
Pourais je avoir votre lumiere ???.....
Par eMRaistlin le 3/2/2003 à 11:08:01 (#3159739)
Donc, tu appuie sur le petit bouton "Edit" en bas de ton post, et tu regarde comment on fait pour rendre un code plus lisible :)
Par ruru666 le 3/2/2003 à 11:16:49 (#3159801)
sinon cher moderateur, pourkoi ca marche pas ???
Le truc c kil ce passe kelke chose mais le magiciens ke j utilise pour tester ce truc et teleporté plus loin mais pas au WP de magicien, pourkoi ???? (pareil pour les otres classes)
Par Jaha Effect le 3/2/2003 à 11:26:47 (#3159870)
Jaha Effect :D
Par eMRaistlin le 3/2/2003 à 11:27:35 (#3159878)
Au pire, essaye de faire ca:
void main()
{
object oUser = GetLastUsedBy();
int nClassID1 = GetClassByPosition( 1, oUser );
// int nClassID2 = GetClassByPosition( 2, oUser );
// int nClassID3 = GetClassByPosition( 3, oUser );
object oWP;
switch ( nClassID1 )
{
case 0: // Point de sortie pour le barbare
oWP = GetWaypointByTag( "WP_BARBARIAN" );
break;
case 1: // Point de sortie pour le barde
oWP = GetWaypointByTag( "WP_BARD" );
break;
case 2: // Point de sortie pour le clerc
oWP = GetWaypointByTag( "WP_CLERIC" );
break;
case 3: // Point de sortie pour le druide
oWP = GetWaypointByTag( "WP_DRUID" );
break;
case 4: // Point de sortie pour le guerrier
oWP = GetWaypointByTag( "WP_FIGHTER" );
break;
case 5: // Point de sortie pour le moine
oWP = GetWaypointByTag( "WP_MONK" );
break;
case 6: // Point de sortie pour le paladin
oWP = GetWaypointByTag( "WP_PALADIN" );
break;
case 7: // Point de sortie pour le ranger
oWP = GetWaypointByTag( "WP_RANGER" );
break;
case 8: // Point de sortie pour le rogue
oWP = GetWaypointByTag( "WP_ROGUE" );
break;
case 9: // Point de sortie pour le sorcier
oWP = GetWaypointByTag( "WP_SORCERER" );
break;
case 10: // Point de sortie pour le magicien
oWP = GetWaypointByTag( "WP_WIZARD" );
break;
}
AssignCommand( oUser, ClearAllActions());
AssignCommand( oUser, ActionJumpToObject( oWP ));
}
Mais honnetement, ca devrait pas y changer grand cose, si ce n'est que le clearallactions evitera peut etre que le PnJ finisse le mouvement en cours avant de se teleporter... (enfin, avant et apres...)
Par ruru666 le 3/2/2003 à 11:31:43 (#3159907)
Je pompe les scripts pour ma campagne et ken ca marche je suis content et vous n entendez pas parler de moi mais ken ca ne marche pas je vous casse les pieds...
Ce script viens de Nwn-fr : http://www.hellfire.firstream.net/
et j aimerais bien ke un dieu du scripting puisse me resoudre ca, J EN AIS BESOIN SVP :)
Par ruru666 le 3/2/2003 à 11:35:25 (#3159934)
Par Jaha Effect le 3/2/2003 à 11:39:27 (#3159965)
void main()
{
object oUser = GetLastUsedBy();
int nClassID1 = GetClassByPosition( 1, oUser );
// int nClassID2 = GetClassByPosition( 2, oUser );
// int nClassID3 = GetClassByPosition( 3, oUser );
object oWP;
switch ( nClassID1 )
{
case CLASS_TYPE_BARBARIAN: // Point de sortie pour le barbare
oWP = GetWaypointByTag( "WP_BARBARIAN" );
break;
case CLASS_TYPE_BARD: // Point de sortie pour le barde
oWP = GetWaypointByTag( "WP_BARD" );
break;
case CLASS_TYPE_CLERIC: // Point de sortie pour le clerc
oWP = GetWaypointByTag( "WP_CLERIC" );
break;
case CLASS_TYPE_DRUID: // Point de sortie pour le druide
oWP = GetWaypointByTag( "WP_DRUID" );
break;
case CLASS_TYPE_FIGHTER: // Point de sortie pour le guerrier
oWP = GetWaypointByTag( "WP_FIGHTER" );
break;
case CLASS_TYPE_MONK: // Point de sortie pour le moine
oWP = GetWaypointByTag( "WP_MONK" );
break;
case CLASS_TYPE_PALADIN: // Point de sortie pour le paladin
oWP = GetWaypointByTag( "WP_PALADIN" );
break;
case CLASS_TYPE_RANGER: // Point de sortie pour le ranger
oWP = GetWaypointByTag( "WP_RANGER" );
break;
case CLASS_TYPE_ROGUE: // Point de sortie pour le rogue
oWP = GetWaypointByTag( "WP_ROGUE" );
break;
case CLASS_TYPE_SORCERER: // Point de sortie pour le sorcier
oWP = GetWaypointByTag( "WP_SORCERER" );
break;
case CLASS_TYPE_WIZARD: // Point de sortie pour le magicien
oWP = GetWaypointByTag( "WP_WIZARD" );
break;
}
AssignCommand( oUser, ClearAllActions());
AssignCommand( oUser, ActionJumpToObject( oWP ));
}
Jaha Effect :D
Par eMRaistlin le 3/2/2003 à 11:40:28 (#3159975)
Essaye de deplacer tes WP (sur un endroit plat si possible). Si tu constate que le deplacement du point d'arrive est toujours la, et constant, au lieu de t'embeter, deplace le WP pour que l'arrivée soit a l'endroit modifié ^^
Mais je pense vraiment que ca vient des WP.
Par ruru666 le 3/2/2003 à 12:13:04 (#3160235)
Je cree un trigger de transition de zone, je place le script dans le on enter, et je met mes WP avec le tag du script aproprié, le tout dans une map donjon (donc c bien plat).
ca viens probablement du script ou de ma procedure, mais ken jutilise un system avec les WP (genre un teleport bidon) ou le systeme de trape caché du HCR je n est aucun probleme
:hardos: :rasta: :sanglote:
Par eMRaistlin le 3/2/2003 à 12:22:54 (#3160311)
@ruru, fais des tests en bougeant tes WP : ca ne vient pas du script, cherche ailleurs...
Par ruru666 le 3/2/2003 à 13:59:08 (#3160993)
Rien a faire je suis desespéré...
Par eMRaistlin le 3/2/2003 à 14:12:37 (#3161108)
void main()
{
object oUser = GetLastUsedBy();
int nClassID1 = GetClassByPosition( 1, oUser );
// int nClassID2 = GetClassByPosition( 2, oUser );
// int nClassID3 = GetClassByPosition( 3, oUser );
object oWP;
switch ( nClassID1 )
{
case 0: // Point de sortie pour le barbare
oWP = GetWaypointByTag( "WP_BARBARIAN" );
break;
case 1: // Point de sortie pour le barde
oWP = GetWaypointByTag( "WP_BARD" );
break;
case 2: // Point de sortie pour le clerc
oWP = GetWaypointByTag( "WP_CLERIC" );
break;
case 3: // Point de sortie pour le druide
oWP = GetWaypointByTag( "WP_DRUID" );
break;
case 4: // Point de sortie pour le guerrier
oWP = GetWaypointByTag( "WP_FIGHTER" );
break;
case 5: // Point de sortie pour le moine
oWP = GetWaypointByTag( "WP_MONK" );
break;
case 6: // Point de sortie pour le paladin
oWP = GetWaypointByTag( "WP_PALADIN" );
break;
case 7: // Point de sortie pour le ranger
oWP = GetWaypointByTag( "WP_RANGER" );
break;
case 8: // Point de sortie pour le rogue
oWP = GetWaypointByTag( "WP_ROGUE" );
break;
case 9: // Point de sortie pour le sorcier
oWP = GetWaypointByTag( "WP_SORCERER" );
break;
case 10: // Point de sortie pour le magicien
oWP = GetWaypointByTag( "WP_WIZARD" );
break;
}
AssignCommand( oUser, ClearAllActions());
AssignCommand( oUser, ActionJumpToLocation(GetLocation(oWP) ));
}
Par ruru666 le 3/2/2003 à 14:23:04 (#3161198)
Bon merci ken meme je v me passer de ce script mer..que ki ma fait perdre une matiné et vous votre tps... Désolé.
Par eMRaistlin le 3/2/2003 à 14:28:28 (#3161245)
Je cree un trigger de transition de zone, je place le script dans le on enter, et je met mes WP avec le tag du script aproprié, le tout dans une map donjon (donc c bien plat).
meme resultat, le rogue est deplacé de kelke pas,
tu es sur qu'il est teleporté??
Bon, on va faire un deuxieme essai, mais s'il te plait, quand tu decrit un probleme, evite de nous mettre sur des fausses pistes : Exemple : je suis au boulot, je n'ai pas l'editeur sous la main, je ne peut pas me fier a autre chose que tes descriptions... arrange toi pour ne pas nous induire en erreur :p
Essaye ca :
void main()
{
object oUser = GetEnteringObject();
int nClassID1 = GetClassByPosition( 1, oUser );
// int nClassID2 = GetClassByPosition( 2, oUser );
// int nClassID3 = GetClassByPosition( 3, oUser );
object oWP;
switch ( nClassID1 )
{
case 0: // Point de sortie pour le barbare
oWP = GetWaypointByTag( "WP_BARBARIAN" );
break;
case 1: // Point de sortie pour le barde
oWP = GetWaypointByTag( "WP_BARD" );
break;
case 2: // Point de sortie pour le clerc
oWP = GetWaypointByTag( "WP_CLERIC" );
break;
case 3: // Point de sortie pour le druide
oWP = GetWaypointByTag( "WP_DRUID" );
break;
case 4: // Point de sortie pour le guerrier
oWP = GetWaypointByTag( "WP_FIGHTER" );
break;
case 5: // Point de sortie pour le moine
oWP = GetWaypointByTag( "WP_MONK" );
break;
case 6: // Point de sortie pour le paladin
oWP = GetWaypointByTag( "WP_PALADIN" );
break;
case 7: // Point de sortie pour le ranger
oWP = GetWaypointByTag( "WP_RANGER" );
break;
case 8: // Point de sortie pour le rogue
oWP = GetWaypointByTag( "WP_ROGUE" );
break;
case 9: // Point de sortie pour le sorcier
oWP = GetWaypointByTag( "WP_SORCERER" );
break;
case 10: // Point de sortie pour le magicien
oWP = GetWaypointByTag( "WP_WIZARD" );
break;
}
AssignCommand( oUser, ClearAllActions());
AssignCommand( oUser, ActionJumpToLocation(GetLocation(oWP) ));
}
Par ruru666 le 3/2/2003 à 14:45:35 (#3161375)
MERCI !!!! ca MARCHE !!!!
Par eMRaistlin le 3/2/2003 à 14:52:54 (#3161425)
Pour info :
Tu avais un GetLastUsedBy qui se met sur les OnUsed.
Hors, ton script, tu le met sur le OnEnter, il te fallait donc mettre GetEnteringObject() pour recuperer l'objet qui entre, et non l'objet qui Utilise (comme dans le menu radial). C'est pourquoi cela ne marchait pas.
Je te rassure, tu m'embete pas, sinon, je te donnerait pas d'aide, mais je voulais juste te faire remarquer que quand tu a commence le thread, tu as dis que ca marchait, mais mal... Hors le script ne fonctionne pas.
Et cela, j'ai ete oblige de le lire entre les lignes...
C'est pourquoi je t'encourage, par respect pour ceux qui veulent t'aider, a mettre des balise PHP pour rendre les script clairs, et a bien decrire ton probleme... exactement...
D'ailleurs, tu vois, c'est vrai que decrire tres precisement prend du temps, mais tu avouera que ca prend pas une matinée... temps qu'on a perdu sur une fausse piste :p
Voili voilou ^^
Par Jaha Effect le 3/2/2003 à 16:46:22 (#3162304)
Jaha Effect :D
JOL Archives 1.0.1
@ JOL / JeuxOnLine