La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 22/09/2024 07:26:27


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Allaster
Chevalier
Inscrit le: 25 Fév 2005
Messages: 73
Localisation: toulouse
Répondre en citant
Posté le : 05/04/2005 06:17:56 Sujet du message : Respawn à partir d'un objet

Bon comme le montre le titre je voudrais faire un systeme de respawn à partir d'un objet définis dans l'inventaire du PJ SANS détruire l'objet.
Quelqu'un peut m'aider?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 05/04/2005 13:05:20 Sujet du message :

Encore une fois, ça te paraît peut-être clair car tu sais ce que tu veux, mais pour les autres ça ne l'est pas forcément, pourrais-tu préciser un peu ta question ? (donner des détails sur comment le respawn doit se passer, tout ça...)
_________________
» Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine
» 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Allaster
Chevalier
Inscrit le: 25 Fév 2005
Messages: 73
Localisation: toulouse
Répondre en citant
Posté le : 05/04/2005 20:10:48 Sujet du message :

J'ai 3 villes :
_Armille
_Wilmot
_Rakalm

Armille à un objet A
Wilmot à un objet B
Rakalm à un objet C

Quand le PJ meurt :
si il est de Armille il vas à un point A grace à un scrpit qui identifie l'objet A
si il est de Wilmot il vas à un point B grace à un script qui identifie l'objet B
si il est de Rakalm il vas à un point C grace à un script qui identifie l'objet C

et ma question est :
Quel est ce script qui identifie les objets ?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Mythyzyn
Héros
Inscrit le: 23 Jan 2005
Messages: 292
Localisation: Lyncya
Répondre en citant
Posté le : 05/04/2005 21:04:07 Sujet du message :

Je suppose que tu donnes l'objet lors du choix de la ville au début.

A la place de donner l'objet, tu crée un SetCampaignInt et ensuite tu peux le check à volonté et tu n'as pas un objet à trimballer . . .

Et ce sera sans doute plus rapide, bien que la BDD de bio . . .
_________________
NwN2 - Lyncya 3 - La Guerre du Crystium
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Allaster
Chevalier
Inscrit le: 25 Fév 2005
Messages: 73
Localisation: toulouse
Répondre en citant
Posté le : 06/04/2005 06:29:51 Sujet du message :

ba en fait j'ai une pierre de rappel pour chaque ville (bien sûr avec un tag different) et je voudrais que grace à cette pierre le PJ aille au point d'arriver quand il ce connect, pas dans le choix mais quand il arrive dans le temple de sa ville.

Pour Armille : PierreDeRetour ==> est rataché à "WP_bien" quand le PJ meurt
Pour Wilmot : PierreDeRetour1 ==> est rataché à "WP_neutre" quand le PJ meurt
Pour Rakalm : PierreDeRetour2 ==> est rataché à "WP_mal" quand le PJ meurt
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 06/04/2005 10:56:04 Sujet du message :

Une petite boucle pour vérifier l'inventaire du joueur, à placer sur le onRespawn du module :

NWScript :
void main()
{
  object oPC = GetLastRespawnButtonPresser();
  location lLocBIEN = GetLocation(GetWaypointByTag("WP_bien"));
  location lLocNEUTRE = GetLocation(GetWaypointByTag("WP_neutre"));
  location lLocMAL = GetLocation(GetWaypointByTag("WP_mal"));

  object oObjet = GetFirstItemInInventory(oPC);
  while(GetIsObjectValid(oObjet))
  {
    if(GetTag(oObjet) == "PierreDeRetour")
    {
      AssignCommand(oPC, ActionJumpToLocation(lLocBIEN));
      break;
    }
    else if(GetTag(oObjet) == "PierreDeRetour1")
    {
      AssignCommand(oPC, ActionJumpToLocation(lLocNEUTRE));
      break;
    }
    else if(GetTag(oObjet) == "PierreDeRetour2")
    {
      AssignCommand(oPC, ActionJumpToLocation(lLocMAL));
      break;
    }
    else
    {
      // Erreur : le joueur n'a aucune pierre dans son inventaire
    }
    oObjet = GetNextItemInInventory(oPC);
  }
}
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.

_________________
» Le Tref & l'Aucube : Histoire, misanthropie & zoologie léonine
» 1626, le Gant & l'Epée : intrigues & duels sous le règne de Louis XIII
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur Ignorer l'utilisateur
 
Allaster
Chevalier
Inscrit le: 25 Fév 2005
Messages: 73
Localisation: toulouse
Répondre en citant
Posté le : 06/04/2005 11:12:59 Sujet du message :

