arkadaşlar textdrawlar galiba her oyuncuya özel oluşturuluyor mesela ben oyuncunun wanted levelini bir textdrawda göstermek istiyorum ancak oyuncuya özel oluşturuluyor galiba [playerid] ile bunun oluşturma usulü ve oyuncu çıktıgında silme usulü nedir , textdraw editör kullanıyorum
Textdraw sisteminde oyuncuya özel bir gösterim yapılmak istendiğinde textdrawların her oyuncu için ayrı ayrı oluşturulması gerekir. Bunun için temel yöntem playerid parametresi kullanılarak bireysel textdraw oluşturmak ve yönetmektir.
Öncelikle, oyuncuya özel bir textdraw oluşturmak için CreatePlayerTextDraw fonksiyonu kullanılır. Bu fonksiyon standart TextDrawCreate fonksiyonundan farklıdır, çünkü sadece belirtilen oyuncuya görünür bir textdraw nesnesi oluşturur.
Oyuncu sunucudan çıktığında ona özel oluşturulan txdleri silinmesini istiyorsan bunun için OnPlayerDisconnect callbackinin içinde ilgili oyuncunun textdrawı PlayerTextDrawDestroy fonksiyonu ile sildir.
Alıntı yapılan: Krips Je - 28 Nisan 2025, 21:33:30Textdraw sisteminde oyuncuya özel bir gösterim yapılmak istendiğinde textdrawların her oyuncu için ayrı ayrı oluşturulması gerekir. Bunun için temel yöntem playerid parametresi kullanılarak bireysel textdraw oluşturmak ve yönetmektir.
Öncelikle, oyuncuya özel bir textdraw oluşturmak için CreatePlayerTextDraw fonksiyonu kullanılır. Bu fonksiyon standart TextDrawCreate fonksiyonundan farklıdır, çünkü sadece belirtilen oyuncuya görünür bir textdraw nesnesi oluşturur.
Oyuncu sunucudan çıktığında ona özel oluşturulan txdleri silinmesini istiyorsan bunun için OnPlayerDisconnect callbackinin içinde ilgili oyuncunun textdrawı PlayerTextDrawDestroy fonksiyonu ile sildir.
hocam nicks td editör kullanıyorum , mesela altta bir textdraw var diyelım sunucunun adı vs yazıyor sağındada oyuncunun süekli konumu yazıyor diyelim bu konum oyuncuya özel olucak ancak sunucunun adı yazan textdraw herkese aynı olucak değil mi ? konum yazanı onplayerconnecte oluşturacagım sunucu adını ongamemodeinitte yapacagım? , birde herkesde görünecek olan textdrawların yönetimi mantıken nasıl oluyor.
Şimdi şöyle, eğer bir yazı sadece bir oyuncuya özel olacaksa, yani mesela "Konum: Los Santos" gibi bir şey her oyuncuda farklı olacaksa, bu textdrawı CreatePlayerTextDraw ile OnPlayerConnect içinde oluşturman gerekiyor. Yani oyuncu sunucuya girdiği anda onun için ayrı bir textdraw yaratıyorsun. Böylece herkesin kendi textdrawı oluyor.
Sunucu ismi gibi herkes için aynı olacak şeyleri ise normal TextDrawCreate ile OnGameModeInit içinde oluşturuyorsun. Yani oyun başladığında bir kere oluşuyor, herkes aynı textdrawı görüyor. Bu tür genel textdrawları yönetmek de basit, sadece bir kere gösterip saklıyorsun herkes görüyor zaten. Silmek istersen de TextDrawHideForAll veya TextDrawDestroy kullanıyorsun.
Kısaca özetlersek eğer senin için;
- Kişiye özel şeyler CreatePlayerTextDraw, OnPlayerConnect içinde
- Herkese ortak şeyler TextDrawCreate, OnGameModeInit içinde
Eğer her oyuncuda farklı bir yazı görünecekse (ki zaten öyle istiyorsun) CreatePlayerTextDraw(playerid, ...); kullanmalısın.
TextDrawCreate her oyuncuda aynı görünür, oyunculara özel değer/yazı atayamazsınız.
new
PlayerText: WantedTextDraw[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
// Örnek: Textdrawı oluşturalım
WantedTextDraw[playerid] = CreatePlayerTextDraw(playerid, ...);
PlayerTextDrawFont(playerid, WantedTextDraw[playerid], 4);
...
...
...
return 1;
}
public OnPlayerSpawn(playerid)
{
// Örnek: Oyuncu spawn olduğunda textdraw gösterilsin
PlayerTextDrawSetString(playerid, WantedTextDraw[playerid], "Aranıyorsunuz.");
PlayerTextDrawShow(playerid, WantedTextDraw[playerid]);
return 1;
}