⚡ ServerIXA CS2 Eklenti Platformu

IXMA

CS 1.6'daki AMX Mod X keyfini Counter-Strike 2'ye taşıdık — üstelik tamamen kendi geliştirdiğimiz eklenti sistemiyle. Kendi dilin, kendi derleyicin, kendi motorun. Eklentini yaz, panelden tek tıkla yükle.

Genel Bakış

IXMA Nedir?

IXMA, ServerIxa'nın Counter-Strike 2 için sıfırdan geliştirdiği eklenti ve scripting platformudur. AMX Mod X mantığında, Pawn'a benzer kendi dilimiz var: kaynak kodu .xma yazarsın, derleyici .ixma bytecode'una çevirir, sunucudaki native motor (VM) onu çalıştırır. Hepsini panelden yönetirsin — yükle, aç/kapat, sil.

📝

Kendi dilin

AMX Mod X'i bilen herkese tanıdık. public forward'lar, native fonksiyonlar, new değişkenler.

🧩

Panelden yönet

Eklentini panelden yükle, tek tıkla aç/kapat. Sunucuya SSH/FTP gerekmez.

🌍

Çok dilli

Dil sözlükleri (.txt) ile %L — her oyuncuya kendi dilinde mesaj.

Altyapı

CS2 İzole Instance Sistemi

Her müşterinin CS2 sunucusu birbirinden tamamen bağımsızdır. Ortak bir ana sürüm (master) paylaşılır; config'in, haritaların, eklentilerin ve tüm yazdıkların ise yalnızca sana ait izole alanda tutulur. Bu sayede:

🔒

İzolasyon

Senin ayarların, başkalarını etkilemez; başkalarınınki seni etkilemez.

⚡

Hız & hafiflik

Ağır içerik tek yerde paylaşıldığı için sunucular hızlı açılır, az yer kaplar.

🔄

Anında güncelleme

CS2 güncellemeleri ana sürüme gelir gelmez tüm sunuculara yansır — sen uğraşmazsın.

Kısacası: ReHLDS (CS 1.6) tarafındaki kanıtlanmış master + instance modelini CS2'ye getirdik. Eklentilerin addons/ixma altında izole çalışır; yazdığın dosyalar her zaman kendi dizinine gider.

Adım Adım

Hızlı Başlangıç

  1. 1
    Eklenti dosyanı yaz
    Bir .xma dosyası oluştur. En üstte #include <ixma> yaz — tüm API gelir.
  2. 2
    register_plugin ile kaydet
    plugin_init() içinde register_plugin(ad, sürüm, yapımcı) çağır.
  3. 3
    Panelden yükle
    Panel → Sunucu → Eklentiler → yükle. Derleme (.ixma) otomatik yapılır.
  4. 4
    Aç ve test et
    Eklentiyi aktif et; sunucu çalışırken yeniden yüklenir. Konsola print() ile log bas.

Temeller

Dil Temelleri

IXMA, Pawn/AMX Mod X ailesindendir. Birkaç temel kural:

  • Değişken: new sayi = 5, metin dizisi: new ad[32].
  • Fonksiyon tanımı: public ad(param) { ... }. Motorun çağırdıklarına forward denir.
  • Yerleşik (motor) fonksiyonlar native'dir — sen çağırırsın (örn client_print).
  • Dahil etme: #include <ixma> hepsini getirir; istersen #include <ixma_events> gibi tek tek.
  • Biçim: %d sayı, %s metin, %L dil anahtarı.

Motor Çağrıları

Forward'lar (otomatik çağrılır)

FonksiyonAçıklama
public plugin_init()Eklenti yüklenince. register_plugin ve register_event burada.
public plugin_end()Eklenti kapatılırken.
public client_connect(id)Oyuncu sunucuya girince.
public client_disconnect(id)Oyuncu çıkınca.
public client_say(id, text[])Oyuncu chat yazınca — ! komutları burada yakalanır.
public <ad>(event)register_event ile tanımlanan özel olay forward'ı.

API

Fonksiyon Referansı

Aşağıdaki tüm fonksiyonlar #include <ixma> ile hazır gelir.

Çekirdek ixma_core

FonksiyonAçıklama
register_plugin(ad[], surum[], yapimci[])Eklentiyi kaydeder. plugin_init içinde ilk çağrılır.
register_dictionary(dosya[])Dil sözlüğü (.txt) yükler: [tr]/[en] bölümleri, KEY = değer. %L ile kullanılır.
print(metin[])Sunucu konsoluna yazar.
format(hedef[], boyut, fmt[], ...)Biçimlendirir: %d sayı, %s metin, %L dil anahtarı.
equal(a[], b[])İki metni karşılaştırır → 1 / 0.
str_to_num(s[])Metni sayıya çevirir.
num_to_str(sayi, hedef[], boyut)Sayıyı metne çevirir.

Oyuncular ixma_players

