Hallo,
Ich habe ein Problem mit den Bonis von meinen Kostümen. An sich haben costume_body und costume_hair funktioniert. Ich konnte ganz normal hinzufügen sowie auch switchen.
Ich habe nachgeschaut Weapon ist auch mit dabei in char_item.cpp bzgl switchen ...
In item_attr in der datenbank war costume_weapon nicht mit dabei. Habe ich natürlich hinzugefügt.
Danach habe ich in item_attribute.cpp return ATTRIBUTE_SET_COSTUME_WEAPON; bei case COSTUME_WEAPON: eingefügt weil vorher ein return; dort stand. Alles andere habe ich mir auch bei den anderen zweien abgeschaut jedoch klappte es nicht.
Sieht so aus:
- if (GetType() == ITEM_COSTUME)
- {
- switch (GetSubType())
- {
- case COSTUME_BODY:
- return ATTRIBUTE_SET_COSTUME_BODY;
- case COSTUME_HAIR:
- return ATTRIBUTE_SET_COSTUME_HAIR;
- #ifdef ENABLE_COSTUME_WEAPON_SYSTEM
- case COSTUME_WEAPON:
- return ATTRIBUTE_SET_COSTUME_WEAPON; // vorher stand hier nur break;
- #endif
- }
- }
Danach habe ich mal versucht in der ClientManagerBoot.cpp (wo ich vorher auch schon costume_weapon angepasst habe, jedoch ich danach keines der 3 kostümteile mehr switchen oder mit bonis versehen konnte) das
auszukommentieren, damit quasi nur noch body und weapon bleibt (das weapon war vorher nicht vorhanden) und auf einmal konnte ich Waffenkostüm und Rüsstung bonis hinzufügen und auch switchen, jedoch konnte ich nur die bonis die ich für costume_body in der DB festgelegt habe drauf switchen, nicht die für costume_weapon. ?!?!
Wenn ich es jetzt aber so habe
- bool CClientManager::InitializeItemAttrTable()
- {
- char query[4096];
- #ifdef ENABLE_PENDANT
- snprintf(query, sizeof(query), "SELECT apply, apply+0, prob, lv1, lv2, lv3, lv4, lv5, weapon, body, wrist, foots, neck, head, shield, ear, pendant, costume_hair, costume_body, min_lvl, max_lvl, costume_weapon FROM item_attr ORDER BY apply"); //costume_weapon HINZUGEFÜGT
- #else
- snprintf(query, sizeof(query), "SELECT apply, apply+0, prob, lv1, lv2, lv3, lv4, lv5, weapon, body, wrist, foots, neck, head, shield, ear, costume_hair, costume_body, min_lvl, max_lvl, costume_weapon FROM item_attr ORDER BY apply"); //costume_weapon HINZUGEFÜGT
- #endif
- std::unique_ptr<SQLMsg> pkMsg(CDBManager::instance().DirectQuery(query));
- SQLResult* pRes = pkMsg->Get();
- if (!pRes->uiNumRows)
- {
- sys_err("no result from item_attr");
- return false;
- }
- if (!m_vec_itemAttrTable.empty())
- {
- m_vec_itemAttrTable.clear();
- }
- m_vec_itemAttrTable.reserve((DWORD)pRes->uiNumRows);
- MYSQL_ROW data;
- while ((data = mysql_fetch_row(pRes->pSQLResult)))
- {
- TItemAttrTable t;
- memset(&t, 0, sizeof(TItemAttrTable));
- int col = 0;
- strlcpy(t.szApply, data[col++], sizeof(t.szApply));
- str_to_number(t.dwApplyIndex, data[col++]);
- str_to_number(t.dwProb, data[col++]);
- str_to_number(t.lValues[0], data[col++]);
- str_to_number(t.lValues[1], data[col++]);
- str_to_number(t.lValues[2], data[col++]);
- str_to_number(t.lValues[3], data[col++]);
- str_to_number(t.lValues[4], data[col++]);
- str_to_number(t.bMaxLevelBySet[ATTRIBUTE_SET_WEAPON], data[col++]);
- str_to_number(t.bMaxLevelBySet[ATTRIBUTE_SET_BODY], data[col++]);
- str_to_number(t.bMaxLevelBySet[ATTRIBUTE_SET_WRIST], data[col++]);
- str_to_number(t.bMaxLevelBySet[ATTRIBUTE_SET_FOOTS], data[col++]);
- str_to_number(t.bMaxLevelBySet[ATTRIBUTE_SET_NECK], data[col++]);
- str_to_number(t.bMaxLevelBySet[ATTRIBUTE_SET_HEAD], data[col++]);
- str_to_number(t.bMaxLevelBySet[ATTRIBUTE_SET_SHIELD], data[col++]);
- str_to_number(t.bMaxLevelBySet[ATTRIBUTE_SET_EAR], data[col++]);
- #ifdef ENABLE_PENDANT
- str_to_number(t.bMaxLevelBySet[ATTRIBUTE_SET_PENDANT], data[col++]);
- #endif
- str_to_number(t.bMaxLevelBySet[ATTRIBUTE_SET_COSTUME_HAIR], data[col++]);
- str_to_number(t.bMaxLevelBySet[ATTRIBUTE_SET_COSTUME_BODY], data[col++]);
- #ifdef ENABLE_COSTUME_WEAPON_SYSTEM
- str_to_number(t.bMaxLevelBySet[ATTRIBUTE_SET_COSTUME_WEAPON], data[col++]); // NEU HINZUGEFÜGT, DANACH LÄSST SICH KEIN KOSTÜM MEHR MIT BONIS VERSEHEN ODER SWITCHEN
- #endif
- // GunnerMBT - 02/04/2014
- str_to_number(t.min_lvl, data[col++]);
- str_to_number(t.max_lvl, data[col++]);
- // end
- m_vec_itemAttrTable.push_back(t);
- }
- return true;
- }
So denke ich mal sollte es dann für alle drei Kostümteile funktionieren, habe lediglich den kommentierten weapon part hinzugefügt und vorher ging es mit body & hair (bonis hinzufügen &switchen).
Jedoch kann ich so kein einzigen Boni mehr auf irgenein Kostüm hinzufügen oder switchen.
Ich hoffe es kann jemand helfen.