/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#define PLUGIN "Wieksze magazynki"
#define VERSION "1.1"
#define AUTHOR "Soccdoodcss, edit: funfel5"
#define MAXPLAYERS 32
#pragma semicolon 1;
new g_iBuyAmmo[MAXPLAYERS + 1];
new g_iHasDead[MAXPLAYERS + 1];
new g_iTries[MAXPLAYERS + 1];
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_event("DeathMsg", "evDeath", "a");
register_event("AmmoX", "evReload", "be");
register_event("AmmoPickup", "evAmmo", "be");
register_event("CurWeapon", "evCurWeapon", "be");
register_event("TextMsg", "evWillRestartRound", "a", "2=#Game_Commencing");
register_logevent("evRestartRound", 2, "1=Restart_Round_(0_second)");
}
public evWillRestartRound()
{
set_task(3.0, "evRestartRound");
}
public evRestartRound()
{
new iPlayers[32], iNum;
get_players(iPlayers, iNum);
for(new g = 0 ; g < iNum ; g++)
{
new id = iPlayers[g];
if(is_user_connected(id))
g_iHasDead[id] = 1;
set_task(0.1, "taskSetKnife", id);
}
}
public taskSetKnife(id)
{
if(is_user_alive(id))
{
new WeapID = get_user_weap_index(id);
new parm[2];
parm[0] = id;
parm[1] = WeapID;
client_cmd(id, "weapon_knife");
set_task(0.1, "taskReWeap", id + 96, parm, 2);
}
}
public plugin_log() {
if(read_logargc() != 2)
return;
new szArg[16];
read_logargv(1, szArg, 15);
if(equal(szArg, "Restart_Round_("))
{
new Time1 = get_cvar_num("sv_restart");
new Time2 = get_cvar_num("sv_restartround");
new Time3 = Time1 + Time2;
new Float:flTime4 = float(Time3);
set_task(flTime4, "evRestartRound");
}
}
public evDeath()
{
new iVictim = read_data(2);
if(is_user_connected(iVictim))
{
g_iHasDead[iVictim] = 1;
}
return PLUGIN_CONTINUE;
}
public client_connect(id)
{
g_iHasDead[id] = 1;
}
public client_disconnect(id)
{
g_iHasDead[id] = 1;
}
public evCurWeapon(id)
{
if(g_iHasDead[id] && is_user_alive(id))
set_task(0.5, "taskFullClip", id);
}
public taskFullClip(id)
{
new WeapID = get_user_weap_index(id);
if(!WeapID || WeapID == CSW_C4 || WeapID == CSW_KNIFE)
return PLUGIN_HANDLED;
if(get_user_weap_clip(id) == max_clip(WeapID))
{
g_iHasDead[id] = 0;
return PLUGIN_CONTINUE;
}
new parm[2];
parm[0] = id;
parm[1] = WeapID;
set_user_weap_clip(id, WeapID, max_clip(WeapID));
set_task(0.1, "taskUnWeap", id + 64, parm, 2);
g_iTries[id] = 0;
return PLUGIN_CONTINUE;
}
public taskUnWeap(parm[])
{
new id = parm[0];
client_cmd(id, "weapon_knife");
set_task(0.1, "taskReWeap", id +96, parm, 2);
}
public taskReWeap(parm[])
{
new id = parm[0];
new WeapID = parm[1];
new szWeapName[33];
get_weaponname(WeapID, szWeapName, 32);
client_cmd(id, "%s", szWeapName);
g_iHasDead[id] = 1;
return PLUGIN_CONTINUE;
}
public evAmmo(id)
{
if(!is_user_alive(id))
return PLUGIN_HANDLED;
g_iBuyAmmo[id] = 1;
set_task(0.5, "taskResetAmmo", id);
return PLUGIN_CONTINUE;
}
public taskResetAmmo(id)
{
g_iBuyAmmo[id] = 0;
}
public evReload(id)
{
if(!is_user_alive(id) || g_iBuyAmmo[id])
return PLUGIN_HANDLED;
new WeapID = get_user_weap_index(id);
if(!WeapID)
return PLUGIN_HANDLED;
new Clip = get_user_weap_clip(id);
new Ammo = get_user_weap_backpack(id);
if(Clip != max_clip(WeapID))
{
new ClipDif = Clip - get_max_clip(WeapID);
new MissingClip = max_clip(WeapID) - Clip;
new EndAmmo = Ammo - MissingClip - ClipDif;
if(EndAmmo < 0)
{
MissingClip += EndAmmo;
EndAmmo = 0;
}
new EndClip = Clip + MissingClip;
set_user_weap_clip(id, WeapID, EndClip);
set_user_weap_backpack(id, WeapID, EndAmmo);
}
else
{
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
get_user_weap_index(id)
{
new Clip, Ammo, WeapID;
WeapID = get_user_weapon(id, Clip, Ammo);
return WeapID;
}
get_user_weap_clip(id)
{
new Clip, Ammo;
get_user_weapon(id, Clip, Ammo);
return Clip;
}
get_user_weap_backpack(id)
{
new Clip, Ammo;
get_user_weapon(id, Clip, Ammo);
return Ammo;
}
set_user_weap_backpack(id, WeapID, Amount)
{
if(WeapID == CSW_C4 || WeapID == CSW_KNIFE)
return PLUGIN_HANDLED;
fm_set_user_bpammo(id, WeapID, Amount);
return PLUGIN_CONTINUE;
}
set_user_weap_clip(id, WeapID, Amount)
{
if(WeapID == CSW_C4 || WeapID == CSW_KNIFE)
return PLUGIN_HANDLED;
fm_set_weapon_ammo(id, WeapID, Amount);
return PLUGIN_CONTINUE;
}
eng_get_ent_by_class(EntID, szClassName[])
{
return engfunc(EngFunc_FindEntityByString, EntID, "classname", szClassName);
}
get_max_clip(WeapID)
{
return reget_max_clip(WeapID);
}
reget_max_clip(WeapID)
{
new MaxClip = 0;
switch(WeapID)
{
case CSW_P228 : MaxClip = 13;
case CSW_SCOUT : MaxClip = 10;
case CSW_HEGRENADE : MaxClip = 1;
case CSW_XM1014 : MaxClip = 7;
case CSW_C4 : MaxClip = 1;
case CSW_MAC10 : MaxClip = 30;
case CSW_AUG : MaxClip = 30;
case CSW_SMOKEGRENADE : MaxClip = 1;
case CSW_ELITE : MaxClip = 30;
case CSW_FIVESEVEN : MaxClip = 20;
case CSW_UMP45 : MaxClip = 25;
case CSW_SG550 : MaxClip = 30;
case CSW_GALI : MaxClip = 35;
case CSW_FAMAS : MaxClip = 25;
case CSW_USP : MaxClip = 12;
case CSW_GLOCK18 : MaxClip = 20;
case CSW_AWP : MaxClip = 10;
case CSW_MP5NAVY : MaxClip = 30;
case CSW_M249 : MaxClip = 100;
case CSW_M3 : MaxClip = 8;
case CSW_M4A1 : MaxClip = 30;
case CSW_TMP : MaxClip = 30;
case CSW_G3SG1 : MaxClip = 20;
case CSW_FLASHBANG : MaxClip = 2;
case CSW_DEAGLE : MaxClip = 7;
case CSW_SG552 : MaxClip = 30;
case CSW_AK47 : MaxClip = 30;
case CSW_P90 : MaxClip = 50;
default: return PLUGIN_HANDLED;
}
return MaxClip;
}
max_clip(WeapID) /* Tu zwiekszamy naboje */
{
new MaxClip = 0;
switch(WeapID)
{
case CSW_P228 : MaxClip = 13;
case CSW_SCOUT : MaxClip = 10;
case CSW_HEGRENADE : MaxClip = 1;
case CSW_XM1014 : MaxClip = 7;
case CSW_C4 : MaxClip = 1;
case CSW_MAC10 : MaxClip = 30;
case CSW_AUG : MaxClip = 30;
case CSW_SMOKEGRENADE : MaxClip = 1;
case CSW_ELITE : MaxClip = 30;
case CSW_FIVESEVEN : MaxClip = 20;
case CSW_UMP45 : MaxClip = 25;
case CSW_SG550 : MaxClip = 30;
case CSW_GALI : MaxClip = 35;
case CSW_FAMAS : MaxClip = 25;
case CSW_USP : MaxClip = 12;
case CSW_GLOCK18 : MaxClip = 20;
case CSW_AWP : MaxClip = 10;
case CSW_MP5NAVY : MaxClip = 30;
case CSW_M249 : MaxClip = 100;
case CSW_M3 : MaxClip = 8;
case CSW_M4A1 : MaxClip = 30;
case CSW_TMP : MaxClip = 30;
case CSW_G3SG1 : MaxClip = 20;
case CSW_FLASHBANG : MaxClip = 2;
case CSW_DEAGLE : MaxClip = 7;
case CSW_SG552 : MaxClip = 30;
case CSW_AK47 : MaxClip = 30;
case CSW_P90 : MaxClip = 50;
default: return PLUGIN_HANDLED;
}
return MaxClip;
}
fm_set_user_bpammo(id, Weapon, Ammo)
{
static sOffset;
switch(Weapon)
{
case CSW_AWP : sOffset = 377;
case CSW_SCOUT, CSW_AK47,CSW_G3SG1 : sOffset = 378;
case CSW_M249 : sOffset = 379;
case CSW_M4A1, CSW_FAMAS,CSW_AUG,CSW_SG550,CSW_GALI,CSW_SG552 : sOffset = 380;
case CSW_M3, CSW_XM1014 : sOffset = 381;
case CSW_USP, CSW_UMP45, CSW_MAC10 : sOffset = 382;
case CSW_FIVESEVEN, CSW_P90 : sOffset = 383;
case CSW_DEAGLE : sOffset = 384;
case CSW_P228 : sOffset = 385;
case CSW_GLOCK18, CSW_MP5NAVY, CSW_TMP, CSW_ELITE : sOffset = 386;
case CSW_FLASHBANG : sOffset = 387;
case CSW_HEGRENADE : sOffset = 388;
case CSW_SMOKEGRENADE : sOffset = 389;
case CSW_C4 : sOffset = 390;
default : return;
}
set_pdata_int(id, sOffset, Ammo, 5);
}
fm_set_weapon_ammo(id, Weapon, Ammo)
{
new szWeapName[32], WeapID = -1;
get_weaponname(Weapon, szWeapName, 31);
while((WeapID = eng_get_ent_by_class(WeapID, szWeapName)) != 0)
{
if(pev(WeapID, pev_owner) == id)
{
set_pdata_int(WeapID, 51, Ammo, 4);
return WeapID;
}
}
return PLUGIN_HANDLED;
}