|
You last visited: Today at 02:25
Advertisement
[Release] AFK System
Discussion on [Release] AFK System within the Flyff PServer Guides & Releases forum part of the Flyff Private Server category.
11/11/2013, 14:48
|
#1
|
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: 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);
|
|
|
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
|
|
|
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!
|
|
|
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.
|
|
|
11/12/2013, 22:46
|
#5
|
elite*gold: 0
Join Date: Apr 2013
Posts: 511
Received Thanks: 431
|
Quote:
Originally Posted by Iban24
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. ._.
|
|
|
11/12/2013, 23:10
|
#6
|
elite*gold: 10
Join Date: Feb 2011
Posts: 1,760
Received Thanks: 501
|
Quote:
Originally Posted by Wanetrain
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.
|
|
|
11/12/2013, 23:33
|
#7
|
elite*gold: 0
Join Date: Apr 2013
Posts: 511
Received Thanks: 431
|
Quote:
Originally Posted by Velmore
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?
|
|
|
11/12/2013, 23:52
|
#8
|
elite*gold: 0
Join Date: Apr 2010
Posts: 427
Received Thanks: 86
|
Quote:
Originally Posted by Chriѕ
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...
|
|
|
11/16/2013, 19:07
|
#9
|
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;
}
{
|
|
|
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
|
|
|
11/20/2013, 00:12
|
#11
|
elite*gold: 0
Join Date: Nov 2009
Posts: 17
Received Thanks: 0
|
Quote:
Originally Posted by LoscArmy
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;
}
|
|
|
11/20/2013, 00:16
|
#12
|
elite*gold: 0
Join Date: Jul 2013
Posts: 143
Received Thanks: 2
|
Quote:
Originally Posted by emo02
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;
|
|
|
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''
|
|
|
12/07/2013, 17:55
|
#14
|
ベトナム警察
elite*gold: 0
Join Date: Jan 2012
Posts: 16,498
Received Thanks: 3,525
|
Quote:
Originally Posted by kun_sama13
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.
|
|
|
12/07/2013, 17:56
|
#15
|
elite*gold: 83
Join Date: Oct 2013
Posts: 206
Received Thanks: 69
|
Tahnks 4 share
|
|
|
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.
|
|