GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: chneubeul le 21 Novembre 2010, 20:41:42

Titre: [Topic Général] Aide de Chneubeul - Lire en plusieurs fois sscanf
Posté par: chneubeul le 21 Novembre 2010, 20:41:42
Bonjour, je pense que c'est la meilleurs solution pour moi de regrouper tous mes demandes aides dans un seul topic, comme ça je n'ai pas à chercher mes anciens topics, pour reconsulter les informations qui m'ont été donner :)

Voila mon petit problème, j'aimerais rendre possible d'utiliser soit le nom soit l'id du véhicule, grâce à l'aide de Sim, j'ai pu réaliser le code ci dessous, mais qui renvoie bien l'id de la voiture, mais à cause du return 1; la suite du code ne s'exécute pas.. :(


if (sscanf(params, "dD(0)D(0)", id, col1, col2))
{
if (sscanf(params, "s[20]D(0)D(0)", id2, col1, col2))
   {
SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /veh <nom/id> <col1> <col2>");
return 1;
}
else
{
   modelid = ReturnModelByName(id2);
   format(string, sizeof(string), "modelid : %d", modelid);
           SendClientMessage(playerid, COL_YELLOW, string);
   
}
return 1;
}
else { modelid = id; }


Merci de votre aide.
Sam.  :cheers
Titre: Re : [Topic Général] Aide de Chneubeul - Contourner la logique SSCANF
Posté par: S!m le 21 Novembre 2010, 20:52:24
Salut,

tu devraiis pouvoir enlever le return 1 comme les cas où l'information n'est pas correcte sont déjà gérés.

Pour te donner une petite idée:

Code: (pawn) [Sélectionner]
if (sscanf(params, "dD(0)D(0)", modelid, col1, col2))
{
if (sscanf(params, "s[20]D(0)D(0)", id2, col1, col2))
    {
SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /veh <nom/id> <col1> <col2>");
return 1;
}
else
{
    modelid = ReturnModelByName(id2);
    format(string, sizeof(string), "modelid : %d", modelid);//pourquoi? tu devrais plutot vérifier que modelid est valide et le bloquer si ce n'est pas le cas
            SendClientMessage(playerid, COL_YELLOW, string);
   
}
}
//suite de la commande

++Sim++
Titre: Re : [Topic Général] Aide de Chneubeul - Contourner la logique SSCANF
Posté par: cristab le 21 Novembre 2010, 20:57:13
sinon le return 1 devrais pouvoir ce positionner juste en dessous du SendClientMessage
Titre: Re : [Topic Général] Aide de Chneubeul - Contourner la logique SSCANF
Posté par: chneubeul le 21 Novembre 2010, 21:03:51
Ah merci. Je ne savais pas que si la commande échoué, c'était déjà validé, donc par habitude, je n'ai pas songé à enlever ce return 1;
Cristab, les sendclientmessage étais juste pour '' débugguer "  ^^ Comme je n'avais jamais encore réaliser de système comme ça, je n'étais pas sûr et donc j'voulais m'assurer qu'il retournais bien l'ID du véhicule.. :)

Merci à vous deux.
 :dling
Titre: Re : [Topic Général] Aide de Chneubeul - Fblockwrite
Posté par: chneubeul le 24 Novembre 2010, 16:22:02
Bonjour, :)

Voila donc je poste mon code pour enregistrer les positions, j'aimerais savoir si celui est bon et/ou comment l'optimiser.
Merci de votre aide.


function PrisePos(playerid)
{
new Float:X, Float:Y, Float:Z, stringg[32], string[32] = "anderiusmap.ini";
GetPlayerPos(playerid, X, Y, Z);
new File:File = fopen(string, io_write);
if (File)
{
    format(stringg, sizeof(stringg), "%.1f|%.1f|%.1f\r\n", X, Y, Z);
        fblockwrite(File,stringg, 20);
fclose(File);
}
}
Titre: Re : [Topic Général] Aide de Chneubeul - Résolu
Posté par: Ssk le 24 Novembre 2010, 17:05:45
Ton code est bon mais je te déconseil d'utiliser fblocwrite dans ton cas vu que tu ne pourra pas lire les valeurs des positions avec notepad, utilise plutôt fwrite :)

Titre: Re : [Topic Général] Aide de Chneubeul - Résolu
Posté par: chneubeul le 24 Novembre 2010, 17:17:01
Docteur Sim, m'a dit le contraire ^^ à la limite osef que j'peut pas lire via notepad :)
Si j'veut vérifier si c'est bon, j'fait un p'tit script IG :)
Titre: Re : [Topic Général] Aide de Chneubeul - Résolu
Posté par: Ssk le 24 Novembre 2010, 17:28:15
enfaite ça dépend de ce que tu veut en faire, si c'est pour ton truc qui permet de récupérer la position Z sur le mod que tu utilise la méthode de Sim est meilleur, mais si tu veut juste prendre des positions comme pour le /save, celle de Sim est bien, mais le top pour pouvoir lire les valeurs avec notepad est d'utiliser fwrite ^^
Titre: Re : [Topic Général] Aide de Chneubeul - Résolu
Posté par: chneubeul le 24 Novembre 2010, 17:48:13
Nan c'pour mon truc pour récupérer la position Z :)


Double post
Bonjour :)

Dans mon bus tout à l'heure j'étais pensif, et d'un coup paf un flash ! Comment fonctionne la fonction '' do ''

par exemple si je me met ceci

MaFonction(playerid)
{
     do var++;
     while
     {
           var <= 150;
     }
}

Donc si jamais je charge cette fonction, est-ce que le code va continuer tout seul, ou je suis obliger de la charger avec un timer ?
Titre: Re : [Topic Général] Aide de Chneubeul - Question sur fonction ''do"
Posté par: S!m le 25 Novembre 2010, 23:54:31
Salut chneubeul,

je ne suis pas sur de comprendre ta question.

Dans l'exemple que tu donne, la syntaxe n'est pas bonne. Enfin, je n'ai pas testé, mais je n'ai jamais vu personne utiliser do de cette façon, ni while.

Les do-while sont des boucles au même titre que les while ou les for. La principale différence, c'est que l'action contenue dans la loop sera exécutée au moins 1 fois, peu importe que le test soit validé ou non.

La syntaxe générale est:
do
{
    //code de la boucle
}
while(condition);

En ordre, le code de la boucle est exécuté, puis, si le test est validé, au retourne au do et ainsi de suite tant que le test est validé.

Un petit exemple:
new myvar =10;
do
{
    myvar--;
}
while(myvar > 0);

Dans ce cas ci, le résultat est le même que:

while(myvar > 0)
{
    myvar--;
}

La différence apparait dans les cas où le premier test peut ne pas être validé:

new myvar = 3;
do
{
    myvar = 10;
}
while(myvar < 2);
printf("Myvar: %d", myvar);
Le printf sortira donc myvar = 10.

Avec un simple while:

new myvar = 3;
while(myvar < 2)
{
    myvar = 10;
}
printf("myvar: %d", myvar);

Si tu parle d'une autre utilisation qu'en boucle, dit le et quelqu'un (peut-être moi) tentera de t'expliquer. Ensuite, si tu parle effectivement de l'utilisation en boucle, mais que mon explication n'est pas claire, tu peut toujours demander.

++Sim++
Titre: Re : [Topic Général] Aide de Chneubeul - Question sur fonction ''do"
Posté par: chneubeul le 26 Novembre 2010, 17:53:27
Bonsoir Sim,

Tu m'a permis d'éclairer un peu ma lanterne :)

Le but primaire de ma requête bien que ton post est très intéressant résulte d'une boucle.
J'aimerais savoir si le while se comporte comme un '' timer en boucle " il va se répéter par exemple tant que la condition n'est pas atteinte, ou c'est une autre façon d'écrire un if ?

A+, Sam.
Titre: Re : [Topic Général] Aide de Chneubeul - Question sur fonction ''do"
Posté par: Ssk le 26 Novembre 2010, 18:05:59
Une boucle c'est du code qui se répète tant que la condition est vrai, si elle est fausse alors la boucle est arrêtée ^^
Titre: Re : [Topic Général] Aide de Chneubeul - Question sur fonction ''do"
Posté par: chneubeul le 26 Novembre 2010, 18:14:42
Oui, je sais ça ^^

Mais le while est une boucle ?

Bref :)
Je tourne cours au sujet, on en reparlas un peu plus tard j'ai une petite question un peu plus urgente :)

Voila donc pour simplifier un peu le code, j'aimerais utiliser foreach le problème, c'est que ben ça ne marche pas x')
Je m'en suis rendu compte, en mettant mes textdraw dans ongamemodeinit et je l'ai charger via une boucle
qu'ils fonctionnent très bien SANS le foreach c'est à dire une boucle classique for(new i=0; i< ...
Et la je test, avec foreach, rien n'apparait. :(

Est-ce un bug connu ? Ma syntaxe je l'ai écris comme ça :

foreach(Player, i)

Je trouve ça très louche, j'ai regardé un peu dans l'include et perso je trouve ça bizarre, à peine l'ombre de foreach mininuscule..

Merci de votre aide,
Sam.  :cheers
Titre: Re : [Topic Général] Aide de Chneubeul - Question sur fonction ''do"
Posté par: S!m le 26 Novembre 2010, 19:01:43
Salut,

foreach fait une loop de tous les joueurs connectés, donc dans OnGameModeInit ce n'est pas à utiliser.

++Sim++
Titre: Re : [Topic Général] Aide de Chneubeul - Question sur fonction ''do"
Posté par: chneubeul le 26 Novembre 2010, 19:11:58
Ben j'vais mettre dans OnPlayerConnect :)

Merci à toi Sim.  :dling
Titre: Re : [Topic Général] Aide de Chneubeul - Question sur fonction ''do"
Posté par: Xartrick le 26 Novembre 2010, 20:07:44
Citation de: sasuke78200
Une boucle c'est du code qui se répète tant que la condition est vrai, si elle est fausse alors la boucle est arrêtée ^^

C'est le contraire il me semble, tant que la condition est fausse, elle se répète et s’arrête quand elle est vrai !
Titre: Re : [Topic Général] Aide de Chneubeul - Question sur fonction ''do"
Posté par: chneubeul le 26 Novembre 2010, 20:08:29
Dans les 2 cas, c'est bon. Ça dépend comment tu code..  :happy
Titre: Re : [Topic Général] Aide de Chneubeul - Question sur fonction ''do"
Posté par: Ssk le 26 Novembre 2010, 20:18:34
Euh ? Je dirai comme mon prof de français "Je suis dans la 4ème dimension ?" lol

for( new i = 0; i < 10; i++ )Lit ce code et tu comprendra par toi même ^^


Titre: Re : [Topic Général] Aide de Chneubeul - Question sur fonction ''do"
Posté par: Xartrick le 26 Novembre 2010, 21:34:19
Oui, c'est bien que se que je dis, tant que i n'est pas égal à 10 (faux), on incrémente i.
Mais on peut le voir des deux côtés si on réfléchie bien, car tant que i est plus petit que 10 (vrai), on incrémente i.
Cela revient à dire deux choses opposés pour deux choses égales, mais je me demande laquelle est réellement la bonne !
Titre: Re : [Topic Général] Aide de Chneubeul - Question sur fonction ''do"
Posté par: Ssk le 26 Novembre 2010, 21:36:51
L'opérateur < ne veut pas du tout dire égal, il veut dire plus petit que.

Donc si i est plus petit que 10 on l'incrémente, sinon on arrête la boucle ^^

édit: rooh faillais pas édit ton texte maintenant le mien ne veut plus rien dire lol
Titre: Re : [Topic Général] Aide de Chneubeul - Question sur fonction ''do"
Posté par: Xartrick le 26 Novembre 2010, 21:41:10
Sa reviens au même, c'est "plus petit que" mais cela repend exactement ce que je dis au mot prés.
Je pense que nous avons tout les deux raisons mais nous avons un raisonnement différent.
Une autre personne pourrait nous éclaircir ?
Titre: Re : [Topic Général] Aide de Chneubeul - Question sur fonction ''do"
Posté par: UZI-I le 26 Novembre 2010, 21:46:23
@Xartrick : Ton raisonnement est pas tout à fait faux, il n'est pas tout à fait vrai non plus. Et en lisant cette phrase, tu te retrouve dans la même situation qu'une boucle conditionnelle. Le soucis c'est que tu mélange tout, a la fois une boucle et à la fois une condition. La boucle "for" peut ne pas être conditionnelle et pourtant elle bouclera. Ce qui est appelé une boucle conditionnelle c'est une boucle qui bouclera tant que son expression conditionnelle sera vrai. Par conséquent tant que dans l'exemple a sasuke i sera inférieur a 10 ça executera le code. Des que i sera supérieur ou egal a 10 l'expression conditionnelle sera fausse et la boucle s'arretera.

Apres c'est une erreur de langage, une expression vrai l'est autant qu'une expression pas fausse...
Titre: Re : Re : [Topic Général] Aide de Chneubeul - Fblockwrite
Posté par: Ssk le 26 Novembre 2010, 22:29:05
Bonjour, :)

Voila donc je poste mon code pour enregistrer les positions, j'aimerais savoir si celui est bon et/ou comment l'optimiser.
Merci de votre aide.


function PrisePos(playerid)
{
new Float:X, Float:Y, Float:Z, stringg[32], string[32] = "anderiusmap.ini";
GetPlayerPos(playerid, X, Y, Z);
new File:File = fopen(string, io_write);
if (File)
{
    format(stringg, sizeof(stringg), "%.1f|%.1f|%.1f\r\n", X, Y, Z);
        fblockwrite(File,stringg, 20);
fclose(File);
}
}


Chneubeul je te conseil d'ouvrir le fichier avec io_readwrite comme mode, sinon à l'ouverture de ton fichier le contenu du fichier sera effacé ^^
Titre: Re : [Topic Général] Aide de Chneubeul - Question sur fonction ''do"
Posté par: Xartrick le 26 Novembre 2010, 23:08:51
Je comprend mieux maintenant.

Merci à Sasuke78200 et UZI-I.
Titre: Re : [Topic Général] Aide de Chneubeul - Question sur fonction ''do"
Posté par: Ssk le 26 Novembre 2010, 23:13:08
Mais derien :)


( ça fais plaisir de voir des gens comme toi, qui ne font pas que de râler ^^ )
Titre: Re : [Topic Général] Aide de Chneubeul - Question sur fonction ''do"
Posté par: Xartrick le 26 Novembre 2010, 23:49:16
C'est bien mieux en effet.
Donc si je comprend bien, selon les boucles, leurs sens peuvent changer ?
Certaines boucles vont s'exécuter au moins une fois même si c'est faux, et d'autres, si la valeur est fausse, ne vont pas s'exécuter une seule fois.
Titre: Re : [Topic Général] Aide de Chneubeul - Question sur fonction ''do"
Posté par: Ssk le 27 Novembre 2010, 11:46:16
En faite seul do-while s'exécute une fois sans tester sa condition, while et for ( si for est conditionnel ) test toujours la condition avant d'exécuter le code ^^
Titre: Re : [Topic Général] Aide de Chneubeul - Question sur fonction ''do"
Posté par: Xartrick le 27 Novembre 2010, 13:28:46
C'est plus facile à comprendre quand on comprend :)
Merci encore !
Titre: Re : [Topic Général] Aide de Chneubeul - Question sur fonction ''do"
Posté par: chneubeul le 27 Novembre 2010, 19:33:11
Citer
C'est plus facile à comprendre quand on comprend
Philosophe ? x')

Xartrick et Sasuke, je vous remercie d'avoir skouaté mon topic, j'ai appris des choses ^^
Pour le script pour relever les pts, je vais le faire finalement pour gta united, le mod anderius est trop sophistiqués, je ne veut pas passer 100 ans à checker des zones particulières.. ^^ Du coup je vais faire autrement, et ça surement mieux comme ça. Pour GTA-United si des personnes sont intéressés, ben faudra attendre que je trouve un PC pour héberger le script avec gta en route ^^


Double post
Soir'

J'aimerais faire une sorte d'auto ciblage, en fonction de où le joueur regarde. Le soucis c'est que j'me souviens vaguement d'un script ou l'on cliqué et une explosion se produise à l'endroit ou l'on regarder.
Je sais que ce script est très différent de celui du wiki que voila :


public OnPlayerCommandText(playerid, cmdtext[])
{
if (!strcmp(cmdtext, "/test camera vector"))
{
new
Float:fPX, Float:fPY, Float:fPZ,
Float:fVX, Float:fVY, Float:fVZ,
Float:object_x, Float:object_y, Float:object_z;
 
// Change me to change the scale you want. A larger scale increases the distance from the camera.
// A negative scale will inverse the vectors and make them face in the opposite direction.
const
Float:fScale = 5.0;
 
GetPlayerCameraPos(playerid, fPX, fPY, fPZ);
GetPlayerCameraFrontVector(playerid, fVX, fVY, fVZ);
 
object_x = fPX + floatmul(fVX, fScale);
object_y = fPY + floatmul(fVY, fScale);
object_z = fPZ + floatmul(fVZ, fScale);
 
CreateObject(345, object_x, object_y, object_z, 0.0, 0.0, 0.0);
 
return 1;
}
 
return 0;
}


Mais j'aimerais savoir pourquoi on doit faire un tas de calcul avant d'avoir la position, et surtout est-ce que sa vaut vraiment le coup, car mon script va être appeler en boucle et donc à force de calcul, le serveur va lagguer avec du peuple..

Merci de votre aide.
Sam.  :dling
Titre: Re : [Topic Général] Aide de Chneubeul - Question sur fonction ''do"
Posté par: Xartrick le 27 Novembre 2010, 20:20:50
Je ne pense pas que le nombre de personne puisse influer car ton calcul ne s'exécute seulement quand on tape une commande et non en permanence.
Après, si 200 joueurs exécute en même temps la commande, je pense que là oui, ton serveur va avoir quelque problème temporaire :-\ !
Titre: Re : [Topic Général] Aide de Chneubeul - GetPlayerCameraFrontVector
Posté par: chneubeul le 27 Novembre 2010, 20:23:51
Ce n'est pas une commande, mais bien un code placé dans une fonction qui va être checké en boucle.. :)
Je peut simplifier, j'y pense. En permettant au joueur de se mettre en mod combat ou pas. :)
Titre: Re : [Topic Général] Aide de Chneubeul - GetPlayerCameraFrontVector
Posté par: S!m le 27 Novembre 2010, 20:28:15
Salut,

