local MembersIds = { [01] = 00, -- Membro 01 [02] = 00, -- Membro 02 } function getPlayerGUIDByName(name) local player = Player(name) if player then return player:getGuid() end local resultId = db.storeQuery("SELECT `id` FROM `players` WHERE `name` = " .. db.escapeString(name)) if resultId ~= false then local guid = result.getDataInt(resultId, "id") result.free(resultId) return guid end return 0 end function getMemberTime(id, guid) local resultx = db.storeQuery("SELECT `player_id` FROM `player_storage` WHERE `key` = " .. _SISTEMA.TIME_STORAGE .. " AND `value` = " .. guid) MembersIds[01] = 00 MembersIds[02] = 00 local i = 0 local players = Game.getPlayers() if id == 01 then -- ENCONTRA OS MEMBROS DO TIME. for _, targetPlayer in ipairs(players) do if targetPlayer:getStorageValue(_SISTEMA.TIME_STORAGE) == guid then if targetPlayer:getGuid() ~= guid then if MembersIds[01] ~= targetPlayer:getGuid() and MembersIds[02] ~= targetPlayer:getGuid() then i = i + 1 if MembersIds[i] then MembersIds[i] = targetPlayer:getGuid() end end end end end if resultx then repeat local tid = Player(result.getDataInt(resultx, 'player_id')) if tid then if tid:getGuid() ~= guid and tid:getStorageValue(_SISTEMA.TIME_STORAGE) == guid then if MembersIds[01] ~= tid:getGuid() and MembersIds[02] ~= tid:getGuid() then i = i + 1 if MembersIds[i] then MembersIds[i] = tid:getGuid() end end end else if result.getDataInt(resultx, 'player_id') ~= guid then if MembersIds[01] ~= result.getDataInt(resultx, 'player_id') and MembersIds[02] ~= result.getDataInt(resultx, 'player_id') then i = i + 1 if MembersIds[i] then MembersIds[i] = result.getDataInt(resultx, 'player_id') end end end end until not result.next(resultx) result.free(resultx) end if i > 00 then return true else return false end end return false end function onSay(player, words, param) local split = param:splitTrimmed(",") --[[ CHECANDO OS MEMBROS DO SEU PRÓPRIO TIME ]]-- if split[01] == nil then if player:getStorageValue(_SISTEMA.TIME_STORAGE) > 00 then local _cid = player:getStorageValue(_SISTEMA.TIME_STORAGE) local leader, member1, member2 = getPlayerNameByGUID(_cid), "", "" if getMemberTime(01, _cid) then if MembersIds[01] > 00 then member1 = getPlayerNameByGUID(MembersIds[01]) if MembersIds[02] > 00 then member2 = getPlayerNameByGUID(MembersIds[02]) end end player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "TIME CRIADO POR [ " ..leader.. " ]\n> " ..member1.. "\n> " ..member2) return false else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "TIME CRIADO POR [ " ..leader.. " ]\n> " ..member1.. "\n> " ..member2) return false end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você não participa de nenhum time. Crie seu próprio time usando o comando !team create .") return false end return false end --[[ CRIANDO SEU PRÓPRIO TIME ]]-- if split[01] == "create" then if player:getStorageValue(_SISTEMA.TIME_STORAGE) < 01 then player:setStorageValue(_SISTEMA.TIME_STORAGE, player:getGuid()) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Você acaba de criar seu próprio time!\nConvide até 02 membros usando o comando !team invite nickname .") return false else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Você não pode criar um time enquanto já participa de um.") return false end return false end --[[ DELETANDO SEU PRÓPRIO TIME ]]-- if split[01] == "delete" then if player:getStorageValue(_SISTEMA.TIME_STORAGE) > 00 then local _cid = player:getStorageValue(_SISTEMA.TIME_STORAGE) if _cid == player:getGuid() then if getMemberTime(01, _cid) then if MembersIds[01] > 00 then local memberName = getPlayerNameByGUID(MembersIds[01]) local memberCid = Player(memberName) if memberCid then memberCid:setStorageValue(_SISTEMA.TIME_STORAGE, nil) memberCid:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "O lider desfez esse time. Você foi removido.") else db.asyncQuery("DELETE FROM `player_storage` WHERE `player_id` = " .. MembersIds[01] .. " AND `key` = " .. _SISTEMA.TIME_STORAGE .. " AND `value` = " .. _cid .. ";") end if MembersIds[02] > 00 then local memberName = getPlayerNameByGUID(MembersIds[02]) local memberCid = Player(memberName) if memberCid then memberCid:setStorageValue(_SISTEMA.TIME_STORAGE, nil) memberCid:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "O lider desse desfez esse time. Você foi removido.") else db.asyncQuery("DELETE FROM `player_storage` WHERE `player_id` = " .. MembersIds[02] .. " AND `key` = " .. _SISTEMA.TIME_STORAGE .. " AND `value` = " .. _cid .. ";") end end end player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Os jogadores foram removidos da equipe. Você deletou seu time com sucesso.") else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Você deletou seu time com sucesso.") end player:setStorageValue(_SISTEMA.TIME_STORAGE, nil) return false else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Somente o lider desse time pode usar esse comando.") return false end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Você não tem permissão para usar esse comando.") return false end return false end --[[ CONVIDANDO OUTROS JOGADORES PARA SEU TIME ]]-- if split[01] == "invite" then if player:getStorageValue(_SISTEMA.TIME_STORAGE) > 00 then local _cid = player:getStorageValue(_SISTEMA.TIME_STORAGE) if _cid == player:getGuid() then if split[02] ~= nil then local tid = Player(split[02]) if(not tid) then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Jogador não encontrado ou offline.") return false else if player:getStorageValue(_SISTEMA.INVITE_TIME_DELAY) < 01 then getMemberTime(01, _cid) if MembersIds[02] == 00 then _tid = getPlayerGUIDByName(split[02]) if _tid == player:getGuid() then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Você não pode enviar um convite para si mesmo.") return false end if tid:getStorageValue(_SISTEMA.TIME_STORAGE) > 00 then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "O jogador alvo já está em um time.") return false else if tid:getStorageValue(_SISTEMA.INVITE_TIME_MAIN) < 01 then player:setStorageValue(_SISTEMA.INVITE_TIME_DELAY, _SISTEMA.INVITE_SECONDS_TIMER) tid:setStorageValue(_SISTEMA.INVITE_TIME_SECONDS, _SISTEMA.INVITE_SECONDS_TIMER) tid:setStorageValue(_SISTEMA.INVITE_TIME_MAIN, _cid) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Você enviou um convite para " ..tid:getName().. ". Aguarde sua resposta.") else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Este jogador possui um convite em aberto. Aguarde.") return false end end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "O limite é de 03 jogadores por time.") return false end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Aguarde um retorno do convite que você já enviou.") return false end end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Falta parâmetros. Digite o nome do jogador para enviar o convite.") return false end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Somente o lider desse time pode usar esse comando.") return false end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Você não tem permissão para usar esse comando.") return false end end --[[ ACEITANDO PARTICIPAR DE UM TIME ]]-- if split[01] == "accept" then if player:getStorageValue(_SISTEMA.TIME_STORAGE) < 01 then if player:getStorageValue(_SISTEMA.INVITE_TIME_MAIN) > 00 then player:setStorageValue(_SISTEMA.TIME_STORAGE, player:getStorageValue(_SISTEMA.INVITE_TIME_MAIN)) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Você aceitou o convite e agora faz parte do time do jogador " ..getPlayerNameByGUID(player:getStorageValue(_SISTEMA.INVITE_TIME_MAIN)).. ".") local _cid = Player(getPlayerNameByGUID(player:getStorageValue(_SISTEMA.INVITE_TIME_MAIN))) if _cid then _cid:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "O jogador " ..player:getName().. " aceitou seu convite e agora faz parte do seu time.") end player:setStorageValue(_SISTEMA.INVITE_TIME_MAIN, nil) player:setStorageValue(_SISTEMA.INVITE_TIME_SECONDS, nil) return false else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Você não tem permissão para usar esse comando no momento.") return false end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Você já participa de um time.") return false end end --[[ SAINDO DE UM TIME ]]-- if split[01] == "exit" then if player:getStorageValue(_SISTEMA.TIME_STORAGE) > 00 then if player:getStorageValue(_SISTEMA.TIME_STORAGE) ~= player:getGuid() then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Você não pertence mais ao time do jogador " ..getPlayerNameByGUID(player:getStorageValue(_SISTEMA.TIME_STORAGE)).. ".") player:setStorageValue(_SISTEMA.TIME_STORAGE, nil) return false else 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.") return false end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Você precisa estar participando de um time para poder usar esse comando.") return false end end --[[ REMOVENDO UM JOGADOR DO SEU TIME ]]-- if split[01] == "remove" then if player:getStorageValue(_SISTEMA.TIME_STORAGE) > 00 then local _cid = player:getStorageValue(_SISTEMA.TIME_STORAGE) if _cid == player:getGuid() then if split[02] ~= nil then local tid = Player(split[02]) if(not tid) then if getPlayerGUIDByName(split[02]) > 00 then tid = getPlayerGUIDByName(split[02]) db.asyncQuery("DELETE FROM `player_storage` WHERE `player_id` = " .. tid .. " AND `key` = " .. _SISTEMA.TIME_STORAGE .. " AND `value` = " .. _cid .. ";") player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Você removeu o jogador " ..split[02].. " do seu time.") return false else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Jogador com o nome '" ..split[02].. "' não foi encontrado.") return false end else tid:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Você foi expulso do time pelo lider " ..getPlayerNameByGUID(player:getStorageValue(_SISTEMA.TIME_STORAGE)).. ".") player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Você removeu o jogador " ..split[02].. " do seu time.") tid:setStorageValue(_SISTEMA.TIME_STORAGE, nil) return false end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Falta parâmetros. Digite o nome do jogador para remover do seu time.") return false end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Somente o lider do time pode usar esse comando.") return false end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Você não tem permissão para usar esse comando.") return false end end --[[ VERIFICA O RANK POR VITÓRIA DE TODO O SERVIDOR ]]-- if split[01] == "rank" then local str = "[ RANK POR VITÓRIAS ]\n\n" local i = 1 local Rank = db.storeQuery('SELECT * FROM `players` ORDER BY `' .. _SISTEMA.DB_VICTORY .. '` DESC LIMIT ' .. _SISTEMA.TOP_RANK .. ';') if Rank then repeat local number = "" if i < 10 then number = "0" ..i else number = i end local RankName = "" for X = 01, #_SISTEMA.RANKS do if result.getDataInt(Rank, _SISTEMA.DB_VICTORY) >= _SISTEMA.RANKS[X].VALUE then RankName = _SISTEMA.RANKS[X].NAME break end end str = str.. "[" ..number.. "] - " ..result.getDataString(Rank, "name").. " (" ..RankName.. " | " ..result.getDataInt(Rank, _SISTEMA.DB_VICTORY).. " vitórias)\n" i = i + 1 until not result.next(Rank) result.free() end player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, str) return false end --[[ COMANDO PARA INICIAR/ACEITAR/REJEITAR UMA BATALHA ]]-- if split[01] == "fight" then if player:getStorageValue(_SISTEMA.TIME_STORAGE) > 00 then local _cid = player:getStorageValue(_SISTEMA.TIME_STORAGE) if _cid == player:getGuid() then if split[02] ~= nil then if split[02] == "war" then if split[03] ~= nil then local tid = Player(split[03]) if(not tid) then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Jogador não encontrado ou offline.") return false else if tid:getStorageValue(_SISTEMA.INVITE_WAR_MAIN) < 01 then if tid:getStorageValue(_SISTEMA.TIME_STORAGE) > 00 then if tid:getStorageValue(_SISTEMA.TIME_STORAGE) == tid:getGuid() then tid:setStorageValue(_SISTEMA.INVITE_WAR_SECONDS, _SISTEMA.WAR_SECONDS_TIMER) tid:setStorageValue(_SISTEMA.INVITE_WAR_MAIN, _cid) player:setStorageValue(_SISTEMA.INVITE_WAR_MAIN, _cid) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você enviou um convite para batalhar com o time do jogador " ..tid:getName().. ". Aguarde sua resposta.") return false else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "O jogador precisa ser o lider do time para receber o convite.") return false end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "O jogador precisa estar em um time para receber o convite.") return false end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "O time adversário já possui um convite para uma batalha. Aguarde sua resposta.") return false end end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Falta parâmetros. Digite o nome do jogador lider do time que deseja enfrentar.") return false end elseif split[02] == "accept" then if player:getStorageValue(_SISTEMA.INVITE_WAR_MAIN) > 00 then local tid = Player(getPlayerNameByGUID(player:getStorageValue(_SISTEMA.INVITE_WAR_MAIN))) local TotalMyTime = 00 local TotalAdTime = 00 local players = Game.getPlayers() for _, targetPlayer in ipairs(players) do if targetPlayer:getStorageValue(_SISTEMA.TIME_STORAGE) == player:getGuid() then TotalMyTime = TotalMyTime + 01 elseif targetPlayer:getStorageValue(_SISTEMA.TIME_STORAGE) == player:getStorageValue(_SISTEMA.INVITE_WAR_MAIN) then TotalAdTime = TotalAdTime + 01 end end if TotalMyTime == 03 then if TotalAdTime == 03 then local checkArea = 0 local from = _SISTEMA.ARENA[01] local to = _SISTEMA.ARENA[02] for A = from.x, to.x do for B = from.y, to.y do for C = from.z, to.z do local tile = Tile(A, B, C) local creature = tile:getTopCreature() if creature and creature:isPlayer() then checkArea = 1 break end end end end if checkArea == 01 then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "A arena de batalha está ocupada. Convite para a batalha cancelado.") tid:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "A arena de batalha está ocupada. Convite para a batalha cancelado.") tid:setStorageValue(_SISTEMA.INVITE_WAR_MAIN, nil) player:setStorageValue(_SISTEMA.INVITE_WAR_MAIN, nil) return false else for _, targetPlayer in ipairs(players) do if targetPlayer:getStorageValue(_SISTEMA.TIME_STORAGE) == player:getGuid() then targetPlayer:teleportTo(_SISTEMA.ARENA[03]) targetPlayer:getPosition():sendMagicEffect(03) targetPlayer:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Elimine o time adversário para subir de Rank") targetPlayer:setStorageValue(_SISTEMA.TIME_WAR_STORAGE, 01) elseif targetPlayer:getStorageValue(_SISTEMA.TIME_STORAGE) == player:getStorageValue(_SISTEMA.INVITE_WAR_MAIN) then targetPlayer:teleportTo(_SISTEMA.ARENA[04]) targetPlayer:getPosition():sendMagicEffect(03) targetPlayer:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Elimine o time adversário para subir de Rank") targetPlayer:setStorageValue(_SISTEMA.TIME_WAR_STORAGE, 02) end end Game.setStorageValue(_SISTEMA.FIGHT_PLACAR[01].GLOBAL_PLACAR, 00) Game.setStorageValue(_SISTEMA.FIGHT_PLACAR[02].GLOBAL_PLACAR, 00) return false end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "O time adversário não está totalmente online. Convite para a batalha foi cancelado.") tid:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "O seu time não está totalmente online. Convite para a batalha foi cancelado.") tid:setStorageValue(_SISTEMA.INVITE_WAR_MAIN, nil) player:setStorageValue(_SISTEMA.INVITE_WAR_MAIN, nil) return false end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "O seu time não está totalmente online. Convite para a batalha foi cancelado.") tid:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "O time adversário não está totalmente online. Convite para a batalha foi cancelado.") player:setStorageValue(_SISTEMA.INVITE_WAR_MAIN, nil) tid:setStorageValue(_SISTEMA.INVITE_WAR_MAIN, nil) return false end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Você não tem permissão para usar esse comando.") return false end elseif split[02] == "reject" then if player:getStorageValue(_SISTEMA.INVITE_WAR_MAIN) > 00 then local tid = Player(getPlayerNameByGUID(player:getStorageValue(_SISTEMA.INVITE_WAR_MAIN))) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "O time adversário rejeitou o convite para a batalha.") tid:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Você rejeitou o convite para a batalha.") tid:setStorageValue(_SISTEMA.INVITE_WAR_MAIN, nil) player:setStorageValue(_SISTEMA.INVITE_WAR_MAIN, nil) return false else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Você não tem permissão para usar esse comando.") return false end end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Falta parâmetros. Digite ' war nickname ' para desagiar o time adversário.") return false end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Somente o lider do time pode usar esse comando.") return false end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_RED, "Você não tem permissão para usar esse comando.") return false end end return false end