To dość ciekawe pytanie, które skłoniło mnie do pogrzebania w EXE. Dowiedziałem się m.in. że tych markerów może być w grze jedynie... pięć, z czego na moim save 100% aktywny jest tylko jeden - w save mam jednak pozostałości po trzech markerach, co oznacza że w 'szczytowym momencie' na zwykłym SCM stworzone są na raz trzy takie markery - co za tym idzie, by skrypt CLEO był 'bezpieczny', nie powinien tworzyć więcej niż dwa markery na raz. Zapisują się one też w save, więc pozostaną w save nawet po usunięciu skryptu CLEO. Na szczęście jednak napisanie kodu ASM + funkcji SCM "nie zapisuj tego markera w save" jest aż za proste.
Co do wielkości markera, zajęło mi to dużo czasu, ale znalazłem sposób. Problem w tym, że przy testach nie udało mi się ustalić, jaką domyślną skalę ma ten marker z SCM, więc będziesz musiał się pobawić ze skalą samemu:
Kod jest skomplikowany, ale wątpię że da się prościej. Jedyne co musisz z niego rozumieć to stała, będąca skalą tych markerów - ustawiłem ją na domyślną skalę enexów z SA, ale nie wiem czy jest odpowiednia.
Dodaj to na sam szczyt skryptu:
Kod:
0A9F: 0@ = current_thread_pointer
000A: 0@ += 0x10
0A8D: 0@ = read_memory
0@ size 4 virtual_protect 0
000E: 0@ -=
@ENTRANCE_MARKER_SCALE
0A8E: 1@ =
0@ + 0x1
0A8C: write_memory
1@ size 4 value 2.0 virtual_protect 0
000A: 1@ += 0x8
0A8E: 2@ =
1@ + 0x4
0A8F: 2@ = 0x459350 -
2@
0A8C: write_memory
1@ size 4 value
2@ virtual_protect 0
000A: 1@ += 0xB
0A8E: 2@ =
1@ + 0x4
0A8F: 2@ = 0x72330D -
2@
0A8C: write_memory
1@ size 4 value
2@ virtual_protect 0
000E: 0@ -= 0x72330C
0A8C: write_memory 0x723307 size 1 value 0xE9 virtual_protect 1
0A8C: write_memory 0x723308 size 4 value
0@ virtual_protect 1
A to na sam koniec:
Kod:
:ENTRANCE_MARKER_SCALE
hex
6800000000
8D4D10
E800000000
8A560C
8A4610
E900000000
Co do mieszkań w misji złodzieja, powiem szczerze że nie wiem. Koordynaty mogą być wbite w EXE, ale na pewno nie są przypisane do modeli domów (chyba że do ID, ale o TAKI idiotyzm R* nie podejrzewam).