Ir para conteúdo
  • Cadastre-se

(Resolvido)[AJUDA] Apenas dando EXP...


Ir para solução Resolvido por Wakon,

Posts Recomendados

Alguem sabe me dizer o que tem de errado com esta script que apenas está dando EXP? e nada de items...

 

 

 

 

function onUse(cid, item, fromPosition, itemEx, toPosition)
if(getPlayerStorageValue(cid, 10012) < 1) then
doPlayerAddExp(cid, 20000, true, true)
setPlayerStorageValue(cid, 10012, 1)
end
if(item.uid == 3088) then
if(getPlayerStorageValue(cid, 30) == 53) then
setPlayerStorageValue(cid, 30, 54)
Player(cid):setStorageValue(12021, 5) -- StorageValue for Questlog "Mission 10: The Final Battle"
doPlayerAddItem(cid, 9776, 1)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You've found a yalahari armor.")
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "The chest is empty.")
end
elseif(item.uid == 3089) then
if(getPlayerStorageValue(cid, 30) == 53) then
setPlayerStorageValue(cid, 30, 54)
Player(cid):setStorageValue(12021, 5) -- StorageValue for Questlog "Mission 10: The Final Battle"
doPlayerAddItem(cid, 9778, 1)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You've found a yalahari mask.")
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "The chest is empty.")
end
elseif(item.uid == 3090) then
if(getPlayerStorageValue(cid, 30) == 53) then
setPlayerStorageValue(cid, 30, 54)
Player(cid):setStorageValue(12021, 5) -- StorageValue for Questlog "Mission 10: The Final Battle"
doPlayerAddItem(cid, 9777, 1)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You've found a yalahari leg piece.")
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "The chest is empty.")
end
end
return true
end
Editado por arthur122222 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Solução

Tente assim:

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if(getPlayerStorageValue(cid, 10012) < 1) then
        doPlayerAddExp(cid, 250000, true, true)
        setPlayerStorageValue(cid, 10012, 1)
    end
    if(item.uid == 3088) then
        if(getPlayerStorageValue(cid, 30) == 53) then
            doPlayerAddItem(cid, 9776, 1)
            setPlayerStorageValue(cid, 30, 54)
            Player(cid):setStorageValue(12021, 5) -- StorageValue for Questlog "Mission 10: The Final Battle"
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You've found a yalahari armor.")
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "The chest is empty.")
        end
    elseif(item.uid == 3089) then
        if(getPlayerStorageValue(cid, 30) == 53) then
            doPlayerAddItem(cid, 9778, 1)
            setPlayerStorageValue(cid, 30, 54)
            Player(cid):setStorageValue(12021, 5) -- StorageValue for Questlog "Mission 10: The Final Battle"
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You've found a yalahari mask.")
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "The chest is empty.")
        end
    elseif(item.uid == 3090) then
        if(getPlayerStorageValue(cid, 30) == 53) then
            doPlayerAddItem(cid, 9777, 1)
            setPlayerStorageValue(cid, 30, 54)
            Player(cid):setStorageValue(12021, 5) -- StorageValue for Questlog "Mission 10: The Final Battle"
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You've found a yalahari leg piece.")
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "The chest is empty.")
        end
    end
    return true
end

Lembrando que a storage para ganhar o item é 30 e não 10012.

Link para o post
Compartilhar em outros sites

Tenta ai, dei uma simplificada no script.

local tb = {
	
	[3088] = {9776, 1, "You've found a yalahari armor."},
	[3089] = {9778, 1, "You've found a yalahari mask."},
	[3090] = {9777, 1, "You've found a yalahari leg piece."}

}

function onUse(cid, item)

	local player = Player(cid)


    if player:getStorageValue(10012) == 1 then
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "The chest is empty.")
        return true
    end

    for bau, v in pairs(tb) do
   	if item.uid == bau then
             if player:getStorageValue(30) == 53 then
            	   player:AddItem(v[1], v[2])
            	   player:setStorageValue(30, 54)
            	   player:setStorageValue(12021, 5) -- StorageValue for Questlog "Mission 10: The Final Battle"
            	   player:sendTextMessage(MESSAGE_INFO_DESCR, v[3])
            	   break
             end
        end
    end

    player:addExperience(20000)
    player:setStorageValue(10012, 1)

    return true
end
Editado por Linus (veja o histórico de edições)

As Pessoas vivem apegadas aquilo que traduzem como correto e verdadeiro,assim elas definem a realidade.

mas oque significa o correto e o verdadeiro?

 

 

Link para o post
Compartilhar em outros sites

Tenta agora :

	local tb = {
		
		[3088] = {9776, 1, "You've found a yalahari armor."},
		[3089] = {9778, 1, "You've found a yalahari mask."},
		[3090] = {9777, 1, "You've found a yalahari leg piece."}

	}

	function onUse(cid, item)

		local player = Player(cid)

	    for bau, v in pairs(tb) do
	   		if item.uid == bau then
	   			if player:getStorageValue(10012) < 1 then
		                    player:AddItem(v[1], v[2])
		                    player:setStorageValue(30, 54)
		    		    player:addExperience(20000)
		    	 	    player:setStorageValue(10012, 1)
		                    player:setStorageValue(12021, 5) -- StorageValue for Questlog "Mission 10: The Final Battle"
		                    player:sendTextMessage(MESSAGE_INFO_DESCR, v[3])
	           	       else
					doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "The chest is empty.")
				end
	                end
	          end
	    return true
	end
Editado por Linus (veja o histórico de edições)

As Pessoas vivem apegadas aquilo que traduzem como correto e verdadeiro,assim elas definem a realidade.

mas oque significa o correto e o verdadeiro?

 

 

Link para o post
Compartilhar em outros sites

Wakon, estou usando a mesma que está na script. Linus, a sua agora está abrindo o baú e dando nada de recompensa.

Editado por arthur122222 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Wakon, estou usando a mesma que está na script. Linus, a sua agora está abrindo o baú e dando nada de recompensa.

Aparece a mensagem "The chest is empty."? "estou usando a mesma" tem duas no script, uma para XP e outra para ganhar os items:

10012 e 30.

Link para o post
Compartilhar em outros sites

Bom, aparece a mensagem The chest is empty. E esse storage, é uma action? Sou novo no ramo de Otserv.. 

Link para o post
Compartilhar em outros sites

É usado para guardar valores de players ou globais.

Essa linha é para verificar a storage da quest, que no caso é 30:

if(getPlayerStorageValue(cid, 30) == 53) then

Significa que ele só vai te dar os itens caso a storage no valor 30 for igual a 53.

 

Para alterar a storage, você pode mudar o valor na database em player_storages ou ativar o comando /storage.

Para ativa-lo vá em "Data/talkactions" abra o arquivo talkactions.xml e adicione:

<talkaction words="/storage" separator=" " script="setstorage.lua" />

Caso não tenha o script, coloque ele em "Data/talkactions/scripts" como setstorage.lua:

function onSay(cid, words, param)
    local player = Player(cid)
    if not player:getGroup():getAccess() then
        return true
    end

    if player:getAccountType() < ACCOUNT_TYPE_GOD then
        return false
    end

    local split = param:split(",")
    if split[2] == nil then
        player:sendCancelMessage("Insufficient parameters.")
        return false
    end

    local target = Player(split[1])
    if target == nil then
        player:sendCancelMessage("A player with that name is not online.")
        return false
    end

    -- Trim left
    split[2] = split[2]:gsub("^%s*(.-)$", "%1")
    split[3] = split[3]:gsub("^%s*(.-)$", "%1")
    local ch = split[2]
    local ch2 = split[3]
    setPlayerStorageValue(getPlayerByName(split[1]), tonumber(ch), tonumber(ch2))
    doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "The storage with id: "..tonumber(ch).." from player "..split[1].." is now: "..ch2..".")    
    return false
