Postów:
248
Dołączył:
2009-06-27
Napisano dnia: 2009-10-10 14:19:07
Cytat:
wait 3000 - odczekujemy 3000 milisekund (ms), czyli 3 sekundy. Przy pętli jest to NIEZBĘDNE, jeśli nie odczekamy jakiegoś czasu to gra zawiesi się w momencie startu wykonywania pętli.
Chyba to wszyscy czytali kiedyś. Nieprawda że jest to niezbędne, bo w main.scm niektóre pętle nie posiadają komendy wait x po nazwie pętli. Od czego to zależy?
___________________
Postów:
159
Dołączył:
2009-02-05
Napisano dnia: 2009-10-10 14:26:01
Chyba nikt tego nie wiem po prostu jak nie chcesz czekać to daj wait 0 xD
___________________
Postów:
248
Dołączył:
2009-06-27
Napisano dnia: 2009-10-10 14:33:22
No niby masz racje ale czasem jak testuje swoje misje ktore wygladaja mniej wiecej tak:
Kod:
{$CLEO .cs}
0000: NOP
thread 'twojastara1'
:petla
wait 0
jump @petla1300
...
????: end_custom_thread
to mam crashe gry w CHOLERNIE LOSOWYCH miejscach, a kompilator SB nie pokazuje żadnych błędów. Najlepszym kompilatorem jest życie :-)
___________________
Postów:
159
Dołączył:
2009-02-05
Napisano dnia: 2009-10-10 15:00:53
ale to co tu pokazałeś to nie pętla i tu właśnie nie musisz dawać wait pętla to np.
Kod:
:No
wait 10
if
Player.Defined($PLAYER_CHAR)
jf @No
___________________
Postów:
248
Dołączył:
2009-06-27
Napisano dnia: 2009-10-10 17:19:55
czyli wait daje wtedy gdy sie cos powtarza?
---
czyli temat mozna chyba zamknac. dzieki za pomoc
___________________
Postów:
159
Dołączył:
2009-02-05
Napisano dnia: 2009-10-10 17:54:52
Tak. Przynajmniej tak myślę xD
___________________
Postów:
878
Dołączył:
2009-01-20
Napisano dnia: 2009-10-10 18:13:51
Pętle stosuje się wtedy, gdy chcesz wykonywać coś z określoną częstotliwością. Przy tworzeniu modów do GTA, warunek 'if' często trzeba zapętlać, bo sytuacja w grze zmienia się cały czas. Przykładowo, jeśli chcesz sprawdzić, czy gracz wszedł do samochodu, to musisz to sprawdzać cały czas, gdyż gracz może wejść do pojazdu po 5, 5.5 sekundach lub nawet po godzinie. A więc, jeśli chcesz to zdarzenie odpowiednio obsłużyć, musisz wykonywać sprawdzenie tego warunku cały czas. Do tego służą pętle.
A co do samego wait:
Jeśli wykonywałbyś daną czynność non-stop, bez jakiejkolwiek przerwy, to program po prostu się zawiesi, bo nie nadąży wykonywać tyle zadań naraz. Dlatego w przypadku zapętlania warunku 'if', bądź jakiejkolwiek innej funkcji musisz zastosować wait na początku lub na końcu pętli.
Inaczej sytuacja wygląda, jeśli stosujesz warunek 'if' jednorazowo (tj. nie zapętlasz go). Wtedy nie musisz poprzedzać instrukcji funkcją wait.
Ahh, rozpisałem się :) Jeśli coś, co napisałem jest nie jasne, to pytaj.
___________________
Administrator
Postów:
248
Dołączył:
2009-06-27
Napisano dnia: 2009-10-10 18:15:54
Rozpisałeś się, ale już wszystko rozumiem, dzięki. TERAZ można zamknąć temat :-)
___________________