Banimento System Beta

caotic
Por caotic
em Mods, funções e outros

caotic

Afinal de contas,sou um mordomo e tanto
avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 04/03/11Posts: 1599Char no Tibia: No Have

Ola pessoal do ekstibiana.

Versões para cima de 9.x foi retirado o sistema de banimento que e muito necessario em ots.

Então resolvi desenvolver uma versão "beta" para vocês

O sistema ta bem limitadinho mais e funcional.

 

Para banir uma pessoa diga /ban(nome da pessoa,dias,comentario) depois a personagem sera banida e seu ip sera banido.

Para ver a lista de banidos fale /banidos

 

Limitações do sistema

 

 

Bem ela apresenta "limitações" como o salvamento do banimentos da database os "logs" não são excludos.

O ip da pessoa banida sempre ficara banida mesmo que o tempo do banimento da pessoa

 

 

 

Vamos a instalar o sistema.

GO!

Execute o seguinte comando na sua database:

 

CREATE TABLE "ban" (
"player" INT NOT NULL,
"ip" INT NOT NULL,
"time" INT NOT NULL
);

 

Agora vá em lib e crie um arquivo lua chamado de ban e coloque isto:

function doPlayerBan(cid, time, coment)
exhaustion.set(cid, 24546, time*3600*24*1000)
db.executeQuery("INSERT INTO `ban` VALUES (".. getPlayerGUID(cid) ..", ".. getPlayerIp(cid) ..", ".. time ..")")
setPlayerStorageValue(cid, 42622, tostring(coment))
doBroadcastMessage(""..getPlayerName(cid).." foi banido em "..time.." dia(s) por "..coment.."")
end

function getPlayerBan(cid)
return exhaustion.check(cid, 24546)
end

function getPlayerIPbyBan(cid)
local ban = db.getResult("SELECT * FROM `ban` WHERE `player` = ".. getPlayerGUID(cid) ..";")
return ban:getDataInt("ip")
end

function getBanTimeByIp(cid)
local ban = db.getResult("SELECT * FROM `ban` WHERE `ip` = ".. getPlayerIp(cid) ..";")
return ban:getDataInt("time")
end

function getPlayerBanDb(cid)
local ban = db.getResult("SELECT * FROM `ban` WHERE `player` = ".. getPlayerGUID(cid) ..";")
if  ban:getID() == -1 then
return true
end
return false
end

function getPlayerBanIpDb(cid)
local ban = db.getResult("SELECT * FROM `ban` WHERE `ip` = ".. getPlayerIp(cid) ..";")
if  ban:getID() == -1 then
return true
end
return false
end

function getPlayerTimeBan(cid)
local ban = db.getResult("SELECT * FROM `ban` WHERE `player` = ".. getPlayerGUID(cid) ..";")
return ban:getDataInt("time")
end

function getPlayerIpBan(cid)
local ban = db.getResult("SELECT * FROM `ban` WHERE `player` ORDER BY `time`")
if ban:getID() == -1 then
return false
end
while true do
local ips = ban:getDataInt("ip")
if getPlayerIp(cid) == ips then
return true
end
if not ban:next() then
return false
end
end
end

function doShowTextBans(cid)
local ban = db.getResult("SELECT * FROM `ban` WHERE `player` ORDER BY `time`")
str = "Players Banidos:\n\n"
if ban:getID() == -1 then
doShowTextDialog(cid, 1387, "Não existe nenhum player Banido")
return true
end
while true do
local name = ban:getDataInt("player")
local time = ban:getDataInt("time")
local player = getPlayerNameByGUID(name)
str = str .. player .. " - Banido por "..time.." dia(s) \n\n"
if not ban:next() then
doShowTextDialog(cid, 1397, str)
break
end
end
end

function doShowTextBansForGroupUp(cid)
local ban = db.getResult("SELECT * FROM `ban` WHERE `player` ORDER BY `time`")
str = "Players Banidos:\n\n"
if ban:getID() == -1 then
doShowTextDialog(cid, 1387, "Não existe nenhum player Banido")
return true
end
while true do
local name = ban:getDataInt("player")
local time = ban:getDataInt("time")
local ip = ban:getDataInt("ip")
local player = getPlayerNameByGUID(name)
local ip =  doConvertIntegerToIp(ip)
str = str .. player .. " - Banido por "..time.." dia(s) Ip "..ip.." \n\n"
if not ban:next() then
doShowTextDialog(cid, 1397, str)
break
end
end
end

 

Agora vá em talkactions e crie um arquivo lua chamado de ban e coloque este codigo:

 

function onSay(cid, words, param, channel)
local t = string.explode(param, ",")
if param == " " or param == "" or not param or isNumeric(param) then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Coloque o nome do player dizendo /ban(nome do player,dias de ban,por que ele foi banido)")
end
if t[2] == " " or t[2] == "" or not t[2] then
return doPlayerSendCancel(cid, "Coloque os dias de ban para o player dizendo /ban(nome do player,dias de ban,por que ele foi banido)")
end
if t[3] == " " or t[3] == "" or not t[3] then
return doPlayerSendCancel(cid, "Coloque os comentarios do player dizendo /ban(nome do player,dias de ban,por que ele foi banido)")
end
local player =  getPlayerByNameWildcard(t[1], false)
if not player then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este player "..t[1].." não existe")
end
doPlayerBan(player, t[2], t[3])
doRemoveCreature(player)
return true
end

 

