GTAMulti - GTA Türkiye

San Andreas Multiplayer => PAWN Kodlama => Anlatımlar => Konuyu başlatan: squarepants - 22 Eylül 2021, 16:46:41

Başlık: Bugün Ne Öğrendim - Öğrendiğiniz Yeni Bilgileri Paylaşın
Gönderen: squarepants - 22 Eylül 2021, 16:46:41
GİRİŞ

    Herkese merhabalar, bugün farklı forumlarda görmüş olduğun bir konsepti PAWN > PAWN kodlama adlı kategori sayfasına taşıma girişiminde bulunmak istiyorum. Bu konseptin asıl amacı, belirli bir tarihe bağlı olarak o gün ve o an PAWN Kodlama hakkında edindiğiniz yeni bilgileri konu altında paylaşarak zayıf veya ileri düzey PAWN bilgisi bulunan forum üyelerimizin kendini geliştirmesini sağlamaktır. Bu sayede elde edilen bilgi alışverişi sonucunda herkes kendini geliştirebilme imkanına sahip olacak.

KURALLAR


SONUÇ


    Bu konsepti başlatmamın asıl sebebi, PAWN hakkındaki yardım ve öğrenme taktikleri ile ilgili olarak tarafımca birçok kişiden almış olduğum taleplerdir. Bu konu başlığı adı altında bu ve bu tip soruları veya sorunları minimum düzeye indirmek amaçlanmıştır. Bu nedenle bu konseptin birçok forum üyelerimize yardımda bulunacağını umuyorum.

    Herkese iyi forumlar diliyorum.
Başlık: Ynt: Bugün Ne Öğrendim - Öğrendiğiniz Yeni Bilgileri Paylaşın
Gönderen: squarepants - 22 Eylül 2021, 16:50:40
İlk olarak ben başlıyorum. Bugün değişkenlerde stock yapısını kullanarak symbol is never used adlı uyarıdan kaçınılabildiğini öğrendim.

new OyuncuVeri = -1; //symbol is never used
new stock OyuncuVeri = -1; // uyari yok
Başlık: Ynt: Bugün Ne Öğrendim - Öğrendiğiniz Yeni Bilgileri Paylaşın
Gönderen: Holmes - 22 Eylül 2021, 18:26:39
bu konuyu ilk defa görüyorum acikcasi begendim böylelerini görmek :)
Başlık: Ynt: Bugün Ne Öğrendim - Öğrendiğiniz Yeni Bilgileri Paylaşın
Gönderen: Rodeiun - 22 Eylül 2021, 19:02:06
Yararlı, şu aralar uğraşmıyorum ancak çok şey öğrenebileceğimiz/paylaşabileceğimiz bir konu. @Hwang konu sabitlenmeli.
Başlık: Ynt: Bugün Ne Öğrendim - Öğrendiğiniz Yeni Bilgileri Paylaşın
Gönderen: Kripteks - 23 Eylül 2021, 10:28:16
Daha önceden öğrenmiştim, fakat yazayım. Bazı fonksiyonlardaki string değerden önce ! işaretini kullandığınızda byte bazında amx dosyası boyutu küçülür. Sunucu optimizasyonuyla bir alakası yok fakat dosya boyutuna önem verenler için işe yarayabilir.

Eğer string değerin içinde %s %d %i gibi işaretler varsa o string ifadenin başında ! kullanmamalısınız.Aksi halde oyunda bozuk karakterler gözükecektir.

Örnek Kullanım

PAWN Kodu: Seç

// Örnek Kullanım - 1
ShowPlayerDialog(playerid, DIALOG_WELCOME, DIALOG_STYLE_MSGBOX, !"Başlık", !"Bu bir dialog", !"Seç", !"Kapat");

// Örnek Kullanım - 2
new str[256];
format(str, sizeof str, "%s deneme", isim);
ShowPlayerDialog(playerid, DIALOG_WELCOME, DIALOG_STYLE_MSGBOX, str, !"Bu bir dialog", !"Seç", !"Kapat"); // str kısmının başında !str ifadesi kullanılsaydı hatalı olacaktı.

// Örnek Kullanım - 3
SetPVarInt(playerid, !"SayiDegeri", 5);
GetPVarInt(playerid, !"SayiDegeri");

// Örnek Kullanım - 4
SendClientMessage(playerid, -1, !"test");

Başlık: Ynt: Bugün Ne Öğrendim - Öğrendiğiniz Yeni Bilgileri Paylaşın
Gönderen: lazlow - 23 Eylül 2021, 11:02:47
Konu doğru yere taşınıp sabitlenmiştir.
Başlık: Ynt: Bugün Ne Öğrendim - Öğrendiğiniz Yeni Bilgileri Paylaşın
Gönderen: squarepants - 23 Eylül 2021, 11:54:43
Bugün #pragma dynamic yönergesini kullanarak derleyicinin ihtiyaç duyduğu bellek miktarını ayarlamayı öğrendim. Örneğin derleyici daha fazla belleğe ihtiyaç duyarsa, aşağıdaki mesajı verir:
Header size:           5032 bytes
Code size:            60924 bytes
Data size:           763444 bytes
Stack/heap size:      16384 bytes; estimated max. usage=10122 cells (40488 bytes)
Total requirements:  845784 bytes
Burada yığın boyutunun  16384 byte olduğunu ancak kullanılan bellek miktarının 10122 hücre yani her hücre 4 byte ise 10122 * 4 = 40488 byte olduğu görülebilir. Bu nedenle 10122 hücresinden daha büyük bir tam sayıya ihtiyacımız var. Bu durumda aşağıdaki örneği uygulayabilirsiniz:
#pragma dynamic  10240 // 10122 hücresinden büyük bir tamsayı değeri
Başlık: Ynt: Bugün Ne Öğrendim - Öğrendiğiniz Yeni Bilgileri Paylaşın
Gönderen: squarepants - 24 Eylül 2021, 16:19:12
Bugün #pragma semicolon adlı önişlemci yönergesini kullanarak fonksiyonların sonunda ' ; ' kullanılmasının şart olmadığını, #pragma deprecated adlı önişlemci yönergesini kullanarak, kullanımda olan herhangi bir fonksiyon veya değişkenin kullanımdan kaldırılmasının mümkün olduğunu (Kütüphane veya API geliştiricileri için kullanışlıdır), #pragma ctrlchar adlı önişlemci yönergesini kullanarak kaçış karakteri ' \ ' yerine manuel olarak bir karakter atanabildiğini, #pragma amxlimit adlı önişlemci yönergesini kullanarak derlenmiş komut dosyasının barındırabileceği byte cinsinden maksimum boyutun ayarlanabileceğini öğrendim. Örnek Kullanımlar :
#pragma semicolon 0

main()
{
    print("Merhaba GTAMulti") // ; işleci kullanilmadi - hata yok.
}

new GTAMulti = 2;
 
#pragma deprecated GTAMulti
 
main()
{
    printf("%d", GTAMulti ); // HATA - GTAMulti adli degisken artik kullanimda degil.
}

#pragma ctrlchar '$'
main()
{
   
    print("Merhaba $t$r GTAMulti"); // ' \ ' işleci yerine ' $ ' işleci kullanimda.
}

#pragma amxlimit 1000 // byte cinsinden belirtilen maksimum pozitif tamsayı değeri
Başlık: Ynt: Bugün Ne Öğrendim - Öğrendiğiniz Yeni Bilgileri Paylaşın
Gönderen: TAKTAK26 - 27 Ekim 2021, 22:00:12
Alıntı yapılan: ThePosition - 24 Eylül 2021, 16:19:12
Bugün #pragma semicolon adlı önişlemci yönergesini kullanarak fonksiyonların sonunda ' ; ' kullanılmasının şart olmadığını, #pragma deprecated adlı önişlemci yönergesini kullanarak, kullanımda olan herhangi bir fonksiyon veya değişkenin kullanımdan kaldırılmasının mümkün olduğunu (Kütüphane veya API geliştiricileri için kullanışlıdır), #pragma ctrlchar adlı önişlemci yönergesini kullanarak kaçış karakteri ' \ ' yerine manuel olarak bir karakter atanabildiğini, #pragma amxlimit adlı önişlemci yönergesini kullanarak derlenmiş komut dosyasının barındırabileceği byte cinsinden maksimum boyutun ayarlanabileceğini öğrendim. Örnek Kullanımlar :
#pragma semicolon 0

main()
{
    print("Merhaba GTAMulti") // ; işleci kullanilmadi - hata yok.
}

new GTAMulti = 2;
 
#pragma deprecated GTAMulti
 
main()
{
    printf("%d", GTAMulti ); // HATA - GTAMulti adli degisken artik kullanimda degil.
}

#pragma ctrlchar '$'
main()
{
   
    print("Merhaba $t$r GTAMulti"); // ' \ ' işleci yerine ' $ ' işleci kullanimda.
}

#pragma amxlimit 1000 // byte cinsinden belirtilen maksimum pozitif tamsayı değeri
:melek: :melek: :melek: