Opublikowano 27 Marca27 Mar Siemanko, dodałem ostatnio wzmocnienie i zaczarowanie do paska z poradnika jking z zone, wszystko śmiga. Chciałem dodać nową tabelę item_attr_belt, tylko dla paska no i tu robią się schody xD Wzorowałem się na istniejących tabelkach, ale chyba coś pominąłem? Nie wiem. Skopiowałem item_attr, zmieniłem nazwę, zostawiłem belt. Kod z tabelkami jest i nowymi zmiankami/dodanami niżej.ClientManagerBoot.cppif (!InitializeBeltAttrTable()) { sys_err("InitializeBeltAttrTable FAILED"); return false; } bool CClientManager::InitializeBeltAttrTable() { char query[4096]; snprintf(query, sizeof(query), "SELECT apply, apply+0, prob, lv1, lv2, lv3, lv4, lv5,belt FROM item_attr_belt%s ORDER BY apply", GetTablePostfix()); 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_beltAttrTable.empty()) { sys_log(0, "RELOAD: item_attr_belt"); m_vec_beltAttrTable.clear(); } m_vec_beltAttrTable.reserve(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_BELT], data[col++]); sys_log(0, "ITEM_ATTR: %-20s %4lu { %3d %3d %3d %3d %3d } { %d }", t.szApply, t.dwProb, t.lValues[0], t.lValues[1], t.lValues[2], t.lValues[3], t.lValues[4], t.bMaxLevelBySet[ATTRIBUTE_SET_BELT]); m_vec_beltAttrTable.push_back(t); } return true; }ClientManager.hbool InitializeBeltAttrTable(); std::vector<TItemAttrTable> m_vec_beltAttrTable;char_item.cpp z nowym dodaniem i zmiankącase USE_ADD_NEW_ATTR: case USE_CHANGE_NEW_ATTR: { LPITEM item2; if (!IsValidItemPosition(DestCell) || !(item2 = GetItem(DestCell))) return false; if (item2->IsEquipped()) { BuffOnAttr_RemoveBuffsFromItem(item2); } if (ITEM_BELT != item2->GetType()) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("속성을 변경할 수 없는 아이템입니다.")); return false; } if (item2->IsExchanging() || item2->IsEquipped()) return false; switch (item->GetSubType()) { case USE_ADD_NEW_ATTR: { if (item2->GetAttributeCount() < 4) { if (number(1, 100) > 40) { item2->AddAttribute(); char buf[21]; snprintf(buf, sizeof(buf), "%u", item2->GetID()); LogManager::instance().ItemLog(this, item, "ADD_BELT_ATTR", buf); item->SetCount(item->GetCount() - 1); ChatPacket(CHAT_TYPE_INFO, LC_TEXT("DODANIE_PAS_POWODZENIE")); } else { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("DODANIE_PAS_NIEPOWODZENIE")); return false; } } else { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("DODANIE_PAS_MAKS")); return false; } break; } case USE_CHANGE_NEW_ATTR: { if (item2->GetAttributeCount() == 0) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("변경할 속성이 없습니다.")); return false; } const int prob[5] = { 60, 40, 0, 0, 0 }; item2->ChangeAttribute(prob); { char buf[21]; snprintf(buf, sizeof(buf), "%u", item2->GetID()); LogManager::instance().ItemLog(this, item, "CHANGE_BELT_ATTR", buf); item->SetCount(item->GetCount() - 1); } ChatPacket(CHAT_TYPE_INFO, LC_TEXT("속성을 변경하였습니다.")); break; } } } break;I problem jest kiedy chce nadać lub zmienić bonusy, nie nadaje bonusów a zmianki pobiera. Jakby ktoś podpowiedział co pominąłem to byłbym bardzo wdzięczny. Edytowane 27 Marca27 Mar przez Changelog
Opublikowano 27 Marca27 Mar Wstaw kod jak trzeba, bo ciężko się to czyta.Btw. Nie musisz robić nowej tabelki, wystarczy nowa kolumna w item_attr (chyba, dawno tego nie robilem)
Opublikowano 27 Marca27 Mar 17 minut temu, KoYGeR napisał(a):Wstaw kod jak trzeba, bo ciężko się to czyta.Btw. Nie musisz robić nowej tabelki, wystarczy nowa kolumna w item_attr (chyba, dawno tego nie robilem)W sumie zależy. Bo do każdej rzeczy się ustawiało jaki bonus ma wejść. Pytanie czy ten system co ma wprowadzą tą zmianę. A druga sprawa jak chce mieć osobną zmianke i dodanie to chyba się nie obejdzie bez zmian w kodzie
Opublikowano 27 Marca27 Mar 18 minut temu, KoYGeR napisał(a):Wstaw kod jak trzeba, bo ciężko się to czyta.Btw. Nie musisz robić nowej tabelki, wystarczy nowa kolumna w item_attr (chyba, dawno tego nie robilem)Juz poprawiam. Właśnie teraz mam dodaną kolumnę belt do item_attr i to działa, ale trochę mi to koliduje z bonusami które chciałbym np w broni. Dla pasa chce 3% 5% i 7%, a dla broni już mogę tylko ustawić z kolumny 4 i 5, trochę to jednak ogranicza. Mam nadzieję że rozumiesz co mam na myśli xD 7 minut temu, Rain94 napisał(a):W sumie zależy. Bo do każdej rzeczy się ustawiało jaki bonus ma wejść. Pytanie czy ten system co ma wprowadzą tą zmianę. A druga sprawa jak chce mieć osobną zmianke i dodanie to chyba się nie obejdzie bez zmian w kodzieKod do nowej zmianki i dodania jest podany w poście xD muszę to lepiej sformatować bo rzeczywiście nic nie widać
Opublikowano 27 Marca27 Mar Rozwiązanie Godzinę temu, Changelog napisał(a):Juz poprawiam. Właśnie teraz mam dodaną kolumnę belt do item_attr i to działa, ale trochę mi to koliduje z bonusami które chciałbym np w broni. Dla pasa chce 3% 5% i 7%, a dla broni już mogę tylko ustawić z kolumny 4 i 5, trochę to jednak ogranicza. Mam nadzieję że rozumiesz co mam na myśli xDTo podejrzewam, że wystarczy lekko zmodyfikować funkcję CItem::AddAttribute zamiast pisać tyle kodu :D Dodaj sobie switcha na type przedmiotu i dla Belta wybierz sobie, że których wartości ma wybierać :)Godzinę temu, Rain94 napisał(a):W sumie zależy. Bo do każdej rzeczy się ustawiało jaki bonus ma wejść. Pytanie czy ten system co ma wprowadzą tą zmianę. A druga sprawa jak chce mieć osobną zmianke i dodanie to chyba się nie obejdzie bez zmian w kodziePo tej wypowiedzi mogę wnioskować, że niewiele wiesz o kodzie gry i Twoja oferta była podejrzana.
Opublikowano 27 Marca27 Mar 36 minut temu, KoYGeR napisał(a):To podejrzewam, że wystarczy lekko zmodyfikować funkcję CItem::AddAttribute zamiast pisać tyle kodu :DDodaj sobie switcha na type przedmiotu i dla Belta wybierz sobie, że których wartości ma wybierać :)Po tej wypowiedzi mogę wnioskować, że niewiele wiesz o kodzie gry i Twoja oferta była podejrzana.Jeszcze ciężej się czytało na telefonie. Teraz jak poprawił to widzę
Opublikowano 28 Marca28 Mar Chyba łatwiej będzie dodać 6 kolumnę w item_attr i pierwsze 3 kolumny dla pasów/rękawic cokolwiek, a 3 dla broni.