Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 09/29/18 in all areas

  1. Navicat Monitor applies agentless architecture to monitor your MySQL, MariaDB and Percona servers, and collect metrics at regular intervals. It collects process metrics such as CPU load, RAM usage, and a variety of other resources over SSH/SNMP. Navicat Monitor can be installed on any local computer or virtual machine and does not require any software installation on the servers being monitored. Navicat Monitor includes a rich set of real-time and historical graphs that allow you to drill down into server statistic details. It gives you a detailed view of each server load and performance regarding its availability, disk usage, network I/O, table locks and more, which allows you to easily track the deviations and traffic among servers, as well as examine possible solutions and adjust your server settings. Set it up: 1. Load Binary from here : [Hidden Content] 2. Run the Binary 3. Sign Up youre Account Data 4. Paste youre Login Credits for the Server and choose the Database to install it 5. You are Done. Congratulation ! Bug Fix: If the MYSQL Server is down you have to run following command in Putty mysql_upgrade --force -u root -p Enter youre Password and youre Done.
    3 points
  2. Download Metin2 Download Tempel Building Set hello, i hope you enjoy this pack. let comment or like left on youtube, if you like it.
    2 points
  3. 1 point
  4. M2 Download Center Download Here ( Internal ) Here is my speedtree models library (size 2GB, over 2200 spt, 2500 textures). Most of the trees are ready to save in sptCAD3 but remember to save textures as .dds. [Hidden Content] I hope it will be usefull for you If you have any question send me a message.
    1 point
  5. M2 Download Center Download Here ( Internal ) // If you use my special storage, and ofc if you want add "ACMD(do_sort_special_storage);" too. ^ //////////// CMD.CPP //////////// Search : ACMD(do_stun); Add after : #ifdef ENABLE_SORT_INVENTORY ACMD(do_sort_items); ACMD(do_sort_special_storage); #endif Search: { "notice", do_notice, 0, POS_DEAD, GM_LOW_WIZARD }, Add after : #ifdef ENABLE_SORT_INVENTORY { "click_sort_items", do_sort_items, 0, POS_DEAD, GM_PLAYER }, { "click_sort_special_storage", do_sort_special_storage, 0, POS_DEAD, GM_PLAYER }, #endif //////////// CMD_GNERAL.CPP //////////// ADD THIS : #ifdef ENABLE_SORT_INVENTORY ACMD (do_sort_items) { if (ch->IsDead() || ch->GetExchange() || ch->IsShop() || ch->IsOpenSafebox() || ch->IsCubeOpen()) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't sort your inventory with those windows open.")); return; } int lastSortInventoryPulse = ch->GetSortInventoryPulse(); int currentPulse = thecore_pulse(); if (lastSortInventoryPulse > currentPulse) { int deltaInSeconds = ((lastSortInventoryPulse / PASSES_PER_SEC(1)) - (currentPulse / PASSES_PER_SEC(1))); int minutes = deltaInSeconds / 60; int seconds = (deltaInSeconds - (minutes * 60)); return; } for (int i = 0; i < INVENTORY_MAX_NUM; ++i) { LPITEM item = ch->GetInventoryItem(i); if(!item) continue; if(item->isLocked()) continue; if(item->GetCount() == g_bItemCountLimit) continue; if (item->IsStackable() && !IS_SET(item->GetAntiFlag(), ITEM_ANTIFLAG_STACK)) { for (int j = i; j < INVENTORY_MAX_NUM; ++j) { LPITEM item2 = ch->GetInventoryItem(j); if(!item2) continue; if(item2->isLocked()) continue; if (item2->GetVnum() == item->GetVnum()) { bool bStopSockets = false; for (int k = 0; k < ITEM_SOCKET_MAX_NUM; ++k) { if (item2->GetSocket(k) != item->GetSocket(k)) { bStopSockets = true; break; } } if(bStopSockets) continue; BYTE bAddCount = MIN(g_bItemCountLimit - item->GetCount(), item2->GetCount()); item->SetCount(item->GetCount() + bAddCount); item2->SetCount(item2->GetCount() - bAddCount); continue; } } } } ch->SetNextSortInventoryPulse(thecore_pulse() + PASSES_PER_SEC(60)); } ACMD (do_sort_special_storage) { if (ch->IsDead() || ch->GetExchange() || ch->IsShop() || ch->IsOpenSafebox() || ch->IsCubeOpen()) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't sort your inventory with those windows open.")); return; } int lastSortSpecialStoragePulse = ch->GetSortSpecialStoragePulse(); int currentPulse = thecore_pulse(); if (lastSortSpecialStoragePulse > currentPulse) { int deltaInSeconds = ((lastSortSpecialStoragePulse / PASSES_PER_SEC(1)) - (currentPulse / PASSES_PER_SEC(1))); int minutes = deltaInSeconds / 60; int seconds = (deltaInSeconds - (minutes * 60)); ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can sort your inventory again in %02d seconds."), seconds); return; } for (int m = 0; m < 3; m++) { for (int i = 0; i < SPECIAL_INVENTORY_MAX_NUM; ++i) { LPITEM item; switch(m) { case 0: item = ch->GetUpgradeInventoryItem(i); break; case 1: item = ch->GetBookInventoryItem(i); break; case 2: item = ch->GetStoneInventoryItem(i); break; default: item = ch->GetUpgradeInventoryItem(i); break; } if(!item) continue; if(item->isLocked()) continue; if(item->GetCount() == g_bItemCountLimit) continue; if (item->IsStackable() && !IS_SET(item->GetAntiFlag(), ITEM_ANTIFLAG_STACK)) { for (int j = i; j < SPECIAL_INVENTORY_MAX_NUM; ++j) { LPITEM item2; switch(m) { case 0: item2 = ch->GetUpgradeInventoryItem(j); break; case 1: item2 = ch->GetBookInventoryItem(j); break; case 2: item2 = ch->GetStoneInventoryItem(j); break; default: item2 = ch->GetUpgradeInventoryItem(j); break; } if(!item2) continue; if(item2->isLocked()) continue; if (item2->GetVnum() == item->GetVnum()) { bool bStopSockets = false; for (int k = 0; k < ITEM_SOCKET_MAX_NUM; ++k) { if (item2->GetSocket(k) != item->GetSocket(k)) { bStopSockets = true; break; } } if(bStopSockets) continue; BYTE bAddCount = MIN(g_bItemCountLimit - item->GetCount(), item2->GetCount()); item->SetCount(item->GetCount() + bAddCount); item2->SetCount(item2->GetCount() - bAddCount); continue; } } } } } ch->SetNextSortSpecialStoragePulse(thecore_pulse() + PASSES_PER_SEC(60)); } #endif //////////// char.cpp //////////// Search : m_iSyncHackCount = 0; Add after: #ifdef ENABLE_SORT_INVENTORY m_sortInventoryPulse = 0; m_sortSpecialStoragePulse = 0; #endif //////////// char.h //////////// Search : void GiveGold(INT iAmount); Add after : #ifdef ENABLE_SORT_INVENTORY void SetNextSortInventoryPulse(int pulse) { m_sortInventoryPulse = pulse; } int GetSortInventoryPulse() { return m_sortInventoryPulse; } void SetNextSortSpecialStoragePulse(int pulse) { m_sortSpecialStoragePulse = pulse; } int GetSortSpecialStoragePulse() { return m_sortSpecialStoragePulse; } #endif Search : LPSHOP m_pkShop; LPSHOP m_pkMyShop; std::string m_stShopSign; LPCHARACTER m_pkChrShopOwner; Add after : #ifdef ENABLE_SORT_INVENTORY int m_sortInventoryPulse; int m_sortSpecialStoragePulse; #endif /////// Service.h //////// Add this : #define ENABLE_SORT_INVENTORY Description : [Hidden Content]
    1 point
  6. Does this have any practical use?
    1 point
  7. It is probably becouse of your dump proto. The way the race flags are separated is not the same on server and client side. Open your dump_proto source, in the ItemCSVReader.cpp look for: int get_Mob_RaceFlag_Value(string inputString) Inside this look for: string* arInputString = StringSplit(inputString, ","); Probably you have "|" at the end, just change it to "," Or if you have "," there change it to "|" Hope you understand.
    1 point
  8. Cool, I use mysqltuner.pl for optimization but never heard about this
    1 point
  9. M2 Download Center Download Here ( Internal ) The textures of this water are ideally joined by no visible textures (seams). Colors are well matched to the climate of the metin. Download: [Hidden Content]
    1 point
  10. [Hidden Content] What Does Indexing Do? Indexing is the way to get an unordered table into an order that will maximize the query’s efficiency while searching. When a table is unindexed, the order of the rows will likely not be discernible by the query as optimized in anyway and your query will therefore have to search through the rows linearly. That is to say the queries will have to search through every row to find the rows matching the conditions. You can imagine this would take a while. Looking through every single row is not very efficient. For example, the table below represents a table in a fictional datasource, that is completely unordered. COMPANY_ID UNIT UNIT_COST 10 12 1.15 12 12 1.05 14 18 1.31 18 18 1.34 11 24 1.15 16 12 1.31 10 12 1.15 12 24 1.3 18 6 1.34 18 12 1.35 14 12 1.95 21 18 1.36 12 12 1.05 20 6 1.31 18 18 1.34 11 24 1.15 14 24 1.05 If we were to run the following query: SELECT company_id, units, unit_cost FROM index_test WHERE company_id = 18 The database would have to search through all 17 rows in the order they appear in the table, basically from top to bottom, one at a time. So to search for all of the potential instances of the company_id number 18, the database must look through the entire table for all appearances of 18 in the company_id column. This will only get more and more time consuming as the size of the table increases. As the sophistication of the data increases what could eventually happen is that a table with one billion rows is joined with another table with one billion rows and now instead of taking x amount of time, the query now has to search through twice the amount of rows costing twice the amount of time. You can see how this becomes problematic in our ever data saturated world. Tables increase in size and searching increases in execution time. Querying an unindexed table, if presented visually, would look like this: What indexing does is sets up the column you’re search conditions are on in a sorted order to assist in optimizing query performance. With an index on the company_id column the table would then, essentially, “look” like this: COMPANY_ID UNIT UNIT_COST 10 12 1.15 10 12 1.15 11 24 1.15 11 24 1.15 12 12 1.05 12 24 1.3 12 12 1.05 14 18 1.31 14 12 1.95 14 24 1.05 16 12 1.31 18 18 1.34 18 6 1.34 18 12 1.35 18 18 1.34 20 6 1.31 21 18 1.36 Now, the database can search for company_id number 18 and return all the requested columns for that row then move on to the next row. If the next row’s comapny_id number is also 18 then it will return the all the columns requested in the query. If the next row’s company_id is 20, the query knows to stop searching and the query will finish. How does Indexing Work? In reality the database table does not reorder itself every time the query conditions change in order to optimize the query performance, that would be unrealistic. In actuality what happens is the index causes the database to create a data structure. The data structure type is very likely a B-Tree. The advantages of the B-Tree are numerous, the main advantage for our purposes is that it is sortable. When the data structure is sorted in order it makes our search more efficient for the obvious reasons we pointed out above. When the index creates a data structure on a specific column it is important to note that no other column is stored in the data structure. Our data structure for the table above will only contain the the company_id numbers. Units and unit_costwill not be held in the data structure. How Does the Database Know What Other Fields in the Table to Return? Database indexes will also store pointers which are simply reference information for the location of the additional information in memory. Basically the index holds the company_id and that particular row’s home address on the memory disk. The index will actually look like this: COMPANY_ID POINTER 10 _123 10 _129 11 _127 11 _138 12 _124 12 _130 12 _135 14 _125 14 _131 14 _133 16 _128 18 _126 18 _131 18 _132 18 _137 20 _136 21 _134 With that index, the query can search for only the rows in the company_idcolumn that have 18 and then using the pointer can go into the table to find the specific row where that pointer lives. The query can then go into the table to retrieve the fields for the columns requested for the rows that meet the conditions. If the search were presented visually, it would look like this: To Re-Cap Indexing Adds a Data Structure with the Column that has the search conditions and a pointer The Pointer is the address on the memory disk of the row with the rest of the information The Data Structure Index is Sorted to optimize query efficiency The Query looks for the specific row in the index, the index refers to the pointer which will find the rest of the information. The Index reduces the number of rows the query has to search through from 17 to four.
    1 point
  11. ds qualification is required before u can exchange ds items.
    1 point
  12. In exchange.cpp change this: if (0 == s_vDSGrid[wBasePos]) to this: if (0 == s_vDSGrid[wPos])
    1 point
  13. Hi, check GetScreenWidth & GetScreenHeight of wndMgr.
    1 point
  14. Very good, I wil use it for wom.
    1 point
  15. Beta entire client is here unpacked: (Download) + (Protos) New emotions, emoticons Video New halloween content (pet, mount, costumes, hairstyles) Lots of haven't seen gui elements in the etc. And so on. Have fun with it. New german protos from beta, they increased the ITEM_APPLY_MAX_NUM 3 -> 4 (Only the german locale contains the new struct /emoticons/default_blink.png) (Mega) All : (Metin2 Download)
    1 point
  16. bool PackInitialize(const char * c_pszFolder) { NANOBEGIN if (_access(c_pszFolder, 0) != 0) return true; std::string stFolder(c_pszFolder); stFolder += "/"; CTextFileLoader::SetCacheMode(); #if defined(USE_RELATIVE_PATH) CEterPackManager::Instance().SetRelativePathMode(); #endif CEterPackManager::Instance().SetCacheMode(); CEterPackManager::Instance().SetSearchMode(CEterPackManager::SEARCH_PACK); CSoundData::SetPackMode(); CEterPackManager::Instance().RegisterPack("pack/example.eix", "*"); CEterPackManager::Instance().RegisterPack("pack/example.epk", "*"); CEterPackManager::Instance().RegisterRootPack((stFolder + std::string("root")).c_str()); NANOEND return true; }
    1 point
  17. Hello guys, sorry my offline status. I making new project 2k18 summer. :) new src, new english client, new server side.
    1 point
  18. In exchange.cpp chage this: if (0 == s_vDSGrid[wBasePos]) to this: if (0 == s_vDSGrid[wPos]) and now you can exchange
    1 point
  19. Very nice but I prefer to use an os.remove('loginInfo.py') to troll them ahaha xD
    1 point
×
×
  • 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.