• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

HELP with script update

pizza88

New Member
Joined
Jan 11, 2009
Messages
51
Reaction score
0
Location
Germany
hi, i found this script an would that is going on my tfs 0.34 pl2
but when i start the server it comes the mesage couldent not load actions.xml can someone help me, the script is here:
This rollercoaster system is made by Collex.

Readme:
Quote:
Originally Posted by README.txt
Script Developed by Colex

[actions.xml]
<action fromid="7131" toid="7132" script="RollerCoaster.lua"/>
[/actions.xml]

[ActionIDs no Trem]
1001 e 1002 -> Train's Actionid, 1001 starts to one side and 1002 starts to the other

[Train Tracks' ActionIDs]
1001 -> Brakes (Decreases the speed)
1002 -> Impeller (Increases the speed)

[Additional Functions That You Can Use in RollerCoasterEvents.lua]
getSpeed(cid)
setSpeed(cid, newSpeed)

[Extra Information]
The RollerCoaster script was developed in a OTServer 8.1
but it's easy to update the IDs to any version just by editing 2 variables:

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


"local TRAINS" saves the 2 train's id, I think there's no problem on updating that...
"local all" saves the tracks' id, you just have to update it matching those ids with the ids of the version you are using.
Actions.xml
Quote:
Originally Posted by Actions.xml
<action fromid="7131" toid="7132" script="RollerCoaster.lua"/>
RollerCoaster.lua
Code:

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:eek:nMove(cid, rail, r, pos) == FALSE) then table.remove(INFOS, cid) return 1 end
if (r.stop ~= nil) then
if (r.stop == 1) then
RollerCoaster:eek:nExitQuery(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:eek:nChangeSpeed(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:eek:nChangeLevel(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:eek:nExitQuery(cid)
addEvent(exitTrain, 2000, cid)
end
end

function exitTrain(cid)
table.remove(INFOS, cid)
RollerCoaster:eek:nExit(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:eek:nEnter(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:eek:nEnterQuery(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

RollerCoasterEvents.lua
Code:

RollerCoaster = {}

function RollerCoaster:eek:nChangeLevel(cid, fromZ, toZ)
return TRUE
end

function RollerCoaster:eek:nMove(cid, rail, railInfo, pos)
return TRUE
end

function RollerCoaster:eek:nChangeSpeed(cid, power)
if (power == 2) then
doSendAnimatedText(getCreaturePosition(cid),"TROC TROC",210)
else
doSendAnimatedText(getCreaturePosition(cid),"TSSSIIIIII",210)
end
return TRUE
end

function RollerCoaster:eek:nTypeChange(cid, fromType, toType)
return TRUE
end

function RollerCoaster:eek:nExitQuery(cid)
return TRUE
end

function RollerCoaster:eek:nExit(cid)
return TRUE
end

function RollerCoaster:eek:nEnterQuery(cid, cart)
return TRUE
end

function RollerCoaster:eek:nEnter(cid, cartID)
return TRUE
end
 
Back
Top