chs = vg_strncpy( client->item_player, item->uid, ADDON_UID_MAX,
k_strncpy_always_add_null );
item->type = k_addon_type_player;
+ item->client = i;
size = sizeof(netmsg_playeritem) + chs + 1;
SteamAPI_ISteamNetworkingSockets_SendMessageToConnection(
hSteamNetworkingSockets, joiner->connection,
chs = vg_strncpy( client->item_board, item->uid, ADDON_UID_MAX,
k_strncpy_always_add_null );
item->type = k_addon_type_board;
+ item->client = i;
size = sizeof(netmsg_playeritem) + chs + 1;
SteamAPI_ISteamNetworkingSockets_SendMessageToConnection(
hSteamNetworkingSockets, joiner->connection,
prop->inetmsg_id = k_inetmsg_playerusername;
prop->index = client_id;
- u32 chs = vg_strncpy( client->username, prop->name, name_len,
+ u32 chs = vg_strncpy( client->username, prop->name, NETWORK_USERNAME_MAX,
k_strncpy_always_add_null );
vg_info( "client #%d changed name to: %s [%s]\n", client_id,
k_nSteamNetworkingSend_Unreliable );
}
else if( tmp->inetmsg_id == k_inetmsg_playeritem ){
- netmsg_playeritem *item = alloca(msg->m_cbSize);
- memcpy( item, msg->m_pData, msg->m_cbSize );
- item->client = client_id;
+ netmsg_playeritem *item = msg->m_pData;
- vg_info( "Client #%u equiped: [%u] %s\n",
- item->client, item->type, item->uid );
+ /* record */
+ struct gameserver_client *client = &gameserver.clients[ client_id ];
- gameserver_send_to_all( client_id, item, msg->m_cbSize,
+ if( item->type == k_addon_type_board ){
+ network_msgstring( item->uid, msg->m_cbSize, sizeof(netmsg_playeritem),
+ client->item_board, ADDON_UID_MAX );
+ }
+ else if( item->type == k_addon_type_player ){
+ network_msgstring( item->uid, msg->m_cbSize, sizeof(netmsg_playeritem),
+ client->item_player, ADDON_UID_MAX );
+ }
+ else {
+ vg_warn( "Client #%d invalid equip type %u\n",
+ client_id, (u32)item->type );
+ return;
+ }
+ vg_info( "Client #%d equiped: [%u] %s\n",
+ item->client, item->type, item->uid );
+
+ /* propogate */
+ netmsg_playeritem *prop = alloca(msg->m_cbSize);
+ memcpy( prop, msg->m_pData, msg->m_cbSize );
+ prop->client = client_id;
+ gameserver_send_to_all( client_id, prop, msg->m_cbSize,
k_nSteamNetworkingSend_Reliable );
}
}