广州至武汉列车时刻表

by Administrator 2012.7.7 10:10
广州至武汉列车时刻表G1102高速动车广州南站-武汉站酒店07:00-11:084小时8分钟 1069 公里465 元买票 D2102动车组广州南站-武汉站酒店07:05-13:456小时40分钟 1069 公里330 元买票 G1106高速动车广州南站-武汉站酒店07:15-11:304小时15分钟 1069 公里465 元买票 D2102动车组广州北站-武汉站酒店07:31-13:456小时14分钟 1022 公里315 元买票 G1012高速动车广州南站-武汉站酒店07:34-11:504小时16分钟 1069 公里465 元买票 G1110高速动车广州南站-武汉站酒店07:57-12:134小时16分钟 1069 公里465 元买票 G1110高速动车广州北站-武汉站酒店08:16-12:133小时57分钟 1022 公里445 元买票 G1114高速动车广州南站-武汉站酒店08:30-12:454小时15分钟 1069 公里465 元买票 G1116高速动车广州南站-武汉站酒店08:50-12:584小时8分钟 1069 公里465 元买票 K1168快速广州站-武昌站酒店08:57-21:1112小时14分钟 1069 公里0 元买票 G1118高速动车广州南站-武汉站酒店09:05-13:134小时8分钟 1069 公里465 元买票 G1116高速动车广州北站-武汉站酒店09:09-12:583小时49分钟 1022 公里445 元买票 G1014高速动车广州南站-武汉站酒店09:16-13:314小时15分钟 1069 公里465 元买票 K770/K767快速广州站-武昌站酒店09:32-22:2512小时53分钟 1069 公里140 元买票 G1120高速动车广州南站-武汉站酒店09:43-13:514小时8分钟 1069 公里465 元买票 T202快速广州站-武昌站酒店09:47-20:1010小时23分钟 1069 公里140 元买票 G1122高速动车广州南站-武汉站酒店09:55-14:034小时8分钟 1069 公里465 元买票 K770/K767快速广州北站-武昌站酒店09:57-22:2512小时28分钟 1042 公里137 元买票 K1160快速广州站-武昌站酒店10:00-22:1012小时10分钟 1069 公里140 元买票 G1124高速动车广州南站-武汉站酒店10:15-14:384小时23分钟 1069 公里465 元买票 G1002高速动车广州南站-武汉站酒店10:33-14:133小时40分钟 1069 公里465 元买票 G1124高速动车广州北站-武汉站酒店10:34-14:384小时4分钟 1022 公里445 元买票 K356/K357快速广州站-武昌站酒店10:36-22:5712小时21分钟 1069 公里140 元买票 G1126高速动车广州南站-武汉站酒店10:42-14:504小时8分钟 1069 公里465 元买票 G1128高速动车广州南站-武汉站酒店10:57-15:054小时8分钟 1069 公里465 元买票 G1130高速动车广州南站-武汉站酒店11:08-15:164小时8分钟 1069 公里465 元买票 G1128高速动车广州北站-武汉站酒店11:16-15:053小时49分钟 1022 公里445 元买票 G1132高速动车广州南站-武汉站酒店11:20-15:354小时15分钟 1069 公里465 元买票 K921/K924快速广州东站-汉口站酒店11:22-07:3120小时9分钟 1411 公里213 元买票 G1134高速动车广州南站-武汉站酒店11:32-15:494小时17分钟 1069 公里465 元买票 G1132高速动车广州北站-武汉站酒店11:39-15:353小时56分钟 1022 公里445 元买票 G1016高速动车广州南站-武汉站酒店11:53-16:034小时10分钟 1069 公里465 元买票 G1136高速动车广州南站-武汉站酒店11:58-16:134小时15分钟 1069 公里465 元买票 G1138高速动车广州南站-武汉站酒店12:10-16:254小时15分钟 1069 公里465 元买票 T264/T265快速广州站-武昌站酒店12:19-22:3410小时15分钟 1069 公里140 元买票 G1140高速动车广州南站-武汉站酒店12:27-16:374小时10分钟 1069 公里465 元买票 G1142高速动车广州南站-武汉站酒店12:43-16:524小时9分钟 1069 公里465 元买票 G1144高速动车广州南站-武汉站酒店12:56-17:044小时8分钟 1069 公里465 元买票 G1142高速动车广州北站-武汉站酒店13:02-16:523小时50分钟 1022 公里445 元买票 G1018高速动车广州南站-武汉站酒店13:14-17:264小时12分钟 1069 公里465 元买票 G1148高速动车广州南站-武汉站酒店13:25-17:344小时9分钟 1069 公里465 元买票 K642/K643快速广州站-武昌站酒店13:25-02:0112小时36分钟 1069 公里140 元买票 K1008快速广州站-武昌站酒店13:31-03:1413小时43分钟 1069 公里140 元买票 G1150高速动车广州南站-武汉站酒店13:39-17:484小时9分钟 1069 公里465 元买票 G1152高速动车广州南站-武汉站酒店13:56-18:064小时10分钟 1069 公里465 元买票 G1154高速动车广州南站-武汉站酒店14:07-18:244小时17分钟 1069 公里465 元买票 K2090快速广州站-武昌站酒店14:10-04:4214小时32分钟 1069 公里140 元买票 G1156高速动车广州南站-武汉站酒店14:17-18:364小时19分钟 1069 公里465 元买票 G1004高速动车广州南站-武汉站酒店14:31-18:113小时40分钟 1069 公里465 元买票 K82/K83快速广州站-武昌站酒店14:36-02:4512小时9分钟 1069 公里140 元买票 G1158高速动车广州南站-武汉站酒店14:38-18:534小时15分钟 1069 公里465 元买票 D2104动车组广州南站-武汉站酒店14:46-21:336小时47分钟 1069 公里330 元买票 K600/K597快速广州站-武昌站酒店14:52-03:3612小时44分钟 1069 公里140 元买票 G1160高速动车广州南站-武汉站酒店15:00-19:154小时15分钟 1069 公里465 元买票 D2104动车组广州北站-武汉站酒店15:05-21:336小时28分钟 1022 公里315 元买票 G1020高速动车广州南站-武汉站酒店15:16-19:414小时25分钟 1069 公里465 元买票 G1162高速动车广州南站-武汉站酒店15:50-20:054小时15分钟 1069 公里465 元买票 T256快速广州站-武昌站酒店16:09-02:3510小时26分钟 1069 公里140 元买票 G1162高速动车广州北站-武汉站酒店16:09-20:053小时56分钟 1022 公里445 元买票 G1164高速动车广州南站-武汉站酒店16:15-20:374小时22分钟 1069 公里465 元买票 T14/T11快速广州东站-武昌站酒店16:24-03:2611小时2分钟 1077 公里140 元买票 K260快速广州东站-武昌站酒店16:30-06:1013小时40分钟 1077 公里140 元买票 G1006高速动车广州南站-武汉站酒店16:31-20:133小时42分钟 1069 公里465 元买票 G1168高速动车广州南站-武汉站酒店16:42-20:504小时8分钟 1069 公里465 元买票 T16快速广州站-武昌站酒店16:48-03:0310小时15分钟 1069 公里140 元买票 G1170高速动车广州南站-武汉站酒店17:24-21:264小时2分钟 1069 公里465 元买票 G1022高速动车广州南站-武汉站酒店17:43-21:524小时9分钟 1069 公里465 元买票 T254快速广州站-武昌站酒店17:58-05:0111小时3分钟 1069 公里140 元买票 G1174高速动车广州南站-武汉站酒店18:00-22:154小时15分钟 1069 公里465 元买票 T236/T237快速广州东站-武昌站酒店18:17-05:2411小时7分钟 1077 公里140 元买票 G1024高速动车广州南站-武汉站酒店18:40-22:484小时8分钟 967 公里465 元买票 T90快速广州站-武昌站酒店18:45-05:1310小时28分钟 1069 公里140 元买票 G1176高速动车广州南站-武汉站酒店19:00-23:014小时1分钟 1069 公里465 元买票 T124/T121快速广州站-武昌站酒店19:04-05:5010小时46分钟 1069 公里140 元买票 K756/K757快速广州站-武昌站酒店19:10-08:1713小时7分钟 1069 公里140 元买票 K1296快速广州站-武昌站酒店19:16-09:4214小时26分钟 1069 公里140 元买票 G1178高速动车广州南站-武汉站酒店19:20-23:284小时8分钟 1069 公里465 元买票 T96快速广州站-武昌站酒店19:30-06:1810小时48分钟 1069 公里140 元买票 T96快速广州站-汉口站酒店19:30-06:4711小时17分钟 1089 公里140 元买票 K238/K239快速广州东站-武昌站酒店20:05-08:5612小时51分钟 1077 公里129 元买票 K10快速广州站-武昌站酒店20:30-09:0212小时32分钟 1069 公里140 元买票 K226/K227快速广州站-武昌站酒店20:45-09:2512小时40分钟 1069 公里140 元买票 K10快速广州北站-武昌站酒店20:53-09:0212小时9分钟 1042 公里137 元买票 T180快速广州站-武昌站酒店21:23-08:0810小时45分钟 1069 公里140 元买票 K437/K436快速广州站-武昌站酒店23:06-11:2612小时20分钟 1069 公里140 元买票 T38/T35快速广州站-武昌站酒店23:53-10:4210小时49分钟 1069 公里140 元买票 

Tags:

其它

从“曾国藩从政八经”到企业管理

by Administrator 2010.8.20 03:46
前两天,收到一条短信,顺手就把它转发到微博上去。这条短信的内容是:“曾国藩从政八经:1、做人要象人,做官不可太象官。2、把所有人得罪了就谁也不得罪了。3、有油水的地方往往最滑,站稳都难。4、沉默是一种态度,拖也是一种工作方法。5、不怕群众骂你,就怕群众不找你。6、可以得罪忙人但不能得罪闲人。7、小胜靠智,大胜靠德。8、人不能把钱带进坟墓,但钱可以把人带进坟墓。”截止到写这篇博客时,这条微博的转发数是3201条,这是一个很高的数字了。有不少网友质疑这是否是曾国藩所说的,又怎么都是白话文呢?我觉得这是不是曾国藩所说的并不重要,考证这码子事还是交给历史学家去吧。重要的是这些话是不是在理,能否给我们一些启迪。也有一些网友希望我能够结合到企业管理中给大家分析分析,下面就试着简单谈谈我的一些看法。1、做人要象人,做官不可太象官。在企业里做官、做领导也是如此。要做好“领导”,先要做好“人”。做官难,做人更难。己之不正,焉能正人。做好“人”之后,做人做的很象“人”之后,再考虑如何做官,如何做好官。做人要讲实在,做官要讲机智。如果你做官做的太想官,就可能会引起同级的不满,下属的不满。我曾经就见过一个公司的CTO,目空一切,不仅在直属下属面前摆架子,甚至除了CEO之外,把其他的C“X”O们都不放在眼里,口头禅就是“这个你不懂,技术上没法实现”,其结果呢?最后CEO只好忍痛割爱,把这个CTO给T了。2、把所有人得罪了就谁也不得罪了。如果没有记错的话,“铁面审计长”李金华在接受记者采访也说过类似的话。有一家IT企业的副总经理,由于企业的产品和市场均因许多因素发展的很不顺畅,导致了许多不尽如人意的事件发生,使他在管理中出现了焦头烂额的情况。他先是与负责营销的一位总监产生了矛盾,而后又与一位区域市场的营销经理发生了过节,最后又得罪了一些人,他感觉到此时仿佛全世界都与他为敌。后来他也终于明白,管理就不能做“老好人”,不能怕得罪人。管理是为了什么?难道是“老好人大赛”看谁比较受人欢迎?不要说大胆管理,再小心的管理也不可能让人人说好,那种只说“好好好”的管理早晚把大家都送进地狱。管理应该是好人、真心为企业的人大部分说你好,坏人、只计较个人得失的人大部分说你坏,这样就差不多是个好的管理者了。3、有油水的地方往往最滑,站稳都难。是非处,要远离。4、沉默是一种态度,拖也是一种工作方法。在很多人的眼里,“拖字诀”是很负面的。一个企业领导,如果采取拖字诀的话,是会被人看不起的。其实在很多时候,拖字诀是高手们经常采用的方法。首先,拖字诀可以摆迷魂阵,让其他人看不透你的真实目的,对方也就不知道该怎么继续下子。其次,这也是最重要的因素,就是可能现在认为时机还不成熟,等条件成熟,一旦这件事已经演变的不可逆转的时候,一出手即可定乾坤。再次,局势瞬息万变,拖字诀可以给自己从容的考虑时间,并寻找最佳的出手机会。5、不怕群众骂你,就怕群众不找你。在企业管理中,这句话就是,不怕员工骂你,就怕员工不找你。6、可以得罪忙人但不能得罪闲人。闲人扎堆处,是非多。7、小胜靠智,大胜靠德。智,即智慧、才能。德,即道德、德行。小的胜利要靠智谋,大的胜利要靠自己的德行。好像这也是蒙牛掌门人牛根生经常说起的一句话。仔细琢磨,琢磨越有味道。如果一味地坑、诓、拐、骗,以奸商的行为和手段来经商,就会失去信誉、丢去人心,不能长久。Google之所以能这么成功,其中最重要的一个原因就是因为她恪守着“Don’t be evil” (不作恶) ”的企业信条。8、人不能把钱带进坟墓,但钱可以把人带进坟墓。想想曾经富豪榜上风光无限的那么多人,最后纷纷落马,成为知名落马富豪,个中原因,多是因为没有参透这最后一条。

Tags:

其它

一命二运三风水,四积阴德五读书

by Administrator 2010.5.21 06:12
溜达在创业的路上,感悟自然多了些。今天,微博里有个讨论很有意思。先是经纬张颖的一条围脖起头:“一命二运三风水,四积阴德五读书。我非常信!”接着蔡文胜:“哈哈,我也信,但顺序应该是:一读书,二积德,三风水,四运气,五命运。”再接着尚进_麒麟ldquo;呵呵,凑热闹解读一下顺序问题:一命运是大环境;二风水是小环境;三运气是关键点;四积阴德是社会资源储备;五读书是能力储备。” 再接着,就是在下了:“凑热闹,我的顺序:一运气,二读书,三积德,四风水,五命运。” “一命二运三风水,四积阴德五读书。”这是条典故,记不清出自哪里了,非常流行。其实,这也是成功的五个条件,这里我就说说我排序的理由,也就是重要性吧。 1、“运”:踩对步点。 “运”是指变动的情况,一般称作“运气”。尚进把它理解为“关键点”,我觉得解释的非常好。但我更愿意解释为“踩对步点”。 踩对步点,抓住机会,这是创业成功的第一步。 如果没有踩对步点,你就是再聪明,再有能力,可能也是徒劳。比如水浒一百零单八将,比如天平天国那帮热血男儿,都很令人叹息,那都是个顶个的英雄啊。再比如互联网行业的瀛海威、8848,回头想来,也是“长使英雄泪满襟”。 2、“读书”:练内功,能力问题。 古人一直在循循善诱:先是说“万般皆下求,唯有读书高”、又说“书中自有黄金屋,书中自有颜如玉,书中自有千种栗”,更说“三日不读书,则面目可憎”。 久而久之,读书已经成为练内功,加强自身修养的代名词。 如果能够掌握好“运”,踩对步点,那就看谁能力更强了。你也做聊天工具,我也做聊天工具,那为何最后是路人甲一统天下呢?无它,路人甲更强尔。 3、“积德”:社会资源、关系,外部条件问题。所谓“积德”,可不能直译。我和尚进兄的观点类似,更多是指社会资源、关系,外部条件问题。 哥们王兴,每次创业都能踩对步点,从校内网,到饭否网,再到美团网。每一次步点踩的都非常好,FaceBook火了做校内,Twitter火了做饭否,Groupon火了做美团。王兴能力也很强,但为何总是给人感觉差一口气呢?这就是第三个条件,社会关系的问题,社会资源的问题。 这个条件,放在国内,就显得尤为重要。&

Tags:

其它

魔兽争霸III数据包规范

by Administrator 2010.4.29 15:02
1. 本文涉及的数据包种类a)       魔兽争霸III拥有以下类型的数据包i.          局域网UDP数据包。这类数据包都用于在游戏准备阶段广播/检测游戏信息。ii.        游戏中TCP数据包。这类数据包在游戏准备阶段和实际游戏阶段都会被用到。我会分两部分来介绍这类数据包。iii.      Battle.net TCP/UDP 数据包。有时间的话,我会用一份单独的doc文档来介绍这部分。目前可暂且参考 http://www.bnetdocs.org.b)       本规范中仅讨论前二类数据包。1. 本文涉及的数据包种类a)       魔兽争霸III拥有以下类型的数据包i.          局域网UDP数据包。这类数据包都用于在游戏准备阶段广播/检测游戏信息。ii.        游戏中TCP数据包。这类数据包在游戏准备阶段和实际游戏阶段都会被用到。我会分两部分来介绍这类数据包。iii.      Battle.net TCP/UDP 数据包。有时间的话,我会用一份单独的doc文档来介绍这部分。目前可暂且参考 http://www.bnetdocs.org.b)       本规范中仅讨论前二类数据包。 2. 数据包头魔兽争霸III中使用的所有数据包都拥有四字节的包头,具体如下表: 字节 / 类型用途1 / uint8魔数标志位。0xF7 – 局域网UDP或游戏中TCP数据包(本文中所有数据包都采用这个标志)0xFF -- Battle.net战网数据包1 / uint8操作码。详情参考第3、4、5部分。2 / uint16数据包长度(包括4字节的包头部分)。 3. 局域网UDP数据包a)       操作码0x2F这种数据包用于查询局域网游戏,它可用于两种场合:1.应答0x31或0x32数据包以查询指定游戏的信息。2.玩家进入局域网游戏界面时发送。向255.255.255.255广播以查询所有可加入的游戏。字节 / 类型用途4 / uint32以低位在前的方式表示游戏类型。'W3XP' = TFT    'WAR3' = ROC4 / uint32游戏版本。比如War3 1.24,这里就填24。4 / uint32游戏ID, 广播时置零。 b)       操作码0x30用于应答UDP 0x2F数据包,该数据包包含完整的游戏信息。字节 / 类型用途4 / uint32以低位在前的方式表示操作系统信息。'IX86' = Windows    'XMAC' = Mac OS X4 / uint32以低位在前的方式表示游戏类型。4 / uint32游戏ID。4 / uint32系统时钟(比如Windows就用GetTickCount()来获得)。N/以'\0'结束的字符串这是一个经过编码的字符串,包含着大量重要的游戏信息。参考附注。4 / uint32玩家位置数。4 / uint32游戏标志。据我所知 0x01 = 剧情游戏;0x09 = 自定义游戏。4 / uint32游戏内玩家数。4 / uint32非电脑玩家位置数。   综上所述,我们可以得出这样的公式:显示的游戏内玩家数=游戏内玩家数+(位置数-非电脑位置数)4 / uint32未知。通常是0-0x802 / uint16以低位在前方式表示用于侦听连接的TCP游戏端口。 附注(编码字符串):所有值为偶数的字节都+1。因此所有编码后的字节都是奇数。并用一个控制字节来保存接下去7字节的转换方式。因为所有空字节都会变成1,因此编码字符串内不会包含空字节。但空字节用于表征字符串的结束。编码字符串以一个控制字节开头。控制字节中第1-7位(不包括第0位)分别依次对应控制字节后的7个字节。第0位无作用,永远设为1。解码方式如下:如果对应位为'1',那么该字符不作修改。如果对应位为'0',那么该字符的值要减去1。解码完一个控制字节其后的七个字节后,接下去的字节又是一个新的控制字节。重复操作直到数据流中出现NULL字符。 用C语言解码的样例:char* EncodedString;char* DecodedString;char mask;int   pos=0, dpos=0;while (EncodedString[pos] != 0){ if (pos%8 == 0) mask=EncodedString[pos]; else {    if ((mask & (0x1 << (pos%8))) == 0)      DecodedString[dpos++] = EncodedString[pos] - 1;    else     DecodedString[dpos++] = EncodedString[pos]; } pos++;}编码方案的另一种理解方式如下:每个字符的第0位都移到控制字节,然后本身设为1。解码后字符串的结构:字节 / 类型用途4 / uint32游戏设置。1 / uint8永远为0。2 / uint16地图宽度。2 / uint16地图高度。4 / uint32地图本地校验码。N/以'\0'结束的字符串地图名。N/以'\0'结束的字符串主机用户名。1 / uint8永远为0(也算个以'\0'结束的字符串?)20 / uint8[20]地图本地SHA-1哈希值,这一段是1.23版后添加的,以防止地图互通。关于SHA-1哈希和地图校验的算法,我会在另一篇文章里讨论。 c)        操作码0x31主机建立游戏后会向255.255.255.255广播该数据包。字节 / 类型用途4 / uint32以低位在前的方式表示游戏类型。4 / uint32游戏版本。4 / uint32游戏ID(初始为1,随着逐个游戏的创建而自增)。 d)       操作码0x32游戏内玩家数发生变更后会向255.255.255.255广播该数据包。字节 / 类型用途4 / uint32游戏ID。4 / uint32显示的游戏内玩家数。4 / uint32玩家位置总数。 e)       操作码0x33游戏取消后会向255.255.255.255广播该数据包。字节 / 类型用途4 / uint32游戏ID 4. 游戏准备阶段的TCP包a)       操作码0x01保持连接存活,也用于游戏进行中。字节 / 类型用途4 / uint32系统时钟(比如Windows就用GetTickCount()来获得)。 b)       操作码0x04向新加入的玩家发送,告诉他们各个玩家位置的状态及他们所处的位置。字节 / 类型用途2 / uint16接下去5段信息的总长度(到“开始位置数”为止,不包括本段的2个字节。)1 / uint8玩家位记录的条数,这里记为RN。9 * RN / 玩家位记录 * RN每条玩家位记录代表每个玩家位的详细信息。每条记录的结构如下:uint8   玩家ID。0为电脑,0xFF为空。uint8   地图下载进度。0-100,0xFF代表'?'。uint8   玩家位状态。0-空,1-关闭,2-已有玩家。uint8   是否电脑。0-活人,1-电脑。uint8   队伍。0-11,12代表ob/裁判。uint8   颜色。0-11,12代表ob/裁判。uint8   种族。0x01-人类,0x02-兽人,0x04-暗夜精灵,0x08-亡灵,0x20-随机,0x40-地图未指定。uint8  AI等级。0-简单,1-普通,2-疯狂uint8   生命百分比。通常为50,60,70,80,90,100。用GHost++可设为其他值。4 / uint32游戏的初始随机种子。1 / uint8队伍和种族锁定标记:0x01 – 队伍已锁定0x02 – 种族已锁定0x04 – 种族为随机(无法与0x02共用)1 / uint8地图开始位置数。1 / uint8为新加入玩家分配的玩家位。16 / sockaddr_in主机用getpeername()获得的目标玩家地址。  c)        操作码0x06向新加入的玩家发送,告诉他们已经在游戏中的玩家列表,每个对应玩家会发一个0x06的包。字节 / 类型用途4 / uint32始终为0x02,可能是sockaddr_in的结尾数字?1 / uint8在玩家位信息中显示的玩家ID。N/以'\0'结束的字符串玩家名。最长16字节(包括结尾的'\0')。1 / uint8后续的额外字节数。局域网游戏中总是1。N / uint8[N]额外字节。局域网游戏中总是一个\0字节。16 / sockaddr_in从getpeername()获得的该玩家地址。16 / sockaddr_in从NAT路由(如果有)获得的该玩家地址(似乎只用于Battle.net战网)。 d)       操作码0x07玩家离开游戏时向所有玩家发送。也用于游戏进行中。字节 / 类型用途1 / uint8玩家ID。4 / uint32离开原因标志。这部分还需进一步研究。 e)       操作码0x08当玩家的地图载入完成后向所有玩家发送(此时主机将会从客户端处收到0x23数据包),这样所有玩家的读取界面上,该玩家的姓名板背景会变成绿色。字节 / 类型用途1 / uint8玩家ID。 f)         操作码0x09和0x04基本相同,但缺少最后两段。当任何玩家位相关信息发生改变时向所有玩家发送。(比如说正在下载地图,玩家改变位置等等。)字节 / 类型用途2 / uint16接下去5段信息的总长度(到“开始位置数”为止,不包括本段的2个字节。)1 / uint8玩家位记录的条数,这里记为RN。9 * RN / 玩家位记录 * RN每条玩家位记录代表每个玩家位的详细信息。每条记录的结构如下:uint8   玩家ID。0为电脑,0xFF为空。uint8   地图下载进度。0-100,0xFF代表'?'。uint8   玩家位状态。0-空,1-关闭,2-已有玩家。uint8   是否电脑。0-活人,1-电脑。uint8   队伍。0-11,12代表ob/裁判。uint8   颜色。0-11,12代表ob/裁判。uint8   种族。0x01-人类,0x02-兽人,0x04-暗夜精灵,0x08-亡灵,0x20-随机,0x40-地图未指定。uint8  AI等级。0-简单,1-普通,2-疯狂uint8   生命百分比。通常为50,60,70,80,90,100。用GHost++可设为其他值。4 / uint32游戏的初始随机种子。1 / uint8队伍和种族锁定标记:0x01 – 队伍已锁定0x02 – 种族已锁定0x04 – 种族为随机(无法与0x02共用)1 / uint8地图开始位置数。 g)       操作码0x0A只包含4字节的包头,当主机按下开始游戏,并开始倒数5秒时发送。 h)       操作码0x0B只包含4字节的包头,当5秒计时结束时发送,提醒所有玩家进入载入界面。 i)          操作码0x0F向聊天信息的接收者发送。如果是私密/小队频道的聊天,而且发送者和接收者可通过TCP连接,那么这个数据包是直接发送的。否则玩家会先向主机发送一个0x28数据包,主机再发给所有接收者。注意某些平台会阻断客户端之间的连接,因此所有聊天信息都要通过主机来传递,这就存在潜在的安全问题,可能导致私聊信息泄露。字节 / 类型用途1 / uint8需发送聊天信息的目标玩家数,这里记为PNPN / uint8 * PN每个uint8保存一个目标玩家ID。1 / uint8聊天信息发送者的玩家ID1 / uint8聊天信息标志。0x10-准备阶段,0x20-游戏阶段4 / uint32发送目标标志。0x00 – 向所有玩家发送0x01 – 向盟友发送0x02 – 向OB/裁判发送0x03-0x0E – 向特定玩家发送(玩家ID=值-2)当聊天信息标志为0x10(即游戏准备阶段)时,这段信息将被排除。N/以'\0'结束的字符串聊天字符串。  j)          操作码0x1B只包含4字节的包头,向玩家发布,告诉他们你已断开游戏,即使是主动退出游戏的情况。同样适用于游戏进行阶段。 k)       操作码0x1E这是当一个玩家加入游戏的时候向主机发送的第一份数据包,包含了该玩家的信息。字节 / 类型用途4 / uint32游戏ID。4 / uint32游戏开始后经过的毫秒数。1 / uint8始终为0。2 / uint16客户端的游戏端口。用于地图信息交换、直接私聊、主机变更等等。4 / uint32客户端会话计数器。初始值为1,每加入一个游戏都会自增。N/以'\0'结束的字符串用户名。2 / uint16可用的公共端口。这里记为P。16 * P / sockaddr_in * P每个公共端口都有一个套接字sockaddr_in结构。 l)          操作码0x21向主机发送主动离开游戏的信息(主机总是会回复0x1B以断开游戏)。同样适用于游戏进行中。 字节 / 类型用途4 / uint32理由标志。还需进一步研究。 m)    操作码0x23只包含4字节的包头。告诉主机当前玩家已完成游戏载入。 n)       操作码0x28该数据包有2个功能:i. 请求主机转发聊天信息。主机会把此信息转发给目标玩家。同样适用于游戏进行阶段。ii. 在游戏准备阶段对玩家位进行变更。字节 / 类型用途1 / uint8需要发送聊天信息的玩家总数,这里记为PNPN / uint8 * PN每个uint8保存一个需发送聊天信息的玩家ID。1 / uint8聊天信息发送者的玩家ID。1 / uint8聊天信息标志。0x10 – 游戏准备阶段的聊天0x11 – 变更小队0x12 – 变更颜色0x13 – 变更种族0x14 – 变更生命百分比0x20 – 游戏进行阶段的聊天当聊天信息标志 = 0x10或0x20:字节 / 类型用途4 / uint32发送目标标志。0x00 – 向所有玩家发送0x01 – 向盟友发送0x02 – 向OB/裁判发送0x03-0x0E – 向特定玩家发送(玩家ID=值-2)当聊天信息标志为0x10(即游戏准备阶段)时,这段信息将被排除。N/以'\0'结束的字符串聊天字符串。当聊天信息标志 = 0x11-0x14:字节 / 类型用途1 / uint8数据。聊天信息标志 = 0x11: 小队聊天信息标志 = 0x12: 颜色聊天信息标志 = 0x13: 种族聊天信息标志 = 0x14: 生命百分比参考0x04/0x09玩家位信息部分。 o)       操作码0x3D由主机发送,询问加入的玩家是否拥有当前地图。客户端将回复0x42数据包。字节 / 类型用途4 / uint32地图ID(?)N/以'\0'结束的字符串地图路径4 / uint32地图大小(单位为字节)。4 / uint32整个地图文件的CRC32。4 / uint32地图本地校验码。20 / uint8[20]地图本地SHA-1哈希值,这一段是1.23版后添加的,以防止地图互通。 p)       操作码0x3F当目标玩家没有地图(即玩家向主机发送的0x42数据包中可用地图大小<实际地图大小)的时候发送,客户端能够互相直接连接时也会互相发送。(我注意到可能存在一种操作码0x3E用于向非主机玩家查询地图,但尚未测试。)字节 / 类型用途4 / uint32地图ID(?)1 / uint8玩家ID q)       操作码0x42向主机发送,报告自己是否有地图或地图下载进度。字节 / 类型用途4 / uint32地图ID(?)1 / uint8下载源玩家ID或主机ID4 / uint32可用地图尺寸(下载进度) r)         操作码0x43向玩家发送地图数据,即传图。字节 / 类型用途1 / uint8目标玩家ID1 / uint8源玩家ID4 / uint32地图ID(?)4 / uint32地图文件偏移,用于写入数据。4 / uint32后面这段数据的CRC32。N / uint8[N]地图数据。 s)        操作码0x44应答0x43数据包,并汇报已下载地图尺寸以示接受。注意地图发送者并不会等收到这个包后再发送下一个0x43传图包。字节 / 类型用途1 / uint8目标玩家ID1 / uint8源玩家ID4 / uint32地图ID(?)4 / uint32已下载的地图尺寸。 t)         操作码0x45该数据包用于回复0x3F数据包,以拒绝从目标玩家处下载地图。字节 / 类型用途1 / uint8目标玩家ID1 / uint8源玩家ID4 / uint32地图ID(?) u)       操作码0x46用于应答0x01保持连接存活的数据包。同样适用于游戏进行阶段。字节 / 类型用途4 / uint32与0x01数据包的值相同。 5. 游戏中TCP数据包a)       操作码0x0C游戏数据包,每100毫秒向局域网中所有玩家发送(战网上是250毫秒,有工具可以调整这个值。)。字节 / 类型用途2 / uint16游戏已用时间,单位是毫秒。2 / uint16下一段数据的CRC32的低16位。注意:如果游戏数据为空,这段数据本身也会被排除,这样整个包就只有6字节。N / uint8[N]游戏数据。如果游戏数据超过1446字节,整段数据将被分割成若干个0x48数据包,并以一个0x0C数据包结尾。这是为了避免某些路由的最大传输单位限制。游戏数据与录像数据相同因此其格式可以参考以下文档:http://www.repking.com.cn/w3g_actions.txthttp://www.repking.com.cn/w3g_format.txtb)       操作码0x0E这种数据包很少见,只在游戏不同步时发送。尚需进一步研究。 c)        操作码0x14向玩家发送,告诉他们:你已经被主机踢了。(比如主机离开游戏)字节 / 类型用途1 / uint8玩家ID d)       操作码0x48就是缺少游戏已用时间的游戏数据包,用于游戏数据分多个包发送的情况。字节 / 类型用途2 / uint16游戏已用时间,单位是毫秒。这里始终是0。2 / uint16下一段数据的CRC32的低16位。注意:如果游戏数据为空,这段数据本身也会被排除,这样整个包就只有6字节。N / uint8[N]游戏数据。 e)       操作码0x26当玩家进行了一些操作时发送给主机。主机会收集所有玩家的操作并发回包含所有玩家操作的0x0C/0x48数据包作为应答。字节 / 类型用途N / uint8[N]玩家操作数据,参考0x0C以获得更多信息。 f)         操作码0x27同步数据包,当收到0x0C游戏数据包时发送给主机。字节 / 类型用途4 / uint32同步哈希值。主机将在本地计算哈希值,并与每个玩家的0x27数据包比较。一旦不同步现象产生,即0x27数据包的哈希值与主机计算不符,该玩家将立刻被断开。

Tags:

其它

关于博主

      什么都懂一点儿,热衷技术,热爱Programming,每有难题,常夜以继日,每有解决方案,手舞足蹈而欣喜若狂;好读书,不求甚解;每有会意,便欣然忘食;常纵情于山水之间,忘乎于尘世之外,唯程序难释怀尔。
       QQ:51557288

归档

最近的评论

声明

本博所有网友评论不代表本博立场,版权归其作者所有。

© Copyright 2011