pid(player_id): 玩家編號,00--03。
rid(role_id): 角色編號,00--0b,有時0c對應球。
tid(team_id): 隊伍編號,00/01。
一般方向:上為00,順時針每45度加20。
0004,pid: key
a b select start
u d l r
0008,pid: changed_key
0045: ?
0057: 模式。高4位:league 8,vs 4,pk 2;低4位:easy 0,normal 1,hard 2。
注意是按位的,比如league模式點球時高四位為a。
0059: 遊戲狀態,比賽進行中為02,球出界為06,開球前為01,進球後03/04/05。
005a: 和0059差不多,切換時有區別。
005c: 比賽狀態,平常為00,遊戲暫停為80,開球前為01,邊線球44,門球/角球48。
005d: 玩家數,01--04。
0080: 球的貼圖。
0130,rid: 物件處於什麼樣的地面上(球的在013c),00草,02泥,03沙地。
0300: 計數器。
座標(低位 高位)(0c處是球的):
x:0314,rid 0327,rid
y:034d,rid 0360,rid
z:0386,rid 0399,rid
球的座標為:
x:0320 0333
y:0359 036c
z:0392 03a5
速率(低位 高位)(0c處是球的):
x:03e8,rid 03f6,rid
y:z: 042e,rid
球的速率為:
x:03f4 0402
y:z: 043a
0399,rid: 物件是否陷在泥沙中(球的在03a5),ff陷入,00沒有。
0459,rid: 球員狀態(0465為球的狀態)。
046c,rid: 對於門將,觸發側撲時00上,01下。(原版中寫0459,rid時會清這裡為00,導致側撲反向的bug)
球員擺出射門動作時為01。(改的蓄力射門中,蓄力時這裡要補上寫01)
0479,rid: 用於觸發球員動作,做動作都是寫一下這裡即可,有程式負責根據這裡寫0459,rid。這裡平時為ff。
0486,rid: 角色狀態,資訊按位表達,從高到低依次為:(0492為球的狀態)
是否跳起,是否控球,x,x,
是否跑動中(別的沒看,至少gk阿克塞爾跳時該位也為1),x,x,x。
0492: 球的狀態,資訊按位表達,從高到低依次為:
是否在空中,是否被持有,x,是否被踩住,
x,是否為射門持續狀態(不受重力影響的狀態),x,x。
0496,rid: 角色做動作的方向。
04a3,rid: 角色朝向,右00,左80。
04b0,rid: 角色對應的方向鍵,無為ff。
04d6: 當前(或最後)控球者的role_id。球出界時這裡寫誰誰去開球。
04e4,rid: 實時體力。球的能量在04f0。
04f1,rid: 技能。
04fd,rid: ?
050d: 球的濕度,00--ff。常以正負作為分支條件。
050f: 球狀態,射門觸發處寫02即出紅球。
0510: 球軌跡。00普通 01下落 02紅球爬公升 03彈起後 04平飛 05靜止 06豎直上公升 07? 08慢飛 09上挑 0a**(無效)
0512: 球相關?
0519--051a: 界外球開球點的y座標。
角球點的y座標只有兩種情況,0030和0158(同邊線球y座標)。
門球點的y座標為0090和00f0。
0525: 球帶電的剩餘時間。00為不帶電。
0526: 跑動顛球時的計數,每一下大約是01--0e。
052a,tid: 球隊是否持球,持球為80,沒持球為00。
052c,tid: 隊伍編號,league模式和vs模式下好像有的位有區別。
052e,tid: 得分。
0532,rid: 球員在該隊的編號,熱血00--0b,其它00--05。
055a: **編號。
0568,pid: 玩家控制的role_id。
056c,pid: 右移後的key,僅在包含a或b時(包括a+b)有效(有效值含方向鍵),否則為00。
0570,pid: 變化的056c,pid。
0574,pid: 右移後的key,僅在ab二者有且只有乙個的時候有效(有效值含方向鍵),否則為00。
0578,pid: a或b鍵持續按住的計數,不含a+b。
057c,pid: 連續的相同方向鍵,用於加速跑。
0584,pid: last方向鍵無變化的計數。
0589--058a: 遊戲開始時,演示畫面的倒計時。
05bf--05c1: 比賽剩餘時間。
05cc: 點球的程序,先是00--09,相當於踢球者的rid,之後是80--89迴圈。
05e2: 進球後的計數,自增至足夠大時切至觀眾席畫面。
05f6: 螢幕中心與球的關係,無人持球00,向右攻時為30,向左攻時為d0。
05fb: 場地,低4位是型別,0草地,1土地,2沙地;
高4位是積水狀況,從少到多為0,1,4,5。
05fd: 風力,原版範圍00--09。
05fe: 風向。
0650,rid: 最高位表示角色是否由ai控制;低4位為場上實時心情,半場結束後會被寫到05d5--05e0(熱血12人的心情)去。
//**********==0678起的若干位元組多與對ai的命令有關
0678,tid: 命令型別。00傳球,01射門,02防守a,03防守b,ff空。大致可以理解為按位儲存的資訊。
067a,tid: 高4位和低4位分別指示乙個rid,大約表示誰離球最近,也就是命令下給誰。f代表是玩家控制的角色。
一般高四位與低四位相同,轉換時低四位換到高四位。
玩家按鍵是否做動作、是否下命令都是看這裡的低四位(不是同一處**),原版中一般為f則做動作,不為f則下命令。
067c,tid: 命令伴隨的方向。
* 偏移為0a/0b(gk的rid)時,對應0686/0687,gk是否出了禁區,80出了,00沒出。這麼寫只是利用了rid。
067e,tid: 好像有時是命令伴隨的方向。
0680,tid:
0682,tid:
0684,tid:
0686,tid: gk是否出了禁區,00沒出,80出了。
068a: 邊線球和角球:去撿球時為00,撿到球走向開球位置為01,開球動作過程為02。
門球分00到04,試試只給01能不能去撿球。
熱血足球小專案總結
有時在為了乙個問題糾結過,做遊戲時是看重功能的實現還是注重外觀介面。其實這個問題在不同人看來answer肯定是不一樣的。因為對於寫程式的人來說,功能的實現必不可少,但是外在的介面相對來說不是那麼看重,乙個可以執行的程式,外在的只是表在的東西。但是對於使用者來說,客戶更加地把外在的介面看得重。原因其實...