Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* SA-MP Include SpeicherSystem
- *
- * (c) by Kaliber, 2013
- *
- */
- #if !defined _samp_included
- #include <a_samp>
- #endif
- #if defined _SaveSystem
- #endinput
- #endif
- #define _SaveSystem
- #define User::%0(%1) \
- (__%0(%1))
- #define INVALID_ID 0
- #if !defined MAX_BUFFER
- #define MAX_BUFFER 256
- #endif
- stock __save(pfad[], pw[], arg[], {Float,_}:...) {
- new buffer[MAX_BUFFER];
- format(buffer,MAX_BUFFER,"%s|",pw);
- for(new i=3,l=numargs(); i<l; i++) {
- new buf[32];
- switch(arg[i-3]) {
- case 'd','i': format(buf,32,"%d|",getarg(i,0)),strins(buffer,buf,strlen(buffer),MAX_BUFFER);
- case 's': {
- for(new s; s<32; s++) if(getarg(i,s) != '\0') buf[s] = getarg(i,s);
- format(buf,32,"%s|",buf),strins(buffer,buf,strlen(buffer),MAX_BUFFER);
- }
- case 'f': format(buf,32,"%f|",getarg(i,0)),strins(buffer,buf,strlen(buffer),MAX_BUFFER);
- }
- }
- new File:f=fopen(pfad,io_write);
- return fwrite(f,buffer),fclose(f),1;
- }
- stock __load(pfad[], pw[], args[], {Float,_}:...) {
- new buffer[MAX_BUFFER];
- if(!fexist(pfad)) return INVALID_ID;
- new File:f=fopen(pfad,io_read),pos,s_buf[32],l_pos,arg=2,idx;
- fread(f,buffer),fclose(f);
- while(pos != -1) {
- pos = strfind(buffer,"|",false,l_pos);
- if(pos == -1) break;
- strmid(s_buf,buffer,l_pos,pos,32);
- if(!l_pos) {
- if(strcmp(s_buf,pw) != 0) return INVALID_ID;
- }
- else {
- switch(args[idx]) {
- case 'd','i': setarg(arg,0,strval(s_buf));
- case 's': for(new i,l=sizeof(s_buf); i!=l; i++) if(s_buf[i] != '\0') setarg(arg,i,s_buf[i]);
- case 'f': setarg(arg,0,_:floatstr(s_buf));
- default: return INVALID_ID;
- }
- idx++;
- }
- l_pos = pos+1,arg++;
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement