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]Działanie wait() przez 5 min.


Rekomendowane odpowiedzi

Opublikowano

Mma taki quest:

quest name begin
state start begin
 when login begin
  if game.get_event_flag("info_player") == pc.get_player_id() then
   setskin(NOWINDOW)
   timer("yang_f", 5*60)
   say("")
   say("")
   say("    xxx")
   say("    xxx")
   wait()
  end
 end
 when yang_f.timer begin
  set_state(nast)
 end
end
end

 

I nast state jest "nast", dokładnie taki sam jak podany wyżej kod.

Mój problem tkwi w tym, że kod:

    setskin(NOWINDOW)

   say("")
   say("")
   say("    xxx")
   say("    xxx")

Powoduje, że literki się nadpisują, jest jakaś funkcja która by zastąpiła wait(), by napisy zostały tylko na 5 min.?

Opublikowano

Mma taki quest:

quest name begin
state start begin
 when login begin
  if game.get_event_flag("info_player") == pc.get_player_id() then
setskin(NOWINDOW)
timer("yang_f", 5*60)
say("")
say("")
say("	xxx")
say("	xxx")
wait()
  end
 end
 when yang_f.timer begin
  set_state(nast)
 end
end
end

 

I nast state jest "nast", dokładnie taki sam jak podany wyżej kod.

Mój problem tkwi w tym, że kod:

	setskin(NOWINDOW)

say("")
say("")
say("	xxx")
say("	xxx")

Powoduje, że literki się nadpisują, jest jakaś funkcja która by zastąpiła wait(), by napisy zostały tylko na 5 min.?

 

Chcesz zrobić coś w stylu wyświetlania z boku ekranu jakichs danych ? Można napisać sobie napisać funkcję która wywołuje samą siebie, ale to niechybnie ujebie serwer.

Opublikowano

Tak, a nie da się jakoś zrobić coś takiego:

quest name begin
state start begin
 when login begin
  if game.get_event_flag("info_player") == pc.get_player_id() then
	setskin(NOWINDOW)
	timer("yang_f", 5*60)
	say("")
	say("")
	say("   xxx")
	say("   xxx")
	wait()
  end
 end
 when yang_f.timer begin
  set_state(nast)
 end
end
state nast begin
 when letter begin
  if game.get_event_flag("info_player") == pc.get_player_id() then
	setskin(NOWINDOW)
	timer("yang_f", 5*60)
	say("")
	say("")
	say("   xxx")
	say("   xxx")
	wait()
  end
 end
 when yang_f.timer begin
  set_state(naste)
 end
end
end
state naste begin
 when letter begin
  if game.get_event_flag("info_player") == pc.get_player_id() then
	setskin(NOWINDOW)
	timer("yang_f", 5*60)
	say("")
	say("")
	say("   xxx")
	say("   xxx")
	wait()
  end
 end
 when yang_f.timer begin
  set_state(nast)
 end
end
end
end

 

I teraz jeśli timer wynosiłby 0 wyczyścił by on stary tekst, da się taką funkcję napisać?

Opublikowano

Tak, a nie da się jakoś zrobić coś takiego:

quest name begin
state start begin
 when login begin
  if game.get_event_flag("info_player") == pc.get_player_id() then
	setskin(NOWINDOW)
	timer("yang_f", 5*60)
	say("")
	say("")
	say("   xxx")
	say("   xxx")
	wait()
  end
 end
 when yang_f.timer begin
  set_state(nast)
 end
end
state nast begin
 when letter begin
  if game.get_event_flag("info_player") == pc.get_player_id() then
	setskin(NOWINDOW)
	timer("yang_f", 5*60)
	say("")
	say("")
	say("   xxx")
	say("   xxx")
	wait()
  end
 end
 when yang_f.timer begin
  set_state(naste)
 end
end
end
state naste begin
 when letter begin
  if game.get_event_flag("info_player") == pc.get_player_id() then
	setskin(NOWINDOW)
	timer("yang_f", 5*60)
	say("")
	say("")
	say("   xxx")
	say("   xxx")
	wait()
  end
 end
 when yang_f.timer begin
  set_state(nast)
 end
end
end
end

 

I teraz jeśli timer wynosiłby 0 wyczyścił by on stary tekst, da się taką funkcję napisać?

 

Jakoś nie jestem przekonany co do działania timerów, zwłaszcza na większą skalę, też prawdopodobnie ubiją serwer.

 

Przy okazji zobaczyłem taką funkcję :

local clock = os.clock
function sleep(n) -- seconds
local t0 = clock()
while clock() - t0 <= n do end
end

 

Nie wiem na ile dobra jest ta metoda, możesz jej użyc w stylu:

local clock = os.clock
function sleep(n) -- seconds
local t0 = clock()
while clock() - t0 <= n do end
end
function powtorka()
say(x)
sleep(60)
powtorka()
end

 

Nic nie obiecuje, ale wydaje się sensowne(Nie wiadomo czy pętla nie będzie się wykonywała tak szybko że poprosi o całą dostępną moc obliczeniową).

Opublikowano

E nie, to odpada przecież na pierwszy rzut oka widać, że to nie będzie działało jak należy, po pierwsze Napis będzie mrugał (jak by na nowo się pojawiał, a po drugie chce tylko odświeżyć co 5 min. to troszkę odciąży serwer :)

Opublikowano

say("[DELAY value=400]. . .[/DELAY]")

 

400 - to sa 4 sekundy

Taki say spowoduje wolniejsze wyświetlenie tekstu ale nie zatrzyma wykonywania się whena/czegokolwiek.

E nie, to odpada przecież na pierwszy rzut oka widać, że to nie będzie działało jak należy, po pierwsze Napis będzie mrugał (jak by na nowo się pojawiał, a po drugie chce tylko odświeżyć co 5 min. to troszkę odciąży serwer :)

 

Są lepsze sposoby na wyświetlanie takich danych, taki przykład zarzuciłem, żebyś miał to jak wykorzystać z setskinem nowindow i tak dalej.

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...