Ir para conteúdo

zipter98

Herói
  • Total de itens

    2553
  • Registro em

  • Última visita

  • Dias Ganhos

    72

Tudo que zipter98 postou

  1. O problema não está no código, e sim na área da spell. Adicione isso em areas.lua (data/lib): spell_area = { --Área de posições que o pokémon pode teleportar. {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 1, 3, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }
  2. Não se esqueça de registrar as palavras que executarão o código na tag. Ex.: <talkaction words="/spawnEnigma;/spawnSvargrond;/spawnYalahar" access="4" event="script" value="nome_do_arquivo.lua"/> Script: local cities = { ["enigma"] = { --Cidade. summon_effect = xxx, --Efeito. coordinates = { x = {1047, 1053}, --fromPos (x), toPos (x). y = {1058, 1061}, --fromPos (y), toPos (y). z = 7 --Coordenadas de z. } }, ["svargrond"] = { summon_effect = xxx, coordinates = { x = {x, x}, y = {y, y}, z = z } }, } function onSay(cid, words, param) local city, w = cities[words:lower():match("/spawn(.*)")], param:explode(";") if not city then return doPlayerSendCancel(cid, "This city isn't available.") end local monster_raid = {} for i = 1, #w do local m_info = w[i]:explode(",") local count, monster_name = tonumber(m_info[1]), m_info[2] if not count or not monster_name then return doPlayerSendCancel(cid, "Wrong parameters.") end monster_raid[i] = {count, monster_name} end for i = 1, #monster_raid do for monster_count = 1, monster_raid[i][1] do local summon_position = {x = math.random(city.coordinates.x[1], city.coordinates.x[2]), y = math.random(city.coordinates.y[1], city.coordinates.y[2]), z = city.coordinates.z} doCreateMonster(monster_raid[i][2], summon_position) doSendMagicEffect(summon_position, city.summon_effect) end end return true end
  3. Você copiou a talkaction errado, salvou o código com encriptação diferente ou tem algum símbolo no código que não está sendo reconhecido (menos provável, mas é uma opção).
  4. Uma opção é a seguinte: Abaixo de: function creatureSayCallback(cid, type, msg) coloque: msg = msg:lower() Assim, a mensagem do jogador será passada para letras minúsculas. Exemplo: "Carlin" seria interpretado como "carlin".
  5. Como não encontrei ligação alguma entre seu tópico e o universo tibiano, movi para o Bar. Se eu tiver entendido o assunto erroneamente, por favor, me avise.
  6. Letras maiúsculas e minúsculas fazem diferença neste caso. Logo, se for configurado "carlin" e você digitar "Carlin" o NPC lhe responderá que a opção não está disponível. Levando isso em consideração, você provavelmente está enviando uma mensagem que não foi configurada na tabela destinations.
  7. local config = { effect = xxx, --Efeito. price = xxx, --Preço para viajar. destinations = { --["message"] = toPos, --Ex.: ["carlin"] = {x = xxx, y = yyy, z = zzz}, ["yalahar"] = {x = x, y = y, z = z}, } } local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} 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) msg = msg:lower() if not npcHandler:isFocused(cid) then return false elseif not config.destinations[msg] then return selfSay("This option isn't available.", cid) elseif getPlayerMoney(cid) < config.price then return selfSay("You do not have enough money.", cid) end doPlayerRemoveMoney(cid, config.price) doTeleportThing(cid, config.destinations[msg]) doSendMagicEffect(getThingPos(cid), config.effect) return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  8. Troque: setPlayerStorageValue(pid, STAFF_VAULT, (getPlayerStorageValue(pid, STAFF_VAULT) < 0 and 0 or getPlayerStorageValue(pid, STAFF_VAULT)) + money) por: setPlayerStorageValue(pid, STAFF_VAULT, money) E troque: func("UPDATE player_storage SET value = value + "..money.." WHERE player_id = "..query:getDataInt("id").." AND key = "..STAFF_VAULT) por: func("UPDATE player_storage SET value = "..money.." WHERE player_id = "..query:getDataInt("id").." AND key = "..STAFF_VAULT)
  9. @Uddy Na verdade, os concursos oficiais ainda não aconteceram.
  10. Código corrigido (primeira página, no meu comentário contendo o sistema). Não entendi muito bem seu pedido. Você quer que ambas as storages sejam resetadas no início do mês?
  11. local effect = xxx --Efeito. function onStepIn(cid) if not isPlayer(cid) then return true end doSendMagicEffect(getThingPos(cid), effect) return true end
  12. Ah, eu tinha entendido errado a explicação da spell. Falha minha, desculpe. Use este código: local times = 3 --Quantos SQMs o jogador irá se mover. 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 onCastSpell(cid) local playerPos = getThingPos(cid) local toPos = { [0] = {x = playerPos.x, y = playerPos.y - times, z = playerPos.z}, [1] = {x = playerPos.x + times, y = playerPos.y, z = playerPos.z}, [2] = {x = playerPos.x, y = playerPos.y + times, z = playerPos.z}, [3] = {x = playerPos.x - times, y = playerPos.y, z = playerPos.z} } local spellToPos = toPos[getCreatureLookDirection(cid)] if isWalkable(spellToPos) then doTeleportThing(cid, spellToPos) else doPlayerSendCancel(cid, "Sorry, destination not possible.") end return true end
  13. Tópico movido para dúvidas / pedidos resolvidos.
  14. Você deve mudar o horário da tag e em seguida recarregar (reload) os globalevents.
  15. Você relogou os personagens? De qualquer maneira, use o seguinte código e poste o que for imprimido na distro. local salary = { --[group_id] = money, } local func = db.executeQuery or db.query function onTime() if os.date("%d") == "1" then print("Script sendo executado no dia.") for group_id, money in pairs(salary) do print("*** Agora, no group id "..group_id.." ***") local query = db.getResult("SELECT id FROM players WHERE group_id = "..group_id) if query:getID() ~= -1 then print("Player(s) encontrado(s) do respectivo group id.") repeat local verify_query = db.getResult("SELECT * FROM player_storage WHERE player_id = "..query:getDataInt("id").." AND key = "..STAFF_VAULT) print("ID: "..query:getDataInt("id")..", nome: "..getPlayerNameByGUID(query:getDataInt("id"))) if verify_query:getID() ~= -1 then func("UPDATE player_storage SET value = value + "..money.." WHERE player_id = "..query:getDataInt("id").." AND key = "..STAFF_VAULT) func("UPDATE player_storage SET value = 0 WHERE player_id = "..query:getDataInt("id").." AND key = "..STAFF_VAULT_LIMITS) verify_query:free() else func("INSERT INTO player_storage VALUES ("..query:getDataInt("id")..", "..STAFF_VAULT..", "..money..")") func("INSERT INTO player_storage VALUES ("..query:getDataInt("id")..", "..STAFF_VAULT_LIMITS..", 0)") end until not query:next() query:free() end end end return true end
  16. zipter98

    Protection

    Por gentileza, poste as funções do seu sistema de resets.
  17. zipter98

    [Pedido] Border

    Tópico movido para dúvidas / pedidos resolvidos.
  18. Tópico movido para dúvidas / pedidos resolvidos.
  19. Agradeço o interesse pelos meus serviços, mas assuntos relacionados à comercialização de produtos de OTServ são proibidos aqui no fórum. Basicamente, me limito a ajudar na área de suporte.
  20. local times = 3 --Quantos SQMs o jogador irá se mover. 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 move_creature(cid, i, direction) if not isPlayer(cid) then return true elseif i <= 0 or not isWalkable(getPosByDir(getThingPos(cid), direction)) then return doCreatureSetNoMove(cid, false) end doMoveCreature(cid, direction) addEvent(move_creature, 400, cid, i - 1, direction) --400 = intervalo de tempo entre cada movimento end function onCastSpell(cid) doCreatureSetNoMove(cid, true) move_creature(cid, times, getCreatureLookDirection(cid)) return true end
  21. local drain = xxx --Porcentagem de mana drenada/vida curada. function onCastSpell(cid, var) local mana_drain = getCreatureMana(variantToNumber(var)) * drain / 100 doCreatureAddMana(variantToNumber(var), -mana_drain) doCreatureAddHealth(cid, mana_drain) return true end
  22. zipter98

    Comando !online

    data/talkactions/scripts. Deixe-me adivinhar: você também não sabe fazer a tag, certo? <talkaction words="!online" event="script" value="nome_do_arquivo.lua"/> Tópico movido para dúvidas / pedidos resolvidos.
  23. O item que garante mais cargas é removido após o uso ou tem um intervalo de tempo para usá-lo novamente?
  • Quem Está Navegando   0 membros estão online

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