{
char unknown[12];
int id;
char lname[32];
char sname1[32];
char sname2[32];
char sname3[32];
char data[5336];
};
struct t_slot
{
BYTE enab; //0
BYTE type; //1
BYTE id; //2
char dum1[33]; //29 //4
char sname[16]; //12 //25
char dum2[19]; //17 //35
DWORD adr_weap; //48
DWORD adr_inv; //5C
};
DWORD dwADR_WEAPONBASE = ADR_WEAPONBASE;
DWORD dwOFS_SLOTBASE = OFS_SLOTBASE;
DWORD dwOFS_PLAYERID = OFS_PLAYERID;
t_weap* pweap[747];
t_slot* pslot[8];
t_slot* WPNslotadr(int pclass, int slot)
{
return (t_slot*)(*outgame + dwOFS_SLOTBASE + (pclass * 0x34) + (slot * 0x8));
}
void WPNput(int pclass, int slot, int weappon)
{
t_slot* pslot;
if (weappon < 0 || pweap[weappon] == 0) return;
pslot = WPNslotadr(pclass, slot);
pslot->adr_weap = (DWORD)pweap[weappon];
_strcpy(pslot->sname, pweap[weappon]->lname);
pslot->id = weappon;
pslot->type = 0x44;
pslot->enab = 1;
}
void find_weapons(void)
{
DWORD* p_weapbase, * baseadr;
t_weap* weap;
for (int i = 0; i < 747; i++)pweap[i] = 0;
p_weapbase = (DWORD*)dwADR_WEAPONBASE;
baseadr = (DWORD*)(*p_weapbase);
for (int b = 0; b < 747; b++)
{
weap = (t_weap*)(*baseadr);
if (weap)pweap[b] = weap;
baseadr++;
}
}
int WPNget(int pclass, int slot)
{
t_slot* pslot;
pslot = WPNslotadr(pclass, slot);
return pslot->id;
}