les calculs fait ici sont probablement beaucoup plus rapides que l'appel des fonctions en elles-mêmes. Le volume de calcul est très restreint, d'ailleurs tu pourrais (même devrais) retiré les fonction floatmul et simplement utiliser * .

Explique ta véritable application et on pourra t'aider d'avantage. Toutefois, je dirais que tu ne rencontrera pas de problèmes niveau calcul. Un streamer comporte beaucoup, beaucoup plus de calcul et pourtant ça fonctionne.

++Sim++
Titre: Re : [Topic Général] Aide de Chneubeul - GetPlayerCameraFrontVector
Posté par: chneubeul le 27 Novembre 2010, 20:31:26
Voila, donc finalement, je vais rajouter la possibilité du mode combat, ça éviterais le PK  :happy
Donc, enfaite si un joueur est un mod combat, il si il regarde un autre joueur qui lui aussi l'est, une flèche au dessus de celui ci sera afficher, ce qui va montrer sa cible. Si le joueur qui le vise lance un sort, alors le sort sera contre le joueur ciblé.
Titre: Re : [Topic Général] Aide de Chneubeul - GetPlayerCameraFrontVector
Posté par: S!m le 27 Novembre 2010, 22:01:24
Salut,

j'aime bien l'idée, toutefois faudra faire attention, faire le test assez rapidement mais ne pas permettre que ça change tous les 200 ms, sinon on risque d'avoir de la difficulté.

Ce qu'il te faudrait faire, c'est établir des points dans la direction qu'il regarde et avec des sphères (de rayon qui augmente avec la distance) chercher les joueurs dans ces sphères, en s'assurant qu'ils sont en mode combat. Le mieux ce serait de trouver celui qui se rapproche le plus de la ligne où le joueur regarde. Ce qui est bien, c'est que si on veut on peut appliquer ici des maths moyennement avancés, avec la distance entre un point et une droite en 3 dimensions. Bien sur, ce n'est pas essentiel.

En sauvegardant simplement le joueur visé dans une variable, tu pourras rendre ta commande (ou autre) de sortilège très simple.
D'ailleurs, de cette façon on peut rendre certaines armes plus efficace, par exemple, le sniper (en utilisant de petites sphères).

simple conseil: la distance entre les sphères ne devrait pas dépasser leurs rayon.

++Sim++
Titre: Re : [Topic Général] Aide de Chneubeul - GetPlayerCameraFrontVector
Posté par: chneubeul le 28 Novembre 2010, 08:44:35
Salut :)

Au pire ce que je peut faire c'est utiliser, GetXYFront qui utilise une sorte de produit scalaire je crois. ( sin et cos) puis checker devant le joueur à la distance ou le joueur regarde voir si il y a un joueur en mode combat.
Je vais faire un petite brouillon pour voir, et tester ça.

PS: une fois j'ai vu un petit système lorsque qu'on activé le scope avec le sniper ou pouvoir la distance de tir, si on se pointer sur une victime, je l'ai tester, c'était très précis, il faut que je le retrouve et voir comme ceci fonctionne, voir le système que le codeur à utiliser et  comparer avec nos théorie.

A toute à l'heure,
Sam.  :dling


Edit : Voila donc j'ai réaliser le script. Je résume :
Ce système permet de cibler un joueur pour pouvoir lui lancer des sorts sans devoir taper l'id ou quoi que ce soit.
Quand le joueur va se mettre en mode combat et si il rencontre une cible elle aussi en mode combat, une flêche va s'afficher au dessus de la cible, l'id de la cible va alors s'enregistrer dans une variable, et si le joueur veut la garder alors il doit appuyer sur une touche.

Pastebin GTAOnline (http://pastebin.gtaonline.fr/pastebin.php?show=954)
Titre: Re : [Topic Général] Aide de Chneubeul - GetPlayerCameraFrontVector
Posté par: S!m le 29 Novembre 2010, 19:25:40
Salut,

ça me parait plutôt bien comme code, seulement tu as mis un return 1 dans ta boucle, dans le cas où tu test le joueur en question. Il faudrait remplacer ce return par un continue sinon tu ne traiteras pas les cas où l'ID est plus grand que celui du joueur.

Si tu veut être plus précis, je te recommande de faire varié le rayon de ta sphère acceptée avec la distance, je t'explique en code:

new Float:Dist = 25.0;//supposons que ceci est la distance entre les deux joueurs
new Float:rayon = 0.02;//le rapport rayon/distance est de 0.02, donc un angle de 1.15° à côté du joueur est accepté, tu peut mettre plus
rayon *= Dist;//ici on ajuste le rayon à la distance
if(IsPlayerInRangeOfPoint(toplayer, rayon, X, Y, Z))
{
    //il est dans la bonne zone, on le cible.
}

par contre il y a un truc que je ne comprend pas à quoi ça sert, le x, y, z (dans ton code).

Fais aussi attention, GetXYinFrontOf ... fonctionne avec un angle, ici tu as le vecteur directeur de la caméra (à vérifier)
il te suffit de faire:

new Float:X, Float:Y, Float:Z;
new Float:X2, Float:Y2, Float:Z2;
new Float:Dist;
//on récupère les positions du joueur:
GetPlayerPos(playerid, X, Y, Z);
foreach(toplayer)
{
//on récupère les positions du second joueur:
GetPlayerPos(toplayer, X2,Y2, Z2);
X2 -= X;
Y2 -= Y;
Z2 -= Z;
Dist = floatsqroot(X2 * X2 + Y2 * Y2 + Z2 * Z2);
if(Dist > 20.0)continue;//ça c'est à voir...
X2 += X - CamX * Dist;//on soustrait car je le fait à l'envers (permet de sauver 1 groupe de variable)
Y2 += Y - CamY * Dist;
Z2 += Z - CamZ * Dist;
Dist *= 0.02;//je calcule mon rayon comme précédemment.
if(PointToPoint( X, Y, Z, X2, Y2, Z2, Dist))//fonction à définir avec un define, je te le ferai si tu veut
{
        ....
}
...

vois avec ça, je doit aller à mon cours, au pire je vais éditer pour terminer.

PS. codé sur le forum alors peut contenir de nombreuses fautes.

++Sim++

Titre: Re : [Topic Général] Aide de Chneubeul - GetPlayerCameraFrontVector
Posté par: chneubeul le 29 Novembre 2010, 19:44:10
Salut :)
Merci d'avoir répondu aussi précisément.
Pour te répondre x, y, z sert à calculer la position ou le joueur regarde que je complète avec la position devant le joueur. ^^

J'ai remplacer mon code par le tiens, ça simplifie énormément x')
Je cherche pour faire le define pointtopoint là :)

