Server-Dummy erstellen

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

    • Server-Dummy erstellen

      Hallo,

      ich bin nun schon fast einen Monat hier registriert, und dachte, ich mach auch mal ein Tutorial.

      Ich werde nicht zeigen wie ihr euren Dummy mit einem Aimbot verseht, ggf nur, wie ihr ein simples Moving- (nicht Pathfind) System erstellen könnt.

      Datein, an denen Änderungen vorgenommen werden:
      • gamecontext.cpp & .h
      • server.cpp & .h
      • player.h
      • ggf. character.cpp & h (soon)


      Zuerst öffnen wir die gamecontext.h und schreiben folgendes in den public Bereich:
      [cpp]int CreatedDummys;[/cpp]
      Hiermit werden wir dir erstellten Dummys zählen, um mehrere erstellen zu können.

      Nun navigieren wir in die player.h, und schreiben in den public Bereich folgendes:
      [cpp]bool m_IsDummy;[/cpp]
      Mit diesem Boolean können wir bestimmen, ob ein Spieler ein Dummy ist (true) oder eben nicht (false). Dies ist besonders wichtig, wenn wir nicht wollen, dass unser Dummy im Serverbrowser angezeigt wird, da dies zu einem Masterserverbann führen kann.

      Jetzt können wir in gamecontext.cpp gehen, und dort die haupt Funktion zum erstellen des Dummys schreiben.
      Spoiler anzeigen
      [cpp]void CGameContext::CreateNewDummy()
      {
      m_apPlayers[7 + CreatedDummys] = new(7 + CreatedDummys) CPlayer(this, 7 + CreatedDummys, TEAM_RED); //Neuen Spieler mit der ClientID 7 + CreatedDummys erstellen, und ins team red stecken
      m_apPlayers[7 + CreatedDummys]->TryRespawn(); //Der Dummy versucht zu respawnen

      Server()->DummyHelper(CreatedDummys); //Diese Funktion schreiben wir uns gleich in die server.h!
      m_apPlayers[7 + CreatedDummys]->m_IsDummy = true; // m_IsDummy wird auf true gesetzt, damit wir diesen auch als solchen identifizieren können
      m_apPlayers[7 + CreatedDummys]->m_TeeInfos.m_UseCustomColor = false; // keine Costum Color: Kann auf wunsch geändert werden, dafür einfach mal nach UseCostumColor suchen, und schauen, wie man es verwendet.

      m_pController->OnPlayerInfoChange(m_apPlayers[7 + CreatedDummys]); // Update Info
      CreatedDummys++; //Hochzählen
      }[/cpp]


      Nun müssen wir noch in die server.cpp, um dor die DummyHelper Funktion zu schreiben. Die server.cpp findet ihr hier: \src\engine\server
      Spoiler anzeigen
      [cpp]void CServer::DummyHelper(int BotNum)
      {
      const char *pNames[] = { //Array für die Namen
      "Name1",
      "Name2",
      "Name3",
      "Name4",
      "Name5",
      "Name6",
      "Name7",
      "Name8"
      };
      const char *pClans[] = { //Array für die Clans
      "Clan1",
      "Clan2",
      "Clan3",
      "Clan4",
      "Clan5",
      "Clan6",
      "Clan7",
      "Clan8"
      };
      str_copy(m_aClients[BotNum + 7].m_aName, pNames[BotNum], MAX_NAME_LENGTH); //Namen des Jeweiligen Dummys setzten
      str_copy(m_aClients[BotNum + 7].m_aClan, pClans[BotNum], MAX_CLAN_LENGTH); //Clan des jeweiligen Dummys setzten
      m_aClients[BotNum + 7].m_State = CClient::STATE_INGAME; // State auf ingame setzten, damit alles korrekt ist. Macht man dies nicht, ist unser dummy unsichtbar.
      }[/cpp]


      Jetzt müssen wir nurnoch irgendwie die CreateNewDummy Funktion aufrufen. Ich mache dies mit einem Chatcommand in der gamecontext.cpp, unter OnMessage. Ein genaueres tutorial dazu findet ihr hier im Forum!

      Spoiler anzeigen
      [cpp]if(!str_comp(pMsg->m_pMessage, "/dummy"))
      {
      CreateNewDummy();
      return;
      }[/cpp]


      Das wars! Nun könnt ihr ingame mit /dummy bis zu 8 dummys erstellen. Wenn eure 'Mod' online stellen wollt, müsst ihr allerdings noch die Dummys im Serverbrowser verstecken.

      Dazu hier noch ein Code:
      server.cpp:
      [cpp]g_Config.m_SvMaxClients = 8;[/cpp]

      und die For schleife unter SendServerInfo wie folgt modifizieren:
      [cpp]for(int i = 0; i < 7; i++) //damit ab clientID 7 nichtmehr weiter gezählt wird[/cpp]
      1338 - the next level

      Dieser Beitrag wurde bereits 10 mal editiert, zuletzt von El Retardo ()

    • Ganz im ernst? Ein einfacher Aimbot sind 2 Zeilen Code, die ich hier jetzt nur mal so aus protest reinmache.

      @Die Admins: Der code ist harmlos, und jeder der weiß wo er das im client einfügen müsste, könnte sich einen 1000x besseren schreiben.

      [cpp] CCharacter *pChr = GameServer()->m_World.ClosestCharType(m_Pos, true); //Nächsten spieler finden und speichern
      if(pChr && pChr->IsAlive()) //Gibt Es den spieler? Lebt er?
      {
      m_Input.m_TargetX = pChr->m_Pos.x-m_Pos.x; //input X setzten
      m_Input.m_TargetY = pChr->m_Pos.y-m_Pos.y; //input Y setzten
      }[/cpp]

      Noch FireWeapon(); und IntersectLine gedöns rein, und schon habt ihr den besten tollsten, und effektivsten aimbot von allen. [/Ironie]

      [cpp]GameServer()->Collision()->IntersectLine(pChr->GetPos(), m_Pos, 0x0, 0x0)[/cpp]
      *CODE NICHT GETESTET*

      Und toast... du weißt, dass mein Wallshotbot deinen besiegt hat. und du weißt, dass ich bessere predictions schreibe als du.
      1338 - the next level
    • Ich finde es zwar schön, dass du dir die Mühe für Dummies machst, jedoch rate ich davon ab, Änderungen in GameCORE zu machen, da diese ganz leicht zu einer Versionsänderung führen können...
      EDIT: ist natürlich gamecore gemeint, änderungen in gamecontext ziehen keien hash-änderungen mit sich <.<
      Deswegen sollte man dies über andere Dateien regeln (einfach Dummies sollten in der Debug-Version zum testen sowieso schon vorhanden sein)


      Gruß

      Pata

      PS: Bitte nicht so viel off-topic ...

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

    • Patafix schrieb:

      Ich finde es zwar schön, dass du dir die Mühe für Dummies machst, jedoch rate ich davon ab, Änderungen in GameContext zu machen, da diese ganz leicht zu einer Versionsänderung führen können...

      Deswegen sollte man dies über andere Dateien regeln (einfach Dummies sollten in der Debug-Version zum testen sowieso schon vorhanden sein)


      Gruß

      Pata

      PS: Bitte nicht so viel off-topic ...
      ich weiß, dass es lange her ist, aber den hash ändern ist ja die masteraufgabe eines jeden programmierers der ein bisschen ahnung hat. Außerdem glaube ich, dass man alles im src->game->server teil ändern kann, ohne hash-änderrung ^^