How to disable it:

  1. Open VersionCommon.h in the WorldServer project
  2. Find all occurrences of #define __NEW_PROFILE and comment those lines out (two slashes at the beginning of the line //)
  3. Do the same from above for #define __PROFILE_RUN
  4. Compile the WorldServer and you're done.





--------------------------------------------------------------------------------------------------------------------

Increase CS Pets speed

1. Open CreateObj.cpp in Common folder
2. Look for this:

Code:
#if VER >= 9    //AI_0509
            MoverProp pProp    = pMover->GetProp();
            if( pProp->dwAI == AII_MONSTER )
            {
                pMover->m_pActMover->m_fSpeed    /= 2.0F;
//                if( pProp->dwClass == RANK_SUPER )
//                    pMover->m_pActMover->m_fSpeed    = 1.5F;
            }
  1. Underneath it add this:
    <div>Code:<pre> if( pProp->dwAI == AII_PET ) pMover->m_pActMover->m_fSpeed *= 5;</pre>

</div>The value in red will multiply the base movement speed of the CS pet. 
Recompile it and you’re done.
<p>——————————————————————————————————————–
</p><p>Change your window’s title
</p><p>Open Neuz.cpp and search for m_strWindowTitle = T and you will see something like
</p><p>m_strWindowTitle = T( “FlyFF” );
</p><p>
</p><p>——————————————————————————————————————–
</p><p>Weapon swing color
</p><p>Here’s how to change the weapon swing color. Open Mover.cpp first. /contribute
</p><p><div><div>if( IsPlayer() )
{
int nOption = 0;
DWORD dwColor = D3DCOLOR_ARGB( XXX, XXX, XXX, XXX );
if( IsActiveMover() )
{
CItemElem *pItemElem = GetWeaponItem();
if( pItemElem )
nOption = pItemElem->GetAbilityOption();

else

// Ÿ Ç÷¹À̾î´Â ÆäÀÌÅ©¾ÆÀÌÅÛÀ̹ǷΠ¿©±â¼­¿¡¼­ °ªÀ» »©¿Â´Ù.
nOption = m_aEquipInfo[PARTS_RWEAPON].nOption & 0xFF;
}

if( nOption == 10 )
dwColor = D3DCOLOR_ARGB( XXX, XXX, XXX, XXX );
else if( nOption == 9 )
dwColor = D3DCOLOR_ARGB( XXX, XXX, XXX, XXX );
else if( nOption >= 7 )
dwColor = D3DCOLOR_ARGB( XXX, XXX, XXX, XXX );
else if( nOption >= 5 )
dwColor = D3DCOLOR_ARGB( XXX, XXX, XXX, XXX );
else if( nOption >= 3)
dwColor = D3DCOLOR_ARGB( XXX, XXX, XXX, XXX );
else if( nOption >= 1 )
dwColor = D3DCOLOR_ARGB( XXX, XXX, XXX, XXX );
else
dwColor = D3DCOLOR_ARGB( XXX, XXX, XXX, XXX );

pModel->MakeSWDForce( PARTS_RWEAPON, pItemProp->dwItemKind3, (dwOption & MOP_HITSLOW) ? TRUE : FALSE, dwColor, m_fAniSpeed );
pModel->MakeSWDForce( PARTS_LWEAPON, pItemProp->dwItemKind3, (dwOption & MOP_HITSLOW) ? TRUE : FALSE, dwColor, m_fAniSpeed );
}</div></div>

Change the values after D3DCOLOR_ARGB ( XXX, XXX, XXX, XXX );
Using the following macros work as well I believe:

<div> Spoiler: <div><div>D3DCOLOR_XYUV
D3DCOLOR_AYUV
D3DCOLOR_ARGB
D3DCOLOR_RGBA
D3DCOLOR_XRGB
D3DCOLOR_COLORVALUE</div></div>

Obviously if you set a new D3DCOLOR type you also have to change the values as well. RGBA = red green blue alpha, so change the first three to the colors you desire and the fourth to the alpha level. With XRGB you would have no alpha, just XXX, XXX, XXX. Do note that black is impossible unless you do heavy alterations to the source.

The format works this way: 255, 255, 255, 0. The numbers are Red, Blue, Green, Alpha. Change each value from 0 to 255 as you wish. 

inb4 every nub server does this /ridi</div>
</p><p>
</p><p>——————————————————————————————————————–
</p><p>Change the max. buy count
</p><p>lets keep this topic alive:
its only some edits i start to learn c++ 3 weeks ago but im a starter so its ok ^^:
1:change the max you can buy from shop from 99 to xxxx:
go to your folder source/_interface
now open WndShop.cpp
and find this:
const int MAX_BUY_ITEMCOUNT = 99;
</p><p>
</p><p>——————————————————————————————————————–
</p><p>Rejoin guild time
</p><p>How to change the amount of time before you can rejoin a guild:

This has two parts. The first is the cache so this works while you stay logged in and the second you have to change some stored procedures in the database.

First part:

Find this line in DPCacheSrvr (its in there twice):
<div>Code:<pre>pPlayer->m_tGuildMember += CTimeSpan( 2, 0, 0, 0 );</pre> </div>Change the (2, 0, 0, 0) to what you want in the format of (Days, Hours, Minutes, Seconds). i.e. 5 minutes (0, 0, 5, 0)

Second part:

Find the GUILD_STR stored procedure in CHARACTER_DBF and find this in the procedure (Again its there twice):
<div>Code:<pre>SET m_tGuildMember = CONVERT(CHAR(8),DATEADD(d,2,GETDATE()),112) + RIGHT(‘00’ + CONVERT(VARCHAR(2),DATEPART(hh,DATEADD(d,2,GETDATE()))),2) + RIGHT(‘00’ + CONVERT(VARCHAR(2),DATEPART(mi,DATEADD(d,2,GETDATE()))),2) + RIGHT(‘00’ + CONVERT(VARCHAR(2),DATEPART(ss,DATEADD(d,2,GETDATE()))),2)</pre> </div>Now change<div>Code:<pre>DATEADD(d,2,GETDATE())))</pre> </div>to the same value you entered above. i.e. 5 minutes again<div>Code:<pre>DATEADD(mi,5,GETDATE())))</pre> </div>
</p><p>——————————————————————————————————————–
</p><p>colored names of staff members
</p><p><div>Go to your neuz project, go to MoverRender.cpp and search for this one:

<div>

Code:
        // ¸í¼º¿¡ µû¸¥ »öÇ¥½Ã.

if VER >= 13 // HONORABLE_TITLE

Go one line below and add this:

