Facebook
From Soft Bee, 4 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 128
  1. 1. Wchodzimy do char_battle.cpp i szukamy:
  2.  
  3. else if (1 == number(1, iGold10DropPct))
  4.         {
  5.                 //
  6.                 // µ· ĆřĹş˝Ä µĺ·Ó
  7.                 //
  8.                 for (int i = 0; i < 10; ++i)
  9.                 {
  10.                         int iGold = number(GetMobTable().dwGoldMin, GetMobTable().dwGoldMax);
  11.                         iGold = iGold * CHARACTER_MANAGER::instance().GetMobGoldAmountRate(pkAttacker) / 100;
  12.                         iGold *= iGoldMultipler;
  13.  
  14.                         if (iGold == 0)
  15.                         {
  16.                                 continue;
  17.                         }
  18.  
  19.                         // NOTE: µ· ĆřĹşŔş Á¦ 3ŔÇ ĽŐ Ăł¸®¸¦ ÇĎÁö ľĘŔ˝
  20.                         if ((item = ITEM_MANAGER::instance().CreateItem(1, iGold)))
  21.                         {
  22.                                 pos.x = GetX() + (number(-7, 7) * 20);
  23.                                 pos.y = GetY() + (number(-7, 7) * 20);
  24.  
  25.                                 item->AddToGround(GetMapIndex(), pos);
  26.                                 item->StartDestroyEvent();
  27.  
  28.                                 iTotalGold += iGold; // Total gold
  29.                         }
  30.                 }
  31.         }
  32. 2. Gdy znajdziemy kod, usuwamy całość podaną wyżej.
  33.  
  34. 3. Zapisujemy i kompilujemy game.
  35.  
  36.  
  37.  
  38. *Źródło https://metin2.dev/*
  39.  
  40.  
  41.  
  42. #Dodatkowo gdy chcemy usunąć z Bossów (Nie sprawdzane) .
  43.  
  44.  
  45.  
  46. Wbijamy do:
  47.  
  48.  
  49.  
  50. service.h
  51. Dodajemy:
  52.  
  53. #define DISABLE_YANG_BOMB
  54. Wbijamy do:
  55.  
  56. char_battle.cpp
  57.  
  58.  
  59.  
  60.  
  61. Szukamy:
  62.  
  63.         if (GetMobRank() >= MOB_RANK_BOSS && !IsStone() && GetMobTable().dwGoldMax != 0)
  64.         {
  65.                 if (1 == number(1, iGold10DropPct))
  66.                         iGoldMultipler *= 10; // 1% 확률로 돈 10배
  67.  
  68.                 int iSplitCount = number(25, 35);
  69.  
  70.                 for (int i = 0; i < iSplitCount; ++i)
  71.                 {
  72.                         int iGold = number(GetMobTable().dwGoldMin, GetMobTable().dwGoldMax) / iSplitCount;
  73.                         if (test_server)
  74.                                 sys_log(0, "iGold %d", iGold);
  75.                         iGold = iGold * CHARACTER_MANAGER::instance().GetMobGoldAmountRate(pkAttacker) / 100;
  76.                         iGold *= iGoldMultipler;
  77.  
  78.                         if (iGold == 0)
  79.                         {
  80.                                 continue ;
  81.                         }
  82.  
  83.                         if (test_server)
  84.                         {
  85.                                 sys_log(0, "Drop Moeny MobGoldAmountRate %d %d", CHARACTER_MANAGER::instance().GetMobGoldAmountRate(pkAttacker), iGoldMultipler);
  86.                                 sys_log(0, "Drop Money gold %d GoldMin %d GoldMax %d", iGold, GetMobTable().dwGoldMax, GetMobTable().dwGoldMax);
  87.                         }
  88.  
  89.                         // NOTE: 돈 폭탄은 제 3의 손 처리를 하지 않음
  90.                         if ((item = ITEM_MANAGER::instance().CreateItem(1, iGold)))
  91.                         {
  92.                                 pos.x = GetX() + ((number(-14, 14) + number(-14, 14)) * 23);
  93.                                 pos.y = GetY() + ((number(-14, 14) + number(-14, 14)) * 23);
  94.  
  95.                                 item->AddToGround(GetMapIndex(), pos);
  96.                                 item->StartDestroyEvent();
  97.  
  98.                                 iTotalGold += iGold; // Total gold
  99.                         }
  100.                 }
  101.         }
  102. Cały kod zmieniamy na:
  103.  
  104.         if (GetMobRank() >= MOB_RANK_BOSS && !IsStone() && GetMobTable().dwGoldMax != 0)
  105.         {
  106.                 if (1 == number(1, iGold10DropPct))
  107.                         iGoldMultipler *= 10; // 1% Č®·ü·Î µ· 10ąč
  108.  
  109.                 int iSplitCount = number(25, 35);
  110.  
  111.                 for (int i = 0; i < iSplitCount; ++i)
  112.                 {
  113.                         int iGold = number(GetMobTable().dwGoldMin, GetMobTable().dwGoldMax) / iSplitCount;
  114.                         if (test_server)
  115.                                 sys_log(0, "iGold %d", iGold);
  116.                         iGold = iGold * CHARACTER_MANAGER::instance().GetMobGoldAmountRate(pkAttacker) / 100;
  117.                         iGold *= iGoldMultipler;
  118.  
  119.                         if (iGold == 0)
  120.                         {
  121.                                 continue ;
  122.                         }
  123.  
  124.                         if (test_server)
  125.                         {
  126.                                 sys_log(0, "Drop Moeny MobGoldAmountRate %d %d", CHARACTER_MANAGER::instance().GetMobGoldAmountRate(pkAttacker), iGoldMultipler);
  127.                                 sys_log(0, "Drop Money gold %d GoldMin %d GoldMax %d", iGold, GetMobTable().dwGoldMax, GetMobTable().dwGoldMax);
  128.                         }
  129.  
  130.                         // NOTE: µ· ĆřĹşŔş Á¦ 3ŔÇ ĽŐ Ăł¸®¸¦ ÇĎÁö ľĘŔ
  131. #ifdef DISABLE_YANG_BOMB
  132.                         pkAttacker->GiveGold(iGold / iSplitCount);
  133.                         iTotalGold += iGold;
  134. #else
  135.                         if ((item = ITEM_MANAGER::instance().CreateItem(1, iGold)))
  136.                         {
  137.                                 pos.x = GetX() + ((number(-14, 14) + number(-14, 14)) * 23);
  138.                                 pos.y = GetY() + ((number(-14, 14) + number(-14, 14)) * 23);
  139.  
  140.                                 item->AddToGround(GetMapIndex(), pos);
  141.                                 item->StartDestroyEvent();
  142.  
  143.                                 iTotalGold += iGold; // Total gold
  144.                         }
  145. #endif
  146.                 }
  147.         }
  148.         // 1% Č®·ü·Î µ·Ŕ» 10°ł ¶łľî ¶ß¸°´Ů. (10ąč µĺ·ÓŔÓ
  149. #ifndef DISABLE_YANG_BOMB
  150.         else if (1 == number(1, iGold10DropPct))
  151.         {
  152.                 //
  153.                 // µ· ĆřĹş˝Ä µĺ·Ó
  154.                 //
  155.                 for (int i = 0; i < 10; ++i)
  156.                 {
  157.                         int iGold = number(GetMobTable().dwGoldMin, GetMobTable().dwGoldMax);
  158.                         iGold = iGold * CHARACTER_MANAGER::instance().GetMobGoldAmountRate(pkAttacker) / 100;
  159.                         iGold *= iGoldMultipler;
  160.  
  161.                         if (iGold == 0)
  162.                         {
  163.                                 continue;
  164.                         }
  165.  
  166.                         // NOTE: µ· ĆřĹşŔş Á¦ 3ŔÇ ĽŐ Ăł¸®¸¦ ÇĎÁö ľĘŔ˝
  167.                         if ((item = ITEM_MANAGER::instance().CreateItem(1, iGold)))
  168.                         {
  169.                                 pos.x = GetX() + (number(-7, 7) * 20);
  170.                                 pos.y = GetY() + (number(-7, 7) * 20);
  171.  
  172.                                 item->AddToGround(GetMapIndex(), pos);
  173.                                 item->StartDestroyEvent();
  174.  
  175.                                 iTotalGold += iGold; // Total gold
  176.                         }
  177.                 }
  178.         }
  179. #endif
  180.         else
  181.         {
  182.                 //
  183.                 // ŔĎąÝŔűŔÎ ąć˝ÄŔÇ µ· µĺ·Ó
  184.                 //
  185.                 int iGold = number(GetMobTable().dwGoldMin, GetMobTable().dwGoldMax);
  186.                 iGold = iGold * CHARACTER_MANAGER::instance().GetMobGoldAmountRate(pkAttacker) / 100;
  187.                 iGold *= iGoldMultipler;
  188.  
  189.                 int iSplitCount;
  190.  
  191.                 if (iGold >= 3 && !LC_IsYMIR())
  192.                         iSplitCount = number(1, 3);
  193.                 else if (GetMobRank() >= MOB_RANK_BOSS)
  194.                 {
  195.                         iSplitCount = number(3, 10);
  196.  
  197.                         if ((iGold / iSplitCount) == 0)
  198.                                 iSplitCount = 1;
  199.                 }
  200.                 else
  201.                         iSplitCount = 1;
  202.  
  203.                 if (iGold != 0)
  204.                 {
  205.                         iTotalGold += iGold; // Total gold
  206.  
  207.                         for (int i = 0; i < iSplitCount; ++i)
  208.                         {
  209.                                 if (isAutoLoot)
  210.                                 {
  211.                                         pkAttacker->GiveGold(iGold / iSplitCount);
  212.                                 }
  213.                                 else if ((item = ITEM_MANAGER::instance().CreateItem(1, iGold / iSplitCount)))
  214.                                 {
  215.                                         pos.x = GetX() + (number(-7, 7) * 20);
  216.                                         pos.y = GetY() + (number(-7, 7) * 20);
  217.  
  218.                                         item->AddToGround(GetMapIndex(), pos);
  219.                                         item->StartDestroyEvent();
  220.                                 }
  221.                         }
  222.                 }
  223.         }