LO
pedido

Alavanca

Por LordVinny, 23 de dez. de 2012 em Scripts

alavanca e escada
script
15
2.2k
LordVinnyL
23 de dezembro de 2012 às 21:29

Queria um script de alavanca para que quando eu puxasse a alavanca aparecesse uma escada em tal localização e quando eu puxasse novamente a escada desaparecesse, me indicaram mas não sei edita me digam o que eu tenho que fazer nele para quer funcione, "postem o script e a tag dele juntos." :

 

 

function onUse(cid, item)

 

local starId, starPosition = ?, {x = ?, y = ?, z = ?}

local getStarUid = getTileItemById(starPosition, starId)

 

if getStarUid.uid > 0 then

doRemoveItem(getStarUid.uid, 1)

else

doCreateItem(starId, 1, starPosition)

end

 

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

return true

end

AkatsukyiA
23 de dezembro de 2012 às 21:51

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

queststatus = getPlayerStorageValue(cid, 6489)

if item.uid == 8945 and queststatus == -1 or queststatus == 0 then

doPlayerSendTextMessage(cid,22,"Você criou uma escada!.")

doCreateItem(3687, 1 , {x=157, y=88, z=7} ) -- Coloka posição de onde vai apareçer a escada

doSendMagicEffect( {x=157, y=88, z=7}, 30)

setPlayerStorageValue(cid, 6489, 1)

else

queststatus = getPlayerStorageValue(cid, 6489)

if queststatus == 1 then

doRemoveItem(getThingFromPos( {x=157, y=88, z=7, stackpos = 1} ).uid, 1) -- Coloka a mesma posição la de cima

doPlayerSendTextMessage(cid,22,"Você ja realizou está açao!.")

end

end

return 0

end

 

Tag

 

<action uniqueid="8945" event="script" value="alavanca.lua"/> -- no alavanca.lua vc bota o seu script

 

vai no RME (mapa editor) e coloka a unique id 8945 na alavanca

Editado Dezembro 23 por Manyzin

1 mês depois...
LordVinnyL
04 de janeiro de 2013 às 18:07

Esse script funcionou só quero que de pra sumonar a escada varias vezes não só uma.

04 de janeiro de 2013 às 18:18
function onUse(cid, item, frompos, item2, topos)
if item.uid == 8945 then
if getGlobalStorageValue(14354) <= 0 then
doPlayerSendTextMessage(cid,22,"Você criou uma escada!.")
doCreateItem(3687, 1 , {x=157, y=88, z=7} ) -- posição da escada
doSendMagicEffect( {x=157, y=88, z=7}, 30)
setGlobalStorageValue(14354, 1)
else
doRemoveItem(getThingFromPos( {x=157, y=88, z=7, stackpos = 1} ).uid, 1) -- posição da escada
setGlobalStorageValue(14354,-1)
doPlayerSendTextMessage(cid,22,"Você removeu a escada!.")
end
end
return 0
end

Editado Janeiro 4 por XxPaaulinhoOxX

LordVinnyL
04 de janeiro de 2013 às 18:41

Esse script não ta removendo a escada.

04 de janeiro de 2013 às 18:49

tem certeza? .-.

da algum erro no distro ?

LordVinnyL
04 de janeiro de 2013 às 18:50

Sim, tipo ele cria a escada, mas não remove ela.

04 de janeiro de 2013 às 18:53

Tenta agora !

brun123B
04 de janeiro de 2013 às 19:05

a script que você postou no tópico funciona ok, só substituir isso:

 

local starId, starPosition = ?, {x = ?, y = ?, z = ?}

 

pelo id e posição respectivamente, assim:

 

local starId, starPosition = 3687, {x = 157, y = 88, z = 7}

 

a propósito, a função getThingFromPos retorna uma tabela, então na hora de verificar se a função é diferente de 3687, sempre vai ser verdadeiro e vai criar infinitas escadas naquela posição, também não é bom usar ela, pois se tiver algum player, a getThingFromPos pode retornar as informações do player devido ao stackpos, não tenho certeza, mas acho que nem sempre vai ser 1 o stackpos da escada...

LordVinnyL
04 de janeiro de 2013 às 19:06

Continua não removendo, não aparece nenhum erro aqui.

04 de janeiro de 2013 às 19:27

não sabia worriedsmiley.gif

valeu ai pelo toque brun .

coloquei a escada como um globalStorage .. eu troquei o script .. mas quanto ao stackpos o player não influencia não que eu me lembre o player (ou monstro) é o stackpos 253 .. só influencia se alguem jogar algo no tile da escada eu acho ..

SlicerS
04 de janeiro de 2013 às 19:34

/\

se tiver + de 1 player numa ms pos, eles ocupam outros stackpos '--' começando pelo 1...

 

e o script do criador do topico ja era pra funcionar o.O soh mudando oq o brun flo...

brun123B
04 de janeiro de 2013 às 19:34

na verdade o 253/254/255 são apenas métodos pra determinar o que você quer pegar em um determinado tile.

 

todos os "things" no tile, sjam itens ou criaturas, recebem um stackpos, sendo 0 o ground, 1 o que está mais acima, 2 o que está imediatamente embaixo do 1 e assim adiante.

 

em c++, quando a função getThingFromPos ou getTileThingByPos é chamada, se o stackpos for 253, o retorno da função é obrigatoriamente uma criatura, isso não significa que a criatura está na stackpos 253.

 

LordVinny, você deve modificar a script com o ID da escada que você quer que seja criada e em que posição isso vai acontecer.

LordVinnyL
04 de janeiro de 2013 às 19:38

XxPaaulinhoOxX o script funcionou perfeitamente dessa vez, muito obrigado Rep+ pela ajuda xD

SlicerS
04 de janeiro de 2013 às 19:39

entao ta neh kk

sanado movido