#include <sdkhooks>
#include <Duel>
public Plugin myinfo =
{
name = "[DUEL] Ammo",
author = "Drumanid",
version = "1.0.0",
url = "Discord: Drumanid#9108"
};
int g_iOffset, g_iWeapon[2];
public void OnPluginStart()
{
if(GetEngineVersion() == Engine_CSGO)
{
if((g_iOffset = FindSendPropInfo("CBaseCombatWeapon", "m_iPrimaryReserveAmmoCount")) == -1)
SetFailState("No found offset: CBaseCombatWeapon|m_iPrimaryReserveAmmoCount");
}
else
{
if((g_iOffset = FindSendPropInfo("CBasePlayer", "m_iAmmo")) == -1)
SetFailState("No found offset: CBasePlayer|m_iAmmo");
}
}
public void IsPostDuel()
{
if(!bDuelModeQueue()) //sGetDuelWeapon...
CreateTimer(0.5, view_as<Timer>(TimerHook), _, TIMER_FLAG_NO_MAPCHANGE);
}
void TimerHook()
{
if(!bDuel())
return;
int i, iClient[2];
for(; i < 2; ++i)
{
if((iClient[i] = iGetDuelist(i)) > 0 && IsClientInGame(iClient[i]))
{
g_iWeapon[i] = GetEntPropEnt(iClient[i], Prop_Data, "m_hActiveWeapon");
if(g_iWeapon[i] > 0 && GetEntData(g_iWeapon[i], g_iOffset) > 0)
{
SDKHook(g_iWeapon[i], SDKHook_ReloadPost, ReloadPost);
SetEntData(g_iWeapon[i], g_iOffset, 222);
}
}
}
}
public void IsDuel(bool bState)
{
if(bDuelModeQueue() || bState)
return;
// Оружие удаляется после дуэли, в этом нет нужды, но я сделаю на всякий... (поэтому создана глобалка)
for(int i; i < 2; ++i)
{
if(g_iWeapon[i] > 0 && IsValidEdict(g_iWeapon[i]))
{
SDKUnhook(g_iWeapon[i], SDKHook_ReloadPost, ReloadPost);
g_iWeapon[i] = 0;
}
}
}
void ReloadPost(int iWeapon)
{
if(iWeapon > 0)
SetEntData(iWeapon, g_iOffset, 222);
}