Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //=========================================
- // AccountManager :: VipLib v1.4b
- // Desenvolvido por Rafael Perrella
- //=========================================
- // This version isn't compatible with eAthena revisions and Cronus old revisions
- // If you still want this script running on these emulators, send me a message.
- //=========================================
- // vip_add (amount, group_id=1, uid=getcharid(3))
- function script vip_add {
- set .@varName$, "$AM_Vip" + getarg (2, getcharid (3)) + "[" + getarg (1, 1) + "]";
- callfunc ("vip_update", getarg (2, getcharid (3)), 0);
- setd .@varName$, (getd (.@varName$) + getarg (0) > 0) ? getd (.@varName$) + getarg (0) : 0;
- return callfunc ("vip_update", getarg (2, getcharid (3)));
- }
- // vip_remove (amount, group_id=0, uid=getcharid(3))
- function script vip_remove {
- return callfunc ("vip_add", -getarg (0), getarg (1, 0), getarg (2, getcharid (3)));
- }
- // vip_set (amount, group_id=1, uid=getcharid(3))
- function script vip_set {
- callfunc ("vip_update", getarg (2, getcharid (3)), 0);
- setd "$AM_Vip" + getarg (2, getcharid (3)) + "[" + getarg (1, 1) + "]", (getarg (0) > 0) ? getarg (0) : 0;
- return callfunc ("vip_update", getarg (2, getcharid (3)));
- }
- // vip_clear (uid=getcharid(3))
- function script vip_clear {
- set .@aid, getarg (0, getcharid (3));
- for (set .@i, 0; .@i <= $@AM_Vip_CountGroups; set .@i, .@i + 1)
- setd "$AM_Vip" + .@aid + "[" + $@AM_Vip_Groups[.@i] + "]", 0;
- return callfunc ("vip_refresh", 0, .@aid);
- }
- // vip_read (group_id=0, uid=getcharid(3), update=true)
- function script vip_read {
- set .@aid, getarg (1, getcharid (3));
- if (getarg (2, 1))
- callfunc ("vip_update", .@aid, 0);
- if (getarg (0, 0))
- return getd ("$AM_Vip" + .@aid + "[" + getarg (0, 0) + "]");
- for (set .@i, 0; $@AM_Vip_Groups[.@i]; set .@i, .@i + 1)
- set .@t, .@t + getd ("$AM_Vip" + .@aid + "[" + $@AM_Vip_Groups[.@i] + "]");
- return .@t;
- }
- // vip_getgroupid (uid=getcharid(3))
- function script vip_getgroupid {
- return callfunc ("vip_update", getarg (0, getcharid (3)), 0);
- }
- // vip_listgroupid (uid=getcharid(3), varName = @AM_VipLevel/$@AM_VipLevel)
- function script vip_listgroupid {
- set .@aid, getarg (0, getcharid (3));
- set .@varName$, getarg (1, getcharid (3) ? "@AM_VipLevel" : "$@AM_VipLevel");
- callfunc ("vip_update", .@aid, 0);
- for (set .@i, $@AM_Vip_CountGroups - 1; .@i >= 0; set .@i, .@i - 1)
- {
- set .@groupid, $@AM_Vip_Groups[.@i];
- if (getd ("$AM_Vip" + .@aid + "[" + .@groupid + "]"))
- {
- setd .@varName$ + "[" + .@amount + "]", .@groupid;
- set .@amount, .@amount + 1;
- }
- }
- return .@amount;
- }
- // vip_update (uid=getcharid(3), refresh=true)
- function script vip_update {
- set .@aid, getarg (0, getcharid (3));
- set .@now, gettimetick (2);
- set .@remove, .@now - getd ("$AM_Vip" + .@aid);
- for (set .@i, $@AM_Vip_CountGroups - 1; .@i >= 0 && .@remove >= 0; set .@i, .@i - 1)
- {
- set .@groupid, $@AM_Vip_Groups[.@i];
- set .@varName$, "$AM_Vip" + .@aid + "[" + .@groupid + "]";
- if (getd (.@varName$) > 0)
- set .@remove, .@remove - getd (.@varName$);
- setd .@varName$, (.@remove < 0) ? (-.@remove) : 0;
- }
- if (.@remove >= 0)
- set .@groupid, 0;
- setd "$AM_Vip" + .@aid, .@now;
- if (getarg (1, 1))
- return callfunc ("vip_refresh", .@groupid, .@aid);
- return .@groupid;
- }
- // vip_refresh (group_id=0, uid=getcharid(3))
- function script vip_refresh {
- if (isloggedin (getarg (1, getcharid (3))))
- {
- set .@rid, getcharid (3);
- attachrid getarg (0, getcharid (3));
- if (getgmlevel() != getarg (0, 0) && $@AM_Vip_IsValidGroup[getgmlevel()])
- atcommand "@adjgmlvl " + getarg (0, 0) + " " + strcharinfo (0);
- if (!@AM_Vip_DisableManager && !$@AM_Vip_DisableManager)
- callfunc ("vipm_refresh", getarg (1, getcharid (3)));
- attachrid .@rid;
- }
- if ($@AM_Vip_AlterSQL)
- {
- query_sql "SELECT `level` FROM `login` WHERE `account_id`='" + getarg (1, getcharid (3)) + "'", .@groupid;
- if (.@groupid != getarg (0, 0) && $@AM_Vip_IsValidGroup[.@groupid])
- query_sql "UPDATE `login` SET `level`='" + getarg (0, 0) + "' WHERE `account_id`='" + getarg (1, getcharid (3)) + "'";
- }
- return getarg (0, 0);
- }
- // vip_reload_groups ()
- function script vip_reload_groups {
- deletearray $@AM_Vip_IsValidGroup;
- set $@AM_Vip_IsValidGroup[0], 1;
- for (set .@i, 0; $@AM_Vip_Groups[.@i]; set .@i, .@i + 1)
- set $@AM_Vip_IsValidGroup[$@AM_Vip_Groups[.@i]], 1;
- set $@AM_Vip_CountGroups, .@i;
- return;
- }
- // VipManager
- //-------------------------------------------
- - script vipm_npc -1,{
- OnInit:
- if (!$@AM_Vip_CountGroups)
- {
- // from worse to better group id
- setarray $@AM_Vip_Groups, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10;
- callfunc ("vip_reload_groups");
- }
- end;
- OnPCLoginEvent:
- callfunc ("vipm_refresh");
- end;
- OnRefreshVip:
- if (@AM_Vip_DisableManager || $@AM_Vip_DisableManager || !$@AM_Vip_IsValidGroup[getgmlevel()])
- end;
- deltimer "vipm_npc::OnRefreshVip";
- if (set (.@time, callfunc ("vip_read", set (.@groupid, callfunc ("vip_getgroupid")), getcharid(3), 0)) > 0)
- addtimer 1000 + ((.@time >= 86400) ? 86400 : .@time) * 1000, "vipm_npc::OnRefreshVip";
- set @AM_Vip_DisableManager, 1;
- callfunc ("vip_refresh", .@groupid);
- set @AM_Vip_DisableManager, 0;
- callfunc ("vipm_force_call");
- end;
- }
- // vipm_force_call (uid=getcharid(3))
- function script vipm_force_call {
- set .@aid, getarg (0, getcharid (3));
- if (!.@aid || isloggedin (.@aid))
- {
- set .@rid, getcharid (3);
- for (set .@i, 0; .@i < getarraysize ($@AM_Vip_CallOnRefresh$); set .@i, .@i + 1)
- if (is_function ($@AM_Vip_CallOnRefresh$))
- {
- attachrid .@aid;
- callfunc ($@AM_Vip_CallOnRefresh$, .@rid);
- }
- attachrid .@rid;
- }
- return;
- }
- // vipm_refresh (uid=getcharid(3))
- function script vipm_refresh {
- set .@aid, getarg (0, getcharid (3));
- if (isloggedin (.@aid))
- {
- set .@rid, getcharid (3);
- attachrid .@aid;
- addtimer 1000, "vipm_npc::OnRefreshVip";
- attachrid .@rid;
- }
- return;
- }
- // vipm_format_time (time_in_seconds)
- function script vipm_format_time {
- if (! .unitSize)
- {
- //setarray .unit$, " month", " months", " day", " days", " hour", " hourss", " minute", " minutes", " second", " seconds";
- setarray .unit$, " mês"," meses", " dia"," dias", " hora"," horas", " minuto"," minutos", " segundo"," segundos";
- setarray .unit, 30*86400, 86400, 3600, 60, 1;
- set .unitSize, getarraysize (.unit);
- }
- // Seleciona as duas unidades que devem ser usadas e formata a string
- if (set (.@time, getarg (0)) > 0)
- for (set .@i, 0; .@i < .unitSize; set .@i, .@i + 1)
- if (.@time >= .unit[.@i])
- {
- if (.@i + 1 < .unitSize)
- {
- set .@lTime, (.@time % .unit[.@i]) / .unit[.@i + 1];
- //set .@lTime$, " and " + .@lTime + .unit$[2*(.@i + 1) + (.@lTime != 1)];
- set .@lTime$, " e " + .@lTime + .unit$[2*(.@i + 1) + (.@lTime != 1)];
- }
- return (.@time / .unit[.@i]) + .unit$[2*.@i + (.@time / .unit[.@i] != 1)] + .@lTime$;
- }
- return "0" + .unit$[2*.unitSize - 1];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement