SA-MP Forums Archive
A question about "new" and dialogs - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: A question about "new" and dialogs (/showthread.php?tid=494248)



A question about "new" and dialogs - Face9000 - 12.02.2014

I got this atm in my gamemode, is a basic vehicle selling system, i ordered the vehicles with their name and price:

pawn Код:
new VehicleInfo[212][v_info] =
{
        {"Landstalker",10000},
        {"Bravura",10000},
        {"Buffalo",10000},
        {"Linerunner",10000},
        {"Perrenial",10000},
        {"Sentinel",10000},
        {"Dumper",10000},
        {"Firetruck",10000},
        {"Trashmaster",10000},
        {"Stretch",10000},
        {"Manana",10000}

//And so on
};
My question is, is possible to create a dialog that will list all the vehicles listed in that "new" with the price?

Something like /vehiclesthatcanbesold, and a dialog will popup with that list (Vehicle Name - Price).

In short, a dynamic dialog loaded by that array. Is it possible? If yes, how?


Re: A question about "new" and dialogs - Calgon - 12.02.2014

pawn Код:
// Set your defines, this helps to reference certain values later on as we can't use sizeof() to determine the size
#define MAX_VEHICLE_MODELS 11
// Again, set an ID for the dialog. You will want to set a unique number here, so OnDialogResponse doesn't make mistakes handling your dialog code.
#define DIALOG_VEHICLES 2

// Create an enum with the two variables
enum v_info {
    v_szName[32],
    v_iPrice
}

// Populate the data in the enum with the MAX_VEHICLE_MODELS dimension
new VehicleInfo[MAX_VEHICLE_MODELS][v_info] =
{
        {"Landstalker",10000},
        {"Bravura",10000},
        {"Buffalo",10000},
        {"Linerunner",10000},
        {"Perrenial",10000},
        {"Sentinel",10000},
        {"Dumper",10000},
        {"Firetruck",10000},
        {"Trashmaster",10000},
        {"Stretch",10000},
        {"Manana",10000}
};

// Here's a function to show a player the vehicle list, along with prices.
stock ShowPlayerVehicleList(playerid) {
    new
        szDialogMessage[32 * MAX_VEHICLE_MODELS]; // Set a large size for this variable, as we will overflow smaller sized variables. We need to populate the list with model information.
       
    // Create the first message in the dialog
    format(szDialogMessage, sizeof(szDialogMessage), "Vehicles:\n");
   
    // Now begin formatting the information to show in the dialog, repeating the previous information for the final display in the dialog
    for(new i = 0; i < MAX_VEHICLE_MODELS; i++) {
        format(szDialogMessage, sizeof(szDialogMessage), "%s- %s (price: $%d)\n", szDialogMessage, VehicleInfo[i][v_szName], VehicleInfo[i][v_iPrice]);
    }
   
    // Whenever it loops through a vehicle model, it will add to the string at the end of it with the vehicle model information, helping us form the information all in to one string
    ShowPlayerDialog(playerid, DIALOG_VEHICLES, DIALOG_STYLE_MSGBOX, "Vehicles", szDialogMessage, "OK", "Cancel");
    return 1;
}
I have only been able to test that this code compiles, rather than test it in-game, but this should help you with your problem.

Comments provided to explain it.


Re: A question about "new" and dialogs - PowerPC603 - 12.02.2014

That would work, but list-dialogs only show up to 50 lines.

You can't fit all 212 vehicles in one single dialog, even if you use a size for "szDialogMessage" of 100.000 cells (like "new szDialogMessage[100000];").


As for msgbox dialogs, I don't think you can fit 212 lines on your screen as well.


Re: A question about "new" and dialogs - Face9000 - 12.02.2014

What about if i show 5 vehicles per line then i use \n and strcat?


Re: A question about "new" and dialogs - PowerPC603 - 12.02.2014

That would work. 212/5 is 43 lines.
Just be sure your variable "szDialogMessage" is large enough to hold all the data.


Re: A question about "new" and dialogs - Face9000 - 12.02.2014

But this probably will increase as fuck the .amx file...