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 08:36:57
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
iboop Voyageur Messages: 3 |
Posté le : 23/03/2007 08:30:41 Sujet du message : Aide Pattern(mais differente de ce que j'ai lue ici :D)
Alors j'ai bien lut le tuto donné ici http://www.system-tek.com/~nwinter/phpbb2/viewtopic.php?p=126413#p126413
mais je n'ai pas trouvé ce qu'il me faut(je débute dans l'utilisation des scripts) J'aimerais en effet "selectionner" les gens qui peuvent prononcer des mots de passe. Plus précisemment, j'aimerais que quand un pj a un objet "oItem" (objet defini) il se passe bien ce que l'on a décidé. Mais je voudrais que quand un pj qui n'a pas l'objet prononce le "mot de passe" ça ne fasse rien. Pour le moment, tout le monde, objet ou pas objet, peut prononcer le passe avec succes, je n'arrive pas a faire en sorte que le script se lance que si le pj en question possède l'objet... Voila, merci merci d'avance:D (c'est pour un multijoueur^^) |
Revenir en haut | |
Enki Légende vivante Messages: 432 |
Salut !
Dans ton script qui teste la validité de la phrase prononcée, (soit le OnConversation, soit le OnUserDefined, event OnConversation)tu dois également tester la présence de l'item. Pour cela, tu peux utiliser la fonction HasItem(); (avec l'include #include "nw_i0_plot" ) donc en gros, si ton pnj entend le bon mot de passe, il teste ensuite l'inventaire du PJ, puis, s'il a l'objet requis, il ouvre la porte, ou fait ce qu'il doit faire. _________________ Module persistant dans l'univers de Star Wars : Dark Time of the Galaxy |
Revenir en haut | |
iboop Voyageur Messages: 3 |
tout d'abord merci bien de ta réponse
En fait oui j'ai d'abord pensé a ça, mais en fait ça ne marche pas. J'ai fait ceci pour Onconv:(j'ai omis les include mais ils y sont bien hein^^ c'est pas le problème ) Code : void main()
{ int iListen = GetListenPatternNumber(); string sPassword; object oItem = GetObjectByTag("sceptre_revers"); object oItem1 = GetObjectByTag("plan_revers"); object oPC = GetItemPossessor(oItem); object oPC2 = GetItemPossessor(oItem1); if (iListen == 101) //verifie l'couteur if (HasItem (oPC, "sceptre_revers")) { sPassword = GetMatchedSubstring(0); if (sPassword == "bureau" ) // bon pass? Pas bon pass? { location lMyLocation = GetLocation(GetObjectByTag("wp_bureau")); //hop la teleportation pour oPC DelayCommand(1.0, AssignCommand(oPC, JumpToLocation(lMyLocation))); } sPassword = GetMatchedSubstring(0); if (sPassword == "A moi" ) //verifie le pass { DelayCommand(1.0, AssignCommand(oPC2, ActionJumpToObject(oPC))); Transporte oPC2 vers oPC } } Le truc, c'est que la, quand le oPC dit "bureau" il va bel et bien au bureau, mais quand oPC2 dit "bureau" et bien oPC2 envois oPC dans le bureau. De même quand Opc dit "a moi" oPC2 va bien a lui, mais quand oPC2 dit "amoi" et bien il se teleporte a oPC. Ce que je voudrais, c'est que seule oPC puisse commander ! c'est a dire que ça ne marche que quand oPC parle. Le problème la me semble normal, puisque HasItem n'identifie pas qui parle ou qui le listener ecoute, mais qui a tel objet...je voudrais: "si celui qui prononce le passe a tel objet.." pour parler clairement Alors a priori il n'y a pas de fonctions pour ça, néamoins j'ai quelques idées sur la façon de procéder mais ce serait peut être laborieux et, n'étant pas un vétéran.... Donc si quelqu'un a une solution, je suis preneur avec grand plaisir, solution ou astuce, je prend tout Merci a vous tous d'avance |
Revenir en haut | |
Anthraxcite Légende vivante Messages: 372 Localisation: Belgique |
Ok voici les 2 premières erreurs que je vois :
1) object oItem = GetObjectByTag("sceptre_revers"); object oItem1 = GetObjectByTag("plan_revers"); Tu récupères des objets sur module grâce à GetObjectByTag, c-à-d des créatures, des plaçables, des objets posés au sol(et encore je suis même pas sûr que celà fonctionne). Pour récupérer des objets dans l'inventaire du joueur il faut spécifier ce joueur, utilises donc plutôt GetItemPossessedBy(object oCreature, string sItemTag); . 2) object oPC = GetItemPossessor(oItem); object oPC2 = GetItemPossessor(oItem1); Pas forcément une erreur(si l'item était récupéré d'une autre manière que celle citée juste au dessus qui necessite la créature en question^^), mais ce n'est pas très orthodoxe comme méthode pour récupérer celui qui a parlé, c'est un peu faire les choses à l'envers. Selon l'évènement la manière de récupérer le joueur ou la créature qui intervient change, ainsi lors d'une conversation tu as pu je suppose déjà utiliser GetPCSpeaker, dans le cas d'un OnConversation on utilise GetLastSpeaker(sauf erreur de ma part, longtemps que je n'ai plus fait de listerner). Inutile de définir 2 variables oPC du coup . La correction devrait donner quelque chose comme ceci : object oPC = GetLastSpeaker(); object oSceptre = GetItemPossessedBy(oPC,"sceptre_revers"); object oPlan = GetItemPossessedBy(oPC,"plan_revers"); |
Revenir en haut | |
iboop Voyageur Messages: 3 |
Merci beaucoup
Le GetObjectByTag oui je l'ai corrigé je me suis rendu compte de mon erreur en testant mes script IG. J'ai donc corrigé avec un GetItemPossessedBy. Et merci en effet c'est GetLaskSpeaker que je cherchais!! Je vais tester ça de suite Merci bien |
Revenir en haut | |
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