Ir para conteúdo

zipter98

Membro
  • Registro em

  • Última visita

Tudo que zipter98 postou

  1. Mudei essa parte da mensagem. Sobre o segundo problema: o NPC que compra troféus continua dizendo mensagens de outros NPCs? Se sim, no momento não consigo pensar no que pode ser, exatamente. Mas é algum problema do seu servidor, não do NPC. :x
  2. local cfg = { positions = { {{posição que o jogador deve ficar}, {posição para onde será teleportado}}, {{posição que o jogador deve ficar}, {posição para onde será teleportado}}, {{posição que o jogador deve ficar}, {posição para onde será teleportado}}, {{posição que o jogador deve ficar}, {posição para onde será teleportado}}, {{posição que o jogador deve ficar}, {posição para onde será teleportado}}, }, not_enough_players = xxx, --Efeito que aparecerá quando não tiver jogadores o suficiente. tp_effect = xxx, --Efeito que vai aparecer nos jogadores ao serem teleportados. } function onUse(cid, item, fromPosition, item2, toPosition) for i = 1, #cfg.positions do if not isPlayer(getTopCreature(cfg.positions[i][1]).uid) then return doPlayerSendCancel(cid, "Not enough players.") and doSendMagicEffect(getThingPos(cid), cfg.not_enough_players) end end for i = 1, #cfg.positions do local creature = getTopCreature(cfg.positions[i][1]).uid doTeleportThing(creature, cfg.positions[i][2]) doPlayerSendTextMessage(creature, 27, "You started the quest.") doSendMagicEffect(getThingPos(creature), cfg.tp_effect) end return true end
  3. Ao invés de colocar todos os horários em uma única tag, tente colocar cada um em uma tag diferente. Por exemplo: <globalevent name="TournamentStart" time="11:35" event="script" value="Torneio.lua"/> <globalevent name="TournamentStart2" time="horário_que_começa_batalha" event="script" value="Torneio.lua"/> <globalevent name="TournamentStart3" time="horário_que_começa_batalha" event="script" value="Torneio.lua"/> E assim vai. edit: definitivamente, é desse jeito que vai funcionar. tinha esquecido que em globalevent só pode configurar um horário por tag
  4. Como havia apenas um monstro configurado em tps, imaginei que você queria que o código se aplicasse a apenas um único boss. Por isso, mudei a tabela. local teleport = { tpId = 5023, --ID do teleporte. tpTime = 10, --Tempo de duração do teleporte. tps = { {{x = 1134, y = 895, z = 3}, {x = 1135, y = 895, z = 2}}, {{posição onde será criado}, {posição onde levará}}, {{posição onde será criado}, {posição onde levará}}, {{posição onde será criado}, {posição onde levará}}, }, } function onDeath(cid) doCreatureSay(cid, "The teleport will disappear on "..teleport.tpTime.." seconds.", TALKTYPE_ORANGE_1) for i = 1, #teleport.tps do doCreateTeleport(teleport.tpId, teleport.tps[i][2], teleport.tps[i][1]) addEvent(function() local item = getTileItemById(teleport.tps[i][1], teleport.tpId).uid if item > 0 then doRemoveItem(item, 1) doSendMagicEffect(teleport.tps[i][1], CONST_ME_POFF) end end, teleport.tpTime * 1000) end return true end
  5. Ops, falta de atenção minha, hehe. Já editei meu comentário anterior com a correção. Só trocar sua lib pela nova.
  6. zipter98 postou uma resposta no tópico em Suporte Tibia OTServer
    function onUse(cid, item, fromPosition, item2, toPosition) local slot_item = getPlayerSlotItem(cid, CONST_SLOT_LEGS).uid if slot_item < 1 then doPlayerAddItem(cid, 1225, 1) end return true end
  7. O boss só vai executar a magia se tiver algum jogador na área de visão dele? E, se possível, fale como será a spell.
  8. vc tem um vídeo desse sistema? ajudaria um pouco mais ^.^
  9. Sobre o segundo problema, provavelmente é algum onThink que esteja causando isso (dã). Se mesmo com o código que passei isso continua acontecendo, dá uma olhada no código desse NPC que você citou (Mary) e veja se há alguma coisa relacionada a essas mensagens (tanto no XML quanto no lua). Se tiver, poste os códigos. Se não, hm, vai ser um pouco mais complicado.
  10. Woops, my bad hehe. Já mudei.
  11. zipter98 postou uma resposta no tópico em Suporte Tibia OTServer
    Só pode receber o item de ID 1225 uma única vez, certo? E quando usa o item, ele é removido ou continua com o jogador? Eu posso até fazer o código, mas recomendaria fazer o que o WhiteWolf disse.
  12. OK. Editei meu comentário anterior com a correção + fechamento do teleporte + uma nova tag.
  13. Não sabia dessa, valeu por corrigir. (:
  14. Yep, exatamente. Em data/creaturescripts/scripts. Depois, você só adiciona a tag em creaturescripts.xml (não precisa adicionar nada em login.lua, visto que o callback é onLogin).
  15. Ué, só usar a função que o Vodkart disponibilizou: addPoints(cid, amount) Exemplo de código no qual o jogador loga e ganha 1 ponto: function onLogin(cid) if getCreatureName(cid) ~= "Account Manager" then if getPlayerStorageValue(cid, 9018) < 1 then addPoints(cid, 1) setPlayerStorageValue(cid, 9018, 1) doPlayerSendTextMessage(cid, 27, "You received one point.") end end return true end Exemplo de código no qual o jogador passa por certo piso e ganha 1 ponto: function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerStorageValue(cid, 9019) < 1 then addPoints(cid, 1) setPlayerStorageValue(cid, 9019, 1) doPlayerSendTextMessage(cid, 27, "You received one point.") end return true end
  16. data/globalevents/scripts, saturdaytp.lua: local configuration = { day = "Saturday", to_pos = {x = x, y = y, z = z}, --Para onde o teleport levará. pos = {x = x, y = y, z = z}, --Onde o teleport será criado. teleport_id = 1387, --ID do teleport. } function onTime() if os.date("%A") == configuration.day then local item = getTileItemById(configuration.pos, configuration.teleport_id).uid if item > 0 then doRemoveItem(item, 1) broadcastMessage("Castle War foi fechado.", MESSAGE_STATUS_WARNING) else doCreateTeleport(configuration.teleport_id, configuration.to_pos, configuration.pos) broadcastMessage("Castle War foi aberto.", MESSAGE_STATUS_WARNING) end end return true end Tags: <globalevent name="SaturdayTp" time="18:00" event="script" value="saturdaytp.lua"/> <globalevent name="CloseTp" time="21:00" event="script" value="saturdaytp.lua"/>
  17. db.executeQuery("UPDATE `players` SET `name` = '"..getCreatureName(cid).."' WHERE `players`.`id`= "..getPlayerGUID(cid).."") Dessa maneira, o nick do cara continuaria o mesmo, não? O correto, suponho, seria: local new_nick = getCreatureName(cid):gsub("(VIP) ", "") db.executeQuery("UPDATE `players` SET `name` = '"..new_nick.."' WHERE `players`.`id`= "..getPlayerGUID(cid).."")
  18. function onStepIn(cid, item, fromPosition, itemEx, toPosition) local storage = 417345 local slot = {1, 4, 7, 6, 5} if getCreatureStorage(cid, storage) < 0 then doCreatureSetStorage(cid, storage, 1) for i = 1, #slot do local slot_item = getPlayerSlotItem(cid, slot[i]).uid if slot_item > 0 then doRemoveItem(slot_item, 1) end end doSendMagicEffect(getThingPos(cid), 13) else doSendMagicEffect(getThingPos(cid), 2) end return true end
  19. local mensagem = "" 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) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local trophy = { ["ouro"] = {3, 5805}, --{Quantidade de items aleatórios, ID do troféu}, ["prata"] = {2, 5806}, ["bronze"] = {1, 5807}, } local items = {2154, 2156, 2158} if msgcontains(msg:lower(), "trophy") or msgcontains(msg:lower(), "trofeu") then selfSay("Acho que você pretende trocar algum troféu por gemas. Qual troféu você pretende trocar comigo: {ouro}, {prata} ou {bronze}?", cid) talkState[talkUser] = 1 return true elseif talkState[talkUser] == 1 then if trophy[msg:lower()] then selfSay("Você tem certeza que quer trocar 1 troféu de "..msg:lower().." por "..trophy[msg:lower()][1].." gema"..(trophy[msg:lower()][1] > 1 and "s" or "").." aleatória"..(trophy[msg:lower()][1] > 1 and "s" or "").."?", cid) mensagem = msg:lower() talkState[talkUser] = 2 return true else selfSay("Este troféu não existe.", cid) talkState[talkUser] = 0 return true end elseif msgcontains(msg:lower(), "yes") or msgcontains(msg:lower(), "sim") and talkState[talkUser] == 2 then local trofeu = trophy[mensagem] local id = trofeu[2] if getPlayerItemCount(cid, id) > 0 then for i = 1, trofeu[1] do doPlayerAddItem(cid, items[math.random(#items)], 1) end doPlayerRemoveItem(cid, id, 1) selfSay("Obrigado, aqui estão suas gemas.", cid) talkState[talkUser] = 0 return true else selfSay("Você não possui este troféu.", cid) talkState[talkUser] = 0 return true end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  20. Muda a lib do sistema pra essa: torneio = { awardTournament = 2160,---- Premio awardAmount = 10,---- quantia do Premio playerTemple = {x = 1096, y = 1009, z = 7}, ---- posiçao do Templo tournamentFight = {x = 909, y = 978, z = 7}, ----- Area (Mapa) do torneio area = {fromx = 899, fromy = 968, fromz = 7, tox = 919, toy = 989, toz= 7},---- fromx = 899, fromy = 968, fromz = 7 : posiçao superior a esquerda do Mapa do torneio /// tox = 919, toy = 989, toz= 7 : Posiçao inferior direito do Mapa do Torneio waitPlace = {x = 992, y = 998, z = 7}, ---- Sala de Espera (Coloque No-logout na area) waitArea = {fromx = 987, fromy = 993, fromz = 7, tox = 997, toy = 1003, toz= 7}, ---- fromx = 899, fromy = 968, fromz = 7 : posiçao superior a esquerda do Mapa Sala de espera /// tox = 919, toy = 989, toz= 7 : Posiçao inferior direito do Mapa sala de espera horarios = {{"11:30:00", "11:35:00"}, {"horario_que_começa_inscrições", "horário_que_começa_batalha"}, {"horario_que_começa_inscrições", "horário_que_começa_batalha"}}, price = 10000, ------ Custo para se inscrever no torneio } function getPlayersInArea(area) local players = {} for x = area.fromx,area.tox do for y = area.fromy,area.toy do for z = area.fromz,area.toz do local m = getTopCreature({x=x, y=y, z=z}).uid if m ~= 0 and isPlayer(m) then table.insert(players, m) end end end end return players end Muda a tag do globalevent pra essa: <globalevent name="TournamentStart" time="11:35" event="script" value="Torneio.lua"/> <globalevent name="TournamentStart2" time="horário_que_começa_batalha" event="script" value="Torneio.lua"/> <globalevent name="TournamentStart3" time="horário_que_começa_batalha" event="script" value="Torneio.lua"/> E assim vai. Muda o script do NPC pra esse: 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) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'torneio') or msgcontains(msg, 'enter') then selfSay('Você quer participar do torneio por ['..torneio.price..'] dollars? [Sim/Yes]', cid) talkState[talkUser] = 2 elseif talkState[talkUser] == 2 then if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then for i = 1, #torneio.horarios do if os.date("%X") > torneio.horarios[i][1] and os.date("%X") < torneio.horarios[i][2] then if doPlayerRemoveMoney(cid, torneio.price) then doTeleportThing(cid, torneio.waitPlace) setPlayerStorageValue(cid,130130,1) doPlayerSendTextMessage(cid, 21, "Bem-vindo, esta é a sala de espera, você espera aqui enquanto o torneio não começa. hora de início: {"..torneio.horarios[i][2].."}.") talkState[talkUser] = 0 return true else selfSay('Voce nao Tem Dinheiro ('..torneio.price..').', cid) talkState[talkUser] = 0 return true end end end selfSay('As inscrições para o torneio terminaram. Espere até o próximo.', cid) talkState[talkUser] = 0 return true else selfSay('Voce nao quer participar do Torneio? OK, quando quiser, venha até mim!', cid) talkState[talkUser] = 0 return true end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Se não tiver entendido como adiciona novos horários, só avisar que eu te explico.
  21. local storages = {xxx, xxx, xxx} --Coloque aqui as storages. function onUse(cid, item, fromPosition, item2, toPosition) for i = 1, #storages do if getPlayerStorageValue(cid, storages[i]) > -1 then return doPlayerSendCancel(cid, "You already have the storages.") end setPlayerStorageValue(cid, storages[i], 1) end doRemoveItem(item.uid, 1) return true end

Informação Importante

Confirmação de Termo