Ir para conteúdo

xWhiteWolf

Héroi
  • Registro em

  • Última visita

Tudo que xWhiteWolf postou

  1. obrigado e de nada ^-^
  2. tenta com isso aqui: http://prntscr.com/fei271 ps: ignora a função getPosByDir, eu só criei ela pra fazer o teste. O que vc precisa fazer é criar um novo parametro chamado dir na função e chamar ele no addEvent da função recursiva. Aí você vai fazer algo praticamente igual a isso só que remover o for j e o for dos prints. e no lugar do printmsg vc coloca pra ele soltar o distance effect entre pos1 e pos2. Tenta fazer sozinho, sei que pode parecer algo muito complexo de inicio mas se vc executar no repl.it e ir entendendo o que cada parte faz eu acredito que você consegue!
  3. o problema desse sistema é que se vc tem um servidor com mil players fica osso fazer mil salas e principalmente pra achar uma sala livre
  4. eu amo quando o pessoal pensa um pouco sobre o próprio problema. Tudo que você comentou aqui está corretíssimo!!! O que ocorre é o seguinte: os ambientes (talkactions, spells, monster, npc, actions, movements, creaturescripts.. etc.) tem escopos separados e uma lib nada mais é do que um arquivo que o tfs simplesmente cria cópias locais pra cada ambiente. Quando você altera na talkaction o que vc está fazendo é simplesmente alterar a variavel LOCAL do ambiente talkaction, o que não influi em nada na variavel local de mesmo nome do ambiente de actions. Você alterou uma cópia mas a original e as outras cópias estão intactas. Pra você alterar o valor real você tem uma série de soluções, porém a mais esperta de todas é entender que existem posições da memória próprias pra isso: as chamadas global storage. Semelhante ao storage de um player, as globais storage ficam definidas pra todos os ambientes. Tudo que você precisa fazer é usar as funções setGlobalStorageValue(posição da memoria, valor) e getGlobalStorageValue(posição da memória); o que você pode fazer é o seguinte: define a sua variavel da lib como VARIAVEL_01 = 17543 e usa setGlobalStorageValue(VARIAVEL_01, 1). na actions você coloca: getGlobalStorageValue(VARIAVEL_01) == 0. Dessa forma você garante que ambos vão sempre estar lendo e escrevendo na posição certa da memória já que o valor é controlado pela lib e ao mesmo tempo você tem variáveis salvas e compartilhadas entre todos os ambientes. PS: não sei se o nome da função é exatamente setGlobalStorageValue e getGlobalStorageValue, mas é algo parecido com isso.
  5. qnd vc tomou debug e relogou aonde estava o trainer? vc verificou se tem alguma propriedade no tile onde a criatura nasceu? ta muito estranho isso ://
  6. vc tem que mudar a função recursiva pra ir de area a area, similar a do gran tower só que só com um efeito.
  7. ele não ataca pq vc tá usando o tile do depot no trainer, o monstro não ataca quem está nesse tile se não me engano. Faz o teste de tentar trocar o tile ou tentar sumonar o monstro com o gm dentro da cabine do trainer pra ver se ele ataca o player
  8. xWhiteWolf postou uma resposta no tópico em Action, MoveEvent, TalkAction & Spell
    troca a parte da speed por isso aqui:
  9. já verificou se aonde o player está tem alguma tag especial como no pvp ou protect zone?
  10. você consegue alterar a cap tanto pela query no banco de dados adicionando uma virgula e inserindo a coluna da capacidade que se nao me engano é `capacity` e se nao me engano existe alguma função de setar cap tb que você pode usar só adicionando uma linha de código.
  11. xWhiteWolf postou uma resposta no tópico em Sistemas, Mods & Funções .lua
    o primeiro passo é aumentar a area que a spell acerta: local arr = { {1, 1, 1}, {1, 3, 1}, -- area que vai acertar a spell enquanto estiver rodando {1, 1, 1}, } O dano da spell só depende dessa area, todo o resto é só efeito. Pra modificar os efeitos vc precisa modificar 3 funções: a init, a middle e a end effect. function initEffect(position) for i = 0, 3 do local pos = {x = position.x, y = position.y, z = position.z} local dir = getPosByDir(pos, i) doSendDistanceShoot(position, dir, config.effect1) end addEvent(doSendMagicEffect, 300, position, config.effect2) return true end function middleEffect(cid, param, position, lim, count) n = count or 0 if isCreature(cid) and n < lim then local position = getCreaturePosition(cid) for i = 0, 3 do local pos = {x = position.x, y = position.y, z = position.z} local pos2 = {x = position.x, y = position.y, z = position.z} local dir = getPosByDir(pos, i) local dir2 = getPosByDir(pos2, i + 1 <= 3 and i + 1 or 0) doSendDistanceShoot(dir, dir2, config.effect1) end doCombat(cid, combat, param) addEvent(middleEffect, config.velocidade, cid, param, position, lim, n + 1) end return true end function endEffect(position) local position = getCreaturePosition(cid) for i = 0, 3 do local pos = {x = position.x, y = position.y, z = position.z} local dir = getPosByDir(pos, i) doSendDistanceShoot(dir, position, config.effect1) end return true end tenta entender como elas funcionam, vai debugando o código na sua cabeça ou num papel pra entender o que cada função faz e como ela faz isso. Mas basicamente a primeira função solta 1 efeito até cada sqm norte, sul, leste e oeste. A segunda fica fazendo o efeito de ir de uma quina a outra e a terceira faz o contrário da primeira pra voltar o efeito e dar a sensação de que a magia saiu, ficou rodando e voltou... Com esse entendimento e percebendo como cada for atua pra soltar esses efeitos você consegue editar pra aumentar a area; Pra primeira função e a ultima função, tudo que vc precisa fazer é adicionar +1 sqm nessa função aqui: local dir = getPosByDir(pos, i) essa função tem 3 parametros, sendo o terceiro opcional: 1- a posição 2- a direção 3- a distancia. pos é a posição e i é a direção, pra aumentar em +1 sqm temos que modificar isso para usar o terceiro parametro: local dir = getPosByDir(pos, i, 2) O processo é semelhante para a função middle, com a diferença de que ela utiliza duas posições ao invés de somente uma. local dir = getPosByDir(pos, i, 2) local dir2 = getPosByDir(pos2, i + 1 <= 3 and i + 1 or 0, 2)
  12. xWhiteWolf postou uma resposta no tópico em Sistemas, Mods & Funções .lua
    tenta assim amigo:
  13. aquele "efeito" nada mais é do que vários doSendAnimatedText saindo bem rapidinho. É mais facil fazer um script do 0 pra isso do que tentar aproveitar a lib desse evento pra fazer isso q vc quer.
  14. xWhiteWolf postou uma resposta no tópico em Sistemas, Mods & Funções .lua
    ok, vou ver de tentar fazer isso prox fds, q dia de semana p mim tá sem chance :~
  15. xWhiteWolf postou uma resposta no tópico em Action, MoveEvent, TalkAction & Spell
    no speed tá até comentado a velocidade que ele vai ficar...
  16. xWhiteWolf postou uma resposta no tópico em Sistemas, Mods & Funções .lua
    tudo é possivel, só preciso descobrir se tem como remover o tile invisivel que eu iria criar.
  17. xWhiteWolf postou uma resposta no tópico em Sistemas, Mods & Funções .lua
    eu to tentando imaginar os casos absurdos onde o player possa cair de uma montanha em algum lugar q ele fique preso e como fazer pra tentar superar isso
  18. xWhiteWolf postou uma resposta no tópico em Action, MoveEvent, TalkAction & Spell
    inverte os dois primeiros parametros: Taunt(cid, variantToNumber(var), config.delay, config.walks)
  19. xWhiteWolf postou uma resposta no tópico em Sistemas, Mods & Funções .lua
    3 segundos ou 3 sqms? e como eu faria pra checar se tem sqm em baixo pra ele cair ou se ele ia cair no void?
  20. xWhiteWolf postou uma resposta no tópico em Sistemas, Mods & Funções .lua
    não entendi direito a primeira parte.. basicamente vc quer q eu veja se caso nao haja tile ele crie o tile do fly e permita o player sobrevoar o nada? e se a spell acabar e ele continuar no nada?
  21. http://prntscr.com/f8t2xx no erro que você postou o problema é no onKill, não no script do preparedeath.
  22. é só colocar esses ids na tabela de mineração, o creatureSay vc pode colocar embaixo/acima da linha que solta o efeito
  23. acabei confundindo os tópicos, é que ele me pediu esse sistema e depois que eu fiz eu criei um tópico sobre ele que você pode encontrar aqui: Nos comentários desse tópico você vai achar, desculpe a confusão.
  24. pro terceiro, faltou um then no final da primeira linha if not((player1.uid and player1.uid > 0) and (player2.uid and player2.uid > 0) and (player3.uid and player3.uid > 0) and (player4.uid and player4.uid > 0)) then pro segundo: se esta preparedeath no xml o callback deveria ser onPrepareDeath e não onKill na função.
  25. vai dar problema sim, usa do jeito q eu falei.. o npc tentem pedir pelo fórum.. to ocupadissimo

Informação Importante

Confirmação de Termo