[Source Release]Quick Jobchange

10/01/2011 14:10 Yakuzai.#121
Wann soll denn bei dir die 3rd Jobchange kommen ? 130 oder 129 ?
10/01/2011 14:38 TheDextrox#122
150 ^^
10/01/2011 14:51 Pumbaaa#123
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 View Post
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 TheDextrox#124
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 Pumbaaa#125
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 TheDextrox#126
Quote:
Originally Posted by Pumbaaa View Post
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 :p

Meine defineJob.h :
10/01/2011 18:06 Pumbaaa#127
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 TheDextrox#128
Dieser teil ?
10/01/2011 18:11 Pumbaaa#129
Jo poste mal die ganze Funktion, is einfacher als zu erklären.
10/01/2011 18:12 TheDextrox#130
Quote:
Originally Posted by Pumbaaa View Post
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 Pumbaaa#131
von { bis }
10/01/2011 18:15 TheDextrox#132
Ich hoffe das stimmt, da sind tausende { } :D

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 Pumbaaa#133
Nein, stimmt nicht, bis zur nächsten Funktion, also BOOL CMover::DecExperience...
10/01/2011 18:18 TheDextrox#134
So, jetzt aber :D

10/01/2011 18:20 Pumbaaa#135
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.