Ir para conteúdo
  • 0

Alavanca de quest


iurysf20

Pergunta

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+

Editado por iurysf20
Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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
Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

 

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.

Editado por iurysf20
Link para o comentário
Compartilhar em outros sites

  • 0

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

Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

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
Editado por iurysf20
Link para o comentário
Compartilhar em outros sites

  • 0

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.

Editado por zipter98
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...