Jump to content

Sonitex

Active Member
  • Posts

    525
  • Joined

  • Days Won

    12
  • Feedback

    100%

Sonitex last won the day on February 25 2021

Sonitex had the most liked content!

About Sonitex

Informations

  • Gender
    Male

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Sonitex's Achievements

Mentor

Mentor (12/16)

  • Posting Machine Rare
  • Reacting Well
  • Dedicated
  • Very Popular Rare
  • Collaborator Rare

Recent Badges

1.7k

Reputation

  1. As Arthion is set to be without cosmetics covering the character's progress, we've added even more meaning to the upgrade level of armor. Check out some of the armor transformations on our Discord server!
  2. Fellow developers and players, I am eager to introduce you to a project that has been in development for quite some time - Arthion, a hard old-school server that aims to bring novelty while still preserving the core philosophy of classic gameplay, hence the term renaissance. Although this short description does not do it justice, especially as we have recently witnessed a huge wave of similarly described projects popping up left and right, we do aim to bring uniqueness to the scene as well as some healthy competition. In the upcoming weeks, we'll be posting development blogs detailing the features and changes we've implemented on our forum. If you enjoy classic servers with a rich collection of quality-of-life improvements and unique features thoughtfully tailored to the classic environment, we warmly invite you to join our Discord, where we'll hold weekly discussions about our work and plans for the future. Website: https://arthion.to/ Discord: https://discord.gg/K7uqWvd9Sj
  3. You can find more information about it in ui.py at: def LoadChildren(self, parent, dicChildren): where each UI element gets processed.
  4. ui.py class ThinBoard(Window): CORNER_WIDTH = 16 CORNER_HEIGHT = 16 LINE_WIDTH = 16 LINE_HEIGHT = 16 BOARD_COLOR = grp.GenerateColor(0.0, 0.0, 0.0, 0.51) Change BOARD_COLOR
  5. Make sure the packet is being sent/recognized in the correct phase. ?
  6. Actually, CInstanceBase holds the VID value and that one is set on the server once the entity is spawned. Essentially, CActorInstance is a big mess of components grouped into one class, so it only holds "resource variables" eg. motions, while the CInstanceBase holds the gameplay variables like name, level, etc. The concept is old and very far from the modern implementations of entities but hopefully, you'll understand. Correct, CPythonCharacterManager is responsible for the entities.
  7. Loooooooooong story short: PythonPlayer is like a manager class responsible for your character's data. It is used on the Python side to get the data and display it later on and that's about it. CInstanceBase is like a wrapper for the entity class CActorInstance which holds all the needed components like animations, effects, collisions, etc.
  8. The difference between clang++ and clang++-devel lies in the version of the Clang compiler being used. Both are C++ compilers provided by the Clang project, but clang++-devel typically refers to the development version or a specific version of the Clang compiler. The specific differences between the two can vary depending on the context and the versions installed on your system. Regarding your side question, if thelibcore is strictly a C program, it is generally more appropriate to use a C compiler such as clang or gcc rather than a C++ compiler like clang++. Using a C++ compiler for a C program can lead to syntax errors or unexpected behavior, as C++ and C have slight differences in syntax and language features. Make sure that your Makefile is set up to use a C compiler (e.g., CC = clang or CC = gcc) instead of a C++ compiler. If you are encountering syntax errors or missing brackets when switching to a C compiler, it could be due to subtle differences between the C and C++ languages. Make sure that your code follows the C syntax and conventions and does not rely on C++-specific features. Additionally, ensure that your Makefile and build system are correctly configured to use a C compiler and include the necessary header files and libraries for C code. This was totally not generated by GPT.
  9. Then you have it fixed without knowing ?
  10. Yep, you're correct, the issue is only present on default metin2 sources.
  11. Ayo, recently I've come across an issue with a customer who had item proto entries all over the place and when the database tried to sort that mess, it messed it up even more, eventually, it messed up this very Monday for me as I spent hours debugging this. Long story short: It first inserts key-value to map m_map_itemTableByVnum where the key was an integer (item vnum) and the value was a pointer that pointed to an item table object at position X in m_vec_itemTable but at the end, it sorted this very vector while values in map still pointed to the same positions in the vector. Guessed what happened? An item with vnum 19709 had an item table of the item with vnum 20009 because you donkey were too lazy to put new proto entries in the correct order. Go over to server source, database/ClientManagerBoot.cpp, at the end of the following function: bool CClientManager::InitializeItemTable() { [...] m_map_itemTableByVnum.clear(); auto it = m_vec_itemTable.begin(); while (it != m_vec_itemTable.end()) { TItemTable * item_table = &(*(it++)); sys_log(1, "ITEM: #%-5lu %-24s %-24s VAL: %ld %ld %ld %ld %ld %ld WEAR %lu ANTI %lu IMMUNE %lu REFINE %lu REFINE_SET %u MAGIC_PCT %u", item_table->dwVnum, item_table->szName, item_table->szLocaleName, item_table->alValues[0], item_table->alValues[1], item_table->alValues[2], item_table->alValues[3], item_table->alValues[4], item_table->alValues[5], item_table->dwWearFlags, item_table->dwAntiFlags, item_table->dwImmuneFlag, item_table->dwRefinedVnum, item_table->wRefineSet, item_table->bAlterToMagicItemPct); m_map_itemTableByVnum.insert(std::map<DWORD, TItemTable *>::value_type(item_table->dwVnum, item_table)); } sort(m_vec_itemTable.begin(), m_vec_itemTable.end(), FCompareVnum()); return true; Now we'll do some dark magic, we'll move the sort function at the beginning of previously shown code, like so: bool CClientManager::InitializeItemTable() { [...] m_map_itemTableByVnum.clear(); // -------------------------------------------------------------> Wohoo I am here now! sort(m_vec_itemTable.begin(), m_vec_itemTable.end(), FCompareVnum()); auto it = m_vec_itemTable.begin(); while (it != m_vec_itemTable.end()) { TItemTable * item_table = &(*(it++)); sys_log(1, "ITEM: #%-5lu %-24s %-24s VAL: %ld %ld %ld %ld %ld %ld WEAR %lu ANTI %lu IMMUNE %lu REFINE %lu REFINE_SET %u MAGIC_PCT %u", item_table->dwVnum, item_table->szName, item_table->szLocaleName, item_table->alValues[0], item_table->alValues[1], item_table->alValues[2], item_table->alValues[3], item_table->alValues[4], item_table->alValues[5], item_table->dwWearFlags, item_table->dwAntiFlags, item_table->dwImmuneFlag, item_table->dwRefinedVnum, item_table->wRefineSet, item_table->bAlterToMagicItemPct); m_map_itemTableByVnum.insert(std::map<DWORD, TItemTable *>::value_type(item_table->dwVnum, item_table)); } return true;
  12. Heya here is a guide for the exact thing you're looking for:
  13. Windows server is used explicitly for development as you can hook the running cores to Visual Studio and debug your life-mistakes easier and once you think you solved them, you ship it on FreeBSD in continue the misery there with GDB ?
  14. I didn't take the negative experience to heart but it was more about sharing private conversations online and interpreting my words in a wrong way.
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.