end

 

Para usar: /storage Wakon, 30, 53 -- Vai citar que a storage 30 do personagem Wakon é 53.

Provavelmente a quest está funcionando normalmente, porém seu char não tem valor 53 na storage 30.

Link para o post
Compartilhar em outros sites

Opa... Ativei a Storage 30, 53 no char e consegui pegar o item..

 

 

Só que não sei onde devo mexer..

Editado por arthur122222 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Testa este script aki

function onUse (cid,item,frompos,item2,topos)
pos = {x=1053, y=1053, z=7}
pos2 = getPlayerPosition(cid)


if getPlayerLevel(cid) >= 1 then
if item.uid == 9054 then
queststatus = getPlayerStorageValue(cid,10012)
if queststatus == -1 then
doTeleportThing(cid,pos)
doPlayerSendTextMessage(cid,22,"Você encontrou itens. ")
doPlayerAddItem(cid,9776,1)
doPlayerAddItem(cid,9778,1)
doPlayerAddItem(cid,9777,1)
setPlayerStorageValue(cid,72719,1)
doTeleportThing(cid, pos)
doSendMagicEffect(getThingPos(cid), 29)
else
doPlayerSendTextMessage(cid,22,"Vazio.")
end
end
else
doPlayerSendCancel(cid,'Não é necessario editar aki.')
end
return 1
end

 

Caso não funcionar teste esse:

 

function onUse (cid,item,frompos,item2,topos)
pos = {x=1053, y=1053, z=7}
pos2 = getPlayerPosition(cid)


if getPlayerLevel(cid) >= 1 then
if item.uid == 9054 then
queststatus = getPlayerStorageValue(cid,10012, 1)
if queststatus == -1 then
doTeleportThing(cid,pos)
doPlayerSendTextMessage(cid,22,"Você encontrou itens. ")
doPlayerAddItem(cid,9776,1)
doPlayerAddItem(cid,9778,1)
doPlayerAddItem(cid,9777,1)
setPlayerStorageValue(cid,72719,1)
doTeleportThing(cid, pos)
doSendMagicEffect(getThingPos(cid), 29)
else
doPlayerSendTextMessage(cid,22,"Vazio.")
end
end
else
doPlayerSendCancel(cid,'Não é necessario editar aki.')
end
return 1
end

 

Lembrando tem uma parte no começo que é assim

pos = {x=1053, y=1053, z=7}

Isto é para você editar, botar a coordenada do seu CP no caso, a hora que abrirem o báu serão teleportados para esta coordenada!

 

Link para o post
Compartilhar em outros sites

Amigo, storage é um código/key que fica marcado no player e esse código/key tem um valor para ser usado em varias coisas.

Como nessa quest o "código" é 30 para ganhar os items e 10012 para ganhar exp, você deve alterar o código 30 para o valor 53 e o 10012 para -1 (caso queira ganhar exp novamente).

