PHP- Kodu:
  /* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"
// Dosyamizin konumunu file adli bir sabite baglayalim.
new const file[] = "addons/amxmodx/configs/kayitlar.log";
public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
}
public plugin_cfg() {
    // Belirtilen konumda oyle bir dosya yoksa biz yaratalim.
    if(!file_exists(file)) {
        new f = fopen(file,"wt");
        fclose(f);
    }
}
public client_putinserver(id) {
    // Oyuncu oyuna girdiginde bilgilerini toplayalim
    new name[32],steamid[32],ip[32];
    get_user_name(id,name,sizeof(name))
    get_user_authid(id,steamid,sizeof(steamid))
    get_user_ip(id,ip,sizeof(ip),0)
    
    // Eger ismi daha once dosyanin icine yazilmamissa oyuncuyu ekleyecek fonksiyonu calistiralim.
    if(!is_name_exist(id,file)) {
        add_player(name,steamid,ip)
    }
    
}
// add player fonksiyonunu yaratalim
public add_player(const name[],const steamid[], const ip[]) {
    
    new WriteData[96];
    format(WriteData,sizeof(WriteData),"^"%s^" ^"%s^" ^"%s^"",name,steamid,ip)
    write_file(file,WriteData)
    
}
// is_name_exist stockunu yaratalim. Bu Stock eger oyuncunun ismi dosyada yaziliysa true, yazili degilse false a doner.
stock is_name_exist(id,const file[]) {
    
    // Toplam satir sayısını bulalım.
    new total_lines = file_size(file,1);
    
    new txtlen,found_matching;
    new szLineText[96],user_name[32];
    
    get_user_name(id,user_name,sizeof(user_name))
    
    // Olası tüm satırlar için kontrol yapmamız gerek. Bunun için de for döngüsünü kullanalım.
    for( new line ; line < total_lines ; line++ ) { // Satır, toplam satır sayısına eşit olduğunda döngü duracaktır.
        // Dosyada belli bir satırı okutmak için bu fonksiyonu kullanalım.
        read_file(file,line,szLineText,sizeof(szLineText),txtlen)
        
        // satır boş ise döngüyi baştan alalım. Böylece olası bir boş satır varsa cpu kullanımından tasarruf etmek için
        // başa sarıp bir sonraki satıra atlayalım.
        if(szLineText[0] == 0) continue;
        
        new arg_name[32],arg_steamid[32],arg_ip[32];
        // Parse = parçala fonksiyonu, belli bir stringi bölmek için kullanılır.
        // Peki neye göre bölüyor ? Parse tırnak içinde belirtilmiş tüm yazıları parçalar.
        // Örnegin ("a" "b" "c") bir string halinde bulunuyorsa, bu fonksiyonla bu stringi 3 farklı stringe ayırabiliriz.
        // ("a") , ("b"), ("c") şekline parçalanmış olur
        parse(szLineText,arg_name,sizeof(arg_name),arg_steamid,sizeof(arg_steamid),arg_ip,sizeof(arg_ip))
        
        // Eğer ilk parametrede yazan isim bilgisi ile belirtilen oyuncunun ismi aynı ise eşleşme_bulundu değişkenine 1 ekle.
        // Ve döngüyü kır. Böylece boşa cpu kullanmamış oluruz.
        if(equali(user_name,arg_name)) {
            found_matching++
            break;
        }
        continue
    }
    // Eger eşleşme bulunduysa true ya döndür.
    if(found_matching) return true;
    // Bulunmadıysa false.
    return false;
}