
Tudo que lordzetros postou
-
(Resolvido)Erro ao tentar excluir contar da database MYSQL
@gabriel28 Acontece, colega, kkkk, já passei por isso muitas vezes, valeu!
-
(Resolvido)[SUPORTE] NPC RESET não volta level!
Show de bola, fico feliz que tenha dado certo com os problemas, abraço!
-
(Resolvido)Erro ao tentar excluir contar da database MYSQL
Você colocou o ; (Ponto e vírgula) no final de cada comando? Porque não estou vendo no código que colou aí, .
-
(Resolvido)[SUPORTE] NPC RESET não volta level!
Teste com esse: local tab = { [13] = {effect = 58}, -- [vocationID] = {effect = Number} [14] = {effect = 58}, [15] = {effect = 58}, [16] = {effect = 58} } local delay = 3 -- tempo do efeito da aura em segundos function ariseAura(cid) doSendMagicEffect(getThingPos(cid), tab[getPlayerVocation(cid)].effect) addEvent(function() if isPlayer(cid) then ariseAura(cid) end end, delay * 1000) return true end function onLogin(cid) if tab[getPlayerVocation(cid)] then ariseAura(cid) end return true end
-
(Resolvido)[SUPORTE] NPC RESET não volta level!
Certo, então vamos para outra parte, pode me enviar como está na distro agora?
-
(Resolvido)[SUPORTE] NPC RESET não volta level!
Vou tentar te ajudar por partes, certo? Esse errinho de executeQuery é que em algumas versões são compiladas como db.query, que são iguais, ou seja, mesmas funções. Então, tente trocar essas funções no código, ontem tem executeQuery, troque por db.query.
-
(Resolvido)Arvore
--[[ ****** DATA/ACTIONS/ACTIONS.XML ******* <action itemid="idARVORE" event="script" value="itemArvore.lua"/> ]] --[[ ****** DATA/ACTIONS/SCRIPTS/itemArvore.lua ****** ]] local config = { itemCair = 5252, -- ITEM QUE IRA CAIR DA ARVORE qntdCair = 1, -- QNTD QUE IRA CAIR DA ARVORE arvoreID = 9751, -- ID da ÁRVORE que o player IRÁ CLICKAR storageTempo = 54321, -- STORAGE guardarar o TEMPO, N MUDE, CASO N SAIBA DO QUE SE TRATA tempo = 60, -- TEMPO PARA O USUARIO USAR NOVAMENTE, EM MINUTOS, 1 hora = 60 minutos msgSucesso = "Voce conseguiu! Meus parabens!!!", -- MENSAGEM SE O PLAYER CONSEGUIR O ITEM msgFalha = "Infelizmente nao foi dessa vez, tente na proxima!" -- MENSAGEM CASO O PLAYER NAO GANHE O ITEM } function onUse(cid, item, fromPos, item2, toPos) if (item.itemid == config.arvoreID) then if (getPlayerStorageValue(cid, config.storageTempo) < os.time()) then local porcento = math.random(1,100) local pos = getPlayerPosition(cid) if (porcento >= 1 and porcento <= 25) then doPlayerAddItem(cid,config.itemCair,config.qntdCair) doSendMagicEffect(pos,CONST_ME_MAGIC_RED) doPlayerSendCancel(cid,config.msgSucesso) setPlayerStorageValue(cid, config.storageTempo, os.time() + config.tempo * 60) return true else setPlayerStorageValue(cid, config.storageTempo, os.time() + config.tempo * 60) return doPlayerSendCancel(cid,config.msgFalha) and doSendMagicEffect(pos,CONST_ME_POFF) end else doPlayerSendCancel(cid,"Voce so pode tentar novamente depois de " .. config.tempo .. " minutos") end end return true end
-
Storage value vira simbolo
local storage = 19387 local tempo = 550 local minutes = 1 local limit = 2520 function onAttack(cid, target) if getPlayerStamina(cid) >= limit then return true end if type(getPlayerStorageValue(cid, STORAGE)) ~= "number" then setPlayerStorageValue(cid, STORAGE, 0) end if isMonster(target) and getCreatureName(target) == 'Target' then doPlayerSetStorageValue(cid, storage, getPlayerStorageValue(cid, storage)+1) if getPlayerStorageValue(cid, storage) >= tempo then doPlayerAddStamina(cid, minutes) doPlayerSetStorageValue(cid, storage, 0) doCreatureSay(cid, "You received 1 minute of stamina.", TALKTYPE_ORANGE_1) end end return true end Só trocar STORAGE pelo valor que precisa. Teste e poste o resultado aqui, :).
-
(Resolvido)NPC Barco , Viajar PK , PZ Battle ou Normal
Posta o código novamente após as modificações, por gentileza. Edit: Eu cometi um engano, na parte do script em si, em que você está trabalhando, não pode usar |PLAYERNAME|, fui dá uma olhada no código e percebi que, a função creatureGetName, na verdade sempre vai retornar nulo, pois a mesma é getCreatureName(cid), e não dá forma que estava no script. Teste aí e me informe como que ficou, @Micheel15
-
(Resolvido)NPC Barco , Viajar PK , PZ Battle ou Normal
Onde tem creatureGetName(cid) Use |PLAYERNAME|
-
ESTAO INVADINDO MEUT OT 8.6 HELP :(
Pode ser n fatores, cara... Pode ser que você esteja infectado e o cara tá pegando sua senha Pode ser um simples script de alguma base que você pegou que dá acesso 5 ao usá-lo... Pode ser algum usuário que já veio na database com acesso, portanto tente remover os que têm acesso... Obs.: Se for algum membro que tá online, fiz um script para verificar quantas pessoas tá registrado na administração do servidor (se for tutor para cima), apesar de você poder conferir na database, que é até mais precisa, pois pega os membros offline também, mas de qualquer forma: em data/talkactions/ abra o arquivo talkactions.lua e coloque isso em alguma linha: <talkaction log="yes" access="5" words="/verificar" event="script" value="verificaMembros.lua"/> Salve o arquivo e abra agora a pasta data/talkactions/scripts/ e crie um arquivo chamado verificaMembros.lua Abra-o e cole isso aqui dentro dele: function onSay(cid, words) local players = getPlayersOnline() local aux = 0 for i, jogador in ipairs(players) do if (getPlayerAccess(jogador) >= 2) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "O player " .. getCreatureName(jogador).. " tem acesso " ..getPlayerAccess(jogador).. " no servidor!") aux = aux + 1 end end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Total de players online na administracao: " ..aux) return true end Depois que fez tudo, é só você abrir novamente seu OT e quando quiser verificar se tem players com acesso online, digitar /verificar
-
Items que adicionam dias VIP
Conferiu se o arquivo tá na pasta? Se sim, qual a versão de sua TFS? Caso não saiba, geralmente elas mostram a versão assim que você abre o servidor (o programa em que mostrou o erro que você postou).
-
[PEDIDO] TELEPORT COM DELAY
@alexandrehc Disponha. Obrigado!
-
[PEDIDO] TELEPORT COM DELAY
@alexandrehc Opa, tu pegou esse último código aí que atualizei? A mensagem tem que está antes de criar o evento, viu? Caso já tenho pegado, ignore isso. Para mudar a cor basta você mudar nessa parte: doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, onde está em negrito, você pode trocar por: MESSAGE_STATUS_CONSOLE_BLUE = 4, Mensagem azul no console MESSAGE_STATUS_CONSOLE_RED = 13, Mensagem vermelha no console MESSAGE_STATUS_DEFAULT = 17, Mensagem branca na parte inferior da tela do jogo e no console MESSAGE_STATUS_WARNING = 18, Mensagem vermelha no centro da tela do jogo e no console MESSAGE_EVENT_ADVANCE = 19, Mensagem branca no centro da tela do jogo e no console MESSAGE_INFO_DESCR = 22, Mensagem verde no centro da tela do jogo e no console Tem mais, só pesquisar os types de mensagens que você encontra outros, ^^. Caso queira colocar o número, não tem problema, por exemplo, na do código eu poderia colocar 22 (MESSAGE_INFO_DESCR), ficando: doPlayerSendTextMessage(cid, 22,
-
[PEDIDO] TELEPORT COM DELAY
@alexandrehc Opa, tem sim, já já edito aqui. elseif msgcontains(msg, "report") then local tempoTeleport = 5 -- em minutos local posTeleport = {x = 100, y = 100, z = 7} -- posicao que o player vai, apos ficar X minutos no boss for k, v in pairs(tasks) do if getCreatureStorage(cid, v.questStarted) == 1 then if getCreatureStorage(cid, v.questStorage) >= v.killsRequired then for i = 1, table.maxn(v.rewards) do if(v.rewards[i].enable) then if isInArray({"boss", "teleport", 1}, v.rewards[i].type) then doTeleportThing(cid, v.rewards[i].values) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Voce tem "..tempoTeleport.." minutos para matar o Boss, caso nao consiga nesse tempo, sera teleportado para o templo de Thais!") addEvent(function() if isPlayer(cid) then doTeleportThing(cid,posTeleport) end end, tempoTeleport * 60 * 1000) elseif isInArray({"exp", "experience", 2}, v.rewards[i].type) then doPlayerAddExperience(cid, v.rewards[i].values) elseif isInArray({"item", 3}, v.rewards[i].type) then doPlayerAddItem(cid, v.rewards[i].values[1], v.rewards[i].values[2]) elseif isInArray({"money", 4}, v.rewards[i].type) then doPlayerAddMoney(cid, v.rewards[i].values) elseif isInArray({"storage", "stor", 5}, v.rewards[i].type) then doCreatureSetStorage(cid, v.rewards[i].values[1], v.rewards[i].values[2]) elseif isInArray({"points", "rank", 2}, v.rewards[i].type) then doCreatureSetStorage(cid, rankStorage, getCreatureStorage(cid, rankStorage) + v.rewards[i].values) else print("[Warning - Error::Killing in the name of::Tasks config] Bad reward type: " .. v.rewards[i].type .. ", reward could not be loaded.") end end end local rank = getCreatureStorage(cid, rankStorage) selfSay("Great!... you have finished the task number " .. k .. "" .. (rank > 4 and ", you are a " or "") .. "" .. (((rank > 4 and rank < 10) and ("Huntsman") or (rank > 9 and rank < 20) and ("Ranger") or (rank > 19 and rank < 30) and ("Big Game Hunter") or (rank > 29 and rank < 50) and ("Trophy Hunter") or (rank > 49) and ("Elite Hunter")) or "") .. ". Good job.", cid) doCreatureSetStorage(cid, v.questStarted, 2) break else if getCreatureStorage(cid, v.questStorage) < 0 then doCreatureSetStorage(cid, v.questStorage, 0) end selfSay("Current " .. getCreatureStorage(cid, v.questStorage) .. " " .. v.raceName .. " killed, you need to kill " .. v.killsRequired .. ".", cid) break end end end end return true end @alexandrehc pronto, pode testar que provavelmente está 100%.
-
[PEDIDO] TELEPORT COM DELAY
@alexandrehc lá no início do código, colega, 3° linha do código edit: @alexandrehc dei uma modificada no código, testa lá.
-
[PEDIDO] TELEPORT COM DELAY
@alexandrehc acho mais fácil um evento em que X minutos ele vai executar, não acha? O único problema, talvez seria se o player deslogar enquanto o tempo não acabar ou algo parecido, então recomendo que trate isso no mapa colocando zona de não deslogar. elseif msgcontains(msg, "report") then local tempoTeleport = 5 -- em minutos local posTeleport = {x = 100, y = 100, z = 7} -- posicao que o player vai, apos ficar X minutos no boss for k, v in pairs(tasks) do if getCreatureStorage(cid, v.questStarted) == 1 then if getCreatureStorage(cid, v.questStorage) >= v.killsRequired then for i = 1, table.maxn(v.rewards) do if(v.rewards[i].enable) then if isInArray({"boss", "teleport", 1}, v.rewards[i].type) then doTeleportThing(cid, v.rewards[i].values) addEvent(function() if isPlayer(cid) then doTeleportThing(cid,posTeleport) end end, tempoTeleport * 60 * 1000) elseif isInArray({"exp", "experience", 2}, v.rewards[i].type) then doPlayerAddExperience(cid, v.rewards[i].values) elseif isInArray({"item", 3}, v.rewards[i].type) then doPlayerAddItem(cid, v.rewards[i].values[1], v.rewards[i].values[2]) elseif isInArray({"money", 4}, v.rewards[i].type) then doPlayerAddMoney(cid, v.rewards[i].values) elseif isInArray({"storage", "stor", 5}, v.rewards[i].type) then doCreatureSetStorage(cid, v.rewards[i].values[1], v.rewards[i].values[2]) elseif isInArray({"points", "rank", 2}, v.rewards[i].type) then doCreatureSetStorage(cid, rankStorage, getCreatureStorage(cid, rankStorage) + v.rewards[i].values) else print("[Warning - Error::Killing in the name of::Tasks config] Bad reward type: " .. v.rewards[i].type .. ", reward could not be loaded.") end end end local rank = getCreatureStorage(cid, rankStorage) selfSay("Great!... you have finished the task number " .. k .. "" .. (rank > 4 and ", you are a " or "") .. "" .. (((rank > 4 and rank < 10) and ("Huntsman") or (rank > 9 and rank < 20) and ("Ranger") or (rank > 19 and rank < 30) and ("Big Game Hunter") or (rank > 29 and rank < 50) and ("Trophy Hunter") or (rank > 49) and ("Elite Hunter")) or "") .. ". Good job.", cid) doCreatureSetStorage(cid, v.questStarted, 2) break else if getCreatureStorage(cid, v.questStorage) < 0 then doCreatureSetStorage(cid, v.questStorage, 0) end selfSay("Current " .. getCreatureStorage(cid, v.questStorage) .. " " .. v.raceName .. " killed, you need to kill " .. v.killsRequired .. ".", cid) break end end end end return true end Acabou bugando a tabulação no código, mas é só dá uma arrumadinha, :D.
-
[PEDIDO] TELEPORT COM DELAY
Posta o script em que ele é teletransportado, por gentileza. Tentarei lhe ajudar.
-
(Resolvido)talkaction que da goto em player aleatorio
@poko360 Tem certeza? Aqui tá normal, . Vou atualizar novamente.
-
(Resolvido)talkaction que da goto em player aleatorio
Opa, que bom que resolveu, fiz uma pequena modificação numa verificação que se tornava inútil, se quiser copiar o novo código, ^^. Abç.
-
(Resolvido)talkaction que da goto em player aleatorio
Opa, é mesmo, tinha me esquecido disso, vou arrumar, quando editar esse post aqui eu te marco. Edit: @poko360 function onSay(cid, words, param, channel) function getAllPlayersInArea(fromPosition, toPosition) local players = {} for _, pid in ipairs(getPlayersOnline()) do local f = {x = fromPosition.x, y = fromPosition.y, z = fromPosition.z} local t = {x = toPosition.x, y = toPosition.y, z = toPosition.z} local min = (fromPosition.z > toPosition.z and toPosition.z or fromPosition.z) for index = 0, math.abs(toPosition.z - fromPosition.z) do f.z = min + index t.z = min + index if isInRange(getPlayerPosition(pid), f, t) then table.insert(players, pid) end end end return players end local function doTeleportToOnlinePlayers(cid) local trainerArea = {{x = 1022, y = 1026, z = 7}, {x = 1025, y = 1029, z = 7}} --- {canto superior direito}, {canto inferior direito} - pegando a area toda local playersTrainer = getAllPlayersInArea(trainerArea[1], trainerArea[2]) local ons = getPlayersOnline() if #ons < 2 then return doPlayerSendCancel(cid, "Don't have any player online, beyond you.") end for index, jogador in ipairs(ons) do for index2, jogador2 in ipairs(playersTrainer) do if (ons[index] == playersTrainer[index2]) then table.remove(ons, index) end end end local player_rand = ons[math.random(#ons)] if (player_rand == cid) then return false end local pos = getClosestFreeTile(cid, getThingPos(player_rand), true, false) if(not pos or isInArray({pos.x, pos.y}, 0)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Cannot perform action.") return true end local tmp = getThingPos(cid) if(doTeleportThing(cid, pos, true) and (not isPlayerGhost(cid))) then doSendMagicEffect(tmp, CONST_ME_POFF) doSendMagicEffect(pos, CONST_ME_TELEPORT) end return true end doTeleportToOnlinePlayers(cid) return true end
-
(Resolvido)talkaction que da goto em player aleatorio
@poko360 cara, tentei não fazer dessa forma, na qual não fizesse uma busca bruta, porém, só consegui dessa forma, espero que o ajude-o temporariamente e que alguém se manisfeste, caso resolva isso gastando menos memória para processamento... function onSay(cid, words, param, channel) function getAllPlayersInArea(fromPosition, toPosition) local players = {} for _, pid in ipairs(getPlayersOnline()) do local f = {x = fromPosition.x, y = fromPosition.y, z = fromPosition.z} local t = {x = toPosition.x, y = toPosition.y, z = toPosition.z} local min = (fromPosition.z > toPosition.z and toPosition.z or fromPosition.z) for index = 0, math.abs(toPosition.z - fromPosition.z) do f.z = min + index t.z = min + index if isInRange(getPlayerPosition(pid), f, t) then table.insert(players, pid) end end end return players end local function doTeleportToOnlinePlayers(cid) local trainerArea = {{x = 1022, y = 1026, z = 7}, {x = 1025, y = 1029, z = 7}} --- {canto superior direito}, {canto inferior direito} - pegando a area toda local playersTrainer = getAllPlayersInArea(trainerArea[1], trainerArea[2]) local ons = getPlayersOnline() if #ons < 2 then return doPlayerSendCancel(cid, "Don't have any player online, beyond you.") end for index, jogador in ipairs(ons) do for index2, jogador2 in ipairs(playersTrainer) do if (ons[index] == playersTrainer[index2]) then table.remove(ons, index) end end end local player_rand = ons[math.random(#ons)] if ((player_rand == cid)) then doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) return true end local pos = getClosestFreeTile(cid, getThingPos(player_rand), true, false) if(not pos or isInArray({pos.x, pos.y}, 0)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Cannot perform action.") return true end local tmp = getThingPos(cid) if(doTeleportThing(cid, pos, true) and (not isPlayerGhost(cid))) then doSendMagicEffect(tmp, CONST_ME_POFF) doSendMagicEffect(pos, CONST_ME_TELEPORT) end return true end doTeleportToOnlinePlayers(cid) end Teste aí e manda um retorno, :D. Na variável trainerArea é onde você vai colocar o canto superior direito e inferior direito da localização do trainer.
-
(Resolvido)ITEM UPGRADE
@erimyth @Sttorm Acho engraçado vocês chamarem de gambiarra, haha, mas tudo bem, eu até entendo por conta do tamanho do script (no qual eu falei na resposta, que está desta forma por ser mais fácil de entender e consumir menos memória na hora da execução no servidor dele). Após ele ter dito que era apenas em 2 itens, isso foi mais adequado, apesar de ser mais difícil de 'configurar' (se ele tivesse dito que iria adicionar mais itens, eu poderia ter feito da mesma maneira na qual foi postada pelo Erimyth), ele não entrará no reservamento de memória aplicada dinamicamente pela tabela criada...
-
(Resolvido)talkaction que da goto em player aleatorio
Cara... não sei se é por conta que estou mexendo com Lua há pouco tempo, mas não tenho ideia alguma de como fazer essa verificação no meu conhecimento (posso dá uma estudada para te informar melhor), se for em APENAS uma área o local de trainer, o que pode ser feito é o mesmo mecanismo que fazem em zona de eventos/pvps, o script dá um check se o player está em uma determinada área, de x até z, e caso ele esteja, o mesmo não teleporta. Então fica a ideia aí para o pessoal mais experiente, vou tentar bolar aqui, pode ser que demore ou não, :D.
-
(Resolvido)ITEM UPGRADE
@Sotten Aqui: --[[ Script feito por Lordzetros para o fórum TibiaKing - pedido do usuario Sotten ]] local configItems = { idItem = 12661, -- Id do item que sera responsavel em clickar em cima do set para transforma-lo amountItem = 1, -- quantidade que sera removida apos ser usada no set para transformar message = "Item transformado com sucesso!" -- mensagem quando o item for transformado } local set = { -- Sets - antigo e novo oldHelmet = 7903, -- Antigo helmet, antes de transformar oldArmor = 7884, -- Antiga armor, antes de transformar oldLegs = 7885, -- Antiga legs, antes de transformar oldBoots = 7886, -- Antiga boots, antes de transformar newHelmet = 2343, -- Novo helmet, apos transformar newArmor = 9776, -- Nova armor, apos transformar newLegs = 9777, -- Nova legs, apos transformar newBoots = 9932 -- Nova boots, apos transformar } function onUse(cid, item, fromPosition, item2, toPosition) pos = getCreaturePosition(cid) efeito = CONST_ME_MAGIC_RED if (item2.itemid == set.oldHelmet) and doPlayerRemoveItem(cid,configItems.idItem,configItems.amountItem) then doSendMagicEffect(pos, efeito) doCreatureSay(cid, configItems.message, TALKTYPE_ORANGE_1) return doTransformItem(item2.uid,set.newHelmet) elseif (item2.itemid == set.oldArmor) and doPlayerRemoveItem(cid,configItems.idItem,configItems.amountItem) then doSendMagicEffect(pos, efeito) doCreatureSay(cid, configItems.message, TALKTYPE_ORANGE_1) return doTransformItem(item2.uid,set.newArmor) elseif (item2.itemid == set.oldLegs) and doPlayerRemoveItem(cid,configItems.idItem,configItems.amountItem) then doSendMagicEffect(pos, efeito) doCreatureSay(cid, configItems.message, TALKTYPE_ORANGE_1) return doTransformItem(item2.uid,set.newLegs) elseif (item2.itemid == set.oldBoots) and doPlayerRemoveItem(cid,configItems.idItem,configItems.amountItem) then doSendMagicEffect(pos, efeito) doCreatureSay(cid, configItems.message, TALKTYPE_ORANGE_1) return doTransformItem(item2.uid,set.newBoots) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, "Nao eh possivel fazer a transformacao neste item!") doSendMagicEffect(pos, CONST_ME_POFF) return true end return true end Você DEVE usar um item que permita a interação com outro item, por exemplo, uma pá (shovel) ela permite isso, caso você for adicionar um item para tal, necessita ter a CID de uma pá ou qualquer outro item permitindo essa interação. Caso ficou confuso, teste primeiro com o ID de uma pá, ou seja, onde tem 12661, substitua por 2554 e faça o teste. Estou no aguardo.