J'ai un problème de scripts, aidez moi s'il vous plait

Répondre
Partager Rechercher
J'ai un problème avec mes scripts

voici le fichier guilde_include.nss :
Code PHP:

#include "aps_include"

// Ajouter un guilde
// sTable = Table MySQL
void SetGuilde(string sTable="guilde");

void SetGuilde(string sTable="guilde")
{
    
int iNum;
    
iNum Random(999999999);
    
iNum SQLEncodeSpecialChars(iNum);
    
sMaitre SQLEncodeSpecialChars(GetPCPlayerName(oObject));

    
string sSQL "SELECT num FROM " sTable " WHERE num='" IntToString(iNum) +
                  
"'";
    
SQLExecDirect(sSQL);

    if (
SQLFirstRow() == SQL_SUCCESS)
    {
        
// Si elle existe déja
        
iNum Random(999999999);
        
iNum SQLEncodeSpecialChars(iNum);
        
sSQL "INSERT INTO " sTable " (num,nom,maitre) VALUES" +
               
"('" IntToString(iNum) + "','Sans Nom','" +
               
sMaitre "')";
        
SQLExecDirect(sSQL);
        return 
iNum;
    }
    else
    {
        
// Si elle n'existe pas
        
sSQL "INSERT INTO " sTable " (num,nom,maitre) VALUES" +
               
"('" IntToString(iNum) + "','Sans Nom','" +
               
sMaitre "')";
        
SQLExecDirect(sSQL);
        return 
iNum;
    }

voici le fichier guilde_crea.nss :
Code PHP:

#include "guilde_include"
void main()
{
SetGuilde("guilde");
sNum IntToString(iNum);
SetCustomToken(10001sNum);

et voici l'erreur :
Code PHP:

10/05/2003 17:52:31 Erreur'guilde_crea' n’est pas compilé.
guilde_crea.nss(17): ERREUR DECLARATION DOES NOT MATCH PARAMETERS 
Je suis qu'un débutant en scriptage et je suis sur que mon erreur est conne mais j'ai vraiment besoin d'aide.
Pour information j'utilise NWNx
et c'est normal comment tu peu avoir 2 variable differentes egale ?

utilise plutot

Code PHP:

sNum SQLEncodeSpecialChars(iNum); 

et pense aussi a modifier ce qui en decoule
sa ne change rien sa remet toujours la même erreur, ce que je ne comprend pas c que lorsque je compile guilde_include il ne me fait aucune erreur.

Je reposte le nouveau code :

partie d'aps_include sur laquel je me suis basé pour faire mon truc :
Code PHP:

void SetPersistentString(object oObjectstring sVarNamestring sValueint iExpiration=0string sTable="pwdata")
{
    
string sPlayer;
    
string sTag;

    if (
GetIsPC(oObject))
    {
        
sPlayer SQLEncodeSpecialChars(GetPCPlayerName(oObject));
        
sTag SQLEncodeSpecialChars(GetName(oObject));
    }
    else
    {
        
sPlayer "~";
        
sTag GetTag(oObject);
    }

    
sVarName SQLEncodeSpecialChars(sVarName);
    
sValue SQLEncodeSpecialChars(sValue);

    
string sSQL "SELECT player FROM " sTable " WHERE player='" sPlayer +
                  
"' AND tag='" sTag "' AND name='" sVarName "'";
    
SQLExecDirect(sSQL);

    if (
SQLFirstRow() == SQL_SUCCESS)
    {
        
// row exists
        
sSQL "UPDATE " sTable " SET val='" sValue +
               
"',expire=" IntToString(iExpiration) + " WHERE player='"sPlayer +
               
"' AND tag='" sTag "' AND name='" sVarName "'";
        
SQLExecDirect(sSQL);
    }
    else
    {
        
// row doesn't exist
        
sSQL "INSERT INTO " sTable " (player,tag,name,val,expire) VALUES" +
               
"('" sPlayer "','" sTag "','" sVarName "','" +
               
sValue "'," IntToString(iExpiration) + ")";
        
SQLExecDirect(sSQL);
    }

Mon nouveau guilde_include :
Code PHP:

/***********************************/
/* Cree par MasterRPG              */
/* Le 10/05/03                     */
/* Utilise NWNx                    */
/***********************************/

#include "aps_include"

/*****************/
/* Les Fonctions */
/*****************/

// Ajouter un guilde
// sTable = Table MySQL
void SetGuilde(object oObjectstring sTable="guilde");

/**********/
/* Script */
/**********/

void SetGuilde(object oObjectstring sTable="guilde")
{
    
int iNum;
    
string sMaitre;
    
iNum Random(999999999);
    
IntToString(iNum);
    
sNum SQLEncodeSpecialChars(iNum);
    
sMaitre SQLEncodeSpecialChars(GetPCPlayerName(oObject));

    
string sSQL "SELECT num FROM " sTable " WHERE num='" sNum +
                  
"'";
    
SQLExecDirect(sSQL);

    if (
SQLFirstRow() == SQL_SUCCESS)
    {
        
// Si elle existe déja
        
iNum Random(999999999);
        
IntToString(iNum);
        
sNum SQLEncodeSpecialChars(iNum);
        
sSQL "INSERT INTO " sTable " (num,nom,maitre) VALUES" +
               
"('" sNum "','Sans Nom','" +
               
sMaitre "')";
        
SQLExecDirect(sSQL);
        return 
iNum;
    }
    else
    {
        
// Si elle n'existe pas
        
sSQL "INSERT INTO " sTable " (num,nom,maitre) VALUES" +
               
"('" sNum "','Sans Nom','" +
               
sMaitre "')";
        
SQLExecDirect(sSQL);
        return 
iNum;
    }

le fichier guilde_crea :
Code PHP:

#include "guilde_include"
void main()
{
SetGuilde(GetLastUsedBy(), "guilde");
sNum IntToString(iNum);
SetCustomToken(10001sNum);

L'erreur :
Code PHP:

10/05/2003 20:42:58 Erreur'guilde_crea' n’est pas compilé.
guilde_crea.nss(27): ERREUR DECLARATION DOES NOT MATCH PARAMETERS 
sPlayer = SQLEncodeSpecialChars(GetPCPlayerName(oObject));

Cette fonction prend comme paramètre une string, et renvoie une string.
Code PHP:

iNum Random(999999999);
IntToString(iNum);
sNum SQLEncodeSpecialChars(iNum); 
Deux problèmes :
* tu as oublié de déclarer ta string 'sNum',
* iNum est un entier, il n'est pas modifié par IntToString(iNum), aucune fonction NWScript ne modifie directement ses arguments, la façon correcte d'écrire ceci est donc :
Code PHP:

string sNum;
iNum Random(999999999);
sNum SQLEncodeSpecialChars(IntToString(iNum)); 
Jedai > Dans la version que g modifier j'ai fait sa. sa marche toujours pas, il me fou une autre erreur maintenant :

10/05/2003 21:02:54 : Erreur. 'guilde_crea' n’est pas compilé.
guilde_crea.nss(25): ERREUR : VARIABLE DEFINED WITHOUT TYPE

24 string sNum;
25 iNum = Random(999999999);
26 sNum = SQLEncodeSpecialChars(IntToString(iNum));

je rappelle qu'il me met c message que lorsque je compile guilde_crea

Si je met int iNum avant iNum = Random(999999999);
il me met un autre message d'erreur : PARSING VARIABLE LIST

Si j'enleve tout ce qui fait référence à iNum et sNum sa se compile parfaitement, malheuresement c indispensable pour se que je veut faire
Tu n'a pas défini iNum apparemment

Vérifie que tu as ça au début :
Code PHP:

.   int iNum;
    
string sMaitre;
    
iNum Random(999999999);
    
IntToString(iNum);
    
sNum SQLEncodeSpecialChars(IntToString(iNum)); 
A un moment dans ta fonction tu utilise :
Code PHP:

return iNum
Or ta fonction est de type void, donc elle ne peut rien renvoyer.

Tiens, essaie ça, j'ai corrigé tout ce qui semblait ne pas aller (d'ailleurs ce que j'ai dis dans le post précédent est une grosse ânerie):

Code PHP:

void SetGuilde(object oObjectstring sTable="guilde")
{
    
int iNum;
    
string sMaitre;
    
iNum Random(999999999);
    
string sNum SQLEncodeSpecialChars(IntToString(iNum));
    
sMaitre SQLEncodeSpecialChars(GetPCPlayerName(oObject));

    
string sSQL "SELECT num FROM " sTable " WHERE num='" sNum +"'";
    
SQLExecDirect(sSQL);

    if (
SQLFirstRow() == SQL_SUCCESS)
    {
        
// Si elle existe déja
        
iNum Random(999999999);
        
IntToString(iNum);
        
sNum SQLEncodeSpecialChars(iNum);
        
sSQL "INSERT INTO " sTable " (num,nom,maitre) VALUES" +
               
"('" sNum "','Sans Nom','" +
               
sMaitre "')";
        
SQLExecDirect(sSQL);
    }
    else
    {
        
// Si elle n'existe pas
        
sSQL "INSERT INTO " sTable " (num,nom,maitre) VALUES" +
               
"('" sNum "','Sans Nom','" +
               
sMaitre "')";
        
SQLExecDirect(sSQL);
    }

g réussit à faire accepter le return en mettant string à la place de void mais lorsque je veut récupérer la valeur pour le mettre dans un token il ne me mes rien à la fin dans le dialogue
Voici la solution :

fichier guilde_include.nss :

Code PHP:

/***********************************/
/* Cree par MasterRPG              */
/* Le 10/05/03                     */
/* Utilise NWNx                    */
/***********************************/

#include "aps_include"


/*****************/
/* Les Fonctions */
/*****************/

// Ajouter une guilde
// sTable = Table MySQL
string SetGuilde(string sTable="guilde");


/**********/
/* Script */
/**********/

string SetGuilde(string sTable="guilde")
{
    
int iNum;
    
string sMaitre;
    
iNum Random(999999999);
    
string sNum SQLEncodeSpecialChars(IntToString(iNum));
    
sMaitre SQLEncodeSpecialChars(GetPCPlayerName(GetLastSpeaker()));

    
string sSQL "SELECT num FROM " sTable " WHERE num='" sNum +"'";
    
SQLExecDirect(sSQL);

    if (
SQLFirstRow() == SQL_SUCCESS)
    {
        
// Si elle existe déja
        
iNum Random(999999999);
        
IntToString(iNum);
        
sNum SQLEncodeSpecialChars(IntToString(iNum));
        
sSQL "INSERT INTO " sTable " (num,nom,maitre) VALUES" +
               
"('" sNum "','Sans Nom','" sMaitre "')";
        
SQLExecDirect(sSQL);
        return 
sNum;
    }
    else
    {
        
// Si elle n'existe pas
        
sSQL "INSERT INTO " sTable " (num,nom,maitre) VALUES" +
               
"('" sNum "','Sans Nom','" sMaitre "')";
        
SQLExecDirect(sSQL);
        return 
sNum;
    }

voici le fichier guilde_crea.nss:

Code PHP:

#include "guilde_include"
void main()
{
string sNum SetGuilde("guilde"); // Crée et Recupere le numero de la guilde
SetCustomToken(10001sNum); // Met le numero de la guilde dans un Token

Je suis sur qu'il y a plus facile que sa mais comme je suis qu'un débutant g pas trouvé mieux
rq : les deux premiers problèmes aurait selon peu être réglé avec :
qq erreur du compilateur
c pas pour faire de la pub, c'est pour savoir si tu 'as pas vu, si t'as pas compris, ou si autre chose
ps : merci pour cette nouvelle erreur

edit :
servent à quoi les

Code PHP:

IntToString(iNum); 

En fait c parce que dans la base c que des VARCHAR et pas des INT donc fallait les transformer, et ensuite sa fait une transformation de moins a faire pour l'afficher dans un dialogue.
Citation :
if (SQLFirstRow() == SQL_SUCCESS)
{
// Si elle existe déja
iNum = Random(999999999);
Code PHP:

IntToString(iNum); 

sNum = SQLEncodeSpecialChars(IntToString(iNum));
sSQL = "INSERT INTO " + sTable + " (num,nom,maitre) VALUES" +
Il parle de la ligne IntToString(iNum); toute seule, qui effectivement, toute seule, ne sert a rien.

(a la limite avec un iNum = IntToString(iNum)...)

euh . . . t sur ? un
Code PHP:

iNum IntToString(iNum); 



on est d'accord, un éventuel

Code PHP:

string sNum;
sNum IntToString(iNum); 
mais transformer le iNum en string . . . (c t ca mon pb personnelemnt je sais ce que fait ce truc, j'en bouffe depuis 1 mois, mais il ne transforme pas une variable int en string, on est d'accord . . .
parce que sinon, ba je saurais pas trop quoi en penser moi
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés