Witam mam taki problemik ze gdy zmieniam bonusy to usuwa mi jakby dodania np. z 5 na 4 , z 4 na 3 lub z 5 na 3 i potrafi dojść ze przedmiot nie ma bonusu 😄
tutaj kod z char_item.cpp
case USE_CHANGE_ATTRIBUTE :if(item2->GetAttributeSetIndex()==-1){ChatPacket(CHAT_TYPE_INFO, LC_TEXT("속성을 변경할 수 없는 아이템입니다."));returnfalse;}if(item2->GetAttributeCount()==0){ChatPacket(CHAT_TYPE_INFO, LC_TEXT("변경할 속성이 없습니다."));returnfalse;}if(GM_PLAYER ==GetGMLevel()&&false== test_server){//// Event Flag 를 통해 이전에 아이템 속성 변경을 한 시간으로 부터 충분한 시간이 흘렀는지 검사하고// 시간이 충분히 흘렀다면 현재 속성변경에 대한 시간을 설정해 준다.//
DWORD dwChangeItemAttrCycle = quest::CQuestManager::instance().GetEventFlag(msc_szChangeItemAttrCycleFlag);if(dwChangeItemAttrCycle < msc_dwDefaultChangeItemAttrCycle)
dwChangeItemAttrCycle = msc_dwDefaultChangeItemAttrCycle;
quest::PC* pPC = quest::CQuestManager::instance().GetPC(GetPlayerID());if(pPC){
DWORD dwNowMin = get_global_time()/60;// DWORD dwLastChangeItemAttrMin = pPC->GetFlag(msc_szLastChangeItemAttrFlag);// if (dwLastChangeItemAttrMin + dwChangeItemAttrCycle > dwNowMin)// {// ChatPacket(CHAT_TYPE_INFO, LC_TEXT("속성을 바꾼지 %d분 이내에는 다시 변경할 수 없습니다.(%d 분 남음)"),// dwChangeItemAttrCycle, dwChangeItemAttrCycle - (dwNowMin - dwLastChangeItemAttrMin));// return false;// }
pPC->SetFlag(msc_szLastChangeItemAttrFlag, dwNowMin);}}if(item->GetSubType()== USE_CHANGE_ATTRIBUTE2){int aiChangeProb[ITEM_ATTRIBUTE_MAX_LEVEL]={0,0,30,40,3};
item2->ChangeAttribute(aiChangeProb);}elseif(item->GetVnum()==76014){int aiChangeProb[ITEM_ATTRIBUTE_MAX_LEVEL]={0,10,50,39,1};
item2->ChangeAttribute(aiChangeProb);}else{// 연재경 특수처리// 절대로 연재가 추가 안될거라 하여 하드 코딩함.if(item->GetVnum()==71151|| item->GetVnum()==76023){if((item2->GetType()== ITEM_WEAPON)||(item2->GetType()== ITEM_ARMOR && item2->GetSubType()== ARMOR_BODY)){bool bCanUse =true;for(int i =0; i < ITEM_LIMIT_MAX_NUM;++i){if(item2->GetLimitType(i)== LIMIT_LEVEL && item2->GetLimitValue(i)>40){
bCanUse =false;break;}}if(false== bCanUse){ChatPacket(CHAT_TYPE_INFO, LC_TEXT("적용 레벨보다 높아 사용이 불가능합니다."));break;}}else{ChatPacket(CHAT_TYPE_INFO, LC_TEXT("무기와 갑옷에만 사용 가능합니다."));break;}}
item2->ChangeAttribute();}ChatPacket(CHAT_TYPE_INFO, LC_TEXT("속성을 변경하였습니다."));{char buf[21];
snprintf(buf,sizeof(buf),"%u", item2->GetID());LogManager::instance().ItemLog(this, item,"CHANGE_ATTRIBUTE", buf);}//item->SetCount(item->GetCount() - 1);break;
a tutaj kod item_attribute.cpp:
voidCItem::ChangeAttribute(constint* aiChangeProb){int iAttributeCount =GetAttributeCount();ClearAttribute();if(iAttributeCount ==0)return;TItemTableconst* pProto =GetProto();if(pProto && pProto->sAddonType){ApplyAddon(pProto->sAddonType);}staticconstint tmpChangeProb[ITEM_ATTRIBUTE_MAX_LEVEL]={0,10,40,35,15,};for(int i =GetAttributeCount(); i < iAttributeCount;++i){if(aiChangeProb == NULL){PutAttribute(tmpChangeProb);}else{PutAttribute(aiChangeProb);}}}
Witam mam taki problemik ze gdy zmieniam bonusy to usuwa mi jakby dodania np. z 5 na 4 , z 4 na 3 lub z 5 na 3 i potrafi dojść ze przedmiot nie ma bonusu 😄
tutaj kod z char_item.cpp
a tutaj kod item_attribute.cpp: