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. Beiträge anzeigen #1
    Veteran Avatar von Lukar
    Registriert seit
    Jan 2014
    Beiträge
    682
     
    Lukar ist offline

    NPC ignorieren TA-Änderung

    Nun, genau genommen, ignorieren sie sie zur Hälfe. Aber dazu später.

    Ich habe folgende Situation: Ein Schlauchlevel mit Fallen, tückischen Höhenunterschieden und 6 NPC Begleiter im TA_FOLLOW_PLAYER. Diese Begleiter wechseln, sobald der Held sich einer Falle oder einem unmöglich zu überwindenden Höhenunterschiedlich nähert, den TA über ein Gruppenmitglied, dass den Helden anquatscht.

    Das ganze sieht im Dialog so aus:
    Code:
    FUNC void DIA_LASTLEVEL_1_info()
    {
    	//TEMPLE_PILLAR
    	AI_Output (self, other, "DIA_LASTLEVEL_1_00"); // (zynisch) Brodelnde Lava und zusammenfallende Tempel. Weltuntergangstimmung. Toll.
    	AI_Output (self, other, "DIA_LASTLEVEL_1_01"); // Passt auf, wenn ihr hier rüberbalanciert. 
    	Npc_ClearAIQueue (slp2);	
    	Npc_ClearAIQueue (slp3);	
    	Npc_ClearAIQueue (slp4);	
    	Npc_ClearAIQueue (slp5);	
    	Npc_ClearAIQueue (slp6);
    	B_StartOtherRoutine	(SLP1,"FIRSTENTRANCE");
    	B_StartOtherRoutine	(SLP2,"FIRSTENTRANCE");
    	B_StartOtherRoutine	(SLP3,"FIRSTENTRANCE");
    	B_StartOtherRoutine	(SLP4,"FIRSTENTRANCE");
    	B_StartOtherRoutine	(SLP5,"FIRSTENTRANCE");
    	B_StartOtherRoutine	(SLP6,"FIRSTENTRANCE");	
    
    //Siehe EDIT
    	AI_StartState 		(slp6, ZS_guard_temple, 0, "");
    	AI_StartState 		(slp2, ZS_guard_temple, 0, "");
    	AI_StartState 		(slp3, ZS_guard_temple, 0, "");
    	AI_StartState 		(slp4, ZS_guard_temple, 0, "");
    	AI_StartState 		(slp5, ZS_guard_temple, 0, "");
    };
    Das Problem, dass ich nun mit diesen 6. Begleitern habe, ist, dass viele diese TA-Änderung ignorieren. Sie tritt nicht immer auf, aber in gut 50% der Fälle. Zwei bis Drei der Begleiter bleiben in der ZS_FOLLOW_PLAYER stecken und rennen dem Helden nach (ins Verderben), statt in den gewünschten ZS zu wechseln.

    Amüsanterweise sind diese ignoranten Begleiter laut Anzeige im gewünschten Tagesablauf. Klicke ich sie mit j an, wird der gewünschte TA als aktiv angezeigt. Aber dennoch führen sie ihren alten aus.

    EDIT
    Ok, ich habe es zum Teil gelöst bekommen.
    Ich habe einfach im Dialog den Beginn der gewünschten ZS erzwungen, also für jeden der NPC
    AI_StartState (NPC, ZS_TAGESABLAUF, 0, "");
    eingetippt. Simpel, aber bis ich darauf mal gekommen bin.

    EDIT 2
    Leider doch nicht so perfekt, wie erst vermutet. In einigen Testdurchläufen ignoriert immer noch einer der NPC sogar den erzwungenen ZS Befehl.

    Mich würde interessieren: Ist bekannt, wieso NPCs manchmal so störrisch an ihrem alten TA festhängen? Es scheint besonders häufig zu passieren, wenn sie "hinter" dem Helden stehen, also außerhalb der Kamera sind. Aber das ist nicht darauf beschränkt. Für die Zukunft wäre das evtt hilfreich zu wissen. Meine Mod ist sehr ... tagesablauflastig.
    Geändert von Lukar (08.08.2020 um 11:03 Uhr)

  2. #2
    Falugify
    Gast
     
    Du könntest alternativ Npc_ExchangeRoutine probieren.

  3. Beiträge anzeigen #3
    Veteran Avatar von N1kX
    Registriert seit
    Aug 2018
    Ort
    Serov
    Beiträge
    643
     
    N1kX ist offline
    It happens that NPCs don't finish performing the current animation/action yet - they don't always switch correctly to the new routine.
    If you are using Ikarus+Lego extenders try using AI_Function

    Code:
    FUNC void DIA_LASTLEVEL_1_info()
    {
    	//TEMPLE_PILLAR
    	AI_Output (self, other, "DIA_LASTLEVEL_1_00"); // (zynisch) Brodelnde Lava und zusammenfallende Tempel. Weltuntergangstimmung. Toll.
    	AI_Output (self, other, "DIA_LASTLEVEL_1_01"); // Passt auf, wenn ihr hier rüberbalanciert. 
    	
    	B_StartOtherRoutine	(SLP1,"FIRSTENTRANCE");
    	B_StartOtherRoutine	(SLP2,"FIRSTENTRANCE");
    	B_StartOtherRoutine	(SLP3,"FIRSTENTRANCE");
    	B_StartOtherRoutine	(SLP4,"FIRSTENTRANCE");
    	B_StartOtherRoutine	(SLP5,"FIRSTENTRANCE");
    	B_StartOtherRoutine	(SLP6,"FIRSTENTRANCE");	
    
    
    //Siehe EDIT
            AI_Function(self, ExchangeRoutineNpc_01);
    };
    
    
    func void ExchangeRoutineNpc_01()
    {
            Npc_ClearAIQueue (slp2);	
    	Npc_ClearAIQueue (slp3);	
    	Npc_ClearAIQueue (slp4);	
    	Npc_ClearAIQueue (slp5);	
    	Npc_ClearAIQueue (slp6);
            AI_StartState 		(slp6, ZS_guard_temple, 0, "");
    	AI_StartState 		(slp2, ZS_guard_temple, 0, "");
    	AI_StartState 		(slp3, ZS_guard_temple, 0, "");
    	AI_StartState 		(slp4, ZS_guard_temple, 0, "");
    	AI_StartState 		(slp5, ZS_guard_temple, 0, "");
    
    };

  4. Beiträge anzeigen #4
    Veteran Avatar von Lukar
    Registriert seit
    Jan 2014
    Beiträge
    682
     
    Lukar ist offline
    Danke euch für die Antworten.

    @N1kX
    I had Ikarus installed some years ago. I still roams around in my scripts, but i never really used it. Will the AI_Function command also take action without the Lego scripts?

    @Falugify
    Mit diesem Befehl hatte ich auch schon herumexperimentiert. Für sich alleine zeigte er nicht die gewünschte Wirkung. Aaaaber ... verbunden mit Npc_ClearAIQueue (slp2); sehe ich tatsächlich eine gewisse Stabilität in meinen TA-Änderungen.

  5. Beiträge anzeigen #5
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
     
    Lehona ist offline
    Zitat Zitat von Lukar Beitrag anzeigen
    @N1kX
    I had Ikarus installed some years ago. I still roams around in my scripts, but i never really used it. Will the AI_Function command also take action without the Lego scripts?
    Nein. AI_Function (und verwandte Funktionen) werden von LeGo bereit gestellt.

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