Source Code Cs 1.6 Dosyadan İstediğimiz Satırı Silme İşlemi [ Pawn #7 ]

S

Snape

Super Member
Joined
Jun 8, 2022
Messages
247
Reaction score
52
Location
Ankara
Dosyadan istediğimiz satırı silerken write_file kullanmak yerine tek bir stock ile bunu daha pratik hâle getirebiliyoruz. İlk başlarda zor gelse de alışınca çok daha kolay olduğunu anlayacaksınız. write_file kullanmamamızın nedeni artık tercih edilmemesidir.​

Pawn:
#include <amxmodx>

//Bir şeyleri kayıt ettiğimiz dosyamız (steamid olarak anlatacağım.)
new const g_szFileName[] = "addons/amxmodx/configs/steamid.ini"

//Rastgele bir public üzerinden anlatacağım.
public steamidsildigimizpublic() {
    //Burada oluşturduğumuz komutu kullanıyoruz.
    //RemoveLine(dosya adı, sileceğimiz bölüm)
    RemoveLine(g_szFileName, "STEAM_0:00000000000000");

    //Bunu fmt ile de yapabilirsiniz örneğin
    //Sunucudaki bütün oyuncuların steamidlerini dosyadan sileceğiz.
    //32 lik döngü oluşturup bu RemoveLine komutu kullanacağız.
    //Bütün oyuncuları çekmeyi anlatmıştım.
    //Authidlerini almak için yeni bir değişken oluşturuyoruz.
    for(new pPlayer = 1, szAuthid[MAX_AUTHID_LENGTH]; pPlayer <= MaxClients; pPlayer++) {
        if(!is_user_connected(pPlayer)) {
            continue;
        }

        //Authidlerini değere çektik
        get_user_authid(pPlayer, szAuthid, charsmax(szAuthid));
        //Dosyadan authidsini sildik.
        RemoveLine(g_szFileName, szAuthid);
    }
}

//Şimdi asıl yere gelelim. Dosyadan yazı silme stocku.
//Stock olarak da kullanabilirsiniz, stocku silip başına bir şey yazmadan da, fark etmez.
stock RemoveLine(const szFileName[], const szOldLine[]) {
    //Değerleri aktarmak için yeni bir dosya oluşturacağız.
    //Bu dosyanın yeri, kayıt ettiğiniz dosya yeriyle aynı olmalı
    //Yani kayıt ettiğiniz dosya addons/amxmodx/configs içindeyse diğeri de orada olmalı.
    new const szTempFile[] = "addons/amxmodx/configs/tempfile.ini";

    //Kayıt ettiğiniz dosyayı okutuyoruz. Sadece okumak için açtığımız için rt kullanıyoruz.
    new iFile = fopen(szFileName, "rt");

    if(iFile) {
        //Şimdi kayıtlı authidleri kaydedeceğimiz geçici dosyayı oluşturuyoruz ve okutuyoruz.
        //Böyle bir dosya olmadığı için kendisi otomatik oluşturacak ve üstüne yazacak, bu yüzden wt

        new iTempFile = fopen(szTempFile, "wt");

        if(iTempFile) {
            //Authidleri çekmek için 128lik yeni bir değişken oluşturuyoruz.
            new szBuffer[MAX_FMT_LENGTH];

            //Şimdi authidlerin olduğu dosyayı açıp, içindekileri bu değere atıyoruz.
            while(fgets(iFile, szBuffer, charsmax(szBuffer))) {
                trim(szBuffer);

                //Boş satırı ve sileceğimiz authidyi burada boş geçiyoruz.
                if(szBuffer[0] == EOS || equali(szBuffer, szOldLine)) {
                    continue;
                }

                //Şimdi bu atadığımız değerleri geçici dosyaya aktarıyoruz.
                //Satır atlamak için sonuna ^n koyuyoruz yoksa hepsi tek satırda olur.
                fprintf(iTempFile, "%s^n", szBuffer);
            }

            //Şimdi dosyaları kapatıyoruz.
            fclose(iFile);
            fclose(iTempFile);

            //Eski dosyayı siliyoruz
            delete_file(iFile);
            //Geçici olarak oluşturduğumuz dosyanın ismini eski dosyanın ismiyle değiştiriyoruz.
            //Bu sayede dosya ismimiz aynı kalıyor fakat silmek istediğimiz authidyi silmiş oluyoruz.
            rename_file(szFileName, szTempFile, 1);
        }
    }
}
 
P

PREVİD76

Legend Member
Joined
Jan 25, 2021
Messages
1,365
Reaction score
1,300
detaylı anlatım için teşekkürler
 
M

Mo3iN

Banned Member
Joined
Jul 5, 2022
Messages
49
Reaction score
0
Thanks for the detailed explanation.
 
K

kro33

Confirmed Memb.
Joined
Jul 3, 2022
Messages
85
Reaction score
38
Detayli bilgilendirme güzel oluyor
 
X

xxfthxx

Confirmed Memb.
Joined
Jul 6, 2022
Messages
51
Reaction score
0
detaylı anlatım için teşekkürler
 
X

xxfthxx

Confirmed Memb.
Joined
Jul 6, 2022
Messages
51
Reaction score
0
Detaylı anlatım için teşekkür ederim
 
O

oktaydursun3

Confirmed Memb.
Joined
Jul 16, 2022
Messages
87
Reaction score
3
teşekkürler cidden güzel anlatmışsın tane tane emeğine sağlık
 
SPAM IS FORBIDDEN!
  • SPAMMERS ARE BANNED FROM THE FORUM AND CANNOT USE ANY OF THE CHEATS
  • For example: thanks, thx, very good, asdqwe, working, ty and so on!
  • For example: Writing the same message over and over. thanks, thx and so on!
  • Copying and copying someone else's message is prohibited.
  • It is forbidden to send messages to increase the number of comments on threads that you have no knowledge of.
  • Write your own opinion when commenting!
  • If you see spam message, please let us know with the REPORT button!

Tema düzenleyici

Top Bottom