Ir para conteúdo

Featured Replies

Postado

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

 

 

  • Respostas 23
  • Visualizações 907
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Não porque ele está configurado para remover os 4 items: itemId = {2160, 2161, 2162, 2163}, -- item ids Pela lógica, está certo. Agora quero ver se vai dar algum erro

  • Tenta assim:  

  • Coloca 3 no final da linha aonde tem a funcão doPlayerAddOutfit. 1 = addon 1 2 = addon 2 3 = Addon 1 e 2.

Postado
  • 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 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

Sensacional... fica algo mais rpg dentro dos ots servers

 

Editado por pablobion (veja o histórico de edições)

Scriptszinhos:

 

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
  • 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

Coloca 3 no final da linha aonde tem a funcão doPlayerAddOutfit.

1 = addon 1

2 = addon 2

3 = Addon 1 e 2.

discord.pngDiscord: 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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo