#define DialogHouseMenu 9000
// This command opens a menu when you\'re inside your house to allow to access the options of your houseCOMMAND:housemenu(playerid, params[]){// Setup local variablesnew OptionsList[200], DialogTitle[200];// Send the command to all admins so they can see itSendAdminText(playerid, \"/housemenu\", params);// Check if the player has logged inif (APlayerData[playerid][LoggedIn] == true){ // Check if the player is inside a house if (APlayerData[playerid][CurrentHouse] != 0) { format(DialogTitle, sizeof(DialogTitle), \"Select option for %s\", AHouseData[APlayerData[playerid][CurrentHouse]][HouseName]); format(OptionsList, sizeof(OptionsList), \"%sChange house-name\\n\", OptionsList); format(OptionsList, sizeof(OptionsList), \"%sUpgrade house\\n\", OptionsList); format(OptionsList, sizeof(OptionsList), \"%sBuy house-car\\n\", OptionsList); format(OptionsList, sizeof(OptionsList), \"%sBuy house-car insurance\\n\", OptionsList); format(OptionsList, sizeof(OptionsList), \"%sSell house-car\\n\", OptionsList); format(OptionsList, sizeof(OptionsList), \"%sSell house\\n\", OptionsList); format(OptionsList, sizeof(OptionsList), \"%sOpen house to the public\\n\", OptionsList); format(OptionsList, sizeof(OptionsList), \"%sClose house to the public\\n\", OptionsList); format(OptionsList, sizeof(OptionsList), \"%sExit house\\n\", OptionsList); // Show the housemenu ShowPlayerDialog(playerid, DialogHouseMenu, DIALOG_STYLE_LIST, DialogTitle, OptionsList, \"Select\", \"Cancel\"); } else SendClientMessage(playerid, 0xFF0000FF, \"You\'re not inside a house\");}else return 0;// Let the server know that this was a valid commandreturn 1;}
case DialogHouseMenu: Dialog_HouseMenu(playerid, response, listitem); // Process the main housemenu
// This function processes the housemenu dialogDialog_HouseMenu(playerid, response, listitem){// Just close the dialog if the player clicked \"Cancel\"if(!response) return 1;// Setup local variablesnew UpgradeList[2000], HouseID, DialogTitle[200], Counter, UpgradePrice, Msg[128], CarSlot, VehicleClassList[1000], VehicleList[500];// Get the HouseID of the house where the player isHouseID = APlayerData[playerid][CurrentHouse];// Select an option based on the selection in the listswitch(listitem){ case 0: // Change house name { // Only the house-owner can use this option if (House_PlayerIsOwner(playerid, HouseID) == 1) { format(DialogTitle, 200, TXT_DialogOldHouseName, AHouseData[HouseID][HouseName]); ShowPlayerDialog(playerid, DialogHouseNameChange, DIALOG_STYLE_INPUT, DialogTitle, TXT_DialogEnterNewHouseName, TXT_DialogButtonSelect, TXT_DialogButtonCancel); } else SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Only the house-owner can use this option\"); } case 1: // Upgrade the house { // Only the house-owner can use this option if (House_PlayerIsOwner(playerid, HouseID) == 1) { // Check if it\'s possible to upgrade further if (AHouseData[HouseID][HouseLevel] < AHouseData[HouseID][HouseMaxLevel]) { // Add only the upgrades above the current house-level to the upgradelist for (new i = AHouseData[HouseID][HouseLevel] + 1; i <= AHouseData[HouseID][HouseMaxLevel]; i++) { Counter++; // Add 1 to the counter each time an upgrade is added to the upgradelist UpgradePrice = ((AHouseData[HouseID][HousePrice] * Counter) / 100) * HouseUpgradePercent; // Add the upgrade-info in green if the player can afford it, and in red if he cannot afford it if (APlayerData[playerid][PlayerMoney] >= UpgradePrice) format(UpgradeList, 2000, \"%s{00FF00}%s (level %i)\\t\\t$%i\\n\", UpgradeList, AHouseInteriors[InteriorName], i, UpgradePrice); else format(UpgradeList, 2000, \"%s{FF0000}%s (level %i)\\t\\t$%i\\n\", UpgradeList, AHouseInteriors[InteriorName], i, UpgradePrice); } // Show another dialog to let the player select which upgrade he wants for his house ShowPlayerDialog(playerid, DialogUpgradeHouse, DIALOG_STYLE_LIST, TXT_DialogSelectHouseUpgrade, UpgradeList, TXT_DialogButtonSelect, TXT_DialogButtonCancel); } else SendClientMessage(playerid, 0xFFFFFFFF, TXT_HouseReachedMaxLevel); } else SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Only the house-owner can use this option\"); } case 2: // Buy house-car { // Only the house-owner can use this option if (House_PlayerIsOwner(playerid, HouseID) == 1) { // Find a free carslot CarSlot = House_GetFreeCarSlot(HouseID); // Check if the carslot is valid if (CarSlot != -1) { // Let the player choose a vehicle-class format(VehicleClassList, 1000, \"%s{00FF00}%s{FFFFFF}\\n\", VehicleClassList, \"Bikes\"); format(VehicleClassList, 1000, \"%s{40FF00}%s{FFFFFF}\\n\", VehicleClassList, \"Boats\"); format(VehicleClassList, 1000, \"%s{80FF00}%s{FFFFFF}\\n\", VehicleClassList, \"Convertibles\"); format(VehicleClassList, 1000, \"%s{B0FF00}%s{FFFFFF}\\n\", VehicleClassList, \"Helicopters\"); format(VehicleClassList, 1000, \"%s{FFFF00}%s{FFFFFF}\\n\", VehicleClassList, \"Industrial vehicles\"); format(VehicleClassList, 1000, \"%s{B0FF40}%s{FFFFFF}\\n\", VehicleClassList, \"Low-riders\"); format(VehicleClassList, 1000, \"%s{80FF80}%s{FFFFFF}\\n\", VehicleClassList, \"Off-Road vehicles\"); format(VehicleClassList, 1000, \"%s{40FFB0}%s{FFFFFF}\\n\", VehicleClassList, \"Planes\"); format(VehicleClassList, 1000, \"%s{00FFFF}%s{FFFFFF}\\n\", VehicleClassList, \"Public Service vehicles\"); format(VehicleClassList, 1000, \"%s{00B0FF}%s{FFFFFF}\\n\", VehicleClassList, \"RC vehicles\"); format(VehicleClassList, 1000, \"%s{0080FF}%s{FFFFFF}\\n\", VehicleClassList, \"Saloon vehicles\"); format(VehicleClassList, 1000, \"%s{0040FF}%s{FFFFFF}\\n\", VehicleClassList, \"Sport vehicles\"); format(VehicleClassList, 1000, \"%s{0000FF}%s{FFFFFF}\\n\", VehicleClassList, \"Station wagons\"); format(VehicleClassList, 1000, \"%s{4000FF}%s{FFFFFF}\\n\", VehicleClassList, \"Trailers\"); format(VehicleClassList, 1000, \"%s{8000FF}%s{FFFFFF}\\n\", VehicleClassList, \"Unique vehicles\"); // Ask which vehicle class the player wants to see to buy a vehicle ShowPlayerDialog(playerid, DialogBuyCarClass, DIALOG_STYLE_LIST, TXT_DialogBuyCarSelectClass, VehicleClassList, TXT_DialogButtonSelect, TXT_DialogButtonCancel); } else SendClientMessage(playerid, 0xFFFFFFFF, TXT_HouseHasMaxVehicles); } else SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Only the house-owner can use this option\"); } case 3: // Buy house-car insurance { // Only the house-owner can use this option if (House_PlayerIsOwner(playerid, HouseID) == 1) { new MsgInsurance[128]; // Check if this house doesn\'t have insurance yet if (AHouseData[HouseID][Insurance] == 0) { // Check if the player can afford the insurance if (APlayerData[playerid][PlayerMoney] >= (AHouseData[HouseID][HousePrice] / 10)) { // Construct the message for the dialog, this includes the price for the insurance format(MsgInsurance, 128, TXT_DialogBuyInsurance, AHouseData[HouseID][HousePrice] / 10); // Ask the player if the wants to buy an insurance for this house\'s vehicles ShowPlayerDialog(playerid, DialogBuyInsurance, DIALOG_STYLE_MSGBOX, TXT_DialogTitleBuyInsurance, MsgInsurance, TXT_DialogButtonYes, TXT_DialogButtonNo); } else SendClientMessage(playerid, 0xFFFFFFFF, TXT_CannotAffordInsurance); } else SendClientMessage(playerid, 0xFFFFFFFF, TXT_HouseAlreadyHasInsurance); } else SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Only the house-owner can use this option\"); } case 4: // Sell house-car { // Only the house-owner can use this option if (House_PlayerIsOwner(playerid, HouseID) == 1) { new BuyableCarIndex, bool:HouseHasCars = false; // Check if the house has any cars assigned to it for (CarSlot = 0; CarSlot < 10; CarSlot++) if (AHouseData[HouseID][VehicleIDs][CarSlot] != 0) HouseHasCars = true; // Check if the house has any cars assigned to it if (HouseHasCars == true) { // Add all vehicles to the list for (CarSlot = 0; CarSlot < 10; CarSlot++) { if (AHouseData[HouseID][VehicleIDs][CarSlot] != 0) { // Get the index where the first vehicle is found in the ABuyableVehicles array BuyableCarIndex = VehicleBuyable_GetIndex(GetVehicleModel(AHouseData[HouseID][VehicleIDs][CarSlot])); // Add the name of the vehicle to the list format(VehicleList, 500, \"%s{00FF00}%s: $%i{FFFFFF}\\n\", VehicleList, ABuyableVehicles[BuyableCarIndex][CarName], ABuyableVehicles[BuyableCarIndex][Price] / 2); } else format(VehicleList, 500, TXT_EmptyCarSlot, VehicleList); } // Ask which vehicle class the player wants to see to buy a vehicle ShowPlayerDialog(playerid, DialogSellCar, DIALOG_STYLE_LIST, TXT_SelectVehicleToSell, VehicleList, TXT_DialogButtonSelect, TXT_DialogButtonCancel); } else SendClientMessage(playerid, 0xFFFFFFFF, TXT_NoHouseVehicles); } else SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Only the house-owner can use this option\"); } case 5: // Sell house { // Only the house-owner can use this option if (House_PlayerIsOwner(playerid, HouseID) == 1) { // Setup local variables new bool:HouseHasCars = false; // Check if the house has any cars assigned to it for (CarSlot = 0; CarSlot < 10; CarSlot++) if (AHouseData[HouseID][VehicleIDs][CarSlot] != 0) HouseHasCars = true; // Check if all house-cars have been sold (all slots are empty) if (HouseHasCars == false) { format(Msg, 128, TXT_SureSellHouse, House_CalcSellPrice(HouseID)); ShowPlayerDialog(playerid, DialogSellHouse, DIALOG_STYLE_MSGBOX, TXT_AreYouSure, Msg, TXT_DialogButtonYes, TXT_DialogButtonNo); } else SendClientMessage(playerid, 0xFFFFFFFF, TXT_CannotSellHouseWithCars); } else SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Only the house-owner can use this option\"); } case 6: // Open the house to the public (everyone can enter it) { // Only the house-owner can use this option if (House_PlayerIsOwner(playerid, HouseID) == 1) { // Open the house to the public AHouseData[HouseID][HouseOpened] = true; // Let the player know he opened the house to the public SendClientMessage(playerid, 0xFFFFFFFF, \"{00FF00}You\'ve opened the house to the public, anyone can enter it\"); } else SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Only the house-owner can use this option\"); } case 7: // Close the house to the public (only the owner can enter it) { // Only the house-owner can use this option if (House_PlayerIsOwner(playerid, HouseID) == 1) { // Close the house to the public AHouseData[HouseID][HouseOpened] = false; // Let the player know he closed the house to the public SendClientMessage(playerid, 0xFFFFFFFF, \"{00FF00}You\'ve closed the house to the public, only you can enter it\"); } else SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Only the house-owner can use this option\"); } case 8: { House_Exit(playerid, HouseID); }}return 1;}
if(!response) return 1;// Setup local variablesnew UpgradeList[2000], HouseID, DialogTitle[200], Counter, UpgradePrice, Msg[128], CarSlot, VehicleClassList[1000], VehicleList[500];// Get the HouseID of the house where the player isHouseID = APlayerData[playerid][CurrentHouse];// Select an option based on the selection in the listswitch(listitem){ case 0: // Change house name { // Only the house-owner can use this option if (House_PlayerIsOwner(playerid, HouseID) == 1) { format(DialogTitle, 200, TXT_DialogOldHouseName, AHouseData[HouseID][HouseName]); ShowPlayerDialog(playerid, DialogHouseNameChange, DIALOG_STYLE_INPUT, DialogTitle, TXT_DialogEnterNewHouseName, TXT_DialogButtonSelect, TXT_DialogButtonCancel); } else SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Only the house-owner can use this option\"); } case 1: // Upgrade the house { // Only the house-owner can use this option if (House_PlayerIsOwner(playerid, HouseID) == 1) { // Check if it\'s possible to upgrade further if (AHouseData[HouseID][HouseLevel] < AHouseData[HouseID][HouseMaxLevel]) { // Add only the upgrades above the current house-level to the upgradelist for (new i = AHouseData[HouseID][HouseLevel] + 1; i <= AHouseData[HouseID][HouseMaxLevel]; i++) { Counter++; // Add 1 to the counter each time an upgrade is added to the upgradelist UpgradePrice = ((AHouseData[HouseID][HousePrice] * Counter) / 100) * HouseUpgradePercent; // Add the upgrade-info in green if the player can afford it, and in red if he cannot afford it if (APlayerData[playerid][PlayerMoney] >= UpgradePrice) format(UpgradeList, 2000, \"%s{00FF00}%s (level %i)\\t\\t$%i\\n\", UpgradeList, AHouseInteriors[InteriorName], i, UpgradePrice); else format(UpgradeList, 2000, \"%s{FF0000}%s (level %i)\\t\\t$%i\\n\", UpgradeList, AHouseInteriors[InteriorName], i, UpgradePrice); } // Show another dialog to let the player select which upgrade he wants for his house ShowPlayerDialog(playerid, DialogUpgradeHouse, DIALOG_STYLE_LIST, TXT_DialogSelectHouseUpgrade, UpgradeList, TXT_DialogButtonSelect, TXT_DialogButtonCancel); } else SendClientMessage(playerid, 0xFFFFFFFF, TXT_HouseReachedMaxLevel); } else SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Only the house-owner can use this option\"); } case 2: // Buy house-car { // Only the house-owner can use this option if (House_PlayerIsOwner(playerid, HouseID) == 1) { // Find a free carslot CarSlot = House_GetFreeCarSlot(HouseID); // Check if the carslot is valid if (CarSlot != -1) { // Let the player choose a vehicle-class format(VehicleClassList, 1000, \"%s{00FF00}%s{FFFFFF}\\n\", VehicleClassList, \"Bikes\"); format(VehicleClassList, 1000, \"%s{40FF00}%s{FFFFFF}\\n\", VehicleClassList, \"Boats\"); format(VehicleClassList, 1000, \"%s{80FF00}%s{FFFFFF}\\n\", VehicleClassList, \"Convertibles\"); format(VehicleClassList, 1000, \"%s{B0FF00}%s{FFFFFF}\\n\", VehicleClassList, \"Helicopters\"); format(VehicleClassList, 1000, \"%s{FFFF00}%s{FFFFFF}\\n\", VehicleClassList, \"Industrial vehicles\"); format(VehicleClassList, 1000, \"%s{B0FF40}%s{FFFFFF}\\n\", VehicleClassList, \"Low-riders\"); format(VehicleClassList, 1000, \"%s{80FF80}%s{FFFFFF}\\n\", VehicleClassList, \"Off-Road vehicles\"); format(VehicleClassList, 1000, \"%s{40FFB0}%s{FFFFFF}\\n\", VehicleClassList, \"Planes\"); format(VehicleClassList, 1000, \"%s{00FFFF}%s{FFFFFF}\\n\", VehicleClassList, \"Public Service vehicles\"); format(VehicleClassList, 1000, \"%s{00B0FF}%s{FFFFFF}\\n\", VehicleClassList, \"RC vehicles\"); format(VehicleClassList, 1000, \"%s{0080FF}%s{FFFFFF}\\n\", VehicleClassList, \"Saloon vehicles\"); format(VehicleClassList, 1000, \"%s{0040FF}%s{FFFFFF}\\n\", VehicleClassList, \"Sport vehicles\"); format(VehicleClassList, 1000, \"%s{0000FF}%s{FFFFFF}\\n\", VehicleClassList, \"Station wagons\"); format(VehicleClassList, 1000, \"%s{4000FF}%s{FFFFFF}\\n\", VehicleClassList, \"Trailers\"); format(VehicleClassList, 1000, \"%s{8000FF}%s{FFFFFF}\\n\", VehicleClassList, \"Unique vehicles\"); // Ask which vehicle class the player wants to see to buy a vehicle ShowPlayerDialog(playerid, DialogBuyCarClass, DIALOG_STYLE_LIST, TXT_DialogBuyCarSelectClass, VehicleClassList, TXT_DialogButtonSelect, TXT_DialogButtonCancel); } else SendClientMessage(playerid, 0xFFFFFFFF, TXT_HouseHasMaxVehicles); } else SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Only the house-owner can use this option\"); } case 3: // Buy house-car insurance { // Only the house-owner can use this option if (House_PlayerIsOwner(playerid, HouseID) == 1) { new MsgInsurance[128]; // Check if this house doesn\'t have insurance yet if (AHouseData[HouseID][Insurance] == 0) { // Check if the player can afford the insurance if (APlayerData[playerid][PlayerMoney] >= (AHouseData[HouseID][HousePrice] / 10)) { // Construct the message for the dialog, this includes the price for the insurance format(MsgInsurance, 128, TXT_DialogBuyInsurance, AHouseData[HouseID][HousePrice] / 10); // Ask the player if the wants to buy an insurance for this house\'s vehicles ShowPlayerDialog(playerid, DialogBuyInsurance, DIALOG_STYLE_MSGBOX, TXT_DialogTitleBuyInsurance, MsgInsurance, TXT_DialogButtonYes, TXT_DialogButtonNo); } else SendClientMessage(playerid, 0xFFFFFFFF, TXT_CannotAffordInsurance); } else SendClientMessage(playerid, 0xFFFFFFFF, TXT_HouseAlreadyHasInsurance); } else SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Only the house-owner can use this option\"); } case 4: // Sell house-car { // Only the house-owner can use this option if (House_PlayerIsOwner(playerid, HouseID) == 1) { new BuyableCarIndex, bool:HouseHasCars = false; // Check if the house has any cars assigned to it for (CarSlot = 0; CarSlot < 10; CarSlot++) if (AHouseData[HouseID][VehicleIDs][CarSlot] != 0) HouseHasCars = true; // Check if the house has any cars assigned to it if (HouseHasCars == true) { // Add all vehicles to the list for (CarSlot = 0; CarSlot < 10; CarSlot++) { if (AHouseData[HouseID][VehicleIDs][CarSlot] != 0) { // Get the index where the first vehicle is found in the ABuyableVehicles array BuyableCarIndex = VehicleBuyable_GetIndex(GetVehicleModel(AHouseData[HouseID][VehicleIDs][CarSlot])); // Add the name of the vehicle to the list format(VehicleList, 500, \"%s{00FF00}%s: $%i{FFFFFF}\\n\", VehicleList, ABuyableVehicles[BuyableCarIndex][CarName], ABuyableVehicles[BuyableCarIndex][Price] / 2); } else format(VehicleList, 500, TXT_EmptyCarSlot, VehicleList); } // Ask which vehicle class the player wants to see to buy a vehicle ShowPlayerDialog(playerid, DialogSellCar, DIALOG_STYLE_LIST, TXT_SelectVehicleToSell, VehicleList, TXT_DialogButtonSelect, TXT_DialogButtonCancel); } else SendClientMessage(playerid, 0xFFFFFFFF, TXT_NoHouseVehicles); } else SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Only the house-owner can use this option\"); } case 5: // Sell house { // Only the house-owner can use this option if (House_PlayerIsOwner(playerid, HouseID) == 1) { // Setup local variables new bool:HouseHasCars = false; // Check if the house has any cars assigned to it for (CarSlot = 0; CarSlot < 10; CarSlot++) if (AHouseData[HouseID][VehicleIDs][CarSlot] != 0) HouseHasCars = true; // Check if all house-cars have been sold (all slots are empty) if (HouseHasCars == false) { format(Msg, 128, TXT_SureSellHouse, House_CalcSellPrice(HouseID)); ShowPlayerDialog(playerid, DialogSellHouse, DIALOG_STYLE_MSGBOX, TXT_AreYouSure, Msg, TXT_DialogButtonYes, TXT_DialogButtonNo); } else SendClientMessage(playerid, 0xFFFFFFFF, TXT_CannotSellHouseWithCars); } else SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Only the house-owner can use this option\"); } case 6: // Open the house to the public (everyone can enter it) { // Only the house-owner can use this option if (House_PlayerIsOwner(playerid, HouseID) == 1) { // Open the house to the public AHouseData[HouseID][HouseOpened] = true; // Let the player know he opened the house to the public SendClientMessage(playerid, 0xFFFFFFFF, \"{00FF00}You\'ve opened the house to the public, anyone can enter it\"); } else SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Only the house-owner can use this option\"); } case 7: // Close the house to the public (only the owner can enter it) { // Only the house-owner can use this option if (House_PlayerIsOwner(playerid, HouseID) == 1) { // Close the house to the public AHouseData[HouseID][HouseOpened] = false; // Let the player know he closed the house to the public SendClientMessage(playerid, 0xFFFFFFFF, \"{00FF00}You\'ve closed the house to the public, only you can enter it\"); } else SendClientMessage(playerid, 0xFFFFFFFF, \"{FF0000}Only the house-owner can use this option\"); } case 8: { House_Exit(playerid, HouseID); }}return 1;}
Dialog_HouseMenu(playerid, response, listitem)