La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 01/06/2024 21:00:18


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
BlackMagik
Acolyte
Inscrit le: 02 Jan 2005
Messages: 22
Répondre en citant
Posté le : 10/01/2005 17:20:21 Sujet du message : droper de l'argent ?

Yop tout le monde !
Je suis en train de faire un script special PvP afin de faire droper les armes et l'or ( du moins j'aimerai bien Embarassed ) des joueur tués.
Les armes c'est pas un probleme c'est deja fait, mais je bloque sur l'or. Mise a part la fonction GiveGoldToCreature qui donnerai directement l'or au tueur. J'aimerai que l'or du PJ tué soit dropé à l'endroit de sa mort.
Si quelqu'un sait comment faire ! Ca m'aiderai beaucoup !

Merci
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Jaheira 007
Seigneur
Inscrit le: 24 Juin 2004
Messages: 223
Répondre en citant
Posté le : 10/01/2005 19:16:29 Sujet du message :

Et bien il suffit de créer un objet dans son inventaire de type "or". Tu indique le nombre de pièces et tu coche la case "Abandon possible".
Ne cherche pas compliqué.
_________________
La nature reprendra ses droits ici, aprés notre passage.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
BlackMagik
Acolyte
Inscrit le: 02 Jan 2005
Messages: 22
Répondre en citant
Posté le : 10/01/2005 19:30:55 Sujet du message :

Oui mais le nombre de piece d'or du joueur varie, donc le nombre de piece de l'objet dans l'inventaire devrait aussi ( si j'utilise ta façon ). Et c'est exactement a l'endroit la que je bloque. Voila le debut de mon script pour voir plus clair :

NWScript :

void main()
{
object oTueur = GetLastKiller ();
object oJoueur = GetLastPlayerDied();
location lLoc = GetLocation (oJoueur);
string sObjetDroit = GetTag (GetItemInSlot (INVENTORY_SLOT_RIGHTHAND, oJoueur));
string sObjetGauche = GetTag (GetItemInSlot (INVENTORY_SLOT_LEFTHAND, oJoueur));
if (GetIsPC(oTueur)) // Verifie si le tueur est bien un PJ
    {
    DestroyObject (GetItemInSlot (INVENTORY_SLOT_RIGHTHAND, oJoueur));
    DestroyObject (GetItemInSlot (INVENTORY_SLOT_LEFTHAND, oJoueur));
    CreateObject (OBJECT_TYPE_ITEM, sObjetDroit, lLoc, FALSE);
    CreateObject (OBJECT_TYPE_ITEM, sObjetGauche, lLoc, FALSE);
    }
}
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.


Ce scrip est placé sur le OnDeath de mon module. Ce que j'aimerai c'est creer un objet Piece d'or du montant de l'argent du PJ tué, comme je le fais avec ses armes dans les mains gauche et droite.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Athanagorn
Acolyte
Inscrit le: 12 Déc 2004
Messages: 38
Répondre en citant
Posté le : 11/01/2005 12:13:21 Sujet du message :

Tu devrais peut-etre utiliser GetResRef au lieu de GetTag, non? (sauf si tu est sûr que tous les items ont pour tag le blueprint, bien sûr)

Sinon, pour ton problème, j'essairai de creer un placable de type "tresor" et de le remplir avec la quantité d'or necessaire.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
BlackMagik
Acolyte
Inscrit le: 02 Jan 2005
Messages: 22
Répondre en citant
Posté le : 11/01/2005 12:29:22 Sujet du message :

Avec ResRef ça ne me créé pas les Items, J'ai deja essayé. Je veux bien creer un placeable tresor avec l'argent, mais comment faire pour que la valeur soit celle portée par le PJ tué.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Joubinator
Ecuyer
Inscrit le: 07 Jan 2003
Messages: 42
Localisation: Yvelines
Répondre en citant
Posté le : 11/01/2005 13:37:17 Sujet du message :

salut,

Dejà pour obtenir la somme portée par le joueur tué tu as la fonction GetGold();

Ensuite sachant cela il faudrait placer cette somme sur le sol...... Surprised

Peut être une fonction en boucle du style

