Hier schonmal eine kurze Anleitung zum Modden:
(Wichtig: Es wäre schön wenn jemand zu einzelenen Punkten (z.B. Kompilieren unter Windows/Linux/Mac) ein ausführlicheres Tutorial schreibt! )
1. Lade dir die aktuellste Teeworlds-Src runter (Diese sich unter github.com/teeworlds/teeworlds )
2. Vergewissere dich dass du mindestens ein Code-Bearbeitungsprogramm auf deinem Computer installiert hast!
(Notepad++; Visual C++; etc.)
Zudem solltest du unter Windows Visual C++ (/-Express Edition) 2005/2008 installiert haben.
3. Entpacke die Src.
(Die Src beinhaltet alle Dateien, die TW nacher benötigt.)
_____________________________________________________________________________________________
Es gibt verschiedene Mod-Typen:
-Serverseitig (auch für den normalen Clienten zugänglich)
-Clientseitig (kompatible mit den normalen Servern)
-Beides zusammen (zum Spielen auf gemoddeten Servern,
die eine Veränderung des Clients benötigen)
Zum Anfang ist es ganz ratsam mit einer kleinen Server-Modifikation zu beginnen:
Geht dazu in euren Src-Ordner und öffnet folgende Ordner:
TW-Src/src/game/server/entities/
Dieser Ordner, beinhaltet alle Gameplay(Entities)-Objekte:
character.cpp (Charactere(/Tees)
projectile.cpp (Projectile [Grenade; Gun; Shotgun])
laser.cpp (Laser)
flag.cpp (Flagge)
pickup.cpp (Pickups[Herzen; Schilde; Waffen; Powerups(Ninja) ])
Für unsere kleine Modifikation benutzen wir character.cpp.
Ein kleiner Überblick über die Funktionen:
- Spawn (Wird aufgerufen, wenn der Tee spawnt)
- Destroy ("Zerstört" den Tee)
- SetWeapon (Wechselt zu der gewünschten Waffe, wenn diese Verfügbar ist)
- IsGrounded Gibt an, ob der Tee den Boden berührt [True] oder nicht [False])
- HandleNinja Beschreibt die Verwendung von "Ninja")
- DoWeaponSwitch (Wechselt die Waffe, (siehe auch SetWeapon))
- HandleWeaponSwitch (Prüft ob gewünschte Waffe verfügbar ist (siehe auch DoWeaponSwitch))
- FireWeapon (Feuert die Waffe ab, wenn möglich)
- HandleWeapons (Verwendung der Waffen (siehe auch HandleNinja/FireWeapon) & Ammo-Regen)
- GiveWeapon (Gibt dem Tee eine bestimmte Waffe, mit bestimmter Anzahl an Munition)
- GiveNinja (Gibt dem Tee das Powerup "Ninja" (siehe auch HandleNinja))
- SetEmote (Setzt dem Tee eine best. Emote)
- OnPredictedInput
OnDirectInput (Verarbeitung des Spieler-Inputs (der Spieler-Eingaben))
- Tick (Tick des Tees (wird 50 mal/sec. aufgerufen ->~alle 20 ms)
- TickDefered (Prüft die Bewegung des Tees)
- IncreaseHealth (Gibt dem Spieler eine gewisse Menge an Herzen)
- IncreaseArmor (Gibt dem Spieler eine gewisse Menge an Schilden)
- Die (Lässt den Tee sterben)
- TakeDamage (Gibt dem Spieler best. Schaden, von einem best. Spieler, mit einer best. Waffe)
- Snap ("Wird vom Clienten aufgerufen"- Gibt dem Clienten alle nötigen Infos zum Character)
Wir schauen uns einmal FireWeapon() genauer an:
Unser (noch recht einfaches) Ziel ist es, doppelt so schnell feuern zu können;
Dazu benötigen wir Informationen, wie festgelegt wird, wie lange dieses Nachladen dauert.
Gleich am Anfang begegnet uns:
Wenn wir nicht Nachgeladen haben, brechen wir den Vorgang ab.
--> "m_ReloadTimer" ist die Variable die wir brauchen
Aber wie können wir jetz machen, dass Wir schneller Nachladen ?
Ganz einfach:
Am Ende von FireWeapon() finden wir diesen Absatz (alternativ mit Suchfunktion arbeiten :) ).
Gehen wir das einmal durch:
= Wenn "m_ReloadTimer" 0 ist (also wenn wir nachgeladen haben)
Dann ist "m_ReloadTimer" = Die Nachladedauer, von der aktuellen Waffe (in ms) * (Ticks/sec [50]) /1000;
--> "m_ReloadTimer" = Die Nachladedauer, von der aktuellen Waffe (in Ticks);
Wir wollen doppelt so schnell schießen--> Nachladezeit halbieren; dafür teilen wir durch 2000 anstatt durch 1000
Datei abspeichern
Kompilieren (Tutorial folgt)
Nun habt ihr eine eigene kleine Modifikation,
aber Vorsicht:
Es ist nicht erlaubt, Mods unter normalen GameTypes laufen zu lassen;
schreibt daher in eure settings [sv_gametype mod].
Am besten ihr schaut euch selber mal in der Src um, bei Fragen einfach im Support-Bereich Posten,
[TIPP: Die Suchfunktion eures Editors kann euch oft schon helfen^^]
(Wichtig: Es wäre schön wenn jemand zu einzelenen Punkten (z.B. Kompilieren unter Windows/Linux/Mac) ein ausführlicheres Tutorial schreibt! )
1. Lade dir die aktuellste Teeworlds-Src runter (Diese sich unter github.com/teeworlds/teeworlds )
2. Vergewissere dich dass du mindestens ein Code-Bearbeitungsprogramm auf deinem Computer installiert hast!
(Notepad++; Visual C++; etc.)
Zudem solltest du unter Windows Visual C++ (/-Express Edition) 2005/2008 installiert haben.
3. Entpacke die Src.
(Die Src beinhaltet alle Dateien, die TW nacher benötigt.)
_____________________________________________________________________________________________
Es gibt verschiedene Mod-Typen:
-Serverseitig (auch für den normalen Clienten zugänglich)
-Clientseitig (kompatible mit den normalen Servern)
-Beides zusammen (zum Spielen auf gemoddeten Servern,
die eine Veränderung des Clients benötigen)
Zum Anfang ist es ganz ratsam mit einer kleinen Server-Modifikation zu beginnen:
Geht dazu in euren Src-Ordner und öffnet folgende Ordner:
TW-Src/src/game/server/entities/
Dieser Ordner, beinhaltet alle Gameplay(Entities)-Objekte:
character.cpp (Charactere(/Tees)
projectile.cpp (Projectile [Grenade; Gun; Shotgun])
laser.cpp (Laser)
flag.cpp (Flagge)
pickup.cpp (Pickups[Herzen; Schilde; Waffen; Powerups(Ninja) ])
Für unsere kleine Modifikation benutzen wir character.cpp.
Ein kleiner Überblick über die Funktionen:
- Spawn (Wird aufgerufen, wenn der Tee spawnt)
- Destroy ("Zerstört" den Tee)
- SetWeapon (Wechselt zu der gewünschten Waffe, wenn diese Verfügbar ist)
- IsGrounded Gibt an, ob der Tee den Boden berührt [True] oder nicht [False])
- HandleNinja Beschreibt die Verwendung von "Ninja")
- DoWeaponSwitch (Wechselt die Waffe, (siehe auch SetWeapon))
- HandleWeaponSwitch (Prüft ob gewünschte Waffe verfügbar ist (siehe auch DoWeaponSwitch))
- FireWeapon (Feuert die Waffe ab, wenn möglich)
- HandleWeapons (Verwendung der Waffen (siehe auch HandleNinja/FireWeapon) & Ammo-Regen)
- GiveWeapon (Gibt dem Tee eine bestimmte Waffe, mit bestimmter Anzahl an Munition)
- GiveNinja (Gibt dem Tee das Powerup "Ninja" (siehe auch HandleNinja))
- SetEmote (Setzt dem Tee eine best. Emote)
- OnPredictedInput
OnDirectInput (Verarbeitung des Spieler-Inputs (der Spieler-Eingaben))
- Tick (Tick des Tees (wird 50 mal/sec. aufgerufen ->~alle 20 ms)
- TickDefered (Prüft die Bewegung des Tees)
- IncreaseHealth (Gibt dem Spieler eine gewisse Menge an Herzen)
- IncreaseArmor (Gibt dem Spieler eine gewisse Menge an Schilden)
- Die (Lässt den Tee sterben)
- TakeDamage (Gibt dem Spieler best. Schaden, von einem best. Spieler, mit einer best. Waffe)
- Snap ("Wird vom Clienten aufgerufen"- Gibt dem Clienten alle nötigen Infos zum Character)
Wir schauen uns einmal FireWeapon() genauer an:
Unser (noch recht einfaches) Ziel ist es, doppelt so schnell feuern zu können;
Dazu benötigen wir Informationen, wie festgelegt wird, wie lange dieses Nachladen dauert.
Gleich am Anfang begegnet uns:
Wenn wir nicht Nachgeladen haben, brechen wir den Vorgang ab.
--> "m_ReloadTimer" ist die Variable die wir brauchen
Aber wie können wir jetz machen, dass Wir schneller Nachladen ?
Ganz einfach:
Am Ende von FireWeapon() finden wir diesen Absatz (alternativ mit Suchfunktion arbeiten :) ).
Gehen wir das einmal durch:
= Wenn "m_ReloadTimer" 0 ist (also wenn wir nachgeladen haben)
Dann ist "m_ReloadTimer" = Die Nachladedauer, von der aktuellen Waffe (in ms) * (Ticks/sec [50]) /1000;
--> "m_ReloadTimer" = Die Nachladedauer, von der aktuellen Waffe (in Ticks);
Wir wollen doppelt so schnell schießen--> Nachladezeit halbieren; dafür teilen wir durch 2000 anstatt durch 1000
Datei abspeichern
Kompilieren (Tutorial folgt)
Nun habt ihr eine eigene kleine Modifikation,
aber Vorsicht:
Es ist nicht erlaubt, Mods unter normalen GameTypes laufen zu lassen;
schreibt daher in eure settings [sv_gametype mod].
Am besten ihr schaut euch selber mal in der Src um, bei Fragen einfach im Support-Bereich Posten,
[TIPP: Die Suchfunktion eures Editors kann euch oft schon helfen^^]
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Patafix ()