Advertisement
xFaelz

Refinar Amunra com PL até +15

Apr 24th, 2018
344
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 12.17 KB | None | 0 0
  1. //Source Code By Faelz' && Thiagodp
  2. //Adicionar no _MSG_UseItem.cpp na parte de PO e PL
  3. #pragma region Refinar item Selado no inventário
  4.             if (itemtype == 5)
  5.             {
  6.                 if (sanc >= 9)
  7.                 {
  8.                     SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Refine_More]);
  9.                     SendItem(conn, m->SourType, m->SourPos, item);
  10.                     return;
  11.                 }
  12.  
  13.                 if (sanc >= 6 && Vol == 4)
  14.                 {
  15.                     SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Refine_More]);
  16.                     SendItem(conn, m->SourType, m->SourPos, item);
  17.                     return;
  18.                 }
  19.  
  20.                 if (sanc == 0)
  21.                 {
  22.                     if (dest->stEffect[0].cEffect && dest->stEffect[0].cEffect != 43 && (dest->stEffect[0].cEffect && dest->stEffect[0].cEffect < 116 || dest->stEffect[0].cEffect && dest->stEffect[0].cEffect > 125))
  23.                     {
  24.                         if (dest->stEffect[1].cEffect && dest->stEffect[1].cEffect != 43 && (dest->stEffect[1].cEffect && dest->stEffect[1].cEffect < 116 || dest->stEffect[1].cEffect && dest->stEffect[1].cEffect > 125))
  25.                         {
  26.                             if (dest->stEffect[2].cEffect && dest->stEffect[2].cEffect != 43 && (dest->stEffect[2].cEffect && dest->stEffect[2].cEffect < 116 || dest->stEffect[2].cEffect && dest->stEffect[2].cEffect > 125))
  27.                             {
  28.                                 SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Refine_More]);
  29.                                 SendItem(conn, m->SourType, m->SourPos, item);
  30.                                 return;
  31.                             }
  32.                             dest->stEffect[2].cEffect = 43;
  33.                             dest->stEffect[2].cValue = 0;
  34.                         }
  35.                         else
  36.                         {
  37.                             dest->stEffect[1].cEffect = 43;
  38.                             dest->stEffect[1].cValue = 0;
  39.                         }
  40.                     }
  41.                     else
  42.                     {
  43.                         dest->stEffect[0].cEffect = 43;
  44.                         dest->stEffect[0].cValue = 0;
  45.                     }
  46.                 }
  47.  
  48.                 srand(time(NULL) / 5 * (rand() % 500) * 5);//Garante valores realmente aleatorio
  49.                 int _rd = rand() % 100;
  50.  
  51.                 int ref = sanc;
  52.  
  53.                 int _chance = g_pCelestialRate[ref];
  54.  
  55.                 if (Vol == 5 && item->sIndex == 4141)
  56.                 {
  57.                     _chance = 100;
  58.                 }
  59.  
  60.                 if (_rd <= _chance)
  61.                 {
  62.                     sprintf(temp, "%s", g_pMessageStringTable[_NN_Refine_Success]);
  63.                     SendClientMessage(conn, temp);
  64.  
  65.                     BASE_SetItemSanc(dest, ref+1, 0);
  66.  
  67.                     pMob[conn].GetCurrentScore(conn);
  68.  
  69.                     SendScore(conn);
  70.                     sprintf(temp, "useitem,refine success %d+%d - (%d,%d,%d)", dest->sIndex, sanc, item->stEffect[0].cEffect, item->stEffect[1].cEffect, item->stEffect[2].cEffect);
  71.                     ItemLog(temp, pUser[conn].AccountName, pUser[conn].IP);
  72.  
  73.  
  74.                     if (amount > 1)
  75.                     {
  76.                         BASE_SetItemAmount(item, amount - 1);
  77.                     }
  78.  
  79.                     else
  80.                     {
  81.                         memset(item, 0, sizeof(STRUCT_ITEM));
  82.                     }
  83.  
  84.                                      
  85.                     SendItem(conn, m->DestType, m->DestPos, dest);
  86.                     SendEmotion(conn, 14, 3);
  87.                 }
  88.  
  89.                 else
  90.                 {
  91.                     sprintf(temp, "%s", g_pMessageStringTable[_NN_Fail_To_Refine]);
  92.  
  93.                     SendClientMessage(conn, temp);
  94.                     sprintf(temp, "useitem,refine fail %d+%d - (%d,%d,%d)", dest->sIndex, sanc, item->stEffect[0].cEffect, item->stEffect[1].cEffect, item->stEffect[2].cEffect);
  95.                     ItemLog(temp, pUser[conn].AccountName, pUser[conn].IP);
  96.  
  97.                     if (amount > 1)
  98.                         BASE_SetItemAmount(item, amount - 1);
  99.  
  100.                     else
  101.                         memset(item, 0, sizeof(STRUCT_ITEM));
  102.  
  103.                                      
  104.                     BASE_ClearItem(dest);
  105.                     SendItem(conn, m->DestType, m->DestPos, dest);
  106.  
  107.                     int sFace = pMob[conn].MOB.Equip[0].sIndex / 10;
  108.  
  109.                     if (sFace)
  110.                         SendEmotion(conn, 15, 0);
  111.  
  112.                     else
  113.                         SendEmotion(conn, 20, 0);
  114.                 }
  115.  
  116.                 return;
  117.             }
  118.             SendClientMessage(conn, g_pMessageStringTable[_NN_Only_To_Equips]);
  119.             SendItem(conn, m->SourType, m->SourPos, item);
  120.             return;
  121. #pragma endregion
  122.         }
  123.  
  124.         if (m->DestType == ITEM_PLACE_EQUIP && m->DestPos == 0 || m->DestType || m->DestPos > 11 && m->DestPos < 15 && dest->sIndex != 753 && dest->sIndex != 769 && dest->sIndex != 1726 && !Egg)
  125.         {
  126.             SendClientMessage(conn, g_pMessageStringTable[_NN_Only_To_Equips]);
  127.  
  128.             ItemLog("err,use item fail - dest", pUser[conn].AccountName, pUser[conn].IP);
  129.  
  130.             SendItem(conn, m->SourType, m->SourPos, item);
  131.             return;
  132.         }
  133.  
  134.         if (dest == NULL)
  135.         {
  136.             SendClientMessage(conn, g_pMessageStringTable[_NN_Only_To_Equips]);
  137.             ItemLog("use item fail - dest", pUser[conn].AccountName, pUser[conn].IP);
  138.             SendItem(conn, m->SourType, m->SourPos, item);
  139.             return;
  140.         }
  141.  
  142.         int dstVolatile = BASE_GetItemAbility(dest, EF_VOLATILE);
  143.  
  144.         if (dstVolatile)
  145.         {
  146.             SendClientMessage(conn, g_pMessageStringTable[_NN_Only_To_Equips]);
  147.             SendItem(conn, m->SourType, m->SourPos, item);
  148.             return;
  149.         }
  150.  
  151.         int isSanc = BASE_GetItemAbility(dest, EF_NOSANC);
  152.  
  153.         if (isSanc)
  154.         {
  155.             SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Refine_More]);
  156.             SendItem(conn, m->SourType, m->SourPos, item);
  157.             return;
  158.         }
  159.  
  160.         int sanc = BASE_GetItemSanc(dest);
  161.         int itemtype = BASE_GetItemAbility(dest, EF_MOBTYPE);
  162.  
  163.         if (sanc >= 6 && Vol == 4)
  164.         {
  165.             SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Refine_More]);
  166.             SendItem(conn, m->SourType, m->SourPos, item);
  167.             return;
  168.         }
  169.  
  170. #pragma region Refinar item celestial / HC
  171.         if (itemtype == 3)
  172.         {
  173.             if (sanc >= REF_15)
  174.             {
  175.                 SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Refine_More]);
  176.                 SendItem(conn, m->SourType, m->SourPos, item);
  177.                 return;
  178.             }
  179.  
  180.             if (sanc >= 6 && Vol == 4)
  181.             {
  182.                 SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Refine_More]);
  183.                 SendItem(conn, m->SourType, m->SourPos, item);
  184.                 return;
  185.             }
  186.  
  187.             if (sanc == 0)
  188.             {
  189.                 if (dest->stEffect[0].cEffect && dest->stEffect[0].cEffect != 43 && (dest->stEffect[0].cEffect && dest->stEffect[0].cEffect < 116 || dest->stEffect[0].cEffect && dest->stEffect[0].cEffect > 125))
  190.                 {
  191.                     if (dest->stEffect[1].cEffect && dest->stEffect[1].cEffect != 43 && (dest->stEffect[1].cEffect && dest->stEffect[1].cEffect < 116 || dest->stEffect[1].cEffect && dest->stEffect[1].cEffect > 125))
  192.                     {
  193.                         if (dest->stEffect[2].cEffect && dest->stEffect[2].cEffect != 43 && (dest->stEffect[2].cEffect && dest->stEffect[2].cEffect < 116 || dest->stEffect[2].cEffect && dest->stEffect[2].cEffect > 125))
  194.                         {
  195.                             SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Refine_More]);
  196.                             SendItem(conn, m->SourType, m->SourPos, item);
  197.                             return;
  198.                         }
  199.                         dest->stEffect[2].cEffect = 43;
  200.                         dest->stEffect[2].cValue = 0;
  201.                     }
  202.                     else
  203.                     {
  204.                         dest->stEffect[1].cEffect = 43;
  205.                         dest->stEffect[1].cValue = 0;
  206.                     }
  207.                 }
  208.                 else
  209.                 {
  210.                     dest->stEffect[0].cEffect = 43;
  211.                     dest->stEffect[0].cValue = 0;
  212.                 }
  213.             }
  214.            
  215.             srand(time(NULL) / 5 * (rand() % 500) * 5);//Garante valores realmente aleatorio
  216.             int _rd;
  217.             _rd = rand() % 199;
  218.             if (_rd > 100)
  219.             {
  220.                 _rd = _rd - 99;
  221.             }
  222.  
  223.             int ref = sanc;
  224.  
  225.             if (ref == REF_10)
  226.             {
  227.                 ref = 10;
  228.             }
  229.  
  230.             else if (ref == REF_11)
  231.             {
  232.                 ref = 11;
  233.             }
  234.  
  235.             else if (ref == REF_12)
  236.             {
  237.                 ref = 12;
  238.             }
  239.  
  240.             else if (ref == REF_13)
  241.             {
  242.                 ref = 13;
  243.             }
  244.  
  245.             else if (ref == REF_14)
  246.             {
  247.                 ref = 14;
  248.             }
  249.  
  250.             else if (ref == REF_15)
  251.             {
  252.                 ref = 15;
  253.             }
  254.  
  255.             int _chance = g_pCelestialRate[ref];
  256.  
  257.             if (_chance > _rd )
  258.             {
  259.                 sprintf(temp, "%s  %d/%d", "Sucesso ao refinar.", _rd, _chance);
  260.                 SendClientMessage(conn, temp);
  261.  
  262.                                      
  263.                 BASE_SetItemSanc(dest, ref+1, 3);
  264.  
  265.                 pMob[conn].GetCurrentScore(conn);
  266.  
  267.                 SendScore(conn);
  268.                 sprintf(temp, "useitem,refine success %d+%d - (%d,%d,%d)", dest->sIndex, sanc, item->stEffect[0].cEffect, item->stEffect[1].cEffect, item->stEffect[2].cEffect);
  269.                 ItemLog(temp, pUser[conn].AccountName, pUser[conn].IP);
  270.  
  271.  
  272.                 //SendNotice(g_pMessageStringTable[_SS_Combin_12Succ]);
  273.  
  274.                 if (amount > 1)
  275.                 {
  276.                     BASE_SetItemAmount(item, amount - 1);
  277.                 }
  278.  
  279.                 else
  280.                 {
  281.                     memset(item, 0, sizeof(STRUCT_ITEM));
  282.                 }
  283.  
  284.                                      
  285.                 SendItem(conn, m->DestType, m->DestPos, dest);
  286.                 SendEmotion(conn, 14, 3);
  287.             }
  288.  
  289.             else
  290.             {
  291.                 sprintf(temp, "%s  %d/%d", "Falha ao refinar.", _rd, _chance);
  292.  
  293.                 SendClientMessage(conn, temp);
  294.                 sprintf(temp, "useitem,refine fail %d+%d - (%d,%d,%d)", dest->sIndex, sanc, item->stEffect[0].cEffect, item->stEffect[1].cEffect, item->stEffect[2].cEffect);
  295.                 ItemLog(temp, pUser[conn].AccountName, pUser[conn].IP);
  296.  
  297.                 if (amount > 1)
  298.                     BASE_SetItemAmount(item, amount - 1);
  299.  
  300.                 else
  301.                     memset(item, 0, sizeof(STRUCT_ITEM));
  302.  
  303.                                      
  304.                 BASE_SetItemSanc(dest, 0, 0);
  305.                 SendItem(conn, m->DestType, m->DestPos, dest);
  306.  
  307.                 int sFace = pMob[conn].MOB.Equip[0].sIndex / 10;
  308.  
  309.                 if (sFace)
  310.                     SendEmotion(conn, 15, 0);
  311.  
  312.                 else
  313.                     SendEmotion(conn, 20, 0);
  314.             }
  315.  
  316.             return;
  317.         }
  318. #pragma endregion
  319. #pragma region Refinar Amunra
  320.         if (g_pItemList[dest->sIndex].Extra == 3464)
  321.         {
  322.             if (sanc >= REF_15)
  323.             {
  324.                 SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Refine_More]);
  325.                 SendItem(conn, m->SourType, m->SourPos, item);
  326.                 return;
  327.             }
  328.  
  329.             if (sanc >= 6 && Vol == 4)
  330.             {
  331.                 SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Refine_More]);
  332.                 SendItem(conn, m->SourType, m->SourPos, item);
  333.                 return;
  334.             }
  335.  
  336.             if (sanc == 0)
  337.             {
  338.                 if (dest->stEffect[0].cEffect && dest->stEffect[0].cEffect != 43 && (dest->stEffect[0].cEffect && dest->stEffect[0].cEffect < 116 || dest->stEffect[0].cEffect && dest->stEffect[0].cEffect > 125))
  339.                 {
  340.                     if (dest->stEffect[1].cEffect && dest->stEffect[1].cEffect != 43 && (dest->stEffect[1].cEffect && dest->stEffect[1].cEffect < 116 || dest->stEffect[1].cEffect && dest->stEffect[1].cEffect > 125))
  341.                     {
  342.                         if (dest->stEffect[2].cEffect && dest->stEffect[2].cEffect != 43 && (dest->stEffect[2].cEffect && dest->stEffect[2].cEffect < 116 || dest->stEffect[2].cEffect && dest->stEffect[2].cEffect > 125))
  343.                         {
  344.                             SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Refine_More]);
  345.                             SendItem(conn, m->SourType, m->SourPos, item);
  346.                             return;
  347.                         }
  348.                         dest->stEffect[2].cEffect = 43;
  349.                         dest->stEffect[2].cValue = 0;
  350.                     }
  351.                     else
  352.                     {
  353.                         dest->stEffect[1].cEffect = 43;
  354.                         dest->stEffect[1].cValue = 0;
  355.                     }
  356.                 }
  357.                 else
  358.                 {
  359.                     dest->stEffect[0].cEffect = 43;
  360.                     dest->stEffect[0].cValue = 0;
  361.                 }
  362.             }
  363.  
  364.            
  365.             //srand(time(NULL) / 5 * (rand() % 500) * 5);//Garante valores realmente aleatorio
  366.  
  367.             srand(time(NULL) / 5 * (rand() % 500) * 5);//Garante valores realmente aleatorio
  368.             int ref = sanc;
  369.  
  370.             if (ref == REF_10)
  371.             {
  372.                 ref = 10;
  373.             }
  374.  
  375.             else if (ref == REF_11)
  376.             {
  377.                 ref = 11;
  378.             }
  379.  
  380.             else if (ref == REF_12)
  381.             {
  382.                 ref = 12;
  383.             }
  384.  
  385.             else if (ref == REF_13)
  386.             {
  387.                 ref = 13;
  388.             }
  389.  
  390.             else if (ref == REF_14)
  391.             {
  392.                 ref = 14;
  393.             }
  394.  
  395.             else if (ref == REF_15)
  396.             {
  397.                 ref = 15;
  398.             }
  399.  
  400.             int _chance = g_pCelestialRate[ref];
  401.             int _rd;
  402.             _rd = rand() % 199;
  403.             if(_rd > 100)
  404.             {
  405.                 _rd = _rd - 99;
  406.             }
  407.  
  408.             if (_chance > _rd)
  409.             {
  410.                 sprintf(temp, "%s  %d/%d", "Sucesso ao refinar.", _rd, _chance);
  411.                 SendClientMessage(conn, temp);
  412.  
  413.  
  414.                 BASE_SetItemSanc(dest, ref + 1, 3);
  415.  
  416.                 pMob[conn].GetCurrentScore(conn);
  417.  
  418.                 SendScore(conn);
  419.                 sprintf(temp, "useitem,refine success %d+%d - (%d,%d,%d)", dest->sIndex, sanc, item->stEffect[0].cEffect, item->stEffect[1].cEffect, item->stEffect[2].cEffect);
  420.                 ItemLog(temp, pUser[conn].AccountName, pUser[conn].IP);
  421.  
  422.  
  423.                 //SendNotice(g_pMessageStringTable[_SS_Combin_12Succ]);
  424.  
  425.                 if (amount > 1)
  426.                 {
  427.                     BASE_SetItemAmount(item, amount - 1);
  428.                 }
  429.  
  430.                 else
  431.                 {
  432.                     memset(item, 0, sizeof(STRUCT_ITEM));
  433.                 }
  434.  
  435.  
  436.                 SendItem(conn, m->DestType, m->DestPos, dest);
  437.                 SendEmotion(conn, 14, 3);
  438.             }
  439.  
  440.             else
  441.             {
  442.                 sprintf(temp, "%s  %d/%d", "Falha ao refinar.", _rd, _chance);
  443.                 SendClientMessage(conn, temp);
  444.  
  445.                 sprintf(temp, "useitem,refine fail %d+%d - (%d,%d,%d)", dest->sIndex, sanc, item->stEffect[0].cEffect, item->stEffect[1].cEffect, item->stEffect[2].cEffect);
  446.                 ItemLog(temp, pUser[conn].AccountName, pUser[conn].IP);
  447.  
  448.                 if (amount > 1)
  449.                     BASE_SetItemAmount(item, amount - 1);
  450.  
  451.                 else
  452.                     memset(item, 0, sizeof(STRUCT_ITEM));
  453.  
  454.  
  455.                 BASE_SetItemSanc(dest, 0, 0);
  456.                 SendItem(conn, m->DestType, m->DestPos, dest);
  457.  
  458.                 int sFace = pMob[conn].MOB.Equip[0].sIndex / 10;
  459.  
  460.                 if (sFace)
  461.                     SendEmotion(conn, 15, 0);
  462.  
  463.                 else
  464.                     SendEmotion(conn, 20, 0);
  465.             }
  466.  
  467.             return;
  468.         }
  469. #pragma endregion
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement