Czy wiesz, że... na forum możesz uzyskać pomoc nt. modowania GTA?
Strona główna forum Szukaj Rejestracja
Witaj, nieznajomy!
Poprzedni 1 Następny
Postów: 28 Dołączył: 2009-01-21
#
Mam pewien pewnie banalny problem, ale nie mogę sobie z nim poradzić. Mianowicie stworzyłem sobie dwa pojazdy z aktorami w środku, które gonią gracza. Następnie zrobiłem pętle, które sprawdzają różne warunki: zniszczenia aut, śmierci aktorów lub zgubienia aut itp.

Jednak gdy zastosowałem w jednej z pętli opcod:

Kod:
80F2:   not actor $PLAYER_ACTOR near_actor 32@ radius 300.0 300.0 0


Gra wtedy crashuje. Może to dla tego, że ten opcode nie sprawdza odległości pojazdów tylko aktorów (w mojej misji wszyscy aktorzy są w pojazdach).

A tutaj mój kod bez tych opcodów (nie crashuje):

Kod:
:start6
wait 10
if
0119:   car $ukrad_rancher wrecked 
jf @start7

00BC: show_text_highpriority GXT 'HZNISZ' time 3000 flag 1 
jump @HNIGHTM_2242

:start7
wait 10
if and
0118:   actor 30@ dead 
0118:   actor 31@ dead 
0119:   car $automafia2 wrecked 
jf @start8

jump @start20

:start8 
wait 10
if and
0118:   actor 32@ dead 
0118:   actor 33@ dead 
0119:   car $automafia1 wrecked  
jf @start9

jump @start20

:start9
wait 10
if and
0119:   car $automafia1 wrecked
0119:   car $automafia2 wrecked
jf @start10

jump @start20

:start10
wait 10
if and 
0118:   actor 30@ dead 
0118:   actor 31@ dead
0118:   actor 32@ dead 
0118:   actor 33@ dead
jf @start11

jump @start20

:start11
wait 10
if and
0118:   actor 30@ dead 
0118:   actor 31@ dead
0119:   car $automafia1 wrecked 
jf @start12

jump @start20

:start12
wait 10
if and
0118:   actor 32@ dead 
0118:   actor 33@ dead
0119:   car $automafia2 wrecked
jf @start18

jump @start20


Korzystając z okazji. Ten opcod także u mnie crashuje:

Kod:
0713: actor 33@ driveby_actor $PLAYER_ACTOR car -1 point 0.0 0.0 0.0 radius 100.0 4 1 firing_rate 90


Oraz jak mogę zrobić pasek stanu pojazdu? Myślałem nad pobraniem stanu auta do globalnej, a potem użycie opcodu 03C4. Trzebaby było w kółko sprawdzać stan, ale ja nie widzę innej drogi.



___________________
http://img834.imageshack.us/img834/861/yrmwsig
Postów: 123 Dołączył: 2010-03-31
#
Co do driveby kierowca auta nie może robić driveby. Musisz utworzyć pasażera, dac mu broń maszynową i jemu kazać robić driveby. I jeśli gracz siedzi w aucie daj żeby robili driveby na aucie, nie na aktorze. Jak robisz driveby na aktorze, a on siedzi w aucie to wtedy jest kłopot. Do sprawdzania auta aktora możesz użyć tego:
Kod:
00D9: 68@ = actor $PLAYER_ACTOR car 


Co do pierwszego problemu możesz zmienić radius. Najlepiej gdy radius nie bedzie większy niż 100.
Postów: 878 Dołączył: 2009-01-20
#
Na sprawdzanie odległości między aktorami, użyj tego opcodu:
Kod:
8104:   not actor $PLAYER_ACTOR near_actor 32@ radius 67.0 67.0 10.0 sphere 0



bingo009 napisał(a):
Jak robisz driveby na aktorze, a on siedzi w aucie to wtedy jest kłopot.

Nie ma takich kłopotów, można robić driveby na aktorze ustawiając zmienną aktora np. na $PLAYER_ACTOR, a samochód na -1 (co oznacza każdy samochód lub żaden). Tak samo na odwrót. Tutaj masz wyjaśniony driveby. Najlepiej radius ustaw np. na 5000.0.


MatiSk8 napisał(a):
Oraz jak mogę zrobić pasek stanu pojazdu? Myślałem nad pobraniem stanu auta do globalnej, a potem użycie opcodu 03C4. Trzebaby było w kółko sprawdzać stan, ale ja nie widzę innej drogi.

Dokładnie tak to trzeba zrobić, nie ma innego sposobu.



___________________
Administrator
Postów: 28 Dołączył: 2009-01-21
#
Niestety nadal crash. Kod wygląda tak (nie jest to całość):

Kod:
:start5 
wait 10
if 
00DB:   actor $PLAYER_ACTOR in_car $ukrad_rancher 
jf @start5

0164: disable_marker $ukrad_marker
01B4: set_player $PLAYER_CHAR can_move 0

wait 1000

015F: set_camera_position -1599.4626 -2729.6987 57.4398 rotation 0.0 0.0 0.0 
0160: set_camera_point_at -1569.3828 -2732.1077 51.0747 mode 2 

00A5: $automafia1 = create_car #ADMIRAL at -1544.9554 -2734.5427 46.1391 
0175: set_car $automafia1 Z_angle_to 143.5081
0229: set_car $automafia1 primary_color_to 0 secondary_color_to 0 

0129: 30@ = create_actor_pedtype 20 model #WMYRI in_car $automafia1 driverseat 
01C8: 31@ = create_actor_pedtype 20 model #VMAFF1 in_car $automafia1 passenger_seat 0 
01B2: give_actor 31@ weapon 28 ammo 1000 // Load the weapon model before using this 

00A5: $automafia2 = create_car #ADMIRAL  at -1567.9207 -2713.8264 46.1391
0175: set_car $automafia2 Z_angle_to 101.8344
0229: set_car $automafia2 primary_color_to 0 secondary_color_to 0 

0129: 32@ = create_actor_pedtype 20 model #VMAFF1 in_car $automafia2 driverseat 
01C8: 33@ = create_actor_pedtype 20 model #WMYRI in_car $automafia2 passenger_seat 0 

01B2: give_actor 33@ weapon 28 ammo 1000 // Load the weapon model before using this 

05D1: AS_actor 32@ drive_car $automafia2 to -1582.8356 -2723.2168 48.5335 speed 10.0 0 model #ADMIRAL 2
05D1: AS_actor 30@ drive_car $automafia1 to -1557.7394 -2749.5127 48.5391 speed 10.0 0 model #ADMIRAL 2

wait 4000

0581: enable_radar 1 
0826: enable_hud 1
Camera.Restore_WithJumpCut
Camera.SetBehindPlayer
01B4: set_player $PLAYER_CHAR can_move 1


07F8: car $automafia1 follow_car $ukrad_rancher radius 5.0 
Car.SetMaxSpeed($automafia1, 100.0)
00AE: set_car $automafia1 traffic_behaviour_to 2 

07F8: car $automafia2 follow_car $ukrad_rancher radius 5.0 
Car.SetMaxSpeed($automafia2, 100.0)
00AE: set_car $automafia2 traffic_behaviour_to 2 

0713: actor 31@ driveby_actor $PLAYER_ACTOR car -1 point 0.0 0.0 0.0 radius 100.0 4 1 firing_rate 90
0713: actor 33@ driveby_actor $PLAYER_ACTOR car -1 point 0.0 0.0 0.0 radius 100.0 4 1 firing_rate 90

00BC: show_text_highpriority GXT 'HDESTR' time 5000 flag 1

:start6
wait 10
if or
0119:   car $ukrad_rancher wrecked 
02BF:   car $ukrad_rancher sunk 
jf @start7

00BC: show_text_highpriority GXT 'HZNISZ' time 3000 flag 1 
jump @HNIGHTM_2242

:start7
wait 10
if and
0118:   actor 30@ dead 
0118:   actor 31@ dead 
0119:   car $automafia2 wrecked 
jf @start8

jump @start20

:start8 
wait 10
if and
0118:   actor 32@ dead 
0118:   actor 33@ dead 
0119:   car $automafia1 wrecked 
jf @start9

jump @start20

:start9
wait 10
if and
0119:   car $automafia1 wrecked 
0119:   car $automafia2 wrecked 
jf @start10

jump @start20

:start10
wait 10
if and 
0118:   actor 30@ dead 
0118:   actor 31@ dead
0118:   actor 32@ dead 
0118:   actor 33@ dead
jf @start11

:start11
wait 10
if and 
8104:   not actor $PLAYER_ACTOR near_actor 32@ radius 300.0 300.0 10.0 sphere 0
8104:   not actor $PLAYER_ACTOR near_actor 30@ radius 300.0 300.0 10.0 sphere 0
jf @start18

jump @start20

:start18
wait 10
if
80DB:   not actor $PLAYER_ACTOR in_car $ukrad_rancher
jf @start6

:markerutw
$ukrad_marker1 = Marker.CreateAboveCar($ukrad_rancher)
07E0: set_marker $ukrad_marker1 type_to 1 
00BC: show_text_highpriority GXT 'HDWSIAD' time 6000 flag 1

:start19
wait 10
if
00DB:   actor $PLAYER_ACTOR in_car $ukrad_rancher 
jf @start19

0164: disable_marker $ukrad_marker1 
jump @start6


:start20

___________________
http://img834.imageshack.us/img834/861/yrmwsig
Postów: 878 Dołączył: 2009-01-20
#
Ah, teraz dopiero zauważyłem :)

Zmienne 32@ i 33@ to timery. Są one cały czas aktualizowane ilością milisekund. Jeśli utworzyłeś aktora jako 32@, to ta zmienna po chwili zamieni się w integera i nie możesz jej używać jako uchwytu do aktora. Zmień 32@ na np. 34@ i nie będzie problemu.

___________________
Administrator
Postów: 28 Dołączył: 2009-01-21
#
Działa perfekcyjnie. Dzięki MakG. Wiedziałem, że znajdę tu pomoc :D

___________________
http://img834.imageshack.us/img834/861/yrmwsig
Postów: 628 Dołączył: 2009-01-22
#
Na 34@ nie można zamienić, jeśli nie jest to misja, btw. W misjach można operować na zmiennych 0@-1023@, a w normalnych wątkach na 0@-33@ (ale można trochę się pobawić, i mieć możliwość korzystania z 39@).

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Poprzedni 1 Następny
Zaloguj się lub zarejestruj się, żeby pisać na forum.
Created & Powered by MakG