[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 schrieb:


      • 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 schrieb:


      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:
      Spoiler anzeigen



      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

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Assa ()

      Beitrag von Sarah ()

      Dieser Beitrag wurde vom Autor gelöscht ().