Перейти к публикации
Dark Asura

Подскажите по поводу Шанса заточки после 16

Рекомендованные сообщения

Подскажите по поводу шанса заточки после 16. На 16 заточить 30 проц., а дальше? И какая максимальная заточка? Просто тип заточил топ ц на 17, и возник вопрос, какие шансы. 😁

Ссылка на сообщение
Поделиться на других сайтах

On 12/23/2024 at 7:17 AM, Dark Asura said:

И какая максимальная заточка?

+65324 или типо того 

Ссылка на сообщение
Поделиться на других сайтах

23.12.2024 в 07:38, НечтоХрустящее сказал:

+65324 или типо того 

То есть на сервере нет ограничений,а шас какой на 17,18 ?

Ссылка на сообщение
Поделиться на других сайтах

23.12.2024 в 07:54, Dark Asura сказал:

То есть на сервере нет ограничений,а шас какой на 17,18 ?

По ответу администрации - базовый, а базовый ищите в интернете 

Ссылка на сообщение
Поделиться на других сайтах

23.12.2024 в 07:17, Dark Asura сказал:

Подскажите по поводу шанса заточки после 16. На 16 заточить 30 проц., а дальше?

Скрытый текст


char __thiscall CWorldItem::EnchantItem(CWorldItem *this, CWorldItem *itemToEnchant, CWorldUser *user)
{
  int enchantLevel; // esi@3
  CSharedItemConstData *constSharedData; // eax@4
  CUserSocket *userSocket; // eax@11 MAPDST
  double dice2; // st7@28
  int itemClassId; // [sp-4h] [bp-3Ch]@11 MAPDST
  int v11; // [sp+0h] [bp-38h]@1
  double dice; // [sp+Ch] [bp-2Ch]@9
  double chance; // [sp+14h] [bp-24h]@6
  int *v15; // [sp+28h] [bp-10h]@1
  int v16; // [sp+34h] [bp-4h]@1

  v15 = &v11;
  v16 = 0;
  if ( !itemToEnchant )                         // Add lock/unlock!!
  {
    return false;
  }
  enchantLevel = itemToEnchant->m_d.m_sharedData->enchantLevel;
  if ( itemToEnchant->vtable->m_v.IsWeapon(itemToEnchant) )
  {
    constSharedData = itemToEnchant->m_d.m_constSharedData;
    if ( constSharedData->crystalType >= 2 && constSharedData->isMagicWeapon )
    {
      chance = 100.0 - 60.0;
      if ( enchantLevel < 3 )
      {
LABEL_11:
        userSocket = user->m_d.m_userSocket;
        itemClassId = itemToEnchant->m_d.m_sharedData->itemClassId;
        if ( enchantLevel )
        {
          CServerSocketBase::Send((CServerSocketBase *)userSocket, (const char *)"cdddddd", ServerToClientPacket_SystemMessage, SystemMessageId_s1s2_has_been_successfully_enchanted, 2, 1, enchantLevel, 3, itemClassId);
        }
        else
        {
          CServerSocketBase::Send((CServerSocketBase *)userSocket, (const char *)"cdddd", ServerToClientPacket_SystemMessage, SystemMessageId_s1_has_been_successfully_enchanted, 1, 3, itemClassId);
        }
        CDB::RequestEnchantItem(&g_cacheD, this, itemToEnchant, enchantLevel + 1, user);
        return true;
      }
      if ( enchantLevel >= 15 )
      {
        chance = chance * 0.5;
      }
      dice = Utils::GetRandomNumber(0.0, 100.0);
      if ( dice <= chance )
      {
        CLog::Add(&g_winlog, LOG_REQUEST, L"magic weapon enchant success, prev enchanted[%d], dice[%f], prob[%f]", enchantLevel, dice, chance);
        goto LABEL_11;
      }
      CLog::Add(&g_winlog, LOG_REQUEST, L"magic weapon enchant fail, prev enchanted[%d], dice[%f], prob[%f]", enchantLevel, dice, chance);
    }
    else
    {
      chance = 100.0 - 30.0;
      if ( enchantLevel < 3 )
      {
        goto LABEL_11;
      }
      if ( enchantLevel >= 15 )
      {
        chance = chance * 0.5;
      }
      dice = Utils::GetRandomNumber(0.0, 100.0);
      if ( dice <= chance )
      {
        CLog::Add(&g_winlog, LOG_REQUEST, L"weapon enchant success, prev enchanted[%d], dice[%f], prob[%f]", enchantLevel, dice, chance);
        goto LABEL_11;
      }
      CLog::Add(&g_winlog, LOG_REQUEST, L"weapon enchant fail, prev enchanted[%d], dice[%f], prob[%f]", enchantLevel, dice, chance);
    }
  }
  else
  {
    if ( enchantLevel < 3 )
    {
      goto LABEL_11;
    }
    if ( enchantLevel >= 20 )
    {
      chance = 0.0;
    }
    else
    {
      chance = 100.0 - g_armorEnchantFailureChances[enchantLevel] * 100.0;
    }
    if ( enchantLevel >= 15 )
    {
      chance = chance * 0.5;
    }
    dice2 = Utils::GetRandomNumber(0.0, 100.0);
    dice = dice2;
    if ( enchantLevel < 20 && dice2 <= chance )
    {
      CLog::Add(&g_winlog, LOG_REQUEST, L"armor enchant success, prev enchanted[%d], dice[%f], prob[%f]", enchantLevel, dice, chance);
      goto LABEL_11;
    }
    CLog::Add(&g_winlog, LOG_REQUEST, L"armor enchant fail, prev enchanted[%d], dice[%f], prob[%f]", enchantLevel, dice, chance);
  }
  userSocket = user->m_d.m_userSocket;
  itemClassId = itemToEnchant->m_d.m_sharedData->itemClassId;
  if ( enchantLevel )
  {
    CServerSocketBase::Send((CServerSocketBase *)userSocket, (const char *)"cdddddd", ServerToClientPacket_SystemMessage, SystemMessageId_Enchantment_has_failed_s1s2_has_been_evaporated, 2, 1, enchantLevel, 3, itemClassId);
  }
  else
  {
    CServerSocketBase::Send((CServerSocketBase *)userSocket, (const char *)"cdddd", ServerToClientPacket_SystemMessage, SystemMessageId_Enchantment_has_failed_s1_has_been_evaporated, 1, 3, itemClassId);
  }
  CDB::RequestEnchantItemFail(&g_cacheD, this, itemToEnchant, user);
  return true;
}

Если я правильно понимаю, то шанс заточки файтерского оружия 70% (chance = 100.0 - 30.0;), после +15 шанс снижается в 2 раза (if ( enchantLevel >= 15 ) { chance = chance * 0.5;))

магического 40% (chance = 100.0 - 60.0;) и так же после +15 шанс снижается 2 раза до 20%.

Если я правильно понимаю вот эту часть (if ( enchantLevel >= 20 ) { chance = 0.0;), то после 20 оружие вообще не точится, хотя, я на GF PTS'e вроде бы точил "рисованное" оружие после 20.

Взято от сюда, я не программист и эту билеберду сложно понимаю. https://mmo-dev.info/threads/Формула-заточки-предметов-на-pts.11089/

 

Ссылка на сообщение
Поделиться на других сайтах

23.12.2024 в 19:29, nоmоre сказал:
  Показать содержимое

 

char __thiscall CWorldItem::EnchantItem(CWorldItem *this, CWorldItem *itemToEnchant, CWorldUser *user)
{
  int enchantLevel; // esi@3
  CSharedItemConstData *constSharedData; // eax@4
  CUserSocket *userSocket; // eax@11 MAPDST
  double dice2; // st7@28
  int itemClassId; // [sp-4h] [bp-3Ch]@11 MAPDST
  int v11; // [sp+0h] [bp-38h]@1
  double dice; // [sp+Ch] [bp-2Ch]@9
  double chance; // [sp+14h] [bp-24h]@6
  int *v15; // [sp+28h] [bp-10h]@1
  int v16; // [sp+34h] [bp-4h]@1

  v15 = &v11;
  v16 = 0;
  if ( !itemToEnchant )                         // Add lock/unlock!!
  {
    return false;
  }
  enchantLevel = itemToEnchant->m_d.m_sharedData->enchantLevel;
  if ( itemToEnchant->vtable->m_v.IsWeapon(itemToEnchant) )
  {
    constSharedData = itemToEnchant->m_d.m_constSharedData;
    if ( constSharedData->crystalType >= 2 && constSharedData->isMagicWeapon )
    {
      chance = 100.0 - 60.0;
      if ( enchantLevel < 3 )
      {
LABEL_11:
        userSocket = user->m_d.m_userSocket;
        itemClassId = itemToEnchant->m_d.m_sharedData->itemClassId;
        if ( enchantLevel )
        {
          CServerSocketBase::Send((CServerSocketBase *)userSocket, (const char *)"cdddddd", ServerToClientPacket_SystemMessage, SystemMessageId_s1s2_has_been_successfully_enchanted, 2, 1, enchantLevel, 3, itemClassId);
        }
        else
        {
          CServerSocketBase::Send((CServerSocketBase *)userSocket, (const char *)"cdddd", ServerToClientPacket_SystemMessage, SystemMessageId_s1_has_been_successfully_enchanted, 1, 3, itemClassId);
        }
        CDB::RequestEnchantItem(&g_cacheD, this, itemToEnchant, enchantLevel + 1, user);
        return true;
      }
      if ( enchantLevel >= 15 )
      {
        chance = chance * 0.5;
      }
      dice = Utils::GetRandomNumber(0.0, 100.0);
      if ( dice <= chance )
      {
        CLog::Add(&g_winlog, LOG_REQUEST, L"magic weapon enchant success, prev enchanted[%d], dice[%f], prob[%f]", enchantLevel, dice, chance);
        goto LABEL_11;
      }
      CLog::Add(&g_winlog, LOG_REQUEST, L"magic weapon enchant fail, prev enchanted[%d], dice[%f], prob[%f]", enchantLevel, dice, chance);
    }
    else
    {
      chance = 100.0 - 30.0;
      if ( enchantLevel < 3 )
      {
        goto LABEL_11;
      }
      if ( enchantLevel >= 15 )
      {
        chance = chance * 0.5;
      }
      dice = Utils::GetRandomNumber(0.0, 100.0);
      if ( dice <= chance )
      {
        CLog::Add(&g_winlog, LOG_REQUEST, L"weapon enchant success, prev enchanted[%d], dice[%f], prob[%f]", enchantLevel, dice, chance);
        goto LABEL_11;
      }
      CLog::Add(&g_winlog, LOG_REQUEST, L"weapon enchant fail, prev enchanted[%d], dice[%f], prob[%f]", enchantLevel, dice, chance);
    }
  }
  else
  {
    if ( enchantLevel < 3 )
    {
      goto LABEL_11;
    }
    if ( enchantLevel >= 20 )
    {
      chance = 0.0;
    }
    else
    {
      chance = 100.0 - g_armorEnchantFailureChances[enchantLevel] * 100.0;
    }
    if ( enchantLevel >= 15 )
    {
      chance = chance * 0.5;
    }
    dice2 = Utils::GetRandomNumber(0.0, 100.0);
    dice = dice2;
    if ( enchantLevel < 20 && dice2 <= chance )
    {
      CLog::Add(&g_winlog, LOG_REQUEST, L"armor enchant success, prev enchanted[%d], dice[%f], prob[%f]", enchantLevel, dice, chance);
      goto LABEL_11;
    }
    CLog::Add(&g_winlog, LOG_REQUEST, L"armor enchant fail, prev enchanted[%d], dice[%f], prob[%f]", enchantLevel, dice, chance);
  }
  userSocket = user->m_d.m_userSocket;
  itemClassId = itemToEnchant->m_d.m_sharedData->itemClassId;
  if ( enchantLevel )
  {
    CServerSocketBase::Send((CServerSocketBase *)userSocket, (const char *)"cdddddd", ServerToClientPacket_SystemMessage, SystemMessageId_Enchantment_has_failed_s1s2_has_been_evaporated, 2, 1, enchantLevel, 3, itemClassId);
  }
  else
  {
    CServerSocketBase::Send((CServerSocketBase *)userSocket, (const char *)"cdddd", ServerToClientPacket_SystemMessage, SystemMessageId_Enchantment_has_failed_s1_has_been_evaporated, 1, 3, itemClassId);
  }
  CDB::RequestEnchantItemFail(&g_cacheD, this, itemToEnchant, user);
  return true;
}

Если я правильно понимаю, то шанс заточки файтерского оружия 70% (chance = 100.0 - 30.0;), после +15 шанс снижается в 2 раза (if ( enchantLevel >= 15 ) { chance = chance * 0.5;))

магического 40% (chance = 100.0 - 60.0;) и так же после +15 шанс снижается 2 раза до 20%.

Если я правильно понимаю вот эту часть (if ( enchantLevel >= 20 ) { chance = 0.0;), то после 20 оружие вообще не точится, хотя, я на GF PTS'e вроде бы точил "рисованное" оружие после 20.

Взято от сюда, я не программист и эту билеберду сложно понимаю. https://mmo-dev.info/threads/Формула-заточки-предметов-на-pts.11089/

 

шансы тут динамические  вроде бы,и после +12 если не ошибаюсь высвечивает предупреждение что ты скорее всего сломаешь это,а вот после 15 думаю что шанс меньше на точку в 2 раза посравнению с заточкой на +15

тобой выкопаный код я не смотрел даже ибо далек от етого 

Изменено пользователем CodeV
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...