SA-MP Forums

SA-MP Forums (https://forum.sa-mp.com/index.php)
-   Plugin Development (https://forum.sa-mp.com/forumdisplay.php?f=18)
-   -   [Plugin] [REL]tfile 3.0 Best file system! (https://forum.sa-mp.com/showthread.php?t=354128)

Terminator3 25/06/2012 07:22 PM

[REL]tfile 3.1 Best ini files system #update 16.07.12
 
I present you, my new plugin named tfile 3.0, is based on C++ fstream and it's better than standard file.inc (more characters available)

Why it is better then others file systems?
Almost all to set one value to file must use one function, in my plugin you use one function to save or get unlimited number of data

Functions:

fGetData(const file[], const format[], {Float,_}:...)
Get the data from the file
  • const file[] - name of a file
  • const format[] - list of keys and value types to get from file, see below*
  • {Float,_}:... - arguments to save data from file

Return numbers of getting values from file


fSaveData(const file[], const format[], {Float,_}:...)
Saves data to the file
  • const file[] - name of a file
  • const format[] - the same as fGetData*
  • {Float,_}:... - arguments (values) to save in the file

Returns true if all is correct


fAddData(const file[], const string[], bool:exist = false)
Add data to the file
  • const file[] - name of a file
  • const string[] - text to save in file
  • bool:exist = false - file must exist, default no

Returns true if all is correct


fDeleteData(const file[], const key[])
Deletes the data from the file
  • const file[] - file name
  • const key[] - key or list of keys separated by ,

Returns true if all is correct


fKeyExist(const file[], const key[])
Check if key or keys (max 32) exist in file
  • const file[] - file name
  • const key[] - key or list of keys separated by ,

For one key returns true/false, for more returns number that represented by bits which one key exist or not


fCreate(const file[], const string[])
Creates a file and saves something to him
  • const file[] - file name
  • const string[] - text to save in file

Returns true if all is correct

Additional functions

fConvertTags(const file[], oldtag, newtag)
Convert diverting char
  • const file[] - file name
  • oldtag - old diverting char, for example '='
  • newtag - new diverting char, for example '-'

Returns true if all is correct


fChangeConfig(keytab = '=', nicelook = false, ignorekeycase = false, keysize = 30, linesize = 256)
  • keytab = '=' - diverting char
  • nicelook = false - if true file looks "key = value" is false "key=value"
  • ignorekeycase = false - whether to ignore case when searching for a key in a file
  • keysize = 30 - max length of key name
  • linesize = 256 - max size of one line in file

Returns true if all is correct



*What is the format? i explain the example
pawn Code:
new pass[24], Float:hp, sex = 'F';
GetPlayerHealth(playerid, hp);
fSaveData("test.txt", "Money<d>Pass<s>HP<f>sex<c>", GetPlayerMoney(playerid), pass, hp, sex);
and in file we find:
Quote:

Money=10000
Pass=mama
HP=100.0
sex=F
and the same to get:
pawn Code:
new money, pass[24], Float:hp, sex;
fGetData("test.txt", "Money<d>Pass<s>HP<f>sex<c>", money, pass, hp, sex);
SetPlayerMoney(playerid, money);
SetPlayerHealth(playerid, hp);

<i> or <d> - number
<s> - string, text
<f> - float value
<c> - one char

pawn Code:
new x = fKeyExist("test.txt", "Money,Score,sex,Money");
if(x & 1) // if Money exist
    print("Money exist");

if(x & 2) // if Score exist
    print("Score exist");

if(x & 4) // if sex exist
    print("sex exist");

if(x & 8) // if Money exist
    print("Money exist");

pawn Code:
fDeleteData("test.txt", "Money,sex");
after that file looks:
Quote:

Pass=mama
HP=100.0
pawn Code:
new str[64];
format(str, sizeof str, "Money=%d\nScore=%d\nVIP=1\n", GetPlayerMoney(playerid), GetPlayerScore(playerid));
fAddData("test.txt", str);

Download:
tfile3.inc; Mirror
tfile.dll; Mirror
tfile.so; Mirror

Source Code; Mirror

zgintasz 25/06/2012 07:26 PM

Re: [REL]tfile 3.0 Best file system!
 
Nice ;)! I want to see some speed test results.
EDIT: hehe, first post :p

Littlehelper 25/06/2012 07:37 PM

Re: [REL]tfile 3.0 Best file system!
 
Looks nice, gonna test it.

TheArcher 25/06/2012 07:58 PM

Re: [REL]tfile 3.0 Best file system!
 
Looks a nice one, can you do some tests please. I'm so curious.

Face9000 25/06/2012 08:13 PM

Re: [REL]tfile 3.0 Best file system!
 
Nice job.

Vukilore 25/06/2012 09:12 PM

Re : [REL]tfile 3.0 Best file system!
 
I'm waiting for a response of ******, to be sure :D

Terminator3 25/06/2012 09:29 PM

Re: Re : [REL]tfile 3.0 Best file system!
 
Quote:

Originally Posted by Vukilore (Post 1946538)
I'm waiting for a response of ******, to be sure :D

Everybody loves professionals ;D


Quote:

Originally Posted by TheArcher (Post 1946357)
Looks a nice one, can you do some tests please. I'm so curious.

Tests?

rVar 25/06/2012 10:06 PM

Re: [REL]tfile 3.0 Best file system!
 
Awesome! Waiting for speed results comparing this with y_ini.

Terminator3 25/06/2012 10:25 PM

Re: [REL]tfile 3.0 Best file system!
 
Quote:

Originally Posted by rVar (Post 1946656)
Awesome! Waiting for speed results comparing this with y_ini.

It's hard to tell, in y_ini you uses one function to set one value to file, it's easy to test the speed, you just make big loop and count the time for example 10000 runs of function, then just divide time by 10000

Here you have one function and you can write big number of arguments but more time will take loop for all arguments in function then others things, and you will never set/get so many arguments to/from file, so if you divide by numbers of arguments you get more time for checking arguments, searching then, than normally run time of function

TheArcher 25/06/2012 10:34 PM

Re: Re : [REL]tfile 3.0 Best file system!
 
Quote:

Originally Posted by Terminator3 (Post 1946575)
Tests?

Quote:

Originally Posted by rVar (Post 1946656)
Waiting for speed results comparing this with y_ini.

4 char


All times are GMT. The time now is 01:56 AM.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.