Postów:
9
Dołączył:
2010-10-25
Napisano dnia: 2010-10-25 12:25:28
Opisze mi ktoś jak zrobić skrypt żeby po kliknięciu "" w określonym aucie zrobił się określony paintjob? Tak samo z nitro i hydrauliką. BO ja coś tam próbuję i na razie mam taki kod na paintjoba:
Kod:
{$CLEO .cs}
0000: NOP
:petla1
wait 10
if and
00E1: player 0 pressed_key
jf @petla2
@petla2
wait 10
if
I nie wiem co dalej zrobić x] Zacząłem skrypt, najpierw określa się kliknięcie "" ((nie wpisałem ID bo nie znam)) i teraz przenosi do pętli drugiej i tam chcę napisać żeby robił się ten paintjob tylko nie wiem jak ;/ Pozdrówka.
Postów:
878
Dołączył:
2009-01-20
Napisano dnia: 2010-10-25 15:36:25
Opcode do ustawienia paintjoba:
Kod:
06ED: set_car 34@ paintjob 0
0 to brak paintjoba, więc musisz zmienić to ID na własne, np. 1.
___________________
Administrator
Postów:
9
Dołączył:
2010-10-25
Napisano dnia: 2010-10-25 18:03:51
To dajcie mi jeszcze opcode do hydrauliki i nitro, proszę?
I w ogóle nie działa mi ten opcode, bo pisze że w thread największą zmienną jest 33@...
To mój aktualny kod i jednak robię to na spację:
Kod:
{$CLEO .cs}
0000: NOP
:petla1
wait 10
if and
00E1: player 0 pressed_key 16
jf @petla2
:petla2
wait 10
06ED: set_car 34@ paintjob 2
0A93: end_custom_thread
I można zrobić tak żeby to działało tylko na jeden konkretny samochód? Rodzaj samochodu w sensie, na przykład blade.
Postów:
878
Dołączył:
2009-01-20
Napisano dnia: 2010-10-25 20:36:49
34@ - to podmień na zmienną samochodu, do którego chcesz wstawić paintjob
Opcode na hydraulikę:
Kod:
07FF: set_car $ZMIENNA_SAMOCHODU hydraulics 1
Jeśli chcesz wyłączyć hydraulikę, zmień
1 na
0
Opcode na nitro:
Kod:
09E9: car $ZMIENNA_SAMOCHODU add_single_nitro
Ten kod, jak nazwa sugeruje, dodaje możliwość uruchomienia nitro tylko jeden raz. Jeśli chcesz zmienić limit, to po prostu wywołaj tą funkcję tyle razy, ile będziesz potrzebował.
___________________
Administrator
Postów:
9
Dołączył:
2010-10-25
Napisano dnia: 2010-10-25 22:39:33
Kod:
{$CLEO .cs}
0000: NOP
wait 10
if and
00E1: player 0 pressed_key 16
wait 10
06ED: set_car $BLADE paintjob 2
0A93: end_custom_thread
Jaki błąd jest w tym kodzie? Nie działa kliknięcie F ani spacji, paintjob się nie robi ;/
Postów:
878
Dołączył:
2009-01-20
Napisano dnia: 2010-10-25 22:59:58
Nie utworzyłeś żadnej pętli, w tym kodzie, co podałeś, sprawdzasz ten warunek tylko jeden raz podczas całego działania skryptu.
Kod:
{$CLEO .cs}
0000: NOP
03C0: $BLADE = actor $PLAYER_ACTOR car
:petla
wait 0
if
00E1: player 0 pressed_key 16
jf @petla
06ED: set_car $BLADE paintjob 2
0A93: end_custom_thread
Pozatym nie ma potrzeby użycia
if and, skoro ustawiłeś tylko jeden warunek.
Oprócz tego, nie ustawiłeś zmiennej $BLADE, czyli jak domniemam, samochodu gracza. Chyba że definiujesz to w oddzielnym skrypcie i odwołujesz się do tego poprzez zmienną globalną. Na wszelki wypadek dodałem to na początku kodu.
___________________
Administrator
Postów:
9
Dołączył:
2010-10-25
Napisano dnia: 2010-10-26 14:19:38
Kurczę, dzięki ;> Ja dopiero zaczynam CLEO i strasznie słabo mi idzie, ledwo co ogarniam znaczenie tego wszystkiego. Pierwszy raz programuję w GTA SA >:D
Mógłby ktoś podać ID przycisku ""? (nie mylić z "/")
PS:
Twój kod też nie działa, klikałem spację, potem próbowałem F i nic ;/
Postów:
878
Dołączył:
2009-01-20
Napisano dnia: 2010-10-26 14:55:18
Ah, sorry. Pomyliłem się. Przydzielenie samochodu gracza do $BLADE powinno być po pętli:
Kod:
{$CLEO .cs}
0000: NOP
:petla
wait 0
if
00E1: player 0 pressed_key 16
jf @petla
03C0: $BLADE = actor $PLAYER_ACTOR car
06ED: set_car $BLADE paintjob 2
0A93: end_custom_thread
Co do klawiszy, to np. tutaj masz listę:
http://www.kbdedit.com/manual/low_level_vk_list.html
Znak
to będzie:
0xDC.
___________________
Administrator
Postów:
207
Dołączył:
2009-03-18
Napisano dnia: 2010-10-26 15:48:14
A ja dodam że lista klawiszy jest dostępna od razu w SB.
Wchodzimy w Pomoc -> Index -> w spisie treści wybieramy CLEO 3 Code Library (ostatnie na liście) -> Virtual Key codes.
___________________
Postów:
9
Dołączył:
2010-10-25
Napisano dnia: 2010-10-26 17:23:45
Kod:
{$CLEO .cs}
0000: NOP
:petla
wait 0
if
00E1: player 0 pressed_key 0xDC
jf @petla
03C0: $BLADE = actor $PLAYER_ACTOR car
06ED: set_car $BLADE paintjob 2
0A93: end_custom_thread
To jest mój dokładny kod... Próbowałem też z parametrem 220 do pressed_key, też nic nie dało. Za każdym razem jak w singlu siedzę w bladzie i klikam
to nic się nie dzieje... Nie wiem o co z tym chodzi ;/
Postów:
207
Dołączył:
2009-03-18
Napisano dnia: 2010-10-26 20:44:30
Heh z ciekawości chciałem zrobić podobnego moda ale na dodawanie hydrauliki do każdego auta, a nie painjobów. I też coś mi nie wyszło, ale spróbuję zrobić jak się uda napiszę jak ;]
___________________
Postów:
1004
Dołączył:
2009-01-20
Napisano dnia: 2010-10-26 21:02:48
Nie dałeś pętli sprawdzającej czy aktor się znajduje w pojeździe. Najprawdopodobniej dlatego ci nie działa. Powinno to wyglądać mniej więcej tak.
Kod:
{$CLEO .cs}
0000: NOP
0247: request_model #sultan //
038B: load_requested_models
00A5: $WOZ1 = create_car #sultan at 2493.0034 -1669.451 12.9599
0175: set_car $WOZ1 z_angle_to 58.7561
//pętla sprawdzająca czy aktor jest w pojeździe
:petla1
wait 10
if
Actor.InCar($PLAYER_ACTOR, $WOZ1)
jf @petla1
:petla2
wait 10
if
00E1: player 0 pressed_key 16
00E1: player 0 pressed_key 15
jf @petla2
06ED: set_car $WOZ1 paintjob 0
09E9: car $WOZ1 add_single_nitro
07FF: set_car $WOZ1 hydraulics 1
0A93: end_custom_thread
Nie wiem jak zrobić żeby to działało na przypadkowym spotkanym samochodzie dlatego daje do konkretnie przypisanego samochodu. Czyli w tym wypadku sultana. Sultana ustawiłem pod domem CJ.
Postów:
207
Dołączył:
2009-03-18
Napisano dnia: 2010-10-27 16:04:54
Więc tak to jest skompilowany skrypt na danie hydrauliki autu w którym znajduje się gracz.
Kod:
{$VERSION 3.1.0027}
{$CLEO .cs}
0000: NOP
:NONAME_2
wait 10
if
Actor.InCar($PLAYER_ACTOR, $CAR)
jf @NONAME_2
:NONAME_25
wait 10
if
00E1: player 0 pressed_key 111
jf @NONAME_25
03C0: $CAR = actor $PLAYER_ACTOR car
Car.ToggleHydraulics($CAR) = True
0A93: end_custom_thread
Co ja tu robię źlę że nie działa?
___________________
Postów:
878
Dołączył:
2009-01-20
Napisano dnia: 2010-10-27 16:07:48
Zamień:
Kod:
Actor.InCar($PLAYER_ACTOR, $CAR)
na
Kod:
00DF: actor $PLAYER_ACTOR driving
Sprawdzałeś, czy gracz jest w danym samochodzie, którego jeszcze nie znałeś ($CAR).
___________________
Administrator
Postów:
207
Dołączył:
2009-03-18
Napisano dnia: 2010-10-27 16:13:55
Ech nadal nie działa.
___________________