Moin Moin an alle!
Ich wollte mal so ein paar kleine Sache zeigen, die vor allem Leute ansprechen sollen die grade erst angefangen haben in Teeworlds zu coden, aber schon wissen wie man kompiliert :D
Dann fangen wir auch gleich mal an, hier ist eine Liste der Sachen (wird noch erweitert) die man immer mal gerne verändern wollte (zumindest ging es mir so). Einfach anklicken, es sollte alles zu bewältigen sein, wenn es dennoch Probleme gibt einfach fragen.
Maximales Leben und Schild verändern.
Pistolenschaden verändern.
Endlose Munition für alle Waffen
Gametype ändern (eigener Modname)
Nachladezeit verändern für alle Waffen
Hammerschaden verändern
Endlosen Ninja
Startwaffen festlegen
Schrotflintenschaden verändern
Ninjaschaden verändern
Keine Items mehr auf der Map
Lust auf eine Aufgabe? Es ist möglich mit dem bisher gezeigten und einem tuning eine Instagibmod zu erstellen, versuchs doch einfach mal. Solltest du nicht weiterkommen, hier ist die Lösung in Textform:
Spoiler anzeigen
Das wars erstmal, ich füge bald noch mehr hinzu. Wenn ihr noch Ideen habt, dann sagt bescheid :D
PS: Vergesst nicht euren sv_gametype auf mod zu stellen sonnst werdet ihr vom Masterserver gebannt.
Ich wollte mal so ein paar kleine Sache zeigen, die vor allem Leute ansprechen sollen die grade erst angefangen haben in Teeworlds zu coden, aber schon wissen wie man kompiliert :D
Dann fangen wir auch gleich mal an, hier ist eine Liste der Sachen (wird noch erweitert) die man immer mal gerne verändern wollte (zumindest ging es mir so). Einfach anklicken, es sollte alles zu bewältigen sein, wenn es dennoch Probleme gibt einfach fragen.
Dazu musst du zu src\game\server\entities\character.cpp navigieren. Dort solltet ihr ab Zeile 656 diesen Code finden[cpp]bool CCharacter::IncreaseHealth(int Amount)
{
if(m_Health >= 10)
return false;
m_Health = clamp(m_Health+Amount, 0, 10);
return true;
}
bool CCharacter::IncreaseArmor(int Amount)
{
if(m_Armor >= 10)
return false;
m_Armor = clamp(m_Armor+Amount, 0, 10);
return true;
}[/cpp]Jetzt musst du nurnoch alle 10 durch eine gewünschte Zahl ersetzen und schon liegt das maximale Leben/Schild bei einem anderen Wert (Achtung, bei den meisten Clienten inklusive des Standart Clients werden nicht mehr als 10 Herzen, Schilder und Munnition angezeigt).
{
if(m_Health >= 10)
return false;
m_Health = clamp(m_Health+Amount, 0, 10);
return true;
}
bool CCharacter::IncreaseArmor(int Amount)
{
if(m_Armor >= 10)
return false;
m_Armor = clamp(m_Armor+Amount, 0, 10);
return true;
}[/cpp]Jetzt musst du nurnoch alle 10 durch eine gewünschte Zahl ersetzen und schon liegt das maximale Leben/Schild bei einem anderen Wert (Achtung, bei den meisten Clienten inklusive des Standart Clients werden nicht mehr als 10 Herzen, Schilder und Munnition angezeigt).
Dazu musst du zu src\game\server\entities\character.cpp navigieren. Dort solltet ihr ab Zeile 322 diesen Code finden[cpp]case WEAPON_GUN:[/cpp]Ein paar Zeilen weiter solltet ihr diesen Code finden[cpp]CProjectile *pProj = new CProjectile(GameWorld(), WEAPON_GUN,
m_pPlayer->GetCID(),
ProjStartPos,
Direction,
(int)(Server()->TickSpeed()*GameServer()->Tuning()->m_GunLifetime),
1, 0, 0, -1, WEAPON_GUN);[/cpp]Die dort zu findende 1 (nicht zu verwechseln mit der -1) müsst ihr einfach nur durch irgndeine gewünschte Zahl ersetzen.
m_pPlayer->GetCID(),
ProjStartPos,
Direction,
(int)(Server()->TickSpeed()*GameServer()->Tuning()->m_GunLifetime),
1, 0, 0, -1, WEAPON_GUN);[/cpp]Die dort zu findende 1 (nicht zu verwechseln mit der -1) müsst ihr einfach nur durch irgndeine gewünschte Zahl ersetzen.
Dazu musst du zu src\game\server\entities\character.cpp navigieren. Dort solltet ihr ab Zeile 244 diese Funktion finden finden[cpp]void CCharacter::FireWeapon()[/cpp]Ganz am Ende dieser Funktion findest du[cpp]if(m_aWeapons[m_ActiveWeapon].m_Ammo > 0) // -1 == unlimited
m_aWeapons[m_ActiveWeapon].m_Ammo--;[/cpp]Davor setzt du wie folgt einfach zwei Slashes[cpp]//if(m_aWeapons[m_ActiveWeapon].m_Ammo > 0) // -1 == unlimited
//m_aWeapons[m_ActiveWeapon].m_Ammo--;[/cpp]
m_aWeapons[m_ActiveWeapon].m_Ammo--;[/cpp]Davor setzt du wie folgt einfach zwei Slashes[cpp]//if(m_aWeapons[m_ActiveWeapon].m_Ammo > 0) // -1 == unlimited
//m_aWeapons[m_ActiveWeapon].m_Ammo--;[/cpp]
Dazu musst du zu src\game\server\gamemodes\mod.cpp navigieren. Dort solltest du ab Zeile 8 diesen Code finden[cpp] // Exchange this to a string that identifies your game mode.
// DM, TDM and CTF are reserved for teeworlds original modes.
m_pGameType = "MOD";[/cpp]Und jetzt einfach das MOD durch die Abkürzung deines Modnamens ersetzen und als sv_gametype mod angeben.
// DM, TDM and CTF are reserved for teeworlds original modes.
m_pGameType = "MOD";[/cpp]Und jetzt einfach das MOD durch die Abkürzung deines Modnamens ersetzen und als sv_gametype mod angeben.
Dazu musst du zu src\game\server\entities\character.cpp navigieren. Dort solltest du ab Zeile 244 diese Funktion finden[cpp]void CCharacter::FireWeapon()[/cpp]Ganz am Ende dieser Funktion findest du[cpp]if(!m_ReloadTimer)
m_ReloadTimer = g_pData->m_Weapons.m_aId[m_ActiveWeapon].m_Firedelay * Server()->TickSpeed() / 1000;[/cpp]Die 1000 kannst du durch eine beliebige Zahl ersetzen, dabei zu beachten ist, dass eine größere Zahl die Waffen schneller feuern lässt und eine kleiner Zahl die Waffen langsamer macht.
m_ReloadTimer = g_pData->m_Weapons.m_aId[m_ActiveWeapon].m_Firedelay * Server()->TickSpeed() / 1000;[/cpp]Die 1000 kannst du durch eine beliebige Zahl ersetzen, dabei zu beachten ist, dass eine größere Zahl die Waffen schneller feuern lässt und eine kleiner Zahl die Waffen langsamer macht.
Dazu musst du zu src\game\server\entities\character.cpp navigieren. Dort solltest du ab Zeile 244 diese Funktion finden[cpp]void CCharacter::FireWeapon()[/cpp]Der erste case beschreibt die die Funktionen des Hammers (u.a. den Schaden). Um diesen zu ändern musst du in Zeile 311[cpp] pTarget->TakeDamage(vec2(0.f, -1.f) + normalize(Dir + vec2(0.f, -1.1f)) * 10.0f, g_pData->m_Weapons.m_Hammer.m_pBase->m_Damage, m_pPlayer->GetCID(), m_ActiveWeapon);[/cpp]Die Anweisung[cpp]g_pData->m_Weapons.m_Hammer.m_pBase->m_Damage[/cpp]Durch eine beliebige Zahl ersetzen.
Dazu musst du zu src\game\server\entities\character.cpp navigieren. Dort solltest du ab Zeile 113 diese Funktion finden[cpp]void CCharacter::HandleNinja()[/cpp]Ziemlich am Anfang der Funktion solltest du in Zeile 118 diesen Code finden[cpp]if ((Server()->Tick() - m_Ninja.m_ActivationTick) > (g_pData->m_Weapons.m_Ninja.m_Duration * Server()->TickSpeed() / 1000))
{
// time's up, return
m_aWeapons[WEAPON_NINJA].m_Got = false;
m_ActiveWeapon = m_LastWeapon;
SetWeapon(m_ActiveWeapon);
return;
}[/cpp]Diesen kommentierst du einfach aus[cpp]/*if ((Server()->Tick() - m_Ninja.m_ActivationTick) > (g_pData->m_Weapons.m_Ninja.m_Duration * Server()->TickSpeed() / 1000))
{
// time's up, return
m_aWeapons[WEAPON_NINJA].m_Got = false;
m_ActiveWeapon = m_LastWeapon;
SetWeapon(m_ActiveWeapon);
return;
}*/[/cpp]
{
// time's up, return
m_aWeapons[WEAPON_NINJA].m_Got = false;
m_ActiveWeapon = m_LastWeapon;
SetWeapon(m_ActiveWeapon);
return;
}[/cpp]Diesen kommentierst du einfach aus[cpp]/*if ((Server()->Tick() - m_Ninja.m_ActivationTick) > (g_pData->m_Weapons.m_Ninja.m_Duration * Server()->TickSpeed() / 1000))
{
// time's up, return
m_aWeapons[WEAPON_NINJA].m_Got = false;
m_ActiveWeapon = m_LastWeapon;
SetWeapon(m_ActiveWeapon);
return;
}*/[/cpp]
Dazu musst du zu src\game\server\gamecontroller.cpp navigieren. Dort solltest du ab Zeile 357 diese Funktion finden[cpp]void IGameController::OnCharacterSpawn(class CCharacter *pChr)
{
// default health
pChr->IncreaseHealth(10);
// give default weapons
pChr->GiveWeapon(WEAPON_HAMMER, -1);
pChr->GiveWeapon(WEAPON_GUN, 10);
}[/cpp]Hier wird angegeben das man mit 10 Herzen, einem Hammer und einer Pistole mit 10 Schuss spawnt. Wenn du nun willst das man alle Waffen (inklusive Ninja) und 10 Rüstung von Anfang an hat, dann musst du folgende Zeilen in die Funktion einfügen[cpp]pChr->IncreaseArmor(10);
pChr->GiveWeapon(WEAPON_GRENADE, 10);
pChr->GiveWeapon(WEAPON_SHOTGUN, 10);
pChr->GiveWeapon(WEAPON_RIFLE, 10);
pChr->GiveWeapon(WEAPON_NINJA, -1);[/cpp]Die 10 bzw. -1 steht dabei für die Munition die man besitzt, -1 bedeutet das man endlos viel hat.
{
// default health
pChr->IncreaseHealth(10);
// give default weapons
pChr->GiveWeapon(WEAPON_HAMMER, -1);
pChr->GiveWeapon(WEAPON_GUN, 10);
}[/cpp]Hier wird angegeben das man mit 10 Herzen, einem Hammer und einer Pistole mit 10 Schuss spawnt. Wenn du nun willst das man alle Waffen (inklusive Ninja) und 10 Rüstung von Anfang an hat, dann musst du folgende Zeilen in die Funktion einfügen[cpp]pChr->IncreaseArmor(10);
pChr->GiveWeapon(WEAPON_GRENADE, 10);
pChr->GiveWeapon(WEAPON_SHOTGUN, 10);
pChr->GiveWeapon(WEAPON_RIFLE, 10);
pChr->GiveWeapon(WEAPON_NINJA, -1);[/cpp]Die 10 bzw. -1 steht dabei für die Munition die man besitzt, -1 bedeutet das man endlos viel hat.
Dazu musst du zu src\game\server\entities\character.cpp navigieren. Dort solltet ihr ab Zeile 345 diesen Code finden[cpp]case WEAPON_SHOTGUN:[/cpp]Ein paar Zeilen weiter solltet ihr diesen Code finden[cpp]CProjectile *pProj = new CProjectile(GameWorld(), WEAPON_SHOTGUN,
m_pPlayer->GetCID(),
ProjStartPos,
vec2(cosf(a), sinf(a))*Speed,
(int)(Server()->TickSpeed()*GameServer()->Tuning()->m_ShotgunLifetime),
1, 0, 0, -1, WEAPON_SHOTGUN);[/cpp]Die dort zu findende 1 (nicht zu verwechseln mit der -1) müsst ihr einfach nur durch irgndeine gewünschte Zahl ersetzen.
m_pPlayer->GetCID(),
ProjStartPos,
vec2(cosf(a), sinf(a))*Speed,
(int)(Server()->TickSpeed()*GameServer()->Tuning()->m_ShotgunLifetime),
1, 0, 0, -1, WEAPON_SHOTGUN);[/cpp]Die dort zu findende 1 (nicht zu verwechseln mit der -1) müsst ihr einfach nur durch irgndeine gewünschte Zahl ersetzen.
Dazu musst du zu src\game\server\entities\character.cpp navigieren. Dort solltet ihr ab Zeile 182 diesen Code finden[cpp]aEnts->TakeDamage(vec2(0, -10.0f), g_pData->m_Weapons.m_Ninja.m_pBase->m_Damage, m_pPlayer->GetCID(), WEAPON_NINJA);[/cpp]Dort ersetzt du einfach[cpp]g_pData->m_Weapons.m_Ninja.m_pBase->m_Damage[/cpp]Durch eine beliebeige Zahl.
Dazu musst du zu src\game\mapitems.h navigieren. Dort solltet ihr ab Zeile 37 diesen Code finden[cpp] ENTITY_ARMOR_1,
ENTITY_HEALTH_1,
ENTITY_WEAPON_SHOTGUN,
ENTITY_WEAPON_GRENADE,
ENTITY_POWERUP_NINJA,
ENTITY_WEAPON_RIFLE,[/cpp]Nun erweitert ihr den Code indem ihr hinter alles " = 0" schreibt:[cpp] ENTITY_ARMOR_1 = 0,
ENTITY_HEALTH_1 = 0,
ENTITY_WEAPON_SHOTGUN = 0,
ENTITY_WEAPON_GRENADE = 0,
ENTITY_POWERUP_NINJA = 0,
ENTITY_WEAPON_RIFLE = 0,[/cpp]Nun werden keine Items mehr gespawnt.
ENTITY_HEALTH_1,
ENTITY_WEAPON_SHOTGUN,
ENTITY_WEAPON_GRENADE,
ENTITY_POWERUP_NINJA,
ENTITY_WEAPON_RIFLE,[/cpp]Nun erweitert ihr den Code indem ihr hinter alles " = 0" schreibt:[cpp] ENTITY_ARMOR_1 = 0,
ENTITY_HEALTH_1 = 0,
ENTITY_WEAPON_SHOTGUN = 0,
ENTITY_WEAPON_GRENADE = 0,
ENTITY_POWERUP_NINJA = 0,
ENTITY_WEAPON_RIFLE = 0,[/cpp]Nun werden keine Items mehr gespawnt.
Lust auf eine Aufgabe? Es ist möglich mit dem bisher gezeigten und einem tuning eine Instagibmod zu erstellen, versuchs doch einfach mal. Solltest du nicht weiterkommen, hier ist die Lösung in Textform:
Schritt 1: Ändere die Namen der Gamemodes auf etwas was dir gefällt z.B.: iCTF
Schritt 2: Stell ein das keine Items mehr gespawnt werden.
Schritt 3: Stell ein das man nurnoch mit einem Laser spawnt der endlos Munition hat und sonst keine Waffen.
Schritt 4: Compilier das ganze und erstell eine config datei in der du den Laserschaden auf 10 tunest.
Schritt 5: ??????
Schritt 6: Profit! :D
Das ist jetzt zwar nur eingeschränkt eine Instagibmod, da der Laser getunt werden muss, aber es funktioniert :D
Schritt 2: Stell ein das keine Items mehr gespawnt werden.
Schritt 3: Stell ein das man nurnoch mit einem Laser spawnt der endlos Munition hat und sonst keine Waffen.
Schritt 4: Compilier das ganze und erstell eine config datei in der du den Laserschaden auf 10 tunest.
Schritt 5: ??????
Schritt 6: Profit! :D
Das ist jetzt zwar nur eingeschränkt eine Instagibmod, da der Laser getunt werden muss, aber es funktioniert :D
Das wars erstmal, ich füge bald noch mehr hinzu. Wenn ihr noch Ideen habt, dann sagt bescheid :D
PS: Vergesst nicht euren sv_gametype auf mod zu stellen sonnst werdet ihr vom Masterserver gebannt.
Dieser Beitrag wurde bereits 12 mal editiert, zuletzt von Pudding ()