elsewhat 78 Posted September 16, 2015 Share Posted September 16, 2015 I'm testing my mod Scene Director (https://www.gta5-mods.com/scripts/scene-director) with the latest scripthook v1.0.463.1 Noticing that the instructional buttons drawn with GRAPHICS::_PUSH_SCALEFORM_MOVIE_FUNCTION(scaleForm, "DRAW_INSTRUCTIONAL_BUTTONS"); is no longer being shown. Anyone else having the same issue? My current code, which is executed every run of the main loop (with a WAIT(0)) void draw_instructional_buttons() { int scaleForm = GRAPHICS::REQUEST_SCALEFORM_MOVIE("instructional_buttons"); if (GRAPHICS::HAS_SCALEFORM_MOVIE_LOADED(scaleForm)) { //_instructionalButtonsScaleform.CallFunction("CLEAR_ALL"); GRAPHICS::_CALL_SCALEFORM_MOVIE_FUNCTION_VOID(scaleForm, "CLEAR_ALL"); //_instructionalButtonsScaleform.CallFunction("TOGGLE_MOUSE_BUTTONS", 0); GRAPHICS::_PUSH_SCALEFORM_MOVIE_FUNCTION(scaleForm, "TOGGLE_MOUSE_BUTTONS"); GRAPHICS::_PUSH_SCALEFORM_MOVIE_FUNCTION_PARAMETER_BOOL(0); GRAPHICS::_POP_SCALEFORM_MOVIE_FUNCTION_VOID(); //_instructionalButtonsScaleform.CallFunction("CREATE_CONTAINER"); //not used in scripts, not sure if required GRAPHICS::_CALL_SCALEFORM_MOVIE_FUNCTION_VOID(scaleForm, "CREATE_CONTAINER"); //_instructionalButtonsScaleform.CallFunction("SET_DATA_SLOT", 0, Function.Call<string>(Hash._0x0499D7B09FC9B407, 2, (int)Control.PhoneSelect, 0), "Select"); char* altControlKey = CONTROLS::_0x0499D7B09FC9B407(2, 19, 1); char* spaceControlKey = CONTROLS::_0x0499D7B09FC9B407(2, 22, 1); char* delControlKey = CONTROLS::_0x0499D7B09FC9B407(2, 178, 1); char* insControlKey = CONTROLS::_0x0499D7B09FC9B407(2, 121, 1); GRAPHICS::_PUSH_SCALEFORM_MOVIE_FUNCTION(scaleForm, "SET_DATA_SLOT"); GRAPHICS::_PUSH_SCALEFORM_MOVIE_FUNCTION_PARAMETER_INT(0); std::string scaleFormKey = "t_" + std::string(key_hud_str); GRAPHICS::_PUSH_SCALEFORM_MOVIE_FUNCTION_PARAMETER_STRING(strdup(scaleFormKey.c_str())); GRAPHICS::_PUSH_SCALEFORM_MOVIE_FUNCTION_PARAMETER_STRING("Hide HUD menu"); GRAPHICS::_POP_SCALEFORM_MOVIE_FUNCTION_VOID(); GRAPHICS::_PUSH_SCALEFORM_MOVIE_FUNCTION(scaleForm, "SET_DATA_SLOT"); GRAPHICS::_PUSH_SCALEFORM_MOVIE_FUNCTION_PARAMETER_INT(2); GRAPHICS::_0xE83A3E3557A56640(insControlKey); GRAPHICS::_0xE83A3E3557A56640(altControlKey); GRAPHICS::_PUSH_SCALEFORM_MOVIE_FUNCTION_PARAMETER_STRING("Waypoint to all"); GRAPHICS::_POP_SCALEFORM_MOVIE_FUNCTION_VOID(); GRAPHICS::_PUSH_SCALEFORM_MOVIE_FUNCTION(scaleForm, "SET_DATA_SLOT"); GRAPHICS::_PUSH_SCALEFORM_MOVIE_FUNCTION_PARAMETER_INT(3); GRAPHICS::_PUSH_SCALEFORM_MOVIE_FUNCTION_PARAMETER_STRING("t_A"); GRAPHICS::_0xE83A3E3557A56640(altControlKey); GRAPHICS::_PUSH_SCALEFORM_MOVIE_FUNCTION_PARAMETER_STRING("Autopilot"); GRAPHICS::_POP_SCALEFORM_MOVIE_FUNCTION_VOID(); GRAPHICS::_PUSH_SCALEFORM_MOVIE_FUNCTION(scaleForm, "SET_DATA_SLOT"); GRAPHICS::_PUSH_SCALEFORM_MOVIE_FUNCTION_PARAMETER_INT(4); GRAPHICS::_PUSH_SCALEFORM_MOVIE_FUNCTION_PARAMETER_STRING("t_C"); GRAPHICS::_0xE83A3E3557A56640(altControlKey); GRAPHICS::_PUSH_SCALEFORM_MOVIE_FUNCTION_PARAMETER_STRING("Firing squad"); GRAPHICS::_POP_SCALEFORM_MOVIE_FUNCTION_VOID(); GRAPHICS::_PUSH_SCALEFORM_MOVIE_FUNCTION(scaleForm, "SET_DATA_SLOT"); GRAPHICS::_PUSH_SCALEFORM_MOVIE_FUNCTION_PARAMETER_INT(5); GRAPHICS::_0xE83A3E3557A56640(delControlKey); GRAPHICS::_0xE83A3E3557A56640(altControlKey); GRAPHICS::_PUSH_SCALEFORM_MOVIE_FUNCTION_PARAMETER_STRING("Reset scene"); GRAPHICS::_POP_SCALEFORM_MOVIE_FUNCTION_VOID(); //_instructionalButtonsScaleform.CallFunction("DRAW_INSTRUCTIONAL_BUTTONS", -1); GRAPHICS::_PUSH_SCALEFORM_MOVIE_FUNCTION(scaleForm, "DRAW_INSTRUCTIONAL_BUTTONS"); GRAPHICS::_PUSH_SCALEFORM_MOVIE_FUNCTION_PARAMETER_INT(-1); GRAPHICS::_POP_SCALEFORM_MOVIE_FUNCTION_VOID(); }} Link to post Share on other sites
Alexander Blade 1,409 Posted September 16, 2015 Share Posted September 16, 2015 you are not loading it correctly , you need to request and wait til it's loaded and not every frame , but once Link to post Share on other sites
elsewhat 78 Posted September 16, 2015 Author Share Posted September 16, 2015 (edited) you are not loading it correctly , you need to request and wait til it's loaded and not every frame , but once Thanks, will test this out. Had to experiment some to get it working in earlier version (as documented in thread http://gtaforums.com/topic/819070-c-draw-instructional-buttons-scaleform-movie/) Initially I thought I could set it up once, and only invoke<Void>(0xCF537FDE4FBD4CE5, scaleForm, 255, 255, 255, 255); for every frame, but this didn't work. Will now test to load it once with int scaleForm = GRAPHICS::REQUEST_SCALEFORM_MOVIE("instructional_buttons"); GRAPHICS::HAS_SCALEFORM_MOVIE_LOADED(scaleForm) and call the rest of the scaleform methods for every frame Edited September 16, 2015 by elsewhat Link to post Share on other sites
Alexander Blade 1,409 Posted September 16, 2015 Share Posted September 16, 2015 while (!GRAPHICS::HAS_SCALEFORM_MOVIE_LOADED(scaleForm)) WAIT(0); Link to post Share on other sites
elsewhat 78 Posted September 16, 2015 Author Share Posted September 16, 2015 Thanks for the help, got it working now. In addition to performing the loading in initialization, I also needed to call invoke<Void>(0xCF537FDE4FBD4CE5, scaleForm, 255, 255, 255, 255); at every frame (was not necessary in last GTA V version. But scripts and scripthook V .NET have always had it) Link to post Share on other sites
Alexander Blade 1,409 Posted September 16, 2015 Share Posted September 16, 2015 (edited) No you need not to call that func , this func actually caused NativeUI bug , use this one instead void _PUSH_SCALEFORM_MOVIE_RGBA(Any scaleform, int r, int g, int b, int a) // 0x0DF606929C105BE1 Thanks for the help, got it working now. In addition to performing the loading in initialization, I also needed to call invoke<Void>(0xCF537FDE4FBD4CE5, scaleForm, 255, 255, 255, 255); at every frame (was not necessary in last GTA V version. But scripts and scripthook V .NET have always had it) Edited September 16, 2015 by Alexander Blade 1 Link to post Share on other sites
elsewhat 78 Posted September 16, 2015 Author Share Posted September 16, 2015 Thanks for the update. Managed to provide a new quick fix with _PUSH_SCALEFORM_MOVIE_RGBA now being used Link to post Share on other sites