-
Total de itens
2553 -
Registro em
-
Última visita
-
Dias Ganhos
72
Tudo que zipter98 postou
-
Você provavelmente se esqueceu de configurar a tabela arrow. @ricardoberg Desculpe, não conheço a estrutura dos códigos desta base, mas suponho que basta algumas alterações no script que enviei para que funcione.
-
[Resolvido] ajuda com magia unown e air vortex
pergunta respondeu ao clebao666 de zipter98 em Resolvidos
OK, já terminei o Air Vortex. No entanto, irei testá-lo amanhã, já que estou ocupado no momento. Logo após os testes, escreverei o código das spells restantes. -
@Flaah Wow, obrigado. @shept Difícil, suponho que não. Porém, infelizmente, não comecei a estudar as funções e métodos do TFS 1.x+. Tentarei, no entanto, adaptá-lo para você. Caso não obtenha sucesso, peço que algum scripter com conhecimento sobre tal versão, se possível, converta o código.
-
local effect = 169 --by brun123 --alterado v1.9 \/ local arrow = {effect, duration} --Respectivamente, efeito e duração (segundos). function sendEffect(pos, time) if time < 0 then return true end doSendMagicEffect(pos, arrow[1]) addEvent(sendEffect, 1000, pos, time - 1) end local function func(cid, position, corpseid, effect) if not isCreature(cid) then return true end local corpse = getTileItemById(position, corpseid).uid if corpse <= 1 then return end if not isContainer(corpse) then return true end for slot = 0, (getContainerSize(corpse)-1) do local item = getContainerItem(corpse, slot) if item.uid <= 1 then return end if isStone(item.itemid) then return doSendMagicEffect(getThingPos(cid), effect) and sendEffect(position, arrow[2]) end end end function onKill(cid, target, lastHit) if not ehMonstro(target) then return true end local corpse = getMonsterInfo(getCreatureName(target)).lookCorpse addEvent(func, 5, getCreatureSummons(cid)[1], getThingPos(target), corpse, effect) return true end
-
Estranho, aqui funcionou perfeitamente Mas enfim, fiz uma edição em ambos os códigos que enviei anteriormente para tentar corrigir seu erro. Peço que teste o que mais lhe agrada e informe o resultado.
-
Não se preocupe em detalhar mais o código. Não é algo complexo, logo não sobrecarregaria tanto um scripter com, no mínimo, noções medianas de Lua.
-
Ops, esqueci de mencionar que o evento também deve ser registrado no arquivo .XML do monstro: <script> <event name="advantageSystem"/> </script> Também fiz uma alteração no código. Se a cor do dano depender do elemento, use este código: local config = { combatTable = { --[elemento] = { --doubleDamage = {"nome_do_monstro", vocation_id, vocation_id, "nome_do_monstro", "nome_do_monstro", etc}, --Vocações e monstros que tomarão o dobro do dano do elemento. --halfDamage = {"nome_do_monstro", vocation_id, vocation_id, "nome_do_monstro", "nome_do_monstro", etc}, --Vocações e monstros que tomarão metade do dano do elemento. --nilDamage = {"nome_do_monstro", vocation_id, vocation_id, "nome_do_monstro", "nome_do_monstro", etc}, --Vocações e monstros que tomarão dano nulo do elemento. --}, [COMBAT_FIREDAMAGE] = { doubleDamage = {"Rat", "Morgaroth", 5}, halfDamage = {"Orshabaal", 3}, nilDamage = {}, }, }, colors = { --[combat] = cor, [COMBAT_FIREDAMAGE] = COLOR_RED, --etc, }, } function onStatsChange(cid, attacker, type, combat, value) local cTable = config.combatTable[combat] if cTable and type == STATSCHANGE_HEALTHLOSS then local d, h, n, check, newValue = cTable.doubleDamage, cTable.halfDamage, cTable.nilDamage, isPlayer(cid) and getPlayerVocation(cid) or getCreatureName(cid), 0 if isInArray(d, check) then newValue = math.floor(value * 2) elseif isInArray(h, check) then newValue = math.floor(value / 2) elseif isInArray(n, check) then return false end if newValue ~= 0 then doCreatureAddHealth(cid, -newValue) doSendAnimatedText(getThingPos(cid), newValue, config.colors[combat] or 215) return false end end return true end function onLogin(cid) registerCreatureEvent(cid, "advantageSystem") return true end
-
Eu havia deixado um exemplo no código: [COMBAT_FIREDAMAGE] = { doubleDamage = {"Rat", "Morgaroth", 5}, halfDamage = {"Orshabaal", 3}, nilDamage = {}, }, Esses "Rat", "Morgaroth" e "Orshabaal" seriam o "nome_do_monstro". Já 5 e 3, vocation_id. A ordem em que os elementos são colocados não afeta em nada na funcionalidade do sistema.
-
Troque: if doPlayerRemoveMoney(cid, tab.aposta1[1]) then por: if doPlayerRemoveMoney(cid, valor) then
-
Qual a base do seu servidor? Se for PDA, peço que poste seu dropStone.lua (creaturescripts).
-
local combatTable = { --[elemento] = { --doubleDamage = {"nome_do_monstro", vocation_id, vocation_id, "nome_do_monstro", "nome_do_monstro", etc}, --Vocações e monstros que tomarão o dobro do dano do elemento. --halfDamage = {"nome_do_monstro", vocation_id, vocation_id, "nome_do_monstro", "nome_do_monstro", etc}, --Vocações e monstros que tomarão metade do dano do elemento. --nilDamage = {"nome_do_monstro", vocation_id, vocation_id, "nome_do_monstro", "nome_do_monstro", etc}, --Vocações e monstros que tomarão dano nulo do elemento. --}, [COMBAT_FIREDAMAGE] = { doubleDamage = {"Rat", "Morgaroth", 5}, halfDamage = {"Orshabaal", 3}, nilDamage = {}, }, } function onStatsChange(cid, attacker, type, combat, value) local cTable = combatTable[combat] if cTable and type == STATSCHANGE_HEALTHLOSS then local d, h, n, check, newValue = cTable.doubleDamage, cTable.halfDamage, cTable.nilDamage, isPlayer(cid) and getPlayerVocation(cid) or getCreatureName(cid), 0 if isInArray(d, check) then newValue = math.floor(value * 2) elseif isInArray(h, check) then newValue = math.floor(value / 2) return false elseif isInArray(n, check) then return false end if newValue ~= 0 then doCreatureAddHealth(cid, -newValue) doSendAnimatedText(getThingPos(cid), newValue, 215) return false end end return true end function onLogin(cid) registerCreatureEvent(cid, "advantageSystem") return true end Tags: <event type="login" name="advantageLogin" event="script" value="nome_do_arquivo.lua"/> <event type="statschange" name="advantageSystem" event="script" value="nome_do_arquivo.lua"/>
-
Sobre o que eu disse da tabela, foi referente ao código do Bruno Minervino
-
[Resolvido] ajuda com magia unown e air vortex
pergunta respondeu ao clebao666 de zipter98 em Resolvidos
Reparei que na PxG este Air Vortex, além de impedir com que o pokémon usuário se mova ou use outras spells, aplica um efeito de silence. Você quer da mesma maneira? Se sim, todos os pokémons pegos pelo movimento teriam este debuff aplicado? Também reparei que, quando o Shiny Fearow usa esta magia, há efeitos de "redemoinho" em volta dele. Saberia dizer se isto é parte da outfit ou efeitos individuais? Já no Unown Help, estes Unowns possuem tempo de duração? E este ataque usado por eles que você mencionou, como funciona? No Unown Rush, reparei que o efeito do dano em área é lançado algumas vezes. Neste caso, cada "lance" aplica dano ou este é aplicado apenas uma vez? E estou enganado, ou ao final da execução do movimento o Unown Legion fica com o buff do Barrier? Você gostaria disso também na spell (apesar de eu achar absurdamente estranho lol)? -
Seguindo a lógica do League of Legends, seria necessário matar outros monstros (torres) para enfim poder destruir o Nexus?
-
Na verdade, esta verificação seria necessária apenas se o cid estivesse dentro da área do evento. @topic E tem como o jogador sair do evento antes que este acabe? PS: Salvando os IPs numa tabela fora do callback permite que o evento aconteça apenas uma vez até o servidor ser novamente iniciado (ou até alguém recarregar as actions in-game/na distro).
-
E como a base do time inimigo seria destruída?
-
Então basta fazer uma verificação dos IPs dos jogadores na área do evento e um onLogin. lol... local area = {{x = x, y = y, z = z}, {x = x, y = y, z = z}} function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end for x = area[1].x, area[2].x do for y = area[1].y, area[2].y do local pos = {x = x, y = y, z = area[1].z} local c = getTopCreature(pos).uid if c > 0 and isPlayer(c) then if getPlayerIp(cid) == getPlayerIp(c) then return doPlayerSendCancel(cid, "There's already someone with your ip in the event...") and doTeleportThing(cid, fromPosition) end end end end return true end local area = {{x = x, y = y, z = z}, {x = x, y = y, z = z}} function onLogin(cid) if isInArea(getThingPos(cid), area[1], area[2]) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end return true end
-
[Resolvido] ajuda com magia unown e air vortex
pergunta respondeu ao clebao666 de zipter98 em Resolvidos
Ajudaria se você postasse um vídeo demonstrando as spells, juntamente de uma explicação detalhada. -
local ips = {} function onStepIn(cid) if not isPlayer(cid) then return true elseif isInArray(ips, getPlayerIp(cid)) then return doPlayerSendCancel(cid, "There's already someone with your IP in the event.") and doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end table.insert(ips, getPlayerIp(cid)) return true end
-
A storage que deve ser configurada é a mesma que estiver na tag da outfit em data/XML/outfits.xml. Exemplo: <outfit id="5" premium="yes" quest="181603"> <!-- A storage corresponde ao valor do atributo quest --> <list gender="0" lookType="586" name="Oriental"/> <list gender="1" lookType="585" name="Oriental"/> </outfit> Caso esta outfit fosse vendida pelo comando, a storage colocada na tabela correspondente seria 181603. Agora, o comando: local config = { itemId = 2160, outfits = { --["nome"] = {price = preço, storage = explicado no comentário}, ["vengeance"] = {price = 10, storage = xxx}, }, } function onSay(cid, words, param) if param == "" then return doPlayerSendCancel(cid, "Especify an outfit.") end local outfit = config.outfits[param:lower()] if outfit then if getPlayerStorageValue(cid, outfit.storage) > -1 then doPlayerSendCancel(cid, "You already bought this outfit.") else if doPlayerRemoveItem(cid, config.itemId, outfit.price) then doPlayerSendTextMessage(cid, 27, "You bought "..param.." outfit.") setPlayerStorageValue(cid, outfit.storage, 1) else doPlayerSendCancel(cid, "You do not have enough money ("..outfit.price.."x "..getItemNameById(config.itemId)..").") end end else doPlayerSendCancel(cid, "Invalid outfit.") end return true end
-
Esse erro começou quando você usou a action alterada?
-
Ah sim, código corrigido.
-
Como assim? Algo do tipo? <globalevent name="effects" interval="100" event="script" value="CyberQuest.lua"/> <globalevent name="effects" interval="2000" event="script" value="killTest.lua"/> Se for, sim, tem problema.
-
Globalevent: local config = { effect = xxx, --Efeito. hp = xxx, --HP tirada. pos = { {x = x, y = y, z = z}, {x = x, y = y, z = z}, {x = x, y = y, z = z}, --etc }, } function onThink() for _, pos in pairs(config.pos) do local c = getTopCreature(pos).uid doSendMagicEffect(pos, config.effect) if c > 0 and isPlayer(c) then doCreatureAddHealth(c, -config.hp) end end return true end
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.