Konu

#1
Merhabalar, gungame sunucusu için map yetmediği için ve oyuncuların istek maplarını eklemek adına, istek map eklentisi yapmak istiyorum.

Oyuncu say' /istekmap yazdığı zaman öneri haritalarını yazıp, panelde kaydetmesi gereken bir eklenti istiyorum. Şimdiden teşekkürler.
#2
(18-03-2025, 17:53)Serhat Öndeş Adlı Kullanıcıdan Alıntı: Merhabalar, gungame sunucusu için map yetmediği için ve oyuncuların istek maplarını eklemek adına, istek map eklentisi yapmak istiyorum.

Oyuncu say' /istekmap yazdığı zaman öneri haritalarını yazıp, panelde kaydetmesi gereken bir eklenti istiyorum. Şimdiden teşekkürler.
deneyin

Kod:
#include <amxmodx>

#define CONFIG_FILE "addons/amxmodx/configs/istekmaps.ini"
#define TAG "^3[^4ISTEK^3]" // Renkli mesaj tagı

public plugin_init() {
    register_plugin("Istek Harita", "1.2", "Red*");

    register_clcmd("say /istekmap", "Cmd_IstekMap");
    register_clcmd("say_team /istekmap", "Cmd_IstekMap");
    register_clcmd("map_girin", "Cmd_IstekMapInput");
}

public Cmd_IstekMap(id) {
    client_print_color(id, 0, "%s ^1Lutfen istediginiz harita adini yazin (^4mesaj kutusu acildi^1).", TAG);
    client_cmd(id, "messagemode map_girin");
    return PLUGIN_HANDLED;
}

public Cmd_IstekMapInput(id) {
    new szMap[64];
    read_args(szMap, charsmax(szMap));
    remove_quotes(szMap);

    if (!szMap[0]) {
        client_print_color(id, 0, "%s ^1Harita adi girilmedi!", TAG);
        return PLUGIN_HANDLED;
    }

    if (!File_ContainsMap(szMap)) {
        new fp = fopen(CONFIG_FILE, "a");
        if (fp) {
            fprintf(fp, "%s^n", szMap);
            fclose(fp);
        }
        client_print_color(id, 0, "%s ^1%s ^3haritasi kaydedildi!", TAG, szMap);
    } else {
        client_print_color(id, 0, "%s ^1%s ^3zaten listede var!", TAG, szMap);
    }

    return PLUGIN_HANDLED;
}

bool:File_ContainsMap(const szMap[]) {
    new szLine[64];
    new fp = fopen(CONFIG_FILE, "r");

    if (!fp) return false;

    while (fgets(fp, szLine, charsmax(szLine))) {
        trim(szLine);
        if (equal(szLine, szMap)) {
            fclose(fp);
            return true;
        }
    }

    fclose(fp);
    return false;
}

Mr.GaminG Pro Public
Son Düzenleme: 18-03-2025, 19:35, Düzenleyen: Red*.
#3
Eline sağlık hocam güzel çalışıyor. Ek olarak rcon yetkine bağlı yöneticilerin eklenen haritaların listesini görmesini sağlayacağı bir şekilde güncelleme sağlar mısınız?

ds-screenshot-28-14827
#4
(18-03-2025, 19:35)Serhat Öndeş Adlı Kullanıcıdan Alıntı: Eline sağlık hocam güzel çalışıyor. Ek olarak rcon yetkine bağlı yöneticilerin eklenen haritaların listesini görmesini sağlayacağı bir şekilde güncelleme sağlar mısınız?

ds-screenshot-28-14827
deneyin

Kod:
#include <amxmodx>

#define CONFIG_FILE "addons/amxmodx/configs/istekmaps.ini"
#define TAG "^3[^4TAG^3]" // Renkli mesaj tagı

public plugin_init() {
    register_plugin("Istek Harita", "1.0", "Red*");

    register_clcmd("say /istekmap", "Cmd_IstekMap");
    register_clcmd("say_team /istekmap", "Cmd_IstekMap");
    register_clcmd("map_girin", "Cmd_IstekMapInput");
    register_clcmd("say /istekharitalar", "Cmd_ListIstekHaritalar");
    register_clcmd("say_team /istekharitalar", "Cmd_ListIstekHaritalar");
}

public Cmd_IstekMap(id) {
    client_print_color(id, 0, "%s ^1Lutfen istediginiz harita adini yazin (^4mesaj kutusu acildi^1).", TAG);
    client_cmd(id, "messagemode map_girin");
    return PLUGIN_HANDLED;
}

public Cmd_IstekMapInput(id) {
    new szMap[64];
    read_args(szMap, charsmax(szMap));
    remove_quotes(szMap);

    if (!szMap[0]) {
        client_print_color(id, 0, "%s ^1Harita adi girilmedi!", TAG);
        return PLUGIN_HANDLED;
    }

    if (!File_ContainsMap(szMap)) {
        new fp = fopen(CONFIG_FILE, "a");
        if (fp) {
            fprintf(fp, "%s^n", szMap);
            fclose(fp);
        }
        client_print_color(id, 0, "%s ^1%s ^3haritasi kaydedildi!", TAG, szMap);
    } else {
        client_print_color(id, 0, "%s ^1%s ^3zaten listede var!", TAG, szMap);
    }

    return PLUGIN_HANDLED;
}

public Cmd_ListIstekHaritalar(id) {
    if (!(get_user_flags(id) & ADMIN_RCON)) {  // RCON yetkisi olmayanlar göremez
        client_print_color(id, 0, "%s ^1Bu komutu kullanmak icin RCON yetkisine sahip olmalisiniz!", TAG);
        return PLUGIN_HANDLED;
    }

    ShowIstekMapsMenu(id);
    return PLUGIN_HANDLED;
}

public ShowIstekMapsMenu(id) {
    new menu = menu_create("Istek Haritalar Listesi", "IstekMapsMenuHandler");

    new szLine[64], fp = fopen(CONFIG_FILE, "r");

    if (!fp) {
        client_print_color(id, 0, "%s ^1Istek haritalar listesi bulunamadi!", TAG);
        return;
    }

    while (fgets(fp, szLine, charsmax(szLine))) {
        trim(szLine);
        if (szLine[0]) {
            menu_additem(menu, szLine);
        }
    }

    fclose(fp);

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_display(id, menu, 0);
}

public IstekMapsMenuHandler(id, menu, item) {
    menu_destroy(menu);
    return PLUGIN_HANDLED;
}

bool:File_ContainsMap(const szMap[]) {
    new szLine[64];
    new fp = fopen(CONFIG_FILE, "r");

    if (!fp) return false;

    while (fgets(fp, szLine, charsmax(szLine))) {
        trim(szLine);
        if (equal(szLine, szMap)) {
            fclose(fp);
            return true;
        }
    }

    fclose(fp);
    return false;
}

Mr.GaminG Pro Public
Son Düzenleme: 18-03-2025, 20:01, Düzenleyen: Red*.
#5
Elinize kolunuza sağlık, çok güzel olmuş.

Ufak bir güncelleme olarak, seçilen haritayı silme şansımız var mı?
Örnek, fy_dust2 basınca silebilir mi?

Ek olarak; Eğerki oyuncu istek olarak listeye fy_dust2 haritası eklediği zaman harita sunucuya eklenmiş ise listeye ekleyen oyunca istek olarak eklediğiniz harita eklendi diye bilgi geçme şansı var mıdır?

ds-screenshot-32-14828
Son Düzenleme: 18-03-2025, 20:10, Düzenleyen: Serhat Öndeş.
#6
(18-03-2025, 20:07)Serhat Öndeş Adlı Kullanıcıdan Alıntı: Elinize kolunuza sağlık, çok güzel olmuş.

Ufak bir güncelleme olarak, seçilen haritayı silme şansımız var mı?
Örnek, fy_dust2 basınca silebilir mi?

Ek olarak; Eğerki oyuncu istek olarak listeye fy_dust2 haritası eklediği zaman harita sunucuya eklenmiş ise listeye ekleyen oyunca istek olarak eklediğiniz harita eklendi diye bilgi geçme şansı var mıdır?
dediğiniz sorun çıkarabilir ayrıca oyuncu serverde olmadıgı zaman girince yazması gerekecek uğraştırıcı bir sistem olur
Discord Adresim: https://discord.gg/zWPzA88rNF
#7
(18-03-2025, 20:07)Serhat Öndeş Adlı Kullanıcıdan Alıntı: Elinize kolunuza sağlık, çok güzel olmuş.

Ufak bir güncelleme olarak, seçilen haritayı silme şansımız var mı?
Örnek, fy_dust2 basınca silebilir mi?

Ek olarak; Eğerki oyuncu istek olarak listeye fy_dust2 haritası eklediği zaman harita sunucuya eklenmiş ise listeye ekleyen oyunca istek olarak eklediğiniz harita eklendi diye bilgi geçme şansı var mıdır?

ds-screenshot-32-14828

Seçilen haritayı silme olayını yaptım fakat diğer dediğinizi daha bilgili birisi yaparsa daha iyi olur.

Kod:
#include <amxmodx>

#define CONFIG_FILE "addons/amxmodx/configs/istekmaps.ini"
#define TAG "^3[^4TAG^3]" // Renkli mesaj tagı

public plugin_init() {
    register_plugin("Istek Harita", "1.0", "Red*");

    register_clcmd("say /istekmap", "Cmd_IstekMap");
    register_clcmd("say_team /istekmap", "Cmd_IstekMap");
    register_clcmd("map_girin", "Cmd_IstekMapInput");
    register_clcmd("say /istekharitalar", "Cmd_ListIstekHaritalar");
    register_clcmd("say_team /istekharitalar", "Cmd_ListIstekHaritalar");
}

public Cmd_IstekMap(id) {
    client_print_color(id, 0, "%s ^1Lutfen istediginiz harita adini yazin (^4mesaj kutusu acildi^1).", TAG);
    client_cmd(id, "messagemode map_girin");
    return PLUGIN_HANDLED;
}

public Cmd_IstekMapInput(id) {
    new szMap[64];
    read_args(szMap, charsmax(szMap));
    remove_quotes(szMap);

    if (!szMap[0]) {
        client_print_color(id, 0, "%s ^1Harita adi girilmedi!", TAG);
        return PLUGIN_HANDLED;
    }

    if (!File_ContainsMap(szMap)) {
        new fp = fopen(CONFIG_FILE, "a");
        if (fp) {
            fprintf(fp, "%s^n", szMap);
            fclose(fp);
        }
        client_print_color(id, 0, "%s ^1%s ^3haritasi kaydedildi!", TAG, szMap);
    } else {
        client_print_color(id, 0, "%s ^1%s ^3zaten listede var!", TAG, szMap);
    }

    return PLUGIN_HANDLED;
}

public Cmd_ListIstekHaritalar(id) {
    if (!(get_user_flags(id) & ADMIN_RCON)) {  // RCON yetkisi olmayanlar göremez
        client_print_color(id, 0, "%s ^1Bu komutu kullanmak icin RCON yetkisine sahip olmalisiniz!", TAG);
        return PLUGIN_HANDLED;
    }

    ShowIstekMapsMenu(id);
    return PLUGIN_HANDLED;
}

public ShowIstekMapsMenu(id) {
    new menu = menu_create("Istek Haritalar Listesi", "IstekMapsMenuHandler");

    new szLine[64], fp = fopen(CONFIG_FILE, "r");

    if (!fp) {
        client_print_color(id, 0, "%s ^1Istek haritalar listesi bulunamadi!", TAG);
        return;
    }

    new count = 0;
    while (fgets(fp, szLine, charsmax(szLine))) {
        trim(szLine);
        if (szLine[0]) {
            menu_additem(menu, szLine, szLine, 0);
            count++;
        }
    }

    fclose(fp);

    if (count == 0) {
        client_print_color(id, 0, "%s ^1Istek harita listesi bos!", TAG);
        return;
    }

    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
    menu_display(id, menu, 0);
}

public IstekMapsMenuHandler(id, menu, item) {
    if (item == MENU_EXIT) {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }

    new szInfo[64];
    menu_item_getinfo(menu, item, _, szInfo, charsmax(szInfo));

    if (RemoveMapFromFile(szInfo)) {
        client_print_color(id, 0, "%s ^1%s ^3listeden kaldirildi!", TAG, szInfo);
    } else {
        client_print_color(id, 0, "%s ^1%s ^3silinirken hata olustu!", TAG, szInfo);
    }

    ShowIstekMapsMenu(id);
    menu_destroy(menu);
    return PLUGIN_HANDLED;
}

bool:RemoveMapFromFile(const szMap[]) {
    new szLine[64], szContent[2048];
    new fp = fopen(CONFIG_FILE, "r");

    if (!fp) return false;

    new bool:bDeleted = false, bool:isEmpty = true;

    while (fgets(fp, szLine, charsmax(szLine))) {
        trim(szLine);
        if (!equal(szLine, szMap)) {
            format(szContent, charsmax(szContent), "%s%s^n", szContent, szLine);
            isEmpty = false;
        } else {
            bDeleted = true;
        }
    }

    fclose(fp);

    if (bDeleted) {
        delete_file(CONFIG_FILE);
        if (!isEmpty) {
            new fpWrite = fopen(CONFIG_FILE, "w");
            if (fpWrite) {
                fprintf(fpWrite, "%s", szContent);
                fclose(fpWrite);
            }
        }
    }

    return bDeleted;
}

bool:File_ContainsMap(const szMap[]) {
    new szLine[64], fp = fopen(CONFIG_FILE, "r");

    if (!fp) return false;

    while (fgets(fp, szLine, charsmax(szLine))) {
        trim(szLine);
        if (equal(szLine, szMap)) {
            fclose(fp);
            return true;
        }
    }

    fclose(fp);
    return false;
}

Mr.GaminG Pro Public
#9
İstek konusu, @Red* adlı kullanıcı tarafından 12 saat içinde çözülmüştür.
İsteği çözdüğü için Red* Adlı kullanıcıya 1 rep puanı ve 1 yardım etme puanı otomatik olarak verilmiştir.
Red* Adlı kullanıcı sizin dışınızda toplam 2 kişiye yardım etmiştir.

Herhangi bir konuda hata olduğunu düşünüyorsanız destek sistemi üzerinden iletişim kurabilirsiniz.

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task
Kayıt Ol
Uygun fiyatlı ve yüksek performanslı teamspeak3