#1 2009-12-09 00:28:27

Ston Virie

http://tibia.net.pl/avatars/m-rtin.gif?dateline=1259092187

5912045
Call me!
Zarejestrowany: 2009-11-26
Posty: 91
Punktów :   

Kolejka

Nazwa: RollerCoaster
Co robi?: Powoduje poruszanie się wagonika po torach.
Skrypt:
W data\actions\scripts tworzymy plik RollerCoaster.lua i wklejamy do niego:

Kod:

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

Potem tworzymy obok plik RollerCoasterEvents.lua i wklejamy do niego:

Kod:

RollerCoaster = {}

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

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

function RollerCoaster:onChangeSpeed(cid, power)
  if (power == 2) then
    doSendAnimatedText(getCreaturePosition(cid),"TROC TROC!!!",210)
  else
    doSendAnimatedText(getCreaturePosition(cid),"Que vontade de vomitar!",210)
  end
  return TRUE
end

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

function RollerCoaster:onExitQuery(cid)
  return TRUE
end

function RollerCoaster:onExit(cid)
  return TRUE
end

function RollerCoaster:onEnterQuery(cid, cart)
  return TRUE
end

function RollerCoaster:onEnter(cid, cartID)
  return TRUE
end

Do actions.lua wklejamy

Kod:

<action fromid="7131" toid="7132" script="RollerCoaster.lua"/>

.
Aby skorzystać z niego tworzymy tory oraz kolejkę tak jak na screenie, oraz nadać dla kolejki Action ID w przypadku rozpoczęcia jazdy od jazdy w prawo 1001, a w lewo 1002. W grze klikamy na nią USE i kolejka sama rusza .
http://img69.yfrog.com/img69/2508/screenshot200912901932.png


Boys Boys powiedział:
"LOL KURWA SCIAGNIJCIE MI TEGO URBANA KURWA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
Ty też kiedyś dostałeś urbana?

Kliknij zrobisz tym w końcu coś pożytecznego.
Nie wiesz czegoś? Poszukaj w Google. Jeżeli nie wiesz jak korzystać z google.pl: tutek .
Masz jakiś problem? Pisz na GG lub dzwoń na skype.

http://debian.linux.pl/images/signatures/204249467649f4ca0637d4e.gif
http://img19.imageshack.us/img19/8587/userbar774091.gif
http://img185.imageshack.us/img185/1692/podpiswx9.gif
http://img.userbars.pl/111/22193.png
http://img.userbars.pl/51/10009.gif
http://img.userbars.pl/36/7032.gif

http://img19.imageshack.us/img19/7396/mur.gif <-nie myślcie że to ja

1.Przeczytaj zdanie poniżej
2.Przeczytaj zdanie powyżej

--..  .-  .--.  .-.  .-  ...  --..  .-  --  // -.  .-  // ..-.  ---  .-.  ..-  --  // .-..  ..  -.  ..-  -..-  .-.-.-  .--.  ..-  -.  .-.-.-  .--.  .-..


Pomogłem? Daj +.

01010011 01110100 01101111 01101110 00100000 01010110 01101001 01110010 01101001 01100101 00100000 01110000 01101111 01111010 01100100 01110010 01100001 01110111 01101001 01100001 00100000 01100011 01101001 01100101 01100010 01101001 01100101


http://img517.imageshack.us/img517/8739/cooltext437089145.gif

Offline

 

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora
www.mosina.pun.pl www.kolekcjonerzy.pun.pl www.wayofshinobi.pun.pl www.cheatyanglive.pun.pl www.wodhavoc.pun.pl