-
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
Primeiramente, consideremos que o problema está em todas as spells que não sejam executadas "de uma vez" - o que inclui spells de dano por tempo, storms que demoram para cair, passivas como do Electabuzz (que suponho normalizar o auto ataque apenas após o uso de outro movimento, de outro elemento), etc. Foquemo-nos, por enquanto, em corrigir o Earthquake. Você tem certeza que postou o código correto? Pois parece que o XTibia está cortando alguns caracteres de comentários. Se você puder postar este código por meio da ferramente de code (<>, logo acima), seria melhor para nossas conclusões. Quanto à storage, parece que alucinei aquele número. lol Mas enfim, a correta não está no script do Earthquake. Porém, imagino que tenha alguma relação com esta linha: setPlayerStorageValue(cid, 3644587, 1) O Notepad++ tem uma ferramenta de busca que analisa todos os arquivos dentro de uma pasta (CTRL + F -> Localizar em arquivos). Recomendo que a use para procurar por alguma menção ao número 21102 dentro da pasta data. -
Por gentileza, poste o código de exp2.0.lua.
-
[Encerrado] [Encerrado] [DXP] 2º Bug mais critico do DXP
tópico respondeu ao Josegvb de zipter98 em Tópicos Sem Resposta
Pelo que li, o seu servidor apresenta um problema com o combat, certo? Sem o uso deste argumento no código, o máximo que se pode conseguir num sistema de efetividade são gambiarras mal feitas. A única spell que está causando problemas é o Earthquake (ou seja, uma spell de dano por tempo)? Seu servidor tem mais spells do tipo? No caso da passiva do Electabuzz, após o fim do "giro" dela em volta do pokémon-origem, o ataque melee volta a dar dano ou continua sendo considerado um movimento do tipo elétrico? Lendo o código, percebi que a cada execução do stats change o "elemento" do dano é o mesmo da última spell usada. Então, naturalmente, uma spell do elemento normal como Harden atrapalharia no dano de uma ground por tempo, como o Earthquake. Baseie-se nesta lógica para pensar se existe alguma outra combinação de spells que causaria problemas no cálculo de efetividade. Finalmente, poderia postar o código da spell Earthquake e também onde a storage 21102 é setada? Podemos combater gambiarra com gambiarra. Me basearei nos códigos originais que você postou, e não nas edições feitas ao longo dos comentários. -
suporte scripts (resolvido) alguém pode criar uma spell a partir dessa action por favor?
pergunta respondeu ao wevertonvrb de zipter98 em Resolvidos
Não imaginei que meses sem programar de fato desfariam meu conhecimento em bases poketibianas. Havia esquecido completamente a estrutura das funções de evolução e ajustes de status no PDA. Enfim, editei meu comentário que continha o código com ambas as correções.- 24 respostas
-
- criar spell
- action/spell
-
(e 1 mais)
Tags:
-
suporte otserv (resolvido) remover x item e ganhar pokémon
pergunta respondeu ao kaleudd de zipter98 em Resolvidos
Ah, esqueci que alguém poderia deixar de digitar o número da lista. Corrigido. Fiz uma edição para que o popup permaneça, removendo-se o parâmetro lista: !orb n mostrará a lista conforme seu número. !orb pokémon para comprar o pokémon, como antes. Se preferir que apenas !orb mostre a lista, enquanto !orb pokémon compre-o: -
Imagino que você se refere à segunda versão. Suponho que saiba configurar a tag, não é?
-
suporte scripts (resolvido) alguém pode criar uma spell a partir dessa action por favor?
pergunta respondeu ao wevertonvrb de zipter98 em Resolvidos
Ah, eu programei apenas para Castforms de jogadores. Vou editar para os selvagens também. Pronto, editado para Castforms selvagens.- 24 respostas
-
- criar spell
- action/spell
-
(e 1 mais)
Tags:
-
suporte otserv (resolvido) Tempos não acumulaveis
pergunta respondeu ao Fjinst de zipter98 em Resolvidos
Desculpe, acho que não entendi muito bem o problema. No código inicial, novas walls criadas em posições onde já houvessem outras não teriam seu tempo de remoção resetado (ou acumulado com o anterior). Uma situação hipotética para exemplificar: (0 segundo) wall A é criada na posição x.será removida aos 5 segundos(3 segundos) uma wall B é criada na mesma posição x, substituindo a wall Ateoricamente será removida aos 8 segundos(5 segundos) a wall A seria removida agora, porém ela foi substuída pela wall B.No código inicial, a wall A não é distinguida da wall B, fazendo com que esta seja removida.(8 segundos) a wall B já foi removida aos 5s, pois a contagem não foi resetada. Na correção que escrevi, seria o seguinte: (0 segundo) wall A é criada na posição x.será removida aos 5 segundos(3 segundos) uma wall B é criada na mesma posição x, substituindo a wall Aserá removida aos 8 segundostempo de remoção de A zerado(5 segundos) a wall A seria removida agora, porém ela foi substuída pela wall B.como A não existe mais, nada acontece(8 segundos) A wall B é removida agora, como planejado. Por acaso entendi o problema errado? -
suporte otserv (resolvido) remover x item e ganhar pokémon
pergunta respondeu ao kaleudd de zipter98 em Resolvidos
Como este pedido é bastante semelhante com o anterior que você fez, usei o antigo código como base. Se o modelo de comando não lhe agradar (!comprar lista n e !comprar nome_do_pokémon), avise que editarei o código. -
^ Apenas alguns erros básicos. cid é um argumento dentro do callback. Logo, fora dele seu valor é nulo. O correto seria declarar a variável sex abaixo de function onUse(...). Nesta parte: if sex == 0 then return doPlayerSendCancel(cid, 22, "Só homens podem pegar essa outfit.") return falseend Você colocou dois valores de retorno, o que gera erros. O adequado seria: if sex == 0 then return doPlayerSendCancel(cid, 22, "Só homens podem pegar essa outfit.")end Finalmente, recomendaria retornar verdadeiro ao final deste código, ou, ao menos, abaixo de doPlayerSendTextMessage. Caso não se importe, escrevi duas versões do código. Na primeira, um mesmo item garante outfits diferentes considerando-se o sexo. Já na segunda versão, cada item concede uma outfit diferente, com a limitação do sexo. Naturalmente, nesse caso, você configuraria os itens na mesma tag, separando-os por ponto e vírgula (;).
-
suporte scripts (resolvido) Transformar esse Talkaction em Spell
pergunta respondeu ao gabriel28 de zipter98 em Resolvidos
onCastSpell não possui um argumento responsável pelos parâmetros da fala. Por isso, as palavras-chaves limitam-se às configuradas na tag. Por condições como mana, level e classe encontrarem-se na tag, não vi necessidade de mantê-las no código. Naturalmente, sem poder usar um parâmetro para especificar qual summon o jogador deseja, será um código por monstro. local summon_name = "Rat" --Nome do summon.local summon_count = { --[vocation_id] = max_summons, [1] = 2, [2] = 4, [5] = 4, [6] = 6, [9] = 6, [10] = 8,}function onCastSpell(cid) local playerpos = getPlayerPosition(cid) if #getCreatureSummons(cid) >= summon_count[getPlayerVocation(cid)] then doPlayerSendCancel(cid, "Você já tem sumons demais.") return false end doConvinceCreature(cid, doCreateMonster(summon_name, playerpos)) doSendMagicEffect(playerpos, 2) return trueend -
flash Kira ou Dio? pls alguém assista JoJo lol
-
suporte otserv (resolvido) Tempos não acumulaveis
pergunta respondeu ao Fjinst de zipter98 em Resolvidos
Acima de: local config = { coloque: local events = {} Depois, substitua: doSendMagicEffect(pos, 12)if isPlayer(getTopCreature(pos).uid) then doAddCondition(getTopCreature(pos).uid, condicao)endlocal tile = getTileThingByPos(pos)if tile.itemid ~= 0 then doCreateItem(config.createGates[n], 1, pos)endaddEvent(function() if(getTileItemById(pos, config.createGates[n]).uid > 0) then doRemoveItem(getTileItemById(pos, config.createGates[n]).uid, 1) endend, config.gatesTime*1000) por: doSendMagicEffect(pos, 12)if isPlayer(getTopCreature(pos).uid) then doAddCondition(getTopCreature(pos).uid, condicao)endlocal tile = getTileThingByPos(pos)if tile.itemid ~= 0 then local old_wall = getTileItemById(pos, config.createGates[n]).uid if old_wall > 0 then stopEvent(events[old_wall]) end local new_wall = doCreateItem(config.createGates[n], 1, pos) events[new_wall] = addEvent(function() if getTileItemById(pos, config.createGates[n]).uid > 0 then doRemoveItem(getTileItemById(pos, config.createGates[n]).uid, 1) end end, config.gatesTime * 1000)end -
suporte scripts (resolvido) alguém pode criar uma spell a partir dessa action por favor?
pergunta respondeu ao wevertonvrb de zipter98 em Resolvidos
elseif spell == "Transform" then local config = { forms = {"Castform", "Fire Castform", "Water Castform", "Ice Castform"}, --Formas, na ordem de transformação. effects = { ["water"] = xxx, --["elemento_primário_da_nova_forma"] = efeito_na_transformação, ["ice"] = xxx, ["fire"] = xxx, } } local function fakeEvolution(cid, newPoke, pokeball) local owner = getCreatureMaster(cid) if not owner then return true end local description = "Contains a "..newPoke.."." local pct = getCreatureHealth(cid) / getCreatureMaxHealth(cid) doItemSetAttribute(pokeball, "hp", pct) doItemSetAttribute(pokeball, "poke", newPoke) doItemSetAttribute(pokeball, "morta", "no") doItemSetAttribute(pokeball, "Icone", "yes") doItemSetAttribute(pokeball, "description", "Contains a "..newPoke..".") doTransformItem(pokeball, icons[getItemAttribute(pokeball, "poke")].use) doTransformItem(getPlayerSlotItem(owner, 7).uid, fotos[newPoke]) local oldpos, oldlod = getThingPos(cid), getCreatureLookDir(cid) doRemoveCreature(cid) doSummonMonster(owner, newPoke) local pk = getCreatureSummons(owner)[1] doTeleportThing(pk, oldpos, false) doCreatureSetLookDir(pk, oldlod) adjustStatus(pk, pokeball, true, false) if useKpdoDlls then doUpdateMoves(owner) end end table.find = function (table, value) for i, v in pairs(table) do if(v == value) then return i end end return nil end if not isInArray(config.forms, getCreatureName(cid)) then return true end local next_form = config.forms[table.find(config.forms, getCreatureName(cid)) + 1] if not next_form then next_form = config.forms[1] end doSendMagicEffect(getThingPos(cid), config.effects[pokes[next_form].type] or 18) if not isSummon(cid) then local pos, dir, health_lost = getThingPos(cid), getCreatureLookDir(cid), getCreatureHealth(cid) / getCreatureMaxHealth(cid) doRemoveCreature(cid) local newMonster = doCreateMonster(next_form, pos) setPlayerStorageValue(newMonster, 94831, health_lost) doCreatureSetLookDir(newMonster, dir) else local p = getPlayerSlotItem(getCreatureMaster(cid), 8) if not p then return true end fakeEvolution(cid, next_form, p.uid) end Depois, em data/lib/level system.lua, no código da função adjustWildPoke: Abaixo de: doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) coloque: if tonumber(getPlayerStorageValue(cid, 94831)) > -1 then local ratio = 1 - tonumber(getPlayerStorageValue(cid, 94831)) doCreatureAddHealth(cid, -(getCreatureMaxHealth(cid) * ratio))end- 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
Posso fazer esse da PxG depois de terminar o pedido do wevertonvrb. É um código bem simples, na verdade. @wevertonvrb Estas formas seriam temporárias, certo? Como funcionaria a escolha da forma elemental? A nova forma poderia se transformar em outra? Se sim, como?- 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, pensei que você quisesse que a talkaction substituísse a action. Então, você quer uma spell que transforme permanentemente apenas certos pokémon? Se possível, especifique seu pedido.- 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
data/talkactions/scripts: local specialevo = { ["Eevee"] = {"Vaporeon", "Flareon", "Jolteon", "Umbreon", "Espeon"}, ["Poliwhirl"] = {"Poliwrath", "Politoed"}, ["Gloom"] = {"Vileplume", "Bellossom"}, ["Slowpoke"] = {"Slowbro", "Slowking"}, ["Tyrogue"] = {"Hitmonlee", "Hitmonchan", "Hitmontop"},}function doCorrectString(str) --Slicer local name = str:explode(" ") local final = {} for _, s in ipairs(name) do table.insert(final, s:sub(1, 1):upper()..s:sub(2, #s):lower()) end return table.concat(final, (name[2] and " " or ""))end function onSay(cid, words, param) local pokeball = getPlayerSlotItem(cid, 8) if pokeball.uid == 0 or #getCreatureSummons(cid) == 0 then doPlayerSendCancel(cid, "First, summon your pokemon.") return true elseif #getCreatureSummons(cid) > 1 then return true elseif getCreatureCondition(getCreatureSummons(cid)[1], CONDITION_INVISIBLE) then return true end local ref = getCreatureSummons(cid)[1] local new_poke = specialevo[getCreatureName(ref)] and doCorrectString(param) or poevo[getCreatureName(ref)] and poevo[getCreatureName(ref)].evolution if (specialevo[getCreatureName(ref)] and not isInArray(specialevo[getCreatureName(ref)], new_poke)) or not new_poke then doPlayerSendCancel(cid, "This evolution doesn't exist.") return true elseif getPlayerLevel(cid) < pokes[new_poke].level then doPlayerSendCancel(cid, "You need to be level "..pokes[new_poke].level.." to evolve your pokemon.") return true end doEvolvePokemon(cid, ref, new_poke) doItemSetAttribute (pokeball.uid, "addon", 0) doItemSetAttribute(pokeball.uid, "morta", "no") doItemSetAttribute(pokeball.uid, "Icone", "yes") doTransformItem(pokeball.uid, icons[getItemAttribute(pokeball.uid, "poke")].use) return trueend Tag: <talkaction words="/evolve" event="script" value="nome_do_arquivo.lua"/> Em data/lib, level system.lua: No código da função: function doEvolvePokemon(cid, item2, theevo, stone1, stone2) Troque todos os: item2.uid por apenas: item2 Depois, remova as seguintes linhas: doPlayerRemoveItem(cid, stone1, 1)doPlayerRemoveItem(cid, stone2, 1) PS: Você não disse qual a forma que a evolução de pokémons como Eevee e Tyrogue será escolhida, então coloquei como uma opção no comando. Por exemplo: /evolve --Para evoluir um pokémon "normal"./evolve nome_da_evolução --Para pokémons como Eevee, Gloom, etc.--> /evolve Bellossom /evolve Hitmonlee- 24 respostas
-
- criar spell
- action/spell
-
(e 1 mais)
Tags:
-
suporte scripts (resolvido) Transformar esse Talkaction em Spell
pergunta respondeu ao gabriel28 de zipter98 em Resolvidos
Temos que levar em consideração o seguinte: numa talkaction, podemos usar o argumento param para especificar qual o monstro que o jogador deseja invocar. Em spells, entretanto, não temos o luxo que a talkaction nos proporciona. Naturalmente, permanecer uma talkaction seria mais fácil (bastaria, como já dito, manipular storages). Se, mesmo assim, você ainda quiser uma spell, podemos escrevê-la, apesar de talkaction ser mais viável para um tipo de código influenciado por um parâmetro no comando. -
suporte scripts (resolvido) alguém pode criar uma spell a partir dessa action por favor?
pergunta respondeu ao wevertonvrb de zipter98 em Resolvidos
Você poderia, por gentileza, descrever o código que quer?- 24 respostas
-
- criar spell
- action/spell
-
(e 1 mais)
Tags:
-
suporte otserv Alguém ajuda a montar esse o script
pergunta respondeu ao marcelinhok de zipter98 em Resolvidos
Este sistema está contido num MOD. Para instalá-lo, vá na pasta do seu servidor e, dentro da pasta mods, crie um arquivo de extensão .XML contendo o código que você postou. -
lol Pokémon Sun ou Pokémon Moon?
-
suporte otserv (resolvido) function clonando items
pergunta respondeu ao Josegvb de zipter98 em Resolvidos
Há duas ocorrências da seguinte linha. Troque ambas: table.insert(itemsToRemove, it.uid) por: table.insert(itemsToRemove, it) Depois, troque: if #itemsToRemove > 0 then for i = 1, #itemsToRemove do doChangeTypeItem(itemsToRemove[i], 0) endend por: if #itemsToRemove > 0 then for i = 1, #itemsToRemove do local r = itemsToRemove[i] if not isItemStackable(r.itemid) then doRemoveItem(r.uid) else doChangeTypeItem(r.uid, 0) end endend -
suporte otserv (resolvido) function clonando items
pergunta respondeu ao Josegvb de zipter98 em Resolvidos
Por acaso este código tem mais linhas? E também, poderia postar o código da função isCollectAll? -
suporte otserv (resolvido) function clonando items
pergunta respondeu ao Josegvb de zipter98 em Resolvidos
Já pensei em algumas alternativas para tentar corrigir o código. Primeiramente, tente a seguinte: Troque essa linha: doChangeTypeItem(itemsToRemove, 0) por essa: doChangeTypeItem(itemsToRemove[i], 0) -
Os TFSs mais atuais não têm funções diferentes, baseadas em manipulação de classes?
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.