1local MembersIds = {
2 [01] = 00, -- Membro 01
3 [02] = 00, -- Membro 02
4}
5
6function getPlayerGUIDByName(name)
7 local player = Player(name)
8 if player then
9 return player:getGuid()
10 end
11
12 local resultId = db.storeQuery("SELECT `id` FROM `players` WHERE `name` = " .. db.escapeString(name))
13 if resultId ~= false then
14 local guid = result.getDataInt(resultId, "id")
15 result.free(resultId)
16 return guid
17 end
18 return 0
19end
20function getMemberTime(id, guid)
21 local resultx = db.storeQuery("SELECT `player_id` FROM `player_storage` WHERE `key` = " .. _SISTEMA.TIME_STORAGE .. " AND `value` = " .. guid)
22 MembersIds[01] = 00
23 MembersIds[02] = 00
24 local i = 0
25 local players = Game.getPlayers()
26
27 if id == 01 then -- ENCONTRA OS MEMBROS DO TIME.
28 for _, targetPlayer in ipairs(players) do
29 if targetPlayer:getStorageValue(_SISTEMA.TIME_STORAGE) == guid then
30 if targetPlayer:getGuid() ~= guid then
31 if MembersIds[01] ~= targetPlayer:getGuid() and MembersIds[02] ~= targetPlayer:getGuid() then
32 i = i + 1
33 if MembersIds[i] then
34 MembersIds[i] = targetPlayer:getGuid()
35 end
36 end
37 end
38 end
39 end
40
41 if resultx then
42 repeat
43 local tid = Player(result.getDataInt(resultx, 'player_id'))
44 if tid then
45 if tid:getGuid() ~= guid and tid:getStorageValue(_SISTEMA.TIME_STORAGE) == guid then
46 if MembersIds[01] ~= tid:getGuid() and MembersIds[02] ~= tid:getGuid() then
47 i = i + 1
48 if MembersIds[i] then
49 MembersIds[i] = tid:getGuid()
50 end
51 end
52 end
53 else
54 if result.getDataInt(resultx, 'player_id') ~= guid then
55 if MembersIds[01] ~= result.getDataInt(resultx, 'player_id') and MembersIds[02] ~= result.getDataInt(resultx, 'player_id') then
56 i = i + 1
57 if MembersIds[i] then
58 MembersIds[i] = result.getDataInt(resultx, 'player_id')
59 end
60 end
61 end
62 end
63 until not result.next(resultx)
64 result.free(resultx)
65 end
66
67 if i > 00 then
68 return true
69 else
70 return false
71 end
72 end
73 return false
74end
75function onSay(player, words, param)
76 local split = param:splitTrimmed(",")
77
78
79 if split[01] == nil then
80 if player:getStorageValue(_SISTEMA.TIME_STORAGE) > 00 then
81 local _cid = player:getStorageValue(_SISTEMA.TIME_STORAGE)
82 local leader, member1, member2 = getPlayerNameByGUID(_cid), "<empty>", "<empty>"
83 if getMemberTime(01, _cid) then
84 if MembersIds[01] > 00 then
85 member1 = getPlayerNameByGUID(MembersIds[01])
86 if MembersIds[02] > 00 then
87 member2 = getPlayerNameByGUID(MembersIds[02])
88 end
89 end
90
91 player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "TIME CRIADO POR [ " ..leader.. " ]\n> " ..member1.. "\n> " ..member2)
92 return false
93 else
94 player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "TIME CRIADO POR [ " ..leader.. " ]\n> " ..member1.. "\n> " ..member2)
95 return false
96 end
97 else
98
99 return false
100 end
101
102 return false
103 end
104
105
106 if split[01] == "create" then
107 if player:getStorageValue(_SISTEMA.TIME_STORAGE) < 01 then
108 player:setStorageValue(_SISTEMA.TIME_STORAGE, player:getGuid())
109
110 return false
111 else
112
113 return false
114 end
115
116 return false
117 end
118
119
120 if split[01] == "delete" then
121 if player:getStorageValue(_SISTEMA.TIME_STORAGE) > 00 then
122 local _cid = player:getStorageValue(_SISTEMA.TIME_STORAGE)
123 if _cid == player:getGuid() then
124 if getMemberTime(01, _cid) then
125 if MembersIds[01] > 00 then
126 local memberName = getPlayerNameByGUID(MembersIds[01])
127 local memberCid = Player(memberName)
128 if memberCid then
129 memberCid:setStorageValue(_SISTEMA.TIME_STORAGE, nil)
130
131 else
132 db.asyncQuery("DELETE FROM `player_storage` WHERE `player_id` = " .. MembersIds[01] .. " AND `key` = " .. _SISTEMA.TIME_STORAGE .. " AND `value` = " .. _cid .. ";")
133 end
134
135 if MembersIds[02] > 00 then
136 local memberName = getPlayerNameByGUID(MembersIds[02])
137 local memberCid = Player(memberName)
138 if memberCid then
139 memberCid:setStorageValue(_SISTEMA.TIME_STORAGE, nil)
140
141 else
142 db.asyncQuery("DELETE FROM `player_storage` WHERE `player_id` = " .. MembersIds[02] .. " AND `key` = " .. _SISTEMA.TIME_STORAGE .. " AND `value` = " .. _cid .. ";")
143 end
144 end
145 end
146
147
148 else
149
150 end
151
152 player:setStorageValue(_SISTEMA.TIME_STORAGE, nil)
153 return false
154 else
155 player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Somente o lider desse time pode usar esse comando.")
156 return false
157 end
158 else
159
160 return false
161 end
162
163 return false
164 end
165
166 --[[ CONVIDANDO OUTROS JOGADORES PARA SEU TIME ]]--
167 if split[01] == "invite" then
168 if player:getStorageValue(_SISTEMA.TIME_STORAGE) > 00 then
169 local _cid = player:getStorageValue(_SISTEMA.TIME_STORAGE)
170 if _cid == player:getGuid() then
171 if split[02] ~= nil then
172 local tid = Player(split[02])
173 if(not tid) then
174
175 return false
176 else
177 if player:getStorageValue(_SISTEMA.INVITE_TIME_DELAY) < 01 then
178 getMemberTime(01, _cid)
179 if MembersIds[02] == 00 then
180 _tid = getPlayerGUIDByName(split[02])
181 if _tid == player:getGuid() then
182
183 return false
184 end
185 if tid:getStorageValue(_SISTEMA.TIME_STORAGE) > 00 then
186
187 return false
188 else
189 if tid:getStorageValue(_SISTEMA.INVITE_TIME_MAIN) < 01 then
190 player:setStorageValue(_SISTEMA.INVITE_TIME_DELAY, _SISTEMA.INVITE_SECONDS_TIMER)
191 tid:setStorageValue(_SISTEMA.INVITE_TIME_SECONDS, _SISTEMA.INVITE_SECONDS_TIMER)
192 tid:setStorageValue(_SISTEMA.INVITE_TIME_MAIN, _cid)
193
194
195 else
196 player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Este jogador possui um convite em aberto. Aguarde.")
197 return false
198 end
199 end
200 else
201
202 return false
203 end
204 else
205
206 return false
207 end
208 end
209 else
210
211 return false
212 end
213 else
214 player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Somente o lider desse time pode usar esse comando.")
215 return false
216 end
217 else
218
219 return false
220 end
221 end
222
223 --[[ ACEITANDO PARTICIPAR DE UM TIME ]]--
224 if split[01] == "accept" then
225 if player:getStorageValue(_SISTEMA.TIME_STORAGE) < 01 then
226 if player:getStorageValue(_SISTEMA.INVITE_TIME_MAIN) > 00 then
227 player:setStorageValue(_SISTEMA.TIME_STORAGE, player:getStorageValue(_SISTEMA.INVITE_TIME_MAIN))
228
229 local _cid = Player(getPlayerNameByGUID(player:getStorageValue(_SISTEMA.INVITE_TIME_MAIN)))
230 if _cid then
231 _cid:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "O jogador " ..player:getName().. " aceitou seu convite e agora faz parte do seu time.")
232 end
233 player:setStorageValue(_SISTEMA.INVITE_TIME_MAIN, nil)
234 player:setStorageValue(_SISTEMA.INVITE_TIME_SECONDS, nil)
235 return false
236 else
237
238 return false
239 end
240 else
241
242 return false
243 end
244 end
245
246 --[[ SAINDO DE UM TIME ]]--
247 if split[01] == "exit" then
248 if player:getStorageValue(_SISTEMA.TIME_STORAGE) > 00 then
249 if player:getStorageValue(_SISTEMA.TIME_STORAGE) ~= player:getGuid() then
250
251 player:setStorageValue(_SISTEMA.TIME_STORAGE, nil)
252 return false
253 else
254 player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Somente membros do time podem usar esse comando. Lider deve usar o comando !team delete para excluir o grupo por completo.")
255 return false
256 end
257 else
258
259 return false
260 end
261 end
262
263 --[[ REMOVENDO UM JOGADOR DO SEU TIME ]]--
264 if split[01] == "remove" then
265 if player:getStorageValue(_SISTEMA.TIME_STORAGE) > 00 then
266 local _cid = player:getStorageValue(_SISTEMA.TIME_STORAGE)
267 if _cid == player:getGuid() then
268 if split[02] ~= nil then
269 local tid = Player(split[02])
270 if(not tid) then
271 if getPlayerGUIDByName(split[02]) > 00 then
272 tid = getPlayerGUIDByName(split[02])
273 db.asyncQuery("DELETE FROM `player_storage` WHERE `player_id` = " .. tid .. " AND `key` = " .. _SISTEMA.TIME_STORAGE .. " AND `value` = " .. _cid .. ";")
274
275 return false
276 else
277
278 return false
279 end
280 else
281
282
283 tid:setStorageValue(_SISTEMA.TIME_STORAGE, nil)
284 return false
285 end
286 else
287
288 return false
289 end
290 else
291 player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Somente o lider do time pode usar esse comando.")
292 return false
293 end
294 else
295
296 return false
297 end
298 end
299
300
301 if split[01] == "rank" then
302
303 local i = 1
304 local Rank = db.storeQuery('SELECT * FROM `players` ORDER BY `' .. _SISTEMA.DB_VICTORY .. '` DESC LIMIT ' .. _SISTEMA.TOP_RANK .. ';')
305 if Rank then
306 repeat
307 local number = ""
308 if i < 10 then
309 number = "0" ..i
310 else
311 number = i
312 end
313
314 local RankName = ""
315 for X = 01, #_SISTEMA.RANKS do
316 if result.getDataInt(Rank, _SISTEMA.DB_VICTORY) >= _SISTEMA.RANKS[X].VALUE then
317 RankName = _SISTEMA.RANKS[X].NAME
318 break
319 end
320 end
321
322 i = i + 1
323 until not result.next(Rank)
324 result.free()
325 end
326
327 player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, str)
328 return false
329 end
330
331 --[[ COMANDO PARA INICIAR/ACEITAR/REJEITAR UMA BATALHA ]]--
332 if split[01] == "fight" then
333 if player:getStorageValue(_SISTEMA.TIME_STORAGE) > 00 then
334 local _cid = player:getStorageValue(_SISTEMA.TIME_STORAGE)
335 if _cid == player:getGuid() then
336 if split[02] ~= nil then
337 if split[02] == "war" then
338 if split[03] ~= nil then
339 local tid = Player(split[03])
340 if(not tid) then
341
342 return false
343 else
344 if tid:getStorageValue(_SISTEMA.INVITE_WAR_MAIN) < 01 then
345 if tid:getStorageValue(_SISTEMA.TIME_STORAGE) > 00 then
346 if tid:getStorageValue(_SISTEMA.TIME_STORAGE) == tid:getGuid() then
347 tid:setStorageValue(_SISTEMA.INVITE_WAR_SECONDS, _SISTEMA.WAR_SECONDS_TIMER)
348 tid:setStorageValue(_SISTEMA.INVITE_WAR_MAIN, _cid)
349 player:setStorageValue(_SISTEMA.INVITE_WAR_MAIN, _cid)
350
351
352 return false
353 else
354 player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "O jogador precisa ser o lider do time para receber o convite.")
355 return false
356 end
357 else
358 player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "O jogador precisa estar em um time para receber o convite.")
359 return false
360 end
361 else
362
363 return false
364 end
365 end
366 else
367
368 return false
369 end
370 elseif split[02] == "accept" then
371 if player:getStorageValue(_SISTEMA.INVITE_WAR_MAIN) > 00 then
372 local tid = Player(getPlayerNameByGUID(player:getStorageValue(_SISTEMA.INVITE_WAR_MAIN)))
373 local TotalMyTime = 00
374 local TotalAdTime = 00
375 local players = Game.getPlayers()
376
377 for _, targetPlayer in ipairs(players) do
378 if targetPlayer:getStorageValue(_SISTEMA.TIME_STORAGE) == player:getGuid() then
379 TotalMyTime = TotalMyTime + 01
380 elseif targetPlayer:getStorageValue(_SISTEMA.TIME_STORAGE) == player:getStorageValue(_SISTEMA.INVITE_WAR_MAIN) then
381 TotalAdTime = TotalAdTime + 01
382 end
383 end
384
385 if TotalMyTime == 03 then
386 if TotalAdTime == 03 then
387 local checkArea = 0
388 local from = _SISTEMA.ARENA[01]
389 local to = _SISTEMA.ARENA[02]
390 for A = from.x, to.x do
391 for B = from.y, to.y do
392 for C = from.z, to.z do
393 local tile = Tile(A, B, C)
394 local creature = tile:getTopCreature()
395 if creature and creature:isPlayer() then
396 checkArea = 1
397 break
398 end
399 end
400 end
401 end
402
403 if checkArea == 01 then
404
405
406 tid:setStorageValue(_SISTEMA.INVITE_WAR_MAIN, nil)
407 player:setStorageValue(_SISTEMA.INVITE_WAR_MAIN, nil)
408 return false
409 else
410 for _, targetPlayer in ipairs(players) do
411 if targetPlayer:getStorageValue(_SISTEMA.TIME_STORAGE) == player:getGuid() then
412 targetPlayer:teleportTo(_SISTEMA.ARENA[03])
413 targetPlayer:getPosition():sendMagicEffect(03)
414
415 targetPlayer:setStorageValue(_SISTEMA.TIME_WAR_STORAGE, 01)
416 elseif targetPlayer:getStorageValue(_SISTEMA.TIME_STORAGE) == player:getStorageValue(_SISTEMA.INVITE_WAR_MAIN) then
417 targetPlayer:teleportTo(_SISTEMA.ARENA[04])
418 targetPlayer:getPosition():sendMagicEffect(03)
419
420 targetPlayer:setStorageValue(_SISTEMA.TIME_WAR_STORAGE, 02)
421 end
422 end
423
424 Game.setStorageValue(_SISTEMA.FIGHT_PLACAR[01].GLOBAL_PLACAR, 00)
425 Game.setStorageValue(_SISTEMA.FIGHT_PLACAR[02].GLOBAL_PLACAR, 00)
426 return false
427 end
428 else
429
430
431 tid:setStorageValue(_SISTEMA.INVITE_WAR_MAIN, nil)
432 player:setStorageValue(_SISTEMA.INVITE_WAR_MAIN, nil)
433 return false
434 end
435 else
436
437
438 player:setStorageValue(_SISTEMA.INVITE_WAR_MAIN, nil)
439 tid:setStorageValue(_SISTEMA.INVITE_WAR_MAIN, nil)
440 return false
441 end
442 else
443
444 return false
445 end
446 elseif split[02] == "reject" then
447 if player:getStorageValue(_SISTEMA.INVITE_WAR_MAIN) > 00 then
448 local tid = Player(getPlayerNameByGUID(player:getStorageValue(_SISTEMA.INVITE_WAR_MAIN)))
449
450
451 tid:setStorageValue(_SISTEMA.INVITE_WAR_MAIN, nil)
452 player:setStorageValue(_SISTEMA.INVITE_WAR_MAIN, nil)
453
454 return false
455 else
456
457 return false
458 end
459 end
460 else
461
462 return false
463 end
464 else
465 player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Somente o lider do time pode usar esse comando.")
466 return false
467 end
468 else
469
470 return false
471 end
472 end
473
474 return false
475end
476