Ir para conteúdo

Elwyn

Membro
  • Registro em

  • Última visita

Tudo que Elwyn postou

  1. Atualmente estou fazendo um ipchanger em Python e estou com um problema para identificar a versão. Resumidamente o código faz isso: >>> import ptrace >>> ptrace.attach(22876) >>> ptrace.peekdata(22876, 0x8048000 + 0x3320d4) 2336927755350992214 >>> hex(2336927755350992214) '0x206e6f6973726556' >>> ptrace.peekdata(22876, 0x8048000 + 0x3320d6) 7216209636618761074 >>> hex(7216209636618761074) '0x6425206e6f697372' >>> ptrace.detach(22876, 18) Usando a biblioteca ptrace 1.0.1 que pode ser encontrada aqui: https://pypi.python.org/pypi/ptrace/1.0.1 Bom, indo direto ao problema: Nesse caso acima "0x6425" deveria ser o número da versão antes do ponto. Tipo 10, 9, 8 e etc mas na verdade vem um %d. Onde posso achar a versão do Tibia usando um hexeditor? A propósito, quando este ipchanger estiver pronto ele vai suportar até a versão mais nova lançada, e ainda vai ser open-source. Tem outras pessoas da OTBr fazendo ipchanger também, como o Lordfire que está fazendo em C++ usando ptrace também.
  2. Em que lua você colocou? Eu não especifiquei, desculpa, mas não é para por no que você mostrou aqui, é para por no npc.lua em lib
  3. local sex = { [0] = {136, 137, 138, 139, 140, 141, 142, 147, 148, 149, 150, 155, 156, 157, 158, 252, 269, 270, 279, 288, 324}, [1] = {128, 129, 130, 131, 132, 133, 134, 143, 144, 145, 146, 151, 152, 153, 154, 251, 268, 273, 278, 289, 325} } local psex = sex[getPlayerSex(cid)] psex recebe uma tabela com valores inteiros apenas. for _, n in pairs(psex) do otf = {lookType = math.random(n[1], n[21]), lookHead = math.random(1, 133), lookBody = math.random(1, 133), lookLegs = math.random(1, 133), lookFeet = math.random(1, 133)} doSetCreatureOutfit(cid, otf, -1) doAddCondition(cid, condition_infight) doCreatureSetNoMove(cid, 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, text[1]) doPlayerSendCancel(cid, text[2]) setPlayerStorageValue(cid, storage, value) end math.random(n[1], n[21]) Aqui você tenta acessar uma tabela sendo que o valor n é inteiro. O que você quer fazer na verdade é: *Atenção: Eu retirei o for, ele não é necessário. otf = {lookType = n[math.random(1, 21)], lookHead = math.random(1, 133), lookBody = math.random(1, 133), lookLegs = math.random(1, 133), lookFeet = math.random(1, 133)} doSetCreatureOutfit(cid, otf, -1) doAddCondition(cid, condition_infight) doCreatureSetNoMove(cid, 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, text[1]) doPlayerSendCancel(cid, text[2]) setPlayerStorageValue(cid, storage, value) Eu não tenho TFS 0.3.1 então não posso testar mas creio que "doPlayerSendCancel(cid, text[2])" vai cancelar a ação de equipar. Tem outro erro também, em onEquip: setPlayerStorageValue(cid, storage, value) value é -1, mas em onDeEquip você faz: if getPlayerStorageValue(cid, storage) >= 1 then Mas hora nenhuma em onEquip você seta storage como 1, logo ele vai continuar com a outfit. Outro detalhe. Esse script não vai mudar outfit continuamente ao equipar o ring.
  4. https://gist.github.com/gugahoa/be77c5d37cd6e8f96a3c Se quiser eu coloco o código aqui. O player vai receber o aviso de "You don't have enought capacity." enquanto estiver com exhaust. Eu botei o exhaust para durar 1s, se quiser por mais é só alterar em: Player(cid):setStorageValue(11002, os.time() + 1) Você está usando isso porque comprar muito item com container em pouco tempo trava o servidor? Se sim, talvez eu tenha uma solução melhor.
  5. Elwyn postou uma resposta no tópico em Suporte Tibia OTServer
    Nessa linha: if(((potion.level and getPlayerLevel(cid) < potion.level) or (potion.vocations and not isInArray(potion.vocations, getPlayerVocation(cid)))) and not getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES)) você especifica que GM não pode usar e você está tentando usar em um GM. Crie um player normal ou retire essa parte do if, ficando só assim: if ((potion.level and getPlayerLevel(cid) < potion.level) or (potion.vocations and not isInArray(potion.vocations, getPlayerVocation(cid))) then Mas ainda tem um detalhe. Se quiser fazer com que você possa usar a potion como GM é só mudar o if para: if(((potion.level and getPlayerLevel(cid) < potion.level) or (potion.vocations and not isInArray(potion.vocations, getPlayerVocation(cid)))) or getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES))

Informação Importante

Confirmação de Termo