德国青年克里斯(Daniel Brühl 饰)计划远赴非洲旅行,但是身无分文,阴差阳错又被警察扣留护照。万般无奈之下,他随在酒馆认识的水手偷偷登上一艘开往非洲的货轮。 克里斯在船上并未隐藏多久,便被船长布鲁克斯(Peter Mullan 饰)发现。船长欣赏这个小伙子,于是留其在厨房帮忙。克里斯和船员们很快熟捻,但他发现,其他人仿佛对他有所隐瞒,而就在这时,船员们也接二连三消失。寻找船员的时候,克里斯发现两名非洲偷渡客。为了避免国际巡警追查,船长下令将偷渡客扔入大海,这也由此揭开了这艘货轮所隐藏的秘密……。清光绪二十六年,枪王程子清想借助朝廷力量购置枪炮与洋人决战。黄团首领赵三多与“红灯照”首领林黑儿误认程子清是奸细,派红灯照莲花携毒镖与黄团二首领高元祥暗杀程子清。面对洋人的入侵,以光绪为首的主和派和以端王、庄王为首的主战派发生争执。狡诈的慈禧决定让义和团和洋人厮杀。程子清劝说上了当的高元祥不要攻打德国使馆,高非但不听,反与枪王打在一起。顿时,枪声四起,程子清掩护高元祥退出险境。
茶馆里,枪王告诫穿着红灯照标记红鞋的莲花赶快离去,免露踪迹,莲花备受感动。一个夜晚,程清乘机窃走了来妓院嫖妓的洋人的枪,同时听到洋奴段德昌对赛金花的一席话,继而又遇高元祥.正欲动手,高被飞来的瓦片打落房下,枪王救下高元祥,与赶来的段德昌等人打在一起。枪王来王府送枪,听到端王与李莲英的密谈,才知朝廷只足利用义和团,大为失望。枪王闭德国使馆时.落入克林德的圈套,因寡小敌众坠窗昏倒,幸被慈善院院长华裔德籍人林罗密救走。莲花返回大营时,正遇洋人偷袭“红灯照”,幸亏枪王带洋枪队赶到解了重围。
枪王与莲花回京找高元祥,发现高元祥中计火烧使馆。突然,高元祥中弹。被救到教堂,枪王和莲花与黄团三首领潘友会见面,枪王认出他就是在德国使馆中夹击他的蒙面人。潘友会拔枪射击,莲花为掩护林罗密中弹身亡。受伤的高元祥奋力掐死了潘友会,用莲花手中毒镖刺进自己的胸膛。慈禧决定对洋人宣战。枪王独闯德国使馆,抓住了克林德,克林德以抓住的林罗密相要挟,枪王同意撤离,但克林德突然举枪射击,林罗密中弹身亡。愤怒的枪王击毙了克林德。。