1. News
  2. Community
    1. Dashboard
    2. Mitglieder
      1. Mitgliedersuche
      2. EM-Hub Team
    3. FAQ
  3. Filebase
  4. Lexikon
  5. Img-Upload
  • Anmelden oder registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Seiten
  • Forum
  • Dateien
  • Lexikon
  • FAQ
  • Galerie
  • Modding Team
  • Modding Teamseiten
  • Erweiterte Suche
  1. Emergency Hub
  2. EMERGENCY Reihe
  3. EMERGENCY 4
  4. Modding

Scripting - Mission - .Hide() function

  • Eagle's Eye
  • 1. Februar 2024 um 16:56

Jetzt Mitglied werden!

Du bist noch kein Emergency Hub Member? Registriere dich kostenlos und werde Teil der Emergency Hub Community :)

Benutzerkonto erstellen Anmelden
  • Eagle's Eye
    Aktives Mitglied
    Reaktionen
    50
    Beiträge
    58
    Dateien
    1
    • 1. Februar 2024 um 16:56
    • #1

    Hello zusammen,

    da ich gerade an einer Uni Abgabe sitze und mich dafür auch noch den Kopf mit EM4 Scripts zerhaue, hoffe ich, dass mir jemand schnell und schmerzlos helfen kann.

    Folgendes: Ich habe 2 Knöpfe auf der Map, die bei jeweils einem anderen Objekt eine Animation auslösen. So weit so gut, das funktioniert auch.

    Jetzt habe ich aber einen Knopf, der soll eine Reihe von Objekten verstecken. Also habe ich (hoffe ich zumindest, dass das richtig war), diese Objekte einer Liste hinzugefügt, und will eigentlich durchiterieren und sie verstecken.
    Aus meinem Python Verständnis würde die Syntax aussehen "Liste[index].function()"
    Das scheint in C offensichtlich anders zu sein, ich komme allerdings nicht drauf.

    Hier ist der problematische Codeschnipsel:

    Code
    					mElectric = GameObjectList(NAME_ELECTRIC);
    					for (int i=0; i < mElectric.GetNumObjects(); i++)
    					{
    						mElectric(i).Hide();
    					}


    Hier das gesamte Script:

    Code
    const float CHECK_MISSION_STATE_INTERVAL = 1.0f;
    const int MAX_DEAD_CIVILS = 4;
    const int MAX_BURNING_HOUSES = 4;
    const char NAME_TRAINSIGNAL_CONTROL[] 		= "trainsignal_control";
    const char NAME_ELECTRIC_CONTROL[] 			= "electric_control";
    const char NAME_GATE_CONTROL[] 				= "gate_control";
    const char NAME_TRAINSIGNAL[]				= "trainsignal";
    const char NAME_ELECTRIC[]					= "electric";
    const char NAME_GATE[]						= "gate";
    
    object Mission01 : MissionScript
    {
    	GameObject		mGate;
    	GameObject		mTrainSignal;
    	GameObjectList	mElectric;
    	GameObject		mTrainSignalControl;
    	GameObject		mGateControl;
    	GameObject		mElectricControl;
    	int t = 0;
    
    	Mission01()
    	{
    	}
    	
    	void Start()
    	{
    		System::Log("MISSION 01 ABGABE - START");
    		
    		GameObjectList list = Game::GetGameObjects();
    		for(int i=0; i<list.GetNumObjects(); i++)
    		{
    			GameObject *obj = list.GetObject(i);
    			
    			if ( obj->HasName(NAME_ELECTRIC_CONTROL) )
    			{
    				mElectricControl = obj;
    			}
    			else if ( obj->HasName(NAME_TRAINSIGNAL_CONTROL) )
    			{
    				mTrainSignalControl = obj;
    			}
    			else if ( obj->HasName(NAME_GATE_CONTROL) )
    			{
    				mGateControl = obj;
    			}
    			else if ( obj->HasName(NAME_TRAINSIGNAL) )
    			{
    				mTrainSignal = obj;
    			}
    			else if ( obj->HasName(NAME_GATE) )
    			{
    				mGate = obj;
    			}
    		}
    	}
    
    	void Update()
    	{		
    	}
    	
    	ActionCallbackResult OnPostAction(const char *action_, ActionCallback* data_)
    	{
    		switch (action_)
    		{
    			case "EActionUse":
    			{
    				if(data_->Parameters[0].iValue == mTrainSignalControl.GetID())
    				{
    					mTrainSignal.SetAnimation("close");
    				}
    				else if(data_->Parameters[0].iValue == mGateControl.GetID())
    				{
    					mGate.SetAnimation("open");
    				}
    				else if(data_->Parameters[0].iValue == mElectricControl.GetID())
    				{
    					mElectric = GameObjectList(NAME_ELECTRIC);
    					for (int i=0; i < mElectric.GetNumObjects(); i++)
    					{
    						mElectric(i).Hide();
    					}
    				}
    			}
    		}
    		break;
    	}
    
    };
    Alles anzeigen


    Und hier die Fehlermeldung aus der logfile (nach Betätigung des Buttons):

    Code
    ?(_1622f5): Error: Can not access pointer to function 0x179e8980 from interpreter(2) FILE:mod:Scripts/Game/Mission/1.script622f5 LINE:82
    ?(_1622f5): Error: Can not access pointer to function 0x179e8980 from interpreter(2) FILE:mod:Scripts/Game/Mission/1.script622f5 LINE:82
    ?(_1622f5): Error: Can not access pointer to function 0x179e8980 from interpreter(2) FILE:mod:Scripts/Game/Mission/1.script622f5 LINE:82
    ?(_1622f5): Error: Function mElectric(i) is not defined in current scope 
    ?(_1622f5):  FILE:mod:Scripts/Game/Mission/1.script622f5 LINE:82
    ?(_1622f5): Possible candidates are...
    ?(_1622f5): filename       line:size busy function type and name  
    ?(_1622f5): 
    ?(_1622f5): Error: Failed to evaluate mElectric(i).Hide()
    ?(_1622f5): Possible candidates are...
    ?(_1622f5): filename       line:size busy function type and name  
    ?(_1622f5): 
    ?(_1622f5): !!!Dictionary position rewound... 
    ?(_1622f5): !!!Error recovered!!!
    Alles anzeigen


    Danke schon mal im Voraus!

  • Antiphon
    Emergency Hub Team
    Reaktionen
    416
    Beiträge
    121
    Dateien
    13
    Modding Teams
    • 1. Februar 2024 um 17:47
    • #2

    Um auf ein Element von GameObjectList zuzugreifen brauchst du GameObject *GetObject(int Index_) const;

    Versuch mal im Loop mElectric.GetObject(i)->Hide();

    Altenativ gibts auch Game::HideObjects(mElectric);, falls du den Loop wegsparen willst.

  • Eagle's Eye
    Aktives Mitglied
    Reaktionen
    50
    Beiträge
    58
    Dateien
    1
    • 1. Februar 2024 um 17:53
    • #3
    Zitat von Antiphon

    Altenativ gibts auch Game::HideObjects(mElectric);, falls du den Loop wegsparen willst.

    Funktioniert mit der Passage wunderbar, vielen Dank!!

Letzte Beiträge

  • 60 Stunden Modding

    sb-modder 31. Mai 2025 um 11:03
  • DLK nach Austausch ohne Leiterpark

    ChicagoPDFan 31. Mai 2025 um 09:23
  • Zählen bis unendlich

    Pankofen 30. Mai 2025 um 22:41
  • Antiphon's Toolbox

    Antiphon 30. Mai 2025 um 15:22
  • Fahrzeug suche SanWolf

    Eiserner_Onkel 29. Mai 2025 um 23:47

Forum online seit:

einem Jahr, 6 Monaten, 2 Wochen, 5 Tagen, 19 Stunden und 21 Minuten

Tags

  • Mission
  • Scripting
  • Hide

Benutzer online in diesem Thema

  • 1 Besucher

Informationen

  1. FAQ
  2. Datenschutzerklärung
  3. Impressum

Community

  1. Letzte Aktivitäten
  2. Mitgliedersuche
  3. Mitglieder
  4. Team

Über uns

Ein Communityprojekt von vielen bekannten Gesichtern aus der EMERGENCY-Szene, bestehend aus ehem. Mitgliedern des Forums, Moddern und Streamern.

Von der Community, für die Community!

Community-Software: WoltLab Suite™
Style by Foxly