06.01.2011, 12:28
by Cristab
Bonjour avant de commencer vous devrez telecharger l'include Dini sur le site de sont createur DracoBlue (http://dracoblue.com)
Voila une chose faite placer dans pawno/include
pour nous en servir il va falloir l'indiquer au compilot
Code:
#include <a_samp> #include <Dini>
Desormer ouvrez le avec bloc note ou notepad comme bon vous semble et regardons cette include
premiиre fonction
Code:
stock dini_Exists(filename[]) { return fexist(filename); }
seconde fonction
Code:
stock dini_Remove(filename[]) { return fremove(filename); }
troisieme fonction
Code:
stock dini_Create(filename[]) { if (fexist(filename)) return false; new File:fhnd; fhnd=fopen(filename,io_write); if (fhnd) { fclose(fhnd); return true; } return false; }
votre fichier est creer.
Mais comment etre sur qu'il est creer si je suis en jeu et que je ne peu pas regarder ma console.
Je vous donne un petit truc biensur c'est juste pour que vous testiez
Code:
public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/fichier", cmdtext, true) == 0) { if(fexist("Monfichier.txt")) { SendClientMessage(playerid,0x00FF33AA,"Fichier la"); } else { SendClientMessage(playerid,0xFF0000FF,"Fichier pas la"); } return 1; } return 0; }
quatriиme fonction
Code:
stock dini_Set(filename[],key[],value[]) { // If we have no key, it can't be set // we also have no chance to set the value, if all together is bigger then the max string new key_length = strlen(key); new value_length = strlen(value); if (key_length==0 || key_length+value_length+2>DINI_MAX_STRING) return false; new File:fohnd, File:fwhnd; new tmpres[DINI_MAX_STRING]; new bool:wasset=false; // Let's remove the old *.part file if there was one. format(tmpres,sizeof(tmpres),"%s.part",filename); fremove(tmpres); // We'll open the source file. fohnd=fopen(filename,io_read); if (!fohnd) return false; fwhnd=fopen(tmpres,io_write); if (!fwhnd) { // we can't open the second file for writing, so .. let's close the open one and exit. fclose(fohnd); return false; } while (fread(fohnd,tmpres)) { if ( !wasset && tmpres[key_length]=='=' && !strcmp(tmpres, key, true, key_length) ) { // We've got what needs to be replaced! format(tmpres,sizeof(tmpres),"%s=%s",key,value); wasset=true; } else { DINI_StripNewLine(tmpres); } fwrite(fwhnd,tmpres); fwrite(fwhnd,"\r\n"); } if (!wasset) { format(tmpres,sizeof(tmpres),"%s=%s",key,value); fwrite(fwhnd,tmpres); fwrite(fwhnd,"\r\n"); } fclose(fohnd); fclose(fwhnd); format(tmpres,sizeof(tmpres),"%s.part",filename); if (DINI_fcopytextfile(tmpres,filename)) { return fremove(tmpres); } return false; }
Ce n'est rien sa va uniquement servire a stocker par exemple un mot ou un pseudo dini_Set("Monfichier.txt","test1","je suis un test");
vous trouverez ceci dans le fichier Monfichier.txt
Quote:
test1=je suis un test |
cinquieme fonction
Code:
stock dini_IntSet(filename[],key[],value) { new valuestring[DINI_MAX_STRING]; format(valuestring,DINI_MAX_STRING,"%d",value); return dini_Set(filename,key,valuestring); }
Code:
dini_IntSet("Monfichier.txt","test2",56);
Quote:
test2=56 |
Code:
stock dini_Int(filename[],key[]) { return strval(dini_Get(filename,key)); }
Code:
new mavar; mavar = dini_Int("Monfichier.txt","test2"); printf("%d",mavar);
septiиme fonction
Code:
stock dini_FloatSet(filename[],key[],Float:value) { new valuestring[DINI_MAX_STRING]; format(valuestring,DINI_MAX_STRING,"%f",value); return dini_Set(filename,key,valuestring); }
ce qui vous donneras dans le fichier Monfichier.txt
Quote:
test3=1.235 |
Code:
stock Float:dini_Float(filename[],key[]) { return floatstr(dini_Get(filename,key)); }
exemple
Code:
new Float:mapos; mapos = dini_Float("Monfichier.txt","test3"); printf("test 3 %f",mapos);
Code:
stock dini_Bool(filename[],key[]) { return strval(dini_Get(filename,key)); }
dixiиme fonction
Code:
stock dini_BoolSet(filename[],key[],value) { if (value) { return dini_Set(filename,key,"1"); } return dini_Set(filename,key,"0"); }
pour verifier ceci
Code:
new bool1; new bool2; bool1=dini_Bool("Monfichier.txt","test4") ; bool2=dini_Bool("Monfichier.txt","test5") ; printf("bool1=%d bool2=%d",bool1,bool2);
Code:
stock dini_Unset(filename[],key[]) { // If we have no key, it can't be set // we also have no chance to unset the key, if all together is bigger then the max string new key_length = strlen(key); if (key_length==0 || key_length+2>DINI_MAX_STRING) return false; new File:fohnd, File:fwhnd; new tmpres[DINI_MAX_STRING]; // Let's remove the old *.part file if there was one. format(tmpres,DINI_MAX_STRING,"%s.part",filename); fremove(tmpres); // We'll open the source file. fohnd=fopen(filename,io_read); if (!fohnd) return false; fwhnd=fopen(tmpres,io_write); if (!fwhnd) { // we can't open the second file for writing, so .. let's close the open one and exit. fclose(fohnd); return false; } while (fread(fohnd,tmpres)) { if ( tmpres[key_length]=='=' && !strcmp(tmpres, key, true, key_length) ) { // We've got what needs to be removed! } else { DINI_StripNewLine(tmpres); fwrite(fwhnd,tmpres); fwrite(fwhnd,"\r\n"); } } fclose(fohnd); fclose(fwhnd); format(tmpres,DINI_MAX_STRING,"%s.part",filename); if (DINI_fcopytextfile(tmpres,filename)) { return fremove(tmpres); } return false; }
voila la ligne 4 est supprimer du fichier.
douziиme fonction
Code:
stock dini_Get(filename[],key[]) { new tmpres[DINI_MAX_STRING]; new key_length = strlen(key); if (key_length==0 || key_length+2>DINI_MAX_STRING) return tmpres; new File:fohnd; fohnd=fopen(filename,io_read); if (!fohnd) return tmpres; while (fread(fohnd,tmpres)) { if ( tmpres[key_length]=='=' && !strcmp(tmpres, key, true, key_length) ) { /* We've got what we need */ DINI_StripNewLine(tmpres); strmid(tmpres, tmpres, key_length + 1, strlen(tmpres), DINI_MAX_STRING); fclose(fohnd); return tmpres; } } fclose(fohnd); return tmpres; }
Code:
new txt[256]; txt = dini_Get("Monfichier.txt","test1"); printf("ma phrase ligne test1 est = %s",txt);
Code:
stock dini_Isset(filename[],key[]) { new key_length = strlen(key); if (key_length==0 || key_length+2>DINI_MAX_STRING) return false; new File:fohnd; fohnd=fopen(filename,io_read); if (!fohnd) return false; new tmpres[DINI_MAX_STRING]; while (fread(fohnd,tmpres)) { if ( tmpres[key_length]=='=' && !strcmp(tmpres, key, true, key_length) ) { // We've got what we need fclose(fohnd); return true; } } fclose(fohnd); return false; }
Code:
if(dini_Isset("Monfichier.txt","ligne") ) { print("la ligne exist"); } else { print("la ligne exist pas"); }
Les fonction interne a l'include mais qui peuvent peu etre vous servire
Code:
stock DINI_StripNewLine(string[]) { new len = strlen(string); if (string[0]==0) return ; if ((string[len - 1] == '\n') || (string[len - 1] == '\r')) { string[len - 1] = 0; if (string[0]==0) return ; if ((string[len - 2] == '\n') || (string[len - 2] == '\r')) string[len - 2] = 0; } } stock DINI_fcopytextfile(oldname[],newname[]) { new File:ohnd,File:nhnd; if (!fexist(oldname)) return false; ohnd=fopen(oldname,io_read); if (!ohnd) return false; nhnd=fopen(newname,io_write); if (!nhnd) { fclose(ohnd); return false; } new tmpres[DINI_MAX_STRING]; while (fread(ohnd,tmpres)) { DINI_StripNewLine(tmpres); format(tmpres,sizeof(tmpres),"%s\r\n",tmpres); fwrite(nhnd,tmpres); } fclose(ohnd); fclose(nhnd); return true; }
Quote:
native dini_Exists(filename[]); native dini_Remove(filename[]); native dini_Create(filename[]); native dini_Set(filename[],key[],value[]); native dini_IntSet(filename[],key[],value); native dini_Int(filename[],key[]); native dini_FloatSet(filename[],key[],Float:value); native dini_Float(filename[],key[]); native dini_Bool(filename[],key[]); native dini_BoolSet(filename[],key[],value); native dini_Unset(filename[],key[]); native dini_Get(filename[],key[]); native dini_Isset(filename[],key[]); native DINI_StripNewLine(string[]); native DINI_fcopytextfile(oldname[],newname[]); |
Quote:
#if defined MAX_STRING #define DINI_MAX_STRING MAX_STRING #else #define DINI_MAX_STRING 255 #endif |
Voila je tenterais de repondre a vos question trouvez en piece jointe le fichier .pwn realiser le long de ce tuto.