Opublikowano 9 Grudnia 20231 r Koperek Majstry 😇 Pozmieniałem id w refine_proto bo większość zbędna tylko mam pytanie... id 1 zezwala ulepszać : U Kowala Bodziem Zwojem boga smoków ALE nie moge ulepszać : Magicznym metalem U Seon-Pyeong Ma ktoś jakiś pomysł gdzie to się wyłącza/usuwa? Płace uśmiechem bombelka.... ++ dlaczego Magiczny Metal i Zwój Błogosławieństwa są kilka razy w item_proto
Opublikowano 9 Grudnia 20231 r Aby ulepszać w ten sposób musisz ustawić refine_set powyżej 500, te ograniczenia znajdziesz w funkcjach. 📂 Lokalizacja pliku: 'game -> char_item.cpp' bool CHARACTER::RefineItem(LPITEM pkItem, LPITEM pkTarget) bool CHARACTER::CanReceiveItem(LPCHARACTER from, LPITEM item) const void CHARACTER::ReceiveItem(LPCHARACTER from, LPITEM item)
Opublikowano 9 Grudnia 20231 r Autor 16 minut temu, Sevence napisał(a): Aby ulepszać w ten sposób musisz ustawić refine_set powyżej 500, te ograniczenia znajdziesz w funkcjach. 📂 Lokalizacja pliku: 'game -> char_item.cpp' bool CHARACTER::CanReceiveItem(LPCHARACTER from, LPITEM item) const bool CHARACTER::RefineItem(LPITEM pkItem, LPITEM pkTarget) void CHARACTER::ReceiveItem(LPCHARACTER from, LPITEM item) że tutaj z 500 na 0? Cytat case BLACKSMITH_MOB: if (item->GetRefinedVnum() && item->GetRefineSet() < 500) { return true; } else { return false; } case BLACKSMITH2_MOB: if (item->GetRefineSet() >= 500)
Opublikowano 9 Grudnia 20231 r Nie. Jeśli nie chcesz mieć tych ograniczeń to usuń te warunki. bool CHARACTER::RefineItem(LPITEM pkItem, LPITEM pkTarget) { if (!CanHandleItem()) return false; if (pkItem->GetSubType() == USE_TUNING) { // XXX 성능, 소켓 개량서는 사라졌습니다... // XXX 성능개량서는 축복의 서가 되었다! // MUSIN_SCROLL if (pkItem->GetValue(0) == MUSIN_SCROLL) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_MUSIN, pkItem->GetCell()); // END_OF_MUSIN_SCROLL else if (pkItem->GetValue(0) == HYUNIRON_CHN) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_HYUNIRON, pkItem->GetCell()); else if (pkItem->GetValue(0) == BDRAGON_SCROLL) { if (pkTarget->GetRefineSet() != 702) return false; RefineInformation(pkTarget->GetCell(), REFINE_TYPE_BDRAGON, pkItem->GetCell()); } else { if (pkTarget->GetRefineSet() == 501) return false; RefineInformation(pkTarget->GetCell(), REFINE_TYPE_SCROLL, pkItem->GetCell()); } }
Opublikowano 9 Grudnia 20231 r Autor 22 minuty temu, Sevence napisał(a): Nie. Jeśli nie chcesz mieć tych ograniczeń to usuń te warunki. bool CHARACTER::RefineItem(LPITEM pkItem, LPITEM pkTarget) { if (!CanHandleItem()) return false; if (pkItem->GetSubType() == USE_TUNING) { // XXX 성능, 소켓 개량서는 사라졌습니다... // XXX 성능개량서는 축복의 서가 되었다! // MUSIN_SCROLL if (pkItem->GetValue(0) == MUSIN_SCROLL) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_MUSIN, pkItem->GetCell()); // END_OF_MUSIN_SCROLL else if (pkItem->GetValue(0) == HYUNIRON_CHN) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_HYUNIRON, pkItem->GetCell()); else if (pkItem->GetValue(0) == BDRAGON_SCROLL) { if (pkTarget->GetRefineSet() != 702) return false; RefineInformation(pkTarget->GetCell(), REFINE_TYPE_BDRAGON, pkItem->GetCell()); } else { if (pkTarget->GetRefineSet() == 501) return false; RefineInformation(pkTarget->GetCell(), REFINE_TYPE_SCROLL, pkItem->GetCell()); } } Chyba nie ogarnąłem jak to zrobić x_x Spoiler bool CHARACTER::RefineItem(LPITEM pkItem, LPITEM pkTarget) { if (!CanHandleItem()) return false; if (pkItem->GetSubType() == USE_TUNING) { // XXX Ľş´É, ĽŇÄĎ °ł·®Ľ´Â »ç¶óÁł˝Ŕ´Ď´Ů... // XXX Ľş´É°ł·®Ľ´Â ĂŕşąŔÇ Ľ°ˇ µÇľú´Ů! // MUSIN_SCROLL #ifdef fix_81 if (pkItem->GetValue(0) == METAL15) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL15, pkItem->GetCell()); #else if (pkItem->GetValue(0) == MUSIN_SCROLL) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_MUSIN, pkItem->GetCell()); // END_OF_MUSIN_SCROLL else if (pkItem->GetValue(0) == HYUNIRON_CHN) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_HYUNIRON, pkItem->GetCell()); #endif #ifdef NOWE_METALE_DO_ULEPSZANIA else if (pkItem->GetValue(0) == METAL20) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL20, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL25) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL25, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL30) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL30, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL35) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL35, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL40) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL40, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL45) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL45, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL50) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL50, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL55) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL55, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL60) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL60, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL65) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL65, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL70) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL70, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL75) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL75, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL80) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL80, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL85) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL85, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL90) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL90, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL95) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL95, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL100) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL100, pkItem->GetCell()); #endif /* else if (pkItem->GetValue(0) == BDRAGON_SCROLL) { if (pkTarget->GetRefineSet() != 702) return false; RefineInformation(pkTarget->GetCell(), REFINE_TYPE_BDRAGON, pkItem->GetCell()); } else { if (pkTarget->GetRefineSet() == 501) return false; RefineInformation(pkTarget->GetCell(), REFINE_TYPE_SCROLL, pkItem->GetCell()); } */ } else if (pkItem->GetSubType() == USE_DETACHMENT && IS_SET(pkTarget->GetFlag(), ITEM_FLAG_REFINEABLE)) { LogManager::instance().ItemLog(this, pkTarget, "USE_DETACHMENT", pkTarget->GetName()); bool bHasMetinStone = false; for (int i = 0; i < ITEM_SOCKET_MAX_NUM; i++) { long socket = pkTarget->GetSocket(i); if (socket > 2 && socket != ITEM_BROKEN_METIN_VNUM) { bHasMetinStone = true; break; } } if (bHasMetinStone) { for (int i = 0; i < ITEM_SOCKET_MAX_NUM; ++i) { long socket = pkTarget->GetSocket(i); if (socket > 2 && socket != ITEM_BROKEN_METIN_VNUM) { AutoGiveItem(socket); //TItemTable* pTable = ITEM_MANAGER::instance().GetTable(pkTarget->GetSocket(i)); //pkTarget->SetSocket(i, pTable->alValues[2]); // ±úÁřµą·Î ´ëĂĽÇŘÁŘ´Ů pkTarget->SetSocket(i, ITEM_BROKEN_METIN_VNUM); } } pkItem->SetCount(pkItem->GetCount() - 1); return true; } else { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("»©łľ Ľö ŔÖ´Â ¸ŢĆľĽ®ŔĚ ľř˝Ŕ´Ď´Ů.")); return false; } } return false; }
Opublikowano 9 Grudnia 20231 r O KURWA HARDCODE moje oczy 😄🤪 #ifdef NOWE_METALE_DO_ULEPSZANIA else if (pkItem->GetValue(0) == METAL20) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL20, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL25) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL25, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL30) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL30, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL35) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL35, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL40) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL40, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL45) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL45, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL50) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL50, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL55) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL55, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL60) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL60, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL65) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL65, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL70) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL70, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL75) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL75, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL80) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL80, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL85) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL85, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL90) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL90, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL95) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL95, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL100) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL100, pkItem->GetCell()); #endif Pisałem Ci usuń dwa warunki ograniczające refine_set, a Ty skomentowałeś całą obsługę tych typów. 😄 else if (pkItem->GetValue(0) == BDRAGON_SCROLL) { RefineInformation(pkTarget->GetCell(), REFINE_TYPE_BDRAGON, pkItem->GetCell()); } else { RefineInformation(pkTarget->GetCell(), REFINE_TYPE_SCROLL, pkItem->GetCell()); }
Opublikowano 9 Grudnia 20231 r Autor 1 minutę temu, Sevence napisał(a): O Kur** HARDCODE moje oczy 😄🤪 #ifdef NOWE_METALE_DO_ULEPSZANIA else if (pkItem->GetValue(0) == METAL20) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL20, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL25) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL25, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL30) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL30, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL35) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL35, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL40) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL40, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL45) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL45, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL50) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL50, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL55) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL55, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL60) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL60, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL65) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL65, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL70) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL70, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL75) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL75, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL80) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL80, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL85) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL85, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL90) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL90, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL95) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL95, pkItem->GetCell()); else if (pkItem->GetValue(0) == METAL100) RefineInformation(pkTarget->GetCell(), REFINE_TYPE_METAL100, pkItem->GetCell()); #endif Pisałem Ci usuń dwa warunki ograniczające refine_set, a Ty skomentowałeś całą obsługę tych typów. 😄 else if (pkItem->GetValue(0) == BDRAGON_SCROLL) { RefineInformation(pkTarget->GetCell(), REFINE_TYPE_BDRAGON, pkItem->GetCell()); } else { RefineInformation(pkTarget->GetCell(), REFINE_TYPE_SCROLL, pkItem->GetCell()); } Nie pytaj to na chwile Co do dwóch warunków tak zrobiłem i dalej nie działa od id 1 xD
Opublikowano 9 Grudnia 20231 r Co nie działa? Jeśli chodzi o magiczne metal to on nie ma żadnych ograniczeń, możesz każdy przedmiot ulepszać niezależne od refine_set. Sprawdź, czy w ogóle masz ustawiony typ dla tego rekordu w item_proto. Jak chcesz żeby miał typ magicznego metalu musisz w value0 ustawić wartość 1. Seon Pyeong ma ograniczenia refine_set od vnum 500 i to jest w tym warunku ograniczane. case BLACKSMITH2_MOB: if (item->GetRefineSet() >= 500) { return true; } else { return false; } W refine.h masz definicję: BLACKSMITH2_MOB = 20091,
Opublikowano 9 Grudnia 20231 r Autor Godzinę temu, Sevence napisał(a): Co nie działa? Jeśli chodzi o magiczne metal to on nie ma żadnych ograniczeń, możesz każdy przedmiot ulepszać niezależne od refine_set. Sprawdź, czy w ogóle masz ustawiony typ dla tego rekordu w item_proto. Jak chcesz żeby miał typ magicznego metalu musisz w value0 ustawić wartość 1. Seon Pyeong ma ograniczenia refine_set od vnum 500 i to jest w tym warunku ograniczane. case BLACKSMITH2_MOB: if (item->GetRefineSet() >= 500) { return true; } else { return false; } W refine.h masz definicję: BLACKSMITH2_MOB = 20091, No właśnie metalem nie moge ulepszyć gdy id refine wynosi 1 Cytat 71026 0 71026 Magiczny Metal 6 0 0 1 106880 8192 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 -1 -1 -1 -1 -1 -1 0 0 0 39016 0 39016 Magiczny Metal 6 0 0 1 98688 8192 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 -1 -1 -1 -1 -1 -1 0 0 0
Opublikowano 9 Grudnia 20231 r Ja nie robiłem żadnych zmian i oryginalnie bez problemu mi działa magiczny metal nawet dla refine_set o wartości 1.
Opublikowano 9 Grudnia 20231 r Autor Rozwiązanie 5 minut temu, Sevence napisał(a): Ja nie robiłem żadnych zmian i oryginalnie bez problemu mi działa magiczny metal nawet dla refine_set o wartości 1. Czyli MAGICZNY METAL są min 3 w bazie bo 39001 działa, 39016 i 71026 do wywalenia dla pokoleń 😄
Opublikowano 9 Grudnia 20231 r Wystarczy ustawić dla innych value0 na wartość 1 i również będzie działać poprawnie, konwert do klienta item_proto.
Koperek Majstry 😇
Pozmieniałem id w refine_proto bo większość zbędna tylko mam pytanie...
id 1 zezwala ulepszać :
ALE nie moge ulepszać :
Ma ktoś jakiś pomysł gdzie to się wyłącza/usuwa?
Płace uśmiechem bombelka....
++ dlaczego Magiczny Metal i Zwój Błogosławieństwa są kilka razy w item_proto