Пытаюсь дописать пушку, застрял на выдаче патронов. То есть я пытаюсь полностью избавиться от cstrike
Код кусочками вытаскиваю из пушек корда.
Код:
#include <amxmodx>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta_util>
#define OFFSET_LINUX_WEAPONS 4
#define OFFSET_LINUX 5
#define m_flNextAttack 83
#define m_flNextPrimaryAttack 46
#define m_flTimeWeaponIdle 48
#define m_fInReload 54
#define m_LastHitGroup 75
#define pev_weaponkey pev_impulse
#define weaponkey_value 2574671
new g_HasSvdex[33]
new pcvar_clipammo, pcvar_bpammo
public plugin_init(){
pcvar_bpammo=register_cvar("svdex_bpammo", "90")
pcvar_clipammo=register_cvar("svdex_clipammo", "30")
RegisterHam(Ham_Item_PostFrame, g_weapon_entity, "fwItemPostFrame")
}
#define m_iPrimaryAmmoType 49
#define m_iClip 51
#define m_rgAmmo_CBasePlayer 376
public fwItemPostFrame(const iItem)
{
static iButton, iPlayer;
if(!is_valid_player(iPlayer))
return
if (get_pdata_int(iItem, m_fInReload, OFFSET_LINUX_WEAPONS))
{
new iClip = get_pdata_int(iItem, m_iClip, OFFSET_LINUX_WEAPONS);
new iPrimaryAmmoIndex = PrimaryAmmoIndex(iItem);
new iAmmoPrimary = GetAmmoInventory(iPlayer, iPrimaryAmmoIndex);
new iAmount = min(get_pcvar_num(pcvar_clipammo) - iClip, iAmmoPrimary);
//set_pdata_int(iItem, m_iClip, iClip + iAmount, OFFSET_LINUX_WEAPONS);
set_pdata_int(iItem, m_fInReload, 0, OFFSET_LINUX_WEAPONS)
SetAmmoInventory(iPlayer, iPrimaryAmmoIndex, iAmmoPrimary - iAmount);
}
}
PrimaryAmmoIndex(const iItem)
{
return get_pdata_int(iItem, m_iPrimaryAmmoType, OFFSET_LINUX_WEAPONS);
}
GetAmmoInventory(const iPlayer, const iAmmoIndex)
{
if (iAmmoIndex == -1)
{
return -1;
}
return get_pdata_int(iPlayer, m_rgAmmo_CBasePlayer + iAmmoIndex, OFFSET_LINUX);
}
SetAmmoInventory(const iPlayer, const iAmmoIndex, const iAmount)
{
if (iAmmoIndex == -1)
{
return 0;
}
set_pdata_int(iPlayer, m_rgAmmo_CBasePlayer + iAmmoIndex, iAmount, OFFSET_LINUX);
return 1;
}
public is_valid_player(id){
if(!is_user_alive(id))
return false
if(!g_HasSvdex[id])
return false
return true
}
На данный момент баг примерно такой:
После перезарядки меняется количество патронов в обойме и в запасе на 7/1**, а не выставляется с учетом кваров.
То есть баг где-то в public fwItemPostFrame(const iItem)