La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 23/11/2024 18:39:46
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
sylveran Ecuyer Messages: 57 Localisation: dijon |
Bonjour à vous
voila en fait pour le moment je ne maitrise pas encore tres bien les cnditions dans les scrypts et je voudrais savoir comment faire spawner un pj à un waypoint correspondant à un item (ex: clef,anneau...)à partir d'un portail (si le pj à l'anneau, il spawn à l'endroit xxx et si il à la clef il spawn a l'endroit yyy) merci d'avance _________________ |
Revenir en haut | |
grosraoul Ecuyer Messages: 60 |
qu'apelles tu "spawner " exactement ? se téléporter ?
si tel est le cas , je pense que tu pourrais faire un script du genre : NWScript :
void main() { oPC=GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC); if (GetItemActivated()==GetObjectByTag(<le tag de ton objet xxx) { AssignCommand(oPC,ActionJumpToLocation(GetLocation(GetObjectByTag(<tag de ton objet d'arrivée xxx)); } if (GetItemActivated()==GetObjectByTag(<le tag de ton objet yyy) { AssignCommand(oPC,ActionJumpToLocation(GetLocation(GetObjectByTag(<tag de ton objet d'arrivée yyy)); } } /* warning: 2 unclosed parenthesis () */ tu mets ce script à priori dans le script OnItemActiveted de ton module (dans propriétés du module) et ca devrait rouler a peu pres. Quand ton perso utilisera l'objet xxx , il se teleportera a la loc xxx (comme dans la campagne de base avec la pierre de rappel) Si tu ne veux que tester la possession, ben j'ecrirais un truc du genre pour la condition: NWScript :
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème. dans ce cas n'oublie pas de rajouter l'include : #include "nw_i0_tool" ( car HasItem n'est pas une fonction de base ) |
Revenir en haut | |
sylveran Ecuyer Messages: 57 Localisation: dijon |
|
Revenir en haut | |
sylveran Ecuyer Messages: 57 Localisation: dijon |
Le scrypt marche bien mais par contre le pj se teleporte que si on active l'objet or se n'est pas se que je voulais
En fait je me suis mal exprimé je voulais que le pj se teleporte via un portail et que si il à la clef il arrive à l'endroit xxx, alors que si il a l'anneau il arrive à l'endroit yyy Si vous aviez une soluce merci beaucoup _________________ |
Revenir en haut | |
grosraoul Ecuyer Messages: 60 |
ok c'est pas trop dur .
voila tu crée un placeable genre portail ou colonne de lumiere enfin ce que tu veux, tu coches la case "utilisable" et ensuite tu fais un script sur le "on used" de cet objet du genre : NWScript :
#include "nw_i0_tool" void main() { object oPC=GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC); if (HasItem(oPC,"tag_xxx")==TRUE) { AssignCommand(oPC,ActionJumpToLocation(GetLocation(GetObjectByTag("tag_objet_destination_xxx")))); } if (HasItem(oPC,"tag_yyy")==TRUE) { AssignCommand(oPC,ActionJumpToLocation(GetLocation(GetObjectByTag("tag_objet_destination_yyy")))); } } ca marche bien , a condition de ne pouvoir avoir qu'un seul des deux objets , si tu n'en a aucun il ne se passe rien mais si tu as les deux ... alors la mystere il doit donner la priorité au premier "if" je pense mais c'est pas sur. voila j'espere avoir bien compris ton soucis cette fois et t'avoir aidé . tcho. PS pour les curieux : HasItem est une fonction cachée , elle n'apparait qu'avec le truc de script automatique ... |
Revenir en haut | |
Devilon Bersek Ecuyer Messages: 59 Localisation: Certainement dans une forge...sinon a Beaune |
bonjour, je travaille avec Sylveran, merci beaucoup, ça devrait nous aider...encore merci8)
|
Revenir en haut | |
Joubinator Ecuyer Messages: 42 Localisation: Yvelines |
J'arrive en retard et GrosRaoul vous a déjà tres bien répondu.
Vu le pb de priorité entre les deux anneaux, il faut faire juste une hierarchie dans les "if" comme le disais GrosRaoul. Je me suis permis de reprendre le script précedent, et remodelé le contenu pour faire en sorte que le tagxxx passe avant le tag yyyy, et que si le pc n'a pas le ou les anneaux , un petit message apparait NWScript :
#include "nw_i0_tool" void main() { object oPC= GetLastUsedBy();pour un Objet, mettre script dans le OnUsed if (HasItem(oPC,"tag_xxx")) { AssignCommand(oPC,ActionJumpToLocation(GetLocation(GetObjectByTag("tag_objet_destination_xxx")))); } else if (HasItem(oPC,"tag_yyy")) { AssignCommand(oPC,ActionJumpToLocation(GetLocation(GetObjectByTag("tag_objet_destination_yyy")))); } SendMessageToPC(oPC, "Vous n'avez pas les bons objets pour vous teleporter"); } Concernant le HasItem, cette commande est "cachée" dans le script "nw_i0_tool". Inscrit comme ceci #include "nw_i0_tool" , on appelle cela un bibliothque de script. Dans l'éditeur de script de Aurora tu ne peux voir les fonctions cachées que si tu places en #include "xxxxxxxxxxx" le script bibliotheque. Il faut savoir que toutes les fonctions "cachées" ne sont pas contenues dans un seul script, se serait trop facile _________________ M'enfous si les pjs tuent mes monstres,.... j'en ai plein (paroles d'un DM d'expérience ) |
Revenir en haut | |
grosraoul Ecuyer Messages: 60 |
je croyais que quand tu cherchais une fonction , elle apparaissait en gras dans la petite case si elle etait dans un include , j'ai du me tromper
|
Revenir en haut | |
Joubinator Ecuyer Messages: 42 Localisation: Yvelines |
Non tu t'es pas trompé.
Ce que tu ecris est juste ! Tu completes meme ce que j'annonçais (principe de la communauté des forums ) _________________ M'enfous si les pjs tuent mes monstres,.... j'en ai plein (paroles d'un DM d'expérience ) |
Revenir en haut | |
grosraoul Ecuyer Messages: 60 |
oui mais ce n'est justement pas le cas de cette fonction, enfin pour moi en tout cas elle n'apparaissait pas non plus en gras , ce qui signifierai que cet include est donc inutile ?
enfin bon l'essentiel c'est que ça marche hein |
Revenir en haut | |
sylveran Ecuyer Messages: 57 Localisation: dijon |
|
Revenir en haut | |
Devilon Bersek Ecuyer Messages: 59 Localisation: Certainement dans une forge...sinon a Beaune |
oui, merci, sauf que j'ai viré la phrase "vous n'avez pas les objets...." car elle aparaissait tout le temps....mais la priorité marche impeccablement, encore merci !!!
_________________ Rien n'est grave dans la vie...sauf de la perdre... Chroniques des Royaumes Perdus : [http] |
Revenir en haut | |
nelia Acolyte Messages: 36 |
Bonjour tout le monde,
Excusez moi de déterrer ce topic du tréfond du forum mais c'es le seul qui colle a ma demande actuelle.. Je viens de tester le script: NWScript :
#include "nw_i0_tool" void main() { object oPC=GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC); if (HasItem(oPC,"objetxxx")==TRUE) { AssignCommand(oPC,ActionJumpToLocation(GetLocation(GetObjectByTag("WP_Faction_xxx")))); } if (HasItem(oPC,"objetyyy")==TRUE) { AssignCommand(oPC,ActionJumpToLocation(GetLocation(GetObjectByTag("WP_Faction_yyy")))); } } Il marche niquel, mais j'ai un petit soucis.. Pour ce script, il faut necessairement avoir un item dans son inventaire pour l'activer.. Hors, moi je voudrais avoir une fonction "libre" pour qu'il se declanche aussi quand il n'y a pas d'item.. Je developpe un chouilla Ce script, je vais le mettre sur un portail se trouvant sur une map de bienvenue. Donc tous les joueurs devront obligatoirement le passer. Mais si c'est la premiere fois que le joueur arrive, il n'aura aucun item sur lui (du moins, j'aimerais eviter de me casser la tete a lui rajouter automatique a sa premiere connexion). Tous les nouveaux joueurs iront par defaut a un endroit précis du module et rejoindront des factions précises par la suite.. Les items necessaires pour rejoindre la faction choisis seront donnés via MD. Donc je pensais faire un tuc du genre: NWScript :
#include "nw_i0_tool" void main() { object oPC=GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC); if (HasItem(oPC,"")==TRUE) { AssignCommand(oPC,ActionJumpToLocation(GetLocation(GetObjectByTag("WP_VillageDeBase")))); } if (HasItem(oPC,"item1")==TRUE) { AssignCommand(oPC,ActionJumpToLocation(GetLocation(GetObjectByTag("WP_Faction1")))); } if (HasItem(oPC,"item2")==TRUE) { AssignCommand(oPC,ActionJumpToLocation(GetLocation(GetObjectByTag("WP_Faction2")))); } } Biensûr j'ai testé avec ca mais ca marche pas, donc je viens demander votre assitance.. Où me suis-je tromper? Ha oui, autre chose aussi dans le meme genre.. J'aimerais pouvoir appliquer ce genre de script l'hors d'un respawn d'un joueur. Genre le pj meure, il clique sur le bouton respawn et il est téléporté sur le meme Waypoint qu'a son arrivée.. (donc le WP_VillageDeBase, WP_Faction1, WP_Faction2 etc...) Quel genre de script il me faut et où le mettre précisément? :$ |
Revenir en haut | |
Aladar Chevalier Messages: 96 Localisation: Tours |
Salut!
Tu dis ne pas vouloir te casser la tête à donner les items lors de la première connexion, cependant je pense que la solution que tu as choisis est bien plus prise de tête. Plus simple, tu mets un pnj dans la salle ou il y a ce portail, sur le pnj un dialogue durant lequel le pj choisi un camp. Le pnj donne l'item, et le pj pourra passer le portail. |
Revenir en haut | |
nelia Acolyte Messages: 36 |
Nah, je ne veux pas de PNJ qui dispatch mes joueurs.. Parce que 1 ca me fait faire tout un dialogue sur un pnj et de 2 ca me rajoute un script a faire..
Hors ce que je demande c'est juste avoir un moyen d'envoyez tous mes joueurs au village par defaut (tous les pjs qui n'ont pas d'item particulier)et d'envoyer ceux qui ont un items dans une autre zone prédéfinie. donc ca ferais un genre de: if (joueur n'a pas d'item){ JumpToLocation WP_villagedebase } else if (joueur a l'item X){ JumpToLocation WP_FactionX } else if (joueur a l'item Y){ JumpToLocation WP_FactionY } etc etc.. Comme ca, j'ai de la marge si je veux rajoutere des factions et je gardes toujours une fonction "vide" pour tous les nouveaux joueurs.. (pareil pour le respawn) |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Il y a un truc qui cloche dans vos manips la lol.
Nelia demande un script pour téleporter un PJ a un Waypoint grâce a un portail. Donc le PJ doit l'utilisé... (GetNearsCreature() ne devrait pas être dans l'histoire) Nelia essaye ça : Tu vas faire un teste avec 1 objet. On va prendre l'objet A (tag: "T_Lyon"). Tu fais un portail, tu le mets la ou tu veux. Ceux portail doit envoyer à lyon grâce a l'objet A, donc on va le tag : "P_T_Lyon" (P=portail, T=Teleportation). Maintenant faut faire le point d'arriver de Lyon, donc on va faire un waypoint tag : "WP_T_Lyon". NWScript :
void main() { object oPC = GetLastUsedBy();//tu demande quand on utilise le portail, c'est cette fonction qui te conviendra le mieux je pense. Enfin si tu veux pas elle l'autre marchera avec aussi object oItem = GetFirstItemInInventory(oPC); string sTag, sTele; while(GetIsObjectValid(oItem)) { sTag = GetTag(oItem); sTele = GetStringLeft(sTag, 2); if(sTele == "T_"&&GetTag(OBJECT_SELF)== "P_"+sTag) { AssignCommand(oPC, ActionJumpToLocation(GetLocation(GetWaypointByTag("WP_"+sTag)))); } oItem = GetNextItemInInventory(oPC); } } Voila, alors ce que ce script fait est trés simple, et évite de faire 300,000 script de téléportation! Déjà il regarde les objets de l'inventaire du PJ, si il voit des objets avec comme tag de debut "T_" il l'ait garde en tête (façon de parler). Puis il regarde le tag du portail, si ce tag de portail, à le même tag d'un objet ("P_"+Tag objet) il téléporte sont possesseur, au waypoint qui a lui aussi le même tag que l'objet ("WP_"+Tag objet). Bon si tu comprends pas voici une petite explication courte est simple : PJ possède un objet A (tag:"T_Paris") il utilise le portail tag "P_T_Paris", il sera envoyer au waypoint "WP_T_Paris". PJ possède un object B (tag:"T_sqdsoqidqsno") il utilise le portail tag "P_T_sqdsoqidqsno", il sera envoyer au waypoint "WP_T_sqdsoqidqsno". Jespere que ta compris je suis nul en explication, le tout c'est que t'es le script xD Mais faudra quand même m'expliquer d'ou viens cette idée de mettre GetNearsCréature() _________________ [http] |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
NWScript :
#include "nw_i0_tool" void main() { object oPC=GetLastUsedBy(); if (HasItem(oPC,"item1")==TRUE) { AssignCommand(oPC,ActionJumpToLocation(GetLocation(GetObjectByTag("WP_Faction1")))); } else if (HasItem(oPC,"item2")==TRUE) { AssignCommand(oPC,ActionJumpToLocation(GetLocation(GetObjectByTag("WP_Faction2")))); } else AssignCommand(oPC,ActionJumpToLocation(GetLocation(GetObjectByTag("WP_VillageDeBase")))); } Et comme ça ? _________________ L'île perdue - Module RP - Hard Core Ruled - En construction |
Revenir en haut | |
nelia Acolyte Messages: 36 |
Niquel ^^
Pour le respawn je voudrais que ca fasse a peu pres la meme chose (sans portail) que quand le pj clique sur le bouton respawn, il resp a l'endroit où il est arrivé par le portail de bienvenue.. Est-ce le meme code a insérer dans le OnDeath ? J'avoue que j'ai peur de toucher le script OnDeath d'origine.. |
Revenir en haut | |
Sith Vicious Grand Sage du Conseil Messages: 693 |
C'est dans le OnPlayerRespawn que ça se passe.
Et à première vue oui, le script devrait convenir. Enfin bien sur faut changer la définition d'oPC (GetLastRespawnButtonPresser() enfin tu vois). Et y a pas mal de trucs à virer dans ce script, hésite pas à le toucher (avec précautions quand même mais il y a tout le bordel de NWN qui gère la téléportation au temple, les zones spéciales de la campagne à virer) _________________ L'île perdue - Module RP - Hard Core Ruled - En construction |
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Page 1 sur 1 ¤
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum