Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Pytanie dla experta


Rekomendowane odpowiedzi

Opublikowano

Eloszka forumowicze! :D

 

Otóż męczę się i męczę i nie mogę za cholere wymyślić.

 

 

Czy da się obejść jakoś timery połączone z zatrzymaniem serwera ?

 

Mam questa:

 

 

quest indeksy begin
    state start begin
        when 9001.click with pc.getqf("test") == 0 begin
            if select("Włącz", "Wyłącz") == 2 then
                return
            else
                pc.setqf("test", 1)
                syschat(" Ustawiłem flaga")
                pc.setqf("czas", get_time()+60*1)
                timer("czas", 60)
                local v = math.floor(pc.getqf("czas"))
                syschat(" Timer działa - "..v.." s ")
            end
        end
        when login with pc.getqf("test") == 1 begin
            pc.setqf("czas", get_time()+pozostaly)
            local z = math.floor(pc.getqf("czas"))
            timer("nowy", pozostaly)
            syschat(" Ustawiłem nowy timer,"..z.." s ")
        end
        when logout with pc.getqf("test") == 1 begin
        pozostaly = pc.getqf("czas") - get_time()
        pc.setqf("czas", pozostaly) -- zapisuje qfa  z pozostałym czasem
        end
        when czas.timer begin
            pc.setqf("test", 0)
            syschat(" Ustawiłem test na 0 ")
        end
        when nowy.timer begin
            pc.setqf("test", 0)
            syschat(" Timer po zalogowaniu: Ustawilem test na 0 ")
        end
    end
end

 

 

 

I co z tego że zapisze mi on pozostały czas przy wylogowaniu, uruchomi nowy timer z pozostałym czasem po ponownym zalogowaniu..

Skoro gdy zatrzymie serwer /stop to timer się buguje lub  w ogóle nie startuje, (w tym quescie akurat nie startuje, w innym pokazuje -23423423 minut i od razu go wykonuje po zalogowaniu)

 

Łapiecie o co chodzi ?

 

Gdy sie wyloguje, zaloguje i wyloguje i zatrzymam serwer to timer po zalogowaniu nie startuje mimo warunków w których ma startować "

 

Testowałem qfy i wszystko było w porządku, zapamietywał je, a timerów jakby nie chciał -.- Po prostu je zapomina.

 

Ktoś wie może czy da się to obejść ? A może to niewykonalne ?

Help.

Opublikowano

A co to ma robić, bo nie kumam... Odmierzyć 60 sekund i wyłączyć serwer? Masz komendę /shutdown. Ustawiasz w niej czas wyłączenia z 10s na 60s.

Jeżeli nie o to chodzi, to ustawiasz serwer_timer na 60s i po sprawie. Nie potrzebne quest flagi, etc.. etc..

50596142255057180250.png

Opublikowano

@Nigahiga

 

Tu nie o to chodzi.

 

Ustawiam timer na 60 sekund, po tych 60 sekundach cos ma sie wykonac.
Jeśli sie wyloguje to ustawia timer z pozostałym czasem.
I teraz jeśli spowrotem sie zaloguje ten timer startuje z tym pozostałym czasem, po czym wykonuje to co miał wykonać wczesniej :)

 

I przyjmijmy teraz że uruchomiłem ten timer, wylogowałem się i zalogowałem. Po czym znów się wylogowałem i zatrzymalem serwer. ( w konsoli poprzez /stop )

Czas powinien zostać zapisany, natomiast po uruchomieniu serwera timer w ogóle się nie uruchamia.

 

Teraz łapiesz o co chodzi ? Chodzi mi o to żeby timer się uruchamiał nawet po zatrzymaniu serwerka, a niestety jest jak wyżej napisałem.

Opublikowano

@Nigahiga

 

loop_timer działa tak samo jak timer.

Wyłączy się przy zatrzymaniu serwera i już nie odpali, tak samo jak zwykły timer.

A serwerowy nie może być gdyż to ma działać osobno dla każdego gracza. Ot co.

 

Może rozpisze w punktach to bo nie kumasz.

 

 

1. Loguje sie do gry pierwszy raz, ide do NPC ustawiam flaga na 1, ustawia timer 60 sec po czym ten timer ustawia flaga na 0

2. Wylogowuje sie, gdy flag nadal jest 1, timer zapisuje qfa z pozostałym czasem.

3. Loguje sie i  nowy timer startuje z pozostałym czasem, po czym ustawia flaga na 0

 

I w takim wypadku wszystko działa perfekcyjnie.

Gdy jednak będę przeprowadzał konserwacje serwera to wiadomo że będe musiał go zatrzymać.

I co będzie wtedy gdy ktoś ma flag ustawiony na 1  i zatrzymie serwer?

Otóz to że po odpaleniu serwera ten nowy timer z pozostałym czasem,  juz nie ruszy lub sie zbuguje, tak jakby nie pamiętał tego qfa co zapisałem przed zatrzymaniem serwera.

 

Prościej już się tego nie da wyjaśnić.

Opublikowano

when login with pc.getqf("test") == 1 begin
            pc.setqf("czas", get_time()+pozostaly)
            local z = math.floor(pc.getqf("czas"))
            timer("nowy", pozostaly)
            syschat(" Ustawiłem nowy timer,"..z.." s ")
        end

Powiedz mi skąd bierze zmienną "pozostaly"? Najpierw to popraw i powiedz jak działa. :)

50596142255057180250.png

Opublikowano

Zapisuje ją przy wylogowaniu -.- ?

when logout with pc.getqf("test") == 1 begin
        pozostaly = pc.getqf("czas") - get_time()

Dodatkowo warunek działa tylko wtedy gdy flag "test" jest równy 1, a jest równy 1 tylko wtedy gdy go ustawie u npc :)

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...