示例#1
0
void
vc1::es_parser_c::handle_packet(memory_cptr packet) {
  uint32_t marker = get_uint32_be(packet->get_buffer());

  switch (marker) {
    case VC1_MARKER_SEQHDR:
      handle_sequence_header_packet(packet);
      break;

    case VC1_MARKER_ENTRYPOINT:
      handle_entrypoint_packet(packet);
      break;

    case VC1_MARKER_FRAME:
      handle_frame_packet(packet);
      break;

    case VC1_MARKER_SLICE:
      handle_slice_packet(packet);
      break;

    case VC1_MARKER_FIELD:
      handle_field_packet(packet);
      break;

    case VC1_MARKER_ENDOFSEQ:
      handle_end_of_sequence_packet(packet);
      break;

    default:
      handle_unknown_packet(marker, packet);
      break;
  }
}
示例#2
0
void handle_bulletin_boards( Client* client, PKTBI_71* msg )
{
	handle_unknown_packet( client );
}
示例#3
0
void handle_aos_commands (Client *client, PKTBI_D7* msg)
{
	//cout <<" Sizeof: " << sizeof(PKTBI_D7) << endl;
	//cout << "Received AOS command: " << cfBEu16(msg->msglen) << " " << cfBEu16(msg->subcmd) << endl;
	//fdump (stdout, client->buffer, client->bytes_received);

	//should check if serial is valid? client->chr->serial == msg->serial?

	switch (cfBEu16(msg->subcmd)) {
		case PKTBI_D7::CUSTOM_HOUSE_BACKUP:
			CustomHousesBackup(msg);
			break;
		
		case PKTBI_D7::CUSTOM_HOUSE_RESTORE:
			CustomHousesRestore(msg);
			break;
		
		case PKTBI_D7::CUSTOM_HOUSE_COMMIT:
			CustomHousesCommit(msg);
			break;
		
		case PKTBI_D7::CUSTOM_HOUSE_ERASE:
			CustomHousesErase(msg);
			break;
		
		case PKTBI_D7::CUSTOM_HOUSE_ADD:
			CustomHousesAdd(msg);
			break;
		
		case PKTBI_D7::CUSTOM_HOUSE_QUIT:
			CustomHousesQuit(msg);
			break;

		case PKTBI_D7::CUSTOM_HOUSE_ADD_MULTI:
			CustomHousesAddMulti(msg);
			break;
		
		case PKTBI_D7::CUSTOM_HOUSE_SYNCH:
			CustomHousesSynch(msg);
			break;

		case PKTBI_D7::CUSTOM_HOUSE_CLEAR:
			CustomHousesClear(msg);
			break;

		case PKTBI_D7::CUSTOM_HOUSE_SELECT_FLOOR:
			CustomHousesSelectFloor(msg);
			break;

		case PKTBI_D7::CUSTOM_HOUSE_REVERT:
			CustomHousesRevert(msg);
			break;
		case PKTBI_D7::GUILD_BUTTON:
			OnGuildButton(client);
			break;
		case PKTBI_D7::QUEST_BUTTON:
			OnQuestButton(client);
			break;
			//missing combat book abilities
		default:
			handle_unknown_packet(client);
	}
}
示例#4
0
void handle_update_range_change( Client* client, PKTBI_C8* msg )
{
	handle_unknown_packet( client );
}
示例#5
0
void handle_unknown_C4( Client* client, PKTOUT_C4* msg )
{
	handle_unknown_packet( client );
}
示例#6
0
void handle_msg_BF( Client* client, PKTBI_BF* msg )
	{
	UObject* obj = NULL;
	UMulti* multi = NULL;
	UHouse* house = NULL;
	switch(cfBEu16(msg->subcmd))
		{
		case PKTBI_BF::TYPE_CLIENT_LANGUAGE:
			client->chr->uclang = strlower(msg->client_lang);
			break;
		case PKTBI_BF::TYPE_REQ_FULL_CUSTOM_HOUSE:
			if( (client->UOExpansionFlag & AOS) == 0 )
				return;
			multi = system_find_multi(cfBEu32(msg->reqfullcustomhouse.house_serial));
			if(multi != NULL)
				{
				house = multi->as_house();
				if(house != NULL)
					{
					if(client->UOExpansionFlag & AOS)
						{
						send_object_cache(client, (UObject*)(house));
						}
					//consider sending working design to certain players, to assist building, or GM help
					CustomHousesSendFull( house, client, HOUSE_DESIGN_CURRENT );
					}
				}
			break;
		case PKTBI_BF::TYPE_OBJECT_CACHE:
			if( (client->UOExpansionFlag & AOS) == 0)
				return;
			obj = system_find_object(cfBEu32(msg->objectcache.serial));
			if(obj != NULL)
				{
				SendAOSTooltip(client,obj);
				}
			break;
		case PKTBI_BF::TYPE_SESPAM:
			return;
			break;
		case PKTBI_BF::TYPE_SPELL_SELECT:
			do_cast(client, cfBEu16(msg->spellselect.selected_spell) );
			break;
		case PKTBI_BF::TYPE_CHARACTER_RACE_CHANGER:
			character_race_changer_handler( client, msg );
			break;
		case PKTBI_BF::TYPE_PARTY_SYSTEM:
			party_cmd_handler( client, msg );
			break;
		case PKTBI_BF::TYPE_EXTENDED_STATS_IN:
			ext_stats_in(client, msg);
			break;
		case PKTBI_BF::TYPE_CLOSED_STATUS_GUMP:
			return;
			break;
		case PKTBI_BF::TYPE_SCREEN_SIZE:
			return;
			break;
		case PKTBI_BF::TYPE_TOGGLE_FLYING:
			if (client->chr->race==RACE_GARGOYLE)
				{
				// FIXME: add checks if its possible to stand with new movemode
				client->chr->movemode = (MOVEMODE)(client->chr->movemode ^ MOVEMODE_FLY);
				send_move_mobile_to_nearby_cansee( client->chr );
				send_goxyz( client, client->chr );
				}
			break;
		case PKTBI_BF::TYPE_CLIENTTYPE:
			client->UOExpansionFlagClient = ctBEu32( msg->clienttype.clientflag );
			break;
		default:
			handle_unknown_packet( client );
		}
	}
示例#7
0
void handle_msg_BB( Client* client, PKTBI_BB* msg )
{
    handle_unknown_packet( client );
}