De/Creating A Class System: Difference between revisions

From Valve Developer Community
< De
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
==Einleitung==
==Einleitung==
Hi und willkommen zum Coding Tutorial um ein Klassensystem zuerstellen.
Hi und willkommen zum Coding Tutorial um ein Klassensystem zuerstellen.
Das Klassensystem ist aus meiner [http://moonlight-interactive.sponsored.by.clanserver4u.de/armymod/ Army Mod].
Dass ist eine abgeschwächte Version mit nur 3 Klassen aber am ende könnt ihr das erweitern!
Damit es nicht alzu schwer wird werden wir nur 3 Klassen erstellen.
Damit es nicht alzu schwer wird werden wir nur 3 Klassen erstellen.
Sollten wir aber eine Klasse wechseln dann werden wir getötet und bekommen beim Spawn unsere Klasse.
Sollten wir aber eine Klasse wechseln dann werden wir getötet und bekommen beim Spawn unsere Klasse.
 
Aber der Server bekommt eine Standartklasse die jeder beim ersten Spawnen bekommt :)
Das Klassensystem ist aus meiner Army Mod.


Wir nehmen die Klassen Supporter, Medic und Assaulter
Wir nehmen die Klassen Supporter, Medic und Assaulter
Line 17: Line 18:
Quellcodedateien
Quellcodedateien
  dlls/player.cpp
  dlls/player.cpp
Das Klassensystem wird zu 100% Serverseitig sein aber der Client kann die Klassenwechseln ;)


Das wars auch schon :)
Das wars auch schon :)


==Der Anfang==
==Die Deklarationen==
   
   
Als erstes müssen wir uns an die Deklarationen machen.
Als erstes müssen wir uns an die Deklarationen machen.
Line 39: Line 43:
Jetzt werden wir uns der Klasse CBasePlayer wiedmen.
Jetzt werden wir uns der Klasse CBasePlayer wiedmen.


Als erstes Brauchen wir 2 Variablen.
Zum beginn werden wir einen neuen public und einen neuen Private bereich am ende von CBasePlayer adden.
Einmal eine für die Klasse und einmal eine für die Prüfung ob die Klasse später gültig ist.
Dort schreiben wir den gesamten Code für das Klassensystem rein!
 
Dazu machen wir am ende der Klasse einfach einen public und einen private bereich:
 
public:
private:
 
Jetzt setzen wir die neuen Variablen in den Private bereich


//Die neuen Bereiche für das Klassensystem!
  public:
  public:
  private:
  private:
  //Variable die unsere Klasse speichert
  int m_iClass;
 
  //Variable zur Prüfung auf gültige Klasse
  int m_iCurrentClass;
Jetzt haben wir schonmal die Variablen aber wir setzen noch eine Standatklasse die man beim ersten Spawn bekommen soll.


Zum Schluß brauchen wir noch eine Variable die prüft ob wir das erstemal spawnen.


Da jede Klasse unterschiedliches Leben und Rüstung besitzt müssen wir noch Variablen dafür deklarieren.
Nun werde ich euch alle Variablen die wir brauchen auflisten:


Wir brauchen nur für Rüstung noch Variablen!
Diese setzen wir alle private.




Line 104: Line 92:


Nun sollte eure Deklaration am ende der Klasse so aussehen:
Nun sollte eure Deklaration am ende der Klasse so aussehen:
public:
  void ChangeClass(int iClass);
  void CheckClassValue();
  bool IsFirstSpawn();
  void SetPlayerClass();
  void OnClassChange();
  int GetHealth();
  int GetMaxHealth();
  int GetArmor();
  int GetMaxArmor();
private:
  void SetClassAssaulter();
  void SetClassSupporter();
  void SetClassMedic();
  int m_iClass;
  int m_iCurrentClass;
  int m_iDefaultClass;
  bool m_bFirstSpawn;

Revision as of 03:14, 25 June 2006

Einleitung

Hi und willkommen zum Coding Tutorial um ein Klassensystem zuerstellen. Das Klassensystem ist aus meiner Army Mod. Dass ist eine abgeschwächte Version mit nur 3 Klassen aber am ende könnt ihr das erweitern! Damit es nicht alzu schwer wird werden wir nur 3 Klassen erstellen. Sollten wir aber eine Klasse wechseln dann werden wir getötet und bekommen beim Spawn unsere Klasse. Aber der Server bekommt eine Standartklasse die jeder beim ersten Spawnen bekommt :)

Wir nehmen die Klassen Supporter, Medic und Assaulter


Daten die gebraucht werden

Als erstes eine Auflistung was wir brauchen an Codedateien.

Header:

dlls/player.h

Quellcodedateien

dlls/player.cpp


Das Klassensystem wird zu 100% Serverseitig sein aber der Client kann die Klassenwechseln ;)

Das wars auch schon :)

Die Deklarationen

Als erstes müssen wir uns an die Deklarationen machen. Was wir brauchen sind einige Variablen und einige Funktionen. Aber als erstes werden wir ein Enum erstellen das die Werte unserer Klassen enthält!

Das Enum machen wir erstmal so:

enum
{
 Unassigned=0,
 Assaulter,
 Supporter,
 Medic
}

Später brauchen wir das für die Vergleiche!

Jetzt werden wir uns der Klasse CBasePlayer wiedmen.

Zum beginn werden wir einen neuen public und einen neuen Private bereich am ende von CBasePlayer adden. Dort schreiben wir den gesamten Code für das Klassensystem rein!

//Die neuen Bereiche für das Klassensystem!
public:
private:


Nun werde ich euch alle Variablen die wir brauchen auflisten:


Okay das wäre alles an Variablen!

Jetzt kommen unsere Methodendeklarationen.

Als erstes brauchen wir eine Methode die unsere Klasse wechselt. Diese setzen wir im public bereich.

Wir nennen sie mal void ChangeClass(int iClass):

Jetzt brauchen wir noch eine Methode die die gültigkeit deer Klasse prüft. Diese nennen wir void CheckClassValue();

Diese kommt auch in den public bereich.

Okay jetzt brauchen wir aber noch eine Methode die Prüft ob wir das erste mal Spawnen. Diese taufen wir auf den Namen bool IsFirstSpawn();

Diese setzen wir auch public.

Jetzt brauchen wir aber noch die Metoden die unsere Klassen verteil und noch Methoden die unsere Klassen setzt!

Zum verteilen nehmen wir mal void SetPlayerClass(); Diese Methode setzen wir public.

Und die Klassensetzen wir per void SetClassAssaulter(); ,void SetClassSupporter(); und void SetClassMedic();. Diese kommen wie unsere Variablen Private!


Jetzt brauchen wir noch eine Methode die uns beim Wechsel der Klasse tötet und uns einen Punkt gibt da wir sonst als Spieler einen Minuspunkt bekommen.

Diese nennen wir void OnClassChange(); und setzen sie public!

Da jede Klasse unterschiedliche Rüstung und Leben hat müssen wir noch Funktionen zum holen des Lebens und der Armor machen! Dazu nehmen wir int GetHealth(), int GetMaxHealth(), int GetArmor(), int GetMaxArmor();

Diese Methoden kommen alle public.

Nun sollte eure Deklaration am ende der Klasse so aussehen: