|
You last visited: Today at 15:49
Advertisement
[Source Release]Quick Jobchange
Discussion on [Source Release]Quick Jobchange within the Flyff PServer Guides & Releases forum part of the Flyff Private Server category.
10/01/2011, 14:10
|
#121
|
elite*gold: 0
Join Date: Aug 2011
Posts: 206
Received Thanks: 117
|
Wann soll denn bei dir die 3rd Jobchange kommen ? 130 oder 129 ?
|
|
|
10/01/2011, 14:38
|
#122
|
elite*gold: 0
Join Date: Mar 2010
Posts: 1,489
Received Thanks: 701
|
150 ^^
|
|
|
10/01/2011, 14:51
|
#123
|
elite*gold: 20
Join Date: Apr 2009
Posts: 804
Received Thanks: 829
|
Da es scheinbar einige Probleme mit den Levelangaben gab, hab ich alles nochmal mit den Makros neu hochgeladen.
Link ist im Main Post
Quote:
Originally Posted by Pumbaaa
Fix für die neuen ResData Parameter:
Code:
//Ganz unten
APP_FASTJOBCHANGE "WndTile00.tga" "" 1 288 240 0x2410000 26
{
// Title String
IDS_RESDATA_INC_017466
}
{
// Help Key
IDS_RESDATA_INC_008359
}
{
WTYPE_TEXT WIDC_TEXT1 "WndEditTile00.tga" 1 12 78 264 170 0x20020000 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_008359
}
{
// ToolTip
IDS_RESDATA_INC_008359
}
WTYPE_BUTTON WIDC_BUTTON1 "ButtChange.bmp" 0 100 172 172 192 0x220010 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_008359
}
{
// ToolTip
IDS_RESDATA_INC_017469
}
WTYPE_BUTTON WIDC_BUTTON2 "Buttright2.bmp" 0 223 172 264 192 0x220010 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_008359
}
{
// ToolTip
IDS_RESDATA_INC_017467
}
WTYPE_BUTTON WIDC_BUTTON3 "Buttleft2.bmp" 0 12 172 53 192 0x220010 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_008359
}
{
// ToolTip
IDS_RESDATA_INC_017468
}
WTYPE_BUTTON WIDC_BUTTON4 "SlotVan.bmp" 0 8 8 72 72 0x220010 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_008359
}
{
// ToolTip
IDS_RESDATA_INC_008359
}
WTYPE_STATIC WIDC_STATIC1 "" 0 78 52 264 68 0x2220000 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_008359
}
{
// ToolTip
IDS_RESDATA_INC_008359
}
}
|
So geht es auch mit den neuen Parametern.
|
|
|
10/01/2011, 16:54
|
#124
|
elite*gold: 0
Join Date: Mar 2010
Posts: 1,489
Received Thanks: 701
|
So, funzt nun Perfeckt, kein einziger Error, keine Laggs. bis auf 1 sache ^^
Also, Ich hab das jetzt mal so durchgetestet, und sobald ich lvl 149 Erreiche, kann ich nichtmehr weiterleveln, weil ich ja 3rd Job Klasse haben muss, das Problem dabei ist:
ich bleibe bei 00,00% EXP Stecken.
Das ist also kein Fehler in der Job Change, sondern in ner anderen datei, wie ändere ich es, das 149 icht bei 00,00 stecken bleibt, sondern bei 99,99, sonst taucht ja das job fenster net auf
|
|
|
10/01/2011, 17:49
|
#125
|
elite*gold: 20
Join Date: Apr 2009
Posts: 804
Received Thanks: 829
|
Irgendwo in der Funktion CMover::AddExperience fehlt
Code:
m_nExp1 = (prj.m_aExpCharacter[nNextLevel].nExp1 - 1);
nExptmp = 0;
return FALSE;
|
|
|
10/01/2011, 18:03
|
#126
|
elite*gold: 0
Join Date: Mar 2010
Posts: 1,489
Received Thanks: 701
|
Quote:
Originally Posted by Pumbaaa
Irgendwo in der Funktion CMover::AddExperience fehlt
Code:
m_nExp1 = (prj.m_aExpCharacter[nNextLevel].nExp1 - 1);
nExptmp = 0;
return FALSE;
|
Und wo ist die Funktion CMover::AddExperience ?
PS:
Ich glaube das es was mit der defineJob.h zu tun hat, denn ich hab dort das max lvl geändert, aber ich glaub, ich hab was falsch eingestellt
Meine defineJob.h :
Code:
#define MAX_MONSTER_LEVEL 250
#define MAX_GENERAL_LEVEL 120 // ÀϹÝ, ¸¶½ºÅÍ Ä³¸¯ ÃÖ°í ·¹º§
#ifdef __3RD_LEGEND16
#define MAX_LEGEND_LEVEL 149 // È÷¾î·Î ij¸¯ ÃÖ°í ·¹º§
#if __VER >= 17
#define MAX_3RD_LEGEND_LEVEL 185 // 3Â÷ ÀüÁ÷ ij¸¯ ÃÖ°í ·¹º§ ( 149 -> 185 È®Àå )
#define MAX_CHARACTER_LEVEL 185 // ±âÁ¸ MAX_LEVEL À» ´ëü..ij¸¯ÅͰ¡ °¡Áú ¼ö ÀÖ´Â ÃÖ°í ·¹º§.. ( 139 -> 150 È®Àå )
#else // __VER >= 17
#define MAX_3RD_LEGEND_LEVEL 149 // 3Â÷ ÀüÁ÷ ij¸¯ ÃÖ°í ·¹º§
#define MAX_CHARACTER_LEVEL 149 // ±âÁ¸ MAX_LEVEL À» ´ëü..ij¸¯ÅͰ¡ °¡Áú ¼ö ÀÖ´Â ÃÖ°í ·¹º§..
#endif // __VER >= 17
#else // __3RD_LEGEND16
#define MAX_LEGEND_LEVEL 149
#define MAX_CHARACTER_LEVEL 149 // ±âÁ¸ MAX_LEVEL À» ´ëü..ij¸¯ÅͰ¡ °¡Áú ¼ö ÀÖ´Â ÃÖ°í ·¹º§..
#endif // __3RD_LEGEND16
|
|
|
10/01/2011, 18:06
|
#127
|
elite*gold: 20
Join Date: Apr 2009
Posts: 804
Received Thanks: 829
|
MoverParam.cpp.
Such nach der Funktion und da muss
Code:
else if( IsHero() && (m_nLevel > MAX_LEGEND_LEVEL ) )
stehen.
Da musste das adden.
|
|
|
10/01/2011, 18:10
|
#128
|
elite*gold: 0
Join Date: Mar 2010
Posts: 1,489
Received Thanks: 701
|
Dieser teil ?
Code:
BOOL CMover::AddExperience( EXPINTEGER nExp, BOOL bFirstCall, BOOL bMultiPly, BOOL bMonster )
{
#ifdef __VTN_TIMELIMIT
// mulcom BEGIN100315 º£Æ®³² ½Ã°£ Á¦ÇÑ
if( ::GetLanguage() == LANG_VTN )
{
if( IsPlayer() && m_nAccountPlayTime != -1 )
{
if( m_nAccountPlayTime < 0 || m_nAccountPlayTime > MIN( 300 ) )
{
nExp = 0;
}
else if( m_nAccountPlayTime >= MIN( 180 ) && m_nAccountPlayTime <= MIN( 300 ) )
{
nExp = (EXPINTEGER)( nExp * 0.5f );
}
}
}
|
|
|
10/01/2011, 18:11
|
#129
|
elite*gold: 20
Join Date: Apr 2009
Posts: 804
Received Thanks: 829
|
Jo poste mal die ganze Funktion, is einfacher als zu erklären.
|
|
|
10/01/2011, 18:12
|
#130
|
elite*gold: 0
Join Date: Mar 2010
Posts: 1,489
Received Thanks: 701
|
Quote:
Originally Posted by Pumbaaa
Jo poste mal die ganze Funktion, is einfacher als zu erklären.
|
Von wo bis wo geht die Funktion? xD ... sry ich hab nur VB und AutoIt kentnisse, C++ is da was ganz anderes
|
|
|
10/01/2011, 18:13
|
#131
|
elite*gold: 20
Join Date: Apr 2009
Posts: 804
Received Thanks: 829
|
von { bis }
|
|
|
10/01/2011, 18:15
|
#132
|
elite*gold: 0
Join Date: Mar 2010
Posts: 1,489
Received Thanks: 701
|
Ich hoffe das stimmt, da sind tausende { }
Code:
{
#ifdef __VTN_TIMELIMIT
// mulcom BEGIN100315 º£Æ®³² ½Ã°£ Á¦ÇÑ
if( ::GetLanguage() == LANG_VTN )
{
if( IsPlayer() && m_nAccountPlayTime != -1 )
{
if( m_nAccountPlayTime < 0 || m_nAccountPlayTime > MIN( 300 ) )
{
nExp = 0;
}
else if( m_nAccountPlayTime >= MIN( 180 ) && m_nAccountPlayTime <= MIN( 300 ) )
{
nExp = (EXPINTEGER)( nExp * 0.5f );
}
}
}
// mulcom END100315 º£Æ®³² ½Ã°£ Á¦ÇÑ
#endif // __VTN_TIMELIMIT
if( nExp <= 0 ) // nExp°¡ ¸¶À̳ʽºÀ̰ųª 0À̸é ó¸®ÇÒÇÊ¿ä ¾øÀ½.
return FALSE;
if( m_nHitPoint <= 0 )
return FALSE;
#if __VER < 15 // __GUILD_HOUSE
if( bFirstCall && bMultiPly )
{
nExp *= GetExpFactor();
}
#endif // __GUILD_HOUSE
#ifdef __INTERNALSERVER
TRACE( "EXP = %I64d\n", nExp );
#endif // __INTERNALSERVER
#if __VER >= 14 // __ANGEL_EXPERIENCE
#ifdef __3RD_LEGEND16
if( IsMaster() || IsHero() || IsLegendHero())
#else // __3RD_LEGEND16
if( IsMaster() || IsHero() )
#endif // __3RD_LEGEND16
nExp /= 2;
#if __VER >= 15 // __GUILD_HOUSE
if( bFirstCall && bMultiPly )
{
#ifdef __WORLDSERVER
EXPINTEGER nAddExp = static_cast<CUser*>( this )->GetAddExpAfterApplyRestPoint( nExp );
nExp = (EXPINTEGER)( nExp * GetExpFactor() );
nExp += nAddExp;
#endif // __WORLDSERVER
}
#endif // __GUILD_HOUSE
#if __VER >= 8 //__CSC_VER8_5
if( bFirstCall && HasBuffByIk3( IK3_ANGEL_BUFF ) )
{
int nAngel = 100;
#ifdef __BUFF_1107
IBuff* pBuff = m_buffs.GetBuffByIk3( IK3_ANGEL_BUFF );
WORD wId = ( pBuff? pBuff->GetId(): 0 );
#else // __BUFF_1107
LPSKILLINFLUENCE lpSkillIn = m_SkillState.GetItemBuf( IK3_ANGEL_BUFF );
WORD wId = ( lpSkillIn? lpSkillIn->wID: 0 );
#endif // __BUFF_1107
if( wId > 0 )
{
ItemProp* pItemProp = prj.GetItemProp( wId );
if( pItemProp )
nAngel = (int)( (float)pItemProp->nAdjParamVal1 );
}
if( nAngel <= 0 || 100 < nAngel )
nAngel = 100;
// ˬ: ÀüÁ÷ Àü ¿£Á© ¹öÇÁ Ȱ¼ºÈ* ÈÄ ÀüÁ÷ÇÏ´Â °æ¿ì, ÇÊ¿ä ¼öÄ¡°¡ ³Ê¹« Å©´Ù.
EXPINTEGER nMaxAngelExp = prj.m_aExpCharacter[m_nAngelLevel].nExp1 / 100 * nAngel;
if( m_nAngelExp < nMaxAngelExp )
{
nExp /= 2;
m_nAngelExp += nExp;
#ifdef __WORLDSERVER
#ifdef __ANGEL_LOG
#ifdef __EXP_ANGELEXP_LOG
int nAngelExpPercent = (int)( m_nAngelExp * 100 / nMaxAngelExp );
int nNextAngelExpLog = (int)(((CUser*)this)->m_nAngelExpLog / 20 + 1) * 20;
if( nAngelExpPercent >= nNextAngelExpLog )
{
((CUser*)this)->m_nAngelExpLog = nAngelExpPercent;
ItemProp* pItemProp = prj.GetItemProp( wId );
if( pItemProp )
{
LogItemInfo aLogItem;
aLogItem.Action = "&";
aLogItem.SendName = ((CUser*)this)->GetName();
aLogItem.RecvName = "ANGEL_EXP_LOG";
aLogItem.WorldId = ((CUser*)this)->GetWorld()->GetID();
aLogItem.Gold = aLogItem.Gold2 = ((CUser*)this)->GetGold();
//aLogItem.ItemName = pItemProp->szName;
_stprintf( aLogItem.szItemName, "%d", pItemProp->dwID );
aLogItem.Gold_1 = (DWORD)( m_nAngelExp );
g_DPSrvr.OnLogItem( aLogItem );
}
}
|
|
|
10/01/2011, 18:16
|
#133
|
elite*gold: 20
Join Date: Apr 2009
Posts: 804
Received Thanks: 829
|
Nein, stimmt nicht, bis zur nächsten Funktion, also BOOL CMover:  ecExperience...
|
|
|
10/01/2011, 18:18
|
#134
|
elite*gold: 0
Join Date: Mar 2010
Posts: 1,489
Received Thanks: 701
|
So, jetzt aber
Code:
BOOL CMover::AddExperience( EXPINTEGER nExp, BOOL bFirstCall, BOOL bMultiPly, BOOL bMonster )
{
#ifdef __VTN_TIMELIMIT
// mulcom BEGIN100315 º£Æ®³² ½Ã°£ Á¦ÇÑ
if( ::GetLanguage() == LANG_VTN )
{
if( IsPlayer() && m_nAccountPlayTime != -1 )
{
if( m_nAccountPlayTime < 0 || m_nAccountPlayTime > MIN( 300 ) )
{
nExp = 0;
}
else if( m_nAccountPlayTime >= MIN( 180 ) && m_nAccountPlayTime <= MIN( 300 ) )
{
nExp = (EXPINTEGER)( nExp * 0.5f );
}
}
}
// mulcom END100315 º£Æ®³² ½Ã°£ Á¦ÇÑ
#endif // __VTN_TIMELIMIT
if( nExp <= 0 ) // nExp°¡ ¸¶À̳ʽºÀ̰ųª 0À̸é ó¸®ÇÒÇÊ¿ä ¾øÀ½.
return FALSE;
if( m_nHitPoint <= 0 )
return FALSE;
#if __VER < 15 // __GUILD_HOUSE
if( bFirstCall && bMultiPly )
{
nExp *= GetExpFactor();
}
#endif // __GUILD_HOUSE
#ifdef __INTERNALSERVER
TRACE( "EXP = %I64d\n", nExp );
#endif // __INTERNALSERVER
#if __VER >= 14 // __ANGEL_EXPERIENCE
#ifdef __3RD_LEGEND16
if( IsMaster() || IsHero() || IsLegendHero())
#else // __3RD_LEGEND16
if( IsMaster() || IsHero() )
#endif // __3RD_LEGEND16
nExp /= 2;
#if __VER >= 15 // __GUILD_HOUSE
if( bFirstCall && bMultiPly )
{
#ifdef __WORLDSERVER
EXPINTEGER nAddExp = static_cast<CUser*>( this )->GetAddExpAfterApplyRestPoint( nExp );
nExp = (EXPINTEGER)( nExp * GetExpFactor() );
nExp += nAddExp;
#endif // __WORLDSERVER
}
#endif // __GUILD_HOUSE
#if __VER >= 8 //__CSC_VER8_5
if( bFirstCall && HasBuffByIk3( IK3_ANGEL_BUFF ) )
{
int nAngel = 100;
#ifdef __BUFF_1107
IBuff* pBuff = m_buffs.GetBuffByIk3( IK3_ANGEL_BUFF );
WORD wId = ( pBuff? pBuff->GetId(): 0 );
#else // __BUFF_1107
LPSKILLINFLUENCE lpSkillIn = m_SkillState.GetItemBuf( IK3_ANGEL_BUFF );
WORD wId = ( lpSkillIn? lpSkillIn->wID: 0 );
#endif // __BUFF_1107
if( wId > 0 )
{
ItemProp* pItemProp = prj.GetItemProp( wId );
if( pItemProp )
nAngel = (int)( (float)pItemProp->nAdjParamVal1 );
}
if( nAngel <= 0 || 100 < nAngel )
nAngel = 100;
// ˬ: ÀüÁ÷ Àü ¿£Á© ¹öÇÁ Ȱ¼ºÈ* ÈÄ ÀüÁ÷ÇÏ´Â °æ¿ì, ÇÊ¿ä ¼öÄ¡°¡ ³Ê¹« Å©´Ù.
EXPINTEGER nMaxAngelExp = prj.m_aExpCharacter[m_nAngelLevel].nExp1 / 100 * nAngel;
if( m_nAngelExp < nMaxAngelExp )
{
nExp /= 2;
m_nAngelExp += nExp;
#ifdef __WORLDSERVER
#ifdef __ANGEL_LOG
#ifdef __EXP_ANGELEXP_LOG
int nAngelExpPercent = (int)( m_nAngelExp * 100 / nMaxAngelExp );
int nNextAngelExpLog = (int)(((CUser*)this)->m_nAngelExpLog / 20 + 1) * 20;
if( nAngelExpPercent >= nNextAngelExpLog )
{
((CUser*)this)->m_nAngelExpLog = nAngelExpPercent;
ItemProp* pItemProp = prj.GetItemProp( wId );
if( pItemProp )
{
LogItemInfo aLogItem;
aLogItem.Action = "&";
aLogItem.SendName = ((CUser*)this)->GetName();
aLogItem.RecvName = "ANGEL_EXP_LOG";
aLogItem.WorldId = ((CUser*)this)->GetWorld()->GetID();
aLogItem.Gold = aLogItem.Gold2 = ((CUser*)this)->GetGold();
//aLogItem.ItemName = pItemProp->szName;
_stprintf( aLogItem.szItemName, "%d", pItemProp->dwID );
aLogItem.Gold_1 = (DWORD)( m_nAngelExp );
g_DPSrvr.OnLogItem( aLogItem );
}
}
#endif // __EXP_ANGELEXP_LOG
#endif // __ANGEL_LOG
BOOL bAngelComplete = FALSE;
if( m_nAngelExp > nMaxAngelExp )
{
m_nAngelExp = nMaxAngelExp;
bAngelComplete = TRUE;
}
((CUser*)this)->AddAngelInfo( bAngelComplete );
#endif // __WORLDSERVER
}
}
#endif // __CSC_VER8_5
#endif // __ANGEL_EXPERIENCE
if( IsBaseJob() )
{
if( m_nLevel >= MAX_JOB_LEVEL )
{
m_nExp1 = 0;
return TRUE;
}
}
else if( IsExpert() )
{
if( m_nLevel >= MAX_JOB_LEVEL + MAX_EXP_LEVEL )
{
m_nExp1 = 0;
return TRUE;
}
}
else if( IsPro() )
{
if( m_nLevel > MAX_GENERAL_LEVEL )
{
m_nLevel = MAX_GENERAL_LEVEL;
return TRUE;
}
}
#if __VER >= 10 // __LEGEND // 10Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
else if(IsMaster())
{
if( m_nLevel > MAX_GENERAL_LEVEL )
{
m_nLevel = MAX_GENERAL_LEVEL;
return TRUE;
}
#if __VER < 14 // __ANGEL_EXPERIENCE
else
{
nExp /= 2;
}
#endif // __ANGEL_EXPERIENCE
}
else if(IsHero())
{
#ifdef __3RD_LEGEND16
if( m_nLevel >= MAX_LEGEND_LEVEL )
#else // __3RD_LEGEND16
if( m_nLevel > MAX_LEGEND_LEVEL )
#endif // __3RD_LEGEND16
{
m_nLevel = MAX_LEGEND_LEVEL;
return TRUE;
}
#if __VER < 14 // __ANGEL_EXPERIENCE
else
{
nExp /= 2;
}
#endif // __ANGEL_EXPERIENCE
}
#endif //__LEGEND // 10Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
#ifdef __3RD_LEGEND16
else if( IsLegendHero() )
{
if( m_nLevel > MAX_3RD_LEGEND_LEVEL )
{
m_nLevel = MAX_3RD_LEGEND_LEVEL;
return TRUE;
}
}
#endif // __3RD_LEGEND16
int nLevelbuf = m_nLevel;
int nNextLevel = m_nLevel + 1;
#if __VER < 14 // __ANGEL_EXPERIENCE
#if __VER >= 8 //__CSC_VER8_5
if( bFirstCall && HasBuffByIk3( IK3_ANGEL_BUFF ) )
{
int nAngel = 100;
#ifdef __BUFF_1107
IBuff* pBuff = m_buffs.GetBuffByIk3( IK3_ANGEL_BUFF );
WORD wId = ( pBuff? pBuff->GetId(): 0 );
#else // __BUFF_1107
LPSKILLINFLUENCE lpSkillIn = m_SkillState.GetItemBuf( IK3_ANGEL_BUFF );
WORD wId = ( lpSkillIn? lpSkillIn->wID: 0 );
#endif // __BUFF_1107
if( wId > 0 )
{
ItemProp* pItemProp = prj.GetItemProp( wId );
if( pItemProp )
nAngel = (float)pItemProp->nAdjParamVal1;
}
if( nAngel <= 0 || 100 < nAngel )
nAngel = 100;
// ˬ: ÀüÁ÷ Àü ¿£Á© ¹öÇÁ Ȱ¼ºÈ* ÈÄ ÀüÁ÷ÇÏ´Â °æ¿ì, ÇÊ¿ä ¼öÄ¡°¡ ³Ê¹« Å©´Ù.
EXPINTEGER nMaxAngelExp = prj.m_aExpCharacter[m_nAngelLevel].nExp1 / 100 * nAngel;
if( m_nAngelExp < nMaxAngelExp )
{
nExp /= 2;
m_nAngelExp += nExp;
#ifdef __WORLDSERVER
#ifdef __ANGEL_LOG
#ifdef __EXP_ANGELEXP_LOG
int nAngelExpPercent = m_nAngelExp * 100 / nMaxAngelExp;
int nNextAngelExpLog = (int)(((CUser*)this)->m_nAngelExpLog / 20 + 1) * 20;
if( nAngelExpPercent >= nNextAngelExpLog )
{
((CUser*)this)->m_nAngelExpLog = nAngelExpPercent;
ItemProp* pItemProp = prj.GetItemProp( wId );
if( pItemProp )
{
LogItemInfo aLogItem;
aLogItem.Action = "&";
aLogItem.SendName = ((CUser*)this)->GetName();
aLogItem.RecvName = "ANGEL_EXP_LOG";
aLogItem.WorldId = ((CUser*)this)->GetWorld()->GetID();
aLogItem.Gold = aLogItem.Gold2 = ((CUser*)this)->GetGold();
//aLogItem.ItemName = pItemProp->szName;
_stprintf( aLogItem.szItemName, "%d", pItemProp->dwID );
aLogItem.Gold_1 = m_nAngelExp;
g_DPSrvr.OnLogItem( aLogItem );
}
}
#endif // __EXP_ANGELEXP_LOG
#endif // __ANGEL_LOG
BOOL bAngelComplete = FALSE;
if( m_nAngelExp > nMaxAngelExp )
{
m_nAngelExp = nMaxAngelExp;
bAngelComplete = TRUE;
}
((CUser*)this)->AddAngelInfo( bAngelComplete );
#endif // __WORLDSERVER
}
}
#endif // __CSC_VER8_5
#endif // __ANGEL_EXPERIENCE
m_nExp1 += nExp; // pxp¿Í °ü°è¾øÀÌ exp°¡ Áõ°¡. ¸¸½¦ÀÌ!
if( bFirstCall )
{
#if __VER >= 8 // __S8_PK
#ifdef __WORLDSERVER
if( bMonster && IsChaotic() )
{
m_dwPKExp = (DWORD)( m_dwPKExp + nExp );
DWORD dwPropensity = GetPKPropensity(); // undorflow
int nLevelPKExp = prj.GetLevelExp( GetLevel() ); // Levelº° °¨¼Ò °æÇèÄ¡
if( nLevelPKExp != 0 )
{
int nSubExp = m_dwPKExp / nLevelPKExp;
if( nSubExp )
{
SetPKPropensity( GetPKPropensity() - ( m_dwPKExp / nLevelPKExp ) );
if( dwPropensity <= GetPKPropensity() )
SetPKPropensity( 0 );
m_dwPKExp %= nLevelPKExp;
g_UserMng.AddPKPropensity( this );
g_dpDBClient.SendLogPkPvp( this, NULL, 0, 'P' );
}
}
}
#endif // __WORLDSERVER
#endif // __VER >= 8 // __S8_PK
}
if( m_nExp1 >= prj.m_aExpCharacter[nNextLevel].nExp1 ) // ·¹º§¾÷
{
#ifdef __3RD_LEGEND16
if( IsLegendHero() && ( nNextLevel > MAX_3RD_LEGEND_LEVEL ) )
{
m_nLevel = MAX_3RD_LEGEND_LEVEL;
m_nExp1 = (prj.m_aExpCharacter[nNextLevel].nExp1 - 1);
return FALSE;
}
else if( !IsHero() && !IsLegendHero() && nNextLevel > MAX_GENERAL_LEVEL )
{
m_nLevel = MAX_GENERAL_LEVEL;
m_nExp1 = (prj.m_aExpCharacter[nNextLevel].nExp1 - 1);
return FALSE;
}
#else // __3RD_LEGEND16
#if __VER >= 10 // __LEGEND // 10Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
if( IsHero() && ( nNextLevel > MAX_LEGEND_LEVEL ) )
{
m_nLevel = MAX_LEGEND_LEVEL;
m_nExp1 = (prj.m_aExpCharacter[nNextLevel].nExp1 - 1);
return FALSE;
}
else if( !IsHero() && nNextLevel > MAX_GENERAL_LEVEL )
{
m_nLevel = MAX_GENERAL_LEVEL;
m_nExp1 = (prj.m_aExpCharacter[nNextLevel].nExp1 - 1);
return FALSE;
}
#else //__LEGEND // 10Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
if( nNextLevel > MAX_GENERAL_LEVEL )
{
m_nLevel = MAX_GENERAL_LEVEL;
m_nExp1 = (prj.m_aExpCharacter[nNextLevel].nExp1 - 1);
return FALSE;
}
#endif //__LEGEND // 10Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
#endif // __3RD_LEGEND16
EXPINTEGER nExptmp;
// BOOL f = FALSE;
{
m_nRemainGP += prj.m_aExpCharacter[ nNextLevel ].dwLPPoint;
#if __VER >= 10 // __LEGEND // 10Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
#ifdef __3RD_LEGEND16
if( IsMaster() || IsHero() || IsLegendHero() )
#else // __3RD_LEGEND16
if( IsMaster() || IsHero() )
#endif // __3RD_LEGEND16
m_nRemainGP++;
#endif //__LEGEND // 10Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
nExptmp = m_nExp1 - prj.m_aExpCharacter[nNextLevel].nExp1;
#if __VER >= 8
m_nExp1 = 0;
#else // __VER >= 8
m_nExp1 = m_nDeathExp = 0;
#endif // __VER >= 8
m_nLevel = nNextLevel;
// if( m_nLevel > m_nDeathLevel )
// f = TRUE;
BOOL bLevelUp = TRUE;
if( IsBaseJob() && m_nLevel > MAX_JOB_LEVEL )
{
m_nLevel = MAX_JOB_LEVEL;
bLevelUp = FALSE;
}
else if( IsExpert() && m_nLevel > MAX_JOB_LEVEL + MAX_EXP_LEVEL )
{
m_nLevel = MAX_JOB_LEVEL + MAX_EXP_LEVEL;
bLevelUp = FALSE;
}
else if( IsPro() && m_nLevel > MAX_GENERAL_LEVEL )
{
m_nLevel = MAX_GENERAL_LEVEL;
bLevelUp = FALSE;
m_nExp1 = (prj.m_aExpCharacter[nNextLevel].nExp1 - 1);
nExptmp = 0;
return FALSE;
}
#if __VER >= 10 // __LEGEND // 10Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
else if( IsMaster() && m_nLevel > MAX_GENERAL_LEVEL )
{
m_nLevel = MAX_GENERAL_LEVEL;
bLevelUp = FALSE;
m_nExp1 = (prj.m_aExpCharacter[nNextLevel].nExp1 - 1);
nExptmp = 0;
return FALSE;
}
#ifdef __3RD_LEGEND16
else if( IsHero() && (m_nLevel > MAX_LEGEND_LEVEL ) )
{
m_nLevel = MAX_LEGEND_LEVEL;
bLevelUp = FALSE;
}
else if( IsLegendHero() && m_nLevel > MAX_3RD_LEGEND_LEVEL )
{
m_nLevel = MAX_GENERAL_LEVEL;
bLevelUp = FALSE;
m_nExp1 = (prj.m_aExpCharacter[nNextLevel].nExp1 - 1);
nExptmp = 0;
return FALSE;
}
#else // __3RD_LEGEND16
else if( IsHero() && (m_nLevel > MAX_LEGEND_LEVEL ) )
{
m_nLevel = MAX_LEGEND_LEVEL;
bLevelUp = FALSE;
m_nExp1 = (prj.m_aExpCharacter[nNextLevel].nExp1 - 1);
nExptmp = 0;
return FALSE;
}
#endif // __3RD_LEGEND16
#endif //__LEGEND // 10Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
if( bLevelUp )
{
m_nHitPoint = GetMaxHitPoint();
m_nManaPoint = GetMaxManaPoint();
m_nFatiguePoint = GetMaxFatiguePoint();
SetJobLevel( m_nLevel, m_nJob );
#if __VER >= 8
if( m_nDeathLevel >= m_nLevel )
{
m_nRemainGP -= prj.m_aExpCharacter[ nNextLevel ].dwLPPoint;
#if __VER >= 10 // __LEGEND // 10Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
#ifdef __3RD_LEGEND16
if( IsMaster() || IsHero() || IsLegendHero() )
#else // __3RD_LEGEND16
if( IsMaster() || IsHero() )
#endif // __3RD_LEGEND16
m_nRemainGP--;
#endif //__LEGEND // 10Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
}
#endif // __VER >= 8
#ifdef __WORLDSERVER
if( m_nDeathLevel < m_nLevel )
{
int nGetPoint = ((GetLevel() - 1) / 20) + 2;
#if __VER >= 10 // __LEGEND // 10Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
if( IsMaster() || IsHero() )
SetMasterSkillPointUp();
else
#endif //__LEGEND // 10Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
{
AddSkillPoint( nGetPoint );
g_dpDBClient.SendLogSkillPoint( LOG_SKILLPOINT_GET_HUNT, nGetPoint, this, NULL );
#ifdef __S_NEW_SKILL_2
g_dpDBClient.SaveSkill( (CUser*)this );
#endif // __S_NEW_SKILL_2
}
#ifdef __S_RECOMMEND_EVE
if( g_eLocal.GetState( EVE_RECOMMEND ) && IsPlayer() )
{
g_dpDBClient.SendRecommend( (CUser*)this );
}
#endif // __S_RECOMMEND_EVE
#ifdef __EXP_ANGELEXP_LOG
((CUser*)this)->m_nExpLog = 0;
#endif // __EXP_ANGELEXP_LOG
#ifdef __EVENTLUA_GIFT
prj.m_EventLua.SetLevelUpGift( (CUser*)this, m_nLevel );
#endif // __EVENTLUA_GIFT
#if __VER >= 15 // __CAMPUS
CCampusHelper::GetInstance()->SetLevelUpReward( (CUser*)this );
#endif // __CAMPUS
}
#endif // __WORLDSERVER
}
else
{
m_nRemainGP -= prj.m_aExpCharacter[ nNextLevel ].dwLPPoint;
#if __VER >= 10 // __LEGEND // 10Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
#ifdef __3RD_LEGEND16
if( IsMaster() || IsHero() || IsLegendHero() )
#else // __3RD_LEGEND16
if( IsMaster() || IsHero() )
#endif // __3RD_LEGEND16
m_nRemainGP--;
#endif //__LEGEND // 10Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
nExptmp = m_nExp1 = 0;
}
// ·¹º§ 20ÀÌ µÇ´Â¼ø°£ ºñÇà·¹º§Àº 1À̵ȴÙ.
if( m_nLevel == 20 )
SetFlightLv( 1 );
#ifdef __CLIENT
if( m_pActMover && ( m_pActMover->IsState( OBJSTA_STAND ) || m_pActMover->IsState( OBJSTA_STAND2 )) )
SetMotion( MTI_LEVELUP, ANILOOP_1PLAY, MOP_FIXED );
CreateSfx(g_Neuz.m_pd3dDevice,XI_GEN_LEVEL_UP01,GetPos(),GetId());
PlayMusic( BGM_IN_LEVELUP );
#endif // __CLIENT
}
if( nExptmp > 0 )
AddExperience( nExptmp, FALSE, bMultiPly );
return TRUE;
}
return FALSE;
}
// °æÇèÄ¡¸¦ nExp¸¸Å* ±ð´Â´Ù. ·¾´Ù¿îµµ µÈ´Ù.
// bExp2Clear : pxp¸¦ 0À¸·Î ÇÒ°ÇÁö ¸»°ÇÁö.
// bLvDown : ·¹º§´Ù¿îÀ» ÇÒ°ÇÁö ¸»°ÇÁö.
BOOL CMover::DecExperience( EXPINTEGER nExp, BOOL bExp2Clear, BOOL bLvDown )
{
if( nExp < 0 ) // °ªÀº Ç×»ó ¾ç¼ö·Î¸¸ Áà¾ß ÇÑ´Ù.
return FALSE;
int nPrevLevel = m_nLevel - 1;
if( nPrevLevel < 1 ) // ·¹º§ 1ÀÌÇϷδ ´õÀÌ»ó ³»·Á°¡Áö ¾ÊÀ½.
return FALSE;
m_nExp1 -= nExp; // nExp¸¸Å* °æÇèÄ¡¸¦ ±ðÀ½. Exp2´Â 0%·Î.
#if __VER < 8 // 8Â÷ ½ºÅ³°æÇèÄ¡´Ù¿îº¯°æ
m_nSkillExp -= nExp;
#endif // __VER >= 8
if( m_nExp1 < 0 )
{
if( bLvDown ) // ·¾´Ù¿îÀÌ µÇ´Â »óȲ.
{
#if __VER >= 8
--m_nLevel;
m_nExp1 = (EXPINTEGER)(prj.m_aExpCharacter[m_nLevel+1].nExp1 + m_nExp1 );
#endif // __VER >= 8
return TRUE; // ·¾´Ù¿î µÆÀ¸¸é TRUE¸®ÅÏ
}
else
{
m_nExp1 = 0;
#ifdef __WORLDSERVER
g_dpDBClient.SendLogLevelUp( this, 7 );
#endif // __WORLDSERVER
}
}
return FALSE;
}
// ÇöÀç ·¹º§ÀÇ ÃÖ´ë°æÇèÄ¡ÀÇ %·Î °æÇèÄ¡ Ç϶ô
// ex) fPercent = 0.2f; // 20%
|
|
|
10/01/2011, 18:20
|
#135
|
elite*gold: 20
Join Date: Apr 2009
Posts: 804
Received Thanks: 829
|
Code:
else if( IsHero() && (m_nLevel > MAX_LEGEND_LEVEL ) )
{
m_nLevel = MAX_LEGEND_LEVEL;
bLevelUp = FALSE;
}
in
Code:
else if( IsHero() && (m_nLevel > MAX_LEGEND_LEVEL ) )
{
m_nLevel = MAX_LEGEND_LEVEL;
bLevelUp = FALSE;
m_nExp1 = (prj.m_aExpCharacter[nNextLevel].nExp1 - 1);
nExptmp = 0;
return FALSE;
}
ändern.
|
|
|
 |
|
Similar Threads
|
[Release] OneClick Jobchange NPC's mit 3rd Job
02/07/2018 - Flyff PServer Guides & Releases - 102 Replies
.
|
[Release] 1-Click-Jobchange Item's
11/07/2015 - Flyff PServer Guides & Releases - 61 Replies
Hallo Elitepvper's,
heute release ich eine Methode, die nicht vielen bekannt ist, eine 1-Click-Jobchange zu machen.
Was ist enthalten?
Es sind nur die ersten 4 Job's enthalten, sprich; Acrobat, Mercenary, Magician & Assist auf Level 16!
Wie läuft die Jobchange ab und wie funktioniert es?
Wenn man Level 2 erreicht hat, bekommt man 4 Items in's Inventar gelegt.
Man muss eines davon doppelklicken, um die jeweilige Klasse zu sein.
|
[V14-Release] One Klick Jobchange
05/08/2011 - Flyff PServer Guides & Releases - 17 Replies
Hallo zusammen,
Ich wollte hier meinen One Klick Jobchange releasen.
Kp ob den jemand braucht, kp ob der release sinn macht, aber ich hab eh nix mehr mit pserver zu tun vondaher release ich das einfach mal.
Hier ist die propquest.inc:
V14:
Klick mich zum downloaden
|
[RELEASE] AlisamiX JobChange NPC's
09/02/2010 - Flyff PServer Guides & Releases - 97 Replies
Also! Ich veröffentliche hiermit meine beiden Jobchange-NPCs! Viel Spaß! Anleitung in der RAR datei!
KEINE Bugs
ErsterJobchange auf 15, zweiter auf 60!
Nur die jeweiligen Secondclasses verfügbar!
Sehr auffällig, da Shade Model!
Auffällig, da in Flarismitte!
Deutsch!
NEUE V0.2! Elementor gefixt!
|
[RELEASE] JobChange NPC's
09/28/2008 - Flyff PServer Guides & Releases - 22 Replies
Anleitung:
Entpacken.
Die Ordner in den Server Ordner kopieren und die Flyff Datenbank mit der beiliegenden SQL Datei batchen.
Screenshots:
http://www.imagecrate.de/upload/69777_flyff00039. jpg
http://www.imagecrate.de/upload/51521_flyff00040. jpg
Download:
RapidShare: Easy Filehosting
|
All times are GMT +1. The time now is 15:49.
|
|