Ir para conteúdo
  • Cadastre-se

[Resolvido] /ban não funciona


Posts Recomendados

Pessoal o (/ban) do meu servidor não funciona.

eu coloco (/ban player,20) o player simplismente toma kick e volta :S

vou postar o script abaixo

pf me jaudem

function onSay(cid, words, param, channel)


local t = param:explode(",")

local name, days = t[1], tonumber(t[2])

local player = getPlayerByName(t[1])

if name then

if days then

local acc = getAccountIdByName(name)

if acc ~= 0 then

local tempo = days * 24 * 3600

doAddAccountBanishment(acc, target, os.time() + tempo, 5, 2, 'Desrespeito.', 0)

doRemoveCreature(player)

else

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este player não existe.")

end

else

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode adicionar essa quantidade de dia(s) de dias de banimento.")

end

else

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "esse player nao existe.")

end

return TRUE

end

Editado por persin47 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

bom o mais facil seria vo da ban num player pelo o rule violation la da pra da ban e bloqueia o ip tbm , é bem simples e facil.

Link para o post
Compartilhar em outros sites

bom o mais facil seria vo da ban num player pelo o rule violation la da pra da ban e bloqueia o ip tbm , é bem simples e facil.

se o ot dele for 9.6+ não tem... só por script.

16/11/2014

23/11/2014

 

RIP AnneMotta 21/01/2012 - 15/01/2014

Liga das lendas: DIAMOND É A META

6qpqBbJ.png

Link para o post
Compartilhar em outros sites

coloquei isso em data/talkactions

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



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

local TYPE_ACCESS = {

[1] = { "Player" },

[2] = { "Player" },

[3] = { "Account", "Player" },

[4] = { "Account", "Player" },

[5] = { "Account", "Player", "IP" }

}


function onSay(cid, words, param, channel)

unregisterCreatureEventType(cid, "channelrequest")

unregisterCreatureEventType(cid, "textedit")


doPlayerSendChannels(cid, TYPE_ACCESS[getPlayerAccess(cid)])

registerCreatureEvent(cid, "Ban_Type")

return true

end
unban.lua

function onSay(cid, words, param, channel)

if(param == '') then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.")

return true

end


local account, tmp = getAccountIdByName(param), false

if(account == 0) then

account = getAccountIdByAccount(param)

if(account == 0) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player or account '" .. param .. "' does not exists.")

return true

end


tmp = true

end


local ban = getBanData(account, BAN_ACCOUNT)

if(ban and doRemoveAccountBanishment(account)) then

local name = param

if(tmp) then

name = account

end


doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, name .. " has been " .. (ban.expires == -1 and "undeleted" or "unbanned") .. ".")

end


if(tmp) then

return true

end


tmp = getIpByName(param)

if(isIpBanished(tmp) and doRemoveIpBanishment(tmp)) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "IP Banishment on " .. doConvertIntegerToIp(ip) .. " has been lifted.")

end


local guid = getPlayerGUIDByName(param, true)

if(guid == nil) then

return true

end


ban = getBanData(guid, BAN_PLAYER, PLAYERBAN_LOCK)

if(ban and doRemovePlayerBanishment(guid, PLAYERBAN_LOCK)) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Namelock from " .. param .. " has been removed.")

end


ban = getBanData(guid, BAN_PLAYER, PLAYERBAN_BANISHMENT)

if(ban and doRemovePlayerBanishment(guid, PLAYERBAN_BANISHMENT)) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, param .. " has been " .. (ban.expires == -1 and "undeleted" or "unbanned") .. ".")

end


return true

end

COLOQUE ISSO EM data\creaturescripts.

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

<event type="channelrequest" name="Ban_Action" event="script" value="ban/action.lua"/>

<event type="textedit" name="Ban_Finish" event="script" value="ban/finish.lua"/>
action.lua

local ACCESS = {

[1] = { 8 },

[2] = { 1, 2, 4, 5, 7, 9 },

[3] = { 1, 2, 3, 4, 5, 6, 7, 9 },

[4] = { 1, 2, 3, 4, 5, 6, 7, 9 },

[5] = { 1, 2, 3, 4, 5, 6, 7, 9 }

}


function onChannelRequest(cid, channel, custom)

unregisterCreatureEvent(cid, "Ban_Action")

if(not custom or type(channel) ~= 'number') then

doPlayerSendCancel(cid, "Invalid action.")

return false

end


if(not isInArray(ACCESS[getPlayerAccess(cid)], channel)) then

doPlayerSendCancel(cid, "You cannot do this action.")

return false

end


local output = "Name:\n\nComment:\n"

if(isInArray({1, 5}, channel)) then

output = "Name:\n\n(Optional) Length:\n\nComment:\n"

end


doShowTextDialog(cid, 2599, output, true, 1024)

doCreatureSetStorage(cid, "banConfig", table.serialize({

type = (channel > 4 and 2 or 1),

subType = channel

}))


registerCreatureEvent(cid, "Ban_Finish")

return false

end
finish.lua

local config = {

banLength = getConfigValue('banLength'),

finalBanLength = getConfigValue('finalBanLength'),

ipBanLength = getConfigValue('ipBanLength'),

notationsToBan = getConfigValue('notationsToBan'),

warningsToFinalBan = getConfigValue('warningsToFinalBan'),

warningsToDeletion = getConfigValue('warningsToDeletion')

}


function onTextEdit(cid, item, text)

unregisterCreatureEvent(cid, "Ban_Finish")

if(item.itemid ~= 2599) then

return true

end


local data = table.unserialize(getCreatureStorage(cid, "banConfig"))

if(not data.type) then

return true

end


if(text:len() == 0) then

return false

end


text = text:explode("\n")

if(not data.subType or isInArray({1, 5}, data.subType)) then

if(text[1] ~= "Name:" or text[3] ~= "(Optional) Length:" or text[5] ~= "Comment:") then

doPlayerSendCancel(cid, "Invalid format.")

return false

end


local size = table.maxn(text)

if(size > 6) then

data.comment = ""

for i = 6, size do

data.comment = data.comment .. text[i] .. "\n"

end

else

data.comment = text[6]

end


if(text[4]:len() > 0) then

data.length = loadstring("return " .. text[4])()

end

elseif(text[1] ~= "Name:" or text[3] ~= "Comment:") then

doPlayerSendCancel(cid, "Invalid format.")

return false

else

data.comment = text[4]

end


data.name = text[2]

if(data.type == 1) then

errors(false)

local player = getPlayerGUIDByName(data.name, true)


errors(true)

if(not player) then

doPlayerSendCancel(cid, "Player not found.")

return false

end


local account = getAccountIdByName(data.name)

if(account == 0 or getAccountFlagValue(cid, PLAYERFLAG_CANNOTBEBANNED)) then

doPlayerSendCancel(cid, "You cannot take action on this player.")

return false

end


local warnings, warning = getAccountWarnings(account), 1

if(data.subType == 1) then

if(not tonumber(data.length)) then

data.length = os.time() + config.banLength

if((warnings + 1) >= config.warningsToDeletion) then

data.length = -1

elseif((warnings + 1) >= config.warningsToFinalBan) then

data.length = os.time() + config.finalBanLength

end

else

data.length = os.time() + data.length

end


doAddAccountBanishment(account, player, data.length, data.comment, getPlayerGUID(cid))

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getPlayerNameByGUID(player) .. " (warnings: " .. (warnings + 1) .. ") has been banned.")

elseif(data.subType == 2) then

doAddAccountBanishment(account, player, config.finalBanLength, data.comment, getPlayerGUID(cid))

if(warnings < config.warningsToFinalBan) then

warning = config.warningsToFinalBan - warnings

end


doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getPlayerNameByGUID(player) .. " (warnings: " .. warning .. ") has been banned.")

elseif(data.subType == 3) then

doAddAccountBanishment(account, player, -1, data.comment, getPlayerGUID(cid))

if(warnings < config.warningsToDeletion) then

warning = config.warningsToDeletion - warnings

end


doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getPlayerNameByGUID(player) .. " (warnings: " .. warning .. ") has been deleted.")

elseif(data.subType == 4) then

local notations = getNotationsCount(account) + 1

if(notations >= config.notationsToBan) then

data.length = os.time() + config.banLength

if((warnings + 1) >= config.warningsToDeletion) then

data.length = -1

elseif((warnings + 1) >= config.warningsToFinalBan) then

data.length = os.time() + config.finalBanLength

end


doAddAccountBanishment(account, player, data.length, data.comment, getPlayerGUID(cid))

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getPlayerNameByGUID(player) .. " (warnings: " .. (warnings + 1) .. ") has been banned reaching notations limit.")

else

doAddNotation(account, player, data.comment, getPlayerGUID(cid))

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getPlayerNameByGUID(player) .. " (account notations: " .. notations .. ") has been noted.")

warning = 0

end

end


if(warning > 0) then

doAddAccountWarnings(account, warning)

doRemoveNotations(account)


local pid = getPlayerByGUID(player)

if(pid) then

doPlayerSendTextMessage(pid, MESSAGE_STATUS_WARNING, "You have been banned.")

doSendMagicEffect(getThingPosition(pid), CONST_ME_MAGIC_GREEN)

addEvent(valid(doRemoveCreature), 1000, pid, true)

end

end

elseif(data.type == 2) then

errors(false)

local player = getPlayerGUIDByName(data.name, true)


errors(true)

if(not player) then

doPlayerSendCancel(cid, "Player not found.")

return false

end


local account = getAccountIdByName(data.name)

if(account == 0 or getAccountFlagValue(account, PLAYERFLAG_CANNOTBEBANNED)) then

doPlayerSendCancel(cid, "You cannot take action on this player.")

return false

end


data.subType = data.subType - 4

if(data.subType == 1) then

if(not tonumber(data.length)) then

local warnings = getAccountWarnings(account) + 1

data.length = os.time() + config.banLength

if(warnings >= config.warningsToDeletion) then

data.length = -1

elseif(warnings >= config.warningsToFinalBan) then

data.length = os.time() + config.finalBanLength

end

else

data.length = os.time() + data.length

end


doAddPlayerBanishment(data.name, 3, data.length, data.comment, getPlayerGUID(cid))

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getPlayerNameByGUID(player) .. " has been banned.")


local pid = getPlayerByGUID(player)

if(pid) then

doPlayerSendTextMessage(pid, MESSAGE_STATUS_WARNING, "You have been banned.")

doSendMagicEffect(getThingPosition(pid), CONST_ME_MAGIC_GREEN)

addEvent(valid(doRemoveCreature), 1000, pid, true)

end

elseif(data.subType == 2) then

doAddPlayerBanishment(data.name, 3, -1, data.comment, getPlayerGUID(cid))

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getPlayerNameByGUID(player) .. " has been deleted.")

elseif(data.subType == 3) then

local warnings, notations = getAccountWarnings(account) + 1, getNotationsCount(account, player) + 1

if(notations >= config.notationsToBan) then

data.length = os.time() + config.banLength

if(warnings >= config.warningsToDeletion) then

data.length = -1

elseif(warnings >= config.warningsToFinalBan) then

data.length = os.time() + config.finalBanLength

end


doAddPlayerBanishment(account, 3, data.length, data.comment, getPlayerGUID(cid))

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getPlayerNameByGUID(player) .. " has been banned reaching notations limit.")


local pid = getPlayerByGUID(player)

if(pid) then

doPlayerSendTextMessage(pid, MESSAGE_STATUS_WARNING, "You have been banned.")

doSendMagicEffect(getThingPosition(pid), CONST_ME_MAGIC_GREEN)

addEvent(valid(doRemoveCreature), 1000, pid, true)

end

else

doAddNotation(account, player, data.comment, getPlayerGUID(cid))

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getPlayerNameByGUID(player) .. " (notations: " .. notations .. ") has been noted.")

end

elseif(data.subType == 4) then

doAddPlayerBanishment(data.name, 1, -1, data.comment, getPlayerGUID(cid))

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getPlayerNameByGUID(player) .. " has been reported.")

elseif(data.subType == 5) then

doAddPlayerBanishment(data.name, 2, -1, data.comment, getPlayerGUID(cid))

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getPlayerNameByGUID(player) .. " has been namelocked.")


local pid = getPlayerByGUID(player)

if(pid) then

doPlayerSendTextMessage(pid, MESSAGE_STATUS_WARNING, "You have been banned.")

doSendMagicEffect(getThingPosition(pid), CONST_ME_MAGIC_GREEN)

addEvent(valid(doRemoveCreature), 1000, pid, true)

end

end

elseif(data.type == 3) then

local ip = getIpByName(data.name)

if(not ip) then

doPlayerSendCancel(cid, "Player not found.")

return false

end


local account = getAccountIdByName(data.name)

if(account == 0 or getAccountFlagValue(account, PLAYERFLAG_CANNOTBEBANNED)) then

doPlayerSendCancel(cid, "You cannot take action on this player.")

return false

end


if(not tonumber(data.length)) then

data.length = config.ipBanLength

end


doAddIpBanishment(ip, 4294967295, os.time() + data.length, data.comment, getPlayerGUID(cid))

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getPlayerNameByGUID(player) .. " has been banned on IP: " .. doConvertIntegerToIp(ip) .. ".")


local pid = getPlayerByGUID(player)

if(pid) then

doPlayerSendTextMessage(pid, MESSAGE_STATUS_WARNING, "You have been banned.")

doSendMagicEffect(getThingPosition(pid), CONST_ME_MAGIC_GREEN)

addEvent(valid(doRemoveCreature), 1000, pid, true)

end

end


return false

end
type.lua

local TYPES, ACCESS = {

{

event = "Ban_Action",

actions = {

[1] = "Banishment",

[2] = "Banishment + Final Warning",

[3] = "Deletion",

[4] = "Notation"

}

},

{

event = "Ban_Action",

actions = {

[5] = "Banishment",

[6] = "Deletion",

[7] = "Notation",

[8] = "Report",

[9] = "Lock"

}

},

{

event = "Ban_Finish"

}

},

{

type = {

[1] = { 1 },

[2] = { 1 },

[3] = { 1, 2 },

[4] = { 1, 2 },

[5] = { 1, 2, 3 }

},

action = {

[1] = { 8 },

[2] = { 8 },

[3] = { 1, 4, 5, 7, 9 },

[4] = { 1, 2, 4, 5, 7, 9 },

[5] = { 1, 2, 3, 4, 5, 6, 7, 9 },

}

}


function onChannelRequest(cid, channel, custom)

unregisterCreatureEvent(cid, "Ban_Type")

if(not custom or type(channel) ~= 'number') then

doPlayerSendCancel(cid, "Invalid action.")

return false

end


local type = TYPES[channel]

if(not type) then

doPlayerSendCancel(cid, "Invalid action.")

return false

end


local access = getPlayerAccess(cid)

if(not isInArray(ACCESS.type[access], channel)) then

doPlayerSendCancel(cid, "You cannot do this action.")

return false

end


registerCreatureEvent(cid, type.event)

if(type.actions) then

access = ACCESS.action[access]

if(not access or table.maxn(access) == 0) then

return false

end


local actions = {}

for _, action in ipairs(access) do

local tmp = type.actions[action]

if(tmp) then

actions[action] = tmp

end

end


doPlayerSendChannels(cid, actions)

else

doShowTextDialog(cid, 2599, "Name:\n\n(Optional) Length:\n\nComment:\n", true, 1024)

doCreatureSetStorage(cid, "banConfig", table.serialize({

type = channel

}))

end


return false

end

Editado por arthurluna (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

tá ae .-.

http://tibiaking.com/forum/topic/22796-advanced-banunban-system/

o que uso funciona perfeitamente :)

TFS 0.4 !

          Procuro Equipe para projeto sério com remuneração, maior necessidade Programador em C\C++.

Link para o post
Compartilhar em outros sites

arthurluna

Muito Obrigado! Funcionou perfeitamente :D

estou no limite de Rep++

amanha eu venho e te reputo concerteza!

algum moderador add o Resolvido :D

Editado por persin47 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 8 months later...

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo