mirror of
https://github.com/iDisaster/GTAConnected.git
synced 2026-03-08 09:25:23 +00:00
367 lines
12 KiB
C
367 lines
12 KiB
C
/**
|
|
* @ MAJOR DISTRIBUTION EXTEND
|
|
* @ Version MDv13 TRIDENT
|
|
* @ MADE BY - DEVILSDESIGN & IIV_NATHAN_VII & SHOCKixiXixiWAVE
|
|
//THIS MUST BE MADE PREMIUM ONLY!
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
/***COMPILER FIX BY DEVIL FOR ERRORS IN COMPILE ---> CHECK THIS !!!!!!***/
|
|
int draw_invite_received_tick;
|
|
|
|
void MC_Invite_Main_Setup(void){
|
|
MENU_HEADER = MD_Extend_Header; //does this need to be set?
|
|
MENU_SUB_HEADER = "Invite Manager";
|
|
AddSubMenu("Received ~COL_NET_4~Invites ~PAD_RIGHT~");
|
|
AddSubMenu("Send ~COL_NET_4~Invites ~PAD_RIGHT~");
|
|
}
|
|
|
|
|
|
void MC_Recieved_Invites_Setup(void){
|
|
//MENU_HEADER = MD_Extend_Header; //wont change
|
|
MENU_SUB_HEADER = "Received Invites";
|
|
int i;
|
|
int items = 0;
|
|
for(i = 0; i < NETWORK_GET_NUM_UNACCEPTED_INVITES(); i++)
|
|
{
|
|
AddFunction(NETWORK_GET_UNACCEPTED_INVITER_NAME(i));
|
|
items++;
|
|
menu_item[items].num_val = i;
|
|
//NETWORK_GET_UNACCEPTED_INVITE_EPISODE(i) // 0 = orig, 1 = tlad, 2 = tbogt (we can draw it or something)
|
|
}
|
|
if(items == 0)
|
|
{
|
|
SetBit(MD_Misc_OptionsBitSet, MD_MISC_MENU_IN_ERROR, true);
|
|
Add_Error("No Invites Received");
|
|
Add_Error("Press ~PAD_B~ To Return");
|
|
}
|
|
|
|
}
|
|
|
|
void MC_Invite_Players_Setup(void){
|
|
//MENU_HEADER = MD_Extend_Header; //wont change
|
|
MENU_SUB_HEADER = "Send invites";
|
|
int i;
|
|
int friendsPlayingIVIndex[20];
|
|
int friendsPlayingIVcount = 0;
|
|
for(i = 0; i < NETWORK_GET_FRIEND_COUNT(); i++)
|
|
{ //NATIVES ON LINE BELOW ARE CORRECT!! Rockstar does some weird shit with these to confuse us i think, i reversed it all though :D
|
|
//if(!NETWORK_IS_FRIEND_ONLINE(NETWORK_GET_FRIEND_NAME(i)) || !NETWORK_IS_FRIEND_IN_SAME_TITLE(i)) continue;
|
|
if(!NETWORK_IS_FRIEND_ONLINE(NETWORK_GET_FRIEND_NAME(i)) || !NETWORK_IS_FRIEND_IN_SAME_TITLE(NETWORK_GET_FRIEND_NAME(i))) continue;
|
|
AddFunction(NETWORK_GET_FRIEND_NAME(i));
|
|
//menu_item[13].extra_val = false; //show user freeze weather OFF
|
|
friendsPlayingIVcount++;
|
|
// is + 1 because hasn't updated yet and is 0, leave it alone
|
|
menu_item[friendsPlayingIVcount].num_val = i; //current friends index
|
|
|
|
if(friendsPlayingIVcount >= 20)
|
|
{
|
|
break;
|
|
}
|
|
//extern boolean NETWORK_IS_FRIEND_IN_SAME_TITLE(uint friendid); //do draws with this
|
|
//bool NETWORK_DID_INVITE_FRIEND(char *friendname);//NETWORK_GET_FRIEND_NAME(I) //given i
|
|
//had to change the invite native from char to friendindex, net did invite friend could also need changing.
|
|
|
|
|
|
}
|
|
if(friendsPlayingIVcount == 0)
|
|
{
|
|
SetBit(MD_Misc_OptionsBitSet, MD_MISC_MENU_IN_ERROR, true);
|
|
Add_Error("No Friends Playing GTA IV");
|
|
Add_Error("Press ~PAD_B~ To Return");
|
|
}
|
|
//AddSubMenu("Send Sample");
|
|
|
|
}
|
|
//extern char *NETWORK_GET_FRIEND_NAME(int id);
|
|
//for (I < NETWORK_GET_FRIEND_COUNT()) if (NETWORK_IS_FRIEND_ONLINE(NETWORK_GET_FRIEND_NAME(I))
|
|
void MC_Recieved_Invites_Action(void)
|
|
{
|
|
if(SelectedItem >= 1)
|
|
{
|
|
Fix_Game_Before_Leaving();
|
|
NETWORK_ACCEPT_INVITE(menu_item[SelectedItem].num_val);
|
|
}
|
|
}
|
|
|
|
void MC_Invite_Players_Action(void)
|
|
{
|
|
if(SelectedItem > 0 && !GetBit(MD_Misc_OptionsBitSet, MD_MISC_MENU_IN_ERROR))
|
|
{
|
|
if(!In_Network)
|
|
{
|
|
Alert("~b~MD: ~s~You wanna try break things huh? - Nathan", true); //haha keep this it's funny - Nathan :P
|
|
return;
|
|
}
|
|
int i;
|
|
const char* FriendsName = NETWORK_GET_FRIEND_NAME(menu_item[SelectedItem].num_val);
|
|
for(i = 0; i < MAX_PLAYERS; i++)
|
|
{
|
|
if(Invalid_Player(i)) continue;
|
|
if(COMPARE_STRING(FriendsName,GET_PLAYER_NAME(i)))
|
|
{
|
|
char* buffer[16];
|
|
Strcpy(buffer, "~b~MD: ");
|
|
PLAYER_NAME_WITH_COLOUR(i, &buffer); //33 characrers
|
|
Strcat(buffer, " ~s~is already in this game."); //61
|
|
Alert(buffer,false);
|
|
return;
|
|
}
|
|
}
|
|
//still seems to freeze, perhaps it takes friend index hmmm, unsure for now, all code above works sooo :S
|
|
|
|
char* buffer[16]; //64 chars
|
|
Strcpy(buffer, "~b~MD: ~s~"); //18
|
|
/*
|
|
if(NETWORK_DID_INVITE_FRIEND(FriendsName))
|
|
{
|
|
Strcat(buffer, FriendsName); //15 max + 18 = 33
|
|
Strcat(buffer, " has already been invited.");
|
|
}
|
|
else
|
|
{
|
|
*/
|
|
NETWORK_INVITE_FRIEND(FriendsName);
|
|
menu_item[SelectedItem].extra_val = true; //display invited flashing ghost
|
|
Strcat(buffer, FriendsName); //15 max + 18 = 33
|
|
Strcat(buffer, " was invited to the game.");
|
|
|
|
/*
|
|
if(!delivered)
|
|
{
|
|
Strcat(buffer, "Invite sent but not delivered."); //30 + 18 = 48
|
|
}*/
|
|
//}
|
|
Alert(buffer,true);
|
|
}
|
|
|
|
}
|
|
|
|
#ifdef Premium
|
|
void RECEIVED_INVITES_NOTIFY(void) //should figure the phone script name that manages invites, and run this code when that's not active
|
|
{
|
|
//global needed "LastNumUnacceptedInvites = 0;
|
|
char *Inviter_Friendsname;
|
|
int num_Invites = NETWORK_GET_NUM_UNACCEPTED_INVITES();
|
|
if(num_Invites != LastNumUnacceptedInvites)
|
|
{
|
|
//invite received
|
|
//make a beepy noise here.
|
|
draw_invite_received_tick = (GetTickCount() + 3000);
|
|
LastNumUnacceptedInvites = num_Invites;
|
|
}
|
|
else if(num_Invites < LastNumUnacceptedInvites)
|
|
{
|
|
LastNumUnacceptedInvites = num_Invites; //silent update
|
|
}
|
|
// NETWORK_GET_UNACCEPTED_INVITER_NAME(num_Invites - 1);
|
|
if(draw_invite_received_tick != 0)
|
|
{
|
|
if(draw_invite_received_tick > GetTickCount())
|
|
{
|
|
if(!HAS_STREAMED_TXD_LOADED("network"))
|
|
{
|
|
REQUEST_STREAMED_TXD("network", 1);
|
|
while (!HAS_STREAMED_TXD_LOADED("network")) WAIT(0);
|
|
}
|
|
Invite_Icon = GET_TEXTURE_FROM_STREAMED_TXD( "network", "ICON_INVITE" );
|
|
DRAW_SPRITE(Invite_Icon,0.3, 0.4, 0.0600, 0.0600, 0, 255, 255, 255, 255);
|
|
|
|
//Inviter_Friendsname = NETWORK_GET_UNACCEPTED_INVITER_NAME(NETWORK_GET_NUM_UNACCEPTED_INVITES() - 1);
|
|
Inviter_Friendsname = NETWORK_GET_UNACCEPTED_INVITER_NAME(0); //yes 0
|
|
Set_Up_Draw(Names_Txt_Size, 255, 255, 255, 255, 0, 0, 0);
|
|
SET_TEXT_CENTRE(1);
|
|
SET_TEXT_USE_UNDERSCORE(true);
|
|
SET_TEXT_FONT(Player_Name_Font);
|
|
DISPLAY_TEXT_WITH_LITERAL_STRING( 0.5, 0.4, "STRING", Inviter_Friendsname);
|
|
//NETWORK_GET_UNACCEPTED_INVITER_NAME(NETWORK_GET_NUM_UNACCEPTED_INVITES() - 1)
|
|
// NETWORK_GET_UNACCEPTED_INVITER_NAME(num_Invites - 1);
|
|
//Need to add a scan here as who invited u and i will draw it
|
|
|
|
}
|
|
else
|
|
{
|
|
draw_invite_received_tick = 0;
|
|
//RELEASE_TEXTURE(Invite_Icon);
|
|
}
|
|
}
|
|
|
|
}
|
|
#endif
|
|
/*
|
|
|
|
void INVITE_ANTI_WAIT_DELIVERY_CHECK_LOOP(void) //nah nah nah
|
|
{
|
|
//need global
|
|
//int invitedFriendIndex, and if it's != -1 then person invited check arrival blah
|
|
//inviteTick;
|
|
if(inviteTick > (GetTickCount() +
|
|
|
|
}
|
|
*/
|
|
/* INVITE ALL FRIENDS TEST
|
|
int i;
|
|
for(i = 0; i < NETWORK_GET_FRIEND_COUNT(); i++)
|
|
{
|
|
if(NETWORK_DID_INVITE_FRIEND(NETWORK_GET_FRIEND_NAME(i))) continue;
|
|
NETWORK_INVITE_FRIEND(NETWORK_GET_FRIEND_NAME(i), "");
|
|
print_two(NETWORK_GET_FRIEND_NAME(i),"was sent an invite to the game");
|
|
int tick = 0;
|
|
do
|
|
{
|
|
if(!NETWORK_CHECK_INVITE_ARRIVAL(i))
|
|
{
|
|
tick++; //total of 3 seconds (30 times 100ms)
|
|
WAIT(100);
|
|
}
|
|
else
|
|
{
|
|
NETWORK_CLEAR_INVITE_ARRIVAL();
|
|
print_two("invite was successfully delivered to",NETWORK_GET_FRIEND_NAME(i));
|
|
break;
|
|
}
|
|
}
|
|
while(tick < 30);
|
|
WAIT(10);
|
|
}
|
|
*/
|
|
/*
|
|
PRINT ALL UNACCEPTED INVITE GAMERTAGS
|
|
int i;
|
|
char* episode[3]; episode[0] = "Original"; episode[1] = "TLaD"; episode[2] = "TBoGT";
|
|
for(i = 0; i < GET_NUM_UNACCEPTED_INVITES(); i++)
|
|
{
|
|
//GET_EPISODE_NAME(uint episodeIndex);
|
|
print_two(NETWORK_GET_UNACCEPTED_INVITER_NAME(i),episode[NETWORK_GET_UNACCEPTED_INVITE_EPISODE(i)]);
|
|
// NETWORK_ACCEPT_INVITE(i);
|
|
}
|
|
*/
|
|
|
|
/*
|
|
extern char *NETWORK_GET_UNACCEPTED_INVITER_NAME(int invite_id);
|
|
extern int NETWORK_ACCEPT_INVITE(int invite_id);
|
|
|
|
extern boolean NETWORK_DID_INVITE_FRIEND(char *friendname);//NETWORK_GET_FRIEND_NAME(I)
|
|
extern int NETWORK_ACCEPT_INVITE(int invite_id);//if (COMPARE_STRING( NETWORK_GET_FRIEND_NAME( uParam0 ), NETWORK_GET_UNACCEPTED_INVITER_NAME( Result ) )) return result;
|
|
//possibly
|
|
*/
|
|
/* GAME STUFF
|
|
///WORTH NOTING FOR USING BLOCKED/MUTED NATIVES IN FUTURE (this is from cellphone script in its selection detection/action)
|
|
if ((NETWORK_AM_I_MUTED_BY_PLAYER( l_U2161 )) || ((NETWORK_IS_PLAYER_MUTED_BY_ME( l_U2161 )) || ((NETWORK_AM_I_BLOCKED_BY_PLAYER( l_U2161 )) || (NETWORK_IS_PLAYER_BLOCKED_BY_ME( l_U2161 )))))
|
|
{
|
|
sub_3643( 1069 );
|
|
sub_3036( "/n ***************" );
|
|
sub_3036( " NOT GOT PRIV" );
|
|
sub_3036( "/n ***************" );
|
|
}
|
|
|
|
//l_U2153 = {l_U41[l_U3._fU44]._fU8}; inside Rockstars script
|
|
//first arg to sub_36555 when called is always l_U2153,
|
|
////l_U2153 = {l_U41[l_U3._fU44]._fU8}; //just anything[value].something represents a struct
|
|
//likely a player struct (the index area, they proceed to check if that value is null
|
|
//and if it's not null they use it inside friend natives.
|
|
//it's a friends gamertag / string
|
|
|
|
|
|
void sub_36555(friendstring, unknown uParam1_LikelyABufferOrString, boolean bParam2_WhenUsedAlways 1/One/True)
|
|
{
|
|
if (sub_36566( friendstring ))
|
|
{
|
|
StrCopy( (uParam1^), "INVITE_MSG_0", 16 );
|
|
}
|
|
else if (GET_NUMBER_OF_PLAYERS() == NETWORK_GET_MAX_SLOTS())
|
|
{
|
|
StrCopy( (uParam1^), "INVITE_MSG_1", 16 );
|
|
}
|
|
else if (bParam2)
|
|
{
|
|
PLAY_SOUND_FRONTEND( -1, "MOBILE_PHONE_INVITE_FRIEND" );
|
|
}
|
|
NETWORK_INVITE_FRIEND( friendstring, "" );
|
|
StrCopy( (uParam1^), "CP_INVITE_MSG", 16 );;;
|
|
return;
|
|
}
|
|
|
|
|
|
NETWORK_FIND_GAME(int GameMode, int ukn0, int ukn1, int ukn2);
|
|
|
|
int i;
|
|
for(i = 0; i < NETWORK_GET_NUMBER_OF_GAMES(); i++)
|
|
{
|
|
if(NETWORK_FIND_GAME_PENDING() || NETWORK_JOIN_GAME_PENDING()) break; //FIND_ will be false a lil while after using NETWORK_FIND_GAME
|
|
if(!NETWORK_IS_FIND_RESULT_VALID(i) || !NETWORK_IS_FIND_RESULT_UPDATED(i)) continue;
|
|
//if(match_game_search_settings && NETWORK_RESULTS_MATCHES_SEARCH_CRITERIA(i)
|
|
if(NETWORK_RESULT_MATCHES_SEARCH_CRITERIA(i))
|
|
{
|
|
|
|
}
|
|
}
|
|
//if joining a game..
|
|
if(NETWORK_JOIN_GAME_SUCCEEDED())
|
|
NETWORK_CLEAR_SUMMONS();
|
|
|
|
///////////////////////////////////
|
|
NETWORK_FIND_GAME(int GameMode, int ukn0, int ukn1, int ukn2);
|
|
if(NETWORK_FIND_GAME_PENDING())
|
|
extern boolean NETWORK_JOIN_GAME_PENDING(void);
|
|
extern boolean NETWORK_JOIN_GAME_SUCCEEDED(void);
|
|
extern boolean NETWORK_LEAVE_GAME_PENDING(void);
|
|
extern boolean PLAYER_WANTS_TO_JOIN_NETWORK_GAME(int); //if we replace phone script we can choose to allow player into game yes or no
|
|
|
|
enum eGameMode{
|
|
GAME_MODE_BOMB_DA_BASE_II = 15,
|
|
GAME_MODE_CAR_JACK_CITY = 5,
|
|
GAME_MODE_COPS_AND_CROOKS = 10,
|
|
GAME_MODE_DEAL_BREAKER = 13,
|
|
GAME_MODE_DEATHMATCH = 0,
|
|
GAME_MODE_FREE_MODE = 16,
|
|
GAME_MODE_GTA_RACE = 7,
|
|
GAME_MODE_HANGMANS_NOOSE = 14,
|
|
GAME_MODE_MAFIYA_WORK = 2,
|
|
GAME_MODE_NONE = -1,
|
|
GAME_MODE_PARTY_MODE = 8,
|
|
GAME_MODE_RACE = 6,
|
|
GAME_MODE_TEAM_CAR_JACK_CITY = 4,
|
|
GAME_MODE_TEAM_DEATHMATCH = 1,
|
|
GAME_MODE_TEAM_MAFIYA_WORK = 3,
|
|
GAME_MODE_TURF_WAR = 12,
|
|
GAME_MODE_UNKNOWN_11 = 11,
|
|
GAME_MODE_UNKNOWN_9 = 9
|
|
};
|
|
Invite stuff for future reference (Devil wants invites done through menu I think) - Nathan
|
|
|
|
extern boolean NETWORK_CHECK_INVITE_ARRIVAL(void);
|
|
extern boolean NETWORK_HAVE_ACCEPTED_INVITE(void);
|
|
extern boolean NETWORK_IS_INVITEE_ONLINE(void);
|
|
extern void NETWORK_CLEAR_INVITE_ARRIVAL(void);
|
|
extern bool NETWORK_INVITE_FRIEND(char *friendname, char *ukn);//NETWORK_INVITE_FRIEND(NETWORK_GET_FRIEND_NAME(I), "");
|
|
|
|
NETWORK_GET_NUM_UNACCEPTED_INVITES(void);
|
|
extern int NETWORK_GET_UNACCEPTED_INVITE_EPISODE(int invite_id);
|
|
extern int NETWORK_GET_UNACCEPTED_INVITE_GAME_MODE(int invite_id);
|
|
|
|
|
|
//GAME MODES v
|
|
|
|
enum eGameMode{
|
|
GAME_MODE_BOMB_DA_BASE_II = 15,
|
|
GAME_MODE_CAR_JACK_CITY = 5,
|
|
GAME_MODE_COPS_AND_CROOKS = 10,
|
|
GAME_MODE_DEAL_BREAKER = 13,
|
|
GAME_MODE_DEATHMATCH = 0,
|
|
GAME_MODE_FREE_MODE = 0x10,
|
|
GAME_MODE_GTA_RACE = 7,
|
|
GAME_MODE_HANGMANS_NOOSE = 14,
|
|
GAME_MODE_MAFIYA_WORK = 2,
|
|
GAME_MODE_NONE = -1,
|
|
GAME_MODE_PARTY_MODE = 8,
|
|
GAME_MODE_RACE = 6,
|
|
GAME_MODE_TEAM_CAR_JACK_CITY = 4,
|
|
GAME_MODE_TEAM_DEATHMATCH = 1,
|
|
GAME_MODE_TEAM_MAFIYA_WORK = 3,
|
|
GAME_MODE_TURF_WAR = 12,
|
|
GAME_MODE_UNKNOWN_11 = 11,
|
|
GAME_MODE_UNKNOWN_9 = 9
|
|
};
|
|
*/ |