Roller Coaster System

colex
Por colex
em Actions e Talkactions

colex

Serviços Prestados a Comunidade
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 03/10/05Posts: 301Gênero: Masculino

Roller Coaster System



Developed by Colex

 

Introdução:

Este script de Montanha-Russa é um sistema facil de utilizar, foi elaborado de forma a que qualquer pessoa pudesse usar sem qualquer alteração no script, mas para aquele que gostam de personalizar o script, eu adicionei um sistema de "eventos" e um par de funções para tornar muito facil a alteração e adaptação do script sem ser necessário entender o script em si.

 

O script foi criado num OTServer 8.1, porém voce pode facilmente actualiza-lo para qualquer outra versão, quando voce faz o download do script, ele vem com um ficheiro README que ajuda-o no processo de actualização e tambem dá algumas informações extras.

 

Features:

  • Um script funciona com todas as montanhas-russas do server
  • A velocidade aumenta quando voce desce uma rampa
  • A velocidade diminui quando voce sobe uma rampa
  • Voce pode adicionar impulsores ao trilho (aumenta a velocidade)*
  • Voce pode adicionar freios ao trilho (diminui a velocidade)*
  • Voce pode facilmente adicionar comportamentos personalizados ao ficheiro de eventos

 

*leia o README para ter mais informações de como fazer isso

 

Roller Coaster's Video:

Este é um filme de exemplo da Roller Coaster que eu fiz para testar o script (não foi filmado com a ultima versão do script)

 

Download:

RollerCoaster___Colex.rar

O download contem 4 arquivos: README.txt, RollerCoaster.lua, RollerCoasterEvents.lua e actions.xml

 

 

Script:

Estou a postar o script no próprio tópico para aqueles que não querem fazer o download do mesmo, mas querem dar uma olhada no script... Para obter todas as informações e ter um funcionamento correcto do sistema, é necessário o download do mesmo.

 

------Roller Coaster System by Colex-------
dofile('data\\actions\\scripts\\RollerCoasterEvents.lua')

local TRAINS = {7131, 7132}
local all = {7121, 7122, 7123, 7124, 7125, 7126, 7133, 7134, 7135, 7136}

local ACTION_TRAIN = {1001, 1002}

local RAILS = {
{id = all[1], dirs = {{dir = SOUTH, out = 2},{dir = NORTH, out = 2}}}, 
{id = all[2], dirs = {{dir = EAST, out = 1},{dir = WEST, out = 1}}},
{id = all[3], dirs = {{dir = EAST, out = 1},{dir = SOUTH, out = 2}}},
{id = all[4], dirs = {{dir = WEST, out = 1},{dir = SOUTH, out = 2}}},
{id = all[5], dirs = {{dir = EAST, out = 1},{dir = NORTH, out = 2}}},
{id = all[6], dirs = {{dir = WEST, out = 1},{dir = NORTH, out = 2}}},
{id = all[7], stop = 1},
{id = all[8], stop = 1},
{id = all[9], stop = 1},
{id = all[10], stop = 1},
}

local SLOW = 500
local FAST = 200
local INCREASE = 50
local DECREASE = 50
local DOWN_INCREASE = 450
local UP_DECREASE = 155

local INFOS = {}

TRUE = 1
FALSE = 0


function getRail(pos)
 local stack = 1 
 local found = 0
 repeat
   pos.stackpos = stack
   rail = getThingfromPos(pos)
   if (rail.itemid == 0) then break end   
   for i, r in ipairs(RAILS) do
     if (rail.itemid == r.id) then
       found = 1
       break
     end   
   end
   stack = stack + 1
 until (found == 1)
 return rail
end

function moveTrain(cid)
 params = INFOS[cid]
 pos = getCreaturePosition(cid)
 rail = getRail(pos)
 dir = -1
 for i,r in ipairs(RAILS) do
   if (rail.itemid == r.id) then
     if (RollerCoaster:onMove(cid, rail, r, pos) == FALSE) then table.remove(INFOS, cid) return 1 end 
     if (r.stop ~= nil) then
       if (r.stop == 1) then
         RollerCoaster:onExitQuery(cid)
         addEvent(exitTrain, 2000, cid)
         return 1
       end
     end 
     change = rail.actionid - 1000 
     power = 0    
     power = change

     doChangeType(cid, r.id, INFOS[cid].beforeid)                 
     info = r.dirs[iNFOS[cid].type]
     dir = info.dir  
     if ((power == 1) or (power == 2)) then
       if (RollerCoaster:onChangeSpeed(cid, power) == TRUE) then
         if (power == 2) then
           INFOS[cid].speed = INFOS[cid].speed - INCREASE
         elseif (power == 1) then
           INFOS[cid].speed = INFOS[cid].speed + DECREASE
         end 
       end
     end
     if (INFOS[cid].currZ ~= pos.z) then
       if (RollerCoaster:onChangeLevel(cid, INFOS[cid].currZ, pos.z) == TRUE) then
         if (INFOS[cid].currZ > pos.z) then
            INFOS[cid].speed = INFOS[cid].speed + UP_DECREASE
         elseif (params.currZ < pos.z) then 
            params.speed = params.speed - DOWN_INCREASE
         end  
       end 
     end
     if (params.speed < 1) then params.speed = 1 end
     params.currZ = pos.z
     newid = TRAINS[info.out]  
     INFOS[cid].beforeid = r.id
     break
   end  
 end      
 if (dir ~= -1) then
   doSetItemOutfit(cid, newid, -1)
   doMoveCreature(cid, dir)
   addEvent(moveTrain,params.speed,cid)
 else
   RollerCoaster:onExitQuery(cid)
   addEvent(exitTrain, 2000, cid)
 end
