ldudb.inc 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. /*
  2. ================================================================================
  3. -------------------------------------------------
  4. LuX Administration System v1.6 Beta
  5. Data Include v3.0
  6. -------------------------------------------------
  7. ================================================================================
  8. ORIGINAL DUDB functions By DracoBlue
  9. */
  10. #if defined _dudb_included
  11. #endinput
  12. #endif
  13. #define _dudb_included
  14. #pragma library dutils
  15. #include <dutils>
  16. #include <dini>
  17. #define dUser(%1).( udb_User(%1,
  18. #define dUserINT(%1).( udb_UserInt(%1,
  19. #define dUserSet(%1).( udb_UserSet(%1,
  20. #define dUserSetINT(%1).( udb_UserSetInt(%1,
  21. #define dUserSetFLOAT(%1).( udb_UserSetFloat(%1,
  22. #define dUserFLOAT(%1).( udb_UserFloat(%1,
  23. stock udb_hash(buf[]) {
  24. new length=strlen(buf);
  25. new s1 = 1;
  26. new s2 = 0;
  27. new n;
  28. for (n=0; n<length; n++)
  29. {
  30. s1 = (s1 + buf[n]) % 65521;
  31. s2 = (s2 + s1) % 65521;
  32. }
  33. return (s2 << 16) + s1;
  34. }
  35. stock udb_encode(nickname[]) {
  36. new tmp[MAX_STRING];
  37. set(tmp,nickname);
  38. tmp=strreplace("_","_00",tmp);
  39. tmp=strreplace(";","_01",tmp);
  40. tmp=strreplace("!","_02",tmp);
  41. tmp=strreplace("/","_03",tmp);
  42. tmp=strreplace("\\","_04",tmp);
  43. tmp=strreplace("[","_05",tmp);
  44. tmp=strreplace("]","_06",tmp);
  45. tmp=strreplace("?","_07",tmp);
  46. tmp=strreplace(".","_08",tmp);
  47. tmp=strreplace("*","_09",tmp);
  48. tmp=strreplace("<","_10",tmp);
  49. tmp=strreplace(">","_11",tmp);
  50. tmp=strreplace("{","_12",tmp);
  51. tmp=strreplace("}","_13",tmp);
  52. tmp=strreplace(" ","_14",tmp);
  53. tmp=strreplace("\"","_15",tmp);
  54. tmp=strreplace(":","_16",tmp);
  55. tmp=strreplace("|","_17",tmp);
  56. tmp=strreplace("=","_18",tmp);
  57. return tmp;
  58. }
  59. stock udb_decode(nickname[]) {
  60. new tmp[MAX_STRING];
  61. set(tmp,nickname);
  62. tmp=strreplace("_01",";",tmp);
  63. tmp=strreplace("_02","!",tmp);
  64. tmp=strreplace("_03","/",tmp);
  65. tmp=strreplace("_04","\\",tmp);
  66. tmp=strreplace("_05","[",tmp);
  67. tmp=strreplace("_06","]",tmp);
  68. tmp=strreplace("_07","?",tmp);
  69. tmp=strreplace("_08",".",tmp);
  70. tmp=strreplace("_09","*",tmp);
  71. tmp=strreplace("_10","<",tmp);
  72. tmp=strreplace("_11",">",tmp);
  73. tmp=strreplace("_12","{",tmp);
  74. tmp=strreplace("_13","}",tmp);
  75. tmp=strreplace("_14"," ",tmp);
  76. tmp=strreplace("_15","\"",tmp);
  77. tmp=strreplace("_16",":",tmp);
  78. tmp=strreplace("_17","|",tmp);
  79. tmp=strreplace("_18","=",tmp);
  80. tmp=strreplace("_00","_",tmp);
  81. return tmp;
  82. }
  83. stock udb_Exists(nickname[]) {
  84. new tmp[MAX_STRING];
  85. format(tmp,sizeof(tmp),"LuxAdmin/Accounts/%s.sav",udb_encode(nickname));
  86. return fexist(tmp);
  87. }
  88. stock udb_Remove(nickname[]) {
  89. new tmp[MAX_STRING];
  90. format(tmp,sizeof(tmp),"LuxAdmin/Accounts/%s.sav",udb_encode(nickname));
  91. return dini_Remove(tmp);
  92. }
  93. stock udb_UserSetInt(nickname[],key[],value) {
  94. new fname[MAX_STRING];
  95. format(fname,sizeof(fname),"LuxAdmin/Accounts/%s.sav",udb_encode(nickname));
  96. return dini_IntSet(fname,key,value);
  97. }
  98. stock udb_UserSetFloat(nickname[],key[],Float:value) {
  99. new fname[MAX_STRING];
  100. format(fname,sizeof(fname),"LuxAdmin/Accounts/%s.sav",udb_encode(nickname));
  101. return dini_FloatSet(fname,key,value);
  102. }
  103. stock udb_UserSet(nickname[],key[],value[]) {
  104. new fname[MAX_STRING];
  105. format(fname,sizeof(fname),"LuxAdmin/Accounts/%s.sav",udb_encode(nickname));
  106. return dini_Set(fname,key,value);
  107. }
  108. stock udb_User(nickname[],key[]) {
  109. new fname[MAX_STRING];
  110. format(fname,sizeof(fname),"LuxAdmin/Accounts/%s.sav",udb_encode(nickname));
  111. format(fname,sizeof(fname),dini_Get(fname,key));
  112. return fname;
  113. }
  114. stock Float:udb_UserFloat(nickname[],key[]) {
  115. new fname[MAX_STRING];
  116. format(fname,sizeof(fname),"LuxAdmin/Accounts/%s.sav",udb_encode(nickname));
  117. return dini_Float(fname,key);
  118. }
  119. stock udb_UserInt(nickname[],key[]) {
  120. new fname[MAX_STRING];
  121. format(fname,sizeof(fname),"LuxAdmin/Accounts/%s.sav",udb_encode(nickname));
  122. return dini_Int(fname,key);
  123. }
  124. stock udb_Create(nickname[])
  125. {
  126. if (udb_Exists(nickname)) return false;
  127. new fname[MAX_STRING];
  128. format(fname,sizeof(fname),"LuxAdmin/Accounts/%s.sav",udb_encode(nickname));
  129. dini_Create(fname);
  130. return true;
  131. }
  132. stock udb_RenameUser(nickname[],newnick[]) {
  133. new oldfname[MAX_STRING];
  134. new newfname[MAX_STRING];
  135. format(oldfname,sizeof(oldfname),"LuxAdmin/Accounts/%s.sav",udb_encode(nickname));
  136. format(newfname,sizeof(newfname),"LuxAdmin/Accounts/%s.sav",udb_encode(newnick));
  137. return frenametextfile(oldfname,newfname);
  138. }