Register for your free account! | Forgot your password?

You last visited: Today at 06:06

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Release] AFK System

Discussion on [Release] AFK System within the Flyff PServer Guides & Releases forum part of the Flyff Private Server category.

Reply
 
Old   #1
 
Chriѕ's Avatar
 
elite*gold: 0
Join Date: Jan 2011
Posts: 1,084
Received Thanks: 505
[Release] AFK System

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:

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;
} 
DPClient.h

ü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 ); 
das:

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 ); 
darunter:
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); 
            }
        } 
    } 
Mover.cpp

unter:

PHP Code:
    memset( &m_Resurrection_Data, 0, sizeof(m_Resurrection_Data) );

    
m_bRegenItem        = TRUE;
    
m_bActiveAttack        = FALSE;
    
m_dwGold            = 0;        // 0À¸·Î ÇÒ°Í.  -xuzhu- 
das:

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 
und über:

PHP Code:
#ifdef __VTN_TIMELIMIT
    
int                m_nAccountPlayTime;        //ms´ÜÀ§ °èÁ¤ Ç÷¹ÀÌ ½Ã°£
#endif // __VTN_TIMELIMIT 
das:

PHP Code:
    // __AFK_NOTIFY

CTime            m_ctLastAction;

BOOL            isAFK;
    
// ///// 
ObjSerializeOpt.cpp

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; 
darunter:
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 ); 
darunter:

PHP Code:
ar << isAFK; //// __AFK_NOTIFY 

MsgHdr.h

unter:

PHP Code:
#define    SNAPSHOTTYPE_QUERYMAILBOX_REQ                (WORD)0x8860 
das:

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; 
und über:

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; 
das:

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; 
und über :

PHP Code:
#if __VER >= 13 // __HONORABLE_TITLE 
das:


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 )
} 
Nach:

PHP Code:
#ifdef __EVENTLUA_KEEPCONNECT
        
prj.m_EventLua.SetKeepConnectEvent( this, dwTick );
#endif // __EVENTLUA_KEEPCONNECT 
dashier:


PHP Code:
        if(timeSpan.GetMinutes() >= 10 && !isAFK)
        {
            
isAFK = TRUE;
            
g_UserMng.AddAFKToggle(this, isAFK);
        } 

User.h


unter:

PHP Code:
    void            RemoveUserFromCacheMsg( CUser *pUser ); 
dashier:

PHP Code:
    void            AddAFKToggle(CMover* pMover, BOOL isAFK); 
Chriѕ is offline  
Thanks
2 Users
Old   #2
 
elite*gold: 0
Join Date: Sep 2013
Posts: 39
Received Thanks: 76
Nichtmal richtig C&P kannst du.


User.cpp

ganz ans Ende:
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 )
}
Nach:

Code:
void CUser::Process()
{
	if( IsValid() == FALSE )
		return;

	DWORD dwTick	= g_tmCurrent;
dashier:

Code:
	CTime Now = CTime::GetCurrentTime();
	CTimeSpan timeSpan = Now - m_ctLastAction;
Nach:

Code:
#ifdef __EVENTLUA_KEEPCONNECT
		prj.m_EventLua.SetKeepConnectEvent( this, dwTick );
#endif // __EVENTLUA_KEEPCONNECT
dashier:

Code:
		if(timeSpan.GetMinutes() >= 10 && !isAFK)
		{
			isAFK = TRUE;
			g_UserMng.AddAFKToggle(this, isAFK);
		}
User.h

unter:

Code:
	void			RemoveUserFromCacheMsg( CUser *pUser );
dashier:

Code:
public:	
void			AddAFKToggle(CMover* pMover, BOOL isAFK);
private:
Btw wenn man mit der Maus im Spiel rumläuft geht der AFK titel nicht weg.
Wer den Fix dazu haben will -> PN

Edit: du hast einen Fehler beim 2. ar << isAFK; das muss ar >> isAFK; sein
Iban24 is offline  
Thanks
1 User
Old   #3
 
elite*gold: 0
Join Date: Jul 2013
Posts: 143
Received Thanks: 2
Hello and thanks for the release, but I have errors :x :

Code:
c:\Users\Official Source\WORLDSERVER\DPSrvr.cpp(2408): error C2143: syntax error : missing ';' before '}'
c:\Users\Official Source\WORLDSERVER\User.cpp(523): error C2065: 'timeSpan' : undeclared identifier
c:\Users\Official Source\WORLDSERVER\User.cpp(523): error C2228: left of '.GetMinutes' must have class/struct/union type
        type is ''unknown-type''
c:\Users\Official Source\WORLDSERVER\User.cpp(526): error C2248: 'CUserMng::AddAFKToggle' : cannot access private member declared in class 'CUserMng'
        c:\users\official source\worldserver\User.h(826) : see declaration of 'CUserMng::AddAFKToggle'
        c:\users\official source\worldserver\User.h(814) : see declaration of 'CUserMng'
c:\Users\Official Source\WORLDSERVER\DPSrvr.cpp(2402): error C2248: 'CUserMng::AddAFKToggle' : cannot access private member declared in class 'CUserMng'
If u know how fix it please, thanks u so much in advances!
LoscArmy is offline  
Old   #4
 
elite*gold: 10
Join Date: Feb 2011
Posts: 1,760
Received Thanks: 501
Quote:
c:\Users\Official Source\WORLDSERVER\DPSrvr.cpp(2408): error C2143: syntax error : missing ';' before '}'
Read the error.
Velmore is offline  
Old   #5
 
elite*gold: 0
Join Date: Apr 2013
Posts: 511
Received Thanks: 431
Quote:
Originally Posted by Iban24 View Post
Nichtmal richtig C&P kannst du.


User.cpp

ganz ans Ende:
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 )
}
Nach:

Code:
void CUser::Process()
{
	if( IsValid() == FALSE )
		return;

	DWORD dwTick	= g_tmCurrent;
dashier:

Code:
	CTime Now = CTime::GetCurrentTime();
	CTimeSpan timeSpan = Now - m_ctLastAction;
Nach:

Code:
#ifdef __EVENTLUA_KEEPCONNECT
		prj.m_EventLua.SetKeepConnectEvent( this, dwTick );
#endif // __EVENTLUA_KEEPCONNECT
dashier:

Code:
		if(timeSpan.GetMinutes() >= 10 && !isAFK)
		{
			isAFK = TRUE;
			g_UserMng.AddAFKToggle(this, isAFK);
		}
User.h

unter:

Code:
	void			RemoveUserFromCacheMsg( CUser *pUser );
dashier:

Code:
public:	
void			AddAFKToggle(CMover* pMover, BOOL isAFK);
private:
Btw wenn man mit der Maus im Spiel rumläuft geht der AFK titel nicht weg.
Wer den Fix dazu haben will -> PN
Willst es drauf anlegen? meine fresse ich Release den Scheiß einfach, dein Code hier ist genau so großer scheiß, komm wir belasten der Server mit einer sinnlosen AFK abfrage noch, hey haben ja nichts besseres zutun, omg.

Ganz im ernst, was bringt es euch wenn da AFK im Name steht? klar andere wissen "aha, der ist AFK" allerdings 1x anschreiben lohnt auch. ._.
Wanetrain is offline  
Thanks
3 Users
Old   #6
 
elite*gold: 10
Join Date: Feb 2011
Posts: 1,760
Received Thanks: 501
Quote:
Originally Posted by Wanetrain View Post
Willst es drauf anlegen? meine fresse ich Release den Scheiß einfach, dein Code hier ist genau so großer scheiß, komm wir belasten der Server mit einer sinnlosen AFK abfrage noch, hey haben ja nichts besseres zutun, omg.

Ganz im ernst, was bringt es euch wenn da AFK im Name steht? klar andere wissen "aha, der ist AFK" allerdings 1x anschreiben lohnt auch. ._.
Ich finde es sinnvoll wenn man beim Chat Fenster z.b. anzeigt ob der andere schon 5min oder länger untätig ist.
Velmore is offline  
Thanks
2 Users
Old   #7
 
elite*gold: 0
Join Date: Apr 2013
Posts: 511
Received Thanks: 431
Quote:
Originally Posted by Velmore View Post
Ich finde es sinnvoll wenn man beim Chat Fenster z.b. anzeigt ob der andere schon 5min oder länger untätig ist.
Ja, gut, stimm ich dir zu dass es teils sinnvoll ist, allerdings ist es wiederrum sinnfrei damit den Server zu belasten, lasst dass doch einfach den Client machen, er sendet nach untätigkeit (MsgProc) einfach ein Packet mit "Jo, ick bin AFK".

Wenn jetzt jemand sagt "ja aber dann könnte man Cheaten etc" was bringt es einem ein AFK Titel zu Cheaten? wt..f?
Wanetrain is offline  
Thanks
2 Users
Old   #8
 
elite*gold: 0
Join Date: Apr 2010
Posts: 427
Received Thanks: 86
Quote:
Originally Posted by Chriѕ View Post
Das es Leute gibt die mit diesem System Geld verdienen wollen stell ich es mal auf diesem Forum public.
Ich weiß echt nicht was ihr immer mit solchen Meldung habt.
Irgendjemand hat es gecoded und sollte wenn er möchte dafür Geld verlangen dürfen, auch wenns mal was nicht so großes ist.

Du kannst dir ja auch nicht den Maler zum Streichen einer Mauerseite ins Haus holen und ihm dann sagen dass er für so eine "Kleinigkeit" kein Geld verlangen darf. Absolutes Fehldenken meiner Meinung nach...
19Dani92 is offline  
Thanks
4 Users
Old   #9
 
WooTheFck's Avatar
 
elite*gold: 0
Join Date: May 2013
Posts: 240
Received Thanks: 11
DPClient.cpp

This:

void CDPClient::OnMoverMoved( OBJID objid, CAr & ar )
{
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;
}



or This :

void CDPClient::OnMoverMoved( OBJID objid, CAr & ar )

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;
}
{
WooTheFck is offline  
Old   #10
 
elite*gold: 0
Join Date: Jul 2013
Posts: 143
Received Thanks: 2
It's great work thanks, but when the title [AFK] disappears only when one moves with the "Q".. Keys and I want it to work when you move the mouse too.

Thanks so much in advances et sry for my bad english
LoscArmy is offline  
Old   #11
 
elite*gold: 0
Join Date: Nov 2009
Posts: 17
Received Thanks: 0
Quote:
Originally Posted by LoscArmy View Post
It's great work thanks, but when the title [AFK] disappears only when one moves with the "Q".. Keys and I want it to work when you move the mouse too.

Thanks so much in advances et sry for my bad english

bro where you can puit this?

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;
}
emo02 is offline  
Old   #12
 
