GTAMulti.com - Türkiye'nin Türkçe GTA Sitesi
22 Nisan 2026, 04:19:02

Label sistemi.

Başlatan Murat Budak, 12 Aralık 2021, 20:50:32

« önceki - sonraki »

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Murat Budak

Önceden yardım talebine yapmıştım, arayanlara kolaylık sağlanması için buraya atıyorum.

PAWN Kodu: Seç
#include <streamer>

#define MAX_LABEL 20
new Iterator:Label<MAX_LABEL>;

enum Labeller
{
 Text3D:LabelID,
 Yazi[64]
}
new DataLabel[MAX_LABEL][Labeller];

CMD:labelolustur(playerid, params[])
{
new yeniyazi[64], id = Iter_Free(Label);
if (id == -1) return SendClientMessage(playerid, -1, "{C20000}[!]: {FFFFFF}Max label sayısına ulaşıldı.");
if (sscanf(params, "s[64]", yeniyazi)) return SendClientMessage(playerid, -1, "{C20000}[!]: {FFFFFF}/labelolustur [yazi]");
labelolustur(playerid, yeniyazi);
return 1;
}

stock labelolustur(playerid, yeniyazi[64])
{
new labelbilgi[100], id = Iter_Free(Label), label[64], Flaot:x, Float:y, Float:z;
DataLabel[id][ID] = id;
DataLabel[id][Yazi] = yeniyazi;
format(labelbilgi, sizeof(labelbilgi), "{01c800}[!]: {FFFFFF}%d nolu geçici label eklendi.", DataLabel[id][LabelID]);
SendClientMessage(playerid, -1, labelbilgi);
GetPlayerPos(playerid, Float:x, Float:y, Float:z);
format(label, sizeof(label), "(%d)\n%s", DataLabel[id][ID], DataLabel[id][Yazi]);
DataLabel[id][LabelID] = CreateDynamic3DTextLabel(label, -1, Float:x, Float:y, Float:z, 10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, 0);
Iter_Add(Label, id);
return 1;
}

CMD:labelsil(playerid, params[])
{
new id, labelbilgi[100];
if (sscanf(params, "d", id)) return SendClientMessage(playerid, -1, "{C20000}[!]: {FFFFFF}/labelsil [id]");
if (!Iter_Contains(Label, id)) return SendClientMessage(playerid, -1, "{C20000}[!]: {FFFFFF}Geçersiz ID girdiniz.");
DataLabel[id][LabelID] = -1;
format(DataLabel[id][Yazi], 64, "");
DestroyDynamic3DTextLabel(DataLabel[id][LabelID]);
Iter_Remove(Label, id);
format(labelbilgi, sizeof(labelbilgi), "{01c800}[!]: {FFFFFF}%d nolu geçici label silindi.", id);
SendClientMessage(playerid, -1, labelbilgi);
return 1;
}

CMD:labelduzenle(playerid, params[])
{
new id, yeniyazi[64];
if (sscanf(params, "ds[64]", id, yeniyazi)) return SendClientMessage(playerid, -1, "{C20000}[!]: {FFFFFF}/labelduzenle [id] [yazi]");
if (!Iter_Contains(Label, id)) return SendClientMessage(playerid, -1, "{C20000}[!]: {FFFFFF}Geçersiz ID girdiniz.");
labelduzenle(playerid, id, yeniyazi);
return 1;
}

stock labelduzenle(playerid, id, yeniyazi[64])
{
new labelbilgi[100], label[64];
DataLabel[id][Yazi] = yeniyazi;

format(label, sizeof(label), "(%d)\n%s", DataLabel[id][ID], DataLabel[id][Yazi]);
UpdateDynamic3DTextLabelText(DataLabel[id][LabelID], -1, label);

SendClientMessage(playerid, -1, "{01c800}[!]: {FFFFFF}Geçici label düzenlendi.");
format(labelbilgi, sizeof(labelbilgi), "{01c800}[!]: {FFFFFF}yeni yazı {ff8e00}[%s].", DataLabel[id][Yazi]);
SendClientMessage(playerid, -1, labelbilgi);
return 1;
}
Son düzenlenme: 12 Aralık 2021, 23:46:04 Murat Budak
Murat Budak
Geliştirici

📧 murat.budak@buildsoftware.info
📞 +90 531 023 72 34

squarepants

İyi çalışmalar, güzel paylaşım olmuş ancak gözüme takılan birkaç ayrıntıdan bahsetmek istiyorum. İlk olarak streamer kütüphanesi tanımlanmamış, yüksek olasılıkla unutulmuş galiba. Diğer bir nokta ise DataLabel[id][ID] adında tanımlı bir ifade göremedim acaba eksik bir enum kümesi tanımlamış olabilir misiniz ?. Bu arada ek bir öneri vermek istiyorum, method içerisinde ortak amaçlar için kullanılan 2 metinsel değişken yerine tek metinsel değişken kullanmak daha ekonomik olabilir. Her hücre ortalama 4 byte ise 64 hücre yaklaşık 256 byte yer kaplar. Bunun yerine sadece labelbilgi değişkenini de kullanabilirsiniz :
stock labelolustur(playerid, yeniyazi[64])
{
new labelbilgi[100], id = Iter_Free(Label), Flaot:x, Float:y, Float:z;
DataLabel[id][ID] = id;
DataLabel[id][Yazi] = yeniyazi;
format(labelbilgi, sizeof(labelbilgi), "{01c800}[!]: {FFFFFF}%d nolu geçici label eklendi.", DataLabel[id][ID]);
SendClientMessage(playerid, -1, labelbilgi);
GetPlayerPos(playerid, Float:x, Float:y, Float:z);
        labelbilgi[0] = EOS;
format(labelbilgi, sizeof(labelbilgi), "(%d)\n%s", DataLabel[id][ID], DataLabel[id][Yazi]);
DataLabel[id][LabelID] = CreateDynamic3DTextLabel(labelbilgi, -1, Float:x, Float:y, Float:z, 10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, 0);
Iter_Add(Label, id);
return 1;
}
Tekrardan paylaşım için teşekkürler.


Murat Budak

Alıntı yapılan: ThePosition - 12 Aralık 2021, 23:12:26
İyi çalışmalar, güzel paylaşım olmuş ancak gözüme takılan birkaç ayrıntıdan bahsetmek istiyorum. İlk olarak streamer kütüphanesi tanımlanmamış, yüksek olasılıkla unutulmuş galiba. Diğer bir nokta ise DataLabel[id][ID] adında tanımlı bir ifade göremedim acaba eksik bir enum kümesi tanımlamış olabilir misiniz ?. Bu arada ek bir öneri vermek istiyorum, method içerisinde ortak amaçlar için kullanılan 2 metinsel değişken yerine tek metinsel değişken kullanmak daha ekonomik olabilir. Her hücre ortalama 4 byte ise 64 hücre yaklaşık 256 byte yer kaplar. Bunun yerine sadece labelbilgi değişkenini de kullanabilirsiniz :
stock labelolustur(playerid, yeniyazi[64])
{
new labelbilgi[100], id = Iter_Free(Label), Flaot:x, Float:y, Float:z;
DataLabel[id][ID] = id;
DataLabel[id][Yazi] = yeniyazi;
format(labelbilgi, sizeof(labelbilgi), "{01c800}[!]: {FFFFFF}%d nolu geçici label eklendi.", DataLabel[id][ID]);
SendClientMessage(playerid, -1, labelbilgi);
GetPlayerPos(playerid, Float:x, Float:y, Float:z);
        labelbilgi[0] = EOS;
format(labelbilgi, sizeof(labelbilgi), "(%d)\n%s", DataLabel[id][ID], DataLabel[id][Yazi]);
DataLabel[id][LabelID] = CreateDynamic3DTextLabel(labelbilgi, -1, Float:x, Float:y, Float:z, 10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, 0);
Iter_Add(Label, id);
return 1;
}
Tekrardan paylaşım için teşekkürler.

Normal kodlar;
PAWN Kodu: Seç
#define MAX_LABEL 20
new Text3D: Label[MAX_LABEL];
new Iterator:Label<MAX_LABEL>;

enum Labeller
{
 ID,
 Yazi[64]
}
new DataLabel[MAX_LABEL][Labeller];

