-
Total de itens
2553 -
Registro em
-
Última visita
-
Dias Ganhos
72
Tudo que zipter98 postou
-
[Encerrado] [Encerrado] [DXP] 2º Bug mais critico do DXP
tópico respondeu ao Josegvb de zipter98 em Tópicos Sem Resposta
Deixe-me ver se entendi o problema da passiva do Electabuzz: normalmente, ela não causa dano a pokémons terrestres, como deveria. Porém, ao usar qualquer outra spell (elétrica ou não), ela passa a apresentar o problema? Este permanece ou volta ao normal após alguma ação? Saberia dizer onde as passivas são executadas? Se o creatureevent que você postou na primeira página de fato foi completo, então talvez seja em outro arquivo de creaturescripts. Se possível, explique detalhadamente o problema (é meio chato depender apenas das gifs postadas para chegar a alguma conclusão) e também poste o código da passiva do Electabuzz. O auto ataque foi normalizado para as outras situações que você descreveu? Aplicando a correção do Falling Rocks no Electric Storm, o código ficaria: elseif spell == "Electric Storm" then local master = isSummon(cid) and getCreatureMaster(cid) or cid local function doFall(cid) for rocks = 1, 42 do addEvent(fall, rocks*35, cid, master, ELECTRICDAMAGE, 41, 48) end end for up = 1, 10 do addEvent(upEffect, up*75, cid, 41) end addEvent(doFall, 450, cid) local ret = {} ret.id = 0 ret.cd = 9 ret.check = 0 ret.eff = 48 ret.spell = spell ret.cond = "Stun" addEvent(function() if tostring(getPlayerStorageValue(cid, 21102)) ~= spell then setPlayerStorageValue(cid, 21102, spell) end doMoveInArea2(cid, 0, BigArea2, ELECTRICDAMAGE, min, max, spell, ret) end, 1400) -
[Encerrado] [Encerrado] [DXP] 2º Bug mais critico do DXP
tópico respondeu ao Josegvb de zipter98 em Tópicos Sem Resposta
Muito bem. Pode agora postar o código do Electric Storm e da passiva do Electabuzz? Ao corrigir ambos, provavelmente encontraremos um padrão de correção que poderá ser aplicado por você mesmo nas outras spells. -
[Encerrado] [Encerrado] [DXP] 2º Bug mais critico do DXP
tópico respondeu ao Josegvb de zipter98 em Tópicos Sem Resposta
Estamos nos focando apenas no Earthquake, por enquanto. O Electric Storm e outras spells também precisarão de um ajuste no código da spell. Agora, apenas com Earthquake + melee, está funcionando como devido? -
[Encerrado] [Encerrado] [DXP] 2º Bug mais critico do DXP
tópico respondeu ao Josegvb de zipter98 em Tópicos Sem Resposta
Agora as coisas se esclareceram mais. O Earthquake dura 10 segundos. Ele começa, nesse caso, em 19:04:17 e acaba em 19:04:27. Porém, a partir desse momento, o dano que o Crystal Onix aplica é imprimido ainda como Earthquake. [13/12/2016 19:04:29] Entrando no escopo...[13/12/2016 19:04:29] Valor da storage: Earthquake[13/12/2016 19:04:29] Pokemon atacante: Shiny Onix[13/12/2016 19:04:29] Pokemon defensor: Pidgeot[13/12/2016 19:04:29] Entrando no escopo de MAGIA...[13/12/2016 19:04:31] Entrando no escopo...[13/12/2016 19:04:31] Valor da storage: Earthquake[13/12/2016 19:04:31] Pokemon atacante: Shiny Onix[13/12/2016 19:04:31] Pokemon defensor: Pidgeot[13/12/2016 19:04:31] Entrando no escopo de MAGIA...[13/12/2016 19:04:33] Entrando no escopo...[13/12/2016 19:04:33] Valor da storage: Earthquake[13/12/2016 19:04:33] Pokemon atacante: Shiny Onix[13/12/2016 19:04:33] Pokemon defensor: Pidgeot[13/12/2016 19:04:33] Entrando no escopo de MAGIA...[13/12/2016 19:04:35] Entrando no escopo...[13/12/2016 19:04:35] Valor da storage: Earthquake[13/12/2016 19:04:35] Pokemon atacante: Shiny Onix[13/12/2016 19:04:35] Pokemon defensor: Pidgeot[13/12/2016 19:04:35] Entrando no escopo de MAGIA... Isso tudo implica que o valor da storage não está sendo resetado, e sim substituído. Troque: if value == 0 then return falseelse value = value * (1 + getSpecialAttack(attacker) / 100)end por: if value == 0 then setPlayerStorageValue(attacker, 21102, -1) return falseelse value = value * (1 + getSpecialAttack(attacker) / 100)end -
[Encerrado] [Encerrado] [DXP] 2º Bug mais critico do DXP
tópico respondeu ao Josegvb de zipter98 em Tópicos Sem Resposta
Ah, agora que você disse que os auto ataques imprimidos eram do Pidgeot me esclareceu algumas coisas. Dessa vez, reuni algumas informações importantes que deixei passar. Suponho que serão as últimas que irei precisar para começar a trabalhar numa correção. Você substitui toda aquela parte anterior por essa: print("Entrando no escopo...")print("Valor da storage: "..(tonumber(spellNameFromAttacker) and "melee" or spellNameFromAttacker))print("Pokemon atacante: "..getCreatureName(attacker))print("Pokemon defensor: "..getCreatureName(cid))if(combat == 128 or combat == 1) and getPlayerStorageValue(attacker, 21102) == -1 then -- ataque basico print("Entrando no escopo de MELEE...") doSendMagicEffect(getThingPos(cid), 3) print("Value antes de getEffectvineCombat: "..value) value = getEffectvineCombat(cid, attacker, value) print("Value depois de getEffectvineCombat: "..value) if value == 0 then return false else value = value * getOffense(attacker) -- buff ataque system local name = doCorrectString(getCreatureName(attacker)) if pokes[name] and pokes[name].level <= 5 and value ~= 0 then value = -math.random(pokes[name].offense, pokes[name].offense+5) end print("Dano fica: "..value) endelse -- magia print("Entrando no escopo de MAGIA...") value = getEffectvineSpell(attacker, spellNameFromAttacker, value, cid) -- checagem de efetividades de magia if value == 0 then return false else value = value * (1 + getSpecialAttack(attacker) / 100) end print("Valor final: "..value)end Use novamente a combinação Earthquake + melee. Novamente, você pode tirar o: print(combat) se quiser. O resultado imprimido sempre será o mesmo, pelo que tudo indica. PS: Teoricamente, getEffectvineCombat é sim usada no escopo do melee. getEffectvineSpell é usada na fórmula do dano da spell. -
Ops, coloquei uma coisa no lugar errado. Corrigido. Se apenas o último estiver ganhando a premiação, poste o creatureevent que mencionei.
-
Qualquer mega evolução? Você tem certeza absoluta que a causa é este sistema? Você disse que o servidor pode cair quando alguém mega evolui um pokémon. Já reparou se o servidor alguma vez caiu sem essa circunstância específica? Como eu disse, bases poketibianas diferem em muitos aspectos, tanto em Lua quanto em C++. Sem um padrão e sem conhecer a base, fica muito difícil encontrar a origem do problema.
-
Esse erro diz que a função CheckEvent não existe. Provavelmente, na hora da substituição, você fez algo errado. Aqui está sua lib modificada: Tome bastante cuidado ao modificar login.lua.
-
[Encerrado] [Encerrado] [DXP] 2º Bug mais critico do DXP
tópico respondeu ao Josegvb de zipter98 em Tópicos Sem Resposta
Teoricamente, o auto ataque está dando dano até essa parte. Só estranhei um pouco o fato do valor não mudar depois de multiplicado pelo ataque do pokémon, mas no Pidgeot o mesmo aconteceu e houve dano de qualquer jeito. Apenas para confirmar, novamente: enquanto o Earthquake está ativo, o auto ataque do Crystal Onix não causa dano ao Pidgeot, certo? Depois, volta ao normal? Isso acontece apenas com pokémons do elemento voador? Ou, por exemplo, com uma Victreebel o mesmo acontece? Se o melee, de fato, se anular durante o Earthquake apenas contra pokémons do elemento voador, a efetividade entre eles de algum jeito está relacionada (o que provavelmente entraria na função getEffectvineCombat). -
Há, em data/creaturescripts/scripts.lua, um código relacionado a este sistema. O nome, naturalmente, eu não sei, mas você deve encontrar rápido. Nele, remova as seguintes linhas: setPlayerStorageValue(cid, _Lib_Battle_Info.TeamOne.storage, -1)setPlayerStorageValue(cid, _Lib_Battle_Info.TeamTwo.storage, -1) Depois, em login.lua, acima do último return true (que fica na penúltima linha do código), coloque: if getPlayerStorageValue(cid, 4921) > -1 then if _Lib_Battle_Info.Reward.exp[1] then doPlayerAddExperience(cid, _Lib_Battle_Info.Reward.exp[2]) end if _Lib_Battle_Info.Reward.items[1] then doPlayerAddItem(cid, _Lib_Battle_Info.Reward.items[2], _Lib_Battle_Info.Reward.items[3]) end if _Lib_Battle_Info.Reward.premium_days[1] then doPlayerAddPremiumDays(cid, _Lib_Battle_Info.Reward.premium_days[2]) end setPlayerStorageValue(cid, 4921, -1)end Depois, na lib que você postou, troque o código da função getWinnersBattle(storage) por: function getWinnersBattle(storage) local str, c, winners_online = "" , 0, {} for _, cid in pairs(getPlayersOnline()) do if getPlayerStorageValue(cid, storage) == 1 then if _Lib_Battle_Info.Reward.exp[1] then doPlayerAddExperience(cid, _Lib_Battle_Info.Reward.exp[2]) end if _Lib_Battle_Info.Reward.items[1] then doPlayerAddItem(cid, _Lib_Battle_Info.Reward.items[2], _Lib_Battle_Info.Reward.items[3]) end if _Lib_Battle_Info.Reward.premium_days[1] then doPlayerAddPremiumDays(cid, _Lib_Battle_Info.Reward.premium_days[2]) end doRemoveCondition(cid, CONDITION_OUTFIT) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) setPlayerStorageValue(cid, storage, -1) table.insert(winners_online, getPlayerGUID(cid)) c = c + 1 end end local query = db.getResult("SELECT player_id FROM player_storage WHERE key = "..storage.." AND value > -1") if query:getID() ~= -1 then repeat local id = query:getDataInt("player_id") if not isInArray(winners_online, id) then c = c + 1 db.executeQuery("UPDATE player_storage SET value = -1 WHERE player_id = "..id.." AND value = "..storage) db.executeQuery("UPDATE player_storage SET value = 1 WHERE player_id = "..id.." AND value = 4921") end until not query:next() query:free() end str = str .. ""..c.." Player"..(c > 1 and "s" or "").." da equipe "..(getGlobalStorageValue(_Lib_Battle_Info.TeamOne.storage) == 0 and _Lib_Battle_Info.TeamTwo.name or _Lib_Battle_Info.TeamOne.name).." venceu a batalha evento!" resetBattle() OpenWallBattle() return doBroadcastMessage(str)end
-
Isso depende muito. Como eu disse, escrevi aquele sistema para uma base específica. Nela, não havia problemas de crash ou coisas do tipo. Bases poketibianas se diferem em muitos quesitos, o que torna a adaptação, as vezes, bem chata e/ou complicada (por isso mesmo que disse no tópico que não pretendia adaptar para ninguém, já que existem dezenas de bases diferentes por aí, o que é sinônimo de muita dor de cabeça). Porém, pergunto-lhe: há algum algum erro no console? Há alguma ação específica que faça o servidor travar/cair? Ou é simplesmente aleatório? Sem detalhes, fica muito difícil adaptar corretamente o sistema para sua base.
-
suporte otserv Script ao logar, dar 5 dias de vip
pergunta respondeu ao Tiagotwos de zipter98 em Resolvidos
local days = 5function onLogin(cid) local account_id = getPlayerAccountId(cid) local storage = account_id + 550 if getGlobalStorageValue(storage) <= 0 then setGlobalStorageValue(storage, 13500) addVipDaysByAccount(account_id, days) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você recebeu "..days.." dias de VIP, bom jogo!") end return trueend -
Se possível, poste todo o sistema.
-
[Encerrado] [Encerrado] [DXP] 2º Bug mais critico do DXP
tópico respondeu ao Josegvb de zipter98 em Tópicos Sem Resposta
É, parece que o combat não varia. Então, teremos de continuar com essa gambiarra. Aliás, já pode tirar o print(combat). O auto ataque do Pidgeot deu dano, nesse caso? No exemplo do Earthquake, houve algum auto ataque neste meio tempo (que, por acaso, não foi imprimido no console)? Ou você apenas usou o Earthquake + Harden? De qualquer modo, por Harden ser uma spell instantânea, ela, ao que tudo indica, está OK. O que estamos testando agora é apenas Earthquake + melee. -
suporte scripts (resolvido) alguém pode criar uma spell a partir dessa action por favor?
pergunta respondeu ao wevertonvrb de zipter98 em Resolvidos
ah, agora tem double post? antigamente os comentários se juntavam wtf- 24 respostas
-
- criar spell
- action/spell
-
(e 1 mais)
Tags:
-
suporte scripts (resolvido) alguém pode criar uma spell a partir dessa action por favor?
pergunta respondeu ao wevertonvrb de zipter98 em Resolvidos
Ah, Lua é bem fácil de aprender. Tem tutoriais por toda a internet (aqui no XTibia, inclusive, tem vários). Basta estudá-los, ler códigos de outras pessoas e praticar. Principalmente praticar.- 24 respostas
-
- criar spell
- action/spell
-
(e 1 mais)
Tags:
-
[Encerrado] [Encerrado] [DXP] 2º Bug mais critico do DXP
tópico respondeu ao Josegvb de zipter98 em Tópicos Sem Resposta
Eu gostaria de fazer dois pedidos agora: O primeiro, para confirmar uma dúvida minha, é que você teste ataques de outros elementos e verifique o que é imprimido (não precisa atacar com o melee, apenas com as spells). Se possível, especifique também qual elemento imprimiu qual valor. O segundo, troque esta parte: if(combat == 128 or combat == 1) and getPlayerStorageValue(attacker, 21102) == -1 then -- ataque basico doSendMagicEffect(getThingPos(cid), 3) value = getEffectvineCombat(cid, attacker, value) if value == 0 then return false else value = value * getOffense(attacker) -- buff ataque system local name = doCorrectString(getCreatureName(attacker)) if pokes[name] and pokes[name].level <= 5 and value ~= 0 then value = -math.random(pokes[name].offense, pokes[name].offense+5) end endelse -- magia value = getEffectvineSpell(attacker, spellNameFromAttacker, value, cid) -- checagem de efetividades de magia if value == 0 then return false else value = value * (1 + getSpecialAttack(attacker) / 100) endend por: if(combat == 128 or combat == 1) and getPlayerStorageValue(attacker, 21102) == -1 then -- ataque basico print("auto attacking...") if value == 0 then print("value = 0") return false else print("value do auto ataque antes da fórmula = "..value) value = value * getOffense(attacker) -- buff ataque system print("value do auto ataque depois da fórmula = "..value) local name = doCorrectString(getCreatureName(attacker)) if pokes[name] and pokes[name].level <= 5 and value ~= 0 then value = -math.random(pokes[name].offense, pokes[name].offense+5) end endelse -- magia value = getEffectvineSpell(attacker, spellNameFromAttacker, value, cid) -- checagem de efetividades de magia if value == 0 then return false else value = value * (1 + getSpecialAttack(attacker) / 100) endend Depois, use a combinação Earthquake + melee e informe o que for imprimido. -
suporte scripts (resolvido) alguém pode criar uma spell a partir dessa action por favor?
pergunta respondeu ao wevertonvrb de zipter98 em Resolvidos
Eu acabei de testar o código, e está funcionando como devido (se há alguma discrepância na variação de HP, não passa de 10). A vida da nova forma é proporcional a da anterior. Porém, se o que você quer dizer é que as formas estão com vida total e o Castform normal está perdendo HP, significa que há algum erro no seu código. Se for o caso, peço que poste-o aqui.- 24 respostas
-
- criar spell
- action/spell
-
(e 1 mais)
Tags:
-
[Encerrado] [Encerrado] [DXP] 2º Bug mais critico do DXP
tópico respondeu ao Josegvb de zipter98 em Tópicos Sem Resposta
Por enquanto estamos nos focando em encontrar uma correção para o Earthquake. Assim, poderemos aplicá-la futuramente em outras spells, como Falling Rocks, Rock Slide e Electric Storm. Então, neste quesito, vejo que a única coisa que falta para corrigir o Earthquake é o melee, certo? Abaixo de: function onStatsChange(...) coloque: print(combat) e informe o que for imprimido. -
suporte scripts (resolvido) Teleport Automatico Error
pergunta respondeu ao mateusmoretti de zipter98 em Resolvidos
Remova os seguintes comentários e veja se o erro permanece. -- só copiar uma linha e add mais dias. se quiser só um dia deixe só a primeia linha-- Posição aonde sera criado o teleport-- Posição pra onde o teleport ira levar o player -
[Encerrado] [Encerrado] [DXP] 2º Bug mais critico do DXP
tópico respondeu ao Josegvb de zipter98 em Tópicos Sem Resposta
Isso só acontece com o Falling Rocks ou com qualquer outra spell do Crystal Onix (Iron Tail, Rock Throw, etc)? -
[Encerrado] [Encerrado] [DXP] 2º Bug mais critico do DXP
tópico respondeu ao Josegvb de zipter98 em Tópicos Sem Resposta
Você testou o que eu disse no meu último comentário da página anterior? -
[Encerrado] [Encerrado] [DXP] 2º Bug mais critico do DXP
tópico respondeu ao Josegvb de zipter98 em Tópicos Sem Resposta
@nociam Ah, sim. Como você disse, essa storage serve apenas como um auxílio para cancelar os ticks em caso de sleep ou fear. -
[Encerrado] [Encerrado] [DXP] 2º Bug mais critico do DXP
tópico respondeu ao Josegvb de zipter98 em Tópicos Sem Resposta
O dano, como sabemos, é influenciado diretamente pelo valor dessa storage. É praticamente impossível, até onde sei, que "dois danos" ocorram exatamente ao mesmo tempo. Por mais semelhante que seja o momento de execução, um stats change vai acontecer antes do outro. A storage é setada apenas no momento da conjuração, o que, como já dito, acaba desconsiderando spells cujo efeito se relacione com o tempo futuro, pois seu valor pode acabar sendo substituído por de outras spells durante sua execução. Gostaria de testar o seguinte: a cada "tick" do Earthquake (ou seja, a cada iteração do looping), a storage tem seu valor setado para Earthquake novamente. Um tick, pelo que notei, equivale a uma execução da função local doQuake. Então, abaixo de: if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end colocaria-se: if tostring(getPlayerStorageValue(cid, 21102)) ~= spell then setPlayerStorageValue(cid, 21102, spell)end -
suporte otserv (resolvido) remover x item e ganhar pokémon
pergunta respondeu ao kaleudd de zipter98 em Resolvidos
Troque: if n > math.ceil(#pokemon / 15) then doPlayerSendCancel(cid, "There are only lists from 1 to "..math.ceil(#pokemon / 15)..".") return trueend por: if not n then doPlayerSendCancel(cid, "Type a number first.") return trueelseif n > math.ceil(#pokemon / 15) then doPlayerSendCancel(cid, "There are only lists from 1 to "..math.ceil(#pokemon / 15)..".") return trueend PS: Recomendo que use a ferramenta code (logo acima) para postar códigos, pois parece que o XTibia está cortando alguns caracteres dos comentários.
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.