Heres the code for adding seperate xp bonuses to each zone. It defaults at 100 which is no bonus. For 2x experience rate set it to 200 for that particular zone.
Source this into your database
	Code:
	alter table zone add column xpmod int(4) NOT NULL default 100;
 database.cpp Line 3295
	Code:
	int32 Database::SetZoneXPBonus(int32 zoneid) {
	char errbuf[MYSQL_ERRMSG_SIZE];
	char *query = 0;
	MYSQL_RES *result;
	MYSQL_ROW row;
	if (RunQuery(query, MakeAnyLenString(&query, "select distinct xpmod from zone where zoneidnumber=%i", zoneid), errbuf, &result)) {
		safe_delete_array(query);
		if (mysql_num_rows(result) == 1) {
			row = mysql_fetch_row(result);
			int32 ret = 0;
			if (row[0])
				ret = atoi(row[0]);
			mysql_free_result(result);
			return ret;
		}
		mysql_free_result(result);
	}
	else {
		cerr << "Error in GetZoneXPBonus Query '" << query << "' " << errbuf << endl;
		safe_delete_array(query);
		return 0;
	}
	
	return 0;	
}
 database.h Line 206
	Code:
	int32   SetZoneXPBonus(int32);
 Client.cpp
                     
     Replace
	Code:
	 
int32 exp = GetEXP() + (int32)((zone->GetEXPMod()) *  (add_exp - add_aaxp));
                       with
	Code:
	int32 exp = GetEXP() + (int32)((zone->GetEXPMod()) * (database.SetZoneXPBonus(zone->GetZoneID())/100) * (add_exp - add_aaxp));