Add MDv13 source directory

This commit is contained in:
iDisaster
2026-01-18 00:28:50 +04:00
parent 6dde02e454
commit de88af7a3b
376 changed files with 1787554 additions and 0 deletions

View File

@@ -0,0 +1,367 @@
/**
* @ MAJOR DISTRIBUTION EXTEND
* @ Version MDv12 TRIDENT
* @ MADE BY - DEVILSDESIGN & IIV_NATHAN_VII & SHOCKixiXixiWAVE
*/
#pragma once
/**Setup the font for Extend+ Trident*/
#define Menu_Font 5
#define Player_Name_Font 0
#define GTAIV 1
#define TBOGT 2
#define Length(array) (sizeof(array) / 4)
#define PREMIUM_ONLY_STRING "~b~MD: ~s~This feature is premium only, visit www.consolecrunch.com"
bool Version_Increment;
bool Menu_Ptfx = true;
bool VEHICLE_HAS_EMPTY_SEATS(const int tmp_veh)
{
if(!DOES_VEHICLE_EXIST(tmp_veh)) return false;
int maxSeats;
GET_MAXIMUM_NUMBER_OF_PASSENGERS(tmp_veh,&maxSeats);
int i;
for(i = -1; i < maxSeats; i++)
{
if(IS_CAR_PASSENGER_SEAT_FREE(tmp_veh,i)) return true;
}
return false;
}
int PLAYERS_RELATIONSHIP_GROUP(const int playerIndex){
if(IS_NETWORK_SESSION())return (playerIndex + 31);
else return RELATIONSHIP_GROUP_PLAYER; //0
}
int PLAYER_CHAR(const int playerindex){
int ped;
GET_PLAYER_CHAR(playerindex,&ped);
//maybe try returning (playerindex % 100)
return ped;
}
bool IS_PLAYER_IN_A_VEHICLE(const int playerindex)
{
int ped = PLAYER_CHAR(playerindex);
return (DOES_CHAR_EXIST(ped) && IS_CHAR_IN_ANY_CAR(ped));
}
int PLAYERS_VEHICLE(const int playerindex)
{
int veh;
if(IS_PLAYER_IN_A_VEHICLE(playerindex))
{
GET_CAR_CHAR_IS_USING(PLAYER_CHAR(playerindex), &veh);
return veh;
}
return 0;
}
int GetTickCount()
{
uint tick = 0;
GET_GAME_TIMER(&tick);
return tick;
}
int FIND_CONTROLLER_OF_NETWORK_ID(const int Network_ID)
{
register int i;
for(i = 0; i < MAX_PLAYERS; i++)
{
//if(is_invalid(i)) continue;
if(!DOES_PLAYER_HAVE_CONTROL_OF_NETWORK_ID(i,Network_ID)) continue;
return i;
//break;
}
return -1;
}
void debugPrint(char* message)
{
CLEAR_PRINTS();
CLEAR_SMALL_PRINTS();
ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS(true);
PRINT_STRING_WITH_LITERAL_STRING_NOW("STRING", message, 5000,true);
WAIT(100);
}
void Alert(char* message, bool AddToBrief){
CLEAR_PRINTS();
CLEAR_SMALL_PRINTS();
ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS(AddToBrief);
PRINT_STRING_WITH_LITERAL_STRING_NOW("STRING", message, 4000,true);
}
void Alert_Abort(char* message, bool AddToBrief){
CLEAR_PRINTS();
CLEAR_SMALL_PRINTS();
ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS(AddToBrief);
PRINT_STRING_WITH_LITERAL_STRING_NOW("STRING", message, 4000,true);
return;
}
void Alert_Two(char* message,char* message2, bool AddToBrief){
CLEAR_PRINTS();
CLEAR_SMALL_PRINTS();
ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS(AddToBrief);
PRINT_STRING_WITH_TWO_LITERAL_STRINGS_NOW("STRTNM3", message, message2, 3000, true);
}
void Alert_Two_Long(char* message,char* message2, bool AddToBrief){
CLEAR_PRINTS();
CLEAR_SMALL_PRINTS();
ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS(AddToBrief);
PRINT_STRING_WITH_TWO_LITERAL_STRINGS_NOW("STRTNM3", message, message2, 5000, true);
}
void Alert_Number(int num, bool AddToBrief){
CLEAR_PRINTS();
CLEAR_SMALL_PRINTS();
ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS(AddToBrief);
PRINT_WITH_NUMBER_NOW("NUMBR", num, 3500, true);
}
void printInt(int num){
CLEAR_PRINTS();
CLEAR_SMALL_PRINTS();
PRINT_WITH_NUMBER_NOW("NUMBR", num, 3500, true);
}
void Alert_2_Numbers(int value1,int value2, bool AddToBrief){
CLEAR_PRINTS();
CLEAR_SMALL_PRINTS();
ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS(false);
PRINT_WITH_2_NUMBERS_NOW("NUMBR", value1, value2, 2000,true);
}
void Set_Up_Draw(float width, float height, uint r, uint g, uint b, uint a, uint r2, uint g2, uint b2){
//loading incorrect font will cause all sorts of random glitchy crashes/ map not loading
#ifdef VERSION_PC
SET_TEXT_FONT(6);
#else
SET_TEXT_FONT(Menu_Font);
#endif
SET_TEXT_BACKGROUND(0);
SET_TEXT_DROPSHADOW(0, 0, 0, 0, 255);
SET_TEXT_EDGE(1, r2, g2, b2, 200);
SET_TEXT_COLOUR(r, g, b, a);
SET_TEXT_SCALE(width, height);
SET_TEXT_PROPORTIONAL(1);
//SET_TEXT_JUSTIFY(0);
SET_TEXT_CENTRE(0);
//SET_TEXT_RIGHT_JUSTIFY(0);
}
void Draw_Text(char *gxtName, float x, float y, char *val){
DISPLAY_TEXT_WITH_LITERAL_STRING(x, y, gxtName, val);
// return;
}
void Draw_Number(char *gxtName, float x, float y, int val){
DISPLAY_TEXT_WITH_NUMBER(x, y, gxtName, val);
}
//Nathans Functions//
/*
bool NETWORK_PLAYER_IS_ON_FRIENDS_LIST(const int player_id)
{
//register int i; //maybe register int makes it too fast and that crashes it? (POSSIBLY)
int i; //no register
const char* PossibleFriend = GET_PLAYER_NAME(playerid); //1 less process to do 100+ times at once (possible frez)
for(i = 0;i < NETWORK_GET_FRIEND_COUNT(); i++)
{
if(COMPARE_STRING(PossibleFriend,NETWORK_GET_FRIEND_NAME(i))) return true;
}
return false;
}
*/
bool NETWORK_PLAYER_IS_ON_FRIENDS_LIST(const int player_id)
{
int i;
const char* playerid_name = GET_PLAYER_NAME(player_id);
for(i = 0;i < NETWORK_GET_FRIEND_COUNT(); i++)
{
//char* friends_name = NETWORK_GET_FRIEND_NAME(i);
//if(!NETWORK_IS_FRIEND_ONLINE(friends_name)) continue;
if(COMPARE_STRING(playerid_name,NETWORK_GET_FRIEND_NAME(i))) return true;
}
return false;
}
bool FRIENDS_LIST_CONTAINS_GAMERTAG(char* Gamertag)
{
register int i;
for(i = 0;i < NETWORK_GET_FRIEND_COUNT(); i++)
{
if(COMPARE_STRING(Gamertag,NETWORK_GET_FRIEND_NAME(i))) return true;
}
return false;
}
bool IS_THIS_PED_A_NETPLAYER(Ped query_ped){
if(!IS_NETWORK_SESSION()) return false;
int i,tmp_ped;
for(i=0;i<GET_NUMBER_OF_PLAYERS();i++){
//if(!IS_NETWORK_PLAYER_ACTIVE(i)) continue;
GET_PLAYER_CHAR(i,&tmp_ped);
if(tmp_ped == query_ped) return true;
}
return false;
}
int GET_PLAYER_INT_FROM_PLAYER_NAME(char* name){
int i;
for(i = 0; i < 16; i++)
{
if(COMPARE_STRING(GET_PLAYER_NAME(CONVERT_INT_TO_PLAYERINDEX(i)), name)) return i;
}
return 0; //just for safekeeping....
}
void GET_CAR_PASSENGERS(int car, int *Passenger1, int *Passenger2, int *Passenger3)
{
GET_CHAR_IN_CAR_PASSENGER_SEAT(car,0,&*Passenger1);
GET_CHAR_IN_CAR_PASSENGER_SEAT(car,1,&*Passenger2);
GET_CHAR_IN_CAR_PASSENGER_SEAT(car,2,&*Passenger3);
//return;
}
//!Devils Functions//
//Nathan redo
void Autoload(char* sco, const bool print)
{
char* buffer[32];
Strcpy(buffer, "~b~MD: ~s~");
if(DOES_SCRIPT_EXIST(sco))
{
if(GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT(sco) == 0)
{
REQUEST_SCRIPT(sco);
Strcat(buffer, "Loaded ");
Strcat(buffer, sco);
Strcat(buffer, ".sco");
while(!HAS_SCRIPT_LOADED(sco)) WAIT(0);
START_NEW_SCRIPT(sco,1024);
MARK_SCRIPT_AS_NO_LONGER_NEEDED(sco);
}
else
{
Strcat(buffer, sco);
Strcat(buffer, ".sco is already loaded.");
}
}
else
{
Strcat(buffer, sco);
Strcat(buffer, ".sco does not exist.");
}
if(print)
{
Alert(buffer, false);
}
WAIT(2000);
}
bool IS_THIS_SCRIPT_RUNNING(char* sco){
if(DOES_SCRIPT_EXIST(sco) && GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT(sco) == 1)return true;
else return false;
}
void MD_Terminate_Script(char* sco){
if (GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT(sco) >= 1) TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME(sco);
}
Ped GetPlayerPed(void){
Ped playerped = INVALID_HANDLE;
if ( PLAYER_HAS_CHAR(GET_PLAYER_ID())) GET_PLAYER_CHAR(GET_PLAYER_ID(), &playerped);
return playerped;
}
int GetPlayerModel(void){
int model;
GET_CHAR_MODEL(GetPlayerPed(),&model);
return model;
}
/*
int empty_player_slots(void)
{
if(IS_THIS_MACHINE_THE_SERVER())
{
return (NETWORK_GET_MAX_SLOTS() - GET_NUMBER_OF_PLAYERS());
}
else
{
return NETWORK_GET_NUM_OPEN_PUBLIC_SLOTS(); //crashez? i tinkle?
}
}
*/
//NETWORK_GET_NUM_OPEN_PUBLIC_SLOTS(void);
int empty_player_slots(void){
return (NETWORK_GET_MAX_SLOTS() - GET_NUMBER_OF_PLAYERS());
}
bool is_driving(int pd)
{
if(!IS_CHAR_IN_ANY_CAR(pd)) return false;
int veh,dvr;
GET_CAR_CHAR_IS_USING(pd,&veh);
GET_DRIVER_OF_CAR(veh,&dvr);
return dvr == pd;
}
bool is_veh_locked(int veh){ //mmmmm should use other func for this set locked without net control request, + is chars vehicle locked
int temp;
GET_CAR_DOOR_LOCK_STATUS(veh,&temp);
return temp == VEHICLE_DOOR_LOCKED_BOTH_SIDES; //need to also return true if temp is vehicle locked from outside only
}
void UpdateWeaponOfPed(Ped ped, Weapon weapon){
if (HAS_CHAR_GOT_WEAPON(ped, weapon)){
SET_CHAR_AMMO(ped, weapon, AMMO_MAX);
}
else{
GIVE_WEAPON_TO_CHAR(ped, weapon, AMMO_MAX, FALSE);
}
}
Vehicle GetPlayerVeh(void){
Vehicle vehicle = INVALID_HANDLE;
int ped = GetPlayerPed();
if (IS_CHAR_IN_ANY_CAR(ped))
GET_CAR_CHAR_IS_USING(ped, &vehicle);
return vehicle;
}
void Run_Ptfx(int Pointer){
if(Menu_Ptfx){
int rand;
GENERATE_RANDOM_INT_IN_RANGE(0, 5, &rand);
char* effect[6];
effect[0] = "qub_lg_explode_blue";
effect[1] = "qub_lg_explode_yellow";
effect[2] = "qub_lg_explode_red";
effect[3] = "qub_lg_explode_purple";
effect[4] = "qub_lg_explode_orange";
effect[5] = "qub_lg_explode_green";
if (DOES_CHAR_EXIST(Pointer))START_PTFX_ON_PED(effect[rand], Pointer, 0, 0, 0, 0, 0, 0, 1);
else if(DOES_VEHICLE_EXIST(Pointer))START_PTFX_ON_VEH(effect[rand], Pointer, 0, 0, 0, 0, 0, 0, 1);
else if(DOES_OBJECT_EXIST(Pointer))START_PTFX_ON_OBJ(effect[rand], Pointer, 0, 0, 0, 0, 0, 0, 1);
}
}

View File

@@ -0,0 +1,367 @@
/**
* @ MAJOR DISTRIBUTION EXTEND
* @ Version MDv12 TRIDENT
* @ MADE BY - DEVILSDESIGN & IIV_NATHAN_VII & SHOCKixiXixiWAVE
*/
#pragma once
/**Setup the font for Extend+ Trident*/
#define Menu_Font 5
#define Player_Name_Font 0
#define GTAIV 1
#define TBOGT 2
#define Length(array) (sizeof(array) / 4)
#define PREMIUM_ONLY_STRING "~COL_NET_4~MD: ~s~This feature is premium only, visit www.consolecrunch.com"
bool Version_Increment;
bool Menu_Ptfx = true;
bool VEHICLE_HAS_EMPTY_SEATS(const int tmp_veh)
{
if(!DOES_VEHICLE_EXIST(tmp_veh)) return false;
int maxSeats;
GET_MAXIMUM_NUMBER_OF_PASSENGERS(tmp_veh,&maxSeats);
int i;
for(i = -1; i < maxSeats; i++)
{
if(IS_CAR_PASSENGER_SEAT_FREE(tmp_veh,i)) return true;
}
return false;
}
int PLAYERS_RELATIONSHIP_GROUP(const int playerIndex){
if(IS_NETWORK_SESSION())return (playerIndex + 31);
else return RELATIONSHIP_GROUP_PLAYER; //0
}
int PLAYER_CHAR(const int playerindex){
int ped;
GET_PLAYER_CHAR(playerindex,&ped);
//maybe try returning (playerindex % 100)
return ped;
}
bool IS_PLAYER_IN_A_VEHICLE(const int playerindex)
{
int ped = PLAYER_CHAR(playerindex);
return (DOES_CHAR_EXIST(ped) && IS_CHAR_IN_ANY_CAR(ped));
}
int PLAYERS_VEHICLE(const int playerindex)
{
int veh;
if(IS_PLAYER_IN_A_VEHICLE(playerindex))
{
GET_CAR_CHAR_IS_USING(PLAYER_CHAR(playerindex), &veh);
return veh;
}
return 0;
}
int GetTickCount()
{
uint tick = 0;
GET_GAME_TIMER(&tick);
return tick;
}
int FIND_CONTROLLER_OF_NETWORK_ID(const int Network_ID)
{
register int i;
for(i = 0; i < MAX_PLAYERS; i++)
{
//if(is_invalid(i)) continue;
if(!DOES_PLAYER_HAVE_CONTROL_OF_NETWORK_ID(i,Network_ID)) continue;
return i;
//break;
}
return -1;
}
void debugPrint(char* message)
{
CLEAR_PRINTS();
CLEAR_SMALL_PRINTS();
ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS(true);
PRINT_STRING_WITH_LITERAL_STRING_NOW("STRING", message, 5000,true);
WAIT(100);
}
void Alert(char* message, bool AddToBrief){
CLEAR_PRINTS();
CLEAR_SMALL_PRINTS();
ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS(AddToBrief);
PRINT_STRING_WITH_LITERAL_STRING_NOW("STRING", message, 4000,true);
}
void Alert_Abort(char* message, bool AddToBrief){
CLEAR_PRINTS();
CLEAR_SMALL_PRINTS();
ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS(AddToBrief);
PRINT_STRING_WITH_LITERAL_STRING_NOW("STRING", message, 4000,true);
return;
}
void Alert_Two(char* message,char* message2, bool AddToBrief){
CLEAR_PRINTS();
CLEAR_SMALL_PRINTS();
ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS(AddToBrief);
PRINT_STRING_WITH_TWO_LITERAL_STRINGS_NOW("STRTNM3", message, message2, 3000, true);
}
void Alert_Two_Long(char* message,char* message2, bool AddToBrief){
CLEAR_PRINTS();
CLEAR_SMALL_PRINTS();
ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS(AddToBrief);
PRINT_STRING_WITH_TWO_LITERAL_STRINGS_NOW("STRTNM3", message, message2, 5000, true);
}
void Alert_Number(int num, bool AddToBrief){
CLEAR_PRINTS();
CLEAR_SMALL_PRINTS();
ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS(AddToBrief);
PRINT_WITH_NUMBER_NOW("NUMBR", num, 3500, true);
}
void printInt(int num){
CLEAR_PRINTS();
CLEAR_SMALL_PRINTS();
PRINT_WITH_NUMBER_NOW("NUMBR", num, 3500, true);
}
void Alert_2_Numbers(int value1,int value2, bool AddToBrief){
CLEAR_PRINTS();
CLEAR_SMALL_PRINTS();
ADD_NEXT_MESSAGE_TO_PREVIOUS_BRIEFS(false);
PRINT_WITH_2_NUMBERS_NOW("NUMBR", value1, value2, 2000,true);
}
void Set_Up_Draw(float width, float height, uint r, uint g, uint b, uint a, uint r2, uint g2, uint b2){
//loading incorrect font will cause all sorts of random glitchy crashes/ map not loading
#ifdef VERSION_PC
SET_TEXT_FONT(6);
#else
SET_TEXT_FONT(Menu_Font);
#endif
SET_TEXT_BACKGROUND(0);
SET_TEXT_DROPSHADOW(0, 0, 0, 0, 255);
SET_TEXT_EDGE(1, r2, g2, b2, 200);
SET_TEXT_COLOUR(r, g, b, a);
SET_TEXT_SCALE(width, height);
SET_TEXT_PROPORTIONAL(1);
//SET_TEXT_JUSTIFY(0);
SET_TEXT_CENTRE(0);
//SET_TEXT_RIGHT_JUSTIFY(0);
}
void Draw_Text(char *gxtName, float x, float y, char *val){
DISPLAY_TEXT_WITH_LITERAL_STRING(x, y, gxtName, val);
// return;
}
void Draw_Number(char *gxtName, float x, float y, int val){
DISPLAY_TEXT_WITH_NUMBER(x, y, gxtName, val);
}
//Nathans Functions//
/*
bool NETWORK_PLAYER_IS_ON_FRIENDS_LIST(const int player_id)
{
//register int i; //maybe register int makes it too fast and that crashes it? (POSSIBLY)
int i; //no register
const char* PossibleFriend = GET_PLAYER_NAME(playerid); //1 less process to do 100+ times at once (possible frez)
for(i = 0;i < NETWORK_GET_FRIEND_COUNT(); i++)
{
if(COMPARE_STRING(PossibleFriend,NETWORK_GET_FRIEND_NAME(i))) return true;
}
return false;
}
*/
bool NETWORK_PLAYER_IS_ON_FRIENDS_LIST(const int player_id)
{
int i;
const char* playerid_name = GET_PLAYER_NAME(player_id);
for(i = 0;i < NETWORK_GET_FRIEND_COUNT(); i++)
{
//char* friends_name = NETWORK_GET_FRIEND_NAME(i);
//if(!NETWORK_IS_FRIEND_ONLINE(friends_name)) continue;
if(COMPARE_STRING(playerid_name,NETWORK_GET_FRIEND_NAME(i))) return true;
}
return false;
}
bool FRIENDS_LIST_CONTAINS_GAMERTAG(char* Gamertag)
{
register int i;
for(i = 0;i < NETWORK_GET_FRIEND_COUNT(); i++)
{
if(COMPARE_STRING(Gamertag,NETWORK_GET_FRIEND_NAME(i))) return true;
}
return false;
}
bool IS_THIS_PED_A_NETPLAYER(Ped query_ped){
if(!IS_NETWORK_SESSION()) return false;
int i,tmp_ped;
for(i=0;i<GET_NUMBER_OF_PLAYERS();i++){
//if(!IS_NETWORK_PLAYER_ACTIVE(i)) continue;
GET_PLAYER_CHAR(i,&tmp_ped);
if(tmp_ped == query_ped) return true;
}
return false;
}
int GET_PLAYER_INT_FROM_PLAYER_NAME(char* name){
int i;
for(i = 0; i < 16; i++)
{
if(COMPARE_STRING(GET_PLAYER_NAME(CONVERT_INT_TO_PLAYERINDEX(i)), name)) return i;
}
return 0; //just for safekeeping....
}
void GET_CAR_PASSENGERS(int car, int *Passenger1, int *Passenger2, int *Passenger3)
{
GET_CHAR_IN_CAR_PASSENGER_SEAT(car,0,&*Passenger1);
GET_CHAR_IN_CAR_PASSENGER_SEAT(car,1,&*Passenger2);
GET_CHAR_IN_CAR_PASSENGER_SEAT(car,2,&*Passenger3);
//return;
}
//!Devils Functions//
//Nathan redo
void Autoload(char* sco, const bool print)
{ WAIT(1000);
char* buffer[32];
Strcpy(buffer, "~COL_NET_4~MD: ~s~");
if(DOES_SCRIPT_EXIST(sco))
{
if(GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT(sco) == 0)
{
REQUEST_SCRIPT(sco);
Strcat(buffer, "Loaded ");
Strcat(buffer, sco);
Strcat(buffer, ".sco");
while(!HAS_SCRIPT_LOADED(sco)) WAIT(0);
START_NEW_SCRIPT(sco,1024);
MARK_SCRIPT_AS_NO_LONGER_NEEDED(sco);
}
else
{
Strcat(buffer, sco);
Strcat(buffer, ".sco is already loaded.");
}
}
else
{
Strcat(buffer, sco);
Strcat(buffer, ".sco does not exist.");
}
if(print)
{
Alert(buffer, false);
}
WAIT(1250);
}
bool IS_THIS_SCRIPT_RUNNING(char* sco){
if(DOES_SCRIPT_EXIST(sco) && GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT(sco) == 1)return true;
else return false;
}
void MD_Terminate_Script(char* sco){
if (GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT(sco) >= 1) TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME(sco);
}
Ped GetPlayerPed(void){
Ped playerped = INVALID_HANDLE;
if ( PLAYER_HAS_CHAR(GET_PLAYER_ID())) GET_PLAYER_CHAR(GET_PLAYER_ID(), &playerped);
return playerped;
}
int GetPlayerModel(void){
int model;
GET_CHAR_MODEL(GetPlayerPed(),&model);
return model;
}
/*
int empty_player_slots(void)
{
if(IS_THIS_MACHINE_THE_SERVER())
{
return (NETWORK_GET_MAX_SLOTS() - GET_NUMBER_OF_PLAYERS());
}
else
{
return NETWORK_GET_NUM_OPEN_PUBLIC_SLOTS(); //crashez? i tinkle?
}
}
*/
//NETWORK_GET_NUM_OPEN_PUBLIC_SLOTS(void);
int empty_player_slots(void){
return (NETWORK_GET_MAX_SLOTS() - GET_NUMBER_OF_PLAYERS());
}
bool is_driving(int pd)
{
if(!IS_CHAR_IN_ANY_CAR(pd)) return false;
int veh,dvr;
GET_CAR_CHAR_IS_USING(pd,&veh);
GET_DRIVER_OF_CAR(veh,&dvr);
return dvr == pd;
}
bool is_veh_locked(int veh){ //mmmmm should use other func for this set locked without net control request, + is chars vehicle locked
int temp;
GET_CAR_DOOR_LOCK_STATUS(veh,&temp);
return temp == VEHICLE_DOOR_LOCKED_BOTH_SIDES; //need to also return true if temp is vehicle locked from outside only
}
void UpdateWeaponOfPed(Ped ped, Weapon weapon){
if (HAS_CHAR_GOT_WEAPON(ped, weapon)){
SET_CHAR_AMMO(ped, weapon, AMMO_MAX);
}
else{
GIVE_WEAPON_TO_CHAR(ped, weapon, AMMO_MAX, FALSE);
}
}
Vehicle GetPlayerVeh(void){
Vehicle vehicle = INVALID_HANDLE;
int ped = GetPlayerPed();
if (IS_CHAR_IN_ANY_CAR(ped))
GET_CAR_CHAR_IS_USING(ped, &vehicle);
return vehicle;
}
void Run_Ptfx(int Pointer){
if(Menu_Ptfx){
int rand;
GENERATE_RANDOM_INT_IN_RANGE(0, 5, &rand);
char* effect[6];
effect[0] = "qub_lg_explode_blue";
effect[1] = "qub_lg_explode_yellow";
effect[2] = "qub_lg_explode_red";
effect[3] = "qub_lg_explode_purple";
effect[4] = "qub_lg_explode_orange";
effect[5] = "qub_lg_explode_green";
if (DOES_CHAR_EXIST(Pointer))START_PTFX_ON_PED(effect[rand], Pointer, 0, 0, 0, 0, 0, 0, 1);
else if(DOES_VEHICLE_EXIST(Pointer))START_PTFX_ON_VEH(effect[rand], Pointer, 0, 0, 0, 0, 0, 0, 1);
else if(DOES_OBJECT_EXIST(Pointer))START_PTFX_ON_OBJ(effect[rand], Pointer, 0, 0, 0, 0, 0, 0, 1);
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,11 @@
/* ---------------------------------------------------------------
This header contains GTAIV/EFLC PC script string functions.
This file is a part of scocl project (C) Alexander Blade 2011
--------------------------------------------------------------- */
#pragma once
//#include "types.h"
extern void itos(int value, void *str, uint strsize);

View File

@@ -0,0 +1,49 @@
/* ---------------------------------------------------------------
This header contains GTAIV/EFLC PC script common functions.
This file is a part of scocl project (C) Alexander Blade 2011
--------------------------------------------------------------- */
#pragma once
typedef unsigned int uint;
typedef uint boolean;
typedef uint bool; // not a mistake
typedef uint ScriptAny;
typedef uint Weapon;
typedef int Player;
typedef int FireId;
typedef int Crotch;
typedef int Vagina;
typedef int Model;
typedef int Fuck;
typedef int Ped;
typedef int Vehicle;
typedef int Cam;
typedef int CarGenerator;
typedef int Group;
typedef int Train;
typedef int Pickup;
typedef int Object;
typedef int Interior;
typedef int Blip;
typedef int Texture;
typedef int TextureDict;
typedef int CoverPoint;
typedef int DecisionMaker;
typedef int Camera;
typedef int TaskSequence;
typedef int Char;
typedef int Car;
typedef int ColourIndex;
typedef int Sphere;
typedef struct _Vector3
{
float x;
float y;
float z;
} Vector3, *PVector3;
typedef int ExplosionType;
typedef int ShootMode;
typedef int RelationshipGroup;
typedef int QuadChar;