mirror of
https://github.com/iDisaster/GTAConnected.git
synced 2026-03-08 09:25:23 +00:00
347 lines
9.8 KiB
C
347 lines
9.8 KiB
C
/**
|
|
* @ MD EXTEND+
|
|
* @ Version MDv13 TRIDENT(Essentials Based)
|
|
* @ MADE BY - DEVILSDESIGN & IIV_NATHAN_VII & SHOCKixiXixiWAVE
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
//! Menu Functions
|
|
void menu_hold_pressed(uint p_id){
|
|
uint button1;
|
|
uint button2;
|
|
|
|
switch(p_id)
|
|
{
|
|
case 1:
|
|
{
|
|
button1 = BUTTON_DPAD_UP;
|
|
button2 = KEY_UP_ARROW;
|
|
}
|
|
break;
|
|
case 2:
|
|
{
|
|
button1 = BUTTON_DPAD_DOWN;
|
|
button2 = KEY_DOWN_ARROW;
|
|
}
|
|
break;
|
|
case 3:
|
|
{
|
|
button1 = BUTTON_DPAD_LEFT;
|
|
button2 = KEY_LEFT_ARROW;
|
|
}
|
|
break;
|
|
case 4:
|
|
{
|
|
button1 = BUTTON_DPAD_RIGHT;
|
|
button2 = KEY_RIGHT_ARROW;
|
|
}
|
|
break;
|
|
}
|
|
|
|
if (IS_BUTTON_PRESSED(0, button1) || IS_GAME_KEYBOARD_KEY_PRESSED(button2)){
|
|
press_id = p_id;
|
|
if (hold_counter > 40){
|
|
press_counter_timesby++;
|
|
hold_counter = 0;
|
|
}
|
|
|
|
hold_counter++;
|
|
press_counter++;
|
|
press_counter *= press_counter_timesby;
|
|
}
|
|
else if (press_id == p_id){
|
|
press_counter_timesby = 1;
|
|
hold_counter = 0;
|
|
}
|
|
}
|
|
|
|
bool menu_up_pressed(bool counter){
|
|
if ((IS_BUTTON_JUST_PRESSED(0, BUTTON_DPAD_UP) || IS_GAME_KEYBOARD_KEY_JUST_PRESSED(KEY_UP_ARROW))
|
|
|| (press_counter > 6 && (IS_BUTTON_PRESSED(0, BUTTON_DPAD_UP) || IS_GAME_KEYBOARD_KEY_PRESSED(KEY_UP_ARROW)))){
|
|
SetBit(MD_Misc_OptionsBitSet, MD_MISC_RESET_COUNTER, true);
|
|
return true;
|
|
}
|
|
|
|
if (counter)
|
|
menu_hold_pressed(1);
|
|
|
|
return false;
|
|
}
|
|
|
|
bool menu_down_pressed(bool counter){
|
|
if ((IS_BUTTON_JUST_PRESSED(0, BUTTON_DPAD_DOWN) || IS_GAME_KEYBOARD_KEY_JUST_PRESSED(KEY_DOWN_ARROW))
|
|
|| (press_counter > 6 && (IS_BUTTON_PRESSED(0, BUTTON_DPAD_DOWN) || IS_GAME_KEYBOARD_KEY_PRESSED(KEY_DOWN_ARROW)))){
|
|
SetBit(MD_Misc_OptionsBitSet, MD_MISC_RESET_COUNTER, true);
|
|
return true;
|
|
}
|
|
|
|
if (counter)
|
|
menu_hold_pressed(2);
|
|
|
|
return false;
|
|
}
|
|
|
|
bool menu_left_pressed(bool counter){
|
|
if ((IS_BUTTON_JUST_PRESSED(0, DPAD_LEFT) || IS_GAME_KEYBOARD_KEY_JUST_PRESSED(KEY_LEFT_ARROW))
|
|
|| (press_counter > 6 && (IS_BUTTON_PRESSED(0, DPAD_LEFT) || IS_GAME_KEYBOARD_KEY_PRESSED(KEY_LEFT_ARROW)))){
|
|
SetBit(MD_Misc_OptionsBitSet, MD_MISC_RESET_COUNTER, true);
|
|
return true;
|
|
}
|
|
if (counter)menu_hold_pressed(3);
|
|
return false;
|
|
}
|
|
|
|
bool menu_right_pressed(bool counter){
|
|
if ((IS_BUTTON_JUST_PRESSED(0, DPAD_RIGHT) || IS_GAME_KEYBOARD_KEY_JUST_PRESSED(KEY_RIGHT_ARROW))
|
|
|| (press_counter > 6 && (IS_BUTTON_PRESSED(0, DPAD_RIGHT) || IS_GAME_KEYBOARD_KEY_PRESSED(KEY_RIGHT_ARROW)))){
|
|
SetBit(MD_Misc_OptionsBitSet, MD_MISC_RESET_COUNTER, true);
|
|
return true;
|
|
}
|
|
if (counter)menu_hold_pressed(4);
|
|
return false;
|
|
}
|
|
|
|
bool menu_LB_pressed(bool counter){
|
|
if ((IS_BUTTON_JUST_PRESSED(0, BUTTON_LB) || IS_GAME_KEYBOARD_KEY_JUST_PRESSED(KEY_L))
|
|
|| (press_counter > 6 && (IS_BUTTON_PRESSED(0, BUTTON_LB) || IS_GAME_KEYBOARD_KEY_PRESSED(KEY_L)))){
|
|
SetBit(MD_Misc_OptionsBitSet, MD_MISC_RESET_COUNTER, true);
|
|
return true;
|
|
}
|
|
if (counter)menu_hold_pressed(3);
|
|
return false;
|
|
}
|
|
|
|
bool menu_RB_pressed(bool counter){
|
|
if ((IS_BUTTON_JUST_PRESSED(0, BUTTON_RB) || IS_GAME_KEYBOARD_KEY_JUST_PRESSED(KEY_R))
|
|
|| (press_counter > 6 && (IS_BUTTON_PRESSED(0, BUTTON_RB) || IS_GAME_KEYBOARD_KEY_PRESSED(KEY_R)))){
|
|
SetBit(MD_Misc_OptionsBitSet, MD_MISC_RESET_COUNTER, true);
|
|
return true;
|
|
}
|
|
if(counter)menu_hold_pressed(4);
|
|
return false;
|
|
}
|
|
|
|
bool menu_forward_pressed(void){
|
|
if (IS_BUTTON_JUST_PRESSED(0, BUTTON_A) || IS_GAME_KEYBOARD_KEY_JUST_PRESSED(KEY_ENTER))
|
|
return true;
|
|
return false;
|
|
}
|
|
|
|
bool menu_back_pressed(void){
|
|
if (IS_BUTTON_JUST_PRESSED(0, BUTTON_B) || IS_GAME_KEYBOARD_KEY_JUST_PRESSED(KEY_BACKSPACE))
|
|
return true;
|
|
return false;
|
|
}
|
|
|
|
/**Crossbrowsing MenuItems**/
|
|
//Keeping the type between 20 and 30 so if type is between this range it will crossbrowse.
|
|
void AddFunction_CB(char* item_text){
|
|
itemCount++;
|
|
menu_item[itemCount].name = item_text;
|
|
SetBit(MenuActionBitSet, (itemCount - 1), true);
|
|
menu_item[itemCount].type = 21;//Former 12
|
|
}
|
|
void AddFunction_Num_CB(char* item_text,int maxval){
|
|
itemCount++;
|
|
menu_item[itemCount].name = item_text;
|
|
SetBit(MenuActionBitSet, (itemCount - 1), true);
|
|
menu_item[itemCount].num_val = 1;
|
|
menu_item[itemCount].extra_val = maxval;
|
|
menu_item[itemCount].type = 22; //Former 8
|
|
}
|
|
void AddFunction_Value_CB(char* item_text,int maxval){
|
|
itemCount++;
|
|
menu_item[itemCount].name = item_text;
|
|
SetBit(MenuActionBitSet, (itemCount - 1), true);
|
|
menu_item[itemCount].num_val = 1;
|
|
menu_item[itemCount].extra_val = maxval;
|
|
menu_item[itemCount].type = 23; //Former 9
|
|
//Add_StringValue(itemCount);
|
|
}
|
|
void AddFunction_ValueLine_CB(int maxval){
|
|
itemCount++;
|
|
SetBit(MenuActionBitSet, (itemCount - 1), true);
|
|
menu_item[itemCount].num_val = 1;
|
|
menu_item[itemCount].extra_val = maxval;
|
|
menu_item[itemCount].type = 24; //Former 15
|
|
//Add_StringValue(itemCount);
|
|
|
|
}
|
|
void AddBool_CB(char* item_text, bool item_bool){
|
|
itemCount++;
|
|
menu_item[itemCount].name = item_text;
|
|
SetBit(MenuActionBitSet, (itemCount - 1), true);
|
|
menu_item[itemCount].extra_val = item_bool;
|
|
menu_item[itemCount].type = 25; //Former 3
|
|
}
|
|
|
|
void AddBool_NoHighlight_CB(char* item_text){
|
|
itemCount++;
|
|
menu_item[itemCount].name = item_text;
|
|
SetBit(MenuActionBitSet, (itemCount - 1), true);
|
|
menu_item[itemCount].type = 26; //Former 12
|
|
}
|
|
|
|
void AddGxt_Model_CB(uint item_gxt_hash){
|
|
itemCount++;
|
|
SetBit(MenuActionBitSet, (itemCount - 1), true);
|
|
menu_item[itemCount].num_val = item_gxt_hash;
|
|
menu_item[itemCount].type = 27; //Former 5
|
|
}
|
|
/**END**/
|
|
|
|
|
|
void AddSubMenu(char* item_text){
|
|
itemCount++;
|
|
menu_item[itemCount].name = item_text;
|
|
menu_item[itemCount].type = 13;
|
|
}
|
|
void AddPlayername(char* item_text){
|
|
itemCount++;
|
|
menu_item[itemCount].name = item_text;
|
|
menu_item[itemCount].type = 7;
|
|
}
|
|
void Add_NotPresent(char* item_text){
|
|
itemCount++;
|
|
menu_item[itemCount].name = item_text;
|
|
menu_item[itemCount].type = 6;
|
|
}
|
|
void Add_JumpOver(char* item_text){
|
|
itemCount++;
|
|
menu_item[itemCount].name = item_text;
|
|
menu_item[itemCount].type = 10;
|
|
}
|
|
void Add_Error(char* item_text){
|
|
itemCount++;
|
|
menu_item[itemCount].name = item_text;
|
|
menu_item[itemCount].type = 11;
|
|
}
|
|
void AddFunction(char* item_text){
|
|
itemCount++;
|
|
menu_item[itemCount].name = item_text;
|
|
SetBit(MenuActionBitSet, (itemCount - 1), true);
|
|
menu_item[itemCount].type = 12;
|
|
}
|
|
void AddFunction_Num(char* item_text,int maxval){
|
|
itemCount++;
|
|
menu_item[itemCount].name = item_text;
|
|
SetBit(MenuActionBitSet, (itemCount - 1), true);
|
|
menu_item[itemCount].num_val = 1;
|
|
menu_item[itemCount].extra_val = maxval;
|
|
menu_item[itemCount].type = 8;
|
|
}
|
|
void AddFunction_NumSphere(char* item_text,int maxval){
|
|
itemCount++;
|
|
menu_item[itemCount].name = item_text;
|
|
SetBit(MenuActionBitSet, (itemCount - 1), true);
|
|
menu_item[itemCount].num_val = Delete_Distance_Radius;
|
|
menu_item[itemCount].extra_val = maxval;
|
|
menu_item[itemCount].type = 14;
|
|
}
|
|
void AddFunction_Value(char* item_text,int maxval){
|
|
itemCount++;
|
|
menu_item[itemCount].name = item_text;
|
|
SetBit(MenuActionBitSet, (itemCount - 1), true);
|
|
menu_item[itemCount].num_val = 1;
|
|
menu_item[itemCount].extra_val = maxval;
|
|
menu_item[itemCount].type = 9;
|
|
//Add_StringValue(itemCount);
|
|
}
|
|
void AddFunction_ValueLine(int maxval){
|
|
itemCount++;
|
|
SetBit(MenuActionBitSet, (itemCount - 1), true);
|
|
menu_item[itemCount].num_val = 1;
|
|
menu_item[itemCount].extra_val = maxval;
|
|
menu_item[itemCount].type = 15;
|
|
//Add_StringValue(itemCount);
|
|
}
|
|
void AddBool(char* item_text, bool item_bool){
|
|
itemCount++;
|
|
menu_item[itemCount].name = item_text;
|
|
SetBit(MenuActionBitSet, (itemCount - 1), true);
|
|
menu_item[itemCount].extra_val = item_bool;
|
|
menu_item[itemCount].type = 3;
|
|
}
|
|
void AddBool_NoHighlight(char* item_text){
|
|
itemCount++;
|
|
menu_item[itemCount].name = item_text;
|
|
SetBit(MenuActionBitSet, (itemCount - 1), true);
|
|
menu_item[itemCount].type = 12;
|
|
}
|
|
void AddGxt_Model(uint item_gxt_hash){
|
|
itemCount++;
|
|
SetBit(MenuActionBitSet, (itemCount - 1), true);
|
|
menu_item[itemCount].num_val = item_gxt_hash;
|
|
menu_item[itemCount].type = 5;
|
|
}
|
|
void Menu_Add_Item_Sco(bool item_bool){
|
|
menu_item[itemCount].extra_val = item_bool;
|
|
menu_item[itemCount].type = 4;
|
|
}
|
|
void Menu_Add_Action(void){
|
|
SetBit(MenuActionBitSet, (itemCount - 1), true);
|
|
}
|
|
void Load_Sco(char* item_text, char* item_script){
|
|
//Make an item type for this
|
|
if (DOES_SCRIPT_EXIST(item_script)){
|
|
AddSubMenu(item_text);
|
|
Essentials_script[itemCount] = item_script;
|
|
bool enabled;
|
|
if (GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT(item_script) == 1)
|
|
enabled = true;
|
|
Menu_Add_Item_Sco(enabled);
|
|
Menu_Add_Action();
|
|
}
|
|
else{
|
|
if(GetBit(MD_Misc_OptionsBitSet, MD_MISC_SHOW_MISSING_SCO)){
|
|
Add_NotPresent(item_text);
|
|
}
|
|
}
|
|
}
|
|
|
|
void Essentials_apply(void){
|
|
if (menu_item[SelectedItem].extra_val){
|
|
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME(Essentials_script[SelectedItem]);
|
|
menu_item[SelectedItem].extra_val = false;
|
|
}
|
|
else{
|
|
TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME(Essentials_script[SelectedItem]);
|
|
START_NEW_SCRIPT(Essentials_script[SelectedItem], 1024);
|
|
MARK_SCRIPT_AS_NO_LONGER_NEEDED(Essentials_script[SelectedItem]);
|
|
Menu_Has_Sco_Loaded = false;
|
|
menu_item[SelectedItem].extra_val = true;
|
|
}
|
|
}
|
|
|
|
void Modmanager(void){
|
|
if(!Menu_Has_Sco_Loaded && !menu_item[SelectedItem].extra_val)load_script = Essentials_script[SelectedItem];
|
|
else Essentials_apply();
|
|
}
|
|
|
|
void Reset_Menu(void){
|
|
int I;
|
|
for (I = 1; I < (itemCount + 1); I++){
|
|
menu_item[I].name = null_string;
|
|
menu_item[I].type = 0;
|
|
menu_item[I].num_val = 1;
|
|
menu_item[I].extra_val = 0;
|
|
SetBit(MenuActionBitSet, (I - 1), false);
|
|
}
|
|
Menu_Start_Pos_y = menu_consts_start_y;
|
|
menu_max = menu_consts_max;
|
|
itemCount = 0;
|
|
}
|
|
|
|
void Base_Error(uint Error_id){
|
|
//if (menu_item[SelectedItem].action) Menu_Action_Error = true;
|
|
if(GetBit(MenuActionBitSet,SelectedItem - 1))SetBit(MD_Misc_OptionsBitSet, MD_MISC_MENU_ACTION_ERROR, true);
|
|
Reset_Menu();
|
|
MENU_HEADER = Essentials_Error;
|
|
if (Error_id == MODMANAGER_ERROR_ID_INVALID)AddSubMenu(Essentials_Error_invalid);
|
|
else if (Error_id == MODMANAGER_ERROR_ID_SCRIPT)AddSubMenu(Essentials_Error_script);
|
|
AddSubMenu(Essentials_Error_goback);
|
|
SetBit(MD_Misc_OptionsBitSet, MD_MISC_MENU_IN_ERROR, true);
|
|
PLAY_AUDIO_EVENT("FRONTEND_MENU_ERROR");
|
|
}
|