Twoja ulubiona misja: Wszystkie :) Pomógł: 3 razy Wiek: 20 Dołączył: 12 Gru 2010 Posty: 255 Skąd: Łódź
Wysłany: 14-05-2011, 16:16 Cheat Engine - Wymieniamy się adresami
Stworzyłem ten temat, aby wymieniać się adresami różnych danych w pamięci colobota. Możecie dawać tu wszystko co znajdziecie: od adresu prędkości gry do listy obiektów. Dawajcie pointery, bo adresy się zmianiają przy każdym uruchomieniu gry. Druga sprawa to offsety w danych o obiekcie. Najłatwiej szukać ich przeglądając pamięć w okolicy adresu wskazywanego przez pointer do aktywnego obiektu.
Sposób podawania adresów
Dając adres należy podać:
Nazwa
Opis
Typ zmiennej (4 bytes, float itp.)
Adres bazowy
Offset 1
Offset 2
...
Offset n
Na przykład tak:
Kod:
Nazwa: Prędkość gry
Opis: Szybkość gry domyślnie zmianiana klawiszami F4 (1x), F5 (1.5x) i F6 (2x). Przy zmianie na ujemną dzieją się dziwne rzeczy.
Typ zmiennej: Float
Adres bazowy: 005527BC (Można dać też jako domyślną formę zwracaną przez Pointer Scan: colobot.exe+001527BC (colobot.exe jest równe 00400000))
Offset 1: 4
Offset 2: 14C
Offset 3: 4
Offset 4: 14C
Offset 5: 244
Moje adresy
Daję moje adresy:
Kod:
Nazwa: Prędkość gry
Opis: Szybkość gry domyślnie zmianiana klawiszami F4 (1x), F5 (1.5x) i F6 (2x). Przy zmianie na ujemną dzieją się dziwne rzeczy.
Typ zmiennej: Float
Adres bazowy: 005527BC (colobot.exe+001527BC)
Offset 1: 4
Offset 2: 14C
Offset 3: 4
Offset 4: 14C
Offset 5: 244
Kod:
Nazwa: Lista obiektów (od DemoLisH)
Opis: Zawiera adres listy obiektów. Trzeba kliknąć [b]prawym przyciskiem myszy[/b] i wybrać [b]Show as hexadecimal value[/b].
Typ zmiennej: 4 Bytes
Adres bazowy: 0054BCBC (colobot.exe+0014BCBC)
Offset 1: 14C
Offset 2: 4
Offset 3: 0
Offset 4: 50
Offset 5: 0
Kod:
Nazwa: Aktywny bot (od DemoLisH)
Opis: Zawiera adres obiektu opisującego aktualnie zaznaczonego bota. Trzeba kliknąć [b]prawym przyciskiem myszy[/b] i wybrać [b]Show as hexadecimal value[/b].
Typ zmiennej: 4 Bytes
Adres bazowy: 0054BCBC (colobot.exe+0014BCBC)
Offset 1: 150
Offset 2: 3C
Offset 3: 8
Offset 4: 18
Kod:
Nazwa: Liczba obiektów
Opis: Po prostu liczba obiektów znajdujących się na mapie.
Typ zmiennej: 4 Bytes
Adres bazowy: 004E90AC (colobot.exe+000E90AC)
Offset 1: 0
Kod:
Nazwa: DoneResearch
Opis: Chyba każdy wie co to :P Ukończone badania (Centrum badawcze).
Typ zmiennej: Binary (Length 8)
Adres bazowy: 0040E80C (colobot.exe+0000E80C)
Offset 1: 0
Kod:
Nazwa: DoneOrgaResearch
Opis: Ukończone badania materii organicznej (Laboratorium).
Typ zmiennej: Binary (Length 8)
Adres bazowy: 0040E80C (colobot.exe+0000E80C)
Offset 1: 1
Kod:
Nazwa: EnableResearch
Opis: Dostępne badania (Centrum badawcze).
Typ zmiennej: Binary (Length 8)
Adres bazowy: 00412CF4 (colobot.exe+00012CF4)
Offset 1: 0
Kod:
Nazwa: EnableOrgaResearch
Opis: Dostępne badania materii organicznej (Laboratorium).
Typ zmiennej: Binary (Length 8)
Adres bazowy: 00412CF4 (colobot.exe+00012CF4)
Offset 1: 1
Kod:
Nazwa: Nick
Opis: Nick (nazwa profilu) gracza
Typ zmiennej: Text (Length 15)
Adres bazowy: 004CC234 (colobot.exe+000CC234)
Offset 1: 4
Kod:
Nazwa: Napis początkowy
Opis: Naciśnij klawisz F1 aby wyświetlić rozkazy na przekaźniku SatCom
Typ zmiennej: Text (Length 72)
Adres bazowy: 005389E4 (colobot.exe+001389E4)
Offset 1: 50
Moje offsety danych o obiekcie
Trzeba podać:
Nazwa
Opis
Typ zmiennej
Offset
Najłatwiej edytować te wartości dodając podany offset jako 5 w adresie Aktywny bot (patrz wyżej)
No to jedziemy:
Kod:
Nazwa: Nazwa (:P)
Opis: Nazwa kategorii robota. Widać w debuggerze cbot w oknie zmiennych (na dole) jako this.category (Zmieniłem sobie raz to na BotGrabberRoller :P)
Typ zmiennej: Text[25]
Offset: 48
Kod:
Nazwa: X
Opis: Pozycja X robota na mapie. Aby otrzymać prawidłową wartość należy dane z pamięci podzielić przez 4
Typ zmiennej: Float
Offset: 580
Kod:
Nazwa: Y
Opis: Pozycja Y robota na mapie. Aby otrzymać prawidłową wartość należy dane z pamięci podzielić przez 4
Typ zmiennej: Float
Offset: 588
Kod:
Nazwa: Z
Opis: Pozycja Z robota na mapie. Aby otrzymać prawidłową wartość należy dane z pamięci podzielić przez 4
Typ zmiennej: Float
Offset: 584
Kod:
Nazwa: Obrót
Opis: Obrót robota. Aby otrzymać prawidłową wartość należy dane z pamięci podzielić przez 6 i wziąść z tego tylko część ułamkową (Jeśli chcemy otrzymać wartość w stopniach należy to jeszcze na koniec pomnożyć przez 360)
Typ zmiennej: Float
Offset: 590
Kod:
Nazwa: Bateria
Opis: Adres obiektu baterii robota. Trzeba kliknąć [b]prawym przyciskiem myszy[/b] i wybrać [b]Show as hexadecimal value[/b].
Typ zmiennej: 4 Bytes
Offset: D8
Kod:
Nazwa: Niesiony obiekt
Opis: Adres obiektu niesionego przez robota. Trzeba kliknąć [b]prawym przyciskiem myszy[/b] i wybrać [b]Show as hexadecimal value[/b].
Typ zmiennej: 4 Bytes
Offset: DC
Kod:
Nazwa: energyLevel
Opis: Stan naładowania obiektu (aby otrzymać stan naładowania baterii robota należy odczytać to pole w obiekcie wskazywanym przez offset [b]Bateria[/b] (patrz wyżej))
Typ zmiennej: Float
Offset: E8
Kod:
Nazwa: lifeTime
Opis: Czas życia obiektu w sekundach
Typ zmiennej: Float
Offset: 100
Kod:
Nazwa: clip
Opis: Czy obiekt przenika przez inne obiekty? (kod [i]noclip[/i] ustawia na 0)
Typ zmiennej: Byte
Offset: 154
Kod:
Nazwa: selectable
Opis: Czy obiekt da się zaznaczyć?
Typ zmiennej: Byte
Offset: 124
Podsumowanie
Wszystkie adresy dołączam w postaci pliku Cheat Engine (*.CT). Zachęcam do dawania swoich adresów, gdyż mogą one się przyczynić do powstania multiplayera. Dla osób nie umiejących się posługiwać programem Cheat Engine niedługo dokończę mój poradnik.