Ir para conteúdo
  • Cadastre-se

(Resolvido)[Pedido] Baú que dá storage e item.


Ir para solução Resolvido por Vodkart,

Posts Recomendados

Galera, preciso que quando o player clique no baú ganhe a storage 45455 e uma quantia aleatória de gold de 0 a 50, e receba a seguinte mensagem em verde na tela,

Parabéns você acabou de completar a reflect quest e recebeu 50 golds em uma quantidade aleatória de 0 a 50. 

se caso ele receber 1 gold a mensagem muda para 1 gold..

SE não for possível , que seja apenas a storage e 1 item.

Link para o post
Compartilhar em outros sites

@diarmaint Coloca o unique ID do baú no map editor como 8945, ou então muda no script ali pra qual você quer

 

<action uniqueid="8945" script="reflectquest.lua"/>

 

function onUse(cid, item, frompos, item2, topos)
    if item.uid == 8945 then
        local queststatus = getPlayerStorageValue(cid, 31320)
        local max_gold = 50
        if queststatus == -1 then
            local qtd_gold = math.random(1,50)
            doPlayerSendTextMessage(cid,22,"Parabéns você acabou de completar a reflect quest e recebeu ".. qtd_gold .." golds em uma quantidade aleatória de 0 a ".. max_gold ..". ")
            setPlayerStorageValue(cid, 45455, 1)
            doPlayerAddItem(cid, 2148, qtd_gold)
            setPlayerStorageValue(cid, queststatus, 1)
        else
            doPlayerSendTextMessage(cid,22,"Está vazio.")
        end
    end
end

 

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

Deu certo, mas a frase ta falando em verde You have found a .

e em branco 

Parabéns você acabou de completar a reflect quest e recebeu 39 golds em uma quantidade aleatória de 0 a 50.

58aa772eb1911_Semttuloasa.png.75b150261bc7a2e2f055579f302a352d.png

Editado por diarmaint (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
7 minutos atrás, diarmaint disse:

Deu certo, mas a frase ta falando em verde You have found a .

e em branco 

Parabéns você acabou de completar a reflect quest e recebeu 39 golds em uma quantidade aleatória de 0 a 50.

Estranho, só coloquei uma mensagem. Tem outro script de Quest pra dar uma comparada?

Link para o post
Compartilhar em outros sites

Sim, mande aí, que eu já pego ele pra usar em alguma outra!

EDIT. está dando para pegar o gold infinitas vezes.

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

function onUse(cid, item, frompos, item2, topos)
    if item.uid == 8945 then
        local queststatus = getPlayerStorageValue(cid, 31320)
        local max_gold = 50
        if queststatus == -1 then
            local qtd_gold = math.random(1,50)
            doPlayerSendTextMessage(cid,22,"Parabéns você acabou de completar a reflect quest e recebeu ".. qtd_gold .." golds em uma quantidade aleatória de 0 a ".. max_gold ..". ")
            setPlayerStorageValue(cid, 45455, 1)
            doPlayerAddItem(cid, 2160, qtd_gold)
            setPlayerStorageValue(cid, queststatus, 1)
        else
            doPlayerSendTextMessage(cid,22,"Está vazio.")
        end
    end
    return true
end

Correto?

Eu mudei o id do gold só, mas ainda ta dando pra pegar mais de uma vez.

Link para o post
Compartilhar em outros sites
4 minutos atrás, diarmaint disse:

Correto?

Eu mudei o id do gold só, mas ainda ta dando pra pegar mais de uma vez.

Correto. Estranho estar podendo pegar mais de uma vez. Pode postar alguma outra quest do server? Pra ver a diferença

Link para o post
Compartilhar em outros sites

Serve?

Citar

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if item.uid > 1000 and item.uid < 13000 then
        local itemWeight = getItemWeightById(item.uid, 1)
        local playerCap = getPlayerFreeCap(cid)
        if getPlayerStorageValue(cid, item.uid) == -1 then
            if playerCap >= itemWeight then
                doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You have found a ' .. getItemNameById(item.uid) .. '.')
                doPlayerAddItem(cid, item.uid ,1)
                setPlayerStorageValue(cid, item.uid, 1)
            else
                doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You have found a ' .. getItemNameById(item.uid) .. ' weighing ' .. itemWeight .. ' oz it\'s too heavy.')
            end
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is empty.")
        end
    else
        return false
    end
    return true
end

 

 

Link para o post
Compartilhar em outros sites

Script:

Spoiler

function onUse(cid, item, fromPosition, itemEx, toPosition)

   local l = { 
		storage = 45455, -- storage desejada
		storage2 = 1234, -- storage da quest, para não fazer novamente
		gmax = 50, -- quantidade máxima de golds que vai poder ganhar
		gold = 2160, -- Item Id do Gold
		random = math.random(1, gmax)
		}
		
if getPlayerStorageValue(cid, l.storage2) == -1 then
  doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Parabéns você acabou de completar a Reflect Quest e recebeu ' .. l.random .. ' golds.')
  doPlayerAddItem(cid, l.gold, l.random)
  setPlayerStorageValue(cid, l.storage, 1)
  setPlayerStorageValue(cid, l.storage2, 1)
	else
 doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Você já terminou a quest!')
end
   return true
end

 

 

tag xml:

<action actionid="4000" event="script" value="NomeDoArquivo.lua"/>

 

 

@Tópico movido para área correta, preste mais atenção da próxima vez!!

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
8 horas atrás, KotZletY disse:

Script:

  Ocultar conteúdo


function onUse(cid, item, fromPosition, itemEx, toPosition)

   local l = { 
		storage = 45455, -- storage desejada
		storage2 = 1234, -- storage da quest, para não fazer novamente
		gmax = 50, -- quantidade máxima de golds que vai poder ganhar
		gold = 2160, -- Item Id do Gold
		random = math.random(1, gmax)
		}
		
if getPlayerStorageValue(cid, l.storage2) == -1 then
  doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Parabéns você acabou de completar a Reflect Quest e recebeu ' .. l.random .. ' golds.')
  doPlayerAddItem(cid, l.gold, l.random)
  setPlayerStorageValue(cid, l.storage, 1)
  setPlayerStorageValue(cid, l.storage2, 1)
	else
 doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Você já terminou a quest!')
end
   return true
end

 

 

tag xml:


<action actionid="4000" event="script" value="NomeDoArquivo.lua"/>

 

 

@Tópico movido para área correta, preste mais atenção da próxima vez!!

 

[Error - Action Interface]
data/actions/scripts/Quests novas/reflectquest.lua:onUse
Description:
data/actions/scripts/Quests novas/reflectquest.lua:8: bad argument #2 to 'random' (number expected, got nil)
stack traceback:
        [C]: in function 'random'
        data/actions/scripts/Quests novas/reflectquest.lua:8: in function <data/actions/scripts/Quests novas/reflectquest.lua:1>

Link para o post
Compartilhar em outros sites

@diarmaint Tenta assim, esquece aquele código que passei, e substitui aquele que você mostrou por esse aqui:

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if item.uid == 8945 then
        local queststatus = getPlayerStorageValue(cid, 31320)
        local max_gold = 50
        if queststatus == -1 then
            local qtd_gold = math.random(1,max_gold)
            doPlayerSendTextMessage(cid,22,"Parabéns você acabou de completar a reflect quest e recebeu ".. qtd_gold .." golds em uma quantidade aleatória de 0 a ".. max_gold ..". ")
            setPlayerStorageValue(cid, 45455, 1)
            doPlayerAddItem(cid, 2148, qtd_gold)
            setPlayerStorageValue(cid, queststatus, 1)
        else
            doPlayerSendTextMessage(cid,22,"Está vazio.")
        end
    elseif item.uid > 1000 and item.uid < 13000 then
        local itemWeight = getItemWeightById(item.uid, 1)
        local playerCap = getPlayerFreeCap(cid)
        if getPlayerStorageValue(cid, item.uid) == -1 then
            if playerCap >= itemWeight then
                doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You have found a ' .. getItemNameById(item.uid) .. '.')
                doPlayerAddItem(cid, item.uid ,1)
                setPlayerStorageValue(cid, item.uid, 1)
            else
                doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You have found a ' .. getItemNameById(item.uid) .. ' weighing ' .. itemWeight .. ' oz it\'s too heavy.')
            end
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is empty.")
        end
    else
        return false
    end
    return true
end

 

Link para o post
Compartilhar em outros sites
8 minutos atrás, Zanrix disse:

@diarmaint Tenta assim, esquece aquele código que passei, e substitui aquele que você mostrou por esse aqui:


function onUse(cid, item, fromPosition, itemEx, toPosition)
    if item.uid == 8945 then
        local queststatus = getPlayerStorageValue(cid, 31320)
        local max_gold = 50
        if queststatus == -1 then
            local qtd_gold = math.random(1,max_gold)
            doPlayerSendTextMessage(cid,22,"Parabéns você acabou de completar a reflect quest e recebeu ".. qtd_gold .." golds em uma quantidade aleatória de 0 a ".. max_gold ..". ")
            setPlayerStorageValue(cid, 45455, 1)
            doPlayerAddItem(cid, 2148, qtd_gold)
            setPlayerStorageValue(cid, queststatus, 1)
        else
            doPlayerSendTextMessage(cid,22,"Está vazio.")
        end
    elseif item.uid > 1000 and item.uid < 13000 then
        local itemWeight = getItemWeightById(item.uid, 1)
        local playerCap = getPlayerFreeCap(cid)
        if getPlayerStorageValue(cid, item.uid) == -1 then
            if playerCap >= itemWeight then
                doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You have found a ' .. getItemNameById(item.uid) .. '.')
                doPlayerAddItem(cid, item.uid ,1)
                setPlayerStorageValue(cid, item.uid, 1)
            else
                doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You have found a ' .. getItemNameById(item.uid) .. ' weighing ' .. itemWeight .. ' oz it\'s too heavy.')
            end
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is empty.")
        end
    else
        return false
    end
    return true
end

 

58aafdd4c2ee0_nda.thumb.png.c6b82a275d48718ad04b9d26bb455de4.png

Link para o post
Compartilhar em outros sites

@diarmaint Tira essa tag no actions.xml que tem no final da imagem, deixa sem, e muda o script de novo:

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if item.uid == 8945 then
        local max_gold = 50
        if getPlayerStorageValue(cid, item.uid) == -1 then
            local qtd_gold = math.random(1,max_gold)
            doPlayerSendTextMessage(cid,22,"Parabéns você acabou de completar a reflect quest e recebeu ".. qtd_gold .." golds em uma quantidade aleatória de 0 a ".. max_gold ..". ")
            setPlayerStorageValue(cid, 45455, 1)
            doPlayerAddItem(cid, 2148, qtd_gold)
            setPlayerStorageValue(cid, item.uid, 1)
        else
            doPlayerSendTextMessage(cid,22,"Está vazio.")
        end
    elseif item.uid > 1000 and item.uid < 13000 then
        local itemWeight = getItemWeightById(item.uid, 1)
        local playerCap = getPlayerFreeCap(cid)
        if getPlayerStorageValue(cid, item.uid) == -1 then
            if playerCap >= itemWeight then
                doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You have found a ' .. getItemNameById(item.uid) .. '.')
                doPlayerAddItem(cid, item.uid ,1)
                setPlayerStorageValue(cid, item.uid, 1)
            else
                doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You have found a ' .. getItemNameById(item.uid) .. ' weighing ' .. itemWeight .. ' oz it\'s too heavy.')
            end
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is empty.")
        end
    else
        return false
    end
    return true
end

 

Link para o post
Compartilhar em outros sites
1 minuto atrás, Zanrix disse:

@diarmaint Tira essa tag no actions.xml que tem no final da imagem, deixa sem, e muda o script de novo:


function onUse(cid, item, fromPosition, itemEx, toPosition)
    if item.uid == 8945 then
        local max_gold = 50
        if getPlayerStorageValue(cid, item.uid) == -1 then
            local qtd_gold = math.random(1,max_gold)
            doPlayerSendTextMessage(cid,22,"Parabéns você acabou de completar a reflect quest e recebeu ".. qtd_gold .." golds em uma quantidade aleatória de 0 a ".. max_gold ..". ")
            setPlayerStorageValue(cid, 45455, 1)
            doPlayerAddItem(cid, 2148, qtd_gold)
            setPlayerStorageValue(cid, item.uid, 1)
        else
            doPlayerSendTextMessage(cid,22,"Está vazio.")
        end
    elseif item.uid > 1000 and item.uid < 13000 then
        local itemWeight = getItemWeightById(item.uid, 1)
        local playerCap = getPlayerFreeCap(cid)
        if getPlayerStorageValue(cid, item.uid) == -1 then
            if playerCap >= itemWeight then
                doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You have found a ' .. getItemNameById(item.uid) .. '.')
                doPlayerAddItem(cid, item.uid ,1)
                setPlayerStorageValue(cid, item.uid, 1)
            else
                doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You have found a ' .. getItemNameById(item.uid) .. ' weighing ' .. itemWeight .. ' oz it\'s too heavy.')
            end
        else
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is empty.")
        end
    else
        return false
    end
    return true
end

 

Agora não fala nada, apenas ganho o item 8945, e não estou ganhando a storage.

Link para o post
Compartilhar em outros sites
3 minutos atrás, diarmaint disse:

Sim, continua.



function onUse(cid, item, fromPosition, itemEx, toPosition)

   local l = { 
        storage = 45455, -- storage desejada
        storage2 = 45457, -- storage da quest, para não fazer novamente
        gmax = 50, -- quantidade máxima de golds que vai poder ganhar
        gold = 2160, -- Item Id do Gold
        rand = math.random(1, l.gmax)
        }
        
if getPlayerStorageValue(cid, l.storage2) == -1 then
  doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Parabéns você acabou de completar a Reflect Quest e recebeu ' .. l.rand .. ' golds.')
  doPlayerAddItem(cid, l.gold, l.rand)
  setPlayerStorageValue(cid, l.storage, 1)
  setPlayerStorageValue(cid, l.storage2, 1)
    else
 doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Você já terminou a quest!')
end
   return true
end

 

Link para o post
Compartilhar em outros sites
5 minutos atrás, diarmaint disse:

Sim, continua.

Que bizarro, eu testei aqui e funcionou. Você tá usando o mesmo sprite (id do item) nesse baú? O mesmo ID dos outros baús de outras quests

Link para o post
Compartilhar em outros sites
  • Solução
function onUse(cid, item, fromPosition, itemEx, toPosition)
  local s = 45457
  if getPlayerStorageValue(cid, s) > 0 then
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Você já terminou a quest!') return true
  end
  local r = math.random(1,50)
  doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Parabéns você acabou de completar a Reflect Quest e recebeu ' .. r .. ' crystal coins.')
  doPlayerAddItem(cid, 2160, r)
  setPlayerStorageValue(cid, s, 1)
  return true
end

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

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