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: 123 Dołączył: 2010-03-31
#
Witam zacząłem pisać misje do GTA VC. Zrobiłem taką prostą Sanny Builder 3 kompiluje poprawnie, natomiast gra tuż przy końcu ładowania dostaje crash. to mój kod:
Kod:
DEFINE MISSIONS 1
DEFINE MISSION 0 AT @WELCOME

thread "Main"
var
$PLAYER_CHAR: Player
end
01F0: set_max_wanted_level_to 6
set_wb_check_to 0
00C0: set_current_time 12 0
04E4: unknown_refresh_game_renderer_at 2488.5601 -1666.84
0053: $PLAYER_CHAR = create_player #NULL at -1359.093 -933.0244 20.8931
$PLAYER_ACTOR = Actor.EmulateFromPlayer($PLAYER_CHAR)
Camera.SetBehindPlayer
set_weather 0
wait 0 ms
fade 1 0
start_mission 0
end_thread

:WELCOME
thread 'WELCOME'
0247: request_model #DELUXO 
038B: load_requested_models 

00A5: $WOZ = create_car #DELUXO at -1428.2954 -835.6514 14.4765
0186: $MARKER1 = create_marker_above_car $WOZ 

:petla1
if
00DB:actor $PLAYER_ACTOR in_car $WOZ
jf @petla1

0164: disable_marker $MARKER1 
0570: $660 = create_asset_radar_marker_with_icon 25 at -1028.6862 -854.7523 13.0852 
 
:petla2
if
0103: actor $PLAYER_ACTOR in_sphere -1028.6862 -854.7523 13.0852 radius 3.0 3.0 3.0 sphere 0 stopped_on_foot
jf @petla2

Marker.Disable($CEL)
end_thread 


Odrazu mówie że mam zaznaczone aby Sanny Builder kompilował do VC.
Postów: 628 Dołączył: 2009-01-22
#
Nie jestem pewien czy to pomoże, ale spróbuj nie zakańczać wątku 'MAIN'. W oryginalnym VC (w innych częściach też) jest on pętlą. Czyli zamiast

Kod:
wait 0 ms
fade 1 0
start_mission 0
end_thread


daj coś takiego:

Kod:
wait 0 ms
fade 1 0
start_mission 0


while true
    0001: wait 1000 ms 
end


Poza tym, czemu nikt tutaj nie używa zmiennych lokalnych? :/

___________________
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
#
Po pierwsze uno. Źle zbudowany mań. Powinno być mniej więcej coś takiego jak poniżej.
Po drugie uno. Jeżeli tworzysz pętle powinieneś w niej odczekać chociaż zero sekund. Jeżeli tego nie zrobisz to spowoduje crasza gry.
Potrzecie uno. Jeżeli tworzysz markera, a potem go usuwasz to opcodowi który usuwa tego markera nadaj mu taką samą nazwę jak przy jego tworzeniu.


Kod:
DEFINE OBJECTS 0
DEFINE MISSIONS 1
DEFINE MISSION 0 AT @INITIAL      

{$VERSION 2.2.0000}

//-------------MAIN---------------
thread 'MAIN' 
fade 0 0 
00C0: set_current_time 22 0 
04E4: unknown_refresh_game_renderer_at 83.0 -849.8 
Camera.SetAtPos(83.0, -849.8, 9.3)
$PLAYER_CHAR = Player.Create(#NULL, -1410.3014, -829.0389, 14.8713)
$PLAYER_ACTOR = Actor.EmulateFromPlayer($PLAYER_CHAR)
wait 1500
fade 1 1500
start_mission 0  // Initial

end_thread  

:INITIAL
thread 'INITIAL'
0247: request_model #DELUXO
0247: request_model 19
038B: load_requested_models

00A5: $woz1 = create_car #DELUXO at -1407.5679 -822.3035 14.5649
0175: set_car $woz1 z_angle_to -30.0
0186: $marker1 = create_marker_above_car $woz1

:petla1
wait 0
if
00DB:actor $PLAYER_ACTOR in_car $woz1
jf @petla1
0164: disable_marker $marker1 
0570: $marker2 = create_asset_radar_marker_with_icon 23 at -1402.7126 -752.8752 14.5611 
        
:petla2
wait 0
if
0100:   actor $PLAYER_ACTOR near_point_in_car -1402.7126 -752.8752 14.5611 radius 1.0 1.0 1.0 sphere 0 
jf @petla2
0164: disable_marker $marker2
end_thread  



I po czwarte uno. Jeżeli dopiero zaczynasz zabawę w tworzenie misji to proponuje używać nie tylko tobie ale i każdemu kto to robi programu o nazwie "D3DWindower". Powoduje on otwarcie gta w okienku. Jak gra się w tedy zatnie to będziemy mieli łatwy dostęp do pulpitu i łatwo w tedy taką grę wyłączmy nie resetując przy tym komputera.

Cytat:
Poza tym, czemu nikt tutaj nie używa zmiennych lokalnych? :/

Pewnie dlatego że nikt tego robić nie umie.
Postów: 123 Dołączył: 2010-03-31
#
Dzięki za pomoc teraz chce zrobić skrypt w cleo dla GTA VC ma to też być misja. Jednak ciągle crash:
Kod:
{$CLEO .cs}

02A7: $MISJA = create_icon_marker_and_sphere 8 at -999.2077 -896.0669 12.8867

:START
wait 0
if
0102: actor $PLAYER_CHAR stopped_near_point_on_foot -999.2077 -896.0669 12.8867 radius 1.0 1.0 2.0 sphere 0
jf @START 

0247: request_model #ARMY 
038B: load_requested_models 

009A: $CEL = create_actor 4 #ARMY at -966.1118 -682.5354 11.3814 
0187: $MARKER = create_marker_above_actor $CEL 

:DEAD
wait 0
if 
0118:   actor $CEL dead 
jf @DEAD

0164: disable_marker $MARKER 
009B: destroy_actor_instantly $CEL 
004E: end_thread 
Postów: 1004 Dołączył: 2009-01-20
#
To:
Kod:
0247: request_model #ARMY
038B: load_requested_models 

Powinno być chyba na początku skryptu czyli pod tym {$CLEO .cs}
A cha i w cleo w gta vc jak się tym bawiłem to nieco inny szablon był z takim początkiem :
Kod:
{$VERSION 2.2.0000}
{$CLEO .cs}

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

Czyli to co wyżej napisałem to powinno być pod tymi zerami.
Postów: 123 Dołączył: 2010-03-31
#
Niestety ciągle crash.
Postów: 628 Dołączył: 2009-01-22
#
Z-m-i-e-n-n-e l-o-k-a-l-n-e.

Kod:
0102: actor $PLAYER_CHAR stopped_near_point_on_foot -999.2077 -896.0669 12.8867 radius 1.0 1.0 2.0 sphere 0


tu sprawdzasz $PLAYER_ACTOR, nie $PLAYER_CHAR. Poza tym, CLEO chyba ma inny opcode by zakończyć wątek (0A93 dla SA, nie wiem czy i jaki dla VC).

I jeszcze - jak chcesz robić misję w CLEO i jeśli VC CLEO ma obsługę plików .cm, zastosuj się do szablonu z TEGO poradnika.

@Subaru

Dyrektywa $VERSION i ta linijka z MAIN są całkowicie zbędne, a zwłaszcza ta druga - przecież to komentarz, ignorowany przez Sanny'ego przy kompilacji :)
A co do 0000: NOP. Potrzeba tego tylko w momencie, gdy skrypt skacze do samego swojego początku. Ten skrypt na samym początku ma tworzenie markera, więc błąd "Jump to 0 offset" nigdy nie wystąpi == 0000 jest tu zbędne.

___________________
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