FonksiyonAçıklama
client_print(id, fmt[], ...)Oyuncuya chat mesajı. Dil: client_print(id, "%L", id, "ANAHTAR").
client_print_all(fmt[], ...)Tüm bağlı oyunculara chat.
get_user_name(id, hedef[], boyut)Oyuncunun adını alır.
get_user_steamid(id, hedef[], boyut)Oyuncunun SteamID64 değerini alır.
get_health(id)Oyuncunun canını döndürür.
get_player_count()Bağlı oyuncu sayısı.
is_user_connected(id)Oyuncu bağlı mı → 1 / 0.

Olaylar ixma_events

Sık olaylar: player_death, player_hurt, player_spawn, round_start,round_end, bomb_planted, bomb_defused, weapon_fire, item_pickup.

FonksiyonAçıklama
register_event(olay[], forward[])Oyun olayını dinler; tetiklenince public forward(event) çağrılır.
event_get_int(event, key[])Olay alanını tam sayı okur (örn "dmg_health").
event_get_float(event, key[])Ondalık alanı okur (yuvarlanmış tam sayı döner).
event_get_bool(event, key[])Boolean alan okur (örn "headshot").
event_get_player(event, key[])Oyuncu alanını slot olarak döndürür (-1 yoksa). Örn "attacker", "userid".
event_get_string(event, key[], hedef[], boyut)Metin alanını okur (örn "weapon").

Admin & Yardımcı ixma_admin

Yetki bayrakları CS 1.6 ile aynı: a immünite, c kick, d ban, e slay, i chat, u menü… Yetkiler configs/users.ini'de tutulur.

FonksiyonAçıklama
is_admin(id)Oyuncu yetkili mi → 1 / 0.
has_flag(id, bayrak[])Verilen yetki bayrağı var mı → 1 / 0 (a immunite, c kick, d ban...).
get_user_flags(id, hedef[], boyut)Yetki bayraklarını yazar.
get_user_authid(id, hedef[], boyut)STEAM_0:Y:Z kimliği.
kick_user(id, sebep[])Oyuncuyu sebeple atar.
ban_user(id, dakika)Dakika cinsinden banlar (0 = kalıcı).
server_cmd(cmd[])Sunucu komutu çalıştırır.
reload_admins()users.ini yetkililerini yeniden yükler.
get_user_info(id, key[], hedef[], boyut)Oyuncu client cvar okur (örn "_pw").
random_num(min, max)[min, max] aralığında rastgele sayı.
find_player(ad[])İsimden oyuncu slotu (-1 yoksa).
set_user_data / get_user_data(id, key[], ...)Per-oyuncu geçici veri (çıkışta silinir).

Dosya & Config ixma_files

Tüm yollar addons/ixma altına kilitlidir (güvenlik). Okuma instance→master çözer; yazma kendi dizinine gider.

FonksiyonAçıklama
get_configsdir(hedef[], boyut)Master configs dizinini (mutlak yol) verir.
file_exists(yol[])Dosya var mı (instance→master çözümü) → 1 / 0.
fopen(yol[], mod[])Dosya açar: "rt" oku, "wt" yaz, "at" ekle. Handle döner.
fgets(handle, hedef[], boyut)Bir satır okur.
fputs(handle, metin[])Metin yazar (satır sonu için \n ekleyin).
fclose(handle) / feof(handle)Kapatır / dosya sonu kontrolü.
read_cfg_str(dosya[], bolum[], key[], hedef[], boyut, def[])[bölüm] altındaki key değerini okur.
read_cfg_num(dosya[], bolum[], key[], def)[bölüm] altındaki key'i sayı okur.

Tam Örnek

Örnek Eklenti — Hoş Geldin

Oyuncu girince diline göre hoş geldin mesajı atar ve !hp yazınca canını gösterir:

#include <ixma>

#define PLUGIN  "Basit Hosgeldin"
#define VERSION "1.0"
#define AUTHOR  "ServerIXA"

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_dictionary("hosgeldin.txt")
}

public client_connect(id)
{
    // Oyuncunun diline göre hoş geldin (%L = dil araması)
    client_print(id, "%L", id, "HOSGELDIN_MESAJI")
}

public client_say(id, text[])
{
    if (equal(text, "!hp"))
    {
        new msg[128]
        format(msg, 128, "Canın: %d", get_health(id))
        client_print(id, msg)
    }
}

💡 Sırada ne var? Eklentini panele yükle, aktif et ve sunucunda test et. Daha fazla örnek ve dil sözlüğü (.txt) kullanımı için panelindeki hazır eklentileri (admin, bhop, istatistik) inceleyebilirsin.

CS2 sunucunu IXMA ile güçlendir

İzole instance altyapısı + kendi eklenti sistemin. Hepsi tek panelden.

CS2 Sunucusu Kur
SERVERIXA DESTEK

Merhaba, size nasıl yardımcı olabiliriz? 👋

Müşteri temsilcilerimiz çevrimiçi. Anında yanıt almak için tıklayın!