Czy wiesz, że... rejestracja trwa tylko 20 sekund?
Strona główna forum Szukaj Rejestracja
Witaj, nieznajomy!
Poprzedni 1 Następny
Postów: 1004 Dołączył: 2009-01-20
#
No wiec tak. W swoim skrypcie mam pętle, która jednocześnie sprawdza czy aktor zginą, czy wyszedł poza wyznaczony obszar i czy bot, a raczej kilka botów zostało zabitych. Jednak nie bardzo wiem jak do tego dorobić że kiedy właśnie wszystkie boty zostają zabite to zostaje przerwana pętla która sprawdza czy aktor jest poza wyznaczonym obszarem i żeby po zabiciu owych botów np. pojawił się marker dokąd ma jechać. Mój scrypt wygląda tak:
Kod:
{$VERSION 3.1.0027}
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP 

:a1
wait 0
if 
Player.Defined($PLAYER_CHAR)
jf @a1

select_interior 0 
0860: link_actor $PLAYER_ACTOR to_interior 0 
Actor.PutAt($PLAYER_ACTOR, -1634.0796, -2239.4126, 31.4766)
Actor.Angle($PLAYER_ACTOR) = 124.261
Camera.Restore_WithJumpCut

0247: request_model #omoboat // 
0247: request_model #vwmotr2 // 

0247: request_model #shovel // 

038B: load_requested_models

0A8C: write_memory 0x969168 size 1 value 1 virtual_protect 0
00C0: set_current_time_hours_to 24 minutes_to 0 
01F0: set_max_wanted_level_to 0 
048F: actor $PLAYER_ACTOR remove_weapons

009A: 0@ = create_actor_pedtype 20 model #omoboat at -1650.568 -2227.9307 30.3806
Actor.Angle(0@) = 271.2157
009A: 1@ = create_actor_pedtype 20 model #omoboat at -1680.4268 -2251.8127 37.306
Actor.Angle(1@) = 271.2157
009A: 2@ = create_actor_pedtype 20 model #omoboat at -1673.5835 -2257.2236 35.6804
Actor.Angle(2@) = 286.2559
009A: 3@ = create_actor_pedtype 20 model #omoboat at -1666.0017 -2264.4062 36.001  //4
Actor.Angle(3@) = 297.8494
009A: 4@ = create_actor_pedtype 20 model #omoboat at -1661.2551 -2272.2173 36.9355
Actor.Angle(4@) = 312.2629
009A: 5@ = create_actor_pedtype 20 model #omoboat at -1644.0833 -2276.6489 36.3203
Actor.Angle(5@) = 335.4497
009A: 6@ = create_actor_pedtype 20 model #omoboat at -1631.8732 -2273.9736 36.2709
Actor.Angle(6@) = 13.3634
009A: 7@ = create_actor_pedtype 20 model #omoboat at -1616.2202 -2266.498 32.8979
Actor.Angle(7@) = 33.7303

009A: 8@ = create_actor_pedtype 20 model #vwmotr2 at -1680.3988 -2222.7253 35.7876
Actor.Angle(8@) = 255.5489
009A: 9@ = create_actor_pedtype 20 model #vwmotr2 at -1674.3435 -2215.3003 34.5911
Actor.Angle(9@) = 227.9752
009A: 10@ = create_actor_pedtype 20 model #vwmotr2 at -1666.947 -2211.2874 33.9541
Actor.Angle(10@) = 221.3952
009A: 11@ = create_actor_pedtype 20 model #vwmotr2 at -1657.8258 -2207.5681 33.4044
Actor.Angle(11@) = 189.1215
009A: 12@ = create_actor_pedtype 20 model #vwmotr2 at -1685.6385 -2240.7654 38.3798
Actor.Angle(12@) = 273.4091
009A: 13@ = create_actor_pedtype 20 model #vwmotr2 at -1647.5753 -2208.0215 33.8816
Actor.Angle(13@) = 202.2816

060B: set_actor 0@ decision_maker_to 32
060B: set_actor 1@ decision_maker_to 32
060B: set_actor 2@ decision_maker_to 32
060B: set_actor 3@ decision_maker_to 32
060B: set_actor 4@ decision_maker_to 32
060B: set_actor 5@ decision_maker_to 32
060B: set_actor 6@ decision_maker_to 32
060B: set_actor 7@ decision_maker_to 32
060B: set_actor 8@ decision_maker_to 32
060B: set_actor 9@ decision_maker_to 32
060B: set_actor 10@ decision_maker_to 32
060B: set_actor 11@ decision_maker_to 32
060B: set_actor 12@ decision_maker_to 32
060B: set_actor 13@ decision_maker_to 32

0187: $marker0 = create_marker_above_actor 0@
0187: $marker1 = create_marker_above_actor 1@ 
0187: $marker2 = create_marker_above_actor 2@
0187: $marker3 = create_marker_above_actor 3@
0187: $marker4 = create_marker_above_actor 4@
0187: $marker5 = create_marker_above_actor 5@
0187: $marker6 = create_marker_above_actor 6@
0187: $marker7 = create_marker_above_actor 7@
0187: $marker8 = create_marker_above_actor 8@
0187: $marker9 = create_marker_above_actor 9@
0187: $marker10 = create_marker_above_actor 10@
0187: $marker11 = create_marker_above_actor 11@
0187: $marker12 = create_marker_above_actor 12@
0187: $marker13 = create_marker_above_actor 13@


018A: $P1 = create_checkpoint_at -1640.2131 -2239.2747 31.4766
03BC: $K1 = create_sphere_at -1640.2131 -2239.2747 31.4766 radius 1.9
:mnz1
wait 0
if 
00ED:   actor $PLAYER_ACTOR 0 near_point -1640.2131 -2239.2747 radius 1.5 1.5 on_foot 
jf @mnz1
Marker.Disable($P1)
03BD: destroy_sphere $K1

032B: $lop1 = create_weapon_pickup  #shovel group 5 ammo 50 at -1630.5049 -2245.2964 31.4766

05E2: AS_actor 0@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 1@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 2@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 3@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 4@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 5@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 6@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 7@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 8@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 9@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 10@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 11@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 12@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 13@ kill_actor $PLAYER_ACTOR

:z0
wait 0
if 
0118: actor 0@ dead
jf @z1
Marker.Disable($marker0)

:z1
wait 0
if 
0118: actor 1@ dead
jf @z2
Marker.Disable($marker1)

:z2
wait 0
if 
0118: actor 2@ dead
jf @z3
Marker.Disable($marker2)

:z3
wait 0
if 
0118: actor 3@ dead
jf @z4
Marker.Disable($marker3)

:z4
wait 0
if 
0118: actor 4@ dead
jf @z5
Marker.Disable($marker4)

:z5
wait 0
if 
0118: actor 5@ dead
jf @z6
Marker.Disable($marker5)

:z6
wait 0
if 
0118: actor 6@ dead
jf @z7
Marker.Disable($marker6)

:z7
wait 0
if 
0118: actor 7@ dead
jf @z8
Marker.Disable($marker7)

:z8
wait 0
if 
0118: actor 8@ dead
jf @z9
Marker.Disable($marker8)

:z9
wait 0
if 
0118: actor 9@ dead
jf @z10
Marker.Disable($marker9)

:z10
wait 0
if 
0118: actor 10@ dead
jf @z11
Marker.Disable($marker10)

:z11
wait 0
if 
0118: actor 11@ dead
jf @z12
Marker.Disable($marker11)

:z12
wait 0
if 
0118: actor 12@ dead
jf @z13
Marker.Disable($marker12)

:z13
wait 0
if 
0118: actor 13@ dead
jf @z14
Marker.Disable($marker13)
//czy aktor zginol
:z14
wait 0
if 
0118: actor $PLAYER_ACTOR dead
jf @z15
00BA: show_text_styled GXT 'M_FAIL' time 5000 style 1
jump @exit1

:z15
wait 0
if 
80ED:   not actor $PLAYER_ACTOR 0 near_point -1636.3079 -2239.2231 radius 20.0 20.0 on_foot
jf @z0
fade 0 1500 
0169: set_fade_color_RGB 255 0 0 
wait 1700
0321: kill_actor $PLAYER_ACTOR
wait 1700
fade 1 1500 
00BA: show_text_styled GXT 'M_FAIL' time 5000 style 1
jump @exit1
jump @z0

:exit1
0A93: end_custom_thread

No to ktoś wie jak takie coś dorobić?
Postów: 878 Dołączył: 2009-01-20
#
Po tych wszystkich pętlach, dodaj jeszcze jedną, która sprawdza, czy wszyscy wrogowie zostali zabici. Limit dla if and to 9, więc musisz to na dwa bloki:

Kod:
:isAllDead
wait 0
if and
 0118: actor 0@ dead
 0118: actor 1@ dead
 0118: actor 2@ dead
 0118: actor 3@ dead
 0118: actor 4@ dead
 0118: actor 5@ dead
 0118: actor 6@ dead
 0118: actor 7@ dead
 0118: actor 8@ dead
then
 if and
  0118: actor 9@ dead
  0118: actor 10@ dead
  0118: actor 11@ dead
  0118: actor 12@ dead
  0118: actor 13@ dead
 then
  jump @exit1
 end
end
jump @z0


Generalnie takie sprawdzenia najlepiej robić w pętli while, ale to muszę napisać o tym poradnik.

___________________
Administrator
Postów: 628 Dołączył: 2009-01-22
#
Generalnie to na v1 takich pętli się nie da robić, bo w nich tabulatory to podstawa :D

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 1004 Dołączył: 2009-01-20
#
Dodałem do podobnej pętli jak ta powyżej kilka linijek z tekstem i gdy aktor zginie wyświetla się jakiś tam tekst na ekranie, potem gdy zginie drugi to dziej się podobnie, tak samo jest z trzecim i czwartym aktorem tyle że teksty zamiast znikać to one wyświetlają się w kółko. Ktoś wie jak to naprawić?
Poprzedni 1 Następny
Zaloguj się lub zarejestruj się, żeby pisać na forum.
Created & Powered by MakG