De/Creating A Class System

From Valve Developer Community
< De
Revision as of 16:15, 24 June 2006 by T-VIRUS (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Einleitung

Nun Zeige ich euch mal wie man sich in eine Mod Klassen wie Sniper, Supporter, Medic usw einbauen kann!

Was wir brauchen ist ein sdk für MP da ich es bis jetzt nur in einem MP einbauen konnte! Wer aber doch ein SP benutzt muss dies wahrscheinlich umstrukturieren!

Wir müssen für den MP die hl2mp_player.h/.cpp umbauen aber ihr müsst dann für SP scheinbar die hl2_player.h/.cpp umbauen!


Benötigte Daten und Infos

Als erstes müssen wir alle Daten zusammen suchen die wir brauchen!

Dazu gehören:

src/dlls/player.h
src/dlls/player.cpp
src/dlls/hl2mp/hl2mp_player.h
src/dlls/hl2mp/hl2mp_player.cpp

Aber nun müssen wir erstmal uns Gedanken machen was für Klassen wir brauchen!

Ich werde in diesem Tutorial einen einfach Sniper, einen Supporter und einen Medic bauen! Der Supporter und Medic haben aber noch keine Eigenschaften wie Ammo/Leben auffüllen!!!

In diesem Tutorial werden wir die Klassen nur beim Sterben wechseln und die Klassen werden über Konsole festgelegt!


Die hl2mp_player.h

Als erstes öffnen wir die hl2mp_player.h und erstellen alle wichtigen deklarationen!

Damit wir die Klassen per interger zuweisen können erstellen wir ein Enum das wir gleich ganz oben erstellen(außerhalb der Klasse CHL2MP_Player)

Das wie folgt aussieht:

//Das ist für die Einteilung der Klassen!
enum //CLASS_
{
    Invalid=-1,
    Unassigned,
    Sniper,
    Supporter,
    Medic
};

Somit haben wir schonmal die Zahlen für die Klassen diese Brauchen wir später um die Klassen festzulegen per ConVar(Konsole!)!

Dann machen wir am ende der Klasse CHL2MP_Player einen Public und einen Private bereich den wir dann zum schreiben unseres Klassensystems brauchen!


Als erstes müssen wir noch 2 Variablen in der Klasse CHL2MP_Player setzen die unsere Klasse und die Standart Klasse speichern:

int m_iClass;
int m_iDefaultClass;

Nun erstellen wir die Methoden die die eigenschaften der Klasse festelgen:

SetClassSniper();
SetClassSupporter();
SetClassMedic();

Diese Methoden sollen später nicht nur Waffen verteilen sondern auch das Leben und die Armor setzen! Aber dazu müssen wir noch extra Variablen in der Klasse einbauen also einfach 4 weitere Variablen im private bereich adden:

//Legt Leben/Maximales Leben fest:
int m_iHealth;
int m_iMaxHealth;
//Legt Rüstung/Maximale Rüstung fest:
int m_iArmor;
int m_iMaxArmor;

Somit haben wir schon mal die wichtigsten Deklarartionen erstellt aber wir sind noch nicht fertig!

Nun brauchen wir aber noch Methoden um die Klasse/Standartklasse zuholen:

//Holt den Integer für die Klassen:
void SetiClassConVar();
int  GetiClassConVar()const;
void SetiDefaultClassConVar();
int  GetiDefaultClassConVar()const;

Wir brauchen noch Get Methoden um später die Werte für Leben und Armor zuholen die wir aber in den SetClas() Methoden setzen lassen!

Dazu nehmen wir:

//Holt das Leben für unsere klasse fest:
int  GetClassHealth()const;
//Diese Methoden Holt für jede Klasse das Leben und die Armor
int GetClassMaxHealth()const;
//Holt die Armor für die Klasse Fest:
int  GetClassArmor()const;
//Diese Methoden holen für jede Klasse das Leben und die Armor
int GetClassMaxArmor()const;

Somit haben wir eigentlich die wichtigsten deklarationen fertig!!!


Die hl2mp_player.cpp

Jetzt kommen wir aber zum wichtigsten Teil des ganzen und zwar die Implementierung!

Als erstes erstellen wir ganz oben einige ConVars für die Konsole!

Hier seht ihr erstmal wie ein ConVar aufgebaut ist:


//TODO:Weiter machen! //Leider noch @WIP!