Ir para conteúdo
  • Cadastre-se

(Resolvido)Pedido, script de Quest


Ir para solução Resolvido por Wise,

Posts Recomendados

Preciso de uma action assim, tem 5 báu, o jogador vai ter que escolher dentre esses 5 apenas 1 item, e no 5 bau vai vir 2 item de uma vez, então preciso de um script que não permita o jogador pegar todos, apenas 1. Utilizando uniqueid no actions xml, ai eu coloco o mesmo uniqueid nos bau no rme

 

E uma alteração no script abaixo, pro item não vir dentro da bag

function onUse(cid, item, frompos, item2, topos)
    if item.uid == 60003 then
        if getPlayerStorageValue(cid,60003) == -1 then
            doPlayerSendTextMessage(cid,25,"You have found a item.")
            local bag = doPlayerAddItem(cid,1987,1)
            doAddContainerItem(bag,55571,1)
            setPlayerStorageValue(cid,60003,1)
        else
            doPlayerSendTextMessage(cid,25,"It is empty.")
        end
    end
    return true
end

id da bag 1987

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

(1º) | [8.60] - Galaxy Server - Download

(2º) | [8.60] - Glorious Server - Download

(3º) | [8.60] - Epic Server - Download

Link para o post
Compartilhar em outros sites

Pera... vão ter 5 baus com X itens cada. Ai em cada baú o player tem q escolher 1 item dentre os X itens do baú. E no 5 baú o player pode pegar 2 dentre os X itens do baú 5.

Eh isso?

Te ajudei?? REP + e ficamos quites... <ahttp://www.tibiaking.com/forum/uploads/emoticons/default_happyy.png' alt=';D'>

Atenciosamente,

Daniel.

Abraços!

Link para o post
Compartilhar em outros sites
 

Pera... vão ter 5 baus com X itens cada. Ai em cada baú o player tem q escolher 1 item dentre os X itens do baú. E no 5 baú o player pode pegar 2 dentre os X itens do baú 5.
Eh isso?

 

Pera, vou explicar melhor:

 

5 báus

 

SWORD

AXE

CLUB

WAND

CROSSBOW+ARROW

 

 

Ai o jogador só pode escolher 1 bau dentre os 5, por exemplo, eu vou e clico no 5 bau, vem o crossbow e a arrow junto, ai se eu quiser clicar no demais, não funciona, diz que esta empty

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

(1º) | [8.60] - Galaxy Server - Download

(2º) | [8.60] - Glorious Server - Download

(3º) | [8.60] - Epic Server - Download

Link para o post
Compartilhar em outros sites

Alteração no código:

function onUse(cid, item, frompos, item2, topos)
    if item.uid == 60003 then
        if getPlayerStorageValue(cid,60003) == -1 then
            doPlayerSendTextMessage(cid,25,"You have found a item.")
            doPlayerAddItem(cid, 55571, 1)
            setPlayerStorageValue(cid, 60003, 1)
        else
            doPlayerSendTextMessage(cid,25,"It is empty.")
        end
    end
    return true
end

O jogador não vai receber mais o item dentro da bag de ID 1987, porém também não receberá tal bag. É isso que você quer?

Já sobre o outro pedido, se ninguém te ajudar, eu faço pra você. 

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

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

Alteração no código:

function onUse(cid, item, frompos, item2, topos)
    if item.uid == 60003 then
        if getPlayerStorageValue(cid,60003) == -1 then
            doPlayerSendTextMessage(cid,25,"You have found a item.")
            doPlayerAddItem(cid, 55571, 1)
            setPlayerStorageValue(cid, 60003, 1)
        else
            doPlayerSendTextMessage(cid,25,"It is empty.")
        end
    end
    return true
end

O jogador não vai receber mais o item dentro da bag de ID 1987, porém também não receberá tal bag. É isso que você quer?

Já sobre o outro pedido, se ninguém te ajudar, eu faço pra você. 

 

Sua alteração funcionou perfeitamente, vou te reputar, e aguardar pelo o pedido...

(1º) | [8.60] - Galaxy Server - Download

(2º) | [8.60] - Glorious Server - Download

(3º) | [8.60] - Epic Server - Download

Link para o post
Compartilhar em outros sites

Ids ? 

 

function onUse(cid, item, frompos, item2, topos)
    if item.uid == 60000  and getPlayerStorageValue(cid,60000) == -1 and getPlayerStorageValue(cid,60001) == -1 and getPlayerStorageValue(cid,60002) == -1 and getPlayerStorageValue(cid,60003) == -1 and getPlayerStorageValue(cid,60004) == -1  then
            doPlayerSendTextMessage(cid,25,"You have found a item.")
            doPlayerAddItem(cid,1987,1)            
            setPlayerStorageValue(cid,60000,1)
        else
            doPlayerSendTextMessage(cid,25,"It is empty.")
        end
    end
    return true
end

