Reklama
Pokazuje wyniki od 1 do 2 z 2

Temat: [8.5] RollerCoaster - jak zbudować by w końcu działało.?

  1. #1
    Avatar Naruto-XNE
    Data rejestracji
    2008
    Położenie
    Względne
    Posty
    62
    Siła reputacji
    18

    Domyślny [8.5] RollerCoaster - jak zbudować by w końcu działało.?

    Znalazłem skrypty na innych forach i się zastanawiam co robię, źle że to nie działa? Prosiłbym o poszczególne wyjaśnienie.

    A) RollerCoasterEvent
    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),"TSSSIIIIII",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
    B) RollerCoaster - plik główny

    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
    Jeszcze dodali dwa poboczne jakimi są

    c) Rollerfix

    Kod :
    function onUse(cid, item, fromPosition, itemEx, toPosition)
    
    
    if itemid == 7132 then
    			setPlayerStorageValue(cid,12345,1)
    
    end
    end
    d) Rollerlever

    Kod :
    function onUse(cid, item, fromPosition, itemEx, toPosition)
    	if item.uid == 12346 and item.itemid == 1945 then
    			setPlayerStorageValue(cid,12345,2)
    			doTransformItem(item.uid, 1946)
        			doCreatureSay(cid, "You can now use the Roller-Coaster", TALKTYPE_ORANGE_1)
    	else
    		doTransformItem(item.uid, 1945)
    	end
    end
    i linijki Action
    Kod :
    <action uniqueid="12346" script="quests/roller lever.lua"/>
    <action fromid="7131" toid="7132" script="quests/RollerCoaster.lua"/>
    WYJAŚNIĆ JAK TO CHOLERSTWO ZBUDOWAĆ jak i w RME.
    To nie obywatele powini się bać rządu, tylko rząd powinien bać się obywateli.

    Cytuj przemko93 napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    hXXp dlaczego twój linka ma XX w tym wyrazie ??podejrzane

  2. #2
    Avatar Naruto-XNE
    Data rejestracji
    2008
    Położenie
    Względne
    Posty
    62
    Siła reputacji
    18

    Domyślny

    Rozumie to ktoś i jest wstanie pomóc?
    To nie obywatele powini się bać rządu, tylko rząd powinien bać się obywateli.

    Cytuj przemko93 napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    hXXp dlaczego twój linka ma XX w tym wyrazie ??podejrzane

Reklama

Informacje o temacie

Użytkownicy przeglądający temat

Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)

Podobne tematy

  1. jak to w koncu jest
    Przez Maskot w dziale O serwisie
    Odpowiedzi: 19
    Ostatni post: 19-09-2020, 10:04
  2. Powiedzcie w końcu jak to jest z bankami oraz bankomatami
    Przez grosicki12 w dziale Prawo i finanse
    Odpowiedzi: 3
    Ostatni post: 20-09-2014, 15:28
  3. [kompilacja c++] Błąd na końcu
    Przez Wujo w dziale Strefa developerska
    Odpowiedzi: 7
    Ostatni post: 17-04-2011, 17:54
  4. jak to w koncu jest ze spellbookami
    Przez Absynt w dziale Tibia
    Odpowiedzi: 7
    Ostatni post: 26-04-2010, 18:56
  5. Odpowiedzi: 13
    Ostatni post: 16-10-2009, 20:19

Zakładki

Zakładki

Zasady postowania

  • Nie możesz pisać nowych tematów
  • Nie możesz pisać postów
  • Nie możesz używać załączników
  • Nie możesz edytować swoich postów
  •