Portal-Zone Gothic-Zone Gothic II-Zone Gothic 3-Zone Gothic 4-Zone Modifikationen-Zone Download-Zone Foren-Zone RPG-Zone Almanach-Zone Spirit of Gothic

 

Ergebnis 1 bis 5 von 5
  1. Homepage besuchen Beiträge anzeigen #1 Zitieren
    Ehrengarde Avatar von MatteoAT
    Registriert seit
    Jul 2005
    Beiträge
    2.934
     
    MatteoAT ist offline

    NPC folgt seinem Tagesablauf nicht (mehr)

    Hallo,

    ich habe das Problem, dass ein erstellter NSC seiner Daily Routine nicht mehr folgt. Bevor ich dem Charakter Dialoge gegeben habe, hat das allerdings noch funktioniert. Seitdem nicht mehr. (Bis auf ein Npc_ExchangeRoutine (self,"Routine") haben die Dialoge aber eigentlich nichts mit der Routine zu tun.

    Die Routine sieht wie folgt aus:

    Code:
    	
    // ------ TA anmelden ------
    	daily_routine	 = Rtn_Start_990001;
    };
    
    FUNC VOID Rtn_Andre_990001 ()
    {
    	TA_Read_Bookstand	(21,00,09,00,"NW_CITY_KASERNE_ANDRE_000");
    	TA_Stand_Guarding	(09,00,21,00,"NW_CITY_KASERNE_ANDRE_004");
    };
    
    FUNC VOID Rtn_Start_990001 ()
    {
    	TA_Stand_Guarding	(00,00,24,00,"NW_CITY_KASERNE_ANDRE_002");
    };
    Der Charakter, der auch Andre heißt (sollte aufgrund der unterschiedlichen IDs bzw. Instanzennamen ja kein Problem sein) soll zu Spielbeginn bei Rtn_Start_990001 in Guardposition an Waypoint NW_City_Kaserne_Andre_002 stehen und spricht den SC an, sobald er in seine Range kommt. Nach diesem Dialog möchte ich, dass er per Npc_ExchangeRoutine (self,"Andre"); zur anderen Routine wechselt. Laut Startup.d sollte er an NW_CITY_KASERNE_ANDRE_002 spawnen.

    Das tut er auch, allerdings geht er dann zum nächstgelegenen Freepoint und bleibt dort dann stehen, nicht am zugewiesenen Waypoint. Auch nach der Beendigung des Dialogs, bei der der Routinenwechsel getriggert werden sollte, tut er nichts. Er bleibt einfach am Freepoint stehen.

    Hat irgendjemand eine Ahnung, warum?

    Bei allen anderen NPCs funktionieren meine Routinen. Auch der Routinenwechsel klappt bei einem anderen Charakter schon. Ich verstehe nicht, warum der nicht will :-(
    Nett und zuvorkommend...

  2. Homepage besuchen Beiträge anzeigen #2 Zitieren
    Ehrengarde Avatar von MatteoAT
    Registriert seit
    Jul 2005
    Beiträge
    2.934
     
    MatteoAT ist offline
    Nachtrag: Nachdem ich einen neuen NPC mit Routine eingefügt habe, geht auch Andre seiner wie von Geisterhand wieder nach.

    Allerdings startet er noch immer am Freepoint, nicht am Waypoint. Weiß jemand, woran das liegen kann? Suchen sich die NPCs bei einigen Animationen automatisch den nächsten Freepoint und führen ihn nicht bei einem Waypoint aus?
    Nett und zuvorkommend...

  3. Beiträge anzeigen #3 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.484
     
    Cryp18Struct ist offline
    1: Tagesabläufe sollten immer mindestens 2 Einträge haben. Wenn du also willst das ein NPC 24 Stunden am Tag das gleiche macht, kannst du so eine Konstruktion nehmen:
    Code:
    FUNC VOID Rtn_Start_990001 ()
    {
    	TA_Stand_Guarding	(00,00,12,00,"NW_CITY_KASERNE_ANDRE_002");
    	TA_Stand_Guarding	(12,00,00,00,"NW_CITY_KASERNE_ANDRE_002");
    };
    2: Verwende besser B_StartOtherRoutine() statt NPC_ExchangeRoutine(). Das "zwingt" NPCs dann den neuen Zustand sofort zu beginnen.

    3: Ja, in Stand_Guarding wird nach einem freepoint gesucht. Die ganzen Tagesabläufe sind auch nur Skriptfunktionen, diese kannst du ändern oder auch ganz neue einfügen.
    Mit diesem Eintrag
    Code:
    func void TA_Stand_Guarding		(var int start_h, var int start_m, var int stop_h, var int stop_m, VAR string waypoint)	{TA_Min		(self,	start_h,start_m, stop_h, stop_m, ZS_Stand_Guarding,			waypoint);};
    wird definiert das NPCs in TA_Stand_Guarding die Funktionen ZS_Stand_Guarding(), ZS_Stand_Guarding_loop() und ZS_Stand_Guarding_end() durchlaufen.

    Allgemein ist es auch nicht die schlechteste Idee NPCs an freepoint zu parken. Die waypoints werden ja für Navigation verwendet, ein NPC der direkt auf einem Wegpunkt steht kann den Wegpunk "blockieren" und NPCs welche da durch laufen wollen können dann an dem NPC stecken bleiben und das sieht doof aus.

  4. Homepage besuchen Beiträge anzeigen #4 Zitieren
    Ehrengarde Avatar von MatteoAT
    Registriert seit
    Jul 2005
    Beiträge
    2.934
     
    MatteoAT ist offline
    Damit hast du mir sehr geholfen. Vielen, vielen lieben Dank

    Edit:
    Achja:
    Habe NPC_ExchangeRoutine() verwendet, weil ich das von PB wohl (oft) so angewandt wurde. Ich versuchs künftig mal mit B_StartOtherRoutine()
    Nett und zuvorkommend...

  5. Beiträge anzeigen #5 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.484
     
    Cryp18Struct ist offline
    Wenn du in einem Dialog mit NPC A bist und die routine von NPC A änderst, macht es keinen Unterschied (Weil der NPC ja erst nach Ende des Dialogs prüft welchen Tagesablauf er aktuell verwenden sollte).
    Wenn du aber den Tagesablauf eines NPCs veränderst mit welchem du gerade nicht sprichst, dann wird mit NPC_ExchangeRoutine nicht garantiert das der NPC sofort in den neuen Zustand wechselt.
    Standardmäßig überall B_StartOtherRoutine zu verwenden bedeutet das man sich da nicht wirklich Gedanken drüber machen muss und es einfach immer funktioniert.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
Impressum | Link Us | intern
World of Gothic © by World of Gothic Team
Gothic, Gothic 2 & Gothic 3 are © by Piranha Bytes & Egmont Interactive & JoWooD Productions AG, all rights reserved worldwide