Ir para conteúdo

[Arquivado]Scripts #3 -Planejando E Inventando


tibiaa4e

Posts Recomendados

Aqui estamos nós denovo, para falar de scripts! Obvio a coluna se chama assim...

 

Depois de muita ladainha vamos finalmente criar um script, mas não da maneira errada que muito de nós

fazemos, e sim de uma maneira "correta".

 

O que aconteceria se mandassemos 50 pedreiros construirem um predio? Provavelmente fariam ele, mas será que teria a

mesma segurança do que com um engenheiro?

 

 

phptFXi9R-predio2.jpg

Respondido

 

Agora mandando 50 pedreiros fazerem um serviço como construir um comodo numa casa antiga. Sem duvida eles fariam

muito bem sem nenhuma pessoa superior.

 

O engenheiro seria uma alusão ao planejamento. Sem planejamento é muito complicado fazer algo grande. Um script grande como

uma arena, dominação de castelo, uma quest grande como inquisition. Porém scripts mais simples como vara de pescar, uma quest simples como demon helmet, já se pode fazer mais rapidamente.

 

Quando se é programador, dependendo da empresa temos os coordenadores, analista que fazem o planejamento, fazem um UML (ou diagramas de blocos)

no nosso caso um papel com umas anotações basicas já são uteis.

 

Um exemplo pratico de quest simples. Demon Helmet

 

Vamos fazer o planejamento dela, que apesar de tosco se você tentar em algo que deseja fazer ajuda. Estou ignorando as recompensas.

 

O que é?

Uma sala com

-Alguns demons e banshees

-Uma sala de recompensa com três baus fechada com uma pedra

-Uma alavanca.

 

screenshot002po3.jpg

Ai a tal da quest (foto n eh minha)

 

O que faz?

-Quando você clica na alavanca, a pedra some liberando a passagem para a sala de recompensa

-Cria um teleport de saida.

 

Quando você clica denovo, a pedra volta e o teleport some.

 

 

Como eu faço?

Se você leu o possibilidades vai saber, provavelmente esse é facil, outros serão dificeis.

Bem o que faz? Se você leu a unica ação que fazemos é usar a alavanca. Ou seja evento onUse

que é uma ACTION

 

Já sabemos que é uma action, então vamos começar nosso script.

Vamos supor que ja temos o mapa feito. Criaremos a alavanca as quest e tudo mais.

 

Qual é a melhor maneira de se identificar uma UNICA alavanca que fará uma ação?

Meio explicito usando UniqueID. No meu caso o UID (Unique ID) é 8550 por organização pessoal.

 

Então começaremos nosso script com a base de toda action.

 

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

end

 

Ah mas tal script ta assim

 

function onUse(cid, item, pos, itemEx, topos)

end

DANE-SE! è mesma coisa, contando que você coloque em todas funções os parametros cid,item,pos,itemex como está em cima, não

fará diferença

 

Bem agora teremos que fazer o script identificar o item... Esse script será direcionado para o UID 8550. Porém a alavanca tem dois estados ativo(1946) e desativo (1945).

 

Vamos identificar adicionando

 

if item.itemid == 1945 then

 

Então ai ele pergunta se ela está desativada

 

Lembra do planejamento?

Esse script vai ser usado para outro script? Ou apenas isso?

Se não for não é necessario colocar a condicional

 

if item.uid == 8550 then

 

Por que apenas esse UID entrará no script!

 

E para finalizar colocaremos um end e um else caso ela seja 1946.

Por que não colocamos um else if?

-Porque uma alavanca ou é 1945 ou 1946. Então se não for 1945 é 1946 e vice versa.

 

Ficando assim

 

function onUse(cid, item, frompos, item2, topos)
if item.itemid == 1945 then

else

end

end

 

Vamos codificar caso ela esteja desativada. Nesse caso ela removerá a pedra e criará o teleport e ativará a alavanca.

 

Primeiro vamos identificar a posição que o teleport será criado,a posição da alavanca e aonde iremos quando entramos no teleport.

 

No meu caso é:

 

local gatepos = {x=1069, y=653, z=15, stackpos=1} -- posição da pedra
local telepos = {x=1071, y=652, z=15, stackpos=1} -- posição do teleport
local gopos = {x=1073, y=653, z=14, stackpos=1} -- aonde iremos depois

 

E seus thingpos:

 

local getgate = getThingfromPos(gatepos)
local gettele = getThingfromPos(telepos)

 

getThingfromPos ele identifica qual item está na posição quando é acionado, tornando ele semelhante ao item ou item2

 

E agora removeremos a pedra, transformaremos a alavanca e criaremos o teleport

 

doRemoveItem(getgate.uid,1)  --Remove o teleport                
doTransformItem(item.uid,item.itemid+1) -- Transforme a alavanca
doCreateTeleport(1387, gopos, telepos)--cria o teleport

 

Pronto! 80% está feito. Porque? a parte da alavanca ativada, é apenas inverter nossa ação.

Criaremos a pedra,desativamos a avalanca e tiramos o teleport

 

doCreateItem(1355,1,gatepos)
doTransformItem(item.uid,item.itemid-1)
doRemoveItem(gettele.uid,1)

 

E ainda melhoramos meu script antigo que foi feito sem planejamento.

 

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

local gatepos = {x=1069, y=653, z=15, stackpos=1}
local telepos = {x=1071, y=652, z=15, stackpos=1}
local gopos = {x=1073, y=653, z=14, stackpos=1}
local getgate = getThingfromPos(gatepos)
local gettele = getThingfromPos(telepos)        


if item.itemid == 1945 then
	doRemoveItem(getgate.uid,1)                
	doTransformItem(item.uid,item.itemid+1)
	doCreateTeleport(1387, gopos, telepos)
else
	doCreateItem(1355,1,gatepos)
	doTransformItem(item.uid,item.itemid-1)
	doRemoveItem(gettele.uid,1)
end

end

 

 

gravidez.jpg

Não planejou? Se lascou!

 

 

Bem aqui está um script planejado. Mas planejamento não quer dizer que não tenha erros.

Mas fica mais facil encontra-los.

 

Bem deixo a cargo de quem ler isso encontrar erros existente ai. Eu encontrei dois.

 

Que será tema do proximo artigo.

 

Evitando problemas.

 

Até lá

Link para o comentário
Compartilhar em outros sites

ótimo trabalho que você está fazendo,está ajudando muita gente iniciante com seu artigo colunista

está de parabens cara, e propósito meu script ficou assim:

 

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

local gatepos = {x=177, y=116, z=12, stackpos=1} -- lugar da pedra
local telepos = {x=176, y=115, z=12, stackpos=1} -- lugar onde o teleport será criado
local gopos = {x=154, y=54, z=7, stackpos=1} -- coordenadas para onde os jogadores vão ao entra no tp
local getgate = getThingfromPos(gatepos)
local gettele = getThingfromPos(telepos) 


if item.uid == 7010 and item.itemid == 1945 then
doRemoveItem(getgate.uid,1) 
doTransformItem(item.uid,item.itemid+1)
doCreateTeleport(1387, gopos, telepos)
elseif item.uid == 7010 and item.itemid == 1946 then
doCreateItem(1354,1,gatepos)
doTransformItem(item.uid,item.itemid-1)
doRemoveItem(gettele.uid,1)
doPlayerSendCancel(cid,"Sorry, not possible.")
return 0
end
return 1
end

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

Tipo, function onUse (cid,item,pos,itemex,topos) sempre terei que botar eles quando for inciar um script ? Ou eles só servem pra um tipo de script ? ;x

 

E outra coisa ai em local, eu queria saber quais sao as variaveis e tipo

local gatepos x y z'

 

O gatepos é uma variavel que eu posso mudar o nome ou o lua entende aquilo com a variavel de posicao da pedra? :x

 

Muito bom o tutorial

to começando a aprender já com seus tutoriais

+REP

 

Continue assim !

 

--Vou dar +rep amanhã, o meu diário ja acabou [em um de seus tutoriais :p]

 

Abraços.

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

Tipo, function onUse (cid,item,pos,itemex,topos) sempre terei que botar eles quando for inciar um script ? Ou eles só servem pra um tipo de script ? ;x

 

E outra coisa ai em local, eu queria saber quais sao as variaveis e tipo

local gatepos x y z'

 

O gatepos é uma variavel que eu posso mudar o nome ou o lua entende aquilo com a variavel de posicao da pedra? :x

 

Muito bom o tutorial

to começando a aprender já com seus tutoriais

+REP

 

Continue assim !

 

--Vou dar +rep amanhã, o meu diário ja acabou [em um de seus tutoriais :p]

 

Abraços.

 

 

Para começar suas duvidas giram em tornos de variaveis

 

Uma variavel é um espaço na memoria que guarda algo.

Na programação damos um nome

 

Imagine que a memoria seria um armario escolar americano e uma variavel seria um armario

Damos qual nome quiser, e guardamos o que quiser.

Existem regras claro, porém no LUA é simples.

 

Gatepos foi dado por qualquer motivo. Poderia ser pedraposicao. É indiferente

 

Sobre o function onUse você está indicando que é uma ação de clicar em algo. O que tem de parametros que pode mudar.

Link para o comentário
Compartilhar em outros sites

Tipo, function onUse (cid,item,pos,itemex,topos) sempre terei que botar eles quando for inciar um script ? Ou eles só servem pra um tipo de script ? ;x

 

E outra coisa ai em local, eu queria saber quais sao as variaveis e tipo

local gatepos x y z'

 

O gatepos é uma variavel que eu posso mudar o nome ou o lua entende aquilo com a variavel de posicao da pedra? :x

 

Muito bom o tutorial

to começando a aprender já com seus tutoriais

+REP

 

Continue assim !

 

--Vou dar +rep amanhã, o meu diário ja acabou [em um de seus tutoriais :p]

 

Abraços.

 

 

Para começar suas duvidas giram em tornos de variaveis

 

Uma variavel é um espaço na memoria que guarda algo.

Na programação damos um nome

 

Imagine que a memoria seria um armario escolar americano e uma variavel seria um armario

Damos qual nome quiser, e guardamos o que quiser.

Existem regras claro, porém no LUA é simples.

 

Gatepos foi dado por qualquer motivo. Poderia ser pedraposicao. É indiferente

 

Sobre o function onUse você está indicando que é uma ação de clicar em algo. O que tem de parametros que pode mudar.

E no lua como eu sei quais são as variaveis ? .-. Como eu faço pra identificar elas ? ;x

 

E quais sao as constantes ae ? tipo, que nao posso muda, como vc disse ae

 

onUse é pra action e tals.. tem onde eu conseguir mais informações sobre isso ?

Vlw :)

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

  • 5 months later...

Caramba, Tibiaa4e, voce esta ajudando muita gente, me fez soltar umas risadinhas das fotos, estou orgulhoso por voce!Quero ler o Scripts # 4! rsrs. :rolleyes:

 

Atensiosamente,

Roksas.

Link para o comentário
Compartilhar em outros sites

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