GTAMulti.com - Türkiye'nin Türkçe GTA Sitesi
03 Ocak 2026, 18:05:25

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

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.


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.