La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 23/11/2024 08:16:56


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
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 : 06/10/2006 19:43:52 Sujet du message : Erreur de script incompréhensible... (Int pas activé)

Bonjour.

NWScript :
void main()
{
object oPC = GetLastUsedBy();
int i_map_now;
int i_map_check;
int i_max_map = 4;
int iCan;
int iStop;
int iTouch;
if(iTouch == 1)
{
while(i_map_now <= i_max_map && iStop == 0)
{
i_map_now++;
while(i_map_check <= i_max_map)
{
i_map_check++;
if(i_map_now == i_map_check)
{
i_map_check++;
}
if(GetLocalInt(GetModule(), "Map_"+IntToString(i_map_now)) > GetLocalInt(GetModule(), "Map_"+IntToString(i_map_check)))
{
iCan++;
}
}
if(iCan == 9)
{
iStop++;
SendMessageToPC(oPC, IntToString(i_map_now)+" possible, "+IntToString(iCan)+" vote");
}
else
{
iCan = 0;
SendMessageToPC(oPC, IntToString(i_map_now)+" impossible, juste "+IntToString(iCan)+" vote");
}
}
}
else
{
int iRandom1 = Random(10)+1;
int iRandom2 = Random(10)+1;
int iRandom3 = Random(10)+1;
int iRandom4 = Random(10)+1;
SetLocalInt(GetModule(), "Map_1", iRandom1);
SetLocalInt(GetModule(), "Map_2", iRandom2);
SetLocalInt(GetModule(), "Map_3", iRandom3);
SetLocalInt(GetModule(), "Map_4", iRandom4);
SendMessageToPC(oPC, "Random 1 : "+IntToString(iRandom1));
SendMessageToPC(oPC, "Random 2 : "+IntToString(iRandom2));
SendMessageToPC(oPC, "Random 3 : "+IntToString(iRandom3));
SendMessageToPC(oPC, "Random 4 : "+IntToString(iRandom4));
iTouch = 1;
}
}
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.


Bon, voila, ce script est en test, car fallait que je vois si il marche, donc en gros mon probleme, c'est ces variable :

NWScript :
int i_map_now;
int i_map_check;
int i_max_map = 4;
int iCan;
int iStop;
int iTouch;
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.


Normalement, si vous voyez bien, à la fin du script, on donne des chiffres aléatoire au Local Map_x. Et, l'Int iTouch passe à 1. Le probleme est que le script fait comme si le iTouch passe jamais à 1. Je ne vois pas mon erreur, car j'ai plus scripter depuis quelques mois, et donc j'ai du mal a m'y remettre, mais la pourtant, c'est quelques choses de simple que j'arrive pas.

Je précise que tiens assez à ce script, car il me permettra de remplacer un script de 250 lignes par celui la de quelques lignes Very Happy
_________________
[http]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Harmelyo
Chevalier
Inscrit le: 06 Oct 2005
Messages: 84
Répondre en citant
Posté le : 06/10/2006 21:03:07 Sujet du message :

Tu devrais déjà d'un simple coup d'oeil instancier ton i_map_now qui n'est instancier à aucun moment donc tu n'entre jamais dans ton premier while.

i_map_now=0;

ou

i_map_now=1;

Sa serait pas mal non?
 
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 : 06/10/2006 21:06:35 Sujet du message :

Ca change quoi de toute façon? lol le iTouch me genera tout le temps Razz Puis non normalement si je met i_map_now; c'est comme 0 ou FALSE, donc ça devrait pas poser de probleme
_________________
[http]
 
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 : 07/10/2006 08:00:10 Sujet du message :

Enfin j'ai pas lu le script en entier mais le premier truc qui me paraît bizarre c'est où tu va le chercher ton iTouch ?
Si j'ai bien compris le truc ça devrait être une variable locale sur la map qui te permettrais selon son état de lancer le premier if (principal) ou le else et dans ton cas on peut presque dire que c'est rien ton iTouch, le mettre à TRUE à la fin sert à rien.

Aussi tout tes variable déclarer au debut tu pourrais on mettre un paquet dans le if, comme ça lors de la première activation de script elle ne serais pas sollicité pour rien.
_________________
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
 
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 : 07/10/2006 10:15:56 Sujet du message :

