l2-unlegits/l2detect/utils.cpp
2012-02-01 05:25:08 +00:00

87 lines
3.0 KiB
C++

#include "stdafx.h"
#include "Logger.h"
#include "ConfigIni.h"
#include "GameClient.h"
extern class CConfig g_cfg;
extern class GameClient *g_game_client;
int freadline( FILE *f, char *line, size_t maxCount )
{
if( !f ) return -1;
int nRead = 0;
line[0] = 0;
fgets( line, maxCount, f );
if( line[0] == 0 ) return nRead;
size_t ll = strlen( line );
if( ll > 0 )
{
if( (line[ll-1] == '\r') || (line[ll-1] == '\n') ) line[ll-1] = 0;
if( ll > 1 )
{
if( (line[ll-2] == '\r') || (line[ll-2] == '\n') ) line[ll-1] = 0;
}
}
nRead = (int)strlen( line );
return nRead;
}
bool MyInitCommonControlsEx()
{
//InitCommonControls();
// InitCommonControlsEx() òðåáóåòñÿ äëÿ Windows XP, åñëè ìàíèôåñò
// ïðèëîæåíèÿ èñïîëüçóåò ComCtl32.dll âåðñèè 6 èëè áîëåå ïîçäíåé âåðñèè äëÿ âêëþ÷åíèÿ
// ñòèëåé îòîáðàæåíèÿ.  ïðîòèâíîì ñëó÷àå áóäåò âîçíèêàòü ñáîé ïðè ñîçäàíèè ëþáîãî îêíà.
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
// Âûáåðèòå ýòîò ïàðàìåòð äëÿ âêëþ÷åíèÿ âñåõ îáùèõ êëàññîâ óïðàâëåíèÿ, êîòîðûå íåîáõîäèìî èñïîëüçîâàòü
// â âàøåì ïðèëîæåíèè.
InitCtrls.dwICC = ICC_WIN95_CLASSES; // | ICC_STANDARD_CLASSES;
InitCtrls.dwICC = ICC_ANIMATE_CLASS | ICC_BAR_CLASSES | ICC_COOL_CLASSES | ICC_DATE_CLASSES | ICC_HOTKEY_CLASS |
ICC_INTERNET_CLASSES | ICC_LINK_CLASS | ICC_LISTVIEW_CLASSES | ICC_NATIVEFNTCTL_CLASS |
ICC_PAGESCROLLER_CLASS | ICC_PROGRESS_CLASS | ICC_STANDARD_CLASSES | ICC_TAB_CLASSES |
ICC_TREEVIEW_CLASSES | ICC_UPDOWN_CLASS | ICC_USEREX_CLASSES | ICC_WIN95_CLASSES;
if( InitCommonControlsEx( &InitCtrls ) )
log_error( LOG_OK, "InitCommonControlsEx(): OK\n" );
else
{
DWORD e = GetLastError();
ErrorLogger_LogLastError( "InitCommonControlsEx()", e );
}
return true;
}
void utils_detectClanWar( unsigned int relation, bool *isEnemy, bool *is2side )
{
L2_VERSION ver = (L2_VERSION)g_cfg.L2_version;
unsigned int urel = g_game_client->ai.usr.relation;
// relation constants before Gracia Final
unsigned int RELATION_ENEMY = 0x01000; // true when red icon, doesn't matter with blue
unsigned int RELATION_ALLY = 0x00800; // blue siege icon, cannot have if red
unsigned int RELATION_MUTUAL_WAR = 0x08000;
unsigned int RELATION_1SIDED_WAR = 0x10000;
// gracia final & epilogue constants changed
if( ver >= L2_VERSION_T23 )
{
RELATION_MUTUAL_WAR = 0x04000;
RELATION_1SIDED_WAR = 0x08000;
//_relation = _activeChar.isClanLeader() ? 0x40 : 0;
//if (_activeChar.getSiegeState() == 1) _relation |= 0x180;
//if (_activeChar.getSiegeState() == 2) _relation |= 0x80;
}
if( (relation & RELATION_1SIDED_WAR ) ||
(relation & RELATION_MUTUAL_WAR ) )
{
(*isEnemy) = true;
if( relation & RELATION_MUTUAL_WAR ) (*is2side) = true;
}
// test: siege enemies detection
if( ((urel & RELATION_ENEMY) && (relation & RELATION_ALLY)) ||
((urel & RELATION_ALLY) && (relation & RELATION_ENEMY)) )
{
(*isEnemy) = true;
(*is2side) = true;
}
}