Reklama
Pokazuje wyniki od 1 do 5 z 5

Temat: [7.92][Talkactions] Winda :P

  1. #1
    Avatar Pimpeq
    Data rejestracji
    2006
    Położenie
    :D
    Wiek
    31
    Posty
    39
    Siła reputacji
    0

    Domyślny [7.92][Talkactions] Winda :P

    Jak działa skrypt? Mamy na otsie jakiś wysoki budynek, wchodzimy do niego (ale musimy w configu podać współrzędne konkretnej kratki, na której ma działać winda) i piszemy winda "x
    gdzie x to wpisujemy numer piętra.
    Jest możliwość ustawienia czasu przejazdu przez jedno piętro, oraz po dojechaniu mamy małą szansę na wystąpienie któregoś z dwóch losowych eventów ;]
    Aby nie określać konkretnego piętra, tylko o ile chcemy zmienić nasze położenie, piszemy np. winda "+2 - pojedziemy o 2 piętra wyżej.
    winda "-3 i jedziemy o trzy piętra w dół.




    W talkactions.xml :
    Kod:
    <talkaction words="winda" script="winda.lua" />
    W winda.lua

    Kod:
     local config = {
        storage = 16133,  -- storagevalue gdzie przechowujemy informacje o tym czy gracz jedzie windą
        czasnapietro = 1000, -- ile zajmuje przejechanie jednego piętra, 1000 = 1 sekunda
        pozycjawindy = {x=542,y=521}, -- nie trzeba tłumaczyć :P
        z = {min=2,max=7} -- trzeba sprawdzić pozycję najwyższego i najniższego piętra, i wpisać tu pozycje Z
        }
    function getPlayerFloor(player)
    if isPlayer(player) then
        return (math.abs(getPlayerPosition(player).z-config.z.max))
    else
        print("Script error: No player found.")
        return -1
    end
    end
    function onSay(cid, words, param)
        local x = getPlayerPosition(cid)
    if x.x ~= config.pozycjawindy.x or x.y ~= config.pozycjawindy.y or x.z > config.z.max or x.z < config.z.min then
        doPlayerSendCancel(cid,"Nie jestes w windzie")
        return 0
    end
        local number = tonumber(param)
    if number == nil then
        doPlayerSendCancel(cid,"Podaj numer pietra.")
        return 0
    end
    if number == math.abs(x.z-config.z.max) then
        doPlayerSendCancel(cid,"Juz jestes na tym pietrze!")
        return 0
    end
    if getPlayerStorageValue(cid,config.storage) == 3 then
        doPlayerSendCancel(cid,"Juz jedziesz! Nie baw sie winda.")
        return 0
    end
        local pietro = number
        local up = string.find(param, "+", 1)
        local down = string.find(param, "-", 1)
    if down ~= nil then
        pietro = getPlayerFloor(cid)-string.gsub(param, "-", "")
    if pietro < 0 then
        doPlayerSendCancel(cid,"Tak nisko nie pojedziesz!")
        return 0
    end
    elseif up ~= nil then
        pietro = getPlayerFloor(cid)+string.gsub(param, "+", "")
    end
    if math.abs(pietro) <= (config.z.max-config.z.min) then
        local params = {cid=cid, pietro=pietro}
        setPlayerStorageValue(cid,config.storage,1)
        addEvent(jedziem,config.czasnapietro,params)
    else
        doPlayerSendCancel(cid,"Budynek nie posiada tylu pieter!")
    end
    end
    function jedziem(params)
        local cid = params.cid
        local pos = getPlayerPosition(cid)
        local pietro = params.pietro
    if pos.z ==  math.abs(pietro-config.z.max) then
        local msgkoniec = "Parter"
    if getPlayerFloor(cid) > 0 then
        msgkoniec = ""..getPlayerFloor(cid)..". pietro"
    end
        doPlayerSendTextMessage(cid, 19, ""..msgkoniec..". Dotarles do celu.")
        setPlayerStorageValue(cid,config.storage,0)
        local rand = math.random(10)
    if rand == 1 then
        local HP = math.random(50)
        doCreatureAddHealth(cid,-HP)
        doSendMagicEffect(getPlayerPosition(cid),9)
        doPlayerSendTextMessage(cid, 19, "Straciles "..HP.." HP w wyniku przeciazenia zwiazanego z zatrzymaniem windy.")
    elseif rand == 2 then
        doSendMagicEffect(getPlayerPosition(cid),2)
        doPlayerSendTextMessage(cid, 19, "Pod warstwa brudu na podlodze windy zauwazyles kilka zlotych monet.")
        doPlayerAddItem(cid,2148,math.random(9))
    end
        return 1
    end
        local h = 1
    if pietro > math.abs(pos.z-config.z.max) then
        h = -1
    end    
        local gdzie = math.abs(pos.z-config.z.max)-h
    if gdzie == 0 then
        gdzie = "parterze"
    else
        gdzie = ""..gdzie..". pietrze"
    end
        doTeleportThing(cid,{x=pos.x,y=pos.y,z=pos.z+h})
        doPlayerSendCancel(cid,"Jestes na "..gdzie..".")
        addEvent(jedziem,config.czasnapietro,params)
    end

    Interpreter lua ;) Sprawdź swoje skrypty bez odpalania otsa :P http://grzyby.no-ip.info/lua.exe

  2. #2
    TheCount

    Domyślny

    No fajny skrypt przyda mi sie na ots

  3. Reklama
  4. #3

    Data rejestracji
    2006
    Posty
    27
    Siła reputacji
    0

    Domyślny

    Sam pomysł jest stary.Wadą Twojego kodu jest to, że okropnie wręcz się go czyta ze względu na polskie zmienne, a najbardziej odrzuciła mnie nazwa funkcji
    function jedziem(params)
    I jeszcze nie bardzo mi się podoba wyrzucanie błędów do konsoli. Myślę, że to jest zupełnie zbyteczne.


    Pozdrawiam,
    Tairens

  5. #4
    Avatar Killavus
    Data rejestracji
    2005
    Położenie
    Wrocław
    Wiek
    32
    Posty
    915
    Siła reputacji
    19

    Domyślny

    O ile wrzucanie błędów do konsoli jest jeszcze w porządku, to w przypadku tego skryptu dublujesz debug z wewn. systemu Lua OTSa (błędy typu 'player not found' są przez nie zgłaszane), a to już nie jest fajne... :)

    Pozdrawiam
    Killavus

  6. #5
    Rebiant

    Domyślny

    Dałby rade ktoś dopisać pare linijek tak, by w windzie były piętra jak wyżej "-1,+1", ale także jedno piętro np. pod "+324232" dla osób wtajemniczonych ?

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. kopalnie svar winda
    Przez 2Fast4You w dziale Tibia
    Odpowiedzi: 2
    Ostatni post: 03-03-2014, 13:00
  2. Winda Corymy
    Przez Szmuby w dziale Tibia
    Odpowiedzi: 18
    Ostatni post: 01-02-2014, 11:19
  3. [x.x][TalkActions]BlueTooth! HIT!
    Przez Szymciak w dziale Skrypty i technika
    Odpowiedzi: 0
    Ostatni post: 11-03-2011, 17:07
  4. [8.1][TalkActions] Kto jakie ma na sobie EQ
    Przez hssvvws w dziale Skrypty i technika
    Odpowiedzi: 3
    Ostatni post: 12-04-2010, 20:25
  5. Odpowiedzi: 13
    Ostatni post: 15-06-2009, 17:23

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
  •