Par contre CamX, CamY et CamZ comment on le définis ?


edit : j'ai trouvé pointtopoint, que tu as créé :D

#define PointToPoint(%0,%1,%2,%3,%4,%5,%6) ((%0 - %3) * (%0 - %3) + (%1 - %4) * (%1 - %4) + (%2 - %5) * (%2 - %5) <= (%6 * %6))
Titre: Re : [Topic Général] Aide de Chneubeul - GetPlayerCameraFrontVector
Posté par: S!m le 29 Novembre 2010, 23:46:31
Salut,

CamX, CamY, CamZ est le vecteur directeur de la caméra du joueur, à récupérer avec GetPlayerCameraFrontVector.

Comme j'ai dit à la fin de mon message précédent, je n'ai pas testé ce code, il se peut donc qu'il ne soit pas tout à fait fonctionnel, il y a peut-être de petits ajustement à faire, mais l'idée principale est là.

++Sim++
Titre: Re : [Topic Général] Aide de Chneubeul - GetPlayerCameraFrontVector
Posté par: chneubeul le 01 Décembre 2010, 14:08:14
Salut :)

Merci à toi Sim, j'ai tout modifier et compiler aucune erreur de syntaxe etc.. reste à savoir si ça fonctionne, je ne pourrais pas tester avant ce soir.. :(

A+, Sam.
Titre: Re : [Topic Général] Aide de Chneubeul - GetPlayerCameraFrontVector
Posté par: chneubeul le 02 Décembre 2010, 21:19:13
Soir', je coupe court à l'autre sujet, car je ne peut pas le tester me faut un gens qui est le temps ^^ ( je reprendrais après le problème qui va suivre)

Voila mon autres problèmes :

J'ai installer le système djson une upgrade de dini, mais apparemment l'écriture de string, merdouille un peu.
Voila ce qui est marqué sur le topic officiel :

Citer
Known Issues
- Writing strings with unescaped " does not work! You have to replace " with \" first! This will be fixed in future versions.

A ce que j'ai compris, j'ai fait ça :

djSet(ini, \"Key", password);
[code]

Mais ça ne marche pas.. voila ce qui est enregistrée :

"Key":""

J'ai même essayer de formater le password, j'ai bidouiller un tas de trucs, et rien ne marche..

Merci de votre aide.
[/code]
Titre: Re : [Topic Général] Aide de Chneubeul - Ecrire un string avec DjSon
Posté par: cristab le 02 Décembre 2010, 21:56:41
c'est celui ci que tu as ??? http://forum.sa-mp.com/showthread.php?t=175565 (http://forum.sa-mp.com/showthread.php?t=175565)
Titre: Re : [Topic Général] Aide de Chneubeul - Ecrire un string avec DjSon
Posté par: chneubeul le 03 Décembre 2010, 18:05:35
Non, le y_ini je l'ai tester, il ne marchais pas, peut être ça venez du code que j'ai produit, mais en tout cas si faut plus se casser la tête c'pas la peine, autant passer direct au SQL et pas se faire chier ^^
Sinon moi j'ai :

http://forum.sa-mp.com/showthread.php?t=48439 (http://forum.sa-mp.com/showthread.php?t=48439)

A+, Sam.

Titre: Re : [Topic Général] Aide de Chneubeul - Ecrire un string avec DjSon
Posté par: cristab le 03 Décembre 2010, 18:12:43
je pense que c'est djSetInt et non djSet
Titre: Re : [Topic Général] Aide de Chneubeul - Ecrire un string avec DjSon
Posté par: chneubeul le 03 Décembre 2010, 18:48:45
integer = nombre entier, le mdp peut contenir des chiffres comme des lettres et on doit stocker le tout sous string.

Double post
Bonsoir, j'ai beaucoup réfléchis, et le système de fichier et pas terrible finalement, comme j'aimerais développer un mode entièrement dynamique. Pour cela, il me faudrait passer au SQL ( site sur un autre dédié) mais quels plugins me conseilleriez vous ? Il y en a pleins ^^
En cas de problème, ou si je plante, j'ai un amis qui  si j'le chope sur TS, peut m'aider. Donc pour l'utilisation et les conseilles de sécurité, il pourra m'éclairer.

Merci de votre aide,
Sam.
Titre: Re : [Topic Général] Aide de Chneubeul - Plugin SQL ?
Posté par: Xartrick le 04 Décembre 2010, 17:01:52
J'utilise celui ci et cela marche à la perfection !

http://forum.sa-mp.com/showthread.php?t=56564 (http://forum.sa-mp.com/showthread.php?t=56564)

Et voici un code (par moi) qui permet juste de vérifié si un compte existe.


Code: (Pawn) [Sélectionner]
#include <a_samp>
#include <a_mysql>


new Handle;


main(){}


public OnGameModeInit()
{
new rows;

if(mysql_connect("localhost" , "root" , "samp", "" )) {
mysql_debug(1);
print("[MYSQL]: La connexion à `localhost` est établie !");
}
else {
   print("[MYSQL][ERREUR]: La connexion à `localhost` à échoué !");
}

mysql_query("SELECT * FROM `users` WHERE `user_name` = 'player';");
    
mysql_store_result();
rows = mysql_num_rows();
mysql_free_result();

printf("%d", rows);
// rows = 1  -> Le compte existe
// rows = 0  -> La compte n'existe pas !
// rows = -1 -> Erreur !

return 1;
}

public OnGameModeExit()
{
mysql_close(Handle);

return 1;
}
Titre: Re : [Topic Général] Aide de Chneubeul - Plugin SQL ?
Posté par: steve76 le 04 Décembre 2010, 17:11:27
Le plugin que Xartick te conseille est pas mal.

Sinon moi je préfère de loin celui ci: http://forum.sa-mp.com/showthread.php?t=56564 (http://forum.sa-mp.com/showthread.php?t=56564)
Je l'utilise depuis le début et jamais été déçu, après c'est selon le point de vu.

Et pour t'aider, les pages wiki de chaque plugin:

Celui que Xartrick te conseille: http://wiki.sa-mp.com/wiki/MySQL_Plugin (http://wiki.sa-mp.com/wiki/MySQL_Plugin)
Celui que je te conseille: http://wiki.sa-mp.com/wiki/MySQL (http://wiki.sa-mp.com/wiki/MySQL)

A toi de voir lequel te convient le mieux
Titre: Re : [Topic Général] Aide de Chneubeul - Plugin SQL ?
Posté par: Xartrick le 04 Décembre 2010, 17:41:02
Excusé moi de mon erreur, mais celui que steve76 recommande est bien celui que j’utilise, donc je te conseil également de prendre celui-ci !
PS: J'édit mon message :P.
Titre: Re : [Topic Général] Aide de Chneubeul - Plugin SQL ?
Posté par: chneubeul le 04 Décembre 2010, 17:52:13
Ouki, merci beaucoup Xartrik et Steve ! :)
Titre: Re : [Topic Général] Aide de Chneubeul - Plugin SQL ?
Posté par: steve76 le 04 Décembre 2010, 17:53:58
Ceci dit l'autre n'est pas mauvais mais je préfère quand même celui de G-sTyLeZzZ.

Par contre n'utilise surtout pas celui ADreNaLiNe-DJ, il n'est plus mit à jours, est pas mal buggé et provoque de nombreux crash
Titre: Re : [Topic Général] Aide de Chneubeul - Plugin SQL ?
Posté par: Xartrick le 04 Décembre 2010, 18:21:29
On peut voir pourquoi ici: http://forum.sa-mp.com/showthread.php?t=161726 (http://forum.sa-mp.com/showthread.php?t=161726)
Titre: Re : [Topic Général] Aide de Chneubeul - Plugin SQL ?
Posté par: steve76 le 04 Décembre 2010, 19:08:29
Je l'avais vu aussi ^^, le plugin crash avant la fin du test. Et pour l'avoir testé je le conseille pas.
Titre: Re : [Topic Général] Aide de Chneubeul - Opérateurs
Posté par: chneubeul le 12 Décembre 2010, 21:03:08
Bonsoir,

J'ai une petite question qui me tracasse vous allez me dire, que je suis un perfectionniste mais bon ^^

Lorsque je dois imposer une condition, qui est par exemple 0 ou 1 ( non booléenne :p ) quel méthode est la mieux :

if(.. != 0)

if(.. == 1)

Sachant que ma variable ne sera jamais différent de 0 ou 1 (c'est pour l'exemple j'aurais pu prendre 1 et 2 ^^)
Il y a-t-il une différence entre les deux ?

Merci de vos réponses.
Sam.  :cheers
Titre: Re : [Topic Général] Aide de Chneubeul - Valeur d'un tableau
Posté par: cristab le 12 Décembre 2010, 21:10:07
tu peu faire ceci aussi

if(Var) qui est semblable a if(Var == 1) ou if(Var != 0)

est aussi if(!Var) qui est semblable a if(Var == 0)

Quoi qu'il en soit il me semble que le mieu pour toi lors de la relecture il vaut mieux utiliser if(Var==1) ou if(Var==0) sa revient au meme
Titre: Re : [Topic Général] Aide de Chneubeul - Valeur d'un tableau
Posté par: chneubeul le 12 Décembre 2010, 21:11:31
Oki, merci beaucoup. On ne sais jamais des fois avec le code, si des vérifications peuvent être instable ou imprécise :)
Titre: Re : Re : [Topic Général] Aide de Chneubeul - Valeur d'un tableau
Posté par: S!m le 13 Décembre 2010, 02:38:16
Salut,

Oki, merci beaucoup. On ne sais jamais des fois avec le code, si des vérifications peuvent être instable ou imprécise :)

on peut le savoir, au pire tu fais des tests avec printf^^.
Par contre, fait attention car ces test ne sont pas équivalents.
Par exemple: if(var != 0) -> si la variable est différente de 0 alors que if(var == 1) si la variable vaut 1.
Ce n'est pas la même chose.

L'équivalence n'est vraie que dans le cas où la variable ne prend que les valeurs 0 ou 1.
Il vaut toujours mieux prendre l'option qui correspond le mieux à l'utilisation, même si tu utilise un entier comme un booléen.
Que tu le veule ou non, ce n'est pas vraiment un booléen...

ps. je préfère if(var == 0) à if(!var)

++Sim++
Titre: Re : [Topic Général] Aide de Chneubeul - Résolu
Posté par: chneubeul le 13 Décembre 2010, 09:34:28
Salut Sim,

Merci d'avoir répondu. Moi aussi je préfère :

if(var == 0) à if(!var)

pour des conditions avec variables par contre lors de fonction j'utilise assez souvent le !

if(!IsPlayerConnected(playerid))

par exemple.

Bonne journée, Sam. :)

Double post
Bonsoir,

J'aimerais enregistrer les dommages causés sur une voiture et en cas de crash ou reboot du serveur que voit la voiture soit restauré avec tous ses dégâts. Donc pour réaliser un petit test, j'ai utiliser la callback OnVehicleDamageStatusUpdate pour ressortir les données décimales des dégâts.


public OnVehicleDamageStatusUpdate(vehicleid, playerid)
{
    #pragma unused playerid
    new panels, doors, lightss, tires, string[128];
    GetVehicleDamageStatus(vehicleid, panels, doors, lightss, tires);
format(string, sizeof(string), "Vehicle Status : [Panels] : %d - [Doors] : %d - [Lights] : %d - [Tires] : %d",panels,doors,lightss,tires);
SendClientMessage(playerid, COLOR_YELLOW, string);
return 1;
}


Les nombres qui m'en sont ressortis, je l'ai ai mis de coter et utiliser ceci :

UpdateVehicleDamageStatus(veh, 2162721, 67108868, 5, 0);

