Ir para conteúdo

lordzetros

Membro
  • Registro em

  • Última visita

Tudo que lordzetros postou

  1. Bacana! Quando estava ligado a um projeto, pensei em fazer algo bem semelhante, isso vai se tornar algo banal daqui alguns anos, acho importante servidores fazerem esse tipo de integração o quanto antes, sem contar que hoje em dia é um diferencial e muitos players utilizam Discord. Parabéns.
  2. Muito bom, cara, para quem gosta do Autoloot dessa forma, vai ser de grande ajuda. As sugestões que iria dá, você já comentou no que "falta fazer", seria bacana tudo isso com modal e como você está utilizando revscript para o talkactions, tudo no mesmo script ficaria ótimo para quem apenas quer instalar no servidor.
  3. lordzetros respondeu ao post em um tópico de Kamity em Sistemas Show Off
    Bem bacana, cara. ?
  4. Ae, DdJs, acho que você precisa postar mais mapas para ver se anima mais o @Yinz, viu, ( ͡° ͜ʖ ͡°). Ah, e valeu pelos mapas, gente boa.
  5. lordzetros respondeu ao post em um tópico de OverBash em Suporte & Pedidos
    Muito bom!
  6. lordzetros respondeu ao post em um tópico de Coltera em Mapping Show Off
    Muito bom, cara. Parabéns!
  7. @Rayo Tem algumas sessões no fórum que utiliza uns tutoriais, dá uma pesquisada. Tem um grupo no Discord focado em programação OT Server - Lua, aonde tem uma gama de materiais lá. @ZikaLord Olá, colega, tudo bem? Cuidado a ambiguidade de variáveis, a sua tabela você declarou como item, e na função temos o 'item' também, no qual você tá acessando na o argumento de sua função, e não sua tabela. Com certeza isso irá gerar um erro na hora da execução de acessar um valor nulo.
  8. @d0gw4r Show. Então se a primeira não funcionou, pode ser que no seu data/XML/groups.xml não esteja setada a flag para o cargo determinado. Depois verifica lá e teste o código antigo, adicione isto abaixo de uma semelhante. <flag canbroadcast="1" />
  9. É porque ele tá entrando na primeira condição, do flag. Caso seja tfs 1.3, deixe seu código atualizo com as funções da versão atual, ficando desta forma: function onSay(player, words, param) if not (player:hasFlag(PlayerFlag_CanBroadcast)) then return true end print("> " .. player:getName() .. " broadcasted: \"" .. param .. "\".") for _, targetPlayer in ipairs(Game.getPlayers()) do targetPlayer:sendPrivateMessage(player, param, TALKTYPE_BROADCAST) end return false end Caso não resolva, verifique se sua conta do player que está utilizando o comando tem acesso necessário, experimente colocar type 5. (sua database -> accounts -> conta_escolhida: type 5), desta forma: Caso não queira setar o nível de acesso da conta, pode modificar o script deixando desta forma: local nivel_acesso = 2 -- ID dos GMs nas novas versoes function onSay(player, words, param) if not (player:getGroup():getId() >= nivel_acesso) then return true end print("> " .. player:getName() .. " broadcasted: \"" .. param .. "\".") for _, targetPlayer in ipairs(Game.getPlayers()) do targetPlayer:sendPrivateMessage(player, param, TALKTYPE_BROADCAST) end return false end Modifique o nível de acesso, no caso tá 2 porque é GM (versão atual 1.3). Caso queira outro ID, modifique ali a variável 'nivel_acesso'.
  10. Erro de formatação, muito comum quando copiamos códigos de sites/fóruns e colamos no arquivo. Segue anexo: login.lua
  11. Já tentou printar se está entrando no condicional do login?
  12. Atualmente a compilação da TFS 1.3 está diferente do tutorial em vídeo do post. Siga estes passos: https://github.com/otland/forgottenserver/wiki/Compiling-on-Windows-(vcpkg)
  13. lordzetros respondeu ao post em um tópico de OverBash em Suporte & Pedidos
    Muito bom, sucesso ao projeto!
  14. Conseguiu resolver? Desculpa, vi agora seu post. Caso não tenha, confira no game.cpp se você encontra os tipos de os TEXTCOLOR correto para cada tipo de dano. Ah, e outra, tenta trabalhar da forma recente, já que tá utilizando tfs 1.3. local combat = Combat() combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) Agora, em relação do MOTIVO de está saindo apenas roxo e azul, é porque o addHealth utiliza o changeHealth da source, que já é definido as cores. O que você pode fazer, ao invés de trabalhar com addHealth, é utilizar o "onGetFormulaValues", onde o mesmo retorna o mínimo e máximo, que é o que você também está fazendo. function onGetFormulaValues(player, skill, attack, factor) local min = player:getLevel() * 2 -- so um exemplo de como pode ser trabalhado local max = player:getLevel() * 3 return -min, -max end combat:setCallback(CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") O callback irá retornar os valores para a sua instância de Combat, da mesma forma que você trabalha com o targetCreature.
  15. Bom, não mexo com derivado, mas parte de programação é universal. Caso tenha alguma dúvida relacionada a essa área, e eu puder ajudar, só entrar em contato. Discord: Junior#4062
  16. Por nada, o esforço foi seu, muito normal a gente deixar passar esses pequenos detalhes e ficar quebrando cabeça para descobrir o motivo do bug.
  17. Infelizmente, sim.
  18. Esse erro tá ocorrendo ultimamente, já foi reportado em alguns issues no git do vcpkg, parece que uma atualização de teste afetou a compatibilidade.
  19. lordzetros respondeu ao post em um tópico de Markowiicz em Mapping Show Off
    Show de bola, cara. Muito bom!
  20. @torresmo01 Por nada. Acho que você não entendeu, ou não me expressei bem. O que quis dizer é que, quando o caster não tem party (nil), e um player alvo não tem party também (nil), vai entrar nessa condição que criou para party iguais: if castersParty == targetsParty then Porque nil == nill, logo, não terá dano aplicado sobre ele. Uma forma de solucionar este problema, seria checkar se o caster tem party, e se tiver, ser igual ao do target (caso ele tenha), para que assim, o dano seja anulado sobre amigos de party. Veja bem: local targetsParty = target:getParty() if (castersParty and castersParty == targetsParty) then return true end
  21. local config = { storage1 = 25091, storage2 = 25092, storage3 = 25093 } function onStepIn(cid, item, position, fromPosition) if (getPlayerStorageValue(cid, config.storage1) <= 0) then doPlayerSendCancel(cid, "You have not completed the first mission.") doTeleportThing(cid, fromPosition) doSendMagicEffect(position, 12) elseif (getPlayerStorageValue(cid, config.storage2) <= 0) then doPlayerSendCancel(cid, "You have not completed the second mission.") doTeleportThing(cid, fromPosition) doSendMagicEffect(position, 12) elseif (getPlayerStorageValue(cid, config.storage3) <= 0) then doPlayerSendCancel(cid, "You have not completed the third mission.") doTeleportThing(cid, fromPosition) doSendMagicEffect(position, 12) else doPlayerSendCancel(cid, "You accessed the prohibited area.") doSendMagicEffect(position, 13) end return true end Faça o teste, acredito que era só algum erro de codificação (às vezes acontece ao copiar e colar o código de algum fórum/site).
  22. Cuidado com as verificações antes de confirmar a existência de dados. Por exemplo, suponha que nem o player (caster) tenha party e o alvo (player também), ou seja, (castersParty == nil and targetsParty == nil) ---> nil == nil Enfim, quando ambos não tiverem party, não será removido vida do jogador. O que você pode fazer, é verificar se castersParty existe antes de verificar a igualdade entre as que citei acima.
  23. lordzetros respondeu ao post em um tópico de Ackerzin em Suporte Tibia OTServer
    data/movements/scripts/ crie um arquivo chamado pushEscada.lua e adicione isto dentro: local tempo = 3 -- tempo em segundos para o player ser movido local function isWalkable(pos) if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false elseif isCreature(getTopCreature(pos).uid) then return false elseif getTileInfo(pos).protection then return false elseif hasProperty(getThingFromPos(pos).uid, 3) or hasProperty(getThingFromPos(pos).uid, 7) then return false end return true end local function ver_tile(c, p, t) addEvent(function() local at_pos = getCreaturePosition(c) if (at_pos.x == p.x and at_pos.y == p.y and at_pos.z == p.z) then local tb = { {0, -1}, {-1, -1}, {-1, 0}, {-1, 1}, {0, 1}, {1, 1}, {1, 0}, {1, -1} } local l_rnd = math.random(1, #tb) local n_pos = {x = at_pos.x + tb[l_rnd][1], y = at_pos.y + tb[l_rnd][2], z = at_pos.z} if (isWalkable(n_pos)) then doTeleportThing(c, n_pos, true) else ver_tile(c, p, 1) end end end, t * 1000) end function onStepIn(cid, item, position, fromPosition) if (isPlayer(cid)) then ver_tile(cid, position, tempo) end end E em data/movements/movements.xml adicione isto abaixo de uma linha semelhante: <movevent type="StepIn" actionid="48758" event="script" value="pushEscada.lua"/>
  24. @louco3626 É nós, chefia. ?
  25. @Yinz kkkkkk, doente demais. Já já tô logando no counter para tu me dá aquelas aulinhas lá, ( ͡° ͜ʖ ͡°)

Informação Importante

Confirmação de Termo