Czy wiesz, że... możesz podsyłać newsy, artykuły, pliki i zdjęcia?
Strona główna forum Szukaj Rejestracja
Witaj, nieznajomy!
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!
Postów: 628 Dołączył: 2009-01-22
#
Emmm... pliki .cs wrzucasz do katalogu gry. Trudne, nie?

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
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: 628 Dołączył: 2009-01-22
#
Istnieje, sam takiego używam do swojego modu.

http://zazmahall.de/ZAZGTASANATORIUM/zazmahall%20gta%20San%20Andreas_mission.htm#Stripped Main

Masz tam wszystko dokładnie opisane, i masz dwie wersje do wyboru - external, zwykłe wątki + submisje albo same externale i zwykłe wątki.

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 628 Dołączył: 2009-01-22
#
Zamiast 'if' musisz użyć 'if and'.

Poza tym, zmień wait 10 na wait 0 - nie ma potrzeby czekania tych 10 milisekund, Rockstar zawsze czeka 0 (co nie znaczy że nie ma przerwy w ogóle, jest - co najmniej 14 iteracji (?) procesora).

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 628 Dołączył: 2009-01-22
#
http://www.gtamodding.com/index.php?title=Create_a_mission

Tu jest trochę to opisane, może Ci pomoże.

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 628 Dołączył: 2009-01-22
#
W .cm trzeba używać 004E zamiast 0A93 - ten jest tylko dla skryptów CLEO, nie dla misji.

I wcale nie trzeba tworzyć katalogu 'missions', wystarczy że plik .cm będzie w katalogu CLEO.

Co do zalet - Cytrus, nie zasługujesz żebym Ci przy tym pomagał, ale może się przydać to innym osobom:
.cm najlepiej używać właśnie dla skryptów, które po prostu są misjami. Dlaczego? Ponieważ taka CLEO misja ma wtedy 1024 zamiast 34 zmiennych oraz akceptuje specjalną strukturę, która jest użyta w każdej misji z SA i sprawdza AUTOMATYCZNIE, czy gracz został zabity/aresztowany.

Przykład takiej konstrukcji z MAIN project:

Kod:
:INTRO
03A4: name_thread 'INTRO' 
0050: gosub @INTRO_47 
if 
    0112:   wasted_or_busted // mission only 
then
    0050: gosub @INTRO_9994 
end
0050: gosub @INTRO_9996 
004E: end_thread


W nagłówku @INTRO_47 znajduje się cała misja. W @INTRO_9994 jest wszystko to, co ma rozegrać się w momencie porażki (napis MISSION FAILED itp.), @INTRO_9996 wszystko czyści, oraz kończy się ustawieniem flagi $ONMISSION na 0 (WAŻNE - by konstrukcja działała poprawnie, przed odpaleniem misji tą flagę należy ustawić na 1!) i mission_cleanup.

Najprostsza misja:

Kod:
:MISJA
thread "CLEO"
gosub @MISJA
if
    0112:   wasted_or_busted // mission only 
then
    gosub @MISJA_FAIL
end
gosub @MISJA_CLEANUP
end_thread

:MISJA      
0004: $ONMISSION = 1
increment_mission_attempts
// Cały skrypt misji tu
return

:MISJA_FAIL
00BA: show_text_styled GXT "M_FAIL" time 5000 style 1  // ~r~MISSION FAILED!
return 

:MISJA_CLEANUP
mission_cleanup
0004: $ONMISSION = 0
return

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 628 Dołączył: 2009-01-22
#
Jak 'celujesz' w kogoś, trzymaj klawisz skoku - wtedy CJ będzie trzymał gardę.

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 628 Dołączył: 2009-01-22
#
To jak tego nie rozumiesz, to wklej kod w Sanny'ego, skompiluj i zdekompiluj od nowa. Będziesz miał to w konstrukcjach niskiego poziomu i dzięki temu lepiej to zrozumiesz :)

Poza tym, tu na forum nie widać TABów, które powstawiałem - z nimi kod jest o wiele czytelniejszy, a w takiej postaci wygląda tragicznie. Wkleiłem ten kod na pastebin, razem z tabulatorami - może w taki sposób lepiej to zrozumiesz.

http://silent.pastebin.com/RJk8cjEb

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 628 Dołączył: 2009-01-22
#
toz nadżyrze jak tojest foróm o modinku toja moke tag pisadz?????????????

Cytat:
Muglby ktos to za mnie zrobic bo poto zalozylem temat.


Pisanie skryptów polega na samodzielnym siedzeniu i myśleniu. Próbuj do skutku, to nie jest rzecz, która wymaga fachowej pomocy.

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 628 Dołączył: 2009-01-22
#
Spróbuj dać przed tym:

Kod:
0526: set_actor 65@ stay_in_car 1 


A jak nie, to zablokuj drzwi auta, tak by nie mógł ich otworzyć też od środka:
Kod:
020A: set_car 0@ door_status_to 4 

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 628 Dołączył: 2009-01-22
#
Taką pętlę o wiele prościej napisać w konstrukcjach wysokiego poziomu, serio.

Jeśli nie poskąpisz sobie jednej zmiennej lokalnej (globalne w CLEO to zło!), to możesz ładnie połączyć to wszystko w jedną pętlę.

Zamieniłem $s1, $ms1 i $p1 na 1@, 2@ i 3@ (patrz - 'globalne w CLEO to zło!')

W tym przypadku zmienna 0@ będzie określała 'etap pętli':

Kod:
while true
    wait 0
    if or
        0118:   actor 3@ dead 
        0119:   car 1@ wrecked 
    then
        0164: disable_marker 2@
        00A6: destroy_car 1@ 
        009B: destroy_actor 3@ 
        break // Wyskakuje z pętli while
    end
    if
        0039:   0@ == 0 // Rzeczy poniżej będa sprawdzane tylko, gdy etap wynosi 0
    then
        if
            00DB:   actor $PLAYER_ACTOR in_car 1@ 
        then
            0164: disable_marker 2@
            0006: 0@ = 1 // Gracz jest w pojeździe, wkraczamy w następny etap 
        end
    end
    if
        0039:   0@ == 1 // Rzeczy poniżej będa sprawdzane tylko, gdy etap wynosi 1
    then
        if
            80DB:   not actor $PLAYER_ACTOR in_car 1@ 
        then
            00A6: destroy_car 1@ 
            009B: destroy_actor 3@  
            break // Wyskakuje z pętli while
        end
        if
            01AF:   car 1@ sphere 0 in_sphere 0.0 0.0 0.0 radius 0.2 0.2 1.0 // Sprawdza, czy pojazd jest w wyznaczonym celu
        then
            // Rób co chcesz
        end
    end
end


I jeszcze jedno - w takich pętlach wystarczy jeden wait, tak jak użyłem tego wyżej.

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 628 Dołączył: 2009-01-22
#
Zamień przecinki w liczbach zmiennoprzecinkowych na kropki.

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 628 Dołączył: 2009-01-22
#
Nie, nie ma. Sam musisz sobie porównywać, korzystając najlepiej z wyszukiwarki opcodów w Sannym.

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Postów: 628 Dołączył: 2009-01-22
#
Nie bawię się mapami, ale tut wygląda nieźle. Popraw tylko - archiwum .img, nie .igm :)

I jeszcze mi się w oczy rzuciło - dół*

___________________
Moderator
http://i.imgur.com/Abvv63y
Śledź mój kanał Twitter by być na bieżąco ze wszystkimi aktualizacjami moich modów!
Created & Powered by MakG