views:

162

answers:

2

Upon compiling, I am getting the following error:

C:\UDK\UDK-2010-03\Development\Src\FixIt\Classes\ZInteraction.uc(41) : Error, Unrecognized member 'OpenMenu' in class 'GameUISceneClient'

Line 41 is the following:

GetSceneClient().OpenMenu("ZInterface.ZNLGWindow");

But when I search for OpenMenu, I find that it is indeed defined in GameUISceneClient.uc of the UDK:

Line 1507: exec function OpenMenu( string MenuPath, optional int PlayerIndex=INDEX_NONE )

It looks like I have everything correct. So what's wrong? Why can't it find the OpenMenu function?

A: 

From the wiki page on Legacy:Exec Function:

Exec Functions are functions that a player or user can execute by typing its name in the console. Basically, they provide a way to define new console commands in UnrealScript code.

Okay, so OpenMenu has been converted to a console command. Great. But still, how do I execute it in code? The page doesn't say!

More searching revealed this odd documentation page, which contains the answer:

Now then, there is also a function within class Console called 'bool ConsoleCommand(coerce string s)'. to call your exec'd function, 'myFunction' from code, you type:

* bool isFunctionThere; //optional
  isFunctionThere = ConsoleCommand("myFunction myArgument");

So, I replaced my line with the following:

GetSceneClient().ConsoleCommand("OpenMenu ZInterface.ZNLGWindow");

Now this causes another error which I covered in my other question+answer a few minutes ago. But that's it!

Ricket
A: 

Not sure if this is your intent, but if you are trying to create a UIScene based on an Archetype that has been created in the UI Editor, you want to do something like this:

UIScene openedScene;
UIScene mySceneArchetype;

mySceneArchetype = UIScene'Package.Scene';
GameSceneClient = class'UIRoot'.static.GetSceneClient();

//Open the Scene
if( GameSceneClient != none && MySceneArchetype != none )
    {
        GameSceneClient.OpenScene(mySceneArchetype,LocalPlayer(PlayerOwner.Player), openedScene);
    }
MSeverin