JN

Alavanca Para Remover Pilar

Por JNLPB, 21 de jan. de 2010 em Archived

script
28
3.8k
JNLPBJ
21 de janeiro de 2010 às 02:15

eae pessoal,blz? Bem, eu até tentei criar uma action assim me baseando em outra action (completamente diferente) mais não deu certo. O que eu quero é o seguinte: Tem uma alavanca, uma altar stone e o pilar que impede a passagem pro teleport.Dae queria que quando fossem colocadas 100 demonic essences na stone e a alavanca puxada o pilar sumisse. Vou colocar o script que eu "fiz", acho que facilita tudo se o script tiver concerto -ou não...-

 

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

 

item1pos = {x=422, y=25, z=10, stackpos=255} --item1pos

item2pos = {x=422, y=25, z=10, stackpos=255} --item2pos

item1 = getThingfromPos(item1pos)

item2 = getThingfromPos(item2pos)

 

 

if item.itemid == 9825 and item1.itemid == 6500 and item2.itemid == 8538 then

doRemoveItem(item1.uid,100)

doSendMagicEffect(item1pos,13)

doRemoveItem(item2.cid,1)

doPlayerSendTextMessage(cid,22,'Você pode passar.')

 

elseif item.uid == 9068 and item.itemid == 1946 then

else

return 0

end

 

return 1

 

end

JNLPBJ
22 de janeiro de 2010 às 18:27

vlw pela explicação. Eu vou substituir o cid por uid pra ver se dá certo. Mais pode me dizer o que significa aquele stackpos=255 na position dos items 1 e 2?

kkk111K
22 de janeiro de 2010 às 18:43
STACKPOS_GROUND = 0
STACKPOS_TOP_CREATURE = 253
STACKPOS_TOP_FIELD = 254
STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE = 255

 

stackpos=255 seria para remover qualquer coisa que estiver porcima item ou creature, pode deixar assim mesmo no seu caso irá funcionar.

 

Att,

Paulo

JNLPBJ
23 de janeiro de 2010 às 12:09
STACKPOS_GROUND = 0
STACKPOS_TOP_CREATURE = 253
STACKPOS_TOP_FIELD = 254
STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE = 255

 

stackpos=255 seria para remover qualquer coisa que estiver porcima item ou creature, pode deixar assim mesmo no seu caso irá funcionar.

 

Att,

Paulo

 

Entendi. Mais no caso o stone pillar não teria que ter uma unique id?

WiltryW
23 de janeiro de 2010 às 22:35

Tenta assim

 

item1pos = {x=422, y=25, z=10, stackpos=255} -- demonic essence pos

item2pos = {x=422, y=25, z=10, stackpos=255} -- pilar pos

item1 = getThingfromPos(item1pos)

item2 = getThingfromPos(item2pos)

parameters = {cid = cid, pillarpos = {x=422, y=25, z=10, pillarid = PILLAR ID} -- troke aki o id do pilar

 

function criar(parameters)

doCreateItem(parameters.pillarid, 1, parameters.pillarpos)

end

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

 

if item.itemid == 1945 then

if doRemoveItem(item1, 100) == TRUE then

doRemoveItem(item2, 1)

doPlayerSendTextMessage(cid, 25, "Você pode passar. A passagem se fechará em 30 segundos.")

doTransformItem(item.uid, item.uid+1)

addEvent(criar, 30000, parameters)

else

doPlayerSendTextMessage(cid, 25, "Você precisa colocar 100 demonic essence no altar.")

end

else

doTransformItem(item.uid, item.uid-1)

end

return TRUE

end

Editado Janeiro 24 por Wiltry

satan666S
24 de janeiro de 2010 às 10:30

seria melhor usar variaveis locais do que globais.

 

existe um pequeno conflito entre o escopo da função e a variavel externa item2.

Editado Janeiro 24 por Marcryzius

canovasC
24 de janeiro de 2010 às 12:14

Pra que isso?

parameters = {cid = cid, pillarpos = {x=422, y=25, z=10, pillarid = PILLAR ID} 

Porque simplesmente nao coloca os parametros na funcao addEvent?

 

E pra que a função criar()? Porque nao colocou doCreateItem direto no callback do addEvent?

WiltryW
24 de janeiro de 2010 às 23:13

E pra que a função criar()? Porque nao colocou doCreateItem direto no callback do addEvent?

 

Não sabia que podia fazer isso o.O

vlw

JNLPBJ
26 de janeiro de 2010 às 13:19

Tenta assim

 

item1pos = {x=422, y=25, z=10, stackpos=255} -- demonic essence pos

item2pos = {x=422, y=25, z=10, stackpos=255} -- pilar pos

item1 = getThingfromPos(item1pos)

item2 = getThingfromPos(item2pos)

parameters = {cid = cid, pillarpos = {x=422, y=25, z=10, pillarid = PILLAR ID} -- troke aki o id do pilar

 

function criar(parameters)

doCreateItem(parameters.pillarid, 1, parameters.pillarpos)

end

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

 

if item.itemid == 1945 then

if doRemoveItem(item1, 100) == TRUE then

doRemoveItem(item2, 1)

doPlayerSendTextMessage(cid, 25, "Você pode passar. A passagem se fechará em 30 segundos.")

doTransformItem(item.uid, item.uid+1)

addEvent(criar, 30000, parameters)

else

doPlayerSendTextMessage(cid, 25, "Você precisa colocar 100 demonic essence no altar.")

end

else

doTransformItem(item.uid, item.uid-1)

end

return TRUE

end

 

vixe, tmbm não funcionou. Não tem unique id em lugar nenhum não será por isso?

 

 

seria melhor usar variaveis locais do que globais.

 

existe um pequeno conflito entre o escopo da função e a variavel externa item2.

Wiltry Ícone

 

Poderia me explicar melhor? hehe

WiltryW
26 de janeiro de 2010 às 15:19

Troca pra isso agora entao:

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

local item1pos = {x=422, y=25, z=10, stackpos=255} -- demonic essence pos
local item2pos = {x=422, y=25, z=10, stackpos=255} -- pilar pos
local item1 = getThingfromPos(item1pos)
local item2 = getThingfromPos(item2pos)
local pillarid = ID DO PILLAR

if item.itemid == 1945 then
if doRemoveItem(item1.uid, 100) == TRUE then
doRemoveItem(item2.uid, 1)
doPlayerSendTextMessage(cid, 25, "Você pode passar. A passagem se fechará em 30 segundos.")
doTransformItem(item.uid, item.uid+1)
addEvent(doCreateItem, 30000, pillarid, 1, item2pos)
else
doPlayerSendTextMessage(cid, 25, "Você precisa colocar 100 demonic essence no altar.")
end
else
doTransformItem(item.uid, item.uid-1)
end
return TRUE
end

 

no xml:

<action actionid="ACTION ID DA ALAVANCA" event="script" value="other/NOMEDOSCRIPT.lua"/>

Editado Janeiro 26 por Wiltry

rockstar96R
26 de janeiro de 2010 às 21:29

deixa as variaveis locais pra consumir menos espaço na memoria

xd

WiltryW
26 de janeiro de 2010 às 22:18

Ja coloquei elas locais na v2 ;x

rockstar96R
26 de janeiro de 2010 às 22:54

colocou n

JNLPBJ
26 de janeiro de 2010 às 22:55

aff, também não funcionou Wiltry! Pior que não aparece nenhum erro no exe do server. O que pode tar aconteceno? Será que eu tô fazeno algo errado?

WiltryW
26 de janeiro de 2010 às 23:04

Você configurou as posições?

x, y, z ,stackpos?