-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathAntiafk_bg_system.txt
177 lines (154 loc) · 5.58 KB
/
Antiafk_bg_system.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
//|==================================================================================|
//| ___ ___ ___ ___ ___ |
//| /\ \ /\ \ /\ \ /| | /\ \ |
//| |::\ \ /::\ \ /::\ \ |:| | /::\ \ |
//| |:|:\ \ /:/\:\ \ /:/\:\ \ |:| | /:/\:\ \ |
//| __|:|\:\ \ /:/ \:\ \ /:/ \:\ \ __|:| | /:/ /::\ \ |
//| /::::|_\:\__\ /:/__/ \:\__\ /:/__/ \:\__\ /\ |:|__|____ /:/_/:/\:\__\ |
//| \:\--\ \/__/ \:\ \ /:/ / \:\ \ /:/ / \:\/:::::/__/ \:\/:/ \/__/ |
//| \:\ \ \:\ /:/ / \:\ /:/ / \::/__/ \::/__/ |
//| \:\ \ \:\/:/ / \:\/:/ / \:\ \ \:\ \ |
//| \:\__\ \::/ / \::/ / \:\__\ \:\__\ |
//| \/__/ \/__/ \/__/ \/__/ \/__/ |
//| ================================================================================ |
//| Script Desenvolvido Por Mooka | eAthena | Por Favor, Não Retire Os Créditos. |
//| ================================================================================ |
//|[1.0.1] : Adicionado suporte a multiplas arenas. [Mooka] |
//|[1.0.0] : NPC criado. [Mooka] |
//| ================================================================================ |
- script Kick_AFK -1,{ // |
//| ================================================================================ |
OnInit: // |
//| |
//| ==> Configuração do aviso a ser kickado. |
//| -> Nota: 1 = 15 segundos. |
//| => Receber aviso em: |
set $@AFK_Time_warning, 1; // 15 segundos // |
//| |
//| => Receber Kick em: |
set $@AFK_Time_Kick, 2; // 30 segundos // |
//| |
//| ==> Mapas onde o sistema deve funcionar. |
//| -> Altere também os loadevent no final do arquivo de acordo aos mapas da lista. | |
setarray $@BGMapList$[0], "prontera", "mapa2", "mapa3", "mapa4"; // |
//| |
//| ==> Deseja ativar o sistema manualmente? |
//| -> Será necessário configurar a função BGStatus, comentários na função. |
set $@StatusSystem,0; // 1 = Ativado |
//| |
//| ================================================================================ |
while(1)
{
sleep2 15000;
callfunc("checkafk");
}
}
- script AntiAFKBgEvent -1,{
OnPCLogOutEvent:
getmapxy(@map$,@x,@y,0);
if(@map$ != $@AFK_MAP$[@AFK_Index]) end;
set $@AFK_RID_LIST[@AFK_Index], 0;
set $@AFK_MAP$[@AFK_Index],"";
set $@AFK_X[@AFK_Index],0;
set $@AFK_Y[@AFK_Index],0;
end;
OnPCLoadMapEvent:
getmapxy(@map$,@x,@y,0);
for(set @i,0; @i <= getarraysize($@BGMapList$); set @i, @i+1)
{
if($@BGMapList$[@i] == @map$) callfunc("SystemAFK", @i);
end;
}
}
/*----------------
Função: Utilize essa função antes de teleportar o player para o BG.
getarg(0): ID da arena (definido em $@BGMapList$).
Retorno: -1 se o registro passou de 127.
------------------*/
function script SystemAFK {
for(set @i,0;@i <= 127; set @i, @i+1)
{
if($@AFK_RID_LIST[@i] || $@AFK_RID_LIST[@i] == getcharid(3)) continue;
set @AFK_Index, @i;
set $@AFK_RID_LIST[@AFK_Index], getcharid(3);
set $@AFK_MAP$[@AFK_Index], $@BGMapList$[getarg(0)];
set @bg_id,getarg(0);
return;
} return -1;
}
/*----------------
Função: Deve ser usada sempre que o BG for iniciado.
Argumento 0: ID do BG.
Argumento 1: 0 Desativado; 1 Ativado.
------------------*/
function script BGStatus {
set $@Bg_status[getarg(0)], getarg(1);
return;
}
/*----------------
Não interessa comentários
------------------*/
function script checkafk {
for(set .i,0; .i < 127; set .i,.i+1)
{
if(!$@AFK_RID_LIST[.i]) continue;
if(!attachrid($@AFK_RID_LIST[.i])) continue;
if(!$@Bg_status[@bg_id] && $@StatusSystem) continue;
getmapxy(@map$,@x,@y,0);
if($@AFK_X[.i] != @x && $@AFK_Y[.i] != @y)
{
if($@AFK_MAP$[.i] == @map$)
{
set $@AFK_X[.i],@x;
set $@AFK_Y[.i],@y;
set @AFKCount,0;
detachrid;
continue;
}
set $@AFK_RID_LIST[.i], 0;
set $@AFK_MAP$[.i],"";
set $@AFK_X[.i],0;
set $@AFK_Y[.i],0;
set @AFKCount,0;
detachrid;
continue;
}
else
{
set @AFKCount, @AFKCount+1;
// Esta parte define o tempo afk.
if(@AFKCount == $@AFK_Time_warning)
{
announce "Battleground: Você será kickado do Battleground em "+(($@AFK_Time_Kick-$@AFK_Time_warning)*15)+" segundos por estar AFK.",bc_self|bc_blue;
detachrid;
continue;
}
if(@AFKCount >= $@AFK_Time_Kick)
{
mapannounce $@AFK_MAP$[@AFK_Index],"Battleground: "+strcharinfo(0)+" foi kickado por estar AFK", bc_map|bc_blue;
set @AFKCount,0;
set $@AFK_RID_LIST[@AFK_Index], 0;
set $@AFK_MAP$[@AFK_Index],"";
set $@AFK_X[@AFK_Index],0;
set $@AFK_Y[@AFK_Index],0;
warp "SavePoint",0,0;
detachrid;
continue;
}
}
} return;
}
// Adicionar, remover, alterar de acordo aos mapas existentes na array $@BGMapList$.
prontera mapflag loadevent
//mapa2 mapflag loadevent
//mapa3 mapflag loadevent
//mapa4 mapflag loadevent
/*
$@AFK_RID_LIST[] - Array com os rids presentes no prontera do BG.
$@AFK_MAP$[] - Array com o mapa do jogador.
$@AFK_X[] - Array com a posição X do jogador.
$@AFK_Y[] - Array com a posição Y do jogador.
$@Indexer - Posição do player na Array $@AFK_RID_LIST[].
@AFkCount - Contém o tempo do player AFK. (@AFKCount*15)
$@Bg_status[] - Informa se a BG está ativa ou aguardando ser iniciada. (Boolean - 1 para ativo)
*/