Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 01/30/13 em todas áreas

  1. [8.54] Digitibia Server

    psyducks2 e um outro reagiu a .HuRRiKaNe por uma resposta no tópico

    2 pontos
    Informações: Servidor 8.54; Novas Sprites; Digimons 50%; Ataques 50% Hunts Adicionadas; Novos Comandos; Novos Itens; Base 100%, liberado para quem quiser editar / adicionar novas coisas! Imagens: Download: Cliente Incluso com dat e spr; http://www.4shared.com/rar/rl1ygoxW/Server_Digi_Tibia.html? Scan: https://www.virustotal.com/file/18172d6205e768f6dd7ad8c56c1d66f517b08877921865d0e52a2643d7d29534/analysis/1359480865/ Créditos pobredobrega Animal Pak
  2. Advanced Ban/Unban System !

    Bloodwalker e um outro reagiu a Fausto32 por uma resposta no tópico

    2 pontos
    Então não encontrei nem um sistema de ban 100% funcional e sem erros no forum então resolvi postar o meu pqê vejo varias pessoas pedindo ban system u.u vamo lá . Explicação: Utilização: /ban playername,razão,tempo,comentario exemplo: /ban Skion,1,86.400,Uso Abusivo de bot. Padrão: comprimento: tempo em segundos Comentário: Comentário padrão ou de sua preferencia. razão: número, ler o texto abaixo. Razão (popular): 1-uso de software ilegal. 4-ofensiva declaração, 5-spam, 6-publicidade, 10-bug-abuso, 12-oficial-soft 13-hacking, 14 multi-cliente, 15-conta-trading-ou-sharing, 16-ameaçador-gamemaster, 18-falso-relatório-a-g, 19 comportamento destrutivo, 20-excessiva-injustificada-morte Então o script já manda pra database o nome e tempo do player banido que e passado diretamente para o site onde todos os players poderam vêr na pagina de players banidos contem tambem animação ao player ser banido e etc Data\talkactions\scripts\ban local default = { length = getConfigValue("banLength"), comment = "Rule Violations.", reason = 12 } function getPlayerTesti(cid) local Tiedot = db.getResult("SELECT `id` FROM `accounts` WHERE `id` = " .. getPlayerAccountId(cid) .. " LIMIT 1") if Tiedot:getID() ~= LUA_ERROR then local account = Tiedot:getDataInt("id") return account end return LUA_ERROR end function onSay(cid, words, param) local t = string.explode(param, ",") if(not t[1]) then doPlayerSendCancel(cid, "You must enter name.") return true end local player = getPlayerByName(t[1]) if(not isPlayer(player)) then doPlayerSendCancel(cid, "Player with name `" .. t[1] .. "` not found.") return true end local action = t[2] if(not t[2] or (t[2] and type(t[2]) ~= 'string')) then doPlayerSendCancel(cid, "Wrong param.") return true end local length = (t[3] and tonumber(t[3]) > 0) and t[3] or default.length local comment = (t[4] and type(t[4]) == "string") and t[4] or default.comment if(isInArray({"account", "acc", "a"}, action)) then doAddAccountBanishment(getAccountIdByName(t[1]), getPlayerGUID(t[1]), os.time() + length, default.reason, comment, ACTION_BANISHMENT, comment, getPlayerGUID(cid)) result = true --[[ elseif(isInArray({"player", "p"}, action)) then --type missing doAddPlayerBanishment(getPlayerGUID(t[1]), type, os.time() + length, default.reason, ACTION_BANISHMENT, comment, getPlayerGUID(cid)) result = true elseif(isInArray({}, action)) then --ip and mask missing doAddIpBanishment(ip, mask, os.time() + length, default.reason, comment, getPlayerGUID(cid)) result = true elseif(isInArray({}, action)) then doAddNotation(getAccountIdByName(t[1]), getPlayerGUID(t[1]), default.reason, comment, getPlayerGUID(cid)) result = true elseif(isInArray({}, action)) then --channelId missing doAddStatement(getPlayerGUID(t[1]), channelId, default.reason, comment, getPlayerGUID(cid)) result = true ]] end if(result) then db.executeQuery("INSERT INTO `bans` (`id` ,`type` ,`value` ,`param`, `active`, `expires`, `added`, `admin_id`, `comment`, `reason`, `action`) VALUES ('id', '3', '".. getPlayerTesti(player) .."', '45', '1', '".. os.time() + length .."', '".. os.time() .."', '".. getPlayerGUID(cid) .."', '".. comment .."', '12', '2' );") doSendAnimatedText(getCreaturePosition(player), "BANISHED", TEXTCOLOR_RED) doPlayerBroadcastMessage(cid, "The player "..t[1].." has been banished by reason "..t[4].. ". Mais informacoes no site.") doRemoveCreature(player) end return true end Data\talkactions\talkactions.xml <talkaction log="yes" words="/ban" access="4" event="script" value="ban.lua"/> Ban By: Hermes Unban: Data\talkactions\scripts\unban Comandos: /unban playername exemplo: /unban Skion 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), true 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 = false 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(not 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 Data\talkactions\talkactions.xml [/font][/b]<talkaction log="yes" words="/unban" access="4" event="script" value="unban.lua"/> Unban By: unknown Então eh isso ai mermo .-. espero ter ajudado alguém
  3. [8.6] Baiak Barao

    Underewar reagiu a Fernanda.k2 por uma resposta no tópico

    1 ponto
    E aí galera, tudo em cima!? Hoje estarei postando um servidor que estive trabalhando a um tempinho, deixei ele online durante 1 mês e a galera aprovou! Agora estou sem tempo para cuidar de um servidor, então decidi postar aqui no Tibiaking pra galera baixar. ■ Mapa base: ╠ Baiak Infinity by Mayron ╚ Versão: 8.6 ■ Modificações: ╠ Visual do templo totalmente modificado. ╠ Salas e locais de hunts modificados. ╠ Adicionado sistema anti mage bomb. ╠ A Vip City foi transformada em uma cidade PK, quando vocês entrarem vão entender. ╠ O tempo dos efeitos nos teleports foi aumentado. ╠ Adicionado novas áreas de hunts. ╠ Removido o excesso de trainers para diminuir o lag, porém agora suporta mais pessoas treinando com o novo sistema de treinamento. ╠ Foram criadas novas quests. ╠ Removido o addon doll, agora os addons são obtidos através de quests. ╠ As vocações foram balanceadas. ╠ Novo NPC Colecionador de Ossos, este NPC foi criado para estimular a WAR no servidor. ╠ Foi adicionado ao NPC Barao Seller stamina potion, nova SD para level 400+ e alguns outros itens. ╠ Removido os outfits do Rei, rainha, montaria e borboleta, pois eram muito escrotos. ╠ Adicionado os outfits Wedding e Wayfarer. ╠ Removido a runa prison rune, pois escrotiza totalmente o PVP. ╠ Adicionado NPC que vende Red Skull Amulet. ╠ Adicionado NPC que vende pedras encantadas. ╠ Alterado o ataque de todas as wands e rods. ╠ As melhores armas agora são obtidas em quest e não mais no NPC. ╠ Removido as mensagens de raids e informações que ficavam aparecendo a cada segundo, isso poluía demais a tela do player. ╠ Adicionado monstros nas salas de teleports para sinalizar as hunts. ╠ Adicionado na sala de eventos invasões por alavancas, acesso apenas para GOD com o comando /a. ╠ Erros de português/inglês nas falas e nos nomes dos NPCs foram corrigidos. ╠ As quests foram organizadas no arquivo chestsys, usando o script do Vodkart, agora está muito mais fácil criar sua quest. ╠ Adicionado área de evento WAR. ╠ Adicionado evento Zombie, configurado para executar todos os dias às 20:00 horas. ╠ Foi criado mais casas na cidade principal, e removida as casas da vip city, pois foi transformada em hunt e a galera prefere casas na cidade principal. ╠ Adicionado novos monstros. ╠ Todos as hunts da esquerda dos TPs free foram alteradas, agora se tornaram útil com monstros decentes e pode-se cassar como as outras áreas. ╚ Foi adicionado script para deixar o servidor claro 24h, pois quando ficava noite o servidor ficava muito escuro. ■ Bugs encontrados no mapa base e já foram resolvidos: ╠ A vocação paladin foi arrumada, agora o paladin está usando potion e atacando ao mesmo tempo. ╠ Arrumado os NPCs Warmaster Addon 1 e Warmaster Addon 2 que estavam entregando o addon de graça. ╠ O Teleport dos Defiler na POI estava sem destino, já foi arrumado. ╠ O book e a boots que eram obtidos na VIP POI foram substituídos, pois eram bugados. ╠ Foi arrumado o script da alavanca da Annihilator que gerava um erro na distro. ╠ Foi corrigido o evento da arena, pois as coordenadas estavam mal posicionadas no script, fazendo com que alguns players ficassem presos no evento. ╠ Foi removido a quest do amazon shield, pois gerava um bug de drop Dwarven Armor. ╠ O tempo do save server foi corrigido. ╠ Alguns itens que possuem atributos foram corrigidos, pois ao equipar os itens não davam skills. ╚ Corrigido o tempo de idle, agora está kickando o player que fica afk durante 15 minutos. ■ Eventos: ╠ Com o GOD, use o comando /arena x, onde x é o número de players que vão participar do evento. ╠ No teleport de eventos existem alavancas para invasões na cidade, os monstros dropam itens de quest, porém o drop é raro. ╠ Monstro Guarda Costas do GOD, pode ser sumonado na cidade, ele possui magias editadas e o loot é atrativo para que os players participem do evento. ╚ Zombie event é executado diariamente às 20:00 horas, para alterar o horário basta ir até a pasta data\globalevents, abrir o arquivo globalevents.xml e alterar o horário do zombie event. ■ Imagens: Templo Castelo Teleports Trainers PK City Quests Eventos Distro Se houver problemas para visualizar as imagens, segue um link para o album de imagens: http://imgur.com/a/zRFWd#0 ■ Conta do GOD: ╠ Account: god ╚ Senha: god ■ Link para download: ╠ Download ╚ Scan ■ Dicas extras: Nunca deixe a senha 2/2, pois ao tentar criar um item pelo id que possua o número 2 surgirá a mensagem chata do Account Data Warning. Para resetar o servidor, basta abrir o banco de dados, clicar com o botão direito sobre cada tabela, por exemplo a tabela Accounts e selecionar a opção Erase table data. Se o Remere's map editor não reconhecer o Tibia.dat e o Tibia.spr, a solução será baixar o client 8.6 do site oficial do Remere's. Segue o link: www.remeresmapeditor.com ■ Créditos: juliok80 Te ajudei? +REP!
  4. [10.91] Remere's Map Editor

    Hrod reagiu a Bruno Carvalho por uma resposta no tópico

    1 ponto
    Bom pessoal, há muito tempo o Remere's Map Editor ficou open source. Eu estou testando e gostaria de compartilhar ele com vocês. Changelog Versão 10.91 adicionada (NOVO) (Não é uma versão oficial e como sempre digo: Não é recomendado que se utilize os items novos, apenas crie o mapa sem utilizá-los até que tenha um OTB oficial) Melhorias no sistema de zoom Suporte para versões 10.10+ Live casts Ultima versão do github Informações Precisa do Microsoft Visual C++ 2013 - 32/64Bits: Redistributable Package Não tem suporte para Windows Xp Download Versão até 10.91 rev 250 https://mega.nz/#!z9910YbL!9cHUvoYlrFiwshsVCe-JEKKzqrwp-w7ZsCqhFiAtBWE Créditos Hjnilsson (RME) MartyX - Ajudou a compilar Comedinha (Bruno Carvalho) Pessoal do TPForums Outros Contato com o criador: Pelo Twitter: @leremere
  5. PERFECT ZOMBIE SYSTEM EVENT!

    higorsantos reagiu a Fausto32 por uma resposta no tópico

    1 ponto
    Script/Tutorial+ Php +Map +Talkaction +Portal. Ps: Antes de falar q o topico já existe no forum teste os outros scripts Então começando por informações basícas : Para abrir o evento : /zombiestart numero de players . exemplo : /zombiestart 2 Para Iniciar o evento sem o numero maximo de players: /zombiestart force. Apos aberto sempre q um player ente no portal do evento e avisado por broadcast quem entrou na arena e o numero de players restantes para o evento ser iniciado. Apos o evento ser iniciado um zombie e sumonado a cada 20 segundos, o player que for infectado e teleportado para o templo vence o ultimo player restante na arena. Ao terminar o evento e anuciado por broadcast o nome do player vencedor tempo q durou na arena e por quantos zombies ele sobreviveu, entrega de premio automatica, premio configuravel. Garantia de funcionabilidade perfeita em TFS 0.4 se configurado corretamente, não testado em outras versões de distros. Creditos: Me .. não criei mais montei peguei de varios servers/topicos e corigi os varios bugs de distro colocaria os creditos de onde peguei a maioria do script mais foi de um server sem creditos q nem era pra ter sido postado. Enfim Vamos ao Evento ! Primeiro vou estar postando a pagina classica do Zombie event no Gesior que seria a parte PHP para informar os players sobre o evento. Pagina PHP + Tutorial de como implementar ela no seu site. Agora alguns mapas para o zombie event: Então Agora vamos ao script ! data\creaturescripts\scripts\zombie – A pasta ‘zombie’ deve ser criada no diretorio citado. \data\creaturescripts\scripts\Zombie\onattack.lua function loseOnZombieArena(cid) kickPlayerFromZombiesArea(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "BOOM! You are dead.") local players = getZombiesEventPlayers() if(#players <= 1) then local winner = players[1] if(winner) then doPlayerAddItem(winner, 2157, 5, true) doPlayerAddItem(winner, 6119, 1, true) doPlayerSendTextMessage(winner, MESSAGE_STATUS_CONSOLE_BLUE, "You won zombies arena event.") doBroadcastMessage("After " .. os.time() - getPlayerZombiesEventStatus(winner) .. " seconds of fight " .. getCreatureName(winner) .. " won Zombie Arena Event in game versus " .. getStorage(ZE_ZOMBIES_SPAWNED) .. " zombies!") kickPlayerFromZombiesArea(winner) else doBroadcastMessage("Zombie arena event finished! No one win?!?!?! WTF!") end doSetStorage(ZE_STATUS, 0) doSetStorage(ZE_PLAYERS_NUMBER, ZE_DEFAULT_NUMBER_OF_PLAYERS) doSetStorage(ZE_ZOMBIES_TO_SPAWN, 0) doSetStorage(ZE_ZOMBIES_SPAWNED, 0) local width = (math.max(ZE_spawnFromPosition.x, ZE_spawnToPosition.x) - math.min(ZE_spawnFromPosition.x, ZE_spawnToPosition.x)) / 2 + 1 local height = (math.max(ZE_spawnFromPosition.y, ZE_spawnToPosition.y) - math.min(ZE_spawnFromPosition.y, ZE_spawnToPosition.y)) / 2 + 1 local centerPos = {x=math.min(ZE_spawnFromPosition.x, ZE_spawnToPosition.x)+width,y=math.min(ZE_spawnFromPosition.y, ZE_spawnToPosition.y)+height,z=ZE_spawnFromPosition.z} for z = math.min(ZE_spawnFromPosition.z, ZE_spawnToPosition.z), math.max(ZE_spawnFromPosition.z, ZE_spawnToPosition.z) do centerPos.z = z for i, uid in pairs(getSpectators(centerPos, width, height, false)) do if(isMonster(uid)) then doRemoveCreature(uid) end end end end end function onStatsChange(target, cid, changetype, combat, value) if((cid and isMonster(cid) and getCreatureName(cid) == "Zombie Event") or (isInRange(getThingPosition(target), ZE_spawnFromPosition, ZE_spawnToPosition) and changetype == STATSCHANGE_HEALTHLOSS and math.abs(value) >= getCreatureHealth(target))) then doCreatureAddHealth(target, getCreatureMaxHealth(target)) loseOnZombieArena(target) return false end return true end \data\creaturescripts\scripts\Zombie\ondeath.lua function onDeath(cid) setZombiesToSpawnCount(getZombiesToSpawnCount() + 2) doCreatureSay(cid, "I'll be back!", 19) return true end \data\creaturescripts\scripts\Zombie\onthink.lua function onThink(cid) local target = getCreatureTarget(cid) if(target ~= 0 and not isPlayer(target)) then doRemoveCreature(target) end return true end \data\globalevents\scripts\zombie\ onstartup.lua function onstartup() db.executeQuery("UPDATE `player_storage` SET `value` = 0 WHERE `key` = " .. ZE_isOnZombieArea .. ";") doSetStorage(ZE_STATUS, 0) doSetStorage(ZE_PLAYERS_NUMBER, ZE_DEFAULT_NUMBER_OF_PLAYERS) doSetStorage(ZE_ZOMBIES_TO_SPAWN, 0) doSetStorage(ZE_ZOMBIES_SPAWNED, 0) addZombiesEventBlockEnterPosition() return true end \data\globalevents\scripts\zombie\onthink.lua function onThink(interval, lastExecution, thinkInterval) if(getStorage(ZE_STATUS) == 2) then setZombiesToSpawnCount(getZombiesToSpawnCount()+1) local players = getZombiesEventPlayers() for i=1, getZombiesToSpawnCount() * 2 do if(getZombiesToSpawnCount() > 0 and spawnNewZombie()) then setZombiesToSpawnCount(getZombiesToSpawnCount()-1) end end end return true end \data\lib\zombie_event.lua -- CONFIG ZE_DEFAULT_NUMBER_OF_PLAYERS = 20 ZE_ACCESS_TO_IGNORE_ARENA = 4 -- POSITIONS ZE_blockEnterItemPosition = {x=32341, y=32213, z=7} -- onde nasce o teleport? ZE_enterPosition = {x=32154, y=32578, z=7} -- onde os players nascem dentro da arena zombie? ZE_kickPosition = {x=32368, y=32241, z=7} -- quando morre vai para onde? ZE_spawnFromPosition = {x=32140,y=32566,z=7} -- para sumonar zombie (de) ZE_spawnToPosition = {x=32168,y=32590,z=7} -- para sumonar zombie (ate) -- ITEM IDS --ZE_blockEnterItemID = 2700 ZE_blockEnterItemID = 1387 -- STORAGES -- - player ZE_isOnZombieArea = 34370 -- - global ZE_STATUS = 34370 -- =< 0 - off, 1 - waiting for players, 2 - is running ZE_PLAYERS_NUMBER = 34371 ZE_ZOMBIES_TO_SPAWN = 34372 ZE_ZOMBIES_SPAWNED = 34373 -- FUNCTION function setZombiesEventPlayersLimit(value) doSetStorage(ZE_PLAYERS_NUMBER, value) end function getZombiesEventPlayersLimit() return getStorage(ZE_PLAYERS_NUMBER) end function addPlayerToZombiesArea(cid) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) doTeleportThing(cid, ZE_enterPosition, true) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) if(getPlayerAccess(cid) < ZE_ACCESS_TO_IGNORE_ARENA) then setPlayerZombiesEventStatus(cid, os.time()) end end function kickPlayerFromZombiesArea(cid) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) doTeleportThing(cid, ZE_kickPosition, true) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) setPlayerZombiesEventStatus(cid, 0) end function getPlayerZombiesEventStatus(cid) return getCreatureStorage(cid, ZE_isOnZombieArea) end function setPlayerZombiesEventStatus(cid, value) doCreatureSetStorage(cid, ZE_isOnZombieArea, value) end function getZombiesEventPlayers() local players = {} for i, cid in pairs(getPlayersOnline()) do if(getPlayerZombiesEventStatus(cid) > 0) then table.insert(players, cid) end end return players end function getZombiesCount() return getStorage(ZE_ZOMBIES_SPAWNED) end function addZombiesCount() doSetStorage(ZE_ZOMBIES_SPAWNED, getStorage(ZE_ZOMBIES_SPAWNED)+1) end function resetZombiesCount() doSetStorage(ZE_ZOMBIES_SPAWNED, 0) end function getZombiesToSpawnCount() return getStorage(ZE_ZOMBIES_TO_SPAWN) end function setZombiesToSpawnCount(count) doSetStorage(ZE_ZOMBIES_TO_SPAWN, count) end function addZombiesEventBlockEnterPosition() -- remove tp -- remove o TP local item = getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID) if(item.uid ~= 0) then doRemoveItem(item.uid) end --doRemoveItem(getThingFromPos(Castle.desde).uid) --[[ if(getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID).uid == 0) then doCreateItem(ZE_blockEnterItemID, 1, ZE_blockEnterItemPosition) end ]]-- end function removeZombiesEventBlockEnterPosition() -- add tp if(getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID).uid == 0) then --doCreateItem(ZE_blockEnterItemID, 1, ZE_blockEnterItemPosition) local tp = doCreateTeleport(ZE_blockEnterItemID, ZE_enterPosition, ZE_blockEnterItemPosition) doItemSetAttribute(tp, "aid", "5555") end --[[ local item = getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID) if(item.uid ~= 0) then doRemoveItem(item.uid) end ]]-- end function spawnNewZombie() local posx = {} local posy = {} local posz = {} local pir = {} for i=1, 5 do local posx_tmp = math.random(ZE_spawnFromPosition.x ,ZE_spawnToPosition.x) local posy_tmp = math.random(ZE_spawnFromPosition.y ,ZE_spawnToPosition.y) local posz_tmp = math.random(ZE_spawnFromPosition.z ,ZE_spawnToPosition.z) local pir_tmp = 0 local spec = getSpectators({x=posx_tmp, y=posy_tmp, z=posz_tmp}, 3, 3, false) if(spec and #spec > 0) then for z, pid in pairs(spec) do if(isPlayer(pid)) then pir_tmp = pir_tmp + 1 end end end posx[i] = posx_tmp posy[i] = posy_tmp posz[i] = posz_tmp pir[i] = pir_tmp end local lowest_i = 1 for i=2, 5 do if(pir[i] < pir[lowest_i]) then lowest_i = i end end local ret = doCreateMonster("Zombie Event", {x=posx[lowest_i], y=posy[lowest_i], z=posz[lowest_i]}, false) if type(ret) == "number" then addZombiesCount() setGlobalStorageValue(201201051801, ret) end return type(ret) == "number" end \data\movements\scripts\zombie\ onenter.lua function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if(not isPlayer(cid)) then return true end if(getPlayerAccess(cid) >= ZE_ACCESS_TO_IGNORE_ARENA) then addPlayerToZombiesArea(cid) elseif(#getZombiesEventPlayers() < getZombiesEventPlayersLimit() and getStorage(ZE_STATUS) == 1) then addPlayerToZombiesArea(cid) local players_on_arena_count = #getZombiesEventPlayers() if(players_on_arena_count == getZombiesEventPlayersLimit()) then addZombiesEventBlockEnterPosition() -- removeTP doSetStorage(ZE_STATUS, 2) doBroadcastMessage("Zombie Arena Event started.") else doBroadcastMessage(getCreatureName(cid) .. " has entered a Zombie Arena. We still need " .. getZombiesEventPlayersLimit() - players_on_arena_count .. " players.") end else doTeleportThing(cid, fromPosition, true) addZombiesEventBlockEnterPosition() end return true end \data\talkactions\scripts\zombie\ onsay.lua function onSay(cid, words, param, channel) if(getStorage(ZE_STATUS) ~= 2) then local players_on_arena_count = #getZombiesEventPlayers() if(param == 'force') then if(players_on_arena_count > 0) then setZombiesEventPlayersLimit(players_on_arena_count ) addZombiesEventBlockEnterPosition() doSetStorage(ZE_STATUS, 2) doBroadcastMessage("Zombie Arena Event started.") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Zombies event started.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Cannot start Zombies event. There is no players on arena.") end else if(param ~= '' and tonumber(param) > 0) then setZombiesEventPlayersLimit(tonumber(param)) end removeZombiesEventBlockEnterPosition() doSetStorage(ZE_STATUS, 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Event started.") doPlayerBroadcastMessage(cid, "Zombie Arena Event teleport is opened. We are waiting for " .. getZombiesEventPlayersLimit() - players_on_arena_count .. " players to start.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Zombies event is already running.") end return true end data\monster\zombie_event.xml <monster name="Zombie Event" nameDescription="an event zombie" race="undead" experience="480" speed="170" manacost="0"> <health now="20000" max="20000"/> <look type="311" corpse="9875"/> <targetchange interval="5000" chance="50"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="0"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="0"/> <flag canpushitems="1"/> <flag canpushcreatures="1"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="melee" interval="1000" min="-1500" max="-2350"/> </attacks> <defenses armor="0" defense="0"/> <immunities> <immunity paralyze="1"/> <immunity invisible="1"/> <immunity fire="1"/> <immunity energy="1"/> <immunity poison="1"/> </immunities> <voices interval="5000" chance="10"> <voice sentence="You wont last long!"/> <voice sentence="Mmmmh.. braains!"/> </voices> <script> <event name="ZombieThink"/> <event name="ZombieDeath"/> </script> <loot> </loot> </monster> Agora as Tags nos xml’s . /data/creaturescripts/creaturescripts.xml <event type="think" name="ZombieThink" event="script" value="zombie/onthink.lua"/> <event type="statschange" name="ZombieAttack" event="script" value="zombie/onattack.lua"/> <event type="death" name="ZombieDeath" event="script" value="zombie/ondeath.lua"/> /data/globalevents/globalevents.xml <globalevent name="ZombieGlobalThink" interval="5000" event="script" value="zombie/onthink.lua"/> <globalevent name="ZombieGlobalStartup" type="start" event="script" value="zombie/onstartup.lua"/> /data/movements/movements.xml <movevent type="StepIn" actionid="5555" event="script" value="zombie/onenter.lua"/> /data/talkactions/talkactions.xml <talkaction log="yes" words="/zombiestart" access="4" event="script" value="zombie/onsay.lua"/> /data/monster/monsters.xml <monster name="Zombie Event" file="zombie_event.xml"/> Script Terminado ! Next: Tutorial de como configurar o zombie event ! Estarei postando apenas as partes q podem ou devem ser editadas em cada script. data\creaturescripts\scripts\zombiez\onattack.lua Next: \data\lib\zombie_event.lua Então galera eh isso ai .-. meu primeiro post não mim crucifiquem k Duvidas, reclamações elogios chigamentos u.u só comentar como dizia o mestre o topico ta explicado nos minimos detalhes e ''de forma bem entendida'' (entendedoresentenderam) então eh isso vlw ai a todos q mim ajudaram nisso e nem sabem ?
  6. Centurion V4

    TogaX reagiu a Hona por uma resposta no tópico

    1 ponto
    com os pokes da 3 geração full. Os bugs que Cacaiu arrumo foram esses : ScreenShots V4: Centurion V3 Centurion V3.1 Centurion V3.2- [Recomendado] Centurion V3.3 Centurion V4 Executável Sem Bug de Catch sé ajudei Rep+ pra mim !!!
  7. [TalkAction] Recarregar soft boots por comando

    hylo reagiu a Renato por uma resposta no tópico

    1 ponto
    Créditos no script. Explicação: simples, você fala !soft e recarrega sua soft por X valor. Retorna erro caso não tenha a grana ou a worn soft boots. • Crie um arquivo LUA com o nome soft.lua em data/talkactions/scripts e ponha: --[Created by Renato Ribeiro to www.TibiaKing.com and others]-- function onSay (cid, words, param, channel) local preco = 10000 -- gold coins local wornId = yyyy -- id da worn soft boots, bota descarregada local newId = xxxx -- id da nova soft boots, bota carregada if getPlayerItemCount(cid, wornId) >= 1 and getPlayerMoney(cid) >= preco then doSendMagicEffect(getPlayerPosition(cid), 12) doPlayerRemoveItem(cid, wornId) doPlayerAddItem(cid, newId) doPlayerRemoveMoney(cid, preco) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você recarregou sua soft por "..preco.." gps.") else doSendMagicEffect(getPlayerPosition(cid), 2) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem "..preco.." gps ou uma worn soft boots para poder recarregar.") return TRUE end end[/code] [color=#FF0000][b]Atenção![/b][/color] Aqui nestes dois locais: [i] local wornId = [color=#800080]yyyy[/color] local newId = [color=#000080]xxxx[/color][/i] Troque o [color=#800080]yyyy[/color] pelo ID da worn soft boots (descarregada) e o [color=#000080]xxxx[/color] pelo ID da soft boots (carregada). [b]• Depois em [color=#0000FF]data/talkactions/talkactions.xml[/color] ponha a tag em qualquer lugar:[/b] [code]<talkaction log="yes" words="!soft" access="0" event="script" value="soft.lua"> E voalá! (: OBS: Script não testado!</talkaction>
  8. Redlabel V1.0 Map Propio

    eneasneto2 reagiu a TonyHalk por uma resposta no tópico

    1 ponto
    Que Tem No Ot • Cidade Novas Em Breve • System Cassino Em Breve • Vip Propia Em Breve • Templo Totalmente Editado •Systema De Resta !reset • Area De Teleport's Nova • Addon Por Varhkal • Itens editado no npc RedLabel •quest Propia Embreve •Spells • Redlabel Friggo Sorc E Druid • Redlabel Hur Knights E Pala • RedLabel Paralyse Para tds Vocaçao • Redlabel Trap Td Vocaçao Trap De osso • Exura Mana Td Vocaçao • Exura Heal Para Tds Vocaçao • Embreve MAis XD Fotos Templo City De Cima Treiners Teleport Downaload http://www.4shared.c...A/RedLabel.html Scan https://www.virustot...sis/1335363631/ Creditos Kevin95% Meunomefeiozik 5% Gosto +Rep Plx
  9. Comandos IP Tables / Database Comandas

    Markin reagiu a arthurluna por uma resposta no tópico

    1 ponto
    Só server em Linux, não sei exatamente como para que funciona cada comando, se tiver alguém que esclareça é melhor, será reputado também. iptables -N conn-flood iptables -I INPUT 1 -p tcp --syn -j conn-flood iptables -A conn-flood -m limit --limit 7/s --limit-burst 20 -j RETURN iptables -A conn-flood -j DROP iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 1 -j ACCEPT iptables -A INPUT -p icmp -j DROP echo "Block TCP-CONNECT scan attempts (SYN bit packets)" iptables -A INPUT -p tcp --syn -j DROP echo "Block TCP-SYN scan attempts (only SYN bit packets)" iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH SYN -j DROP echo "Block TCP-FIN scan attempts (only FIN bit packets)" iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN -j DROP echo "Block TCP-ACK scan attempts (only ACK bit packets)" iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH ACK -j DROP echo "Block TCP-NULL scan attempts (packets without flag)" iptables -A INPUT -m conntrack --ctstate INVALID -p tcp --tcp-flags ! SYN,RST,ACK,FIN,URG,PSH SYN,RST,ACK,FIN,URG,PSH -j DROP echo "Block "Christmas Tree" TCP-XMAS scan attempts (packets with FIN, URG, PSH bits)" iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN,URG,PSH -j DROP echo "Block DOS - Ping of Death" iptables -A INPUT -p ICMP --icmp-type echo-request -m length --length 60:65535 -j ACCEPT echo "Block DOS - Teardrop" iptables -A INPUT -p UDP -f -j DROP echo "Block DDOS - SYN-flood" iptables -A INPUT -p TCP --syn -m iplimit --iplimit-above 9 -j DROP echo "Block DDOS - Smurf" iptables -A INPUT -m pkttype --pkt-type broadcast -j DROP iptables -A INPUT -p ICMP --icmp-type echo-request -m pkttype --pkttype broadcast -j DROP iptables -A INPUT -p ICMP --icmp-type echo-request -m limit --limit 3/s -j ACCEPT echo "Block DDOS - UDP-flood (Pepsi)" iptables -A INPUT -p UDP --dport 7 -j DROP iptables -A INPUT -p UDP --dport 19 -j DROP echo "Block DDOS - SMBnuke" iptables -A INPUT -p UDP --dport 135:139 -j DROP iptables -A INPUT -p TCP --dport 135:139 -j DROP echo "Block DDOS - Connection-flood" iptables -A INPUT -p TCP --syn -m iplimit --iplimit-above 3 -j DROP echo "Block DDOS - Fraggle" iptables -A INPUT -p UDP -m pkttype --pkt-type broadcast -j DROP iptables -A INPUT -p UDP -m limit --limit 3/s -j ACCEPT echo "Block DDOS - Jolt" iptables -A INPUT -p ICMP -f -j DROP Database Comandos. -------------------------------------------------------------------- DROP USER 'pma'@'localhost'; -------------------------------------------------------------------- ALTER TABLE `players` ADD `exphist_lastexp` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `exphist1` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `exphist2` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `exphist3` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `exphist4` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `exphist5` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `exphist6` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `exphist7` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `onlinetimetoday` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `onlinetime1` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `onlinetime2` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `onlinetime3` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `onlinetime4` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `onlinetime5` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `onlinetime6` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `onlinetime7` BIGINT( 255 ) NOT NULL DEFAULT '0', ADD `onlinetimeall` BIGINT( 255 ) NOT NULL DEFAULT '0'; -------------------------------------------------------------------- UPDATE `players` SET `exphist_lastexp`=`players`.`experience` -------------------------------------------------------------------- CREATE TABLE IF NOT EXISTS `bounty_hunters` ( `id` int(11) NOT NULL auto_increment, `fp_id` int(11) NOT NULL, `sp_id` int(11) NOT NULL, `k_id` int(11) NOT NULL, `added` int(15) NOT NULL, `prize` bigint(20) NOT NULL, `killed` int(11) NOT NULL, `kill_time` int(15) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -------------------------------------------------------------------- ALTER TABLE `guilds` ADD `invited_to` INT( 11 ) NOT NULL , ADD `invited_by` INT( 11 ) NOT NULL , ADD `in_war_with` INT( 11 ) NOT NULL , ADD `kills` INT( 11 ) NOT NULL , ADD `show` SMALLINT( 1 ) NOT NULL , ADD `war_time` INT( 11 ) NOT NULL ; -------------------------------------------------------------------- CREATE TABLE `deaths_in_wars` ( `guild_id` INT( 11 ) NOT NULL , `player_id` INT( 11 ) NOT NULL , `killer_guild` INT( 11 ) NOT NULL , `killer` INT( 11 ) NOT NULL , `date` INT( 11 ) NOT NULL , `result1` INT( 11 ) NOT NULL , `result2` INT( 11 ) NOT NULL ) ENGINE = MYISAM ; -------------------------------------------------------------------- UPDATE `guilds` SET `invited_to` = 0, `invited_by` = 0, `in_war_with` = 0, `kills` = 0, `show` = 0, `war_time` = 0 WHERE `id` > 0; -------------------------------------------------------------------- Change Temple position UPDATE Players SET posx =32360, posy =31782, posz =7; -------------------------------------------------------------------- UPDATE accounts SET premdays=4500; -------------------------------------------------------------------- Database Cleanup DELETE FROM players WHERE level < 20 AND lastlogin < UNIX_TIMESTAMP() - 15*24*60*60 DELETE FROM players WHERE deleted = 1; DELETE FROM player_deaths WHERE player_id NOT IN (SELECT id FROM players); DELETE FROM player_depotitems WHERE player_id NOT IN (SELECT id FROM players); DELETE FROM player_items WHERE player_id NOT IN (SELECT id FROM players); DELETE FROM player_skills WHERE player_id NOT IN (SELECT id FROM players); DELETE FROM player_spells WHERE player_id NOT IN (SELECT id FROM players); DELETE FROM player_storage WHERE player_id NOT IN (SELECT id FROM players); DELETE FROM player_viplist WHERE player_id NOT IN (SELECT id FROM players); -------------------------------------------------------------------- Bless for all UPDATE `players` SET `blessings`=31; -------------------------------------------------------------------- •Remove a specific item (here id 2160) completely from the game (depot, players, houses) DELETE FROM player_depotitems, player_items, tile_items WHERE itemtype = 2160; -------------------------------------------------------------------- •Delete all items from player id. DELETE FROM `player_depotitems` , `player_items` WHERE `player_id` = '1234' -------------------------------------------------------------------- •Select all PageAcces higher than zero. SELECT * FROM `accounts` WHERE `page_access` > 0 LIMIT 0 , 30 -------------------------------------------------------------------- •Select all Gamemaster. SELECT * FROM `players` WHERE `group_id` > 1 LIMIT 0 , 30 -------------------------------------------------------------------- ALTER TABLE players AUTO_INCREMENT = 7; -------------------------------------------------------------------- SET GLOBAL max_allowed_packet = 16776192; -------------------------------------------------------------------- ALTER TABLE `guilds` ADD `wins` INT NOT NULL DEFAULT '0'; ALTER TABLE `guilds` ADD `losses` INT NOT NULL DEFAULT '0'; ALTER TABLE `guilds` ADD `draws` INT NOT NULL DEFAULT '0'; --------------------------------------------------------------------. Resete Database Comando UPDATE `ot`.`players` SET `level` = '8', `health` = '180', `healthmax` = '180', `experience` = '4200', `mana` = '35', `manamax` = '35', `cap` = '400' UPDATE `ot`.`players_skills` SET `value` = '10' War System 100% Database Comando ------------------------------------------------------- CREATE TABLE IF NOT EXISTS `guild_wars` ( `id` INT NOT NULL AUTO_INCREMENT, `guild_id` INT NOT NULL, `enemy_id` INT NOT NULL, `begin` BIGINT NOT NULL DEFAULT '0', `end` BIGINT NOT NULL DEFAULT '0', `frags` INT UNSIGNED NOT NULL DEFAULT '0', `payment` BIGINT UNSIGNED NOT NULL DEFAULT '0', `guild_kills` INT UNSIGNED NOT NULL DEFAULT '0', `enemy_kills` INT UNSIGNED NOT NULL DEFAULT '0', `status` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `status` (`status`), KEY `guild_id` (`guild_id`), KEY `enemy_id` (`enemy_id`) ) ENGINE=InnoDB; --------------------------------------------------------------- ALTER TABLE `guild_wars` ADD CONSTRAINT `guild_wars_ibfk_1` FOREIGN KEY (`guild_id`) REFERENCES `guilds` (`id`) ON DELETE CASCADE, ADD CONSTRAINT `guild_wars_ibfk_2` FOREIGN KEY (`enemy_id`) REFERENCES `guilds` (`id`) ON DELETE CASCADE; --------------------------------------------------------------- ALTER TABLE `guilds` ADD `balance` BIGINT UNSIGNED NOT NULL AFTER `motd`; ------------------------------------------------------------------ CREATE TABLE IF NOT EXISTS `guild_kills` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `guild_id` INT NOT NULL, `war_id` INT NOT NULL, `death_id` INT NOT NULL ) ENGINE = InnoDB; ------------------------------------------------------------------------------- ALTER TABLE `guild_kills` ADD CONSTRAINT `guild_kills_ibfk_1` FOREIGN KEY (`war_id`) REFERENCES `guild_wars` (`id`) ON DELETE CASCADE, ADD CONSTRAINT `guild_kills_ibfk_2` FOREIGN KEY (`death_id`) REFERENCES `player_deaths` (`id`) ON DELETE CASCADE, ADD CONSTRAINT `guild_kills_ibfk_3` FOREIGN KEY (`guild_id`) REFERENCES `guilds` (`id`) ON DELETE CASCADE; ------------------------------------------------------------------------------------ ALTER TABLE `killers` ADD `war` INT NOT NULL DEFAULT 0; --------------------------------------------------------------------------------------
  10. Ban / Unban 9.x + 100% Perfect [Install]

    Markin reagiu a arthurluna por uma resposta no tópico

    1 ponto
    Bom Galera venho trazer pra você que possuem servidores 9.x+ que o Ban ou Unban não funciona... <talkaction log="yes" words="/unban" access="3" event="script" value="unban.lua"/> <talkaction log="yes" words="/ban" access="2" event="script" value="ban.lua"/> 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 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 Agora vamos 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 Bom galera é isso ai, funciona perfeitamente em TFS 3.X+
  11. 1 ponto
    Novidades 30/01 Hoje foram realizados alguns testes básicos no funcionamento do programa em geral e utilizamos um servidor de OTServ para aplicar as novas funções do programa e analisar o rendimento do servidor com o PingOut ligado no hoster. As funções funcionaram com sucesso e o PingControl teve um ótimo rendimento. Em ambos os testes (um com o PingOut, outro sem o programa), foi usado o mesmo servidor, conexão de internet banda larga 10 MB e o mesma máquina hoster. Vamos aos dados: Servidor utilizado: Crystal Server 9.44 Servidor mantido ligado por 12 horas e 10 players online. Com o PingOut ligado tivemos um uptime de 99.62%, nenhum momento foi constatado freeze time e além disso, deixamos o servidor sem exausted, o que permitia aos players utilizarem spells, por exemplo, diversas vezes consecutivas, e mesmo assim não tivemos LAG algum. Concordamos que a quantidade de players era pequena, mas para nós, foi um resultado ótimo e esperado, já que com o PingOut desligado, tivemos um uptime de 97.44% no servidor e dois momentos de delay 3 segundos de freeze, na mesma situação de uso constante de spells por parte dos 10 players. Testamos também a função Kick High Ping, um dos players logados no teste, estava com sobrecarga de conexão por isso logou com uma latência extremamente alta, ultrapassando o limite configurado por nós no PingOut. Após 2 minutos conectado ao servidor, foi kickado pela função Kick High Ping e só pode voltar a logar 15 minutos depois. Lembrando que tudo isso pode ser configurado no programa de acordo com a sua opção. Resumindo o teste, as duas principais funções do programa, a de controle da taxa de ping no servidor (PingControl) e a função Kick High Ping, estão funcionando perfeitamente sem qualquer tipo de BUG. Apesar de terem sido testes básicos, está de bom tamanho já que constatamos a efetividade e pleno funcionamento do PingOut! Estamos chegando lá! E chegamos a 58% de desenvolvimento do programa! Comentem com dúvidas, sugestões, críticas. Obrigado!
  12. [Resolvido] [HELP] Sobre Ot

    Frost reagiu a Markin por uma resposta no tópico

    1 ponto
    muito fácil de usar, tem varios tutoriais ai pelo fórum basta procurar.
  13. [Resolvido] [HELP] Sobre Ot

    Frost reagiu a Fausto32 por uma resposta no tópico

    1 ponto
    kk mano assim nada fica salvo tá ligado ? tem um programa proprio pra manipular os mapas apenas por ele q fica salvo .. Remeres Map Editor :http://remeresmapeditor.com/marklar.php baixa ele ai
  14. [Resolvido] [HELP] Sobre Ot

    globemaior reagiu a SkyDark por uma resposta no tópico

    1 ponto
    Man desse jeito nunca vai da certo sempre que vc fizer isso vai voltar tudo ao normal vc precisa fazer pelo remeres map editor
  15. [Resolvido] /ban não funciona

    persin47 reagiu a arthurluna por uma resposta no tópico

    1 ponto
    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
  16. [Resolvido] Sudden Death Rune

    fabiomoitim reagiu a Kimoszin por uma resposta no tópico

    1 ponto
    fabiomoitim Da algum erro no distro? Algo do tipo? Peço que você leia as REGRAS.
  17. [Resolvido] Problema Com RedSkull Remover !

    Fausto32 reagiu a Kimoszin por uma resposta no tópico

    1 ponto
    function onUse(cid, item) if (getCreatureSkullType(cid) == SKULL_RED or getCreatureSkullType(cid) == SKULL_BLACK) then doRemoveItem(item.uid, 1) return doCreatureSetSkullType(cid, SKULL_NONE) and true end return doPlayerSendCancel(cid, "Você não pode usar este item") and true end
  18. Sutdown 5

    Fausto32 reagiu a Guizito por uma resposta no tópico

    1 ponto
    Você pode seguir os seguintes passos para auto reiniciar seu servidor: 1°)Abra um bloco de notas. 2°)Escreva nele (Não esqueça de tirar o "CODE" se você for Copiar e colar): Agora é só você troca o nome das coisas que eu coloquei lá tipo: Por: Seu Nick aqui. Nome do executavel.exe (Exemplo: OTserv.exe). Mensagem de quando o server cai (Exemplo: o Server caiu, volta logo.). 3°)Depois de ter feito salve o seu bloco de notas o arquivo.bat (Exemplo: Auto-Restarter.bat). 4°)Abra seu OtServ e divirta-se porque acabou.
  19. [DUVIDAS] Criações !

    Laastzn reagiu a yurinho190 por uma resposta no tópico

    1 ponto
    mano attacker tem sim aki no fórum, pode procurar! e o sistema de Norte Sul Leste Oeste é vc add um domainupdown com esses textos, 2 labels com texto inicial 0 e coloca um timer pra quando o texto selecionado for "Sul" o texto da label se alterar pra 1 e caso "Norte" pra -1 e coloca no botão de Add waypoint: loc.Y = p.Location.Y + Label1.Text o resto vc descobre, aliás ja q te ajudei, me da +rep sobre a foto: No form que aparece essa mensagem provavelmente estpa escrito assim: Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load c = ClientChooser.ShowBox() p = c.GetPlayer() é só apagar q a mensagem vai parar de aparecer. só to te ajudando pq eu comecei igual vc e a galera aqui é muito gente boa e me ajudou muito, principalmente o Kimoszin e o Augusto.
  20. [Resolvido] Sudden Death Rune

    fabiomoitim reagiu a madaras por uma resposta no tópico

    1 ponto
    Já testou em monstros diferentes ? você pode está attackando monstros resistentes a "death"
  21. [AJUDA] Cavebot

    arthurluna reagiu a Kimoszin por uma resposta no tópico

    1 ponto
    Você tem que montar uma boa estrutura para o seu projeto, isso é muito importante. Tu precisa definir o client que o seu bot vai funcionar, então é preciso aquele Form para fazer isso para você, mas não precisa ficar chamando ele em cada Form. Aqui tem um Walker
  22. [AJUDA] Cavebot

    arthurluna reagiu a Kimoszin por uma resposta no tópico

    1 ponto
    A imagem que aparece é para você selecionar o client em que o bot funcionará. E você não fez os codigos para o seu personagem andar. Para limpar uma ListBox: ListBox1.Items.Clear() Para remover o selecionado: ListBox1.Items.RemoveAt(ListBox1.SelectedIndex) DICA: Antes de começar a programar um bot, que é algo muito complexo, aconselho que você aprenda mais sobre programação em geral e sobre a linguagem VB.
  23. [Resolvido] Como dar premium a todos?

    3visan reagiu a Beeki por uma resposta no tópico

    1 ponto
    Use o seguinte comando, onde está o primeiro zero é onde configura a quantidade de dias que você irá dar aos players. UPDATE `accounts` SET premdays = 0, lastday = 0; caso queira algo mais avançado... use essa para dar premium aos players que logaram nas ultimas 24 horas. UPDATE `accounts` SET `premdays` = `premdays` + 3 WHERE `id` IN (SELECT `account_id` FROM `players` WHERE `lastlogin` > (UNIX_TIMESTAMP() - 86400) GROUP BY `account_id`); Créditos TFS Team.
  24. Ajuda em um bug no zombie event!

    moabhenrique reagiu a Fausto32 por uma resposta no tópico

    1 ponto
    http://tibiaking.com/forum/topic/22757-perfect-zombie-system-event/ tá ae
  25. [8.54] Digitibia Server

    brasil0014 reagiu a .HuRRiKaNe por uma resposta no tópico

    1 ponto
    A mesma posição do account manager que está no config.lua tem que estar na database no sqlite!
  26. [TUTORIAL] Icons ElfBot NG

    Thyesley reagiu a Luuan Paradix por uma resposta no tópico

    1 ponto
    Não sabe por ICONS ? Aqui você aprenderá. Abra a opção ICONS. NAME - Nome da Magia (Haste a minha) SIZE - Seleciona 'OR e 'BKG DRAW' INACTIVE STATE - Bkg Ids ponha o id de algo (haste ponho a boots of haste) Os id's estãrao disponíveis no final do tutorial. http://tibiascripts....-ng-elfbot.html XOPS - Previous YOPS - Previous TEXT - Nome da Mágia (haste) Ponha as cor que quiser. Lclick e Rclick - É a Hotckey (auto 200 haste) Dá copy e inverte as cores. Ai clica < Enable Icons. Save, Load . Pronto. Ele ficará assim. Só clicar no lado dos Icons e ativará eles. Dá + Rep
  27. [8.60] Kalima // War System e Pet System

    natanaeljk reagiu a SkyDark por uma resposta no tópico

    1 ponto
    exp baixa ou alta?
  28. [8.60] Kalima // War System e Pet System

    natanaeljk reagiu a SkyDark por uma resposta no tópico

    1 ponto
    Mapa mt bom rep+ Foi mal,foi o limete de rep hj amanha eu dou
  29. Baiak Blade/Ndt By Nadotti [8.60]

    natanaeljk reagiu a Fellipin por uma resposta no tópico

    1 ponto
    Esse Maapa Bugadoo Se mata Os demons Elles nao morrem fica parado no red a vida delles (: REP - SERVIDOR DA MUIITO LAAG
  30. [Resolvido] Erro Stian's Repack Dev-Cpp

    Markin reagiu a leozynho123 por uma resposta no tópico

    -1 pontos
    resolvido, intalei o openssl manualmente baixando o pacote do site! obrigado e resolvido!
Líderes está configurado para São Paulo/GMT-03:00

Informação Importante

Confirmação de Termo