Login: Pass:
Slayne



Inscrit le: 02 Oct 2006
Messages: 33
Message Posté le: 21/11/2006 22:40 Sujet du message: [Reso] Script de drop aléatoire d'un coffre
Bien le bonjour,

Voila, dans mon ancien module sur NWN1 "Les Royaumes d'Asgôrd" j'utilisais un script qui permettait de générer un item aléatoirement lors de l'ouverture d'un coffre. Il marchait parfaitement bien. J'ai essayer de le remettre sur le Mod que je suis en train de faire sur electron mais il ne veut pas le compiler.

Si quelqu'un savait pourquoi ca ne marche plus, ca serait sympa de m'éclairer ^^

Voici les 2 scripts utilisés:

Code:
#include "NW_O2_CONINCLUDE"
#include "fonctions_coffre"

//Declare Variables
int xLootChance1, xLootChance2, xRoll;
string xLoot1, xLoot2, xLoot3;

//Declare Custom Script
void RandomLoot(string xLoot1, string xLoot2, string xLoot3, int xLootChance1, int xLootChance2);

//RandomLoot creates the loot based on specified chance
void RandomLoot(string xLoot1, string xLoot2, string xLoot3, int xLootChance1, int xLootChance2)
{
  xRoll = Random(100) + 1;
  if (xRoll <= xLootChance1)
    CreateItemOnObject(xLoot1,OBJECT_SELF,1);
  else if ((xRoll > xLootChance1) && (xRoll <= xLootChance2))
    CreateItemOnObject(xLoot2,OBJECT_SELF,1);
  else if (xRoll > xLootChance2)
    CreateItemOnObject(xLoot3,OBJECT_SELF,1);
}

void main()
{
//WriteTimestampedLogEntry("CORPS_CRYPTE2");
    if (GetLocalInt(OBJECT_SELF,"NW_DO_ONCE") == 0)
    {
    Enleve_Invis(GetLastOpenedBy());
    DelayCommand(10.0, Enleve_Invis(GetLastOpenedBy()));
    int iD100 = Random(100) + 1;
    if (iD100 <= 21)
        // Ecu + 3, Pavois + 3, Rondache + 3 6900
        RandomLoot("NW_ASHMLW009","NW_ASHMTO009","NW_ASHMSW009",33,66);
    else  if ((iD100 > 21) && (iD100 <= 43))
        // Armure a plaque + 3 7400, Crevice + 3 7000, Harnois + 3 8300
        RandomLoot("NW_MAARCL081","NW_MAARCL076","maarcl085",33,66);
    else  if ((iD100 > 43) && (iD100 <= 64))
        // Armure de Peau + 3, Armure d'écailles + 3, Cotte de mailles + 3 6900
        RandomLoot("NW_MAARCL082","NW_MAARCL085","NW_MAARCL078",33,66);
    else  if ((iD100 > 64) && (iD100 <= 78))
        // Cuir + 3 , Robe de mage + 3 6800, Harnois + 3 8300
        RandomLoot("NW_MAARCL083","zep_wizrobes001","armuredesarev001",33,66);
    else if (iD100 > 78)
        // Clouté + 3, Matelassée + 3, Chemise de mailles + 3 6800
        RandomLoot("NW_MAARCL087","NW_MAARCL084","NW_MAARCL079",33,66);

    // Rune des Elementaires  9000
    CreateItemOnObject("runedeselementai",OBJECT_SELF,1);

    // Total de 15800 a 17300

    SetLocalInt(OBJECT_SELF,"NW_DO_ONCE",1);
    ShoutDisturbed();

    DelayCommand(3600.0, SetLocalInt(OBJECT_SELF,"NW_DO_ONCE",0));
    }
}


et le fonctions_coffre :

Code:
void Enleve_Invis(object oPC);

void Enleve_Invis(object oPC)
{
//WriteTimestampedLogEntry("FONCTIONS_COFFRE");
 // Tue un joueur invisible
 effect eEffet = GetFirstEffect(oPC);
 while (GetIsEffectValid(eEffet))
       {
        if ( (GetEffectType(eEffet) == EFFECT_TYPE_IMPROVEDINVISIBILITY) ||
             (GetEffectType(eEffet) == EFFECT_TYPE_INVISIBILITY) )
             {
              ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(0, 1), oPC);
              SendMessageToPC(oPC, "Piller des tresors en abusant du sort invisibilite est considere comme une tentative de triche. Cela est, comme vous le constatez, fortement sanctionne.");
             }
        eEffet = GetNextEffect(oPC);
       }
}


C'est le premier qui ne veut plus se compiler. En même temps, si ca peut servir à d'autres mapeurs.

Merci d'avance ^^


Dernière édition par Slayne le 29/11/2006 20:07; édité 1 fois
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé
Mars



Inscrit le: 22 Mai 2005
Messages: 218
Localisation: Sur une galaxie lointaine, très lointaine
Message Posté le: 21/11/2006 22:52 Sujet du message:
A tout hazard, as tu vérifié que l'include "NW_O2_CONINCLUDE" existe toujours ?
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
Slayne



Inscrit le: 02 Oct 2006
Messages: 33
Message Posté le: 22/11/2006 11:22 Sujet du message:
Je viens de vérifier, et le
Code:
nw_02_coninclude
existe bien.

Le probléme vient du script "fonctions_coffre" en fait au niveau de cette ligne

Code:
if ( (GetEffectType(eEffet) == EFFECT_TYPE_IMPROVEDINVISIBILITY) ||


J'ai peut-être mal copie/colle ^^ Et oui, je ne sait faire que ca Rolling Eyes
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé
Slayne



Inscrit le: 02 Oct 2006
Messages: 33
Message Posté le: 22/11/2006 11:36 Sujet du message:
Ca y est, ca fonctionne. J'ai simplement changé l'effect_type en le remplacant par

Code:
if ( (GetEffectType(eEffet) == EFFECT_TYPE_SANCTUARY) ||


Et zouh ! ca marche Wink
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   

Page 1 sur 1
Sauter vers:  

 

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

Traduction par : phpBB-fr.com
Powered by phpBB © 2001, 2007 phpBB Group