FC 熱血足球聯盟 記憶體使用記錄

2021-06-06 22:26:00 字數 3314 閱讀 6983

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肯定是不一樣的。因為對於寫程式的人來說,功能的實現必不可少,但是外在的介面相對來說不是那麼看重,乙個可以執行的程式,外在的只是表在的東西。但是對於使用者來說,客戶更加地把外在的介面看得重。原因其實...