Quote:
Originally Posted by raventh1984
Yes you need to merge the data.
However you also can copy the s.txt file directly into your Client dir. So it loads that first instead of the one in the .res file.
Ok i have tested the Goh files my self i dont have any problems with upgrading accessory.
Do you have v19 params? if so show me these snippets
Code:
BYTE CItemUpgrade::OnSmeltSafety( CUser* pUser, CItemElem* pItemMain, CItemElem* pItemMaterial, CItemElem* pItemProtScr, CItemElem* pItemSmeltScr )
And
Code:
BYTE CItemUpgrade::SmeltSafetyAccessory(CUser* pUser, CItemElem* pItemMain, CItemElem* pItemMaterial, CItemElem* pItemProtScr )
Also from your spec_item the row of the moonstone.
II_GEN_MAT_MOONSTONE
|
Yup I think i have a v19 param.
I think this is what you need from the ItemUpgrade.cpp?
#if __VER >= 14 // __SMELT_SAFETY
BYTE CItemUpgrade::OnSmeltSafety( CUser* pUser, CItemElem* pItemMain, CItemElem* pItemMaterial, CItemElem* pItemProtScr, CItemElem* pItemSmeltScr )
{
#ifdef __NEW_ITEM_VARUNA
if( pItemMain->GetProp()->dwReferStat1 >= BARUNA_D && pItemMain->GetProp()->dwReferStat1 <= BARUNA_S )
{
return 0;
}
#endif // __NEW_ITEM_VARUNA
// 재료에 따라 분기
switch( pItemMaterial->GetProp()->dwItemKind3 )
{
// 오리칼쿰일때
case IK3_ENCHANT:
#if __VER >= 19
case IK3_SMELT_ULTIMATE_MATERIAL:
case IK3_SMELT_GENERAL_MATERIAL:
#endif
// 일반제련(일반 or 얼터멋웨폰인지 재검사)
return SmeltSafetyNormal( pUser, pItemMain, pItemMaterial, pItemProtScr, pItemSmeltScr );
// 문스톤일때
case IK3_PIERDICE:
#if __VER >= 19
case IK3_SMELT_ACCESSORY_MATERIAL:
#endif
// 악세서리인가
if( pItemMain->IsAccessory() )
return SmeltSafetyAccessory( pUser, pItemMain, pItemMaterial, pItemProtScr );
// 피어싱인가
else if( pItemMain->IsPierceAble( NULL_ID, TRUE ) )
return SmeltSafetyPiercingSize( pUser, pItemMain, pItemMaterial, pItemProtScr );
#if __VER >= 15 // __15_5TH_ELEMENTAL_SMELT_SAFETY
// 속성카드 일때
case IK3_ELECARD:
return SmeltSafetyAttribute( pUser, pItemMain, pItemMaterial, pItemProtScr, pItemSmeltScr );
#endif // __15_5TH_ELEMENTAL_SMELT_SAFETY
default:
break;
}
return 0;
}
BYTE CItemUpgrade::SmeltSafetyNormal( CUser* pUser, CItemElem* pItemMain, CItemElem* pItemMaterial, CItemElem* pItemProtScr, CItemElem* pItemSmeltScr )
{
// 오리칼쿰인가, 빛나는 오리칼쿰인가
switch( pItemMaterial->GetProp()->dwID )
{
// 오리칼쿰일때 일반제련
case II_GEN_MAT_ORICHALCUM01:
case II_GEN_MAT_ORICHALCUM01_1:
return SmeltSafetyGeneral( pUser, pItemMain, pItemMaterial, pItemProtScr, pItemSmeltScr );
// 빛나는 오리칼쿰일때 얼터멋웨폰 제련
case II_GEN_MAT_ORICHALCUM02:
return prj.m_UltimateWeapon.SmeltSafetyUltimate( pUser, pItemMain, pItemMaterial, pItemProtScr );
default:
break;
}
return 0;
}
BYTE CItemUpgrade::SmeltSafetyGeneral( CUser* pUser, CItemElem* pItemMain, CItemElem* pItemMaterial, CItemElem* pItemProtScr, CItemElem* pItemSmeltScr )
{
// 제련가능한 아이템이 아닐경우 리턴
if( !CItemElem::IsDiceRefineryAble(pItemMain->GetProp()) )
{
//pUser->AddDefinedText( TID_GAME_NOTEQUALITEM );
return 0;
}
// 얼터멋웨폰 이거나 일반보호의 두루마리가 아닐경우 리턴
if( pItemMain->GetProp()->dwReferStat1 == WEAPON_ULTIMATE || pItemProtScr->GetProp()->dwID != II_SYS_SYS_SCR_SMELPROT )
{
//pUser->AddDefinedText( TID_GAME_NOTEQUALITEM );
return 0;
}
#ifdef __NEW_ITEM_VARUNA
if( pItemMain->GetProp()->dwReferStat1 >= BARUNA_D && pItemMain->GetProp()->dwReferStat1 <= BARUNA_S )
{
return 0;
}
#endif // __NEW_ITEM_VARUNA
BYTE CItemUpgrade::SmeltSafetyAccessory(CUser* pUser, CItemElem* pItemMain, CItemElem* pItemMaterial, CItemElem* pItemProtScr )
{
// 재료가 문스톤인가?
if( pItemMaterial->GetProp()->dwID != II_GEN_MAT_MOONSTONE && pItemMaterial->GetProp()->dwID != II_GEN_MAT_MOONSTONE_1 )
{
//pUser->AddDefinedText( TID_GAME_NOTEQUALITEM );
return 0;
}
// 악세서리 보호의 두루마리가 아닐경우 리턴
if( pItemProtScr->GetProp()->dwID != II_SYS_SYS_SCR_SMELPROT4 )
{
//pUser->AddDefinedText( TID_GAME_NOTEQUALITEM );
return 0;
}
// 제련수치가 max치를 넘었을때 리턴
if( pItemMain->GetAbilityOption() >= MAX_AAO ) // 20
{
//pUser->AddDefinedText( TID_GAME_ACCESSORY_MAX_AAO );
return 3;
}
// log
LogItemInfo aLogItem;
aLogItem.SendName = pUser->GetName();
aLogItem.RecvName = "UPGRADEITEM_SMELTSAFETY";
aLogItem.WorldId = pUser->GetWorld()->GetID();
aLogItem.Gold = pUser->GetGold();
aLogItem.Gold2 = pUser->GetGold();
aLogItem.Action = "N";
g_DPSrvr.OnLogItem( aLogItem, pItemMaterial, pItemMaterial->m_nItemNum );
pUser->RemoveItem( (BYTE)( pItemMaterial->m_dwObjId ), 1 );
// 액세서리 보호의 두루마리 로그 남길것
ItemProp* pItemProp = pItemProtScr->GetProp();
if( pItemProp )
{
g_dpDBClient.SendLogSMItemUse( "1", pUser, pItemProtScr, pItemProp );
g_dpDBClient.SendLogSMItemUse( "2", pUser, NULL, pItemProp );
}
pUser->RemoveItem( (BYTE)( pItemProtScr->m_dwObjId ), 1 );
// 제련 확률
DWORD dwProbability = CAccessoryProperty::GetInstance()->GetProbability( pItemMain->GetAbilityOption() );
if( xRandom( 10000 ) > dwProbability ) // 실패
{
pUser->AddPlaySound( SND_INF_UPGRADEFAIL );
if( pUser->IsMode( TRANSPARENT_MODE ) == 0 )
g_UserMng.AddCreateSfxObj( (CMover *)pUser, XI_INT_FAIL, pUser->GetPos().x, pUser->GetPos().y, pUser->GetPos().z );
aLogItem.Action = "L";
g_DPSrvr.OnLogItem( aLogItem, pItemMain, pItemMain->m_nItemNum );
return 2;
}
else // 성공
{
pUser->AddPlaySound( SND_INF_UPGRADESUCCESS );
if( pUser->IsMode( TRANSPARENT_MODE ) == 0)
g_UserMng.AddCreateSfxObj( (CMover *)pUser, XI_INT_SUCCESS, pUser->GetPos().x, pUser->GetPos().y, pUser->GetPos().z);
pUser->UpdateItem( (BYTE)pItemMain->m_dwObjId, UI_AO, pItemMain->GetAbilityOption()+1 );
aLogItem.Action = "H";
g_DPSrvr.OnLogItem( aLogItem, pItemMain, pItemMain->m_nItemNum );
return 1;
}
return 0;
}
BYTE CItemUpgrade::SmeltSafetyPiercingSize(CUser* pUser, CItemElem* pItemMain, CItemElem* pItemMaterial, CItemElem* pItemProtScr )
{
// 재료가 문스톤인가?
if( pItemMaterial->GetProp()->dwID != II_GEN_MAT_MOONSTONE && pItemMaterial->GetProp()->dwID != II_GEN_MAT_MOONSTONE_1 )
{
//pUser->AddDefinedText( TID_GAME_NOTEQUALITEM );
return 0;
}
// 피어싱 보호의 두루마리인가
if( pItemProtScr->m_dwItemId != II_SYS_SYS_SCR_PIEPROT )
{
//pUser->AddDefinedText( TID_SBEVE_NOTUSEITEM ); // 상용아이템이 아니면 불가능
return 0;
}
#ifdef __NEW_ITEM_VARUNA
if( pItemMain->GetProp()->dwReferStat1 >= BARUNA_D && pItemMain->GetProp()->dwReferStat1 <= BARUNA_S )
{
return 0;
}
#endif // __NEW_ITEM_VARUNA
Spec_item
7 II_GEN_MAT_MOONSTONE IDS_PROPITEM_TXT_008066 1 9999 IK1_GENERAL IK2_MATERIAL IK3_PIERDICE = TRUE = = 1000000 = = = = = = = 0 = = 4 50 = 4 = = = = = _NONE = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 0 0 0 0 0 = = = SND_ITEM_DROPDING1 = = = = = = = = = 1 = = = """Itm_GenMatMoonstone.dds""" 0 """""" IDS_PROPITEM_TXT_008067 1 300 0 0 1 0 0 0 0 0 2 = = = = = = = = = = 1 1 1 1 1 0
Mdlyna
"GenMatMoonstone" II_GEN_MAT_MOONSTONE MODELTYPE_MESH "" 0 MD_NEAR 0 1.0f 0 1 ATEX_NONE 1
I noticed that some of "#if __VER >= 19" has been close by putting
" /* " so I've tried to search for more " #if __VER >= 19 " then open it I got the problem Undeclared Identifier for " IK3_SMELT_ULTIMATE_MATERIAL " and " IK3_SMELT_ULTIMATE_MATERIAL " and " IK3_SMELT_ACCESSORY_MATERIAL" but when I'am done compiling with no errors then now I will going to merge it and put it in my Client but when I enter in the world My neuz close automatically.
hope you can help me with this problem. thank you for your reply I really appreciate it :handsdown: