| 7158 | } |
| 7159 | |
| 7160 | void MultiSendClientInventoryUseItem(int type, int id) { |
| 7161 | if (id == -1) { |
| 7162 | mprintf(0, "Asking server to use objnum %d\n", OBJNUM(ObjGet(type))); |
| 7163 | } else { |
| 7164 | mprintf(0, "Asking server to use T=%d ID=%d\n", type, id); |
| 7165 | } |
| 7166 | |
| 7167 | int size = 0; |
| 7168 | uint8_t data[MAX_GAME_DATA_SIZE]; |
| 7169 | int count = 0; |
| 7170 | // Client sends this only |
| 7171 | MULTI_ASSERT_NOMESSAGE(Netgame.local_role != LR_SERVER); |
| 7172 | |
| 7173 | if (id != -1) { |
| 7174 | // type/id use |
| 7175 | size = START_DATA(MP_CLIENT_USE_INVENTORY_ITEM, data, &count, 1); |
| 7176 | MultiAddUshort(type, data, &count); |
| 7177 | MultiAddUint(MultiGetMatchChecksum(type, id), data, &count); |
| 7178 | END_DATA(count, data, size); |
| 7179 | nw_SendReliable(NetPlayers[Player_num].reliable_socket, data, count, false); |
| 7180 | |
| 7181 | } else { |
| 7182 | // object use |
| 7183 | int local_objhandle = type; |
| 7184 | object *local_obj = ObjGet(local_objhandle); |
| 7185 | ASSERT(local_obj); |
| 7186 | ASSERT(local_obj->type != OBJ_NONE); |
| 7187 | |
| 7188 | if (local_obj) { |
| 7189 | int server_objnum = Local_object_list[OBJNUM(local_obj)]; |
| 7190 | ASSERT(server_objnum != 65535); |
| 7191 | |
| 7192 | mprintf(0, "Inven Use: Requesting to use server objnum %d. T=%d i=%d\n", |
| 7193 | server_objnum, |
| 7194 | local_obj->type, |
| 7195 | local_obj->id); |
| 7196 | |
| 7197 | size = START_DATA(MP_CLIENT_USE_INVENTORY_ITEM, data, &count, 1); |
| 7198 | MultiAddUshort(server_objnum, data, &count); |
| 7199 | MultiAddUint(0xFFFFFFFF, data, &count); |
| 7200 | END_DATA(count, data, size); |
| 7201 | nw_SendReliable(NetPlayers[Player_num].reliable_socket, data, count, false); |
| 7202 | } |
| 7203 | } |
| 7204 | } |
| 7205 | |
| 7206 | void MultiDoClientInventoryUseItem(int slot, uint8_t *data) { |
| 7207 | int count = 0; |
no test coverage detected