Цветная консоль ...
более конкратна в исходнкиах csx-guard есть.. там гейм консоль грузится.. ну я вырезал ток нужное
Код
procedure setColorConsole;
var
Cmd: cmd_s;
Addr : Pointer;
GameConsole003: Pointer;
begin
Cmd := CommandByName('clear');
CheckCallback(Cmd);
Addr := Pointer ( Absolute ( Cardinal ( @Cmd.Callback ) + 26 ) );
if CheckByte(@Cmd.Callback, $E9, 25) or Bounds(Addr, HLBase, HLBase_End, True) then
PrintSearchError('GameConsole003');
GameConsole003 := PPointer ( Cardinal ( Addr ) + 2 )^;
if CheckWord(Addr, $0D8B) or Bounds(GameConsole003, HLBase, HLBase_End) then
PrintSearchError('GameConsole003');
Console_TextColor := PColor24 (
Cardinal ( PPointer ( Cardinal ( PPointer ( GameConsole003 )^ ) + 8 )^ ) +
292 + Cardinal ( Protocol = 48 ) * SizeOf ( LongWord )
);
if PCardinal ( Cardinal ( Console_TextColor ) + 8 )^ <> 0 then
Inc ( Cardinal ( Console_TextColor ) , SizeOf ( LongWord ) );
Console_TextColorDev := PColor24(Cardinal(Console_TextColor) + 4);
Console_TextColor_def := Console_TextColor^;
Console_TextColorDev_def := Console_TextColorDev^;
end;
где тип Console_TextColor_def Код
PColor24 = ^Color24;
Color24 = record
R, G, B: Byte;
end;
описание поисковых и чекующих функций есть в исходниках ксикас гуарда 4
Добавлено (17.12.2013, 16:28)
---------------------------------------------
а ну еще выложу код генерации числа в рев эми
Код
unsigned int CRevSteamID::revHash(const char* Str)
{
int i;
unsigned int Hash;
int CurChar;
i = 0;
Hash = 0x4E67C6A7;
CurChar = Str[i++];
while (CurChar)
{
Hash ^= (Hash >> 2) + CurChar + 32 * Hash;
CurChar = Str[i++];
}
return Hash;
}
мне его контер дал ( за что ему спс )...
принимает заглавные буквы ( и мелкие еще наверн и цифры .. но я не проверял ) .. возвращает число ..
стеам 64 = ( это число ) AND 01111111b$ff$ff$ff ( кароче без старшего бита отвечающего за знак ) *2 + 76561197960265728 ...
се
этих данных хватет чтобы получать рандом стим ид.. алгоритм генерации нужного не скажу :)