<div>Code:<pre> if( IsAuthHigher(AUTH_ADMINISTRATOR)) // fnL

    {
        dwColor = 0xff9e054d;
    }
    else if( IsAuthHigher(AUTH_GAMEMASTER))
    {
        dwColor = 0xff1d8fca;
    }</pre></div>Since it's scanning for karma, and there is already an opened up if-statement, we'll need to go to&nbsp;<br><br><p></p><div>Code:<p></p><pre>if( IsChaotic() )</pre></div>which is one line below, and just change the "if" to an "else if"</div></div><br></span></p><p><span style="line-height: 1.45em;">--------------------------------------------------------------------------------------------------------------------<br></span></p><p><span style="line-height: 1.45em;">Emote client crash by enter !888888888888889<br></span></p><p><span style="line-height: 1.45em;"><br></span></p><p><span style="line-height: 1.45em;">How to fix Emote client crash by enter !888888888888889 in the chat :<br><br>go to DialogMsg.cpp and search for&nbsp;<br><p></p><div>Code:<p></p><pre>void CDialogMsg::AddMessage( CObj* pObj, LPCTSTR lpszMessage, DWORD RGB, int nKind, DWORD dwPStyle )</pre></div>then search&nbsp;<br><br><p></p><div>Code:<p></p><pre>        if( scanner.Token == "!" )
    {
        int nEmoticonIdx = scanner.GetNumber();
        AddEmoticon( pObj, nEmoticonIdx );
        return;
    }</pre></div>now replace with this :<br><p></p><div>Code:<p></p><pre>        if( scanner.Token == "!" )
    {
        int nEmoticonIdx = scanner.GetNumber();

        if( nEmoticonIdx &gt; MAX_EMOTICON_NUM )
            nEmoticonIdx = MAX_EMOTICON_NUM;
        else if( nEmoticonIdx &lt; 0 )
            nEmoticonIdx = 0;

        AddEmoticon( pObj, nEmoticonIdx );
        return;
    }</pre></div>--------------------------------------------------------------------------------------------------------------------<br></span></p><p><span style="line-height: 1.45em;"><b>fix the onekill / invisible / summon / teleport bug from Toms Hack</b><br></span></p><p><span style="line-height: 1.45em;">Hello,<br>I show you today how you can fix the<br>"onekill / invisible / summon / teleport" bug from Toms Hack<br><br>Copyright @ Yannickmama !!<br><br>1. You go first into the DPSrvr.cpp<br>2. You are looking for the following functions:<br><br><br><p></p><div>PHP Code:<p></p><p><code><code><span>CDPSrvr::OnModifyMode<br>CDPSrvr::OnSummonPlayer<br>CDPSrvr::OnTeleportPlayer&nbsp;</span></code></code></p></div>and change this :<br><br><p></p><div>PHP Code:<p></p><p><code><code><span>#ifdef&nbsp;__HACK_0516<span>DPID&nbsp;dpid;<span>ar&nbsp;&gt;&gt;&nbsp;dpid;<br>&nbsp;if(&nbsp;pUser-&gt;m_Snapshot.dpidUser&nbsp;!=&nbsp;dpid&nbsp;)<br>&nbsp;{<span>Error(&nbsp;"[%s]&nbsp;try&nbsp;to&nbsp;hack&nbsp;:&nbsp;PACKETTYPE_MODIFYMODE",&nbsp;pUser-&gt;GetName()&nbsp;);<br>&nbsp;return;<br>&nbsp;}<span>#endif&nbsp;//&nbsp;__HACK_0516&nbsp;</span></span></span></span></span></code></code></p></div>to<br><br><p></p><div>PHP Code:<p></p><p><code><code><span>#ifdef&nbsp;__HACK_0516<span>DPID&nbsp;dpid;<span>ar&nbsp;&gt;&gt;&nbsp;dpid;<br>&nbsp;if(&nbsp;pUser-&gt;m_Snapshot.dpidUser&nbsp;!=&nbsp;dpid&nbsp;)<br>&nbsp;{<span>Error(&nbsp;"[%s]&nbsp;try&nbsp;to&nbsp;hack&nbsp;:&nbsp;PACKETTYPE_MODIFYMODE",&nbsp;pUser-&gt;GetName()&nbsp;);<br>&nbsp;return;<br>&nbsp;}<br>&nbsp;if(&nbsp;!pUser-&gt;IsAuthHigher(AUTH_GAMEMASTER)&nbsp;)<br>&nbsp;{<span>Error(&nbsp;"[%s]&nbsp;try&nbsp;to&nbsp;hack&nbsp;with&nbsp;dpid&nbsp;:&nbsp;PACKETTYPE_MODIFYMODE",&nbsp;pUser-&gt;GetName()&nbsp;);<br>&nbsp;return;<br>&nbsp;}<span>#endif&nbsp;//&nbsp;__HACK_0516&nbsp;</span></span></span></span></span></span></code></code></p></div>If you dont define __HACK_0516 go and define it :-*<br><br>for the Create Item fix from Toms Hack Programm go to :<br><br>CDPSrvr::OnBuyingInfo<br><br>and edit this acutually with you code<br><br><p></p><div>PHP Code:<p></p><p><code><code><span>void&nbsp;CDPSrvr::OnBuyingInfo(&nbsp;CAr&nbsp;&amp;&nbsp;ar,&nbsp;DPID&nbsp;dpidCache,&nbsp;DPID&nbsp;dpidUser,&nbsp;LPBYTE&nbsp;lpBuf,&nbsp;u_long&nbsp;uBufSize&nbsp;)<br>{/*<br>&nbsp;BUYING_INFO2&nbsp;bi2;<br>&nbsp;ar.Read(&nbsp;(void*)&amp;bi2,&nbsp;sizeof(BUYING_INFO2)&nbsp;);<br><br>&nbsp;CWorld*&nbsp;pWorld;<br>&nbsp;CUser*&nbsp;pUser&nbsp;=&nbsp;g_UserMng.GetUser(&nbsp;dpidCache,&nbsp;dpidUser&nbsp;);<br><br>&nbsp;SERIALNUMBER&nbsp;iSerialNumber&nbsp;=&nbsp;0;<br>&nbsp;if(&nbsp;IsValidObj(&nbsp;pUser&nbsp;)&nbsp;&amp;&amp;&nbsp;(&nbsp;pWorld&nbsp;=&nbsp;pUser-&gt;GetWorld()&nbsp;)&nbsp;)<br>&nbsp;{<br>&nbsp;bi2.dwRetVal&nbsp;=&nbsp;0;<br>&nbsp;CItemElem&nbsp;itemElem;<br>&nbsp;itemElem.m_dwItemId&nbsp;=&nbsp;bi2.dwItemId;<br>&nbsp;itemElem.m_nItemNum&nbsp;=&nbsp;(short)bi2.dwItemNum;<br>&nbsp;itemElem.m_bCharged&nbsp;=&nbsp;TRUE;<br>&nbsp;BYTE&nbsp;nId;<br>&nbsp;bi2.dwRetVal&nbsp;=&nbsp;pUser-&gt;CreateItem(&nbsp;&amp;itemElem,&nbsp;&amp;nId&nbsp;);<br>#ifdef&nbsp;__LAYER_1015<br>&nbsp;g_dpDBClient.SavePlayer(&nbsp;pUser,&nbsp;pWorld-&gt;GetID(),&nbsp;pUser-&gt;GetPos(),&nbsp;pUser-&gt;GetLayer()&nbsp;);<br>#else&nbsp;//&nbsp;__LAYER_1015<br>&nbsp;g_dpDBClient.SavePlayer(&nbsp;pUser,&nbsp;pWorld-&gt;GetID(),&nbsp;pUser-&gt;GetPos()&nbsp;);<br>#endif&nbsp;//&nbsp;__LAYER_1015<br>&nbsp;if(&nbsp;bi2.dwRetVal&nbsp;)<br>&nbsp;{<br>&nbsp;CItemElem*&nbsp;pItemElem&nbsp;=&nbsp;pUser-&gt;m_Inventory.GetAtId(&nbsp;nId&nbsp;);<br>&nbsp;if(&nbsp;pItemElem&nbsp;)<br>&nbsp;{<br>&nbsp;iSerialNumber&nbsp;=&nbsp;pItemElem-&gt;GetSerialNumber();<br>&nbsp;pItemElem-&gt;m_bCharged&nbsp;=&nbsp;TRUE;<br>&nbsp;if(&nbsp;bi2.dwSenderId&nbsp;&gt;&nbsp;0&nbsp;)<br>&nbsp;{<br>&nbsp;//&nbsp;%s을&nbsp;%s님으로부터&nbsp;선물&nbsp;받았습니다.<br>&nbsp;}<br>&nbsp;}<br>&nbsp;}<br>&nbsp;}<br>&nbsp;g_dpDBClient.SendBuyingInfo(&nbsp;&amp;bi2,&nbsp;iSerialNumber&nbsp;);<br>//&nbsp;FILEOUT(&nbsp;"buyinginfo.txt",&nbsp;"dwServerIndex&nbsp;=&nbsp;%d\tdwPlayerId&nbsp;=&nbsp;%d\tdwItemId&nbsp;=&nbsp;%d\tdwItemNum&nbsp;=&nbsp;%d\n",&nbsp;<br>&nbsp;//&nbsp;bi2.dwServerIndex,&nbsp;bi2.dwPlayerId,&nbsp;bi2.dwItemId,&nbsp;bi2.dwItemNum&nbsp;);<br>&nbsp;static&nbsp;char&nbsp;lpOutputString[260]&nbsp;=&nbsp;{&nbsp;0,&nbsp;};<br>&nbsp;sprintf(&nbsp;lpOutputString,&nbsp;"dwServerIndex&nbsp;=&nbsp;%d\tdwPlayerId&nbsp;=&nbsp;%d\tdwItemId&nbsp;=&nbsp;%d\tdwItemNum&nbsp;=&nbsp;%d",<br>&nbsp;bi2.dwServerIndex,&nbsp;bi2.dwPlayerId,&nbsp;bi2.dwItemId,&nbsp;bi2.dwItemNum&nbsp;);&nbsp;<br>&nbsp;OutputDebugString(&nbsp;lpOutputString&nbsp;);<br>*/}&nbsp;</span></code></code></p></div>Then you have fixed allready the biggest problems<br><br>have fun and good luck &lt;3<br></span></p><p><span style="line-height: 1.45em;">--------------------------------------------------------------------------------------------------------------------<br></span></p><p><span style="line-height: 1.45em;"><b>Swap bug Quick fix</b><br></span></p><p><span style="line-height: 1.45em;">Hi I fixed the swap bug a long time ago it got tested on my server and it worked&nbsp;<img src="http://forum.ragezone.com/images/smilies/thumbup1.gif" border="0" alt="" title="Thumbup1" class="inlineimg"><br>I posted this because someone kinda posted a youtube thingy about it :O.<br><br>Find this in DPSrv.cpp @ worldserver<br><p></p><div>Code:<p></p><pre>void CDPSrvr::OnDoEquip( CAr &amp; ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize )

{ DWORD nId; int nPart;

ar &gt;&gt; nId;
ar &gt;&gt; nPart;        

if( nPart &gt;= MAX_HUMAN_PARTS )    
    return;

CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );</pre></div>And put this under it<br><br><p></p><div>Code:<p></p><pre>#ifdef __QUGET_SWAP_FIX

            if( pUser-&gt;GetHitPoint() &gt;  pUser-&gt;GetMaxHitPoint() )
                 pUser-&gt;SetHitPoint( pUser-&gt;GetMaxHitPoint());

            if( pUser-&gt;GetManaPoint() &gt;  pUser-&gt;GetMaxManaPoint() )
                 pUser-&gt;SetManaPoint( pUser-&gt;GetMaxManaPoint() );

            if( pUser-&gt;GetFatiguePoint() &gt;  pUser-&gt;GetMaxFatiguePoint() )
                 pUser-&gt;SetFatiguePoint( pUser-&gt;GetMaxFatiguePoint() );

endif

</pre> </div>find this in function void CDPClient::OnDoEquip( OBJID objid, CAr & ar ) @ DPClient.cpp
and add under
<div>Code:<pre>if( g_WndMng.m_pWndBeautyShop && g_WndMng.m_pWndBeautyShop->m_pModel )

        {
            CMover::UpdateParts( pPlayer-&gt;GetSex(), pPlayer-&gt;m_dwSkinSet, pPlayer-&gt;m_dwFace, pPlayer-&gt;m_dwHairMesh, pPlayer-&gt;m_dwHeadMesh, pPlayer-&gt;m_aEquipInfo, g_WndMng.m_pWndBeautyShop-&gt;m_pModel, &amp;pPlayer-&gt;m_Inventory );
        }</pre></div>this<br><p></p><div>Code:<p></p><pre>#ifdef __QUGET_SWAP_FIX
            if( pPlayer-&gt;GetHitPoint() &gt;  pPlayer-&gt;GetMaxHitPoint() )
                 pPlayer-&gt;SetHitPoint( pPlayer-&gt;GetMaxHitPoint());

            if( pPlayer-&gt;GetManaPoint() &gt;  pPlayer-&gt;GetMaxManaPoint() )
                 pPlayer-&gt;SetManaPoint( pPlayer-&gt;GetMaxManaPoint() );

            if( pPlayer-&gt;GetFatiguePoint() &gt;  pPlayer-&gt;GetMaxFatiguePoint() )
                 pPlayer-&gt;SetFatiguePoint( pPlayer-&gt;GetMaxFatiguePoint() );

endif

</pre> </div>and then define QUGET_SWAP_FIX in versioncommon.h @neuz and worldserver


--------------------------------------------------------------------------------------------------------------------

PartyFinder System

FuncTextCmd.cpp:

Code:
#ifdef PARTY_FIND

BOOL TextCmd_getparty( CScanner& scanner ) {

ifdef __WORLDSERVER

CUser *pUser = (CUser*)scanner.dwValue;
if( pUser-&gt;m_idparty &gt; 0 )
{
    pUser-&gt;AddText( "You are already in a party" );
    return TRUE;
}
CParty *pParty;
pParty = g_PartyMng.GetPartyFree();
if( pParty )
{
    g_DPSrvr.InviteParty( pParty-&gt;GetLeader()-&gt;m_idPlayer, pUser-&gt;m_idPlayer, FALSE, TRUE );
}else
{
    pUser-&gt;AddText( "Sorry, but there is no party for you" );
}

endif

return TRUE;

}

endif //__PARTY_FIND

Code:
BOOL TextCmd_PartyInvite( CScanner& scanner )

{

ifdef __WORLDSERVER

CUser* pUser = (CUser*)scanner.dwValue;
MoverProp* pMoverProp = NULL;
scanner.GetToken();

if VER >= 11 // SYS_PLAYER_DATA

u_long uidPlayer    = CPlayerDataCenter::GetInstance()-&gt;GetPlayerId( scanner.token );

else // __SYS_PLAYER_DATA

u_long uidPlayer = prj.GetPlayerID( scanner.Token );

endif // __SYS_PLAYER_DATA

if( 0 &lt; uidPlayer )
{
    CUser* pUser2    = g_UserMng.GetUserByPlayerID( uidPlayer );    
    if( IsValidObj( pUser2 ) )

ifdef __PARTY_FIND

        g_DPSrvr.InviteParty( pUser-&gt;m_idPlayer, pUser2-&gt;m_idPlayer, FALSE, FALSE );

else

        g_DPSrvr.InviteParty( pUser-&gt;m_idPlayer, pUser2-&gt;m_idPlayer, FALSE );

endif //__PARTY_FIND

    else
        pUser-&gt;AddDefinedText( TID_DIAG_0060, "\"%s\"", scanner.Token );
}
else
{
    pUser-&gt;AddDefinedText( TID_DIAG_0061, "\"%s\"", scanner.Token );
}

endif // __WORLDSERVER

return TRUE;

}

Code:
#ifdef __PARTY_FIND
    ON_TEXTCMDFUNC( TextCmd_getparty,                "getParty",            "getP",            "",                    "",            TCM_SERVER,    AUTH_GENERAL    ,"" )

endif //__PARTY_FIND

DPClient.cpp;
<div>Code:<pre>void CDPClient::OnPartyRequest( CAr & ar )

{ u_long uLeader, uMember;

BOOL bTroup

ifdef __PARTY_FIND

    , bPartyFind

endif// __PARTY_FIND

    ;
LONG nLeaderLevel, nMemberLevel, nLeaderJob, nMemberJob;
BYTE byLeaderSex, byMemberSex;
char szLeaderName[MAX_PLAYER] = {0,};
ar &gt;&gt; uLeader &gt;&gt; nLeaderLevel &gt;&gt; nLeaderJob &gt;&gt; byLeaderSex;
ar &gt;&gt; uMember &gt;&gt; nMemberLevel &gt;&gt; nMemberJob &gt;&gt; byMemberSex;
ar.ReadString( szLeaderName, MAX_PLAYER );
ar &gt;&gt; bTroup

ifdef __PARTY_FIND

    &gt;&gt; bPartyFind

endif //__PARTY_FIND

    ;

if( g_Option.m_bParty == FALSE )
{
    SendPartyMemberCancle( uLeader, uMember, 3 );
    return;
}

ifdef __S_SERVER_UNIFY

if( g_WndMng.m_bAllAction == FALSE )
    return;

endif // __S_SERVER_UNIFY

CWndBase* pWndBaseBuf = g_WndMng.GetWndBase( APP_PARTY_CONFIRM );

if( pWndBaseBuf )
{
    SendBlock( 7, g_pPlayer-&gt;GetName(), szLeaderName );
    return;
}

ifdef __PARTY_FIND

if( bPartyFind )
{
    SendAddPartyMember( uLeader, nLeaderLevel, nLeaderJob, byLeaderSex, uMember, nMemberLevel, nMemberJob, byMemberSex );
}else
{
    g_WndMng.m_pWndPartyConfirm = new CWndPartyConfirm;
    g_WndMng.m_pWndPartyConfirm-&gt;SetMember( uLeader, nLeaderLevel, nLeaderJob, byLeaderSex, uMember, nMemberLevel, nMemberJob, byMemberSex, szLeaderName, bTroup );
    g_WndMng.m_pWndPartyConfirm-&gt;Initialize();
}

else

g_WndMng.m_pWndPartyConfirm = new CWndPartyConfirm;
g_WndMng.m_pWndPartyConfirm-&gt;SetMember( uLeader, nLeaderLevel, nLeaderJob, byLeaderSex, uMember, nMemberLevel, nMemberJob, byMemberSex, szLeaderName, bTroup );
g_WndMng.m_pWndPartyConfirm-&gt;Initialize();

endif //__PARTY_FIND

}

</pre> </div>

Code:
#ifdef __PARTY_FIND
void CDPClient::SendAllowParty( u_long idLeader, u_long idParty, BOOL bAllow )
{
    BEFORESENDSOLE( ar, PACKETTYPE_ALLOW_PARTY, DPID_UNKNOWN );
    ar << idLeader << idParty << bAllow;
    SEND( ar, this, DPID_SERVERPLAYER );

} void CDPClient::OnPartyAllowJoin( CAr & ar ) { ar >> g_Party.m_bAllowEnter; }

endif //PARTY_FIND

Code:
#ifdef PARTY_FIND

        case SNAPSHOTTYPE_PARTYALLOW: OnPartyAllowJoin( ar ); break;

endif


party.cpp:
<div>Code:<pre>CParty::CParty()

{ m_uPartyId = 0; m_nSizeofMember = 0; memset( m_sParty, 0, sizeof(m_sParty) ); m_nLevel = 1; m_nExp = m_nPoint = 0; m_nTroupsShareExp = m_nTroupeShareItem = 0; m_nKindTroup = 0; // ´Ü¸·±Ø´Ü m_nReferens = 0; m_nGetItemPlayerId = 0;

ifdef __PARTY_FIND

m_bAllowEnter = TRUE;

endif //__PARTY_FIND

for( int i = 0 ; i &lt; MAX_PARTYMODE ; i++ )
{
    m_nModeTime[i] = 0;
}
m_idDuelParty = 0;

ifdef __WORLDSERVER

m_dwWorldId = 0;

endif // __WORLDSERVER

}

</pre> </div>

Code:
void CParty::InitParty()
{
    m_uPartyId    = 0;
    m_nSizeofMember    = 0;
    memset( m_sParty, 0, sizeof(m_sParty) );
    m_nLevel = 1;
    m_nExp = m_nPoint = 0;
    m_nTroupsShareExp = m_nTroupeShareItem = 0;
    m_nKindTroup = 0;                            // ´Ü¸·±Ø´Ü
    m_nReferens = 0;

ifdef __PARTY_FIND

m_bAllowEnter = TRUE;

endif //__PARTY_FIND

for( int i = 0 ; i &lt; MAX_PTMEMBER_SIZE ; i++ )
{
    m_aMember[i].m_uPlayerId    = 0;
    m_aMember[i].m_tTime = CTime::GetCurrentTime();
    m_aMember[i].m_bRemove = FALSE;

if VER < 11 // SYS_PLAYER_DATA

    m_aMember[i].m_nLevel = m_aMember[i].m_nJob = 0;
    m_aMember[i].m_szName[0] = '\0';

endif // __SYS_PLAYER_DATA

}

}

Code:
#ifdef __PARTY_FIND
CParty CPartyMng::GetPartyFree()
{
    CParty pParty, *pPartyTmp = NULL;
    if(  !m_2PartyPtr.begin()->second )
        return NULL;
    BOOL bRan = FALSE;
    DWORD dwRand = 0;
    if( m_2PartyPtr.end()->first >= 1 )
        DWORD dwRand = xRandom( m_2PartyPtr.end()->first );

for( C2PartyPtr::iterator i = m_2PartyPtr.begin(); i != m_2PartyPtr.end(); ++i )
{
    pParty = (CParty*)i-&gt;second;
    if( pParty &amp;&amp; pParty-&gt;GetSizeofMember() &lt; 8 &amp;&amp; pParty-&gt;m_bAllowEnter )
    {
        if( i-&gt;first &gt; dwRand )
            return pParty;
        else
            pPartyTmp = pParty;
    }
}
return pPartyTmp;

}

endif //PARTY_FIND

DPSrvr.cpp:
<div>Code:<pre>#ifdef PARTY_FIND

