Czy wiesz, że... rejestracja trwa tylko 20 sekund?
Strona główna forum Szukaj Rejestracja
Witaj, nieznajomy!
Poprzedni 1 Następny
Postów: 28 Dołączył: 2009-01-21
#
Nie będę zakładał nowego tematu, więc zapytam tutaj.

Czy jest jakaś możliwość, żeby np. w środku misji zrobić pętlę, która będzie sama sprawdzać (w tle) jakiś warunek, np. czy gracz jest ścigany przez policję?
Wiem, że można zrobić to poprzez gosub do pętli, która to sprawdzi, ale pytam tak z ciekawości.

___________________
http://img834.imageshack.us/img834/861/yrmwsig
Postów: 878 Dołączył: 2009-01-20
#
Nowy problem - nowy temat.

Tak, jest to bardzo proste do zaimplementowania, jeśli używasz konstrukcji wysokiego poziomu używając pętli while i warunków if. Tutorial na ten temat jest już w robocie.

___________________
Administrator
Postów: 28 Dołączył: 2009-01-21
#
Czy mógłbyś podać przykłąd takiej pętli (jeśli nie jest to bardzo skomplikowane)? I czy trzeba wcześniej podać jakiś warunek np. $ONMISSION == 1 tak, żeby pętla wykonywała sprawdzenie w tle?

___________________
http://img834.imageshack.us/img834/861/yrmwsig
Postów: 878 Dołączył: 2009-01-20
#
Nie jest to w stylu wywołania funkcji, czy coś takiego. To jest cały sposób pisania misji. Zamiast tworzyć wiele pętel złożonych z jumpów, można zrobić jedną i w niej wiele sprawdzeń:

Kod:
while true
  
wait 0
  if
    
00EC:   actor $PLAYER_ACTOR 0 near_point 1812.369 -1929.922 radius 80.0 80.0 
  then
    
// zrób coś, jeśli gracz jest blisko danego punktu

  else
    
// zrób coś, jeśli nie jest.

  end

  
if
    010F:   player $PLAYER_CHAR wanted_level > 0
  then
    
// zrób coś, jeśli gracz jest ścigany przez policję

  end

  
if
    0118:   actor 0@ dead 
  then
    
break
  end
end


Można dać dowolną ilość sprawdzeń, które de facto będą wykonywane jednocześnie.

Jeśli aktor 0@ zginie, to następuje wyjście z pętli instrukcją break, której można też użyć w dowolnym innym miejscu w środku pętli while.

___________________
Administrator
Postów: 28 Dołączył: 2009-01-21
#
Czyli jeśli dobrze rozumiem, to break powoduje zakończenie sprawdzania warunków w tej pętli? Wystarczy, że zrobię jedną taką pętlę i ona będzie cały czas sprawdzać warunki, mimo że w dalszym kodzie mam wiele innych normalnych pętlli?

___________________
http://img834.imageshack.us/img834/861/yrmwsig
Postów: 628 Dołączył: 2009-01-22
#
Nie. Pętla while jest po prostu konstrukcją wysokiego poziomu, która przy kompilacji zostaje zamieniona na normalne opcody. Nie rozdwoisz działania jednego wątku, musisz sprawdzać wszystko po kolei.

A 'break' powoduje skompilowanie w tym miejscu jumpa tuż pod pętlę while. O tym niedługo więcej w poradniku, który się tworzy.

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 28 Dołączył: 2009-01-21
#
Ok, już wszystko rozumiem. Dzięki za wyjaśnienie.

___________________
http://img834.imageshack.us/img834/861/yrmwsig
Poprzedni 1 Następny
Zaloguj się lub zarejestruj się, żeby pisać na forum.
Created & Powered by MakG