GTAMulti - GTA Türkiye

San Andreas Multiplayer => PAWN Kodlama => Mod Galerisi => Konuyu başlatan: erorcun - 04 Mart 2017, 01:04:34

Başlık: Pawn için Pointerlar
Gönderen: erorcun - 04 Mart 2017, 01:04:34
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: http://forum.sa-mp.com/showthread.php?t=311757
İlk mesajın altındaki "Download" kısmından include'yi indirebilirsiniz.
Başlık: Ynt: Pawn için Pointerlar
Gönderen: Toretto - 05 Mart 2017, 00:16:51
Paylaştığın diğer konular gibi bu konunda çok yararlı, yazan ellerine sağlık.
Başlık: Ynt: Pawn için Pointerlar
Gönderen: trabzon - 05 Mart 2017, 03:59:43
Paylaşım için teşekkürler.
Başlık: Ynt: Pawn için Pointerlar
Gönderen: Leture - 12 Mayıs 2017, 13:30:25
Ellerine sağlık, hoş olmuş.
Başlık: Ynt: Pawn için Pointerlar
Gönderen: DarkBlue - 31 Temmuz 2017, 22:14:57
güzel olmuş
Başlık: Ynt: Pawn için Pointerlar
Gönderen: Zeus - 17 Ağustos 2017, 13:22:08
İş görür, eline sağlık.
Başlık: Ynt: Pawn için Pointerlar
Gönderen: diverse - 28 Mart 2019, 16:46:22
yararlı - HORT
Başlık: Ynt: Pawn için Pointerlar
Gönderen: Pablo - 15 Haziran 2019, 04:06:02
Alıntı yapılan: Leture - 12 Mayıs 2017, 13:30:25

Ellerine sağlık, hoş olmuş.
Başlık: Ynt: Pawn için Pointerlar
Gönderen: QrzR - 15 Haziran 2019, 18:02:05
Alıntı yapılan: ArdaTR - 15 Haziran 2019, 04:06:02

Alıntı yapılan: Leture - 12 Mayıs 2017, 13:30:25

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

Başlık: Ynt: Pawn için Pointerlar
Gönderen: FalafelÇorba - 16 Haziran 2019, 18:37:25
Başarılar.  :helal:
Başlık: Ynt: Pawn için Pointerlar
Gönderen: Ryroz - 17 Haziran 2019, 17:04:42
Paylaşım için teşekkürler.
Başlık: Ynt: Pawn için Pointerlar
Gönderen: FelleR - 27 Haziran 2019, 01:45:08
Yararlı.