Functions return their values through the EAX register, which is 4 bytes. So a function can't return a short or a char. Shorts and chars are normally used for storing low-precision values or text, but not for number calculation.
So, you'll normally use
int INVIsAllowed(RPGInventory* Inv,RPGItem* Item)
{
return(Inv->AllowedItems & Item->ItemType);
}
However I'll implement short and char return in one of the next updates for compatibility reasons.