Skip to content

Commit 441091a

Browse files
author
Tom
committed
Quake 3 demo pattern: Read CS_SYSTEMINFO as well
1 parent 94170f5 commit 441091a

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

patterns/q3demo.hexpat

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,35 @@ fn readCsString(ref auto data, s32 len, s32 bitindex){
7373
}
7474
return test;
7575
};
76+
fn measureCsString(ref auto data, s32 len, s32 bitindex){
77+
s32 value = 0;
78+
u64 ret = 0;
79+
80+
while(true){
81+
ret = readbits(data,len,8,bitindex);DECODERET
82+
if(value != 3){
83+
break;
84+
}
85+
// configstring
86+
ret = readbits(data,len,16,bitindex);DECODERET
87+
u16 csNum = value;
88+
89+
while(true){
90+
ret = readbits(data,len,8,bitindex);DECODERET
91+
s8 val = value;
92+
if(val <= 0){
93+
break;
94+
}
95+
}
96+
return bitindex;
97+
}
98+
return bitindex;
99+
};
100+
101+
struct ConfigStrings {
102+
str CS_SERVERINFO = "" [[export]];
103+
str CS_SYSTEMINFO = "" [[export]];
104+
};
76105

77106
struct Message {
78107
le s32 messageNum;
@@ -99,7 +128,14 @@ struct Message {
99128
} else if(firstCmd == 2){
100129
ret = readbits(data,len,32,bitindex);DECODERET
101130
s32 serverTime = value [[export]];
131+
//ConfigStrings configStrings = null [[export]];
132+
133+
s32 nextBitindex = measureCsString(data,len,bitindex); // silly to do the calc twice but sadly we can't return both a string and an integer, rip
102134
str CS_SERVERINFO = readCsString(data,len,bitindex) [[export]];
135+
bitindex = nextBitindex;
136+
str CS_SYSTEMINFO = readCsString(data,len,bitindex) [[export]];
137+
//configStrings.CS_SYSTEMINFO = readCsString(data,len,bitindex) ;
138+
103139
}
104140

105141
} else{

0 commit comments

Comments
 (0)