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 10:31:48


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
metallick
Chevalier
Inscrit le: 26 Aoû 2006
Messages: 88
Répondre en citant
Posté le : 28/08/2006 18:09:24 Sujet du message : problème de faction.

Bonjour a tous... J'ai un souci sur mon serveur, lorsqu'un pj attaque un pnj "populace" par exemple, tous les populaces l'attaquent... jusque la tout est normal! Mais mon souci, c'est que lorsque le pj est remis sur pieds, tous les "populace" sont toujours hostiles et l'attaquent... comment régler ce souci??
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Black Knight
Grand Maître Chanteur du Conseil
Inscrit le: 27 Oct 2005
Messages: 1031
Localisation: Fin fond du trou du cul du monde
Répondre en citant
Posté le : 28/08/2006 18:51:17 Sujet du message :

Toi tu as touché au script du module "OnRespawn". Dans ce script, des que le joueur renait, il se retrouve avec une faction normale, donc, il faut que tu aille voir ou est ton erreur dans ce script.
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
metallick
Chevalier
Inscrit le: 26 Aoû 2006
Messages: 88
Répondre en citant
Posté le : 28/08/2006 19:19:15 Sujet du message :

Voila mon script du "OnRespawn" si quelqu'un peux m'aider....

NWScript :
void main()
{
    object oPC = GetLastRespawnButtonPresser();
    object oTarget = GetWaypointByTag("RESPAWN");
    int nLevel = GetHitDice(oPC); //son niveau actuel
    int nXPLastLevel = nLevel*(nLevel-1)*500; //Nb de points d'XP pour son dernier level
    int nSeuil = nXPLastLevel+nLevel*500; //Nombre de pts d'XP a la moitie du level
    int nCurrentXP = GetXP(oPC);//XP actuelle
    int nNewXP = 0;
    int nGold = FloatToInt(0.30 * GetGold(oPC));
    string sCampaign = GetName(GetModule());
    int nDay = GetCalendarDay();
    int nMonth = GetCalendarMonth();
    int nYear = GetCalendarYear();
    int nHour = GetTimeHour();
    int nMinute = GetTimeMinute();
    int nSecond = GetTimeSecond();
    int nMillisecond = GetTimeMillisecond();

    if (nCurrentXP< nXPLastLevel + 100) nNewXP = nXPLastLevel-100; //100xp avant le level
    else if (nCurrentXP>nSeuil+100) nNewXP = nSeuil; //moitie du level
    else nNewXP =nXPLastLevel;

    SetXP(oPC,nNewXP);

    if (nGold > 5000)
        {
        nGold = 5000;
        }
    // Teleport a la zone de Respawn
    AssignCommand(oPC, JumpToObject(oTarget));
    ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oPC);
    ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oPC)), oPC);
    RemoveEffects(oPC);

    // Sauvegarde de la date
    SetCampaignInt(sCampaign,"DAY",nDay);
    SetCampaignInt(sCampaign,"MONTH",nMonth);
    SetCampaignInt(sCampaign,"YEAR", nYear);
    SetCampaignInt(sCampaign,"HOUR", nHour);
    SetCampaignInt(sCampaign,"MINUTE", nMinute);
    SetCampaignInt(sCampaign,"SECOND", nSecond);
    SetCampaignInt(sCampaign,"MILLISECOND", nMillisecond);
/* 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.




Very Happy
 
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 : 19/09/2006 12:29:35 Sujet du message :

Bonjour, vérifie que tu aies laissé les remises à zéro envers les factions STANDARDS de la réputation du personnage à sa mort.
(populace,marchand,défenseur)

NWScript :

  object oMod = GetModule() ;
  object oDead = GetLastPlayerDied();
  location lDead = GetLocation(oDead) ;
  object oKiller = GetLastKiller();
// /.../
  // * Note: waiting for Sophia to make SetStandardFactionReptuation to clear all personal reputation
  // Lylver : modification de reputation personnelle a faire le cas echeant.
  if (GetStandardFactionReputation(STANDARD_FACTION_COMMONER, oDead) < 50)
  { SetStandardFactionReputation(STANDARD_FACTION_COMMONER, 50, oDead);
  }
  if (GetStandardFactionReputation(STANDARD_FACTION_MERCHANT, oDead) < 50)
  { SetStandardFactionReputation(STANDARD_FACTION_MERCHANT, 50, oDead);
  }
  if (GetStandardFactionReputation(STANDARD_FACTION_DEFENDER, oDead) < 50)
  { SetStandardFactionReputation(STANDARD_FACTION_DEFENDER, 50, oDead);
  }

  ClearPersonalReputation(oDead,oKiller) ; // permanent en cas de mort
  ClearPersonalReputation(oKiller,oDead) ; // simultanee et respawn
      // ceux qui ont vu le deces perdent leur inimitie personnelle
      // envers le mort, l'amitie reste.
  object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, 40.0f, lDead);
  while (GetIsObjectValid(oTarget)) {
      if(!GetIsReactionTypeFriendly(oTarget)) {
        ClearPersonalReputation(oDead,oTarget) ;
        ClearPersonalReputation(oTarget,oDead) ;
      }
      // creature suivante dans un rayon de 4 tiles
      oTarget = GetNextObjectInShape(SHAPE_SPHERE, 40.0f, lDead);
  }
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.


Note : tu peux monter l'ajustement à 80 (vers ami) si tu veux laisser encore plus de marge aux joueurs
 
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.369ms