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 4 von 4
  1. Beiträge anzeigen #1 Zitieren
    Schwertmeister Avatar von Inspirate
    Registriert seit
    Aug 2012
    Beiträge
    959
     
    Inspirate ist offline

    [G1] Held reagiert nicht mehr und ESC-Taste für Hauptmenue geht auch nicht mehr

    Folgendes Problem tritt immer dann in G1 auf, wenn beim Taschendiebstahl das Geschick des Helden kleiner ist als das Geschick des Opfers. Das Opfer erkennt den versuchten Taschendiebstahl und zieht seine Waffe und attackiert den Helden. Nun sollte der Held sich eigentlich wehren können... doch er steht nur blöd rum und läßt sich verprügeln. Auch die ESC-Taste für den Aufruf des Hauptmenüs funktioniert ab diesem Zeitpunkt nicht mehr und GI muss beendet werden um diesen Zustand zu beenden. Was feht mir da im script noch um den Helden beim ertappten Taschendiebstahl wieder "spielbar" werden zu lassen?

    oder grob ausgedrückt:

    Wenn das Heldengeschick kleiner als das Opfergeschick ist dann ist der Taschendiebstahl erkannt und das Opfer attackiert den Helden.

    func void nov_1333_baalisidro_pickpocket_doit()
    {
    if(other.attribute[ATR_DEXTERITY] >= 30)
    {
    CreateInvItems(self,ItMiJoint_3,3);
    B_GiveInvItems(self,other,ItMiJoint_3,3);
    STOLEN_BAALISIDRO = TRUE;
    b_givethiefxp();
    Info_ClearChoices(nov_1333_baalisidro_pickpocket);
    }
    else
    {
    b_resetthieflevel();
    AI_StopProcessInfos(self);
    B_FullStop(self);
    B_WhirlAround(self,other);
    B_SayOverlay(self,other,"$DIRTYTHIEF");
    Npc_SetTarget(self,other);
    AI_StartState(self,ZS_Attack,0,"");
    };
    };

  2. Beiträge anzeigen #2 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.487
     
    Cryp18Struct ist offline
    Von den Symptomen her klingt das so als würde der Dialog nicht beendet werden.
    Der Befehl AI_Stopprocessinfos wird nicht sofort ausgeführt sondern in die AI-Queue geschrieben. Wenn die queue dann geleert wird bevor der Befehl ausgeführt wird bleibt man im Dialog stecken.

    Du musst also irgendwie sicher stellen das der Angriff erst nach beenden des Dialoges ausgeführt wird. Mit Lego geht das gut mit AI_Function oder den FrameFunctions.

    Es gibt aber auch irgendwie einen Trick das man einen Zustand startet der erst nach Ende des Dialogs beginnt.

    Beim Teleportieren während eines Dialoges passiert das gleiche und das lässt sich umgehen:
    https://forum.worldofplayers.de/foru...1#post21307278

    Vielleicht reicht auch schon
    Code:
    AI_StartState(self,ZS_Attack,1,"");
    dafür müsste der Parameter ja da sein.
    Geändert von Cryp18Struct (03.07.2018 um 10:54 Uhr)

  3. Beiträge anzeigen #3 Zitieren
    Schwertmeister Avatar von Inspirate
    Registriert seit
    Aug 2012
    Beiträge
    959
     
    Inspirate ist offline
    Hab da noch eine Änderung eingebaut weil ich in den Beispielscripten zum Taschendiebstahl es gerade erst gesehen habe das mir da die AI_StopProcessInfos() in der Funktion fehlte. Bin gespannt ob es nun funktioniert.



    func void nov_1333_baalisidro_pickpocket_back()

    {

    Info_ClearChoices(nov_1333_baalisidro_pickpocket);
    AI_StopProcessInfos(self); /

    };


    und ich habe aus dem Beispielscript gleich noch das Abspielen des Münzklimpersounds
    Snd_Play ("Geldbeutel");
    bei erfolgreichem Diebstahl abgeschaut und eingebaut.
    Geändert von Inspirate (03.07.2018 um 11:00 Uhr)

  4. Beiträge anzeigen #4 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.487
     
    Cryp18Struct ist offline
    Die Funktion nov_1333_baalisidro_pickpocket_back() zu verändern dürfte keine Auswirkung auf die Funktion nov_1333_baalisidro_pickpocket_doit() haben.

    edit:
    Code:
    func void B_FullStop(var C_NPC npc)
    {
    	PrintDebugNpc		(PD_ZS_DETAIL,	"B_FullStop");	
    
    	Npc_ClearAIQueue	(npc);
    	AI_StandUpQuick		(npc);
    };
    Der Aufruf von Npc_ClearAIQueue (npc); sorgt dafür das AI_StopProcessInfos nie aufgerufen wird. Lass also einfach das B_FullStop weg oder vertausch die Reihenfolge.
    Geändert von Cryp18Struct (03.07.2018 um 11:07 Uhr)

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