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.
Paylaştığın diğer konular gibi bu konunda çok yararlı, yazan ellerine sağlık.
Paylaşım için teşekkürler.
Ellerine sağlık, hoş olmuş.
güzel olmuş
İş görür, eline sağlık.
yararlı - HORT
Başarılar. :helal:
Paylaşım için teşekkürler.
Yararlı.