GTAMulti.com - Türkiye'nin Türkçe GTA Sitesi

[ANLATIM] easyDialog.inc - Kolay menüler oluşturun!

Başlatan Lawnless, 20 Kasım 2019, 04:35:10

« önceki - sonraki »

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Lawnless

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:


PAWN Kodu: Seç
#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;
}
PAWN Kodu: Seç
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;

PAWN Kodu: Seç
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:

PAWN Kodu: Seç
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.

PAWN Kodu: Seç
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.

PAWN Kodu: Seç
Dialog_Close(oyuncuid);Eğer oyuncuda bir dialog açıksa, o dialogu kapatmamızı sağlıyor.

PAWN Kodu: Seç
Dialog_Opened(oyuncuid);Oyuncunun gözünün önünde duran bir dialog var mı diye kontrol etmemizi sağlıyor.


Son düzenlenme: 20 Kasım 2019, 04:38:27 GreeJolly
public class gtaMultiSignature {
    public static void main(String[] args) {
      System.out.println("How can I help you?");
      System.out.println("C#, C++, Java, Python, LUA, PHP, .NET, Typescript, Javascript");
    }
}

Myalis



Gladiator


Impeccable