// ---------------------------------------------------------------------------------------------------- // Includes #include #include #include #include #include #include // ---------------------------------------------------------------------------------------------------- // Defines // Colors #define COLOR_WHITE 0xFFFFFFAA #define COLOR_ORANGE 0xFF9900AA #define COLOR_IVORY 0xFFFF82FF #define COLOR_BLUE 0x0000FFFF #define COLOR_PURPLE 0x800080FF #define COLOR_RED 0xFF0000FF #define COLOR_LIGHTGREEN 0x00FF7FFF #define COLOR_VIOLET 0xEE82EEFF #define COLOR_YELLOW 0xFFFF00FF #define COLOR_SILVER 0xC0C0C0FF #define COLOR_LIGHTBLUE 0x87CEFAFF #define COLOR_PINK 0xFFB6C1FF #define COLOR_INDIGO 0x4B00B0FF #define COLOR_GOLD 0xFFD700FF #define COLOR_FIREBRICK 0xB22222FF #define COLOR_GREEN 0x008000FF #define COLOR_LIGHTYELLOW 0xFAFA02FF #define COLOR_GREY 0x778899FF #define COLOR_MAGENTA 0xFF00FFFF #define COLOR_BRIGHTGREEN 0x7CFC00FF #define COLOR_DARKBLUE 0x000080AF #define COLOR_VIOLETRED 0xDB7093FF #define COLOR_BROWN 0x8B4513FF #define COLOR_GREENYELLOW 0xADFF2FFF #define COLOR_THISTLE 0xD8BFD8FF #define COLOR_TURQUISE 0x48D1CCFF #define COLOR_MAROON 0x800000FF #define COLOR_STEELBLUE 0xB0C4DEFF // Player Colors #define COLOR_PLAYER_LIGHTBLUE 0x9292FFDD #define COLOR_PLAYER_BLUE 0x0000FFDD #define COLOR_PLAYER_DARKBLUE 0x000096DD #define COLOR_PLAYER_SPECIALBLUE 0x4169FFDD #define COLOR_PLAYER_LIGHTRED 0xFFB0B0DD #define COLOR_PLAYER_RED 0xFF0000DD #define COLOR_PLAYER_DARKRED 0xA10000DD #define COLOR_PLAYER_SPECIALRED 0xB22222DD #define COLOR_PLAYER_LIGHTGREEN 0x92FF92DD #define COLOR_PLAYER_GREEN 0x00FF00DD #define COLOR_PLAYER_DARKGREEN 0x009600DD #define COLOR_PLAYER_SPECIALGREEN 0x7ACA7ADD #define COLOR_PLAYER_LIGHTYELLOW 0xFFFF5EDD #define COLOR_PLAYER_YELLOW 0xFFFF00DD #define COLOR_PLAYER_DARKYELLOW 0xD3D300DD #define COLOR_PLAYER_SPECIALYELLOW 0xCFAE00DD #define COLOR_PLAYER_LIGHTPURPLE 0xFF92FFDD #define COLOR_PLAYER_PURPLE 0xFF00FFDD #define COLOR_PLAYER_DARKPURPLE 0x800080DD #define COLOR_PLAYER_SPECIALPURPLE 0xDA70D6DD #define COLOR_PLAYER_LIGHTBROWN 0xBA9072DD #define COLOR_PLAYER_BROWN 0x8B4513DD #define COLOR_PLAYER_DARKBROWN 0x6D360EDD #define COLOR_PLAYER_LIGHTGREY 0xC7C7C7DD #define COLOR_PLAYER_GREY 0x8B8B8BDD #define COLOR_PLAYER_DARKGREY 0x656565DD #define COLOR_PLAYER_WHITE 0xFFFFFFDD #define COLOR_PLAYER_BLACK 0x000000DD #define COLOR_PLAYER_AQUAMARINE 0x7FFFD4DD #define COLOR_PLAYER_CYAN 0x00FFFFDD // Spawn Locations #define SL_SHIP1 0 #define SL_SHIP2 1 #define SL_SHIP3 2 #define SL_SHIP4 3 #define SL_SHIP5 4 #define SL_SHIP6 5 #define SL_SHIP7 6 #define SL_SHIP8 7 // Macros #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1 // Files #define FILE_SETTINGS "settings.ini" // Misc #define INI_PATH "xadmin\" #define MAX_CLASSES 300 // ---------------------------------------------------------------------------------------------------- // Global Variables // Players - Basic new pLogged[MAX_PLAYERS]; new pMoney[MAX_PLAYERS]; new pBankMoney[MAX_PLAYERS]; new pName[MAX_PLAYERS]; new pID[MAX_PLAYERS]; new pSpawnLocation[MAX_PLAYERS]; new pState[MAX_PLAYERS]; // Players - Stats new pLevel[MAX_PLAYERS]; new pRespect[MAX_PLAYERS]; new pSpawnHealth[MAX_PLAYERS]; new pSpawnArmor[MAX_PLAYERS]; new pStatPoints[MAX_PLAYERS]; // Players - Guns & Ammo new pGun1[MAX_PLAYERS]; new pGun2[MAX_PLAYERS]; new pGun3[MAX_PLAYERS]; new pGun4[MAX_PLAYERS]; new pGun5[MAX_PLAYERS]; new pAmmo1[MAX_PLAYERS]; new pAmmo2[MAX_PLAYERS]; new pAmmo3[MAX_PLAYERS]; new pAmmo4[MAX_PLAYERS]; new pAmmo5[MAX_PLAYERS]; // Money Defaults new startingMoney = 5000; new welfare = 500; new welfareLimit = 2000000; new holdPay = 100; // Locations - Spawn new float:locShipSpawns[8][3] = { { 2004.2555, 1521.8010, 17.0682 }, { 1997.4397, 1521.4657, 17.0625 }, { 1996.6748, 1533.9108, 14.6172 }, { 2003.9340, 1533.6292, 14.6223 }, { 2003.8167, 1555.2704, 14.4799 }, { 1997.7933, 1555.3453, 14.4828 }, { 2000.6272, 1566.4745, 15.3672 }, { 1998.1041, 1544.3392, 14.4938 } }; // ---------------------------------------------------------------------------------------------------- // Forward Functions // / - Account forward dcmd_Register(); forward dcmd_Login(); // / - Bank forward dcmd_Bank(amount); forward dcmd_BankAll(); forward dcmd_Withdraw(amount); forward dcmd_Deposit(amount); // Player forward P_GetInfo(playerid); forward P_SetupPlayerForSpawn(playerid); // ---------------------------------------------------------------------------------------------------- // Functions // Main. Don't you know what this is for? :P main() { print("\n----------------------------------------------------------------------"); print(" XTRO Freeroam <-> Created by Jin | Version 0.0.1 (Serious Testing)"); print(" This Mod is based on Ideas and Code from Nitro's Freeroam v3.4.0)"); print("----------------------------------------------------------------------\n"); } public OnGameModeInit() { SetGameModeText("Xtro FreeRoam"); ShowNameTags(1); ShowPlayerMarkers(1); SetWorldTime(0); UsePlayerPedAnims(); for (new i = 1; i < MAX_CLASSES; i++) { AddPlayerClass(i, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0); } } public OnPlayerConnect(playerid) { new str[256]; for (new i = 0; i < MAX_PLAYERS; i++) { pLogged[i] = 0; pMoney[i] = 0; pBankMoney[i] = 0; pName[i] = 0; pID[i] = 0; pSpawnLocation[i] = 0; pState[i] = 0; pLevel[i] = 0; pRespect[i] = 0; pSpawnHealth[i] = 0; pSpawnArmor[i] = 0; pStatPoints[i] = 0; pGun1[i] = 0; pGun2[i] = 0; pGun3[i] = 0; pGun4[i] = 0; pGun5[i] = 0; pAmmo1[i] = 0; pAmmo2[i] = 0; pAmmo3[i] = 0; pAmmo4[i] = 0; pAmmo5[i] = 0; } P_GetInfo(playerid); GetPlayerName(playerid, pName[playerid], 30); format(str, 256, "%s has joined the server", pName[playerid]); SendClientMessageToAll(COLOR_GREEN, str); P_SetupPlayerForSpawn(playerid); } public OnPlayerDisconnect(playerid, reason) { new str[256]; GetPlayerName(playerid, pName[playerid], 30); switch (reason) { case 0: format(str, 256, "%s has left the server (Ping Timeout)", pName[playerid]); case 1: format(str, 256, "%s has left the server (Leaving)", pName[playerid]); case 2: format(str, 256, "%s has left the server (Kicked)", pName[playerid]); } SendClientMessageToAll(COLOR_RED, str); } public P_GetInfo(playerid) { if (IsPlayerConnected(playerid)) { if (dini_Exists(pName[playerid])) { print("Loading INI file for %s", pName[playerid]); pMoney[playerid] = dini_Int(pName[playerid], "Money"); pLevel[playerid] = dini_Int(pName[playerid], "Level"); pRespect[playerid] = dini_Int(pName[playerid], "Respect"); pBankMoney[playerid] = dini_Int(pName[playerid], "Bank"); pSpawnLocation[playerid] = dini_Int(pName[playerid], "Spawn"); pSpawnHealth[playerid] = dini_Int(pName[playerid], "SpawnHealth"); pSpawnArmor[playerid] = dini_Int(pName[playerid], "SpawnArmor"); pStatPoints[playerid] = dini_Int(pName[playerid], "StatPoints"); pGun1[playerid] = dini_Int(pName[playerid], "Gun1"); pGun2[playerid] = dini_Int(pName[playerid], "Gun2"); pGun3[playerid] = dini_Int(pName[playerid], "Gun3"); pGun4[playerid] = dini_Int(pName[playerid], "Gun4"); pGun5[playerid] = dini_Int(pName[playerid], "Gun5"); pAmmo1[playerid] = dini_Int(pName[playerid], "Ammo1"); pAmmo2[playerid] = dini_Int(pName[playerid], "Ammo2"); pAmmo3[playerid] = dini_Int(pName[playerid], "Ammo3"); pAmmo4[playerid] = dini_Int(pName[playerid], "Ammo4"); pAmmo5[playerid] = dini_Int(pName[playerid], "Ammo5"); } else { print("Creating INI file for %s", pName[playerid]); dini_Create(pName[playerid]); dini_IntSet(pName[playerid], "Money", 5000); dini_IntSet(pName[playerid], "Level", 1); dini_IntSet(pName[playerid], "Respect", 0); dini_IntSet(pName[playerid], "Bank", 0); dini_IntSet(pName[playerid], "Spawn", 0); dini_IntSet(pName[playerid], "SpawnHealth", 50); dini_IntSet(pName[playerid], "SpawnArmor", 0); dini_IntSet(pName[playerid], "StatPoints", 0); dini_IntSet(pName[playerid], "Gun1", 0); dini_IntSet(pName[playerid], "Gun2", 0); dini_IntSet(pName[playerid], "Gun3", 0); dini_IntSet(pName[playerid], "Gun4", 0); dini_IntSet(pName[playerid], "Gun5", 0); dini_IntSet(pName[playerid], "Ammo1", 0); dini_IntSet(pName[playerid], "Ammo2", 0); dini_IntSet(pName[playerid], "Ammo3", 0); dini_IntSet(pName[playerid], "Ammo4", 0); dini_IntSet(pName[playerid], "Ammo5", 0); } } } public P_SetupPlayerForSpawn(playerid) { new spawnpt = dini_Int(pName[playerid], "Spawn"); switch (spawnpt) { case SL_SHIP1: SetPlayerPos(playerid, locShipSpawns[0][0], locShipSpawns[0][1], locShipSpawns[0][2]); case SL_SHIP2: SetPlayerPos(playerid, locShipSpawns[1][0], locShipSpawns[1][1], locShipSpawns[1][2]); case SL_SHIP3: SetPlayerPos(playerid, locShipSpawns[2][0], locShipSpawns[2][1], locShipSpawns[2][2]); case SL_SHIP4: SetPlayerPos(playerid, locShipSpawns[3][0], locShipSpawns[3][1], locShipSpawns[3][2]); case SL_SHIP5: SetPlayerPos(playerid, locShipSpawns[4][0], locShipSpawns[4][1], locShipSpawns[4][2]); case SL_SHIP6: SetPlayerPos(playerid, locShipSpawns[5][0], locShipSpawns[5][1], locShipSpawns[5][2]); case SL_SHIP7: SetPlayerPos(playerid, locShipSpawns[6][0], locShipSpawns[6][1], locShipSpawns[6][2]); case SL_SHIP8: SetPlayerPos(playerid, locShipSpawns[7][0], locShipSpawns[7][1], locShipSpawns[7][2]); } }