Üdv! Van egy PPC modom még réges régen editeltem most újra elővettem. Sajnos azt tapasztaltam hogy egy dialog nem működik, a /housemenu (Aki nem ismeri a modot ez a parancs a házadban használható, megváltoztathatod a nevét, fejlesztheted, vehetsz kocsit, itt adhatod el stb.) Ez a parancs ugyebár egy dialógust hoz létre ami most teljesen az alap mert kicseréltem a házrendszert teljesen az utolsó sorig mindenhol az alapra. Nos, amíg nem lépünk be egy házba tökéletesen működik írja hogy nem vagyunk házban. Amint belépünk egy házba a dialógust megnyitja viszont az azon belül kiválasztható lista elemeket nem érzékeli/nem csinál semmit bármit választunk ki. Amit lehetett hogy ondialogresponse-nál return 0 legyen stb. próbáltam. Ennek ellenére sem működik. A Biznisz rendszer felépítése ugyanez csak van /busmenu parancs na azzal semmi baj nincs tökéletesen működik. A /housemenu parancsnál viszont nem fagy ki a player se a szerver se semmi minden másik parancs tökéletesen működik a teleportálásra szolgáló /rescue paranccsal ki is lehet jönni a házból és ugyanúgy lehet tovább játszani. De házon belül nem működik. A Dialog ID-jét sem használja más Dialog.
Mod elején a define
#define DialogHouseMenu 9000
A /housemenu parancs
// This command opens a menu when you\'re inside your house to allow to access the options of your house
COMMAND:housemenu(playerid, params[])
{
// Setup local variables
new OptionsList[200], DialogTitle[200];
// Send the command to all admins so they can see it
SendAdminText(playerid, \"/housemenu\", params);
// Check if the player has logged in
if (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 command
return 1;
}
OnDialogResponse alatti részen
case DialogHouseMenu: Dialog_HouseMenu(playerid, response, listitem); // Process the main housemenu
Dialog_HouseMenu
// This function processes the housemenu dialog
Dialog_HouseMenu(playerid, response, listitem)
{
// Just close the dialog if the player clicked \"Cancel\"
if(!response) return 1;
// Setup local variables
new UpgradeList[2000], HouseID, DialogTitle[200], Counter, UpgradePrice, Msg[128], CarSlot, VehicleClassList[1000], VehicleList[500];
// Get the HouseID of the house where the player is
HouseID = APlayerData[playerid][CurrentHouse];
// Select an option based on the selection in the list
switch(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;
}
A módba semmilyen olyan dolog nem került be ami piszkálná a házrendszert. Lehetséges hibákat keresek hátha valamit elnéztem. Ha van valami \"diagnózisotok\" szívesen meghallgatom!
Ha valamit még másolni kell szóljatok!
Köszönöm előre is!