Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool YEncIsCritical(char c)
- {
- return !c || c == 0x3D || c == 0xA || c == 0xD || c == 0x7F || c == 0x5C || c == 0x25 || c == 0x92 || c == 0x22 || c == 0x3B;
- }
- int Com_EncodeYEnc(char *indata, int inlen, char *outdata, int outlen)
- {
- int len = 0;
- for (int in = 0; in < inlen; ++in)
- {
- char c = indata[in] + 0x2A;
- if (YEncIsCritical(c))
- {
- c += 0x40;
- if (len + 1 == outlen)
- {
- *outdata = 0;
- return 0;
- }
- outdata[len++] = 0x3D;
- }
- if (len + 1 == outlen)
- {
- *outdata = 0;
- return 0;
- }
- outdata[len++] = c;
- }
- outdata[len] = 0;
- return len;
- }
- int Com_DecodeYEnc(const char *indata, char *outdata, int outlen)
- {
- bool escape = false;
- int len = 0;
- while (*indata)
- {
- char c = *indata;
- if (escape || c != 0x3D)
- {
- if (len == outlen)
- return 0;
- if (escape)
- {
- c -= 0x40;
- escape = false;
- }
- outdata[len++] = c - 0x2A;
- }
- else
- escape = true;
- ++indata;
- }
- return len;
- }
- void SetClientStats(int clientNum, bool statsModified, char *statData)
- {
- char encodedData[0x400];
- encodedBuffer[0] = 0x79;
- Com_EncodeYEnc(statData, 0x400, &encodedData[1], 0x400);
- SV_GameSendServerCommand(clientNum, 1, va("e %d %s", statsModified, encodedData));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement