Po kolei.
To co zacytowałeś od Sawika, to nie jest "funkcja która zwiera informacje o pasku". Jest tam po prostu modyfikowana zmienna w silniku odpowiedzialna za to, czy pasek many ma być ukrywany. Ten kod nie jest najlepiej napisany, powinno się podpisywać co dokładnie jest pod adresem którego się używa (
https://en.wikipedia.org/wiki/Magic_number_(programming)).
Adres paska tlenu jest zapisany w oGame.swimBar. Z punktu widzenia skryptów to liczba (int). Numer komórki w pamięci gdzie zaczyna się ten obiekt. Nie da się go wpisać z góry w skryptach jako numerka, bo tak jak większość adresów, za każdym włączeniem gry będzie inny. Tylko niektóre można ręcznie wpisać. Inne, tak jak ten, trzeba pobierać z już znanych obiektów.
oGame to unikatowy obiekt w silniku zawierający odniesienia do pozostałych ważnych, także unikatowych. Przez "unikatowy" mam na myśli że jest tylko jeden na raz takiej klasy. Jego klasa nazywa się oCGame. W Ikarusie ten obiekt jest przypisywany do instancji nazywanej MEM_Game. Nazwy obiektów nie mają znaczenia. Ja nazywam go oGame, bo wydawało mi się że gdzieś widziałem to w kodzie silnika. Być może nie jest to najlepsza nazwa. Możesz go nazywać np MEM_Game, tak jak jest to w Ikarusie.
Co do wyjaśnienia jak to działa. Mamy obiekty w silniku i obiekty w skryptach. Ikarus pozwala przypisać do obiektu w skryptach obiekt z silnika, którego adres znamy. Jednak z góry znamy tylko niektóre adresy. Nie znamy adresu oGame, ale znamy adres miejsca w pamięci gdzie ten adres jest - w Ikarusie ten adres jest w zmiennej "MEMINT_oGame_Pointer_Address" i w g2nk jest równy 11208836. Więc za pomocą funkcji MEM_ReadInt czytamy co jest w tym miejscu. Liczba którą przeczytaliśmy to z kolei adres oGame którego potrzebowaliśmy. Więc teraz używamy go z funkcją przypisującą obiekt z silnika do identyfikatora w skryptach - ta funkcja w nowym Ikarusie nazywa się "_^". Wygląda to po rozpisaniu tak:
const int adres_gdzie_jest_zapisany_adres_ogame = 11208836; //stała w Ikarus_Const_GX.d
var int adres_ogame; adres_ogame = MEM_ReadInt (adres_gdzie_jest_zapisany_adres_ogame);
MEM_Game = _^(adres_ogame); //przypisujemy obiekt z silnika do pustego obiektu w skryptach
Nie musimy tego jednak robić sami, bo zajmuje się tym funkcja MEM_InitGlobalInst(). Wystarczy ją wywołać.
Mamy już ten obiekt, do którego ze skryptów mamy dostęp przez "MEM_Game". Ten obiekt ma różne pola, głównie adresy innych charakterystycznych obiektów w silniku. Wśród nich są te paski. Adres paska tlenu jest w MEM_GAME.swimBar. Jak każdy adres, to jakaś liczba. Nie jest ważne dla nas jaka w tym akurat momencie. Ważne jest to że za pomocą tej Ikarusowej funkcji "_^" możemy przypisać to co jest pod tym adresem do skryptowego obiektu. Więc tworzymy w skryptach pusty obiekt klasy oCViewStatusBar:
instance swimBar (oCViewStatusBar);
I dokonujemy przypisania tego co jest pod naszym adresem do tego obiektu:
var int adresSwimBara;
adresSwimBara= MEM_Game.swimBar;
swimBar = _^(adresSwimBara);
Teraz to rozpisałem żebyś zobaczył że ten adres to po prostu liczba którą skądś bierzemy, ale można to zrobić w jednej linijce jak pokazałem powyżej.