Postów:
536
Dołączył:
2011-04-12
Napisano dnia: 2011-11-16 21:21:52
Czytałem poradnik o Pętlach wysokiego poziomu,ale ich nie kapuje. Mógłby mi ktoś wyjaśnić jak przerwać pętle. Pętla sprawdza czy jedziemy więcej niż podana prędkość i jak dojedziemy do punktu to przerywa sprawdzanie. Myślałem coś,zeby zrobić warunek , ale nie umiem:(
___________________
Postów:
878
Dołączył:
2009-01-20
Napisano dnia: 2011-11-16 21:29:52
Na pewno czytałeś?
Cytat:
Co jednak mamy zrobić w wypadku, gdy chcemy wyjść z któreś z tych pętli? Sanny Builder obsługuje jeszcze dwa kody - continue oraz break. Ten pierwszy przeskakuje na sam koniec pętli:
(...)
break za to po prostu wyskakuje z pętli
___________________
Administrator
Postów:
536
Dołączył:
2011-04-12
Napisano dnia: 2011-11-16 21:34:11
Coś takiego? Ale to nie działa.
Kod:
while true
wait 0
if
wait 0
02E3: 15@ = car 3@ speed
if
not 15@ >= 14.0
else_jump break
00EC: actor $PLAYER_ACTOR 1 near_point 2288.79 -1673.199 radius 14.3883 3.0
end
___________________
Postów:
628
Dołączył:
2009-01-22
Napisano dnia: 2011-11-16 22:09:53
Nawet nie zamknąłeś poprawnie konstrukcji.
___________________
Moderator
Postów:
536
Dołączył:
2011-04-12
Napisano dnia: 2011-11-24 15:30:17
Nie kapuje tego wg. Zbyt skomplikowane to dla mnie jest. Już któryś dzień siedzę czytam i nie mogę skapować jak to zrobić.
MakG zrobił byś mi taką pętle? Bardzo bym był wdzięczny. Przez tą pętlę stoję w miejscu ze skryptem i nie mogę go skończyć.
Ta pętla jest dosyć skomplikowana jak dla mnie [dla Ciebie pewnie nie].
Chciał bym aby sprawdzała czy jedziemy mniej niż i jeśli tak to auto eksploduje.
Ta sama pętla by też sprawdzała czy gracz żyje jeśli nie to wyskakuje z pętli i przeskakuje do innej pętli np. :koniec
W tej pętli też chciałem dodać, że jak dojedziemy do danego punktu to kończy sprawdzanie ta pętla i przeskakuje do innej np. :punkt.
Próbowałem rozłożyć tą pętle na kilka plików .cs ale to długo z tym schodzi
___________________
Postów:
878
Dołączył:
2009-01-20
Napisano dnia: 2011-11-24 15:41:51
Po prostu dajesz kilka warunków w jednej pętli
while. Wcześniej pytałeś o zupełnie co innego.
Kod:
:petla
while true
wait 0
if
break if
@koniec
end
if
@punkt
end
end
wait 1000
jump @petla
:punkt
:koniec
___________________
Administrator
Postów:
536
Dołączył:
2011-04-12
Napisano dnia: 2011-11-24 16:31:56
Dzieki MakG. Napisałem coś takiego ale gdy auto eksploduje i przeniesie nas ko szpitla ekran się rozjaśni to wywala grę
Kod:
//predkosc
:petla
while true
wait 0
if
wait 0
02E3: 15@ = car 3@ speed
if
not 15@ >= 14.0
then
020B: explode_car 3@
jump @punkt
end
if
0117: player $PLAYER_CHAR wasted
then
020B: explode_car 3@
jump @koniec
end
if
00EC: actor $PLAYER_ACTOR 1 near_point 2647.58 922.4301 radius 5.0 5.0
then
Marker.Disable($633)
jump @punkt
end
end
wait 1000
jump @petla
:punkt
Car.DriveTo(3@, 2267.055, 2626.407, 6.7576)
//cut scenka
fade 0 1500
:NONAME_945
wait 10
if
not fading
jf @NONAME_945
wait 1
Player.CanMove($PLAYER_CHAR) = False
wait 1
wait 3000
fade 1 1500
:NONAME_989
wait 10
if
not fading
jf @NONAME_989
Camera.SetPosition(2321.443, -1026.424, 1053.211, 0.0, 0.0, 0.0)
5@ = Actor.Create(CivMale, #SWAT, 2319.255, -1022.301, 1050.211)
6@ = Actor.Create(CivMale, #SWAT, 2319.271, -1020.915, 1050.211)
7@ = Actor.Create(CivMale, #SWAT, 2318.822, -1018.498, 1050.211)
Actor.Angle(5@) = 358.0
Actor.Angle(6@) = 178.0
Actor.Angle(7@) = 178.0
Camera.OnPed(6@, 12, 12)
wait 2000
0605: actor 6@ perform_animation_sequence "BARCUSTOM_LOOP" IFP_file "BAR" 4.0 loop 1 0 0 0 time 10000 // versionA
0605: actor 1@ perform_animation_sequence "PRTIAL_GNGTLKH" IFP_file "GANGS" 4.0 loop 1 0 0 0 time 10000 // versionA
Player.CanMove($PLAYER_CHAR) = True
:koniec
wait 0
if
020B: explode_car 3@
Marker.Disable($633)
03CD: disable_car 3@ stuck_check
jump @NONAME_2
___________________
Postów:
878
Dołączył:
2009-01-20
Napisano dnia: 2011-11-24 16:58:21
3@ to samochód gracza? Jeżeli tak, to przed sprawdzeniem jego prędkości, sprawdź czy w ogóle ten samochód istnieje (tj. gracz znajduje się w pojeździe).
Jeżeli to nie samochód gracza, to sprawdzaj czy jest zdefiniowany przy pomocy
056E
___________________
Administrator
Postów:
536
Dołączył:
2011-04-12
Napisano dnia: 2011-11-28 16:39:58
Tak to auto gracza. A jakim opcodem to sprawdzić? Tym?
Kod:
Actor.DrivingVehicleType($PLAYER_ACTOR, 3@)
___________________
Postów:
878
Dołączył:
2009-01-20
Napisano dnia: 2011-11-28 16:58:09
___________________
Administrator
Postów:
536
Dołączył:
2011-04-12
Napisano dnia: 2011-11-29 13:21:45
Ale napisałeś,że jeśli to nie auto gracza to żebym użył tego opcodu. A to jest auto gracza. Z tym opkodem jest tak samo wywala po tym jak przenosi nas do szpitala gdy zginiemy. A może trzeba usunąć pojazd po tym jak zginiemy. Ale nie wiem jakim opkodem. Znalazłem tylko na zniszczenie a nie na to by znikł
___________________
Postów:
878
Dołączył:
2009-01-20
Napisano dnia: 2011-11-29 15:38:10
Spróbuj z tym:
Kod:
00DF: actor
$PLAYER_ACTOR driving
___________________
Administrator
Postów:
536
Dołączył:
2011-04-12
Napisano dnia: 2011-11-29 16:06:30
Niestety nadal wywala grę.
___________________
Postów:
878
Dołączył:
2009-01-20
Napisano dnia: 2011-11-29 16:18:27
Wrzuć cały kod źródłowy.
___________________
Administrator
Postów:
536
Dołączył:
2011-04-12
Napisano dnia: 2011-11-29 16:20:38
Kod:
// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007
{$VERSION 3.1.0027}
{$CLEO .cs}
//-------------MAIN---------------
0000: NOP
:NONAME_2
wait 10
if
Player.Defined($PLAYER_CHAR)
else_jump @NONAME_2
0570: $630 = create_asset_radar_marker_with_icon 20 at 1449.842 -2286.0 13.546
Model.Load(#BUS)
Model.Load(#HMORI)
038B: load_requested_models
:NONAME_55
wait 0
if
00EC: actor $PLAYER_ACTOR 0 near_point 1449.842 -2286.0 radius 5.0 5.0
else_jump @NONAME_55
Marker.Disable($630)
Player.CanMove($PLAYER_CHAR) = False
fade 0 1500
:NONAME_116
wait 10
if
not fading
else_jump @NONAME_116
3@ = Car.Create(#BUS, 1401.797, -2315.613, 14.089)
Car.Angle(3@) = 180.0
0229: set_car 3@ primary_color_to 2 secondary_color_to 1
4@ = Actor.Create(CivMale, #HMORI, 1404.478, -2320.678, 13.5469)
Actor.Angle(4@) = 130
036A: put_actor $PLAYER_ACTOR in_car 3@
02A3: enable_widescreen 1
Camera.SetPosition(1416.862, -2333.54, 20.1478, 0.0, 0.0, 0.0)
Camera.PointAt(1401.797, -2315.613, 14.089, 2)
0570: $HELP_GIMP_SUIT_SHOWN = create_asset_radar_marker_with_icon 56 at 1004.9 1374.126 10.7777
wait 3000
fade 1 1500
:NONAME_304
wait 10
if
not fading
else_jump @NONAME_304
wait 3000
054C: use_GXT_table 'BUS'
00BC: show_text_highpriority GXT 'TXT1' time 3000 flag 1
wait 3000
00BC: show_text_highpriority GXT 'TXT2' time 3000 flag 1
wait 3000
00BC: show_text_highpriority GXT 'TXT3' time 3000 flag 1
wait 3000
00BC: show_text_highpriority GXT 'TXT4' time 3000 flag 1
wait 3000
Marker.Disable($HELP_GIMP_SUIT_SHOWN)
Actor.Dead(4@)
fade 0 1500
:NONAME_438
wait 10
if
not fading
else_jump @NONAME_438
wait 1
Camera.Restore
wait 3000
fade 1 1500
:NONAME_473
wait 10
if
not fading
else_jump @NONAME_473
wait 1000
02A3: enable_widescreen 0
wait 2000
00BC: show_text_highpriority GXT 'TXT5' time 3000 flag 1
0570: $632 = create_asset_radar_marker_with_icon 56 at 1633.742 -1842.519 25.9459
Player.CanMove($PLAYER_CHAR) = True
:NONAME_549
wait 0
if
00EC: actor $PLAYER_ACTOR 1 near_point 1633.742 -1842.519 radius 30.0 30.0
else_jump @NONAME_549
Marker.Disable($632)
wait 1000
00BC: show_text_highpriority GXT 'TXT6' time 3000 flag 1
wait 3000
00BC: show_text_highpriority GXT 'TXT7' time 3000 flag 1
wait 3000
00BC: show_text_highpriority GXT 'TXT8' time 3000 flag 1
wait 3000
00BC: show_text_highpriority GXT 'TXT9' time 3000 flag 1
wait 3000
00BC: show_text_highpriority GXT 'TXT10' time 3000 flag 1
wait 3000
00BC: show_text_highpriority GXT 'TXT11' time 3000 flag 1
wait 3000
00BC: show_text_highpriority GXT 'TXT12' time 3000 flag 1
wait 3000
00BC: show_text_highpriority GXT 'TXT13' time 3000 flag 1
wait 3000
00BC: show_text_highpriority GXT 'TXT14' time 3000 flag 1
wait 3000
00BC: show_text_highpriority GXT 'TXT15' time 3000 flag 1
wait 3000
00BC: show_text_highpriority GXT 'TXT16' time 3000 flag 1
wait 3000
00BC: show_text_highpriority GXT 'TXT17' time 3000 flag 1
wait 3000
00BC: show_text_highpriority GXT 'TXT18' time 3000 flag 1
wait 10000
0570: $X_MADD_DOGG_CRIB = create_asset_radar_marker_with_icon 20 at 2647.58 922.4301 11.0
:NONAME_896
wait 0
if
Actor.Driving($PLAYER_CHAR)
else_jump @NONAME_896
:NONAME_916
wait 0
if
wait 0
02E3: 15@ = car 3@ speed
if
not 15@ >= 14.0
else_jump @NONAME_969
020B: explode_car 3@ // versionA
jump @NONAME_1066
:NONAME_969
if
Player.Wasted($PLAYER_CHAR)
else_jump @NONAME_997
020B: explode_car 3@ // versionA
jump @NONAME_1398
:NONAME_997
if
00EC: actor $PLAYER_ACTOR 1 near_point 2647.58 922.4301 radius 5.0 5.0
else_jump @NONAME_1047
Marker.Disable($X_MADD_DOGG_CRIB)
jump @NONAME_1066
:NONAME_1047
jump @NONAME_916
wait 1000
jump @NONAME_916
:NONAME_1066
Car.DriveTo(3@, 2267.055, 2626.407, 6.7576)
fade 0 1500
:NONAME_1093
wait 10
if
not fading
else_jump @NONAME_1093
wait 1
Player.CanMove($PLAYER_CHAR) = False
wait 1
wait 3000
fade 1 1500
:NONAME_1137
wait 10
if
not fading
else_jump @NONAME_1137
Camera.SetPosition(2321.443, -1026.424, 1053.211, 0.0, 0.0, 0.0)
5@ = Actor.Create(CivMale, #SWAT, 2319.255, -1022.301, 1050.211)
6@ = Actor.Create(CivMale, #SWAT, 2319.271, -1020.915, 1050.211)
7@ = Actor.Create(CivMale, #SWAT, 2318.822, -1018.498, 1050.211)
Actor.Angle(5@) = 358.0
Actor.Angle(6@) = 178.0
Actor.Angle(7@) = 178.0
Camera.OnPed(6@, 12, 12)
wait 2000
0605: actor 6@ perform_animation_sequence "BARCUSTOM_LOOP" IFP_file "BAR" 4.0 loop 1 0 0 0 time 10000 // versionA
0605: actor 1@ perform_animation_sequence "PRTIAL_GNGTLKH" IFP_file "GANGS" 4.0 loop 1 0 0 0 time 10000 // versionA
Player.CanMove($PLAYER_CHAR) = True
:NONAME_1398
wait 0
if
020B: explode_car 3@ // versionA
Marker.Disable($X_MADD_DOGG_CRIB)
03CD: disable_car 3@ stuck_check
jump @NONAME_2
0A93: end_custom_thread
___________________