The problem is not that "Skin_Info[ item ][ SKIN_KNIFE ]" is -1. It is that "item", id, the value of Player[] or Skin_Info[] is negative or larger than the array size.
How to debug your code in 5 minutes:
Print everything.
Code:
public menuitem_callbackc( id, menu, item )
{
server_print("menuitem_callbackc(%d, %d, %d) called", id, menu, item);
If that doesn't reveal a problem, you add more messages.
Code:
server_print("Player[id][PLAYER_SKIN]: %d", Player[ id ][ PLAYER_SKIN ])
server_print("g_PlayerSkins[id][...]: %d", g_PlayerSkins[id][ Player[ id ][ PLAYER_SKIN ] ])
server_print("Skin_Info[item][SKIN_KNIFE]: %d", Skin_Info[ item ][ SKIN_KNIFE ])
server_print("g_PlayerKnives[id][...]: %d", g_PlayerKnives[id][Skin_Info[ item ][ SKIN_KNIFE ]])
One of these messages will show an obvious error which you will be able to correct.
If you are still unsure, post the result of those messages here.
__________________