While (!tresor_au_sol==GetGold(Pjtué))
(
ajouter une pièce d'or sur la location du pj mort
)

Il me semble bien aussi qu'il y a un probleme entre l'or et une zone ou le module.

sinon cette fonction : GiveGoldToCreature(object, int)
_________________
M'enfous si les pjs tuent mes monstres,.... j'en ai plein (paroles d'un DM d'expérience Wink )
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
sinquem
Ecuyer
Inscrit le: 28 Jan 2004
Messages: 68
Répondre en citant
Posté le : 11/01/2005 14:34:42 Sujet du message :

Je pense que cela devrait te convenir.
Tu personnalises un sac et surtout tu vires sur le open la génération de tresor (note le blueprint "lootbag002" dans l'exemple)


Tu fais la même chose pour la piece d'or.

"Tu peux ensuite custumiser le sac pour lui donner l'apparence d'un tas d'or."

Ici les script est fait pour droper l'or d'un pj par-terre !! lançable via la commande dm_runscript.
Il est facile de l'adapter pour ton cas (GetFirstPC etant le cadavre Wink


NWScript :
void main()
{
    object oPc = GetFirstPC();
    location lPc = GetLocation(oPc);
    object oOr;
    int iOr = GetGold(oPc) ; // montant d'or en poche du pj
    int iCpt;
    object oSac = CreateObject(OBJECT_TYPE_PLACEABLE,"lootbag002",lPc);
    SendMessageToPC(oPc,GetName(oSac));
    TakeGoldFromCreature(iOr, oPc,TRUE) ; // retire l'or
    CreateItemOnObject("it_gold002",oSac,iOr);

}
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.


en esperant que cela te convienne
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Athanagorn
Acolyte
Inscrit le: 12 Déc 2004
Messages: 38
Répondre en citant
Posté le : 11/01/2005 16:01:45 Sujet du message :

Alors que je parcourrais le forum NWN-SYSTEME, j'ai trouvé ce bout de code pour déposer des PO:

Citation :
object oOr = CreateObject(OBJECT_TYPE_ITEM, "it_gold002", lLoc);
SetItemStackSize(oOr, Random(1000)+1); //ici tu peut changer l'or gagne
il est signallé plus bas que le resref est mauvais, en effet je crois que c'est "nw_it_gold001", mais il faudra vérifier.

donc, pour toi, cela pourrait donner quelque chose comme: (non testé)

NWScript :
int nGold = GetGold(oJoueur);
  TakeGold(nGold, oJoueur);
  SetItemStackSize(CreateObject(OBJECT_TYPE_ITEM, "nw_it_gold001", lLoc), nGold);
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.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
BlackMagik
Acolyte
Inscrit le: 02 Jan 2005
Messages: 22
Répondre en citant
Posté le : 11/01/2005 17:37:49 Sujet du message :

Merci beaucoup, ça marche nikel Very Happy Pour ceux qui veulent le script pour leur zone PvP le voici :

NWScript :
void main()
{
object oTueur = GetLastKiller ();
object oJoueur = GetLastPlayerDied();
location lLoc = GetLocation (oJoueur);
int iGold = GetGold (oJoueur);
string sObjetDroit = GetTag (GetItemInSlot (INVENTORY_SLOT_RIGHTHAND, oJoueur));
string sObjetGauche = GetTag (GetItemInSlot (INVENTORY_SLOT_LEFTHAND, oJoueur));
if (GetIsPC(oTueur))
    {
    TakeGoldFromCreature(iGold, oJoueur, TRUE);
    DestroyObject (GetItemInSlot (INVENTORY_SLOT_RIGHTHAND, oJoueur));
    DestroyObject (GetItemInSlot (INVENTORY_SLOT_LEFTHAND, oJoueur));
    CreateObject (OBJECT_TYPE_ITEM, sObjetDroit, lLoc, FALSE);
    CreateObject (OBJECT_TYPE_ITEM, sObjetGauche, lLoc, FALSE);
    SetItemStackSize(CreateObject(OBJECT_TYPE_ITEM, "nw_it_gold001", lLoc), iGold);
    }
}
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.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Montrer les messages depuis :
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


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 31.692ms