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 05:47:11
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 |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Bonjour.
Voila un script que j'ai fait qui sert que quand on se repose, et que on a des pièges, alors deux pièges apparaissent. NWScript :
#include "generale" void main() { object oPC = GetLastPCRested(); object oItem = GetFirstItemInInventory(oPC); string sItem; string sSS; while(GetIsObjectValid(oItem)) { sItem = GetResRef(oItem); sSS = GetSubString(sItem, 0, 4); if(sSS == "trap") { DestroyObject(oItem); } oItem = GetNextItemInInventory(oPC); } DelayCommand(1.5, SpawnTrap(oPC)); } La fonction de SpawnTrap(object oPC); : NWScript :
void SpawnTrap(object oPC) { if(HasItem(oPC, "PiegeFeuFaible") == TRUE){CreateItemOnObject("trap_1", oPC, 1);CreateItemOnObject("trap_1", oPC, 1);} if(HasItem(oPC, "PiegeFeuMoyen") == TRUE){CreateItemOnObject("trap_3", oPC, 1);CreateItemOnObject("trap_3", oPC, 1);} if(HasItem(oPC, "PiegeFeuMortel") == TRUE){CreateItemOnObject("trap_2", oPC, 1);CreateItemOnObject("trap_2", oPC, 1);} if(HasItem(oPC, "PiegeFeuEpic") == TRUE){CreateItemOnObject("trap_4", oPC, 1);CreateItemOnObject("trap_4", oPC, 1);} if(HasItem(oPC, "PiegeAcideFaible") == TRUE){CreateItemOnObject("trap_5", oPC, 1);CreateItemOnObject("trap_5", oPC, 1);} if(HasItem(oPC, "PiegeAcideMoyen") == TRUE){CreateItemOnObject("trap_6", oPC, 1);CreateItemOnObject("trap_6", oPC, 1);} if(HasItem(oPC, "PiegeAcideMortel") == TRUE){CreateItemOnObject("trap_7", oPC, 1);CreateItemOnObject("trap_7", oPC, 1);} if(HasItem(oPC, "PiegeAcideEpic") == TRUE){CreateItemOnObject("trap_8", oPC);CreateItemOnObject("trap_8", oPC);} if(HasItem(oPC, "PiegeFroidFaible") == TRUE){CreateItemOnObject("trap_9", oPC, 1);CreateItemOnObject("trap_9", oPC, 1);} if(HasItem(oPC, "PiegeFroidMoyen") == TRUE){CreateItemOnObject("trap_11", oPC, 1);CreateItemOnObject("trap_11", oPC, 1);} if(HasItem(oPC, "PiegeFroidMortel") == TRUE){CreateItemOnObject("trap_10", oPC, 1);CreateItemOnObject("trap_10", oPC, 1);} if(HasItem(oPC, "PiegeFroidEpic") == TRUE){CreateItemOnObject("trap_12", oPC, 1);CreateItemOnObject("trap_12", oPC, 1);} if(HasItem(oPC, "PiegeSonicFaible") == TRUE){CreateItemOnObject("trap_13", oPC, 1);CreateItemOnObject("trap_13", oPC, 1);} if(HasItem(oPC, "PiegeSonicMoyen") == TRUE){CreateItemOnObject("trap_15", oPC,1);CreateItemOnObject("trap_15", oPC,1);} if(HasItem(oPC, "PiegeSonicMortel") == TRUE){CreateItemOnObject("trap_14", oPC, 1);CreateItemOnObject("trap_14", oPC, 1);} if(HasItem(oPC, "PiegeSonicEpic") == TRUE){CreateItemOnObject("trap_16", oPC, 1);CreateItemOnObject("trap_16", oPC, 1);} if(HasItem(oPC, "PiegeElectriqueFaible") == TRUE){CreateItemOnObject("trap_17", oPC, 1);CreateItemOnObject("trap_17", oPC, 1);} if(HasItem(oPC, "PiegeElectriqueMoyen") == TRUE){CreateItemOnObject("trap_19", oPC, 1);CreateItemOnObject("trap_19", oPC, 1);} if(HasItem(oPC, "PiegeElectriqueMortel") == TRUE){CreateItemOnObject("trap_18", oPC, 1);CreateItemOnObject("trap_18", oPC, 1);} if(HasItem(oPC, "PiegeElectriqueEpic") == TRUE){CreateItemOnObject("trap_20", oPC, 1);CreateItemOnObject("trap_20", oPC, 1);} } Mon probleme est que, si on a deux même objets, le script s'éxécute une fois, aussi j'ai bien regarder, au lieu d'avoir 2 pièges on en a quatre! j'ai cherche mais j'ai pas trouvé, pourrait-on m'aidé svp? Les amis les roubs n'aime pas attendre!! ^^ Merci _________________ [http] |
Revenir en haut | |
Fanboy Acolyte Messages: 23 |
bon j'essaye de comprendre les script...
tu fait une boucle qui détruit les piege (trap) sur le PJ si il en a donc.. ensuite tu fait créer avec spawntrapp, 2 piege suivant ce que possede le joueur comme piege. déja la tu peut remarquer que si ton script fonction c'est uniquement du au faite que le destroye object met un certain temps a se faire.. et que quand tu appelle ta fonction spawntrap le script detecte encore les trap (normalement détruit avant) sur le PJ. !!!!!!! le reste est simple. pour un piege ca t'en créer 2. si le joueur en possede 2 de type différent , cela t'en créer 2*2 = 4. tous simplement car ta suite de IF dit. Si le joueur a piege de type XXX créer 2 piege.. SI le jouer a un piege de type XX crer 2 piege etc.. si le joueur a deux piege de type différent, 2 de tes if s'enclencherons tous simplment ce qui créera 4 piege 2 de chaque type que le joueur posséderais. dans le principe de toute facon a tu réfléchi au joueur qui aurait disons déja 4 piege sur lui...(de meme type comme si ce que tu voulait faire marcher). ca lui effacerais 4 piege pour lui en créer 2 .. en faite si il a 4 piege de type différent ton script lui en créra 4*2 8 enfin si ca peut aider. _________________ Kikoo |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Je crois que tu n'as pas compris, désolé j'ai peut-être mal formulé ma phrase, je ré-explique :
Dans mon serveur, il existe un marchand d'objets spéciaux : ces objets s'appellent tous PiegeXO (X = Domage du piège, O = Puissance du piège). Bon jusque là ça va, mais ces pièges ne sont pas des TRAPS, ce sont tous simplement des objets divers de taille moyenne! Dès qu'on dort, le script va effacer tous les pièges (tention, pas les objets!) et va redonner des pièges selon ce que a le joueur dans son inventaire. Pour exemple prenons, monsieur A : Monsieur A possède 1 Piège de Feu Puissant (l'objet), il dort et là normalement, deux pièges de feu puissant apparaissent (traps). Monsieurs A re-dort, les deux anciens pièges se detruissent et laisse place à d'autre. Autre : Monsieur A possède 1 Piège d'Acide Mortel, et 1 Piège de Froid Puissant. Il dort, il reçoit 2 pièges d'acide mortel, et 2 pièges de froid puissant. Monsieur re-dort, les 2 pièges d'acide/froid mortel/puissant se retirent, pour faire place à deux autres! Autre : Monsieurs A possède 2 Pièges Sonic Epic, il dort, il reçoit 4 pièges de froid epic, il re-dort, ces 4 pièges se detruisent, et 4 autre reviennent! Pourquoi ça? Car je ne veux pas que les joueurs possèdent plus de 30 pièges dans leur inventaire (donc 15 objets à traps). Voila Voila jespere que tu comprends mieux _________________ [http] |
Revenir en haut | |
Fanboy Acolyte Messages: 23 |
bon alors quelle piege sont tagger comme "trap" ?
et exist-il d'autre piege non tagger comme "trap" ? les exemple qu tu prend et ce qu'on appelle en programmation un jeux d'essais qui sert simplment avec des exemple a tester si le code fait ce qu'on lui demande.. je te conseil de prendre donc comme exemple pour ton jeu d'essais. 1 piege dans l'inventaire. 2 de meme type puis deux de type différent 3 de meme type puis 3 de type défferent et ausi 3 avec 2 de meme type et 1 différent. si j'ai bien compris ca va détruire les piege ne venant pas du marchant 1 pour en créer deux a la place venant du marchant.. ? c'est ca ? PS: les iten tagé "trap" que tu efface de l'inventaire du joueur, sont belle est bien des objets ^^ _________________ Kikoo |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Bon on va faire autrement
Objet : on va dire que c'est ce que le joueur va acheter au marchand un objet divers moyen, qui a pour simple tag, le même nom que l'objet porte (inutilisable) Trap : piège qui apparait, et qu'on peut utiliser pour deposer un carré vert au sol ^^ Bon on va employer ces deux mots pour pas ce perdre : Les traps on un tag comme ça "trap_X" (ou X = 1,2,3, etc...) ceux sont les seuls "objets" qui porte ceux tag, donc j'ai utilisé la fonction GetSubString pour detruire tous les objets de l'inventaire du joueur commencent par "trap". Le serveur fait tous ce que je demande, son seul problème est que dès qu'on click sur "repos" on a bien la destruction de tous les pièges qui commence par "trap", deux apparaissent, mais à la fin du repos, 2 autres apparaissent, donc on obtient 4 traps du même type! L'autre probleme est que si le serveur vois que le joueur a deux objets de même type (donc de même tag), alors il va faire comme si il y en avait qu'un, même si il y a 3,4,5 etc... objets, il mettra que 4 pièges (à cause du bug ça). Voila j'ai bien résumé ou pas? _________________ [http] |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
|
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