#include <a_samp> #include <Dini>
stock dini_Exists(filename[]) { return fexist(filename); }
stock dini_Remove(filename[]) { return fremove(filename); }
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; }
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; }
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; }
test1=je suis un test |
stock dini_IntSet(filename[],key[],value) { new valuestring[DINI_MAX_STRING]; format(valuestring,DINI_MAX_STRING,"%d",value); return dini_Set(filename,key,valuestring); }
dini_IntSet("Monfichier.txt","test2",56);
test2=56 |
stock dini_Int(filename[],key[]) { return strval(dini_Get(filename,key)); }
new mavar; mavar = dini_Int("Monfichier.txt","test2"); printf("%d",mavar);
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); }
test3=1.235 |
stock Float:dini_Float(filename[],key[]) { return floatstr(dini_Get(filename,key)); }
new Float:mapos; mapos = dini_Float("Monfichier.txt","test3"); printf("test 3 %f",mapos);
stock dini_Bool(filename[],key[]) { return strval(dini_Get(filename,key)); }
stock dini_BoolSet(filename[],key[],value) { if (value) { return dini_Set(filename,key,"1"); } return dini_Set(filename,key,"0"); }
new bool1; new bool2; bool1=dini_Bool("Monfichier.txt","test4") ; bool2=dini_Bool("Monfichier.txt","test5") ; printf("bool1=%d bool2=%d",bool1,bool2);
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; }
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; }
new txt[256]; txt = dini_Get("Monfichier.txt","test1"); printf("ma phrase ligne test1 est = %s",txt);
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; }
if(dini_Isset("Monfichier.txt","ligne") ) { print("la ligne exist"); } else { print("la ligne exist pas"); }
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; }
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[]); |
#if defined MAX_STRING #define DINI_MAX_STRING MAX_STRING #else #define DINI_MAX_STRING 255 #endif |