Advertisement
Guest User

Untitled

a guest
Nov 16th, 2012
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.95 KB | None | 0 0
  1. //=========================================
  2. // AccountManager :: VipLib v1.4b
  3. // Desenvolvido por Rafael Perrella
  4. //=========================================
  5. // This version isn't compatible with eAthena revisions and Cronus old revisions
  6. // If you still want this script running on these emulators, send me a message.
  7. //=========================================
  8.  
  9. // vip_add (amount, group_id=1, uid=getcharid(3))
  10. function script vip_add {
  11. set .@varName$, "$AM_Vip" + getarg (2, getcharid (3)) + "[" + getarg (1, 1) + "]";
  12. callfunc ("vip_update", getarg (2, getcharid (3)), 0);
  13.  
  14. setd .@varName$, (getd (.@varName$) + getarg (0) > 0) ? getd (.@varName$) + getarg (0) : 0;
  15. return callfunc ("vip_update", getarg (2, getcharid (3)));
  16. }
  17.  
  18. // vip_remove (amount, group_id=0, uid=getcharid(3))
  19. function script vip_remove {
  20. return callfunc ("vip_add", -getarg (0), getarg (1, 0), getarg (2, getcharid (3)));
  21. }
  22.  
  23. // vip_set (amount, group_id=1, uid=getcharid(3))
  24. function script vip_set {
  25. callfunc ("vip_update", getarg (2, getcharid (3)), 0);
  26. setd "$AM_Vip" + getarg (2, getcharid (3)) + "[" + getarg (1, 1) + "]", (getarg (0) > 0) ? getarg (0) : 0;
  27. return callfunc ("vip_update", getarg (2, getcharid (3)));
  28. }
  29.  
  30. // vip_clear (uid=getcharid(3))
  31. function script vip_clear {
  32. set .@aid, getarg (0, getcharid (3));
  33.  
  34. for (set .@i, 0; .@i <= $@AM_Vip_CountGroups; set .@i, .@i + 1)
  35. setd "$AM_Vip" + .@aid + "[" + $@AM_Vip_Groups[.@i] + "]", 0;
  36.  
  37. return callfunc ("vip_refresh", 0, .@aid);
  38. }
  39.  
  40. // vip_read (group_id=0, uid=getcharid(3), update=true)
  41. function script vip_read {
  42. set .@aid, getarg (1, getcharid (3));
  43.  
  44. if (getarg (2, 1))
  45. callfunc ("vip_update", .@aid, 0);
  46. if (getarg (0, 0))
  47. return getd ("$AM_Vip" + .@aid + "[" + getarg (0, 0) + "]");
  48.  
  49. for (set .@i, 0; $@AM_Vip_Groups[.@i]; set .@i, .@i + 1)
  50. set .@t, .@t + getd ("$AM_Vip" + .@aid + "[" + $@AM_Vip_Groups[.@i] + "]");
  51. return .@t;
  52. }
  53.  
  54. // vip_getgroupid (uid=getcharid(3))
  55. function script vip_getgroupid {
  56. return callfunc ("vip_update", getarg (0, getcharid (3)), 0);
  57. }
  58.  
  59. // vip_listgroupid (uid=getcharid(3), varName = @AM_VipLevel/$@AM_VipLevel)
  60. function script vip_listgroupid {
  61. set .@aid, getarg (0, getcharid (3));
  62. set .@varName$, getarg (1, getcharid (3) ? "@AM_VipLevel" : "$@AM_VipLevel");
  63.  
  64. callfunc ("vip_update", .@aid, 0);
  65. for (set .@i, $@AM_Vip_CountGroups - 1; .@i >= 0; set .@i, .@i - 1)
  66. {
  67. set .@groupid, $@AM_Vip_Groups[.@i];
  68. if (getd ("$AM_Vip" + .@aid + "[" + .@groupid + "]"))
  69. {
  70. setd .@varName$ + "[" + .@amount + "]", .@groupid;
  71. set .@amount, .@amount + 1;
  72. }
  73. }
  74. return .@amount;
  75. }
  76.  
  77. // vip_update (uid=getcharid(3), refresh=true)
  78. function script vip_update {
  79. set .@aid, getarg (0, getcharid (3));
  80. set .@now, gettimetick (2);
  81. set .@remove, .@now - getd ("$AM_Vip" + .@aid);
  82.  
  83. for (set .@i, $@AM_Vip_CountGroups - 1; .@i >= 0 && .@remove >= 0; set .@i, .@i - 1)
  84. {
  85. set .@groupid, $@AM_Vip_Groups[.@i];
  86. set .@varName$, "$AM_Vip" + .@aid + "[" + .@groupid + "]";
  87. if (getd (.@varName$) > 0)
  88. set .@remove, .@remove - getd (.@varName$);
  89. setd .@varName$, (.@remove < 0) ? (-.@remove) : 0;
  90. }
  91. if (.@remove >= 0)
  92. set .@groupid, 0;
  93. setd "$AM_Vip" + .@aid, .@now;
  94.  
  95. if (getarg (1, 1))
  96. return callfunc ("vip_refresh", .@groupid, .@aid);
  97. return .@groupid;
  98. }
  99.  
  100. // vip_refresh (group_id=0, uid=getcharid(3))
  101. function script vip_refresh {
  102. if (isloggedin (getarg (1, getcharid (3))))
  103. {
  104. set .@rid, getcharid (3);
  105. attachrid getarg (0, getcharid (3));
  106. if (getgmlevel() != getarg (0, 0) && $@AM_Vip_IsValidGroup[getgmlevel()])
  107. atcommand "@adjgmlvl " + getarg (0, 0) + " " + strcharinfo (0);
  108. if (!@AM_Vip_DisableManager && !$@AM_Vip_DisableManager)
  109. callfunc ("vipm_refresh", getarg (1, getcharid (3)));
  110. attachrid .@rid;
  111. }
  112. if ($@AM_Vip_AlterSQL)
  113. {
  114. query_sql "SELECT `level` FROM `login` WHERE `account_id`='" + getarg (1, getcharid (3)) + "'", .@groupid;
  115. if (.@groupid != getarg (0, 0) && $@AM_Vip_IsValidGroup[.@groupid])
  116. query_sql "UPDATE `login` SET `level`='" + getarg (0, 0) + "' WHERE `account_id`='" + getarg (1, getcharid (3)) + "'";
  117. }
  118. return getarg (0, 0);
  119. }
  120.  
  121. // vip_reload_groups ()
  122. function script vip_reload_groups {
  123. deletearray $@AM_Vip_IsValidGroup;
  124.  
  125. set $@AM_Vip_IsValidGroup[0], 1;
  126. for (set .@i, 0; $@AM_Vip_Groups[.@i]; set .@i, .@i + 1)
  127. set $@AM_Vip_IsValidGroup[$@AM_Vip_Groups[.@i]], 1;
  128.  
  129. set $@AM_Vip_CountGroups, .@i;
  130. return;
  131. }
  132.  
  133. // VipManager
  134. //-------------------------------------------
  135. - script vipm_npc -1,{
  136. OnInit:
  137. if (!$@AM_Vip_CountGroups)
  138. {
  139. // from worse to better group id
  140. setarray $@AM_Vip_Groups, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10;
  141. callfunc ("vip_reload_groups");
  142. }
  143. end;
  144. OnPCLoginEvent:
  145. callfunc ("vipm_refresh");
  146. end;
  147. OnRefreshVip:
  148. if (@AM_Vip_DisableManager || $@AM_Vip_DisableManager || !$@AM_Vip_IsValidGroup[getgmlevel()])
  149. end;
  150.  
  151. deltimer "vipm_npc::OnRefreshVip";
  152. if (set (.@time, callfunc ("vip_read", set (.@groupid, callfunc ("vip_getgroupid")), getcharid(3), 0)) > 0)
  153. addtimer 1000 + ((.@time >= 86400) ? 86400 : .@time) * 1000, "vipm_npc::OnRefreshVip";
  154.  
  155. set @AM_Vip_DisableManager, 1;
  156. callfunc ("vip_refresh", .@groupid);
  157. set @AM_Vip_DisableManager, 0;
  158.  
  159. callfunc ("vipm_force_call");
  160. end;
  161. }
  162.  
  163. // vipm_force_call (uid=getcharid(3))
  164. function script vipm_force_call {
  165. set .@aid, getarg (0, getcharid (3));
  166. if (!.@aid || isloggedin (.@aid))
  167. {
  168. set .@rid, getcharid (3);
  169. for (set .@i, 0; .@i < getarraysize ($@AM_Vip_CallOnRefresh$); set .@i, .@i + 1)
  170. if (is_function ($@AM_Vip_CallOnRefresh$))
  171. {
  172. attachrid .@aid;
  173. callfunc ($@AM_Vip_CallOnRefresh$, .@rid);
  174. }
  175. attachrid .@rid;
  176. }
  177. return;
  178. }
  179.  
  180. // vipm_refresh (uid=getcharid(3))
  181. function script vipm_refresh {
  182. set .@aid, getarg (0, getcharid (3));
  183. if (isloggedin (.@aid))
  184. {
  185. set .@rid, getcharid (3);
  186. attachrid .@aid;
  187. addtimer 1000, "vipm_npc::OnRefreshVip";
  188. attachrid .@rid;
  189. }
  190. return;
  191. }
  192.  
  193. // vipm_format_time (time_in_seconds)
  194. function script vipm_format_time {
  195. if (! .unitSize)
  196. {
  197. //setarray .unit$, " month", " months", " day", " days", " hour", " hourss", " minute", " minutes", " second", " seconds";
  198. setarray .unit$, " mês"," meses", " dia"," dias", " hora"," horas", " minuto"," minutos", " segundo"," segundos";
  199. setarray .unit, 30*86400, 86400, 3600, 60, 1;
  200. set .unitSize, getarraysize (.unit);
  201. }
  202.  
  203. // Seleciona as duas unidades que devem ser usadas e formata a string
  204. if (set (.@time, getarg (0)) > 0)
  205. for (set .@i, 0; .@i < .unitSize; set .@i, .@i + 1)
  206. if (.@time >= .unit[.@i])
  207. {
  208. if (.@i + 1 < .unitSize)
  209. {
  210. set .@lTime, (.@time % .unit[.@i]) / .unit[.@i + 1];
  211. //set .@lTime$, " and " + .@lTime + .unit$[2*(.@i + 1) + (.@lTime != 1)];
  212. set .@lTime$, " e " + .@lTime + .unit$[2*(.@i + 1) + (.@lTime != 1)];
  213. }
  214. return (.@time / .unit[.@i]) + .unit$[2*.@i + (.@time / .unit[.@i] != 1)] + .@lTime$;
  215. }
  216. return "0" + .unit$[2*.unitSize - 1];
  217. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement