İçeriğe geç
HABER

SA-MP Pawn Scripting'e Giriş: İlk Adımlar

GTA Sunucu Editör Ekibi 7 dk okuma

SA-MP sunucularının tamamı Pawn ile yazılır. Bu rehber, hiç kod yazmamış birinin nereden başlayacağını ve ilk çalışan script'ini nasıl üreteceğini anlatıyor.

Pawn nedir?

Pawn, gömülü sistemler için tasarlanmış, C'ye benzeyen küçük bir script dilidir. SA-MP bu dili sunucu tarafı mantığı yazmak için kullanır.

Önemli bir gerçek: Pawn, SA-MP ekosistemi dışında pek karşına çıkmaz. Genel programlama öğrenmek istiyorsan başka dillerle başlamak daha mantıklı; ama SA-MP sunucusu yazmak istiyorsan başka seçenek yok.

Neye ihtiyacın var?

  • SA-MP sunucu paketi — Pawn derleyicisi bununla birlikte gelir.
  • Bir düzenleyici — Pakette gelen Pawno kullanılabilir; daha modern bir deneyim için Sublime Text veya VS Code gibi bir editör Pawn eklentisiyle kullanılabilir.
  • Test sunucusu — Kendi bilgisayarında çalıştırabilirsin.

Dosya yapısını anla

Kod yazmaya başlamadan önce bu yapıyı bilmek gerekir:

  • gamemodes/ — Ana oyun modu. Sunucunun ne olduğunu belirleyen kod burada.
  • filterscripts/ — Bağımsız çalışabilen yardımcı script'ler. Gamemode'u yeniden başlatmadan yüklenip kaldırılabilir.
  • pawno/include/ — Kütüphane dosyaları (.inc).
  • scriptfiles/ — Script'lerin okuyup yazdığı veri dosyaları.

.pwn uzantılı dosya kaynak kodudur; derlendiğinde .amx üretir. Sunucu .amx dosyasını çalıştırır.

İlk script'in

En basit çalışan gamemode iskeleti şöyle görünür:

#include <a_samp>

public OnGameModeInit()
{
    SetGameModeText("Ilk Sunucum");
    AddPlayerClass(0, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0);
    return 1;
}

public OnPlayerConnect(playerid)
{
    SendClientMessage(playerid, 0xFFFFFFFF, "Sunucuya hos geldin!");
    return 1;
}

Burada olan şey:

  • #include <a_samp> — SA-MP'nin temel fonksiyonlarını kullanılabilir kılar. Her script'te olmalı.
  • OnGameModeInit — Sunucu başladığında bir kez çalışır.
  • AddPlayerClass — Oyuncunun doğacağı konum ve karakteri tanımlar.
  • OnPlayerConnect — Bir oyuncu bağlandığında çalışır.

Kendi komutunu yaz

public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp(cmdtext, "/selam", true) == 0)
    {
        SendClientMessage(playerid, 0x00FF00FF, "Selam!");
        return 1;
    }
    return 0;
}

Dikkat edilmesi gereken: fonksiyonun sonunda return 0 olmalı. Bu, "bu komutu tanımadım" anlamına gelir ve SA-MP'nin bilinmeyen komut mesajını göstermesini sağlar. Her durumda return 1 dönersen yanlış yazılan komutlar sessizce yutulur.

Derleme ve test

  1. Dosyayı gamemodes/ klasörüne .pwn uzantısıyla kaydet.
  2. Pawno ile aç ve derle (F5). Hata varsa alt panelde görünür.
  3. server.cfg dosyasında gamemode0 satırını dosya adıyla güncelle (uzantısız).
  4. Sunucuyu başlat ve 127.0.0.1:7777 adresine bağlan.

Sunucu kurulumunun tamamı için sunucu açma rehberimize bakabilirsin.

Yeni başlayanların en sık yaptığı hatalar

  • Derlemeyi unutmak. .pwn dosyasını değiştirip derlemezsen sunucu eski .amx dosyasını çalıştırmaya devam eder. "Değişikliğim görünmüyor" şikâyetinin bir numaralı sebebi budur.
  • Uyarıları görmezden gelmek. Derleyici uyarıları (warning) hata değildir ama çoğu zaman gerçek bir sorunu işaret eder.
  • Devasa hazır gamemode ile başlamak. 30.000 satırlık bir kodu anlamadan değiştirmeye çalışmak, öğrenmenin en yavaş yoludur. Boş bir script'ten başlayıp üzerine eklemek çok daha etkilidir.
  • Yedek almamak. Çalışan bir sürümü değiştirmeden önce kopyala.
  • Kullanıcı girdisini doğrulamamak. Oyuncudan gelen her veriyi kontrol etmelisin; aksi halde sunucun kolayca çökertilebilir.

Nasıl ilerlemelisin?

Öneri sırası: önce basit komutlar yaz, sonra oyuncu verilerini dosyaya kaydetmeyi öğren, ardından veritabanı kullanmaya geç. Her adımda çalışan küçük bir şey üretmek, büyük bir projeyi yarıda bırakmaktan daha çok öğretir.

Takıldığın yerde SA-MP forumumuzda sorabilirsin — kodunun ilgili kısmını ve aldığın hata mesajını paylaşmak, cevap alma süreni ciddi biçimde kısaltır.

Sık Sorulan Sorular

SA-MP script yazmak için hangi dili öğrenmeliyim?+

SA-MP sunucuları Pawn dili ile yazılır. Pawn, SA-MP ekosistemine özgüdür ve C benzeri bir sözdizimi kullanır.

Script'imi değiştirdim ama sunucuda görünmüyor, neden?+

Büyük olasılıkla derlemeyi unuttun. .pwn dosyasındaki değişiklikler derlenip .amx üretilmeden sunucuya yansımaz.

Hazır gamemode kullanmalı mıyım?+

Öğrenme amacıyla boş bir script'ten başlamak çok daha etkilidir. Hazır gamemode'lar hızlı başlangıç sağlar ama anlamadığın kodu değiştirmek zordur.

İlgili içerikler

San Andreas için diğer kaynaklar