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(PLUGINVERSIONAUTHOR)
}
public 
plugin_cfg() {
    
// Belirtilen konumda oyle bir dosya yoksa biz yaratalim.
    
if(!file_exists(file)) {
        new 
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;