← Araçlar
Diyalog oluşturucu
Bir stil seç, başlığı, metni ve düğmeleri yaz, diyaloğu bir oyuncu gibi dene ve onu gösteren ve yanıtı işleyen kodu kopyala.
Her satır bir öğedir; {RRGGBB} onu renklendirir.
Önizleme
Seçmek için bir satıra, yanıtlamak için bir düğmeye tıkla (ya da satıra çift tıkla). Oklar, Enter ve Esc oyundaki gibi çalışır.
Teleports
| Los Santos |
| San Fierro |
| Las Venturas |
| Mount Chiliad |
| Back |
OnDialogResponse’un ne aldığını görmek için önizlemedeki bir düğmeye bas.
İstemcinin sınırları içinde.
Kod
Kod hedefi
SA-MP de open.mp de bu kodu olduğu gibi alır: seçim yalnızca hangi include’larla derleneceğini belirler.
Diyaloğu göster
#define DIALOG_TELEPORTS 3
ShowPlayerDialog(playerid, DIALOG_TELEPORTS, DIALOG_STYLE_LIST, "Teleports", "Los Santos\nSan Fierro\nLas Venturas\n{FFFF00}Mount Chiliad\n{AAAAAA}Back", "Go", "Close");Yanıtı işle (zaten bir OnDialogResponse’un varsa bu if bloğunu ona ekle)
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if (dialogid == DIALOG_TELEPORTS)
{
if (!response)
{
// "Close" or Esc
return 1;
}
switch (listitem)
{
case 0: // Los Santos
{
}
case 1: // San Fierro
{
}
case 2: // Las Venturas
{
}
case 3: // Mount Chiliad
{
}
case 4: // Back
{
}
}
return 1;
}
return 0;
}Düzenlemek için bir ShowPlayerDialog yapıştır
SA-MP diyalogları nasıl çalışır
- Bir oyuncu aynı anda tek bir diyalog görür: ShowPlayerDialog açık olanın yerine geçer, -1 ID’si ise onu kapatır.
- OnDialogResponse sol düğme ya da Enter için response 1, sağ düğme ya da Esc için 0 alır; sağ düğme olmasa bile.
- Bir listede listitem seçilen satırdır (0’dan başlar), inputtext ise onun renksiz metnidir. Bir tabloda ilk sütunun metnidir ve başlık satırı sayılmaz.
- Pawn derleyicileri çok uzun satırları kabul etmez; bu yüzden uzun bir metin, tamamını alacak büyüklükte bir string’e strcat ile parça parça eklenir.