Continue em talkactions e crie outra arquivo lua chamado de banidos:

 

function onSay(cid, words, param, channel)
if getPlayerGroupId(cid) >= 3 then
return doShowTextBansForGroupUp(cid)
end
doShowTextBans(cid)
return true
end

 

Coloque as seguintes tags em talkactions.xml:

 

 

 

<talkaction log="yes" words="/ban" access="3" event="script" value="ban.lua"/>
<talkaction log="yes" words="/banidos" event="script" value="banidos.lua"/>

 

 

 

Agora vá em creaturescripts e crie um arquivo lua chamado de ban e coloque isto:

 

function onLogin(cid)
if getPlayerBan(cid) then
doPlayerPopupFYI(cid, "Você esta banido")
return addEvent(doRemoveCreature, 180, cid)
end
if getPlayerIpBan(cid) then
doPlayerPopupFYI(cid, "Foi dectado um ip banido character banido")
return addEvent(doRemoveCreature, 180, cid)
end
return true
end

 

Registre o evento em login.lua colocando isto antes do ultimo RETURN:

 

 registerCreatureEvent(cid, "ban")

 

Terminado coloque esta tag em creaturescripts.xml:

 

 

 

<event type="login" name="ban" event="script" value="ban.lua"/>

 

 

manelkscouto

Lord Horkremo
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 05/09/11Posts: 32Char no Tibia: Lord Horkremo

Parabens!!Mereçeu 1 Rep+

tumblr_lp75x13GYK1qmwggxo1_400.gif

 

Jogo Tibia A 7 Anos e Ainda Nao encontrei o botao do som

 

Ajudei Da Rep+ Não Custa Nada!

Yan Oliveira

Yan18
avatar
Moderador
Moderador

INFOS

Grupo: ModeradorRegistrado: 05/06/12Posts: 2221Gênero: Masculino

Vodkart

Sumus Validus
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 21/05/10Posts: 3406Gênero: Masculino

só está banindo jogadores online?

bossisg.png

caotic

Afinal de contas,sou um mordomo e tanto
avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 04/03/11Posts: 1599Char no Tibia: No Have

só está banindo jogadores online?

 

Sim.

Ele ta bem limitadinho como eu disse.

Pretendo fazer uma versão melhor

DinoAdmin

Ex Estagiário de Scripting
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 27/07/12Posts: 757Char no Tibia: [ADM] Bhoris

AlexandreKG

Estudante de TI
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 30/10/11Posts: 1153Gênero: Masculino

Verdade,esta bem limitado.Porém importante este sistema.

 

Se puder adaptar para 8.54,ficarei grato.

Vodkart

Sumus Validus
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 21/05/10Posts: 3406Gênero: Masculino

pra que adaptar para versão 8.54? se nelas já existem o sistema de banimento...

 

OMG

bossisg.png

AlexandreKG

Estudante de TI
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 30/10/11Posts: 1153Gênero: Masculino

Mais,o sistema de 8.54,do meu nao é muito bom ...

 

E esse ai para mim é tudo que preciso.

caotic

Afinal de contas,sou um mordomo e tanto
avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 04/03/11Posts: 1599Char no Tibia: No Have

Mais,o sistema de 8.54,do meu nao é muito bom ...

 

E esse ai para mim é tudo que preciso.

 

Sei la velho.

Acho que vai funcionar 8.54.

Tenta ai.

GodalonexD

é Melhor
avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 23/03/08Posts: 205

deu esse erro ao executa a query

 

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"ban" ( "player" INT NOT NULL, "ip" INT NOT NULL, "time" INT NOT NULL )' at line 1

Ajudei? da REP+

Custa nada!

caotic

Afinal de contas,sou um mordomo e tanto
avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 04/03/11Posts: 1599Char no Tibia: No Have

deu esse erro ao executa a query

 

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"ban" ( "player" INT NOT NULL, "ip" INT NOT NULL, "time" INT NOT NULL )' at line 1

 

Tenta criar a database manualmente então

 

Chama ela de ban e coloque estas colunas:

 

player / ip / time

GodalonexD

é Melhor
avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 23/03/08Posts: 205

Fiz assim, nao sei se vai funcionar vou testar

 

CREATE TABLE IF NOT EXISTS `ban` (

`player` int(10) NOT NULL,

`ip` int(10) NOT NULL,

`time` int(10) NOT NULL

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

 

 

edit

nao consegui nao... deu erro de todo jeito no distro..

alguem ajuda ae coloca a query no mysql

Ajudei? da REP+

Custa nada!

kevin2010

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 27/05/11Posts: 48Char no Tibia: Johnmatador

mano to precisano de um desse sera que pega 8,6 ?

assinaturar.jpg

Kevin Zika

 

Eu Sou Quem Eu Sou Se Nao Gosto De Quem Eu Sou Poblema Seu _)_

japinhafah

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 24/03/13Posts: 8Char no Tibia: Japinha Knight

como adicionar ela em mysql alguem ajuda