Avec un exemple de nombre. Le problème c'est lorsque je veut restituer les dommages, cela ne m'affiche qu'une partie. Donc j'ai eu une petite idée, sachant que les données étant en binaires 0 ou 1 pour casser ou non. On obtient une série de données et on transforme en binaire. Mais lorsque qu'on veut restituer des dégâts, la fonction gère peut être mal la conversion décimal > binaire. ( ce qui est long à faire lorsqu'on a de très grand nombre (division successive par 2 :happy))

Merci de votre aide.
Sam.  :cheers
Titre: Re : [Topic Général] Aide de Chneubeul - UpdateVehicleDamageStatus défectueux.
Posté par: denko le 13 Décembre 2010, 20:33:52
Citation de: Chneubeul
public OnVehicleDamageStatusUpdate(vehicleid, playerid)
{
    #pragma unused playerid
    new panels, doors, lightss, tires, string[128];
    GetVehicleDamageStatus(vehicleid, panels, doors, lightss, tires);
   format(string, sizeof(string), "Vehicle Status : [Panels] : %d - [Doors] : %d - [Lights] : %d - [Tires] : %d",panels,doors,lightss,tires);
   SendClientMessage(playerid, COLOR_YELLOW, string);
   return 1;
}

Ton erreur est toute simple.  ;) Et pourquoi ne pas mettre string[256]; ? Mieux vaut prévoir un peu plus pour une récupération qui demande beaucoup.
Titre: Re : [Topic Général] Aide de Chneubeul - UpdateVehicleDamageStatus défectueux.
Posté par: chneubeul le 13 Décembre 2010, 22:09:28
Le nom de la variable n'influe en rien le chargement des données. La variable string, à un tableau de 128, ce qui est amplement suffisant, sachant que la limite de caractères dans le chat est de 128, même je vois pas en quoi cela changerais la récupération des données a part l'affichage, le message serais juste coupé ce qui n'est pas le cas  :happy
Titre: Re : [Topic Général] Aide de Chneubeul - UpdateVehicleDamageStatus défectueux.
Posté par: steve76 le 13 Décembre 2010, 22:57:41
Essaye en mettant directement tes variables dans la fonction UpdateVehicleDamageStatus

Comme ceci : UpdateVehicleDamageStatus(veh, panels, doors, lightss, tires);

Je ne sais pas si cela va changer grand chose mais sur le wiki c'est comme ca qu'ils font.

Ça évite d'avoir des modif en cours de route, et peut-être que la fonction gère mieux de cette façon.
Je ne sais pas ce que ca va donner mais je n'ai jamais utilisé cette fonction. Ça coute rien d'essayer

@denko: Faut arrêter de vouloir mettre des 256 partout, beaucoup ont tendance à surestimer mais il faut mieux chercher à voir le maximum que la variable peut contenir plutôt que de mettre une valeur beaucoup trop grande

EDIT: Je viens de voir un post sur le forum de SAMP, apparemment on ne peut utiliser cette fonction uniquement si il y a un Conducteur dans le véhicule.
Titre: Re : [Topic Général] Aide de Chneubeul - UpdateVehicleDamageStatus défectueux.
Posté par: Ssk le 14 Décembre 2010, 08:09:01
Chneubeul normalement le code est bon c'est juste que tu affiche mal tes variables ^^


format(string, sizeof(string), "Vehicle Status : [Panels] : %d - [Doors] : %d - [Lights] : %d - [Tires] : %d",panels,doors,lightss,tires);
j'aurai plutôt mis

format(string, sizeof(string), "Vehicle Status : [Panels] : %b - [Doors] : %b - [Lights] :  %b - [Tires] : %b",panels,doors,lightss,tires);
Titre: Re : [Topic Général] Aide de Chneubeul - UpdateVehicleDamageStatus défectueux.
Posté par: Brian Turner le 14 Décembre 2010, 17:08:10
Oué car je connais pas non plus %b, que %f, %d, %s, %i
Titre: Re : [Topic Général] Aide de Chneubeul - UpdateVehicleDamageStatus défectueux.
Posté par: Ssk le 14 Décembre 2010, 17:23:09
ça sert à afficher des nombres binaires

http://wiki.sa-mp.com/wiki/Format (http://wiki.sa-mp.com/wiki/Format)
Titre: Re : [Topic Général] Aide de Chneubeul - UpdateVehicleDamageStatus défectueux.
Posté par: chneubeul le 14 Décembre 2010, 17:51:56
Je vais essayer pour temps c'est sortis du wiki ;) Toujours pareil :(
Titre: Re : [Topic Général] Aide de Chneubeul - UpdateVehicleDamageStatus défectueux.
Posté par: Xartrick le 14 Décembre 2010, 18:15:03
Ceci ne te dit rien ?

011010100010110101001011101011101010000111101010
J'espère que tu connais le langage machine, enfin, son fonctionnement schématisé ?
Titre: Re : [Topic Général] Aide de Chneubeul - UpdateVehicleDamageStatus défectueux.
Posté par: Xartrick le 14 Décembre 2010, 18:20:33
L'assembleur et encore au dessus et l'hexadécimal n'est binaire, il n'est composé que de 0 et de 1 !

http://fr.wikipedia.org/wiki/Binaire (http://fr.wikipedia.org/wiki/Binaire)
Titre: Re : [Topic Général] Aide de Chneubeul - UpdateVehicleDamageStatus défectueux.
Posté par: chneubeul le 14 Décembre 2010, 18:26:28
C'est un mot, qui désigne une action électrique. Par exemple dans ton PC, on peut dire que tu as des 0 et 1 qui circulent à fond la patate. Enfaite ça symbole une courbe avec un signal logique (sinusoïdale, carré, ou triangulaire) avec des états haut 1 ou bas 0. Donc, à partir de ça, on peut tirer quelques conversions, qui va nous permettre de '' coder '' ces informations en binaire pour les envoyer au ordinateur. Pour faire des conversions binaires, tu peut te créé un petit tableau.

exemple :

000 -> 0
001 -> 1
010 -> 2
011 -> 3
101 -> 4
100 -> 5
111 -> 6
110 -> 7

Je sais pas si tu peut remarquer, mais dans la première colonne, les chiffres passe de 0 à 1 tous les 4 lignes. Dans la deuxième tous les 2 et la première tous les 1. Pourquoi ?  Car c'est le poids du chiffres.