function onUse(cid, item, frompos, item2, topos)
    if item.uid == 60001 and getPlayerStorageValue(cid,60000) == -1 and getPlayerStorageValue(cid,60001) == -1 and getPlayerStorageValue(cid,60002) == -1 and getPlayerStorageValue(cid,60003) == -1 and getPlayerStorageValue(cid,60004) == -1  then
            doPlayerSendTextMessage(cid,25,"You have found a item.")
            doPlayerAddItem(cid,1987,1)
            setPlayerStorageValue(cid,60001,1)
        else
            doPlayerSendTextMessage(cid,25,"It is empty.")
        end
    end
    return true
end


function onUse(cid, item, frompos, item2, topos)
    if item.uid == 60002 and getPlayerStorageValue(cid,60000) == -1 and getPlayerStorageValue(cid,60001) == -1 and getPlayerStorageValue(cid,60002) == -1 and getPlayerStorageValue(cid,60003) == -1 and getPlayerStorageValue(cid,60004) == -1  then
            doPlayerSendTextMessage(cid,25,"You have found a item.")
            doPlayerAddItem(cid,1987,1)
             setPlayerStorageValue(cid,60002,1)
        else
            doPlayerSendTextMessage(cid,25,"It is empty.")
        end
    end
    return true
end


function onUse(cid, item, frompos, item2, topos)
    if item.uid == 60003 and getPlayerStorageValue(cid,60000) == -1 and getPlayerStorageValue(cid,60001) == -1 and getPlayerStorageValue(cid,60002) == -1 and getPlayerStorageValue(cid,60003) == -1 and getPlayerStorageValue(cid,60004) == -1  then
           doPlayerSendTextMessage(cid,25,"You have found a item.")
           doPlayerAddItem(cid,1987,1)
           setPlayerStorageValue(cid,60003,1)
        else
            doPlayerSendTextMessage(cid,25,"It is empty.")
        end
    end
    return true
end

function onUse(cid, item, frompos, item2, topos)
    if item.uid == 60004 and getPlayerStorageValue(cid,60000) == -1 and getPlayerStorageValue(cid,60001) == -1 and getPlayerStorageValue(cid,60002) == -1 and getPlayerStorageValue(cid,60003) == -1 and getPlayerStorageValue(cid,60004) == -1  then
		
            doPlayerSendTextMessage(cid,25,"You have found a item.")
           doPlayerAddItem(cid,1987,1)
             setPlayerStorageValue(cid,60004,1)
        else
            doPlayerSendTextMessage(cid,25,"It is empty.")
        end
    end
    return true
end

 
<action uniqueid="60000;60001;60002;60003;60004" event="script" value="questcincoitems.lua"/>

Vê se funciona.


Não se esqueça de alterar o id em:

doPlayerAddItem(cid,1987,1)

Caso contrário, os três baús darão os mesmos items.

 

para adicionar o crosbow e arrow no mesmo baú é só adicionar mais uma linha de doplayeradditem, em baixo da mesma...

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

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Link para o post
Compartilhar em outros sites

Nada, tem que ser também uma unica UNIQUEID, no caso 60002, essas outras eu uso em outras quest

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

(1º) | [8.60] - Galaxy Server - Download

(2º) | [8.60] - Glorious Server - Download

(3º) | [8.60] - Epic Server - Download

Link para o post
Compartilhar em outros sites

Ou você pode usar esse código:

local items = {
    [actionid] = itemid,
    [actionid] = itemid,
    [actionid] = itemid,
    [actionid] = itemid,
    [actionid] = {itemid, itemid},
}
local storage = 7601
function onUse(cid, item, frompos, item2, topos)
    if items[item.actionid] then
        if getPlayerStorageValue(cid, storage) < 1 then
            local _item = items[item.actionid]
            if type(_item) == "table" then
                for i = 1, #_item do
                    doPlayerAddItem(cid, _item[i], 1)
                end
            else
                doPlayerAddItem(cid, _item, 1)
            end
            doPlayerSendTextMessage(cid, 27, "Hey, you found something!")
            setPlayerStorageValue(cid, storage, 1)
        else
            return doPlayerSendCancel(cid, "You already got your item.")
        end
    end
    return true
end
Cada baú, 1 actionid. Não se esqueça de configurar a tabela items. Na tag, você coloca as actionids (serão 5, no total).
Se preferir, você pode optar pelo seguinte código:
local items = {
    [{x = x, y = y, z = z}] = itemid,           --  [{posição do baú}] = id do item,
    [{x = x, y = y, z = z}] = itemid,
    [{x = x, y = y, z = z}] = itemid,
    [{x = x, y = y, z = z}] = itemid,
    [{x = x, y = y, z = z}] = {itemid, itemid},
}
local storage = 7601
function onUse(cid, item, frompos, item2, topos)
    if items[topos] then
        if getPlayerStorageValue(cid, storage) < 1 then
            local _item = items[topos]
            if type(_item) == "table" then
                for i = 1, #_item do
                    doPlayerAddItem(cid, _item[i], 1)
                end
            else
                doPlayerAddItem(cid, _item, 1)
            end
            doPlayerSendTextMessage(cid, 27, "Hey, you found something!")
            setPlayerStorageValue(cid, storage, 1)
        else
            return doPlayerSendCancel(cid, "You already got your item.")
        end
    end
    return true
