Ir para conteúdo

zipter98

Herói
  • Total de itens

    2553
  • Registro em

  • Última visita

  • Dias Ganhos

    72

Tudo que zipter98 postou

  1. editado com correção do antigo registro de catches do PDA
  2. Troque a função getCatchList de catch system.lua por essa: function getCatchList(cid) local ret = {} for name, info in pairs(newpokedex) do if type(getPlayerStorageValue(cid, info.storage)) == "string" and getPlayerStorageValue(cid, info.storage):find("catch,") then ret[#ret + 1] = name end end return ret end
  3. local catch_config = { --[[ [catch_count] = { --[quantidade_de_catch] = { prize_item = { {itemid = xxx, count = xxx}, --{itemid = ID_do_item, count = quantidade} {itemid = xxx, count = xxx}, --{itemid = ID_do_item, count = quantidade} --etc }, outfit = xxx --Se ganhar outfit, coloque a storage dela (de outfits.xml). Caso contrário, coloque false. }, ]]-- [30] = { --[quantidade_de_catch] = { prize_item = { {itemid = 11639, count = 1}, --{itemid = ID_do_item, count = quantidade} }, outfit = false --Se ganhar outfit, coloque a storage dela (de outfits.xml). Caso contrário, coloque false. }, [100] = { --[quantidade_de_catch] = { prize_item = { {itemid = 11641, count = 1}, --{itemid = ID_do_item, count = quantidade} {itemid = 2160, count = 20}, --{itemid = ID_do_item, count = quantidade} --etc }, outfit = 49101 --Se ganhar outfit, coloque a storage dela (de outfits.xml). Caso contrário, coloque false. }, } local CATCH_STORAGE = 8382 local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function doBuyPokemonWithCasinoCoins(cid, poke) npcHandler:onSellpokemon(cid) end function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg:lower(), "mission") or msgcontains(msg:lower(), "help") then local count, catch, need_catch = #getCatchList(cid) for catch_count, info in pairs(catch_config) do if getPlayerStorageValue(cid, CATCH_STORAGE + catch_count) < 1 then if need_catch then if catch_count < need_catch then need_catch = catch_count end else need_catch = catch_count end end end if not need_catch then return selfSay("You have completed all my quests.") elseif count < need_catch then return selfSay("You need catch "..need_catch.." different pokemons to complete my next task. [Left: "..need_catch - count.." catches]") end catch = catch_config[need_catch] selfSay("Congratulations, take your prizes!") for i = 1, #catch.prize_item do doPlayerAddItem(cid, catch.prize_item.itemid, catch.prize_item.count) end setPlayerStorageValue(cid, CATCH_STORAGE + need_catch, 1) if catch.outfit then setPlayerStorageValue(cid, catch.outfit, 1) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  4. Troque: if(param.count < 5) then param.count = param.count + 1 addEvent(spellCallback, math.random(1000, 3000), param) end por: if(param.count < 5) then param.count = param.count + 1 addEvent(function() if not isCreature(param.cid) then return true end spellCallback(param) end, math.random(1000, 3000)) end
  5. Sim. Use este código, ao invés do que disponibilizei no tópico: local megaEvoClans = { --[mega_stone_id] = {"clan_name", "clan_name", etc}, [91912] = {"Volcanic", "Wingeon"}, [91913] = {"Seavell"}, --etc, } if megaEvoClans[isMega] then if not isInArray(megaEvoClans[isMega], getPlayerClanName(cid)) then return doPlayerSendCancel(cid, "You can't mega evolve this pokemon.") end end
  6. ^ um getSpectators ou loop iterando as coordenadas da posição superior esquerda e inferior direita da área seria mais prático (principalmente o primeiro método, que também é o mais fácil). Mas w/e, globalstorage também funciona.
  7. Como estou em semana de provas, é meio difícil ter tempo para scriptear. Entretanto: -Erro da talkaction: corrigirei quando possível. -Erro ao matar o dono do castelo: corrigido. -Tile: já enviei (é o moveevent).
  8. Este erro que você citou não aconteceu comigo, mas w/e. E sim. Basta colocar isso: setPlayerStorageValue(cid, 9181, os.time() + 5) Acima de: doAddCondition(cid, invisibility) E para bloquear o uso de spells, você tem duas opções: fazê-lo diretamente nas sources ou em Lua mesmo, adicionando a seguinte condição abaixo do callback onCastSpell de outras magias: if getPlayerStorageValue(cid, 9181) > os.time() then return doPlayerSendCancel(cid, "Wait "..getPlayerStorageValue(cid, 9181) - os.time().." second(s) to use this spell again.") end
  9. @narutomaniacos O efeito de risco não é algo proposital do código. Muito provavelmente é algum problema do seu servidor. Se preferir, pode deixar sem efeito configurado para que os riscos simulem um vulto do jogador. @Animal Pak Se a próxima posição de teleporte do jogador não for andável, o código vai rodar toda a tabela a procura de uma posição viável. Se não encontrá-la (o que significa que esta seria a 4ª posição - logo, a última), o efeito da spell acaba. Testei a magia algumas vezes e, em todas, ela funcionou perfeitamente.
  10. Qual foi o efeito que você configurou? O de sangue ou o de riscos pretos?
  11. Qual seria o segundo efeito? Desculpe, sou meio lerdo.
  12. Se possível, teste essa magia novamente, entretanto a observe em outro personagem que não seja o usuário da magia. Apesar de nunca ter visto em prática as condições que usei, se não me engano o jogador fica invisível apenas para outras criaturas. PS: Certifique-se de ter atualizado o código. Há alguns minutos eu fiz umas pequenas modificações nele.
  13. Fiz bem corrido aqui, talvez não funcione. local config = { effect = xxx, --Efeito. interval = 500 --Intervalo, em milésimos de segundo, entre os teleportes. } local combat, invisibility, outfit = createCombatObject(), createConditionObject(CONDITION_GAMEMASTER, -1, false, GAMEMASTER_INVISIBLE), createConditionObject(CONDITION_INVISIBLE, -1, false) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) function getDamage(cid, level, magic) return -(level * 5 + magic * 12), -(level * 5 + magic * 12 + 55) end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "getDamage") function isWalkable(pos, creature, proj, pz)-- by Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 2 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function doSpellTeleport(cid, target, positions, original_position) if not isPlayer(cid) then return true elseif #positions < 1 or not isCreature(target) then doTeleportThing(cid, original_position) doRemoveCondition(cid, CONDITION_INVISIBLE) doRemoveCondition(cid, CONDITION_GAMEMASTER, GAMEMASTER_INVISIBLE) doPlayerSetNoMove(cid, false) return true end local index = math.random(#positions) local toPos = positions[index] if not isWalkable(toPos) then repeat table.remove(positions, index) index = math.random(#positions) toPos = positions[index] if #positions < 1 then doTeleportThing(cid, original_position) doRemoveCondition(cid, CONDITION_INVISIBLE) doRemoveCondition(cid, CONDITION_GAMEMASTER, GAMEMASTER_INVISIBLE) doPlayerSetNoMove(cid, false) return true end until isWalkable(toPos) end doTeleportThing(cid, toPos) doSendMagicEffect(getThingPos(cid), config.effect) doCombat(cid, combat, numberToVariant(target)) table.remove(positions, index) addEvent(doSpellTeleport, config.interval, cid, target, positions, original_position) end function onCastSpell(cid, var) local target = variantToNumber(var) if not isCreature(target) then return doPlayerSendCancel(cid, "You need a target.") end local pos = getThingPos(target) local posis = { {x = pos.x + 1, y = pos.y + 1, z = pos.z}, {x = pos.x + 1, y = pos.y - 1, z = pos.z}, {x = pos.x - 1, y = pos.y + 1, z = pos.z}, {x = pos.x - 1, y = pos.y - 1, z = pos.z} } doAddCondition(cid, invisibility) doAddCondition(cid, outfit) doPlayerSetNoMove(cid, true) doSpellTeleport(cid, target, posis, getThingPos(cid)) return true end
  14. edit: já encontrei outra maneira, não precisa mais da outfit que mencionei
  15. Quais seriam as posições de teleporte do usuário da magia? Seriam SQMs relativos aos pontos cardeais do alvo? Um vídeo ou GIF ajudaria, caso essa spell já exista.
  16. zipter98

    Piso com time

    Ah sim, agora que li o código do Bruno e vi o método utilizado. Neste caso, a correção que postei definitivamente não vai funcionar.
  17. Simplesmente dê um CTRL + C no erro da distro e poste aqui, lol.
  18. zipter98

    Piso com time

    Troque: player:setStorageValue(LABIRINTO.STORAGE_TIME, LABIRINTO.TIME_NPC) por: player:setStorageValue(LABIRINTO.STORAGE_TIME, os.time() + LABIRINTO.TIME_NPC)
  19. function convertTime(time) local t_table = {} t_table.days = math.floor(time / 86400) time = time - (t_table.days * 86400) t_table.hours = math.floor(time / 3600) time = time - (t_table.hours * 3600) t_table.minutes = math.floor(time / 60) t_table.seconds = time - (t_table.minutes * 60) return t_table end local level = 1 local nivel = 10000 local exaustConfig = { exaustTime = 259200, -- tempo em segundos para o exaust strTime = 135204 -- storage para controlar o exaust } function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerLevel(cid) <= nivel then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "voce precisa ser level ".. nivel .." para poder usar esse item.") doSendAnimatedText(getPlayerPosition(cid), "Failed!", 180) return doSendMagicEffect(fromPosition, CONST_ME_POFF) end if getPlayerStorageValue(cid, exaustConfig.strTime) > os.time() then local time_model = "%d dia(s), %d hora(s), %d minuto(s) e %d segundo(s)." local timeLeft = convertTime(getPlayerStorageValue(cid, exaustConfig.strTime) - os.time()) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Vc so pode usar esse item daqui a ' ..time_model:format(timeLeft.days, timeLeft.hours, timeLeft.minutes, timeLeft.seconds)) return false end doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Congratz!") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_FIREWORK_BLUE) doSendAnimatedText(getPlayerPosition(cid), "LevelUp!", 18) setPlayerStorageValue(cid, exaustConfig.strTime, os.time() + exaustConfig.exaustTime) return doPlayerAddLevel(cid, level) end
  20. OK. Como vou dormir agora, amanhã (ou quando possível) eu corrijo o sistema.
  21. Como imaginei. Se possível, poste o arquivo catch system.lua, de data/lib.
  22. Talvez seja necessária uma edição no arquivo de catch da lib. local ballcatch = { --id normal, id da ball shiy [2394] = {cr = 3, on = 24, off = 23, ball = {11826, 11737}, send = 47, typeee = "normal"}, --alterado v1.9 \/ [2391] = {cr = 6, on = 198, off = 197, ball = {11832, 11740}, send = 48, typeee = "great"}, [2393] = {cr = 10, on = 202, off = 201, ball = {11835, 11743}, send = 46, typeee = "super"}, [2392] = {cr = 15, on = 200, off = 199, ball = {11829, 11746}, send = 49, typeee = "ultra"}, [12617] = {cr = 3, on = 204, off = 203, ball = {10975, 12621}, send = 35, typeee = "saffari"}, } local health_catch = xxx --Porcentagem mínima de HP para poder jogar a pokeball. function onUse(cid, item, frompos, itemEx, topos) if not ehMonstro(itemEx.uid) then return doPlayerSendCancel(cid, "Throw pokeballs in pokemons.") elseif getCreatureHealth(itemEx.uid) > getCreatureMaxHealth(itemEx.uid) * health_catch / 100 then return doPlayerSendCancel(cid, "This pokemon has too much HP at the moment.") end local name = getCreatureName(itemEx.uid) local x = pokecatches[name] if not x then return true end local storage = newpokedex[name].stoCatch if getPlayerStorageValue(cid, storage) == -1 or not string.find(getPlayerStorageValue(cid, storage), ";") then --alterado v1.9 setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0;") --alterado v1.9 end local newidd = isShinyName(name) and ballcatch[item.itemid].ball[2] or ballcatch[item.itemid].ball[1] --alterado v1.9 local typeee = ballcatch[item.itemid].typeee local catchinfo = {} catchinfo.rate = ballcatch[item.itemid].cr catchinfo.catch = ballcatch[item.itemid].on catchinfo.fail = ballcatch[item.itemid].off catchinfo.newid = newidd catchinfo.name = name catchinfo.topos = topos catchinfo.chance = x.chance doSendDistanceShoot(getThingPos(cid), topos, ballcatch[item.itemid].send) doRemoveItem(item.uid, 1) doRemoveCreature(itemEx.uid) local d = getDistanceBetween(getThingPos(cid), topos) if getPlayerStorageValue(cid, 98796) >= 1 and getPlayerItemCount(cid, 12617) <= 0 then --alterado v1.9 setPlayerStorageValue(cid, 98796, -1) setPlayerStorageValue(cid, 98797, -1) doTeleportThing(cid, SafariOut, false) doSendMagicEffect(getThingPos(cid), 21) doPlayerSendTextMessage(cid, 27, "You spend all your saffari balls, good luck in the next time...") end addEvent(doSendPokeBall, d * 70 + 100 - (d * 14) , cid, catchinfo, false, false, typeee) addEvent(doSendMagicEffect, (d * 70 + 100 - (d * 14)) - 100, topos, 3) return true end
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...