Postów:
294
Dołączył:
2011-07-27
Napisano dnia: 2012-08-11 14:52:03
Mam pytanie dotyczące akapitu "Zmienne CLEO" w tym artykule:
http://www.gta-mods.pl/artykuly/53/zmienne
Czy to oznacza że w CLEO można ustawić więcej zmiennych lokalnych niż 33?
Postów:
628
Dołączył:
2009-01-22
Napisano dnia: 2012-08-11 21:21:38
Korzystając z tych opcodów, teoretycznie tak.
___________________
Moderator
Postów:
294
Dołączył:
2011-07-27
Napisano dnia: 2012-08-12 10:06:11
Bo chciałem zrobić skrypt dodający więcej ikonek na mapie/radarze, tak około 50 nowych i właśnie zabrakło mi zmiennych. Mógłbyś pokazać jak wykorzystać te opcody w takim skrypcie:
Kod:
thread 'NONAME'
0A95: enable_thread_saving
:NONAME_13
if
$ONMISSION == 0
else_jump @NONAME_562
1@ = Marker.CreateIconWithoutSphere(48, 1837.0, -1682.0, 14.0)
.
.
.
49@ = Marker.CreateIconWithoutSphere(48, -2551.115, 193.657, 5.2)
50@ = Marker.CreateIconWithoutSphere(48, 2507.44, 1242.31, 9.833)
:NONAME_537
$ONMISSION == 0
else_jump @NONAME_13
wait 0
jump @NONAME_537
:NONAME_562
Marker.Disable(1@)
.
.
.
Marker.Disable(49@)
Marker.Disable(50@)
:NONAME_677
$ONMISSION == 1
else_jump @NONAME_13
wait 0
jump @NONAME_677
0A93: end_custom_thread
Postów:
628
Dołączył:
2009-01-22
Napisano dnia: 2012-08-12 13:28:19
Ja nie ufam tym zmiennym (inne mody mogą je nadpisać i nawet o tym nie będziesz wiedziać), a stawianie markerów przez CLEO to trochę zły pomysł (po zapisaniu gry i usunięciu takiego modu markery zostaną na zawsze. Dobrze jednak, że dałeś 0A95, wtedy da się to jakoś jeszcze przetrawić). Jak bardzo chcesz ich użyć, najlepiej zrobić to tak (przeorganizowałem lekko ten skrypt, by był czytelniejszy):
Kod:
0A95: enable_thread_saving
true
0001: wait 0 ms
if
0038: $ONMISSION == 0
then
if
0039: 31@ == 0
1@ = Marker.CreateIconWithoutSphere(48, 1837.0, -1682.0, 14.0)
.
.
.
29@ = Marker.CreateIconWithoutSphere(48, x, y, z)
30@ = Marker.CreateIconWithoutSphere(48, x, y, z)
0AB3: var 423 =
30@
.
.
.
{
49@}
30@ = Marker.CreateIconWithoutSphere(48, -2551.115, 193.657, 5.2)
0AB3: var 442 =
30@
{
50@}
30@ = Marker.CreateIconWithoutSphere(48, 2507.44, 1242.31, 9.833)
0AB3: var 443 =
30@
0006: 31@ = 1
end
else
if
0039: 31@ == 1 Marker.Disable(
1@)
.
.
.
0AB4: 30@ =
var 423
Marker.Disable(
30@)
.
.
.
0AB4: 30@ =
var 442
Marker.Disable({
49@}
30@)
0AB4: 30@ =
var 443
Marker.Disable({
50@}
30@)
0006: 31@ = 0
end
end
end
Uważaj jednak na ten skrypt - tworząc 50 ikon na raz jest szansa, że uderzysz w limit 175 ikon i np. ten wskaźnik celu zaznaczany klawiszem PPM przestanie działać.
___________________
Moderator
Postów:
294
Dołączył:
2011-07-27
Napisano dnia: 2012-08-12 14:58:18
Chyba wszystko dobrze zrobiłem, ale część ikonek się nie pojawia. Prawdopodobnie przekroczyłem limit bo nie ma też tych żółtych plamek pokazujących lotniska. Wiesz może ile tych ikonek jest standardowo w grze?
I powiedz mi o co chodzi z tym nadpisaniem zmiennych?
Edit:
W sumie mogłoby być tak że np. po wciśnięciu danego klawisza pokazywałaby się połowa z tych ikonek, a po wciśnięciu innego pokazywałaby się druga część, a ta pierwsza by znikała. A obydwie części byłby w osobnych skryptach, które łączyłby jeden wspólny z powyższym sterowaniem. Dałoby się tak zrobić?
Postów:
628
Dołączył:
2009-01-22
Napisano dnia: 2012-08-13 13:37:04
artgin89 napisał(a):
W sumie mogłoby być tak że np. po wciśnięciu danego klawisza pokazywałaby się połowa z tych ikonek, a po wciśnięciu innego pokazywałaby się druga część, a ta pierwsza by znikała. A obydwie części byłby w osobnych skryptach, które łączyłby jeden wspólny z powyższym sterowaniem. Dałoby się tak zrobić?
Tak.
A liczba ikonek standardowo jest różna, zależy od postępu w grze. Ale skoro tu przekroczyłeś limit, to obstawiam że jest to 130-140.
___________________
Moderator
Postów:
294
Dołączył:
2011-07-27
Napisano dnia: 2012-08-13 19:29:06
A mógłbyś pokazać jak powinien wyglądać taki skrypt z tym sterowaniem odnoszącym się do dwóch osobnych skryptów?