De/Adding New Ammotypes

From Valve Developer Community
Jump to navigation Jump to search

Einführung

Hallo,

In diesem Tutorial wird das erstellen eines neuen Munitionstypens erkärt.

Dieses richtet sich wie alle Tutorials auf den eine Multiplayer Mod.

Was benötigt wird:

-Wie immer C++ Kenntnisse
-Noch VC++ 2003

Warnungen:

-Da ich den SDK 1 Code nutze weiß ich noch nicht ob es im SDK 2 Code was anders gibts aber es sollte gleich sein!

Munitionstyp einbauen

Als erstes muss der Munitionstyp in den Gamerules festgelegt werden.

Dazu muss man die hl2mp_gamerules.cpp öffnen und die Funktion CAmmoDef *GetAmmoDef().

In dieser Funktion werden die Munitionstypen definiert.

Dort fügt man eine neue Zeile hinzu.

Als Beispiel wird diese Zeile verwendet:

def.AddAmmoType("SMG2", DMG_BULLET, TRACER_LINE_AND_WHIZ, 0,0, 300, BULLET_IMPULSE(200, 1225),	0 );

Nun haben wir den neuen Munitionstypen SMG2 definiert.

Dieser ist eine Ableitung von dem SMG1 Munitionstypen nur hat er mehr Munitions als Reserve.

Das wars auch schon mit dem definieren. Nun muss aber noch ein Item(Entity) her damit man den Munitionstypen auch aufheben kann.

Item(Entity) für Ammo coden

Nun muss ein Item(Entity) erstellt werden, damit man die Munition auch aufheben kann.

Damit man beginnen kann, muss man nun die Item_Ammo.cpp öffnen. In dieser Datei sind die Klassen sowie die Implementierungen festgelegt.

Dort wird das Item(Entity) auch definiert und implementiert. Dazu wird der SMG1 Code kopiert und umbennant.

Nun fügt man alle Codes am besten vor der CItem_AmmoCrate klasse ein.

Unsere Klassen heißen statt:

-CItem_SmallBoxSMG1
-CItem_BigBoxSMG1

Nun:

-CItem_SmallBoxSMG2
-CItem_BigBoxSMG2

Wenn alles eingebaut wurde muss man noch 2 Sachen ändern. Diese änderungen betreffen beide CSMG2 Klasse in der bool MyTouch( CBasePlayer *pPlayer ) Methode.

Dort müssen wir in der Abfrage if (ITEM_GiveAmmo( pPlayer, SIZE_AMMO_SMG1_LARGE, "SMG1")) zwei fehler ändern.

Und zwar müssen wir SIZE_AMMO_SMG1_ entweder neudefinieren für das SMG2 oder können direkt die Größe der aufnehmbaren Munition definieren.

Wenn man es selbst definieren will muss nur die jeweilige Zahl an Kugel eingefügt werden die man beim berühren aufnehmen soll.

Falls ihr es aber definieren wollt, dann müsst ihr die items.h öffnen.

Dort müsst ihr nur zwei neue defines einbauen.

Das war das erste Problem.

Das zweite ist nur der Name der von SMG1 zu SMG2(eurem Munitionstypen) geändert werden muss.

Wenn ihr alle Namen von der Klasse, den Methoden dann habt ihr nur den Code fertig aber das Entity folgt sogleich im nächsten Teil.

Munitionstyp in eine Waffe implementieren