FlamesAdmin 261 Postado Fevereiro 15, 2014 Share Postado Fevereiro 15, 2014 Eae, gostaria de um comando que qnd o player digita ele (somente qnd ele tiver em fly), ele anda sozinho, e se ele digitar dnv, ele para de andar. Nao tem exausted para usar. Rep+ Link para o comentário Compartilhar em outros sites More sharing options...
zipter98 1101 Postado Fevereiro 16, 2014 Share Postado Fevereiro 16, 2014 (editado) Infelizmente, não encontrei uma maneira funcional de o jogador continuar andando "infinitamente". As que encontrei, geravam algum tipo de bug (travavam o servidor e etc). Para evitar tais erros, fiz assim: após x segundos (configuráveis, claro), o jogador "se cansa". Ou seja, o comando !fly é desativado. Espero que mesmo assim o código lhe satisfaça. PS: Como informado no script, não coloque valores muito altos nos segundos, pois o servidor pode travar. local cfg = { storage = 918311, fly_storage = 17000, seconds = 20, --Quantos segundos até o jogador "cansar". Recomendo não colocar um valor muito alto. } function isWalkable(pos)-- by Nord / editado por Omega if isCreature(getTopCreature(pos).uid) then return false elseif getTileInfo(pos).protection then return false else if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid ~= 0 then if hasProperty(getThingFromPos(pos).uid, 3) or hasProperty(getThingFromPos(pos).uid, 7) then return false end end end return true end function autoWalk(cid, id) local a = 0 for i = 1, (cfg.seconds * 2) do if getPlayerStorageValue(cid, cfg.storage) < 1 then break end if a == (cfg.seconds * 2) then setPlayerStorageValue(cid, cfg.storage, -1) doPlayerSendTextMessage(cid, 27, "Your character is exausted.") doCreatureSay(cid, "*Puff*", TALKTYPE_MONSTER) break end addEvent(function() if not isCreature(cid) then if id then return db.executeQuery("UPDATE player_storage SET value = -1 WHERE key = 918311 AND player_id = "..id) end end local tab = { [0] = {x = getThingPos(cid).x, y = getThingPos(cid).y - 1, z = getThingPos(cid).z}, [1] = {x = getThingPos(cid).x + 1, y = getThingPos(cid).y, z = getThingPos(cid).z}, [2] = {x = getThingPos(cid).x, y = getThingPos(cid).y + 1, z = getThingPos(cid).z}, [3] = {x = getThingPos(cid).x - 1, y = getThingPos(cid).y, z = getThingPos(cid).z}, } local lookdir = getCreatureLookDir(cid) local topos = tab[lookdir] if getPlayerStorageValue(cid, cfg.storage) < 1 then return true elseif isWalkable(topos) then if getTileThingByPos({x = topos.x, y = topos.y, z = topos.z, stackpos = 0}).itemid == 0 then doCombatAreaHealth(cid, 0, topos, 0, 0, 0, CONST_ME_NONE) doCreateItem(11676, 1, topos) end doTeleportThing(cid, topos) a = a + 1 else setPlayerStorageValue(cid, cfg.storage, -1) doPlayerSendTextMessage(cid, 27, "Há algum objeto à sua frente impedindo a passagem.") return true end end, i * 500) end end function onSay(cid, words) if getPlayerStorageValue(cid, cfg.fly_storage) < 1 then return doPlayerSendCancel(cid, "Para usar este comando, você deve estar em Fly.") elseif getPlayerStorageValue(cid, cfg.storage) >= 1 then return setPlayerStorageValue(cid, cfg.storage, -1) and doPlayerSendTextMessage(cid, 27, "Comando !fly desativado.") else doPlayerSendTextMessage(cid, 27, "Comando !fly ativado.") setPlayerStorageValue(cid, cfg.storage, 1) autoWalk(cid, getPlayerGUID(cid)) end return true end Editado Fevereiro 16, 2014 por zipter98 Link para o comentário Compartilhar em outros sites More sharing options...
FlamesAdmin 261 Postado Fevereiro 16, 2014 Autor Share Postado Fevereiro 16, 2014 (editado) Vlw mano, ta bom desse jeito msm. Você já atingiu seu limite de reputações positivas para hoje Jaja te dou Rep. --EDIT-- Só tem um probleminha, qnd eu dou !fly no andar acima, aparece isso: 23:59 Comando !fly ativado. 23:00 Há algum objeto à sua frente impedindo a passagem. E tipo, teria como vc por pra qnd usar !fly, ficar com uma velocidade um pouco mais alta ? Editado Fevereiro 16, 2014 por FlamesAdmin Link para o comentário Compartilhar em outros sites More sharing options...
zipter98 1101 Postado Fevereiro 16, 2014 Share Postado Fevereiro 16, 2014 (editado) Sobre o primeiro caso, é porquê não é possível andar normalmente em pisos "vazios" (no caso do Fly, o "ar"). Como, no código, para teleportar o jogador é necessário que o piso seja "andável", retorna ao jogador esta mensagem, pelo motivo que citei. Como corrigir, é algo que vou pensar. Sobre o segundo, logo edito o código com isso. #EDIT: Primeiro erro, corrigido. Código alterado. Editado Fevereiro 16, 2014 por zipter98 Link para o comentário Compartilhar em outros sites More sharing options...
FlamesAdmin 261 Postado Fevereiro 16, 2014 Autor Share Postado Fevereiro 16, 2014 Sem problemas. Link para o comentário Compartilhar em outros sites More sharing options...
Drk Shadow 48 Postado Fevereiro 16, 2014 Share Postado Fevereiro 16, 2014 @Zipter98 Aqui não da pra usar o comando quando estiver no chão, só quando no ar, e quando ta no ar, fica dando esses erros sem parar: [16/02/2014 17:47:59] [Error - TalkAction Interface] [16/02/2014 17:47:59] In a timer event called from: [16/02/2014 17:47:59] data/talkactions/scripts/fly.lua:onSay [16/02/2014 17:47:59] Description: [16/02/2014 17:47:59] (luaHasItemProperty) Item not found [16/02/2014 17:48:00] [Error - TalkAction Interface] [16/02/2014 17:48:00] In a timer event called from: [16/02/2014 17:48:00] data/talkactions/scripts/fly.lua:onSay [16/02/2014 17:48:00] Description: [16/02/2014 17:48:00] (luaHasItemProperty) Item not found [16/02/2014 17:48:00] [Error - TalkAction Interface] [16/02/2014 17:48:00] In a timer event called from: [16/02/2014 17:48:00] data/talkactions/scripts/fly.lua:onSay [16/02/2014 17:48:00] Description: [16/02/2014 17:48:00] (luaHasItemProperty) Item not found Link para o comentário Compartilhar em outros sites More sharing options...
zipter98 1101 Postado Fevereiro 16, 2014 Share Postado Fevereiro 16, 2014 (editado) Infelizmente, não sei o quê pode estar causando o primeiro erro com você (o de não poder usar o comando no chão). Pelo menos aqui, está funcionando perfeitamente. Sobre o segundo erro, foi falta de atenção minha. Corrigi ele e mais um "erro". Código alterado. PS: Sobre o pedido de aumentar a velocidade neste comando, acontece o seguinte: na verdade, o jogador se teleporta, e não "anda", como parece na prática. E o intervalo de tempo entre estes teleportes é de 500 milésimos. Ou seja, a velocidade do jogador de nada altera nisto. Tanto um jogador com slow que anula 90% de sua velocidade, quanto um jogador com o triplo de sua real velocidade "voariam" na mesma velocidade. Porém, se você quiser mesmo que a velocidade seja aumentada, pode ser feita um cálculo com a speed do jogador para altear o intervalo de tempo. Editado Fevereiro 16, 2014 por zipter98 Link para o comentário Compartilhar em outros sites More sharing options...
FlamesAdmin 261 Postado Fevereiro 16, 2014 Autor Share Postado Fevereiro 16, 2014 Infelizmente, não sei o quê pode estar causando o primeiro erro com você (o de não poder usar o comando no chão). Pelo menos aqui, está funcionando perfeitamente. Sobre o segundo erro, foi falta de atenção minha. Corrigi ele e mais um "erro". Código alterado. PS: Sobre o pedido de aumentar a velocidade neste comando, acontece o seguinte: na verdade, o jogador se teleporta, e não "anda", como parece na prática. E o intervalo de tempo entre estes teleportes é de 500 milésimos. Ou seja, a velocidade do jogador de nada altera nisto. Tanto um jogador com slow que anula 90% de sua velocidade, quanto um jogador com o triplo de sua real velocidade "voariam" na mesma velocidade. Porém, se você quiser mesmo que a velocidade seja aumentada, pode ser feita um cálculo com a speed do jogador para altear o intervalo de tempo. Bah, entao deixa sem esse bang de velocidade entao hehe. Ta pronto o código ? Link para o comentário Compartilhar em outros sites More sharing options...
zipter98 1101 Postado Fevereiro 17, 2014 Share Postado Fevereiro 17, 2014 Ahã. Ele se encontra no meu primeiro comentário (optei por editá-lo, ao invés de mandar 1 código por comentário). Link para o comentário Compartilhar em outros sites More sharing options...
FlamesAdmin 261 Postado Fevereiro 17, 2014 Autor Share Postado Fevereiro 17, 2014 Conseguiu arrumar o bang de fly no andar de cima ? Link para o comentário Compartilhar em outros sites More sharing options...
zipter98 1101 Postado Fevereiro 17, 2014 Share Postado Fevereiro 17, 2014 Corrigi esse bug ontem. Link para o comentário Compartilhar em outros sites More sharing options...
FlamesAdmin 261 Postado Fevereiro 17, 2014 Autor Share Postado Fevereiro 17, 2014 Ta ok entao, pode mover e obg. Link para o comentário Compartilhar em outros sites More sharing options...
zipter98 1101 Postado Fevereiro 17, 2014 Share Postado Fevereiro 17, 2014 Tópico movido para a seção de dúvidas e pedidos resolvidos. Link para o comentário Compartilhar em outros sites More sharing options...
fabiosa 8 Postado Março 23, 2014 Share Postado Março 23, 2014 me fala certo aonde eu adc as task e os locais pra mim ligar certo, porque sou novo e ali não fala aonde por e tals. valendo rep. Link para o comentário Compartilhar em outros sites More sharing options...
Stigal 584 Postado Abril 21, 2018 Share Postado Abril 21, 2018 A questão neste tópico de suporte foi encerrada por falta de respostas. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta. + Caso a dúvida não tenha sido resolvida você poderá criar outro tópico solicitando ajuda. * Lembre-se que é permitido dar UP no tópico a cada 24 horas para assim o destacar e manter movimentado. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados