Advertisement
Guest User

Untitled

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