Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
26.02.2001, 16:18
Hanky



Ich meine wenn man z.B. zu lange im Wasser ist, dann wird halt Energieabgezogen, kann man sich in der player.cpp (dlls) aus ansehn, aber was ich nicht weiss is, wie die healt.cpp bzw die hud.cpp(cl_dll) davon wind bekommen.

Ich bräuchte das mal genz dringend.....

...ich hoff meie Frage war verständlich....

..cya, hank¥

--

hankYs Page

zum Seitenanfang zum Seitenende Profil || Suche
001
26.02.2001, 18:42
UniSol07



MESSAGE_BEGIN(MSG_ONE, gmsgHealth, pev, NULL); //Baut verbindung auf
WRITE_BYTE(12); //Setzt leben auf 12
... //Ich weiss nicht genau, wieviele es sind (schau in Health.cpp unter MsgFunc_???
MESSAGE_END(); //Schliesst verbindung

--

Play HL and have fun

zum Seitenanfang zum Seitenende Profil || Suche
002
26.02.2001, 20:34
apfelkorn



super... sehr informativ
aaalso:
vom client zum server:
momentan geht es noch nicht anders, als dass du commands sendest, die der server in der clientcommand empfängt. Aber was (ausser VGUI-Befehlen soll der Client schon senden?)
andersum:
das benötigt mehrere "hinzufügungen" auf clientseite und serverseite. Falls es noch kein tut auf dhcc gibt, werde ich in den nächsten tagen eins schreiben...

--

zum Seitenanfang zum Seitenende Profil || Suche
003
26.02.2001, 21:13
Hanky



Jihaaa, jo, tipp mal :)

(hab nix verstanden....)

--

hankYs Page

zum Seitenanfang zum Seitenende Profil || Suche
004
26.02.2001, 21:33
Ducados



ähhhmmmm...
hankY, das du das nicht verstanden hast, liegt NICHT an dir *g*

aber bevor ich mir aber genauso einen abbreche, wie meine Vorredner, schau lieber mal auf http://www.planethalflife.com/hlsdk2/sdk/messaging.htm

--

zum Seitenanfang zum Seitenende Profil || Suche
005
26.02.2001, 21:39
DarKnight



Ausser VGUI befehlen? Ich würde sagen das ist das wichtigste. Natürlich wären bestimmte Statusmeldungen auch noch angebracht. Ausserdem bedaure ich es zutiefst, dass es nur mit Commands geht. Denn da ist immer eine Schwachstele für Cheater/Hacker.

--

void CHudSayText :: EnsureTextFitsInOneLineAndWrapIfHaveTo( int line ) -- Aja?

zum Seitenanfang zum Seitenende Profil || Suche
006
26.02.2001, 23:24
Blacky|SfP



Hacker? Wie willste Half-life hacken?

--

zum Seitenanfang zum Seitenende Profil || Suche
007
26.02.2001, 23:57
DarKnight



*lol* Schonmal was vom Speed Hack gehört? Man kann HL leichter hacken als du denkst. Was denkst du denn sind die meissten "Cheats"?

--

void CHudSayText :: EnsureTextFitsInOneLineAndWrapIfHaveTo( int line ) -- Aja?

zum Seitenanfang zum Seitenende Profil || Suche
008
27.02.2001, 02:08
[NBK]Cyber



naja der Speedhack hat aber auch nicht direkt was mit HL zu tun...

--

zum Seitenanfang zum Seitenende Profil || Suche
009
27.02.2001, 12:48
DarKnight



Okay war vielleicht kein gutes Beispiel....

--

void CHudSayText :: EnsureTextFitsInOneLineAndWrapIfHaveTo( int line ) -- Aja?

zum Seitenanfang zum Seitenende Profil || Suche
010
27.02.2001, 19:02
Another1



Ich würde mal wissen bei wieviel spielen der speed hack noch funzt ... ich glaub bisher hat fast kein spiel diese art von hacken (systemzeit schneller laufen lassen) wirklich beachtet!

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
011
27.02.2001, 20:17
Mouse2004



die meisten cheats sind ja sowieso nich von HL abhängig sondern verändern die informationen im RAM oder laufen in windows (z.B. Aimbot) , sind also theoretisch (falsch geschrieben (?)) auf jedes spiel anwendbar

--

http://www.f4g.de das deutsche MOD-Network
Die Idee ist gut, doch die Welt noch nicht bereit... (by Tocotronic)

zum Seitenanfang zum Seitenende Profil || Suche
012
27.02.2001, 20:21
DarKnight



Ja den Speed Hack kann man eigentlich überall laufen lassen. Denn JEDES Programm ist doch von der Systemzeit abhängig.

--

void CHudSayText :: EnsureTextFitsInOneLineAndWrapIfHaveTo( int line ) -- Aja?

zum Seitenanfang zum Seitenende Profil || Suche
013
27.02.2001, 22:07
Prefect



OT: Das mit dem Speedhack ist eigentlich voll lächerlich von Valve, den eigentlich müsste der Server ja überprüfen, ob die Informationen die da vom Client kommen, richtig sind. Ehrlich gesagt müsste dieser Cheat allein durch gesundes Design unmöglich gemacht werden. /me schüttelt immer noch den Kopf....

Um ON-Topic zu bleiben:
Es gibt eine ganze Reihe Kommunikationsmöglichkeiten:

Client->Server:
a) Commands schicken, so wie's die VGUI-Menüs machen
b) Information kann auch über usercmd_t mitgetunnelt werden. Diese Struktur wird einmal pro Clientframe gesendet und beinhaltet Bewegungen des Spielers etc..
Diese Struktur wird auf der Clientseite in input.cpp / CL_CreateMove() vorbereitet und auf der Serverseite in client.cpp / CmdStart() in Empfang genommen.
Diese Methode ist allerdings nur sehr beschränkt einsetzbar, da du die usercmd_t selbst nicht verändern darfst. Allerdings ist sie durch Skripts nicht abzufangen (wohl aber durch Proxies), bietet also einen geringen Schutz.

Server->Client:
a) Commands schicken (pfnClientCommand oder so).
b) Die üblichen Messages, die schon im ersten Reply angesprochen werden. Auf der Serverseite werden die Messages zunächst mit REG_USER_MSG registriert (siehe player.cpp), dann mit MESSAGE_BEGIN()/WRITE_xxx()/MESSAGE_END() verschickt. Dafür gibt's eigentlich genügend Beispiele im Code.
Auf der Clientseite werden sie dann mit DECLARE_MESSAGE und HOOK_MESSAGE registriert. Eigentlich behandelt werden sie dann in einer neuen Funktion die typischerweise MsgFunc_XXX() genannt wird. Diese Funktion liest dann die eigentlichen Daten mit BEGIN_READ()/READ_xxxx()
c) Je nach Message bietet es sich an, diese als Event zu verschicken. Besonders Messages die etwas mit Specialeffects (also nicht mit dem HUD) zu tun haben ist das eine gute Idee. Events werden auf der Serverseite zuerst mit PRECACHE_EVENT() registriert, und dann mit PLAYBACK_EVENT[_FULL]() ausgelöst. Auf der Clientseite müssen alle Events in events.cpp / EV_HookEvents() bzw.hl/hl_events.cpp / Game_HookEvents() nochmals registriert werden. Außerdem muß natürlich eine Funktion programmiert werden, die dieses Event dann entgegennimmt. Dafür gibt's in ev_hldm.cpp ne Menge Beispiele.
Zu alledem mußt du außerdem noch eine Datei events/namedesevents.sc in deinen Mod-Ordner einfügen. Was in der Datei drinsteht ist völlig egal, sie darf auch leer sein.
d) Der Server sendet an den Client auch noch ein paar andere, spezielle Messages, z.B. die Daten der Entites (in client.cpp / AddToFullPack()) sowie ein paar Zusatzinfos speziell für den Spieler (client.cpp / UpdateClientData()). Unter Umständen kannst du da auch ein paar Infos "Huckepack" verschicken. Auf der Client-Seite werden diese Messages in entity.cpp entgegengenommen. Bei dieser Art der Messages könne die Strukturen, auf denen sie aufgebaut sind, auch nicht modifiziert werden, dafür haben die aber XuserX-Variablen, die vom normalen Half-Life noch nicht verwendet werden.

Ich muß noch hinzufügen, dass beim Verschicken von Messages nach C->S b) und S->C d) beachtet werden sollte, dass die delta.lst stimmt. Diese Datei bestimmt nämlich, welcher Teil der Strukturen mit welcher Präzision übers Netzwerk geschickt wird. Wenn du normalerweise nicht benötigte Felder der Strukturen benutzt, oder eine höhere Präzision benötigst (z.B. weil du bei einem Bitfeld mehr Bits in Anspruch nimmst), mußt du die delta.lst entsprechend verändern.

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
014
28.02.2001, 16:29
Hanky



Naja...das mit dem Hacken intressiert mich weniger....

...ich will halt nen H2o Balken usw.... also wie man nen Balken macht, das weiss ich, und auch wo der hin muss..(datei meine ich) aber wie ich dann
die Breite angebe weiss ich nicht.!!!

--

hankYs Page

zum Seitenanfang zum Seitenende Profil || Suche
015
01.03.2001, 15:59
Prefect



? Das ist eigentlich keine Codingfrage, das ist ne Frage der Geometrie.

Also sagen wir du hast H20-Werte von 0-100, dann berechnet sich die Breite ganz einfach als H2O-Wert * maximale_Balkenbreite / 100.

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
016
01.03.2001, 18:21
Hanky



MUHARRRRRR.... okay, mein Prob ist, wie ich den H2O-Wert überhaupt auf die Client Seite bekomme.
Das mit dem Energieabzug usw. steht leidr nicht in der client, sondern in der hl DLL.

ansonsten wüsste ich das auch...

--

hankYs Page

zum Seitenanfang zum Seitenende Profil || Suche
017
02.03.2001, 16:58
Another1



mit ner message ... schau dir mal die message gmsgHealth an .. suche einfach danach und probier das aus ... dann auf client.dll die mit der gmsgHealth verbunden message abfange ... schau da in health.cpp wie die das gemacht haben .. irgendwas mit MsgFunc_Health oder oso

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche