O halde ücretsiz bu kadarına talipsin, yapman gereken sunucuna amx_weapon kodunu engelleyecek sistem kur (oyt'de varmı bilmiyorum) amx_weapon flashbang vb. gibi yasakla bomba komutlarını.
• Bu eklentideki eksi olarakta c4 kurulduğunda süre düşürülmesi eklenmedi, eklemek isteyen ekleyebilir.
Kod:
#include <amxmodx>
#include <amxmisc>
#include <reapi>
#include <cstrike>
#define TEAM_T 0
#define TEAM_CT 1
new bool:g_bTeamUsed[2];
new bool:g_bPlayerUsed[MAX_PLAYERS + 1];
new g_pCvarRoundTime;
new Float:g_flRoundStartTime;
public plugin_init()
{
register_plugin("PLUGIN", "VERSION", "AUTHOR");
register_concmd("amx_bombaver", "cmd_bombaver", ADMIN_KICK, "<nick> - Oyuncuya bomba verir");
g_pCvarRoundTime = get_cvar_pointer("mp_roundtime");
RegisterHookChain(RG_CSGameRules_RestartRound, "OnRestartRound", false);
RegisterHookChain(RG_RoundEnd, "OnRoundEnd", false);
register_logevent("OnRoundStart", 2, "1=Round_Start");
}
public OnRoundStart()
{
g_bTeamUsed[TEAM_T] = false;
g_bTeamUsed[TEAM_CT] = false;
for(new i = 1; i <= MaxClients; i++)
{
g_bPlayerUsed[i] = false;
}
g_flRoundStartTime = get_gametime();
}
public OnRestartRound()
{
OnRoundStart();
}
public OnRoundEnd(WinStatus:status, ScenarioEventEndRound:event, Float:tmDelay)
{
OnRoundStart();
}
public cmd_bombaver(id, level, cid)
{
if(!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED;
if(get_member_game(m_bFreezePeriod))
{
console_print(id, "Freeze time sirasinda bomba veremezsin!");
return PLUGIN_HANDLED;
}
new Float:flCurrentTime = get_gametime();
new Float:flElapsedTime = flCurrentTime - g_flRoundStartTime;
new iRoundTimeMinutes = get_pcvar_num(g_pCvarRoundTime);
new Float:flRoundTimeSeconds = float(iRoundTimeMinutes * 60);
new Float:flRemainingTime = flRoundTimeSeconds - flElapsedTime;
if(flRemainingTime <= 0.0)
{
console_print(id, "Round süresi doldu, bomba veremezsin!");
return PLUGIN_HANDLED;
}
if(flRemainingTime <= 60.0)
{
new iMinutes = floatround(flRemainingTime) / 60;
new iSeconds = floatround(flRemainingTime) % 60;
console_print(id, "1 dakika altinda oldugu icin bomba veremezsin! (Kalan sure: %d:%02d)", iMinutes, iSeconds);
return PLUGIN_HANDLED;
}
new szTarget[32];
read_argv(1, szTarget, charsmax(szTarget));
new iTarget = cmd_target(id, szTarget, CMDTARGET_ALLOW_SELF);
if(!iTarget)
{
console_print(id, "Oyuncu bulunamadi!");
return PLUGIN_HANDLED;
}
if(!is_user_alive(iTarget))
{
console_print(id, "Hedef oyuncu olmus!");
return PLUGIN_HANDLED;
}
new iTeamIndex = -1;
if(!is_user_connected(iTarget))
{
console_print(id, "Oyuncu sunucuda degil!");
return PLUGIN_HANDLED;
}
new CsTeams:csTeam = cs_get_user_team(iTarget);
if(csTeam == CS_TEAM_T)
iTeamIndex = TEAM_T;
else if(csTeam == CS_TEAM_CT)
iTeamIndex = TEAM_CT;
else
{
console_print(id, "Oyuncu gecerli bir takimda degil! (Spectator/Unassigned)");
return PLUGIN_HANDLED;
}
if(g_bPlayerUsed[iTarget])
{
new szName[32];
get_user_name(iTarget, szName, charsmax(szName));
console_print(id, "%s oyuncusuna bu roundda zaten bomba verildi!", szName);
return PLUGIN_HANDLED;
}
if(g_bTeamUsed[iTeamIndex])
{
new szTeamName[16];
copy(szTeamName, charsmax(szTeamName), (iTeamIndex == TEAM_T) ? "T" : "CT");
console_print(id, "%s takimi icin bu roundda zaten bomba verildi!", szTeamName);
return PLUGIN_HANDLED;
}
rg_give_item(iTarget, "weapon_flashbang", GT_DROP_AND_REPLACE )
rg_set_user_bpammo(iTarget, WEAPON_FLASHBANG, 2);
rg_give_item(iTarget, "weapon_smokegrenade", GT_DROP_AND_REPLACE )
g_bPlayerUsed[iTarget] = true;
g_bTeamUsed[iTeamIndex] = true;
new szTargetName[32], szAdminName[32];
get_user_name(iTarget, szTargetName, charsmax(szTargetName));
get_user_name(id, szAdminName, charsmax(szAdminName));
console_print(id, "%s oyuncusuna bombalar verildi! (2x Flashbang, 1x Smoke)", szTargetName);
client_print(iTarget, print_chat, "* Admin %s tarafindan size bombalar verildi!", szAdminName);
client_print(0, print_chat, "* Admin %s, %s oyuncusuna bomba verdi", szAdminName, szTargetName);
new iPlayers[MAX_PLAYERS], iNum;
get_players(iPlayers, iNum, "ch");
for(new i = 0; i < iNum; i++)
{
new iPlayer = iPlayers[i];
if(get_user_flags(iPlayer) & ADMIN_KICK && iPlayer != id)
{
console_print(iPlayer, "[ADMIN] %s -> %s oyuncusuna bomba verdi", szAdminName, szTargetName);
}
}
return PLUGIN_HANDLED;
}
public client_disconnected(id)
{
g_bPlayerUsed[id] = false;
}