[Help] Make Baruna Items Awakeable

Results 1 to 7 of 7
  1. #1
    Proficient Member dean310 is offline
    MemberRank
    Aug 2010 Join Date
    175Posts

    [Help] Make Baruna Items Awakeable

    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
    Spoiler:


    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
    Spoiler:


    #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
    Spoiler:

    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


  2. #2
    Proficient Member dean310 is offline
    MemberRank
    Aug 2010 Join Date
    175Posts

    [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

  3. #3
    Member cffazot is offline
    MemberRank
    Mar 2012 Join Date
    53Posts

    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", "sunkist" );
    	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 by cffazot; 20-04-12 at 06:33 PM.

  4. #4
    [R8]ℓσℓ32 caja is offline
    MemberRank
    Oct 2008 Join Date
    Here!Location
    1,502Posts

    Re: [Help] Make Baruna Items Awakeable

    CRandomOptionProperty::GetRandomOptionKind

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

  5. #5
    Proficient Member dean310 is offline
    MemberRank
    Aug 2010 Join Date
    175Posts

    Re: [Help] Make Baruna Items Awakeable

    Quote Originally Posted by caja View Post
    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

    It made all my items awakened by Blessing of the Goddess

  6. #6
    [R8]ℓσℓ32 caja is offline
    MemberRank
    Oct 2008 Join Date
    Here!Location
    1,502Posts

    Re: [Help] Make Baruna Items Awakeable

    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;
    }

  7. #7
    Proficient Member dean310 is offline
    MemberRank
    Aug 2010 Join Date
    175Posts

    Re: [Help] Make Baruna Items Awakeable

    Quote Originally Posted by caja View Post
    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
    But I've already figured out to leave the "return static_cast<int>( eAwakening );" Thanks



Advertisement