mirror of
https://github.com/iDisaster/GTAConnected.git
synced 2026-03-08 09:25:23 +00:00
374 lines
16 KiB
C
374 lines
16 KiB
C
/**
|
|
* @ MAJOR DISTRIBUTION EXTEND
|
|
* @ Version V7 ULTIMATE
|
|
* @ MADE BY - DEVILSDESIGN & IIV_NATHAN_VII & SHOCKixiXixiWAVE
|
|
*/
|
|
#pragma once
|
|
|
|
|
|
void create_mobile_mapobj(int model,float ox, float oy, float oz, float rx,float ry,float rz){ //Working together with BASE !!! Attaching objects to Hook
|
|
Object mapextra_obj;
|
|
if (IS_MODEL_IN_CDIMAGE(model)){
|
|
REQUEST_MODEL(model);
|
|
while (!HAS_MODEL_LOADED(model))WAIT(0);
|
|
CREATE_OBJECT_NO_OFFSET(model, 0, 0, 0, &mapextra_obj, true);
|
|
MARK_MODEL_AS_NO_LONGER_NEEDED(model);
|
|
|
|
FREEZE_OBJECT_POSITION(mapextra_obj, true);
|
|
SET_OBJECT_LIGHTS(mapextra_obj, true);
|
|
SET_OBJECT_VISIBLE(mapextra_obj, true);
|
|
SET_OBJECT_INVINCIBLE(mapextra_obj, true);
|
|
|
|
ATTACH_OBJECT_TO_OBJECT(mapextra_obj, mapbase_obj, 0, ox,oy,oz,rx,ry,rz);
|
|
SET_OBJECT_COLLISION(mapextra_obj, true);
|
|
block_net_control_of_object(mapextra_obj);
|
|
}
|
|
}
|
|
|
|
void GIVE_HEALTH_TO_CHAR(const int Player_PED){
|
|
Pickup healthpack;
|
|
float Player_PED_GroundZ;
|
|
float Player_PED_x, Player_PED_y, Player_PED_z;
|
|
Blip BlipPickup;
|
|
REMOVE_ALL_PICKUPS_OF_TYPE(2);
|
|
GET_CHAR_COORDINATES(Player_PED, &Player_PED_x, &Player_PED_y, &Player_PED_z);
|
|
GET_GROUND_Z_FOR_3D_COORD(Player_PED_x, Player_PED_y, Player_PED_z, &Player_PED_GroundZ);
|
|
CREATE_PICKUP(1069950328, 2, Player_PED_x, Player_PED_y, Player_PED_GroundZ, &healthpack, false);
|
|
ADD_BLIP_FOR_PICKUP(healthpack, &BlipPickup);
|
|
WAIT(200);
|
|
REMOVE_PICKUP(healthpack);
|
|
}
|
|
|
|
void Spawn_Pickup(Ped PlayerPed,Model SpawnPickup_model,Pickup PickupInt,uint SpawnPickup_type ){
|
|
REMOVE_ALL_PICKUPS_OF_TYPE(2);
|
|
|
|
Blip BlipPickup;
|
|
float PlayerPed_x, PlayerPed_y, PlayerPed_z;
|
|
GET_CHAR_COORDINATES(PlayerPed, &PlayerPed_x, &PlayerPed_y, &PlayerPed_z);
|
|
if(!IS_ANY_PICKUP_AT_COORDS(PlayerPed_x, PlayerPed_y, PlayerPed_z)){
|
|
CREATE_PICKUP(SpawnPickup_model, SpawnPickup_type, PlayerPed_x, PlayerPed_y+1, PlayerPed_z, &PickupInt, false);
|
|
ADD_BLIP_FOR_PICKUP(PickupInt, &BlipPickup);
|
|
/*
|
|
create_map_obj(1005973733, 0.0577, -0.1013, -2.5672, 0, 4.200, 0,0,0, 0);
|
|
*/
|
|
}
|
|
|
|
if(HAS_PICKUP_BEEN_COLLECTED(PickupInt)){
|
|
Alert("Pickup has been collected",false);
|
|
}
|
|
}
|
|
|
|
|
|
void create_object_vehicle(uint object_vehicle, int visible){// FUNCTION TO CREATE OBJECT VEHICLE BASE
|
|
|
|
REQUEST_MODEL(object_vehicle);
|
|
MD_Delete_Objects_On_Vehicle(iPlayer);
|
|
while (!HAS_MODEL_LOADED(object_vehicle))WAIT(0);
|
|
float curHeading, curX, curY, curZ, cGroundZ, curSpeed;
|
|
if (IS_CHAR_IN_ANY_CAR(pPlayer)){
|
|
GET_CAR_CHAR_IS_USING(pPlayer, &object_veh);
|
|
GET_CAR_SPEED(object_veh, &curSpeed);
|
|
GET_CAR_HEADING(object_veh, &curHeading);
|
|
GET_CAR_COORDINATES(object_veh, &curX, &curY, &curZ);
|
|
DELETE_CAR(&object_veh);
|
|
MARK_CAR_AS_NO_LONGER_NEEDED(&object_veh);
|
|
}
|
|
else{
|
|
GET_CHAR_HEADING(pPlayer, &curHeading);
|
|
GET_CHAR_COORDINATES(pPlayer, &curX, &curY, &curZ);
|
|
}
|
|
CREATE_CAR(object_vehicle, curX, curY, curZ, &object_veh, true);
|
|
while (!DOES_VEHICLE_EXIST(object_veh))WAIT(0);
|
|
SET_CAR_HEADING(object_veh, curHeading);
|
|
SET_CAR_COORDINATES(object_veh, curX, curY, curZ);
|
|
SET_CAR_VISIBLE(object_veh,visible);
|
|
SET_HAS_BEEN_OWNED_BY_PLAYER(object_veh, true);
|
|
SET_NEEDS_TO_BE_HOTWIRED(object_veh, false);
|
|
SET_CAR_ENGINE_ON(object_veh, true, true);
|
|
if(GetBit(VehicleOptionsBitSet, VEHICLE_OPTION_INVINCIBLE)){
|
|
SET_CAR_CAN_BE_DAMAGED(object_veh,false);
|
|
SET_CAR_CAN_BE_VISIBLY_DAMAGED(object_veh,false);
|
|
SET_CAN_BURST_CAR_TYRES(object_veh,false);
|
|
}
|
|
if(GetBit(VehicleOptionsBitSet, VEHICLE_OPTION_ALL_UPGRADES)){
|
|
int i;
|
|
for(i=0;i<=9;i++){
|
|
TURN_OFF_VEHICLE_EXTRA(object_veh, i, false);
|
|
}
|
|
}
|
|
if(GetBit(VehicleOptionsBitSet, VEHICLE_OPTION_DIRT)){
|
|
SET_VEHICLE_DIRT_LEVEL(object_veh,15.9);
|
|
WASH_VEHICLE_TEXTURES(object_veh,255);
|
|
}
|
|
else{
|
|
SET_VEHICLE_DIRT_LEVEL(object_veh,0);
|
|
WASH_VEHICLE_TEXTURES(object_veh,0);
|
|
}
|
|
WARP_CHAR_INTO_CAR(pPlayer, object_veh);
|
|
if (IS_THIS_MODEL_A_HELI(object_vehicle))
|
|
SET_HELI_BLADES_FULL_SPEED(object_veh);
|
|
MARK_MODEL_AS_NO_LONGER_NEEDED(object_vehicle);
|
|
LOCK_CAR_DOORS(object_veh, VEHICLE_DOOR_UNLOCKED);
|
|
if (IS_INTERIOR_SCENE()){
|
|
GET_GROUND_Z_FOR_3D_COORD(curX, curY, curZ, &cGroundZ);
|
|
SET_CHAR_COORDINATES_NO_OFFSET(pPlayer, curX, curY, cGroundZ);
|
|
LOAD_SCENE(curX, curY, curZ);
|
|
}
|
|
if (curSpeed != 0)
|
|
SET_CAR_FORWARD_SPEED(object_veh, curSpeed);
|
|
return;
|
|
}
|
|
|
|
void CreateMapObj(const int model, float x, float y, float z, float h, float qx, float qy, float qz, float qw, bool dynamic, bool NO_OFFSET)
|
|
{
|
|
Object object;
|
|
if(IS_MODEL_IN_CDIMAGE(model))
|
|
{
|
|
REQUEST_MODEL(model);
|
|
while(!HAS_MODEL_LOADED(model)) WAIT(0);
|
|
if(NO_OFFSET)
|
|
{
|
|
CREATE_OBJECT_NO_OFFSET(model, x, y, z, &object, true);
|
|
}
|
|
else
|
|
{
|
|
CREATE_OBJECT(model, x, y, z, &object, true);
|
|
}
|
|
MARK_MODEL_AS_NO_LONGER_NEEDED(model);
|
|
SET_OBJECT_HEADING(object, h);
|
|
SET_OBJECT_QUATERNION(object, qx, qy, qz, qw);
|
|
SET_OBJECT_INVINCIBLE(object, true);
|
|
SET_OBJECT_PROOFS(object, false, false, false, false, false);
|
|
SET_OBJECT_VISIBLE(object, true);
|
|
SET_OBJECT_LIGHTS(object, true);
|
|
if (dynamic)
|
|
{
|
|
SET_OBJECT_DYNAMIC(object, true);
|
|
}
|
|
else
|
|
{
|
|
FREEZE_OBJECT_POSITION(object, true);
|
|
}
|
|
WAIT(0);
|
|
if(In_Network)
|
|
{
|
|
int nvid;
|
|
GET_NETWORK_ID_FROM_OBJECT(object, &nvid);
|
|
SET_NETWORK_ID_CAN_MIGRATE(nvid, false);
|
|
}
|
|
}
|
|
}
|
|
|
|
void create_map_obj(const int model, float x, float y, float z, float h, float qx, float qy, float qz, float qw, bool dynamic){ ///temporary placeholder
|
|
|
|
//TEMPORARY PLACEHOLDER, REPLACE create_map_obj with my new CreateMapObj instead of calling this when you get time
|
|
CreateMapObj(model,x,y,z,h,qx,qy,qz,qw,dynamic,true);
|
|
}
|
|
void create_map_obj_offset(uint model, float x, float y, float z, float h, float qx, float qy, float qz, float qw, bool dynamic){ //OBJECTS ON FIXED POSITION
|
|
//TEMPORARY PLACEHOLDER, REPLACE create_map_obj_offset with my new CreateMapObj instead of calling this when you get time
|
|
CreateMapObj(model,x,y,z,h,qx,qy,qz,qw,dynamic,false);
|
|
|
|
}
|
|
|
|
void create_map_car(uint model,float x,float y,float z){ //CARPLACEMENTS ON FIXED POSITION
|
|
float h;
|
|
Vehicle actionpad_vehicle;
|
|
if(IS_MODEL_IN_CDIMAGE(model)){
|
|
GET_CHAR_HEADING(pPlayer,&h);
|
|
REQUEST_MODEL(model);
|
|
while(!HAS_MODEL_LOADED(model)) WAIT(0);
|
|
CREATE_CAR(model,x,y+7,z+2,&actionpad_vehicle,true);
|
|
SET_CAR_HEADING(actionpad_vehicle,h-180);
|
|
MARK_MODEL_AS_NO_LONGER_NEEDED(model);
|
|
SET_CAR_COLLISION(actionpad_vehicle, false);
|
|
SET_CAR_CAN_BE_DAMAGED(actionpad_vehicle,false);
|
|
SET_CAR_CAN_BE_VISIBLY_DAMAGED(actionpad_vehicle,false);
|
|
SET_CAN_BURST_CAR_TYRES(actionpad_vehicle,false);
|
|
FREEZE_CAR_POSITION(actionpad_vehicle, true);
|
|
int lockZ;
|
|
GET_CAR_DOOR_LOCK_STATUS(actionpad_vehicle,&lockZ);
|
|
if(lockZ == VEHICLE_DOOR_UNLOCKED){
|
|
LOCK_CAR_DOORS(actionpad_vehicle,VEHICLE_DOOR_LOCKED_BOTH_SIDES);
|
|
}
|
|
}
|
|
else Alert("~BLIP_76~ ~COL_NET_4~Error! ~w~Model missing from your CD image",false);
|
|
//PLAY_AUDIO_EVENT("FRONTEND_MENU_MP_SERVER_HIGHLIGHT");
|
|
}
|
|
|
|
|
|
void attach_admin_object_to_player(const int player, const int model,const int pedbone, float obj_x, float obj_y, float obj_z, float obj_rx, float obj_ry, float obj_rz, const int id){
|
|
//TEMPORARY PLACEHOLDER (both of these functions are the exact same, WASTE OF SPACE!
|
|
attach_object_to_player(player,model,pedbone,obj_x,obj_y,obj_z,obj_rx,obj_ry,obj_rz,id);
|
|
}
|
|
|
|
void change_car_color (int player, ColourIndex color1, ColourIndex color2, ColourIndex color3, ColourIndex color4){
|
|
Vehicle vehicle;
|
|
GET_CAR_CHAR_IS_USING(player, &vehicle);
|
|
|
|
if(GetBit(VehicleOptionsBitSet, VEHICLE_OPTION_UNIFIED_COLOUR)){
|
|
CHANGE_CAR_COLOUR(vehicle, color1, color2);
|
|
SET_EXTRA_CAR_COLOURS(vehicle, color3, color4);
|
|
}
|
|
else{
|
|
int rand;
|
|
GENERATE_RANDOM_INT_IN_RANGE(0,134,&rand);
|
|
CHANGE_CAR_COLOUR(vehicle,color1,rand);
|
|
SET_EXTRA_CAR_COLOURS(vehicle,rand,rand); //done <3
|
|
}
|
|
|
|
WAIT(0);
|
|
FIX_CAR(vehicle);
|
|
SET_VEHICLE_DIRT_LEVEL(vehicle,0.0);
|
|
}
|
|
|
|
void change_Netcar_color (Vehicle vehicle,int player, ColourIndex color1, ColourIndex color2, ColourIndex color3, ColourIndex color4)
|
|
{
|
|
//TEMPORARY PLACEHOLDER (both of these functions are the exact same, WASTE OF SPACE!
|
|
//I believe we already have functions for this no?
|
|
change_car_color(player, color1, color2, color3, color4);
|
|
|
|
}
|
|
|
|
void clear_rotations(void){
|
|
register int Rotation_Subject_ID;
|
|
int i;
|
|
for(i = 0; i < 3; i++){
|
|
for(Rotation_Subject_ID = 0; Rotation_Subject_ID <= MAX_ROTATION_SUBJECTS -1; Rotation_Subject_ID++){
|
|
if(!DOES_OBJECT_EXIST(Rotation_Subject_Handle))continue;
|
|
if (DOES_CHAR_EXIST(Rotation_Subject[Rotation_Subject_ID]) && IS_PED_ATTACHED_TO_OBJECT(Rotation_Subject[Rotation_Subject_ID], Rotation_Subject_Handle)){
|
|
DELETE_CHAR(&Rotation_Subject[Rotation_Subject_ID]);
|
|
}
|
|
else if (DOES_VEHICLE_EXIST(Rotation_Subject[Rotation_Subject_ID]) && IS_CAR_ATTACHED(Rotation_Subject[Rotation_Subject_ID])){
|
|
DELETE_CAR(&Rotation_Subject[Rotation_Subject_ID]);
|
|
}
|
|
else if (DOES_OBJECT_EXIST(Rotation_Subject[Rotation_Subject_ID]) && IS_OBJECT_ATTACHED(Rotation_Subject[Rotation_Subject_ID])){
|
|
DELETE_OBJECT(&Rotation_Subject[Rotation_Subject_ID]);
|
|
}
|
|
}
|
|
WAIT(70);
|
|
}
|
|
SetBit(MD_Misc_OptionsBitSet,MD_MISC_ROTATIONS_LOOP,false);
|
|
//Rotationsloop = false;
|
|
if(DOES_OBJECT_EXIST(Rotation_Subject_Handle))DELETE_OBJECT(&Rotation_Subject_Handle);
|
|
}
|
|
|
|
/*
|
|
if(object == 0xD6E93FB5)continue;//V8 Object
|
|
if(object == 0xD1BBA26E)continue;//V81 Object
|
|
if(object == 0x3F15FE26)continue;//V11 Object
|
|
if(object == 0x2D295A4D)continue;//Spare Object
|
|
if(object == 0x3F15FE26)continue;//Spare Object
|
|
REQUEST_MODEL(0xF45AB5AE); // poolball 0xF45AB5AE
|
|
*/
|
|
|
|
void Create_Rotation(uint Player_ID, int model,float Subject_h,float Subject_x,float Subject_y, float height,float Angle_x,float Angle_y,float Angle_z,int id){
|
|
if(PLAYER_HAS_CHAR(Player_ID)){
|
|
Ped Player_PED;
|
|
if(!DOES_OBJECT_EXIST(Rotation_Subject_Handle)){ //Create it
|
|
Model Handle_model = 0xF45AB5AE;
|
|
REQUEST_MODEL(Handle_model);
|
|
while(!HAS_MODEL_LOADED(Handle_model))WAIT(0);
|
|
CREATE_OBJECT(Handle_model, 0.0, 0.0, 0.0, &Rotation_Subject_Handle, true);
|
|
MARK_MODEL_AS_NO_LONGER_NEEDED(Handle_model);
|
|
SET_OBJECT_VISIBLE(Rotation_Subject_Handle, true);
|
|
GET_PLAYER_CHAR(Player_ID,&Player_PED);
|
|
ATTACH_OBJECT_TO_PED (Rotation_Subject_Handle,Player_PED, 0.0,0.0, 0.0, -1, 0.0, 0.0, rotate_inc, 0);
|
|
//block_net_control_of_object(Rotation_Subject_Handle);
|
|
if(!MARK_OBJECT_FOR_NATHANS_PROTECTION(Rotation_Subject_Handle)) //net control set in my func
|
|
{
|
|
block_net_control_of_object(Rotation_Subject_Handle);
|
|
}
|
|
WAIT(50);
|
|
SetBit(MD_Misc_OptionsBitSet,MD_MISC_ROTATIONS_LOOP,true);
|
|
//Rotationsloop = true;
|
|
Alert("Rotation base created",false);
|
|
}
|
|
if(IS_MODEL_IN_CDIMAGE(model) && DOES_OBJECT_EXIST(Rotation_Subject_Handle)){
|
|
REQUEST_MODEL(model);
|
|
while (!HAS_MODEL_LOADED(model))WAIT(0);
|
|
if(IS_THIS_MODEL_A_VEHICLE(model)){
|
|
CREATE_CAR(model,0.0,0.0,0.0,&Rotation_Subject[id],true);
|
|
MARK_MODEL_AS_NO_LONGER_NEEDED(model);
|
|
ATTACH_CAR_TO_OBJECT(Rotation_Subject[id], Rotation_Subject_Handle,1,Subject_x, Subject_y,height, Angle_x,Angle_y,Angle_z);
|
|
SWITCH_CAR_SIREN(Rotation_Subject[id],true);
|
|
}
|
|
else if(IS_THIS_MODEL_A_PED(model)){
|
|
CREATE_CHAR(26, model, 0.0,0.0,0.0, &Rotation_Subject[id], true);
|
|
MARK_MODEL_AS_NO_LONGER_NEEDED(model);
|
|
SET_CHAR_RANDOM_COMPONENT_VARIATION(Rotation_Subject[id]);
|
|
ATTACH_PED_TO_OBJECT(Rotation_Subject[id],Rotation_Subject_Handle,1,Subject_x, Subject_y,height, Angle_x,Angle_y,1,1);
|
|
}
|
|
else{
|
|
CREATE_OBJECT_NO_OFFSET(model, 0, 0, 0, &Rotation_Subject[id], true);
|
|
MARK_MODEL_AS_NO_LONGER_NEEDED(model);
|
|
FREEZE_OBJECT_POSITION(Rotation_Subject[id], true);
|
|
SET_OBJECT_VISIBLE(Rotation_Subject[id], true);
|
|
SET_OBJECT_LIGHTS(Rotation_Subject[id], true);
|
|
SET_OBJECT_INVINCIBLE(Rotation_Subject[id], true);
|
|
ATTACH_OBJECT_TO_OBJECT(Rotation_Subject[id],Rotation_Subject_Handle,1,Subject_x, Subject_y,height, Angle_x, Angle_y ,Angle_z);
|
|
}
|
|
//Block_Net_Control_Of_Entity(model,Rotation_Subject[id]);// --> Make this turn false when detaching the cars
|
|
}
|
|
else Alert("~BLIP_76~ ~COL_NET_4~Error! ~w~Model missing from your CD image",false);
|
|
}
|
|
else Alert(Error_Char_Missing,false);
|
|
}
|
|
|
|
|
|
void MC_Create_Player_Rotation ( uint Player_ID, int Rot_Object_Model, float heightz, float angle1, float angle2, float angle3, float angle4 ){
|
|
float hook = 0;
|
|
float diagonal = 0.66;
|
|
Create_Rotation(Player_ID,Rot_Object_Model,angle4, Rotation_Distance ,hook,heightz,angle1,angle2,angletest1,0);
|
|
Create_Rotation(Player_ID,Rot_Object_Model,angle4,-Rotation_Distance,hook,heightz,angle1 ,angle2,angletest2,1);
|
|
Create_Rotation(Player_ID,Rot_Object_Model,angle4,hook ,Rotation_Distance,heightz,angle1 ,angle2,angletest3,2);
|
|
Create_Rotation(Player_ID,Rot_Object_Model,angle4,hook ,-Rotation_Distance,heightz,angle1,angle2,angletest4,3);
|
|
Create_Rotation(Player_ID,Rot_Object_Model,angle4,-Rotation_Distance*diagonal,-Rotation_Distance*diagonal,heightz,angle1 ,angle2,angletest5,4);
|
|
Create_Rotation(Player_ID,Rot_Object_Model,angle4, Rotation_Distance*diagonal, Rotation_Distance*diagonal,heightz,angle1 ,angle2,angletest6,5);
|
|
Create_Rotation(Player_ID,Rot_Object_Model,angle4,-Rotation_Distance*diagonal, Rotation_Distance*diagonal,heightz,angle1,angle2 ,angletest7,6);
|
|
Create_Rotation(Player_ID,Rot_Object_Model,angle4, Rotation_Distance*diagonal,-Rotation_Distance*diagonal,heightz,angle1 ,angle2,angletest8,7);
|
|
}
|
|
|
|
/**Rotation loop**/
|
|
void MC_Creation_Loop (void){
|
|
register int NetPlayer_ID;
|
|
int Rotation_Subject_ID;
|
|
Ped NetPlayer_Char;
|
|
Vehicle Rotation_Vehicle;
|
|
float Driving_x;
|
|
if(GetBit(MD_Misc_OptionsBitSet,MD_MISC_ROTATIONS_LOOP) && DOES_OBJECT_EXIST(Rotation_Subject_Handle)){
|
|
if (rotate_inc >= 6.3f)rotate_inc = 0.05f;
|
|
else rotate_inc += Rotation_Speed;
|
|
for(NetPlayer_ID = 0;NetPlayer_ID < MAX_PLAYERS; NetPlayer_ID++){
|
|
if(Player_Display_Selection(NetPlayer_ID))continue;
|
|
GET_PLAYER_CHAR(NetPlayer_ID,&NetPlayer_Char);
|
|
if(!DOES_CHAR_EXIST(NetPlayer_Char)) continue;
|
|
if(GET_PED_OBJECT_IS_ATTACHED_TO(Rotation_Subject_Handle) == NetPlayer_Char && IS_OBJECT_ATTACHED(Rotation_Subject_Handle)){
|
|
if(IS_CHAR_IN_ANY_CAR(NetPlayer_Char)){
|
|
if(is_driving(NetPlayer_Char))Driving_x = 0.5f;
|
|
else Driving_x = -0.5f;
|
|
if(!DOES_CHAR_EXIST(NetPlayer_Char))continue;
|
|
ATTACH_OBJECT_TO_PED (Rotation_Subject_Handle,NetPlayer_Char, 0, Driving_x, 0.0,Set_Rotation_Height -0.90f, 0.0, 0.0, rotate_inc, 0);
|
|
}
|
|
else {
|
|
if(!DOES_CHAR_EXIST(NetPlayer_Char)) continue;
|
|
ATTACH_OBJECT_TO_PED (Rotation_Subject_Handle,NetPlayer_Char, 0, 0.0, 0.0,Set_Rotation_Height - 1.50f, 0.0, 0.0, rotate_inc, 0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(Rot_Solidify){//Premium Only!!!
|
|
for(Rotation_Subject_ID = 0; Rotation_Subject_ID <= MAX_ROTATION_SUBJECTS -1; Rotation_Subject_ID++){
|
|
if (DOES_VEHICLE_EXIST(Rotation_Subject[Rotation_Subject_ID]) && IS_CAR_ATTACHED(Rotation_Subject[Rotation_Subject_ID])){
|
|
if (IS_THIS_MODEL_A_HELI(GET_VEHICLE_MODEL_FROM_INDEX(Rotation_Subject_ID))){
|
|
SET_HELI_BLADES_FULL_SPEED(Rotation_Subject[Rotation_Subject_ID]); //This doesnt work!!
|
|
}
|
|
SET_CAR_COLLISION(Rotation_Subject[Rotation_Subject_ID], Rot_Solidify);
|
|
}
|
|
else if (DOES_OBJECT_EXIST(Rotation_Subject[Rotation_Subject_ID]) && IS_OBJECT_ATTACHED(Rotation_Subject[Rotation_Subject_ID])){
|
|
SET_OBJECT_COLLISION(Rotation_Subject[Rotation_Subject_ID], Rot_Solidify);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|