Ir para conteúdo

Roller Coaster System


colex

Posts Recomendados

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

Editado por Colex
Link para o comentário
Compartilhar em outros sites

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)

Link para o comentário
Compartilhar em outros sites

@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

Link para o comentário
Compartilhar em outros sites

@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)

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

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.

Link para o comentário
Compartilhar em outros sites

@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

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...