end

function exitTrain(cid)
 table.remove(INFOS, cid)
 RollerCoaster:onExit(cid)
 doSetItemOutfit(cid, TRAINS[1], 0)
 pos = getCreaturePosition(cid)
 pos.y = pos.y - 1
 doTeleportThing(cid, pos, 1)
 mayNotMove(cid, 0)
end

function enterTrain(params)   
 if (RollerCoaster:onEnter(cid, params[2]) == TRUE) then
   doSetItemOutfit(params[1], params[2], -1)
   pos = getCreaturePosition(params[1])
   table.insert(INFOS, params[1],{type = params.type, speed = SLOW, currZ = pos.z}) 
   addEvent(moveTrain,1000,params[1])
 end
end

function getSpeed(cid)
 if (INFOS[cid].speed ~= nil) then return INFOS[cid].speed end
 return FALSE
end

function setSpeed(cid, speed)
 if (INFOS[cid].speed ~= nil) then INFOS[cid].speed = speed return TRUE end
 return FALSE
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
 if (isInArray(ACTION_TRAIN, item.actionid) == TRUE) then
   if (RollerCoaster:onEnterQuery(cid, item) == TRUE) then
     doTeleportThing(cid, toPosition, 1)
     mayNotMove(cid, 1)
     addEvent(enterTrain,500,{cid, item.itemid, type=(item.actionid-1000)})
   end
 end
 return TRUE
end


----"No Scripting Needed" System-----
local change = {}
change[all[1]] = {all[3], all[4]}
change[all[2]] = {all[4], all[6]}
change[all[3]] = {all[1], all[4], all[6]}
change[all[4]] = {all[1], all[2], all[3], all[5], all[6]}
change[all[5]] = {all[4]}
change[all[6]] = {all[2], all[3], all[4]}
change[all[7]] = {}
change[all[8]] = {}
change[all[9]] = {}
change[all[10]] = {}

function doChangeType(cid, id, beforeID)
 if (table.getn(change[id]) > 0) then
   if (isInArray(change[id],beforeID) == TRUE) then
     if (INFOS[cid].type == 1) then INFOS[cid].type = 2 else INFOS[cid].type = 1 end
   end   
 end
end

 

Espero que gostem e façam bom proveito dele.

 

Atenciosamente,

Colex

nighttwizard

NextSky
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 20/07/08Posts: 68

Oh my god Colex está devolta? Obah vo testa aqui o script =**

Atenciosamente,
NightWizard

rogerlp

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 22/03/08Posts: 29Char no Tibia: Reidar Alus

ADOREI O SCRIPT,UMA VEZ EU FIZ UM IGUALZINHO O PROBLEMA ERA QUE ELE BUGAVA O MEU OT,SE VC PUDER ME CONTATE PARA QUE A GENTE POSSA DISCUTIR SOBRE SCRIPTS,E TALVEZ FAZER UMA SOCIEDADE MSN:(roger_ph15@hotmail.com)

Atenciosamente,
Lord Roger

Dare Devil

Ex-Coordenador de Imprensa
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 27/06/07Posts: 598Gênero: Masculino

O Link para download,

está quebrado, pelo vídeo da para ver que é show esse script.

Parabéns, pelo script será essa a volta do Colex?

Atenciosamente,

Dare Devil.

 

Siga-me no Twitter,

@LucasPassosCDR

colex

Serviços Prestados a Comunidade
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 03/10/05Posts: 301Gênero: Masculino

@Dare Devil

O link ja esta arrumado...

 

Não sei se voltei, é que eu estava no computador e achei esse script aqui que eu ja tinha feito a muito tempo, ninguêm estava usando, ja estava apodrecendo e ganhando mofo e bichinhos nojentos... então eu pensei para mim próprio...

"vou beber agua"

Fui beber água e quando estava voltando da cozinha tive vontade de fazer o número 2. Fui correndo para o banheiro, sentei na porcelana e deixei fluir enquanto tentava lembrar a música do Pokemon, quando terminei e fui limpar o olho de Deus começei a pensar no script e quando ia pensar no que fazer com esse script dei um peido estilo "chuveiro" e tive que limpar tudo de novo, porém tinha acabado o papel e só tinha mais papel higienico na dispensa (e para chegar la tem de se passar pela sala), então lá fui eu correndo com o traseiro fora das calças e quando estou passando na sala vejo que minha vó esta com visitas... então vou pular essa parte >.< terminei o que tinha de fazer, voltei para o PC, sentei-me, olhei para o script e disse paa mim mesmo...

"Já Sei..."

"Já me recordo qual é a música do Pokemon!"

Entretanto um rapaz no MSN pergunta:

"Porque voce não libera o script da montanha-russa"

e eu respondi:

"Ok"

 

E esta ai o script! =O

Narutinhow

O seu destino é você quem faz.
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 21/03/08Posts: 23Char no Tibia: Lord Zmile

@Topico

Otimo,bem interessante,e divertido :]

 

@Colex

Não precisava ter dito isto :o

Olá ShadowRock!


Sua assinatura foi movida para a área "Quem sou eu" por que estava danificando o [i]layout[/i] do fórum.
Você pode reestruturar sua assinatura acessando seu painel de controle > perfil > editar "quem sou eu"
Pedimos desculpa pela inconveniência.


Atenciosamente,
Henrique.


Maioral

The Roleplaying Master
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 29/01/06Posts: 27Char no Tibia: Orkuteiro

naum ta funcionando aki , meu carinha anda em direção ao carro e nada acontece.


>
>
>
>
> é oque pretendo faser com você se você não comentar meu tópicos Ò.ó
>
>
>
Primeiro De tudo , Saiba Que um dia , eu quero ser um grande scriper e um grande mapper :D


[i][Esta é Minha Assinatura. Veja E Morra Feliz.[i/]


hmm espero que isso nao caia aki na terra..














Minha Meta é :
10 topicos [X]
Matar O Infeliz Que Ta Lendo Minha Assinatura [Correndo Atras]



Ê MACARENA!

\/---Isso é para você que gosta de bolinhas inocentes---\/


colex

Serviços Prestados a Comunidade
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 03/10/05Posts: 301Gênero: Masculino

@Maioral

 

Voce tem de dar "use" no carrinho, se não der assim verifique que voce tem tudo bem configurado para a sua versão (mais informações no README)

furiavr

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 27/04/08Posts: 156Char no Tibia: Retired!

Nossa muito responsa mano...parabéns!

_ferrari_

avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 27/12/06Posts: 202

Meus parabens colex, bem que vc podia liberar mais uns dos seus scripts "apodrecidos" pra nos. Eu tinha feito um desses, mas era um sistema de trem de mineracao, e tinha velocidade padrao.. etc... Mas vlw por compartilhar isso =D

Objetivos:
50 posts [x]
100 posts[x]
200 posts[x]
500 posts[x]
"Um post em um fórum deve como uma saia. Longa o suficiente para cobrir o assunto, porém curta o suficiente para manter as coisas interessantes"
Gosta de mim? Foi com minha cara? Quer me matar? Use:

Edux

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 16/11/07Posts: 1Char no Tibia: bruxenak elverbidan

Vlw Colex cada vez se superando mais continua assim :smile_positivo:

nighttwizard

NextSky
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 20/07/08Posts: 68

Alguem poderia me diser se tenho que colocar actions no mapa e aonde ? para faser funcionar no me embolando todo aqui

Atenciosamente,
NightWizard

5084165

Legends Never Die
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 25/07/08Posts: 54

1001 e 1002 -> Train's Actionid, 1001 starts to one side and 1002 starts to the other

 

Aqui a resposta para sua pergunta Night!

 

@Colex,

 

Me lembro de ter testado esse Scripting ele é realmente foda ;x

 

Esse script foi desinvolvido para a B.O correto?Ou seja, bem antigo!

 

Abraços,

Rekoor.

Legends Never Die




É meu fan?Então use e abuse:
Numero de post's não conta.O que realmente conta é a Qualidade dos Post's



Ultima Sign:


Os ventos que as vezes tiram
algo que amamos, são os
mesmos que trazem algo que
aprendemos a amar...
Por isso não devemos chorar
pelo que nos foi tirado e sim,
aprender a amar o que nos foi
dado.Pois tudo aquilo que é
realmente nosso,
nunca se vai para sempre...

nighttwizard

NextSky
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 20/07/08Posts: 68

ok mais eu ja vi isto mais não entendi direito onde tem que por ? "Pecimo ingles" por favor aguardo respostas

Atenciosamente,
NightWizard

Dranullord

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 28/05/08Posts: 6Char no Tibia: Helldranull

@NightWizzard

tb me embolei com esse esquema dos actionids 1001 e 1002 mas to de olho aki pra ve se o Colex responde sobre isso ^^, apesar de saber ler bem em ingles eu nao entendi o proposito desses actions, sei que um serve pra um lado e o outro pro outro(como diz no README) mas to me embolando afu com isso mas to tentando arrumar

 

@Tópico

Colex, tu eh foda mano!

tu faz uns scripts mto lokos, continua assim q tu pode revolucionar a história(puxa saco plz!)

vlw e flw

Ajude Jack, o coelho!




Cyanide & Happiness






Sou: