Das es Leute gibt die mit diesem System Geld verdienen wollen stell ich es mal auf diesem Forum public. Wenn ich etwas beim kopieren aus dem Source vergessen habe schreibt es drunter ^.^
Das System ist 1:1 wie es auf Lumex läuft.
DPClient.cpp // void CDPClient::OnSnapshot( CAr & ar )
unter:
über:
das:
über :
das:
DPClient.h
über:
das:
DPSrvr.cpp:
in: void CDPSrvr::OnPlayerMoved
sucht ihr nach:
darunter:
Mover.cpp
unter:
das:
Mover.h
unter:
und über:
das:
ObjSerializeOpt.cpp
in: void CMover::Serialize( CAr & ar ) sucht ihr nach:
darunter:
und sucht nach:
darunter:
MsgHdr.h
unter:
das:
Network / Obj.cpp
unter:
und über:
das:
Network / Obj.h
unter:
das:
MoverRender.cpp
unter:
und über :
das:
EDIT: // Vergessen danke ;)
User.cpp
ganz ans Ende:
Nach:
dashier:
User.h
unter:
dashier:
Das System ist 1:1 wie es auf Lumex läuft.
DPClient.cpp // void CDPClient::OnSnapshot( CAr & ar )
unter:
PHP Code:
#endif // __TRAFIC_1218
// TRACE( "hdr = %04x, cb = %d\n", hdr, cb );
g_hdr = (BYTE)( hdr );
switch( hdr )
{
über:
PHP Code:
case SNAPSHOTTYPE_MOVERMOVED: OnMoverMoved( objid, ar ); break;
case SNAPSHOTTYPE_MOVERBEHAVIOR: OnMoverBehavior( objid, ar ); break;
case SNAPSHOTTYPE_MOVERMOVED2: OnMoverMoved2( objid, ar ); break;
das:
PHP Code:
//__AFK_NOTIFY
case SNAPSHOTTYPE_AFKCHANGE: OnAFKToggle( objid, ar ); break;
//
über :
PHP Code:
void CDPClient::OnMoverMoved( OBJID objid, CAr & ar )
das:
PHP Code:
void CDPClient::OnAFKToggle( OBJID objid, CAr & ar )
{
BOOL isAfk = FALSE;
ar >> isAfk;
//::OUTPUTDEBUGSTRING("Toggling AFK to %d\n", isAfk);
CMover* pMover = prj.GetMover( objid );
if( IsValidObj( (CObj*)pMover ) )
pMover->isAFK = isAfk;
}
über:
PHP Code:
void OnMoverMoved( OBJID objid, CAr & ar );
void OnMoverBehavior( OBJID objid, CAr & ar );
void OnMoverMoved2( OBJID objid, CAr & ar );
void OnMoverBehavior2( OBJID objid, CAr & ar );
PHP Code:
//__AFK_NOTIFY
void OnAFKToggle( OBJID objid, CAr & ar );
//__AFK_NOTIFY
DPSrvr.cpp:
in: void CDPSrvr::OnPlayerMoved
sucht ihr nach:
PHP Code:
pUser->m_CorrAction.dwMotionOption = dwMotionOption;
pUser->m_CorrAction.fValid = TRUE;
pUser->SetDestPos( v, ( dwState & OBJSTA_MOVE_ALL ) != OBJSTA_BMOVE );
PHP Code:
CTime Now = CTime::GetCurrentTime(); //__AFK_NOTIFY
CMover* cMover = (CMover*)pUser;
cMover->m_ctLastAction = Now;
if(cMover->isAFK)
{
cMover->isAFK = FALSE;
g_UserMng.AddAFKToggle(cMover, cMover->isAFK);
}
}
}
unter:
PHP Code:
memset( &m_Resurrection_Data, 0, sizeof(m_Resurrection_Data) );
m_bRegenItem = TRUE;
m_bActiveAttack = FALSE;
m_dwGold = 0; // 0À¸·Î ÇÒ°Í. -xuzhu-
PHP Code:
// __AFK_NOTIFY
m_ctLastAction = CTime::GetCurrentTime();
isAFK = FALSE;
//
Mover.h
unter:
PHP Code:
DWORD m_dwMotionOption; /// ¸ð¼Ç Ãß°¡ ¿É¼Ç
OBJMSG m_dwMotionArrive; /// À̵¿ ¿Ï·á ÈÄ ¸ð¼Ç
DWORD m_dwTickRecovery; /// ¾ÉÀº »óÅÂÀÇ hp, mp º¹±¸ timer
DWORD m_dwTickRecoveryStand; /// stand »óÅÂÀÇ hp, mp º¹±¸ timer
PHP Code:
#ifdef __VTN_TIMELIMIT
int m_nAccountPlayTime; //ms´ÜÀ§ °èÁ¤ Ç÷¹ÀÌ ½Ã°£
#endif // __VTN_TIMELIMIT
PHP Code:
// __AFK_NOTIFY
CTime m_ctLastAction;
BOOL isAFK;
// /////
in: void CMover::Serialize( CAr & ar ) sucht ihr nach:
PHP Code:
#if __VER >= 12 // __MOD_TUTORIAL
ar << m_nTutorialState;
#else // __MOD_TUTORIAL
ar << (u_short)m_nFlightLv;
#endif // __MOD_TUTORIAL
ar << m_nFxp;
dwGold = GetGold();
ar << dwGold;
PHP Code:
ar << isAFK; //// __AFK_NOTIFY
und sucht nach:
PHP Code:
#else // __MOD_TUTORIAL
ar >> (u_short&)m_nFlightLv;
#endif // __MOD_TUTORIAL
ar >> m_nFxp;
ar >> dwGold;
SetGold( dwGold );
PHP Code:
ar << isAFK; //// __AFK_NOTIFY
MsgHdr.h
unter:
PHP Code:
#define SNAPSHOTTYPE_QUERYMAILBOX_REQ (WORD)0x8860
PHP Code:
#define SNAPSHOTTYPE_AFKCHANGE (WORD)0x8886 // __AFK_NOTIFY#
Network / Obj.cpp
unter:
PHP Code:
#if __VER >= 12 // __MOD_TUTORIAL
m_nTutorialState = 0;
#else // __MOD_TUTORIAL
m_nFlightLv = 0;
#endif // __MOD_TUTORIAL
m_nFxp = 0;
// m_nTxp = 0;
m_bySex = SEX_FEMALE;
m_dwRideItemIdx = 0;
m_dwGold = 0;
PHP Code:
m_nJob = -1;
m_nStr = m_nSta = m_nDex = m_nInt = 15;
das:
PHP Code:
isAFK = FALSE; ///__AFK_NOTIFY
Network / Obj.h
unter:
PHP Code:
BOOL IsEquipableNPC() { return FALSE; }
LONG m_nFxp;
BYTE m_bySex;
DWORD m_dwRideItemIdx;
int m_nFuel;
LONG m_nJob;
BYTE m_nSlot;
char m_szBankPass[5];
int m_idGuildCloak;
PHP Code:
BOOL isAFK; /// __AFK_NOTIFY
MoverRender.cpp
unter:
PHP Code:
if( IsPlayer() )
{
if( GetWorld()->GetID() == WI_WORLD_GUILDWAR && g_pPlayer->GetGuild() && GetGuild() )
{
bOtherColor = TRUE;
if( g_pPlayer->GetGuild()->GetGuildId() == GetGuild()->GetGuildId() )
dwNewColor = COLOR_GUILDCOMBAT;
else
dwNewColor = COLOR_PLAYER;
}
if(m_dwAuthorization >= AUTH_GENERAL)
{
CString strName;
strName = szName;
PHP Code:
#if __VER >= 13 // __HONORABLE_TITLE
PHP Code:
if(isAFK) //////// AFK_NOTIFY
{
strName += "[AFK] ";
}
strcpy( szName, (LPCTSTR)strName );
}
EDIT: // Vergessen danke ;)
User.cpp
ganz ans Ende:
PHP Code:
void CUserMng::AddAFKToggle(CMover* pMover, BOOL isAFK)
{
CAr ar;
ar << GETID( pMover ) << SNAPSHOTTYPE_AFKCHANGE;
ar << isAFK;
GETBLOCK( ar, lpBuf, nBufSize );
FOR_VISIBILITYRANGE( pMover )
//if( USERPTR != pMover )
USERPTR->AddBlock( lpBuf, nBufSize );
NEXT_VISIBILITYRANGE( pMover )
}
PHP Code:
#ifdef __EVENTLUA_KEEPCONNECT
prj.m_EventLua.SetKeepConnectEvent( this, dwTick );
#endif // __EVENTLUA_KEEPCONNECT
PHP Code:
if(timeSpan.GetMinutes() >= 10 && !isAFK)
{
isAFK = TRUE;
g_UserMng.AddAFKToggle(this, isAFK);
}
User.h
unter:
PHP Code:
void RemoveUserFromCacheMsg( CUser *pUser );
PHP Code:
void AddAFKToggle(CMover* pMover, BOOL isAFK);