Register for your free account! | Forgot your password?

You last visited: Today at 02:25

  • 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: 504
[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:    OnMoverMovedobjidar );    break;
            case 
SNAPSHOTTYPE_MOVERBEHAVIOR:        OnMoverBehaviorobjidar );    break;
            case 
SNAPSHOTTYPE_MOVERMOVED2:    OnMoverMoved2objidar );    break; 

das:
PHP Code:
//__AFK_NOTIFY
            
case SNAPSHOTTYPE_AFKCHANGE:    OnAFKToggleobjidar ); break;
// 

über :

PHP Code:
void CDPClient::OnMoverMovedOBJID objidCAr ar 

das:

PHP Code:
void CDPClient::OnAFKToggleOBJID objidCAr ar )
{
    
BOOL isAfk FALSE;
    
ar >> isAfk;
    
    
//::OUTPUTDEBUGSTRING("Toggling AFK to %d\n", isAfk);

    
CMoverpMover    prj.GetMoverobjid );

    if( 
IsValidObj( (CObj*)pMover ) ) 
        
pMover->isAFK isAfk;

DPClient.h

über:

PHP Code:
void    OnMoverMovedOBJID objidCAr ar );
    
void    OnMoverBehaviorOBJID objidCAr ar );
    
void    OnMoverMoved2OBJID objidCAr ar );
    
void    OnMoverBehavior2OBJID objidCAr ar ); 
das:

PHP Code:
//__AFK_NOTIFY
    
void    OnAFKToggleOBJID objidCAr 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->SetDestPosv, ( dwState OBJSTA_MOVE_ALL ) != OBJSTA_BMOVE ); 
darunter:
PHP Code:
CTime Now CTime::GetCurrentTime(); //__AFK_NOTIFY

            
CMovercMover = (CMover*)pUser;
            
cMover->m_ctLastAction Now;

            if(
cMover->isAFK)
            {
                
cMover->isAFK FALSE;
                
g_UserMng.AddAFKToggle(cMovercMover->isAFK); 
            }
        } 
    } 
Mover.cpp

unter:

PHP Code:
    memset( &m_Resurrection_Data0sizeof(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;
                
SetGolddwGold ); 
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] ";
        }

        
strcpyszName, (LPCTSTR)strName );
    } 


EDIT: // Vergessen danke



User.cpp

ganz ans Ende:


PHP Code:
void CUserMng::AddAFKToggle(CMoverpMoverBOOL isAFK)
{
    
CAr ar;
    
ar << GETIDpMover ) << SNAPSHOTTYPE_AFKCHANGE;
    
ar << isAFK;

    
GETBLOCKarlpBufnBufSize );

    
FOR_VISIBILITYRANGEpMover )
        
//if( USERPTR != pMover )
            
USERPTR->AddBlocklpBufnBufSize );
    
NEXT_VISIBILITYRANGEpMover )

Nach:

PHP Code:
#ifdef __EVENTLUA_KEEPCONNECT
        
prj.m_EventLua.SetKeepConnectEventthisdwTick );
#endif // __EVENTLUA_KEEPCONNECT 
dashier:


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

User.h


unter:

PHP Code:
    void            RemoveUserFromCacheMsgCUser *pUser ); 
dashier:

PHP Code:
    void            AddAFKToggle(CMoverpMoverBOOL isAFK); 
Chriѕ is offline  
Thanks
2 Users
Old 11/11/2013, 15:14   #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 11/11/2013, 18:01   #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 11/12/2013, 10:52   #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 11/12/2013, 22:46   #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 11/12/2013, 23:10   #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 11/12/2013, 23:33   #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 11/12/2013, 23:52   #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 11/16/2013, 19:07   #9
 
WooTheFck's Avatar
 
elite*gold: 0
Join Date: May 2013
Posts: 239
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 11/19/2013, 20:50   #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/20/2013, 00:12   #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 11/20/2013, 00:16   #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 12/07/2013, 11:06   #13
 
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 12/07/2013, 17:55   #14
ベトナム警察




 
Lumi's Avatar
 
elite*gold: 0
The Black Market: 517/0/0
Join Date: Jan 2012
Posts: 16,498
Received Thanks: 3,525
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 12/07/2013, 17:56   #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 +1. The time now is 02:27.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

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