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 Zitieren
    Lehrling
    Registriert seit
    Aug 2023
    Beiträge
    28
     
    Paraguru ist offline

    Schalter klemmt, Winde klemmt

    Hallo zusammen,

    ich möchte umsetzen, dass eine Winde, ein Hebel oder ein Schalter erst betätigt werden kann, wenn eine Bedingung X erfüllt ist. In meinem Fall soll ein Taster erst funktionieren, wenn der Dialog DIA_TEST geführt wurde. Ist der Dialog nicht geführt worden, ist der Taster ohne Funktion, am besten noch mit einem Hinweis "Geht nicht" oder ähnliches.

    Jetzt habe ich dafür schon mal in den Dateien von Gothic 1 geschaut, da ich in Gothic 2 nichts gefunden habe. Folgenden Code habe ich gefunden:

    Code:
    //***************************************************************************
    //    Alte Mine - Eingangstor
    //***************************************************************************
    func int MC_OLDMINE_ENTRANCE ()
    {
        PrintDebugNpc    (PD_ITEM_MOBSI,    "MC_OLDMINE_ENTRANCE");
        PrintGlobals    (PD_ITEM_MOBSI);
    
        if    (Kapitel >= 4)
        &&    Hlp_IsValidNpc(self)
        {
            PrintDebugNpc    (PD_ITEM_MOBSI,    "...blockiert");
            G_PrintScreen    (_STR_MESSAGE_WHEEL_STUCKS);
            return             FALSE;
        }
        else
        {
            PrintDebugNpc    (PD_ITEM_MOBSI,    "...bedienbar");
            return             TRUE;
        };
    };
    Wie setze ich sowas in Gothic 2 um? Hat da jemand einen Tipp?

  2. Beiträge anzeigen #2 Zitieren
    Ehrengarde Avatar von neocromicon
    Registriert seit
    Jan 2019
    Beiträge
    2.576
     
    neocromicon ist gerade online
    Du musst dem Schalter/Winde die Script funktion im Spacer zuordnen, die kann heisen wie du willst, dann kannst du frei dir was zusammenscripten. Das benötigte Item wird ebenfalls über den Spacer definiert.

    Hier sind alle Infos die du brauchst: oCMobSwitch [Editing Wiki] (worldofgothic.de)

    Besonders für dich interessant sind: useWithItem, conditionFunc und/oder onStateFunc (siehe script beispiele)

  3. Beiträge anzeigen #3 Zitieren
    Lehrling
    Registriert seit
    Aug 2023
    Beiträge
    28
     
    Paraguru ist offline
    So sieht es jetzt aus: Im Spacer habe ich bei dem Schalter unter onStateFunc die Script-Instanz SCRIPT_SCHALTER eingetragen.

    In meiner Event.d habe ich dann den folgenden Code reingeschrieben.

    Code:
    func int SCRIPT_SCHALTER_S1()
    { 
      if (Npc_KnowsInfo (hero, DIA_BAU_99064_Jan_Test))
      
      {
       PRINT("Funktioniert");
       return TRUE;
       }
       
      else
      
       {
       PRINT("Funktioniert nicht");
       return FALSE;
        
       }; 
    };
    Der Print funktioniert ja super. Und der Schalter wird in beiden Fällen auch betätigt - so soll es sein. Aber wie lege ich nun fest, dass der Schalter zwar betätigt wird, aber der verlinkte Mover dazu NICHT funktioniert, wenn der Dialog DIA_Test nicht geführt wurde?

  4. Beiträge anzeigen #4 Zitieren
    Ehrengarde Avatar von neocromicon
    Registriert seit
    Jan 2019
    Beiträge
    2.576
     
    neocromicon ist gerade online
    if (!Npc_KnowsInfo (hero, DIA_BAU_99064_Jan_Test))

    ! = NICHT

    Also in diesem bsp. heist es dann: Held kennt NICHT den Dialog DIA_BAU_99064_Jan_Test

  5. Beiträge anzeigen #5 Zitieren
    Lehrling
    Registriert seit
    Aug 2023
    Beiträge
    28
     
    Paraguru ist offline
    Also, tatsächlich habe ich es gestern noch vor deiner Antwort hinbekommen und bin etwas ratlos, warum es vorher nicht funktioniert hat. Den oben geposteten Code habe ich (nochmal) bei ConditionFunc im Spacer probiert und er funktionierte plötzlich. Ich weiß jedoch nicht wieso, denn dasselbe habe ich bereits mehrmals probiert.

    Jedenfalls funktioniert es jetzt. Möchte man den Schalter betätigen, kommt "Blockiert" und es tut sich nichts. Hat man den Dialog geführt, erscheint "Funktioniert" und der Mover bewegt sich. Ich habe zusätzlich noch eine Abfrage abgebaut, sodass der Schalter nur einmal betätigt werden kann.

    Nachtrag: Beim Eintrag als ConditionFunc habe ich noch _S1 entfernt.

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