Hey Leute,
in diesem Thread möchte ich viele alte Flyff Systeme, wie z.B. das alte Loadlight System oder das alte Monster Collecting System, releasen. Wenn ihr noch ein System habt, welches aus der alten Zeit stammt könnt ihr es gerne hier posten, ich werde es natürlich in den Hauptthread aufnehmen.
Der erste Release wird das alte Loadlight System sein:
Da ich die letzte Woche sehr viel Stress habe poste ich einfach mal zwei kleine Systeme:
Day and Night:
Als nächstes System "veröffentliche" ich das alte Item Color System:
Bounty System reaktivieren :
So, nicht wundern, dass ich den Code nicht erkläre oder aber ich habe einfach nicht allzuviel Zeit immoment >.< Und ausserdem ist es ja ned so schwer das ganze zu verstehen ;)
So, ich hoffe ich werde einmal die Woche ein neues System hier posten können :)
MfG Tex0
in diesem Thread möchte ich viele alte Flyff Systeme, wie z.B. das alte Loadlight System oder das alte Monster Collecting System, releasen. Wenn ihr noch ein System habt, welches aus der alten Zeit stammt könnt ihr es gerne hier posten, ich werde es natürlich in den Hauptthread aufnehmen.
Der erste Release wird das alte Loadlight System sein:
Schritt 1:
Wir gehen in die Datei WndField.cpp und dort in die Funktion void CWndRevival::OnInitialUpdate(). Dort suchen wir nach der folgenden Stelle:
Diese kommentieren wir komplett aus !
Nun gehen wir in die Datei DpSrvr.cpp (im WS) und suchen nach der Funktion CDPSrvr::OnRevivalLodelight. Diese füllen wir mit folgedem Inhalt:
So nun einfach die Neuz und den WorldServer erstellen.
Als nächstes gehen wir in unseren Beast Editor und spawnen an den gewünschten Stellen die NPC's mit dem Namen: MaFl_LodeLight(für Flaris), MaSa_LodeLight(für SM), MaDa_LodeLight(für Darkon) oder MaDa_LodeLight2( für Darkon2)
So das wars :)
[Only registered and activated users can see links. Click Here To Register...]
Wir gehen in die Datei WndField.cpp und dort in die Funktion void CWndRevival::OnInitialUpdate(). Dort suchen wir nach der folgenden Stelle:
Code:
#if __VER >= 9 // __S_9_ADD
if( m_pLodeLight )
{
CRect RevivalRect = m_pRevival->GetWindowRect(TRUE);
CRect LodeLightRect = m_pLodeLight->GetWindowRect(TRUE);
m_pRevival->SetWndRect( LodeLightRect, TRUE );
m_pShop->SetWndRect( RevivalRect, TRUE );
m_pLodeLight->EnableWindow( FALSE );
m_pLodeLight->SetVisible( FALSE );
// crect = m_pLodeStar->GetWindowRect(TRUE);
// crect.top += 2;
// crect.bottom += 2;
// m_pLodeStar->SetWndRect( crect, TRUE );
// crect = m_pRevival->GetWindowRect(TRUE);
// crect.top += 8;
// crect.bottom += 8;
// m_pRevival->SetWndRect( crect, TRUE );
// crect = GetWndRect();
// crect.bottom -= 31;
// SetWndRect( crect, TRUE );
}
#endif // __S_9_ADD
Nun gehen wir in die Datei DpSrvr.cpp (im WS) und suchen nach der Funktion CDPSrvr::OnRevivalLodelight. Diese füllen wir mit folgedem Inhalt:
Code:
CWorld* pWorld;
CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );
if( IsValidObj( pUser ) && ( pWorld = pUser->GetWorld() ) )
{
pUser->m_Resurrection_Data.bUseing = FALSE;
if( pUser->IsDie() == FALSE )
{
// À̸®·Î µé¾î¿À´Â °æ¿ì°¡ »ý±ä´Ù. »ý°¢¿£ ÀÌ¹Ì Çѹø ¿©±æ µé¾î¿Ô´Ù°¡ ·º °É¸°µ¿¾È
// ·Îµå½ºÅ¸¸¦ ¶Ç ´©¸£¸é µé¾î¿À´Â°Ô ¾Æ´Ñ°¡ ½Í´Ù.
return;
}
CCommonCtrl* pCtrl = CreateExpBox( pUser );
if( pCtrl )
{
pCtrl->AddItToGlobalId();
pWorld->ADDOBJ( pCtrl, FALSE, pUser->GetLayer() );
g_dpDBClient.SendLogExpBox( pUser->m_idPlayer, pCtrl->GetId(), pCtrl->m_nExpBox );
}
BOOL bGuildCombat = FALSE;
g_dpDBClient.SendLogLevelUp( (CMover*)pUser, 9 ); // ·Îµå½ºÅ¸·Î ºÎȰ ·Î±×
pUser->m_nDead = PROCESS_COUNT * 5; // Á×Àº ÈÄ 5Ãʰ£Àº ¹«Àû
float fRate = pUser->SubDieDecExp(); // Á×¾î¼* ºÎȰÇÏ¸é °âÄ¡ ±ðÀÓ,.
pUser->m_pActMover->ClearState();
if( pWorld->GetID() == WI_WORLD_GUILDWAR )
fRate = 1.0f;
#if __VER >= 11 // __GUILD_COMBAT_1TO1
else if( g_GuildCombat1to1Mng.IsPossibleUser( pUser ) )
fRate = 1.0f;
#endif // __GUILD_COMBAT_1TO1
#if __VER >= 9 // __S_9_ADD
else
fRate = 0.2f;
#endif // __S_9_ADD
#if __VER < 9 // __S_9_ADD // ¾Æ·¡¿¡¼* ä¿öÁÖ°í ÆÐŶ±îÁö º¸³»¹ö¸®´Â °ÍÀ¸·Î ¼öÁ¤
pUser->SetHitPoint( (int)(pUser->GetMaxHitPoint() * fRate) ); // hp ȸº¹
int nVal = (int)(pUser->GetMaxManaPoint() * fRate); // mp ȸº¹
if( pUser->GetManaPoint() < nVal )
pUser->SetManaPoint( nVal );
nVal = (int)(pUser->GetMaxFatiguePoint() * fRate); // fp ȸº¹
if( pUser->GetFatiguePoint() < nVal )
pUser->SetFatiguePoint( nVal );
#endif // __S_9_ADD
if( pWorld->GetID() == WI_WORLD_GUILDWAR )
{
g_UserMng.AddHdr( pUser, SNAPSHOTTYPE_REVIVAL );
g_GuildCombatMng.JoinObserver( pUser );
}
else
{
g_UserMng.AddHdr( pUser, SNAPSHOTTYPE_REVIVAL_TO_LODELIGHT );
}
#if __VER >= 9 // __S_9_ADD
pUser->SetPointParam( DST_HP, (int)(pUser->GetMaxHitPoint() * fRate) ); // hp ȸº¹
int nVal = (int)(pUser->GetMaxManaPoint() * fRate); // mp ȸº¹
pUser->SetPointParam( DST_MP, nVal );
nVal = (int)(pUser->GetMaxFatiguePoint() * fRate); // fp ȸº¹
pUser->SetPointParam( DST_FP, nVal );
#endif // __S_9_ADD
if( pWorld->GetID() == WI_WORLD_GUILDWAR )
return;
#ifdef __PK_PRISON
if(pUser->GetPKValue() >= 1 && !pWorld->IsArena())
pUser->REPLACE( g_uIdofMulti, WI_WORLD_PRISON, D3DXVECTOR3( 1266.0f, 114.8f, 1355.8f ), REPLACE_NORMAL, nDefaultLayer );
return;
#endif
#if __VER >= 12 // __SECRET_ROOM
if( CSecretRoomMng::GetInstance()->IsInTheSecretRoom( pUser ) )
{
pUser->REPLACE( g_uIdofMulti, WI_WORLD_MADRIGAL, CSecretRoomMng::GetInstance()->GetRevivalPos( pUser ), REPLACE_NORMAL, nDefaultLayer );
return;
}
#endif // __SECRET_ROOM
// º¸½º¸÷ ¸Ê¿¡¼* Á×¾ú´Ù...
// ±×·¯¸é ºÎȰÀº ¸¶À»¿¡¼*...
if( pWorld->GetID() == WI_DUNGEON_MUSCLE || pWorld->GetID() == WI_DUNGEON_KRRR || pWorld->GetID() == WI_DUNGEON_BEAR )
{
pUser->REPLACE( g_uIdofMulti, WI_WORLD_MADRIGAL, D3DXVECTOR3( 6968.0f, 0.0f, 3328.8f ), REPLACE_NORMAL, nDefaultLayer );
return;
}
PRegionElem pRgnElem = NULL;
if( pUser->IsChaotic()
#ifdef __JEFF_11_4
&& !pWorld->IsArena()
#endif // __JEFF_11_4
)
{
#if __VER >= 8 // __S8_PK
if( pWorld->GetID() != pWorld->m_dwIdWorldRevival && pWorld->m_dwIdWorldRevival != 0 )
pRgnElem = g_WorldMng.GetRevivalPosChao( pWorld->m_dwIdWorldRevival, pWorld->m_szKeyRevival );
if( NULL == pRgnElem )
pRgnElem = g_WorldMng.GetNearRevivalPosChao( pWorld->GetID(), pUser->GetPos() );
#else // __VER >= 8 // __S8_PK
pRgnElem = g_WorldMng.GetNearRevivalPosChao( pWorld->GetID(), pUser->GetPos() );
#endif // __VER >= 8 // __S8_PK
}
else
{
if (pUser->m_idMarkingWorld == 0)
{
if( pWorld->GetID() != pWorld->m_dwIdWorldRevival && pWorld->m_dwIdWorldRevival != 0 )
pRgnElem = g_WorldMng.GetRevivalPos( pWorld->m_dwIdWorldRevival, pWorld->m_szKeyRevival );
if( NULL == pRgnElem )
pRgnElem = g_WorldMng.GetNearRevivalPos( pWorld->GetID(), pUser->GetPos() );
}else{
pRgnElem = new REGIONELEM;
pRgnElem->m_vPos = pUser->m_vMarkingPos;
pRgnElem->m_dwWorldId = pUser->m_idMarkingWorld;
}
}
if( pRgnElem )
pUser->REPLACE( g_uIdofMulti, pRgnElem->m_dwWorldId, pRgnElem->m_vPos, REPLACE_FORCE, nRevivalLayer );
else
pUser->REPLACE( g_uIdofMulti, pWorld->GetID(), pUser->GetPos(), REPLACE_FORCE, pUser->GetLayer() );
}
Als nächstes gehen wir in unseren Beast Editor und spawnen an den gewünschten Stellen die NPC's mit dem Namen: MaFl_LodeLight(für Flaris), MaSa_LodeLight(für SM), MaDa_LodeLight(für Darkon) oder MaDa_LodeLight2( für Darkon2)
So das wars :)
[Only registered and activated users can see links. Click Here To Register...]
Da ich die letzte Woche sehr viel Stress habe poste ich einfach mal zwei kleine Systeme:
Day and Night:
Ihr ersetzt die Konstante static const LIGHTCOLOR gs_kLight[24] mit der hier:
Dann definiert ihr
in der VersionCommon.h
Achtung, es ist nicht 100% Offi like aber der Effekt passt ;)
Code:
static const LIGHTCOLOR gs_kLight[24] = // diffuse, ambient
{
#ifdef __DAY_NIGHT
0.03f, 0.03f, 0.05f, 0.03f, 0.03f, 0.1f, // 0 12
0.03f, 0.03f, 0.05f, 0.03f, 0.03f, 0.1f, // 1
0.03f, 0.03f, 0.05f, 0.03f, 0.03f, 0.1f, // 2
0.5f, 0.5f, 0.6f, 0.4f, 0.4f, 0.4f, // 3
0.5f, 0.5f, 0.6f, 0.4f, 0.4f, 0.4f, // 4
0.5f, 0.5f, 0.6f, 0.4f, 0.4f, 0.4f, // 5
0.5f, 0.5f, 0.6f, 0.4f, 0.4f, 0.4f, // 6
0.7f, 0.7f, 0.7f, 0.5f, 0.5f, 0.5f, // 7
0.8f, 0.8f, 0.8f, 0.5f, 0.5f, 0.5f, // 8
0.9f, 0.9f, 0.9f, 0.5f, 0.5f, 0.5f, // 9
1.0f, 1.0f, 1.0f, 0.5f, 0.5f, 0.5f, // 10
1.0f, 1.0f, 1.0f, 0.6f, 0.6f, 0.6f, // 11
1.0f, 1.0f, 1.0f, 0.6f, 0.6f, 0.6f, // 12
1.0f, 1.0f, 1.0f, 0.6f, 0.6f, 0.6f, // 13 1
1.0f, 1.0f, 1.0f, 0.6f, 0.6f, 0.6f, // 14 2
1.0f, 1.0f, 1.0f, 0.5f, 0.5f, 0.5f, // 15 3
0.8f, 0.6f, 0.7f, 0.4f, 0.4f, 0.4f, // 16 5
0.6f, 0.4f, 0.2f, 0.4f, 0.4f, 0.3f, // 17 6
0.2f, 0.2f, 0.2f, 0.3f, 0.3f, 0.3f, // 18 7
0.1f, 0.1f, 0.2f, 0.3f, 0.3f, 0.3f, // 19 8
0.2f, 0.2f, 0.2f, 0.3f, 0.3f, 0.3f, // 20 8
0.2f, 0.2f, 0.2f, 0.3f, 0.3f, 0.3f, // 21 9
0.2f, 0.2f, 0.2f, 0.3f, 0.3f, 0.3f, // 22 10
0.2f, 0.2f, 0.2f, 0.3f, 0.3f, 0.3f, // 23 11
#else
0.4f, 0.4f, 0.5f, 0.3f, 0.3f, 0.4f, // 0 12
0.4f, 0.4f, 0.5f, 0.3f, 0.3f, 0.4f, // 1
0.4f, 0.4f, 0.5f, 0.3f, 0.3f, 0.4f, // 2
0.4f, 0.4f, 0.5f, 0.3f, 0.3f, 0.4f, // 3
0.4f, 0.4f, 0.5f, 0.3f, 0.3f, 0.4f, // 4
0.4f, 0.4f, 0.5f, 0.3f, 0.3f, 0.4f, // 5
0.5f, 0.5f, 0.6f, 0.4f, 0.4f, 0.4f, // 6
0.7f, 0.7f, 0.7f, 0.5f, 0.5f, 0.5f, // 7
0.8f, 0.8f, 0.8f, 0.5f, 0.5f, 0.5f, // 8
0.9f, 0.9f, 0.9f, 0.5f, 0.5f, 0.5f, // 9
1.0f, 1.0f, 1.0f, 0.5f, 0.5f, 0.5f, // 10
1.0f, 1.0f, 1.0f, 0.6f, 0.6f, 0.6f, // 11
1.0f, 1.0f, 1.0f, 0.6f, 0.6f, 0.6f, // 12
1.0f, 1.0f, 1.0f, 0.6f, 0.6f, 0.6f, // 13 1
1.0f, 1.0f, 1.0f, 0.6f, 0.6f, 0.6f, // 14 2
1.0f, 1.0f, 1.0f, 0.5f, 0.5f, 0.5f, // 15 3
0.9f, 0.9f, 0.9f, 0.5f, 0.5f, 0.5f, // 16 5
0.9f, 0.6f, 0.2f, 0.5f, 0.5f, 0.4f, // 17 6
0.6f, 0.6f, 0.4f, 0.4f, 0.4f, 0.4f, // 18 7
0.5f, 0.5f, 0.4f, 0.4f, 0.4f, 0.4f, // 19 8
0.45f, 0.45f, 0.4f, 0.35f, 0.35f, 0.35f, // 20 8
0.43f, 0.43f, 0.5f, 0.33f, 0.33f, 0.3f, // 21 9
0.41f, 0.41f, 0.5f, 0.31f, 0.31f, 0.3f, // 22 10
0.4f, 0.4f, 0.5f, 0.3f, 0.3f, 0.4f // 23 11
#endif
};
Code:
__DAY_NIGHT
Achtung, es ist nicht 100% Offi like aber der Effekt passt ;)
Als nächstes System "veröffentliche" ich das alte Item Color System:
In der Datei WndManager.cpp einfach die Funktion DWORD CWndMgr::PutItemName( CItemElem* pItemElem, CEditString* pEdit )
mit der hier austauschen:
Jetzt definiert ihr noch in der VersionCommon.h das hier:
mit der hier austauschen:
Code:
DWORD CWndMgr::PutItemName( CItemElem* pItemElem, CEditString* pEdit )
{
CString str;
CString strTemp;
DWORD dwColorbuf = dwItemColor[g_Option.m_nToolTipText].dwName0;
if( pItemElem->GetProp()->dwReferStat1 == WEAPON_GENERAL )
dwColorbuf = dwItemColor[g_Option.m_nToolTipText].dwName0;
else if( pItemElem->GetProp()->dwReferStat1 == WEAPON_UNIQUE )
dwColorbuf = dwItemColor[g_Option.m_nToolTipText].dwName1;
else if( pItemElem->GetProp()->dwReferStat1 == WEAPON_ULTIMATE )
dwColorbuf = dwItemColor[g_Option.m_nToolTipText].dwName3;
else if( pItemElem->GetProp()->dwReferStat1 == ARMOR_SET )
dwColorbuf = dwItemColor[g_Option.m_nToolTipText].dwName1;
#ifdef __OLD_ITEM_COLOR
if( pItemElem->GetProp()->dwItemRare == 200 )
dwColorbuf = dwItemColor[g_Option.m_nToolTipText].dwName1;
else if( pItemElem->GetProp()->dwItemRare == 300 )
dwColorbuf = dwItemColor[g_Option.m_nToolTipText].dwName2;
#endif
if( pItemElem->IsFlag( CItemElem::binds )
&& (pItemElem->m_dwItemId != II_GEN_MAT_ORICHALCUM01_1 && pItemElem->m_dwItemId != II_GEN_MAT_MOONSTONE_1)
#if __VER >= 14 // __EQUIP_BIND
&& pItemElem->GetProp()->dwFlag != IP_FLAG_EQUIP_BIND
#endif // __EQUIP_BIND
)
strTemp.Format( "%s ", prj.GetText( TID_GAME_TOOLTIP_ITEM_BINDS ) );
// ·£´ý ¿É¼Ç
if( pItemElem->GetProp()->dwParts != (DWORD)-1 )
{
PRANDOMOPTITEM pRandomOptItem = CRandomOptItemGen::GetInstance()->GetRandomOptItem( pItemElem->GetRandomOpt() );
if( pRandomOptItem )
strTemp.Format( "%s ", pRandomOptItem->pszString );
}
BOOL bGuildCombatCloak = FALSE;
if( pItemElem->m_dwItemId == II_ARM_S_CLO_CLO_DRAGON1 || pItemElem->m_dwItemId == II_ARM_S_CLO_CLO_DRAGON2 ||
pItemElem->m_dwItemId == II_ARM_S_CLO_CLO_DRAGON3 || pItemElem->m_dwItemId == II_ARM_S_CLO_CLO_DRAGON4 )
bGuildCombatCloak = TRUE;
if( pItemElem->GetProp()->dwItemKind3 == IK3_CLOAK && pItemElem->m_idGuild ) // ±æµå¹øÈ£°¡ ¹ÚÇôÀÖÀ¸¸é.
{
CGuild *pGuild = g_GuildMng.GetGuild( pItemElem->m_idGuild );
if( pGuild && bGuildCombatCloak == FALSE )
str.Format( prj.GetText( TID_GUILD_CLOAK ), pGuild->m_szGuild );
else
str.Format( "%s", pItemElem->GetProp()->szName );
}
#if __VER >= 9 // __CSC_VER9_1
else
{
str = pItemElem->GetName();
}
CString stredit;
strTemp += str;
if( pItemElem->GetProp()->IsUltimate() ) //Ultimate ¾ÆÀÌÄÜÀÌ µé¾î°¡±â À§ÇÑ ¿©¹é
stredit.Format(" %s", strTemp);
else
stredit.Format("%s", strTemp);
pEdit->AddString( stredit, dwColorbuf, ESSTY_BOLD );
#else // __CSC_VER9_1
else
{
str.Format( "%s", pItemElem->GetProp()->szName );
}
strTemp += str;
pEdit->AddString( strTemp, dwColorbuf, ESSTY_BOLD );
#endif //__CSC_VER9_1
return dwColorbuf;
}
Code:
__OLD_ITEM_COLOR
Bounty System reaktivieren :
Mover.cpp
Code:
int CMover::SubPK( CMover *pAttacker, int nReflect )
{
if( !g_eLocal.GetState( EVE_PK )
#ifdef __JEFF_11_4
|| GetWorld()->IsArena()
#endif // __JEFF_11_4
)
return 1;
#if __VER >= 8 // __S8_PK
if( GetWorld()->GetID() == WI_WORLD_GUILDWAR && g_GuildCombatMng.m_nState != CGuildCombat::CLOSE_STATE )
return 1;
if( pAttacker->GetWorld()->GetID() == WI_WORLD_GUILDWAR && g_GuildCombatMng.m_nState != CGuildCombat::CLOSE_STATE )
return 1;
#if __VER >= 11 // __GUILD_COMBAT_1TO1
if( g_GuildCombat1to1Mng.IsPossibleUser( (CUser*)this ) && g_GuildCombat1to1Mng.IsPossibleUser( (CUser*)pAttacker ) )
return 1;
#endif // __GUILD_COMBAT_1TO1
if( g_eLocal.GetState( EVE_PKCOST )
#ifdef __JEFF_11_4
&& GetWorld()->IsArena() == FALSE
#endif // __JEFF_11_4
)
{
if( IsPlayer() && IsChaotic() )
{
#if !defined(__INTERNALSERVER)
if( m_dwAuthorization < AUTH_HELPER )
#endif
{
// ¾ÆÀÌÅÛ µå·Ó
// - Àκ¥ µå·Ó( ÀåÂøºÎÅÍ µå·ÓÇÏ¸é ¾ÈµÊ - Àκ¥°ø°£ÀÌ ºÎÁ·ÇÏ¿© µå·ÓÇÒ¼ö ¾øÀ½ )
CHAO_PROPENSITY Propensity = prj.GetPropensityPenalty( GetPKPropensity() );
int nInvenDrop = xRandom( Propensity.nInvenDorpMin, Propensity.nInvenDorpMax + 1 );
for( int i=0; i < nInvenDrop; ++i )
{
if( DoDropItemRandom( TRUE, pAttacker ) == 0 )
break;
}
// - ÀåÂø µå·Ó
int nEquipDrop = xRandom( Propensity.nEquipDorpMin, Propensity.nEquipDorpMax + 1 );
for( i=0; i < nEquipDrop; ++i )
{
if( DoDropItemRandom( FALSE, pAttacker, TRUE ) == 0 )
break;
}
}
}
}
if( pAttacker->IsPlayer() )
{
m_idMurderer = pAttacker->m_idPlayer;
CWorld* pWorld = GetWorld();
if( pWorld )
{
char szFormat[256];
strcpy( szFormat, pAttacker->GetName() );
strcat( szFormat, prj.GetText( TID_PK_REWARDNOTICE ) );
g_DPCoreClient.SendWCWantedReward( m_idPlayer, pAttacker->m_idPlayer, szFormat, pWorld->GetID(), GetPos(), GetLayer() );
}
}
if( !pAttacker->IsPlayer() || IsNPC() )
return 1;
BOOL bAdd = FALSE;
if( pAttacker->IsChaotic() ) // Ä«¿À»óÅÂ
{
if( !IsChaotic() )
bAdd = TRUE;
}
else // ÇÎÅ©»óÅÂ, Èù»ö»óÅÂ
{
if( !(IsChaotic() || IsPKPink()) )
bAdd = TRUE;
}
/// Ä«¿À¼öÄ¡, ¼ºÇâÀ» ¿Ã·ÁÁÜ
if( bAdd && nReflect == 0
&& pAttacker != this ) // chipi_081119 Áö¼ÓÇü µ¥¹ÌÁö ½ºÅ³ ¹Þ°í ÀçÁ¢Çϸé ÀÚ»ìµÇ¾î Ä«¿ÀµÇ´Â ¹®Á¦ ¼öÁ¤...
{
if( IsPlayer() && pAttacker->IsPlayer() )
{
if( !pAttacker->IsChaotic() )
((CUser*)pAttacker)->AddPlaySound( SND_PC_CHAOS );
CString szSendMsg;
szSendMsg.Format( prj.GetText(TID_GAME_PK_DEFENDER) , pAttacker->GetName() );
((CUser*)this)->AddText( szSendMsg );
szSendMsg.Format( prj.GetText(TID_GAME_PK_ATTACKER) , GetName() );
((CUser*)pAttacker)->AddText( szSendMsg );
}
pAttacker->SetPKValue( pAttacker->GetPKValue() + 1 );
((CUser*)pAttacker)->AddPKValue();
pAttacker->SetPKPropensity( pAttacker->GetPKPropensity() + NextPKPropensity( pAttacker->GetPKValue() ) );
g_UserMng.AddPKPropensity( pAttacker );
g_dpDBClient.SendLogPkPvp( pAttacker, this, 0, 'P' );
#if __VER >= 13 // __HONORABLE_TITLE // ´ÞÀÎ
#ifndef __MAINSERVER
if(!pAttacker->IsPlayer())
FILEOUT( "..\\HonorError.txt", "subpk()AddHonorListAck()\n" );
#endif // __MAINSERVER
((CUser*)pAttacker)->SetHonorAdd(HS_PK_COUNT,HI_COUNT_CHECK);
#endif // __HONORABLE_TITLE // ´ÞÀÎ
}
#else // __VER >= 8 // __S8_PK
BOOL bChaotic = IsChaotic();
m_idMurderer = pAttacker->m_idPlayer; // ³¯ ¸¶Áö¸·À¸·Î Á×ÀγðÀÇ Ç÷¹ÀÌ¾î¾ÆÀ̵𸦠ÀúÀåÇØµÒ.
pAttacker->m_nNumKill++; // ų¼ö Áõ°¡
(CUser*)this)->AddDefinedText( TID_GAME_PKDEAD, "\"%s\"", pAttacker->m_szName ); // ??¿¡°Ô Á×À½À» ´çÇÏ¿´½À´Ï´Ù.
int nGap = abs( this->GetLevel() - pAttacker->GetLevel() );
if( nGap >= 80 )
ChangeFame( this ); // 80 ÀÌ»óÀÏ Â÷ÀÌ ³¯ °æ¿ì, ¿¹¿ÜÀûÀ¸·Î ¸í¼ºÄ¡ Áõ°¨
// º¸»ó±Ý ¶³±¸±â¸¦ ¿äûÇÑ´Ù.
CWorld* pWorld = GetWorld();
if( pWorld )
{
//"%s´ÔÀÌ Çö»ó¹ü %s¸¦ Àâ¾Æ Çö»ó±Ý %sÆä³Ä¸¦ ¾ò¾ú½À´Ï´Ù."
char szFormat[256];
strcpy( szFormat, pAttacker->GetName() );
strcat( szFormat, prj.GetText( TID_PK_REWARDNOTICE ) );
g_DPCoreClient.SendWCWantedReward( m_idPlayer, pAttacker->m_idPlayer, szFormat, pWorld->GetID(), GetPos() );
}
if( g_eLocal.GetState( EVE_PKCOST )
#ifdef __JEFF_11_4
&& ( pWorld && pWorld->IsArena() == FALSE )
#endif // __JEFF_11_4
)
{
if( bChaotic )
{
#if !defined(__INTERNALSERVER)
if( m_dwAuthorization < AUTH_HELPER )
#endif
{
// Æä³Äµå·Ó
KarmaProp* pProp = prj.GetKarmaProp( m_nSlaughter );
float fRate = pProp->nDropGoldPercent / 100.0f;
int nGold = GetGold() * fRate;
if( nGold > 0 )
DropGold( nGold , GetPos(), TRUE );
// ¾ÆÀÌÅÛ µå·Ó
for( int i=0; i<pProp->nDropItem; ++i )
{
BOOL bExcludeEquip = ( i == 0 ); // 1°³ ÀÌÇÏÀÇ °æ¿ì, ÀåÂø ¾ÆÀÌÅÛÀº ¶³±¸Áö ¾Ê´Â´Ù.
if( xRandom( 100 ) < pProp->nDropPercent )
{
if( DoDropItemRandom( bExcludeEquip, pAttacker ) == 0 )
break;
}
}
}
}
}
//pAttackerÀÇ slaughter°ªÀ» º¯°æ½ÃŲ´Ù.
pAttacker->ChangeSlaughter( CHANGE_SLAUGHTER_KILL, this );
// ÁØÄ«¿À À¯Àú´Â PK·Î »ç¸Á ´çÇÒ °æ¿ì, Ä«¸£¸¶ µî±ÞÀÌ ÇÑ ´Ü°è ¿Ã¶ó°£´Ù.
if( GetSlaughterGrade() == SLAUGHTER_SEMI_CHAOTIC )
UpgradeKarma();
#endif // __VER >= 8 // __S8_PK
return 1;
}
So, nicht wundern, dass ich den Code nicht erkläre oder aber ich habe einfach nicht allzuviel Zeit immoment >.< Und ausserdem ist es ja ned so schwer das ganze zu verstehen ;)
So, ich hoffe ich werde einmal die Woche ein neues System hier posten können :)
MfG Tex0