CMD:labelolustur(playerid, params[])
{
new yeniyazi[64], id = Iter_Free(Label);
if (id == -1) return SendClientMessage(playerid, -1, "{C20000}[!]: {FFFFFF}Max label sayısına ulaşıldı.");
if (sscanf(params, "s[64]", yeniyazi)) return SendClientMessage(playerid, -1, "{C20000}[!]: {FFFFFF}/labelolustur [yazi]");
labelolustur(playerid, yeniyazi);
return 1;
}

stock labelolustur(playerid, yeniyazi[64])
{
new labelbilgi[100], id = Iter_Free(Label), label[64], Flaot:x, Float:y, Float:z;
DataLabel[id][ID] = id;
DataLabel[id][Yazi] = yeniyazi;
format(labelbilgi, sizeof(labelbilgi), "{01c800}[!]: {FFFFFF}%d nolu geçici label eklendi.", DataLabel[id][ID]);
SendClientMessage(playerid, -1, labelbilgi);
GetPlayerPos(playerid, Float:x, Float:y, Float:z);
format(label, sizeof(label), "(%d)\n%s", DataLabel[id][ID], DataLabel[id][Yazi]);
Label[id] = CreateDynamic3DTextLabel(label, -1, Float:x, Float:y, Float:z, 10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, 0);
Iter_Add(Label, id);
return 1;
}

CMD:labelsil(playerid, params[])
{
new id, labelbilgi[100];
if (sscanf(params, "d", id)) return SendClientMessage(playerid, -1, "{C20000}[!]: {FFFFFF}/labelsil [id]");
if (!Iter_Contains(Label, id)) return SendClientMessage(playerid, -1, "{C20000}[!]: {FFFFFF}Geçersiz ID girdiniz.");
DataLabel[id][ID] = -1;
format(DataLabel[id][Yazi], 64, "");
DestroyDynamic3DTextLabel(Label[id]);
Iter_Remove(Label, id);
format(labelbilgi, sizeof(labelbilgi), "{01c800}[!]: {FFFFFF}%d nolu geçici label silindi.", id);
SendClientMessage(playerid, -1, labelbilgi);
return 1;
}

CMD:labelduzenle(playerid, params[])
{
new id, yeniyazi[64];
if (sscanf(params, "ds[64]", id, yeniyazi)) return SendClientMessage(playerid, -1, "{C20000}[!]: {FFFFFF}/labelduzenle [id] [yazi]");
if (!Iter_Contains(Label, id)) return SendClientMessage(playerid, -1, "{C20000}[!]: {FFFFFF}Geçersiz ID girdiniz.");
labelduzenle(playerid, id, yeniyazi);
return 1;
}

stock labelduzenle(playerid, id, yeniyazi[64])
{
new labelbilgi[100], label[64];
DataLabel[id][Yazi] = yeniyazi;

format(label, sizeof(label), "(%d)\n%s", DataLabel[id][ID], DataLabel[id][Yazi]);
UpdateDynamic3DTextLabelText(Label[id], -1, label);

SendClientMessage(playerid, -1, "{01c800}[!]: {FFFFFF}Geçici label düzenlendi.");
format(labelbilgi, sizeof(labelbilgi), "{01c800}[!]: {FFFFFF}yeni yazı {ff8e00}[%s].", DataLabel[id][Yazi]);
SendClientMessage(playerid, -1, labelbilgi);
return 1;
}

Fakat ben DataLabel[id][ID] tanımlamışım fakat gereksiz bir şekilde new Text3D: Label[MAX_LABEL]; kodunuda eklemişim bunu paylaşacağım zaman kodları incelerken bunu fark ettim direk textbox üzerinde new Text3D: Label[MAX_LABEL]; kodunu silip ID tanımını LabelID tanımı olarak değiştirdim gözümden kaçmış düzenledim.

Murat Budak
Geliştirici

📧 murat.budak@buildsoftware.info
📞 +90 531 023 72 34

baum224

Ellerine sağlık.

to greatest marina reborn

beratmethe

Paylaşım İçin Teşekkürler ;)


Alpay / Security

Gelşitirilebilir ve labeller için \n eklenebilir.

the author of most of the codes you use.