Pour exemple (101)2 <- Un mot binaire, 1 - 0 -0 et non 100

le premier 1 => 1 bits
le 0 => 2 bits
le deuxième 1 => 4 bits
Soit le mot (101)2 vaut 5 bits car ( 4+1) on ne prend que le poids ou il y a des 1


Comment convertir du décimal en binaire ?
Par simple divisions successive par 2 :)

Exemple j'ai un nombre : (53)10 <= Nombre sur la base 10

53/2 = 26 reste 1
26/2 = 13 reste 0
13/2 = 6 reste 1
6/2 = 3 reste 0
3/2 = 1 reste 1
On ne peut plus diviser, donc on reporte les nombres en commençant par la fin donc :
(110101)2

On peut donc écrire (53)10 = (110101)2

Voila si tu veux des précisions supplémentaires n'hésite pas.
Titre: Re : [Topic Général] Aide de Chneubeul - UpdateVehicleDamageStatus défectueux.
Posté par: chneubeul le 14 Décembre 2010, 18:34:18
Ça à l'air d'être ça. :)
C'est super simple. Ensuite je vois que tu parlais d'hexa, qui est une base 16 donc je vais t'apprendre à compter  :happy

0,1,2,3,4,5,6,7,8,9 .. ( et non pas 10 :D), A, B, C, D, E, F

Si tu veux mettre un nombre décimal en hexa  tu divise par 16 comme pour le binaire :

exemple 26

26/16 = 1 reste 10
On ne peut plus diviser donc on remonte comme avec le binaire donc

(26)10 = (1A)16

Le A vient veut enfaite dire 10
comme F vaut 16. :)
Titre: Re : [Topic Général] Aide de Chneubeul -Enregistrement de compte
Posté par: chneubeul le 19 Décembre 2010, 19:25:03
Bonsoir, voulant enregistrer des comptes joueurs, j'ai opter pour la méthode par ini ( car système de site qui utilise aussi .ini :) ) Mais tout d'abord, quel système prendre, le système de base ou le système Y_ini ?
Si je prenais le système de base, comment enregistrer des comptes efficacement ?
- En enregistrant les données une par une. J'entends par là comme sur les GF donc on format et on écris aussitôt.
- En formatant un gros ensemble de données pour sauvegarder en une seul requête.

Merci de votre aide.
Sam.  :cheers
Titre: Re : Re : [Topic Général] Aide de Chneubeul -Enregistrement de compte
Posté par: S!m le 20 Décembre 2010, 01:07:47
Salut,

Bonsoir, voulant enregistrer des comptes joueurs, j'ai opter pour la méthode par ini ( car système de site qui utilise aussi .ini :) ) Mais tout d'abord, quel système prendre, le système de base ou le système Y_ini ?
Si je prenais le système de base, comment enregistrer des comptes efficacement ?
- En enregistrant les données une par une. J'entends par là comme sur les GF donc on format et on écris aussitôt.
- En formatant un gros ensemble de données pour sauvegarder en une seul requête.

Merci de votre aide.
Sam.  :cheers

Regarde ce que j'ai fait avec AdminOnDuty, le résultat est un fichier de structure identique à un .ini (à la sauvegarde des positions près).
C'est beaucoup plus efficace que d'utiliser dini pour faire le même travail.

++Sim++
Titre: Re : [Topic Général] Aide de Chneubeul -Enregistrement de compte
Posté par: chneubeul le 20 Décembre 2010, 17:03:15
Salut,
Ben enfaite c'est la méthode de base quoi. Merci beaucoup.
Titre: Re : [Topic Général] Aide de Chneubeul -Enregistrement de compte
Posté par: chneubeul le 22 Décembre 2010, 01:04:57
Bonsoir, un ami m'a dit qu'il avait sur un serveur, un menu avec plusieurs stock emplacement qu'on ne pouvais sélectionner, en fait ce sont des SetMenuColumnHeader(...); mais, j'ai essayer et il n'y en à qu'un qui apparait chez moi.. Alors comment en metres plusieurs ?

MCarac1 = CreateMenu("Caracteristique", 1, 440, 140, 150, 40);
SetMenuColumnHeader(MCarac1, 0, "1ere ligne");
AddMenuItem(MCarac1, 0, "Ajouter");
AddMenuItem(MCarac1, 0, "Enlever");
SetMenuColumnHeader(MCarac1, 0, "2eme ligne");
AddMenuItem(MCarac1, 0, "Ajouter");
AddMenuItem(MCarac1, 0, "Enlever");
SetMenuColumnHeader(MCarac1, 0, "3eme ligne");
AddMenuItem(MCarac1, 0, "Ajouter");
AddMenuItem(MCarac1, 0, "Enlever");
AddMenuItem(MCarac1, 0, "Descendre");
Voila le code que j'ai utiliser pour mon test.
Merci, Sam.  :cheers

J'ai trouvé avec une petite recherche dans les includes de sa:mp ^^
native DisableMenuRow(Menu:menuid, row);
Titre: Re : [Topic Général] Aide de Chneubeul - Caractère spécial ( pawno)
Posté par: chneubeul le 25 Décembre 2010, 20:30:50
Bonsoir,  :p

Alors voila j'aimerais enregistrer des informations, mais le problème c'est qu'il y en n'a tout plein :p donc j'aimerais utiliser le fameux caractères \ mais le problème c'est que lorsque je l'utilise comme ceci :

format(st, sizeof(st), "%s|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%f|%f|%f|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|\
%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|\
%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|\
%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|\
%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|\
%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|\
%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f",
Pawno me gronde et me dit : " fatal error 102: table overflow: "staging buffer" "
Il me dit que j'ai dépasser la table, peut être qu'on ne peut mettre qu'un seul \ ? Mais alors comment faire ? ^^

Humm, j'ai trouvé sur le forum sa:mp, j'ai oublié de chercher avant >.<
Enfaite c'est parce que j'ai dépasser la capacité de la fonction format ^^

Du coup, now j'ai répartis sur 3 strings les données, le format peut contenir environ 75 données. Mais, en modifiant la lecture des  données, j'ai eu la même erreur, donc cela est une limite du pawno. :)
Comment pourrais-je contourner ce problème ? :(

Merci de votre aide.