Erf, j'aurais pas du arrêter nwn... Bon je vais faire une façon on ne peut plus chiante, ça va etre d'utiliser les locals... Pasque enfaite, je voulais faire en sorte d'éviter les Local, je peux donner un exemple :

On a par exemple, iTouch = 0. On veut savoir combien il a de joueur, on donne a iTouch +1 pour chaque joueur, et normalement, iTouch devient le nombre de joueur, mais ici ça s'applique pas, comment je fais alors? Enfin pour eviter d'utiliser les local, je me souviens pas d'en être obliger...
_________________
[http]
 
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 : 07/10/2006 10:47:48 Sujet du message :

Bon, voila le script que j'ai fait. Tout marche, sauf un probleme, je crois qu'il analyse que la premiere map, et en plus il verifie 5 map, au lieu de 4 (j'ai placer i_max_map a 4)

NWScript :

void main()
{
object oPC = GetLastUsedBy();
int iMaxMap = GetLocalInt(oPC, "i_max_map");
int iMapNow = GetLocalInt(oPC, "i_map_now");
int iMapCheck = GetLocalInt(oPC, "i_map_check");
int iStop = GetLocalInt(oPC, "iStop");
int i = 0;
while(iMapNow <= iMaxMap && iStop == 0)
{
iMapNow = iMapNow+1;
SetLocalInt(oPC, "i_map_now", iMapNow);
SendMessageToPC(oPC, "i_map_now : "+IntToString(iMapNow));
while(iMapCheck <= iMaxMap)
{
iMapCheck = iMapCheck+1;
SetLocalInt(oPC, "i_map_check", iMapCheck);
SendMessageToPC(oPC, "i_map_check : "+IntToString(iMapCheck)+" //// i_map_now : "+IntToString(iMapNow));
if(iMapCheck != iMapNow)
{
int iVoteCheck = GetLocalInt(GetModule(), "Map_"+IntToString(iMapCheck));
int iVoteNow = GetLocalInt(GetModule(), "Map_"+IntToString(iMapNow));
if(iVoteCheck < iVoteNow)
{
i = i+1;
SendMessageToPC(oPC, "i : "+IntToString(i));
}
}
else if(iMapCheck == iMapNow)
{
SendMessageToPC(oPC, "Meme Score");
}
}
if(i == iMaxMap)
{
iStop = iStop+1;
SetLocalInt(oPC, "iStop", iStop);
SendMessageToPC(oPC, "Map winner : "+IntToString(iMapNow));
}
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 on pourrait m'aider Smile
_________________
[http]
 
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 : 08/10/2006 19:07:13 Sujet du message :

UP : personne pour m'aider? Razz
_________________
[http]
 
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 : 08/10/2006 19:40:13 Sujet du message :

Bon, bein voila, je suis heureux, j'ai reussit, tout seul en plus...

NWScript :
/*void main()
{
object oPC = GetLastUsedBy();
int iMaxMap = GetLocalInt(oPC, "i_max_map");
int iMapNow = GetLocalInt(oPC, "i_map_now");
int iMapCheck = GetLocalInt(oPC, "i_map_check");
int iStop = GetLocalInt(oPC, "iStop");
int i = 0;
int iVoteCheck;
int iVoteNow;
    while(iMapNow &lt;= iMaxMap &amp;&amp; iStop == 0)
    {
    SendMessageToPC(oPC, "i_map_now : "+IntToString(iMapNow));
    SetLocalInt(oPC, "i_map_check", 1);
    iMapCheck = GetLocalInt(oPC, "i_map_check");
    i = 0;
        while(iMapCheck &lt;= iMaxMap)
        {
        SendMessageToPC(oPC, "i_map_check : "+IntToString(iMapCheck)+ " //// i_map_now : "+IntToString(iMapNow));
            if(iMapCheck != iMapNow)
            {
            iVoteCheck = GetLocalInt(GetModule(), "Map_"+IntToString(i MapCheck));
            iVoteNow = GetLocalInt(GetModule(), "Map_"+IntToString(i MapNow));
                if(iVoteCheck &lt; iVoteNow)
                {
                i = i+1;
                SendMessageToPC(oPC, "i : "+IntToString(i));
                }
                else
                {
                }
            }
            else if(iMapCheck == iMapNow)
            {
            SendMessageToPC(oPC, "Meme Score");
            }
        iMapCheck = iMapCheck+1;
        SetLocalInt(oPC, "i_map_check", iMapCheck);
        }
            if(i == (iMaxMap-1))
            {
            iStop = iStop+1;
            SetLocalInt(oPC, "iStop", iStop);
            SendMessageToPC(oPC, "Map winner : "+IntToString(iMapNow));
            }
            else
            {
            iMapNow = iMapNow+1;
    SetLocalInt(oPC, "i_map_now", iMapNow);
            }
    }
}*/


void main()
{
object oPC = GetLastUsedBy();

int iMaxMap=4;
int iMapNow=1;
int iMapCheck=1;
int iStop=0;
int i=0;
int iVoteCheck;
int iVoteNow;

    while(iMapNow <= iMaxMap && iStop == 0)
    {
    SendMessageToPC(oPC, "i_map_now : "+IntToString(iMapNow));
    iMapCheck = 1;
    i = 0;
        while(iMapCheck <= iMaxMap)
        {
        SendMessageToPC(oPC, "i_map_check : "+IntToString(iMapCheck)+" //// i_map_now : "+IntToString(iMapNow));
            if(iMapCheck != iMapNow)
            {
            iVoteCheck = GetLocalInt(GetModule(), "Map_"+IntToString(iMapCheck));
            iVoteNow = GetLocalInt(GetModule(), "Map_"+IntToString(iMapNow));
                if(iVoteCheck < iVoteNow)
                {
                i = i+1;
                SendMessageToPC(oPC, "i : "+IntToString(i));
                }
                else
                {
                }
            }
            else if(iMapCheck == iMapNow)
            {
            SendMessageToPC(oPC, "Meme Score");
            }
        iMapCheck = iMapCheck+1;
        }
            if(i == (iMaxMap-1))
            {
            iStop = iStop+1;
            SendMessageToPC(oPC, "Map winner : "+IntToString(iMapNow));
            }
            else
            {
            iMapNow = iMapNow+1;
            }
    }
}
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.


Bon, comme je disais, je savais bien que il y avait pas besoin de Local pour un script de ce genre, donc enfaite j'avais deux erreurs, je crois :

La première était iMapCheck n'étais pas verifier avant le if, donc, il y avait bug.
La deuxieme était i, lui j'ai oublier qu'il soit remit a 0 quand on verifie une autre carte.

En vert, c'était le script avec les Locals, et en normal, c'est le script. Donc pour informations, j'ai un script de 49 lignes, contre un script de de 472 lignes, moi je me dis GOOD GAME! Very Happy

Merci quand même de vos reponses les autres Wink

Edit : pour ce qui voulait savoir la fonction de ce script, c'était pour un vote de carte. Les votes des joueurs sont placer sur un Local "Map_x" (ou x est le tag de la carte). Le probleme de mon ancient script de 472 lignes, et que si je rajoute une carte, je dois rajouter une tonne de ligne, car il faut dire si le vote de la map 10 (nouvelle carte ajouté) elle est mise, et si les cartes sont a voix egale, on fait un random. Voila Smile
_________________
[http]
 
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 : 09/10/2006 21:31:49 Sujet du message :

J'avais juste critiqué ton premier script au point de vue du iTouch car il fallait bien une locale si le besoin était (vu que tu l'a viré t'en avait pas besoin apparament).

Après le reste j'ai pas pu t'aider et les autres aussi je pense car j'avais compris que c'était un système de vote en général (genre UT, Cs, etc) mais j'avais pas compris en précision comment les personnes votaient, le compte des points, etc.

Je pense que la prochaine fois se serait utile de décrire le système au cas où certains aurait des remarques interessantes.
_________________
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
 
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 : 10/10/2006 19:13:18 Sujet du message :

Oui effectivement, j'ai ommis de préciser ça, je pensé que vous alliez le voir avec la Local "Map_x" Very Happy Razz

Le iTouch c'était pour ajouter des votes aléatoire, et voir si le script marcher bien Smile
_________________
[http]
 
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 60.617ms