La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 27/12/2024 19:43:44


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
AZAZEL11
Seigneur
Inscrit le: 08 Fév 2006
Messages: 156
Répondre en citant
Posté le : 29/10/2007 03:06:06 Sujet du message : [RÉSOLU] Leviers et traps

allo. J'ai fait un script pour les leviers ouvrant des portes

le système fonctionne, le levier ouvre ou ferme la porte comme il se doit.


L'ennui est de coté esthétique; J'ai fait un système de sons aléatoires. Jusque là tout va très bien encore les sons jouent de facon aléatoire. Mais le problème c'Est que parfois il n'y a aucun sons! des fois c'est la première série, des fois la deuxième des fois les 2!!!

j'avoue que je ne saisi pas le pourquoi...quoique mon random est encore plus *réaliste* Razz mais cependant j'aimerais bien savoir pourquoi ce comportement!


il y a peut être une option que je n'ai pas mise...mais laquelle?

NWScript :

//created by: AZAZEL
//script pour system de levier et trap UNIVERSEL
//a mettre dans le OnUsed du levier
//modified by:



void main()
{
object oPC=GetLastUsedBy();
object oLevier= OBJECT_SELF;
string sTag= GetTag(OBJECT_SELF);
location lLoc= GetLocation(oLevier);


//la porte doit avoir pour tag:Trap_ et on ajoute le tag du levier///
object oTarget=GetObjectByTag("Trap_" +sTag);


///////////////////////Random pour les sons du debut AZAZEL/////////////////
string sSon;
int nRandom= d8(1);

switch (nRandom)
{
case 1: sSon= "as_cv_boilegrn1"; break;
case 2: sSon= "as_cv_boilegrn2"; break;
case 3: sSon= "as_cv_boilegrn1"; break;
case 4: sSon= "as_cv_crank1"; break;
case 5: sSon= "as_cv_beamcreak1"; break;
case 6: sSon= "as_cv_beamcreak4"; break;
case 7: sSon= "as_cv_pipegroan"; break;
case 8: sSon= "as_cv_pipegroan"; break;

        }

        //Random pour les sons consequents//////////
string sSon2;
int nRandom2= d4(1);
switch (nRandom2)
      {
case 1: sSon2= "as_cv_boomdist1"; break;
case 2: sSon2= "as_cv_boomdist2"; break;
case 3: sSon2= "as_cv_pipegroan"; break;
case 4: sSon2= "as_cv_pipegroan"; break;

      }

    if (GetLocalInt(OBJECT_SELF, "Fonction")==0) //pas en fonction? ok
      {
      SetLocalInt (OBJECT_SELF, "Fonction", 1);





  if (!GetIsOpen(oTarget))
      {


AssignCommand(oLevier,PlayAnimation (ANIMATION_PLACEABLE_ACTIVATE));
PlaySound("as_sw_lever1");
DelayCommand (2.0, PlaySound(sSon));
DelayCommand (5.0, PlaySound(sSon2));
DelayCommand (6.0, ActionOpenDoor(oTarget));
DelayCommand(8.0,DeleteLocalInt (OBJECT_SELF, "Fonction"));
      }

else

if (GetIsOpen(oTarget))
      {

AssignCommand(oLevier,PlayAnimation (ANIMATION_PLACEABLE_DEACTIVATE));
PlaySound("as_sw_lever1");

DelayCommand (2.0, PlaySound(sSon));
DelayCommand (5.0, PlaySound(sSon2));
DelayCommand (6.0, ActionCloseDoor(oTarget));
DelayCommand (8.0, DeleteLocalInt (OBJECT_SELF, "Fonction"));
      }

      }
else

if (GetLocalInt(oLevier, "Fonction")==1)
      {
  SendMessageToPC (oPC, ""); //en fonction? bloquer

      }

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

_________________
L'imagination est plus importante que le savoir. (Albert Einstein)
Dernière édition par AZAZEL11 le 03/11/2007 17:50:03; édité 1 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
AZAZEL11
Seigneur
Inscrit le: 08 Fév 2006
Messages: 156
Répondre en citant
Posté le : 30/10/2007 02:06:21 Sujet du message :

bon ok, ca pas l'air d'intéresser grand monde pour les sons. Mais inquiétez vous pas Razz

j'ai un nouveau problème héhé!

en fait ma boucle pour trouver les autres portes (ayant le meme tag) ne fonctionne pas. Je sais pertinement que c'est soit ma zone qui est mal définie ou bien mon while qui est incorrect. Mais après quelques heures sans résultats, je donne ma langue au chat.

quelqu'un d'assez aimable pourrait me dire mon erreur?



NWScript :
//created by: AZAZEL
//script pour system de levier et trap UNIVERSEL
//a mettre dans le OnUsed du levier
//modified by:



void main()
{
object oPC=GetLastUsedBy();
object oLevier= OBJECT_SELF;
string sTag= GetTag(OBJECT_SELF);


location lLoc= GetLocation(oLevier);
//la porte doit avoir pour tag:Trap_ et on ajoute le tag du levier///
object oTarget=GetObjectByTag("Trap_" +sTag);
object oArea=GetArea(oTarget);


///////////////////////Random pour les sons du debut AZAZEL/////////////////
string sSon;
int nRandom= d8(1);

switch (nRandom)
{
case 1: sSon= "as_cv_boilegrn1"; break;
case 2: sSon= "as_cv_boilegrn2"; break;
case 3: sSon= "as_cv_boilegrn1"; break;
case 4: sSon= "as_cv_crank1"; break;
case 5: sSon= "as_cv_beamcreak1"; break;
case 6: sSon= "as_cv_beamcreak4"; break;
case 7: sSon= "as_cv_pipegroan"; break;
case 8: sSon= "as_cv_pipegroan"; break;

        }
        //Random pour les sons consequents//////////
string sSon2;
int nRandom2= d4(1);
switch (nRandom2)
      {
case 1: sSon2= "as_cv_boomdist1"; break;
case 2: sSon2= "as_cv_boomdist2"; break;
case 3: sSon2= "as_cv_pipegroan"; break;
case 4: sSon2= "as_cv_pipegroan"; break;

      }
//    int nDoor=GetObjectType(OBJECT_TYP E_DOOR);
    if (GetLocalInt(OBJECT_SELF, "Fonction")==0) //pas en fonction? ok
      {

      SetLocalInt (OBJECT_SELF, "Fonction", 1);


      while (GetIsObjectValid(oTarget)==TRUE)
        {
          //
        SendMessageToPC(oPC,"phase1");
  if (!GetIsOpen(oTarget))
      { //fermer

      SendMessageToPC(oPC,"phase2");
AssignCommand(oLevier,PlayAnimation (ANIMATION_PLACEABLE_ACTIVATE));
PlaySound("as_sw_lever1");
DelayCommand (2.0, PlaySound(sSon));
DelayCommand (5.0, PlaySound(sSon2));
DelayCommand (5.0, SetLocked(oTarget, FALSE));
DelayCommand (6.0, ActionOpenDoor(oTarget));
DelayCommand (7.0, SetLocked(oTarget, TRUE));
DelayCommand (8.0,DeleteLocalInt (OBJECT_SELF, "Fonction"));

      } ///fermer
else

if (GetIsOpen(oTarget))
      { //ouvre
        SendMessageToPC(oPC,"phase3");
AssignCommand(oLevier,PlayAnimation (ANIMATION_PLACEABLE_DEACTIVATE));
PlaySound("as_sw_lever1");

DelayCommand (2.0, PlaySound(sSon));
DelayCommand (5.0, PlaySound(sSon2));
DelayCommand (6.0, ActionCloseDoor(oTarget));
DelayCommand (8.0, DeleteLocalInt (OBJECT_SELF, "Fonction"));

} //

        //


            break;


      // ouvre
      }
      object oTrap=GetFirstObjectInArea(GetArea(oArea));
      object oTarget;
      oTrap=oTarget;
      oTarget=GetNextObjectInArea(oArea);
      SendMessageToPC(oPC,"phase4");
      }

            ///
            //






else

if (GetLocalInt(oLevier, "Fonction")==1)
      {
  SendMessageToPC (oPC, ""); //en fonction? bloquer


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

_________________
L'imagination est plus importante que le savoir. (Albert Einstein)
Dernière édition par AZAZEL11 le 30/10/2007 22:58:15; édité 1 fois
 
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 : 30/10/2007 13:23:50 Sujet du message :

Sans avoir lu le détail de ton script, on peut déjà voir le problème suivant : tu définis oTrap=GetFirstObjectInArea(oArea) mais ensuite dans ta boucle tu commences avec while(GetIsObjectValid(oTarget)).
_________________
» 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
 
AZAZEL11
Seigneur
Inscrit le: 08 Fév 2006
Messages: 156
Répondre en citant
Posté le : 30/10/2007 17:56:18 Sujet du message :

ah bon sang! J'avais meme pas envisagé de vérifier ça!!! C'est surement ca car le script compile oui c'est déja ça mais aucune boucle d'effecuée. merci finipe je vais tester ca ce soir!
_________________
L'imagination est plus importante que le savoir. (Albert Einstein)
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
AZAZEL11
Seigneur
Inscrit le: 08 Fév 2006
Messages: 156
Répondre en citant
Posté le : 30/10/2007 22:53:14 Sujet du message :

ah c'Est n'importe quoi! j'y arrive pas lol! après moults tests en définissant mes variables autrement et de plusieurs facon rien ne fait!!! ma boucle est toujours inexistante mais mon script compile toujours...je sais que c'Est un rien mais ce *rien* là commence à m'énerver sérieusement!!! Ca fait 2 jours que je tente à temps perdu de résoudre ce script lol. (ca parait tu que je suis beginner avec les while? Razz )


si je suis autant insistant c,est que j'ai besoin de ce script pour commencer mes futures maps, leur structures dépendent de ce script entre autre...pour mon labyrinthe


PS' J'ai édité le CODE plus haut pour une meilleure compréhension.
_________________
L'imagination est plus importante que le savoir. (Albert Einstein)
 
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 : 30/10/2007 23:19:53 Sujet du message :

Tu devrais INDENTER ton code avec beaucoup de RIGUEUR, ça simplifie terriblement la lecture, et on voit plus facilement les éventuelles erreurs. Essaye de l'organiser toujours de la même façon. Exemple totalement fictif :

NWScript :
void main()
{
    object oPC = GetLastUsedBy();
    object oLevier = OBJECT_SELF;
    string sTag = GetTag(OBJECT_SELF);

    if(sTag == "pouet")
    {
        // Chaque bloc d'instruction est compris entre
       
       

        if(....)
        {
            // ..........
        }
        else
        {
            // ..........
        }
    }
}
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.


Si tu t'astreins à faire TOUJOURS de la même façon, tu t'épargneras bien des erreurs. C'est un peu autiste, mais pour bien programmer, faut être très rigoureux, y a pas de mystère Smile
_________________
» 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
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 30/10/2007 23:32:55 Sujet du message :

Tiens, voici ton code indenté avec rigueur : d'un seul coup, on s'aperçoit qu'il est farci de fautes, d'incohérences et d'oublis Shocked

NWScript :
//created by: AZAZEL
//script pour system de levier et trap UNIVERSEL
//a mettre dans le OnUsed du levier
//modified by:



void main()
{
  object oPC = GetLastUsedBy();
  object oLevier = OBJECT_SELF;
  string sTag = GetTag(OBJECT_SELF);


  location lLoc = GetLocation(oLevier);

  // La porte doit avoir pour tag : Trap_ et on ajoute le tag du levier
  object oTarget = GetObjectByTag("Trap_" + sTag);
  object oArea = GetArea(oTarget);


  // ***************** Random pour les sons du debut AZAZEL ************

  string sSon;
  int nRandom = d8(1);

  switch(nRandom)
  {
    case 1: sSon = "as_cv_boilegrn1"; break;
    case 2: sSon = "as_cv_boilegrn2"; break;
    case 3: sSon = "as_cv_boilegrn1"; break;
    case 4: sSon = "as_cv_crank1"; break;
    case 5: sSon = "as_cv_beamcreak1"; break;
    case 6: sSon = "as_cv_beamcreak4"; break;
    case 7: sSon = "as_cv_pipegroan"; break;
    case 8: sSon = "as_cv_pipegroan"; break;
  }

 
  string sSon2;
  int nRandom2 = d4(1);

  switch(nRandom2)
  {
    case 1: sSon2 = "as_cv_boomdist1"; break;
    case 2: sSon2 = "as_cv_boomdist2"; break;
    case 3: sSon2 = "as_cv_pipegroan"; break;
    case 4: sSon2 = "as_cv_pipegroan"; break;
  }

  int nDoor = GetObjectType(OBJECT_TYPE_DOOR);

  if(GetLocalInt(OBJECT_SELF, "Fonction") == 0)
  {
    SetLocalInt(OBJECT_SELF, "Fonction", 1);

    while(GetIsObjectValid(oTarget) == TRUE)
    {
      SendMessageToPC(oPC, "phase1");
      if(!GetIsOpen(oTarget))
      {
        SendMessageToPC(oPC, "phase2");
        AssignCommand(oLevier, PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE));
        PlaySound("as_sw_lever1");

        DelayCommand(2.0, PlaySound(sSon));
        DelayCommand(5.0, PlaySound(sSon2));
        DelayCommand(5.0, SetLocked(oTarget, FALSE));
        DelayCommand(6.0, ActionOpenDoor(oTarget));
        DelayCommand(7.0, SetLocked(oTarget, TRUE));
        DelayCommand(8.0, DeleteLocalInt(OBJECT_SELF, "Fonction"));
      }
      else if(GetIsOpen(oTarget))
      {
        SendMessageToPC(oPC, "phase3");
        AssignCommand(oLevier, PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));
        PlaySound("as_sw_lever1");

        DelayCommand(2.0, PlaySound(sSon));
        DelayCommand(5.0, PlaySound(sSon2));
        DelayCommand(6.0, ActionCloseDoor(oTarget));
        DelayCommand(8.0, DeleteLocalInt(OBJECT_SELF, "Fonction"));
      }

      break;
    }

    object oTrap=GetFirstObjectInArea(GetArea(oArea));
    object oTarget;
    oTrap = oTarget;
    oTarget = GetNextObjectInArea(oArea);
    SendMessageToPC(oPC, "phase4");
  }

  else if(GetLocalInt(oLevier, "Fonction") == 1)
  {
    SendMessageToPC(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.




Ta boucle while déconne sérieusement ! Une boucle de ce type s'organise presque toujours de la façon suivante :

NWScript :
object oObjet = GetFirstObjectInArea(oArea); // ou bien GetFirstObjectInShape, ou tout autre GetFirstQuelqueChose...

while(GetIsObjectValid(oObjet))
{
  if(test)
  {
   
  }

  oObjet = GetNextObjectInArea(oArea); // ou bien GetNextObjectInShape, ou tout autre GetNextQuelqueChose...
}
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
 
AZAZEL11
Seigneur
Inscrit le: 08 Fév 2006
Messages: 156
Répondre en citant
Posté le : 31/10/2007 01:24:10 Sujet du message :

rien d'encourageant....je crois que je vais me résigner a un levier pour chacunes des portes/grilles. (boulot de plus...)

mon problème pour les variables est que je dois utiliser le oTarget et le oTrap pour la meme porte, mais ca je crois que c'est bon non?

en fait j'devrais peut etre me tapper une bonne lecture pour mieux connaitre les scripts car certaines options me sont inconnues encore, et c'Est MOI (LOL) qui est le scripteur de secours.
_________________
L'imagination est plus importante que le savoir. (Albert Einstein)
 
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 : 31/10/2007 10:05:17 Sujet du message :

Mais non mais non. Il faut juste revoir ta boucle ! Cependant, je ne comprends pas bien le but de ton script. Tu parles de leviers, de portes, mais que veux-tu faire exactement ?

Ouvrir toutes les portes d'un seul levier ? Ouvrir des portes aléatoires ? Actionner plusieurs leviers pour une seule porte ? Ouvrir la porte la plus proche du levier considéré ?
_________________
» 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
 
AZAZEL11
Seigneur
Inscrit le: 08 Fév 2006
Messages: 156
Répondre en citant
Posté le : 31/10/2007 11:39:15 Sujet du message :

ouvrir des portes avec le meme tag par un seul levier,


NWScript :
"Trap_" +sTag
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.

_________________
L'imagination est plus importante que le savoir. (Albert Einstein)
 
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 : 01/11/2007 14:59:45 Sujet du message :

Sur le principe, ça devrait donner une architecture ressemblant à ça :

NWScript :
void main()
{
  object oArea = GetArea(OBJECT_SELF);
  string sTag = "Trap_" + GetTag(OBJECT_SELF);
  object oTrap = GetFirstObjectInArea(oArea);

  while(GetIsObjectValid(oTrap))
  {
   
    if(GetObjectType(oTrap) == OBJECT_TYPE_DOOR && GetTag(oTrap) == sTag)
    {
      if(!GetIsOpen(oTrap))
      {
        AssignCommand(OBJECT_SELF, PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE));
      }
      else
      {
        AssignCommand(OBJECT_SELF, PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));
      }
    }

    oTrap = GetNextObjectInArea(oArea);
  }
}
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 sont les grandes lignes ! Ensuite, tu peux rajouter des trucs dans ce canevas là (les sons notamment).
_________________
» 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
 
AZAZEL11
Seigneur
Inscrit le: 08 Fév 2006
Messages: 156
Répondre en citant
Posté le : 02/11/2007 03:44:33 Sujet du message :

même de cette facon la boucle ne s'exécute pas... merci d'avoir essayé.
_________________
L'imagination est plus importante que le savoir. (Albert Einstein)
 
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 : 02/11/2007 04:03:42 Sujet du message :

Le script brut tel que je te l'ai mis juste avant devrait fonctionner. S'il ne fonctionne pas, c'est que tu as une erreur quelque part... Telle que je l'ai écrite, la boucle devrait boucler !
_________________
» 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
 
Anthraxcite
Légende vivante
Inscrit le: 12 Juin 2004
Messages: 372
Localisation: Belgique
Répondre en citant
Posté le : 02/11/2007 08:21:31 Sujet du message :

Y a un break dans la boucle et un break dans une boucle ça permet de sortir de cette boucle(j'ai jamais trop aimé cette façon de sortir d'une boucle d'ailleurs).
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger Ignorer l'utilisateur
 
finipe
Grand Sage du Conseil
Inscrit le: 11 Fév 2003
Messages: 519
Localisation: Nantes
Répondre en citant
Posté le : 02/11/2007 14:55:23 Sujet du message :

Ouaip sauf que pour ce qu'il veut faire, il ne lui faut pas de break, puisque (si j'ai bien compris) il veut ouvrir toutes les portes d'une même zone avec un seul levier.

Mais j'ai peut-être mal compris Ed
_________________
» 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
 
AZAZEL11
Seigneur
Inscrit le: 08 Fév 2006
Messages: 156
Répondre en citant
Posté le : 03/11/2007 17:38:50 Sujet du message :

et bien...merci pour votre aide. J'y ai été d,une autre facon car avec la précédente, on aurait que c'était impossible!

NWScript :

void main()
{
object oPC = GetLastUsedBy();
string sTag ="Trap_"+ GetTag(OBJECT_SELF);
object oArea = GetArea(OBJECT_SELF);
object oTrap;
object oLevier=OBJECT_SELF;
int nAction1=ANIMATION_PLACEABLE_ACTIVATE;
int nAction2=ANIMATION_PLACEABLE_DEACTIVATE;
//string sSon = GetSon();
//string sSon2 = GetSon2();

// string GetSon()
//{
string sSon;
switch(d8())
{
case 1: sSon = "as_cv_boilegrn1"; break;
case 2: sSon = "as_cv_boilegrn2"; break;
case 3: sSon = "as_cv_boilegrn1"; break;
case 4: sSon = "as_cv_crank1"; break;
case 5: sSon = "as_cv_beamcreak1"; break;
case 6: sSon = "as_cv_beamcreak4"; break;
case 7: sSon = "as_cv_pipegroan"; break;
case 8: sSon = "as_cv_pipegroan"; break;
//}
//return sSon;
}



//string GetSon2()
//{
string sSon2;
switch(d4())
{
case 1: sSon2 = "as_cv_boomdist1"; break;
case 2: sSon2 = "as_cv_boomdist2"; break;
case 3: sSon2 = "as_cv_pipegroan"; break;
case 4: sSon2 = "as_cv_pipegroan"; break;
//}
//return sSon2;
}














if (GetAbilityScore(oPC, ABILITY_STRENGTH)>=16)
{
if(!GetLocalInt(OBJECT_SELF, "Fonction"))
{
SetLocalInt(OBJECT_SELF, "Fonction", TRUE);
oTrap=GetFirstObjectInArea(oArea);
while(GetIsObjectValid(oTrap))
{
if(GetObjectType(oTrap) == OBJECT_TYPE_DOOR && GetTag(oTrap) == sTag)
{
if ((!GetIsOpen(oTrap))&&(!GetLocalInt(oTrap, "open")))
{
SetLocalInt(oTrap, "open", TRUE);
DeleteLocalInt(oTrap, "close");
SetLocked(oTrap, FALSE);
if (!GetLocalInt(OBJECT_SELF, "DoOnce"))
{
SetLocalInt(OBJECT_SELF, "DoOnce", TRUE);
AssignCommand(OBJECT_SELF, PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE));
PlaySound("as_sw_lever1");

DelayCommand(2.0, PlaySound(sSon));
DelayCommand(5.0, PlaySound(sSon2));
}
DelayCommand(6.0, ActionOpenDoor(oTrap));
DelayCommand(7.0, SetLocked(oTrap, TRUE));
}
else if ((GetIsOpen(oTrap))&&(!GetLocalInt(oTrap, "close")))
{
SetLocalInt(oTrap, "close", TRUE);
DeleteLocalInt(oTrap, "open");
if (!GetLocalInt(OBJECT_SELF, "DoOnce"))
{
SetLocalInt(OBJECT_SELF, "DoOnce", TRUE);
AssignCommand(OBJECT_SELF, PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE));
PlaySound("as_sw_lever1");

DelayCommand(2.0, PlaySound(sSon));
DelayCommand(5.0, PlaySound(sSon2));
}
DelayCommand(6.0, ActionCloseDoor(oTrap));
}
}
oTrap = GetNextObjectInArea(oArea);
}
DelayCommand(7.0, DeleteLocalInt(OBJECT_SELF, "DoOnce"));
DelayCommand(7.0, DeleteLocalInt(OBJECT_SELF, "Fonction"));
}
else
{
SendMessageToPC(oPC, "");
}
}
else
{
SendMessageToPC(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.

_________________
L'imagination est plus importante que le savoir. (Albert Einstein)
 
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 97.984ms