Mock 32 #1 Postado 17 Junho, 2008 (editado) Versão do arquivo: 2.0Creditos: 90% Mock 10% Mendez por o topico e o cript origina. Versão do tibia: 8.1 Testado em: Aries 4.0 Tipo do script: PURA ACTION Contando a historia e o seguinte... eu tava no forum aki sem nd p faze "vagabundando" ai vi o script do carrinho de mina vi o video dele e do montanha russa system. ai eu vi OMG vo pro isso no meu e apenas tirei os comandos Maynotlogout e Maynotmove pq meu server n tem isso. ai eu peguei e fiz um trilho q dava 1 volta na minha cidade. quando fui testar... Omg Desastre! eu pensei q era so colocar os triolhos la e pronto. eu nen tinha olhado o script quando eu vi eu percebi que quanto maior o trilho maior o script. eu pensava q por o script ser grande o carrinho apenas seguia o trilho mas voçê deve definir o trilho no script. Bom ai como eu sou um NERD AOTA (N.A) Fiz um sistem q poucos servers possuem um PARECIDO. O script consta nisso: ao inves de ter que fazer um pedaço de script p cada sqm eu fiz e configurar o script p ele indentificar os sqms em volta do player ou seja voçê poe o trilho que o carrinho segue > (meu sript inteligente) Bom quem quiser dar uma olhada no topico original: http://forums.otserv.com.br/showthread.php?t=41202 Vamo para oq interessa 1º voçê deve definir o lugar onde o player vai começar a andar ou seja o inicil do trilho: la ponha uma alavanca um carrinho oq vc quiser com UniqueID: 7132 ai la no actions.xml ponha essa tag la: <action uniqueid="7132" script="minas.lua" /> se caso o uniqueid esteje sendo usado ponha outro qualquer. Bom crie um aqruivo chamado minas.lua e ponha isso dentro dele: -- Carrinho de mina system 2.0 By mock -- velocidade = 450 pessoass = 1 local function move(paramis) local npos = {x=centerpos.x+1, y=centerpos.y, z=centerpos.z, stackpos=1} local getplayer = getThingfromPos(npos) if getplayer.itemid == 7122 and getplayer.actionid ~= 100 then doTeleportThing(paramis.cida, {x=centerpos.x+1, y=centerpos.y, z=centerpos.z}) centerpos = {x=centerpos.x+1, y=centerpos.y, z=centerpos.z} addEvent(move, velocidade, paramis) doSetItemOutfit(paramis.cida, 7131, 6000) else local npos = {x=centerpos.x+1, y=centerpos.y, z=centerpos.z, stackpos=1} local getplayer = getThingfromPos(npos) if getplayer.itemid == 7124 and getplayer.actionid ~= 100 then doTeleportThing(paramis.cida, {x=centerpos.x+1, y=centerpos.y, z=centerpos.z}) centerpos = {x=centerpos.x+1, y=centerpos.y, z=centerpos.z} addEvent(move, velocidade, paramis) doSetItemOutfit(paramis.cida, 7131, 6000) else local npos = {x=centerpos.x, y=centerpos.y+1, z=centerpos.z, stackpos=1} local getplayer = getThingfromPos(npos) if getplayer.itemid == 7121 and getplayer.actionid ~= 100 then doTeleportThing(paramis.cida, {x=centerpos.x, y=centerpos.y+1, z=centerpos.z}) centerpos = {x=centerpos.x, y=centerpos.y+1, z=centerpos.z} addEvent(move, velocidade, paramis) doSetItemOutfit(paramis.cida, 7132, 6000) else local npos = {x=centerpos.x, y=centerpos.y-1, z=centerpos.z, stackpos=1} local getplayer = getThingfromPos(npos) if getplayer.itemid == 7121 and getplayer.actionid == 100 then doTeleportThing(paramis.cida, {x=centerpos.x, y=centerpos.y-1, z=centerpos.z}) centerpos = {x=centerpos.x, y=centerpos.y-1, z=centerpos.z} addEvent(move, velocidade, paramis) doSetItemOutfit(paramis.cida, 7132, 6000) else local npos = {x=centerpos.x-1, y=centerpos.y, z=centerpos.z, stackpos=1} local getplayer = getThingfromPos(npos) if getplayer.itemid == 7122 and getplayer.actionid == 100 then doTeleportThing(paramis.cida, {x=centerpos.x-1, y=centerpos.y, z=centerpos.z}) centerpos = {x=centerpos.x-1, y=centerpos.y, z=centerpos.z} addEvent(move, velocidade, paramis) doSetItemOutfit(paramis.cida, 7131, 6000) else local npos = {x=centerpos.x, y=centerpos.y+1, z=centerpos.z, stackpos=1} local getplayer = getThingfromPos(npos) if getplayer.itemid == 7126 and getplayer.actionid ~= 100 then doTeleportThing(paramis.cida, {x=centerpos.x, y=centerpos.y+1, z=centerpos.z}) centerpos = {x=centerpos.x, y=centerpos.y+1, z=centerpos.z} addEvent(move, velocidade, paramis) doSetItemOutfit(paramis.cida, 7132, 6000) else local npos = {x=centerpos.x-1, y=centerpos.y, z=centerpos.z, stackpos=1} local getplayer = getThingfromPos(npos) if getplayer.itemid == 7125 and getplayer.actionid == 100 then doTeleportThing(paramis.cida, {x=centerpos.x-1, y=centerpos.y, z=centerpos.z}) centerpos = {x=centerpos.x-1, y=centerpos.y, z=centerpos.z} addEvent(move, velocidade, paramis) doSetItemOutfit(paramis.cida, 7131, 6000) else local npos = {x=centerpos.x, y=centerpos.y-1, z=centerpos.z, stackpos=1} local getplayer = getThingfromPos(npos) if getplayer.itemid == 7124 and getplayer.actionid == 100 then doTeleportThing(paramis.cida, {x=centerpos.x, y=centerpos.y-1, z=centerpos.z}) centerpos = {x=centerpos.x, y=centerpos.y-1, z=centerpos.z} addEvent(move, velocidade, paramis) doSetItemOutfit(paramis.cida, 7132, 6000) else local npos = {x=centerpos.x-1, y=centerpos.y, z=centerpos.z, stackpos=1} local getplayer = getThingfromPos(npos) if getplayer.itemid == 7123 and getplayer.actionid ~= 100 then doTeleportThing(paramis.cida, {x=centerpos.x-1, y=centerpos.y, z=centerpos.z}) centerpos = {x=centerpos.x-1, y=centerpos.y, z=centerpos.z} addEvent(move, velocidade, paramis) doSetItemOutfit(paramis.cida, 7131, 6000) else local npos = {x=centerpos.x, y=centerpos.y+1, z=centerpos.z, stackpos=1} local getplayer = getThingfromPos(npos) if getplayer.itemid == 7125 and getplayer.actionid ~= 100 then doTeleportThing(paramis.cida, {x=centerpos.x, y=centerpos.y+1, z=centerpos.z}) centerpos = {x=centerpos.x, y=centerpos.y+1, z=centerpos.z} addEvent(move, velocidade, paramis) doSetItemOutfit(paramis.cida, 7132, 6000) else local npos = {x=centerpos.x+1, y=centerpos.y, z=centerpos.z, stackpos=1} local getplayer = getThingfromPos(npos) if getplayer.itemid == 7126 and getplayer.actionid == 100 then doTeleportThing(paramis.cida, {x=centerpos.x+1, y=centerpos.y, z=centerpos.z}) centerpos = {x=centerpos.x+1, y=centerpos.y, z=centerpos.z} addEvent(move, velocidade, paramis) doSetItemOutfit(paramis.cida, 7131, 6000) else local npos = {x=centerpos.x, y=centerpos.y-1, z=centerpos.z, stackpos=1} local getplayer = getThingfromPos(npos) if getplayer.itemid == 7123 and getplayer.actionid == 100 then doTeleportThing(paramis.cida, {x=centerpos.x, y=centerpos.y-1, z=centerpos.z}) centerpos = {x=centerpos.x, y=centerpos.y-1, z=centerpos.z} addEvent(move, velocidade, paramis) doSetItemOutfit(paramis.cida, 7132, 6000) else doSetItemOutfit(paramis.cida, 7131, 1) pessoass = 1 end end end end end end end end end end end end end function onUse(cid, item, frompos, item2, topos) if pessoass == 1 then local paramis = {cida = cid, poina = topos} centerpos = topos doTeleportThing(cid, centerpos) doSetItemOutfit(cid, 7131, 1000) addEvent(move, 400, paramis) pessoass = 2 else doSendAnimatedText(topos, "PERA!", TEXTCOLOR_BLUE) doPlayerSendCancel(cid,'Desculpe está sendo usado.') end end Bom todo bom scripter vai saber q o script funciona mas pode ser melhorado ainda pq eu puis mto if e end XD mas oq importa n e o script ficar bonito e sim funcionar. Em fim feito isso apenas fassa seu trilho e seje feliz :DDD --- - - mintira! tem mais coisa mwhahaha! Bom a posição central e difinida da posição do item no qual vc deu use no script n e presiso mudar nada mas tem umas coisas que voçÊ e obrigado a saber. Esse script alem de poderozo pode desencadear alguns loops em seu server se for mau usado portanto cuidado ao usa-lo. bom como ha poucos ids de tilho e n foram feitos para ser usado p isso no qual esta sendo eu tive q adcionar umas coisas. o tilho na horizontal sem action id empurra o carrinho para >> e com action id 100 joga o carrinho para la << ou seja se vc por um sqm com action id e o outro sem em uma reta o loop sera infinito ou seja o player nuca ira apra de se locomover para la > e para ca <. Uma desvantagem desse para o original é que o original pode ir varios players de uma vez esse não pois se um player estiver na usando e outro entra ele volta pro inicil e fica os 2 sendo teleprotados atre o final pode ate dar debug nos 2. a vantagem é q vc n presisa por 1 pedaço do scirpt p cada trilho: Bom para ensinar a voçês como usar os trilhos veja a SS abaixo: Aqui mostra os trilhos que com ou sem action id a direção que eles vão levar o player. outra coisa que limita o script e que o trilho fica na Stackpos 2 voçe pode jogar oque quiser no trilho que não atraplaa o trilho pode ate passar pela lava por sqm que n podem ser andandos etc mas lembre-se: Aquelas bordinhas q ficam em cima do chao como a grass ou aeia ate borda de agua ficam na stack pos 2 e consequentemente o trilho fica na 3. então ao caqrrinho encontrar uma borda ele ira parar pq ele indentificou uma Borda no stack pos 2 e não um trilho. então por onde o tilho passar não ponha bordas no memso SQM outra coisa importante e oque esta na SS abaixo: Os trilhos que são paralelos devem ter 1 sqm de separação entre eles. e aquels outros id de burificações o script n da eles como trilhos e o trem vai parar na frente dele. se o trem ver que no proximo sqm n tem trilho ele para. e caso um trilho por ventura encoste em outro paralelo pode iniciar um loop que o carrinho fique dando voltas em circulos. Bom e o seguitne Se gostaram doem ot$ ou comenten se n gostaram doem asism msmo ^^ Flws!!!! ps: Fiz justamente p posta aqui pq eu sou daqueles que faz scripts legais e n tem medo de posta-los Edited Esqueci como poe tipo faz o tilho de boa so que no INICIL dele vc poe um vagaozinho pode tae ser uma alavanca pedra ou qualquer coisa contanto que fique em cima do trilho e tenha o unique id. Editado 18 Junho, 2008 por Mock Compartilhar este post Link para o post
Fadi 0 #2 Postado 18 Junho, 2008 Obrigado pela contribuição. Ao postar um download, procure seguir isto: Padrão de postagem. APROVADO Compartilhar este post Link para o post
Elys Zarox 0 #3 Postado 18 Junho, 2008 xD eae socio =p parabens por ter conseguido fazer o script apesar que achei que ia demorar oO Compartilhar este post Link para o post
Mock 32 #4 Postado 18 Junho, 2008 xD penei p faze ele levei umas 2h Compartilhar este post Link para o post
Elys Zarox 0 #5 Postado 18 Junho, 2008 ahh eu ia demorar no minimo uma semana oO actions math random eu demoro pra achar os commans xD Compartilhar este post Link para o post
Rafael2009 0 #6 Postado 18 Junho, 2008 PArabens, vc s não se importam que eu transforme esse script para 8.0...Se eu conseguir eu posto um novo topico. Por issu vou testar no 8.0 e refazer.Ok! Compartilhar este post Link para o post
Rafael2009 0 #7 Postado 18 Junho, 2008 Parabéns Garoto, nem precisou refazer deu certo ateh em 8.0. Testado e aprovado em... Compartilhar este post Link para o post
Mock 32 #8 Postado 18 Junho, 2008 @rafael2009 No problems o script funciona em 8.0 e se eu n me engano em 7.9 tb mas sem flood pls Compartilhar este post Link para o post
Rafael2009 0 #9 Postado 19 Junho, 2008 Parabéns é desse tipow de scripters que o Otnet precisa xD.... Revolução de Ots....Isso aew. Agradeço a todos que tmbm postaram seus scripts. Compartilhar este post Link para o post
[ B a l i l l o ] 0 #10 Postado 20 Junho, 2008 Vi seu carrinhu e pensei num suposto jeito de deixa-lo mais dinamico e tentei aqui e funfou o.0 De todas essas suas linhas ai (que deve ter umas 80+), fiz o meu com 15 linhas \o/ Me surpreendi tbm =D Parabens pelo script :} Se pá, posto o que eu fiz PS: eu usei loops com una syntax a mais xD Compartilhar este post Link para o post
Elys Zarox 0 #11 Postado 20 Junho, 2008 balillo posta ai pra ver como vc feis to curioso =] Compartilhar este post Link para o post
Mock 32 #12 Postado 20 Junho, 2008 Ah entendi +/- da p fazer com menos linhas sim so q eu fiz assim correndo n tava nen ai p tamanho nen nd p min oq importa e o script funfa to nen ai se ele tem 10mb ou 1kb quero q funcione u.U Compartilhar este post Link para o post
[ B a l i l l o ] 0 #13 Postado 20 Junho, 2008 tipo, vou da um exemplo aqui: local time = 1000 while item.itemid == <id do trilho> do param = {bla bla = bla bla} addEvent(andarcarrinho,time,param} time = time + 1000 break end Vcs podem estar estranhando o break ali, mas com ele ali o script funciona de uma forma a não dar debug, porque sem ele, o addEvent vai ser adicionado diversas veses, mts veses mesmo e dai o tiozin vai vuar varios sqms a frente por segundo Dai com o break, ele executa a função e PARA, dai ele vai parar no proximo sqm, q, provavelmente, será um trilho e ira executar a função dnovo, só que com mais tempo, tornando ela assim sucessivamente Compartilhar este post Link para o post
Dark 3 #14 Postado 20 Junho, 2008 @ [ B a l i l l o ] Não entendi para que o while o.o, ja que ele só ira executar ele uma vez. Não seria mais facil usar o addEvent ao executar quando ele passar pelo trilho Compartilhar este post Link para o post
Mock 32 #15 Postado 21 Junho, 2008 o0 pior usando while da qse q na mesma usar o IF pq quando ele verificar q tem trilho no sqm da pociça~ocentralpos.x+1 ele vai fazer o casrrinho andar e executar a função de verificar norvamente formando assim um ciclo acheio (sem querer ser grosso) algo parecido com inutil mas q funciona (n sei o nome da apalavra XD) Emfim qdo vc falo em usar while eu pensei em algo parecido do gentero: Enquanto o id do chao for igual a dos trilhos executar as funçoes abaixo. Igual esplicado nos tutoriais n esperei algo assim E o caso do debug e so diminuir a velocidade q o addevent e executado a cada 500~600ms n da debug. Compartilhar este post Link para o post
Nord 2 #16 Postado 21 Junho, 2008 (editado) O meu deu +- 10 linhas, eu usei um if pra checar a action id de cada trilho, depois ele retorna uma variável que é a position={x=pos.x+?, y=pos.y+?, z=pos.z}, joguei tudo isso pra dentro de um addEvent então no movements ele executa o script cada vez que pisa num trilho. ?: Varia de acordo com os ifs. O seu também ficou ótimo porque não precisa a cada trilho colocar uma action id, apenas em alguns. Editado 21 Junho, 2008 por Nord Compartilhar este post Link para o post
[ B a l i l l o ] 0 #17 Postado 21 Junho, 2008 O meu deu +- 10 linhas, eu usei um if pra checar a action id de cada trilho, depois ele retorna uma variável que é a position={x=pos.x+?, y=pos.y+?, z=pos.z}, joguei tudo isso pra dentro de um addEvent então no movements ele executa o script cada vez que pisa num trilho. ?: Varia de acordo com os ifs. O seu também ficou ótimo porque não precisa a cada trilho colocar uma action id, apenas em alguns. É, desse jeito é bem pratico mesmo Porque dai só checar a actionid do trilho e mudar uma variavel lá que vai estar inclusa dentro do param do addEvent, dai o addEvent vai formular positions novas com aquele param a cada vez que pisa em trilhos diferente. Bem pratico Compartilhar este post Link para o post
Mock 32 #18 Postado 21 Junho, 2008 é da p fazer com 10 linhas tb esse script tem mtas formas de fazer agora eu vo fazer a versão 3.0 q da para ir + de uma pessoa ao mesmo tempo q se vai 2 o cid iguala ai vai teleprotando o playe pro memso sqm e da mo confusão o player tah no final do percurso alguem entra ai ele começa dinovo UAHAhuaHU Compartilhar este post Link para o post
[ B a l i l l o ] 0 #19 Postado 21 Junho, 2008 é da p fazer com 10 linhas tb esse script tem mtas formas de fazer agora eu vo fazer a versão 3.0 q da para ir + de uma pessoa ao mesmo tempo q se vai 2 o cid iguala ai vai teleprotando o playe pro memso sqm e da mo confusão o player tah no final do percurso alguem entra ai ele começa dinovo UAHAhuaHU Faz sem trocar a roupa para a de carrinhu, faz criando o carrinhu embaixo do player e faz o lookDir do player sempre estar a favor do trilho Compartilhar este post Link para o post
Mock 32 #20 Postado 22 Junho, 2008 eu vi isso no youtube. de mudar so o lookdir do player e criar o carrinho la em baixo. eu ja ate fiz so q e versão 2.1 e nen vo posta aki meio inutil xD Compartilhar este post Link para o post