[Help] Make Baruna Items Awakeable

Status
Not open for further replies.
Junior Spellweaver
Joined
Aug 29, 2010
Messages
160
Reaction score
3
I found some codes in the snippets in the tutorial section. But my Baruna code doesn't match with the one in the snippets. My baruna source is ripped from Dits Source. I tried modifying it but I end up all weapons cannot be awaken (All weapons do not show "Awakening Available").

Here are the codes from my source which I think is similar from the snippets I found. :

randomoption.cpp
int CRandomOptionProperty::GetRandomOptionKind( CItemElem* pItemElem )
{
ItemProp* pProp = pItemElem->GetProp();
switch( pProp->dwParts )
{
case PARTS_UPPER_BODY:
case PARTS_RWEAPON:
case PARTS_SHIELD:
#if __VER >= 12 // __J12_0
// °¢¼º °¡´É ÆÄÃ÷ Ãß°¡
case PARTS_HAND: // ¼Õ
case PARTS_FOOT: // ¹ß
case PARTS_CAP: // ¸Ó¸®
#endif // __J12_0
#ifdef __NEW_ITEM_VARUNA
{
if( pItemElem->GetProp()->IsBaruna() )
return -1;
else
return static_cast<int>( eAwakening );
}
#endif // __NEW_ITEM_VARUNA
case PARTS_CLOTH:
case PARTS_CLOAK:
#if __VER >= 12 // __J12_0
case PARTS_HAT: // °Ñ¿Ê ¸Ó¸®
case PARTS_GLOVE: // °Ñ¿Ê ¼Õ
case PARTS_BOOTS: // °Ñ¿Ê ¹ß
#endif // __J12_0
return static_cast<int>( eBlessing );
#if __VER >= 12 // __PET_0519
default:
{
// C±Þ ÀÌ»óÀÇ ½Ã½ºÅÛ ÆêÀΰ¡?
if( pProp->dwItemKind3 == IK3_EGG && pItemElem->m_pPet && pItemElem->m_pPet->GetLevel() >= PL_C )
return static_cast<int>( eSystemPet );
// ¸ÔÆêÀΰ¡?
else if( pProp->dwItemKind3 == IK3_PET )
return static_cast<int>( eEatPet );
break;
}
#endif // __PET_0519
}
return -1;
}

WndManager.cpp
#if __VER >= 9 //__CSC_VER9_1
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 __NEW_ITEM_VARUNA
else if( pItemElem->GetProp()->dwReferStat1 >= BARUNA_D && pItemElem->GetProp()->dwReferStat1 <= BARUNA_S )
dwColorbuf = dwItemColor[g_Option.m_nToolTipText].dwName4;
#endif // __NEW_ITEM_VARUNA
#else //__CSC_VER9_1
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;

