Postów:
20
Dołączył:
2010-03-14
Napisano dnia: 2010-10-14 12:58:29
Witam.
Stworzyłem nową animację za pomocą Endorphina i 3DS max.Wszystko działa jak pomieniam jakieś inne animacje ale...nie o to chodzi.
Mój problem: Jak powinien wyglądać skrypt CELO dla nowej animacji IFP "DEMO" (nie wiem czy jest różnica czy wrzucam go do anim.img czy do gta3.img) gdzie po wciśnięciu powiedzmy 1 (opcode "49")
Sam namodziłem coś takiego ale nie działa ;(
Kod:
{$VERSION 3.1.0027}
{$CLEO .cs}
0000: NOP
thread 'DEMO' <- do czego to się odwołuje-plik CELO musi się tak samo nazywać?
wait 10
if
Player.Defined($PLAYER_CHAR)
wait 10
if and
0AB0: key_pressed 49
8449: not actor $PLAYER_ACTOR in_a_car
847A: not actor $PLAYER_ACTOR driving_bike
84A7: not actor $PLAYER_ACTOR driving_boat
84C8: not actor $PLAYER_ACTOR driving_flying_vehicle
84A9: not actor $PLAYER_ACTOR driving_heli
04ED: load_animation "TEST" <- to jest nazwa pliku z animacjami IFP(gdzie ma być umieszczona)
0605: actor $player perform_animation_sequence "SKACZ" from_file "TEST" 4.0 loop 1 1 1 0 time -1
0A93: end_custom_thread
Dzięki za każda odp.
Postów:
159
Dołączył:
2009-02-05
Napisano dnia: 2010-10-15 14:37:09
Najprawdopodobniej błędem jest brak jakichkolwiek pętli. Skrypt powinien wyglądać(najprawdopodobniej) tak:
Kod:
{$VERSION 3.1.0027}
{$CLEO .cs}
0000: NOP
thread 'DEMO' <- do czego to się odwołuje-plik CELO musi się tak samo nazywać?
:Petla1
wait 10
if
Player.Defined($PLAYER_CHAR)
jf @Petla1
:Petla2
wait 10
if and
0AB0: key_pressed 49
8449: not actor $PLAYER_ACTOR in_a_car
847A: not actor $PLAYER_ACTOR driving_bike
84A7: not actor $PLAYER_ACTOR driving_boat
84C8: not actor $PLAYER_ACTOR driving_flying_vehicle
84A9: not actor $PLAYER_ACTOR driving_heli
jf @Petla2
04ED: load_animation "TEST" <- to jest nazwa pliku z animacjami IFP(gdzie ma być umieszczona)
0605: actor $player perform_animation_sequence "SKACZ" from_file "TEST" 4.0 loop 1 1 1 0 time -1
wait 1000
jump @Petla2
0A93: end_custom_thread
Poczytaj trochę o pętlach, a i jeszcze jest możliwość że źle załadowałeś animacje pobierz jakiś podobny Mod, chyba w tym Parkour Mod jest to zrobione.
___________________
Postów:
878
Dołączył:
2009-01-20
Napisano dnia: 2010-10-15 18:55:18
Tak jak napisał
extermin, brakuje pętli przy sprawdzaniu wciśnięcia klawisza. Pozatym należałoby jeszcze umieścić pętlę sprawdzającą, czy dana animacja została załadowana przed jej użyciem:
Kod:
:load
wait 0
if
04EE: animation "TEST" loaded
jf @load
Umieszczasz to po:
Kod:
04ED: load_animation "TEST"
___________________
Administrator
Postów:
20
Dołączył:
2010-03-14
Napisano dnia: 2010-10-16 13:24:15
Tak testowałem tego moda i widziałem tam stosowanie pętli ale skoro nie rozumiałem ich zastosowania więc nie używałem. Dziękuję za odp i zabieram się za sprawdzenie podanych kodów.Napiszę o wynikach testu.
Postów:
20
Dołączył:
2010-03-14
Napisano dnia: 2010-10-17 09:20:58
Udało się po wielu próbach...w linijce
Kod:
0605: actor $player perform_animation_sequence "SKACZ" from_file "TEST" 4.0 loop 1 1 1 0 time -1
zamieniłem na
Kod:
0605: actor $PLAYER_ACTOR...
a plik animacji zamieściłem w pliku ped.ifp. Dzięki aplikacji "GTA Animation Menager" by Ryosuke można otworzyć archiwum .ifp nastepnie dokonać duplikatu jakiejś animacji a następnie zrobic rename. W następnym kroku otwieramy 3ds Max z wgranymi już skryptami GTA Kam's i przy użyciu narzędzia "IFP IO" dokonujemu raplace zduplikowanej wcześniej animacji(tej której zmieniliśmy nazwę) na naszą. Efekt końcowy to :wzbogacenie pliku PED.ifp o odatkowa animację z naszą nazwą.
Teraz wystarczy do folderu CELO w GTA wrzucić skrypt i gotowe.
Kod:
// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007
{$VERSION 3.1.0027}
{$CLEO .cs}
//-------------MAIN---------------
0000: NOP
thread 'TRICKS1'
:TRICKS1_13
wait 10
if
Player.Defined($PLAYER_CHAR)
jf @TRICKS1_13
:TRICKS1_33
wait 10
if and
0AB0: key_pressed 80
8449: not actor $PLAYER_ACTOR in_a_car
847A: not actor $PLAYER_ACTOR driving_bike
84A7: not actor $PLAYER_ACTOR driving_boat
84C8: not actor $PLAYER_ACTOR driving_flying_vehicle
84A9: not actor $PLAYER_ACTOR driving_heli
jf @TRICKS1_33
04ED: load_animation "PED"
:TRICKS1_86
wait 10
if
04EE: animation "PED" loaded
jf @TRICKS1_86
0605: actor $PLAYER_ACTOR perform_animation_sequence "BALL_CONTROL" IFP_file "PED" 4.0 loop 1 1 1 0 time -1 // versionA
wait 1000
jump @TRICKS1_33
0A93: end_custom_thread
Jak znajde trochę wolnego czasu przygotuję szczegółowy tutorial. Dziekuje za pomoc.
Pozdrawiam:BESTEK