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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Teleporte selon la classe AIDE SVP

Par ruru666 le 3/2/2003 à 9:34:54 (#3159175)

voila un scripte interressant que je veux utiliser pour disperser les joueurs et leur foutre la pétoche, mais g fais un essaie en tps ke maitre de jeu avec des pnj de chaque classe et il sont teleporté juste un pe plus loin mais pas au WP ke g placé, alors voila le script dite moi les pros ce ke vous en pensé :

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)

hu ... :confus: et les balises PHP ?

Par ruru666 le 3/2/2003 à 10:09:55 (#3159353)

Pardon ?............

Par eMRaistlin le 3/2/2003 à 10:17:45 (#3159391)

Edite ton message, et regarde ce que j'ai rajoute. C'est quand meme mieux pour ceux qui vont lire derriere... :)

Par ruru666 le 3/2/2003 à 10:22:51 (#3159409)

Pardon mais j'ai loupé kelke chose ??? Mon cher moderateur tout puissant :)

Pourais je avoir votre lumiere ???.....

Par eMRaistlin le 3/2/2003 à 11:08:01 (#3159739)

Regarde ton premier post, je l'ai edite avec des balises PHP.

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)

Ha ok pardon, mais ca resoud pa mon probleme, BOUUUUUUU :hardos:

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)

Bha le problème, tu as bien ta liste de waypoint de destination, tu regarde bien la classe de ton PNJ mais a aucun moment tu attribue une destination à une classe, ça peux pas marcher.

Jaha Effect :D

Par eMRaistlin le 3/2/2003 à 11:27:35 (#3159878)

Ca ne doit pas venir du script, alors. ca doit venir de la position des WP, qui ne doit pas être directement praticable.

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)

Apres reflexion c bien ce ki me semblait mais le script na pa ete fais par moi car je suis incapable de ca, je suis un MD c tout...

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)

en effet ca n a rien changé...

Par Jaha Effect le 3/2/2003 à 11:39:27 (#3159965)

Ca devrait marcher un peu mieux comme ça

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)

A mon avis, c'est une question de coordonnées spaciales non valides, je pense, mais ca reste a verifier.

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)

ca ne marche toujours pa j'explike ce ke je fais au cas ou ca vienne de moi :

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)

Ca ne vient pas du script : il est simple est bien fait (le tien aussi, jaha :) mais juste pour info, fais un AssignCommand(oPC,SpeakString(IntToString(CLASS_TYPE_BARBARIAN))); tu verra pourquoi ca marche ^^)


@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)

ca fais une heure kr j essaye tout ce ke je pe faire, en creant la partie en tps ke MD ou Joueur, en mettant les WP dans une otre zone...

Rien a faire je suis desespéré...

Par eMRaistlin le 3/2/2003 à 14:12:37 (#3161108)

dernier option : essaye 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, ActionJumpToLocation(GetLocation(oWP) ));
}

Par ruru666 le 3/2/2003 à 14:23:04 (#3161198)

meme resultat, le rogue est deplacé de kelke pas, mais pas au WP ki lui est destiné...

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)

Euh, un horrible doute me tarraude...



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)

Ben je pensais avoir ete clair, et je c ke tu est en train de bosser c pa la premierre fois ke je te tarrabuske avec mes problemes donc :


MERCI !!!! ca MARCHE !!!!

Par eMRaistlin le 3/2/2003 à 14:52:54 (#3161425)

Vi, je m'en doutais, que ca marcherait mieux :p

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)

La voix de la sagesse ce eMR ;)

Jaha Effect :D

JOL Archives 1.0.1
@ JOL / JeuxOnLine