View difference between Paste ID: ZSc3KynT and 6kyfuzfZ
SHOW: | | - or go back to the newest paste.
1
/* SA-MP Include SpeicherSystem
2
 *
3
 * (c) by Kaliber, 2013
4
 *
5
 */
6
#if !defined _samp_included
7
	#include <a_samp>
8
#endif
9
#if defined _SaveSystem
10
	#endinput
11
#endif
12
#define _SaveSystem
13
#define User::%0(%1) \
14
	(__%0(%1))
15
#define INVALID_ID 0
16
#if !defined MAX_BUFFER
17
	#define MAX_BUFFER 256
18
#endif
19-
stock __save(playerid, pw[], arg[], {Float,_}:...) {
19+
stock __save(pfad[], pw[], arg[], {Float,_}:...) {
20-
	if(playerid==INVALID_PLAYER_ID||!IsPlayerConnected(playerid)) return INVALID_ID;
20+
	new buffer[MAX_BUFFER];
21-
	new buffer[MAX_BUFFER],f_string[MAX_PLAYER_NAME+5],name[MAX_PLAYER_NAME];
21+
	format(buffer,MAX_BUFFER,"%s|",pw);
22-
	GetPlayerName(playerid,name,MAX_PLAYER_NAME),format(buffer,MAX_BUFFER,"%s|",pw);
22+
23
	    new buf[32];
24
		switch(arg[i-3]) {
25
	    	case 'd','i': format(buf,32,"%d|",getarg(i,0)),strins(buffer,buf,strlen(buffer),MAX_BUFFER);
26
	    	case 's': {
27
				for(new s; s<32; s++) if(getarg(i,s) != '\0') buf[s] = getarg(i,s);
28
	    	    format(buf,32,"%s|",buf),strins(buffer,buf,strlen(buffer),MAX_BUFFER);
29
	    	}
30
	    	case 'f': format(buf,32,"%f|",getarg(i,0)),strins(buffer,buf,strlen(buffer),MAX_BUFFER);
31
		}
32
	}
33
	new File:f=fopen(pfad,io_write);
34-
	format(f_string,sizeof(f_string),"%s.txt",name);
34+
35-
	new File:f=fopen(f_string,io_write);
35+
36
stock __load(pfad[], pw[], args[], {Float,_}:...) {
37
	new buffer[MAX_BUFFER];
38-
stock __load(playerid, pw[], args[], {Float,_}:...) {
38+
	if(!fexist(pfad)) return INVALID_ID;
39-
    if(playerid==INVALID_PLAYER_ID||!IsPlayerConnected(playerid)) return INVALID_ID;
39+
	new File:f=fopen(pfad,io_read),pos,s_buf[32],l_pos,arg=2,idx;
40-
	new buffer[MAX_BUFFER],f_string[MAX_PLAYER_NAME+5],name[MAX_PLAYER_NAME];
40+
41-
	GetPlayerName(playerid,name,MAX_PLAYER_NAME),format(f_string,sizeof(f_string),"%s.txt",name);
41+
42-
	if(!fexist(f_string)) return INVALID_ID;
42+
43-
	new File:f=fopen(f_string,io_read),pos,s_buf[32],l_pos,arg=2,idx;
43+
44
		strmid(s_buf,buffer,l_pos,pos,32);
45
		if(!l_pos) {
46
		    if(strcmp(s_buf,pw) != 0) return INVALID_ID;
47
		}
48
		else {
49
			switch(args[idx]) {
50
				case 'd','i': setarg(arg,0,strval(s_buf));
51
				case 's': for(new i,l=sizeof(s_buf); i!=l; i++) if(s_buf[i] != '\0') setarg(arg,i,s_buf[i]);
52
				case 'f': setarg(arg,0,_:floatstr(s_buf));
53
				default: return INVALID_ID;
54
			}
55
			idx++;
56
		}
57
		l_pos = pos+1,arg++;
58
	}
59
	return 1;
60
}