GTAMulti.com - Türkiye'nin Türkçe GTA Sitesi
17 Kasım 2025, 23:18:44

Pawn için Pointerlar

Başlatan erorcun, 04 Mart 2017, 01:04:34

« önceki - sonraki »

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

erorcun

Selam, C, C++ ile içli dışlı olanlar pointerları, OOP ile içli dışlı olanlar ise bir class'ı başka bir değişkene atayınca o objenin değil de adresinin(yani pointerının) gittiğini bilir. İşte bu include bu fasiliteyi Pawn'a taşıyor.

Yani üstte yazdıklarımı bilmiyorsanız üzgünüm ama araştırmak durumundasınız, yoksa bu include'dan birşey anlamayacaksınız.

Normal değişkenlerin adresini almak

new
g_Test[] = {123, 456, 789}
;

public OnGameModeInit() {
new address = GetVariableAddress(g_Test);

// @ptr array'i tüm değişkenlerin bulunduğu array. Alttaki kod bizim array'deki 2. değeri değiştiriyor
// !! Dikkat, multidimensional arraylerde ilk dimension addressin sonrasında virgül koyarak yazılıyor,
// örn: @ptr[address, 1][1] = 444;
@ptr[address][1] = 444;

// 3 değeri de yazdır
printf("%d, %d, %d", @ptr[address][0], @ptr[address][1], @ptr[address][2]);
}


Fonksiyon argümanlarının adresini almak

Alttaki örnek kod, fonksiyon argümanlarını istediğimiz bir stringe ekliyor.

public OnGameModeInit() {
new buf[128] = "Lorem";

concat(buf, sizeof(buf), "ipsum", "dolor", "sit", "amet,", "consectetur", "adipiscing.");

// Çıktısı: Lorem ipsum dolor sit amet, consectetur adipiscing.
print(buf);
}

// 2. argümandan sonraki tüm argümanları output'a ekle
stock concat(output[], maxsize = sizeof(output), ...) {
new
arg_count = numargs()
;

for (new i = 2; i < arg_count; i++) {
// Önce boşluk
strcat(output, " ", maxsize);

// Sonra string'in kendisi
strcat(output, @arg[i], maxsize);
}
}


Özet olarak

Normal veri tipi

@ptr[address] - değişken
@arg[kaçıncı argüman] - argüman


Tek boyutlu array

@ptr[address][sıra] - değişken
@arg[kaçıncı argüman][sıra] - argüman


Çok boyutlu array

@ptr[address, ilk_boyut][ikinci_boyut][ucuncu_boyut]..... - değişken
// @arg sadece array'in base adresine erişebiliyor


Tabi bütün bu iş SA-MP Forum'daki yetenekli coderlardan Slice'a ait.
Konu linki şu: https://forum.sa-mp.com/showthread.php?t=311757
İlk mesajın altındaki "Download" kısmından include'yi indirebilirsiniz.


Toretto

Paylaştığın diğer konular gibi bu konunda çok yararlı, yazan ellerine sağlık.

Ücretli pawno, grafik istekleriniz için özel mesaj atınız.

trabzon

Paylaşım için teşekkürler.


Leture

Ellerine sağlık, hoş olmuş.


DarkBlue


Zeus

İş görür, eline sağlık.


diverse

@pforganization & @pfmenajerlik & @pfdigital

-emekli yönetici

Pablo

Alıntı




Pawnotürk Üyesi 2017-2020


FalafelÇorba


Ryroz

Paylaşım için teşekkürler.


FelleR