Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- char_item.cpp
- #########
- #ifdef USE_CHANGE_ATTRIBUTE_PLUSPLUS
- case HIERZAHLEINFÜGEN: // ÁøÀç°æ
- {
- LPITEM item2;
- if (!IsValidItemPosition(DestCell) || !(item2 = GetItem(DestCell)))
- return false;
- if (ITEM_COSTUME == item2->GetType()) // 6/7 Check auf Costüme, da Kostüme ja solche Bonis nicht nutzen. Stimmts Phil!?
- {
- ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Du kannst dem Kostüm kein Bonus hinzufügen."));
- return false;
- }
- if (item2->IsExchanging() || item2->IsEquipped())
- return false;
- if (item2->GetAttributeSetIndex() == -1)
- {
- ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Fehler! Bonus konnte nicht hinzugefuegt werden."));
- return false;
- }
- if (item2->ChangePlusPlusAttribute() == true)
- {
- char buf[21];
- snprintf(buf, sizeof(buf), "%u", item2->GetID());
- LogManager::instance().ItemLog(this, item, "CHANGE_PLUSPLUS_ATTR", buf);
- item->SetCount(item->GetCount() - 1);
- }
- else
- {
- ChatPacket(CHAT_TYPE_INFO, LC_TEXT("FEHLER. BONUS KONNTE NICHT ADOLF"));
- }
- }
- break;
- #endif
- ________________________________________
- Item.h
- ________________________________________
- #ifdef USE_ATTRIBUTE_PLUSPLUS
- bool HasPlusPlusAttr(BYTE bApply);
- #endif
- #ifdef USE_ATTRIBUTE_PLUSPLUS
- bool ChangePlusPlusAttribute();
- bool AddPlusPlusAttribute();
- int GetPlusPlusAttCount();
- #endif
- ________________________________________
- item_lenght.h
- ________________________________________
- #ifdef USE_ATTRIBUTE_PLUSPLUS
- USE_CHANGE_ATTRIBUTE6,
- USE_ADD_ATTRIBUTE6,
- #endif
- #ifdef USE_ATTRIBUTE_PLUSPLUS
- ITEM_ATTRIBUTE_PLUSPLUS_START = ITEM_ATTRIBUTE_RARE_END,
- ITEM_ATTRIBUTE_PLUSPLUS_END = ITEM_ATTRIBUTE_PLUSPLUS_START + ITEM_ATTRIBUTE_PLUSPLUS_NUM,
- #endif
- #ifdef USE_ATTRIBUTE_PLUSPLUS
- ITEM_ATTRIBUTE_MAX_NUM = ITEM_ATTRIBUTE_PLUSPLUS_END, // 8
- #else
- ITEM_ATTRIBUTE_MAX_NUM = ITEM_ATTRIBUTE_RARE_END, // 7
- #endif
- constants.cpp
- #ifdef USE_ATTRIBUTE_PLUSPLUS
- TItemAttrMap g_map_itemPlusPlusAttr;
- #endif
- constants.h
- #ifdef USE_ATTRIBUTE_PLUSPLUS
- extern TItemAttrMap g_map_itemPlusPlusAttr;
- #endif
- input_db.cpp
- #ifdef USE_ATTRIBUTE_PLUSPLUS
- if (decode_2bytes(data) != sizeof(TItemAttrTable))
- {
- sys_err("item PlusPlusRare table size error");
- thecore_shutdown();
- return;
- }
- data += 2;
- size = decode_2bytes(data);
- data += 2;
- sys_log(0, "BOOT: PLUSPLUS_ATTR: %d", size);
- if (size)
- {
- TItemAttrTable * p = (TItemAttrTable *) data;
- for (int i = 0; i < size; ++i, ++p)
- {
- if (p->dwApplyIndex >= MAX_APPLY_NUM)
- continue;
- g_map_itemRare[p->dwApplyIndex] = *p;
- sys_log(0, "PLUSPLUS_ATTR[%d]: %s %u", p->dwApplyIndex, p->szApply, p->dwProb);
- }
- }
- data += size * sizeof(TItemAttrTable);
- #endif
- #ifdef USE_ATTRIBUTE_PLUSPLUS
- sys_log(0, "sizeof(TItemPlusPlusTable) = %d", sizeof(TItemAttrTable));
- #endif
- item_attribute.cpp
- #ifdef USE_ATTRIBUTE_PLUSPLUS
- int CItem::GetPlusPlusAttCount()
- {
- int ret = 0;
- for (DWORD dwIdx = ITEM_ATTRIBUTE_PLUSPLUS_START; dwIdx < ITEM_ATTRIBUTE_PLUSPLUS_END; dwIdx++)
- {
- if (m_aAttr[dwIdx].bType != 0)
- ret++;
- }
- return ret;
- }
- #endif
- #ifdef USE_ATTRIBUTE_PLUSPLUS
- bool CItem::AddPlusPlusAttribute()
- {
- int count = GetPlusPlusAttCount();
- if (count >= ITEM_ATTRIBUTE_PLUSPLUS_NUM)
- return false;
- int pos = count + ITEM_ATTRIBUTE_PLUSPLUS_START;
- TPlayerItemAttribute & attr = m_aAttr[pos];
- int nAttrSet = GetAttributeSetIndex();
- std::vector<int> avail;
- for (int i = 0; i < MAX_APPLY_NUM; ++i)
- {
- const TItemAttrTable & r = g_map_itemPlusPlusAttr[i];
- if (r.dwApplyIndex != 0 && r.bMaxLevelBySet[nAttrSet] > 0 && HasPlusPlusAttr(i) != true)
- {
- avail.push_back(i);
- }
- }
- const TItemAttrTable& r = g_map_itemPlusPlusAttr[avail[number(0, avail.size() - 1)]];
- int nAttrLevel = 5;
- if (nAttrLevel > r.bMaxLevelBySet[nAttrSet])
- nAttrLevel = r.bMaxLevelBySet[nAttrSet];
- attr.bType = r.dwApplyIndex;
- attr.sValue = r.lValues[nAttrLevel - 1];
- UpdatePacket();
- Save();
- const char * pszIP = NULL;
- if (GetOwner() && GetOwner()->GetDesc())
- pszIP = GetOwner()->GetDesc()->GetHostName();
- LOG_LEVEL_CHECK(LOG_LEVEL_MAX, LogManager::instance().ItemLog(pos, attr.bType, attr.sValue, GetID(), "SET_PLUSPLUS_ATTR", "", pszIP ? pszIP : "", GetOriginalVnum()));
- return true;
- }
- #endif
- #ifdef USE_ATTRIBUTE_PLUSPLUS
- bool CItem::ChangePlusPlusAttribute()
- {
- if (GetPlusPlusAttCount() == 0)
- return false;
- int cnt = GetPlusPlusAttCount();
- for (int i = 0; i < cnt; ++i)
- {
- m_aAttr[i + ITEM_ATTRIBUTE_PLUSPLUS_START].bType = 0;
- m_aAttr[i + ITEM_ATTRIBUTE_PLUSPLUS_START].sValue = 0;
- }
- if (GetOwner() && GetOwner()->GetDesc())
- LOG_LEVEL_CHECK(LOG_LEVEL_MAX, LogManager::instance().ItemLog(GetOwner(), this, "SET_PLUSPLUS_ATTR_CHANGE", ""))
- else
- LOG_LEVEL_CHECK(LOG_LEVEL_MAX, LogManager::instance().ItemLog(0, 0, 0, GetID(), "SET_PLUSPLUS_ATTR_CHANGE", "", "", GetOriginalVnum()))
- for (int i = 0; i < cnt; ++i)
- {
- AddPlusPlusAttribute();
- }
- return true;
- }
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement