[Source] NPC im World nicht laden lassen

    • [Source] NPC im World nicht laden lassen

      Hallo M-Core'ler/in,

      in diesem kleinen Source Tut, möchte ich euch zeigen, wie man es hinbekommt, dass NPC, in der World nicht geladen werden, obwohl sie vom Beast gesetzt worden sind. Dies ist genauso wie die GuildWar NPC's, die man bsp. im 2ten Channel "aussperrt".


      Fangen wir dann mal an:


      _______________________________________________


      Wir gehen im WorldServer und fügen in die VersionCommon.h folgendes hinzu:

      PHP-Quellcode

      1. #define __NO_POSTBOX
      Damit, definieren wir die Funktion, damit wir später den Sourcepart auch direkt im Source wieder weg lassen kann.

      Als nächstes dann öffnen wir den
      WorldServer.cpp und gehen ganz nach unten und fügen vor dem s.GetToken(); dies hier ein:

      PHP-Quellcode

      1. #ifdef __NO_POSTBOX
      2. else if ( s.Token == "NO_POSTBOX" )
      3. {
      4. g_eLocal.SetState( EVE_NO_POSTBOX, 1 );
      5. }
      6. #endif // __NO_POSTBOX
      Mit dem #ifdef __NO_POSTBOX setzen wir fest, dass dieser nur dann eine Wirkung hat, wenn wir in der VersionCommon.h die __NO_POSTBOX definiert haben.
      Bei
      NO_POSTBOX setzen wir den Text ein, den wir dann später in
      die WorldServer.ini einsetzen, dieser muss dann auch genauso geschrieben sein, wie es im Source festgesetzt wird.


      Und unten bei
      g_eLocal.SetState( EVE_NO_POSTBOX, 1 );
      setzen wir, wenn der Text
      NO_POSTBOXin der WorldServer.ini gesetzt ist die EVE_NO_POSTBOX auf 1, damit diese einen TRUE sogesehen erhällt.


      Anschließend gehen wir in die flyffevent.h und fügen im enum bereich irgendwo diesen Abschnitt hinzu:

      PHP-Quellcode

      1. #ifdef __NO_POSTBOX
      2. EVE_NO_POSTBOX,
      3. #endif // __NO_POSTBOX
      dabei nutzen wir wieder #ifdef __NO_POSTBOX, damit dieser nur solange eine Wirkung hat, wie es definiert ist.

      Nun kommen wir auch schon fast zum Ende des Tut's, dazu gehen wir dann nun noch in die worldfile.cpp und suchen nach der Funktion BOOL CWorld::IsUsableDYO( CObj* pObj ) , haben wir diese, können wir dann unter

      PHP-Quellcode

      1. LPCHARACTER pCharacter = ( (CMover*)pObj )->GetCharacter();
      2. if( pCharacter )
      3. {

      folgendes hinzufügen:

      PHP-Quellcode

      1. #ifdef __NO_POSTBOX
      2. // Dont Load PostBox
      3. if( stricmp( pCharacter->m_szKey, "MaFl_Postbox" ) == 0 )
      4. {
      5. if( g_eLocal.GetState( EVE_NO_POSTBOX ) == TRUE )
      6. return FALSE;
      7. }
      8. #endif // __NO_POSTBOX
      Im MaFl_Postboxwird der Name des NPC's eingetragen, welchen man in der Character.inc hat.

      if( g_eLocal.GetState( EVE_NO_POSTBOX ) == TRUE )
      dieser abschnitt überprüft den Status von
      EVE_NO_POSTBOX auf den Wert, welcher hinter dem == ist, in diesem Fall TRUE.

      _______________________________________________


      Damit war es dann auch mit dem Tutorial, wie man NPC's in der World ausgrentz.


      Credits: Sedrika


      DON'T COPY & PASTE
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )