Nich übel... das wird vielen Codern helfen (auch mir ) Vor allem das Klassensystem ist echt ne dolle Sache (und vor allem, dass du deinen mühevoll zusammengecodeten Code der breiten Masse nach Code lechtzender Coder vorwirfst )
So Codernoobs wie ich können sowas echt gebrauchen, also in diesem Sinne - Thx
____________________________________
www.source-editing.de
Alle User sind herzlich willkommen im IRC-Channel des HLPs. Wenn ihr Fragen habt, gebt uns eine Chance, um zu antworten. 2 Minuten sind kein angemessenes Zeitfenster.
ok, ich habs mal versucht... es gibt leider ein paar Probleme. Ich hoffe, dass das nicht an meiner Inkompetenz liegt ...
Teilweise solltest du aber auch mal genau beschreiben, wo du den Quellcode genau hinstellen willst. Ich hatte zuerst Probleme, OnClientCommand zu finden. Du meintest wohl ClientCommand .... hab aber auch ein paar andere Probleme in meinem Code.... (zum Beispiel hat er m_iHealth nicht erkannt....
ich setzt mich mal wieder dran, sobald ich wieder Zeit hab.... ich hoffe, die Probleme liegen an meinem Code (und etwaigen Fehlern), denn wenn du ihn selbst noch nicht getestet hast, dann ist da vielleicht ein Fehler drin
____________________________________
www.source-editing.de
Alle User sind herzlich willkommen im IRC-Channel des HLPs. Wenn ihr Fragen habt, gebt uns eine Chance, um zu antworten. 2 Minuten sind kein angemessenes Zeitfenster.
Okay das mit der Methode werd ich ändern
Aber normalerweise muss er m_iHealth kennen!
Den damit wird das Spielerleben kontrolierte und diese Variable wird auch vererbt von CBaseCombatCharacter soweit ich weiß
Aber ich geh mal auf nummer sicher und werd das in der nächsten Zeit testen
So, ich hab das ganze mal getestet, um dir mal n bissl Arbeit abzunehmen (hoff ich mal).... (jetzt kurzerhand mit copy+paste ) Mein C++ erkennt die SetHealthValue-und SetMaxHealthValue-Funcs nicht an. Ich geb dir mal kurz nen groben Überblick
(Das is also wirklich nur Copy+Paste, nix verändert..... (kann sein, dass ich irgendwo nen copy/paste-Fehler gemacht hab ??? Wenns bei dir irgendwie gefunzt hatte, dann muss es das doch sein o.O)) :
alles in player.cpp:
error C2065: 'default_class': nichtdeklarierter Bezeichner
error C2228: Der linke Teil von '.GetInt' muss eine Klasse/Struktur/Union sein
Typ ist ''unknown-type''
error C2228: Der linke Teil von '.GetInt' muss eine Klasse/Struktur/Union sein
Typ ist ''unknown-type''
error C3861: 'default_class': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
error C2065: 'Invalid': nichtdeklarierter Bezeichner
error C2051: case-Ausdruck ist keine Konstante
error C2065: 'Magazin_357': nichtdeklarierter Bezeichner
error C2065: 'Magazin_SMG1': nichtdeklarierter Bezeichner
error C2065: 'Magazin_SMG1_Granates': nichtdeklarierter Bezeichner
error C2065: 'Magazin_Frag': nichtdeklarierter Bezeichner
error C2065: 'Magazin_AR2': nichtdeklarierter Bezeichner
error C2065: 'Magazin_AR2AltFire': nichtdeklarierter Bezeichner
error C3861: 'Magazin_Frag': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
error C3861: 'Magazin_357': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
error C3861: 'Magazin_357': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
error C3861: 'Magazin_SMG1': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
error C3861: 'Magazin_SMG1_Granates': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
error C3861: 'SetHealthValue': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
error C3861: 'SetMaxHealthValue': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
Das is nurn Feedback, brauchst jetzt nicht aufzuspringen und anzufangen wie wild nach dem Fehler zu suchen - bin selber auf Fehlerjagt
____________________________________
www.source-editing.de
Alle User sind herzlich willkommen im IRC-Channel des HLPs. Wenn ihr Fragen habt, gebt uns eine Chance, um zu antworten. 2 Minuten sind kein angemessenes Zeitfenster.
Ups
Zu den Magazin_ dazu hab ich eine Header mit den Definies gemacht
Die kannst du durch eine Anzahl deiner Magazingröße ersetzten
Zu default_class:
Du musst folgendes oben in der player.cpp schreiben:
//Der Server hat für alle die selbe Standartklasse!
//Der Admin kann die Standartklasse ändern!
ConVar default_class("default_class", "3", FCVAR_ARCHIVE, "Variable für Standartklasse!");
Steht ganz unten im Tutorial
Hier die Header makros:
#ifndef _Magazin_H
#define _Magazin_H
//Nur verändern wenn man die Munition der Waffenmagazine im script/code ändert!
//Legt die Magazine fest(Magazin und dann größe in Kugeln)!
#define Magazin_None 0
#define Magazin_Pistole 20
#define Magazin_357 6
#define Magazin_SMG1 50
#define Magazin_SMG1_Granates 1
#define Magazin_AR2 100
#define Magazin_AR2AltFire 1
#define Magazin_RPG 1
#define Magazin_Slam 1
#define Magazin_Frag 1
#define Magazin_Shotgun 8
#define Magazin_Crossbow 1
ok, das erklärt einiges
So, ich hab mir dann auch mal die Freiheit genommen deinen Code mal nach meinem C++ Wissen zu beackert....Ich hoffe, dass der Code auch im Netzwerk funzt, denn ich konnte ihn bis jetzt nur alleine ausprobieren (bin außerdem noch nicht so ganz conform mit dem hl2code)... Das is dabei rausgekommen - hab deinen Code recht stark gekürzt und die DefaultClass rausgenommen :
In die player.h
kommt irgendwo klar das enum :
// c++
enum
{
Unassigned = 0,
Assaulter = 1,
Supporter = 2,
Medic = 3,
};
// c++ end
Das hab ich zum Konstruktor hinzugefügt (dieses kurze Stückchen kommt in die player.cpp zum Konstruktor "CBasePlayer::CBasePlayer"):
// c++
m_iClass = 1;
m_iArmor = 0;
m_iCurrentClass = m_iClass;
// c++ end
dann noch die ganzen definitionen (ganz am ende von CBasePlayer : public CBaseCombatCharacter)
//c++
/* Original bei TVirus / Blackevil2
********************************************
**Klassensystem:
**Hier werden die Klassen verteilt!
**Es wird auch auf die richtigen Klassen geprüft!
********************************************
*/
public:
virtual void ChangeClass(int NewClass);
virtual int GetClass() ;
void OnClassChange();
int GetClassValue()const;
void SetPlayerClass();
private:
int m_iArmor;
int m_iClass;
int m_iCurrentClass;
void SetClassDefault();
void SetClassGroundUnit();
void SetClassSupportUnit();
void SetClassMedic();
//c++ end
Das war alles in der player.h. Jetzt kommt noch die player.cpp
//c++
int CBasePlayer::GetClassValue()const
void CBasePlayer::SetPlayerClass()
{
//Jetzt werden die Klassen verteilt:
switch(m_iClass)
{
case Unassigned:
//Hier setzen wir die Standart-Klasse!
SetClassDefault();
break;
case Assaulter:
SetClassGroundUnit();
break;
case Supporter:
SetClassSupportUnit();
break;
case Medic:
SetClassMedic();
break;
default:
SetClassDefault();
break;
}
}
void CBasePlayer::OnClassChange()
{
if(m_iClass!=m_iCurrentClass)
{
//Spieler killen und punkte um 1 erhöhen(wegen Selbstmord)!
CommitSuicide();
IncrementFragCount(1);
//Setzen damit wir nicht die Selbe Klassen haben!
m_iCurrentClass = m_iClass;
}
}
void CBasePlayer::SetClassDefault() // kann man eigentlich wegnehmen, wird nich gebraucht
//Assault:
void CBasePlayer::SetClassGroundUnit()
{
int iClass = atoi( engine->Cmd_Argv(1));
ChangeClass(iClass);
return true;
}
//c++ end
Zu guter Letzt hab ich dann noch was in die 'void CBasePlayer::Spawn( void )'
hinzugefügt, um es zu ermöglichen, dass der Spieler die Waffen erhält:
//c++
SetPlayerClass ();
//c++ end
Wie man sehen kann benutze ich SetPlayerClass(), um den Spielern über die einzelnen Klassen in der switch-Anweisung auszurüsten. Statt SetHealthValue hab ich SetHealth benutzt (SetArmorValue hat aber wiederum gefunzt).
ende meiner kleinen ausführung (puhh, hoffentlich keine rechtschreibfehler oder Programmierfehler )
//edit : doch n paar mehr proggsachen vergessen gehabt ..... puh, *fertigsei*
//edit2 : Nach 1-2 Jahren mal wieder angeschaut und etwaige Fehler herausgelesen (so z.b. die missverständliche Konstruktoranweisung)...
____________________________________
www.source-editing.de
Alle User sind herzlich willkommen im IRC-Channel des HLPs. Wenn ihr Fragen habt, gebt uns eine Chance, um zu antworten. 2 Minuten sind kein angemessenes Zeitfenster.
[Beitrag wurde 7x editiert, zuletzt von moc am 27.11.2007, 20:15]
Jo sieht gut aus hoffe das ich den code richtig gelesen hab den heute war Barrickade an unserer Schule da ich abgänger war und ich schon 7 Bier intus hab ;D aber soweit ich das sehe ist alles IO
Ich kann dir ja noch zeigen wie man die Spielergeschwindigkeit ändert hab mir da noch was gestern zusammen gebaut und es klappt super
nich so viel saufen, wenn noch nacher anständiger code rauskommen soll
denn : = Spagetticode
Ich habs halt noch nicht im Netzwerk ausprobieren können. (trifft sich eigentlich, denn das hier wird wohl meine erstmal letzte Handlung im hlportal sein, bis ich meinen neuen Router zum laufen gebracht hab ) Trotzdem hoffe ich, dass du was damit anfangen kannst
jetzt muss ich nur noch den Router richtig zum laufen bringen...
also dann, ran an die waffen - laden und schießen
____________________________________
www.source-editing.de
Alle User sind herzlich willkommen im IRC-Channel des HLPs. Wenn ihr Fragen habt, gebt uns eine Chance, um zu antworten. 2 Minuten sind kein angemessenes Zeitfenster.
nich so viel saufen, wenn noch nacher anständiger code rauskommen soll
denn : = Spagetticode
Ich habs halt noch nicht im Netzwerk ausprobieren können. (trifft sich eigentlich, denn das hier wird wohl meine erstmal letzte Handlung im hlportal sein, bis ich meinen neuen Router zum laufen gebracht hab ) Trotzdem hoffe ich, dass du was damit anfangen kannst
jetzt muss ich nur noch den Router richtig zum laufen bringen...
also dann, ran an die waffen - laden und schießen
h3h3 hab jetzt wieder mal 2 Stunden gepennt und kann wenigstens mit den Fingern bis 3 zählen ;D *joke*
Okay dein Code sie soweit korrekt aus
Falls du dir ein Menu coden will kann ich dir ja bald helfen
Ich werde in nächster Zeit mal mit dem VGUI rumspielen ;D und mal ein paar Menus coden wenn möglich
das triftt sich ja gut .... da bin ich auch grade dran
wenn du was drüber hast, dass nützlich is, dann mach halt mal im wiki nen crashcurs oder poste mal hier was und wenn das nicht geht, dann gibts ja immer noch icq (ich könnt schwören, dass ich dich in meiner liste hab ... das prüf ich mal bei gelegenheit nach.... )
/edit : dank dem e-freak geht mein router jetzt tadellos
____________________________________
www.source-editing.de
Alle User sind herzlich willkommen im IRC-Channel des HLPs. Wenn ihr Fragen habt, gebt uns eine Chance, um zu antworten. 2 Minuten sind kein angemessenes Zeitfenster.
[Beitrag wurde 1x editiert, zuletzt von moc am 05.07.2006, 20:17]
Das is ne echt übele Frage... ...Ich weiß halt nich so genau im Zusammenhang mim HL2Code, denn da hab ich halt noch nicht sooo viel gemacht.
Ich hab zwar mehrere Bücher zu C++ durchgearbeitet und verfüge auch über das relative C++Grundwissen (also Variablen, Funktionen, Klasse, Pointer, usw.), aber als ich dann recht gut vorbereitet an den Hl2-Code gekommen bin, da hab ich aber geschaut.... .... nix mit blasser Theorie....
Aber grundsätzlich versteh ichs schon und wäre auch dabei, wenn du was basteln willst (probieren geht über studieren )
(ach ja: ich hatte c++ schon zu hl1 Zeiten mit der Autorenedition versucht.... hat sich dann aber irgendwie mit der Zeit verlaufen.... das darf nicht nochmal passieren )
/edit : hab gerade den mod mit nem Freund im INet gezoggt und es funzt tadellos
____________________________________
www.source-editing.de
Alle User sind herzlich willkommen im IRC-Channel des HLPs. Wenn ihr Fragen habt, gebt uns eine Chance, um zu antworten. 2 Minuten sind kein angemessenes Zeitfenster.
[Beitrag wurde 1x editiert, zuletzt von moc am 06.07.2006, 15:36]
Klingt sowie bei mir ;D nur hatte ich schon viel prxis sogar mit der WinAPI um Progs zuschreiben
Hab auch schin einige kleine dlls gecodet und eins meiner Progs damit verbunden