14.03.2016, 21:44
(
Последний раз редактировалось awsomedude; 21.04.2016 в 19:39.
Причина: Fixed Dialog_Open
)
This include is originally created by Emmet_ but will be maintained by me.
easyDialog.inc
Introduction
I've released this include a little over a year ago. However, it didn't have many features and it wasn't crash proof, so I've decided to scrap it and rewrite the whole include from scratch.
Purpose
The purpose of this include is to make dialogs easier to use in general.
Imagine having over 100 dialog checks under OnDialogResponse. It's just too messy and most of the time, it's unorganized and harder to look for certain dialogs for future editing, and remembering certain dialog ID's can be a pain in the ass.
However, easyDialog.inc fixes that by introducing a "named dialog feature" which allows scripters to declare a dialog by name, rather than ID.
This code:
Turns into this code:
I think the second example is much more neater, especially for larger scripts.
Callback
This script introduces a new callback:
This callback is called before a dialog is shown to a player (using Dialog_Show, that is). Returning 0 under this callback will prevent the dialog from working.
Very simple, isn't it?
Functions
This include introduces several new useful functions:
Shows a dialog to a player.
Closes any opened dialogs.
Returns 1 if the dialog is opened for the specified player.
Download
easyDialog.inc (Github)
If this include doesn't work...
a) Includes and filterscripts
Returning 0 under OnDialogResponse will pass the dialog to other scripts containing the callback. However, certain filterscripts and third-party libraries might return 1 instead. This interferes with the inner workings of easyDialog and causes the dialogs to not work.
Simply return 0 instead to fix the issue.
easyDialog works in parallel with OnDialogResponse, so you can use both at the same time. Older versions do not support this.
easyDialog.inc
Introduction
I've released this include a little over a year ago. However, it didn't have many features and it wasn't crash proof, so I've decided to scrap it and rewrite the whole include from scratch.
Purpose
The purpose of this include is to make dialogs easier to use in general.
Imagine having over 100 dialog checks under OnDialogResponse. It's just too messy and most of the time, it's unorganized and harder to look for certain dialogs for future editing, and remembering certain dialog ID's can be a pain in the ass.
However, easyDialog.inc fixes that by introducing a "named dialog feature" which allows scripters to declare a dialog by name, rather than ID.
Feature | OnDialogResponse | easyDialog.inc |
Crash Proof | No | Yes |
Named Dialogs | No | Yes |
Calling a dialog manually | No | Yes |
Custom callback for handling | No | Yes |
pawn Код:
#define DIALOG_WEAPON (1337)
CMD:weapons(playerid, params[])
{
ShowPlayerDialog(playerid, DIALOG_WEAPON, DIALOG_STYLE_LIST, "Weapon Menu", "9mm\nSilenced 9mm\nDesert Eagle\nShotgun\nSawn-off Shotgun\nCombat Shotgun", "Select", "Cancel");
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if (dialogid == DIALOG_WEAPON)
{
if (response)
{
new str[64];
format(str, 64, "You have selected the '%s'.", inputtext);
GivePlayerWeapon(playerid, listitem + 22, 500);
SendClientMessage(playerid, -1, str);
}
}
return 1;
}
pawn Код:
CMD:weapons(playerid, params[])
{
Dialog_Show(playerid, WeaponMenu, DIALOG_STYLE_LIST, "Weapon Menu", "9mm\nSilenced 9mm\nDesert Eagle\nShotgun\nSawn-off Shotgun\nCombat Shotgun", "Select", "Cancel");
return 1;
}
Dialog:WeaponMenu(playerid, response, listitem, inputtext[])
{
if (response)
{
new str[64];
format(str, 64, "You have selected the '%s'.", inputtext);
GivePlayerWeapon(playerid, listitem + 22, 500);
SendClientMessage(playerid, -1, str);
}
return 1;
}
Callback
This script introduces a new callback:
pawn Код:
public OnDialogPerformed(playerid, dialog[], response, success)
{
return 1;
}
pawn Код:
public OnDialogPerformed(playerid, dialog[], response, success)
{
if (!strcmp(dialog, "WeaponMenu") && IsPlayerInAnyVehicle(playerid))
{
SendClientMessage(playerid, -1, "You must be on-foot to spawn a weapon.");
return 0;
}
return 1;
}
Functions
This include introduces several new useful functions:
pawn Код:
Dialog_Show(playerid, dialog, style, caption[], info[], button1[], button2[], {Float,_}:...);
pawn Код:
Dialog_Close(playerid);
pawn Код:
Dialog_Opened(playerid);
Download
easyDialog.inc (Github)
If this include doesn't work...
a) Includes and filterscripts
Returning 0 under OnDialogResponse will pass the dialog to other scripts containing the callback. However, certain filterscripts and third-party libraries might return 1 instead. This interferes with the inner workings of easyDialog and causes the dialogs to not work.
Simply return 0 instead to fix the issue.
easyDialog works in parallel with OnDialogResponse, so you can use both at the same time. Older versions do not support this.