[Umfrage] Modideen

    • [Umfrage] Modideen

      Hallo Community,
      bald habe ich wieder Zeit und ich möchte eine weitere Server-Mod für Teeworlds 0.7 schreiben.

      Da so viele Server leer bleiben frage ich mich, was noch von benötigt wird für einen Umstieg auf tw 0.7

      Deshalb möchte ich zuerst Ideen sammeln und die beste/beliebteste Idee in Realität umsetzten

      Meine Ideen:
      • RPGTee
        • NPC bots, die mit einem chatten und die einem Quests geben
        • Bots geben einem verschiedene Antwortmöglichkeiten (In den chat 1, 2, 3, 4 schreiben)
        • keine moneytiles/afktiles
        • level und stats
        • Bosse, Mobs, Events
        • anders als bei anderen weniger OP waffen!
      • Teeworlds Infinity
        • Normales Teeworlds mit praktisch unendlich großer Spielerunterstützung
        • einziges limit: Speicher vom Server
        • Grundlage für viele weitere Mods

      • Gravity
        • Teeworlds im Weltall, bewegen mit jetpack, raumschiffe, schlachten?
        • Teeworlds-Jedis mit laserschwertern
      • Color-Based Battle Royale
      • Singleplayer?


      Die Möglichkeiten sind groß.

      Ich beschränke mich auf Server-Mods (zunächst).
      Was ich nicht machen werde sind
      • Block-Server
      • City-Server
      Ich bitte euch, eure eigenen Ideen vorzustellen und zu Teilen. Nicht alles ist umsetzbar.
      Jeder, der mir Helfen will, ist herzlich willkommen U+2764

      Mit freundlichen Grüßen,
      Assa

    • bezüglich singleplayer: es gab mal so ne adventure mod, wenn man die weiter ausbaut und ne verdammlt große lange map dazu macht pro "sequenz/kapitel" kann man dies gut verwirklichen,
      gegner waren dann meist bots oder iwelche geschosse inner gegend.
      würde fürs gameplay und so paar ideen (eventuell würd ich die mod miterweitern) wertvolle zeit opfern :)
    • Assa wrote:


      • Color-Based Battle Royale


      Also ... zCatch? Was mich reizen würde wäre sowas wie catch16 allerdings strikt in zweier-Teams bis das letzte eben übrig bleibt. Alle getroffenen sterben und gehören nicht zu dem Team von dem sie getroffen wurden. Aber wer braucht schon Battle Royale in Teeworlds.

      Und ich fände Pistol/Hammer-only Mods cool. Vielleicht sogar drei-Treffer-Pistol-Instagib oder so.
    • Sad wrote:


      Also ... zCatch? Was mich reizen würde wäre sowas wie catch16 allerdings strikt in zweier-Teams bis das letzte eben übrig bleibt. Alle getroffenen sterben und gehören nicht zu dem Team von dem sie getroffen wurden. Aber wer braucht schon Battle Royale in Teeworlds.

      Und ich fände Pistol/Hammer-only Mods cool. Vielleicht sogar drei-Treffer-Pistol-Instagib oder so.
      Fände ich eig auch geil nur Pistol dann wie bei DDRace, dass die Flugkurve gerade verläuft oder auch normal abfallend?

      Zu den Hammer mods da ist infection halt mega geil aber iwie gibts gar keinen server mehr
      ...
    • Update: ich bekomme andere Spieler dazu beliebige Farben und skins zu sehen, nur den eigenen spieler nicht :C

      Hier, der code mit dem ich das gemacht habe:
      Display Spoiler



      void CGameContext::ChangeClientInfos(int ClientID)
      {
      //Change Player Infos
      int color = GenColor();
      for(int p = 0; p < 6; p++)
      {
      m_apPlayers[ClientID]->m_TeeInfos.m_aUseCustomColors[p] = true;
      m_apPlayers[ClientID]->m_TeeInfos.m_aSkinPartColors[p] = color;
      }


      //Info Message
      CNetMsg_Sv_ClientInfo ClientInfoMsg;
      ClientInfoMsg.m_ClientID = ClientID;
      ClientInfoMsg.m_Local = 0;
      ClientInfoMsg.m_Team = m_apPlayers[ClientID]->GetTeam();
      ClientInfoMsg.m_pName = Server()->ClientName(ClientID);
      ClientInfoMsg.m_pClan = Server()->ClientClan(ClientID);
      ClientInfoMsg.m_Country = Server()->ClientCountry(ClientID);
      ClientInfoMsg.m_Silent = true;


      //Connection Message
      CNetMsg_Sv_ClientInfo NewClientInfoMsg;
      NewClientInfoMsg.m_ClientID = ClientID;
      NewClientInfoMsg.m_Local = 0;
      NewClientInfoMsg.m_Team = m_apPlayers[ClientID]->GetTeam();
      NewClientInfoMsg.m_pName = Server()->ClientName(ClientID);
      NewClientInfoMsg.m_pClan = Server()->ClientClan(ClientID);
      NewClientInfoMsg.m_Country = Server()->ClientCountry(ClientID);
      NewClientInfoMsg.m_Silent = true;
      for(int p = 0; p < 6; p++)
      {
      ClientInfoMsg.m_apSkinPartNames[p] = m_apPlayers[ClientID]->m_TeeInfos.m_aaSkinPartNames[p];
      ClientInfoMsg.m_aUseCustomColors[p] = m_apPlayers[ClientID]->m_TeeInfos.m_aUseCustomColors[p];
      ClientInfoMsg.m_aSkinPartColors[p] = m_apPlayers[ClientID]->m_TeeInfos.m_aSkinPartColors[p];


      NewClientInfoMsg.m_apSkinPartNames[p] = m_apPlayers[ClientID]->m_TeeInfos.m_aaSkinPartNames[p];
      NewClientInfoMsg.m_aUseCustomColors[p] = m_apPlayers[ClientID]->m_TeeInfos.m_aUseCustomColors[p];
      NewClientInfoMsg.m_aSkinPartColors[p] = m_apPlayers[ClientID]->m_TeeInfos.m_aSkinPartColors[p];
      }


      //Disconnect Message
      CNetMsg_Sv_ClientDrop Msg;
      Msg.m_ClientID = ClientID;
      Msg.m_pReason = "colorchange";
      Msg.m_Silent = true;


      //Send to Other players
      for(int i = 0; i < MAX_CLIENTS; ++i)
      {
      if(!m_apPlayers[i] || i == ClientID)
      continue;
      ClientInfoMsg.m_Local = 0;
      NewClientInfoMsg.m_Local = 0;
      Server()->SendPackMsg(&Msg, MSGFLAG_VITAL|MSGFLAG_NORECORD, i);
      Server()->SendPackMsg(&NewClientInfoMsg, MSGFLAG_VITAL|MSGFLAG_NORECORD, i);
      Server()->SendPackMsg(&ClientInfoMsg, MSGFLAG_VITAL|MSGFLAG_NORECORD, i);
      }


      //Send to ClientID
      Server()->SendPackMsg(&Msg, MSGFLAG_VITAL|MSGFLAG_NORECORD, ClientID);
      ClientInfoMsg.m_Local = 1;
      NewClientInfoMsg.m_Local = 1;
      Server()->SendPackMsg(&NewClientInfoMsg, MSGFLAG_VITAL|MSGFLAG_NORECORD, ClientID);
      Server()->SendPackMsg(&ClientInfoMsg, MSGFLAG_VITAL|MSGFLAG_NORECORD, ClientID);
      }


      int CGameContext::GenColor()
      {
      int sat, lgt, alp, color = 0;
      static int hue;
      hue ++;
      hue%=255;
      sat = 255;
      lgt = 0;
      alp = 255;


      color = (color&0xFF00FFFF) | (hue << 16);
      color = (color&0xFFFF00FF) | (sat << 8);
      color = (color&0xFFFFFF00) | lgt;
      color = (color&0x00FFFFFF) | (alp << 24);


      char aBuf[256];
      str_format(aBuf, sizeof(aBuf), "Generated color %d", color);
      Console()->Print(IConsole::OUTPUT_LEVEL_DEBUG, "server", aBuf);


      return color;
      }




      Teeworlds benutzt HSV farben, dafür ist die GenColor Funktion

      Der eigene Spieler sieht die Änderungen td nicht, ich vermute, dass man dafür noch eine flag setzten muss.

      Code auf Github

      The post was edited 3 times, last by Assa ().

    • New

      Hallo Community!
      Was soll ich als nächstes machen?
      Colorcatch/Catch16/Catch64 ist (an sich) fertig

      Zur Auswahl stehen:
      • RPGTee (s.o)
      • Bomb (ist bestimmt super mit den neuen skins)
      • Zombie Mod in zEsc/xPanic stil (nur weniger verbuggt)
      • Party/ParTee/TeeParty
        • viele Minispiele
          • Bomb wieder?
          • Zombies
          • Catch
          • verstecken (Ghost)
          • iDM
          • alles was euch einfällt (und möglich ist)
        • Teleporter
      • Yet another zombie mod
      • SnakeIO (Ja das geht)
      • Duell (Arena im 1o1)
      • Gravitee
      • Was euch sonst noch einfällt
      Was geht nicht durch die Engine?
      • Platformen, die sich bewegen können
      • Änderungen an der Map (Solide zu nicht solide tiles und umgekehrt)
      • eigene Entities (Schilde waffen und Herzen mit eigenen skins)
      • Fahrzeuge, die nicht aus Schilde, Herzen, Waffen und Lasern gebaut wurden
      • eigene Sounds (ich kann nur die benutzen, die der Client kennt)
      Was kann die Engine?
      • Skins beliebig ändern (neu!)
      • Dummies (muss ich selbst mal genau nachlesen)
      • Alles bereits bekannte?
      Was werde ich nicht programmieren?
      • City Server
      • Block Server
      • DDRace Server
      Ich werde nurnoch für Teeworlds 0.7.3 (btw. die aktuellste TW Version) programmieren.
      In zwei Wochen werde ich eine Umfrage starten ^.^

      Mit freundlichen Grüßen,
      Assa