Advertisement
Day_Mito

PVar

Mar 1st, 2015
476
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.91 KB | None | 0 0
  1. /*----------------------------------------------------------------------------*\
  2.             =======================================
  3.                       PVars Extras Funcoes
  4.             =======================================
  5.                            Versao 1.1
  6. Descricao:
  7. Adiciona novas e uteis funcoes para PVars
  8.  
  9. Creditos:
  10. Dayvison   - Criacao da include.
  11. SA:MP Team - Tutoriais, existir *-*
  12.  
  13. Funcoes:
  14.     PVarExiste(playerid,varnome[])                -- Verifica se uma variavel existe
  15.     bool:GetPVarBool(playerid,varnome[])          -- Obtem o valor de uma PVar booleana
  16.     SetPVarBool(playerid, varnome[], bool:valor)  -- Seta uma PVar booleana
  17.     SalvarPVars(playerid, arquivo[])              -- Salva todas as PVars de um Player
  18.     CarregarPVars(playerid, arquivo[])            -- Carrega todas as PVars de um Player
  19.     DestruirPVars(playerid)                       -- Destroi todas as PVars de um Player
  20.     bool:BoolStr(str[])                           -- Retorna em booleano o valor de uma string
  21.    
  22.     Hooks:
  23.     GetPVarType(playerid, varnome[])
  24. \*----------------------------------------------------------------------------*/
  25. #define Func::%0(%1)    stock %0(%1)
  26. #define PLAYER_VARTYPE_BOOL 4
  27. stock PVarExiste(playerid,varnome[])
  28. {
  29.     new PVAR[70];
  30.  
  31.     for(new pvar; pvar <= GetPVarsUpperIndex(playerid); pvar++)
  32.     {
  33.         GetPVarNameAtIndex(playerid,pvar,PVAR,70);
  34.         if(!strcmp(PVAR,varnome) && PVAR[0])
  35.         {
  36.             return true;
  37.         }
  38.         else
  39.         {
  40.             continue;
  41.         }
  42.     }
  43.     return false;
  44. }
  45. stock bool:BoolStr(str[])
  46. {
  47.     return (strval(str) || str[0] && !strcmp(str,"true",true));
  48. }
  49. Func:: INC_GetPVarType(playerid, varnome[])
  50. {
  51.     switch(GetPVarType(playerid, varnome))
  52.     {
  53.         case PLAYER_VARTYPE_NONE:   return 0;
  54.         case PLAYER_VARTYPE_INT:    return 1;
  55.         case PLAYER_VARTYPE_STRING:
  56.         {
  57.             new str[150];
  58.             GetPVarString(playerid,varnome,str,150);
  59.             if(!strcmp(str,"true") || !strcmp(str,"false")) return 4;
  60.             else return 2;
  61.         }
  62.         case PLAYER_VARTYPE_FLOAT:  return 3;
  63.     }
  64.     return 0;
  65. }
  66.  
  67. #if defined _ALS_GetPVarType
  68.     #undef GetPVarType
  69. #else
  70.     #define _ALS_GetPVarType
  71. #endif
  72. #define GetPVarType INC_GetPVarType
  73.  
  74. Func:: bool:GetPVarBool(playerid,varnome[])
  75. {
  76.     new str[10];
  77.     GetPVarString(playerid,varnome,str,10);
  78.     if(BoolStr(str))    return true;
  79.     else    return false;
  80. }
  81.  
  82. Func:: SetPVarBool(playerid,varnome[],bool:valor)
  83. {
  84.     SetPVarString(playerid,varnome,valor ? ("true") : ("false"));
  85.     return true;
  86. }
  87.  
  88. Func:: DestruirPVars(playerid)
  89. {
  90.     new varnome[70];
  91.     for(new pvar; pvar <= GetPVarsUpperIndex(playerid); pvar++)
  92.     {
  93.         GetPVarNameAtIndex(playerid,pvar,varnome,70);
  94.         DeletePVar(playerid,varnome);
  95.         continue;
  96.     }
  97.     return true;
  98. }
  99.  
  100. Func:: CarregarPVars(playerid,arquivo[])
  101. {
  102.     if(!fexist(arquivo))    return false;
  103.     new
  104.         varnome[70],
  105.         string[900],
  106.         File: arq = fopen(arquivo,io_read);
  107.  
  108.     while(fread(arq,string))
  109.     {
  110.         if(!strcmp(string,"[STRING]",false,8))
  111.         {
  112.             new valor[150];
  113.             strmid(varnome,string,8,strfind(string,"=")-1);
  114.             strmid(valor,string,strfind(string,"=")+2,strlen(string)-2);
  115.             SetPVarString(playerid,varnome,valor);
  116.         }
  117.         if(!strcmp(string,"[INTEIRO]",false,9))
  118.         {
  119.             new valor[40],valor2;
  120.             strmid(varnome,string,9,strfind(string,"=")-1);
  121.             strmid(valor,string,strfind(string,"=")+2,strlen(string)-2);
  122.             valor2 = strval(valor);
  123.             SetPVarInt(playerid,varnome,valor2);
  124.         }
  125.         if(!strcmp(string,"[FLOAT]",false,7))
  126.         {
  127.             new valor[40];
  128.             strmid(varnome,string,7,strfind(string,"=")-1);
  129.             strmid(valor,string,strfind(string,"=")+2,strlen(string)-2);
  130.             SetPVarFloat(playerid,varnome,floatstr(valor));
  131.         }
  132.         if(!strcmp(string,"[BOOL]",false,6))
  133.         {
  134.             new valor[6];
  135.             strmid(varnome,string,6,strfind(string,"=")-1);
  136.             strmid(valor,string,strfind(string,"=")+2,strlen(string)-2);
  137.             SetPVarBool(playerid,varnome,BoolStr(valor));
  138.         }
  139.     }
  140.     fclose(arq);
  141.     return true;
  142. }
  143. Func:: SalvarPVars(playerid,arquivo[])
  144. {
  145.     new
  146.         varnome[70],
  147.         File: arq = fopen(arquivo,io_write);
  148.  
  149.     for(new pvar; pvar <= GetPVarsUpperIndex(playerid); pvar++)
  150.     {
  151.         GetPVarNameAtIndex(playerid,pvar,varnome,70);
  152.         switch(GetPVarType(playerid,varnome))
  153.         {
  154.             case PLAYER_VARTYPE_STRING:
  155.             {
  156.                 new conteudo[150],string[250];
  157.                 GetPVarString(playerid,varnome,conteudo,150);
  158.                 format(string,250,"[STRING]%s = %s\r\n",varnome,conteudo);
  159.                 fwrite(arq,string);
  160.             }
  161.             case PLAYER_VARTYPE_INT:
  162.             {
  163.                 new string[90],valor = GetPVarInt(playerid,varnome);
  164.                 format(string,90,"[INTEIRO]%s = %d\r\n",varnome,valor);
  165.                 fwrite(arq,string);
  166.             }
  167.             case PLAYER_VARTYPE_FLOAT:
  168.             {
  169.                 new string[90], Float:valor = GetPVarFloat(playerid,varnome);
  170.                 format(string,90,"[FLOAT]%s = %f\r\n",varnome,valor);
  171.                 fwrite(arq,string);
  172.             }
  173.             case PLAYER_VARTYPE_BOOL:
  174.             {
  175.                 new string[90],bool:valor = GetPVarBool(playerid,varnome);
  176.                 format(string,90,"[BOOL]%s = %s\r\n",varnome,valor ? ("true") : ("false"));
  177.                 fwrite(arq,string);
  178.             }
  179.         }
  180.     }
  181.     fclose(arq);
  182.     return true;
  183. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement