Ir para conteúdo

zipter98

Membro
  • Registro em

  • Última visita

Tudo que zipter98 postou

  1. Use um type que não dê debug, ué. Exemplos: TALKTYPE_CHANNEL_Y TALKTYPE_CHANNEL_W TALKTYPE_CHANNEL_O Você pode conferir outros types em 000-constant.lua.
  2. O que está dando debug é o type da mensagem (Speak Class).
  3. zipter98 postou uma resposta no tópico em Suporte Tibia OTServer
    Você colocou um nome no arquivo diferente do configurado na tag (creaturescript). ;/
  4. zipter98 postou uma resposta no tópico em Suporte Tibia OTServer
    Aparentemente, seu servidor não tem o callback onTime. O jeito é fazer por onThink mesmo. Troca o globalevent por esse: local time = "19:30" --Horário que o evento vai começar. function onThink(interval, lastExecution) if isInArray(config.day, os.date("%A")) then if os.date("%X") == time..":00" then broadcastMessage("The survival event is open! You guys have "..config.time.." minutes to enter.") local item = doCreateItem(config.teleport.tpId, 1, config.teleport.createPos) doItemSetAttribute(item, "aid", config.aid) setGlobalStorageValue(config.storages.global, 1) addEvent(function() if getGlobalStorageValue(config.storages.global) == 1 then local tp = getTileItemById(config.teleport.createPos, config.teleport.tpId).uid if tp > 0 then doRemoveItem(tp) end if #getPlayersOnEvent() < config.playerCount[1] then broadcastMessage("Not enough players to start the survival event. :/") setGlobalStorageValue(config.storages.global, -1) for i = 1, #getPlayersOnEvent() do setPlayerStorageValue(getPlayersOnEvent()[i], config.storages.storage, -1) end db.executeQuery("UPDATE player_storage SET value = -1 WHERE key = "..config.storages.storage.." AND value != -1") else broadcastMessage("The survival event will start in "..config.startTime.." seconds.") addEvent(function() broadcastMessage("The survival event started!!!") setGlobalStorageValue(config.storages.global, 2) for i = 1, #getPlayersOnEvent() do doPlayerSetNoMove(getPlayersOnEvent()[i], false) end end, config.startTime * 1000) end end end, config.time * 60 * 1000) end end return true end E a tag por essa: <globalevent name="Survival" interval="1" event="script" value="nome_do_arquivo.lua"/>
  5. zipter98 postou uma resposta no tópico em Suporte Tibia OTServer
    OMG, deixei config como uma variável local. O outro erro, depois dou uma olhada.
  6. zipter98 postou uma resposta no tópico em Suporte Tibia OTServer
    Ops, esqueci uma vírgula. Troque: players = 9502 por: players = 9502,
  7. zipter98 postou uma resposta no tópico em Suporte Tibia OTServer
    Não altere isso. Edite apenas o que eu indiquei no código.
  8. Diga-me se entendi corretamente o sistema: dá o horário, libera a entrada do evento -> mata guarda -> nasce geradores -> mata geradores -> libera grades para o próximo andar. No último andar, depois de matar os geradores, as grades para a sala do Crystal são liberadas. Isso mesmo? E a premiação para as quatro vocações que deram mais dano será a mesma? Por exemplo, os itens possíveis como prêmio são 10, 50 e 100 para sorcerer, paladin, knight e druid? A ideia é interessante, posso tentar fazer. Porém, antes, tenho outros sistemas para terminar. Ah, cada guarda será um monstro diferente, certo? E os geradores? Serão os mesmos para todos os andares, ou terá, por exemplo, Gerador 1, Gerador 2, etc?
  9. zipter98 postou uma resposta no tópico em Suporte Tibia OTServer
    OK. Quando possível, dou uma olhada nisso. Tenho outras coisas pra fazer no momento. Se eu fizer (não vou confirmar nada), te mando uma PM, visto que o tópico já foi resolvido.
  10. zipter98 postou uma resposta no tópico em Suporte Tibia OTServer
    Posso tentar. Mas como funciona o Heavy Slam? Não entro na PxG faz tempo. E obrigado. (:
  11. Você instalou corretamente o movement? Se o void não é removido, provavelmente o sistema foi instalado erroneamente. Além de mim, outras pessoas testaram os códigos e disseram funcionar perfeitamente.
  12. Na verdade, quando um pedido é resolvido, o tópico não é fechado. Você deve clicar em "melhor resposta" para selecionar qual o comentário que mais lhe ajudou.
  13. Falta de atenção minha... Agora sim eu testei. Se não funcionar, bem, você configurou algo errado. local config = { catapults = { --[actionid] = "direção", [6801] = "sul", [6802] = "norte", }, distance = 6, --Quantas posições o jogador vai "pular" (só funciona com números pares). Distância máxima: 14. directions = { ["norte"] = 0, ["leste"] = 1, ["sul"] = 2, ["oeste"] = 3, }, } function onUse(cid, item, fromPosition, itemEx, toPosition) if config.distance % 2 ~= 0 then return doPlayerSendCancel(cid, "Sorry, the catapult isn't available right now.") and print("Trade catapult distance for a odd number.") elseif not config.catapults[item.actionid] then return doPlayerSendCancel(cid, "Sorry, this catapult isn't available right now.") and print("Catapult without actionid or it isn't configured in table.") end local direction = config.directions[config.catapults[item.actionid]] for i = 1, config.distance do addEvent(function() if getPlayerLookDir(cid) ~= direction then doCreatureSetLookDirection(cid, direction) end local newPos = getPosByDir(i ~= 1 and getThingPos(cid) or toPosition, direction) newPos.z = i <= config.distance / 2 and newPos.z - 1 or newPos.z + 1 if i < config.distance then doAreaCombatHealth(0, 0, newPos, 0, 0, 0, 255) doCreateItem(460, 1, newPos) end doTeleportThing(cid, newPos) end, i * 120) end return true end EDIT: Vi acima que você comentou ter removido a linha que cria o void. NÃO remova-a, por favor. doCreateItem(460, 1, newPos)
  14. Você quer uma direção para cada catapulta? É isso? Sobre o erro, já vi o que é. Logo edito meu comentário com a correção. Mude o movement para este: local area = createCombatArea{ {1, 1, 1}, {1, 2, 1}, {1, 1, 1}, } function onStepIn(cid, item, position, fromPosition) doAreaCombatHealth(cid, 3080, getThingPos(cid), area, 0, 0, 255) return true end function onStepOut(cid, item, position, fromPosition) local oldtpos = fromPosition oldtpos.stackpos = STACKPOS_GROUND if getTileThingByPos(oldtpos).itemid >= 1 then doRemoveItem(getTileThingByPos(oldtpos).uid, 1) end return true end Tags: <movevent type="StepOut" itemid="460" event="script" value="nome_do_arquivo.lua"/> <movevent type="StepIn" itemid="460" event="script" value="nome_do_arquivo.lua"/> Action com múltiplas catapultas: local config = { catapults = { --[actionid] = "direção", [6801] = "sul", [6802] = "norte", }, distance = 6, --Quantas posições o jogador vai "pular" (só funciona com números pares). Distância máxima: 14. directions = { ["norte"] = 0, ["leste"] = 1, ["sul"] = 2, ["oeste"] = 3, }, } function onUse(cid, item, fromPosition, itemEx, toPosition) if config.distance % 2 ~= 0 then return doPlayerSendCancel(cid, "Sorry, the catapult isn't available right now.") and print("Trade catapult distance for a odd number.") elseif not config.catapults[item.actionid] then return doPlayerSendCancel(cid, "Sorry, this catapult isn't available right now.") and print("Catapult without actionid or it isn't configured in table.") end local direction = config.directions[config.catapults[item.actionid]] for i = 1, config.distance do addEvent(function() if getPlayerLookDir(cid) ~= direction then doCreatureSetLookDirection(cid, direction) end local newPos = getPosByDir(i ~= 1 and getThingPos(cid) or toPosition, direction) newPos.z = i <= config.distance / 2 and newPos.z - 1 or newPos.z + 1 if i < config.distance then doAreaCombatHealth(0, 0, newPos, 0, 0, 0, 255) doCreateItem(460, 1, newPos) end doTeleportThing(cid, newPos) end, i * 120) end return true end PS: Não se esqueça de registrar os action IDs na tag. Ex.: <action actionid="6801;6802" event="script" value="nome_do_arquivo.lua"/>
  15. Você instalou corretamente o movement (script + tag)? E não entendi esta modificação.
  16. local config = { lookDirection = "sul", --Direção que a catapulta está olhando. distance = 6, --Quantas posições o jogador vai "pular" (só funciona com números pares). Distância máxima: 14. directions = { ["norte"] = 0, ["leste"] = 1, ["sul"] = 2, ["oeste"] = 3, }, } function onUse(cid, item, fromPosition, itemEx, toPosition) if config.distance % 2 ~= 0 then return doPlayerSendCancel(cid, "Sorry, the catapult isn't available right now.") and print("Trade catapult distance for a odd number.") end local direction = config.directions[config.lookDirection] for i = 1, config.distance do addEvent(function() if getPlayerLookDir(cid) ~= direction then doCreatureSetLookDirection(cid, direction) end local newPos = getPosByDir(i ~= 1 and getThingPos(cid) or toPosition, direction) newPos.z = i <= config.distance / 2 and newPos.z - 1 or newPos.z + 1 if i < config.distance then doAreaCombatHealth(0, 0, newPos, 0, 0, 0, 255) doCreateItem(460, 1, newPos) end doTeleportThing(cid, newPos) end, i * 120) end return true end
  17. Se você tiver as sources do seu servidor, vá em luascript.cpp e procure por alguma função relacionada a "lookdir" (obviamente você deverá usar CTRL+F). Se não, na pasta do seu servidor, vá em doc, abra o arquivo LUA_FUNCTIONS e procure por algo relacionado a "lookdir". Se encontrar algo, informe aqui.
  18. Função: function getItemsInContainerById(container, itemid) -- Function By Kydrai local items = {} if isContainer(container) and getContainerSize(container) > 0 then for slot=0, (getContainerSize(container)-1) do local item = getContainerItem(container, slot) if isContainer(item.uid) then local itemsbag = getItemsInContainerById(item.uid, itemid) for i=0, #itemsbag do table.insert(items, itemsbag[i]) end else if itemid == item.itemid then table.insert(items, item.uid) end end end end return items end Uso dela: local chestId = xxx --ID do baú. local position = {x = x, y = y, z = z} --Posição do baú. local item = xxx --ID do item que será verificado dentro do baú. local box = getTileItemById(position, chestId).uid if box > 0 then if #getItemsInContainerById(box, item) > 0 then return true end end
  19. data/actions/scripts: local config = { lookDirection = "sul", --Direção que a catapulta está olhando. distance = 6, --Quantas posições o jogador vai "pular" (só funciona com números pares). Distância máxima: 14. directions = { ["norte"] = 0, ["leste"] = 1, ["sul"] = 2, ["oeste"] = 3, }, } function onUse(cid, item, fromPosition, itemEx, toPosition) if config.distance % 2 ~= 0 then return doPlayerSendCancel(cid, "Sorry, the catapult isn't available right now.") and print("Trade catapult distance for a odd number.") end local direction = config.directions[config.lookDirection] for i = 1, config.distance do addEvent(function() if getPlayerLookDir(cid) ~= direction then doCreatureSetLookDirection(cid, direction) end local newPos = getPosByDir(i ~= 1 and getThingPos(cid) or toPosition, direction) newPos.z = i <= config.distance / 2 and newPos.z - 1 or newPos.z + 1 if i < config.distance then doAreaCombatHealth(0, 0, newPos, 0, 0, 0, 255) doCreateItem(460, 1, newPos) end doTeleportThing(cid, newPos) end, i * 120) end return true end data/movements/scripts: local area = createCombatArea{ {1, 1, 1}, {1, 2, 1}, {1, 1, 1}, } function onStepIn(cid, item, position, fromPosition) doAreaCombatHealth(cid, 3080, getThingPos(cid), area, 0, 0, 255) return true end function onStepOut(cid, item, position, fromPosition) local oldtpos = fromPosition oldtpos.stackpos = STACKPOS_GROUND if getTileThingByPos(oldtpos).itemid >= 1 then doRemoveItem(getTileThingByPos(oldtpos).uid, 1) end return true end Tags do movement: <movevent type="StepOut" itemid="460" event="script" value="nome_do_arquivo.lua"/> <movevent type="StepIn" itemid="460" event="script" value="nome_do_arquivo.lua"/>
  20. local box = getThingFromPos({x = 123, y = 321, z = 7, stackpos = 1}).uid for i = 1, #getItemsInContainer(box) do if getItemsInContainer(box)[i].itemid == 2160 then return true end end
  21. E qual parte da outfit teria a cor trocada?
  22. local levels = {717217, 903637, 1034406} --Adicione aqui os levels que participarão do script. function onSay(cid, words) if isInArray(levels, getPlayerLevel(cid)) then db.executeQuery("UPDATE players SET level = "..(getPlayerLevel(cid) + 1)..", experience = 10000 WHERE id = "..getPlayerGUID(cid)) doRemoveCreature(cid) end return true end
  23. Na talkaction para abrir o torneio, você também poderá definir a quantidade mínima de participantes, ou esta é padrão para todos os torneios? E tem um porém nesta nova lógica de horário: e se já estiver sendo realizado um torneio (por exemplo, um customizável) no momento que era para o torneio "normal" ser iniciado, o que acontecerá?
  24. Haverá algum tempo de espera antes do primeiro combate começar? E quando 2 jogadores estiverem na arena, logo de início poderão se atacar ou terá um tempo para se prepararem? Na talkaction para abrir o evento, você poderá selecionar o level mínimo/máximo? Ex.: /torneio open:1-999. E quando você fechar o torneio pela talkaction, o que vai acontecer? Os jogadores inscritos vão ser teleportados para o templo, ou na verdade o torneio irá ser iniciado? Se um torneio já estiver acontecendo quando der o horário de outra modalidade, o que acontecerá? Já iniciei o código, porém não pude dar continuidade devido a essas questões.
  25. zipter98 postou uma resposta no tópico em Suporte Tibia OTServer
    Você coloca este script em data/creaturescripts/scripts. Registre a seguinte tag em creaturescripts.xml: <event type="advance" name="msgLevel" event="script" value="nome_do_arquivo.lua"/> Depois, em login.lua, abaixo de semelhantes, adicione: registerCreatureEvent(cid, "msgLevel")

Informação Importante

Confirmação de Termo