Yes, it works on windows for me too but not on linux.
If you hook the WeaponList message (
get_user_msgid requires map change), it's not called for any weapon that "Ham_Item_GetItemInfo" is hooked for.
https://github.com/s1lentq/ReGameDLL_CS/blob/1eb385602a538d08575ef54245c5ef9ebf39de1d/regamedll/dlls/player.cpp#L261
Code:
#include <amxmodx>
#include <fun>
#include <hamsandwich>
public plugin_precache()
{
RegisterHam(Ham_Item_GetItemInfo, "weapon_scout", "CBasePlayerItem_GetItemInfo", .Post = true);
RegisterHam(Ham_Item_GetItemInfo, "weapon_m4a1", "CBasePlayerItem_GetItemInfo", .Post = true);
RegisterHam(Ham_Item_GetItemInfo, "weapon_ak47", "CBasePlayerItem_GetItemInfo", .Post = true);
new WeaponList = get_user_msgid("WeaponList");
if(WeaponList)
register_message(WeaponList, "WriteSigonMessages");
}
public CBasePlayerItem_GetItemInfo(pItem, iItemInfo)
{
return HAM_IGNORED;
}
public WriteSigonMessages()
{
new szWeapon[20];
get_msg_arg_string(1, szWeapon, charsmax(szWeapon));
server_print("szWeapon: %s. %d %d %d %d %d %d %d %d", szWeapon, get_msg_arg_int(2), get_msg_arg_int(3), get_msg_arg_int(4), get_msg_arg_int(5), get_msg_arg_int(6), get_msg_arg_int(7),get_msg_arg_int(8), get_msg_arg_int(9));
}
public plugin_init()
{
RegisterHam(Ham_Spawn, "player", "OnSpawnPost", .Post = true);
}
public OnSpawnPost(id)
{
if(is_user_alive(id))
{
give_item(id, "weapon_ak47");
give_item(id, "weapon_m4a1");
give_item(id, "weapon_usp");
}
}