merhabalar şöyle bir plugin istiyorum userler için. 5 user /report nick adlı kisiyi sikayet edınce bu kisi 30 dakika banlansın. gene devam edıyorsa gene o 5 kişi reportlayıp gene banlasın bu sefer ban süresi giderek artsın. [max 24 saat olacak şekilde] bu sayede sunucuda admin yokken oyun huzurunu bozan kişiler banlanmıs olacak. bunu yazabılecek hocalarım var mıdır acaba. tesekkurler....
Konu
(13-09-2024, 15:03)vefaozdemir Adlı Kullanıcıdan Alıntı: merhabalar şöyle bir plugin istiyorum userler için. 5 user /report nick adlı kisiyi sikayet edınce bu kisi 30 dakika banlansın. gene devam edıyorsa gene o 5 kişi reportlayıp gene banlasın bu sefer ban süresi giderek artsın. [max 24 saat olacak şekilde] bu sayede sunucuda admin yokken oyun huzurunu bozan kişiler banlanmıs olacak. bunu yazabılecek hocalarım var mıdır acaba. tesekkurler....Eklentiyi güncelledim, bunu kullanın. Güzel bir eklenti oldu. Kısaca nasıl çalıştığını anlatayım:
kodu /sikayet
oy kullanan kişi bir daha oy kullanmak için 5 dk beklemek zorunda
aynı kişiye oy veremez.
30 dk banlar, ardından iki kat ı ile artar tekrar banlanırsa
eğer sv 15 kişi altında ise 5 kişi şikayet etmeli eğer 16-24 kişi bandındaysa 7, 25 kişi ve üzeri ise 10 kişi şikayet etmeli
Kod:
#include <amxmodx>
#include <amxmisc>
#define INITIAL_BAN_TIME 30 // dakika cinsinden
#define MAX_BAN_TIME 1440 // 24 saat (dakika cinsinden)
#define REPORT_COOLDOWN 300 // saniye cinsinden (5 dakika)
#define PLUGIN_TAG "^x04[Şikayet Sistemi]^x01"
// Renk tanımlamaları
#define NORMAL "\x01"
#define RED "\x04"
#define BLUE "\x03"
new g_ReportCounts[33][33]; // [reporter][reported]
new g_LastBanTime[33];
new g_LastReportTime[33];
public plugin_init() {
register_plugin("Şikayet Sistemi", "1.0", "Your Name");
register_clcmd("say /sikayet", "cmd_sikayet");
register_clcmd("say_team /sikayet", "cmd_sikayet");
}
public cmd_sikayet(id) {
new current_time = get_systime();
new time_left = g_LastReportTime[id] + REPORT_COOLDOWN - current_time;
if (time_left > 0) {
new minutes = time_left / 60;
new seconds = time_left % 60;
ColorChat(id, "%s Şikayet için kalan süre: !g%d dakika %d saniye", PLUGIN_TAG, minutes, seconds);
return PLUGIN_HANDLED;
}
new menu = menu_create("\yOyuncu Şikayet Menüsü\w", "sikayet_handler");
new players[32], pnum;
get_players(players, pnum);
for (new i = 0; i < pnum; i++) {
new name[32], authid[32];
get_user_name(players[i], name, charsmax(name));
get_user_authid(players[i], authid, charsmax(authid));
if (players[i] != id && g_ReportCounts[id][players[i]] == 0) {
menu_additem(menu, name, authid);
}
}
menu_setprop(menu, MPROP_EXITNAME, "Çıkış");
menu_display(id, menu);
return PLUGIN_HANDLED;
}
public sikayet_handler(id, menu, item) {
if (item == MENU_EXIT) {
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new authid[32], name[32];
menu_item_getinfo(menu, item, _, authid, charsmax(authid), name, charsmax(name));
new target = find_player("c", authid);
if (!target) {
ColorChat(id, "%s !g%s !yadlı oyuncu bulunamadı.", PLUGIN_TAG, name);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
g_ReportCounts[id][target] = 1;
g_LastReportTime[id] = get_systime();
new total_reports = 0;
for (new i = 1; i <= 32; i++) {
total_reports += g_ReportCounts[i][target];
}
new required_reports = get_required_reports();
if (total_reports >= required_reports) {
new ban_time = INITIAL_BAN_TIME;
if (g_LastBanTime[target] > 0) {
ban_time = min(g_LastBanTime[target] * 2, MAX_BAN_TIME);
}
new ban_reason[64];
formatex(ban_reason, charsmax(ban_reason), "Oyuncular tarafından şikayet edildi (%d/%d şikayet)", total_reports, required_reports);
server_cmd("banid %d #%s kick", ban_time, authid);
server_exec();
g_LastBanTime[target] = ban_time;
// Şikayetleri sıfırla
for (new i = 1; i <= 32; i++) {
g_ReportCounts[i][target] = 0;
}
ColorChat(0, "%s !g%s !yadlı oyuncu !t%d dakika !ybanlandı. Sebep: !g%s", PLUGIN_TAG, name, ban_time, ban_reason);
} else {
ColorChat(id, "%s !g%s !yadlı oyuncuyu şikayet ettiniz. Toplam şikayet: !t%d!y/!g%d", PLUGIN_TAG, name, total_reports, required_reports);
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
// Gerekli şikayet sayısını hesapla
stock get_required_reports() {
new players[32], pnum;
get_players(players, pnum);
if (pnum <= 15) {
return 5;
} else if (pnum <= 25) {
return 7;
} else {
return 10;
}
}
// ColorChat fonksiyonu
stock ColorChat(const id, const input[], any:...)
{
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!g", "^x04"); // Green Color
replace_all(msg, 190, "!y", "^x01"); // Default Color (Yellow)
replace_all(msg, 190, "!t", "^x03"); // Team Color
if (id) players[0] = id; else get_players(players, count, "ch");
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}
Son Düzenleme: 13-09-2024, 20:34, Düzenleyen: ` White*.
(13-09-2024, 20:17)` White* Adlı Kullanıcıdan Alıntı:Hocam elinize emeğinize sağlık. Şikayet edilen kişide de xxx adlı oyuncu sizi şikayet etti gibi bir yazı görünmesini de sağlayabilir misiniz?(13-09-2024, 15:03)vefaozdemir Adlı Kullanıcıdan Alıntı: merhabalar şöyle bir plugin istiyorum userler için. 5 user /report nick adlı kisiyi sikayet edınce bu kisi 30 dakika banlansın. gene devam edıyorsa gene o 5 kişi reportlayıp gene banlasın bu sefer ban süresi giderek artsın. [max 24 saat olacak şekilde] bu sayede sunucuda admin yokken oyun huzurunu bozan kişiler banlanmıs olacak. bunu yazabılecek hocalarım var mıdır acaba. tesekkurler....Eklentiyi güncelledim, bunu kullanın. Güzel bir eklenti oldu. Kısaca nasıl çalıştığını anlatayım:
kodu /sikayet
oy kullanan kişi bir daha oy kullanmak için 5 dk beklemek zorunda
aynı kişiye oy veremez.
30 dk banlar, ardından iki kat ı ile artar tekrar banlanırsa
eğer sv 15 kişi altında ise 5 kişi şikayet etmeli eğer 16-24 kişi bandındaysa 7, 25 kişi ve üzeri ise 10 kişi şikayet etmeli
Kod:#include <amxmodx>
#include <amxmisc>
#define INITIAL_BAN_TIME 30 // dakika cinsinden
#define MAX_BAN_TIME 1440 // 24 saat (dakika cinsinden)
#define REPORT_COOLDOWN 300 // saniye cinsinden (5 dakika)
#define PLUGIN_TAG "^x04[Şikayet Sistemi]^x01"
// Renk tanımlamaları
#define NORMAL "\x01"
#define RED "\x04"
#define BLUE "\x03"
new g_ReportCounts[33][33]; // [reporter][reported]
new g_LastBanTime[33];
new g_LastReportTime[33];
public plugin_init() {
register_plugin("Şikayet Sistemi", "1.0", "Your Name");
register_clcmd("say /sikayet", "cmd_sikayet");
register_clcmd("say_team /sikayet", "cmd_sikayet");
}
public cmd_sikayet(id) {
new current_time = get_systime();
new time_left = g_LastReportTime[id] + REPORT_COOLDOWN - current_time;
if (time_left > 0) {
new minutes = time_left / 60;
new seconds = time_left % 60;
ColorChat(id, "%s Şikayet için kalan süre: !g%d dakika %d saniye", PLUGIN_TAG, minutes, seconds);
return PLUGIN_HANDLED;
}
new menu = menu_create("\yOyuncu Şikayet Menüsü\w", "sikayet_handler");
new players[32], pnum;
get_players(players, pnum);
for (new i = 0; i < pnum; i++) {
new name[32], authid[32];
get_user_name(players[i], name, charsmax(name));
get_user_authid(players[i], authid, charsmax(authid));
if (players[i] != id && g_ReportCounts[id][players[i]] == 0) {
menu_additem(menu, name, authid);
}
}
menu_setprop(menu, MPROP_EXITNAME, "Çıkış");
menu_display(id, menu);
return PLUGIN_HANDLED;
}
public sikayet_handler(id, menu, item) {
if (item == MENU_EXIT) {
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new authid[32], name[32];
menu_item_getinfo(menu, item, _, authid, charsmax(authid), name, charsmax(name));
new target = find_player("c", authid);
if (!target) {
ColorChat(id, "%s !g%s !yadlı oyuncu bulunamadı.", PLUGIN_TAG, name);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
g_ReportCounts[id][target] = 1;
g_LastReportTime[id] = get_systime();
new total_reports = 0;
for (new i = 1; i <= 32; i++) {
total_reports += g_ReportCounts[i][target];
}
new required_reports = get_required_reports();
if (total_reports >= required_reports) {
new ban_time = INITIAL_BAN_TIME;
if (g_LastBanTime[target] > 0) {
ban_time = min(g_LastBanTime[target] * 2, MAX_BAN_TIME);
}
new ban_reason[64];
formatex(ban_reason, charsmax(ban_reason), "Oyuncular tarafından şikayet edildi (%d/%d şikayet)", total_reports, required_reports);
server_cmd("banid %d #%s kick", ban_time, authid);
server_exec();
g_LastBanTime[target] = ban_time;
// Şikayetleri sıfırla
for (new i = 1; i <= 32; i++) {
g_ReportCounts[i][target] = 0;
}
ColorChat(0, "%s !g%s !yadlı oyuncu !t%d dakika !ybanlandı. Sebep: !g%s", PLUGIN_TAG, name, ban_time, ban_reason);
} else {
ColorChat(id, "%s !g%s !yadlı oyuncuyu şikayet ettiniz. Toplam şikayet: !t%d!y/!g%d", PLUGIN_TAG, name, total_reports, required_reports);
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
// Gerekli şikayet sayısını hesapla
stock get_required_reports() {
new players[32], pnum;
get_players(players, pnum);
if (pnum <= 15) {
return 5;
} else if (pnum <= 25) {
return 7;
} else {
return 10;
}
}
// ColorChat fonksiyonu
stock ColorChat(const id, const input[], any:...)
{
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!g", "^x04"); // Green Color
replace_all(msg, 190, "!y", "^x01"); // Default Color (Yellow)
replace_all(msg, 190, "!t", "^x03"); // Team Color
if (id) players[0] = id; else get_players(players, count, "ch");
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}
(13-09-2024, 20:53)vefaozdemir Adlı Kullanıcıdan Alıntı:(13-09-2024, 20:17)` White* Adlı Kullanıcıdan Alıntı: Eklentiyi güncelledim, bunu kullanın. Güzel bir eklenti oldu. Kısaca nasıl çalıştığını anlatayım:Hocam elinize emeğinize sağlık. Şikayet edilen kişide de xxx adlı oyuncu sizi şikayet etti gibi bir yazı görünmesini de sağlayabilir misiniz?
kodu /sikayet
oy kullanan kişi bir daha oy kullanmak için 5 dk beklemek zorunda
aynı kişiye oy veremez.
30 dk banlar, ardından iki kat ı ile artar tekrar banlanırsa
eğer sv 15 kişi altında ise 5 kişi şikayet etmeli eğer 16-24 kişi bandındaysa 7, 25 kişi ve üzeri ise 10 kişi şikayet etmeli
Kod:#include <amxmodx>
#include <amxmisc>
#define INITIAL_BAN_TIME 30 // dakika cinsinden
#define MAX_BAN_TIME 1440 // 24 saat (dakika cinsinden)
#define REPORT_COOLDOWN 300 // saniye cinsinden (5 dakika)
#define PLUGIN_TAG "^x04[Şikayet Sistemi]^x01"
// Renk tanımlamaları
#define NORMAL "\x01"
#define RED "\x04"
#define BLUE "\x03"
new g_ReportCounts[33][33]; // [reporter][reported]
new g_LastBanTime[33];
new g_LastReportTime[33];
public plugin_init() {
register_plugin("Şikayet Sistemi", "1.0", "Your Name");
register_clcmd("say /sikayet", "cmd_sikayet");
register_clcmd("say_team /sikayet", "cmd_sikayet");
}
public cmd_sikayet(id) {
new current_time = get_systime();
new time_left = g_LastReportTime[id] + REPORT_COOLDOWN - current_time;
if (time_left > 0) {
new minutes = time_left / 60;
new seconds = time_left % 60;
ColorChat(id, "%s Şikayet için kalan süre: !g%d dakika %d saniye", PLUGIN_TAG, minutes, seconds);
return PLUGIN_HANDLED;
}
new menu = menu_create("\yOyuncu Şikayet Menüsü\w", "sikayet_handler");
new players[32], pnum;
get_players(players, pnum);
for (new i = 0; i < pnum; i++) {
new name[32], authid[32];
get_user_name(players[i], name, charsmax(name));
get_user_authid(players[i], authid, charsmax(authid));
if (players[i] != id && g_ReportCounts[id][players[i]] == 0) {
menu_additem(menu, name, authid);
}
}
menu_setprop(menu, MPROP_EXITNAME, "Çıkış");
menu_display(id, menu);
return PLUGIN_HANDLED;
}
public sikayet_handler(id, menu, item) {
if (item == MENU_EXIT) {
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new authid[32], name[32];
menu_item_getinfo(menu, item, _, authid, charsmax(authid), name, charsmax(name));
new target = find_player("c", authid);
if (!target) {
ColorChat(id, "%s !g%s !yadlı oyuncu bulunamadı.", PLUGIN_TAG, name);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
g_ReportCounts[id][target] = 1;
g_LastReportTime[id] = get_systime();
new total_reports = 0;
for (new i = 1; i <= 32; i++) {
total_reports += g_ReportCounts[i][target];
}
new required_reports = get_required_reports();
if (total_reports >= required_reports) {
new ban_time = INITIAL_BAN_TIME;
if (g_LastBanTime[target] > 0) {
ban_time = min(g_LastBanTime[target] * 2, MAX_BAN_TIME);
}
new ban_reason[64];
formatex(ban_reason, charsmax(ban_reason), "Oyuncular tarafından şikayet edildi (%d/%d şikayet)", total_reports, required_reports);
server_cmd("banid %d #%s kick", ban_time, authid);
server_exec();
g_LastBanTime[target] = ban_time;
// Şikayetleri sıfırla
for (new i = 1; i <= 32; i++) {
g_ReportCounts[i][target] = 0;
}
ColorChat(0, "%s !g%s !yadlı oyuncu !t%d dakika !ybanlandı. Sebep: !g%s", PLUGIN_TAG, name, ban_time, ban_reason);
} else {
ColorChat(id, "%s !g%s !yadlı oyuncuyu şikayet ettiniz. Toplam şikayet: !t%d!y/!g%d", PLUGIN_TAG, name, total_reports, required_reports);
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
// Gerekli şikayet sayısını hesapla
stock get_required_reports() {
new players[32], pnum;
get_players(players, pnum);
if (pnum <= 15) {
return 5;
} else if (pnum <= 25) {
return 7;
} else {
return 10;
}
}
// ColorChat fonksiyonu
stock ColorChat(const id, const input[], any:...)
{
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!g", "^x04"); // Green Color
replace_all(msg, 190, "!y", "^x01"); // Default Color (Yellow)
replace_all(msg, 190, "!t", "^x03"); // Team Color
if (id) players[0] = id; else get_players(players, count, "ch");
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}
Kod:
#include <amxmodx>
#include <amxmisc>
#define INITIAL_BAN_TIME 30 // dakika cinsinden
#define MAX_BAN_TIME 1440 // 24 saat (dakika cinsinden)
#define REPORT_COOLDOWN 300 // saniye cinsinden (5 dakika)
#define PLUGIN_TAG "^x04[Şikayet Sistemi]^x01"
// Renk tanımlamaları
#define NORMAL "\x01"
#define RED "\x04"
#define BLUE "\x03"
new g_ReportCounts[33][33]; // [reporter][reported]
new g_LastBanTime[33];
new g_LastReportTime[33];
public plugin_init() {
register_plugin("Şikayet Sistemi", "1.0", "Your Name");
register_clcmd("say /sikayet", "cmd_sikayet");
register_clcmd("say_team /sikayet", "cmd_sikayet");
}
public cmd_sikayet(id) {
new current_time = get_systime();
new time_left = g_LastReportTime[id] + REPORT_COOLDOWN - current_time;
if (time_left > 0) {
new minutes = time_left / 60;
new seconds = time_left % 60;
ColorChat(id, "%s Şikayet için kalan süre: !g%d dakika %d saniye", PLUGIN_TAG, minutes, seconds);
return PLUGIN_HANDLED;
}
new menu = menu_create("\yOyuncu Şikayet Menüsü\w", "sikayet_handler");
new players[32], pnum;
get_players(players, pnum);
for (new i = 0; i < pnum; i++) {
new name[32], authid[32];
get_user_name(players[i], name, charsmax(name));
get_user_authid(players[i], authid, charsmax(authid));
if (players[i] != id && g_ReportCounts[id][players[i]] == 0) {
menu_additem(menu, name, authid);
}
}
menu_setprop(menu, MPROP_EXITNAME, "Çıkış");
menu_display(id, menu);
return PLUGIN_HANDLED;
}
public sikayet_handler(id, menu, item) {
if (item == MENU_EXIT) {
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new authid[32], name[32];
menu_item_getinfo(menu, item, _, authid, charsmax(authid), name, charsmax(name));
new target = find_player("c", authid);
if (!target) {
ColorChat(id, "%s !g%s !yadlı oyuncu bulunamadı.", PLUGIN_TAG, name);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
// Kendini şikayet etme kontrolü
if (target == id) {
ColorChat(id, "%s !yKendinizi şikayet edemezsiniz!", PLUGIN_TAG);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
g_ReportCounts[id][target] = 1;
g_LastReportTime[id] = get_systime();
new total_reports = 0;
for (new i = 1; i <= 32; i++) {
total_reports += g_ReportCounts[i][target];
}
new required_reports = get_required_reports();
// Şikayet eden kişinin adını al
new reporter_name[32];
get_user_name(id, reporter_name, charsmax(reporter_name));
// Şikayet edilen kişiye bildirim gönder
ColorChat(target, "%s !g%s !yadlı oyuncu sizi şikayet etti. Toplam şikayet: !t%d!y/!g%d", PLUGIN_TAG, reporter_name, total_reports, required_reports);
if (total_reports >= required_reports) {
new ban_time = INITIAL_BAN_TIME;
if (g_LastBanTime[target] > 0) {
ban_time = min(g_LastBanTime[target] * 2, MAX_BAN_TIME);
}
new ban_reason[64];
formatex(ban_reason, charsmax(ban_reason), "Oyuncular tarafından şikayet edildi (%d/%d şikayet)", total_reports, required_reports);
server_cmd("banid %d #%s kick", ban_time, authid);
server_exec();
g_LastBanTime[target] = ban_time;
// Şikayetleri sıfırla
for (new i = 1; i <= 32; i++) {
g_ReportCounts[i][target] = 0;
}
ColorChat(0, "%s !g%s !yadlı oyuncu !t%d dakika !ybanlandı. Sebep: !g%s", PLUGIN_TAG, name, ban_time, ban_reason);
} else {
ColorChat(id, "%s !g%s !yadlı oyuncuyu şikayet ettiniz. Toplam şikayet: !t%d!y/!g%d", PLUGIN_TAG, name, total_reports, required_reports);
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
// Gerekli şikayet sayısını hesapla
stock get_required_reports() {
new players[32], pnum;
get_players(players, pnum);
if (pnum <= 15) {
return 5;
} else if (pnum <= 25) {
return 7;
} else {
return 10;
}
}
// ColorChat fonksiyonu
stock ColorChat(const id, const input[], any:...)
{
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!g", "^x04"); // Green Color
replace_all(msg, 190, "!y", "^x01"); // Default Color (Yellow)
replace_all(msg, 190, "!t", "^x03"); // Team Color
if (id) players[0] = id; else get_players(players, count, "ch");
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}
İstek konusu, @` White* adlı kullanıcı tarafından 18 saat içinde çözülmüştür.
İsteği çözdüğü için ` White* Adlı kullanıcıya 1 rep puanı ve 1 yardım etme puanı otomatik olarak verilmiştir.
` White* 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.
İsteği çözdüğü için ` White* Adlı kullanıcıya 1 rep puanı ve 1 yardım etme puanı otomatik olarak verilmiştir.
` White* 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.
Benzer Konular
Yorum
298
Okunma
Yorum
183
Okunma
19-03-2025, 08:19
Yorum
601
Okunma