Postado Janeiro 30, 2013 12 anos 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 Janeiro 31, 2013 12 anos por persin47 (veja o histórico de edições)
Postado Janeiro 30, 2013 12 anos 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.
Postado Janeiro 30, 2013 12 anos 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
Postado Janeiro 30, 2013 12 anos Autor se o ot dele for 9.6+ não tem... só por script. Sim.. meu ot é 9.6
Postado Janeiro 30, 2013 12 anos 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 Janeiro 30, 2013 12 anos por arthurluna (veja o histórico de edições)
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.