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 27/11/2024 21:46:23
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 |
arfost Acolyte Messages: 20 |
Bonjour a tous.
Je travail sur un module persistant pour never 1 avec un ami, et on avance tres bien (on a presque tout mapper, ça devrait plus tarder a voir le jour) Etant le scripteur en chef (avec 0 personnes sous mes ordres ^^) je m'attaque en ce moment au script de respawn. On a decidé un systeme simple. La seule chose c'est qu'on veut faire en sorte que si le joueur est tué par un pj il ne soit pas rez dans la salle de respawn, mais sur place. En effet, le rp doit continuer (on considere comme la plus part des serveurs qu'une mort suite a un combat correspond a un KO, le joueur vainqueur choisi ensuite ce qu'il fait. Et un systeme de respawn sur place via script permet d'eviter d'obliger a avoir des parchos de rez pour ça) Pour ce systeme j'ai fais un truc tout simple de verification de variable sur le pj dans le OnRespawn (qui marche) et dans le OnDeath, je comptais recupere le tueur et tester si il s'agit d'un pj ou non pour attribuer la variable. (Dans un "if") Sauf que j'arrive pas a recuperer le meurtrier. La police scriptique neveresque semble bien mauvaise, j'ai tenté la fonction "GetLastKiller()", ça donne rien. Le reste de mon script est bon (j'ai testé avec "1" en condition dans mon If, ça marche.) Donc s'il vous plait, j'aimerais votre aide. Comment on peut savoir qui a tué un pj. Dernière édition par arfost le 29/07/2007 20:02:02; édité 2 fois
|
Revenir en haut | |
arfost Acolyte Messages: 20 |
Je rajoute une autre petite question sans rapport. Je suis entrain de faire un script gerant les reactions des animaux de compagnie en fonction de certaines caracteristiques des pjs (etre un maitre bleme c'est mal vu, il vaut mieu le cacher, alors on s'est dit que ce serait cool que les animaux est certaines reaction aleatoire devant certaines race ou classes.)
Bref, je fouille dans les constantes de classe et je trouve CLASS_TYPE_DRAGON_DISCIPLE CLASS_TYPE_DRAGONDISCIPLE Et c'est comme ça pour presque toute les classes en plusieurs mots. Quelqu'un sait pourquoi et laquelle il faut utiliser ? Parce que pour l'instant je teste les deux, mais a mon avis c'est pas le mieu. |
Revenir en haut | |
Angel Rots Novice Messages: 8 |
Salut;
Ca marche pas si tu mets GetLastKiller() ? Je sais que cette fonction existe... |
Revenir en haut | |
Angel Rots Novice Messages: 8 |
Pour ta deuxième question, après avoir fait un petit tour sur le nwnexplorer et dans le 2DA classe, je pense qu'il vaut mieux utiliser le fichier avec deux mots (CLASS_TYPE_DRAGON_DISCIPLE).
|
Revenir en haut | |
arfost Acolyte Messages: 20 |
Hum desole, j'avais fais une erreure en tapant. C'était bien "GetLastKiller" que j'avais tenté.
Apres renseignement il semblerait que cette fonction renvois le tueur de l'appelant. Dans le cas des evenements modules l'appelant doit etre le module, ce qui expliquerait pourquoi ça foire. J'arrive pas a trouver de solutions de remplacement. Et merci pour l'autre reponse. |
Revenir en haut | |
Angel Rots Novice Messages: 8 |
Et si tu essaye avec GetLastAttacker ou une fonction du genre ? Ca marche peut être. Sinon poste le script pour voir.
|
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
GetLastDied je crois pour reconnaitre le mort et,
GetLastHostilActor (un truc comme ça, j'ai pas l'éditeur devant les yeux, tape "hostil" dans le filtre) pour le tueur. La t'es sur de tombé sur le joueur _________________ [http] |
Revenir en haut | |
Angel Rots Novice Messages: 8 |
C'est GetLastHostileActor
NWScript : // Get the last object that was sent as a GetLastAttacker(), GetLastDamager(), // GetLastSpellCaster() (for a hostile spell), or GetLastDisturbed() (when a // creature is pickpocketed). // Note: Return values may only ever be: // 1) A Creature // 2) Plot Characters will never have this value set // 3) Area of Effect Objects will return the AOE creator if they are registered // as this value, otherwise they will return INVALID_OBJECT_ID // 4) Traps will not return the creature that set the trap. // 5) This value will never be overwritten by another non-creature object. // 6) This value will never be a dead/destroyed creature object GetLastHostileActor(object oVictim=OBJECT_SELF) |
Revenir en haut | |
arfost Acolyte Messages: 20 |
Je viens helas de tester cette solution, et ça ne marche pas mieu. Je vous livre mon code. J'espere que vous arriverez a comprendre d'ou viens mon erreur, parce que la je seche.
NWScript :
object oPlayer = GetLastPlayerDied(); object oTueur = GetLastHostileActor(oPlayer); // * increment global tracking number of times that I died SetLocalInt(oPlayer, "NW_L_PLAYER_DIED", GetLocalInt(oPlayer, "NW_L_PLAYER_DIED") + 1); // petite modif pour gerer un respawn en cas de mort par pj if (GetIsObjectValid(oTueur)) //debug FloatingTextStringOnCreature("il est valide",oPlayer); //debug if (GetIsPc(oTueur)){ FloatingTextStringOnCreature("vous avez ete tue par un pj, votre respawn aura lieu hrp de maniere a ce que vous puissiez poursuivre votre rp",oPlayer); SetLocalInt(oPlayer,"kill_by_pj",TRUE); } Le "GetIsValidObject" de debug le considere apparement comme invalid (en tout cas, la phrase s'affiche pas) Et la condition donnant l'item ne passe pas. J'ai fais le test en mettant "1" en condition, la ça passe. |
Revenir en haut | |
Black Knight Grand Maître Chanteur du Conseil Messages: 1031 Localisation: Fin fond du trou du cul du monde |
Ce n'est pas GetIsPc mais GetIsPC. Attention au majuscule, compile tes scripts avec F7, tu aurais eu la remarque.
De plus, pour GetIsObjectValid, tu dis : Si le tueur est un objet valid, alors on envoit un message au PJ mort "il est valid", ça serait pas plutot : Si le PJ mort est un objet valid, alors on envoit un message au tueur "Il est valid" ? Essaie ça : NWScript :
object oDeath = GetLastPlayerDied(); object oKiller = GetLastHostileActor(oPlayer); SetLocalInt(oDeath, "NW_L_PLAYER_DIED", GetLocalInt(oDeath, "NW_L_PLAYER_DIED") + 1); if(GetIsObjectValid(oDeath)) { FloatingTextStringOnCreature("L'objet en question est VALID",oKiller); } if(GetIsPC(oKiller) && GetIsPC(oDeath)) { FloatingTextStringOnCreature("",oDeath); SetLocalInt(oDeath,"kill_by_pj",TRUE); } J'ai changé les surnoms des variables en oDeath et oKiller pour plus d'eclairecissement et j'ai rajouté la ligne GetIsPC(oDeath) pour confirmé que c'est bien un combat ENTRE deux JOUEURs pour pas que le serveur confonde avec les PNJs. Voila _________________ [http] |
Revenir en haut | |
arfost Acolyte Messages: 20 |
J'ai enfin pu acceder au forum et tester le script (problemes d'informatique qui m'ont retardés)
La fonction marche finalement, donc je vous remercie tous pour vos reponses. Le module qu'on devellope viens encore de faire une petite avancée, ça fait plaisir. Donc merci encore a tous ceux qui ont repondu. |
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