Assa's Zombie Mod

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

    • Assa's Zombie Mod

      Hey,
      Ich hatte heute vor eine neue endlich mal gescheite Zombie Mod zu machen, eine zeitlang lief alles flüssig und ich bin ziemlich weit gekommen,
      nur jetzt habe ich das Problem, dass ich auf meinem Homeserver nicht mehr draufkomme bzw., dass der Server nicht mehr richtig startet,
      dabei habe ich lediglich in dateien im Src->Game->Server Teil verändert:

      das letzte was die Konsole bei dem serverstart ausgibt ist:
      [register]: refreshing ip adresses

      Danach müsste ich eigentlich einen respond von dem Masterserver bekommen oder?
      Außerdem kann ich auch nicht über Lan connecten, dann müsste das ja am sourcecode liegen, aber ich kann den fehler nicht finden.

      Habt ihr vorschläge?
      Ich bedanke mich schonmal :)
      Assa

    • Nichtsdestotrotz kannst du beim Debugger auch manuell die Ausführung des Programms manipulieren, entweder wie du bereits gesagt hast durch Breakpoints oder indem du einfach auf das "Pause"-Symbol drückst (bei Visual Studio) oder bei gdb mittels Strg+C und dann einem "where" um zu sehen wo du bist.
      Ein Blick in den Taskmanager könnte auch helfen; Falls dein Tw-Prozess kontinuierlich hohe Auslastung erzeugt ist es wahrscheinlich dass da irgendwo eine Endlosschleife ist, falls die Auslastung == 0 ist, vermutlich ein blockierender Funktionsaufruf.
    • richtig, seh ich genau so :D
      hab herausgefunden, dass ich eine while endlos schleife hatte, die eigentlich funktioniert hätte, wenn ich genug arbeitsspeicher hätte, denn in der While schleife wird getestet ob etwas mit der Wahrscheinlichkeit von 1/10 erfüllt ist und so lange neu bestimmt, bis es erfüllt ist und das ganze 5 mal ^^, ich habe jetzt einen counter reingetan und wenn der auf 0 steht (also von 100 runter), dann soll er weiter gehen ^^ dankesehr leute :D

    • Hey ^^
      Ich habe das nächste Problem :D

      Ich bin grade dabei den Aim für die Zombies zu programmieren, und wollte erstmal schauen,
      dass sie den Cursor bewegen auch wenn sie keinen Spieler sehen ^^

      Das Problem ist jetzt einfach, dass nur genau 1 Zombie auch das tut, was ich programmiert habe, obwohl das allgemein im Quellcode steht:
      Spoiler anzeigen
      [cpp]void CCharacter::DoZombieAim(int Type)
      {
      if(!Type)
      return;

      m_Input.m_TargetY = sin((float)((m_Aim.m_Angle - 90)*pi/180)) * 160;//Angle Code, 160 = 5 tiles * 32 LE
      m_Input.m_TargetX = m_Input.m_Direction * cos((float)((m_Aim.m_Angle - 90)*pi/180)) * 160;//just angle in the direction

      if(m_Aim.m_Angle >= 175)//Go up and down with the cursor like a Zylon :D Zylon zombie?!
      m_Aim.m_ClockMove = -5;//180 / 4 = 45 -> One move Up is 45/50 s. long
      else if(m_Aim.m_Angle <= 5)
      m_Aim.m_ClockMove = 5;

      m_Aim.m_Angle += m_Aim.m_ClockMove;
      }[/cpp]


      Im Tick von character.cpp steht noch:
      Spoiler anzeigen
      [cpp]
      ...
      DoZombieAim(m_pPlayer->GetZomb())
      ...
      [/cpp]

      Ich habe mir schon ausgeben lassen, ob GetZomb() verschiedene Werte ausgibt (für verschiedene Zombiearten) und das tut es (1, 2, etc.)!

      Die einzige Idee die ich hatte, dass es nicht funktioniert ist, dass vllt der CPU oder Ram voll ist, doch beide sind auf meinem Computer < 50%.

      Hat einer Ideen, wo der fehler liegt?

    • Du könntest die Werte debuggen, die gesendet werden zum Beispiel.

      Aus dem bisschen Code ist schwer abzuleiten, was das Problem ist, da man nicht weis, was du alles geändert hast in der Source bzw. was nicht.
      Zum Beispiel weis man nicht, was m_Aim sein soll und wie da die Werte gesetzt werden oder wo genau DoZombieAim() aufgerufen wird, welche Werte GetZomb() speziell zurückgibt, etc.

      Quellcode

      1. m_Input.m_TargetY = sin((float)((m_Aim.m_Angle - 90)*pi/180)) * 160;//Angle Code, 160 = 5 tiles * 32 LE
      2. m_Input.m_TargetX = m_Input.m_Direction * cos((float)((m_Aim.m_Angle - 90)*pi/180)) * 160;//just angle in the direction


      Das macht mathematisch gesehen für mich nicht wirklich Sinn.

      edit: hm dachte das wären absolute koordinaten ..
      kawaii

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

    • okay, moment:
      GetZomb(); gibt Werte von 0 - 11 zurück, denn jeder Zombie-Art wird eine zahl zugeschrieben (bzw umgekehrt), auch einem normalen Menschen ist ein Wert zugeschrieben, nämlich 0! Denn er bestitz ja keine Zombie Art und deshalb soll natürlich auch der Aim nicht beeinflusst werden.

      [cpp] struct AimVars
      {
      int m_ClockMove;
      int m_Angle;
      } m_Aim;[/cpp]
      Ich habe Aim und Movement scharf getrennt, um das ganze übersichtlich zu gestalten! Angle heißt übersetzt Winkel. Das Zombie bekommt einen Zielwinkel und berechnet selbst den X und Y wert des Cursors, sodass die Waffe in die richtige Richtung zeigt was auch bei einem Zombie schließlich funktioniert.

      Vllt hilft hierdas auch: tutorials.de/c-c/240234-sinus-berechnen.html
      der X wert ist mit m_Input.m_Direction so gesteuert, dass die Waffe immer in Laufrichtung zeigt.

      Es wird so lange was abgezogen von dem Winkel, bis man nahe an 0 kommt, danach wird so lange hinzugefügt, bis man nahe an 180 kommt, sodass das Zombie die Waffe die ganze Zeit rauf und runter bewegt.

      Achja, Sinus und Cosinus nehmen nur Werte bis 1 an, deshalb steht dahinter noch *160, was genau 5 Blöcke abstand entspricht (denn 1 block in tw ist 32 programmiereinheiten groß)

      Wie gesagt, bei einem Funktioniert das auch, nur bei sämmtlichen anderen nicht.


      /Edit:
      Ich habe grade einen Moveteil in den aimteil kopiert und
      der wird von ALLEN zombies ausgeführt! Also muss der Fehler woanders
      liegen oO

      //Edit2:
      Ich hab den Fehler gefunden, es hat mich zwei Tage gekostet!
      [cpp]m_LastAction = Server()->Tick();[/cpp]
      fehlte, sodass garnicht registriert wurde, dass sich was geändert hat, td vielen dank an alle die mir helfen wollten, und auch nicht weiter wussten :D ::D:

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