ó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









info
Grupo: Conde
Registrado: 18/12/05
Posts: 912
Reputação: +86
Gênero: Masculino
Char no Tibia: Kohzete
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?
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.
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.
Ah mas tal script ta assim
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
Então ai ele pergunta se ela está desativada
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
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 depoisE seus thingpos:
E agora removeremos a pedra, transformaremos a alavanca e criaremos 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
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 endNã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á