mirror of
https://github.com/iDisaster/GTAConnected.git
synced 2026-03-08 09:25:23 +00:00
Add files via upload
This commit is contained in:
429
Trident/SuperiorNetworkOld/MD_Superior_Network.c
Normal file
429
Trident/SuperiorNetworkOld/MD_Superior_Network.c
Normal file
@@ -0,0 +1,429 @@
|
||||
/**
|
||||
* @ MAJOR DISTRIBUTION EXTEND
|
||||
* @ Version MDv13 TRIDENT
|
||||
* @ MADE BY - DEVILSDESIGN & IIV_NATHAN_VII & SHOCKixiXixiWAVE
|
||||
*/
|
||||
|
||||
//NOT DESIGNED FOR PC!!!!!
|
||||
//int GET_PLAYER_ID_FOR_THIS_PED(Ped ped);
|
||||
|
||||
#include "inc/natives.h"
|
||||
#include "MD_Compile_Settings.c"
|
||||
#include "MD_Base_Setup/MDB_Strings.h"
|
||||
#include "inc/common.h"
|
||||
#include "inc/consts.h"
|
||||
//#include "MD_Base_Setup/MDB_Supernet_Vars.h" //I'll declare my own here
|
||||
//#include "MD_Security/MDS_Security.h" //we are releasing ghost for free right?
|
||||
//#include "MD_Security/MDS_User_Verification.h" //meh?
|
||||
bool Holyghost = false;
|
||||
bool StopStreaming = false;
|
||||
SwitchStreaming_Message = false;
|
||||
SwitchStreaming_Toggle = false;
|
||||
bool Streaming;
|
||||
#define MDVersion_Txt_Size 0.19f,0.35f
|
||||
#define GetBit(BitSet, bitIndex) IS_BIT_SET(BitSet, bitIndex)
|
||||
|
||||
#define SetBit(BitSet, bitIndex, bitValue) SetBitHelper(&BitSet, bitIndex, bitValue)
|
||||
|
||||
#define ToggleBit(BitSet, bitIndex) ToggleBitHelper(&BitSet, bitIndex)
|
||||
|
||||
void SetBitHelper(uint *BitSet, uint bitIndex, bool value){
|
||||
if(value)SET_BIT(&*BitSet, bitIndex);
|
||||
else CLEAR_BIT(&*BitSet, bitIndex);
|
||||
}
|
||||
|
||||
void ToggleBitHelper(uint *BitSet, uint bitIndex){
|
||||
if(!IS_BIT_SET(*BitSet, bitIndex))SET_BIT(&*BitSet, bitIndex);
|
||||
else CLEAR_BIT(&*BitSet, bitIndex);
|
||||
}
|
||||
|
||||
#define NORMAL_MODE 1
|
||||
#define NORMAL_MODE_JOINED 2
|
||||
#define GHOST_MODE_OBTAINING_HOST 3
|
||||
#define GHOST_MODE_FOUND_HOST 4
|
||||
#define GHOST_MODE_JOINED 5
|
||||
|
||||
//if dpad down is pressed in freemode, minimap does SET_RADAR_ZOOM( 980 ); on a loop for 5 seconds, then puts it back to 0, think it'll restore to 0 though auto..
|
||||
|
||||
int pPlayer,Mode,Episode,empty_slots,Glowing,minimap_tick = 0;
|
||||
bool Glowing_Increment = false;
|
||||
int Rotating360 = 1;
|
||||
Texture radar;
|
||||
int player_blip[MAX_PLAYERS];
|
||||
|
||||
//uint HasRegisteredRespawnBitSet;
|
||||
|
||||
bool Invalid_Player(const int playerid){ //should move to common.h
|
||||
return (GET_HASH_KEY(GET_PLAYER_NAME(playerid)) == 2211124811 || HAS_NETWORK_PLAYER_LEFT_GAME(playerid)); //Invalid
|
||||
}
|
||||
|
||||
void change_player(int modelp){
|
||||
if(IS_MODEL_IN_CDIMAGE(modelp)){
|
||||
REQUEST_MODEL(modelp);
|
||||
float h;
|
||||
GET_CHAR_HEADING(pPlayer,&h);
|
||||
while(!HAS_MODEL_LOADED(modelp)) WAIT(0);
|
||||
CHANGE_PLAYER_MODEL(GET_PLAYER_ID(), modelp);
|
||||
MARK_MODEL_AS_NO_LONGER_NEEDED(modelp);
|
||||
GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer);
|
||||
SET_CHAR_HEADING(pPlayer,h);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void Effects(void)
|
||||
{
|
||||
if(Glowing >= 190) Glowing_Increment = false;
|
||||
if(Glowing <= 0) Glowing_Increment = true;
|
||||
if(Glowing_Increment){
|
||||
if(Glowing > 185) Glowing++;
|
||||
else Glowing += 3;
|
||||
}
|
||||
else{
|
||||
if(Glowing < 10) Glowing--;
|
||||
else Glowing -= 3;
|
||||
}
|
||||
if (Rotating360 >= 360)Rotating360 = 0;
|
||||
else Rotating360 += 5;
|
||||
|
||||
|
||||
if(empty_slots == -2) DRAW_SPRITE(radar,0.37f , 0.620f, 0.0500, 0.0500, Rotating360, Glowing, 100, 100, 200);
|
||||
else {
|
||||
if(Holyghost)MD_Terminate_Script(((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main");
|
||||
DRAW_SPRITE(radar,0.37f , 0.620f, 0.0500, 0.0500, Rotating360, Glowing, 255, Glowing, 255);
|
||||
}
|
||||
|
||||
if(Mode == NORMAL_MODE)
|
||||
{
|
||||
Set_Up_Draw(0.2150f*2,0.3600f*2, Glowing, 255, Glowing, 255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.40, 0.60, "STRING", "Joining Normally");
|
||||
}
|
||||
else
|
||||
{
|
||||
Set_Up_Draw(0.2150f*2,0.3600f*2, 255, Glowing, Glowing, 255,0,0,0);
|
||||
if(!Holyghost)DISPLAY_TEXT_WITH_LITERAL_STRING(0.40, 0.60, "STRING", "Joining As Ghost");
|
||||
else DISPLAY_TEXT_WITH_LITERAL_STRING(0.40, 0.60, "STRING", "Joining As Holy Ghost");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
char* CURRENT_GAME_MODES_SCRIPT_NAME(void)
|
||||
{
|
||||
int GameMode = NETWORK_GET_GAME_MODE();
|
||||
//THIS DOES NOT TAKE INTO ACCOUNT SCRIPT NAME DIFFERENCES FROM 360/PS3 (if there are any)
|
||||
//YET......
|
||||
if(GameMode == GAME_MODE_DEATHMATCH)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_quickdm";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "deathmatch_cr";
|
||||
}
|
||||
//return ( (Episode == 2) ? "e2_deathmatch" : "deathmatch_cr");
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TEAM_DEATHMATCH)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_deathmatch";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "deathmatch_cr";
|
||||
}
|
||||
}
|
||||
else if(GameMode == GAME_MODE_MAFIYA_WORK)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TEAM_MAFIYA_WORK)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TEAM_CAR_JACK_CITY)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_CAR_JACK_CITY)
|
||||
{
|
||||
//carsteal?
|
||||
}
|
||||
else if(GameMode == GAME_MODE_RACE)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_races";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "races_cr";
|
||||
}
|
||||
//return ( (Episode == 2) ? "e2_races" : "races_cr");
|
||||
}
|
||||
else if(GameMode == GAME_MODE_PARTY_MODE)
|
||||
{
|
||||
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_party_mode";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "party_mode";
|
||||
}
|
||||
|
||||
//return ( (Episode == 2) ? "e2_party_mode" : "party_mode");
|
||||
}
|
||||
else if(GameMode == GAME_MODE_COPS_AND_CROOKS)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TURF_WAR)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_DEAL_BREAKER)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_HANGMANS_NOOSE)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_BOMB_DA_BASE_II)
|
||||
{
|
||||
return "coop_bombdbase";
|
||||
}
|
||||
else if(GameMode == GAME_MODE_FREE_MODE){
|
||||
|
||||
if(Episode == 2)return "e2_freemode";
|
||||
else return "freemode_cr";
|
||||
}
|
||||
|
||||
return "Unknown";
|
||||
|
||||
}
|
||||
|
||||
bool CAN_FIND_HOST()
|
||||
{
|
||||
int i;
|
||||
for(i = 0; i < MAX_PLAYERS; i++)
|
||||
{
|
||||
if(GET_HOST_ID() != i || Invalid_Player(i)) continue;
|
||||
//if(Invalid_Player(i)) continue;
|
||||
if(Holyghost && Episode == 2){
|
||||
MD_Terminate_Script(CURRENT_GAME_MODES_SCRIPT_NAME());
|
||||
MD_Terminate_Script(((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//today, should check if gamemode returns int val correctly, if so make a char* GAME_MODES_SCRIPT_NAME(const int Gamemode)
|
||||
void main(){
|
||||
THIS_SCRIPT_IS_SAFE_FOR_NETWORK_GAME();
|
||||
REQUEST_STREAMED_TXD("network", 1);
|
||||
FORCE_LOADING_SCREEN(false);
|
||||
DO_SCREEN_FADE_IN(false);
|
||||
GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer);
|
||||
SET_CHAR_VISIBLE(pPlayer,true);
|
||||
SET_CHAR_COORDINATES_NO_OFFSET(pPlayer, 2635.0f, 416.0f, 79.35f); //yes nathan got theze coords optimised nigga, tower top center for x & y
|
||||
SET_CHAR_HEADING(pPlayer, 90.0f); //facing the city :)
|
||||
SET_CAM_BEHIND_PED(pPlayer);
|
||||
Episode = GET_CURRENT_EPISODE();
|
||||
if(!IS_PLAYER_ONLINE())
|
||||
{
|
||||
Alert("~b~MD: ~s~You need to sign in before playing online.",false);
|
||||
WAIT(3000);
|
||||
SHOW_SIGNIN_UI();
|
||||
WAIT(5000);
|
||||
}
|
||||
bool grabbed_input;
|
||||
do
|
||||
{
|
||||
WAIT(0);
|
||||
empty_slots = empty_player_slots();
|
||||
Set_Up_Draw(0.2750f,0.3600f,255,255,255,255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5, 0.45, "STRING", "~BLIP_77~ ~PAD_DPAD_RIGHT~ + ~PAD_A~ ~COL_NET_3~NORMAL MODE");
|
||||
Set_Up_Draw(0.2750f,0.3600f,255,255,255,255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5, 0.50, "STRING", "~BLIP_77~ ~PAD_DPAD_LEFT~ ~s~+ ~PAD_A~ ~COL_NET_4~GHOST MODE");
|
||||
Set_Up_Draw(0.2750f,0.3600f,255,255,255,255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5, 0.55, "STRING", "~BLIP_77~ ~PAD_DPAD_LEFT~ ~s~+ ~PAD_X~ ~COL_NET_1~HOLY GHOST MODE");
|
||||
bool LEFT_IS_PRESSED = IS_BUTTON_PRESSED(0,BUTTON_DPAD_LEFT);
|
||||
if(IS_BUTTON_JUST_PRESSED(0,BUTTON_A) && (LEFT_IS_PRESSED || IS_BUTTON_PRESSED(0,BUTTON_DPAD_RIGHT)) )
|
||||
{
|
||||
Autoload( ((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main", false);
|
||||
if(LEFT_IS_PRESSED) //ghost mode
|
||||
{
|
||||
Mode = GHOST_MODE_OBTAINING_HOST;
|
||||
WAIT(1250);//(was 1250)
|
||||
if(empty_slots >= (MAX_PLAYERS - 1)) SHUTDOWN_AND_LAUNCH_NETWORK_GAME(Episode);
|
||||
|
||||
}
|
||||
else //normal mode
|
||||
{
|
||||
Holyghost = false;
|
||||
Mode = NORMAL_MODE;
|
||||
|
||||
}
|
||||
//ifdef developer and r1 + x is pressed, mode is normal ghost join just HOLY_GHOST_MODE_JOINING_HOLY
|
||||
grabbed_input = true;
|
||||
//should use int joined mode or something
|
||||
}
|
||||
else if(IS_BUTTON_JUST_PRESSED(0,BUTTON_X) && (LEFT_IS_PRESSED || IS_BUTTON_PRESSED(0,BUTTON_DPAD_RIGHT)) ){
|
||||
Autoload( ((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main", false);
|
||||
if(LEFT_IS_PRESSED) //ghost mode
|
||||
{
|
||||
Mode = GHOST_MODE_OBTAINING_HOST;
|
||||
Holyghost = true;
|
||||
StopStreaming = true;
|
||||
//Stop streaming Code comes here
|
||||
WAIT(1250);//(was 1250)
|
||||
if(empty_slots >= (MAX_PLAYERS - 1)) SHUTDOWN_AND_LAUNCH_NETWORK_GAME(Episode);
|
||||
|
||||
}
|
||||
else //normal mode
|
||||
{
|
||||
Holyghost = false;
|
||||
Mode = NORMAL_MODE;
|
||||
}
|
||||
//ifdef developer and r1 + x is pressed, mode is normal ghost join just HOLY_GHOST_MODE_JOINING_HOLY
|
||||
grabbed_input = true;
|
||||
//should use int joined mode or something
|
||||
}
|
||||
}
|
||||
while(!grabbed_input);
|
||||
|
||||
radar = GET_TEXTURE_FROM_STREAMED_TXD("network", "ICON_W_TOTALTIME");
|
||||
//will have loaded by now..
|
||||
|
||||
while(true)
|
||||
{
|
||||
WAIT(0);
|
||||
|
||||
empty_slots = empty_player_slots(); //if needed idk
|
||||
|
||||
//iHost = GET_HOST_ID();
|
||||
GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer); //better than get player ped its poopy old.. literally this but only this is faster..
|
||||
switch(Mode)
|
||||
{
|
||||
case GHOST_MODE_OBTAINING_HOST:
|
||||
{
|
||||
if(empty_slots >= 0 && CAN_FIND_HOST()) //found
|
||||
{
|
||||
Mode = GHOST_MODE_FOUND_HOST;
|
||||
}
|
||||
else
|
||||
{
|
||||
Effects();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case GHOST_MODE_FOUND_HOST:
|
||||
{
|
||||
MD_Terminate_Script(CURRENT_GAME_MODES_SCRIPT_NAME());
|
||||
MD_Terminate_Script(((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main");
|
||||
|
||||
RELEASE_TEXTURE(radar);
|
||||
Mode = GHOST_MODE_JOINED;
|
||||
int GameMode = NETWORK_GET_GAME_MODE();
|
||||
USE_PLAYER_COLOUR_INSTEAD_OF_TEAM_COLOUR( (GameMode == GAME_MODE_FREE_MODE) );
|
||||
SWITCH_ARROW_ABOVE_BLIPPED_PICKUPS( (GameMode == GAME_MODE_FREE_MODE) || (GameMode == GAME_MODE_DEATHMATCH) || (GameMode == GAME_MODE_PARTY_MODE) );
|
||||
SET_SYNC_WEATHER_AND_GAME_TIME(true); //for now itz fine
|
||||
DISPLAY_FRONTEND_MAP_BLIPS(true); //pretty much all gamemodez i tinkle? //not doing anything :S
|
||||
if(StopStreaming)
|
||||
{
|
||||
//ALLOW_GAME_TO_PAUSE_FOR_STREAMING(true);
|
||||
//SWITCH_STREAMING(false);
|
||||
SwitchStreaming_Message = true;
|
||||
}
|
||||
|
||||
if(!Holyghost)
|
||||
{
|
||||
change_player(GET_PLAYERSETTINGS_MODEL_CHOICE());
|
||||
SET_PLAYERSETTINGS_MODEL_VARIATIONS_CHOICE(GET_PLAYER_ID());
|
||||
}
|
||||
|
||||
SET_PLAYER_CONTROL(GET_PLAYER_ID(),true);
|
||||
//ALLOW_LOCKON_TO_FRIENDLY_PLAYERS(iPlayer,true);
|
||||
//NETWORK_SET_FRIENDLY_FIRE_OPTION(true);
|
||||
SET_CHAR_HEALTH(pPlayer,500); //probably not needed
|
||||
GIVE_WEAPON_TO_CHAR(pPlayer,WEAPON_UNARMED,AMMO_MAX,false); //i THINK its needed, unsure, best to have weapon tho..
|
||||
ADD_TO_PREVIOUS_BRIEF("Chillout on GTA IV, only this time normal players don't know who you are!");
|
||||
//ALLOW_LOCKON_TO_FRIENDLY_PLAYERS(GET_PLAYER_ID(),true);
|
||||
//NETWORK_SET_FRIENDLY_FIRE_OPTION(true);
|
||||
}
|
||||
break;
|
||||
case GHOST_MODE_JOINED:
|
||||
{
|
||||
int i;
|
||||
for(i = 0; i < MAX_PLAYERS; i++)
|
||||
{
|
||||
if(DOES_BLIP_EXIST(player_blip[i]) && Invalid_Player(i))
|
||||
{
|
||||
REMOVE_BLIP(player_blip[i]);
|
||||
continue;
|
||||
}
|
||||
//else blah.. (i guess, we checking skip invalid and does blip exist twice..)
|
||||
if(Invalid_Player(i) || DOES_BLIP_EXIST(player_blip[i]) || !PLAYER_HAS_CHAR(i)) continue;
|
||||
ADD_BLIP_FOR_CHAR(PLAYER_CHAR(i),&player_blip[i]);
|
||||
CHANGE_BLIP_COLOUR(player_blip[i],GET_PLAYER_COLOUR(i));
|
||||
CHANGE_BLIP_PRIORITY(player_blip[i],3);
|
||||
CHANGE_BLIP_NAME_FROM_ASCII(player_blip[i],GET_PLAYER_NAME(i));
|
||||
CHANGE_BLIP_DISPLAY(player_blip[i], ( (i == GET_PLAYER_ID()) ? 0 : 2) );
|
||||
}
|
||||
|
||||
|
||||
if(IS_BUTTON_JUST_PRESSED(0,DPAD_DOWN)) //Minimap zoom (just like freemode does it) works flawless //flashes when scrolling and menu open (doesnt normally so)
|
||||
{
|
||||
//BUILT IN CRASH HOPEFULLY IF MENU STARTUP NOT FOUND!
|
||||
if(GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT("menu_startup") < 1)
|
||||
{
|
||||
if(minimap_tick > GetTickCount())
|
||||
{
|
||||
minimap_tick = (GetTickCount() - 5000);
|
||||
}
|
||||
else
|
||||
{
|
||||
minimap_tick = (GetTickCount() + 5000);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(minimap_tick > GetTickCount())
|
||||
{
|
||||
SET_RADAR_ZOOM(980);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(minimap_tick != 0)
|
||||
{
|
||||
SET_RADAR_ZOOM(0); //no need to loop this me don't think
|
||||
minimap_tick = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(IS_THIS_MACHINE_THE_SERVER()) //something seems to bust me outta ghost here..
|
||||
{
|
||||
Alert("~b~MD: ~s~You are now host, ghost is now useless, changing to normal mode.",true);
|
||||
|
||||
Mode = NORMAL_MODE_JOINED;
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NORMAL_MODE:
|
||||
{
|
||||
Effects();
|
||||
if(CAN_FIND_HOST()) Mode = NORMAL_MODE_JOINED;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
429
Trident/SuperiorNetworkOld/MD_Superior_Network.c.bak
Normal file
429
Trident/SuperiorNetworkOld/MD_Superior_Network.c.bak
Normal file
@@ -0,0 +1,429 @@
|
||||
/**
|
||||
* @ MAJOR DISTRIBUTION EXTEND
|
||||
* @ Version MDv13 TRIDENT
|
||||
* @ MADE BY - DEVILSDESIGN & IIV_NATHAN_VII & SHOCKixiXixiWAVE
|
||||
*/
|
||||
|
||||
//NOT DESIGNED FOR PC!!!!!
|
||||
//int GET_PLAYER_ID_FOR_THIS_PED(Ped ped);
|
||||
|
||||
#include "inc/natives.h"
|
||||
#include "MD_Compile_Settings.c"
|
||||
#include "MD_Base_Setup/MDB_Strings.h"
|
||||
#include "inc/common.h"
|
||||
#include "inc/consts.h"
|
||||
//#include "MD_Base_Setup/MDB_Supernet_Vars.h" //I'll declare my own here
|
||||
//#include "MD_Security/MDS_Security.h" //we are releasing ghost for free right?
|
||||
//#include "MD_Security/MDS_User_Verification.h" //meh?
|
||||
bool Holyghost = false;
|
||||
bool StopStreaming = false;
|
||||
SwitchStreaming_Message = false;
|
||||
SwitchStreaming_Toggle = false;
|
||||
bool Streaming;
|
||||
#define MDVersion_Txt_Size 0.19f,0.35f
|
||||
#define GetBit(BitSet, bitIndex) IS_BIT_SET(BitSet, bitIndex)
|
||||
|
||||
#define SetBit(BitSet, bitIndex, bitValue) SetBitHelper(&BitSet, bitIndex, bitValue)
|
||||
|
||||
#define ToggleBit(BitSet, bitIndex) ToggleBitHelper(&BitSet, bitIndex)
|
||||
|
||||
void SetBitHelper(uint *BitSet, uint bitIndex, bool value){
|
||||
if(value)SET_BIT(&*BitSet, bitIndex);
|
||||
else CLEAR_BIT(&*BitSet, bitIndex);
|
||||
}
|
||||
|
||||
void ToggleBitHelper(uint *BitSet, uint bitIndex){
|
||||
if(!IS_BIT_SET(*BitSet, bitIndex))SET_BIT(&*BitSet, bitIndex);
|
||||
else CLEAR_BIT(&*BitSet, bitIndex);
|
||||
}
|
||||
|
||||
#define NORMAL_MODE 1
|
||||
#define NORMAL_MODE_JOINED 2
|
||||
#define GHOST_MODE_OBTAINING_HOST 3
|
||||
#define GHOST_MODE_FOUND_HOST 4
|
||||
#define GHOST_MODE_JOINED 5
|
||||
|
||||
//if dpad down is pressed in freemode, minimap does SET_RADAR_ZOOM( 980 ); on a loop for 5 seconds, then puts it back to 0, think it'll restore to 0 though auto..
|
||||
|
||||
int pPlayer,Mode,Episode,empty_slots,Glowing,minimap_tick = 0;
|
||||
bool Glowing_Increment = false;
|
||||
int Rotating360 = 1;
|
||||
Texture radar;
|
||||
int player_blip[MAX_PLAYERS];
|
||||
|
||||
//uint HasRegisteredRespawnBitSet;
|
||||
|
||||
bool Invalid_Player(const int playerid){ //should move to common.h
|
||||
return (GET_HASH_KEY(GET_PLAYER_NAME(playerid)) == 2211124811 || HAS_NETWORK_PLAYER_LEFT_GAME(playerid)); //Invalid
|
||||
}
|
||||
|
||||
void change_player(int modelp){
|
||||
if(IS_MODEL_IN_CDIMAGE(modelp)){
|
||||
REQUEST_MODEL(modelp);
|
||||
float h;
|
||||
GET_CHAR_HEADING(pPlayer,&h);
|
||||
while(!HAS_MODEL_LOADED(modelp)) WAIT(0);
|
||||
CHANGE_PLAYER_MODEL(GET_PLAYER_ID(), modelp);
|
||||
MARK_MODEL_AS_NO_LONGER_NEEDED(modelp);
|
||||
GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer);
|
||||
SET_CHAR_HEADING(pPlayer,h);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void Effects(void)
|
||||
{
|
||||
if(Glowing >= 190) Glowing_Increment = false;
|
||||
if(Glowing <= 0) Glowing_Increment = true;
|
||||
if(Glowing_Increment){
|
||||
if(Glowing > 185) Glowing++;
|
||||
else Glowing += 3;
|
||||
}
|
||||
else{
|
||||
if(Glowing < 10) Glowing--;
|
||||
else Glowing -= 3;
|
||||
}
|
||||
if (Rotating360 >= 360)Rotating360 = 0;
|
||||
else Rotating360 += 5;
|
||||
|
||||
|
||||
if(empty_slots == -2) DRAW_SPRITE(radar,0.37f , 0.620f, 0.0500, 0.0500, Rotating360, Glowing, 100, 100, 200);
|
||||
else {
|
||||
if(Holyghost)MD_Terminate_Script(((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main");
|
||||
DRAW_SPRITE(radar,0.37f , 0.620f, 0.0500, 0.0500, Rotating360, Glowing, 255, Glowing, 255);
|
||||
}
|
||||
|
||||
if(Mode == NORMAL_MODE)
|
||||
{
|
||||
Set_Up_Draw(0.2150f*2,0.3600f*2, Glowing, 255, Glowing, 255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.40, 0.60, "STRING", "Joining Normally");
|
||||
}
|
||||
else
|
||||
{
|
||||
Set_Up_Draw(0.2150f*2,0.3600f*2, 255, Glowing, Glowing, 255,0,0,0);
|
||||
if(!Holyghost)DISPLAY_TEXT_WITH_LITERAL_STRING(0.40, 0.60, "STRING", "Joining As Ghost");
|
||||
else DISPLAY_TEXT_WITH_LITERAL_STRING(0.40, 0.60, "STRING", "Joining As Holy Ghost");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
char* CURRENT_GAME_MODES_SCRIPT_NAME(void)
|
||||
{
|
||||
int GameMode = NETWORK_GET_GAME_MODE();
|
||||
//THIS DOES NOT TAKE INTO ACCOUNT SCRIPT NAME DIFFERENCES FROM 360/PS3 (if there are any)
|
||||
//YET......
|
||||
if(GameMode == GAME_MODE_DEATHMATCH)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_quickdm";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "deathmatch_cr";
|
||||
}
|
||||
//return ( (Episode == 2) ? "e2_deathmatch" : "deathmatch_cr");
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TEAM_DEATHMATCH)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_deathmatch";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "deathmatch_cr";
|
||||
}
|
||||
}
|
||||
else if(GameMode == GAME_MODE_MAFIYA_WORK)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TEAM_MAFIYA_WORK)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TEAM_CAR_JACK_CITY)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_CAR_JACK_CITY)
|
||||
{
|
||||
//carsteal?
|
||||
}
|
||||
else if(GameMode == GAME_MODE_RACE)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_races";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "races_cr";
|
||||
}
|
||||
//return ( (Episode == 2) ? "e2_races" : "races_cr");
|
||||
}
|
||||
else if(GameMode == GAME_MODE_PARTY_MODE)
|
||||
{
|
||||
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_party_mode";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "party_mode";
|
||||
}
|
||||
|
||||
//return ( (Episode == 2) ? "e2_party_mode" : "party_mode");
|
||||
}
|
||||
else if(GameMode == GAME_MODE_COPS_AND_CROOKS)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TURF_WAR)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_DEAL_BREAKER)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_HANGMANS_NOOSE)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_BOMB_DA_BASE_II)
|
||||
{
|
||||
return "coop_bombdbase";
|
||||
}
|
||||
else if(GameMode == GAME_MODE_FREE_MODE){
|
||||
|
||||
if(Episode == 2)return "e2_freemode";
|
||||
else return "freemode_cr";
|
||||
}
|
||||
|
||||
return "Unknown";
|
||||
|
||||
}
|
||||
|
||||
bool CAN_FIND_HOST()
|
||||
{
|
||||
int i;
|
||||
for(i = 0; i < MAX_PLAYERS; i++)
|
||||
{
|
||||
if(GET_HOST_ID() != i || Invalid_Player(i)) continue;
|
||||
//if(Invalid_Player(i)) continue;
|
||||
if(Holyghost && Episode == 2){
|
||||
MD_Terminate_Script(CURRENT_GAME_MODES_SCRIPT_NAME());
|
||||
MD_Terminate_Script(((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//today, should check if gamemode returns int val correctly, if so make a char* GAME_MODES_SCRIPT_NAME(const int Gamemode)
|
||||
void main(){
|
||||
THIS_SCRIPT_IS_SAFE_FOR_NETWORK_GAME();
|
||||
REQUEST_STREAMED_TXD("network", 1);
|
||||
FORCE_LOADING_SCREEN(false);
|
||||
DO_SCREEN_FADE_IN(false);
|
||||
GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer);
|
||||
SET_CHAR_VISIBLE(pPlayer,true);
|
||||
SET_CHAR_COORDINATES_NO_OFFSET(pPlayer, 2635.0f, 416.0f, 79.35f); //yes nathan got theze coords optimised nigga, tower top center for x & y
|
||||
SET_CHAR_HEADING(pPlayer, 90.0f); //facing the city :)
|
||||
SET_CAM_BEHIND_PED(pPlayer);
|
||||
Episode = GET_CURRENT_EPISODE();
|
||||
if(!IS_PLAYER_ONLINE())
|
||||
{
|
||||
Alert("~COL_NET_4~MD: ~s~You need to sign in before playing online.",false);
|
||||
WAIT(3000);
|
||||
SHOW_SIGNIN_UI();
|
||||
WAIT(5000);
|
||||
}
|
||||
bool grabbed_input;
|
||||
do
|
||||
{
|
||||
WAIT(0);
|
||||
empty_slots = empty_player_slots();
|
||||
Set_Up_Draw(0.2750f,0.3600f,255,255,255,255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5, 0.45, "STRING", "~BLIP_77~ ~PAD_DPAD_RIGHT~ + ~PAD_A~ ~COL_NET_3~NORMAL MODE");
|
||||
Set_Up_Draw(0.2750f,0.3600f,255,255,255,255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5, 0.50, "STRING", "~BLIP_77~ ~PAD_DPAD_LEFT~ ~s~+ ~PAD_A~ ~COL_NET_4~GHOST MODE");
|
||||
Set_Up_Draw(0.2750f,0.3600f,255,255,255,255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5, 0.55, "STRING", "~BLIP_77~ ~PAD_DPAD_LEFT~ ~s~+ ~PAD_X~ ~COL_NET_1~HOLY GHOST MODE");
|
||||
bool LEFT_IS_PRESSED = IS_BUTTON_PRESSED(0,BUTTON_DPAD_LEFT);
|
||||
if(IS_BUTTON_JUST_PRESSED(0,BUTTON_A) && (LEFT_IS_PRESSED || IS_BUTTON_PRESSED(0,BUTTON_DPAD_RIGHT)) )
|
||||
{
|
||||
Autoload( ((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main", false);
|
||||
if(LEFT_IS_PRESSED) //ghost mode
|
||||
{
|
||||
Mode = GHOST_MODE_OBTAINING_HOST;
|
||||
WAIT(1250);//(was 1250)
|
||||
if(empty_slots >= (MAX_PLAYERS - 1)) SHUTDOWN_AND_LAUNCH_NETWORK_GAME(Episode);
|
||||
|
||||
}
|
||||
else //normal mode
|
||||
{
|
||||
Holyghost = false;
|
||||
Mode = NORMAL_MODE;
|
||||
|
||||
}
|
||||
//ifdef developer and r1 + x is pressed, mode is normal ghost join just HOLY_GHOST_MODE_JOINING_HOLY
|
||||
grabbed_input = true;
|
||||
//should use int joined mode or something
|
||||
}
|
||||
else if(IS_BUTTON_JUST_PRESSED(0,BUTTON_X) && (LEFT_IS_PRESSED || IS_BUTTON_PRESSED(0,BUTTON_DPAD_RIGHT)) ){
|
||||
Autoload( ((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main", false);
|
||||
if(LEFT_IS_PRESSED) //ghost mode
|
||||
{
|
||||
Mode = GHOST_MODE_OBTAINING_HOST;
|
||||
Holyghost = true;
|
||||
StopStreaming = true;
|
||||
//Stop streaming Code comes here
|
||||
WAIT(1250);//(was 1250)
|
||||
if(empty_slots >= (MAX_PLAYERS - 1)) SHUTDOWN_AND_LAUNCH_NETWORK_GAME(Episode);
|
||||
|
||||
}
|
||||
else //normal mode
|
||||
{
|
||||
Holyghost = false;
|
||||
Mode = NORMAL_MODE;
|
||||
}
|
||||
//ifdef developer and r1 + x is pressed, mode is normal ghost join just HOLY_GHOST_MODE_JOINING_HOLY
|
||||
grabbed_input = true;
|
||||
//should use int joined mode or something
|
||||
}
|
||||
}
|
||||
while(!grabbed_input);
|
||||
|
||||
radar = GET_TEXTURE_FROM_STREAMED_TXD("network", "ICON_W_TOTALTIME");
|
||||
//will have loaded by now..
|
||||
|
||||
while(true)
|
||||
{
|
||||
WAIT(0);
|
||||
|
||||
empty_slots = empty_player_slots(); //if needed idk
|
||||
|
||||
//iHost = GET_HOST_ID();
|
||||
GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer); //better than get player ped its poopy old.. literally this but only this is faster..
|
||||
switch(Mode)
|
||||
{
|
||||
case GHOST_MODE_OBTAINING_HOST:
|
||||
{
|
||||
if(empty_slots >= 0 && CAN_FIND_HOST()) //found
|
||||
{
|
||||
Mode = GHOST_MODE_FOUND_HOST;
|
||||
}
|
||||
else
|
||||
{
|
||||
Effects();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case GHOST_MODE_FOUND_HOST:
|
||||
{
|
||||
MD_Terminate_Script(CURRENT_GAME_MODES_SCRIPT_NAME());
|
||||
MD_Terminate_Script(((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main");
|
||||
|
||||
RELEASE_TEXTURE(radar);
|
||||
Mode = GHOST_MODE_JOINED;
|
||||
int GameMode = NETWORK_GET_GAME_MODE();
|
||||
USE_PLAYER_COLOUR_INSTEAD_OF_TEAM_COLOUR( (GameMode == GAME_MODE_FREE_MODE) );
|
||||
SWITCH_ARROW_ABOVE_BLIPPED_PICKUPS( (GameMode == GAME_MODE_FREE_MODE) || (GameMode == GAME_MODE_DEATHMATCH) || (GameMode == GAME_MODE_PARTY_MODE) );
|
||||
SET_SYNC_WEATHER_AND_GAME_TIME(true); //for now itz fine
|
||||
DISPLAY_FRONTEND_MAP_BLIPS(true); //pretty much all gamemodez i tinkle? //not doing anything :S
|
||||
if(StopStreaming)
|
||||
{
|
||||
//ALLOW_GAME_TO_PAUSE_FOR_STREAMING(true);
|
||||
//SWITCH_STREAMING(false);
|
||||
SwitchStreaming_Message = true;
|
||||
}
|
||||
|
||||
if(!Holyghost)
|
||||
{
|
||||
change_player(GET_PLAYERSETTINGS_MODEL_CHOICE());
|
||||
SET_PLAYERSETTINGS_MODEL_VARIATIONS_CHOICE(GET_PLAYER_ID());
|
||||
}
|
||||
|
||||
SET_PLAYER_CONTROL(GET_PLAYER_ID(),true);
|
||||
//ALLOW_LOCKON_TO_FRIENDLY_PLAYERS(iPlayer,true);
|
||||
//NETWORK_SET_FRIENDLY_FIRE_OPTION(true);
|
||||
SET_CHAR_HEALTH(pPlayer,500); //probably not needed
|
||||
GIVE_WEAPON_TO_CHAR(pPlayer,WEAPON_UNARMED,AMMO_MAX,false); //i THINK its needed, unsure, best to have weapon tho..
|
||||
ADD_TO_PREVIOUS_BRIEF("Chillout on GTA IV, only this time normal players don't know who you are!");
|
||||
//ALLOW_LOCKON_TO_FRIENDLY_PLAYERS(GET_PLAYER_ID(),true);
|
||||
//NETWORK_SET_FRIENDLY_FIRE_OPTION(true);
|
||||
}
|
||||
break;
|
||||
case GHOST_MODE_JOINED:
|
||||
{
|
||||
int i;
|
||||
for(i = 0; i < MAX_PLAYERS; i++)
|
||||
{
|
||||
if(DOES_BLIP_EXIST(player_blip[i]) && Invalid_Player(i))
|
||||
{
|
||||
REMOVE_BLIP(player_blip[i]);
|
||||
continue;
|
||||
}
|
||||
//else blah.. (i guess, we checking skip invalid and does blip exist twice..)
|
||||
if(Invalid_Player(i) || DOES_BLIP_EXIST(player_blip[i]) || !PLAYER_HAS_CHAR(i)) continue;
|
||||
ADD_BLIP_FOR_CHAR(PLAYER_CHAR(i),&player_blip[i]);
|
||||
CHANGE_BLIP_COLOUR(player_blip[i],GET_PLAYER_COLOUR(i));
|
||||
CHANGE_BLIP_PRIORITY(player_blip[i],3);
|
||||
CHANGE_BLIP_NAME_FROM_ASCII(player_blip[i],GET_PLAYER_NAME(i));
|
||||
CHANGE_BLIP_DISPLAY(player_blip[i], ( (i == GET_PLAYER_ID()) ? 0 : 2) );
|
||||
}
|
||||
|
||||
|
||||
if(IS_BUTTON_JUST_PRESSED(0,DPAD_DOWN)) //Minimap zoom (just like freemode does it) works flawless //flashes when scrolling and menu open (doesnt normally so)
|
||||
{
|
||||
//BUILT IN CRASH HOPEFULLY IF MENU STARTUP NOT FOUND!
|
||||
if(GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT("menu_startup") < 1)
|
||||
{
|
||||
if(minimap_tick > GetTickCount())
|
||||
{
|
||||
minimap_tick = (GetTickCount() - 5000);
|
||||
}
|
||||
else
|
||||
{
|
||||
minimap_tick = (GetTickCount() + 5000);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(minimap_tick > GetTickCount())
|
||||
{
|
||||
SET_RADAR_ZOOM(980);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(minimap_tick != 0)
|
||||
{
|
||||
SET_RADAR_ZOOM(0); //no need to loop this me don't think
|
||||
minimap_tick = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(IS_THIS_MACHINE_THE_SERVER()) //something seems to bust me outta ghost here..
|
||||
{
|
||||
Alert("~COL_NET_4~MD: ~s~You are now host, ghost is now useless, changing to normal mode.",true);
|
||||
|
||||
Mode = NORMAL_MODE_JOINED;
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NORMAL_MODE:
|
||||
{
|
||||
Effects();
|
||||
if(CAN_FIND_HOST()) Mode = NORMAL_MODE_JOINED;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
546
Trident/SuperiorNetworkOld/MD_Superior_Network_Nath.c
Normal file
546
Trident/SuperiorNetworkOld/MD_Superior_Network_Nath.c
Normal file
@@ -0,0 +1,546 @@
|
||||
/**
|
||||
* @ MAJOR DISTRIBUTION EXTEND
|
||||
* @ Version MDv13 TRIDENT
|
||||
* @ MADE BY - DEVILSDESIGN & IIV_NATHAN_VII
|
||||
*/
|
||||
|
||||
//NOT DESIGNED FOR PC!!!!!
|
||||
//int GET_PLAYER_ID_FOR_THIS_PED(Ped ped);
|
||||
|
||||
#include <natives.h>
|
||||
#include "MD_Compile_Settings.c"
|
||||
#include "MD_Base_Setup/MDB_Strings.h"
|
||||
#include <common.h>
|
||||
#include <consts.h> //for max players degine based on ifdef VERSION_PC
|
||||
//#include "MD_Base_Setup/MDB_Supernet_Vars.h" //I'll declare my own here
|
||||
//#include "MD_Security/MDS_Security.h" //we are releasing ghost for free right?
|
||||
//#include "MD_Security/MDS_User_Verification.h" //meh?
|
||||
|
||||
#define GetBit(BitSet, bitIndex) IS_BIT_SET(BitSet, bitIndex)
|
||||
|
||||
#define SetBit(BitSet, bitIndex, bitValue) SetBitHelper(&BitSet, bitIndex, bitValue)
|
||||
|
||||
#define ToggleBit(BitSet, bitIndex) ToggleBitHelper(&BitSet, bitIndex)
|
||||
|
||||
void SetBitHelper(uint *BitSet, uint bitIndex, bool value)
|
||||
{
|
||||
if(value)
|
||||
{
|
||||
SET_BIT(&*BitSet, bitIndex);
|
||||
}
|
||||
else
|
||||
{
|
||||
CLEAR_BIT(&*BitSet, bitIndex);
|
||||
}
|
||||
}
|
||||
|
||||
void ToggleBitHelper(uint *BitSet, uint bitIndex)
|
||||
{
|
||||
if(!IS_BIT_SET(*BitSet, bitIndex))
|
||||
{
|
||||
SET_BIT(&*BitSet, bitIndex);
|
||||
}
|
||||
else
|
||||
{
|
||||
CLEAR_BIT(&*BitSet, bitIndex);
|
||||
}
|
||||
}
|
||||
|
||||
#define NORMAL_MODE 1
|
||||
#define NORMAL_MODE_JOINED 2
|
||||
#define GHOST_MODE_OBTAINING_HOST 3
|
||||
#define GHOST_MODE_FOUND_HOST 4
|
||||
#define GHOST_MODE_JOINED 5
|
||||
|
||||
//if dpad down is pressed in freemode, minimap does SET_RADAR_ZOOM( 980 ); on a loop for 5 seconds, then puts it back to 0, think it'll restore to 0 though auto..
|
||||
|
||||
int pPlayer,Mode,Episode,empty_slots,Glowing,minimap_tick = 0;
|
||||
bool Glowing_Increment = false;
|
||||
int Rotating360 = 1;
|
||||
Texture radar;
|
||||
int player_blip[MAX_PLAYERS];
|
||||
|
||||
//uint HasRegisteredRespawnBitSet;
|
||||
|
||||
bool Invalid_Player(const int playerid){ //should move to common.h
|
||||
return (GET_HASH_KEY(GET_PLAYER_NAME(playerid)) == 2211124811 || HAS_NETWORK_PLAYER_LEFT_GAME(playerid)); //Invalid
|
||||
}
|
||||
|
||||
void change_player(int modelp){
|
||||
if(IS_MODEL_IN_CDIMAGE(modelp)){
|
||||
REQUEST_MODEL(modelp);
|
||||
float h;
|
||||
GET_CHAR_HEADING(pPlayer,&h);
|
||||
while(!HAS_MODEL_LOADED(modelp)) WAIT(0);
|
||||
CHANGE_PLAYER_MODEL(GET_PLAYER_ID(), modelp);
|
||||
MARK_MODEL_AS_NO_LONGER_NEEDED(modelp);
|
||||
GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer);
|
||||
SET_CHAR_HEADING(pPlayer,h);
|
||||
}
|
||||
//else Alert("~BLIP_76~ ~COL_NET_4~ Error! ~w~Model Is Missing From Your ISO! ~n~Action Could Not Be Performed!", false);
|
||||
//if this needs a print make it proppah
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void Effects(void)
|
||||
{
|
||||
if(Glowing >= 190) Glowing_Increment = false;
|
||||
if(Glowing <= 0) Glowing_Increment = true;
|
||||
if(Glowing_Increment){
|
||||
if(Glowing > 185) Glowing++;
|
||||
else Glowing += 3;
|
||||
}
|
||||
else{
|
||||
if(Glowing < 10) Glowing--;
|
||||
else Glowing -= 3;
|
||||
}
|
||||
if (Rotating360 >= 360)Rotating360 = 0;
|
||||
else Rotating360 += 5;
|
||||
|
||||
|
||||
if(empty_slots == -2) DRAW_SPRITE(radar,0.37f , 0.620f, 0.0500, 0.0500, Rotating360, Glowing, 100, 100, 200);
|
||||
else DRAW_SPRITE(radar,0.37f , 0.620f, 0.0500, 0.0500, Rotating360, Glowing, 255, Glowing, 255);
|
||||
|
||||
if(Mode == NORMAL_MODE)
|
||||
{
|
||||
Set_Up_Draw(0.2150f*2,0.3600f*2, Glowing, 255, Glowing, 255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.40, 0.60, "STRING", "Joining Normally");
|
||||
}
|
||||
else
|
||||
{
|
||||
Set_Up_Draw(0.2150f*2,0.3600f*2, 255, Glowing, Glowing, 255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.40, 0.60, "STRING", "Joining As Ghost");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
char* CURRENT_GAME_MODES_SCRIPT_NAME(void)
|
||||
{
|
||||
int GameMode = NETWORK_GET_GAME_MODE();
|
||||
//THIS DOES NOT TAKE INTO ACCOUNT SCRIPT NAME DIFFERENCES FROM 360/PS3 (if there are any)
|
||||
//YET......
|
||||
if(GameMode == GAME_MODE_DEATHMATCH)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_quickdm";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "deathmatch_cr";
|
||||
}
|
||||
//return ( (Episode == 2) ? "e2_deathmatch" : "deathmatch_cr");
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TEAM_DEATHMATCH)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_deathmatch";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "deathmatch_cr";
|
||||
}
|
||||
}
|
||||
else if(GameMode == GAME_MODE_MAFIYA_WORK)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TEAM_MAFIYA_WORK)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TEAM_CAR_JACK_CITY)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_CAR_JACK_CITY)
|
||||
{
|
||||
//carsteal?
|
||||
}
|
||||
else if(GameMode == GAME_MODE_RACE)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_races";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "races_cr";
|
||||
}
|
||||
//return ( (Episode == 2) ? "e2_races" : "races_cr");
|
||||
}
|
||||
else if(GameMode == GAME_MODE_PARTY_MODE)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_party_mode";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "party_mode";
|
||||
}
|
||||
//return ( (Episode == 2) ? "e2_party_mode" : "party_mode");
|
||||
}
|
||||
else if(GameMode == GAME_MODE_COPS_AND_CROOKS)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TURF_WAR)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_DEAL_BREAKER)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_HANGMANS_NOOSE)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_BOMB_DA_BASE_II)
|
||||
{
|
||||
return "coop_bombdbase";
|
||||
}
|
||||
else if(GameMode == GAME_MODE_FREE_MODE)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_freemode";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "freemode_cr";
|
||||
}
|
||||
//return ( (Episode == 2) ? "e2_freemode" : "freemode_cr");
|
||||
}
|
||||
else
|
||||
{
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
bool CAN_FIND_HOST()
|
||||
{
|
||||
int i;
|
||||
for(i = 0; i < MAX_PLAYERS; i++)
|
||||
{
|
||||
if(GET_HOST_ID() != i || Invalid_Player(i)) continue;
|
||||
//if(Invalid_Player(i)) continue;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//today, should check if gamemode returns int val correctly, if so make a char* GAME_MODES_SCRIPT_NAME(const int Gamemode)
|
||||
void main()
|
||||
{
|
||||
THIS_SCRIPT_IS_SAFE_FOR_NETWORK_GAME();
|
||||
REQUEST_STREAMED_TXD("network", 1);
|
||||
FORCE_LOADING_SCREEN(false);
|
||||
DO_SCREEN_FADE_IN(false);
|
||||
GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer);
|
||||
SET_CHAR_VISIBLE(pPlayer,true);
|
||||
SET_CHAR_COORDINATES_NO_OFFSET(pPlayer, 2635.0f, 416.0f, 79.35f); //yes nathan got theze coords optimised nigga, tower top center for x & y
|
||||
SET_CHAR_HEADING(pPlayer, 90.0f); //facing the city :)
|
||||
SET_CAM_BEHIND_PED(pPlayer);
|
||||
AutoLoad("MD_Trident");
|
||||
Episode = GET_CURRENT_EPISODE();
|
||||
if(!IS_PLAYER_ONLINE())
|
||||
{
|
||||
Alert("~b~MD: ~s~You need to sign in before playing online.",false);
|
||||
WAIT(3000);
|
||||
SHOW_SIGNIN_UI();
|
||||
WAIT(5000);
|
||||
}
|
||||
bool grabbed_input;
|
||||
do
|
||||
{
|
||||
WAIT(0);
|
||||
|
||||
empty_slots = empty_player_slots();
|
||||
//Set_Up_Draw(0.2500f,0.3600f,255,255,255,255,0,0,0);
|
||||
Set_Up_Draw(0.2750f,0.3600f,255,255,255,255,0,0,0); //as 2500f is a lil to the left.. if it's too far right, we adjust it
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.3, 0.5, "STRING", "~BLIP_77~ ~PAD_DPAD_LEFT~ ~s~+ ~PAD_A~ ~r~GHOST MODE ~s~/ ~PAD_DPAD_RIGHT~ + ~PAD_A~ ~g~NORMAL MODE");
|
||||
bool LEFT_IS_PRESSED = IS_BUTTON_PRESSED(0,BUTTON_DPAD_LEFT);
|
||||
if(IS_BUTTON_JUST_PRESSED(0,BUTTON_A) && (LEFT_IS_PRESSED || IS_BUTTON_PRESSED(0,BUTTON_DPAD_RIGHT)) )
|
||||
{
|
||||
Autoload( ((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main", false);
|
||||
if(LEFT_IS_PRESSED) //ghost mode
|
||||
{
|
||||
WAIT(1250);
|
||||
if(empty_slots >= (MAX_PLAYERS - 1)) SHUTDOWN_AND_LAUNCH_NETWORK_GAME(Episode);
|
||||
Mode = GHOST_MODE_OBTAINING_HOST;
|
||||
}
|
||||
else //normal mode
|
||||
{
|
||||
Mode = NORMAL_MODE;
|
||||
}
|
||||
//ifdef developer and r1 + x is pressed, mode is normal ghost join just HOLY_GHOST_MODE_JOINING_HOLY
|
||||
grabbed_input = true;
|
||||
//should use int joined mode or something
|
||||
}
|
||||
}
|
||||
while(!grabbed_input);
|
||||
|
||||
radar = GET_TEXTURE_FROM_STREAMED_TXD("network", "ICON_W_TOTALTIME");
|
||||
//will have loaded by now..
|
||||
|
||||
while(true)
|
||||
{
|
||||
WAIT(0);
|
||||
|
||||
empty_slots = empty_player_slots(); //if needed idk
|
||||
|
||||
//iHost = GET_HOST_ID();
|
||||
GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer); //better than get player ped its poopy old.. literally this but only this is faster..
|
||||
|
||||
if(Mode == GHOST_MODE_OBTAINING_HOST)
|
||||
{
|
||||
//if(CAN_FIND_HOST())
|
||||
if(empty_slots >= 0 && CAN_FIND_HOST()) //found
|
||||
{
|
||||
Mode = GHOST_MODE_FOUND_HOST;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
Effects();
|
||||
}
|
||||
}
|
||||
else if(Mode == GHOST_MODE_FOUND_HOST)
|
||||
{
|
||||
Terminate_Script(((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main"); //for tests //you sure we gotta terminate this?
|
||||
Terminate_Script(CURRENT_GAME_MODES_SCRIPT_NAME());
|
||||
RELEASE_TEXTURE(radar);
|
||||
Mode = GHOST_MODE_JOINED;
|
||||
int GameMode = NETWORK_GET_GAME_MODE();
|
||||
USE_PLAYER_COLOUR_INSTEAD_OF_TEAM_COLOUR( (GameMode == GAME_MODE_FREE_MODE) );
|
||||
SWITCH_ARROW_ABOVE_BLIPPED_PICKUPS( (GameMode == GAME_MODE_FREE_MODE) || (GameMode == GAME_MODE_DEATHMATCH) || (GameMode == GAME_MODE_PARTY_MODE) );
|
||||
SET_SYNC_WEATHER_AND_GAME_TIME(true); //for now itz fine
|
||||
DISPLAY_FRONTEND_MAP_BLIPS(true); //pretty much all gamemodez i tinkle? //not doing anything :S
|
||||
//CHANGE_BLIP_TEAM_RELEVANCE(int blip, int relevance); //not used anywher
|
||||
// DISPLAY_CASH(bool);
|
||||
/*
|
||||
SWITCH_ARROW_ABOVE_BLIPPED_PICKUPS(true); //freemode = true, deathmatch = true, party mode = true, carsteal = true,
|
||||
|
||||
//DISPLAY_FRONTEND_MAP_BLIPS(true); //doesn't seem important
|
||||
SET_SYNC_WEATHER_AND_GAME_TIME(true);
|
||||
SET_TEXT_DRAW_BEFORE_FADE(true);
|
||||
SET_SPRITES_DRAW_BEFORE_FADE(true);
|
||||
DISPLAY_PLAYER_NAMES(true); //don't think needed
|
||||
//below = from freemode
|
||||
SET_PLAYERS_DROP_MONEY_IN_NETWORK_GAME( 0 ); ////////
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 3, 30000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 1, 30000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 7, 30000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 9, 30000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 10, 30000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 11, 30000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 12, 30000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 13, 30000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 14, 30000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 15, 30000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 16, 60000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 17, 60000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 18, 60000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 4, 30000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 5, 30000 );
|
||||
sub_206655( uParam0 );
|
||||
SET_HEALTH_PICKUP_NETWORK_REGEN_TIME( 60000 );
|
||||
sub_212039( uParam0 );
|
||||
SET_ARMOUR_PICKUP_NETWORK_REGEN_TIME( 60000 );
|
||||
SWITCH_ARROW_ABOVE_BLIPPED_PICKUPS( 1 );
|
||||
*/
|
||||
//SET_PLAYER_CONTROL(GET_PLAYER_ID(),true);
|
||||
//GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer);
|
||||
//FREEZE_CHAR_POSITION(pPlayer,false);
|
||||
//DETACH_PED(pPlayer,true);
|
||||
//WAIT(0);
|
||||
change_player(GET_PLAYERSETTINGS_MODEL_CHOICE());
|
||||
SET_PLAYERSETTINGS_MODEL_VARIATIONS_CHOICE(GET_PLAYER_ID());
|
||||
SET_PLAYER_CONTROL(GET_PLAYER_ID(),true);
|
||||
//ALLOW_LOCKON_TO_FRIENDLY_PLAYERS(iPlayer,true);
|
||||
//NETWORK_SET_FRIENDLY_FIRE_OPTION(true);
|
||||
SET_CHAR_HEALTH(pPlayer,500); //probably not needed
|
||||
GIVE_WEAPON_TO_CHAR(pPlayer,WEAPON_UNARMED,AMMO_MAX,false); //i THINK its needed, unsure, best to have weapon tho..
|
||||
ADD_TO_PREVIOUS_BRIEF("Chillout on GTA IV, only this time normal players don't know who you are!");
|
||||
//add weapons is only thing after this
|
||||
}
|
||||
else if(Mode == GHOST_MODE_JOINED)
|
||||
{
|
||||
//ADD_BLIP_FOR_WEAPON(float x, float y, float z, int *blip);
|
||||
int i;
|
||||
for(i = 0; i < MAX_PLAYERS; i++)
|
||||
{
|
||||
if(DOES_BLIP_EXIST(player_blip[i]) && Invalid_Player(i))
|
||||
{
|
||||
REMOVE_BLIP(player_blip[i]);
|
||||
continue;
|
||||
}
|
||||
//else blah.. (i guess, we checking skip invalid and does blip exist twice..)
|
||||
if(Invalid_Player(i) || DOES_BLIP_EXIST(player_blip[i]) || !PLAYER_HAS_CHAR(i)) continue;
|
||||
ADD_BLIP_FOR_CHAR(PLAYER_CHAR(i),&player_blip[i]);
|
||||
CHANGE_BLIP_COLOUR(player_blip[i],GET_PLAYER_COLOUR(i));
|
||||
CHANGE_BLIP_PRIORITY(player_blip[i],3);
|
||||
CHANGE_BLIP_NAME_FROM_ASCII(player_blip[i],GET_PLAYER_NAME(i));
|
||||
CHANGE_BLIP_DISPLAY(player_blip[i], ( (i == GET_PLAYER_ID()) ? 0 : 2) );
|
||||
/*
|
||||
if(i == GET_PLAYER_ID())
|
||||
{
|
||||
CHANGE_BLIP_DISPLAY(player_blip[i], 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
CHANGE_BLIP_DISPLAY(player_blip[i], 2); //self = 0, other players = 2
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
if(IS_BUTTON_JUST_PRESSED(0,DPAD_DOWN)) //Minimap zoom (just like freemode does it) works flawless //flashes when scrolling and menu open (doesnt normally so)
|
||||
{
|
||||
//BUILT IN CRASH HOPEFULLY IF MENU STARTUP NOT FOUND!
|
||||
if(GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT("menu_startup") < 1)
|
||||
{
|
||||
if(minimap_tick > GetTickCount())
|
||||
{
|
||||
minimap_tick = (GetTickCount() - 5000);
|
||||
}
|
||||
else
|
||||
{
|
||||
minimap_tick = (GetTickCount() + 5000);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(minimap_tick > GetTickCount())
|
||||
{
|
||||
SET_RADAR_ZOOM(980);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(minimap_tick != 0)
|
||||
{
|
||||
SET_RADAR_ZOOM(0); //no need to loop this me don't think
|
||||
minimap_tick = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
if(IS_CHAR_DEAD(pPlayer)) //useless, when you die = join for everyone
|
||||
{
|
||||
//load gamemode script? :P
|
||||
int model
|
||||
GET_CHAR_MODEL(pPlayer,&model);
|
||||
change_player(model)
|
||||
REVIVE_INJURED_PED(pPlayer); //testing
|
||||
Alert("Revived self test complete",false);
|
||||
}
|
||||
*/
|
||||
if(IS_THIS_MACHINE_THE_SERVER()) //something seems to bust me outta ghost here..
|
||||
{
|
||||
Alert("~b~MD: ~s~You are now host, ghost is now useless, changing to normal mode.",true);
|
||||
//Autoload(((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main", false); //FREEZZ //gonna try it on itz own
|
||||
//REQUEST_SCRIPT(CURRENT_GAME_MODES_SCRIPT_NAME());
|
||||
//while(!HAS_SCRIPT_LOADED(CURRENT_GAME_MODES_SCRIPT_NAME())) WAIT(0);
|
||||
//START_NEW_SCRIPT(CURRENT_GAME_MODES_SCRIPT_NAME(),20240);
|
||||
//MARK_SCRIPT_AS_NO_LONGER_NEEDED(CURRENT_GAME_MODES_SCRIPT_NAME());
|
||||
//need to load gamemode script with a stupid stacksize (as rockstar uses stupid amount of vars per script).
|
||||
//1024 is not enough, for freemode rockstar uses 20240
|
||||
//Autoload(CURRENT_GAME_MODES_SCRIPT_NAME(),false); //FREEEZ //stacksize too small
|
||||
//SET_THIS_MACHINE_RUNNING_SERVER_SCRIPT(true);
|
||||
Mode = NORMAL_MODE_JOINED;
|
||||
/*
|
||||
for(i = 0; i < MAX_PLAYERS; i++)
|
||||
{
|
||||
if(!DOES_BLIP_EXIST(player_blip[i])) continue;
|
||||
REMOVE_BLIP(player_blip[i]); //gamemode will manage it now..
|
||||
} */
|
||||
//20240 = game mode script stack size given, if we start with 1024, probably crash? :S //yes this caused freezing before when testing with ap ii
|
||||
//Autoload()
|
||||
/*
|
||||
for(i = 0; i < MAX_PLAYERS; i++)
|
||||
{
|
||||
if(i == GET_PLAYER_ID()) continue;
|
||||
if(PLAYER_WANTS_TO_JOIN_NETWORK_GAME(i)) //skip self maybe?
|
||||
{
|
||||
WAIT(1000);
|
||||
TELL_NET_PLAYER_TO_START_PLAYING(i,0); //as in fremode
|
||||
Alert_Two("TELL NET PLAYER TO START PLAYING",GET_PLAYER_NAME(i),true);
|
||||
}
|
||||
if(Invalid_Player(i) || !PLAYER_HAS_CHAR(i)) continue;
|
||||
if(IS_CHAR_DEAD(PLAYER_CHAR(i)))
|
||||
{
|
||||
if(LOAD_ALL_PATH_NODES(1))
|
||||
{
|
||||
FLUSH_ALL_SPAWN_BLOCKING_AREAS();
|
||||
if(!GetBit(HasRegisteredRespawnBitSet,i))
|
||||
{
|
||||
Alert_Two("REGISTER PLAYER RESPAWN COORDS",GET_PLAYER_NAME(i),true);
|
||||
REGISTER_PLAYER_RESPAWN_COORDS(i,2290.65f, (476.5f + TO_FLOAT(i)), 6.05f);
|
||||
SetBit(HasRegisteredRespawnBitSet,i,true);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SetBit(HasRegisteredRespawnBitSet,i,false);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
/*void sub_9772()
|
||||
{
|
||||
int I;
|
||||
unknown uVar3;
|
||||
|
||||
for ( I = 0; I < 32; I++ )
|
||||
{
|
||||
if (PLAYER_WANTS_TO_JOIN_NETWORK_GAME( I ))
|
||||
{
|
||||
TELL_NET_PLAYER_TO_START_PLAYING( I, 0 );
|
||||
}
|
||||
}
|
||||
return;
|
||||
}*/
|
||||
/*
|
||||
if(CAN_FIND_HOST()) //should make this return an int or something..
|
||||
{
|
||||
if(lastHostID != GET_HOST_ID())
|
||||
{
|
||||
lastHostID = GET_HOST_ID();
|
||||
SET_THIS_MACHINE_RUNNING_SERVER_SCRIPT(IS_THIS_MACHINE_THE_SERVER()); //pulls you out of ghost, players = unable to join/respawn still.
|
||||
//probably gonna have to figure out how to tell net correctly and when to resurrect.. fuck
|
||||
}
|
||||
}
|
||||
*/
|
||||
//in fremode, iwhen join and end up host players dont respawn, and people joining don't get spawned in so
|
||||
/*int sub_4842()
|
||||
{
|
||||
if (IS_THIS_MACHINE_THE_SERVER())
|
||||
{
|
||||
SET_THIS_MACHINE_RUNNING_SERVER_SCRIPT( 1 );
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sub_5006()
|
||||
{
|
||||
SET_THIS_MACHINE_RUNNING_SERVER_SCRIPT( 0 );
|
||||
return;
|
||||
}*/
|
||||
|
||||
}
|
||||
else if(Mode == NORMAL_MODE)
|
||||
{
|
||||
Effects();
|
||||
if(CAN_FIND_HOST()) //found
|
||||
{
|
||||
Mode = NORMAL_MODE_JOINED;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
546
Trident/SuperiorNetworkOld/MD_Superior_Network_Nath.c.bak
Normal file
546
Trident/SuperiorNetworkOld/MD_Superior_Network_Nath.c.bak
Normal file
@@ -0,0 +1,546 @@
|
||||
/**
|
||||
* @ MAJOR DISTRIBUTION EXTEND
|
||||
* @ Version MDv13 TRIDENT
|
||||
* @ MADE BY - DEVILSDESIGN & IIV_NATHAN_VII
|
||||
*/
|
||||
|
||||
//NOT DESIGNED FOR PC!!!!!
|
||||
//int GET_PLAYER_ID_FOR_THIS_PED(Ped ped);
|
||||
|
||||
#include <natives.h>
|
||||
#include "MD_Compile_Settings.c"
|
||||
#include "MD_Base_Setup/MDB_Strings.h"
|
||||
#include <common.h>
|
||||
#include <consts.h> //for max players degine based on ifdef VERSION_PC
|
||||
//#include "MD_Base_Setup/MDB_Supernet_Vars.h" //I'll declare my own here
|
||||
//#include "MD_Security/MDS_Security.h" //we are releasing ghost for free right?
|
||||
//#include "MD_Security/MDS_User_Verification.h" //meh?
|
||||
|
||||
#define GetBit(BitSet, bitIndex) IS_BIT_SET(BitSet, bitIndex)
|
||||
|
||||
#define SetBit(BitSet, bitIndex, bitValue) SetBitHelper(&BitSet, bitIndex, bitValue)
|
||||
|
||||
#define ToggleBit(BitSet, bitIndex) ToggleBitHelper(&BitSet, bitIndex)
|
||||
|
||||
void SetBitHelper(uint *BitSet, uint bitIndex, bool value)
|
||||
{
|
||||
if(value)
|
||||
{
|
||||
SET_BIT(&*BitSet, bitIndex);
|
||||
}
|
||||
else
|
||||
{
|
||||
CLEAR_BIT(&*BitSet, bitIndex);
|
||||
}
|
||||
}
|
||||
|
||||
void ToggleBitHelper(uint *BitSet, uint bitIndex)
|
||||
{
|
||||
if(!IS_BIT_SET(*BitSet, bitIndex))
|
||||
{
|
||||
SET_BIT(&*BitSet, bitIndex);
|
||||
}
|
||||
else
|
||||
{
|
||||
CLEAR_BIT(&*BitSet, bitIndex);
|
||||
}
|
||||
}
|
||||
|
||||
#define NORMAL_MODE 1
|
||||
#define NORMAL_MODE_JOINED 2
|
||||
#define GHOST_MODE_OBTAINING_HOST 3
|
||||
#define GHOST_MODE_FOUND_HOST 4
|
||||
#define GHOST_MODE_JOINED 5
|
||||
|
||||
//if dpad down is pressed in freemode, minimap does SET_RADAR_ZOOM( 980 ); on a loop for 5 seconds, then puts it back to 0, think it'll restore to 0 though auto..
|
||||
|
||||
int pPlayer,Mode,Episode,empty_slots,Glowing,minimap_tick = 0;
|
||||
bool Glowing_Increment = false;
|
||||
int Rotating360 = 1;
|
||||
Texture radar;
|
||||
int player_blip[MAX_PLAYERS];
|
||||
|
||||
//uint HasRegisteredRespawnBitSet;
|
||||
|
||||
bool Invalid_Player(const int playerid){ //should move to common.h
|
||||
return (GET_HASH_KEY(GET_PLAYER_NAME(playerid)) == 2211124811 || HAS_NETWORK_PLAYER_LEFT_GAME(playerid)); //Invalid
|
||||
}
|
||||
|
||||
void change_player(int modelp){
|
||||
if(IS_MODEL_IN_CDIMAGE(modelp)){
|
||||
REQUEST_MODEL(modelp);
|
||||
float h;
|
||||
GET_CHAR_HEADING(pPlayer,&h);
|
||||
while(!HAS_MODEL_LOADED(modelp)) WAIT(0);
|
||||
CHANGE_PLAYER_MODEL(GET_PLAYER_ID(), modelp);
|
||||
MARK_MODEL_AS_NO_LONGER_NEEDED(modelp);
|
||||
GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer);
|
||||
SET_CHAR_HEADING(pPlayer,h);
|
||||
}
|
||||
//else Alert("~BLIP_76~ ~COL_NET_4~ Error! ~w~Model Is Missing From Your ISO! ~n~Action Could Not Be Performed!", false);
|
||||
//if this needs a print make it proppah
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void Effects(void)
|
||||
{
|
||||
if(Glowing >= 190) Glowing_Increment = false;
|
||||
if(Glowing <= 0) Glowing_Increment = true;
|
||||
if(Glowing_Increment){
|
||||
if(Glowing > 185) Glowing++;
|
||||
else Glowing += 3;
|
||||
}
|
||||
else{
|
||||
if(Glowing < 10) Glowing--;
|
||||
else Glowing -= 3;
|
||||
}
|
||||
if (Rotating360 >= 360)Rotating360 = 0;
|
||||
else Rotating360 += 5;
|
||||
|
||||
|
||||
if(empty_slots == -2) DRAW_SPRITE(radar,0.37f , 0.620f, 0.0500, 0.0500, Rotating360, Glowing, 100, 100, 200);
|
||||
else DRAW_SPRITE(radar,0.37f , 0.620f, 0.0500, 0.0500, Rotating360, Glowing, 255, Glowing, 255);
|
||||
|
||||
if(Mode == NORMAL_MODE)
|
||||
{
|
||||
Set_Up_Draw(0.2150f*2,0.3600f*2, Glowing, 255, Glowing, 255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.40, 0.60, "STRING", "Joining Normally");
|
||||
}
|
||||
else
|
||||
{
|
||||
Set_Up_Draw(0.2150f*2,0.3600f*2, 255, Glowing, Glowing, 255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.40, 0.60, "STRING", "Joining As Ghost");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
char* CURRENT_GAME_MODES_SCRIPT_NAME(void)
|
||||
{
|
||||
int GameMode = NETWORK_GET_GAME_MODE();
|
||||
//THIS DOES NOT TAKE INTO ACCOUNT SCRIPT NAME DIFFERENCES FROM 360/PS3 (if there are any)
|
||||
//YET......
|
||||
if(GameMode == GAME_MODE_DEATHMATCH)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_quickdm";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "deathmatch_cr";
|
||||
}
|
||||
//return ( (Episode == 2) ? "e2_deathmatch" : "deathmatch_cr");
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TEAM_DEATHMATCH)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_deathmatch";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "deathmatch_cr";
|
||||
}
|
||||
}
|
||||
else if(GameMode == GAME_MODE_MAFIYA_WORK)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TEAM_MAFIYA_WORK)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TEAM_CAR_JACK_CITY)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_CAR_JACK_CITY)
|
||||
{
|
||||
//carsteal?
|
||||
}
|
||||
else if(GameMode == GAME_MODE_RACE)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_races";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "races_cr";
|
||||
}
|
||||
//return ( (Episode == 2) ? "e2_races" : "races_cr");
|
||||
}
|
||||
else if(GameMode == GAME_MODE_PARTY_MODE)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_party_mode";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "party_mode";
|
||||
}
|
||||
//return ( (Episode == 2) ? "e2_party_mode" : "party_mode");
|
||||
}
|
||||
else if(GameMode == GAME_MODE_COPS_AND_CROOKS)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TURF_WAR)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_DEAL_BREAKER)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_HANGMANS_NOOSE)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_BOMB_DA_BASE_II)
|
||||
{
|
||||
return "coop_bombdbase";
|
||||
}
|
||||
else if(GameMode == GAME_MODE_FREE_MODE)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_freemode";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "freemode_cr";
|
||||
}
|
||||
//return ( (Episode == 2) ? "e2_freemode" : "freemode_cr");
|
||||
}
|
||||
else
|
||||
{
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
bool CAN_FIND_HOST()
|
||||
{
|
||||
int i;
|
||||
for(i = 0; i < MAX_PLAYERS; i++)
|
||||
{
|
||||
if(GET_HOST_ID() != i || Invalid_Player(i)) continue;
|
||||
//if(Invalid_Player(i)) continue;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//today, should check if gamemode returns int val correctly, if so make a char* GAME_MODES_SCRIPT_NAME(const int Gamemode)
|
||||
void main()
|
||||
{
|
||||
THIS_SCRIPT_IS_SAFE_FOR_NETWORK_GAME();
|
||||
REQUEST_STREAMED_TXD("network", 1);
|
||||
FORCE_LOADING_SCREEN(false);
|
||||
DO_SCREEN_FADE_IN(false);
|
||||
GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer);
|
||||
SET_CHAR_VISIBLE(pPlayer,true);
|
||||
SET_CHAR_COORDINATES_NO_OFFSET(pPlayer, 2635.0f, 416.0f, 79.35f); //yes nathan got theze coords optimised nigga, tower top center for x & y
|
||||
SET_CHAR_HEADING(pPlayer, 90.0f); //facing the city :)
|
||||
SET_CAM_BEHIND_PED(pPlayer);
|
||||
AutoLoad("MD_Trident");
|
||||
Episode = GET_CURRENT_EPISODE();
|
||||
if(!IS_PLAYER_ONLINE())
|
||||
{
|
||||
Alert("~COL_NET_4~MD: ~s~You need to sign in before playing online.",false);
|
||||
WAIT(3000);
|
||||
SHOW_SIGNIN_UI();
|
||||
WAIT(5000);
|
||||
}
|
||||
bool grabbed_input;
|
||||
do
|
||||
{
|
||||
WAIT(0);
|
||||
|
||||
empty_slots = empty_player_slots();
|
||||
//Set_Up_Draw(0.2500f,0.3600f,255,255,255,255,0,0,0);
|
||||
Set_Up_Draw(0.2750f,0.3600f,255,255,255,255,0,0,0); //as 2500f is a lil to the left.. if it's too far right, we adjust it
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.3, 0.5, "STRING", "~BLIP_77~ ~PAD_DPAD_LEFT~ ~s~+ ~PAD_A~ ~r~GHOST MODE ~s~/ ~PAD_DPAD_RIGHT~ + ~PAD_A~ ~g~NORMAL MODE");
|
||||
bool LEFT_IS_PRESSED = IS_BUTTON_PRESSED(0,BUTTON_DPAD_LEFT);
|
||||
if(IS_BUTTON_JUST_PRESSED(0,BUTTON_A) && (LEFT_IS_PRESSED || IS_BUTTON_PRESSED(0,BUTTON_DPAD_RIGHT)) )
|
||||
{
|
||||
Autoload( ((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main", false);
|
||||
if(LEFT_IS_PRESSED) //ghost mode
|
||||
{
|
||||
WAIT(1250);
|
||||
if(empty_slots >= (MAX_PLAYERS - 1)) SHUTDOWN_AND_LAUNCH_NETWORK_GAME(Episode);
|
||||
Mode = GHOST_MODE_OBTAINING_HOST;
|
||||
}
|
||||
else //normal mode
|
||||
{
|
||||
Mode = NORMAL_MODE;
|
||||
}
|
||||
//ifdef developer and r1 + x is pressed, mode is normal ghost join just HOLY_GHOST_MODE_JOINING_HOLY
|
||||
grabbed_input = true;
|
||||
//should use int joined mode or something
|
||||
}
|
||||
}
|
||||
while(!grabbed_input);
|
||||
|
||||
radar = GET_TEXTURE_FROM_STREAMED_TXD("network", "ICON_W_TOTALTIME");
|
||||
//will have loaded by now..
|
||||
|
||||
while(true)
|
||||
{
|
||||
WAIT(0);
|
||||
|
||||
empty_slots = empty_player_slots(); //if needed idk
|
||||
|
||||
//iHost = GET_HOST_ID();
|
||||
GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer); //better than get player ped its poopy old.. literally this but only this is faster..
|
||||
|
||||
if(Mode == GHOST_MODE_OBTAINING_HOST)
|
||||
{
|
||||
//if(CAN_FIND_HOST())
|
||||
if(empty_slots >= 0 && CAN_FIND_HOST()) //found
|
||||
{
|
||||
Mode = GHOST_MODE_FOUND_HOST;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
Effects();
|
||||
}
|
||||
}
|
||||
else if(Mode == GHOST_MODE_FOUND_HOST)
|
||||
{
|
||||
Terminate_Script(((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main"); //for tests //you sure we gotta terminate this?
|
||||
Terminate_Script(CURRENT_GAME_MODES_SCRIPT_NAME());
|
||||
RELEASE_TEXTURE(radar);
|
||||
Mode = GHOST_MODE_JOINED;
|
||||
int GameMode = NETWORK_GET_GAME_MODE();
|
||||
USE_PLAYER_COLOUR_INSTEAD_OF_TEAM_COLOUR( (GameMode == GAME_MODE_FREE_MODE) );
|
||||
SWITCH_ARROW_ABOVE_BLIPPED_PICKUPS( (GameMode == GAME_MODE_FREE_MODE) || (GameMode == GAME_MODE_DEATHMATCH) || (GameMode == GAME_MODE_PARTY_MODE) );
|
||||
SET_SYNC_WEATHER_AND_GAME_TIME(true); //for now itz fine
|
||||
DISPLAY_FRONTEND_MAP_BLIPS(true); //pretty much all gamemodez i tinkle? //not doing anything :S
|
||||
//CHANGE_BLIP_TEAM_RELEVANCE(int blip, int relevance); //not used anywher
|
||||
// DISPLAY_CASH(bool);
|
||||
/*
|
||||
SWITCH_ARROW_ABOVE_BLIPPED_PICKUPS(true); //freemode = true, deathmatch = true, party mode = true, carsteal = true,
|
||||
|
||||
//DISPLAY_FRONTEND_MAP_BLIPS(true); //doesn't seem important
|
||||
SET_SYNC_WEATHER_AND_GAME_TIME(true);
|
||||
SET_TEXT_DRAW_BEFORE_FADE(true);
|
||||
SET_SPRITES_DRAW_BEFORE_FADE(true);
|
||||
DISPLAY_PLAYER_NAMES(true); //don't think needed
|
||||
//below = from freemode
|
||||
SET_PLAYERS_DROP_MONEY_IN_NETWORK_GAME( 0 ); ////////
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 3, 30000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 1, 30000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 7, 30000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 9, 30000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 10, 30000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 11, 30000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 12, 30000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 13, 30000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 14, 30000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 15, 30000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 16, 60000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 17, 60000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 18, 60000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 4, 30000 );
|
||||
SET_WEAPON_PICKUP_NETWORK_REGEN_TIME( 5, 30000 );
|
||||
sub_206655( uParam0 );
|
||||
SET_HEALTH_PICKUP_NETWORK_REGEN_TIME( 60000 );
|
||||
sub_212039( uParam0 );
|
||||
SET_ARMOUR_PICKUP_NETWORK_REGEN_TIME( 60000 );
|
||||
SWITCH_ARROW_ABOVE_BLIPPED_PICKUPS( 1 );
|
||||
*/
|
||||
//SET_PLAYER_CONTROL(GET_PLAYER_ID(),true);
|
||||
//GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer);
|
||||
//FREEZE_CHAR_POSITION(pPlayer,false);
|
||||
//DETACH_PED(pPlayer,true);
|
||||
//WAIT(0);
|
||||
change_player(GET_PLAYERSETTINGS_MODEL_CHOICE());
|
||||
SET_PLAYERSETTINGS_MODEL_VARIATIONS_CHOICE(GET_PLAYER_ID());
|
||||
SET_PLAYER_CONTROL(GET_PLAYER_ID(),true);
|
||||
//ALLOW_LOCKON_TO_FRIENDLY_PLAYERS(iPlayer,true);
|
||||
//NETWORK_SET_FRIENDLY_FIRE_OPTION(true);
|
||||
SET_CHAR_HEALTH(pPlayer,500); //probably not needed
|
||||
GIVE_WEAPON_TO_CHAR(pPlayer,WEAPON_UNARMED,AMMO_MAX,false); //i THINK its needed, unsure, best to have weapon tho..
|
||||
ADD_TO_PREVIOUS_BRIEF("Chillout on GTA IV, only this time normal players don't know who you are!");
|
||||
//add weapons is only thing after this
|
||||
}
|
||||
else if(Mode == GHOST_MODE_JOINED)
|
||||
{
|
||||
//ADD_BLIP_FOR_WEAPON(float x, float y, float z, int *blip);
|
||||
int i;
|
||||
for(i = 0; i < MAX_PLAYERS; i++)
|
||||
{
|
||||
if(DOES_BLIP_EXIST(player_blip[i]) && Invalid_Player(i))
|
||||
{
|
||||
REMOVE_BLIP(player_blip[i]);
|
||||
continue;
|
||||
}
|
||||
//else blah.. (i guess, we checking skip invalid and does blip exist twice..)
|
||||
if(Invalid_Player(i) || DOES_BLIP_EXIST(player_blip[i]) || !PLAYER_HAS_CHAR(i)) continue;
|
||||
ADD_BLIP_FOR_CHAR(PLAYER_CHAR(i),&player_blip[i]);
|
||||
CHANGE_BLIP_COLOUR(player_blip[i],GET_PLAYER_COLOUR(i));
|
||||
CHANGE_BLIP_PRIORITY(player_blip[i],3);
|
||||
CHANGE_BLIP_NAME_FROM_ASCII(player_blip[i],GET_PLAYER_NAME(i));
|
||||
CHANGE_BLIP_DISPLAY(player_blip[i], ( (i == GET_PLAYER_ID()) ? 0 : 2) );
|
||||
/*
|
||||
if(i == GET_PLAYER_ID())
|
||||
{
|
||||
CHANGE_BLIP_DISPLAY(player_blip[i], 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
CHANGE_BLIP_DISPLAY(player_blip[i], 2); //self = 0, other players = 2
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
if(IS_BUTTON_JUST_PRESSED(0,DPAD_DOWN)) //Minimap zoom (just like freemode does it) works flawless //flashes when scrolling and menu open (doesnt normally so)
|
||||
{
|
||||
//BUILT IN CRASH HOPEFULLY IF MENU STARTUP NOT FOUND!
|
||||
if(GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT("menu_startup") < 1)
|
||||
{
|
||||
if(minimap_tick > GetTickCount())
|
||||
{
|
||||
minimap_tick = (GetTickCount() - 5000);
|
||||
}
|
||||
else
|
||||
{
|
||||
minimap_tick = (GetTickCount() + 5000);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(minimap_tick > GetTickCount())
|
||||
{
|
||||
SET_RADAR_ZOOM(980);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(minimap_tick != 0)
|
||||
{
|
||||
SET_RADAR_ZOOM(0); //no need to loop this me don't think
|
||||
minimap_tick = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
if(IS_CHAR_DEAD(pPlayer)) //useless, when you die = join for everyone
|
||||
{
|
||||
//load gamemode script? :P
|
||||
int model
|
||||
GET_CHAR_MODEL(pPlayer,&model);
|
||||
change_player(model)
|
||||
REVIVE_INJURED_PED(pPlayer); //testing
|
||||
Alert("Revived self test complete",false);
|
||||
}
|
||||
*/
|
||||
if(IS_THIS_MACHINE_THE_SERVER()) //something seems to bust me outta ghost here..
|
||||
{
|
||||
Alert("~COL_NET_4~MD: ~s~You are now host, ghost is now useless, changing to normal mode.",true);
|
||||
//Autoload(((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main", false); //FREEZZ //gonna try it on itz own
|
||||
//REQUEST_SCRIPT(CURRENT_GAME_MODES_SCRIPT_NAME());
|
||||
//while(!HAS_SCRIPT_LOADED(CURRENT_GAME_MODES_SCRIPT_NAME())) WAIT(0);
|
||||
//START_NEW_SCRIPT(CURRENT_GAME_MODES_SCRIPT_NAME(),20240);
|
||||
//MARK_SCRIPT_AS_NO_LONGER_NEEDED(CURRENT_GAME_MODES_SCRIPT_NAME());
|
||||
//need to load gamemode script with a stupid stacksize (as rockstar uses stupid amount of vars per script).
|
||||
//1024 is not enough, for freemode rockstar uses 20240
|
||||
//Autoload(CURRENT_GAME_MODES_SCRIPT_NAME(),false); //FREEEZ //stacksize too small
|
||||
//SET_THIS_MACHINE_RUNNING_SERVER_SCRIPT(true);
|
||||
Mode = NORMAL_MODE_JOINED;
|
||||
/*
|
||||
for(i = 0; i < MAX_PLAYERS; i++)
|
||||
{
|
||||
if(!DOES_BLIP_EXIST(player_blip[i])) continue;
|
||||
REMOVE_BLIP(player_blip[i]); //gamemode will manage it now..
|
||||
} */
|
||||
//20240 = game mode script stack size given, if we start with 1024, probably crash? :S //yes this caused freezing before when testing with ap ii
|
||||
//Autoload()
|
||||
/*
|
||||
for(i = 0; i < MAX_PLAYERS; i++)
|
||||
{
|
||||
if(i == GET_PLAYER_ID()) continue;
|
||||
if(PLAYER_WANTS_TO_JOIN_NETWORK_GAME(i)) //skip self maybe?
|
||||
{
|
||||
WAIT(1000);
|
||||
TELL_NET_PLAYER_TO_START_PLAYING(i,0); //as in fremode
|
||||
Alert_Two("TELL NET PLAYER TO START PLAYING",GET_PLAYER_NAME(i),true);
|
||||
}
|
||||
if(Invalid_Player(i) || !PLAYER_HAS_CHAR(i)) continue;
|
||||
if(IS_CHAR_DEAD(PLAYER_CHAR(i)))
|
||||
{
|
||||
if(LOAD_ALL_PATH_NODES(1))
|
||||
{
|
||||
FLUSH_ALL_SPAWN_BLOCKING_AREAS();
|
||||
if(!GetBit(HasRegisteredRespawnBitSet,i))
|
||||
{
|
||||
Alert_Two("REGISTER PLAYER RESPAWN COORDS",GET_PLAYER_NAME(i),true);
|
||||
REGISTER_PLAYER_RESPAWN_COORDS(i,2290.65f, (476.5f + TO_FLOAT(i)), 6.05f);
|
||||
SetBit(HasRegisteredRespawnBitSet,i,true);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SetBit(HasRegisteredRespawnBitSet,i,false);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
/*void sub_9772()
|
||||
{
|
||||
int I;
|
||||
unknown uVar3;
|
||||
|
||||
for ( I = 0; I < 32; I++ )
|
||||
{
|
||||
if (PLAYER_WANTS_TO_JOIN_NETWORK_GAME( I ))
|
||||
{
|
||||
TELL_NET_PLAYER_TO_START_PLAYING( I, 0 );
|
||||
}
|
||||
}
|
||||
return;
|
||||
}*/
|
||||
/*
|
||||
if(CAN_FIND_HOST()) //should make this return an int or something..
|
||||
{
|
||||
if(lastHostID != GET_HOST_ID())
|
||||
{
|
||||
lastHostID = GET_HOST_ID();
|
||||
SET_THIS_MACHINE_RUNNING_SERVER_SCRIPT(IS_THIS_MACHINE_THE_SERVER()); //pulls you out of ghost, players = unable to join/respawn still.
|
||||
//probably gonna have to figure out how to tell net correctly and when to resurrect.. fuck
|
||||
}
|
||||
}
|
||||
*/
|
||||
//in fremode, iwhen join and end up host players dont respawn, and people joining don't get spawned in so
|
||||
/*int sub_4842()
|
||||
{
|
||||
if (IS_THIS_MACHINE_THE_SERVER())
|
||||
{
|
||||
SET_THIS_MACHINE_RUNNING_SERVER_SCRIPT( 1 );
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sub_5006()
|
||||
{
|
||||
SET_THIS_MACHINE_RUNNING_SERVER_SCRIPT( 0 );
|
||||
return;
|
||||
}*/
|
||||
|
||||
}
|
||||
else if(Mode == NORMAL_MODE)
|
||||
{
|
||||
Effects();
|
||||
if(CAN_FIND_HOST()) //found
|
||||
{
|
||||
Mode = NORMAL_MODE_JOINED;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
429
Trident/SuperiorNetworkOld/MD_Superior_Network_Nathanworking.c
Normal file
429
Trident/SuperiorNetworkOld/MD_Superior_Network_Nathanworking.c
Normal file
@@ -0,0 +1,429 @@
|
||||
/**
|
||||
* @ MAJOR DISTRIBUTION EXTEND
|
||||
* @ Version MDv13 TRIDENT
|
||||
* @ MADE BY - DEVILSDESIGN & IIV_NATHAN_VII & SHOCKixiXixiWAVE
|
||||
*/
|
||||
|
||||
//NOT DESIGNED FOR PC!!!!!
|
||||
//int GET_PLAYER_ID_FOR_THIS_PED(Ped ped);
|
||||
|
||||
#include "inc/natives.h"
|
||||
#include "MD_Compile_Settings.c"
|
||||
#include "MD_Base_Setup/MDB_Strings.h"
|
||||
#include "inc/common.h"
|
||||
#include "inc/consts.h"
|
||||
//#include "MD_Base_Setup/MDB_Supernet_Vars.h" //I'll declare my own here
|
||||
//#include "MD_Security/MDS_Security.h" //we are releasing ghost for free right?
|
||||
//#include "MD_Security/MDS_User_Verification.h" //meh?
|
||||
bool Holyghost = false;
|
||||
bool StopStreaming = false;
|
||||
SwitchStreaming_Message = false;
|
||||
SwitchStreaming_Toggle = false;
|
||||
bool Streaming;
|
||||
#define MDVersion_Txt_Size 0.19f,0.35f
|
||||
#define GetBit(BitSet, bitIndex) IS_BIT_SET(BitSet, bitIndex)
|
||||
|
||||
#define SetBit(BitSet, bitIndex, bitValue) SetBitHelper(&BitSet, bitIndex, bitValue)
|
||||
|
||||
#define ToggleBit(BitSet, bitIndex) ToggleBitHelper(&BitSet, bitIndex)
|
||||
|
||||
void SetBitHelper(uint *BitSet, uint bitIndex, bool value){
|
||||
if(value)SET_BIT(&*BitSet, bitIndex);
|
||||
else CLEAR_BIT(&*BitSet, bitIndex);
|
||||
}
|
||||
|
||||
void ToggleBitHelper(uint *BitSet, uint bitIndex){
|
||||
if(!IS_BIT_SET(*BitSet, bitIndex))SET_BIT(&*BitSet, bitIndex);
|
||||
else CLEAR_BIT(&*BitSet, bitIndex);
|
||||
}
|
||||
|
||||
#define NORMAL_MODE 1
|
||||
#define NORMAL_MODE_JOINED 2
|
||||
#define GHOST_MODE_OBTAINING_HOST 3
|
||||
#define GHOST_MODE_FOUND_HOST 4
|
||||
#define GHOST_MODE_JOINED 5
|
||||
|
||||
//if dpad down is pressed in freemode, minimap does SET_RADAR_ZOOM( 980 ); on a loop for 5 seconds, then puts it back to 0, think it'll restore to 0 though auto..
|
||||
|
||||
int pPlayer,Mode,Episode,empty_slots,Glowing,minimap_tick = 0;
|
||||
bool Glowing_Increment = false;
|
||||
int Rotating360 = 1;
|
||||
Texture radar;
|
||||
int player_blip[MAX_PLAYERS];
|
||||
|
||||
//uint HasRegisteredRespawnBitSet;
|
||||
|
||||
bool Invalid_Player(const int playerid){ //should move to common.h
|
||||
return (GET_HASH_KEY(GET_PLAYER_NAME(playerid)) == 2211124811 || HAS_NETWORK_PLAYER_LEFT_GAME(playerid)); //Invalid
|
||||
}
|
||||
|
||||
void change_player(int modelp){
|
||||
if(IS_MODEL_IN_CDIMAGE(modelp)){
|
||||
REQUEST_MODEL(modelp);
|
||||
float h;
|
||||
GET_CHAR_HEADING(pPlayer,&h);
|
||||
while(!HAS_MODEL_LOADED(modelp)) WAIT(0);
|
||||
CHANGE_PLAYER_MODEL(GET_PLAYER_ID(), modelp);
|
||||
MARK_MODEL_AS_NO_LONGER_NEEDED(modelp);
|
||||
GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer);
|
||||
SET_CHAR_HEADING(pPlayer,h);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void Effects(void)
|
||||
{
|
||||
if(Glowing >= 190) Glowing_Increment = false;
|
||||
if(Glowing <= 0) Glowing_Increment = true;
|
||||
if(Glowing_Increment){
|
||||
if(Glowing > 185) Glowing++;
|
||||
else Glowing += 3;
|
||||
}
|
||||
else{
|
||||
if(Glowing < 10) Glowing--;
|
||||
else Glowing -= 3;
|
||||
}
|
||||
if (Rotating360 >= 360)Rotating360 = 0;
|
||||
else Rotating360 += 5;
|
||||
|
||||
|
||||
if(empty_slots == -2) DRAW_SPRITE(radar,0.37f , 0.620f, 0.0500, 0.0500, Rotating360, Glowing, 100, 100, 200);
|
||||
else {
|
||||
if(Holyghost)MD_Terminate_Script(((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main");
|
||||
DRAW_SPRITE(radar,0.37f , 0.620f, 0.0500, 0.0500, Rotating360, Glowing, 255, Glowing, 255);
|
||||
}
|
||||
|
||||
if(Mode == NORMAL_MODE)
|
||||
{
|
||||
Set_Up_Draw(0.2150f*2,0.3600f*2, Glowing, 255, Glowing, 255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.40, 0.60, "STRING", "Joining Normally");
|
||||
}
|
||||
else
|
||||
{
|
||||
Set_Up_Draw(0.2150f*2,0.3600f*2, 255, Glowing, Glowing, 255,0,0,0);
|
||||
if(!Holyghost)DISPLAY_TEXT_WITH_LITERAL_STRING(0.40, 0.60, "STRING", "Joining As Ghost");
|
||||
else DISPLAY_TEXT_WITH_LITERAL_STRING(0.40, 0.60, "STRING", "Joining As Holy Ghost");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
char* CURRENT_GAME_MODES_SCRIPT_NAME(void)
|
||||
{
|
||||
int GameMode = NETWORK_GET_GAME_MODE();
|
||||
//THIS DOES NOT TAKE INTO ACCOUNT SCRIPT NAME DIFFERENCES FROM 360/PS3 (if there are any)
|
||||
//YET......
|
||||
if(GameMode == GAME_MODE_DEATHMATCH)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_quickdm";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "deathmatch_cr";
|
||||
}
|
||||
//return ( (Episode == 2) ? "e2_deathmatch" : "deathmatch_cr");
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TEAM_DEATHMATCH)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_deathmatch";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "deathmatch_cr";
|
||||
}
|
||||
}
|
||||
else if(GameMode == GAME_MODE_MAFIYA_WORK)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TEAM_MAFIYA_WORK)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TEAM_CAR_JACK_CITY)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_CAR_JACK_CITY)
|
||||
{
|
||||
//carsteal?
|
||||
}
|
||||
else if(GameMode == GAME_MODE_RACE)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_races";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "races_cr";
|
||||
}
|
||||
//return ( (Episode == 2) ? "e2_races" : "races_cr");
|
||||
}
|
||||
else if(GameMode == GAME_MODE_PARTY_MODE)
|
||||
{
|
||||
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_party_mode";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "party_mode";
|
||||
}
|
||||
|
||||
//return ( (Episode == 2) ? "e2_party_mode" : "party_mode");
|
||||
}
|
||||
else if(GameMode == GAME_MODE_COPS_AND_CROOKS)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TURF_WAR)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_DEAL_BREAKER)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_HANGMANS_NOOSE)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_BOMB_DA_BASE_II)
|
||||
{
|
||||
return "coop_bombdbase";
|
||||
}
|
||||
else if(GameMode == GAME_MODE_FREE_MODE){
|
||||
|
||||
if(Episode == 2)return "e2_freemode";
|
||||
else return "freemode_cr";
|
||||
}
|
||||
|
||||
return "Unknown";
|
||||
|
||||
}
|
||||
|
||||
bool CAN_FIND_HOST()
|
||||
{
|
||||
int i;
|
||||
for(i = 0; i < MAX_PLAYERS; i++)
|
||||
{
|
||||
if(GET_HOST_ID() != i || Invalid_Player(i)) continue;
|
||||
//if(Invalid_Player(i)) continue;
|
||||
if(Holyghost && Episode == 2){
|
||||
MD_Terminate_Script(CURRENT_GAME_MODES_SCRIPT_NAME());
|
||||
MD_Terminate_Script(((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//today, should check if gamemode returns int val correctly, if so make a char* GAME_MODES_SCRIPT_NAME(const int Gamemode)
|
||||
void main(){
|
||||
THIS_SCRIPT_IS_SAFE_FOR_NETWORK_GAME();
|
||||
REQUEST_STREAMED_TXD("network", 1);
|
||||
FORCE_LOADING_SCREEN(false);
|
||||
DO_SCREEN_FADE_IN(false);
|
||||
GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer);
|
||||
SET_CHAR_VISIBLE(pPlayer,true);
|
||||
SET_CHAR_COORDINATES_NO_OFFSET(pPlayer, 2635.0f, 416.0f, 79.35f); //yes nathan got theze coords optimised nigga, tower top center for x & y
|
||||
SET_CHAR_HEADING(pPlayer, 90.0f); //facing the city :)
|
||||
SET_CAM_BEHIND_PED(pPlayer);
|
||||
Episode = GET_CURRENT_EPISODE();
|
||||
if(!IS_PLAYER_ONLINE())
|
||||
{
|
||||
Alert("~b~MD: ~s~You need to sign in before playing online.",false);
|
||||
WAIT(3000);
|
||||
SHOW_SIGNIN_UI();
|
||||
WAIT(5000);
|
||||
}
|
||||
bool grabbed_input;
|
||||
do
|
||||
{
|
||||
WAIT(0);
|
||||
empty_slots = empty_player_slots();
|
||||
Set_Up_Draw(0.2750f,0.3600f,255,255,255,255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5, 0.45, "STRING", "~BLIP_77~ ~PAD_DPAD_RIGHT~ + ~PAD_A~ ~COL_NET_3~NORMAL MODE");
|
||||
Set_Up_Draw(0.2750f,0.3600f,255,255,255,255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5, 0.50, "STRING", "~BLIP_77~ ~PAD_DPAD_LEFT~ ~s~+ ~PAD_A~ ~COL_NET_4~GHOST MODE");
|
||||
Set_Up_Draw(0.2750f,0.3600f,255,255,255,255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5, 0.55, "STRING", "~BLIP_77~ ~PAD_DPAD_LEFT~ ~s~+ ~PAD_X~ ~COL_NET_1~HOLY GHOST MODE");
|
||||
bool LEFT_IS_PRESSED = IS_BUTTON_PRESSED(0,BUTTON_DPAD_LEFT);
|
||||
if(IS_BUTTON_JUST_PRESSED(0,BUTTON_A) && (LEFT_IS_PRESSED || IS_BUTTON_PRESSED(0,BUTTON_DPAD_RIGHT)) )
|
||||
{
|
||||
Autoload( ((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main", false);
|
||||
if(LEFT_IS_PRESSED) //ghost mode
|
||||
{
|
||||
Mode = GHOST_MODE_OBTAINING_HOST;
|
||||
WAIT(1250);//(was 1250)
|
||||
if(empty_slots >= (MAX_PLAYERS - 1)) SHUTDOWN_AND_LAUNCH_NETWORK_GAME(Episode);
|
||||
|
||||
}
|
||||
else //normal mode
|
||||
{
|
||||
Holyghost = false;
|
||||
Mode = NORMAL_MODE;
|
||||
|
||||
}
|
||||
//ifdef developer and r1 + x is pressed, mode is normal ghost join just HOLY_GHOST_MODE_JOINING_HOLY
|
||||
grabbed_input = true;
|
||||
//should use int joined mode or something
|
||||
}
|
||||
else if(IS_BUTTON_JUST_PRESSED(0,BUTTON_X) && (LEFT_IS_PRESSED || IS_BUTTON_PRESSED(0,BUTTON_DPAD_RIGHT)) ){
|
||||
Autoload( ((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main", false);
|
||||
if(LEFT_IS_PRESSED) //ghost mode
|
||||
{
|
||||
Mode = GHOST_MODE_OBTAINING_HOST;
|
||||
Holyghost = true;
|
||||
StopStreaming = true;
|
||||
//Stop streaming Code comes here
|
||||
WAIT(1250);//(was 1250)
|
||||
if(empty_slots >= (MAX_PLAYERS - 1)) SHUTDOWN_AND_LAUNCH_NETWORK_GAME(Episode);
|
||||
|
||||
}
|
||||
else //normal mode
|
||||
{
|
||||
Holyghost = false;
|
||||
Mode = NORMAL_MODE;
|
||||
}
|
||||
//ifdef developer and r1 + x is pressed, mode is normal ghost join just HOLY_GHOST_MODE_JOINING_HOLY
|
||||
grabbed_input = true;
|
||||
//should use int joined mode or something
|
||||
}
|
||||
}
|
||||
while(!grabbed_input);
|
||||
|
||||
radar = GET_TEXTURE_FROM_STREAMED_TXD("network", "ICON_W_TOTALTIME");
|
||||
//will have loaded by now..
|
||||
|
||||
while(true)
|
||||
{
|
||||
WAIT(0);
|
||||
|
||||
empty_slots = empty_player_slots(); //if needed idk
|
||||
|
||||
//iHost = GET_HOST_ID();
|
||||
GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer); //better than get player ped its poopy old.. literally this but only this is faster..
|
||||
switch(Mode)
|
||||
{
|
||||
case GHOST_MODE_OBTAINING_HOST:
|
||||
{
|
||||
if(empty_slots >= 0 && CAN_FIND_HOST()) //found
|
||||
{
|
||||
Mode = GHOST_MODE_FOUND_HOST;
|
||||
}
|
||||
else
|
||||
{
|
||||
Effects();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case GHOST_MODE_FOUND_HOST:
|
||||
{
|
||||
MD_Terminate_Script(CURRENT_GAME_MODES_SCRIPT_NAME());
|
||||
MD_Terminate_Script(((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main");
|
||||
|
||||
RELEASE_TEXTURE(radar);
|
||||
Mode = GHOST_MODE_JOINED;
|
||||
int GameMode = NETWORK_GET_GAME_MODE();
|
||||
USE_PLAYER_COLOUR_INSTEAD_OF_TEAM_COLOUR( (GameMode == GAME_MODE_FREE_MODE) );
|
||||
SWITCH_ARROW_ABOVE_BLIPPED_PICKUPS( (GameMode == GAME_MODE_FREE_MODE) || (GameMode == GAME_MODE_DEATHMATCH) || (GameMode == GAME_MODE_PARTY_MODE) );
|
||||
SET_SYNC_WEATHER_AND_GAME_TIME(true); //for now itz fine
|
||||
DISPLAY_FRONTEND_MAP_BLIPS(true); //pretty much all gamemodez i tinkle? //not doing anything :S
|
||||
if(StopStreaming)
|
||||
{
|
||||
//ALLOW_GAME_TO_PAUSE_FOR_STREAMING(true);
|
||||
//SWITCH_STREAMING(false);
|
||||
SwitchStreaming_Message = true;
|
||||
}
|
||||
|
||||
if(!Holyghost)
|
||||
{
|
||||
change_player(GET_PLAYERSETTINGS_MODEL_CHOICE());
|
||||
SET_PLAYERSETTINGS_MODEL_VARIATIONS_CHOICE(GET_PLAYER_ID());
|
||||
}
|
||||
|
||||
SET_PLAYER_CONTROL(GET_PLAYER_ID(),true);
|
||||
//ALLOW_LOCKON_TO_FRIENDLY_PLAYERS(iPlayer,true);
|
||||
//NETWORK_SET_FRIENDLY_FIRE_OPTION(true);
|
||||
SET_CHAR_HEALTH(pPlayer,500); //probably not needed
|
||||
GIVE_WEAPON_TO_CHAR(pPlayer,WEAPON_UNARMED,AMMO_MAX,false); //i THINK its needed, unsure, best to have weapon tho..
|
||||
ADD_TO_PREVIOUS_BRIEF("Chillout on GTA IV, only this time normal players don't know who you are!");
|
||||
ALLOW_LOCKON_TO_FRIENDLY_PLAYERS(GET_PLAYER_ID(),true);
|
||||
NETWORK_SET_FRIENDLY_FIRE_OPTION(true);
|
||||
}
|
||||
break;
|
||||
case GHOST_MODE_JOINED:
|
||||
{
|
||||
int i;
|
||||
for(i = 0; i < MAX_PLAYERS; i++)
|
||||
{
|
||||
if(DOES_BLIP_EXIST(player_blip[i]) && Invalid_Player(i))
|
||||
{
|
||||
REMOVE_BLIP(player_blip[i]);
|
||||
continue;
|
||||
}
|
||||
//else blah.. (i guess, we checking skip invalid and does blip exist twice..)
|
||||
if(Invalid_Player(i) || DOES_BLIP_EXIST(player_blip[i]) || !PLAYER_HAS_CHAR(i)) continue;
|
||||
ADD_BLIP_FOR_CHAR(PLAYER_CHAR(i),&player_blip[i]);
|
||||
CHANGE_BLIP_COLOUR(player_blip[i],GET_PLAYER_COLOUR(i));
|
||||
CHANGE_BLIP_PRIORITY(player_blip[i],3);
|
||||
CHANGE_BLIP_NAME_FROM_ASCII(player_blip[i],GET_PLAYER_NAME(i));
|
||||
CHANGE_BLIP_DISPLAY(player_blip[i], ( (i == GET_PLAYER_ID()) ? 0 : 2) );
|
||||
}
|
||||
|
||||
|
||||
if(IS_BUTTON_JUST_PRESSED(0,DPAD_DOWN)) //Minimap zoom (just like freemode does it) works flawless //flashes when scrolling and menu open (doesnt normally so)
|
||||
{
|
||||
//BUILT IN CRASH HOPEFULLY IF MENU STARTUP NOT FOUND!
|
||||
if(GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT("menu_startup") < 1)
|
||||
{
|
||||
if(minimap_tick > GetTickCount())
|
||||
{
|
||||
minimap_tick = (GetTickCount() - 5000);
|
||||
}
|
||||
else
|
||||
{
|
||||
minimap_tick = (GetTickCount() + 5000);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(minimap_tick > GetTickCount())
|
||||
{
|
||||
SET_RADAR_ZOOM(980);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(minimap_tick != 0)
|
||||
{
|
||||
SET_RADAR_ZOOM(0); //no need to loop this me don't think
|
||||
minimap_tick = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(IS_THIS_MACHINE_THE_SERVER()) //something seems to bust me outta ghost here..
|
||||
{
|
||||
Alert("~b~MD: ~s~You are now host, ghost is now useless, changing to normal mode.",true);
|
||||
|
||||
Mode = NORMAL_MODE_JOINED;
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NORMAL_MODE:
|
||||
{
|
||||
Effects();
|
||||
if(CAN_FIND_HOST()) Mode = NORMAL_MODE_JOINED;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,429 @@
|
||||
/**
|
||||
* @ MAJOR DISTRIBUTION EXTEND
|
||||
* @ Version MDv13 TRIDENT
|
||||
* @ MADE BY - DEVILSDESIGN & IIV_NATHAN_VII & SHOCKixiXixiWAVE
|
||||
*/
|
||||
|
||||
//NOT DESIGNED FOR PC!!!!!
|
||||
//int GET_PLAYER_ID_FOR_THIS_PED(Ped ped);
|
||||
|
||||
#include "inc/natives.h"
|
||||
#include "MD_Compile_Settings.c"
|
||||
#include "MD_Base_Setup/MDB_Strings.h"
|
||||
#include "inc/common.h"
|
||||
#include "inc/consts.h"
|
||||
//#include "MD_Base_Setup/MDB_Supernet_Vars.h" //I'll declare my own here
|
||||
//#include "MD_Security/MDS_Security.h" //we are releasing ghost for free right?
|
||||
//#include "MD_Security/MDS_User_Verification.h" //meh?
|
||||
bool Holyghost = false;
|
||||
bool StopStreaming = false;
|
||||
SwitchStreaming_Message = false;
|
||||
SwitchStreaming_Toggle = false;
|
||||
bool Streaming;
|
||||
#define MDVersion_Txt_Size 0.19f,0.35f
|
||||
#define GetBit(BitSet, bitIndex) IS_BIT_SET(BitSet, bitIndex)
|
||||
|
||||
#define SetBit(BitSet, bitIndex, bitValue) SetBitHelper(&BitSet, bitIndex, bitValue)
|
||||
|
||||
#define ToggleBit(BitSet, bitIndex) ToggleBitHelper(&BitSet, bitIndex)
|
||||
|
||||
void SetBitHelper(uint *BitSet, uint bitIndex, bool value){
|
||||
if(value)SET_BIT(&*BitSet, bitIndex);
|
||||
else CLEAR_BIT(&*BitSet, bitIndex);
|
||||
}
|
||||
|
||||
void ToggleBitHelper(uint *BitSet, uint bitIndex){
|
||||
if(!IS_BIT_SET(*BitSet, bitIndex))SET_BIT(&*BitSet, bitIndex);
|
||||
else CLEAR_BIT(&*BitSet, bitIndex);
|
||||
}
|
||||
|
||||
#define NORMAL_MODE 1
|
||||
#define NORMAL_MODE_JOINED 2
|
||||
#define GHOST_MODE_OBTAINING_HOST 3
|
||||
#define GHOST_MODE_FOUND_HOST 4
|
||||
#define GHOST_MODE_JOINED 5
|
||||
|
||||
//if dpad down is pressed in freemode, minimap does SET_RADAR_ZOOM( 980 ); on a loop for 5 seconds, then puts it back to 0, think it'll restore to 0 though auto..
|
||||
|
||||
int pPlayer,Mode,Episode,empty_slots,Glowing,minimap_tick = 0;
|
||||
bool Glowing_Increment = false;
|
||||
int Rotating360 = 1;
|
||||
Texture radar;
|
||||
int player_blip[MAX_PLAYERS];
|
||||
|
||||
//uint HasRegisteredRespawnBitSet;
|
||||
|
||||
bool Invalid_Player(const int playerid){ //should move to common.h
|
||||
return (GET_HASH_KEY(GET_PLAYER_NAME(playerid)) == 2211124811 || HAS_NETWORK_PLAYER_LEFT_GAME(playerid)); //Invalid
|
||||
}
|
||||
|
||||
void change_player(int modelp){
|
||||
if(IS_MODEL_IN_CDIMAGE(modelp)){
|
||||
REQUEST_MODEL(modelp);
|
||||
float h;
|
||||
GET_CHAR_HEADING(pPlayer,&h);
|
||||
while(!HAS_MODEL_LOADED(modelp)) WAIT(0);
|
||||
CHANGE_PLAYER_MODEL(GET_PLAYER_ID(), modelp);
|
||||
MARK_MODEL_AS_NO_LONGER_NEEDED(modelp);
|
||||
GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer);
|
||||
SET_CHAR_HEADING(pPlayer,h);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void Effects(void)
|
||||
{
|
||||
if(Glowing >= 190) Glowing_Increment = false;
|
||||
if(Glowing <= 0) Glowing_Increment = true;
|
||||
if(Glowing_Increment){
|
||||
if(Glowing > 185) Glowing++;
|
||||
else Glowing += 3;
|
||||
}
|
||||
else{
|
||||
if(Glowing < 10) Glowing--;
|
||||
else Glowing -= 3;
|
||||
}
|
||||
if (Rotating360 >= 360)Rotating360 = 0;
|
||||
else Rotating360 += 5;
|
||||
|
||||
|
||||
if(empty_slots == -2) DRAW_SPRITE(radar,0.37f , 0.620f, 0.0500, 0.0500, Rotating360, Glowing, 100, 100, 200);
|
||||
else {
|
||||
if(Holyghost)MD_Terminate_Script(((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main");
|
||||
DRAW_SPRITE(radar,0.37f , 0.620f, 0.0500, 0.0500, Rotating360, Glowing, 255, Glowing, 255);
|
||||
}
|
||||
|
||||
if(Mode == NORMAL_MODE)
|
||||
{
|
||||
Set_Up_Draw(0.2150f*2,0.3600f*2, Glowing, 255, Glowing, 255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.40, 0.60, "STRING", "Joining Normally");
|
||||
}
|
||||
else
|
||||
{
|
||||
Set_Up_Draw(0.2150f*2,0.3600f*2, 255, Glowing, Glowing, 255,0,0,0);
|
||||
if(!Holyghost)DISPLAY_TEXT_WITH_LITERAL_STRING(0.40, 0.60, "STRING", "Joining As Ghost");
|
||||
else DISPLAY_TEXT_WITH_LITERAL_STRING(0.40, 0.60, "STRING", "Joining As Holy Ghost");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
char* CURRENT_GAME_MODES_SCRIPT_NAME(void)
|
||||
{
|
||||
int GameMode = NETWORK_GET_GAME_MODE();
|
||||
//THIS DOES NOT TAKE INTO ACCOUNT SCRIPT NAME DIFFERENCES FROM 360/PS3 (if there are any)
|
||||
//YET......
|
||||
if(GameMode == GAME_MODE_DEATHMATCH)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_quickdm";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "deathmatch_cr";
|
||||
}
|
||||
//return ( (Episode == 2) ? "e2_deathmatch" : "deathmatch_cr");
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TEAM_DEATHMATCH)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_deathmatch";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "deathmatch_cr";
|
||||
}
|
||||
}
|
||||
else if(GameMode == GAME_MODE_MAFIYA_WORK)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TEAM_MAFIYA_WORK)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TEAM_CAR_JACK_CITY)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_CAR_JACK_CITY)
|
||||
{
|
||||
//carsteal?
|
||||
}
|
||||
else if(GameMode == GAME_MODE_RACE)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_races";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "races_cr";
|
||||
}
|
||||
//return ( (Episode == 2) ? "e2_races" : "races_cr");
|
||||
}
|
||||
else if(GameMode == GAME_MODE_PARTY_MODE)
|
||||
{
|
||||
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_party_mode";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "party_mode";
|
||||
}
|
||||
|
||||
//return ( (Episode == 2) ? "e2_party_mode" : "party_mode");
|
||||
}
|
||||
else if(GameMode == GAME_MODE_COPS_AND_CROOKS)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TURF_WAR)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_DEAL_BREAKER)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_HANGMANS_NOOSE)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_BOMB_DA_BASE_II)
|
||||
{
|
||||
return "coop_bombdbase";
|
||||
}
|
||||
else if(GameMode == GAME_MODE_FREE_MODE){
|
||||
|
||||
if(Episode == 2)return "e2_freemode";
|
||||
else return "freemode_cr";
|
||||
}
|
||||
|
||||
return "Unknown";
|
||||
|
||||
}
|
||||
|
||||
bool CAN_FIND_HOST()
|
||||
{
|
||||
int i;
|
||||
for(i = 0; i < MAX_PLAYERS; i++)
|
||||
{
|
||||
if(GET_HOST_ID() != i || Invalid_Player(i)) continue;
|
||||
//if(Invalid_Player(i)) continue;
|
||||
if(Holyghost && Episode == 2){
|
||||
MD_Terminate_Script(CURRENT_GAME_MODES_SCRIPT_NAME());
|
||||
MD_Terminate_Script(((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//today, should check if gamemode returns int val correctly, if so make a char* GAME_MODES_SCRIPT_NAME(const int Gamemode)
|
||||
void main(){
|
||||
THIS_SCRIPT_IS_SAFE_FOR_NETWORK_GAME();
|
||||
REQUEST_STREAMED_TXD("network", 1);
|
||||
FORCE_LOADING_SCREEN(false);
|
||||
DO_SCREEN_FADE_IN(false);
|
||||
GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer);
|
||||
SET_CHAR_VISIBLE(pPlayer,true);
|
||||
SET_CHAR_COORDINATES_NO_OFFSET(pPlayer, 2635.0f, 416.0f, 79.35f); //yes nathan got theze coords optimised nigga, tower top center for x & y
|
||||
SET_CHAR_HEADING(pPlayer, 90.0f); //facing the city :)
|
||||
SET_CAM_BEHIND_PED(pPlayer);
|
||||
Episode = GET_CURRENT_EPISODE();
|
||||
if(!IS_PLAYER_ONLINE())
|
||||
{
|
||||
Alert("~COL_NET_4~MD: ~s~You need to sign in before playing online.",false);
|
||||
WAIT(3000);
|
||||
SHOW_SIGNIN_UI();
|
||||
WAIT(5000);
|
||||
}
|
||||
bool grabbed_input;
|
||||
do
|
||||
{
|
||||
WAIT(0);
|
||||
empty_slots = empty_player_slots();
|
||||
Set_Up_Draw(0.2750f,0.3600f,255,255,255,255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5, 0.45, "STRING", "~BLIP_77~ ~PAD_DPAD_RIGHT~ + ~PAD_A~ ~COL_NET_3~NORMAL MODE");
|
||||
Set_Up_Draw(0.2750f,0.3600f,255,255,255,255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5, 0.50, "STRING", "~BLIP_77~ ~PAD_DPAD_LEFT~ ~s~+ ~PAD_A~ ~COL_NET_4~GHOST MODE");
|
||||
Set_Up_Draw(0.2750f,0.3600f,255,255,255,255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5, 0.55, "STRING", "~BLIP_77~ ~PAD_DPAD_LEFT~ ~s~+ ~PAD_X~ ~COL_NET_1~HOLY GHOST MODE");
|
||||
bool LEFT_IS_PRESSED = IS_BUTTON_PRESSED(0,BUTTON_DPAD_LEFT);
|
||||
if(IS_BUTTON_JUST_PRESSED(0,BUTTON_A) && (LEFT_IS_PRESSED || IS_BUTTON_PRESSED(0,BUTTON_DPAD_RIGHT)) )
|
||||
{
|
||||
Autoload( ((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main", false);
|
||||
if(LEFT_IS_PRESSED) //ghost mode
|
||||
{
|
||||
Mode = GHOST_MODE_OBTAINING_HOST;
|
||||
WAIT(1250);//(was 1250)
|
||||
if(empty_slots >= (MAX_PLAYERS - 1)) SHUTDOWN_AND_LAUNCH_NETWORK_GAME(Episode);
|
||||
|
||||
}
|
||||
else //normal mode
|
||||
{
|
||||
Holyghost = false;
|
||||
Mode = NORMAL_MODE;
|
||||
|
||||
}
|
||||
//ifdef developer and r1 + x is pressed, mode is normal ghost join just HOLY_GHOST_MODE_JOINING_HOLY
|
||||
grabbed_input = true;
|
||||
//should use int joined mode or something
|
||||
}
|
||||
else if(IS_BUTTON_JUST_PRESSED(0,BUTTON_X) && (LEFT_IS_PRESSED || IS_BUTTON_PRESSED(0,BUTTON_DPAD_RIGHT)) ){
|
||||
Autoload( ((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main", false);
|
||||
if(LEFT_IS_PRESSED) //ghost mode
|
||||
{
|
||||
Mode = GHOST_MODE_OBTAINING_HOST;
|
||||
Holyghost = true;
|
||||
StopStreaming = true;
|
||||
//Stop streaming Code comes here
|
||||
WAIT(1250);//(was 1250)
|
||||
if(empty_slots >= (MAX_PLAYERS - 1)) SHUTDOWN_AND_LAUNCH_NETWORK_GAME(Episode);
|
||||
|
||||
}
|
||||
else //normal mode
|
||||
{
|
||||
Holyghost = false;
|
||||
Mode = NORMAL_MODE;
|
||||
}
|
||||
//ifdef developer and r1 + x is pressed, mode is normal ghost join just HOLY_GHOST_MODE_JOINING_HOLY
|
||||
grabbed_input = true;
|
||||
//should use int joined mode or something
|
||||
}
|
||||
}
|
||||
while(!grabbed_input);
|
||||
|
||||
radar = GET_TEXTURE_FROM_STREAMED_TXD("network", "ICON_W_TOTALTIME");
|
||||
//will have loaded by now..
|
||||
|
||||
while(true)
|
||||
{
|
||||
WAIT(0);
|
||||
|
||||
empty_slots = empty_player_slots(); //if needed idk
|
||||
|
||||
//iHost = GET_HOST_ID();
|
||||
GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer); //better than get player ped its poopy old.. literally this but only this is faster..
|
||||
switch(Mode)
|
||||
{
|
||||
case GHOST_MODE_OBTAINING_HOST:
|
||||
{
|
||||
if(empty_slots >= 0 && CAN_FIND_HOST()) //found
|
||||
{
|
||||
Mode = GHOST_MODE_FOUND_HOST;
|
||||
}
|
||||
else
|
||||
{
|
||||
Effects();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case GHOST_MODE_FOUND_HOST:
|
||||
{
|
||||
MD_Terminate_Script(CURRENT_GAME_MODES_SCRIPT_NAME());
|
||||
MD_Terminate_Script(((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main");
|
||||
|
||||
RELEASE_TEXTURE(radar);
|
||||
Mode = GHOST_MODE_JOINED;
|
||||
int GameMode = NETWORK_GET_GAME_MODE();
|
||||
USE_PLAYER_COLOUR_INSTEAD_OF_TEAM_COLOUR( (GameMode == GAME_MODE_FREE_MODE) );
|
||||
SWITCH_ARROW_ABOVE_BLIPPED_PICKUPS( (GameMode == GAME_MODE_FREE_MODE) || (GameMode == GAME_MODE_DEATHMATCH) || (GameMode == GAME_MODE_PARTY_MODE) );
|
||||
SET_SYNC_WEATHER_AND_GAME_TIME(true); //for now itz fine
|
||||
DISPLAY_FRONTEND_MAP_BLIPS(true); //pretty much all gamemodez i tinkle? //not doing anything :S
|
||||
if(StopStreaming)
|
||||
{
|
||||
//ALLOW_GAME_TO_PAUSE_FOR_STREAMING(true);
|
||||
//SWITCH_STREAMING(false);
|
||||
SwitchStreaming_Message = true;
|
||||
}
|
||||
|
||||
if(!Holyghost)
|
||||
{
|
||||
change_player(GET_PLAYERSETTINGS_MODEL_CHOICE());
|
||||
SET_PLAYERSETTINGS_MODEL_VARIATIONS_CHOICE(GET_PLAYER_ID());
|
||||
}
|
||||
|
||||
SET_PLAYER_CONTROL(GET_PLAYER_ID(),true);
|
||||
//ALLOW_LOCKON_TO_FRIENDLY_PLAYERS(iPlayer,true);
|
||||
//NETWORK_SET_FRIENDLY_FIRE_OPTION(true);
|
||||
SET_CHAR_HEALTH(pPlayer,500); //probably not needed
|
||||
GIVE_WEAPON_TO_CHAR(pPlayer,WEAPON_UNARMED,AMMO_MAX,false); //i THINK its needed, unsure, best to have weapon tho..
|
||||
ADD_TO_PREVIOUS_BRIEF("Chillout on GTA IV, only this time normal players don't know who you are!");
|
||||
ALLOW_LOCKON_TO_FRIENDLY_PLAYERS(GET_PLAYER_ID(),true);
|
||||
NETWORK_SET_FRIENDLY_FIRE_OPTION(true);
|
||||
}
|
||||
break;
|
||||
case GHOST_MODE_JOINED:
|
||||
{
|
||||
int i;
|
||||
for(i = 0; i < MAX_PLAYERS; i++)
|
||||
{
|
||||
if(DOES_BLIP_EXIST(player_blip[i]) && Invalid_Player(i))
|
||||
{
|
||||
REMOVE_BLIP(player_blip[i]);
|
||||
continue;
|
||||
}
|
||||
//else blah.. (i guess, we checking skip invalid and does blip exist twice..)
|
||||
if(Invalid_Player(i) || DOES_BLIP_EXIST(player_blip[i]) || !PLAYER_HAS_CHAR(i)) continue;
|
||||
ADD_BLIP_FOR_CHAR(PLAYER_CHAR(i),&player_blip[i]);
|
||||
CHANGE_BLIP_COLOUR(player_blip[i],GET_PLAYER_COLOUR(i));
|
||||
CHANGE_BLIP_PRIORITY(player_blip[i],3);
|
||||
CHANGE_BLIP_NAME_FROM_ASCII(player_blip[i],GET_PLAYER_NAME(i));
|
||||
CHANGE_BLIP_DISPLAY(player_blip[i], ( (i == GET_PLAYER_ID()) ? 0 : 2) );
|
||||
}
|
||||
|
||||
|
||||
if(IS_BUTTON_JUST_PRESSED(0,DPAD_DOWN)) //Minimap zoom (just like freemode does it) works flawless //flashes when scrolling and menu open (doesnt normally so)
|
||||
{
|
||||
//BUILT IN CRASH HOPEFULLY IF MENU STARTUP NOT FOUND!
|
||||
if(GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT("menu_startup") < 1)
|
||||
{
|
||||
if(minimap_tick > GetTickCount())
|
||||
{
|
||||
minimap_tick = (GetTickCount() - 5000);
|
||||
}
|
||||
else
|
||||
{
|
||||
minimap_tick = (GetTickCount() + 5000);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(minimap_tick > GetTickCount())
|
||||
{
|
||||
SET_RADAR_ZOOM(980);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(minimap_tick != 0)
|
||||
{
|
||||
SET_RADAR_ZOOM(0); //no need to loop this me don't think
|
||||
minimap_tick = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(IS_THIS_MACHINE_THE_SERVER()) //something seems to bust me outta ghost here..
|
||||
{
|
||||
Alert("~COL_NET_4~MD: ~s~You are now host, ghost is now useless, changing to normal mode.",true);
|
||||
|
||||
Mode = NORMAL_MODE_JOINED;
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NORMAL_MODE:
|
||||
{
|
||||
Effects();
|
||||
if(CAN_FIND_HOST()) Mode = NORMAL_MODE_JOINED;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
460
Trident/SuperiorNetworkOld/MD_Superior_Network_working.c
Normal file
460
Trident/SuperiorNetworkOld/MD_Superior_Network_working.c
Normal file
@@ -0,0 +1,460 @@
|
||||
/**
|
||||
* @ MAJOR DISTRIBUTION EXTEND
|
||||
* @ Version MDv13 TRIDENT
|
||||
* @ MADE BY - DEVILSDESIGN & IIV_NATHAN_VII & SHOCKixiXixiWAVE
|
||||
*/
|
||||
|
||||
//NOT DESIGNED FOR PC!!!!!
|
||||
//int GET_PLAYER_ID_FOR_THIS_PED(Ped ped);
|
||||
|
||||
#include <natives.h>
|
||||
#include "MD_Compile_Settings.c"
|
||||
#include "MD_Base_Setup/MDB_Strings.h"
|
||||
#include <common.h>
|
||||
#include <consts.h>
|
||||
//#include "MD_Base_Setup/MDB_Supernet_Vars.h" //I'll declare my own here
|
||||
//#include "MD_Security/MDS_Security.h" //we are releasing ghost for free right?
|
||||
//#include "MD_Security/MDS_User_Verification.h" //meh?
|
||||
bool Holyghost = false;
|
||||
bool StopStreaming = false;
|
||||
SwitchStreaming_Message = false;
|
||||
SwitchStreaming_Toggle = false;
|
||||
bool Streaming;
|
||||
#define MDVersion_Txt_Size 0.19f,0.35f
|
||||
#define GetBit(BitSet, bitIndex) IS_BIT_SET(BitSet, bitIndex)
|
||||
|
||||
#define SetBit(BitSet, bitIndex, bitValue) SetBitHelper(&BitSet, bitIndex, bitValue)
|
||||
|
||||
#define ToggleBit(BitSet, bitIndex) ToggleBitHelper(&BitSet, bitIndex)
|
||||
|
||||
void SetBitHelper(uint *BitSet, uint bitIndex, bool value){
|
||||
if(value)SET_BIT(&*BitSet, bitIndex);
|
||||
else CLEAR_BIT(&*BitSet, bitIndex);
|
||||
}
|
||||
|
||||
void ToggleBitHelper(uint *BitSet, uint bitIndex){
|
||||
if(!IS_BIT_SET(*BitSet, bitIndex))SET_BIT(&*BitSet, bitIndex);
|
||||
else CLEAR_BIT(&*BitSet, bitIndex);
|
||||
}
|
||||
|
||||
#define NORMAL_MODE 1
|
||||
#define NORMAL_MODE_JOINED 2
|
||||
#define GHOST_MODE_OBTAINING_HOST 3
|
||||
#define GHOST_MODE_FOUND_HOST 4
|
||||
#define GHOST_MODE_JOINED 5
|
||||
|
||||
//if dpad down is pressed in freemode, minimap does SET_RADAR_ZOOM( 980 ); on a loop for 5 seconds, then puts it back to 0, think it'll restore to 0 though auto..
|
||||
|
||||
int pPlayer,Mode,Episode,empty_slots,Glowing,minimap_tick = 0;
|
||||
bool Glowing_Increment = false;
|
||||
int Rotating360 = 1;
|
||||
Texture radar;
|
||||
int player_blip[MAX_PLAYERS];
|
||||
|
||||
//uint HasRegisteredRespawnBitSet;
|
||||
|
||||
bool Invalid_Player(const int playerid){ //should move to common.h
|
||||
return (GET_HASH_KEY(GET_PLAYER_NAME(playerid)) == 2211124811 || HAS_NETWORK_PLAYER_LEFT_GAME(playerid)); //Invalid
|
||||
}
|
||||
|
||||
void change_player(int modelp){
|
||||
if(IS_MODEL_IN_CDIMAGE(modelp)){
|
||||
REQUEST_MODEL(modelp);
|
||||
float h;
|
||||
GET_CHAR_HEADING(pPlayer,&h);
|
||||
while(!HAS_MODEL_LOADED(modelp)) WAIT(0);
|
||||
CHANGE_PLAYER_MODEL(GET_PLAYER_ID(), modelp);
|
||||
MARK_MODEL_AS_NO_LONGER_NEEDED(modelp);
|
||||
GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer);
|
||||
SET_CHAR_HEADING(pPlayer,h);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void Effects(void)
|
||||
{
|
||||
if(Glowing >= 190) Glowing_Increment = false;
|
||||
if(Glowing <= 0) Glowing_Increment = true;
|
||||
if(Glowing_Increment){
|
||||
if(Glowing > 185) Glowing++;
|
||||
else Glowing += 3;
|
||||
}
|
||||
else{
|
||||
if(Glowing < 10) Glowing--;
|
||||
else Glowing -= 3;
|
||||
}
|
||||
if (Rotating360 >= 360)Rotating360 = 0;
|
||||
else Rotating360 += 5;
|
||||
|
||||
|
||||
if(empty_slots == -2) DRAW_SPRITE(radar,0.37f , 0.620f, 0.0500, 0.0500, Rotating360, Glowing, 100, 100, 200);
|
||||
else {
|
||||
if(Holyghost)MD_Terminate_Script(((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main");
|
||||
DRAW_SPRITE(radar,0.37f , 0.620f, 0.0500, 0.0500, Rotating360, Glowing, 255, Glowing, 255);
|
||||
}
|
||||
|
||||
if(Mode == NORMAL_MODE)
|
||||
{
|
||||
Set_Up_Draw(0.2150f*2,0.3600f*2, Glowing, 255, Glowing, 255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.40, 0.60, "STRING", "Joining Normally");
|
||||
}
|
||||
else
|
||||
{
|
||||
Set_Up_Draw(0.2150f*2,0.3600f*2, 255, Glowing, Glowing, 255,0,0,0);
|
||||
if(!Holyghost)DISPLAY_TEXT_WITH_LITERAL_STRING(0.40, 0.60, "STRING", "Joining As Ghost");
|
||||
else DISPLAY_TEXT_WITH_LITERAL_STRING(0.40, 0.60, "STRING", "Joining As Holy Ghost");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
char* CURRENT_GAME_MODES_SCRIPT_NAME(void)
|
||||
{
|
||||
int GameMode = NETWORK_GET_GAME_MODE();
|
||||
//THIS DOES NOT TAKE INTO ACCOUNT SCRIPT NAME DIFFERENCES FROM 360/PS3 (if there are any)
|
||||
//YET......
|
||||
if(GameMode == GAME_MODE_DEATHMATCH)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_quickdm";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "deathmatch_cr";
|
||||
}
|
||||
//return ( (Episode == 2) ? "e2_deathmatch" : "deathmatch_cr");
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TEAM_DEATHMATCH)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_deathmatch";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "deathmatch_cr";
|
||||
}
|
||||
}
|
||||
else if(GameMode == GAME_MODE_MAFIYA_WORK)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TEAM_MAFIYA_WORK)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TEAM_CAR_JACK_CITY)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_CAR_JACK_CITY)
|
||||
{
|
||||
//carsteal?
|
||||
}
|
||||
else if(GameMode == GAME_MODE_RACE)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_races";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "races_cr";
|
||||
}
|
||||
//return ( (Episode == 2) ? "e2_races" : "races_cr");
|
||||
}
|
||||
else if(GameMode == GAME_MODE_PARTY_MODE)
|
||||
{
|
||||
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_party_mode";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "party_mode";
|
||||
}
|
||||
|
||||
//return ( (Episode == 2) ? "e2_party_mode" : "party_mode");
|
||||
}
|
||||
else if(GameMode == GAME_MODE_COPS_AND_CROOKS)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TURF_WAR)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_DEAL_BREAKER)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_HANGMANS_NOOSE)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_BOMB_DA_BASE_II)
|
||||
{
|
||||
return "coop_bombdbase";
|
||||
}
|
||||
else if(GameMode == GAME_MODE_FREE_MODE){
|
||||
|
||||
if(Episode == 2)return "e2_freemode";
|
||||
else return "freemode_cr";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
bool CAN_FIND_HOST()
|
||||
{
|
||||
int i;
|
||||
for(i = 0; i < MAX_PLAYERS; i++)
|
||||
{
|
||||
if(GET_HOST_ID() != i || Invalid_Player(i)) continue;
|
||||
//if(Invalid_Player(i)) continue;
|
||||
if(Holyghost && Episode == 2){
|
||||
MD_Terminate_Script(CURRENT_GAME_MODES_SCRIPT_NAME());
|
||||
MD_Terminate_Script(((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//today, should check if gamemode returns int val correctly, if so make a char* GAME_MODES_SCRIPT_NAME(const int Gamemode)
|
||||
void main(){
|
||||
THIS_SCRIPT_IS_SAFE_FOR_NETWORK_GAME();
|
||||
REQUEST_STREAMED_TXD("network", 1);
|
||||
FORCE_LOADING_SCREEN(false);
|
||||
DO_SCREEN_FADE_IN(false);
|
||||
GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer);
|
||||
SET_CHAR_VISIBLE(pPlayer,true);
|
||||
SET_CHAR_COORDINATES_NO_OFFSET(pPlayer, 2635.0f, 416.0f, 79.35f); //yes nathan got theze coords optimised nigga, tower top center for x & y
|
||||
SET_CHAR_HEADING(pPlayer, 90.0f); //facing the city :)
|
||||
SET_CAM_BEHIND_PED(pPlayer);
|
||||
Episode = GET_CURRENT_EPISODE();
|
||||
if(!IS_PLAYER_ONLINE())
|
||||
{
|
||||
Alert("~b~MD: ~s~You need to sign in before playing online.",false);
|
||||
WAIT(3000);
|
||||
SHOW_SIGNIN_UI();
|
||||
WAIT(5000);
|
||||
}
|
||||
bool grabbed_input;
|
||||
do
|
||||
{
|
||||
WAIT(0);
|
||||
empty_slots = empty_player_slots();
|
||||
Set_Up_Draw(0.2750f,0.3600f,255,255,255,255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5, 0.45, "STRING", "~BLIP_77~ ~PAD_DPAD_RIGHT~ + ~PAD_A~ ~COL_NET_3~NORMAL MODE");
|
||||
Set_Up_Draw(0.2750f,0.3600f,255,255,255,255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5, 0.50, "STRING", "~BLIP_77~ ~PAD_DPAD_LEFT~ ~s~+ ~PAD_A~ ~COL_NET_4~GHOST MODE");
|
||||
Set_Up_Draw(0.2750f,0.3600f,255,255,255,255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5, 0.55, "STRING", "~BLIP_77~ ~PAD_DPAD_LEFT~ ~s~+ ~PAD_X~ ~COL_NET_1~HOLY GHOST MODE");
|
||||
bool LEFT_IS_PRESSED = IS_BUTTON_PRESSED(0,BUTTON_DPAD_LEFT);
|
||||
if(IS_BUTTON_JUST_PRESSED(0,BUTTON_A) && (LEFT_IS_PRESSED || IS_BUTTON_PRESSED(0,BUTTON_DPAD_RIGHT)) )
|
||||
{
|
||||
Autoload( ((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main", false);
|
||||
if(LEFT_IS_PRESSED) //ghost mode
|
||||
{
|
||||
Mode = GHOST_MODE_OBTAINING_HOST;
|
||||
WAIT(1250);//(was 1250)
|
||||
if(empty_slots >= (MAX_PLAYERS - 1)) SHUTDOWN_AND_LAUNCH_NETWORK_GAME(Episode);
|
||||
|
||||
}
|
||||
else //normal mode
|
||||
{
|
||||
Holyghost = false;
|
||||
Mode = NORMAL_MODE;
|
||||
|
||||
}
|
||||
//ifdef developer and r1 + x is pressed, mode is normal ghost join just HOLY_GHOST_MODE_JOINING_HOLY
|
||||
grabbed_input = true;
|
||||
//should use int joined mode or something
|
||||
}
|
||||
else if(IS_BUTTON_JUST_PRESSED(0,BUTTON_X) && (LEFT_IS_PRESSED || IS_BUTTON_PRESSED(0,BUTTON_DPAD_RIGHT)) ){
|
||||
Autoload( ((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main", false);
|
||||
if(LEFT_IS_PRESSED) //ghost mode
|
||||
{
|
||||
Mode = GHOST_MODE_OBTAINING_HOST;
|
||||
Holyghost = true;
|
||||
StopStreaming = true;
|
||||
//Stop streaming Code comes here
|
||||
WAIT(1250);//(was 1250)
|
||||
if(empty_slots >= (MAX_PLAYERS - 1)) SHUTDOWN_AND_LAUNCH_NETWORK_GAME(Episode);
|
||||
|
||||
}
|
||||
else //normal mode
|
||||
{
|
||||
Holyghost = false;
|
||||
Mode = NORMAL_MODE;
|
||||
}
|
||||
//ifdef developer and r1 + x is pressed, mode is normal ghost join just HOLY_GHOST_MODE_JOINING_HOLY
|
||||
grabbed_input = true;
|
||||
//should use int joined mode or something
|
||||
}
|
||||
}
|
||||
while(!grabbed_input);
|
||||
|
||||
radar = GET_TEXTURE_FROM_STREAMED_TXD("network", "ICON_W_TOTALTIME");
|
||||
//will have loaded by now..
|
||||
|
||||
while(true)
|
||||
{
|
||||
WAIT(0);
|
||||
|
||||
empty_slots = empty_player_slots(); //if needed idk
|
||||
|
||||
//iHost = GET_HOST_ID();
|
||||
GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer); //better than get player ped its poopy old.. literally this but only this is faster..
|
||||
|
||||
if(Mode == GHOST_MODE_OBTAINING_HOST)
|
||||
{
|
||||
//if(CAN_FIND_HOST())
|
||||
if(empty_slots >= 0 && CAN_FIND_HOST()) //found
|
||||
{
|
||||
Mode = GHOST_MODE_FOUND_HOST;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
Effects();
|
||||
}
|
||||
}
|
||||
else if(Mode == GHOST_MODE_FOUND_HOST)
|
||||
{
|
||||
MD_Terminate_Script(CURRENT_GAME_MODES_SCRIPT_NAME());
|
||||
MD_Terminate_Script(((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main");
|
||||
|
||||
RELEASE_TEXTURE(radar);
|
||||
Mode = GHOST_MODE_JOINED;
|
||||
int GameMode = NETWORK_GET_GAME_MODE();
|
||||
USE_PLAYER_COLOUR_INSTEAD_OF_TEAM_COLOUR( (GameMode == GAME_MODE_FREE_MODE) );
|
||||
SWITCH_ARROW_ABOVE_BLIPPED_PICKUPS( (GameMode == GAME_MODE_FREE_MODE) || (GameMode == GAME_MODE_DEATHMATCH) || (GameMode == GAME_MODE_PARTY_MODE) );
|
||||
SET_SYNC_WEATHER_AND_GAME_TIME(true); //for now itz fine
|
||||
DISPLAY_FRONTEND_MAP_BLIPS(true); //pretty much all gamemodez i tinkle? //not doing anything :S
|
||||
if(StopStreaming){
|
||||
//ALLOW_GAME_TO_PAUSE_FOR_STREAMING(true);
|
||||
//SWITCH_STREAMING(false);
|
||||
SwitchStreaming_Message = true;
|
||||
}
|
||||
|
||||
if(!Holyghost){
|
||||
change_player(GET_PLAYERSETTINGS_MODEL_CHOICE());
|
||||
SET_PLAYERSETTINGS_MODEL_VARIATIONS_CHOICE(GET_PLAYER_ID());
|
||||
}
|
||||
|
||||
SET_PLAYER_CONTROL(GET_PLAYER_ID(),true);
|
||||
//ALLOW_LOCKON_TO_FRIENDLY_PLAYERS(iPlayer,true);
|
||||
//NETWORK_SET_FRIENDLY_FIRE_OPTION(true);
|
||||
SET_CHAR_HEALTH(pPlayer,500); //probably not needed
|
||||
GIVE_WEAPON_TO_CHAR(pPlayer,WEAPON_UNARMED,AMMO_MAX,false); //i THINK its needed, unsure, best to have weapon tho..
|
||||
ADD_TO_PREVIOUS_BRIEF("Chillout on GTA IV, only this time normal players don't know who you are!");
|
||||
//add weapons is only thing after this
|
||||
}
|
||||
else if(Mode == GHOST_MODE_JOINED)
|
||||
{
|
||||
//ADD_BLIP_FOR_WEAPON(float x, float y, float z, int *blip);
|
||||
int i;
|
||||
for(i = 0; i < MAX_PLAYERS; i++)
|
||||
{
|
||||
if(DOES_BLIP_EXIST(player_blip[i]) && Invalid_Player(i))
|
||||
{
|
||||
REMOVE_BLIP(player_blip[i]);
|
||||
continue;
|
||||
}
|
||||
//else blah.. (i guess, we checking skip invalid and does blip exist twice..)
|
||||
if(Invalid_Player(i) || DOES_BLIP_EXIST(player_blip[i]) || !PLAYER_HAS_CHAR(i)) continue;
|
||||
ADD_BLIP_FOR_CHAR(PLAYER_CHAR(i),&player_blip[i]);
|
||||
CHANGE_BLIP_COLOUR(player_blip[i],GET_PLAYER_COLOUR(i));
|
||||
CHANGE_BLIP_PRIORITY(player_blip[i],3);
|
||||
CHANGE_BLIP_NAME_FROM_ASCII(player_blip[i],GET_PLAYER_NAME(i));
|
||||
CHANGE_BLIP_DISPLAY(player_blip[i], ( (i == GET_PLAYER_ID()) ? 0 : 2) );
|
||||
|
||||
}
|
||||
|
||||
if(IS_BUTTON_JUST_PRESSED(0,DPAD_DOWN)) //Minimap zoom (just like freemode does it) works flawless //flashes when scrolling and menu open (doesnt normally so)
|
||||
{
|
||||
//BUILT IN CRASH HOPEFULLY IF MENU STARTUP NOT FOUND!
|
||||
if(GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT("menu_startup") < 1)
|
||||
{
|
||||
if(minimap_tick > GetTickCount())
|
||||
{
|
||||
minimap_tick = (GetTickCount() - 5000);
|
||||
}
|
||||
else
|
||||
{
|
||||
minimap_tick = (GetTickCount() + 5000);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(minimap_tick > GetTickCount())
|
||||
{
|
||||
SET_RADAR_ZOOM(980);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(minimap_tick != 0)
|
||||
{
|
||||
SET_RADAR_ZOOM(0); //no need to loop this me don't think
|
||||
minimap_tick = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(IS_THIS_MACHINE_THE_SERVER()) //something seems to bust me outta ghost here..
|
||||
{
|
||||
Alert("~b~MD: ~s~You are now host, ghost is now useless, changing to normal mode.",true);
|
||||
|
||||
Mode = NORMAL_MODE_JOINED;
|
||||
|
||||
}
|
||||
}
|
||||
else if(Mode == NORMAL_MODE){
|
||||
Effects();
|
||||
if(CAN_FIND_HOST()) Mode = NORMAL_MODE_JOINED;
|
||||
}
|
||||
/*
|
||||
if(SwitchStreaming_Message){
|
||||
Set_Up_Draw(0.2750f,0.3600f,255,255,255,255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5, 0.45, "STRING", "Streaming ? ~PAD_DPAD_LEFT~+~PAD_A~ ~COL_NET_3~ ON ~s~/ ~PAD_DPAD_RIGHT~+~PAD_A~ ~COL_NET_4~ OFF");
|
||||
bool LEFT_IS_PRESSED = IS_BUTTON_PRESSED(0,BUTTON_DPAD_LEFT);
|
||||
if(IS_BUTTON_JUST_PRESSED(0,BUTTON_A) && (LEFT_IS_PRESSED || IS_BUTTON_PRESSED(0,BUTTON_DPAD_RIGHT)) ){
|
||||
ALLOW_GAME_TO_PAUSE_FOR_STREAMING(true);
|
||||
if(LEFT_IS_PRESSED){
|
||||
SWITCH_STREAMING(1);
|
||||
SwitchStreaming_Message = false;
|
||||
SwitchStreaming_Toggle = true;
|
||||
}
|
||||
else{
|
||||
SWITCH_STREAMING(0);
|
||||
SwitchStreaming_Toggle = true;
|
||||
SwitchStreaming_Message = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(SwitchStreaming_Toggle){
|
||||
if(Streaming){
|
||||
Set_Up_Draw(MDVersion_Txt_Size,255,255,255,255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.7, 0.9500, "STRING", "Streaming ~COL_NET_3~ ON ~s~ Toggle : Hold ~PAD_LSTICK_ALL~ + Press ~PAD_RSTICK_ALL~");
|
||||
}
|
||||
else{
|
||||
Set_Up_Draw(MDVersion_Txt_Size,255,255,255,255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.7, 0.9500, "STRING", "Streaming ~COL_NET_4~ OFF ~s~ Toggle : Hold ~PAD_LSTICK_ALL~ + Press ~PAD_RSTICK_ALL~");
|
||||
}
|
||||
if(IS_BUTTON_JUST_PRESSED(0,BUTTON_STICK_RIGHT) && IS_BUTTON_PRESSED(0,BUTTON_STICK_LEFT)){
|
||||
ALLOW_GAME_TO_PAUSE_FOR_STREAMING(true);
|
||||
Streaming = !Streaming;
|
||||
}
|
||||
if(Streaming)SWITCH_STREAMING(1);
|
||||
else SWITCH_STREAMING(0);
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
460
Trident/SuperiorNetworkOld/MD_Superior_Network_working.c.bak
Normal file
460
Trident/SuperiorNetworkOld/MD_Superior_Network_working.c.bak
Normal file
@@ -0,0 +1,460 @@
|
||||
/**
|
||||
* @ MAJOR DISTRIBUTION EXTEND
|
||||
* @ Version MDv13 TRIDENT
|
||||
* @ MADE BY - DEVILSDESIGN & IIV_NATHAN_VII & SHOCKixiXixiWAVE
|
||||
*/
|
||||
|
||||
//NOT DESIGNED FOR PC!!!!!
|
||||
//int GET_PLAYER_ID_FOR_THIS_PED(Ped ped);
|
||||
|
||||
#include <natives.h>
|
||||
#include "MD_Compile_Settings.c"
|
||||
#include "MD_Base_Setup/MDB_Strings.h"
|
||||
#include <common.h>
|
||||
#include <consts.h>
|
||||
//#include "MD_Base_Setup/MDB_Supernet_Vars.h" //I'll declare my own here
|
||||
//#include "MD_Security/MDS_Security.h" //we are releasing ghost for free right?
|
||||
//#include "MD_Security/MDS_User_Verification.h" //meh?
|
||||
bool Holyghost = false;
|
||||
bool StopStreaming = false;
|
||||
SwitchStreaming_Message = false;
|
||||
SwitchStreaming_Toggle = false;
|
||||
bool Streaming;
|
||||
#define MDVersion_Txt_Size 0.19f,0.35f
|
||||
#define GetBit(BitSet, bitIndex) IS_BIT_SET(BitSet, bitIndex)
|
||||
|
||||
#define SetBit(BitSet, bitIndex, bitValue) SetBitHelper(&BitSet, bitIndex, bitValue)
|
||||
|
||||
#define ToggleBit(BitSet, bitIndex) ToggleBitHelper(&BitSet, bitIndex)
|
||||
|
||||
void SetBitHelper(uint *BitSet, uint bitIndex, bool value){
|
||||
if(value)SET_BIT(&*BitSet, bitIndex);
|
||||
else CLEAR_BIT(&*BitSet, bitIndex);
|
||||
}
|
||||
|
||||
void ToggleBitHelper(uint *BitSet, uint bitIndex){
|
||||
if(!IS_BIT_SET(*BitSet, bitIndex))SET_BIT(&*BitSet, bitIndex);
|
||||
else CLEAR_BIT(&*BitSet, bitIndex);
|
||||
}
|
||||
|
||||
#define NORMAL_MODE 1
|
||||
#define NORMAL_MODE_JOINED 2
|
||||
#define GHOST_MODE_OBTAINING_HOST 3
|
||||
#define GHOST_MODE_FOUND_HOST 4
|
||||
#define GHOST_MODE_JOINED 5
|
||||
|
||||
//if dpad down is pressed in freemode, minimap does SET_RADAR_ZOOM( 980 ); on a loop for 5 seconds, then puts it back to 0, think it'll restore to 0 though auto..
|
||||
|
||||
int pPlayer,Mode,Episode,empty_slots,Glowing,minimap_tick = 0;
|
||||
bool Glowing_Increment = false;
|
||||
int Rotating360 = 1;
|
||||
Texture radar;
|
||||
int player_blip[MAX_PLAYERS];
|
||||
|
||||
//uint HasRegisteredRespawnBitSet;
|
||||
|
||||
bool Invalid_Player(const int playerid){ //should move to common.h
|
||||
return (GET_HASH_KEY(GET_PLAYER_NAME(playerid)) == 2211124811 || HAS_NETWORK_PLAYER_LEFT_GAME(playerid)); //Invalid
|
||||
}
|
||||
|
||||
void change_player(int modelp){
|
||||
if(IS_MODEL_IN_CDIMAGE(modelp)){
|
||||
REQUEST_MODEL(modelp);
|
||||
float h;
|
||||
GET_CHAR_HEADING(pPlayer,&h);
|
||||
while(!HAS_MODEL_LOADED(modelp)) WAIT(0);
|
||||
CHANGE_PLAYER_MODEL(GET_PLAYER_ID(), modelp);
|
||||
MARK_MODEL_AS_NO_LONGER_NEEDED(modelp);
|
||||
GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer);
|
||||
SET_CHAR_HEADING(pPlayer,h);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void Effects(void)
|
||||
{
|
||||
if(Glowing >= 190) Glowing_Increment = false;
|
||||
if(Glowing <= 0) Glowing_Increment = true;
|
||||
if(Glowing_Increment){
|
||||
if(Glowing > 185) Glowing++;
|
||||
else Glowing += 3;
|
||||
}
|
||||
else{
|
||||
if(Glowing < 10) Glowing--;
|
||||
else Glowing -= 3;
|
||||
}
|
||||
if (Rotating360 >= 360)Rotating360 = 0;
|
||||
else Rotating360 += 5;
|
||||
|
||||
|
||||
if(empty_slots == -2) DRAW_SPRITE(radar,0.37f , 0.620f, 0.0500, 0.0500, Rotating360, Glowing, 100, 100, 200);
|
||||
else {
|
||||
if(Holyghost)MD_Terminate_Script(((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main");
|
||||
DRAW_SPRITE(radar,0.37f , 0.620f, 0.0500, 0.0500, Rotating360, Glowing, 255, Glowing, 255);
|
||||
}
|
||||
|
||||
if(Mode == NORMAL_MODE)
|
||||
{
|
||||
Set_Up_Draw(0.2150f*2,0.3600f*2, Glowing, 255, Glowing, 255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.40, 0.60, "STRING", "Joining Normally");
|
||||
}
|
||||
else
|
||||
{
|
||||
Set_Up_Draw(0.2150f*2,0.3600f*2, 255, Glowing, Glowing, 255,0,0,0);
|
||||
if(!Holyghost)DISPLAY_TEXT_WITH_LITERAL_STRING(0.40, 0.60, "STRING", "Joining As Ghost");
|
||||
else DISPLAY_TEXT_WITH_LITERAL_STRING(0.40, 0.60, "STRING", "Joining As Holy Ghost");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
char* CURRENT_GAME_MODES_SCRIPT_NAME(void)
|
||||
{
|
||||
int GameMode = NETWORK_GET_GAME_MODE();
|
||||
//THIS DOES NOT TAKE INTO ACCOUNT SCRIPT NAME DIFFERENCES FROM 360/PS3 (if there are any)
|
||||
//YET......
|
||||
if(GameMode == GAME_MODE_DEATHMATCH)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_quickdm";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "deathmatch_cr";
|
||||
}
|
||||
//return ( (Episode == 2) ? "e2_deathmatch" : "deathmatch_cr");
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TEAM_DEATHMATCH)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_deathmatch";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "deathmatch_cr";
|
||||
}
|
||||
}
|
||||
else if(GameMode == GAME_MODE_MAFIYA_WORK)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TEAM_MAFIYA_WORK)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TEAM_CAR_JACK_CITY)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_CAR_JACK_CITY)
|
||||
{
|
||||
//carsteal?
|
||||
}
|
||||
else if(GameMode == GAME_MODE_RACE)
|
||||
{
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_races";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "races_cr";
|
||||
}
|
||||
//return ( (Episode == 2) ? "e2_races" : "races_cr");
|
||||
}
|
||||
else if(GameMode == GAME_MODE_PARTY_MODE)
|
||||
{
|
||||
|
||||
if(Episode == 2)
|
||||
{
|
||||
return "e2_party_mode";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "party_mode";
|
||||
}
|
||||
|
||||
//return ( (Episode == 2) ? "e2_party_mode" : "party_mode");
|
||||
}
|
||||
else if(GameMode == GAME_MODE_COPS_AND_CROOKS)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_TURF_WAR)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_DEAL_BREAKER)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_HANGMANS_NOOSE)
|
||||
{
|
||||
|
||||
}
|
||||
else if(GameMode == GAME_MODE_BOMB_DA_BASE_II)
|
||||
{
|
||||
return "coop_bombdbase";
|
||||
}
|
||||
else if(GameMode == GAME_MODE_FREE_MODE){
|
||||
|
||||
if(Episode == 2)return "e2_freemode";
|
||||
else return "freemode_cr";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
bool CAN_FIND_HOST()
|
||||
{
|
||||
int i;
|
||||
for(i = 0; i < MAX_PLAYERS; i++)
|
||||
{
|
||||
if(GET_HOST_ID() != i || Invalid_Player(i)) continue;
|
||||
//if(Invalid_Player(i)) continue;
|
||||
if(Holyghost && Episode == 2){
|
||||
MD_Terminate_Script(CURRENT_GAME_MODES_SCRIPT_NAME());
|
||||
MD_Terminate_Script(((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//today, should check if gamemode returns int val correctly, if so make a char* GAME_MODES_SCRIPT_NAME(const int Gamemode)
|
||||
void main(){
|
||||
THIS_SCRIPT_IS_SAFE_FOR_NETWORK_GAME();
|
||||
REQUEST_STREAMED_TXD("network", 1);
|
||||
FORCE_LOADING_SCREEN(false);
|
||||
DO_SCREEN_FADE_IN(false);
|
||||
GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer);
|
||||
SET_CHAR_VISIBLE(pPlayer,true);
|
||||
SET_CHAR_COORDINATES_NO_OFFSET(pPlayer, 2635.0f, 416.0f, 79.35f); //yes nathan got theze coords optimised nigga, tower top center for x & y
|
||||
SET_CHAR_HEADING(pPlayer, 90.0f); //facing the city :)
|
||||
SET_CAM_BEHIND_PED(pPlayer);
|
||||
Episode = GET_CURRENT_EPISODE();
|
||||
if(!IS_PLAYER_ONLINE())
|
||||
{
|
||||
Alert("~COL_NET_4~MD: ~s~You need to sign in before playing online.",false);
|
||||
WAIT(3000);
|
||||
SHOW_SIGNIN_UI();
|
||||
WAIT(5000);
|
||||
}
|
||||
bool grabbed_input;
|
||||
do
|
||||
{
|
||||
WAIT(0);
|
||||
empty_slots = empty_player_slots();
|
||||
Set_Up_Draw(0.2750f,0.3600f,255,255,255,255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5, 0.45, "STRING", "~BLIP_77~ ~PAD_DPAD_RIGHT~ + ~PAD_A~ ~COL_NET_3~NORMAL MODE");
|
||||
Set_Up_Draw(0.2750f,0.3600f,255,255,255,255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5, 0.50, "STRING", "~BLIP_77~ ~PAD_DPAD_LEFT~ ~s~+ ~PAD_A~ ~COL_NET_4~GHOST MODE");
|
||||
Set_Up_Draw(0.2750f,0.3600f,255,255,255,255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5, 0.55, "STRING", "~BLIP_77~ ~PAD_DPAD_LEFT~ ~s~+ ~PAD_X~ ~COL_NET_1~HOLY GHOST MODE");
|
||||
bool LEFT_IS_PRESSED = IS_BUTTON_PRESSED(0,BUTTON_DPAD_LEFT);
|
||||
if(IS_BUTTON_JUST_PRESSED(0,BUTTON_A) && (LEFT_IS_PRESSED || IS_BUTTON_PRESSED(0,BUTTON_DPAD_RIGHT)) )
|
||||
{
|
||||
Autoload( ((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main", false);
|
||||
if(LEFT_IS_PRESSED) //ghost mode
|
||||
{
|
||||
Mode = GHOST_MODE_OBTAINING_HOST;
|
||||
WAIT(1250);//(was 1250)
|
||||
if(empty_slots >= (MAX_PLAYERS - 1)) SHUTDOWN_AND_LAUNCH_NETWORK_GAME(Episode);
|
||||
|
||||
}
|
||||
else //normal mode
|
||||
{
|
||||
Holyghost = false;
|
||||
Mode = NORMAL_MODE;
|
||||
|
||||
}
|
||||
//ifdef developer and r1 + x is pressed, mode is normal ghost join just HOLY_GHOST_MODE_JOINING_HOLY
|
||||
grabbed_input = true;
|
||||
//should use int joined mode or something
|
||||
}
|
||||
else if(IS_BUTTON_JUST_PRESSED(0,BUTTON_X) && (LEFT_IS_PRESSED || IS_BUTTON_PRESSED(0,BUTTON_DPAD_RIGHT)) ){
|
||||
Autoload( ((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main", false);
|
||||
if(LEFT_IS_PRESSED) //ghost mode
|
||||
{
|
||||
Mode = GHOST_MODE_OBTAINING_HOST;
|
||||
Holyghost = true;
|
||||
StopStreaming = true;
|
||||
//Stop streaming Code comes here
|
||||
WAIT(1250);//(was 1250)
|
||||
if(empty_slots >= (MAX_PLAYERS - 1)) SHUTDOWN_AND_LAUNCH_NETWORK_GAME(Episode);
|
||||
|
||||
}
|
||||
else //normal mode
|
||||
{
|
||||
Holyghost = false;
|
||||
Mode = NORMAL_MODE;
|
||||
}
|
||||
//ifdef developer and r1 + x is pressed, mode is normal ghost join just HOLY_GHOST_MODE_JOINING_HOLY
|
||||
grabbed_input = true;
|
||||
//should use int joined mode or something
|
||||
}
|
||||
}
|
||||
while(!grabbed_input);
|
||||
|
||||
radar = GET_TEXTURE_FROM_STREAMED_TXD("network", "ICON_W_TOTALTIME");
|
||||
//will have loaded by now..
|
||||
|
||||
while(true)
|
||||
{
|
||||
WAIT(0);
|
||||
|
||||
empty_slots = empty_player_slots(); //if needed idk
|
||||
|
||||
//iHost = GET_HOST_ID();
|
||||
GET_PLAYER_CHAR(GET_PLAYER_ID(),&pPlayer); //better than get player ped its poopy old.. literally this but only this is faster..
|
||||
|
||||
if(Mode == GHOST_MODE_OBTAINING_HOST)
|
||||
{
|
||||
//if(CAN_FIND_HOST())
|
||||
if(empty_slots >= 0 && CAN_FIND_HOST()) //found
|
||||
{
|
||||
Mode = GHOST_MODE_FOUND_HOST;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
Effects();
|
||||
}
|
||||
}
|
||||
else if(Mode == GHOST_MODE_FOUND_HOST)
|
||||
{
|
||||
MD_Terminate_Script(CURRENT_GAME_MODES_SCRIPT_NAME());
|
||||
MD_Terminate_Script(((Episode == 2) || IS_XBOX360_VERSION()) ? "network_main_rs" : "network_main");
|
||||
|
||||
RELEASE_TEXTURE(radar);
|
||||
Mode = GHOST_MODE_JOINED;
|
||||
int GameMode = NETWORK_GET_GAME_MODE();
|
||||
USE_PLAYER_COLOUR_INSTEAD_OF_TEAM_COLOUR( (GameMode == GAME_MODE_FREE_MODE) );
|
||||
SWITCH_ARROW_ABOVE_BLIPPED_PICKUPS( (GameMode == GAME_MODE_FREE_MODE) || (GameMode == GAME_MODE_DEATHMATCH) || (GameMode == GAME_MODE_PARTY_MODE) );
|
||||
SET_SYNC_WEATHER_AND_GAME_TIME(true); //for now itz fine
|
||||
DISPLAY_FRONTEND_MAP_BLIPS(true); //pretty much all gamemodez i tinkle? //not doing anything :S
|
||||
if(StopStreaming){
|
||||
//ALLOW_GAME_TO_PAUSE_FOR_STREAMING(true);
|
||||
//SWITCH_STREAMING(false);
|
||||
SwitchStreaming_Message = true;
|
||||
}
|
||||
|
||||
if(!Holyghost){
|
||||
change_player(GET_PLAYERSETTINGS_MODEL_CHOICE());
|
||||
SET_PLAYERSETTINGS_MODEL_VARIATIONS_CHOICE(GET_PLAYER_ID());
|
||||
}
|
||||
|
||||
SET_PLAYER_CONTROL(GET_PLAYER_ID(),true);
|
||||
//ALLOW_LOCKON_TO_FRIENDLY_PLAYERS(iPlayer,true);
|
||||
//NETWORK_SET_FRIENDLY_FIRE_OPTION(true);
|
||||
SET_CHAR_HEALTH(pPlayer,500); //probably not needed
|
||||
GIVE_WEAPON_TO_CHAR(pPlayer,WEAPON_UNARMED,AMMO_MAX,false); //i THINK its needed, unsure, best to have weapon tho..
|
||||
ADD_TO_PREVIOUS_BRIEF("Chillout on GTA IV, only this time normal players don't know who you are!");
|
||||
//add weapons is only thing after this
|
||||
}
|
||||
else if(Mode == GHOST_MODE_JOINED)
|
||||
{
|
||||
//ADD_BLIP_FOR_WEAPON(float x, float y, float z, int *blip);
|
||||
int i;
|
||||
for(i = 0; i < MAX_PLAYERS; i++)
|
||||
{
|
||||
if(DOES_BLIP_EXIST(player_blip[i]) && Invalid_Player(i))
|
||||
{
|
||||
REMOVE_BLIP(player_blip[i]);
|
||||
continue;
|
||||
}
|
||||
//else blah.. (i guess, we checking skip invalid and does blip exist twice..)
|
||||
if(Invalid_Player(i) || DOES_BLIP_EXIST(player_blip[i]) || !PLAYER_HAS_CHAR(i)) continue;
|
||||
ADD_BLIP_FOR_CHAR(PLAYER_CHAR(i),&player_blip[i]);
|
||||
CHANGE_BLIP_COLOUR(player_blip[i],GET_PLAYER_COLOUR(i));
|
||||
CHANGE_BLIP_PRIORITY(player_blip[i],3);
|
||||
CHANGE_BLIP_NAME_FROM_ASCII(player_blip[i],GET_PLAYER_NAME(i));
|
||||
CHANGE_BLIP_DISPLAY(player_blip[i], ( (i == GET_PLAYER_ID()) ? 0 : 2) );
|
||||
|
||||
}
|
||||
|
||||
if(IS_BUTTON_JUST_PRESSED(0,DPAD_DOWN)) //Minimap zoom (just like freemode does it) works flawless //flashes when scrolling and menu open (doesnt normally so)
|
||||
{
|
||||
//BUILT IN CRASH HOPEFULLY IF MENU STARTUP NOT FOUND!
|
||||
if(GET_NUMBER_OF_INSTANCES_OF_STREAMED_SCRIPT("menu_startup") < 1)
|
||||
{
|
||||
if(minimap_tick > GetTickCount())
|
||||
{
|
||||
minimap_tick = (GetTickCount() - 5000);
|
||||
}
|
||||
else
|
||||
{
|
||||
minimap_tick = (GetTickCount() + 5000);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(minimap_tick > GetTickCount())
|
||||
{
|
||||
SET_RADAR_ZOOM(980);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(minimap_tick != 0)
|
||||
{
|
||||
SET_RADAR_ZOOM(0); //no need to loop this me don't think
|
||||
minimap_tick = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(IS_THIS_MACHINE_THE_SERVER()) //something seems to bust me outta ghost here..
|
||||
{
|
||||
Alert("~COL_NET_4~MD: ~s~You are now host, ghost is now useless, changing to normal mode.",true);
|
||||
|
||||
Mode = NORMAL_MODE_JOINED;
|
||||
|
||||
}
|
||||
}
|
||||
else if(Mode == NORMAL_MODE){
|
||||
Effects();
|
||||
if(CAN_FIND_HOST()) Mode = NORMAL_MODE_JOINED;
|
||||
}
|
||||
/*
|
||||
if(SwitchStreaming_Message){
|
||||
Set_Up_Draw(0.2750f,0.3600f,255,255,255,255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.5, 0.45, "STRING", "Streaming ? ~PAD_DPAD_LEFT~+~PAD_A~ ~COL_NET_3~ ON ~s~/ ~PAD_DPAD_RIGHT~+~PAD_A~ ~COL_NET_4~ OFF");
|
||||
bool LEFT_IS_PRESSED = IS_BUTTON_PRESSED(0,BUTTON_DPAD_LEFT);
|
||||
if(IS_BUTTON_JUST_PRESSED(0,BUTTON_A) && (LEFT_IS_PRESSED || IS_BUTTON_PRESSED(0,BUTTON_DPAD_RIGHT)) ){
|
||||
ALLOW_GAME_TO_PAUSE_FOR_STREAMING(true);
|
||||
if(LEFT_IS_PRESSED){
|
||||
SWITCH_STREAMING(1);
|
||||
SwitchStreaming_Message = false;
|
||||
SwitchStreaming_Toggle = true;
|
||||
}
|
||||
else{
|
||||
SWITCH_STREAMING(0);
|
||||
SwitchStreaming_Toggle = true;
|
||||
SwitchStreaming_Message = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(SwitchStreaming_Toggle){
|
||||
if(Streaming){
|
||||
Set_Up_Draw(MDVersion_Txt_Size,255,255,255,255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.7, 0.9500, "STRING", "Streaming ~COL_NET_3~ ON ~s~ Toggle : Hold ~PAD_LSTICK_ALL~ + Press ~PAD_RSTICK_ALL~");
|
||||
}
|
||||
else{
|
||||
Set_Up_Draw(MDVersion_Txt_Size,255,255,255,255,0,0,0);
|
||||
DISPLAY_TEXT_WITH_LITERAL_STRING(0.7, 0.9500, "STRING", "Streaming ~COL_NET_4~ OFF ~s~ Toggle : Hold ~PAD_LSTICK_ALL~ + Press ~PAD_RSTICK_ALL~");
|
||||
}
|
||||
if(IS_BUTTON_JUST_PRESSED(0,BUTTON_STICK_RIGHT) && IS_BUTTON_PRESSED(0,BUTTON_STICK_LEFT)){
|
||||
ALLOW_GAME_TO_PAUSE_FOR_STREAMING(true);
|
||||
Streaming = !Streaming;
|
||||
}
|
||||
if(Streaming)SWITCH_STREAMING(1);
|
||||
else SWITCH_STREAMING(0);
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user