Ir para conteúdo
  • 0

Script Pra Quest!


othereality

Pergunta

Então galera!

Esse é um script que pretendo usar nas Dungeons do meu OT...

O que ele teria que fazer:

> Teleportar de 2 a 4 players pra dentro da dungeon por alavanca.

> Adicionar uma "x" storage a todos player.

 

E foi ai que tive problemas.. porque não sei como adicionar uma storage a um player que não de "use" na alavance.

A solução que eu pensei foi fazer o teleport teleportar pra cida de um outro teleport que adicione a storage por "stepIn" mas nem sei se funcionaria.

 

Se alguém souber reduzir meu script também agradeço!

Aqui está o que eu fiz:

 

 

 

function onUse(cid, item)

 

local pos1= {x=1054, y=1005, z=8, stackpos=253}

local pos2= {x=1055, y=1005, z=8, stackpos=253}

local pos3= {x=1056, y=1005, z=8, stackpos=253}

local pos4= {x=1057, y=1005, z=8, stackpos=253}

local newpos1, newpos2, newpos3, newpos4 = {x=1086, y=563, z=7}, {x=1087, y=563, z=7}, {x=1088, y=563, z=7}, {x=1089, y=563, z=7}

local thing = getThingFromPos

 

if (isPlayer(thing(pos4).uid)) then

doPlayerSendTextMessage(cid, 22, "No minimo duas pessoas para entrar na dungeon!")

elseif (isPlayer(thing(pos4).uid)) and isPlayer(thing(pos3).uid) then

doTeleportThing(thing(pos4).uid, newpos4)

doTeleportThing(thing(pos3).uid, newpos3)

doCreateItem(5787, 1, pos4)

doCreateItem(5787, 1, pos3)

elseif (isPlayer(thing(pos2).uid) and isPlayer(thing(pos3).uid) and isPlayer(thing(pos4).uid)) then

doTeleportThing(thing(pos1).uid, newpos1)

doTeleportThing(thing(pos2).uid, newpos2)

doTeleportThing(thing(pos3).uid, newpos3)

doCreateItem(5787, 1, pos1)

doCreateItem(5787, 1, pos2)

doCreateItem(5787, 1, pos3)

elseif (isPlayer(thing(pos1).uid) and isPlayer(thing(pos2).uid) and isPlayer(thing(pos3).uid) and isPlayer(thing(pos4).uid)) then

doTeleportThing(thing(pos1).uid, newpos1)

doTeleportThing(thing(pos2).uid, newpos2)

doTeleportThing(thing(pos3).uid, newpos3)

doTeleportThing(thing(pos4).uid, newpos4)

doCreateItem(5787, 1, pos1)

doCreateItem(5787, 1, pos2)

doCreateItem(5787, 1, pos3)

doCreateItem(5787, 1, pos4)

end

return true

end

 

só pra esclarecer o "pos4" é o tile que fica do lado da alavanca, "pos3" é um pra esquerda e assim por diante.

E aquele CreateItem cria um item que impede que dois grupos façam a dungeon ao mesmo tempo.

Eu precisa de alguma coisa como "setPalyerStorageByPos(cid, pos)"

eauheaueaheu

 

Obrigado desde já a quem ajudar!

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

10 respostass a esta questão

Posts Recomendados

  • 0

usa for '-'

 

local t = {
entrada =
{
{x = 192, y = 57, z = 7},
{x = 191, y = 57, z = 7},
{x = 190, y = 57, z = 7}
},
saida =
{
{x = 192, y = 59, z = 7},
{x = 191, y = 59, z = 7},
{x = 190, y = 59, z = 7}
}
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
local check = {}
for _, k in ipairs(t.entrada) do
local x = getTopCreature(k).uid
if(isPlayer(x)) then
table.insert(check, x)
			end
end
if(#check < 2) then
return doPlayerSendCancel(cid, 'Está faltando player.')
end
for i, tid in ipairs(check) do
doSendMagicEffect(t.entrada[i], CONST_ME_POFF)
doTeleportThing(tid, t.saida[i], false)
setPlayerStorageValue(tid,78455,1)
doSendMagicEffect(t.saida[i], CONST_ME_ENERGYAREA)
end
doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
return true
end

 

coloquei para dar a storage 78455

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

  • 0

Talvez eu tenha entendido errado mas eu alterei o script adicionando mais um lugar por que pode entrar até 4 player na dungeon...

local t = {
entrada =
{
{x = 1054, y = 1005, z = 8},
{x = 1055, y = 1005, z = 8},
{x = 1056, y = 1005, z = 8},
{x = 1057, y = 1005, z = 8}
},
saida =
{
{x = 1086, y = 563, z = 7},
{x = 1087, y = 563, z = 7},
{x = 1088, y = 563, z = 7},
{x = 1089, y = 563, z = 7}
}
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
local check = {}
for _, k in ipairs(t.entrada) do
local x = getTopCreature(k).uid
if(isPlayer(x)) then
table.insert(check, x)
							end
end
if(#check < 2) then
return doPlayerSendCancel(cid, 'No minimo duas pessoas para entrar na dungeon!')
end
for i, tid in ipairs(check) do
doSendMagicEffect(t.entrada[i], CONST_ME_POFF)
doTeleportThing(tid, t.saida[i], false)
setPlayerStorageValue(tid,23122,1)
doSendMagicEffect(t.saida[i], CONST_ME_ENERGYAREA)
end
doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
return true
end

O magic effect só sai no cara que puxa a alavanca...

 

 

Edit:

 

Acabei de perceber que vc não botou pra criar aquele item tb. =P

Eu faria isso, mas esse script vai alem da minha compreensão. AUEHaUEhauehAUEH

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

  • 0

para criar o item só adicionar antes de

 

doTeleportThing(tid, t.saida, false)

 

isso:

 

doCreateItem(5787, 1, t.entrada)

Link para o comentário
Compartilhar em outros sites

  • 0

Pronto agora o script ta criando o item certinho mas quero fazer com que ele suma depois de um tempo.

Essa foi minha tentativa obviamente FAIL:

 

local t = {

entrada =

{

{x = 1057, y = 1005, z = 8},

{x = 1056, y = 1005, z = 8},

{x = 1055, y = 1005, z = 8},

{x = 1054, y = 1005, z = 8}

},

saida =

{

{x = 1089, y = 563, z = 7},

{x = 1088, y = 563, z = 7},

{x = 1087, y = 563, z = 7},

{x = 1086, y = 563, z = 7}

}

}

 

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

local check = {}

for _, k in ipairs(t.entrada) do

local x = getTopCreature(k).uid

if(isPlayer(x)) then

table.insert(check, x)

end

end

if(#check < 1) then

return doPlayerSendCancel(cid, 'No minimo uma pessoas para entrar na dungeon!')

end

for i, tid in ipairs(check) do

doSendMagicEffect(t.entrada, CONST_ME_POFF)

doCreateItem(5787, 1, t.entrada)

doTeleportThing(tid, t.saida, false)

setPlayerStorageValue(tid,23122,1)

doSendMagicEffect(t.saida, CONST_ME_ENERGYAREA)

end

doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)

return true

end

 

function tirar( ) --não tenho ideia do que devo colocar aqui.

local pos = {

pedras =

{

{x = 1057, y = 1005, z = 8},

{x = 1056, y = 1005, z = 8},

{x = 1055, y = 1005, z = 8},

{x = 1054, y = 1005, z = 8}

}}

for _, as in ipairs(pos.pedras) do --não tenho ideia de como se usa for.

local y = getTileItemById(as, 5787)

if y then

local ri = doRemoveItem(items.uid, 1)

local me = doSendMagicEffect(pedras.pos, CONST_ME_POFF)

addEvent(tirar, 10000, ri)

addEvent(tirar, 10000, me)

end

end

return true

end

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

  • 0

local t = {
create = {5787,1},
entrada = {
{x = 1057, y = 1005, z = 8, stackpos = 1},
{x = 1056, y = 1005, z = 8, stackpos = 1},
{x = 1055, y = 1005, z = 8, stackpos = 1},
{x = 1054, y = 1005, z = 8, stackpos = 1}
},
saida ={
{x = 1089, y = 563, z = 7},
{x = 1088, y = 563, z = 7},
{x = 1087, y = 563, z = 7},
{x = 1086, y = 563, z = 7}
}
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
local check = {}
for _, k in ipairs(t.entrada) do
local x = getTopCreature(k).uid
if(isPlayer(x)) then
table.insert(check, x)
end
end
if(#check < 2) then
return doPlayerSendCancel(cid, 'Minimo 2 pessoas.')
end
for i, tid in ipairs(check) do
function remove()
if getTileItemById(t.entrada[i], t.create[1]).uid > 0 then 
doRemoveItem(getThingfromPos(t.entrada[i]).uid,1)
end
end
doSendMagicEffect(t.entrada[i], CONST_ME_POFF)
doCreateItem(t.create[1], 1, t.entrada[i])
doTeleportThing(tid, t.saida[i], false)
setPlayerStorageValue(tid,t.storage,1)
doSendMagicEffect(t.saida[i], CONST_ME_ENERGYAREA)
addEvent(remove, t.create[2]*1000*60)
end
doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945)
return true
end

 

create = {5787,1},

 

5787 é o id do item

1 é o tempo em minutos que irá remover os items

Link para o comentário
Compartilhar em outros sites

  • 0

if(#check < 2) then
return doPlayerSendCancel(cid, 'Minimo 2 pessoas.')

eu tinha posto uma pessoa poder testar.. aeuaeuh

 

---

 

ta funcionando direito. vlw!

agora quero fazer o player ser teleportado para fora da area assim que suma o item, se ele ainda estiver na area da quest.

Mas eu acho que eu consigo deixa eu tentar.... euaheauehuae

 

edit:

 

da uma olhada na merda que eu pensei aqui.. aeuaheuhae

 

 

function remove()
if getTileItemById(t.entrada[i], t.create[1]).uid > 0 then
doRemoveItem(getThingfromPos(t.entrada[i]).uid,1)
doSendMagicEffect(t.entrada[i], 2)
if getPlayerStorageValue(cid, 23122) then
doTeleportThing(cid, t.entrada[i])
end
end
end

 

eu fiz assim pra sair o Magic effect quando sumir o item, mas não funcionou. =/

e também botei aquela parte da storage, porque quando mata entra no tp pra sair da quest remove essa storage, então eu ia limitar o tempo do cara dentro da quest.

o problema é que eu acho que só funcionaria pra quem puxou a alavanca né? não vai teleportar os outros... (eu testei sozinho e funcionou)

vou tentar com MC aqui pra ver oque da...

 

edit:

 

é só teleporta quem puxa a alavanca =/

 

eu tava olhando uns scripts e pensei em fazer assim:

 

 

function remove()
if getTileItemById(t.entrada[i], t.create[1]).uid > 0 then
doRemoveItem(getThingfromPos(t.entrada[i]).uid,1)
doSendMagicEffect(t.entrada[i], 2)
local from, to = {x = 1071, y = 515, z = 7}, {x = 1203, y = 597, z = 7}
local ch = getTopCreature(from, to).uid
if(isPlayer(ch)) then
doTeleportThing(cid, t.entrada[i])
end
end
end

 

vou ver se funciona.

 

edit:

 

não deu. =/

desisto.

aeauehuahe

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

  • 0

VODKART !!!!

vê meus edits..

auehaueaheuah

 

 

(sabe como é esse xtibia bugado, tu não sabe quando alguém postou a menos que fique atualizando a pagina -.-)

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

  • 0
function remove()
local from, to = {x = 1071, y = 515, z = 7}, {x = 1203, y = 597, z = 7}
if getTileItemById(t.entrada[i], t.create[1]).uid > 0 then 
doRemoveItem(getThingfromPos(t.entrada[i]).uid,1)
end
if isInRange(getCreaturePosition(tid), from, to) then
doTeleportThing(tid, t.entrada[i])
end
end

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...