Nedir bu easyDialog.inc?
Bu include sayesinde, Pawno'da kurduğumuz çeşitli menüleri daha kısa kodlarla daha detaylı bir şekilde yapabiliyor ve bu sayede neyi nereye koyduğumuzu unutmadan kodlamaya devam edebiliyoruz. Yapacağınız menüler bu include sayesinde daha kolay ve hızlı bitirilebilecek hale geliyor.
Ve bu özelliği bize sunduğu, bu include'u yaptığı için Emmet'ede teşekkür ediyoruz...
Örnek vermek gerekir ise:
#define DIALOG_SILAHLAR (1337)
CMD:silahlar(playerid, params[])
{
ShowPlayerDialog(playerid, DIALOG_SILAHLAR, DIALOG_STYLE_LIST, "Silah Menüsü", "9mm\nSilenced 9mm\nDesert Eagle\nShotgun\nSawn-off Shotgun\nCombat Shotgun", "Seç", "İptal");
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if (dialogid == DIALOG_SILAHLAR)
{
if (response)
{
new str[64];
format(str, 64, "'%s' silahını seçtiniz.", inputtext);
GivePlayerWeapon(playerid, listitem + 22, 500);
SendClientMessage(playerid, -1, str);
}
}
return 1;
}CMD:silahlar(playerid, params[])
{
Dialog_Show(playerid, SilahMenusu, DIALOG_STYLE_LIST, "Silah Menüsü", "9mm\nSilenced 9mm\nDesert Eagle\nShotgun\nSawn-off Shotgun\nCombat Shotgun", "Seç", "İptal");
return 1;
}
Dialog:SilahMenusu(playerid, response, listitem, inputtext[])
{
if (response)
{
new str[64];
format(str, 64, "'%s' silahını seçtiniz.", inputtext);
GivePlayerWeapon(playerid, listitem + 22, 500);
SendClientMessage(playerid, -1, str);
}
return 1;
}Yukarda vermiş olduğum iki kodu, uzunlukları, göze görünürlükleri ve anlaşılabilmeleri açısından karşılaştırın. İkinci kod easyDialog.inc kullanılarak oluşturuldu ve gözünüze daha kolay görünüyor, daha kısa, daha anlaşılır kodlar. Birinde dialog id'sini tanımlarken diğerinde tanımlamak zorunda kalmadık.Başka özellikleride var mı bunun?
Bu soruyu kesinlikle sordunuz, SA:MP'ın bizlere sunduğu OnDialogResponse publici gibi bir görev yapan Callback'imizde var. Ancak bu 'Dialog ile etkileşime girildiğinde' olayını temsil ediyor. O da şu şekilde;public OnDialogPerformed(playerid, dialog[], response, success)
{
return 1;
}Sizlere vermiş olduğum iki kod örneğine OnDialogPerformed Callbackiyle ekleme yapabiliriz, o da şöyle olacaktır:public OnDialogPerformed(playerid, dialog[], response, success) // Dialog'da bir yere tıkladığında
{
if (!strcmp(dialog, "SilahMenusu") && IsPlayerInAnyVehicle(playerid)) // Eğer dialog Silah Menüsü ise ve Oyuncu bir araçtaysa
{
SendClientMessage(playerid, -1, "Bir silah almak istiyorsanız, araçtan inmelisiniz."); // Mesajı gönder
return 0;
}
return 1;
}Fonksiyonları anlatalım biraz...
Yine yukarda bahsetmiştim, daha kısa kodlar ve daha anlaşılır kodlar yazmamıza olanak sağlıyor diye. İşte bunları bu fonksiyonlar sayesinde yapıyoruz. Şimdi sizlere easyDialog.inc'in fonksiyonlarını anlatacağım.Dialog_Show(oyuncuid, dialogid, dialogtarzı(LIST,MSGBOX...), başlık, içerik, buton1, buton2);Bu fonksiyon "ShowPlayerDialog"un yerini alıyor. Oyuncuya bir dialog açıyoruz.Dialog_Close(oyuncuid);Eğer oyuncuda bir dialog açıksa, o dialogu kapatmamızı sağlıyor.Dialog_Opened(oyuncuid);Oyuncunun gözünün önünde duran bir dialog var mı diye kontrol etmemizi sağlıyor.(https://cdn.pixabay.com/photo/2016/06/15/14/54/download-1459071_960_720.png)
(easyDialog.inc) İndir! (https://www.mediafire.com/file/dhz54b3d2pfr9yp/easyDialog.inc/file)
ellerine sağlık, teşekkürler
Yararlı.
Paylaşım için teşekkürler.
Güzel anlatım, emeğinize sağlık.:helal: