GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Eloctro le 23 Avril 2009, 13:18:51

Titre: Problème aficher donner
Posté par: Eloctro le 23 Avril 2009, 13:18:51
Salut ,
Je veut afficher des donner mais je n'y arrive pas sa bug :
new string[256];
SendClientMessage(playerid, 0xAA3333AA,string);
format(string, sizeof(string), "Maison de %d actulement %s",Maison1P,Maison1);//Maison1P est le propiétaire avec des lettres /Maison1 est 0 ou 1 si la maisn est libre ou pas .


Mon Problème 2 je n'arrive pas a récupére les infos :

public Lmaison()
{

new File: file = fopen("maison.rpg", io_read);
if (file)
{
  new key[ 256 ] , val[ 256 ];
    new Data[ 256 ];
if( strcmp( key , "Maison1" , true ) == 0 ) { val = ini_GetValue( Data ); Maison1 = strval( val ); }
if( strcmp( key , "Maison1P" , true ) == 0 ) { val = ini_GetValue( Data ); Maison1P = strval( val ); }//Erreur ICI
  fclose(file);
}
return 1;
}

Voilla l'erreur de la ligne :

K:\Sa-mp Serveur\Mode-Mixte\filterscripts\Maisontest.pwn(109) : error 033: array must be indexed (variable "Maison1P")


Et je vous donnes mais 2 variables qui sont en haut du GM :

new Maison1P[MAX_PLAYER_NAME];
new Maison1;

Titre: Re : Problème aficher donner
Posté par: S!m le 24 Avril 2009, 02:20:01
Salut,

en premier lieu, dans ton format tu place mal tes symboles (ne trouvant pas meilleur mot), tu doit placer le %s avant le %d

voici d'ailleur leurs significations:

Citer
%b     Inserts a number at this position in binary radix
%c    Inserts a single character.
%d    Inserts an integer (whole) number
%f    Inserts a floating point number.
%i    Inserts an integer.
%s    Inserts a string.
%x    Inserts a number in hexadecimal notation.
%%    Inserts the literal '%'

bref:
new string[96];//vu la longueur de ton texte, il est inutile d'utiliser un string très long
format(string, sizeof(string), "Maison de %s actuellement %d",Maison1P,Maison1);//Maison1P est le propriétaire avec des lettres /Maison1 est 0 ou 1 si la maisn est libre ou pas
SendClientMessage(playerid, 0xAA3333AA,string);//tu dois envoyer le message après l'avoir formaté, non pas avant

Par la suite, ce code m'est totalement incompréhensible, désolé, mais je crois que tu cherche à faire un fichier du genre ini
pour ce genre de données, je te recommanderais plutôt de les placer une après l'autre avec un simple espace les séparant (et peut-être un fichier te servant de modèle en inscrivant la correspondance de chaque donnée)
Sinon ton erreur est toute simple, tu cherche à stocké un nombre dans ton string, pour obtenir un résultat acceptable il te faudrait changer:
Maison1P = strval( val );pour:
format(Maison1P, sizeof(Maison1P), "%d", val);
en espérant t'avoir légèrement aidé

EDIT Syg : Je me suis permis de remplacer le %s par un %d dans ta dernière ligne de code

++Sim++