Postów:
248
Dołączył:
2009-06-27
Napisano dnia: 2010-12-02 16:25:43
Jak rozumiem, zaletą i głównym zastosowaniem zmiennych globalnych, np. $103, $PLAYER_ACTOR jest możliwość używania podstawionej wartości w więcej niż jednym skrypcie. Tymczasem..
przy:
Kod:
00A0: store_actor $PLAYER_ACTOR position_to $SPOTTED_SUSPECT_X $SPOTTED_SUSPECT_Y $SPOTTED_SUSPECT_Z // patrzcie na to
end
if and
not $UNITS >= 10
010F: player $PLAYER_CHAR wanted_level > 0
then
0A94: start_custom_mission "missions/radiowoz1" // i na to
w skrypcie .cs oraz przy:
Kod:
0376: 33@ = create_random_actor_at $SPOTTED_SUSPECT_X $SPOTTED_SUSPECT_Y $SPOTTED_SUSPECT_Z
w skrypcie *.cm wyłącza się gra. Natychmiastowo i bez raportu.
Jak obejść ten problem bez ingerowania w main.scm?
___________________
Postów:
878
Dołączył:
2009-01-20
Napisano dnia: 2010-12-02 17:35:55
Zauważyłem, że CLEO nie obsługuje komunikacji pomiędzy skryptem *.cs, a misją *.cm poprzez zmienne globalne.
Dlatego będziesz musiał użyć innego sposobu:
Ustawienie zmiennej o ID "51" na wartość "1" (możesz przypisać tu dowolną inną wartość.
Kod:
0AB3: var 51 = 1
Odczytanie zmiennej "51" i przypisanie jej do zmiennej lokalnej "0@".
Kod:
0AB4: 0@ = var 51
Numer zmiennej może być od 0 do 999.
___________________
Administrator
Postów:
248
Dołączył:
2009-06-27
Napisano dnia: 2010-12-02 21:00:13
To jest prawidłowy zapis? Sprawdź mnie:
Kod:
// cs
0AB3: var 1 = 1534.0
0AB3: var 2 = -1454.4
0AB3: var 3 = 23.1345
// cm
0AB4: 1@ = var 1
0AB4: 2@ = var 2
0AB4: 3@ = var 3
Car.Create(0@, #COPCARLA, 1@, 2@, 3@)
___________________
Postów:
628
Dołączył:
2009-01-22
Napisano dnia: 2010-12-02 21:36:08
Tak.
Poza tym, w CLEO da się ustawić tak, żeby zmienne globalne się komunikowały między sobą, trzeba je alokować na to samo ID. W takim skrypcie jak Ty dałeś, każda z tych nazw jest pewnie alokowana na inne ID, i przez to to nie działa + nadpisuje ważne zmienne globalne z normalnej gry (dlatego właśnie nikt nie poleca ich stosowania w CLEO).
___________________
Moderator
Postów:
248
Dołączył:
2009-06-27
Napisano dnia: 2010-12-02 22:24:41
Dzięki za profesjonalny język :-D, ale jak alokować ID zmiennej globalnej?
___________________
Postów:
628
Dołączył:
2009-01-22
Napisano dnia: 2010-12-02 22:31:16
Lepiej używać już zmiennych CLEO do komunikacji między skryptami, zmienne globalne mogą powodować niekompatybilność Twoich cleosów z modami main.scm.
Jakby się uprzeć, to można je też połączyć poprzez czytanie zmiennych lokalnych jednego skryptu przez drugi, ale to dość wysoka szkoła jazdy :)
___________________
Moderator
Postów:
248
Dołączył:
2009-06-27
Napisano dnia: 2010-12-02 22:38:41
No wiesz, co do kompatybilności z modami main.scm to nie sądzę żeby panom z R* chciało się wprowadzać zmiennej typu $SUSPECT_X do "stiuningowania" inteligencji oficerów przynajmniej do poziomu Need For Speed. A tym m.in. się teraz zajmuję :-)
Jeśli to wysoka szkoła jazdy, to ja dziękuję. Jeszcze do tego poziomu nie dojechałem. Jeśli chcesz, możesz napisz jak to zrobić, może bardziej doświadczeni ode mnie z tego skorzystają. Twój wybór.
---
Mam ten sam efekt. Próbuję to wrzucić to main.scm i działają zmienne globalne, ale mam masę innych błędów. Zobaczę czy da się naprawić.
___________________
Postów:
628
Dołączył:
2009-01-22
Napisano dnia: 2010-12-03 16:12:36
Chodzi że zmienne nie są zapisywane jako nazwy, tylko jako ID, stąd niekompatybilność. Użyj zmiennych CLEO, tak będzie najprościej.
___________________
Moderator
Postów:
248
Dołączył:
2009-06-27
Napisano dnia: 2010-12-03 19:18:39
To podaj przykład zmiennych CLEO i tych drugich, bo nie ogarniam.
___________________
Postów:
878
Dołączył:
2009-01-20
Napisano dnia: 2010-12-03 21:35:52
Zmienne lokalne:
Kod:
1@ = 3
Zmienne globalne:
Kod:
$ZMIENNA = 3
Zmienne CLEO:
Kod:
0AB3: var 1 = 3
___________________
Administrator
Postów:
248
Dołączył:
2009-06-27
Napisano dnia: 2010-12-04 09:16:10
Już przeniosłem wszystko do main.scm :-) Próbowałem robić tak z tym var'em i nie było crashu, ale pojazd mi nie jeździł. Miałem mniej więcej tak:
Kod:
{$CLEO .cs}
...
....: store_actor $PLAYER_ACTOR pos_to $SUSPECT_X $SUSPECT_Y $SUSPECT_Z
0AB3: var 1 = $SUSPECT_X
i tak dalej
...start_custom_mission "missions/miejski1"
end_custom_thread
Kod:
{$CLEO .cm}
...
0AB4: $SUSPECT_X = var 1
0AB4: $SUSPECT_Y = var 1
0AB4: $SUSPECT_Z = var 1
Car.DriveTo(0@, $SUSPECT_X, $SUSPECT_Y, $SUSPECT_Z)
...
Teraz, jak to napisałem, domyślam się, że był problem z ..globalnymi?
MakG - musisz zablokować funkcję wklejania kodu, bo przez to ludzie nie widzą własnych błędów :-D
___________________