Sonitex
-
Posts
521 -
Joined
-
Days Won
12 -
Feedback
100%
Community Answers
-
Sonitex's post in I beg for help with sash system was marked as the answer
Usually character parts are updated via CHARACTER::UpdatePacket so you should start investigating there if you're even sending the correct sash data to the client.
-
Sonitex's post in Button not clickable in certain X/Y Coords was marked as the answer
You must increase the parent's window height. If I had to guess, most likely "BeltInventoryLayer" window.
-
Sonitex's post in Check query mysql was marked as the answer
By default your query function should return a value based on its result, should be a NULL value in case of failure.
-
Sonitex's post in Increase texture specular but not from specular column was marked as the answer
Specular texture is just a white texture applied to the original texture with opacity level equal to specular level. That means even if you increase the specular level it will be the same (Those 100 points in Specular column mean 100% opacity).
The correct way to tackle this issue would be editing alpha channel of the texture which impacts area of the shine and it's brightness.
-
Sonitex's post in 2014ish GF locale folder was marked as the answer
This is the hidden content, please Sign In or Sign Up Just so you know, I took drop files from a different archive. Here they seem to be incomplete but everything else is fine.
-
Sonitex's post in group_group.txt how this column works was marked as the answer
Its probability for that particular group to spawn. If you do not define it, it will be set to 1.
Pretty much the same concept as in special_item_group.
-
Sonitex's post in Changing what happens when clicking textTail was marked as the answer
PythonPlayerInputMouse.cpp
void CPythonPlayer::NEW_RefreshMouseWalkingDirection() { CInstanceBase* pkInstMain = NEW_GetMainActorPtr(); if (!pkInstMain) return; switch (m_eReservedMode) { case MODE_CLICK_ITEM: { CPythonItem& rkIT=CPythonItem::Instance(); TPixelPosition kPPosPickedItem; if (rkIT.GetGroundItemPosition(m_dwIIDReserved, &kPPosPickedItem)) { if (pkInstMain->NEW_GetDistanceFromDestPixelPosition(kPPosPickedItem)<20.0f) { CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance(); TPixelPosition kPPosCur; pkInstMain->NEW_GetPixelPosition(&kPPosCur); float fCurRot=pkInstMain->GetRotation(); rkNetStream.SendCharacterStatePacket(kPPosCur, fCurRot, CInstanceBase::FUNC_WAIT, 0); SendClickItemPacket(m_dwIIDReserved); pkInstMain->NEW_Stop(); __ClearReservedAction(); } else { pkInstMain->NEW_MoveToDestPixelPositionDirection(kPPosPickedItem); } } else { __ClearReservedAction(); } break; } Try this
-
Sonitex's post in [Problem] : battle pass was marked as the answer
You are missing one of these functions in CHARACTER class:
IsCombOpen() IsOpenMailBox() isSashOpened()
Check both char.h and char.cpp for these
-
Sonitex's post in locale string system was marked as the answer
In cases such as horse name postfix, you can do it directly in client source.
In the following function, check if an instance is a horse and append the string to its name ('s Horse).
void CInstanceBase::__Create_SetName(const SCreateData& c_rkCreateData)
In other cases where you must use a locale string as an argument, you either add multilingual data to the server or create a separate packet just for this locale string.
Edit: There are also other ways like passing "[STRING_221]" as a string argument and on the client side you fetch a locale string with ID 221. This can be also useful for item and monster names
-
Sonitex's post in Return to dungeon problem was marked as the answer
Haven't really took a deep look but the thing that pointed out to me is party flag that saves dungeon index is set when you talk with the NPC 20531.
Because you warped out before starting the dungeon, party flag was not saved and you were teleported to a new instance.
I'd recommend to move this part to somewhere else like make_dungeon() function.
party.setf("dungeon_index", d.get_map_index()) d.setf("party_leader_pid", party.get_leader_pid())
-
Sonitex's post in Server kick out on Any dungeon was marked as the answer
void CQuestManager::CancelServerTimers(DWORD arg) { vector<pair<string, DWORD>> ServerTimersToDelete; for (auto& kv : m_mapServerTimer) { if (kv.first.second == arg) { LPEVENT event = kv.second; event_cancel(&event); ServerTimersToDelete.push_back(kv.first); } } // Delete all the required server timers for (auto &timer : ServerTimersToDelete) m_mapServerTimer.erase(timer); // Clean up ServerTimersToDelete.clear(); } Crash occurs because the game is deleting timers while iterating through them. Code above should fix this issue
-
Sonitex's post in [SURA NERF] Finding a calculation to nerf MANASHIELD skill was marked as the answer
int percentage = 31; int iDamageSPPart = (dam / 100) * percentage; Is this what you are asking for?
-
Sonitex's post in 3x npc price difference in blue red and yellow was marked as the answer
Shop Prices
To change the kingdom prices (if you are blue and go to buy something from red your price will be *3).
Open shop.cpp and find this line:
pack2.items[i].price = item.price * iPriceLift and replace the iPriceLift with what ever number you want
after that open shopEx.cpp and search for:
dwPrice *= 3; and replace the 3 with what ever number you want
finally search the
pack_tab.items[i].price = shop_tab.items[i].price * 3; and replace the 3 with what ever number you want.