tibiaa4e 86 Postado Junho 9, 2010 Share Postado Junho 9, 2010 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. 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 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 https://xtibia.com/forum/topic/134585-arquivadoscripts-3-planejando-e-inventando/ Compartilhar em outros sites More sharing options...
Vodkart 1515 Postado Junho 9, 2010 Share Postado Junho 9, 2010 (editado) ó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 Junho 9, 2010 por Vodkart Link para o comentário https://xtibia.com/forum/topic/134585-arquivadoscripts-3-planejando-e-inventando/#findComment-887600 Compartilhar em outros sites More sharing options...
Mapos 0 Postado Junho 12, 2010 Share Postado Junho 12, 2010 Valeu kara, mto bom o topico, jah esta me ajudando muito Link para o comentário https://xtibia.com/forum/topic/134585-arquivadoscripts-3-planejando-e-inventando/#findComment-889011 Compartilhar em outros sites More sharing options...
Administrador Administrador 1437 Postado Junho 17, 2010 Administrador Share Postado Junho 17, 2010 Excelente cara! Parabéns .. Link para o comentário https://xtibia.com/forum/topic/134585-arquivadoscripts-3-planejando-e-inventando/#findComment-891865 Compartilhar em outros sites More sharing options...
Izaiasousa 21 Postado Junho 17, 2010 Share Postado Junho 17, 2010 (editado) 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 ] Abraços. Editado Junho 17, 2010 por LakaTarielOtServ Link para o comentário https://xtibia.com/forum/topic/134585-arquivadoscripts-3-planejando-e-inventando/#findComment-892056 Compartilhar em outros sites More sharing options...
gui56 27 Postado Junho 17, 2010 Share Postado Junho 17, 2010 Good Work ! Realmente você está ajudando muita gente que tem planos de ser scripter um dia, o tópico ficou ótimo. Aprovado! :button_ok: Abraços. Link para o comentário https://xtibia.com/forum/topic/134585-arquivadoscripts-3-planejando-e-inventando/#findComment-892063 Compartilhar em outros sites More sharing options...
tibiaa4e 86 Postado Junho 18, 2010 Autor Share Postado Junho 18, 2010 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 ] 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 https://xtibia.com/forum/topic/134585-arquivadoscripts-3-planejando-e-inventando/#findComment-892167 Compartilhar em outros sites More sharing options...
Izaiasousa 21 Postado Junho 18, 2010 Share Postado Junho 18, 2010 (editado) 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 ] 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 Junho 19, 2010 por LakaTarielOtServ Link para o comentário https://xtibia.com/forum/topic/134585-arquivadoscripts-3-planejando-e-inventando/#findComment-892373 Compartilhar em outros sites More sharing options...
Roksas 846 Postado Dezembro 14, 2010 Share Postado Dezembro 14, 2010 Caramba, Tibiaa4e, voce esta ajudando muita gente, me fez soltar umas risadinhas das fotos, estou orgulhoso por voce!Quero ler o Scripts # 4! rsrs. Atensiosamente, Roksas. Link para o comentário https://xtibia.com/forum/topic/134585-arquivadoscripts-3-planejando-e-inventando/#findComment-974674 Compartilhar em outros sites More sharing options...
Stigal 585 Postado Abril 25, 2018 Share Postado Abril 25, 2018 Esta noticia foi arquivada. Este tópico está fechado e foi movido para Noticia - Arquivo. + Caso tenha atualizações você poderá criar outro tópico. Link para o comentário https://xtibia.com/forum/topic/134585-arquivadoscripts-3-planejando-e-inventando/#findComment-1739474 Compartilhar em outros sites More sharing options...
Posts Recomendados