DPSrvr.cpp
void CDPSrvr::OnDoUseItemTarget( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize)
{
DWORD dwMaterial, dwTarget;
ar >> dwMaterial >> dwTarget;
CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );
if( IsValidObj( pUser ) )
{
CItemElem* pMaterial = (CItemElem*)pUser->GetItemId( dwMaterial );
CItemElem* pTarget = (CItemElem*)pUser->GetItemId( dwTarget );
if( !IsUsableItem( pMaterial ) || !IsUsableItem( pTarget ) )
return;
if( pUser->m_Inventory.IsEquip( dwTarget ) )
{
pUser->AddDefinedText( TID_GAME_EQUIPPUT );
return;
}
BOOL b = FALSE;
switch( pMaterial->m_dwItemId )
{
case II_SYS_SYS_QUE_PETRESURRECTION02_S:
case II_SYS_SYS_QUE_PETRESURRECTION02_A:
case II_SYS_SYS_QUE_PETRESURRECTION02_B:
{
CPet* pPet = pTarget->m_pPet;
if( !pPet || !pTarget->IsFlag( CItemElem::expired ) )
{
pUser->AddDefinedText( TID_GAME_PETRESURRECTION_WRONG_TARGET_01 );
}
else
{
BYTE nLevel = pPet->GetLevel();
if( ( nLevel == PL_B && pMaterial->m_dwItemId != II_SYS_SYS_QUE_PETRESURRECTION02_B )
|| ( nLevel == PL_A && pMaterial->m_dwItemId != II_SYS_SYS_QUE_PETRESURRECTION02_A )
|| ( nLevel == PL_S && pMaterial->m_dwItemId != II_SYS_SYS_QUE_PETRESURRECTION02_S )
|| ( nLevel < PL_B )
)
{
pUser->AddDefinedText( TID_GAME_PETRESURRECTION_WRONG_TARGET_02 );
}
else
{
PutItemLog( pUser, "r", "::PetResurrection", pTarget );

pTarget->ResetFlag( CItemElem::expired );
pUser->UpdateItem( (BYTE)( pTarget->m_dwObjId ), UI_FLAG, MAKELONG( pTarget->m_dwObjIndex, pTarget->m_byFlag ) );
pPet->SetLife( 0 );
pPet->SetEnergy( pPet->GetMaxEnergy() / 2 );
pUser->AddPetState( pTarget->m_dwObjId, pPet->GetLife(), pPet->GetEnergy(), pPet->GetExp() );
pUser->AddDefinedText( TID_GAME_PETRESURRECTION_SUCCESS );
b = TRUE;
}
}
break;
}
case II_SYS_SYS_SCR_AWAKECANCEL:
case II_SYS_SYS_SCR_AWAKECANCEL02:
b = DoUseItemTarget_InitializeRandomOption( pUser, pTarget, CRandomOptionProperty::eAwakening,
TID_GAME_AWAKECANCEL_INFO, TID_GAME_AWAKECANCEL,
"r", "::AwakeCancel" );
break;
case II_SYS_SYS_SCR_AWAKE:
#ifdef __NEW_ITEM_VARUNA
if( pTarget->GetProp()->IsBaruna() )
{
b = DoUseItemTarget_GenRandomOption( pUser, pTarget, CRandomOptionProperty::eAwakening,
0, TID_MMI_ERRORSENCHANT_BARUNA, TID_GAME_AWAKE_OR_BLESSEDNESS01,
"r", "::Awake" );
}else
#endif // __NEW_ITEM_VARUNA
{
b = DoUseItemTarget_GenRandomOption( pUser, pTarget, CRandomOptionProperty::eAwakening,
0, TID_GAME_INVALID_TARGET_ITEM, TID_GAME_AWAKE_OR_BLESSEDNESS01,
"r", "::Awake" );
}
break;
case II_SYS_SYS_SCR_BLESSEDNESS:
case II_SYS_SYS_SCR_BLESSEDNESS02:
b = DoUseItemTarget_GenRandomOption( pUser, pTarget, CRandomOptionProperty::eBlessing,
0, TID_GAME_USE_BLESSEDNESS_INFO, TID_GAME_BLESSEDNESS_INVALID_ITEM,
"r", "::Blessedness" );
break;
#if __VER >= 12 // __PET_0519
case II_SYS_SYS_SCR_EATPETAWAKE: // ¸ÔÆê °¢¼º
b = DoUseItemTarget_GenRandomOption( pUser, pTarget, CRandomOptionProperty::eEatPet,
TID_GAME_PETAWAKE_S00, TID_GAME_PETAWAKE_E00, TID_GAME_PETAWAKE_E00,
"r", "EATPETAWAKE" );
break;
case II_SYS_SYS_SCR_PETAWAKE: // ½Ã½ºÅÛ Æê °¢¼º
b = DoUseItemTarget_GenRandomOption( pUser, pTarget, CRandomOptionProperty::eSystemPet,
TID_GAME_PETAWAKE_S00, TID_GAME_PETAWAKE_E00, TID_GAME_PETAWAKE_E00,
"r", "PETAWAKE" );
break;
case II_SYS_SYS_SCR_PETAWAKECANCEL: // ½Ã½ºÅÛ Æê °¢¼º Ãë¼Ò
b = DoUseItemTarget_InitializeRandomOption( pUser, pTarget, CRandomOptionProperty::eSystemPet,
TID_GAME_PETAWAKECANCEL_S00, TID_GAME_PETAWAKECANCEL_E00,
"r", "PETAWAKECANCEL" );
break;
#endif // __PET_0519
case II_SYS_SYS_SCR_LEVELDOWN01:
case II_SYS_SYS_SCR_LEVELDOWN02:
b = DoUseItemTarget_ItemLevelDown( pUser, pMaterial, pTarget );
break;
default:
break;
}
if( b )
{
pUser->AddPlaySound( SND_INF_UPGRADESUCCESS );
if( pUser->IsMode( TRANSPARENT_MODE ) == 0 )
g_UserMng.AddCreateSfxObj( pUser, XI_INT_SUCCESS, pUser->GetPos().x, pUser->GetPos().y, pUser->GetPos().z );

PutItemLog( pUser, "u", "OnDoUseItemTarget", pMaterial );

pUser->UpdateItem( (BYTE)( pMaterial->m_dwObjId ), UI_NUM, pMaterial->m_nItemNum - 1 );
}
}
}
#endif // __SYS_IDENTIFY

Please help me thanks :thumbup:
 
[Help] Edit Patcher's Sunkist

Good day, I have a few questions:

1. How to edit Patcher's sunkist using hexeditor?
2. I am using Blessed Source's neuz, i changed it on my salt. i.e. "dean310". How can I link both? Do i have to make the patcher and the neuz sunkist both the same in order to link them ?

Thanks :thumbup:
 
Re: [Help] Edit Patcher's Sunkist

I don't know how to do it using hex editor, but if I were you, I would just edit it in the patcher's source and recompile it.

Here's how to do it:

1. Navigate to your source root folder
2. Open the PatchClient folder (that's the patcher source)
3. Open BetaPatchClient.cpp and look for this:
Code:
void CBetaPatchClientApp::RunClient()
{
	PROCESS_INFORMATION pi;
	STARTUPINFO si;
	memset( &si, 0, sizeof( STARTUPINFO ) );
	si.cb = sizeof( STARTUPINFO );

	TCHAR szBuffer[2048];
	int nCount = _snprintf( szBuffer, 2047, "Neuz.exe %s", "[COLOR="Red"]sunkist[/COLOR]" );
	if( nCount <= 0 )
		return;

	if( CreateProcess( NULL, szBuffer, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ) )
	{
		if( AfxGetMainWnd() )
			AfxGetMainWnd()->PostMessage( WM_CLOSE );
	}
	else
	{
		char szError[256];
		wsprintf( szError, "ErrorNumber: %d Neuz.exe Run Error", GetLastError() );
		AfxMessageBox( szError );
	}				
}
4. I've highlighted the sunkist string in red. Change it to whatever you like.
5. Open BetaPatchClient.sln and rebuild it.

However, if you so really want to do it using hex editor, I guess you could just CTRL+F for a "Text String" value of sunkist. Remember though, using hex editor, your new value cannot be any longer than "sunkist" (7 characters)
 
Last edited:
CRandomOptionProperty::GetRandomOptionKind

Remove this
#ifdef __NEW_ITEM_VARUNA
{
if( pItemElem->GetProp()->IsBaruna() )
return -1;
else
return static_cast<int>( eAwakening );
}
#endif // __NEW_ITEM_VARUNA

I'll try it later Thaanks :thumbup:

It made all my items awakened by Blessing of the Goddess
 
Code:
int CRandomOptionProperty::GetRandomOptionKind( CItemElem* pItemElem )
{
ItemProp* pProp = pItemElem->GetProp();
switch( pProp->dwParts )
{
case PARTS_UPPER_BODY:
case PARTS_RWEAPON:
case PARTS_SHIELD:
#if __VER >= 12 // __J12_0
// °¢¼º °¡´É ÆÄÃ÷ Ãß°¡
case PARTS_HAND: // ¼Õ
case PARTS_FOOT: // ¹ß
case PARTS_CAP: // ¸Ó¸®
#endif // __J12_0
return static_cast<int>( eAwakening );

case PARTS_CLOTH:
case PARTS_CLOAK:
#if __VER >= 12 // __J12_0
case PARTS_HAT: // °Ñ¿Ê ¸Ó¸®
case PARTS_GLOVE: // °Ñ¿Ê ¼Õ
case PARTS_BOOTS: // °Ñ¿Ê ¹ß
#endif // __J12_0
return static_cast<int>( eBlessing );
#if __VER >= 12 // __PET_0519
default:
{
// C±Þ ÀÌ»óÀÇ ½Ã½ºÅÛ ÆêÀΰ¡?
if( pProp->dwItemKind3 == IK3_EGG && pItemElem->m_pPet && pItemElem->m_pPet->GetLevel() >= PL_C )
return static_cast<int>( eSystemPet );
// ¸ÔÆêÀΰ¡?
else if( pProp->dwItemKind3 == IK3_PET )
return static_cast<int>( eEatPet );
break;
}
#endif // __PET_0519
}
return -1;
}
 
Code:
int CRandomOptionProperty::GetRandomOptionKind( CItemElem* pItemElem )
{
ItemProp* pProp = pItemElem->GetProp();
switch( pProp->dwParts )
{
case PARTS_UPPER_BODY:
case PARTS_RWEAPON:
case PARTS_SHIELD:
#if __VER >= 12 // __J12_0
// °¢¼º °¡´É ÆÄÃ÷ Ãß°¡
case PARTS_HAND: // ¼Õ
case PARTS_FOOT: // ¹ß
case PARTS_CAP: // ¸Ó¸®
#endif // __J12_0
return static_cast<int>( eAwakening );

case PARTS_CLOTH:
case PARTS_CLOAK:
#if __VER >= 12 // __J12_0
case PARTS_HAT: // °Ñ¿Ê ¸Ó¸®
case PARTS_GLOVE: // °Ñ¿Ê ¼Õ
case PARTS_BOOTS: // °Ñ¿Ê ¹ß
#endif // __J12_0
return static_cast<int>( eBlessing );
#if __VER >= 12 // __PET_0519
default:
{
// C±Þ ÀÌ»óÀÇ ½Ã½ºÅÛ ÆêÀΰ¡?
if( pProp->dwItemKind3 == IK3_EGG && pItemElem->m_pPet && pItemElem->m_pPet->GetLevel() >= PL_C )
return static_cast<int>( eSystemPet );
// ¸ÔÆêÀΰ¡?
else if( pProp->dwItemKind3 == IK3_PET )
return static_cast<int>( eEatPet );
break;
}
#endif // __PET_0519
}
return -1;
}
Thanks for the effort on posting the code :love:
But I've already figured out to leave the "return static_cast<int>( eAwakening );" Thanks :thumbup:
 
Status
Not open for further replies.
Back