void CDPSrvr::OnAllowParty( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long ) { CUser pUser = g_UserMng.GetUser( dpidCache, dpidUser ); if( IsValidObj( pUser ) ) { u_long idLeader, idParty; BOOL bAllow; ar >> idLeader >> idParty >> bAllow; if( idLeader != pUser->m_idPlayer ) return; CParty pParty = g_PartyMng.GetParty( idParty ); if( pParty && pParty->IsLeader( idLeader ) ) pParty->m_bAllowEnter = bAllow; else return;

    CUser *pMember;
    for( int i = 0; i &lt; pParty-&gt;m_nSizeofMember; i++ )
    {
        pMember        = (CUser*)prj.GetUserByID( pParty-&gt;m_aMember[i].m_uPlayerId );
        if( IsValidObj( (CObj*)pMember ) )
            pMember-&gt;AddPartyAllowJoin( pParty-&gt;m_bAllowEnter );
    }
}

}

endif //PARTY_FIND

</pre> </div>

Code:
#ifdef PARTY_FIND

ON_MSG( PACKETTYPE_ALLOW_PARTY, OnAllowParty );

endif //__PARTY_FIND

Code:
void CDPSrvr::OnPartyRequest( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize )

{ u_long uLeaderid, uMemberid; BOOL bTroup; ar >> uLeaderid >> uMemberid; ar >> bTroup;

CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );
if( IsValidObj( pUser ) &amp;&amp; pUser-&gt;m_idPlayer == uLeaderid )

ifdef __PARTY_FIND

    InviteParty( uLeaderid, uMemberid, bTroup, FALSE );

else

    InviteParty( uLeaderid, uMemberid, bTroup );

endif //__PARTY_FIND

}

Code:
#ifdef __PARTY_FIND
void CDPSrvr::InviteParty( u_long uLeaderid, u_long uMemberid, BOOL bTroup, BOOL bPartyFind )

else

void CDPSrvr::InviteParty( u_long uLeaderid, u_long uMemberid, BOOL bTroup )

endif //__PARTY_FIND

{ CUser pUser = g_UserMng.GetUserByPlayerID( uMemberid ); CUser pLeaderUser = g_UserMng.GetUserByPlayerID( uLeaderid );

if( IsValidObj( pLeaderUser ) &amp;&amp; IsValidObj( pUser ) )
{
    if( !pUser-&gt;IsAuthorization( AUTH_GENERAL ) || !pLeaderUser-&gt;IsAuthorization( AUTH_GENERAL ) )
    {
        if( !pUser-&gt;IsAuthorization( AUTH_ADMINISTRATOR ) || !pLeaderUser-&gt;IsAuthorization( AUTH_ADMINISTRATOR ) )
        {
            pLeaderUser-&gt;AddText("Insufficient Permissions.");
            pUser-&gt;AddText("Insufficient Permissions.");
            return;
        }
    }
    // ´ëÀüÀå¿¡¼*´Â ÆÄƼ¸¦ ÇÒ¼ö ¾ø½À´Ï´Ù.
    CWorld* pWorld = pUser-&gt;GetWorld();
    if( ( pWorld &amp;&amp; pWorld-&gt;GetID() == WI_WORLD_GUILDWAR ) || pLeaderUser-&gt;GetWorld() &amp;&amp; pLeaderUser-&gt;GetWorld()-&gt;GetID() == WI_WORLD_GUILDWAR )
    {            
        pLeaderUser-&gt;AddText( prj.GetText(TID_GAME_GUILDCOMBAT_CANNOT_PARTY) );// "¼öÁ¤ÇؾßÇÔ : ±æµå´ëÀüÀå¿¡´Â ÆÄƼ¸¦ ÇÒ¼ö ¾ø½À´Ï´Ù" );
        return;
    }

if VER >= 11 // GUILD_COMBAT_1TO1

    if( g_GuildCombat1to1Mng.IsPossibleUser( pUser ) )
    {
        pLeaderUser-&gt;AddText( prj.GetText(TID_GAME_GUILDCOMBAT_CANNOT_PARTY) );// "¼öÁ¤ÇؾßÇÔ : ±æµå´ëÀüÀå¿¡´Â ÆÄƼ¸¦ ÇÒ¼ö ¾ø½À´Ï´Ù" );
        return;
    }

endif // __GUILD_COMBAT_1TO1

if __VER >= 8 // 8Â÷ µà¾ó 061226 ma

    if( 0 &lt; pUser-&gt;m_nDuel ||  0 &lt; pLeaderUser-&gt;m_nDuel )
    {
        return;
    }

endif // __VER >= 8 // 8Â÷ µà¾ó 061226 ma

    if( pLeaderUser-&gt;m_nDuel == 2 )
    {            
        pLeaderUser-&gt;AddDefinedText( TID_GAME_PPVP_ADDPARTY, "" );        // ±Ø´Ü µà¾óÁß¿£ ÃÊû ¸øÇÔ´Ù.
    } 
    else
    {
        if( 0 &lt; (CMover*)pUser-&gt;GetPartyId() )    // ÀÌ¹Ì ÆÄƼ°¡ ÀÖÀ»¶§
        {
            pLeaderUser-&gt;AddPartyRequestCancel( uLeaderid, uMemberid, 1 );
        }
        else
        {
            if( pUser-&gt;IsAttackMode() )
                pLeaderUser-&gt;AddDefinedText( TID_GAME_BATTLE_NOTPARTY, "" );
            else

ifdef __PARTY_FIND

                pUser-&gt;AddPartyRequest( pLeaderUser, pUser, bTroup, bPartyFind );

else

                pUser-&gt;AddPartyRequest( pLeaderUser, pUser, bTroup );

endif //__PARTY_FIND

        }
    }
}
else
{
    if( IsValidObj( pLeaderUser ) )
        pLeaderUser-&gt;AddPartyRequestCancel( uLeaderid, uMemberid, 4 );
}

}



User.cpp:
<div>Code:<pre>#ifdef __PARTY_FIND void CUser::AddPartyAllowJoin( BOOL bAllow ) { if( IsDelete() ) return;

m_Snapshot.cb++;
m_Snapshot.ar &lt;&lt; GetId();
m_Snapshot.ar &lt;&lt; SNAPSHOTTYPE_PARTYALLOW;
m_Snapshot.ar &lt;&lt; bAllow;

}

endif //PARTY_FIND

</pre> </div>

Code:
#ifdef PARTY_FIND

void CUser::AddPartyRequest( CUser * pLeader, CUser * pMember, BOOL bTroup, BOOL bPartyFind )

else

void CUser::AddPartyRequest( CUser * pLeader, CUser * pMember, BOOL bTroup )

endif //__PARTY_FIND

{ if( IsDelete() ) return;

m_Snapshot.cb++;
m_Snapshot.ar &lt;&lt; GetId();
m_Snapshot.ar &lt;&lt; SNAPSHOTTYPE_PARTYREQEST;
m_Snapshot.ar &lt;&lt; pLeader-&gt;m_idPlayer &lt;&lt; pLeader-&gt;m_nLevel &lt;&lt; pLeader-&gt;m_nJob &lt;&lt; pLeader-&gt;GetSex();
m_Snapshot.ar &lt;&lt; pMember-&gt;m_idPlayer &lt;&lt; pMember-&gt;m_nLevel &lt;&lt; pMember-&gt;m_nJob &lt;&lt; pMember-&gt;GetSex();
m_Snapshot.ar.WriteString( pLeader-&gt;m_szName );
m_Snapshot.ar &lt;&lt; bTroup

ifdef __PARTY_FIND

    &lt;&lt; bPartyFind

endif //__PARTY_FIND

    ;

}

DPSrvr.h(public scope pls):
<div>Code:<pre>#ifdef __PARTY_FIND void InviteParty( u_long uLeaderid, u_long uMemberid, BOOL bTroup, BOOL bPartyFind );

else

void    InviteParty( u_long uLeaderid, u_long uMemberid, BOOL bTroup );

endif //PARTY_FIND

</pre> </div>

Code:
#ifdef PARTY_FIND

void    OnAllowParty( CAr &amp; ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long );

endif //PARTY_FIND


User.h(ebenso):
<div>Code:<pre>#ifdef PARTY_FIND

void            AddPartyAllowJoin( BOOL bAllow );
void            AddPartyRequest( CUser * pLeader, CUser * pMember, BOOL bTroup, BOOL bPartyFind );

else

void            AddPartyRequest( CUser * pLeader, CUser * pMember, BOOL bTroup );

endif //PARTY_FIND

</pre> </div>party.h:
<div>Code:<pre>#ifdef PARTY_FIND

BOOL    m_bAllowEnter;

endif

</pre> </div>

Code:
#ifdef __PARTY_FIND

CParty* GetPartyFree();

endif

WndParty.cpp:
OnChildNotify:
<div>Code:<pre>#ifdef __PARTY_FIND

else if( nID == WIDC_CHECK1 )
{
    if( g_Party.IsLeader( g_pPlayer-&gt;m_idPlayer ) )
    {
        CWndButton *chk = (CWndButton*)GetDlgItem( WIDC_CHECK1 );
        g_Party.m_bAllowEnter = !chk-&gt;GetCheck();
        g_DPlay.SendAllowParty( g_pPlayer-&gt;m_idPlayer, g_Party.m_uPartyId, g_Party.m_bAllowEnter );
    }
}

endif //PARTY_FIND

</pre> </div>OnDraw:
<div>Code:<pre>#ifdef PARTY_FIND

CWndButton *chk = (CWndButton*)GetDlgItem( WIDC_CHECK1 );
if( g_Party.IsLeader( g_pPlayer-&gt;m_idPlayer ) )
    chk-&gt;EnableWindow( TRUE );
else
    chk-&gt;EnableWindow( FALSE );
chk-&gt;SetCheck( !g_Party.m_bAllowEnter );

endif

</pre> </div>DPClient.h(public):
<div>Code:<pre>#ifdef __PARTY_FIND

void    OnPartyAllowJoin( CAr&amp; ar );
void    SendAllowParty( u_long idLeader, u_long idParty, BOOL bAllow );

endif //__PARTY_FIND

</pre> </div>














</strong> </div> </div></span></p>