wendelshm 0 #1 Posted December 15, 2007 Ola pessoal !! Bom, rescentimente postei um tutorial q enssina a fazer uma quest onde o player, se encontrava em frente de uma mesa e do lado, havia uma alavanca, e quando ele colocase um item especifico sobre a mesa e puxase a alavanca ele seria teleportado . Com a mesma ideia desta quest eu criei uma outra quest q tem a seguinte função: O player ira se encontra em uma posição especifica (ex.piso q afunda:P) com uma alavanca a sua frente e havera 4 mesas, que quando colocados os itens certos na posição certa ele ira telepor para otro lugar (ex. um lugar q se encontre o bau). E se ele colocar os itens na posição errada e puxar a alavanca ele ira teleporta para otro lugar (ex. templo) e ira aparecer uma menssagem para ele dizendo q ele fracassou . Bom da maneira q eu fiz o player vai ter a oportunidade de tentar realizar a quest so uma vez pq quando ele por os itens na mesa da maneira certa ou errado e acionar a alavanca os itens ira desaparecer. Se por acaso tiver alguem q quer q eu poste de como nao desaparecer os itens ou o player nao ser teleportado quando os itens estiverem na posição errada, avisem, q terei o prazer de postar novo script. Olhe a foto abaixo e veja como eu fiz : Deu para entender a ideia (Y) ? Veja: os itens "magicos" q eu escolhi para a quest ser executada foram esses "cristais" vamus pegar de exemplos eles para vcs aprenderem. Vamus!!! mãos a obra : 1° PASSO Vah em propriedade da sua alavanca, e onde estiver escrito Uniqueid ou Quests ID Ponha 8001 ou um numero q o Actions não esteja usando.(Use 8001 como exemplo) 2° PASSO Va na pasta do seu ot abra a pasta data depois procure a pasta Actions clique com botão direito do mause sobre o arquivo Actions.xml e depois em editar. Agora vamos adicionar o script q o action vai obedecer. Citação: <action uniqueid="8001" script="Quest4elements.lua" /> Cole esse comando em qualquer lugar do arquivo O que esta em azul eh o numero que vc decidio q vai usar na alavanca, vamus usar 8001 como exemplo. O que esta de roxo eh o nome do arquivo.lua q vamus usar, usaremos Quest4elements.lua como exemplo Salve e fexe o arquivo OBS : O nome do arquivo .lua nao deve conter espaços c nao o action nao reconhece . 3° PASSO Agora va na pasta scripts copie qualquer arquivo, e modifique o nome do arquivo copiado para Quest4elements (lembrando q c vc for criar um nome diferente para seu script, ele nao deve conter espaços).Agora abra e pague tudo q tiver dentro do arquivo dexando o bloco de notas branquinho^^ 4° Passo Agora cole esse texto : function onUse(cid, item, frompos, item2, topos) positem1 = {x=99, y=184, z=10, stackpos=2} magicitem1 = getThingfromPos(positem1) positem2 = {x=102, y=187, z=10, stackpos=2} magicitem2 = getThingfromPos(positem2) positem3 = {x=99, y=190, z=10, stackpos=2} magicitem3 = getThingfromPos(positem3) positem4 = {x=96, y=187, z=10, stackpos=2} magicitem4 = getThingfromPos(positem4) if magicitem1.itemid == 2153 and magicitem2.itemid == 2155 and magicitem3.itemid == 2156 and magicitem4.itemid == 2154 then doRemoveItem(magicitem1.uid,1) doRemoveItem(magicitem2.uid,1) doRemoveItem(magicitem3.uid,1) doRemoveItem(magicitem4.uid,1) doSendMagicEffect(positem1,6) doSendMagicEffect(positem2,6) doSendMagicEffect(positem3,6) doSendMagicEffect(positem4,6) if item.itemid == 1946 then playerpos = {x=99, y=187, z=10, stackpos=253} player = getThingfromPos(playerpos) nplayerpos = {x=125, y=189, z=10} doSendMagicEffect(playerpos,2) doTeleportThing(player.uid, nplayerpos) doSendMagicEffect(nplayerpos,10) doTransformItem(item.uid,1945) doSendAnimatedText(getPlayerPosition(cid), "Consegui!.!.!", TEXTCOLOR_ORANGE) doPlayerSendTextMessage(cid,22,"Parabens!! Pegue todos os itens.") end if item.itemid == 1945 then playerpos = {x=99, y=187, z=10, stackpos=253} player = getThingfromPos(playerpos) nplayerpos = {x=125, y=189, z=10} doSendMagicEffect(playerpos,2) doTeleportThing(player.uid, nplayerpos) doSendMagicEffect(nplayerpos,10) doTransformItem(item.uid,1946) doSendAnimatedText(getPlayerPosition(cid), "Consegui!.!.!", TEXTCOLOR_ORANGE) doPlayerSendTextMessage(cid,22,"Parabens!! Pegue todos os itens.") end elseif item.itemid == 1946 then playerpos = {x=99, y=187, z=10, stackpos=253} player = getThingfromPos(playerpos) nplayerpos = {x=60, y=155, z=7} doSendMagicEffect(playerpos,2) doTeleportThing(player.uid, nplayerpos) doSendMagicEffect(nplayerpos,10) doTransformItem(item.uid,1945) doRemoveItem(magicitem1.uid,1) doRemoveItem(magicitem2.uid,1) doRemoveItem(magicitem3.uid,1) doRemoveItem(magicitem4.uid,1) doSendMagicEffect(positem1,6) doSendMagicEffect(positem2,6) doSendMagicEffect(positem3,6) doSendMagicEffect(positem4,6) doSendAnimatedText(getPlayerPosition(cid), "Falhou!.!.!", TEXTCOLOR_ORANGE) doPlayerSendTextMessage(cid,22,"Voce falhou!! Deveria ter colocado os itens nos lugares certos.") elseif item.itemid == 1945 then playerpos = {x=99, y=187, z=10, stackpos=253} player = getThingfromPos(playerpos) nplayerpos = {x=60, y=155, z=7} doSendMagicEffect(playerpos,2) doTeleportThing(player.uid, nplayerpos) doSendMagicEffect(nplayerpos,10) doTransformItem(item.uid,1946) doRemoveItem(magicitem1.uid,1) doRemoveItem(magicitem2.uid,1) doRemoveItem(magicitem3.uid,1) doRemoveItem(magicitem4.uid,1) doSendMagicEffect(positem1,6) doSendMagicEffect(positem2,6) doSendMagicEffect(positem3,6) doSendMagicEffect(positem4,6) doSendAnimatedText(getPlayerPosition(cid), "Falhou!.!.!", TEXTCOLOR_ORANGE) doPlayerSendTextMessage(cid,22,"Voce falhou!! Deveria ter colocado os itens nos lugares certos.") end return 1 end Explicação : Eh a posição da 1° mesa, ou seja o lugar q o 1° item vai ficar Eh a posição da 2° mesa, ou seja o lugar q o 2° item vai ficar Eh a posição da 3° mesa, ou seja o lugar q o 3° item vai ficar Eh a posição da 4° mesa, ou seja o lugar q o 4° item vai ficar De vermelho são as ids dos 4 itens q vc escolhe para o player colocar na mesa. Ja esta na ordem de acordo com a posição (ex. se vc quer q o item 2154 fique na posição 2 eh so mudar >> magicitem2.itemid == 2154) É a posição q o player deve fica quando acionar a alavanca para ser teleportado (piso que afunda). É a posição q o player vai ser teleportado quando ele estiver na posição correta e os itens tbm. É a posição q o player vai ser teleportado quando ele estiver na posição correta e os itens estiverem na posição errada. Bom tem coisas que tbm podem ser mudadas como ((cid,22,"Voce falhou!! Deveria ter colocado os itens nos lugares certos.") ) voce podera mudar essa frase, tipo : ((cid,22,"Seu tonto!!! Voce não eh cavera !! pedi pra sair !! pedi pra sair !! pedi pra sair !!") ) fica a gosto seu a frase . O q tem q ser mudado obrigatoriamente ta esplicado a cima de acordo com as cores . Bom pessoal ta ai mais uma questizinha legal o tutorial fico meio grandinho mas vale apena. São essas coisas q diferenciam o seu ot dos otros xD afinal eh impossivel jogar tibia e nao sentir o gostinho do RPG . Abraço a todos . Agradeço desde ja . Qualquer duvida pergutem . E se tiver algo q aparenta estar errado pode flar q eu irei editar tranquilo . haa feliz natal rsrs(Y) Share this post Link to post
Johnnie 2 #2 Posted December 15, 2007 Obrigado pela contribuição. Movido para Tutoriais sobre Scripting. Share this post Link to post
plomentes 0 #3 Posted December 15, 2007 já já vou testar mais cara parabéns ta muito loko hávia um parecido com esse no site mais era de um objeto só e sem alavanca =D Share this post Link to post
Palmares_ 0 #4 Posted December 15, 2007 Legal pela sua iniciativa, é assim que eu aprendi a fazer scripts, copiando os outros fazendo gambiarra xD, eu refiz seu script agora, eu não testei acho que nao errei nada, aproveia e da uma olhada como eu refiz e olha o que vocÊ errou. Tinha alguns bugs no seu script, não bug para nao funcionar, mais aparecia erro no console. local POS_PLAYER = {x =99, y =187, z =10} -- pos que o player tem que estar local POS_PRIZE = {x=125, y=189, z=10} -- POS CASO O PLAYER BOTAR OS ITEM CERTO ELE IRA local POS_FAILED = {x=60, y=155, z=7} -- POS CASO BOTAR ITEM ERRADO ELE IRA local POS_ITEM1 = {x=99, y=184, z=10, stackpos=2} -- POS DO ITEM UM local POS_ITEM2 = {x=102, y=187, z=10, stackpos=2} -- POS DO ITEM DOIS local POS_ITEM3 = {x=99, y=190, z=10, stackpos=2} -- POS DO ITEM TRES local POS_ITEM4 = {x=96, y=187, z=10, stackpos=2} -- POS DO ITEM QUATRO local ITEM1 = 2153 local ITEM2 = 2155 ---ITEMS conforme a pos, escolha qual item botar local ITEM3 = 2156 local ITEM4 = 2154 function onUse(cid, item, frompos, item2, topos) if (getCreaturePosition(cid).x ~= POS_PLAYER.x and getCreaturePosition(cid).y ~= POS_PLAYER.y) then return false end local magicitem1 = getThingfromPos(POS_ITEM1) local magicitem2 = getThingfromPos(POS_ITEM2) local magicitem3 = getThingfromPos(POS_ITEM3) local magicitem4 = getThingfromPos(POS_ITEM4) if (item.itemid == 1945) then doTransformItem(item.uid, 1946) else doTransformItem(item.uid, 1945) end if magicitem1.itemid == ITEM1 and magicitem2.itemid == ITEM2 and magicitem3.itemid == ITEM3 and magicitem4.itemid == ITEM4 then doRemoveItem(magicitem1.uid, 1) doRemoveItem(magicitem2.uid, 1) doRemoveItem(magicitem3.uid, 1) doRemoveItem(magicitem4.uid, 1) --- doSendMagicEffect(POS_ITEM1, 6) doSendMagicEffect(POS_ITEM2, 6) doSendMagicEffect(POS_ITEM3, 6) doSendMagicEffect(POS_ITEM4, 6) -- doSendMagicEffect(getCreaturePosition(cid), 2) doTeleportThing(cid, POS_PRIZE) doSendMagicEffect(POS_PTIZE, 10) doPlayerSendTextMessage(cid, 22, "Parabens!! Pegue todos os itens.") else doSendMagicEffect(getCreaturePosition(cid), 2) doTeleportThing(cid, POS_FAILED) doSendMagicEffect(POS_FAILED, 10) doPlayerSendTextMessage(cid, 22, "Voce falhou!! Deveria ter colocado os itens nos lugares certos.") doSendMagicEffect(POS_ITEM1, 6) doSendMagicEffect(POS_ITEM2, 6) doSendMagicEffect(POS_ITEM3, 6) doSendMagicEffect(POS_ITEM4, 6) if (magicitem1.uid ~= 0 then) doRemoveItem(magicitem1.uid, 1) end if (magicitem2.uid ~= 0 then) doRemoveItem(magicitem2.uid, 1) end if (magicitem3.uid ~= 0 then) doRemoveItem(magicitem3.uid, 1) end if (magicitem4.uid ~= 0 then) doRemoveItem(magicitem4.uid, 1) end end end Share this post Link to post
wendelshm 0 #5 Posted December 15, 2007 Boa !!!!! Bem penssado !!! rsrs declarou as variaveis para as posições. boa !! Mas pelo q eu observei, o script ai, o player vai teleporta sem esta na posição correta, eu achei mais , digamos, interessante quando o plyer assiona a alavanca e nao tiver na posição correta os itens desaparecessem. Mas isso ai fica pelo gosto de cada um neh. Valeu ai manu !!!! Gostei da ideia das variaveis de posição. Obrigado a todos, pela aprovação !!! Comentem pliz quero q o esforça vala a pena xD Se houver maiores aprovações eu irei postar um tutorial esplicando o q eu fiz nas funções ou seja esplicar passo-a-passo os comandos utilizados no script. Abraçus a todos (Y) Share this post Link to post
Palmares_ 0 #6 Posted December 15, 2007 Boa !!!!! Bem penssado !!! rsrs declarou as variaveis para as posições. boa !!Mas pelo q eu observei, o script ai, o player vai teleporta sem esta na posição correta, eu achei mais , digamos, interessante quando o plyer assiona a alavanca e nao tiver na posição correta os itens desaparecessem. Mas isso ai fica pelo gosto de cada um neh. Sim eu notei, mais estava todo bugado o seu eskema, se ele n estiver na posição correta nada acontece entao? e se estiver na posição correta se tiver item certo vai pra pos certa ou item errada pos errada... EDIT: PRonto ta editado do seu gosto. Share this post Link to post
wendelshm 0 #7 Posted December 15, 2007 Valeu ai manu ^^. So apenas iniciante :errm: ai c da erro num to ligado rsrs por inquanto faço o trem pra funfa . Particulamente vc usa algum programa para editar os script ? ou eh no bloco de notas mesmu ? rsrs Num sei se posso pergunta isso ai ,mas ja foi se tiver fora das regras me perdoem:bye: Share this post Link to post
Palmares_ 0 #8 Posted December 15, 2007 Valeu ai manu ^^. So apenas iniciante :errm: ai c da erro num to ligado rsrs por inquanto faço o trem pra funfa . Particulamente vc usa algum programa para editar os script ? ou eh no bloco de notas mesmu ? rsrs Num sei se posso pergunta isso ai ,mas ja foi se tiver fora das regras me perdoem:bye: Sim eu uso o Notepad++ ele é muito bom para estruturar os scripts, ver certinho para feixar os end's, parenteses etc... http://downloads.sourceforge.net/notepad-plus/npp.4.6.Installer.exe?modtime=1195690518&big_mirror=0 No programa: Não eskeça quando criar um arquivo novo, passa a linguagem para LUA no menu: linguagem la no topo. Share this post Link to post
wendelshm 0 #9 Posted December 15, 2007 Sim eu uso o Notepad++ ele é muito bom para estruturar os scripts, ver certinho para feixar os end's, parenteses etc... http://downloads.sourceforge.net/notepad-plus/npp.4.6.Installer.exe?modtime=1195690518&big_mirror=0 No programa: Não eskeça quando criar um arquivo novo, passa a linguagem para LUA no menu: linguagem la no topo. Kra valeu mesmu !!!!!!!!!!!!!!!!!!!!!! pela a força ai !! Share this post Link to post
joneco 0 #10 Posted December 16, 2007 =] tipo eu so iniciante mesmo soh consigo faze script de teleport =P to tentando aprende grande tutorial vlw baixei esse notpad ^^ Share this post Link to post
ilow 0 #11 Posted December 18, 2007 Nossa que lgal... O meu funciona certinho sem erro. E to com 3 meses de mapper e seria bom para os mapas ter noçoes de script. Share this post Link to post
Chaos Montefori 0 #12 Posted December 18, 2007 Muitos gostam de quests assim que qualquer erro acabou xD 0o >.< Share this post Link to post
dakmor 0 #13 Posted December 20, 2007 eu tentei botar isso no meu ot (DnWalker) mas com o ariquivo do wendelshm ele fazia tudo certo mas não teleportava o player e com o do plamares não acontecia nada Se possivel gostaria tb de uma ajuda em faze isso teleportar 4 player juntos =D obrigado desde ja =D Share this post Link to post
wendelshm 0 #14 Posted December 20, 2007 Manu verifique direitinho as posições dos itens e a posição q o player deve ficar, talvez na hora q vc foi testar o player nao estava na posição correta, use a alavanca de id :1946 Share this post Link to post
Big Smoke 0 #15 Posted December 20, 2007 Olha cara, estou afim de usar esse script no meu projeto "World of Tibia" mais(...) --EDIT-- Não presciza mais, eu consegui apenas addicionei: doPlayerAddItem(cid,2153,1)doPlayerAddItem(cid,2155,1) doPlayerAddItem(cid,2156,1) doPlayerAddItem(cid,2154,1) Obrigado/Ótimo script! //Big Smoke Share this post Link to post
lennoncooper 1 #16 Posted December 20, 2007 kra mt bom funfa mais qnd vc puxa a lavanca uma vez vc vai ir de novo n da pa puxa a lavanca fik trancada so volta se reinicia o ot plz me explica ae Share this post Link to post
wendelshm 0 #17 Posted December 21, 2007 manu sua alavanca eh do id 1946 ? Esse script foi feito para obedecer quando se usa o item 1946 ou 1945 se nao for esses itens nao funfa.. Se por acaso vc querer mudar a alavanca (ex. querer coloca uma estatua)eh so vc mudar la no script onde tiver 1946 e 1945 coloca o id q vc quiser do objeto. Espero ter resppondido a pergunta .. Ou sulocionado o problema Share this post Link to post
Reg 0 #18 Posted December 21, 2007 Muito Bom mano.. Aumentei uma quest aqui no meu server com esse Script.. Ótimo.. =D Muito Bem explicado PS: O do palmares n funfo ;x Aprovado. Share this post Link to post
Carlos Pereira 0 #19 Posted December 22, 2007 Muito boa sua iniciativa cara, parabéns, até! Share this post Link to post
Darkness 0 #20 Posted December 22, 2007 muito bom cara obrigado por compartilhar kra :} Share this post Link to post