elite*gold: 0
Join Date: Jul 2013
Posts: 143
Received Thanks: 2
Quote:
Originally Posted by emo02 View Post
bro where you can puit this?

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;
}
Before this:

Code:
void CDPClient::OnMoverMoved( OBJID objid, CAr & ar )
{
Add this:

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; 
}
(So you get this:

Code:
const	int	nRevision	= 35;

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; 
}

void CDPClient::OnMoverMoved( OBJID objid, CAr & ar )
{
	TRACE( "OnMoverMoved()\n" );
	D3DXVECTOR3 v, vd;
	float f;
	DWORD dwState, dwStateFlag, dwMotion	= 0;
	int nMotionEx	= 0, nLoop;
	DWORD dwMotionOption;
	__int64 nTickCount;
LoscArmy is offline  
Old   #13
 
kun_sama13's Avatar
 
elite*gold: 0
Join Date: Jul 2011
Posts: 74
Received Thanks: 15
how to fix this one?

d:\Source\Program\WORLDSERVER\User.cpp(246): error C2065: 'timeSpan' : undeclared identifier
d:\Source\Program\WORLDSERVER\User.cpp(246): error C2228: left of '.GetMinutes' must have class/struct/union type
type is ''unknown-type''
kun_sama13 is offline  
Old   #14
ベトナム警察




 
Lumi's Avatar
 
elite*gold: 250
The Black Market: 517/0/0
Join Date: Jan 2012
Posts: 16,545
Received Thanks: 3,623
Quote:
Originally Posted by kun_sama13 View Post
d:\Source\Program\WORLDSERVER\User.cpp(246): error C2065: 'timeSpan' : undeclared identifier
d:\Source\Program\WORLDSERVER\User.cpp(246): error C2228: left of '.GetMinutes' must have class/struct/union type
type is ''unknown-type''
You have to declare timeSpan. Just read the error.
Lumi is offline  
Old   #15
 
elite*gold: 83
Join Date: Oct 2013
Posts: 206
Received Thanks: 69
Tahnks 4 share
.HC'IReIReXx. is offline  
Reply


Similar Threads Similar Threads
[Release] Iphone-System (Offline Message System)
04/19/2013 - Metin2 PServer Guides & Strategies - 74 Replies
Da ich dafür kein nutzen mehr habe und dies nun alles per Python geregelt habe (ein Dankeschön an .Nova, der mir dabei geholfen hat). Release ich mein iPhone System. mit dem konnte man Nachrichten ingame an andere Spieler senden. Lief knapp halbes (server ist seit 2 monaten down) jahr und bisher tratt auch nie ein Fehler auf... Quest ist im Anhang sowie die Datenbank... Fuktionen:
[Release] Taiwan Server files [New Global Chat,new party system,new guild system]
10/24/2012 - SRO PServer Guides & Releases - 80 Replies
those files used by creddy online :) USE IN YOUR OWN RISK server files --removed--- DB http://www.mediafire.com/?3ocz3a0adsazsf6



All times are GMT +2. The time now is 06:08.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.