Advertisement
Guest User

DUDB

a guest
Jan 21st, 2011
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.37 KB | None | 0 0
  1. /*
  2.  *            DUDB functions
  3.  *       (c) Copyright 2006-2007 by DracoBlue
  4.  *
  5.  * @version   : 2.3
  6.  * @author    : DracoBlue (http://dracoblue.net)
  7.  * @date      : 8th May 2006
  8.  * @update    : 3rd June 2007
  9.  * @require   : DUtils 1.8
  10.  * @require   : DINI 1.5
  11.  *
  12.  * This Unit is provided as is (no warranties).
  13.  * Feel free to use it, a little message in
  14.  * about box is honouring thing, isn't it?
  15.  *
  16.  */
  17.  
  18. #if defined _dudb_included
  19.   #endinput
  20. #endif
  21.  
  22. #define _dudb_included
  23. #pragma library dutils
  24.  
  25. #include <dutils>
  26. #include <dini>
  27. #define dUser(%1).( udb_User(%1,
  28. #define dUserINT(%1).( udb_UserInt(%1,
  29. #define dUserSet(%1).( udb_UserSet(%1,
  30. #define dUserSetINT(%1).( udb_UserSetInt(%1,
  31. #define dUserSetFLOAT(%1).( udb_UserSetFloat(%1,
  32. #define dUserFLOAT(%1).( udb_UserFloat(%1,
  33.  
  34. stock udb_hash(buf[]) {
  35.     new length=strlen(buf);
  36.     new s1 = 1;
  37.     new s2 = 0;
  38.     new n;
  39.     for (n=0; n<length; n++)
  40.     {
  41.        s1 = (s1 + buf[n]) % 65521;
  42.        s2 = (s2 + s1)     % 65521;
  43.     }
  44.     return (s2 << 16) + s1;
  45. }
  46.  
  47. stock udb_encode(nickname[]) {
  48.   new tmp[MAX_STRING];
  49.   set(tmp,nickname);
  50.   tmp=strreplace("_","_00",tmp);
  51.   tmp=strreplace(";","_01",tmp);
  52.   tmp=strreplace("!","_02",tmp);
  53.   tmp=strreplace("/","_03",tmp);
  54.   tmp=strreplace("\\","_04",tmp);
  55.   tmp=strreplace("[","_05",tmp);
  56.   tmp=strreplace("]","_06",tmp);
  57.   tmp=strreplace("?","_07",tmp);
  58.   tmp=strreplace(".","_08",tmp);
  59.   tmp=strreplace("*","_09",tmp);
  60.   tmp=strreplace("<","_10",tmp);
  61.   tmp=strreplace(">","_11",tmp);
  62.   tmp=strreplace("{","_12",tmp);
  63.   tmp=strreplace("}","_13",tmp);
  64.   tmp=strreplace(" ","_14",tmp);
  65.   tmp=strreplace("\"","_15",tmp);
  66.   tmp=strreplace(":","_16",tmp);
  67.   tmp=strreplace("|","_17",tmp);
  68.   tmp=strreplace("=","_18",tmp);
  69.   return tmp;
  70. }
  71.  
  72. stock udb_decode(nickname[]) {
  73.   new tmp[MAX_STRING];
  74.   set(tmp,nickname);
  75.   tmp=strreplace("_01",";",tmp);
  76.   tmp=strreplace("_02","!",tmp);
  77.   tmp=strreplace("_03","/",tmp);
  78.   tmp=strreplace("_04","\\",tmp);
  79.   tmp=strreplace("_05","[",tmp);
  80.   tmp=strreplace("_06","]",tmp);
  81.   tmp=strreplace("_07","?",tmp);
  82.   tmp=strreplace("_08",".",tmp);
  83.   tmp=strreplace("_09","*",tmp);
  84.   tmp=strreplace("_10","<",tmp);
  85.   tmp=strreplace("_11",">",tmp);
  86.   tmp=strreplace("_12","{",tmp);
  87.   tmp=strreplace("_13","}",tmp);
  88.   tmp=strreplace("_14"," ",tmp);
  89.   tmp=strreplace("_15","\"",tmp);
  90.   tmp=strreplace("_16",":",tmp);
  91.   tmp=strreplace("_17","|",tmp);
  92.   tmp=strreplace("_18","=",tmp);
  93.   tmp=strreplace("_00","_",tmp);
  94.   return tmp;
  95. }
  96.  
  97.  
  98. stock udb_Exists(nickname[]) {
  99.   new tmp[MAX_STRING];
  100.   format(tmp,sizeof(tmp),"%s.dudb.sav",udb_encode(nickname));
  101.   return fexist(tmp);
  102. }
  103.  
  104.  
  105. stock udb_Remove(nickname[]) {
  106.   new tmp[MAX_STRING];
  107.   format(tmp,sizeof(tmp),"%s.dudb.sav",udb_encode(nickname));
  108.   return dini_Remove(tmp);
  109. }
  110.  
  111. stock udb_UserSetInt(nickname[],key[],value) {
  112.   new fname[MAX_STRING];
  113.   format(fname,sizeof(fname),"%s.dudb.sav",udb_encode(nickname));
  114.   return dini_IntSet(fname,key,value);
  115. }
  116.  
  117. stock udb_UserSetFloat(nickname[],key[],Float:value) {
  118.   new fname[MAX_STRING];
  119.   format(fname,sizeof(fname),"%s.dudb.sav",udb_encode(nickname));
  120.   return dini_FloatSet(fname,key,value);
  121. }
  122.  
  123. stock udb_UserSet(nickname[],key[],value[]) {
  124.   new fname[MAX_STRING];
  125.   format(fname,sizeof(fname),"%s.dudb.sav",udb_encode(nickname));
  126.   return dini_Set(fname,key,value);
  127. }
  128.  
  129. stock udb_User(nickname[],key[]) {
  130.   new fname[MAX_STRING];
  131.   format(fname,sizeof(fname),"%s.dudb.sav",udb_encode(nickname));
  132.   format(fname,sizeof(fname),dini_Get(fname,key));
  133.   return fname;
  134. }
  135.  
  136. stock Float:udb_UserFloat(nickname[],key[]) {
  137.   new fname[MAX_STRING];
  138.   format(fname,sizeof(fname),"%s.dudb.sav",udb_encode(nickname));
  139.   return dini_Float(fname,key);
  140. }
  141.  
  142. stock udb_UserInt(nickname[],key[]) {
  143.   new fname[MAX_STRING];
  144.   format(fname,sizeof(fname),"%s.dudb.sav",udb_encode(nickname));
  145.   return dini_Int(fname,key);
  146. }
  147.  
  148. stock udb_CheckLogin(nickname[],pwd[]) {
  149.   new fname[MAX_STRING];
  150.   format(fname,sizeof(fname),"%s.dudb.sav",udb_encode(nickname));
  151.   if (udb_UserInt(nickname,"password_hash")==udb_hash(pwd)) return true;
  152.   return false;
  153. }
  154.  
  155.  
  156. stock udb_Create(nickname[],pwd[]) {
  157.   if (udb_Exists(nickname)) return false;
  158.   new fname[MAX_STRING];
  159.   format(fname,sizeof(fname),"%s.dudb.sav",udb_encode(nickname));
  160.   dini_Create(fname);
  161.   udb_UserSetInt(nickname,"password_hash",udb_hash(pwd));
  162.   return true;
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement