
-
Under reagiu a uma resposta no tópico: (Resolvido)Como adicionar sistema de quiver ao tfs 1.4.2 sem trocar o protocolo para 12.x
-
luanluciano93 reagiu a uma resposta no tópico: (Resolvido)Como adicionar sistema de quiver ao tfs 1.4.2 sem trocar o protocolo para 12.x
-
(Resolvido)Como adicionar sistema de quiver ao tfs 1.4.2 sem trocar o protocolo para 12.x
Consegui adicionar galera. De qualquer forma obrigado! Para adicionar quiver ao tfs 1.4.2 sem mudar para versão 12.x, você tem que fazer essas alterações na source: https://github.com/otland/forgottenserver/pull/4105/files Exceto as alterações dos arquivos networkmessage.cpp/player.h E Também essas linhas não devem ser adicionadas: weapon.cpp player->sendQuiverUpdate(); player.cpp // update quiver if (actorPlayer) { actorPlayer->sendQuiverUpdate(g_config.getBoolean(ConfigManager::CLASSIC_EQUIPMENT_SLOTS)); } Compilar: caso dê erro no <boost/filesystem.hpp>. Tente fazer isso: https://github.com/otland/forgottenserver/pull/3990/files créditos: Ranieri Althoff:https://github.com/otland/forgottenserver/pull/3990 Evil Punker: https://github.com/otland/forgottenserver/pull/4105
-
(Resolvido)Como adicionar sistema de quiver ao tfs 1.4.2 sem trocar o protocolo para 12.x
Mas esse sistema de quiver funciona como o do global?
-
gabrielsaintz alterou sua foto pessoal
-
gabrielsaintz reagiu a uma resposta no tópico: (Resolvido)Como adicionar sistema de quiver ao tfs 1.4.2 sem trocar o protocolo para 12.x
-
-
(Resolvido)Corrigir Spell tfs 1.4.2
Consegui arrumar uma solução!! Depois de muito tempo fazendo testes cheguei a esse resultado: local combat = Combat() combat:setArea(createCombatArea(AREA_CIRCLE5X5)) function getRandomPositions(cid) local player = Player(cid) local playerPos = player:getPosition() local areaCircle5x5 = {} -- cria uma nova AREA_CIRCLE5X5 com base na posição do meu personagem for i = -5, 5 do for j = -5, 5 do local dist = math.sqrt(i^2 + j^2) if dist <= 5 then table.insert(areaCircle5x5, {x=playerPos.x+i, y=playerPos.y+j, z=playerPos.z}) end end end local randomPosition = {} for i = 1, 1 do local index = math.random(1, #areaCircle5x5) table.insert(randomPosition, areaCircle5x5[index]) end return randomPosition end function spellCallback(cid, position, count, maxCount) if Creature(cid) and count < maxCount then if count == 0 and math.random(0, 1) == 1 or math.random(0, 15) == 1 then position:sendMagicEffect(CONST_ME_MORTAREA) doAreaCombat(cid, COMBAT_DEATHDAMAGE, position, 0, -100, -100, CONST_ME_EXPLOSIONHIT) end count = count + 1 local area = getRandomPositions(cid) -- pega uma nova posição aleatoria com base na posição do meu personagem local positionAreaCircle = {x= area[1].x, y= area[1].y, z= area[1].z} local position1 = Position(positionAreaCircle) if count > 1 and count < 81 or count > 81 and count < 145 then addEvent(spellCallback,50, cid, position1, count, maxCount) else addEvent(spellCallback,math.random(1000, 2000) , cid, position1, count, maxCount) end if count > 141 then addEvent(spellCallback,math.random(600, 3000) , cid, position1, count, maxCount) end end end function onTargetTile(creature, position) local maxCount = 145 -- quantidade de execuções spellCallback(creature:getId(), position, 0, maxCount) end combat:setCallback(CALLBACK_PARAM_TARGETTILE, "onTargetTile") function onCastSpell(creature, variant, isHotkey) return combat:execute(creature, variant) end Dentro do game: @FeeTads de qualquer forma obrigado pela ajuda!
-
gabrielsaintz reagiu a uma resposta no tópico: (Resolvido)Como adicionar sistema de quiver ao tfs 1.4.2 sem trocar o protocolo para 12.x
-
gabrielsaintz reagiu a uma resposta no tópico: (Resolvido)Como adicionar sistema de quiver ao tfs 1.4.2 sem trocar o protocolo para 12.x
-
(Resolvido)Como adicionar sistema de quiver ao tfs 1.4.2 sem trocar o protocolo para 12.x
Eu tentei mas quando compilei, não tava abrindo as backpacks. Acho que porque a versão do codigo que peguei como referencia já estava na versão 12.x... Vou tentar dnv depois... valeu gente!😁
-
(Resolvido)Corrigir Spell tfs 1.4.2
Eu tentei dessa forma também, porém não funcionou... Depois de um tempo printando o que vem de informação em cada parte, eu entendi o que é passado no position da combat:setCallback(CALLBACK_PARAM_TARGETTILE, "onTargetTile"). Explicação: function spellCallback(cid, position, count) if Creature(cid) then --[[ TEXTO 3 Sendo executada 4 vezes ao mesmo tempo e passando uma posição diferente a cada execução. Ela gera aquela primeira explosão do exemplo gif. Perceba que no gif a primeira explosão sai de forma aleatoria e não na AREA_CIRCLE5X5 como uma AOE(exevo gran mas frigo). Explicação: TEXTO 4 --]] if count > 0 or math.random(0, 1) == 1 then --[[ TEXTO 4 Esse if torna a primeira explosão aleatoria pois ele só executa a doAreaCombat se o math.random(0, 1) for igual a 1, assim fazendo com q, mesmo ela sendo executada varias vezes ao mesmo tempo, ele só dispara o dano e o efeito quando ela entrar aqui, nesse if. Caso eu mude esse if para: if count >= 0 then Ai sim ela vai excutar na AREA_CIRCLE5X5 completa... EXPLICAÇÃO BASEADA NO GIF. --]] position:sendMagicEffect(CONST_ME_MORTAREA) doAreaCombat(cid, COMBAT_DEATHDAMAGE, position, 0, -100, -100, CONST_ME_EXPLOSIONHIT) end if count < 3 then -- QUANTIDADE DE VEZES count = count + 1 --[[ TEXTO 5 Aqui é gerado os hits aletorios depois da primeira execução. me baseando na area que eu passei com 4 posições de hit, a partir o momento em que você usar a magia esse addEvent será executado 4 vezes ao mesmo tempo e passando uma posição diferente a cada execução. Porém como da pra ver a baixo no delay usamos tempo aleatorio que é dado pelo math.random(1000, 4000). Isso gera um loop de hits aleatorios dentro da area setada, até que o count chegue ao valor desejado. No caso desse código ele vai ser executado até que o count seja 3, isso faz com que a função spellCallback seja executada 20 vezes passando as mesmas posições dentro da area passada no inicio, porém o que torna aleatorio onde vai o efeito e dano é justamente o tempo em que ela vai ser executada. --]] addEvent(spellCallback, math.random(1000, 4000), cid, position, count) end end end function onTargetTile(creature, position) --[[ TEXTO 2 Aqui recebemos o creature e position da combat:setCallback(CALLBACK_PARAM_TARGETTILE, "onTargetTile"). creature = seu personagem position = { {0,1,0}, execução 1 {1,3,0}, execução 2 e 3 {0,1,0} execução 4 } Sendo assim ele vai executar a função spellCallback 4 vezes, e cada vez que for executada ela vai passar uma posição diferente, dentro da area que eu passei. --]] spellCallback(creature:getId(), position, 0) end local combat = Combat() combat:setArea(createCombatArea(AREA_CIRCLE5X5)) combat:setCallback(CALLBACK_PARAM_TARGETTILE, "onTargetTile") --[[ TEXTO 1 A CALLBACK_PARAM_TARGETTILE vai executar a onTargetTile varias vezes, isso depende do tamanho da área que você passou na combat:setArea(createCombatArea(AREA_CIRCLE5X5)). Exemplo: Se ao invés de AREA_CIRCLE5X5 eu passar uma área menor como: local area { {0,1,0}, <- 1 = posição de dano #1 {1,3,0}, <- 1,3 = posição de dano #2 e #3 {0,1,0} <- 1 = posição de dano #4 } combat:setArea(createCombatArea(area)) Ela vai ser executada 4 vezes ao mesmo tempo porque na area que eu passei existem 4 posições de dano. A cada vez que ela executar ela vai passar as areas, uma de cada vez, sendo #1, #2, #3 e por ultimo #4. --]] function onCastSpell(creature, variant, isHotkey) return combat:execute(creature, variant) end Então não adianta eu pegar o position assim cid:getPosition() e nem assim player:getPosition() porque a position é a posição onde vai hit se eu usar a posição do meu personagem o hit vai sempre nele mesmo... Espero que consiga entender, dei meu maximo na explicação...😅 Para resolver o problema, eu preciso arrumar uma forma de pegar uma posição aleatoria com base na posição do meu personagem toda vez antes de executar a spellCallback.
-
(Resolvido)Como adicionar sistema de quiver ao tfs 1.4.2 sem trocar o protocolo para 12.x
eai galera! Quero adicionar o sistema de quivers ao meu servidor, estou usando tfs 1.4.2 e quero manter compativel com a versão 1098. Tentei me basear uma pull request, até deu certo mas mudou a versão do meu jogo para 12.87, e quero que continue 1098.
-
(Resolvido)Corrigir Spell tfs 1.4.2
Bom... a magia ficou me seguindo, porém ela deixou de ser em area e ficou dando hits no meu sqm function spellCallback(cid, position, count) if Creature(cid) then local player = Player(cid) if count > 0 or math.random(0, 1) == 1 then position:sendMagicEffect(CONST_ME_HITBYFIRE) doAreaCombat(cid, COMBAT_FIREDAMAGE, player:getPosition(), 0, -100, -100, CONST_ME_EXPLOSIONHIT) end if count < 5 then count = count + 1 addEvent(spellCallback, math.random(1000, 4000), cid, player:getPosition(), count) end end end function onTargetTile(creature, position) spellCallback(creature:getId(), creature:getPosition() , 0) end local combat = Combat() combat:setArea(createCombatArea(AREA_CIRCLE5X5)) combat:setCallback(CALLBACK_PARAM_TARGETTILE, "onTargetTile") function onCastSpell(creature, variant, isHotkey) return combat:execute(creature, variant) end no game:
-
(Resolvido)Corrigir Spell tfs 1.4.2
Eai galera! Tenho uma Spell porém queria que ela seguisse meu personagem, alguém pode me dizer uma forma de fazer isso? A magia ta assim: function spellCallback(cid, position, count) if Creature(cid) then if count > 0 or math.random(0, 1) == 1 then position:sendMagicEffect(CONST_ME_HITBYFIRE) doAreaCombat(cid, COMBAT_FIREDAMAGE, position, 0, -100, -100, CONST_ME_EXPLOSIONHIT) end if count < 5 then count = count + 1 addEvent(spellCallback, math.random(1000, 4000), cid, position, count) end end end function onTargetTile(creature, position) spellCallback(creature:getId(), position, 0) end local combat = Combat() combat:setArea(createCombatArea(AREA_CIRCLE5X5)) combat:setCallback(CALLBACK_PARAM_TARGETTILE, "onTargetTile") function onCastSpell(creature, variant, isHotkey) return combat:execute(creature, variant) end Dentro do game: Quando ando para a esquerda ela continua na posição de onde eu fiz o cast dela. Até entendo o porque disso, ela só esta sendo executada 1 vez, com isso ela só registra a posição do meu personagem na hora que é castada. Meu objetivo é manter essa aleatoriedade nos hits porém quero que ela acompanhe meu personagem.
-
Como criar uma nova vocação TFS 1.4.2
Deu certo mano! valeu!
-
-
Como criar uma nova vocação TFS 1.4.2
Qual servidor ou website você utiliza como base? theforgottenserver 1.4.2 Qual o motivo deste tópico? Preciso de ajuda para criar uma nova vocação, tenho algumas dúvidas. Tentei criar para a vocação treinar skill club mais rápido, porém não consegui. Está surgindo algum erro? Se sim coloque-o aqui. Não consigo fazer a nova vocação treinar skill club mais rápido Exemplo: <vocation id="9" clientid="9" name="nova vocação" description="a nova vocação" gaincap="25" gainhp="15" gainmana="5" gainhpticks="2" gainhpamount="10" gainmanaticks="4" gainmanaamount="10" manamultiplier="3.0" attackspeed="2000" basespeed="220" soulmax="200" gainsoulticks="15" fromvoc="9"> <formula meleeDamage="1.0" distDamage="1.0" defense="1.0" armor="1.0" /> <skill id="0" multiplier="1.1" /> <skill id="1" multiplier="1.1" /> <skill id="2" multiplier="1.1" /> <skill id="3" multiplier="1.1" /> <skill id="4" multiplier="1.4" /> <skill id="5" multiplier="1.1" /> <skill id="6" multiplier="1.1" /> </vocation> Seria uma vocação parecida com o knight porém quero que ela consiga treinar apenas club mais rápido. Porém não consigo achar nos arquivos do servidor onde que eu defino qual skill a vocação vai upar mais rápido. Já tentei mexer no xml, mas nada acontece no game, continua tudo a mesma coisa, o que me leva a conclusão de que o treino é com base na vocação e não no xml. Alguém pode me ajudar???