Ir para conteúdo

Wise

Membro
  • Registro em

  • Última visita

Tudo que Wise postou

  1. Ok, tente: function onSay(cid) time = 5 -- time in seconds portalid = 1387 createpos = {x=123, y=456, z=7} -- local topos = {x=123, y=456, z=7} -- destiny p = getTileItemById(createpos, portalid) if p.uid > 0 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'There is already a portal on the local.') end doSendMagicEffect(topos, CONST_ME_TELEPORT) doCreateTeleport(portalid, topos, createpos) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'The portal was created.') doBroadcastMessage('The portal to the BOSS Event was created and it will be automatically closed in '..time..' minutes.') addEvent(doRemoveItem, time * 60000, getTileItemById(createpos, portalid).uid, 1) return true end Não precisa alterar nada aí, basta mudar o valor da variável time com o tempo em minutos como eu expliquei no comentário dos códigos.
  2. Claro, disponha ;] function onSay(cid) time = 5 -- time in seconds portalid = 1387 createpos = {x=123, y=456, z=7} -- local topos = {x=123, y=456, z=7} -- destiny p = getTileItemById(createpos, portalid) if p.uid > 0 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'There is already a portal on the local.') end doSendMagicEffect(topos, CONST_ME_TELEPORT) doCreateTeleport(portalid, topos, createpos) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'The portal was created.') doBroadcastMessage('The portal to the BOSS Event was created and it will be automatically closed in '..time..' minutes.') addEvent(doRemoveItem, time * 60000, getTileItemById(createpos, portalid), 1) return true end Aqui não atualizou o post do membro e.e
  3. Tente: eventboss.lua (data\talkactions\scripts): function onSay(cid) time = 5 -- time in seconds portalid = 1387 createpos = {x=123, y=456, z=7} -- local topos = {x=123, y=456, z=7} -- destiny p = getTileItemById(createpos, portalid) if p.uid > 0 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'There is already a portal on the local.') end doSendMagicEffect(topos, CONST_ME_TELEPORT) doCreateTeleport(portalid, topos, createpos) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'The portal was created.') doBroadcastMessage('The portal to the BOSS Event was created and it will be automatically closed in '..time..' minutes.') addEvent(doRemoveItem, time * 60000, getTileItemById(createpos, portalid), 1) return true end Tag - talkactions.xml (data\talkactions): <talkaction log="yes" words="/eventboss" access="4" event="script" value="eventboss.lua"/>
  4. animago.lua (data\talkactions\scripts): local s = {} local cspeed = createConditionObject(CONDITION_HASTE) setConditionParam(cspeed, CONDITION_PARAM_TICKS, -1) setConditionParam(cspeed, CONDITION_PARAM_SPEED, #s) function onSay(cid) speed = 30 -- % level = 120 outfit = { [0] = 123, -- female [1] = 234 -- male } if getPlayerLevel(cid) >= level then if getCreatureOutfit(cid).lookType ~= outfit[getPlayerSex(cid)] then table.insert(s, speed * (getCreatureSpeed(cid) / 100)) doSetCreatureOutfit(cid, {looktype = outfit[getPlayerSex(cid)]}, -1) doAddCondition(cid, cspeed) doSendMagicEffect(getThingPos(cid), CONST_ME_STUN) doPlayerSendTextMessage(last, MESSAGE_INFO_DESCR, 'You\'re now '..speed..'% percent faster.') else doRemoveCondition(cid, CONDITION_OUTFIT) doRemoveCondition(cid, CONDITION_HASTE) end else doPlayerSendCancel(cid, 'You need at least level '..level..' to use this command.') end return true end Tag - talkactions.xml (data\talkactions): <talkaction words="!animago" event="script" value="animago.lua"/>
  5. Que nada, amigo, obrigado. Sou um eterno aprendiz. Agradeço por ter citado o post, não tinha notado o erro do danihcv nos parâmetros do callback, já editei: function onSay(cid)
  6. @danihcv / @narazaky O erro indicava que o que foi executado retornou um valor nulo, ou seja, a função chamada não existe. Nas versões mais atuais, as funções getPlayerHealth e getPlayerMaxHealth não são mais utilizadas. @Master zikka Já que o seu pedido foi atendido, por favor clique no botão que está localizado abaixo do post de quem te ajudou. Automaticamente ele irá ficar destacado como a melhor resposta e o tópico ficará com o prefixo "Resolvido" no início do título.
  7. @joaogtx É ótimo que você queria ajudar outros membros, mas o reconhecimento através da reputação vem com esforço e demonstração de trabalho. Deixe que o membro que solicitou o suporte decida se, o que você proporcionou, merece ou não um reconhecimento geral tanto da área, quanto dele. Agora, sobre os seus códigos. Dava pra simplificar essa repetição de funções, não acha? local pos = { {x = 343, y = 738, z = 7}, {x = 409, y = 801, z = 7}, {x = 1693, y = 1333, z = 6}, {x = 1642, y = 1275, z = 7}, {x = 547, y = 217, z = 7}, {x = 514, y = 118, z = 7}, {x = 518, y = 184, z = 7}, {x = 1644, y = 1277, z = 7}, {x = 1644, y = 1275, z = 7}, {x = 1646, y = 1275, z = 7}, {x = 398, y = 795, z = 7}, {x = 400, y = 795, z = 6}, {x = 400, y = 793, z = 6}, {x = 400, y = 791, z = 6}, {x = 467, y = 564, z = 7}, {x = 463, y = 566, z = 7}, {x = 463, y = 564, z = 7}, {x = 463, y = 562, z = 7}, {x = 514, y = 187, z = 7}, {x = 552, y = 225, z = 7}, {x = 796, y = 427, z = 6}, {x = 1622, y = 1268, z = 7}, {x = 602, y = 574, z = 7}, {x = 530, y = 196, z = 7}, {x = 783, y = 371, z = 7}, {x = 781, y = 369, z = 7}, {x = 783, y = 369, z = 7}, {x = 785, y = 369, z = 7}, {x = 480, y = 551, z = 6}, {x = 652, y = 113, z = 7}, {x = 653, y = 113, z = 7} } local gstor = 54321 function animacao() time = 5 -- time to repeat in seconds effect = 65 for i = 1, #pos do doSendMagicEffect(pos[i], effect) end if getGlobalStorageValue(gstor) > 0 then addEvent(animacao, time * 1000) end return true end function onSay(cid, words, param) if (param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Para ativar, use on; para desativar, use off.') elseif (param == 'on') then if (getGlobalStorageValue(gstor) < 1) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, 'Você ativou o sistema de animação para o ano novo.') setGlobalStorageValue(gstor, 1) animacao(cid) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, 'A animação já foi ativada.') end elseif (param == 'off') then if (getGlobalStorageValue(gstor) > 0) then setGlobalStorageValue(gstor, -1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, 'Você desativou o sistema de animação para o ano novo.') else doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, 'A animação não foi ativada.') end elseif (not tostring(param) or (not param == 'on' or 'off')) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, 'Parâmetro não identificado.') end return true end
  8. Wise respondeu ao post em um tópico de txica01 em Suporte Tibia OTServer
    É mesmo, não considerei essa hipótese, bem citado. Ele só quer ao morrer.. Então apenas altere o callback para onDeath e aguardemos sobre notificações dele.
  9. Dê uma olhada nos sistemas de VIP no fórum e faça uso daquele que te agrada. Esse Account VIP System, por exemplo, já contém o movement script que você quer (tile somente com acesso VIP). Pesquise antes de criar um tópico sobre suporte (dúvida/pedido/bug).
  10. Isso não convém com o assunto desse tópico, que pelo visto, foi solucionado. Por favor, clique em que está localizado abaixo do post de quem te ajudou, o tópico irá ficar destacado e com o prefixo "Resolvido" no início do título.
  11. A hipótese mais provável é a de que você não percebeu ter feito algo de errado, pois os códigos estão funcionais. Você tinha mencionado que o seu item estava com a tag desse modo. Está incorreto, o value deve ser 1. E o creaturescript death deve ficar: function onDeath(cid) aol = {2138, 30} stor = 76543 slot = getPlayerSlotItem(cid, CONST_SLOT_NECKLACE) if slot.itemid == aol[1] then if getPlayerStorageValue(cid, stor) < 1 then setPlayerStorageValue(cid, stor, aol[2] - 1) elseif getPlayerStorageValue(cid, stor) == 1 then setPlayerStorageValue(cid, stor, -1) doRemoveItem(slot.uid) else setPlayerStorageValue(cid, stor, getPlayerStorageValue(cid, stor) - 1) end end return true end
  12. @Onepiece Ok. Notei que você estava com dúvida enquanto as tags do item, eu não havia visto que você editou o post. As tags do item ficariam: <item id="2138" article="a" name="jashin amulet"> <attribute key="description" value="Nao deixa perder items a menos que esteja redskull." /> <attribute key="weight" value="5200" /> <attribute key="armor" value="3" /> <attribute key="slotType" value="necklace" /> <attribute key="preventDrop" value="1" /> </item> E no caso, no creature event que eu postei acima, usei o ID "comum" do amulet of loss: 2173. Mas no seu, é outro item. Portanto, altere o ID na tabela do script, para: aol = {2138, 30} -- {itemID, charges}
  13. Sim. Se você tivesse mencionado sobre o NPC, eu teria sugerido a mesma ideia; mas ali deu o parecer de colocar a estrutura de controle no creature event. Bom, é isso.
  14. Não é exatamente como o que você quer, mas com toda certeza é o melhor script já feito pra "comemorações": Fogos de artificio.
  15. Provavelmente você se esqueceu de alguma coisa, ou não removeu outros creaturescripts que envolvam o amulet of loss, ou simplesmente você fez algo errado. Eu testei esses códigos, executou perfeitamente.
  16. Relaxa. Mas não é uma tag, é uma função e o arquivo é com extensão Lua. Remova qualquer outro creaturescript de aol e faça o seguinte: amuletofloss.lua (data\creaturescripts\scripts): function onDeath(cid) aol = {2173, 30} stor = 76543 slot = getPlayerSlotItem(cid, CONST_SLOT_NECKLACE) if slot.itemid == aol[1] then if getPlayerStorageValue(cid, stor) < 1 then setPlayerStorageValue(cid, stor, aol[2] - 1) elseif getPlayerStorageValue(cid, stor) == 1 then setPlayerStorageValue(cid, stor, -1) doRemoveItem(slot.uid) else setPlayerStorageValue(cid, stor, getPlayerStorageValue(cid, stor) - 1) end end return true end Tag - creaturescripts.xml (data\creaturescripts): <event type="death" name="AmuletOfLoss" event="script" value="amuletofloss.lua"/> Registre o creature event em login.lua (data\creaturescripts\scripts): registerCreatureEvent(cid, "AmuletOfLoss")
  17. Poste os códigos que eu modifico pra você, e se possível, me informe o ID dessa town (cidade) free.
  18. @blackz Isso vale pra você também, amigo.
  19. Ué, cara. Testei aqui e executou tranquilamente. Você registrou o creature event e colocou a tag que mencionei (do item), tudo correto? E claro, esqueci de dizer que você tinha que alterar o ID do red aol na tabela: redaol = {2173, 100} -- {itemID, charges}
  20. Wise respondeu ao post em um tópico de txica01 em Suporte Tibia OTServer
    @danihcv Bom, pra não haver mais essa dúvida e ainda ficar de uma forma mais simples, editei o meu post anterior. Dá uma olhada.
  21. Não pensei nessa parte de um level superior a 20 ir fazer a quest.. Já que você quer que o questlog seja atualizado assim que o player já tiver concluído a quest de level 10 e tiver no mínimo level 20, a solução seria um creature event think, pra alterar o value do storage instantaneamente (mesmo que utilize RAM pra caralho). Se alguém tiver outra ideia, por favor, compartilhe. function onThink(cid) level = 20 stor = {4001, 1, 2} -- {storage, oldValue, newValue} if getPlayerLevel(cid) >= level and getPlayerStorageValue(cid, stor[1]) == stor[2] then doPlayerSetStorageValue(cid, stor[1], stor[3]) end return true end Deve funcionar. Registre o creature event em login.lua
  22. E qual seria o seu sistema de vip? Por premium days, storage, via database? De que modo o player se tornaria morador da cidade vip?
  23. Surpreendente como sempre, um ótimo trabalho novamente. Apesar de ser algo simples, tem uma complexidade nos códigos. E que foram muito bem calculados. Parabéns, bro.
  24. @narazaky Relaxa. O que importa é que você tentou ajudar outro membro.
  25. As ideias dos membros são boas. Mas no caso, você teria que fazer por values diferentes e não por storages diferentes, já que, pelo quests.xml, não dá pra acrescentar outros storages na missão. Apenas os values dos states. Faça com que o cid receba um value depois que completar a missão de level 10, que será checado ao alcançar o level 20. E então esse value será alterado para o value do state da missão de level 20, fazendo com que ela apareça no questlog como você quer. Você pode usar o creature event advance para isso. Ex: function onAdvance(cid, skill, oldLevel, newLevel) level = 20 -- newLevel stor = {1234, 5, 6} -- {storage, oldValue, newValue} if skill == SKILL__LEVEL and newLevel == level and getPlayerStorageValue(cid, stor[1]) == stor[2] then doPlayerSetStorageValue(cid, stor[1], stor[3]) end return true end PS: Não esqueça de registrá-lo em login.lua

Informação Importante

Confirmação de Termo