Ir para conteúdo

Removendo Paredes Com Pausa


Conde Sapo

Posts Recomendados

Exclusivo para XTibia

favor não postar em outro forum

 

Vai aqui uma forma diferente de remover um obstáculo.

 

Neste exemplo , 4 paredes serão removidas com intervalo de 2 segundos entre elas.

(dá um efeito visual lindo)

PortaMagica.gif

 

Vamos brincar com uma alavanca e colocar nela o UID 9999 :

data\actions\actions.xml

--  Paredes somem com intervalo (By Conde Sapo)

function onUse(cid, item, pos)

pausa = 2000 -- 2 segundos

-- posição das paredes  - nao mexer na stackpos.
wall0pos = {x=48, y=38, z=7, stackpos=1}
wall1pos = {x=50, y=38, z=7, stackpos=1}
wall2pos = {x=52, y=38, z=7, stackpos=1}
wall3pos = {x=54, y=38, z=7, stackpos=1}

if item.itemid == 1945 then
	doTransformItem(item.uid,1946)
	wall0 = getThingfromPos(wall0pos)
	if wall0.itemid ~= 0 then
		doRemoveItem(wall0.uid,1)
		addEvent(wait1,pausa,wall1pos)
	end
else
	doTransformItem(item.uid,1945)
end
return 1
end

function wait1(wall1pos)
coisa = getThingfromPos(wall1pos)
doRemoveItem(coisa.uid,1)
addEvent(wait2,pausa,wall2pos)
end

function wait2(wall2pos)
coisa = getThingfromPos(wall2pos)
doRemoveItem(coisa.uid,1)
addEvent(wait3,pausa,wall3pos)
end

function wait3(wall3pos)
coisa = getThingfromPos(wall3pos)
doRemoveItem(coisa.uid,1)
-- se quizer mais paredes , é só continuar ponto addEvent
end

 

Como funciona ?

 

1° - pausa = 2000 (2 segs)

Quando a gente chama um evento , esse parametro informa qual o tempo de espera até o evento começar a ser executado.

(no nosso caso 2 segs)

Após esses 2 segs , o evento começa.

 

2° - addEvent(wait1,pausa,wall1pos)

Esta é a forma de chamar um evento

WAIT1 é o nome do evento

PAUSA é a pausa explicada acima

WALL1POS é a variavel que vai ser levada pro evento.

 

o evento WAIT1 é chamado (com espera de 2 segs) e leva o parametro WALL1POS (com as coordenadas da parede)

 

2° - function wait1(wall1pos)

Este é o evento.

 

coisa = getThingfromPos(wall1pos)

Aqui pegamos a "coisa" que tá na WALL1POS (no nosso caso uma parede)

 

eu disse "coisa" porque "getThingfromPos" significa exatamente "pega coisa da pos"

 

doRemoveItem remove essa parede

e a linha seguinte chama o próximo evento com a mesma pausa de 2 segs.

 

3° - assim vai indo (envento chamando evento) até o último

que só remove a parede e não chama mais nenhum evento

 

Tentei explicar da melhor maneira possivel.

A outras instruções deste tutorial são comuns e não vou explicar.

(doTransformItem por exemplo)

 

:XTibia_smile:

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

  • Respostas 33
  • Created
  • Última resposta

Top Posters In This Topic

mas explica uma coisa... action agente posta aki ow na sessao de tutoriais?

 

Eu também não sabia.

Este trecho do PM entre EU e Amado Mestre JV acho que vai explicar

Pensei que TODOS tutoriais deveriam ser postando na seção ENVIE SEU TUTORIAL

e só depois que fosse aprovado é que seria encaminhado ao lugar correto.

 

2 perguntas...

 

1° - Pra que serve então a seção ENVIE SEU TUTORIAL ???

 

2° - Devo postar o tutorial direto na seção pertinente ???

 

Vlws

Não precisa pedir desculpas, é o seguinte.

 

Tutoriais devem ser postados na seção "Envie seu Tutorial" para que seja aprovado.

 

Só que você e outras pessoas estão postando Actions, npc, monstros, e isso não é tutorial de Script, isso é 1 script.

Por isso, deverá ser postado na sua área corespondente na categoria "Área de Desenvolvimento".

 

 

Qualquer dúvida, é só falar :D

 

 

See ya

 

Resumindo :

todo e qualquer script vem na área de desenvolvimento.

 

tutorial é aquela aulinha que você dá sobre determinado tema.

(mesmo que envolva scripts)

 

Exemplo de tutorial.:

Criando novas vocações

Como Tirar O Lag Do Atack

Criando Char Gm/god.

ot Como Criar

Peguei esses títulos de lá...

Link para o comentário
Compartilhar em outros sites

conde soh mi diga uma coisinha para colocar mais parede eh soh

colocar mais linhas

wall0pos = {x=48, y=38, z=7, stackpos=1}

wall1pos = {x=50, y=38, z=7, stackpos=1}

wall2pos = {x=52, y=38, z=7, stackpos=1}

wall3pos = {x=54, y=38, z=7, stackpos=1}

wall4pos = {x=54, y=38, z=7, stackpos=1}

wall5pos = {x=54, y=38, z=7, stackpos=1}

 

obrigado des de ja

Link para o comentário
Compartilhar em outros sites

eh sim pich..

 

o conde monto esse tuto com base numa duvida minha... e no meu script eram 8 itens ... eu pus e deu certo...

entaum eh soh vc add + dessas linhas...

 

flw

Link para o comentário
Compartilhar em outros sites

mas uma pergunta

se eu kizer q após um tempo as paredes voltem....como eu faço?

Existem diversas formas.

 

eu uso o comando doRemoveItem(delet.uid,1)

basta fazer algum script que doCreateItem(itemid,type or count,position)

 

onStepIn(cid, item, pos) por exemplo

Quando o player passar por cima de "algo" aciona uma ação que vai criar as paredes.

Logo depois das paredes (no meu exemplo) tem um teleport

Vai mandar de player pras coordenadas x=11 , y=12 , z=13 (por exemplo)

nesse exato lugar , você põe a ação.

 

Pronto... assim que ele passar , vai voltar as paredes.

 

:smile_positivo:

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

×
×
  • Criar Novo...