Vou explicar mais ou menos o script:

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if(getPlayerStorageValue(cid, 10012) < 1) then -- Se a storage 10012 for menor que 1 então faça.
        doPlayerAddExp(cid, 250000, true, true) -- Adiciona 250000 exp ao player.
        setPlayerStorageValue(cid, 10012, 1) -- Modifica a storage 10012 para o valor 1, fazendo com que o script não dê mais exp para o player quando clicar no baú.
    end
    if(item.uid == 3088) then -- Se a actionID do baú for 3088 então faça.
        if(getPlayerStorageValue(cid, 30) == 53) then -- Se a storage 30 for igual a 53 então faça.
            doPlayerAddItem(cid, 9776, 1) -- Adiciona o item 9776 no valor 1.
            setPlayerStorageValue(cid, 30, 54) -- Modifica a storage 30 para o valor 54.
            Player(cid):setStorageValue(12021, 5) -- StorageValue for Questlog "Mission 10: The Final Battle"
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You've found a yalahari armor.") -- Mensagem ao ganhar o item.
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "The chest is empty.") -- Mensagem caso a storage 30 não for valor 53
        end
    elseif(item.uid == 3089) then
        if(getPlayerStorageValue(cid, 30) == 53) then
            doPlayerAddItem(cid, 9778, 1)
            setPlayerStorageValue(cid, 30, 54)
            Player(cid):setStorageValue(12021, 5) -- StorageValue for Questlog "Mission 10: The Final Battle"
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You've found a yalahari mask.")
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "The chest is empty.")
        end
    elseif(item.uid == 3090) then
        if(getPlayerStorageValue(cid, 30) == 53) then
            doPlayerAddItem(cid, 9777, 1)
            setPlayerStorageValue(cid, 30, 54)
            Player(cid):setStorageValue(12021, 5) -- StorageValue for Questlog "Mission 10: The Final Battle"
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You've found a yalahari leg piece.")
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "The chest is empty.")
        end
    end
    return true
end

Mais amigo, basicamente sua quest não está bugada, é a storage que está com um valor errado, quando o player for fazer, irá ficar normal.

Link para o post
Compartilhar em outros sites

Mano, eu ativo a Storage 30, 53 no char e funciona tudo certinho, mas quando tento fazer a quest com outro char apenas dá a EXP..

Link para o post
Compartilhar em outros sites

Mano, eu ativo a Storage 30, 53 no char e funciona tudo certinho, mas quando tento fazer a quest com outro char apenas dá a EXP..

É por que a storage tem que ser alterada para 53 amigo, essa storage irá mudar quando completar a quest.

O padrão da storage é -1, então se você criou um char e a storage não foi alterada para 53, óbvio que não irá ganhar o item, porém essa storage muda quando o player está fazendo a quest de yalahar, por isso tem um valor tão alto, já a storage exp é < 1, como eu disse o padrão é -1 então ele vai dar exp para um char criado agora.

Link para o post
Compartilhar em outros sites

Sim, é que estou tentando tirar as missões da quest, ai não da pra ganhar a tal storage já que não vai ter missões. E como faz?

Editado por arthur122222 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Modificar essa quest sem conhecimento em script é tenso amigo, você pode criar uma storage só para os baús:
Troque:

if(getPlayerStorageValue(cid, 30) == 53) then

por:

if(getPlayerStorageValue(cid, 30300) <= 0) then

Lembrando que tem 3 linhas iguais, troque as 3.
E troque também:

setPlayerStorageValue(cid, 30, 54)

por:

setPlayerStorageValue(cid, 30300, 1)

Esse também tem 3 linhas, troque as 3.

Link para o post
Compartilhar em outros sites

Ai, consegui.. Só que ao abrir o baú eu liberaria o acesso a porta de saida e isto não aconteceu, o que fazer agora?


Brow, já resolvi. Abri a script da porta e alterei a storage pra mesma que você me passou.. S2

 

 

Você me ajudou ontem a arrumar uma coisa e naquilo que você me ajudou estou com outro problema.. Abri outro tópico sobre ele:

 

http://www.tibiaking.com/forum/topic/55358-ajuda-algu%C3%A9m-sabe-arrumar-isto/

Editado por arthur122222 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Ai, consegui.. Só que ao abrir o baú eu liberaria o acesso a porta de saida e isto não aconteceu, o que fazer agora?

Brow, já resolvi. Abri a script da porta e alterei a storage pra mesma que você me passou.. S2

 

 

Você me ajudou ontem a arrumar uma coisa e naquilo que você me ajudou estou com outro problema.. Abri outro tópico sobre ele:

 

http://www.tibiaking.com/forum/topic/55358-ajuda-algu%C3%A9m-sabe-arrumar-isto/

Que bom que resolveu, se o tópico foi resolvido marque a melhor resposta para ficar como resolvido, vou dar uma olhada no seu outro tópico.

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo