Poprzedni temat «» Następny temat
[SA] Intro Scripting - Tutorial
Autor Wiadomość
Skamer 
Ja tu tylko sprzątam
Margines Stuntingu



Dołączył: 6354 dni temu
Posty: 1942
Skąd: Kraków

Punkty: 666626558
Wysłany: 2008-04-09, 17:21   [SA] Intro Scripting - Tutorial

[SA] Intro Scripting - Tutorial

by Skamer


I. Niezbędne i pomocne programy:

Sanny Builder - Program służący do edytowania pliku main.scm . Jest to podstawowy i niezbędny program do pisania skryptów. Jest też (moim zdaniem) grubo lepszy od Mission Buildera.

SA Place Manager - Program do zapisywania koordów w grze. Bardzo potrzebny zwłaszcza gdy chce się znać koordy danego miejsca na mapie.

Ped Editor - Służy do zmian konfiguracji przechodniów lecz jest przydatny gdy potrzeba nam wiedzieć jaki model odpowiada za jakiego przechodnia. (posiada podgląd).

II. Główne Funkcje

1. No to zaczynamy. Odpalamy Sanny Buildera, dajemy nowy pusty dokument (albo ctrl +n jak kto woli) i wpisujemy poniższy kod.

Kod:

DEFINE OBJECTS 0
DEFINE MISSIONS 1
DEFINE MISSION 0 AT @Nazwa Misji (w naszym przykładzie będzie to @MISJA)
DEFINE EXTERNAL_SCRIPTS 0
DEFINE UNKNOWN_EMPTY_SEGMENT 0
DEFINE UNKNOWN_THREADS_MEMORY 0


Umieszczamy je na samym początku. Są niezbędne do poprawnego działania gry. Oznaczają:
-Definiuje ilość obiektów w naszym przypadku 0 .
-Definiuje ilość Misji. ( w tym przypadku 1 lecz można więcej )
-Definiuje nową misje i jej numer. 0 jest pierwszym numerem.
-Tak samo jak w przypadku 2 funkcji. Jest to ilość nowych skryptów.(w naszym przypadku wartość ta: 0)
-Nie mam pojęcia co znaczą 2 ostatnie jednak są one konieczne !

Oczywiście nie trzeba pisać np. "DEFINE OBJECTS 0" czy ”DEFINE EXTERNAL_SCRIPTS 0” można to pominąć (nie dotyczy 2 ostatnich funkcji).
jednak gdybyś kiedyś chciał użyć np. obiektów w danym skrypcie to zamiast szukać tej funkcji zmieniasz tylko cyferkę ;) .

2. Część "Main" . (główna sekcja).

Część w której określimy środowisko gry.

Kod:

thread 'MAIN'

var
 $PLAYER_CHAR : Player
end

set_weather 1
00C0: set_current_time 12 00 (1 wartość godziny , druga minuty)
01F0: set_max_wanted_level_to 6

0053: $PLAYER_CHAR = create_player #NULL (model gracza) at  2003.5000 -2496.095 13.7826 (koordy)

$PLAYER_ACTOR = Actor.EmulateFromPlayer($PLAYER_CHAR)

$PLAYER_CHAR.SetClothes("PLAYER_FACE", "HEAD", BODY_PART 1) // "PLAYER_FACE"[<-tekstura] ,"HEAD" [<-model] (głowa)
$PLAYER_CHAR.SetClothes("JEANSDENIM", "JEANS", BODY_PART 2)   // (nogi)
$PLAYER_CHAR.SetClothes("SNEAKERBINCBLK", "SNEAKER", BODY_PART 3) // (stopy)
$PLAYER_CHAR.SetClothes("hawaiired", "HAWAII", BODY_PART 0) // (tors)
$PLAYER_CHAR.Build
$PLAYER_CHAR.CanMove(True)

016C: restart_if_wasted at 2027.77 -1420.52 15.99 angle 137.0 unknown 0
016D: restart_if_busted at 1550.68 -1675.49 14.51 angle 90.0 unknown 0

fade 1 0

start_mission 0

end_thread

Linijkami co oznaczają dane kody:
-Rozpoczęcie sekcji i nazwanie ją "Main" .
Określenie $PLAYER_CHAR jako gracza. (jest to zapis umowny można wpisać nawet $JADZIA = Player )
-Ustawienia pogody (w indexie (F12) Sanny buildera mamy jakie cyfry odpowiadają za jaką pogodę)
-Jak się domyślacie ustawienie czasu gry.
- Maksymalny stopień poszukiwania przez organy ścigania. (maksymalna wartość to 6 przy większej wychodzą błędy).
- Tworzenie modelu gracza oraz jego pozycje w na mapie.
- Funkcje aktorów przypisane graczowi.
-Następuje teraz faza "ubierania" modelu naszego CJa w dane tekstury. Użyłem zapisu cyfrowego w miejscu określającym miejsce na ciele CJ'a. Dokładny spis wszystkich ubrań i modeli w Indexie Sanny buildera.
- Nakładanie na model wszystkich powyższych tekstur.
- Funkcja odpowiadająca za ruch gracza. (True) oznacza, że możemy poruszać CJem jak i kamerą. ( do wyboru też (False) )
- Następne 2 funkcje odpowiadają za wznowienie gry (w danym miejscu) gdy gracz zginie czy zostanie złapany przez policje.
- Funkcja rozjaśnia obraz
- Funkcja przekierowuje i rozpoczyna pierwszą misje.
-No i nie trudno zorientować się że ostatnia funkcja kończy sekcje "main"

W tej sekcji można oczywiście umieszczać także inne funkcje np. Statystyki gracza (umiejętności strzeleckie , stamina).

III. Rozpoczynamy długo oczekiwaną część tutorialu czyli tworzenie intra

Zanim jednak cokolwiek zaczniemy nie zapomnijmy o:

Kod:


:petla (np :MISJA albo :KLON1)
thread 'Nazwa misji'

end_thread



W tych "znacznikach" będzie się mieścił skrypt intra.


Oto parę skryptów. Jakie przydadzą się przy tworzeniu intra:

1. Efekt "klonów CJa".

Opis: Skrypt ten daje możliwość stworzenia wielu klonów CJ'a całkowicie mu podporządkowanych (włącznie z ruchem).
Zalety:
Plusem tego skryptu jest fakt iż ubrania klonów można ustawić według upodobań. (co jest niemożliwe w przypadku chociażby aktorów).
Wady:
Wiele funkcji przyporządkowanych playerowi nie działa poprawnie albo działa tylko i wyłącznie na 1 CJ'a. Np. Animacja, komendy dotyczące pojazdów (wsiadanie do czy wysiadanie z pojazdu) itp...

Naszym pierwszym CJ będzie $PLAYER_CHAR którego skin, pozycje ustaliliśmy w sekcji "Main"

Czas na 1 klona.

Kod:


:KLON1
thread 'MISJA'

fade 0 1 (zaciemnia obraz)
wait 3000 (odczekuje 3000 milisekund = 3 sekundy)

var
$KLON_1 : Player
end

0053: $KLON_1 = create_player #NULL at 2005.5000 -2496.095 13.7826

$KLON_1.SetClothes("PLAYER_FACE", "HEAD", BODY_PART 1)   [twarz]
$KLON_1.SetClothes("cowboy", "cowboy", BODY_PART 16) [kapelusz]
$KLON_1.SetClothes("tshirtprored", "tshirt", BODY_PART 0)   [Tors]
$KLON_1.SetClothes("chinosblack", "chinosb", BODY_PART 2)   [spodnie]
$KLON_1.SetClothes("sneakerheatwht", "sneaker", BODY_PART 3)  [buty]
$KLON_1.SetClothes("glasses01dark", "glasses01", BODY_PART 15) [okulary]
$KLON_1.Build
$KLON_1.CanMove(True)

fade 1 1000 (wyświetlenie obraz)
end_thread



W tym momencie mamy swoją postać (gracza) oraz 1 klona.

Pozostałe klony robi się analogicznie do przykładu tylko pamiętajcie o oddzielaniu ich tzw. pętlami (Uwaga: w Sanny builder nie wolno pisać polskich znaków ! więc nie poprawiajcie mnie w kodzie.)

Teraz wystarczy tylko skompilować ten skrypt [F6] i skopiować pod nazwą main.scm do folderu

(Folder z grą)\data\script

(Ważne: Zanim podmienisz pliki main.scm skopiuj sobie oryginał !!!)

załączamy New Game (bo na zapisanej grze wywali nas do windowsa)

Efekt: Link do Filmu (kamera ustawiana i poruszana w za pomocą SA cam hack)


Dla osób, które nadal mają problemy ze zrozumieniem dołączam plik .txt , w którym pokazane jest jak powinien wyglądać powyższy, gotowy do skomplikowania skrypt.
POBIERZ

2. Efekt "Klonów CJa" + Funkcje aktorów (wkrótce)

3. Ruchy kamer (wkrótce)

4. Dodawanie Particle Efekt (wkrótce)

Przydatne strony:
gta-zone.pl – kilka przydatnych tutoriali.
Spis opcode’ów – SA – Bardzo pomocna wyszukiwarka opcode’ów.
GTAmodding.com – Co prawda anglojęzyczna lecz pomocna strona.


Mam nadzieje że pomogłem wszystkim którzy dopiero co zaczynają skryptować.
Wszelkie poprawki, zażalenia mile widziane. (jednak z umiarem).

Specjalne podziękowania:
Dla strony gta-zone.pl

Kopiowanie powyższego tutorialu bez zgody autora prowadzi do surowej kary w obrębie forum i nie tylko.
_________________
" Jest tylko jeden powód dla którego nie warto stuntować :
Crashe replay'ów... "
 
 
     
Streem 
Dziecko neo



Wiek: 29
Dołączył: 6126 dni temu
Posty: 883

Punkty: 63862
Wysłany: 2008-04-09, 17:33   

Świetny tut, bardziej zrozumiały niż tamten [co dał psm]
Aż go sobie skopiuje na kompa [jak strona upadnie też się przyda]
_________________


"Google is the key"

 
     
SilVerus 
Maniak postów


Wiek: 31
Dołączył: 6147 dni temu
Posty: 349
Skąd: Sosnowiec

Punkty: 1102
Wysłany: 2008-04-09, 17:48   

Dobry tutek dla początkujących, ale mógłbyś od razu napisać o ruchach kamery itp. :)
Cytat:
Spis opcode’ów – SA – Bardzo pomocna wyszukiwarka opcode’ów.

Opcody można znaleźć także w Sanny Builder: Narzędzia->Narzędia IDE->Szukaj Opcodów =)
 
 
     
Skamer 
Ja tu tylko sprzątam
Margines Stuntingu



Dołączył: 6354 dni temu
Posty: 1942
Skąd: Kraków

Punkty: 666626558
Wysłany: 2008-04-09, 17:59   

SilVerus napisał/a:
Dobry tutek dla początkujących, ale mógłbyś od razu napisać o ruchach kamery itp. :)
Cytat:
Spis opcode’ów – SA – Bardzo pomocna wyszukiwarka opcode’ów.

Opcody można znaleźć także w Sanny Builder: Narzędzia->Narzędia IDE->Szukaj Opcodów =)


1. Tam nie ma wszystkich opcodów (tylko malutka część) więcej tam funkcji. -.-
_________________
" Jest tylko jeden powód dla którego nie warto stuntować :
Crashe replay'ów... "
 
 
     
Rolek
[Usunięty]


Punkty: 666626558
Wysłany: 2008-04-09, 21:50   

Michu napisał/a:
Ludzie, cieszcie się że moderator właśnie buja w krainie 4 rzek i 5 lasów, bo źle to się dla was skończy ;>.


oj, święte słowa, święte... ;)

Rolek mówi "piszecie posty tylko i wyłącznie związane z tematem, problematyką, pomocą, lub..."
 
     
Siemko 
Aktywny amator



Dołączył: 5308 dni temu
Posty: 175

Punkty: 1220
Ostrzeżeń:
 3/3/6
Wysłany: 2010-10-03, 23:49   

Mam problem. Mianowicie, gdy wpisuję nazwę misji (@KLON1) i daję kompiluj to wyskakuje error "Nagłówek misji "KLON1" nie znaleziony." Wie ktoś może co zrobić?
_________________
 
 
     
Skamer 
Ja tu tylko sprzątam
Margines Stuntingu



Dołączył: 6354 dni temu
Posty: 1942
Skąd: Kraków

Punkty: 666626558
Wysłany: 2010-10-04, 15:18   

Siemko to oczywiste, jeżeli w kodzie definiujesz misję o nazwie przykładowo @KLON1 to zaraz po części w której określa się środowisko gry trzeba napisać

Kod:
thread 'KLON1'


po czym zamknięcie tej misji

Kod:
end_thread
_________________
" Jest tylko jeden powód dla którego nie warto stuntować :
Crashe replay'ów... "
 
 
     
Siemko 
Aktywny amator



Dołączył: 5308 dni temu
Posty: 175

Punkty: 1220
Ostrzeżeń:
 3/3/6
Wysłany: 2010-10-04, 21:51   

Dzięki. Sorry za takie drobnostki, no ale cóż, uczę się dopiero i nie za bardzo chwytam co z czym się je.
_________________
 
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Nie możesz ściągać załączników na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Style created by Matej from mStyles modified by Drool
statystyka