Ok merci je vais essayer ça de suite
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Ivellios
Légende vivante
Inscrit le: 25 Jan 2005
Messages: 447
Localisation: Poitiers
Répondre en citant
Posté le : 06/04/2005 12:42:55 Sujet du message :

Sinon il y a cette fonction (sa evite la boucle mais je me demande si c'est pas un wrapper de boucle avec test tag justement...)
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.

_________________
Scripts, systèmes, fonctions,... c'est par ici...
Pyjama pour castor, une vocation, un avenir sûr
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
Vallav
Novice
Inscrit le: 23 Jan 2005
Messages: 12
Répondre en citant
Posté le : 06/04/2005 14:30:33 Sujet du message :

tu ne fais pas un systeme de respawn suivant l'alignement?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Allaster
Chevalier
Inscrit le: 25 Fév 2005
Messages: 73
Localisation: toulouse
Répondre en citant
Posté le : 06/04/2005 15:07:10 Sujet du message :

tien j'y avait pas penser à un respawn suisvant l'alignement Very Happy
lol
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Allaster
Chevalier
Inscrit le: 25 Fév 2005
Messages: 73
Localisation: toulouse
Répondre en citant
Posté le : 06/04/2005 15:11:06 Sujet du message :

au fait ... comment faire pour que quand le PJ respawn il perd 25 Xp par lvl et 3 pourcent de son or ?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Vallav
Novice
Inscrit le: 23 Jan 2005
Messages: 12
Répondre en citant
Posté le : 06/04/2005 17:14:09 Sujet du message :

voici ce que tu peux mettre dans ton include:
NWScript :

// Fonction qui applique une penalit d'xp et d'or
// au joueur qui respawn
void ApplyPenalty(object oDead)
{
    // Definition des variables pour l'xp
    int nXP = GetXP(oDead);
    int nPenalty = 25 * GetHitDice(oDead);
    int nHD = GetHitDice(oDead);

    // Impossible de perdre un niveau donc
    int nMin = ((nHD * (nHD - 1)) / 2) * 1000;
    int nNewXP = nXP - nPenalty;
    if (nNewXP < nMin)
      nNewXP = nMin;

    // Applique la perte d'xp
    SetXP(oDead, nNewXP);

    // Definition des variables pour l'or...
    int nGoldToTake = FloatToInt(0.03 * GetGold(oDead));//ici tu regle la perte en or

    // mais a perte d'or ne peut depasser 10000po
    if (nGoldToTake > 10000)
    {
        nGoldToTake = 10000;
    }
  }
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.


voila ce que j'ai sur mon mod.J'espere avoir bon:D
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Allaster
Chevalier
Inscrit le: 25 Fév 2005
Messages: 73
Localisation: toulouse
Répondre en citant
Posté le : 12/04/2005 20:12:36 Sujet du message :

eeee je croi qu'il y a un petit problème dans ton script même plusieur...

Citation :
// Fonction qui applique une penalit d'xp et d'or
// au joueur qui respawn
void ApplyPenalty(object oDead)
{
// Definition des variables pour l'xp
int nXP = GetXP(oDead);
int nPenalty = 25 * GetHitDice(oDead);//ici tu regle la perte d'xp par dé de vie
int nHD = GetHitDice(oDead);

// Impossible de perdre un niveau donc
int nMin = ((nHD * (nHD - 1)) / 2) * 1000;
int nNewXP = nXP - nPenalty;
if (nNewXP < nMin)
nNewXP = nMin;

// Applique la perte d'xp
SetXP(oDead, nNewXP);

// Definition des variables pour l'or...
int nGoldToTake = FloatToInt(0.03 * GetGold(oDead));//ici tu regle la perte en or

// mais a perte d'or ne peut depasser 10000po
if (nGoldToTake > 10000)

{
nGoldToTake = 10000;
}
}
le premier le l'ais résolut grace au script de la campagne mais le dexieme j'ai essayer de faire avec la campagne mais ça marche pô
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Stan
Grand Chevalier
Inscrit le: 07 Avr 2005
Messages: 126
Répondre en citant
Posté le : 12/04/2005 22:06:40 Sujet du message :

Il manque la perte de l'or c'est ça ton soucis ? tu peux préciser un peu le problème et utiliser des balises nwscript ?


Rajouter ça avant la toute derniere accolade de fin de script :
NWScript :

TakeGoldFromCreature(nGoldToTake,oDead,TRUE);
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
 
Allaster
Chevalier
Inscrit le: 25 Fév 2005
Messages: 73
Localisation: toulouse
Répondre en citant
Posté le : 13/04/2005 15:53:34 Sujet du message :

NWScript :

// Fonction qui applique une penalit d'xp et d'or
// au joueur qui respawn
void ApplyPenalty(object oDead)
{
    // Definition des variables pour l'xp
    int nXP = GetXP(oDead);
    int nPenalty = 25 * GetHitDice(oDead);
    int nHD = GetHitDice(oDead);

    // Impossible de perdre un niveau donc
    int nNewXP = nXP - nPenalty;
    if (nNewXP < nMin)
      nNewXP = nMin;

    // Applique la perte d'xp
    SetXP(oDead, nNewXP);

    // Definition des variables pour l'or...
    int nGoldToTake = FloatToInt(0.03 * GetGold(oDead));//ici tu regle la perte en or

    // mais a perte d'or ne peut depasser 10000po
    if (nGoldToTake > 10000)
    {
        nGoldToTake = 10000;
    }

void main()
{
  object oPC = GetLastRespawnButtonPresser();
  location lLocBIEN = GetLocation(GetWaypointByTag("WP_bien"));
  location lLocNEUTRE = GetLocation(GetWaypointByTag("WP_neutre"));
  location lLocMAL = GetLocation(GetWaypointByTag("WP_mal"));

  object oObjet = GetFirstItemInInventory(oPC);
  while(GetIsObjectValid(oObjet))
  {
    if(GetTag(oObjet) == "PierreDeRetour")
    {
      AssignCommand(oPC, ActionJumpToLocation(lLocBIEN));
      break;
    }
    else if(GetTag(oObjet) == "PierreDeRetour1")
    {
      AssignCommand(oPC, ActionJumpToLocation(lLocNEUTRE));
      break;
    }
    else if(GetTag(oObjet) == "PierreDeRetour2")
    {
      AssignCommand(oPC, ActionJumpToLocation(lLocMAL));
      break;
    }
    else
    {
      // Erreur : le joueur n'a aucune pierre dans son inventaire
    }
    oObjet = GetNextItemInInventory(oPC);
  }

TakeGoldFromCreature(nGoldToTake,oDead,TRUE);
}

/* warning: 1 unclosed block {} */
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.



Citation :
Erreur. 'respawn' n'est pas compilé.
respawn.nss(27): ERREUR : UNKNOWN STATE IN COMPILER
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Allaster
Chevalier
Inscrit le: 25 Fév 2005
Messages: 73
Localisation: toulouse
Répondre en citant
Posté le : 13/04/2005 15:56:26 Sujet du message :

heuuu... à la fin du script vous voyez
/* warning: 1 unclosed block {} */

comme c'est mon premier script sur ce forum (et oui il faut bien commencer un jour Very Happy) je ne sais pas ce que ça veut dire donc si quelqu'un peut m'expliquer Smile
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Stan
Grand Chevalier
Inscrit le: 07 Avr 2005
Messages: 126
Répondre en citant
Posté le : 13/04/2005 16:02:53 Sujet du message :

NWScript :
nGoldToTake = 10000;
    }/* suspect block end found !*/
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.


il manque une accolade là.

Il faut écrire

NWScript :
nGoldToTake = 10000;
    }/* suspect block end found !*/

}/* suspect block end found !*/


