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:
mElectric = GameObjectList(NAME_ELECTRIC);
for (int i=0; i < mElectric.GetNumObjects(); i++)
{
mElectric(i).Hide();
}
Hier das gesamte Script:
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):
?(_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!