Postado Dezembro 1, 2015 9 anos Tenta assim: Spoiler local c = { checkItems = {[2160] = 10, [2148] = 10, [2152] = 10, [2129] = 1}, -- [itemId] = quantidade checkPlaces = {{x=837, y=918, z=7}, {x=838, y=918, z=7}, {x=839, y=918, z=7}, {x=840, y=918, z=7}}, -- posicoes addons = {{156, 152}, name = "Barbarian"}, -- {addon female/male}, nome do outfit storage = 2306, level = 50 } local function getTableMax(t) local ret = 0 for _, i in pairs(t) do ret = ret + 1 end return ret end function onUse(cid, item, fromPosition, itemEx, toPosition) if(getPlayerStorageValue(cid, c.storage) == -1) then if(getPlayerLevel(cid) > c.level) then local done = {} for n, pos in pairs(c.checkPlaces) do for itemId, count in pairs(c.checkItems) do local posItem = getTileItemById(pos, itemId) if(posItem.uid ~= 0 and (count == 1 or posItem.type >= count) and not done[itemId]) then done[itemId] = {count, pos} break end end end if(getTableMax(done) == getTableMax(c.checkItems)) then for i, t in pairs(done) do doRemoveItem(getTileItemById(t[2], i).uid, t[1]) doSendMagicEffect(t[2], CONST_ME_POFF) end setPlayerStorageValue(cid, c.storage, 1) for i = 1, #c.addons[1] do doPlayerAddOutfit(cid, c.addons[1][i], 3) end doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Sacrifice done. "..(c.addons.name).." addons unlocked.") else doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Sacrifice incomplete. Missing items.") end else doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You can only do this sacrifice in level "..(c.level)..".") end else doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You already made this sacrifice.") end return true end
Postado Dezembro 1, 2015 9 anos Autor Ficou ótimo mano!!!Parabéns e muito obrigado REP++ Fiz algumas pequenas alterações, claro que... ao meu gosto: __Coloquei todas as mensagens no rodapé - exceto pela Sacrifice is done! You win this addon. __Mudei o efeito de quando os itens some (aparecendo agora uma bola de fogo) __Para efeito de conhecimento, se não quiserem limitar leveis para conseguir o addon, deixe como level = 0 Spoiler local c = { checkItems = {[2656] = 1, [5880] = 100}, -- [itemId] = quantidade checkPlaces = {{x=175, y=392, z=10}, {x=175, y=394, z=10}}, -- posicoes addons = {{145, 149}, name = "Wizard Addon"}, -- {addon female/male}, nome do outfit storage = 21003, level = 0 } local function getTableMax(t) local ret = 0 for _, i in pairs(t) do ret = ret + 1 end return ret end function onUse(cid, item, fromPosition, itemEx, toPosition) if(getPlayerStorageValue(cid, c.storage) == -1) then if(getPlayerLevel(cid) > c.level) then local done = {} for n, pos in pairs(c.checkPlaces) do for itemId, count in pairs(c.checkItems) do local posItem = getTileItemById(pos, itemId) if(posItem.uid ~= 0 and (count == 1 or posItem.type >= count) and not done[itemId]) then done[itemId] = {count, pos} break end end end if(getTableMax(done) == getTableMax(c.checkItems)) then for i, t in pairs(done) do doRemoveItem(getTileItemById(t[2], i).uid, t[1]) doSendMagicEffect(t[2], CONST_ME_FIREAREA) end setPlayerStorageValue(cid, c.storage, 1) for i = 1, #c.addons[1] do doPlayerAddOutfit(cid, c.addons[1], 3) end doPlayerSendTextMessage(cid, 21, "You just earned the "..(c.addons.name)..".") else doPlayerSendCancel(cid, "You need all itens.") end else doPlayerSendCancel(cid, "You need level "..(c.level)..".") end else doPlayerSendCancel(cid, "You have already completed this addon.") end return true end Só pra confirmar... posso colocar quantos itens eu quiser de requisitos que não limita no script né? AGRADEÇO: Imensalmente @vankk pela infinita paciência em minhas perguntas as vezes bem idiotas... mas sempre ajudou em cada pergunta! me ajudou criando scripts super úteis e funcionais. Obrigado por querer compartilhar conhecimento. @MaTTch por ter entrado no tópico, lido o conteúdo, entendido o meu pedido e compartilhado sua idéia de maneira útil... foi muito funcional e fácil de configurar... atendeu minha expectativa nesse pedido chato e difícil que fiz. Parabén a este time que realmente quer ajudar e compartilahr conteúdo, obrigado Tibia King! Editado Dezembro 1, 2015 9 anos por PLoOc Considerações finais (veja o histórico de edições) Euphoria ATS Map itself | Loot Balanced | RPG | Addons & Outfits | Quests Sistemas balanceados e muita diversão... yours, euphoria.
Postado Dezembro 1, 2015 9 anos Sensacional... fica algo mais rpg dentro dos ots servers Editado Dezembro 1, 2015 9 anos por pablobion (veja o histórico de edições) Scriptszinhos: Spoiler [CREATURESCRIPT] Auto TP depois de matar boss [ACTION] Clean Area [TALKACTION] !FelizAnoNovo [ACTION + MOVEMENT] Cartas ao GOD [CREATURESCRIPT] Always Emblem System [ACTION] Anihi simples [TALKACTIONS] Urinar / fazer xixi Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.
Postado Dezembro 1, 2015 9 anos Autor @MaTTch ou @vankk Agora que notei, o script esta configurado pra vir o addon comeplto, certo? Gostaria que viesse somente o addon = 1 ou o addon = 2 tem como? Euphoria ATS Map itself | Loot Balanced | RPG | Addons & Outfits | Quests Sistemas balanceados e muita diversão... yours, euphoria.
Postado Dezembro 1, 2015 9 anos Coloca 3 no final da linha aonde tem a funcão doPlayerAddOutfit. 1 = addon 1 2 = addon 2 3 = Addon 1 e 2. Discord: vankk #7765 Precisando de ajuda? Entre em contato comigo via Discord. Muitos vêm seus muitos dias de glória, mas poucos vêm seus muitos dias de luta.
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.