Guest User

Speicherungssystem (c) by Kaliber

a guest
May 27th, 2013
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.13 KB | None | 0 0
  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,_}:...) {
  20.     if(playerid==INVALID_PLAYER_ID||!IsPlayerConnected(playerid)) return INVALID_ID;
  21.     new buffer[MAX_BUFFER],f_string[MAX_PLAYER_NAME+5],name[MAX_PLAYER_NAME];
  22.     GetPlayerName(playerid,name,MAX_PLAYER_NAME),format(buffer,MAX_BUFFER,"%s|",pw);
  23.     for(new i=3,l=numargs(); i<l; i++) {
  24.         new buf[32];
  25.         switch(arg[i-3]) {
  26.             case 'd','i': format(buf,32,"%d|",getarg(i,0)),strins(buffer,buf,strlen(buffer),MAX_BUFFER);
  27.             case 's': {
  28.                 for(new s; s<32; s++) if(getarg(i,s) != '\0') buf[s] = getarg(i,s);
  29.                 format(buf,32,"%s|",buf),strins(buffer,buf,strlen(buffer),MAX_BUFFER);
  30.             }
  31.             case 'f': format(buf,32,"%f|",getarg(i,0)),strins(buffer,buf,strlen(buffer),MAX_BUFFER);
  32.         }
  33.     }
  34.     format(f_string,sizeof(f_string),"%s.txt",name);
  35.     new File:f=fopen(f_string,io_write);
  36.     return fwrite(f,buffer),fclose(f),1;
  37. }
  38. stock __load(playerid, pw[], args[], {Float,_}:...) {
  39.     if(playerid==INVALID_PLAYER_ID||!IsPlayerConnected(playerid)) return INVALID_ID;
  40.     new buffer[MAX_BUFFER],f_string[MAX_PLAYER_NAME+5],name[MAX_PLAYER_NAME];
  41.     GetPlayerName(playerid,name,MAX_PLAYER_NAME),format(f_string,sizeof(f_string),"%s.txt",name);
  42.     if(!fexist(f_string)) return INVALID_ID;
  43.     new File:f=fopen(f_string,io_read),pos,s_buf[32],l_pos,arg=2,idx;
  44.     fread(f,buffer),fclose(f);
  45.     while(pos != -1) {
  46.         pos = strfind(buffer,"|",false,l_pos);
  47.         if(pos == -1) break;
  48.         strmid(s_buf,buffer,l_pos,pos,32);
  49.         if(!l_pos) {
  50.             if(strcmp(s_buf,pw) != 0) return INVALID_ID;
  51.         }
  52.         else {
  53.             switch(args[idx]) {
  54.                 case 'd','i': setarg(arg,0,strval(s_buf));
  55.                 case 's': for(new i,l=sizeof(s_buf); i!=l; i++) if(s_buf[i] != '\0') setarg(arg,i,s_buf[i]);
  56.                 case 'f': setarg(arg,0,_:floatstr(s_buf));
  57.                 default: return INVALID_ID;
  58.             }
  59.             idx++;
  60.         }
  61.         l_pos = pos+1,arg++;
  62.     }
  63.     return 1;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment