Experimental fix for bug at16815 (karlos)

This commit is contained in:
David Anderson 2005-08-17 17:32:51 +00:00
parent 8648bf32a3
commit b04498cddb
2 changed files with 14 additions and 16 deletions

View File

@ -515,8 +515,10 @@ static cell AMX_NATIVE_CALL get_user_weapons(AMX *amx, cell *params) /* 3 param
cell *cpIds = get_amxaddr(amx,params[2]); cell *cpIds = get_amxaddr(amx,params[2]);
*cpIds = 0; *cpIds = 0;
int weapons = pPlayer->pEdict->v.weapons & ~(1<<31); // don't count last element int weapons = pPlayer->pEdict->v.weapons & ~(1<<31); // don't count last element
for(int i = 1; i < MAX_WEAPONS; ++i){ for(int i = 1; i < MAX_WEAPONS; ++i)
if (weapons & (1<<i)) { {
if (weapons & (1<<i))
{
*(cpIds+(*cpNum)) = i; *(cpIds+(*cpNum)) = i;
(*cpNum)++; (*cpNum)++;
} }
@ -664,13 +666,20 @@ static cell AMX_NATIVE_CALL user_has_weapon(AMX *amx,cell *params)
static cell AMX_NATIVE_CALL get_user_weapon(AMX *amx, cell *params) /* 3 param */ static cell AMX_NATIVE_CALL get_user_weapon(AMX *amx, cell *params) /* 3 param */
{ {
int index = params[1]; int index = params[1];
if (index < 1 || index > gpGlobals->maxClients){ if (index < 1 || index > gpGlobals->maxClients)
{
LogError(amx, AMX_ERR_NATIVE, "Invalid player id %d", index); LogError(amx, AMX_ERR_NATIVE, "Invalid player id %d", index);
return 0; return 0;
} }
CPlayer* pPlayer = GET_PLAYER_POINTER_I(index); CPlayer* pPlayer = GET_PLAYER_POINTER_I(index);
if (pPlayer->ingame){ if (pPlayer->ingame)
{
int wpn = pPlayer->current; int wpn = pPlayer->current;
if ( !(pPlayer->pEdict->v.weapons & (1<<wpn)) )
{
pPlayer->current = 0;
return 0;
}
cell *cpTemp = get_amxaddr(amx,params[2]); cell *cpTemp = get_amxaddr(amx,params[2]);
*cpTemp = pPlayer->weapons[wpn].clip; *cpTemp = pPlayer->weapons[wpn].clip;
cpTemp = get_amxaddr(amx,params[3]); cpTemp = get_amxaddr(amx,params[3]);

View File

@ -153,17 +153,6 @@ void Client_WeaponList(void* mValue)
break; break;
case 7: case 7:
int iId = *(int*)mValue; int iId = *(int*)mValue;
/*int* blocker;
int iwpn = iId;
if (iId > 31) {
iwpn -= 31;
blocker = &wpnList2;
}
else
blocker = &wpnList;*/
if ( (iId < 0 || iId >= MAX_WEAPONS ) || (wpnList & (1<<iId)) ) if ( (iId < 0 || iId >= MAX_WEAPONS ) || (wpnList & (1<<iId)) )
break; break;
wpnList |= (1<<iId); wpnList |= (1<<iId);