Omega 377 Postado Agosto 29, 2013 Share Postado Agosto 29, 2013 (editado) Bom, tava testando uma coisa e lembrei que não tinha mais comando /ban para players em OTs 8.6. Então resolvi tentar fazer o meu próprio. Eis o resultado: Como funciona: Opções:Você pode usar !ban playername para banir sem registrar o motivo e por tempo indeterminado Você pode usar !ban playername,dias para banir sem registrar o motivo, mas por um número determinado de dias Você pode usar !ban playername,motivo para banir por tempo indeterminado, mas registrando um motivo Você pode usar !ban playername,dias,motivo para banir por tempo e motivo determinados Quando o jogador banido tentar entrar, ele será teletransportado para o tempo, não poderá se mexer nem falar e receberá a seguinte mensagem: 'Voce esta banido e sera kickado em 5 segundos.' --> isso se não houver motivo registrado 'Voce foi banido por -motivo- e sera kickado em 5 segundos.' --> se houver motivo registrado Independente da opção, o jogador é kickado e ocorre o descrito acima quando ele tenta se conectar nas 5 primeiras vezes. Depois ele não poderá mais se conectar ao servidor com ele personagem. Você só pode banir players online Você pode desbanir qualquer jogador com !unban playername (online ou offline) Instalando: 1 - Crie um arquivo na pasta lib com extensão .lua e adicione: function getPlayerTemplePos(cid) local town = getPlayerTown(cid) local temple = getTownTemplePosition(town) return temple or false end banStorage = 918171623 banCount = 918171624 banReason = 918171625 function doBanPlayer(cid,days,reason) if reason ~= false and reason ~= nil and isPlayer(cid) then setPlayerStorageValue(cid,banReason,reason) end if days ~= false and days ~= nil and isPlayer(cid) then local bantime = ((days * 60 * 60 * 24) + os.time(t)) setPlayerStorageValue(cid,banStorage,bantime) doRemoveCreature(cid) return true elseif isPlayer(cid) then setPlayerStorageValue(cid,banStorage,0) doRemoveCreature(cid) return true end return false end function isPlayerBanned(cid) if not isPlayer(cid) then return false elseif getPlayerStorageValue(cid,banStorage) == 0 then return true elseif getPlayerStorageValue(cid,banStorage) == -1 then return false elseif getPlayerStorageValue(cid,banStorage) >= os.time(t) then return true end return false end function doUnbanPlayer(name) if getPlayerGUIDByName(name) then pid = getPlayerGUIDByName(name) else return false end if getCreatureByName(name) then local cid = getCreatureByName(name) if isPlayer(cid) then doRemoveCreature(cid) end end if db.query("UPDATE `player_storage` SET `value`=-1 WHERE `player_id` = "..pid.." AND `key`="..banStorage..";") == true then db.query("UPDATE `player_storage` SET `value`=-1 WHERE `player_id` = "..pid.." AND `key`="..banCount..";") db.query("UPDATE `player_storage` SET `value`=-1 WHERE `player_id` = "..pid.." AND `key`="..banReason..";") return true end return false end function getPlayerBanReason(cid) if isPlayer(cid) then local reason = getPlayerStorageValue(cid,banReason) if reason == -1 then reason = "" end return reason end return false end 2 - Em seguida, vá em talkactions.xml e adicione <talkaction log="yes" access="4" words="!ban;!unban" event="script" value="ban.lua"/> Obs.: O !ban;!unban no lugar de /ban se deve ao fato de muitos servidores apresentarem o comando /unban 3 - Agora, adicione esse script na sua pasta talkactions/scripts com o nome de ban.lua function onSay(cid,words,param) if words == '!ban' then local param = string.lower(param) local param = string.explode(param,',') if not param[1] then doPlayerSendTextMessage(cid,27,'You must specify a player to ban.') return true elseif(not param[2]) then local player = getPlayerByName(param[1]) if isPlayer(player) then doBanPlayer(player,false) else doPlayerSendTextMessage(cid,27,param[1]..' is not a valid player.') end elseif param[3] then local player = getPlayerByName(param[1]) local days = tonumber(param[2]) local reason = tostring(param[3]) if days and reason then doBanPlayer(player,days,reason) doPlayerSendTextMessage(cid,27,'You have banned '..param[1]..' for '..param[2]..' days. Reason: '..param[3]..'.') else doPlayerSendTextMessage(cid,27,'Invalid parameters.') end else if type(tonumber(param[2])) == 'number' then local player = getPlayerByName(param[1]) local days = tonumber(param[2]) if days ~= false and days ~= nil then doBanPlayer(player,days) doPlayerSendTextMessage(cid,27,'You have banned '..param[1]..' for '..param[2]..' days.') else doPlayerSendTextMessage(cid,27,'Invalid parameter number 2: '..param[2]..'.') end else local reason = param[2] local player = getPlayerByName(param[1]) doBanPlayer(player,false,reason) doPlayerSendTextMessage(cid,27,'You have banned '..param[1]..'. Reason: '..param[2]..'.') end end elseif words == '!unban' then if doUnbanPlayer(param) then doPlayerSendTextMessage(cid,27,'Player '..param..' foi desbanido.') else doPlayerSendTextMessage(cid,27,param..' is\'n a valid player.') end end return true end 4 - Agora adicione essa tag em creaturescripts.xml <event type="login" name="Ban" event="script" value="banned.lua"/> 5 - Finalmente, esse código em um arquivo dentro de creaturescripts/scripts com o nome de banned.lua function onLogin(cid) registerCreatureEvent(cid, "Banned") if isPlayerBanned(cid) and getPlayerStorageValue(cid,banCount) >= 3 then return false end if isPlayerBanned(cid) then local reason = getPlayerBanReason(cid) if reason ~= "" then setPlayerStorageValue(cid,banCount,getPlayerStorageValue(cid,banCount)+1) doTeleportThing(cid,getPlayerTemplePos(cid)) addEvent(doKickPlayerIf,5000,cid) doPlayerSendTextMessage(cid,MESSAGE_STATUS_WARNING,'Voce foi banido por '..reason..' e sera kickado em 5 segundos.') mayNotMove(cid,true) else setPlayerStorageValue(cid,banCount,getPlayerStorageValue(cid,banCount)+1) doTeleportThing(cid,getPlayerTemplePos(cid)) addEvent(doKickPlayerIf,5000,cid) mayNotMove(cid,true) doPlayerSendTextMessage(cid,MESSAGE_STATUS_WARNING,'Voce esta banido e sera kickado em 5 segundos.') end doMutePlayer(cid, 5) end return true end Fiz vários testes aqui e me parece que está tudo certo, mas recomendo testar com um jogador de teste antes em usar em jogadores reais. Por mais óbvio que pareça, espero comentários/dúvidas ou sugestões sobre o código. Editado Agosto 29, 2013 por omega blueheaven Link para o comentário https://xtibia.com/forum/topic/220198-comando-ban/ Compartilhar em outros sites More sharing options...
luanluciano93 38 Postado Agosto 29, 2013 Share Postado Agosto 29, 2013 Olá amigo, estou no serviço, quando chegar em casa testarei, mas tenho uma dúvida, no site aparecerá tudo certinho? E se eu quiser alterar o motivo do banimento e também colocar uma descrição? Obrigado! Link para o comentário https://xtibia.com/forum/topic/220198-comando-ban/#findComment-1555532 Compartilhar em outros sites More sharing options...
Omega 377 Postado Agosto 29, 2013 Autor Share Postado Agosto 29, 2013 Olá amigo, estou no serviço, quando chegar em casa testarei, mas tenho uma dúvida, no site aparecerá tudo certinho? E se eu quiser alterar o motivo do banimento e também colocar uma descrição? Obrigado! Acabei de atualizar o script para incluir o motivo. Mas não vai aparecer no site normalmente, a menos que você altere para puxar os campos que são usados no script. Link para o comentário https://xtibia.com/forum/topic/220198-comando-ban/#findComment-1555632 Compartilhar em outros sites More sharing options...
luanluciano93 38 Postado Agosto 29, 2013 Share Postado Agosto 29, 2013 Eu não sei fazer isso, você não poderia implantar para o padrão? Link para o comentário https://xtibia.com/forum/topic/220198-comando-ban/#findComment-1555643 Compartilhar em outros sites More sharing options...
Omega 377 Postado Agosto 29, 2013 Autor Share Postado Agosto 29, 2013 Na verdade, não seria difícil de fazer se eu conseguisse entender aquela tabela de bans que tem no banco de dados. Mas não é o caso =/ Link para o comentário https://xtibia.com/forum/topic/220198-comando-ban/#findComment-1555656 Compartilhar em outros sites More sharing options...
SkyDarkyes 104 Postado Agosto 31, 2013 Share Postado Agosto 31, 2013 Muito bom man,xD Link para o comentário https://xtibia.com/forum/topic/220198-comando-ban/#findComment-1556698 Compartilhar em outros sites More sharing options...
Posts Recomendados