void main(){
/* warning: 1 unclosed block {} */
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.



Ou sinon retirer l'accolade ici :

NWScript :
if (nGoldToTake > 10000)
    {
        nGoldToTake = 10000;
    }
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.


Qui devient

NWScript :

if (nGoldToTake > 10000) nGoldToTake = 10000;
    }/* suspect block end found !*/
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
 
lylver
Héros
Inscrit le: 08 Avr 2005
Messages: 274
Répondre en citant
Posté le : 15/04/2005 18:35:25 Sujet du message :

NWScript :
AssignCommand(oDead, TakeGoldFromCreature(nGoldToTake, oDead, TRUE));
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.


Il faut un AssignCommand avant le TakeGold...
Je sais quand on y réfléchit c'est assez drôle, t'es mort et en plus c'est toi qui donne ton pognon...
"La mort est un état relatif dans NWN"
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Allaster
Chevalier
Inscrit le: 25 Fév 2005
Messages: 73
Localisation: toulouse
Répondre en citant
Posté le : 15/04/2005 20:06:54 Sujet du message :

heu... c'est quoi ce morceau de script??
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
atapi
Novice
Inscrit le: 15 Avr 2005
Messages: 6
Répondre en citant
Posté le : 15/04/2005 20:49:02 Sujet du message :

c'est pour prendre l'or
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Allaster
Chevalier
Inscrit le: 25 Fév 2005
Messages: 73
Localisation: toulouse
Répondre en citant
Posté le : 15/04/2005 21:07:27 Sujet du message :

Ok... maintenant j'ai un autre problème...
pourquoi quand je place de créature sur mon module maintenant, quand j'essai le module je ne les vois pas?
 
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 77.269ms