Quick Joba Change by Pummaaa

05/28/2012 12:47 TIVenom2010#1
mmm..

in the guide here:[Only registered and activated users can see links. Click Here To Register...]

in mover.cpp
Code:
		if( nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
		{
			CItemElem itemelem;
			itemelem.m_nItemNum = 1;
			itemelem.m_bCharged = TRUE;
			BYTE nID;

			if( nJob == JOB_MENTALIST_HERO )
				itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
			if( nJob == JOB_FORCEMASTER_HERO )
				itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
i change it to
Code:
		if( nJob == JOB_MERCENARY || nJob == JOB_ACROBAT || nJob == JOB_ASSIST || nJob == JOB_MAGICIAN || nJob == JOB_MENTALIST_HERO || nJob == JOB_FORCEMASTER_HERO )
		{
			CItemElem itemelem;
			itemelem.m_nItemNum = 1;
			itemelem.m_bCharged = TRUE;
			BYTE nID;

			if( nJob == JOB_MERCENARY )
				itemelem.m_dwItemId = II_CHR_SYS_SCR_ACTIVITION;
			if( nJob == JOB_MERCENARY )
				itemelem.m_dwItemId = II_CHR_FOO_COO_BULLHAMS;
			if( nJob == JOB_MERCENARY )
				itemelem.m_dwItemId = II_SYS_SYS_SCR_RECCURENCE_LINK;
			if( nJob == JOB_MERCENARY )
				itemelem.m_dwItemId = II_CHR_POT_DRI_VITALX;
			if( nJob == JOB_ACROBAT )
				itemelem.m_dwItemId = II_CHR_SYS_SCR_ACTIVITION;
			if( nJob == JOB_ACROBAT )
				itemelem.m_dwItemId = II_CHR_FOO_COO_BULLHAMS;
			if( nJob == JOB_ACROBAT )
				itemelem.m_dwItemId = II_SYS_SYS_SCR_RECCURENCE_LINK;
			if( nJob == JOB_ACROBAT )
				itemelem.m_dwItemId = II_CHR_POT_DRI_VITALX;
			if( nJob == JOB_ASSIST )
				itemelem.m_dwItemId = II_CHR_SYS_SCR_ACTIVITION;
			if( nJob == JOB_ASSIST )
				itemelem.m_dwItemId = II_CHR_FOO_COO_BULLHAMS;
			if( nJob == JOB_ASSIST )
				itemelem.m_dwItemId = II_SYS_SYS_SCR_RECCURENCE_LINK;
			if( nJob == JOB_ASSIST )
				itemelem.m_dwItemId = II_CHR_REF_REF_HOLD;
			if( nJob == JOB_MAGICIAN )
				itemelem.m_dwItemId = II_CHR_SYS_SCR_ACTIVITION;
			if( nJob == JOB_MAGICIAN )
				itemelem.m_dwItemId = II_CHR_FOO_COO_BULLHAMS;
			if( nJob == JOB_MAGICIAN )
				itemelem.m_dwItemId = II_SYS_SYS_SCR_RECCURENCE_LINK;
			if( nJob == JOB_MAGICIAN )
				itemelem.m_dwItemId = II_CHR_REF_REF_HOLD;
			if( nJob == JOB_MENTALIST_HERO )
				itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;
			if( nJob == JOB_FORCEMASTER_HERO )
				itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
but in mercenary and acrobat i only get the vital drink and in assist and magician i only get refresher hold.. seem like it is skipping all the 3 items that comes first and only giving the last one on the list..

can anyone tell me how can i get all the 4 items..

should i make it like this?
Code:
			if( nJob == JOB_MERCENARY )
				itemelem.m_dwItemId = II_CHR_SYS_SCR_ACTIVITION;
				itemelem.m_dwItemId = II_CHR_FOO_COO_BULLHAMS;
				itemelem.m_dwItemId = II_SYS_SYS_SCR_RECCURENCE_LINK;
				itemelem.m_dwItemId = II_CHR_POT_DRI_VITALX;
advance tnx..
05/28/2012 13:33 Deda94#2
i think you can do it like this
05/28/2012 13:37 TIVenom2010#3
like what sir? mmm..

already test this..
Code:
			if( nJob == JOB_MERCENARY )
				itemelem.m_dwItemId = II_CHR_SYS_SCR_ACTIVITION;
				itemelem.m_dwItemId = II_CHR_FOO_COO_BULLHAMS;
				itemelem.m_dwItemId = II_SYS_SYS_SCR_RECCURENCE_LINK;
				itemelem.m_dwItemId = II_CHR_POT_DRI_VITALX;
not working.. :( istill getting only the vital drink..
05/28/2012 13:47 Patrel#4
Das liegt daran das man in C++ bei einem if der dannach nur eine Zeile ausführt die Blockzeichen weglassen kann, wenn man aber mehr als nur 1 Zeile hat muss man sie einfügen, lange rede kurzer Sinn, versuch es mal so:

Try it like this:

Code:
if( nJob == JOB_MERCENARY )
{
				itemelem.m_dwItemId = II_CHR_SYS_SCR_ACTIVITION;
				itemelem.m_dwItemId = II_CHR_FOO_COO_BULLHAMS;
				itemelem.m_dwItemId = II_SYS_SYS_SCR_RECCURENCE_LINK;
				itemelem.m_dwItemId = II_CHR_POT_DRI_VITALX;
}
05/28/2012 13:49 TIVenom2010#5
oh tnx for d reply.. i will try it sir..
05/28/2012 14:19 Brutalon#6
Its the full source? Cause you never close } your blocks
05/28/2012 14:59 TIVenom2010#7
nope its not the full..

it should be like this in the end..
Code:
			if( nJob == JOB_FORCEMASTER_HERO )
				itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
			if( nJob == JOB_MENTALIST_HERO )
				itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;

			( ( CUser*)this)->CreateItem( &itemelem, &nID );
		}
		g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
		( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
		( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
		/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
		( (CUser*)this )->AddTaskBar();*/
		( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
Quote:
Originally Posted by Patrel View Post
Das liegt daran das man in C++ bei einem if der dannach nur eine Zeile ausführt die Blockzeichen weglassen kann, wenn man aber mehr als nur 1 Zeile hat muss man sie einfügen, lange rede kurzer Sinn, versuch es mal so:

Try it like this:

Code:
if( nJob == JOB_MERCENARY )
{
				itemelem.m_dwItemId = II_CHR_SYS_SCR_ACTIVITION;
				itemelem.m_dwItemId = II_CHR_FOO_COO_BULLHAMS;
				itemelem.m_dwItemId = II_SYS_SYS_SCR_RECCURENCE_LINK;
				itemelem.m_dwItemId = II_CHR_POT_DRI_VITALX;
}
still not working sir..
still the same getting d last item..
05/28/2012 16:00 redpoiz#8
Try this bro' :)

Quote:
if( nJob == JOB_MERCENARY )
{
itemelem.m_dwItemId = II_CHR_SYS_SCR_ACTIVITION && II_CHR_FOO_COO_BULLHAMS && II_SYS_SYS_SCR_RECCURENCE_LINK && II_CHR_POT_DRI_VITALX;
}
05/28/2012 16:03 TIVenom2010#9
Quote:
Originally Posted by redpoiz View Post
Try this bro' :)
ok sir tnx.. hope this will work..
05/28/2012 16:14 redpoiz#10
Quote:
itemelem.m_dwItemId = II_CHR_SYS_SCR_ACTIVITION;
itemelem.m_dwItemId = II_CHR_FOO_COO_BULLHAMS;
itemelem.m_dwItemId = II_SYS_SYS_SCR_RECCURENCE_LINK;
itemelem.m_dwItemId = II_CHR_POT_DRI_VITALX;
This thing doesn't work because this code give to you the first item, after this this code replace the first with the scnd item, and the scnd with the 3 item because you have put a "=" :3
05/28/2012 16:18 TIVenom2010#11
Code:
if( nJob == JOB_MERCENARY )
{
itemelem.m_dwItemId = II_CHR_SYS_SCR_ACTIVITION && II_CHR_FOO_COO_BULLHAMS && II_SYS_SYS_SCR_RECCURENCE_LINK && II_CHR_POT_DRI_VITALX;
}
still not working and now im not getting any item sir.. maybe i should try to remove the {}?
05/28/2012 17:13 redpoiz#12
yes try this
05/28/2012 17:47 TIVenom2010#13
tnx for ypur help sir but its not working.. its not giving me items.. maybe i should add else if..

anyone can help me pls.?

mmm.. anyone.?
05/29/2012 12:00 Pumaaa#14
I know the answer but it's not my code and i won't fuss around with copying the sht together..

Just paste the complete function and i'll give you the solution.
05/29/2012 15:34 TIVenom2010#15
u mean this sir?

Code:
		if( nJob == JOB_MERCENARY || nJob == JOB_ACROBAT || nJob == JOB_ASSIST || nJob == JOB_MAGICIAN || nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
		{
			CItemElem itemelem;
			itemelem.m_nItemNum = 1;
			itemelem.m_bCharged = TRUE;
			BYTE nID;

			if( nJob == JOB_MERCENARY || nJob == JOB_ACROBAT )
				itemelem.m_dwItemId = II_CHR_SYS_SCR_ACTIVITION;
				itemelem.m_dwItemId = II_CHR_FOO_COO_BULLHAMS;
				itemelem.m_dwItemId = II_SYS_SYS_SCR_RECCURENCE_LINK;
				itemelem.m_dwItemId = II_CHR_POT_DRI_VITALX;

			if( nJob == JOB_ASSIST || nJob == JOB_MAGICIAN )
				itemelem.m_dwItemId = II_CHR_SYS_SCR_ACTIVITION;
				itemelem.m_dwItemId = II_CHR_FOO_COO_BULLHAMS;
				itemelem.m_dwItemId = II_SYS_SYS_SCR_RECCURENCE_LINK;
				itemelem.m_dwItemId = II_CHR_REF_REF_HOLD;

			if( nJob == JOB_FORCEMASTER_HERO )
				itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
			if( nJob == JOB_MENTALIST_HERO )
				itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;

			( ( CUser*)this)->CreateItem( &itemelem, &nID );
		}
		g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
		( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
		( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
		/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
		( (CUser*)this )->AddTaskBar();*/
		( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
or the full one..

Code:
#ifdef __QUICKJOBCHANGE
void CMover::InitLevelPumbaaa( int nJob, LONG nLevel, BOOL bGamma )
{
#ifdef __WORLDSERVER
	// ¿î¿µÀÚ ¸í·ÉÀ¸·Î ·¹º§¾÷ Çϴ°÷ÀÓ
	MoverProp* pProp = GetProp();
	if( pProp )
	{
		if( nJob > 0 && nJob < MAX_LEGEND_HERO )
		{
			AddChangeJob( nJob );
		}else{
			return;
		}
		int nPoint = 0;
		if( m_nJob == JOB_MERCENARY )
			nPoint += 40;
		else if( m_nJob == JOB_ACROBAT )
			nPoint += 50;
		else if( m_nJob == JOB_ASSIST )
			nPoint += 60;
		else if( m_nJob == JOB_MAGICIAN )
			nPoint += 90;
		else if( m_nJob ==  JOB_KNIGHT || m_nJob ==  JOB_BLADE )
			nPoint += 120;
		else if( m_nJob ==  JOB_JESTER || m_nJob ==  JOB_RANGER )
			nPoint += 150;
		else if( m_nJob ==  JOB_RINGMASTER )
			nPoint += 160;
		else if( m_nJob ==  JOB_BILLPOSTER || m_nJob ==  JOB_PSYCHIKEEPER )
			nPoint += 180;
		else if( m_nJob ==  JOB_ELEMENTOR )
			nPoint += 390;
		else if( nJob ==  JOB_LORDTEMPLER_HERO || nJob ==  JOB_STORMBLADE_HERO )
			nPoint += 120;
		else if( nJob ==  JOB_WINDLURKER_HERO || nJob ==  JOB_CRACKSHOOTER_HERO )
			nPoint += 150;
		else if( nJob ==  JOB_FLORIST_HERO )
			nPoint += 160;
		else if( nJob ==  JOB_FORCEMASTER_HERO || nJob ==  JOB_MENTALIST_HERO )
			nPoint += 180;
		else if( nJob ==  JOB_ELEMENTORLORD_HERO )
			nPoint += 390;

		AddSkillPoint( nPoint );
		m_nLevel = nLevel;

		SetJobLevel( nLevel, nJob );
		m_nDeathLevel = nLevel;
#if __VER >= 10 // __LEGEND	//	10Â÷ Àü½Â½Ã½ºÅÛ	Neuz, World, Trans
		if(IsMaster())
		{
			int dwTmpSkLevel = 1;//60, 72, 84, 96, 108
			if( nLevel > 59 && nLevel < 72 )
				dwTmpSkLevel = 1;
			else if( nLevel > 71 && nLevel < 84 )
				dwTmpSkLevel = 2;
			else if( nLevel > 83 && nLevel < 96 )
				dwTmpSkLevel = 3;
			else if( nLevel > 95 && nLevel < 108 )
				dwTmpSkLevel = 4;
			else if( nLevel > 107 && nLevel < 120 )
				dwTmpSkLevel = 5;
			for( int i = 0; i < MAX_SKILL_JOB; i++ ) 
			{				
				LPSKILL lpSkill = &(m_aJobSkill[i]);
				if( lpSkill && lpSkill->dwSkill != NULL_ID )
				{
					ItemProp* pSkillProp    = prj.GetSkillProp( lpSkill->dwSkill );			
					if( pSkillProp == NULL )
						continue;
					if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
						continue;
					lpSkill->dwLevel = dwTmpSkLevel;
				}
			}
		}
		else if(IsHero())
		{
			for( int i = 0; i < MAX_SKILL_JOB; i++ ) 
			{				
				LPSKILL lpSkill = &(m_aJobSkill[i]);
				if( lpSkill && lpSkill->dwSkill != NULL_ID )
				{
					ItemProp* pSkillProp    = prj.GetSkillProp( lpSkill->dwSkill );			
					if( pSkillProp == NULL )
						continue;
					if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
						continue;
					lpSkill->dwLevel = 5;
				}
			}
		}
		else if(IsLegendHero())
		{
			for( int i = 0; i < MAX_SKILL_JOB; i++ ) 
			{				
				LPSKILL lpSkill = &(m_aJobSkill[i]);
				if( lpSkill && lpSkill->dwSkill != NULL_ID )
				{
					ItemProp* pSkillProp    = prj.GetSkillProp( lpSkill->dwSkill );			
					if( pSkillProp == NULL )
						continue;
					if( pSkillProp->dwItemKind1 != JTYPE_MASTER)
						continue;
					lpSkill->dwLevel = 5;
				}
			}
		}
#endif	// 	__LEGEND	//	10Â÷ Àü½Â½Ã½ºÅÛ	Neuz, World, Trans
		if( bGamma )
		{
			m_nExp1 = 0;
		}
		
		( (CUser*)this )->AddSetChangeJob( nJob );
		g_UserMng.AddNearSetChangeJob( this, nJob, &((CUser*)this)->m_aJobSkill[MAX_JOB_SKILL] );
		

#if __VER >= 11 // __SYS_PLAYER_DATA
		g_dpDBClient.SendUpdatePlayerData( (CUser*)this );
#else	// __SYS_PLAYER_DATA
		g_DPCoreClient.SendPartyMemberJob( (CUser*)this );
		g_DPCoreClient.SendFriendChangeJob( (CUser*)this );
		if( m_idGuild != 0 )
			g_DPCoreClient.SendGuildChangeJobLevel( (CUser*)this );
#endif	// __SYS_PLAYER_DATA
		SetHitPoint( GetMaxHitPoint() );
		SetManaPoint( GetMaxManaPoint() );
		SetFatiguePoint( GetMaxFatiguePoint() );
		if( nJob >= 1 && nJob <= 4 )
		{
			m_nStr = m_nSta = m_nDex = m_nInt = 15;
			m_nRemainGP = 28;
		}
		if( nJob >= MAX_PROFESSIONAL && nJob < MAX_MASTER )
		{
			m_nRemainGP = ( m_nSta - 15 ) + ( m_nStr - 15 ) + ( m_nDex - 15 ) + ( m_nInt - 15 ) + m_nRemainGP;
			m_nStr = m_nSta = m_nDex = m_nInt = 15;
		}
		if( nJob == JOB_MERCENARY || nJob == JOB_ACROBAT || nJob == JOB_ASSIST || nJob == JOB_MAGICIAN || nJob == JOB_FORCEMASTER_HERO || nJob == JOB_MENTALIST_HERO )
		{
			CItemElem itemelem;
			itemelem.m_nItemNum = 1;
			itemelem.m_bCharged = TRUE;
			BYTE nID;

			if( nJob == JOB_MERCENARY || nJob == JOB_ACROBAT )
				itemelem.m_dwItemId = II_CHR_SYS_SCR_ACTIVITION;
				itemelem.m_dwItemId = II_CHR_FOO_COO_BULLHAMS;
				itemelem.m_dwItemId = II_SYS_SYS_SCR_RECCURENCE_LINK;
				itemelem.m_dwItemId = II_CHR_POT_DRI_VITALX;

			if( nJob == JOB_ASSIST || nJob == JOB_MAGICIAN )
				itemelem.m_dwItemId = II_CHR_SYS_SCR_ACTIVITION;
				itemelem.m_dwItemId = II_CHR_FOO_COO_BULLHAMS;
				itemelem.m_dwItemId = II_SYS_SYS_SCR_RECCURENCE_LINK;
				itemelem.m_dwItemId = II_CHR_REF_REF_HOLD;

			if( nJob == JOB_FORCEMASTER_HERO )
				itemelem.m_dwItemId = II_ARM_ARM_SHI_ZEMBATO;
			if( nJob == JOB_MENTALIST_HERO )
				itemelem.m_dwItemId = II_WEA_BOOK_BOKROMAIN;

			( ( CUser*)this)->CreateItem( &itemelem, &nID );
		}
		g_UserMng.AddSetLevel( this, (WORD)m_nLevel );
		( (CUser*)this )->AddSetGrowthLearningPoint( m_nRemainGP );
		( (CUser*)this )->AddSetExperience( GetExp1(), (WORD)m_nLevel, m_nSkillPoint, m_nSkillLevel );
		/*( (CUser*)this )->m_playTaskBar.InitTaskBarShorcutKind( SHORTCUT_SKILL );
		( (CUser*)this )->AddTaskBar();*/
		( (CUser*)this )->AddSetState( m_nStr, m_nSta, m_nDex, m_nInt, m_nRemainGP );
#if __VER >= 13 // __HONORABLE_TITLE			// ´ÞÀÎ
		((CUser*)this)->CheckHonorStat();
		((CUser*)this)->AddHonorListAck();
		g_UserMng.AddHonorTitleChange( this, m_nHonor);
#endif	// __HONORABLE_TITLE			// ´ÞÀÎ
	}
#endif // __WORLDSERVER
}
#endif //__QUICKJOBCHANGE