Czy wiesz, że... możesz podsyłać newsy, artykuły, pliki i zdjęcia?
Strona główna forum Szukaj Rejestracja
Witaj, nieznajomy!
Poprzedni 1 Następny
Postów: 1004 Dołączył: 2009-01-20
#
Zacząłem sobie robić otwierającą i zamykającą bramę. Mój skrypt na obecną chwilę wygląda tak
Kod:
{$VERSION 3.1.0027}
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP
$BRAMA1 = Object.Create(988, 2464.1626, -1656.2, 12.28)
$BRAMA2 = Object.Create(988, 2464.1626, -1661.7, 12.28)
Object.Angle($BRAMA1) = -90.0
Object.Angle($BRAMA2) = -90.0


00A5: $test1 = create_car #GREENWOO at 2442.8848 -1658.3671 13.308
0175: set_car $test1 z_angle_to 271.3024
0229: set_car $test1 color_to 2 1
05CB: AS_actor $PLAYER_ACTOR enter_car $test1 as_driver 0 ms 


:czy_przed_brama
wait 0
if
00EC:   actor $PLAYER_ACTOR 1 near_point 2463.635 -1658.5243 radius 10.0 10.0
jf @czy_przed_brama
Player.CanMove($PLAYER_CHAR) = False
:brama_start
wait 0
if
034E: move_object $BRAMA1 to 2464.1626 -1651.2 13.4 speed 0.1 0.1 0.1 flag 11
034E: move_object $BRAMA2 to 2464.1626 -1666.7 13.4756 speed 0.1 0.1 0.1 flag 11   
jf @brama_start

//=============
Player.CanMove($PLAYER_CHAR) = True
:czy_za_brama
wait 0
if
80EC: not actor $PLAYER_ACTOR 1 near_point 2463.635 -1658.524 radius 10.0 10.0
jf @czy_za_brama

wait 7000
:brama_start111
wait 0
if
034E: move_object $BRAMA1 to 2464.2305 -1659.0134 13.302 speed 0.1 0.1 0.1 flag 11
034E: move_object $BRAMA2 to 2464.1626 -1666.7 13.4756 speed 0.1 0.1 0.1 flag 11   
jf @brama_start111 
0A93: end_custom_thread 

Problem polega na tym że brama nie chce się zamykać. Wydaje mi się że powinno wystarczyć dać pętle sprawdzającą czy aktor znajduje się poza wyznaczoną strefą, a potem opcod, który powoduje żeby brama się zamykała. W sumie taki jak przy otwieraniu bramy tylko że s powrotnymi współrzędnymi. Jednak to nie działa i nie wiem czemu. Ktoś wie jak jak to naprawić?
Postów: 628 Dołączył: 2009-01-22
#
Generalnie skrypt powinien działać, zapomniałeś tylko o 'if and' przy opcodach 034E. Ponadto ten opcode nie ma flagi 11 - są tylko 0 i 1, i określają one to, czy brama ma przestać się przesuwać gdy coś z nią koliduje (1), czy też nie (0).

___________________
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
#
A właśnie tego nie mogę zrozumieć dlaczego tek skrypt z tym opcodem 034E: musi być napisany w ten sposób bo inaczej nie działa
Kod:
:czy_przed_brama
wait 0
if
00EC:   actor $PLAYER_ACTOR 0 near_point 2463.635 -1658.5243 radius 10.0 10.0
jf @czy_przed_brama

:brama_open
wait 0
if
034E: move_object $BRAMA1 to 2464.1626 -1651.2 13.4 speed 0.1 0.1 0.1 flag 0
034E: move_object $BRAMA2 to 2464.1626 -1666.7 13.4756 speed 0.1 0.1 0.1 flag 0   
jf @brama_open

a nie np. w ten
Kod:
:czy_przed_brama
wait 0
if
00EC:   actor $PLAYER_ACTOR 0 near_point 2463.635 -1658.5243 radius 10.0 10.0
jf @czy_przed_brama
034E: move_object $BRAMA1 to 2464.1626 -1651.2 13.4 speed 0.1 0.1 0.1 flag 0
034E: move_object $BRAMA2 to 2464.1626 -1666.7 13.4756 speed 0.1 0.1 0.1 flag 0

Przecież to nie jest opcod sprawdzający tylko wykonywujący, a z tego co wiem to takie opcody daje się poza pętlą.
Postów: 878 Dołączył: 2009-01-20
#
Opcode 034E to jednocześnie funkcja sprawdzająca i wykonująca (IF and SET). Przesuwa obiekt i zwraca prawdę, jeśli obiekt znajdzie się w docelowej pozycji.

___________________
Administrator
Postów: 628 Dołączył: 2009-01-22
#
W sumie mała jest na to szansa, ale być może zmienne globalne w CLEO w tym wypadku coś psują. Zamień je na lokalne.

___________________
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