Files
GTAConnectedDocs/Trident/MD_Contents/MDC_Player_Options.c
2026-01-28 21:32:26 +04:00

793 lines
36 KiB
C

/**
* @ MAJOR DISTRIBUTION EXTEND
* @ Current Version : TRIDENT
* @ MADE BY - DEVILSDESIGN & IIV_NATHAN_VII & SHOCKixiXixiWAVE
*/
/* ######################### PLAYER OPTIONS SETUP & ACTION ############################*/
#pragma once
//Maybe add autospawn boat to this section - Player Protections
void MD_New_PlayerOptions_Setup(const int Player_ID){
//!**Player Char Check**//
Ped Player_PED;
if(!PLAYER_HAS_CHAR(Player_ID))return Alert_Abort(Error_Char_Missing,false);
else GET_PLAYER_CHAR(Player_ID,&Player_PED);
//!**********************/
MENU_SUB_HEADER = "Player Options";
NETWORK_FIRST_FOUR_ITEMS_MENU_SETUP();
Add_JumpOver("~BLIP_94~ P L A Y E R O P T I O N S ~BLIP_94~"); //5
//!NeW Setup
AddFunction_Value("Player Protection",3); //6 Godmode / Juggernaut / never wanted / ADD autospawn boat(water)
AddFunction_Value_CB("Player Help",5);
AddFunction_Value_CB("Weapon Options",5); //7 Unlimmited Clip / Rapid Fire / Auto Aim / Give Weapons /Remove Weapons
//8 ALL PLAYERS / SELF = Default on enter submenu
AddFunction_Value("Visibility",5); //9 Invisible (On Foot) / Invisible (On Foot+Vehicle) / Hide Blip(On Foot) / Hide Blip (On Foot + Vehicle)
AddFunction_Value("Super Powers",4); //10 Super Punch / Super Punch / Super Jump / Force Field
AddFunction_Value_CB("Physics", 3); //11 / Drive Walk ON Water / Gravity / Slow Motion
AddBool("~BLIP_68~ Fly-mod ~PAD_LB~ slower / ~PAD_RB~ faster",GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_FLYMOD)); //12
AddBool("~BLIP_52~ Inferno",GetBit(pPlayerOptionsBitSet,PLAYER_OPTION_INFERNO)); //13 ALL PLAYERS / SELF = Default on enter submenu
AddFunction_CB("~BLIP_52~ Explode Player"); //14 ALL PLAYERS / SELF = Default on enter submenu
AddFunction_CB("~BLIP_52~ Spawn Money around player"); //15 ALL PLAYERS / SELF = Default on enter submenu
AddFunction("~BLIP_68~ Change to Niko"); //16
AddFunction_Value_CB("Set Player Colors (YOU = Host)",18); //17 ALL PLAYERS / SELF = Default on enter submenu
AddFunction("~BLIP_68~ Reset Player");
AddFunction_CB("~BLIP_68~ Resurrect Player(Pull out Ghost)");
AddFunction("Find new Game");
//AddBool_CB("Attach Player Info x ",Attach_Player_Info);
//AddFunction_Value_CB("Player Info Display",9); //Show window / Set Player 1 - Set Player 2
item_highlighted = 6;
//*/ //--> = 25 options on one page without the top 4 shortcuts = all together 34 options on ONE PAGE !!!
return;
}
void MD_New_PlayerOptions_Action(const int Player_ID){
Vehicle vehicle;
uint vehicle_id;
float heading, speed;
//!**Player Char Check**//
Ped Player_PED;
//!**********************/
NETWORK_FIRST_FOUR_ITEMS_MENU_ACTION();
//! ITEMLINE 5 ******************Jumpover TITLE MENU********************//
if(PLAYER_HAS_CHAR(Player_ID)){
GET_PLAYER_CHAR(Player_ID,&Player_PED);
if(SelectedItem == 6){ //AddFunction_Value("Player Protection",2); //6 Godmode / Juggernaut / Never wanted
if(menu_item[SelectedItem].num_val == 1){
ToggleBit(pPlayerOptionsBitSet,PLAYER_OPTION_GODMODE);
//Alert_Two("~b~MD: ~s~Godmode",GetBit(pPlayerOptionsBitSet,PLAYER_OPTION_GODMODE) ? PrintON : PrintOFF ,false);
}
else if(menu_item[SelectedItem].num_val == 2){
ToggleBit(pPlayerOptionsBitSet,PLAYER_OPTION_JUGGERNAUT);
//Alert_Two("~b~MD: ~s~Juggernaut",GetBit(pPlayerOptionsBitSet,PLAYER_OPTION_JUGGERNAUT) ? PrintON : PrintOFF ,false);
}
else if(menu_item[SelectedItem].num_val == 3){
ToggleBit(pPlayerOptionsBitSet,PLAYER_OPTION_NEVER_WANTED);
//Alert_Two("~b~MD: ~s~Never wanted by the police",GetBit(pPlayerOptionsBitSet,PLAYER_OPTION_NEVER_WANTED) ? PrintON : PrintOFF ,false);
}
}
if(SelectedItem == 7){//AddFunction_CB("~BLIP_52~ Health / Armour / Remove Armour"); //8 ALL PLAYERS / SELF = Default on enter submenu
if(menu_item[SelectedItem].num_val == 1){
if(Player_PED == pPlayer)SET_CHAR_HEALTH(Player_PED,500);
else GIVE_HEALTH_TO_CHAR(Player_PED);
char * buffer[32]; //128 characters to play with
Strcpy(buffer, "~b~MD: ~s~ "); //27 Characters
Strcat(buffer, "~s~Healthpack given to: "); //27 Characters
PLAYER_NAME_WITH_COLOUR(Player_ID, &buffer); //WORKS! 47
Strcat(buffer, ".");
Alert(buffer,true);
}
else if(menu_item[SelectedItem].num_val == 2){
ADD_ARMOUR_TO_CHAR(Player_PED,200);
char * buffer[32]; //128 characters to play with
Strcpy(buffer, "~b~MD: ~s~ "); //27 Characters
Strcat(buffer, "~s~Armour given to: "); //27 Characters
PLAYER_NAME_WITH_COLOUR(Player_ID, &buffer); //WORKS! 47
Strcat(buffer, ".");
Alert(buffer,true);
}
else if(menu_item[SelectedItem].num_val == 3){
ADD_ARMOUR_TO_CHAR(Player_PED,-100);
char * buffer[32]; //128 characters to play with
Strcpy(buffer, "~b~MD: ~s~ "); //27 Characters
Strcat(buffer, "~s~Armour removed from: "); //27 Characters
PLAYER_NAME_WITH_COLOUR(Player_ID, &buffer); //WORKS! 47
Strcat(buffer, ".");
Alert(buffer,true);
}
else if(menu_item[SelectedItem].num_val == 4){
if(IS_CHAR_IN_ANY_CAR(Player_PED)){
GET_CAR_CHAR_IS_USING(Player_PED, &vehicle);
GET_NETWORK_ID_FROM_VEHICLE(vehicle,&vehicle_id);
if(!network_control(vehicle_id))return;
GET_CAR_HEADING(vehicle,&heading);
GET_CAR_SPEED(vehicle,&speed);
}
else{
Alert(Error_NetPlayer_Vehicle,false);
return;
}
FIX_CAR(vehicle);
SET_CAR_ENGINE_ON(vehicle,true,true);
SET_VEHICLE_DIRT_LEVEL(vehicle, 0);
char * buffer[32]; //128 characters to play with
Strcpy(buffer, "~b~MD: ~s~ "); //27 Characters
PLAYER_NAME_WITH_COLOUR(Player_ID, &buffer); //WORKS! 47
Strcat(buffer, "'s ~y~"); //27 Characters
Strcat(buffer, VEHICLES_MODEL_NAME(vehicle));
Strcat(buffer, "~s~ was fixed & washed"); //27 Characters
Strcat(buffer, ".");
Alert(buffer,true);
}
else if(menu_item[SelectedItem].num_val == 5){
if(IS_CHAR_IN_ANY_CAR(Player_PED)){
GET_CAR_CHAR_IS_USING(Player_PED, &vehicle);
GET_NETWORK_ID_FROM_VEHICLE(vehicle,&vehicle_id);
if(!network_control(vehicle_id))return;
GET_CAR_HEADING(vehicle,&heading);
GET_CAR_SPEED(vehicle,&speed);
}
else{
Alert(Error_NetPlayer_Vehicle,false);
return;
}
GET_CAR_HEADING(vehicle,&heading);
SET_VEHICLE_QUATERNION(vehicle,0,0,0,0);
SET_CAR_HEADING(vehicle,heading);
SET_CAR_ON_GROUND_PROPERLY(vehicle);
char * buffer[32]; //128 characters to play with
Strcpy(buffer, "~b~MD: ~s~ "); //27 Characters
PLAYER_NAME_WITH_COLOUR(Player_ID, &buffer); //WORKS! 47
Strcat(buffer, "'s ~y~"); //27 Characters
Strcat(buffer, VEHICLES_MODEL_NAME(vehicle));
Strcat(buffer, "~s~ was set upright again"); //27 Characters
Strcat(buffer, ".");
Alert(buffer,true);
}
}
else if(SelectedItem == 8){//AddFunction_Value("Weapon Options",4); //7 Unlimmited Clip / Rapid Fire / Auto Aim / Give Weapons / Remove
if(menu_item[SelectedItem].num_val == 1){
ToggleBit(pPlayerOptionsBitSet,PLAYER_OPTION_INFINITE_AMMO);
Alert_Two("~b~MD: ~s~Unlimited Clip (Yourself)",GetBit(pPlayerOptionsBitSet,PLAYER_OPTION_INFINITE_AMMO) ? PrintON : PrintOFF ,false);
}
else if(menu_item[SelectedItem].num_val == 2){
ToggleBit(pPlayerOptionsBitSet,PLAYER_OPTION_RAPID_FIRE);
Alert_Two("~b~MD: ~s~Rapid Fire (Yourself)",GetBit(pPlayerOptionsBitSet,PLAYER_OPTION_RAPID_FIRE) ? PrintON : PrintOFF ,false);
}
else if(menu_item[SelectedItem].num_val == 3){
ToggleBit(pPlayerOptionsBitSet,PLAYER_OPTION_AUTO_AIM);
Alert_Two("~b~MD: ~s~Auto Aim (Yourself)",GetBit(pPlayerOptionsBitSet,PLAYER_OPTION_AUTO_AIM) ? PrintON : PrintOFF ,false);
}
else if(menu_item[SelectedItem].num_val == 4){
GIVE_EPISODIC_WEAPONS_TO_CHAR(Player_PED,Episode);
Alert_Two("~b~MD: ~s~Weapons given to", GET_PLAYER_NAME(Player_ID),true);
}
else if(menu_item[SelectedItem].num_val == 5){
REMOVE_ALL_CHAR_WEAPONS(Player_PED);
Alert_Two("~b~MD: ~s~Weapons removed from", GET_PLAYER_NAME(Player_ID),true);
}
}
if(SelectedItem == 9){//AddFunction_Value("Visibility",3); //9 Invisible (On Foot) / Invisible (On Foot+Vehicle) / Hide Blip(On Foot) / Hide Blip (On Foot + Vehicle)
if(menu_item[SelectedItem].num_val == 1){
SET_CHAR_VISIBLE(pPlayer,!IS_CHAR_VISIBLE(pPlayer));
Alert_Two("~b~MD: ~s~Visibility",IS_CHAR_VISIBLE(pPlayer) ? PrintON : PrintOFF ,false);
}
else if(menu_item[SelectedItem].num_val == 2){
Vehicle vehicle;
if(!IS_CHAR_IN_ANY_CAR(pPlayer)){
Alert_Abort(Error_Personal_Vehicle,false);
return;
}
else{
GET_CAR_CHAR_IS_USING(pPlayer,&vehicle);
ToggleBit(VehicleOptionsBitSet, VEHICLE_OPTION_INVISIBLE);
SET_CAR_VISIBLE(vehicle,GetBit(VehicleOptionsBitSet, VEHICLE_OPTION_INVISIBLE));
Alert_Two("~b~MD: ~s~Vehicle Visibility",GetBit(VehicleOptionsBitSet, VEHICLE_OPTION_INVISIBLE) ? PrintON : PrintOFF ,false);
}
}
else if(menu_item[SelectedItem].num_val == 3){ //Invisible Player + Car
Vehicle vehicle;
if(!IS_CHAR_IN_ANY_CAR(pPlayer)){
Alert(Error_Personal_Vehicle,false);
return;
}
else{
GET_CAR_CHAR_IS_USING(pPlayer,&vehicle);
SET_CHAR_VISIBLE(pPlayer,!IS_CHAR_VISIBLE(pPlayer));
SetBit(VehicleOptionsBitSet, VEHICLE_OPTION_INVISIBLE,IS_CHAR_VISIBLE(pPlayer));
SET_CAR_VISIBLE(vehicle,IS_CHAR_VISIBLE(pPlayer));
Alert_Two("~b~MD: ~s~Vehicle + Player Visibility",(GetBit(VehicleOptionsBitSet, VEHICLE_OPTION_INVISIBLE) && IS_CHAR_VISIBLE(pPlayer)) ? PrintON : PrintOFF ,false);
}
}
else if(menu_item[SelectedItem].num_val == 4){
ToggleBit(pPlayerOptionsBitSet, PLAYER_OPTION_REMOVE_BLIP);
if(!GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_REMOVE_BLIP)){
SET_PLAYER_CONTROL(iPlayer,true);
SET_CHAR_VISIBLE(pPlayer,true);
}
Alert_Two("~b~MD: ~s~Ninja Mode",GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_REMOVE_BLIP) ? PrintON : PrintOFF ,false);
}
else if(menu_item[SelectedItem].num_val == 5){
Vehicle vehicle;
if(!IS_CHAR_IN_ANY_CAR(pPlayer)){
SetBit(VehicleOptionsBitSet, VEHICLE_OPTION_REMOVE_BLIP,false);
Alert(Error_Personal_Vehicle,false);
return;
}
else{
GET_CAR_CHAR_IS_USING(pPlayer,&vehicle);
ToggleBit(VehicleOptionsBitSet, VEHICLE_OPTION_REMOVE_BLIP);
if(!GetBit(pPlayerOptionsBitSet,VEHICLE_OPTION_REMOVE_BLIP)){
SET_PLAYER_CONTROL(iPlayer,true);
if(!IS_CHAR_VISIBLE(pPlayer))SET_CHAR_VISIBLE(pPlayer,true);
if(IS_CHAR_IN_ANY_CAR(pPlayer) || is_driving(pPlayer)){
SET_CAR_VISIBLE(vehicle,true);
SetBit(VehicleOptionsBitSet, VEHICLE_OPTION_DESOLIDIFY,false);
}
}
}
}
}
//!Add Helpers for this
else if(SelectedItem == 10){//AddFunction_Value("Super Powers",3); //10 Super Punch / Super Punch / Super Jump / Force Field
if(menu_item[SelectedItem].num_val == 1)ToggleBit(pPlayerOptionsBitSet,PLAYER_OPTION_SUPER_RUN);
else if(menu_item[SelectedItem].num_val == 2)ToggleBit(pPlayerOptionsBitSet,PLAYER_OPTION_SUPER_JUMP);
else if(menu_item[SelectedItem].num_val == 3)ToggleBit(pPlayerOptionsBitSet,PLAYER_OPTION_SUPER_PUNCH);
else if(menu_item[SelectedItem].num_val == 4){
if(GetBit(pPlayerOptionsBitSet,PLAYER_OPTION_GODMODE))SetBit(pPlayerOptionsBitSet,PLAYER_OPTION_GODMODE,true);
ToggleBit(pPlayerOptionsBitSet,PLAYER_OPTION_FORCE_FIELD);
Alert_Two("~b~MD: ~s~Player Inferno",GetBit(pPlayerOptionsBitSet,PLAYER_OPTION_INFERNO) ? PrintON : PrintOFF ,false);
WAIT(1000);
if(GetBit(pPlayerOptionsBitSet,PLAYER_OPTION_FORCE_FIELD)) Alert("~b~MD: ~s~ Do not overuse this! Godmode was enabled",false);
}
}
else if(SelectedItem == 11){//AddFunction_Value("Physics", 3); //11 / Drive Walk ON Water / Gravity / Slow Motion
if(menu_item[SelectedItem].num_val == 1)TOGGLE_DRIVE_WALK_WATER_FOR_PLAYER(Player_ID);
else if(menu_item[SelectedItem].num_val == 2)ToggleBit(pPlayerOptionsBitSet,PLAYER_OPTION_GRAVITY);
else if(menu_item[SelectedItem].num_val == 3){
ToggleBit(pPlayerOptionsBitSet,PLAYER_OPTION_SLOW_MO);
SET_TIME_SCALE(GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_SLOW_MO) ? 0.3 : 1);
}
}
else if(SelectedItem == 12){
if(GetByteInSet(SpectateAndAttachByteSet, ATTACH_TYPE) == 3){
Detach_pPlayer_On_Coord();
Alert("~b~MD: ~s~Spectate mode disabled for flymod!",false);
}
bool flymod = GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_FLYMOD);
if(flymod){
if(DOES_CAM_EXIST(scriptedCam)){
SET_CAM_ACTIVE(scriptedCam, false);
SET_CAM_PROPAGATE(scriptedCam, false);
ACTIVATE_SCRIPTED_CAMS(false, false);
UNATTACH_CAM(scriptedCam);
DESTROY_CAM(scriptedCam);
while (DOES_CAM_EXIST(scriptedCam)) WAIT(0);
SET_CAM_BEHIND_PED(pPlayer);
scriptedCam = 0;
}
FREEZE_CHAR_POSITION(pPlayer, false);
}
ToggleBit(pPlayerOptionsBitSet, PLAYER_OPTION_FLYMOD);
menu_item[SelectedItem].extra_val = GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_FLYMOD);
}
else if(SelectedItem == 13){
ToggleBit(pPlayerOptionsBitSet,PLAYER_OPTION_INFERNO);
menu_item[SelectedItem].extra_val = GetBit(pPlayerOptionsBitSet,PLAYER_OPTION_INFERNO);
}
else if(SelectedItem == 14){
float x,y,z;
GET_CHAR_COORDINATES(Player_PED, &x, &y, &z);
ADD_EXPLOSION(x, y, z, EXPLOSION_SHIP_DESTROY, 10.0, true, false, 0.7f);
}
else if(SelectedItem == 15){
int i;
for(i = 0; i < 4; i++){
GIVE_CASH_PICKUP_TO_CHAR(Player_PED, 99999999999);
}
}
else if(SelectedItem == 16){
if(GetPlayerModel() != MODEL_PLAYER)change_player(MODEL_PLAYER);
else change_player(GET_PLAYERSETTINGS_MODEL_CHOICE());
SET_CHAR_HEALTH(pPlayer,500);
ADD_ARMOUR_TO_CHAR(pPlayer,200);
GIVE_EPISODIC_WEAPONS_TO_CHAR(pPlayer,Episode);
}
else if(SelectedItem == 17){
if(menu_item[SelectedItem].num_val > 0 && menu_item[SelectedItem].num_val < 18) SET_PLAYER_COLOUR(Player_ID,menu_item[SelectedItem].num_val - 1);
else {
if (Player_ID == iPlayer)SET_PLAYER_COLOUR(Player_ID,iPlayer + 1);
else{
register int scanner;
for(scanner = 0; scanner < MAX_PLAYERS; scanner++){
if(players[scanner].id != Player_ID)continue;
SET_PLAYER_COLOUR(Player_ID,players[scanner].id + 1);
break;
}
}
}
}
else if(SelectedItem == 18){
change_player(GET_PLAYERSETTINGS_MODEL_CHOICE());
// if (Player_ID == iPlayer)SET_PLAYER_COLOUR(Player_ID,iPlayer + 1);
}
}
if(SelectedItem == 19){
float mx,my,mz;
if(PLAYER_HAS_CHAR(Player_ID)){
GET_PLAYER_CHAR(Player_ID,&Player_PED);
GET_CHAR_COORDINATES(Player_PED,&mx,&my,&mz);
RESURRECT_NETWORK_PLAYER( Player_ID, mx,my,mz, 0 );
SET_CHAR_HEALTH(pPlayer,300);
}
else{
GET_CHAR_COORDINATES(pPlayer,&mx,&my,&mz);
RESURRECT_NETWORK_PLAYER( Player_ID, mx,my,mz, 0 );
}
}
if(SelectedItem == 20)
{
SHUTDOWN_AND_LAUNCH_NETWORK_GAME(GET_CURRENT_EPISODE());
}
/*
else if(SelectedItem == 20){
if(menu_item[SelectedItem].num_val == 1){
Attach_Player_Info = !Attach_Player_Info;
if(!Attach_Player_Info){
Player_INFO_ID1 = 99;
Player_INFO_ID2 = 99;
Player_INFO_ID3 = 99;
}
else Player_INFO_ID1 = iPlayer;
}
else if(menu_item[SelectedItem].num_val == 2){
Player_INFO_ID1 = Player_ID;
}
else if(menu_item[SelectedItem].num_val == 3){
Player_INFO_ID1 = 99;
}
else if(menu_item[SelectedItem].num_val == 4){
Player_INFO_ID2 = Player_ID;
}
else if(menu_item[SelectedItem].num_val == 5){
Player_INFO_ID2 = 99;
}
else if(menu_item[SelectedItem].num_val == 6){
Player_INFO_ID3 = Player_ID;
}
else if(menu_item[SelectedItem].num_val == 7){
Player_INFO_ID3 = 99;
}
else if(menu_item[SelectedItem].num_val == 8){//Move
Move_Player_Info = !Move_Player_Info;
}
else if(menu_item[SelectedItem].num_val == 9){//Reset
InfoDisplay_x = 0.4f;
InfoDisplay_y = 0.1f;
}
}
*/
}
//!Add to functions where it belongs
void draw_number(char *gxtName, float x, float y, int val){
DISPLAY_TEXT_WITH_NUMBER(x, y, gxtName, val);
}
void draw_text(char *gxtName, float x, float y, char *val){
DISPLAY_TEXT_WITH_LITERAL_STRING(x, y, gxtName, val);
}
void MC_PlayerOptions_Loop(void){
SET_GRAVITY_OFF(!GetBit(pPlayerOptionsBitSet,PLAYER_OPTION_GRAVITY));
if(Attach_Player_Info){
//InfoDisplay_x = 0.4f;
//InfoDisplay_y = 0.1f;
float Offset_X = 0.1250f; //Adjust column 2
float Offset_X2 = 0.1000f;
float Line_Height = 0.025f;
//#define Gold 164,134,35
#define ID_TextSize 0.1950f*0.85,0.3600f*0.85
//#define ID_TextSize 0.1950f,0.3600f
Ped Player_INFO_PED1, Player_INFO_PED2, Player_INFO_PED3;
uint PColor_R1,PColor_G1,PColor_B1,PColor_R2,PColor_G2,PColor_B2,PColor_R3,PColor_G3,PColor_B3;
int ARMOR1,HEALTH1,VEHICLEID1,VEHICLEHEALTH1,VEHICLEMODEL1;
int ARMOR2,HEALTH2,VEHICLEID2,VEHICLEHEALTH2,VEHICLEMODEL2;
int ARMOR3,HEALTH3,VEHICLEID3,VEHICLEHEALTH3,VEHICLEMODEL3;
//DRAW_SPRITE(Background,InfoDisplay_x + 0.03, InfoDisplay_y + 0.0550f , 0.3000f, 0.175, 0, 0, 0, 255, 150);
float Player2_Offset,Player3_Offset;
if(Player_INFO_ID2 != 99 )Player2_Offset = 0.1000 ;
else Player2_Offset = 0;
if(Player_INFO_ID3 != 99 )Player3_Offset = 0.1000 ;
else Player3_Offset = 0;
if(Player_INFO_ID3 != 99 && Player_INFO_ID2 == 99)Player3_Offset = 0.2000 ;
DRAW_CURVED_WINDOW(InfoDisplay_x - Offset_X2 - 0.01, InfoDisplay_y -(Line_Height*1.5), 0.2100f + Player2_Offset + Player3_Offset, 0.175, 100);
Set_Up_Draw(0.1950f*0.75,0.3600f*0.75,Gold,255,0,0,0);
SET_TEXT_FONT(Menu_Font);
DISPLAY_TEXT_WITH_LITERAL_STRING(InfoDisplay_x - Offset_X2, InfoDisplay_y - Line_Height, "STRING", "M D E X T E N D A N T I C H E A T P L A Y E R I N F O");
if(Player_INFO_ID1 != 99){
if(PLAYER_HAS_CHAR(Player_INFO_ID1)){
GET_PLAYER_CHAR(Player_INFO_ID1,&Player_INFO_PED1);
if(DOES_CHAR_EXIST(Player_INFO_PED1)){
GET_PLAYER_RGB_COLOUR(Player_INFO_ID1,&PColor_R1,&PColor_G1,&PColor_B1);
GET_CHAR_ARMOUR(Player_INFO_PED1,&ARMOR1);
GET_CHAR_HEALTH(Player_INFO_PED1,&HEALTH1);
if(IS_CHAR_IN_ANY_CAR(Player_INFO_PED1)){
GET_CAR_CHAR_IS_USING(Player_INFO_PED1, &VEHICLEID1);
GET_CAR_HEALTH(VEHICLEID1,&VEHICLEHEALTH1);//veh Health
GET_CAR_MODEL(VEHICLEID1,&VEHICLEMODEL1);//veh model
}
}
}
else Player_INFO_ID1 = 99;
}
if(Player_INFO_ID2 != 99){
if(PLAYER_HAS_CHAR(Player_INFO_ID2)){
GET_PLAYER_CHAR(Player_INFO_ID2,&Player_INFO_PED2);
if(DOES_CHAR_EXIST(Player_INFO_PED2)){
GET_PLAYER_RGB_COLOUR(Player_INFO_ID2,&PColor_R2,&PColor_G2,&PColor_B2);
GET_CHAR_ARMOUR(Player_INFO_PED2,&ARMOR2);
GET_CHAR_HEALTH(Player_INFO_PED2,&HEALTH2);
if(IS_CHAR_IN_ANY_CAR(Player_INFO_PED2)){
GET_CAR_CHAR_IS_USING(Player_INFO_PED2, &VEHICLEID2);
GET_CAR_HEALTH(VEHICLEID2,&VEHICLEHEALTH2);//veh Health
GET_CAR_MODEL(VEHICLEID2,&VEHICLEMODEL2);//veh model
}
}
}
else Player_INFO_ID2 = 99;
}
if(Player_INFO_ID3 != 99){
if(PLAYER_HAS_CHAR(Player_INFO_ID3)){
GET_PLAYER_CHAR(Player_INFO_ID3,&Player_INFO_PED3);
if(DOES_CHAR_EXIST(Player_INFO_PED3)){
GET_PLAYER_RGB_COLOUR(Player_INFO_ID3,&PColor_R3,&PColor_G3,&PColor_B3);
GET_CHAR_ARMOUR(Player_INFO_PED3,&ARMOR3);
GET_CHAR_HEALTH(Player_INFO_PED3,&HEALTH3);
if(IS_CHAR_IN_ANY_CAR(Player_INFO_PED3)){
GET_CAR_CHAR_IS_USING(Player_INFO_PED3, &VEHICLEID3);
GET_CAR_HEALTH(VEHICLEID3,&VEHICLEHEALTH3);//veh Health
GET_CAR_MODEL(VEHICLEID3,&VEHICLEMODEL3);//veh model
}
}
}
else Player_INFO_ID3 = 99;
}
//!Generally
Set_Up_Draw(ID_TextSize,Gold,255,0,0,0);
DISPLAY_TEXT_WITH_LITERAL_STRING(InfoDisplay_x - Offset_X2, InfoDisplay_y + Line_Height, "STRING", "Health : ");
USE_PREVIOUS_FONT_SETTINGS();
DISPLAY_TEXT_WITH_LITERAL_STRING(InfoDisplay_x - Offset_X2, InfoDisplay_y + Line_Height*2, "STRING", "Armour : ");
USE_PREVIOUS_FONT_SETTINGS();
DISPLAY_TEXT_WITH_LITERAL_STRING(InfoDisplay_x - Offset_X2, InfoDisplay_y + Line_Height*3, "STRING", "V.Health : ");
USE_PREVIOUS_FONT_SETTINGS();
DISPLAY_TEXT_WITH_LITERAL_STRING(InfoDisplay_x - Offset_X2, InfoDisplay_y + Line_Height*4, "STRING", "Vehicle : ");
//!The names & info
if(Player_INFO_ID1 != 99){
//!Name
Set_Up_Draw(ID_TextSize,PColor_R1,PColor_G1,PColor_B1,255,0,0,0);
SET_TEXT_FONT(Player_Name_Font);
SET_TEXT_USE_UNDERSCORE(true);
SET_TEXT_CENTRE(1);
DISPLAY_TEXT_WITH_LITERAL_STRING(InfoDisplay_x, InfoDisplay_y, "STRING", GET_PLAYER_NAME(Player_INFO_ID1));
//int ARMOR1,HEALTH1,VEHICLEID1,VEHICLEHEALTH1,VEHICLEMODEL1;
Set_Up_Draw(ID_TextSize,255, 255, 255,255,0,0,0);
SET_TEXT_CENTRE(1);
draw_number("NUMBR", InfoDisplay_x , InfoDisplay_y + Line_Height,HEALTH1);
USE_PREVIOUS_FONT_SETTINGS();
draw_number("NUMBR", InfoDisplay_x , InfoDisplay_y + Line_Height*2,ARMOR1);
USE_PREVIOUS_FONT_SETTINGS();
draw_number("NUMBR", InfoDisplay_x , InfoDisplay_y + Line_Height*3,VEHICLEHEALTH1);
USE_PREVIOUS_FONT_SETTINGS();
if(COMPARE_STRING(GET_DISPLAY_NAME_FROM_VEHICLE_MODEL(VEHICLEMODEL1),"null")){
draw_text("STRING", InfoDisplay_x , InfoDisplay_y + Line_Height*4,"ON FOOT");
}
else draw_text("PC_PD_NAMES", InfoDisplay_x , InfoDisplay_y + Line_Height*4,GET_STRING_FROM_TEXT_FILE(GET_DISPLAY_NAME_FROM_VEHICLE_MODEL(VEHICLEMODEL1)));
}
if(Player_INFO_ID2 != 99){
//!Name
Set_Up_Draw(ID_TextSize,PColor_R2,PColor_G2,PColor_B2,255,0,0,0);
SET_TEXT_FONT(Player_Name_Font);
SET_TEXT_USE_UNDERSCORE(true);
SET_TEXT_CENTRE(1);
DISPLAY_TEXT_WITH_LITERAL_STRING(InfoDisplay_x + Offset_X, InfoDisplay_y, "STRING", GET_PLAYER_NAME(Player_INFO_ID2));
//int ARMOR1,HEALTH1,VEHICLEID1,VEHICLEHEALTH1,VEHICLEMODEL1;
Set_Up_Draw(ID_TextSize,255, 255, 255,255,0,0,0);
SET_TEXT_CENTRE(1);
draw_number("NUMBR", InfoDisplay_x + Offset_X, InfoDisplay_y + Line_Height,HEALTH2);
USE_PREVIOUS_FONT_SETTINGS();
draw_number("NUMBR", InfoDisplay_x + Offset_X , InfoDisplay_y + Line_Height*2,ARMOR2);
USE_PREVIOUS_FONT_SETTINGS();
draw_number("NUMBR", InfoDisplay_x + Offset_X , InfoDisplay_y + Line_Height*3,VEHICLEHEALTH2);
USE_PREVIOUS_FONT_SETTINGS();
if(COMPARE_STRING(GET_DISPLAY_NAME_FROM_VEHICLE_MODEL(VEHICLEMODEL1),"null")){
draw_text("STRING", InfoDisplay_x , InfoDisplay_y + Line_Height*4,"ON FOOT");
}
else draw_text("PC_PD_NAMES", InfoDisplay_x + Offset_X, InfoDisplay_y + Line_Height*4,GET_STRING_FROM_TEXT_FILE(GET_DISPLAY_NAME_FROM_VEHICLE_MODEL(VEHICLEMODEL2)));
}
if(Player_INFO_ID3 != 99){
//!Name
Set_Up_Draw(ID_TextSize,PColor_R3,PColor_G3,PColor_B3,255,0,0,0);
SET_TEXT_FONT(Player_Name_Font);
SET_TEXT_USE_UNDERSCORE(true);
SET_TEXT_CENTRE(1);
DISPLAY_TEXT_WITH_LITERAL_STRING(InfoDisplay_x + (Offset_X*2), InfoDisplay_y, "STRING", GET_PLAYER_NAME(Player_INFO_ID3));
//int ARMOR1,HEALTH1,VEHICLEID1,VEHICLEHEALTH1,VEHICLEMODEL1;
Set_Up_Draw(ID_TextSize,255, 255, 255,255,0,0,0);
SET_TEXT_CENTRE(1);
draw_number("NUMBR", InfoDisplay_x + (Offset_X*2) , InfoDisplay_y + Line_Height,HEALTH3);
USE_PREVIOUS_FONT_SETTINGS();
draw_number("NUMBR", InfoDisplay_x + (Offset_X*2) , InfoDisplay_y + Line_Height*2,ARMOR3);
USE_PREVIOUS_FONT_SETTINGS();
draw_number("NUMBR", InfoDisplay_x + (Offset_X*2) , InfoDisplay_y + Line_Height*3,VEHICLEHEALTH3);
USE_PREVIOUS_FONT_SETTINGS();
if(COMPARE_STRING(GET_DISPLAY_NAME_FROM_VEHICLE_MODEL(VEHICLEMODEL1),"null")){
draw_text("STRING", InfoDisplay_x , InfoDisplay_y + Line_Height*4,"ON FOOT");
}
else draw_text("PC_PD_NAMES", InfoDisplay_x + (Offset_X*2), InfoDisplay_y + Line_Height*4,GET_STRING_FROM_TEXT_FILE(GET_DISPLAY_NAME_FROM_VEHICLE_MODEL(VEHICLEMODEL3)));
}
}
bool pPlayer_is_in_car = IS_CHAR_IN_ANY_CAR(pPlayer);
if(GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_FLYMOD) && !IS_PAUSE_MENU_ACTIVE() && GetByteInSet(SpectateAndAttachByteSet, ATTACH_TYPE) != 3){
if(!DOES_CAM_EXIST(scriptedCam)){
CREATE_CAM(14, &scriptedCam);
SET_CAM_ACTIVE(scriptedCam, true);
SET_CAM_PROPAGATE(scriptedCam, true);
ACTIVATE_SCRIPTED_CAMS(true, true);
scriptedCamPitch = 0.0;
}
Vehicle playerVehicle;
Ped driver;
int leftX, leftY, rightX, rightY;
float x, y, z, heading;
float moveTrig, moveSpeed;
float flymodCamDistance, flymodCamOffsetX, flymodCamOffsetY, flymodCamOffsetZ, flymodCamOffsetTrig;
FREEZE_CHAR_POSITION(pPlayer, true);
ATTACH_CAM_TO_PED(scriptedCam, pPlayer);
POINT_CAM_AT_PED(scriptedCam, pPlayer);
if (IS_CHAR_IN_ANY_CAR(pPlayer)){
uint playerVehicleModel;
Vector3 playerVehicleModelMinDims, playerVehicleModelMaxDims;
GET_CAR_CHAR_IS_USING(pPlayer, &playerVehicle);
GET_CAR_MODEL(playerVehicle, &playerVehicleModel);
GET_MODEL_DIMENSIONS(playerVehicleModel, &playerVehicleModelMinDims, &playerVehicleModelMaxDims);
flymodCamDistance = 1.5 * (playerVehicleModelMaxDims.y - playerVehicleModelMinDims.y);
GET_CAR_COORDINATES(playerVehicle, &x, &y, &z);
GET_CAR_HEADING(playerVehicle, &heading);
}
else{
GET_CHAR_COORDINATES_HEADING(pPlayer,&x,&y,&z,&heading);
flymodCamDistance = 4.0;
}
GET_POSITION_OF_ANALOGUE_STICKS(0, &leftX, &leftY, &rightX, &rightY);
heading = heading - (rightX * 0.035f);
if (heading > 360.0f)heading -= 360.0f;
if (heading < 0.0f) heading += 360.0f;
scriptedCamPitch = ( IS_LOOK_INVERTED() ? (scriptedCamPitch + (0.035f * rightY)) : (scriptedCamPitch - (0.035f * rightY)) );
if (scriptedCamPitch < -70.0)scriptedCamPitch = -70.0;
if (scriptedCamPitch > 70.0)scriptedCamPitch = 70.0;
if (IS_BUTTON_JUST_PRESSED(0,BUTTON_FLYMOD_RESET_PITCH)) scriptedCamPitch = 0.0f;
moveSpeed = 1.0f;
if (IS_BUTTON_PRESSED(0,BUTTON_FLYMOD_FAST_BUTTON) && !IS_BUTTON_PRESSED(0,BUTTON_FLYMOD_SLOW_BUTTON)) moveSpeed = 4.0f;
if (IS_BUTTON_PRESSED(0,BUTTON_FLYMOD_SLOW_BUTTON) && !IS_BUTTON_PRESSED(0,BUTTON_FLYMOD_FAST_BUTTON)) moveSpeed = 0.25f;
moveTrig = (leftY * 0.0133f) * COS(scriptedCamPitch);
x = x + (moveSpeed * ((moveTrig * SIN(heading)) + (leftX * 0.0133f) * COS(heading)));
y = y - (moveSpeed * ((moveTrig * COS(heading)) - (leftX * 0.0133f) * SIN(heading)));
z = z - (moveSpeed * (((leftY * 0.0133f) * SIN(scriptedCamPitch)) + (GET_CONTROL_VALUE(0, 6) * 0.0025f) - (GET_CONTROL_VALUE(0, 5) * 0.0025f)));
if(pPlayer_is_in_car){
GET_DRIVER_OF_CAR(playerVehicle, &driver);
if(driver == pPlayer || !In_Network){
SET_CAR_COORDINATES_NO_OFFSET(playerVehicle, x, y, z);
SET_CAR_HEADING(playerVehicle, heading);
}
}
else{
SET_CHAR_COORDINATES_NO_OFFSET(pPlayer, x, y, z);
SET_CHAR_HEADING(pPlayer, heading);
}
//quaternion EulerToQuaternion(vector3 euler); //YAW, PITCH, ROLL
flymodCamOffsetTrig = (flymodCamDistance * COS(scriptedCamPitch - 18.0f));
flymodCamOffsetX = flymodCamOffsetX + (flymodCamOffsetTrig * SIN(heading));
flymodCamOffsetY = flymodCamOffsetY - (flymodCamOffsetTrig * COS(heading));
flymodCamOffsetZ = flymodCamOffsetZ - (flymodCamDistance * SIN(scriptedCamPitch - 18.0f));
SET_CAM_ATTACH_OFFSET(scriptedCam, flymodCamOffsetX, flymodCamOffsetY, flymodCamOffsetZ); //last attempt = uncomment this and comment one above..
Set_Up_Draw(MDVersion_Txt_Size, Gold, Header_a,0,0,0);
DISPLAY_TEXT_WITH_LITERAL_STRING( 0.19f, 0.754f, "STRING", "FLY-MOD OPTIONS");
Set_Up_Draw(Info_Item_Text, 255, 255, 255, Header_a,0,0,0);
DISPLAY_TEXT_WITH_LITERAL_STRING( 0.19f,0.782f, "STRING", "DISABLE - Hold: ~PAD_LB~ + ~PAD_RB~ + ~PAD_LT~ + ~PAD_RT~");
USE_PREVIOUS_FONT_SETTINGS();
DISPLAY_TEXT_WITH_LITERAL_STRING( 0.19f, 0.81f , "STRING", "Speed - Hold: ~PAD_LB~ - Slower, ~PAD_RB~ - Faster.");
USE_PREVIOUS_FONT_SETTINGS();
DISPLAY_TEXT_WITH_LITERAL_STRING( 0.19f, 0.838f, "STRING", "Height - Hold: ~PAD_LT~ - Down, ~PAD_RT~ - Up.");
if(IS_BUTTON_PRESSED(0,BUTTON_R1) && IS_BUTTON_PRESSED(0,BUTTON_L1) && IS_BUTTON_PRESSED(0,BUTTON_R2) && IS_BUTTON_PRESSED(0,BUTTON_L2)){
SET_CAM_ACTIVE(scriptedCam, false);
SET_CAM_PROPAGATE(scriptedCam, false);
ACTIVATE_SCRIPTED_CAMS(false, false);
UNATTACH_CAM(scriptedCam);
DESTROY_CAM(scriptedCam);
while (DOES_CAM_EXIST(scriptedCam)) WAIT(0);
SET_CAM_BEHIND_PED(pPlayer);
scriptedCam = 0;
FREEZE_CHAR_POSITION(pPlayer, false);
SetBit(pPlayerOptionsBitSet, PLAYER_OPTION_FLYMOD, false);
}
}
SET_CHAR_INVINCIBLE(pPlayer,GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_GODMODE));
SET_PLAYER_NEVER_GETS_TIRED(iPlayer, GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_GODMODE));
SET_PLAYER_FAST_RELOAD(iPlayer, GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_GODMODE));
ENABLE_MAX_AMMO_CAP(!GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_GODMODE));
SET_CHAR_NEVER_TARGETTED(pPlayer,GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_GODMODE));
DISABLE_PLAYER_LOCKON(iPlayer, !GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_AUTO_AIM));
ALLOW_LOCKON_TO_FRIENDLY_PLAYERS(iPlayer, GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_AUTO_AIM));
ALLOW_LOCKON_TO_RANDOM_PEDS(iPlayer, GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_AUTO_AIM));
/**Jugg Stuff**/
if(GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_JUGGERNAUT)){
uint armor,health;
GET_CHAR_ARMOUR(pPlayer,&armor);
GET_CHAR_HEALTH(pPlayer,&health);
if(health < 500)SET_CHAR_HEALTH(pPlayer,500);
if(armor < 200) ADD_ARMOUR_TO_CHAR(pPlayer,(200 - armor));
}
/**Ammo Stuff**/
if(GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_INFINITE_AMMO) && IS_CHAR_SHOOTING(pPlayer)){
uint weapon,ammo;
GET_CURRENT_CHAR_WEAPON(pPlayer,&weapon);
if(weapon != WEAPON_GRENADE && weapon != WEAPON_MOLOTOV){
GET_MAX_AMMO_IN_CLIP(pPlayer,weapon,&ammo);
SET_AMMO_IN_CLIP(pPlayer,weapon,ammo);
}
}
/**Never Wanted**/
if(GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_NEVER_WANTED)) CLEAR_WANTED_LEVEL(iPlayer);
/**Super Powers**/
if(!pPlayer_is_in_car){
bool LB_IS_PRESSED = IS_BUTTON_PRESSED(0,BUTTON_LB);
bool RB_IS_PRESSED = IS_BUTTON_PRESSED(0,BUTTON_RB);
if(GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_SUPER_RUN)){
if( (LB_IS_PRESSED || RB_IS_PRESSED) && IS_BUTTON_PRESSED(0,BUTTON_A))APPLY_FORCE_TO_PED(pPlayer,true,0.0, (LB_IS_PRESSED ? 100.0 : 10.0) ,0.0,0.0,0.0,0.0,true,true,true,true);
}
if(GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_SUPER_JUMP)){
if( (LB_IS_PRESSED || RB_IS_PRESSED) && IS_BUTTON_PRESSED(0,BUTTON_X))APPLY_FORCE_TO_PED(pPlayer,true,0.0, (LB_IS_PRESSED ? 1.2 : 0.0), (LB_IS_PRESSED ? 11.0 : 50.0),0.0,0.0,0.0,true,true,true,true);
}
if(GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_SUPER_PUNCH)){
if(LB_IS_PRESSED && IS_BUTTON_PRESSED(0,BUTTON_B)){
int wep;
GET_CURRENT_CHAR_WEAPON(pPlayer,&wep);
if(wep == WEAPON_UNARMED){
float punch_x,punch_y,punch_z;
GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS(pPlayer, 0, 2, 0, &punch_x, &punch_y, &punch_z);
ADD_EXPLOSION(punch_x, punch_y, punch_z, EXPLOSION_SHIP_DESTROY, 10, 0, 1, 0);
}
}
}
}
/**Drive water Function --> Loop here or in network players ? //here.*/
float x,y,z;
int NetPlayer_ID,tmp;
for(NetPlayer_ID = 0; NetPlayer_ID < MAX_PLAYERS; NetPlayer_ID++){
if(!DOES_OBJECT_EXIST(drive_water[NetPlayer_ID])) continue;
#ifdef Admin
if(NetPlayer_ID == iPlayer && AdminCommandTick != 0) continue;
#endif
GET_PLAYER_CHAR(NetPlayer_ID,&tmp);
if(DOES_CHAR_EXIST(tmp)){
#ifdef Premium
if(IS_CHAR_IN_ANY_CAR(tmp)){
float speed;
int tmp_veh;
GET_CAR_CHAR_IS_USING(tmp,&tmp_veh);
//GET_CAR_FORWARD_Y(tmp_veh,&speed); //no good, useless //doesn't take into account heading.
GET_CHAR_SPEED(tmp,&speed); //mayaswell try not spam one type of native if possible (this is not used i dont think)
int offset;
if(speed > 18 && IS_CAR_UPRIGHT(tmp_veh) && !IS_BIG_VEHICLE(tmp_veh))offset = 18;
else offset = 8;
GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS(tmp,0,offset,0,&x,&y,&z); //char heading = exact same as vehicles
SET_OBJECT_COORDINATES(drive_water[NetPlayer_ID],x,y, IS_CHAR_IN_ANY_BOAT(tmp) ? -15.0 : -9.2);
}
else{
GET_CHAR_COORDINATES(tmp,&x,&y,&z);
float ox,oy;
GET_OBJECT_COORDINATES(drive_water[NetPlayer_ID],&ox,&oy,&z);
float birdsEyeDistance;
GET_DISTANCE_BETWEEN_COORDS_2D(x,y,ox,oy, &birdsEyeDistance);
if(birdsEyeDistance > 16.25f) SET_OBJECT_COORDINATES(drive_water[NetPlayer_ID],x,y,-9.2);
}
#else
GET_CHAR_COORDINATES(tmp,&x,&y,&z);
SET_OBJECT_COORDINATES(drive_water[NetPlayer_ID],x,y, IS_CHAR_IN_ANY_BOAT(tmp) ? -15.0 : -9.2);
#endif
FREEZE_OBJECT_POSITION(drive_water[NetPlayer_ID],true); //required
//SET_OBJECT_VISIBLE(drive_water[NetPlayer_ID],true); //nathan testing
}
else DELETE_OBJECT(&drive_water[NetPlayer_ID]);
//if(!In_Network) break; //cba making network a lil slower just for singleplayer, nobody cares for it. - Nathan
}
GET_CHAR_COORDINATES(pPlayer,&x,&y,&z);
if(GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_FORCE_FIELD))ADD_EXPLOSION(x,y,z,EXPLOSION_SHIP_DESTROY,10.0,false,true,0.0);
if(GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_INFERNO)) ADD_EXPLOSION(x,y,z,EXPLOSION_MOLOTOV,7.5,true,false,0.0);
if(GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_REMOVE_BLIP)){ //OPTIMISED but not tested
if(!pPlayer_is_in_car){
uint pos[4];
GET_POSITION_OF_ANALOGUE_STICKS(0,&pos[0],&pos[1],&pos[2],&pos[3]);
if(pos[0] == 0 && pos[1] == 0){
if(!(IS_BUTTON_PRESSED(0,BUTTON_L) || IS_BUTTON_PRESSED(0,BUTTON_R))){
if(GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_FLAME_EFFECT)){
ADD_EXPLOSION(x,y,z,EXPLOSION_MOLOTOV,7.5,true,false,0.0);
SetBit(pPlayerOptionsBitSet, PLAYER_OPTION_FLAME_EFFECT, false);
}
}
}
else SetBit(pPlayerOptionsBitSet, PLAYER_OPTION_FLAME_EFFECT, true);
SET_CAMERA_CONTROLS_DISABLED_WITH_PLAYER_CONTROLS(false);
SET_CHAR_VISIBLE(pPlayer,GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_FLAME_EFFECT));
SET_PLAYER_CONTROL(iPlayer,GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_FLAME_EFFECT));
}
}
if(GetBit(VehicleOptionsBitSet, VEHICLE_OPTION_REMOVE_BLIP)){ //Fixed! - Devil
int vehicle;
if(IS_CHAR_IN_ANY_CAR(pPlayer)){
GET_CAR_CHAR_IS_USING(pPlayer,&vehicle);
if(IS_BUTTON_PRESSED(0,BUTTON_L) || IS_BUTTON_PRESSED(0,BUTTON_R)){
SetBit(pPlayerOptionsBitSet, PLAYER_OPTION_FLAME_EFFECT, true);
}
else{
float ground,speed;
GET_CHAR_SPEED(pPlayer,&speed);
GET_GROUND_Z_FOR_3D_COORD(x,y,z,&ground);
int height = (z - ground);
if(speed < 0.08f && height < 3){
if(GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_FLAME_EFFECT)){
ADD_EXPLOSION(x,y,z,EXPLOSION_MOLOTOV,7.5,true,false,0.0);
SetBit(pPlayerOptionsBitSet, PLAYER_OPTION_FLAME_EFFECT, false);
}
}
}
FREEZE_CAR_POSITION(vehicle,!PLAYER_OPTION_FLAME_EFFECT);
SetBit(VehicleOptionsBitSet, VEHICLE_OPTION_DESOLIDIFY, !PLAYER_OPTION_FLAME_EFFECT);
SET_CAMERA_CONTROLS_DISABLED_WITH_PLAYER_CONTROLS(!PLAYER_OPTION_FLAME_EFFECT);
SET_PLAYER_CONTROL(iPlayer,GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_FLAME_EFFECT));
SET_CHAR_VISIBLE(pPlayer,GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_FLAME_EFFECT));
SET_CAR_VISIBLE(vehicle,GetBit(pPlayerOptionsBitSet, PLAYER_OPTION_FLAME_EFFECT));
}
}
if(Variations_Loop){
SET_CHAR_RANDOM_COMPONENT_VARIATION(pPlayer);
SET_CHAR_COMPONENT_VARIATION(pPlayer,0, 1,1);
}
}