end
Dessa vez, é apenas 1 actionid para todos os baús. Eu indiquei no código como configurar a tabela items. Qualquer dúvida, só falar.
 
agr que li que vc queria com uniqueid. mas enfim, se alguém quiser usar aid, tá aí ;s
Editado por zipter98 (veja o histórico de edições)

não respondo pms solicitando suporte em programação/scripting

Link para o post
Compartilhar em outros sites

??

 

Como assim nada ? 

Sò mudar para umas que você não tem.

Já que você quer só um uniqueid:

function onUse(cid, item, frompos, item2, topos)
    

local i = {IDsorc, IDdruid, IDpala, IDkina}
local msg = {"You found a item","It's empty"}

if item.uid == 60000 and getPlayerStorageValue(cid,storage) == -1 then
doPlayerAddItem(cid,i[getPlayerVocation(cid)],1)
setPlayerStorageValue(cid,60000,1)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,msg[1])
else
doPlayerSendCancel(cid,msg[2])
end
return true
end

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

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Link para o post
Compartilhar em outros sites

@Zipter98 deu esse erro no 1 script, no 2 nem pegou.

 

M8iIfjL.png

 

@Carionte, no seu 1 script deu esse erro, também optarei por usar uniquesid diferente vai facilitar por aqui deu erro no distro de duplicate ID

 

 

RNn2rxh.png

 

 

Estou usando assim o Action, coloquei uniqueid por uniqueid já nos bau.

<action uniqueid="60002;60003;60004;60005;60006" event="script" value="questvipacess/bauweapons.lua"/>

(1º) | [8.60] - Galaxy Server - Download

(2º) | [8.60] - Glorious Server - Download

(3º) | [8.60] - Epic Server - Download

Link para o post
Compartilhar em outros sites

Ops que merda que eu fiz, pera aí.

 

 

Pronto, testa aí.

 

o primeiro é com os uniqueid diferentes.

o segundo é só um unique (60000), com itens diferentes por vocations.

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

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Link para o post
Compartilhar em outros sites
  • Solução
Preciso de uma action assim, tem 5 báu, o jogador vai ter que escolher dentre esses 5 apenas 1 item, e no 5 bau vai vir 2 item de uma vez, então preciso de um script que não permita o jogador pegar todos, apenas 1. Utilizando uniqueid no actions xml

 

Eu havia feito um script semelhante para outro membro há alguns dias.

uchests.lua (data\actions\scripts):

local t = {
--  [uniqueID] = {vocs = {vocationIDs}, items = {itemIDs}}
    [55001] = {vocs = {4, 8}, items = {1234}}, -- club ~ knights
    [55002] = {vocs = {4, 8}, items = {1234}}, -- axe ~ knights
    [55003] = {vocs = {4, 8}, items = {1234}}, -- sword ~ knights
    [55004] = {vocs = {1, 2, 5, 6}, items = {1234}}, -- mages
    [55005] = {vocs = {3, 7}, items = {1234, 5678}} -- paladins
}

function onUse(cid, item, fromPos, toPos)
    storage = 54321
    u = t[item.uid]
    
    if not u then return false end
        if isInArray(u.vocs, getPlayerVocation(cid)) then
            if getPlayerStorageValue(cid, storage) < 1 then
                setPlayerStorageValue(cid, storage, 1)
                for i = 1, #u.items do
                    doPlayerAddItem(cid, u.items[i], 1)
                end
                doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You got your reward for completing the quest.')
            else
                doPlayerSendCancel(cid, 'You already have done this quest.')
            end
        else
            doPlayerSendCancel(cid, 'Your vocation is not allowed to do this quest.')
        end
    
    return true
end

Tag - actions.xml (data\actions):

<action uniqueid="55001-55005" event="script" value="uchests.lua"/>

Basta adicionar aos baús, os uniqueids compatíveis com a configuração da tabela, sendo no exemplo acima:

55001 - Club  (Knight, Elite Knight)

55002 - Axe  (Knight, Elite Knight)

55003 - Sword  (Knight, Elite Knight)

55004 - Staff  (Sorcerer, Druid, Master Sorcerer, Elder Druid)

55005Bow / Arrow  (Paladin, Royal Paladin)

The corrupt fear us.

The honest support us.

The heroic join us.

Link para o post
Compartilhar em outros sites

@Suicide funcionou, aos demais obrigado, rep para todos pela tentativa :3

(1º) | [8.60] - Galaxy Server - Download

(2º) | [8.60] - Glorious Server - Download

(3º) | [8.60] - Epic Server - Download

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