Dodajemy do global.lua:
function isWall(id) local walls = {1025, 1032, 1028, 1030, 1035, 1027, 1219, 4645, 4647, 4646, 4644} if isInArray(walls, id) == 1 then return 1 else return 0 end end
eraz wchodzimy w data/movements/scripts i robimy plik o nazwie car.lua a w nim:
local storages = { isMoving = 12550, direction = 12551, speed = 12552 } function CarMoveLeft(x) cpos = x.Cpos Car = getThingfromPos(cpos) newpos = {x=x.pos.x-1, y=x.pos.y, z=x.pos.z} doCreateItem(7267,1,newpos) doTeleportThing(x.cid, newpos) doRemoveItem(Car.uid,1) end function CarMoveRight(x) cpos = x.Cpos Car = getThingfromPos(cpos) newpos = {x=x.pos.x+1, y=x.pos.y, z=x.pos.z} doCreateItem(7267,1,newpos) doTeleportThing(x.cid, newpos) doRemoveItem(Car.uid,1) end function CarMoveUp(x) cpos = x.Cpos Car = getThingfromPos(cpos) newpos = {x=x.pos.x, y=x.pos.y-1, z=x.pos.z} doCreateItem(7266,1,newpos) doTeleportThing(x.cid, newpos) doRemoveItem(Car.uid,1) end function CarMoveDown(x) cpos = x.Cpos Car = getThingfromPos(cpos) newpos = {x=x.pos.x, y=x.pos.y+1, z=x.pos.z} doCreateItem(7266,1,newpos) doTeleportThing(x.cid, newpos) doRemoveItem(Car.uid,1) end function onStepIn(cid, item, pos) if isPlayer(cid) == 1 then local status = { isMoving = getPlayerStorageValue(cid, storages.isMoving), direction = getPlayerStorageValue(cid, storages.direction), speed = getPlayerStorageValue(cid, storages.speed) } if status.speed <= 0 then setPlayerStorageValue(cid, storages.speed, 500) status.speed = 800 elseif status.speed >= 2500 then setPlayerStorageValue(cid, storages.speed, 500) status.speed = 800 end CarPos = getThingPos(item.uid) if status.isMoving == 1 then if status.direction == 1 then CheckLeft = getThingfromPos({x = pos.x-1, y = pos.y, z = pos.z, stackpos = 1}) if isWall(CheckLeft.itemid) == 1 or isCreature(CheckLeft.uid) == 1 then setPlayerStorageValue(cid, storages.direction, 2) x = {cid = cid, pos = pos, Cpos = CarPos} addEvent(CarMoveRight, status.speed, x) else x = {cid = cid, pos = pos, Cpos = CarPos} addEvent(CarMoveLeft, status.speed, x) end elseif status.direction == 2 then CheckRight = getThingfromPos({x = pos.x+1, y = pos.y, z = pos.z, stackpos = 1}) if isWall(CheckRight.itemid) == 1 or isCreature(CheckRight.uid) == 1 then setPlayerStorageValue(cid, storages.direction, 1) x = {cid = cid, pos = pos, Cpos = CarPos} addEvent(CarMoveLeft, status.speed, x) else x = {cid = cid, pos = pos, Cpos = CarPos} addEvent(CarMoveRight, status.speed, x) end elseif status.direction == 3 then CheckUp = getThingfromPos({x = pos.x, y = pos.y-1, z = pos.z, stackpos = 1}) if isWall(CheckUp.itemid) == 1 or isCreature(CheckUp.uid) == 1 then setPlayerStorageValue(cid, storages.direction, 4) x = {cid = cid, pos = pos, Cpos = CarPos} addEvent(CarMoveDown, status.speed, x) else x = {cid = cid, pos = pos, Cpos = CarPos} addEvent(CarMoveUp, status.speed, x) end elseif status.direction == 4 then CheckDown = getThingfromPos({x = pos.x, y = pos.y+1, z = pos.z, stackpos = 1}) if isWall(CheckDown.itemid) == 1 or isCreature(CheckDown.uid) == 1 then setPlayerStorageValue(cid, storages.direction, 3) x = {cid = cid, pos = pos, Cpos = CarPos} addEvent(CarMoveUp, status.speed, x) else x = {cid = cid, pos = pos, Cpos = CarPos} addEvent(CarMoveDown, status.speed, x) end end elseif status.isMoving == -1 then setPlayerStorageValue(cid, storages.isMoving, 1) end end end
Teraz do movements.xml dodajemy:
<movevent event="StepIn" itemid="7267" script="car.lua" /> <movevent event="StepIn" itemid="7266" script="car.lua" />
eraz wchodzimy w data/talkactions/scripts i robimy plik o nazwie car.lua a w nim:
local storages = { isMoving = 12550, direction = 12551, speed = 12552 } function onSay(cid, words, param) local status = { isMoving = getPlayerStorageValue(cid, storages.isMoving), direction = getPlayerStorageValue(cid, storages.direction), speed = getPlayerStorageValue(cid, storages.speed) } local controls = { ["up"] = {storage = storages.direction, new = 3, txt = "up"}, ["down"] = {storage = storages.direction, new = 4, txt = "down"}, ["left"] = {storage = storages.direction, new = 1, txt = "left"}, ["right"] = {storage = storages.direction, new = 2, txt = "right"}, ["speedup"] = {storage = storages.speed, new = status.speed-50, txt = "fast"}, ["speeddown"] = {storage = storages.speed, new = status.speed+50, txt = "slow"}, ["stop"] = {storage = storages.direction, new = -1, txt = "stop"} } if status.isMoving == 1 then ctrl = controls[param] if (ctrl ~= nil) then setPlayerStorageValue(cid, ctrl.storage, ctrl.new) doPlayerSay(cid, ctrl.txt, TALKTYPE_SAY) else doSendMagicEffect(getPlayerPosition(cid), 2) doPlayerSendCancel(cid, "Invalid operation.") end else doPlayerSendCancel(cid, "You are not in a car.") end end
Do talkactions.xml dodajemy:
<talkaction words="car" script="car.lua" />
|