Hi,
hier ein kleines Tutorial, in dem ich euch erkläre, wie man simple Mods macht.
1. Benötigte Programme
Für alle Betriebssysteme:
- downloadet und unzippt bam 0.2.0 (Compiler)
- downloadet und unzippt die teeworlds-source
Für Windows:
- downloadet und installiert VisualC/C++ Express (coding)
- downloadet und installiert Phyton 2.x (kompilieren)
Für Mac OS X:
- downloadet und installiert Xcode
- downloadet libsdl und verschiebt SDL.framework in euren Xcode-Ordner nach /Library/Frameworks
2. Coding
Öffnet die Source. Öffnet: src/game/server/entities/character.cpp
Unbegrenzt Munition:
Findet und löscht:
Spoiler anzeigen
Jetzt habt ihr unendlich Munition, weil das Spiel nach Schüssen keine Munition mehr löscht. Ihr könnt aber auch bei dem Punkt Startwaffen unendlich Munition einstellen, indem ihr bei
Spoiler anzeigen
das x durch -1 erstetzt.
Schnelleres Schießen:
Findet:
Spoiler anzeigen
Und ersetzt es durch:
Spoiler anzeigen
Nun schießt ihr zweimal so schnell wie vorher, weil ihr eine Millisekunde durch eine halbe ersetzt.
Startwaffen:
Findet:
Spoiler anzeigen
Fügt am Ende hinzu:
Spoiler anzeigen
Ersetzt ### durch HAMMER, GUN, SHOTGUN, GRENADE oder RIFLE.
Ersetzt x durch die Munition, die man beim Start haben soll
Wenn ihr Ninja haben wollt, müsst ihr das hier einfügen:
Spoiler anzeigen
Ersetzt mit der Zeit in Millisekunden, die ihr Ninja am Anfang haben wollt.
Leben & Schild:
Findet:
Spoiler anzeigen
Und fügt am Ende hinzu:
Spoiler anzeigen
Nun startet ihr mit 5 Leben und 3 Schild.
Waffen Damge:
Sucht in character.cpp nach:
Spoiler anzeigen
Die erste Zahl (1) ist der Schaden, den die Gun pro Treffer macht. Für die amderen Waffen müsst ihr nur ein bisschen runterscrollen :D.
Für Laser öffnet: src/game/server/entities/laser.cpp.
Findet diese Zeile:
Spoiler anzeigen
Und ersetzt tuning.laser_damage durch den Schaden, den die Lasergun pro Treffer machen soll. Dies bewirkt nämlich, dass der Schaden nicht mehr aus den server-config (tune laser_damage) kommt, sondern direkt aus dem Code.
Chat Kommandos:
Öffnet: src/game/server/hooks.cpp
Sucht:
Spoiler anzeigen
Und fügt am Ende hinzu:
Spoiler anzeigen
Wenn der Spieler /info sagt, steht in seinem Chat:
***Test Mod!
***Made by me.
Modnamen ändern:
Öffnet: src/game/server/gamemodes
Hier seht ihr ctf, dm, tdm und mod als .cpp und .hpp. Als Beispiel zeige ich euch, wie man aus dem Gametype "MOD" den Gametype "TESTMOD" macht. Öffnet mod.cpp und mod.hpp.
Sucht in beiden Dateien dies:
Spoiler anzeigen
Ersetzt es durch:
Spoiler anzeigen
Öffnet: src/game/server/hooks.cpp
Sucht nach:
Spoiler anzeigen
Erstetzt es durch:
Spoiler anzeigen
Dies ist eine optionale Einstellung, die der Übersichtlichkeit dient.
Sucht nun in src/game/server/gamemodes/mod.cpp dies:
Spoiler anzeigen
Und Erstetzt es durch
Spoiler anzeigen
Damit wird in der Gametype-Anzeige ingame anstatt "MOD" "TESTMOD" angezeigt.
Öffnet: src/game/server/hooks.cpp
Sucht:
Spoiler anzeigen
Erstetzt es durch:
Spoiler anzeigen
Um den Gametype "TESTMOD" in den Serverconfig aufzurufen muss man jetzt nicht mehr "sv_gametype mod", sondern "sv_gametype testmod" angeben.
3. Kompilieren:
Erste bam Benutzung auf Windows:
Gebt in cmd (start>run>cmd) ein:
cd location/of/bam
make_win32_msvc.bat
Erste bam Benutzung auf Mac/Linux:
Gebt im Terminal (Programme/Dienstprogramme/Terminal) ein:
cd /Users/deinname/Desktop/bam
./make_unix.sh
Kompilieren von Teeworlds auf Windows:
Öffnet die Microsoft Visual Studio Kommandozeile.
Schreibt:
cd /Users/deinname/Desktop/teeworlds-mod/ (Wenn der Ordner mit der Teeworlds-src teeworlds-mod heißt, und auf dem Desktop ist. Also: hier Pfad angeben)
../bam/src/bam release (für das ganze Teeworlds)
../bam/src/bam server_release (für die Server von Teeworlds)
../bam/src/bam client_release (für den Client von Teeworlds)
Kompilieren von Teeworlds auf dem Mac:
Öffnet Terminal.
Schreibt:
cd /Users/deinname/Desktop/teeworlds-mod/ (Wenn der Ordner mit der Teeworlds-src teeworlds-mod heißt, und auf dem Desktop ist. Also: hier Pfad angeben)
../bam/src/bam release (für das ganze Teeworlds)
../bam/src/bam server_release (für die Server von Teeworlds)
../bam/src/bam client_release (für den Client von Teeworlds)
Wenn dann viele Fehlermelungen zum Thema osxlaunch oder SDL.framework kommen, müsst ihr folgendes tun:
Sucht dies in default.bam:
Spoiler anzeigen
Und ersetzt es durch:
Spoiler anzeigen
Danke für die Hilfe bei der Übersetzung aus dem Englischen an Tomboss.
hier ein kleines Tutorial, in dem ich euch erkläre, wie man simple Mods macht.
1. Benötigte Programme
Für alle Betriebssysteme:
- downloadet und unzippt bam 0.2.0 (Compiler)
- downloadet und unzippt die teeworlds-source
Für Windows:
- downloadet und installiert VisualC/C++ Express (coding)
- downloadet und installiert Phyton 2.x (kompilieren)
Für Mac OS X:
- downloadet und installiert Xcode
- downloadet libsdl und verschiebt SDL.framework in euren Xcode-Ordner nach /Library/Frameworks
2. Coding
Öffnet die Source. Öffnet: src/game/server/entities/character.cpp
Unbegrenzt Munition:
Findet und löscht:
if(weapons[active_weapon].ammo > 0) // -1 == unlimited
weapons[active_weapon].ammo--;
weapons[active_weapon].ammo--;
Jetzt habt ihr unendlich Munition, weil das Spiel nach Schüssen keine Munition mehr löscht. Ihr könnt aber auch bei dem Punkt Startwaffen unendlich Munition einstellen, indem ihr bei
weapons[WEAPON_###].ammo = x;
das x durch -1 erstetzt.
Schnelleres Schießen:
Findet:
if(!reload_timer)
reload_timer = data->weapons.id[active_weapon].firedelay * server_tickspeed() / 1000;
}
reload_timer = data->weapons.id[active_weapon].firedelay * server_tickspeed() / 1000;
}
Und ersetzt es durch:
if(!reload_timer)
reload_timer = data->weapons.id[active_weapon].firedelay * server_tickspeed() / 2000;
}
reload_timer = data->weapons.id[active_weapon].firedelay * server_tickspeed() / 2000;
}
Nun schießt ihr zweimal so schnell wie vorher, weil ihr eine Millisekunde durch eine halbe ersetzt.
Startwaffen:
Findet:
game.world.insert_entity(this);
alive = true;
player->force_balanced = false;
game.controller->on_character_spawn(this);
alive = true;
player->force_balanced = false;
game.controller->on_character_spawn(this);
Fügt am Ende hinzu:
weapons[WEAPON_###].got = true; //Waffe bei Spawn: ja=true; nein = false
weapons[WEAPON_###].ammo = x; //Munition der Waffe
weapons[WEAPON_###].ammo = x; //Munition der Waffe
Ersetzt ### durch HAMMER, GUN, SHOTGUN, GRENADE oder RIFLE.
Ersetzt x durch die Munition, die man beim Start haben soll
Wenn ihr Ninja haben wollt, müsst ihr das hier einfügen:
ninja.activationtick = ;
weapons[WEAPON_NINJA].got = true;
weapons[WEAPON_NINJA].got = true;
Ersetzt mit der Zeit in Millisekunden, die ihr Ninja am Anfang haben wollt.
Leben & Schild:
Findet:
game.world.insert_entity(this);
alive = true;
player->force_balanced = false;
game.controller->on_character_spawn(this);
alive = true;
player->force_balanced = false;
game.controller->on_character_spawn(this);
Und fügt am Ende hinzu:
health = 5;
ammo = 3;
ammo = 3;
Nun startet ihr mit 5 Leben und 3 Schild.
Waffen Damge:
Sucht in character.cpp nach:
case WEAPON_GUN:
{
PROJECTILE *proj = new PROJECTILE(WEAPON_GUN,
player->client_id,
projectile_startpos,
direction,
(int)(server_tickspeed()*tuning.gun_lifetime),
1, 0, 0, -1, WEAPON_GUN);
{
PROJECTILE *proj = new PROJECTILE(WEAPON_GUN,
player->client_id,
projectile_startpos,
direction,
(int)(server_tickspeed()*tuning.gun_lifetime),
1, 0, 0, -1, WEAPON_GUN);
Die erste Zahl (1) ist der Schaden, den die Gun pro Treffer macht. Für die amderen Waffen müsst ihr nur ein bisschen runterscrollen :D.
Für Laser öffnet: src/game/server/entities/laser.cpp.
Findet diese Zeile:
hit->take_damage(vec2(0,0), tuning.laser_damage, owner, WEAPON_RIFLE);
Und ersetzt tuning.laser_damage durch den Schaden, den die Lasergun pro Treffer machen soll. Dies bewirkt nämlich, dass der Schaden nicht mehr aus den server-config (tune laser_damage) kommt, sondern direkt aus dem Code.
Chat Kommandos:
Öffnet: src/game/server/hooks.cpp
Sucht:
if(config.sv_spamprotection && p->last_chat+time_freq() > time_get())
return;
p->last_chat = time_get();
return;
p->last_chat = time_get();
Und fügt am Ende hinzu:
if (!str_comp_nocase(msg->message, "/info"))
{
game.send_chat_target(client_id, "Test Mod!");
game.send_chat_target(client_id, "Made by me.");
}
else
{
game.send_chat_target(client_id, "Test Mod!");
game.send_chat_target(client_id, "Made by me.");
}
else
Wenn der Spieler /info sagt, steht in seinem Chat:
***Test Mod!
***Made by me.
Modnamen ändern:
Öffnet: src/game/server/gamemodes
Hier seht ihr ctf, dm, tdm und mod als .cpp und .hpp. Als Beispiel zeige ich euch, wie man aus dem Gametype "MOD" den Gametype "TESTMOD" macht. Öffnet mod.cpp und mod.hpp.
Sucht in beiden Dateien dies:
GAMECONTROLLER_MOD
Ersetzt es durch:
GAMECONTROLLER_TESTMOD
Öffnet: src/game/server/hooks.cpp
Sucht nach:
game.controller = new GAMECONTROLLER_MOD;
Erstetzt es durch:
game.controller = new GAMECONTROLLER_TESTMOD;
Dies ist eine optionale Einstellung, die der Übersichtlichkeit dient.
Sucht nun in src/game/server/gamemodes/mod.cpp dies:
gametype = "MOD";
Und Erstetzt es durch
gametype = "TESTMOD";
Damit wird in der Gametype-Anzeige ingame anstatt "MOD" "TESTMOD" angezeigt.
Öffnet: src/game/server/hooks.cpp
Sucht:
if(strcmp(config.sv_gametype, "mod") == 0)
Erstetzt es durch:
if(strcmp(config.sv_gametype, "testmod") == 0)
Um den Gametype "TESTMOD" in den Serverconfig aufzurufen muss man jetzt nicht mehr "sv_gametype mod", sondern "sv_gametype testmod" angeben.
3. Kompilieren:
Erste bam Benutzung auf Windows:
Gebt in cmd (start>run>cmd) ein:
cd location/of/bam
make_win32_msvc.bat
Erste bam Benutzung auf Mac/Linux:
Gebt im Terminal (Programme/Dienstprogramme/Terminal) ein:
cd /Users/deinname/Desktop/bam
./make_unix.sh
Kompilieren von Teeworlds auf Windows:
Öffnet die Microsoft Visual Studio Kommandozeile.
Schreibt:
cd /Users/deinname/Desktop/teeworlds-mod/ (Wenn der Ordner mit der Teeworlds-src teeworlds-mod heißt, und auf dem Desktop ist. Also: hier Pfad angeben)
../bam/src/bam release (für das ganze Teeworlds)
../bam/src/bam server_release (für die Server von Teeworlds)
../bam/src/bam client_release (für den Client von Teeworlds)
Kompilieren von Teeworlds auf dem Mac:
Öffnet Terminal.
Schreibt:
cd /Users/deinname/Desktop/teeworlds-mod/ (Wenn der Ordner mit der Teeworlds-src teeworlds-mod heißt, und auf dem Desktop ist. Also: hier Pfad angeben)
../bam/src/bam release (für das ganze Teeworlds)
../bam/src/bam server_release (für die Server von Teeworlds)
../bam/src/bam client_release (für den Client von Teeworlds)
Wenn dann viele Fehlermelungen zum Thema osxlaunch oder SDL.framework kommen, müsst ihr folgendes tun:
Sucht dies in default.bam:
settings.cc.flags:Add("-mmacosx-version-min=10.4",
"-isysroot /Developer/SDKs/MacOSX10.4u.sdk")
settings.link.flags:Add("-mmacosx-version-min=10.4",
"-isysroot /Developer/SDKs/MacOSX10.4u.sdk")
"-isysroot /Developer/SDKs/MacOSX10.4u.sdk")
settings.link.flags:Add("-mmacosx-version-min=10.4",
"-isysroot /Developer/SDKs/MacOSX10.4u.sdk")
Und ersetzt es durch:
settings.cc.flags:Add("-mmacosx-version-min=10.4",
"-isysroot /Developer/SDKs/MacOSX10.6.sdk")
settings.link.flags:Add("-mmacosx-version-min=10.4",
"-isysroot /Developer/SDKs/MacOSX10.6.sdk")
"-isysroot /Developer/SDKs/MacOSX10.6.sdk")
settings.link.flags:Add("-mmacosx-version-min=10.4",
"-isysroot /Developer/SDKs/MacOSX10.6.sdk")
Danke für die Hilfe bei der Übersetzung aus dem Englischen an Tomboss.
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von sha-256 ()