Textdraw mesajları nasıl yapılır?Textdraw mesajından kastım birisini mesela birisini banladığınız zaman ekranın herhangi bir yerinde çıkacak textdraw bilgilendirmesidir. Ben ekranın alt orta kısmına kendim bir textdraw tasarladım. Dilerseniz siz başka textdraw ekleyebilirsiniz. Diyorsanız "benim diğer textdrawımla üst üste geliyor, yardım eder misin?" Maalesef bende o kadar destek yok.
New'leri tanıtalım:new Text:Olaylar[4];
new YaziDegeri[4][250];
new TextMesaji[250];
- Buradaki "Text:Olaylar" textdrawların tümünü kapsar yanındaki 4 ise 0'dan 3'e kadar yani 4 tane textdrawımız olacağı için. Görselleri görünce daha iyi anlayacaksınız.
- Buradaki "YaziDegeri" yazının karakter sayısını kapsar.
- Buradaki TextMesaji komutlarımız içindir. Diğer kodları da incelediğinizde anlayacaksınız.
OnGameModeInit'e ekleyelim: for(new line; line < 4; line++)
{
format(YaziDegeri[line], 250, " ");
}
Olaylar[0] = TextDrawCreate(326.000000, 366.000000, YaziDegeri[0]);
Olaylar[1] = TextDrawCreate(326.000000, 382.000000, YaziDegeri[0]);
Olaylar[2] = TextDrawCreate(326.000000, 398.000000, YaziDegeri[0]);
Olaylar[3] = TextDrawCreate(326.000000, 414.000000, YaziDegeri[0]);
for(new line; line < 4; line++)
{
TextDrawAlignment(Olaylar[line], 2);
TextDrawFont(Olaylar[line], 1);
TextDrawLetterSize(Olaylar[line], 0.200000, 1.000000);
TextDrawSetOutline(Olaylar[line], 0);
TextDrawSetShadow(Olaylar[line], 0);
TextDrawUseBox(Olaylar[line], 1);
TextDrawBoxColor(Olaylar[line], 100);
TextDrawTextSize(Olaylar[line], 83.000000, 241.000000);
}
- Şimdi burada 4 tane textdrawın bir döngü içerisinde olacağını gösterdik.
- Textdrawların koordinatlarını gösterdik, görüldüğü gibi yukarıdan aşağıya büyüyor.
Stock'u ekleyelim:stock TextdrawYazi(playerid, const text[])
{
for(new line; line < 4; line++)
{
TextDrawShowForPlayer(playerid, Olaylar[line]);
}
for(new line; line < 4; line++)
{
TextDrawHideForAll(Olaylar[line]);
if(line < 3)
{
YaziDegeri[line] = YaziDegeri[line+1];
TextDrawSetString(Olaylar[line], YaziDegeri[line]);
}
}
format(YaziDegeri[3], 250, "%s", text);
TextDrawSetString(Olaylar[3], YaziDegeri[3]);
for(new line; line < 4; line++)
{
TextDrawShowForAll(Olaylar[line]);
}
return 1;
}
- Burada line değişkenini anlattık ve "Olaylar" textdrawın açılıp/kapanmasından söz ettik.
Bir süre sonra textdrawlar sıfırlansın istiyorsanız:OnGameModeInit'e:SetTimer("TextdrawSifirla", 10000, true);
Modun sonuna:forward TextdrawSifirla();
public TextdrawSifirla()
{
TextdrawYazi(-1, "");
TextdrawYazi(-1, "");
TextdrawYazi(-1, "");
TextdrawYazi(-1, "");
TextdrawYazi(-1, "");
TextdrawYazi(-1, "");
return 1;
}
Textdraw çıkmasını istediğimiz tüm komutlara:
if(strcmp(cmd, "/test", true) == 0)
{
SetPlayerHealth(playerid, 50);
format(TextMesaji, 250, "%s adli oyuncu /can komutunu kullandi.", getName(playerid));
TextdrawYazi(-1, TextMesaji);
return 1;
}
- Şimdi ben burada bir test komutu oluşturdum, altına gördüğünüz üzere can komutu için textdrawları kullandım. Siz hangi komuta ekleyecekseniz düzenleyin.
Ha, unutmadan:stock getName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
return name;
}
- Sizde yoksa ekleyin ki; "%s adli oyuncu" derken oyun size "%s kim" demesin.
Sonuç:(https://i.hizliresim.com/8Yn01n.png)
eline sağlık güzel anlatım :helal:
Yararlı paylaşım,eline sağlık.
Gayet Kullanışlı.Eline Sağlık.
Anlatım için teşekkürler bilmeyenler için yararlı.
Aradığım ders! Teşekkürler...
paylaşım için teşekkürler fakat bu can komutunu yazdığımızda alt textdrawın üstünde çıkmaz mı bu textdrawlı yazı ben üstünde çıkmasını istiyorum yardımcı olacak var mı ?
Yararlı.