Alavanca de quest

iurysf20
em Scripts

iurysf20

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 20/09/10Posts: 5

Queria pedir 1 script que tem que montar umas cores para continuar a quest fiz um exemplo abaixo:

 

1:Primeiro o jogador tem que fazer 1 combinação de cores:1:azul escuro,2:vermelho,3:azul claro e 4:verde.

ylxa.png

2:Depois que fazer essa combinação o jogador clika na alavanca e se teleporta para o outro lado.

q8la.png

3:E quando o jogador clikasse na alavanca os itens voltassem para o mesmo lugar de antes.

g5vg.png

 

Quem me ajudar do rep+

Bruuno0

O Escrisofênico!nem sei oq significa mais esse sou eu :3
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 12/10/13Posts: 91Char no Tibia: Nem tenho

que nem mewtwo quest do Poke Storm .-.

Killua

Vivendo e Aprendendo
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/04/09Posts: 904Char no Tibia: Jabuti Selvagem

Fiz mas n testei, acho q vai funcionar:

 

cria um script em actions e coloca


-- ID DOS CRISTAIS --
local vermelho = 1234
local azulescuro = 1233
local azulclaro = 1213
local verde = 3232

-- Posicao que os cristais devem estar para dar certo --
local posvermelho = {x=1476, y=1108, z=7, stackpos=1}
local posazulescuro = {x=1476, y=1108, z=7, stackpos=1}
local posazulclaro = {x=1476, y=1108, z=7, stackpos=1}
local posverde = {x=1476, y=1108, z=7, stackpos=1}

-- Nao mude --
local pvermelho = getTileItemById(posvermelho, vermelho)
local pazulescuro = getTileItemById(posazulescuro, azulescuro)
local pazulclaro = getTileItemById(posazulclaro, azulclaro)
local pverde = getTileItemById(posverde, verde)

-- Posicao que o cara vai se acertar --
local posfinal = {x=1476, y=1108, z=7}

-- Posicao pra onde os cristais vao voltar quando funcionar --
local vvermelho = {x=1476, y=1108, z=7}
local vverde = {x=1476, y=1108, z=7}
local vazulescuro = {x=1476, y=1108, z=7}
local vazulclaro = {x=1476, y=1108, z=7}

function onUse(cid, item, fromPos, position)
    
    if not(pvermelho and pazulescuro and pazulclaro and pverde) then
        doPlayerSendCancel(cid, "Combinacao errada.")
        return false
    end
    
    doSendMagicEffect(posvermelho, CONST_ME_POFF)
    doSendMagicEffect(posverde, CONST_ME_POFF)
    doSendMagicEffect(posazulclaro, CONST_ME_POFF)
    doSendMagicEffect(posazulescuro, CONST_ME_POFF)
    doRemoveItem(pvermelho.uid, 1)
    doRemoveItem(pverde.uid, 1)
    doRemoveItem(pazulescuro, 1)
    doRemoveItem(pazulclaro, 1)
    doTeleportThing(cid, posfinal)
    doSendMagicEffect(posfinal, CONST_ME_TELEPORT)
    doCreateItem(vermelho, 1, vvermelho)
    doCreateItem(verde, 1, vverde)
    doCreateItem(azulclaro, 1, vazulclaro)
    doCreateItem(azulescuro, 1, vazulescuro)
    doPlayerSendTextMessage(cid, 25, "Voce acertou a combinacao e pode prosseguir!")
    return true
end

no actions.xml vc coloca essa tag:

<action actionid="1846" event="script" value="NOME DO SCRIPT.lua"/>

Na alavanca vc coloca o actionid 1846

 

So vi seu pedido agr pq tava viajando, espero que vc veja a resposta.

iurysf20

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 20/09/10Posts: 5

Fiz mas n testei, acho q vai funcionar:

 

cria um script em actions e coloca


-- ID DOS CRISTAIS --
local vermelho = 1234
local azulescuro = 1233
local azulclaro = 1213
local verde = 3232

-- Posicao que os cristais devem estar para dar certo --
local posvermelho = {x=1476, y=1108, z=7, stackpos=1}
local posazulescuro = {x=1476, y=1108, z=7, stackpos=1}
local posazulclaro = {x=1476, y=1108, z=7, stackpos=1}
local posverde = {x=1476, y=1108, z=7, stackpos=1}

-- Nao mude --
local pvermelho = getTileItemById(posvermelho, vermelho)
local pazulescuro = getTileItemById(posazulescuro, azulescuro)
local pazulclaro = getTileItemById(posazulclaro, azulclaro)
local pverde = getTileItemById(posverde, verde)

-- Posicao que o cara vai se acertar --
local posfinal = {x=1476, y=1108, z=7}

-- Posicao pra onde os cristais vao voltar quando funcionar --
local vvermelho = {x=1476, y=1108, z=7}
local vverde = {x=1476, y=1108, z=7}
local vazulescuro = {x=1476, y=1108, z=7}
local vazulclaro = {x=1476, y=1108, z=7}

function onUse(cid, item, fromPos, position)
    
    if not(pvermelho and pazulescuro and pazulclaro and pverde) then
        doPlayerSendCancel(cid, "Combinacao errada.")
        return false
    end
    
    doSendMagicEffect(posvermelho, CONST_ME_POFF)
    doSendMagicEffect(posverde, CONST_ME_POFF)
    doSendMagicEffect(posazulclaro, CONST_ME_POFF)
    doSendMagicEffect(posazulescuro, CONST_ME_POFF)
    doRemoveItem(pvermelho.uid, 1)
    doRemoveItem(pverde.uid, 1)
    doRemoveItem(pazulescuro, 1)
    doRemoveItem(pazulclaro, 1)
    doTeleportThing(cid, posfinal)
    doSendMagicEffect(posfinal, CONST_ME_TELEPORT)
    doCreateItem(vermelho, 1, vvermelho)
    doCreateItem(verde, 1, vverde)
    doCreateItem(azulclaro, 1, vazulclaro)
    doCreateItem(azulescuro, 1, vazulescuro)
    doPlayerSendTextMessage(cid, 25, "Voce acertou a combinacao e pode prosseguir!")
    return true
end

no actions.xml vc coloca essa tag:

<action actionid="1846" event="script" value="NOME DO SCRIPT.lua"/>

Na alavanca vc coloca o actionid 1846

 

So vi seu pedido agr pq tava viajando, espero que vc veja a resposta.

Quando abro o server da esse erro e fecha sozin.

u68e.png

zipter98

avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 20/09/12Posts: 2553Gênero: Masculino

Tentei uma coisa aqui meio louca, não tenho a mínima certeza se vai funcionar, mas não custa nada tentar e.e

data/actions/scripts --NÃO se esqueça de trocar TUDO que foi indicado, leia o script, algumas coisas eu não indiquei, mas é óbvio onde se deve mudar.

function onUse(cid, item, frompos, item2, topos)
 
local cores = {                                        --id|pos que devem ficar
{xxx, {x = xxx, y = yyy, z = zzz, stackpos = 1}},    --vermelho
{zzz, {x = xxx, y = yyy, z = zzz, stackpos = 1}},    --azulclaro
{yyy, {x = xxx, y = yyy, z = zzz, stackpos = 1}},    --azulescuro
{lll, {x = xxx, y = yyy, z = zzz, stackpos = 1}}     --verde
}
 
local posinicial = {
vermelho = {x = xxx, y = yyy, z = zzz},        --Posição inicial dos items. Vermelho
azulclaro = {x = xxx, y = yyy, z = zzz},       -- azul claro
azulescuro = {x = xxx, y = yyy, z = zzz},      --azul escuro
verde = {x = xxx, y = yyy, z = zzz}             -- verde
}
 
local tp = {x=xxx, y=yyy, z=zzz}      --Para onde será teleportado
 
for i = 1, #cores do
if getTileItemById(cores[i][2], cores[i][1]).uid > 0 then
doTeleportThing(cid, tp)
doRemoveItem(getThingFromPos(cores[i][2]), 1)
doCreateItem(xxx, 1, posinicial.vermelho)    --id do item vermelho
doCreateItem(zzz, 1, posinicial.azulclaro)   --id do item azul claro
doCreateItem(yyy, 1, posinicial.azulescuro)   -- " azul escuro
doCreateItem(lll, 1, posinicial.verde)         -- " verde
else
return doPlayerSendCancel(cid, "Combinação errada...")
end
end
return true
end

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

Killua

Vivendo e Aprendendo
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 29/04/09Posts: 904Char no Tibia: Jabuti Selvagem

iurysf20

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 20/09/10Posts: 5

 

Tentei uma coisa aqui meio louca, não tenho a mínima certeza se vai funcionar, mas não custa nada tentar e.e

data/actions/scripts --NÃO se esqueça de trocar TUDO que foi indicado, leia o script, algumas coisas eu não indiquei, mas é óbvio onde se deve mudar.

function onUse(cid, item, frompos, item2, topos)
 
local cores = {                                        --id|pos que devem ficar
{xxx, {x = xxx, y = yyy, z = zzz, stackpos = 1}},    --vermelho
{zzz, {x = xxx, y = yyy, z = zzz, stackpos = 1}},    --azulclaro
{yyy, {x = xxx, y = yyy, z = zzz, stackpos = 1}},    --azulescuro
{lll, {x = xxx, y = yyy, z = zzz, stackpos = 1}}     --verde
}
 
local posinicial = {
vermelho = {x = xxx, y = yyy, z = zzz},        --Posição inicial dos items. Vermelho
azulclaro = {x = xxx, y = yyy, z = zzz},       -- azul claro
azulescuro = {x = xxx, y = yyy, z = zzz},      --azul escuro
verde = {x = xxx, y = yyy, z = zzz}             -- verde
}
 
local tp = {x=xxx, y=yyy, z=zzz}      --Para onde será teleportado
 
for i = 1, #cores do
if getTileItemById(cores[i][2], cores[i][1]).uid > 0 then
doTeleportThing(cid, tp)
doRemoveItem(getThingFromPos(cores[i][2]), 1)
doCreateItem(xxx, 1, posinicial.vermelho)    --id do item vermelho
doCreateItem(zzz, 1, posinicial.azulclaro)   --id do item azul claro
doCreateItem(yyy, 1, posinicial.azulescuro)   -- " azul escuro
doCreateItem(lll, 1, posinicial.verde)         -- " verde
else
return doPlayerSendCancel(cid, "Combinação errada...")
end
end
return true
end

 

quando clico,vai certim para o outro lado,mais ao invés de só aparecer 1 item na posinicial aparece 4,4 da mesma cor,1 em cima do outro

pode me ajudar com isso?

 

 

@Edit e os itens que estão na combinação feita n desaparecem.

zipter98

avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 20/09/12Posts: 2553Gênero: Masculino

Deu algum erro no console? Posso ver como você configurou seu script?

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

iurysf20

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 20/09/10Posts: 5

Não aparece nenhum erro,o negocio que aparecia 4 das mesmas já arrumei,agr só falta arrumar os itens que combinam não somem dps que clica na alavanca.

zipter98

avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 20/09/12Posts: 2553Gênero: Masculino

Tenta trocar isso: doRemoveItem(getThingFromPos(cores[i][2]), 1)

Por:

doRemoveItem(getThingFromPos(cores[i][2]).uid, 1)

edit: não sei se vai funcionar, to lendo umas coisas do doremoveitem, qualquer coisa edito aqui

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

iurysf20

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 20/09/10Posts: 5

Tenta trocar isso: doRemoveItem(getThingFromPos(cores[i][2]), 1)

Por:

doRemoveItem(getThingFromPos(cores[i][2]).uid, 1)

edit: não sei se vai funcionar, to lendo umas coisas do doremoveitem, qualquer coisa edito aqui

Troquei,mais só ta sumindo o vermelho os outros 3 fica no mesmo lugar..

 

 

@edit

fiz assim,e funcionou direitin,vlw mano

 

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

local cores = { --id|pos que devem ficar
{9976, {x = 1210, y = 650, z = 7, stackpos = 1}}, --vermelho
{9978, {x = 1210, y = 652, z = 7, stackpos = 1}}, --azulclaro
{9977, {x = 1210, y = 651, z = 7, stackpos = 1}}, --azulescuro
{9979, {x = 1210, y = 653, z = 7, stackpos = 1}} --verde
}
local posinicial = {
vermelho = {x = 1208, y = 650, z = 7}, --Posição inicial dos items. Vermelho
azulclaro = {x = 1207, y = 653, z = 7}, -- azul claro
azulescuro = {x = 1207, y = 650, z = 7}, --azul escuro
verde = {x = 1208, y = 653, z = 7} -- verde
}
local tp = {x=1213, y=653, z=7} --Para onde será teleportado
local posred = {x=1210, y=650, z=7, stackpos = 1}
local posblue = {x=1210, y=651, z=7, stackpos = 1}
local posblue2 = {x=1210, y=652, z=7, stackpos = 1}
local posgreen = {x=1210, y=653, z=7, stackpos = 1}
for i = 1, #cores do
if getTileItemById(cores[2], cores[1]).uid > 0 then
doTeleportThing(cid, tp)
doRemoveItem(getThingFromPos(posred).uid, 1)
doRemoveItem(getThingFromPos(posblue).uid, 1)
doRemoveItem(getThingFromPos(posblue2).uid, 1)
doRemoveItem(getThingFromPos(posgreen).uid, 1)
doCreateItem(9976, 1, posinicial.vermelho) --id do item vermelho
doCreateItem(9978, 1, posinicial.azulclaro) --id do item azul claro
doCreateItem(9977, 1, posinicial.azulescuro) -- " azul escuro
doCreateItem(9979, 1, posinicial.verde) -- " verde
else
return doPlayerSendCancel(cid, "Combinação errada...")
end
end
return true
end

zipter98

avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 20/09/12Posts: 2553Gênero: Masculino

edit: ae \o/ De nada, e também lhe agradeço, você arrumou o script xD

Reportado para moverem p/ Pedidos e Dúvidas resolvidos - Scripting.

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.