Womit man anfangen kann

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Womit man anfangen kann

      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.
      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).
      Pistolenschaden verändern.
      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.
      Endlose Munition für alle Waffen
      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]
      Gametype ändern (eigener Modname)
      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.
      Nachladezeit verändern für alle Waffen
      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.
      Hammerschaden verändern
      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.
      Endlosen Ninja
      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]
      Startwaffen festlegen
      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.
      Schrotflintenschaden verändern
      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.
      Ninjaschaden verändern
      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.
      Keine Items mehr auf der Map
      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.

      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
      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


      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.

      Wenn dieser Post eine Kartoffel wäre, dann wäre es eine gute Kartoffel.
      Join pLevel!

      Dieser Beitrag wurde bereits 12 mal editiert, zuletzt von Pudding ()

    • KingteE :] [GER] schrieb:

      oder in dm.cpp ctf.cpp und mod.cpp den namen ändern (ist nicht zu übersehen. Sehr weit oben und dank Syntaxfärbung sticht es nochmal raus). :right:

      man könnte noch die reloadtime in character.cpp ändern.
      chatcmds in gamecontext.cpp oder noch besser ne eigende Datei dafür erstellen.
      etc.
      Das mit dem gamemode ändern mache ich noch dazu.
      Und die reloadtime werd ich auch noch hinzufügen, aber eigene Dateien erstellen will ich eigentlich nicht, weil das hier sollen eigentlich nur anfänger Tuts sein, damit sie erstmal sehen was sie damit so alles anfangen können :D

      Wenn dieser Post eine Kartoffel wäre, dann wäre es eine gute Kartoffel.
      Join pLevel!
    • d3Mon schrieb:


      Arg. Ich hab den Post von dem anderen User bereits gelöscht weil er spam ist , bevor du deinen Post mit der suchfunktion geschrieben hast >.< plz editier mal deinen Beitrag, sodas klar ist, warum du das geschrieben hast.


      @echtergangster2: An deine Frage, die d3Mon gelöscht hat:
      Du musst "Strg" plus "F" in deinem Editor drücken, damit du die Suchfunktion aufrufen kannst.

      d3Mon schrieb:


      Liebe grüße

      d3mon

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Toast ()