Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
23.09.2004, 20:02
Ratman2000



Kann mir einer sagen, wo im HLSDK die OFFSET`s declariert sind?

Gefunden habe ich in Sourcecodes von Mods z.B. dieses:

#define OFFSET_TEAM 114 + EXTRAOFFSET

Nur woher wissen die, dass die 114 das Team Offset Flag ist?

Kann mir einer sagen, wo das declariert ist? Vielen Dank!

--

zum Seitenanfang zum Seitenende Profil || Suche
001
26.09.2004, 15:54
oxff



Das musst du selber ausrechnen, indem du die Klassendefinitionen in den Headern betrachtest.

--

mwcollect - mein Projekt | oxlog - mein blog | happyhardcore.com Stream - gute Musik

zum Seitenanfang zum Seitenende Profil || Suche
002
27.09.2004, 03:36
Ratman2000



Hallo,

Danke erst mal für deine Antwort !

Könntest du mir evtl sagen, in welchem Header ich die definition für das Team finde ? (damit ich so ca sehe, wie es aussieht wonach ich suche)
und mir sagen, wie man sich daraus (gehe mal von nem int aus) das Offset ausrechnet ?

Danke !

--

zum Seitenanfang zum Seitenende Profil || Suche
003
28.09.2004, 12:39
oxff



Das geht auch über entvars_t.team

--

mwcollect - mein Projekt | oxlog - mein blog | happyhardcore.com Stream - gute Musik


Dieser Beitrag wurde am 28.09.2004 um 12:49 von 0xFF bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
004
28.09.2004, 14:57
Ratman2000



Der wert ist aber leider immer = 0 :(
Also bleibt mir nur der Weg über die Offsets...
und CBase benutze ich nicht somit bekomm ich davon auch das team nicht.

Nur leider funktionieren die normalen Offsets nicht unter einer AMD64 Architektur Maschine... Da kommt immer irgent ein müll zurück...

Wo mir ein i386 oder i686 Compile ne 1 oder ne 2 liefert wird unter der AMD64 Maschine nen ca 6 stelliger int wert zurück geliefert der bei T und CT gleich ist leider

--

zum Seitenanfang zum Seitenende Profil || Suche
005
28.09.2004, 22:57
oxff



Compile für 32bit.

--

mwcollect - mein Projekt | oxlog - mein blog | happyhardcore.com Stream - gute Musik


Dieser Beitrag wurde am 28.09.2004 um 22:58 von 0xFF bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
29.09.2004, 11:23
Ratman2000



Wenn ichs für 32 bit Compiliere rennt es aber nicht auf einer AMD64 Maschine....

--

zum Seitenanfang zum Seitenende Profil || Suche
007
29.09.2004, 18:45
oxff



Natürlich, frag mal TTT, 'der kennt sich damit aus'.

--

mwcollect - mein Projekt | oxlog - mein blog | happyhardcore.com Stream - gute Musik

zum Seitenanfang zum Seitenende Profil || Suche
008
29.09.2004, 20:17
Ratman2000



Ja es geht das ich dann HL als 32 bit version laufen lasse... und dann kann ich auch die 32 bit plugins schreiben...

Ich möchte aber mit absicht auf 64 bit arbeiten :)

--

zum Seitenanfang zum Seitenende Profil || Suche
009
30.09.2004, 01:23
TheTinySteini



Vergiss es... mal ganz davon abgesehen, welches OS benutzt du eigentlich? Falls Windows, würde es mich doch schwer wundern, wenn du überhaupt nen 64bit Compiler hast. Anyways... 32bit und 64bit mixen sich nicht gut. Da du Half-Life an sich nicht neu kompilieren kannst (falls doch, zeig ich dich an =P), musst du also deine Plugins/Mods/wasauchimmer ebenfalls als 32bit kompilieren.

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
010
30.09.2004, 04:15
Ratman2000



Hö ?

Wieso sollte ich den HL neu compilieren wenn schon ne hlds_amd64 dabei iss ?????

Somit ist HL AMD64 (64 bit) fähig... es funzt dann auch nur das AMD64 Compile von Metamod...

Und genau deswegen schreib ich meinen mod auch auf AMD64 Architektur... Weil ich auf dem rechner ken 32 bit mehr nutzen will...

Und laufen tuht ein 64 bit Suse Linux... (Ne Spezial version)

--

zum Seitenanfang zum Seitenende Profil || Suche
011
30.09.2004, 07:49
WareWolf



..und der Rest der HL Gemeinde? oder wirds ne Private_Mod?

--

Sig as a brick ┴┬┴┬┴┬┴┬┴┬┴┬┴
WW

zum Seitenanfang zum Seitenende Profil || Suche
012
30.09.2004, 12:09
TheTinySteini



Ok, so ist das... wusste nicht, dass es nen amd64-enabled HLDS gibt. Spielen können da alle anderen ja trotzdem - Netzwerkdaten sind ja eh von Valve zusammengepackt worden.

Aber ich versteh überhaupt nicht, an welche Offsets du warum und wie rankommen willst? Sieht mir nach MetaMod oder sowas aus - das ist mal überhaupt nicht meine Welt (ich versteh nichtmal, wofür man den Kram überhaupt braucht...). Aber... dies hier kennst du?
http://www.mail-archive.com/hlcoders@list.valvesoftware.com/msg07225.html

Ich weiß nicht genau, woher die die Offsets haben (eventuell hat Valve mal nen Header veröffentlicht, aber vermutlich hatten die einfach zu viel Zeit...) - aber wenn du irgendwie ne Ahnung hast, wie die Klasse aussieht, musst du für jeden Pointer 8 statt 4 Byte rechnen, ebenso für longs. Bei int und float bleibt alles beim alten.

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
013
01.10.2004, 03:08
Ratman2000



Danke dir TheTinySteini !

Ja die Seite kannte ich schon nur die Einträge kenne ich leider alle schon.

Die Offsets brauch man z.b. um ganz einfach das Spieler Team zu bekommen...

Die meisten Mods fragen das Team ab, indem sie jedes mal das Model auslesen und dann zuordnen... aber das iss völliger mist...

Das geht ganz einfach so:
Quellcode:#if defined __linux__
    #define EXTRAOFFSET 5
#else
    #define EXTRAOFFSET 0
#endif // defined __linux__

#define OFFSET_TEAM 114 + EXTRAOFFSET

return *((int *)pPlayer->pev->pvPrivateData + OFFSET_TEAM);
Nur mein Problem ist dabei halt, dass auf einer Maschine mit AMD64 Architektur die Offsets wohl nimmer stimmen... Deswegen bekomme ich beim Team dann nur noch Müll zurück...

Kanst du mir den auch sagen, wie ich z.b. die 114 in nen 8 Byte int umrechnen kann ?

Also dass ich den Offset wieder nutzen kann halt ;)

DANKE !

--

zum Seitenanfang zum Seitenende Profil || Suche
014
01.10.2004, 15:18
theDon



http://predef.sourceforge.net/preos.html

__linux__ ist schwachfug.

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
015
01.10.2004, 23:12
TheTinySteini



Zitat:
Kanst du mir den auch sagen, wie ich z.b. die 114 in nen 8 Byte int umrechnen kann ?
Nein, genau das meinte ich mit "wenn du Ahnung hast, wie die Klasse aussieht"... die Offsets dort richten sich ja nach der Klasse, die benutzt wird. Wenn vor der Speicherstelle, an der das Team steht, nur ints kommen, dann würde sich der Offset unter amd64 nicht ändern. Offensichtlich ist das aber nicht der Fall... also werden vorher wohl z.b. Pointer kommen, und die verschieben den Offset, weil sie 8 Byte statt 4 Byte lang sind. Aber nun müsstest du wissen, _wieviele_ Pointer und/oder longs vor der Speicherstelle mit deinem Team kommen. Das kannst du aber nicht wissen, ohne die Klassendefinition zu haben (und selbst dann ist es... naja... mit raten verbunden). Deine Möglichkeit jetzt: eine Speicherstelle höher (115) scheint ja bei CS das Geld zu liegen. Also wirfst du nen Debugger an, holst dir $x Geld, machst nen Speicherdump, holst dir dann etwas mehr Geld und machst wieder nen Speicherdump. Dann vergleichst du, wo sich was geändert hat, usw... eventuell kannst du damit das neue Offset vom Geld rekonstruieren, und damit auf das vom Team zurückschließen. Der Umweg über's Geld einfach deswegen, weil man das schneller herbeicheaten kann, bei nem Teamwechsel ändert sich sicher deutlich mehr und die Speicherdump unterscheiden sich zu sehr als dass man fündig werden würde.

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche