Ir para conteúdo
Entre para seguir isso  
Mock

[8.1]Carrinho de mina 2.0

Recommended Posts

Mock    32
Mock
Versão do arquivo: 2.0

Creditos: 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:

trilhos.bmp

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:

poden.bmp

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 :D

Edited

Esqueci como poe :P

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. :D

Editado por Mock

Compartilhar este post


Link para o post
Fadi    0
Fadi

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
Elys Zarox

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
Mock

xD penei p faze ele levei umas 2h :P

Compartilhar este post


Link para o post
Elys Zarox    0
Elys Zarox

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
Rafael2009

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
Rafael2009

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
Mock

@rafael2009

No problems o script funciona em 8.0 e se eu n me engano em 7.9 tb mas sem flood pls :P

Compartilhar este post


Link para o post
Rafael2009    0
Rafael2009

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
[ B a l i l l o ]

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 :P

PS: eu usei loops com una syntax a mais xD

Compartilhar este post


Link para o post
Elys Zarox    0
Elys Zarox

balillo posta ai pra ver como vc feis to curioso =]

Compartilhar este post


Link para o post
Mock    32
Mock

Ah :P 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
[ B a l i l l o ]

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 :P

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
Dark

@ [ 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
Mock

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 :P

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
Nord

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 por Nord

Compartilhar este post


Link para o post
[ B a l i l l o ]    0
[ B a l i l l o ]
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 :D

Compartilhar este post


Link para o post
Mock    32
Mock

é 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
[ B a l i l l o ]
é 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 :D

Compartilhar este post


Link para o post
Mock    32
Mock

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
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×