#include <amxmodx>
#include <amxmisc>
#include <cstrike>
// --- Ayarlanabilir Sabitler ---
#define EOSM_TAG "[EOSM]" // Plugin tagı (örneğin: "[SKOR]", "[CSMATCH]" vs)
#define ACCESS_FLAG ADMIN_BAN // Komut yetkisi (örneğin: ADMIN_KICK, ADMIN_LEVEL_H)
// --- Değişkenler ---
new g_iTerrScore = 0
new g_iCTScore = 0
new g_iRoundCount = 1
new bool:g_bHalfTimeAnnounced = false
new bool:g_bTeamsSwitched = false
new bool:g_bScoreTrackingEnabled = false
new bool:g_bScoreStartedOnce = false // amx_skorbaslat sınırlama
// Takım adları (takım değiştiğinde ters dönecek)
new const szTeamName_Terr[2][] = { "Terrorist", "Counter-Terrorist" }
new const szTeamName_CT[2][] = { "Counter-Terrorist", "Terrorist" }
// Fonksiyonlar
#define GetTeamNameT() (g_bTeamsSwitched ? szTeamName_CT[0] : szTeamName_Terr[0])
#define GetTeamNameCT() (g_bTeamsSwitched ? szTeamName_CT[1] : szTeamName_Terr[1])
public plugin_init() {
register_plugin("EOSM", "1.2", "ALBERT BROOKS + ÖZEL İSTEK")
register_clcmd("amx_skor", "Command_Score", 0, "Skorları gösterir")
register_concmd("amx_skorbaslat", "Command_StartScoring", ACCESS_FLAG, "Skor saymayı başlatır")
register_concmd("amx_skorsifirla", "Command_ResetScoring", ACCESS_FLAG, "Skoru sıfırlar")
register_concmd("amx_skorduzelt_t", "Command_AdjustScore_T", ACCESS_FLAG, "<deger> kadar T skorunu düzeltir")
register_concmd("amx_skorduzelt_ct", "Command_AdjustScore_CT", ACCESS_FLAG, "<deger> kadar CT skorunu düzeltir")
register_event("HLTV", "Event_RoundStart", "a", "1=0", "2=0")
register_event("SendAudio", "Event_RoundEnd_Terr", "a", "2=%!MRAD_terwin")
register_event("SendAudio", "Event_RoundEnd_CT", "a", "2=%!MRAD_ctwin")
register_event("TextMsg", "Event_GameRestart", "a", "2&#Game_will_restart_in")
}
// --- Komutlar ---
public Command_Score(id, level, cid){
if (g_iRoundCount == 15) {
g_bTeamsSwitched = true
}
g_iRoundCount = g_iCTScore + g_iTerrScore + 1
if (g_bScoreTrackingEnabled){
chat_color(0, "!g%s !t%s: !g%d !t%s: !g%d !y------------> !g%d. !yEl oynaniyor!", EOSM_TAG, GetTeamNameT(), g_iTerrScore, GetTeamNameCT(), g_iCTScore, g_iRoundCount)
} else {
chat_color(0, "!g%s !ySkor sayma sistemi baslatilmadi. Yetkili tarafindan !g/skorbaslat !ykomutu ile baslatilmalidir.", EOSM_TAG)
}
return PLUGIN_HANDLED
}
public Command_StartScoring(id, level, cid) {
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED
if (g_bScoreStartedOnce) {
chat_color(id, "!g%s !ySkor sayma sistemi zaten baslatildi! Bu komut tekrar kullanilamaz.", EOSM_TAG)
return PLUGIN_HANDLED
}
g_bScoreStartedOnce = true
g_bScoreTrackingEnabled = true
new admin_name[32]
get_user_name(id, admin_name, charsmax(admin_name))
chat_color(0, "!g%s !t%s !yskor sayma sistemini !gaktiflestirdi!y.", EOSM_TAG, admin_name)
return PLUGIN_HANDLED
}
public Command_ResetScoring(id, level, cid) {
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED
g_iTerrScore = 0
g_iCTScore = 0
g_iRoundCount = 1
g_bHalfTimeAnnounced = false
g_bTeamsSwitched = false
new admin_name[32]
get_user_name(id, admin_name, charsmax(admin_name))
chat_color(0, "!g%s !t%s !yskor tablosunu !gsifirladi!y.", EOSM_TAG, admin_name)
return PLUGIN_HANDLED
}
public Command_AdjustScore_T(id, level, cid) {
if (!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED
new arg[8]
read_argv(1, arg, charsmax(arg))
new value = str_to_num(arg)
g_iTerrScore += value
if (g_iTerrScore < 0)
g_iTerrScore = 0
chat_color(0, "!g%s !t%s !yskoru duzeltildi. Yeni skor: !g%d", EOSM_TAG, GetTeamNameT(), g_iTerrScore)
return PLUGIN_HANDLED
}
public Command_AdjustScore_CT(id, level, cid) {
if (!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED
new arg[8]
read_argv(1, arg, charsmax(arg))
new value = str_to_num(arg)
g_iCTScore += value
if (g_iCTScore < 0)
g_iCTScore = 0
chat_color(0, "!g%s !t%s !yskoru duzeltildi. Yeni skor: !g%d", EOSM_TAG, GetTeamNameCT(), g_iCTScore)
return PLUGIN_HANDLED
}
// --- Oyun Eventleri ---
public Event_RoundStart() {
if (!g_bScoreTrackingEnabled)
return
g_iRoundCount = g_iCTScore + g_iTerrScore + 1
if (g_iRoundCount == 16 && !g_bHalfTimeAnnounced) {
g_bHalfTimeAnnounced = true
chat_color(0, "!g%s !yIlk devre !tbitti! !yToplam Skor: !t%s: !g%d !t%s: !g%d", EOSM_TAG, GetTeamNameT(), g_iTerrScore, GetTeamNameCT(), g_iCTScore)
}
chat_color(0, "!g%s !t%s: !g%d !t%s: !g%d !y------------> !g%d. !yEl oynaniyor!", EOSM_TAG, GetTeamNameT(), g_iTerrScore, GetTeamNameCT(), g_iCTScore, g_iRoundCount)
}
public Event_RoundEnd_Terr() {
if (!g_bScoreTrackingEnabled)
return
if (g_bTeamsSwitched)
g_iCTScore++
else
g_iTerrScore++
CheckGameEnd()
}
public Event_RoundEnd_CT() {
if (!g_bScoreTrackingEnabled)
return
if (g_bTeamsSwitched)
g_iTerrScore++
else
g_iCTScore++
CheckGameEnd()
}
public CheckGameEnd() {
if (g_iRoundCount == 15) {
g_bTeamsSwitched = true
}
if (g_iTerrScore == 15 && g_iCTScore == 15) {
for (new i = 0; i < 3; i++)
chat_color(0, "!g%s !yMac !tberabere !ybitti! Toplam skor: !g%d !y-- !g%d", EOSM_TAG, g_iCTScore, g_iTerrScore)
chat_color(0, "!g%s !yMac !tberabere !ybitti! Toplam skor: !g%d !y-- !g%d", EOSM_TAG, g_iCTScore, g_iTerrScore)
chat_color(0, "!g%s !yMac !tberabere !ybitti! Toplam skor: !g%d !y-- !g%d", EOSM_TAG, g_iCTScore, g_iTerrScore)
g_bScoreTrackingEnabled = false
set_cvar_num("sv_restart", 5)
}
else if (g_iTerrScore == 16) {
for (new i = 0; i < 3; i++)
chat_color(0, "!g%s !t%s !ytakimi maci !tkazandi!y! Toplam skor: !g%d !y-- !g%d", EOSM_TAG, GetTeamNameT(), g_iTerrScore, g_iCTScore)
chat_color(0, "!g%s !t%s !ytakimi maci !tkazandi!y! Toplam skor: !g%d !y-- !g%d", EOSM_TAG, GetTeamNameT(), g_iTerrScore, g_iCTScore)
chat_color(0, "!g%s !t%s !ytakimi maci !tkazandi!y! Toplam skor: !g%d !y-- !g%d", EOSM_TAG, GetTeamNameT(), g_iTerrScore, g_iCTScore)
g_bScoreTrackingEnabled = false
set_cvar_num("sv_restart", 5)
}
else if (g_iCTScore == 16) {
for (new i = 0; i < 3; i++)
chat_color(0, "!g%s !t%s !ytakimi maci !tkazandi!y! Toplam skor: !g%d !y-- !g%d", EOSM_TAG, GetTeamNameCT(), g_iCTScore, g_iTerrScore)
chat_color(0, "!g%s !t%s !ytakimi maci !tkazandi!y! Toplam skor: !g%d !y-- !g%d", EOSM_TAG, GetTeamNameCT(), g_iCTScore, g_iTerrScore)
chat_color(0, "!g%s !t%s !ytakimi maci !tkazandi!y! Toplam skor: !g%d !y-- !g%d", EOSM_TAG, GetTeamNameCT(), g_iCTScore, g_iTerrScore)
g_bScoreTrackingEnabled = false
set_cvar_num("sv_restart", 5)
}
}
public Event_GameRestart() {
// Restart olduğunda skor değişmeyecek
}
// --- Chat Color Yardımcı Fonksiyonu ---
stock chat_color(const id, const input[], any:...) {
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4")
replace_all(msg, 190, "!y", "^1")
replace_all(msg, 190, "!t", "^3")
replace_all(msg, 190, "!team2", "^0")
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()
}
}
}