
Tudo que xWhiteWolf postou
-
Problema com variável global
obrigado e de nada ^-^
-
Gran Castle Event (8.54+)
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!
- Novo Sistema de Trainer [0.36~0.4]
-
Problema com variável global
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.
- Novo Sistema de Trainer [0.36~0.4]
- Gran Castle Event (8.54+)
- Novo Sistema de Trainer [0.36~0.4]
-
Taunt
troca a parte da speed por isso aqui:
- Novo Sistema de Trainer [0.36~0.4]
- Sistema de Reset 100%
-
Frozen Orb
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)
-
Frozen Orb
tenta assim amigo:
- Gran Castle Event (8.54+)
-
Dash.
ok, vou ver de tentar fazer isso prox fds, q dia de semana p mim tá sem chance :~
-
Taunt
no speed tá até comentado a velocidade que ele vai ficar...
-
Dash.
tudo é possivel, só preciso descobrir se tem como remover o tile invisivel que eu iria criar.
-
Dash.
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
-
Taunt
inverte os dois primeiros parametros: Taunt(cid, variantToNumber(var), config.delay, config.walks)
-
Dash.
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?
-
Dash.
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?
-
Ao usar spell erros no TFS
http://prntscr.com/f8t2xx no erro que você postou o problema é no onKill, não no script do preparedeath.
- Mining System
- (Resolvido)Sistema de Mineração
-
Ao usar spell erros no TFS
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.
-
(Resolvido)Sorte, Sabedoria e Coragem
vai dar problema sim, usa do jeito q eu falei.. o npc tentem pedir pelo fórum.. to ocupadissimo