Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Source Code By Faelz' && Thiagodp
- //Adicionar no _MSG_UseItem.cpp na parte de PO e PL
- #pragma region Refinar item Selado no inventário
- if (itemtype == 5)
- {
- if (sanc >= 9)
- {
- SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Refine_More]);
- SendItem(conn, m->SourType, m->SourPos, item);
- return;
- }
- if (sanc >= 6 && Vol == 4)
- {
- SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Refine_More]);
- SendItem(conn, m->SourType, m->SourPos, item);
- return;
- }
- if (sanc == 0)
- {
- 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))
- {
- 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))
- {
- 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))
- {
- SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Refine_More]);
- SendItem(conn, m->SourType, m->SourPos, item);
- return;
- }
- dest->stEffect[2].cEffect = 43;
- dest->stEffect[2].cValue = 0;
- }
- else
- {
- dest->stEffect[1].cEffect = 43;
- dest->stEffect[1].cValue = 0;
- }
- }
- else
- {
- dest->stEffect[0].cEffect = 43;
- dest->stEffect[0].cValue = 0;
- }
- }
- srand(time(NULL) / 5 * (rand() % 500) * 5);//Garante valores realmente aleatorio
- int _rd = rand() % 100;
- int ref = sanc;
- int _chance = g_pCelestialRate[ref];
- if (Vol == 5 && item->sIndex == 4141)
- {
- _chance = 100;
- }
- if (_rd <= _chance)
- {
- sprintf(temp, "%s", g_pMessageStringTable[_NN_Refine_Success]);
- SendClientMessage(conn, temp);
- BASE_SetItemSanc(dest, ref+1, 0);
- pMob[conn].GetCurrentScore(conn);
- SendScore(conn);
- 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);
- ItemLog(temp, pUser[conn].AccountName, pUser[conn].IP);
- if (amount > 1)
- {
- BASE_SetItemAmount(item, amount - 1);
- }
- else
- {
- memset(item, 0, sizeof(STRUCT_ITEM));
- }
- SendItem(conn, m->DestType, m->DestPos, dest);
- SendEmotion(conn, 14, 3);
- }
- else
- {
- sprintf(temp, "%s", g_pMessageStringTable[_NN_Fail_To_Refine]);
- SendClientMessage(conn, temp);
- 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);
- ItemLog(temp, pUser[conn].AccountName, pUser[conn].IP);
- if (amount > 1)
- BASE_SetItemAmount(item, amount - 1);
- else
- memset(item, 0, sizeof(STRUCT_ITEM));
- BASE_ClearItem(dest);
- SendItem(conn, m->DestType, m->DestPos, dest);
- int sFace = pMob[conn].MOB.Equip[0].sIndex / 10;
- if (sFace)
- SendEmotion(conn, 15, 0);
- else
- SendEmotion(conn, 20, 0);
- }
- return;
- }
- SendClientMessage(conn, g_pMessageStringTable[_NN_Only_To_Equips]);
- SendItem(conn, m->SourType, m->SourPos, item);
- return;
- #pragma endregion
- }
- 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)
- {
- SendClientMessage(conn, g_pMessageStringTable[_NN_Only_To_Equips]);
- ItemLog("err,use item fail - dest", pUser[conn].AccountName, pUser[conn].IP);
- SendItem(conn, m->SourType, m->SourPos, item);
- return;
- }
- if (dest == NULL)
- {
- SendClientMessage(conn, g_pMessageStringTable[_NN_Only_To_Equips]);
- ItemLog("use item fail - dest", pUser[conn].AccountName, pUser[conn].IP);
- SendItem(conn, m->SourType, m->SourPos, item);
- return;
- }
- int dstVolatile = BASE_GetItemAbility(dest, EF_VOLATILE);
- if (dstVolatile)
- {
- SendClientMessage(conn, g_pMessageStringTable[_NN_Only_To_Equips]);
- SendItem(conn, m->SourType, m->SourPos, item);
- return;
- }
- int isSanc = BASE_GetItemAbility(dest, EF_NOSANC);
- if (isSanc)
- {
- SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Refine_More]);
- SendItem(conn, m->SourType, m->SourPos, item);
- return;
- }
- int sanc = BASE_GetItemSanc(dest);
- int itemtype = BASE_GetItemAbility(dest, EF_MOBTYPE);
- if (sanc >= 6 && Vol == 4)
- {
- SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Refine_More]);
- SendItem(conn, m->SourType, m->SourPos, item);
- return;
- }
- #pragma region Refinar item celestial / HC
- if (itemtype == 3)
- {
- if (sanc >= REF_15)
- {
- SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Refine_More]);
- SendItem(conn, m->SourType, m->SourPos, item);
- return;
- }
- if (sanc >= 6 && Vol == 4)
- {
- SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Refine_More]);
- SendItem(conn, m->SourType, m->SourPos, item);
- return;
- }
- if (sanc == 0)
- {
- 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))
- {
- 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))
- {
- 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))
- {
- SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Refine_More]);
- SendItem(conn, m->SourType, m->SourPos, item);
- return;
- }
- dest->stEffect[2].cEffect = 43;
- dest->stEffect[2].cValue = 0;
- }
- else
- {
- dest->stEffect[1].cEffect = 43;
- dest->stEffect[1].cValue = 0;
- }
- }
- else
- {
- dest->stEffect[0].cEffect = 43;
- dest->stEffect[0].cValue = 0;
- }
- }
- srand(time(NULL) / 5 * (rand() % 500) * 5);//Garante valores realmente aleatorio
- int _rd;
- _rd = rand() % 199;
- if (_rd > 100)
- {
- _rd = _rd - 99;
- }
- int ref = sanc;
- if (ref == REF_10)
- {
- ref = 10;
- }
- else if (ref == REF_11)
- {
- ref = 11;
- }
- else if (ref == REF_12)
- {
- ref = 12;
- }
- else if (ref == REF_13)
- {
- ref = 13;
- }
- else if (ref == REF_14)
- {
- ref = 14;
- }
- else if (ref == REF_15)
- {
- ref = 15;
- }
- int _chance = g_pCelestialRate[ref];
- if (_chance > _rd )
- {
- sprintf(temp, "%s %d/%d", "Sucesso ao refinar.", _rd, _chance);
- SendClientMessage(conn, temp);
- BASE_SetItemSanc(dest, ref+1, 3);
- pMob[conn].GetCurrentScore(conn);
- SendScore(conn);
- 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);
- ItemLog(temp, pUser[conn].AccountName, pUser[conn].IP);
- //SendNotice(g_pMessageStringTable[_SS_Combin_12Succ]);
- if (amount > 1)
- {
- BASE_SetItemAmount(item, amount - 1);
- }
- else
- {
- memset(item, 0, sizeof(STRUCT_ITEM));
- }
- SendItem(conn, m->DestType, m->DestPos, dest);
- SendEmotion(conn, 14, 3);
- }
- else
- {
- sprintf(temp, "%s %d/%d", "Falha ao refinar.", _rd, _chance);
- SendClientMessage(conn, temp);
- 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);
- ItemLog(temp, pUser[conn].AccountName, pUser[conn].IP);
- if (amount > 1)
- BASE_SetItemAmount(item, amount - 1);
- else
- memset(item, 0, sizeof(STRUCT_ITEM));
- BASE_SetItemSanc(dest, 0, 0);
- SendItem(conn, m->DestType, m->DestPos, dest);
- int sFace = pMob[conn].MOB.Equip[0].sIndex / 10;
- if (sFace)
- SendEmotion(conn, 15, 0);
- else
- SendEmotion(conn, 20, 0);
- }
- return;
- }
- #pragma endregion
- #pragma region Refinar Amunra
- if (g_pItemList[dest->sIndex].Extra == 3464)
- {
- if (sanc >= REF_15)
- {
- SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Refine_More]);
- SendItem(conn, m->SourType, m->SourPos, item);
- return;
- }
- if (sanc >= 6 && Vol == 4)
- {
- SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Refine_More]);
- SendItem(conn, m->SourType, m->SourPos, item);
- return;
- }
- if (sanc == 0)
- {
- 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))
- {
- 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))
- {
- 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))
- {
- SendClientMessage(conn, g_pMessageStringTable[_NN_Cant_Refine_More]);
- SendItem(conn, m->SourType, m->SourPos, item);
- return;
- }
- dest->stEffect[2].cEffect = 43;
- dest->stEffect[2].cValue = 0;
- }
- else
- {
- dest->stEffect[1].cEffect = 43;
- dest->stEffect[1].cValue = 0;
- }
- }
- else
- {
- dest->stEffect[0].cEffect = 43;
- dest->stEffect[0].cValue = 0;
- }
- }
- //srand(time(NULL) / 5 * (rand() % 500) * 5);//Garante valores realmente aleatorio
- srand(time(NULL) / 5 * (rand() % 500) * 5);//Garante valores realmente aleatorio
- int ref = sanc;
- if (ref == REF_10)
- {
- ref = 10;
- }
- else if (ref == REF_11)
- {
- ref = 11;
- }
- else if (ref == REF_12)
- {
- ref = 12;
- }
- else if (ref == REF_13)
- {
- ref = 13;
- }
- else if (ref == REF_14)
- {
- ref = 14;
- }
- else if (ref == REF_15)
- {
- ref = 15;
- }
- int _chance = g_pCelestialRate[ref];
- int _rd;
- _rd = rand() % 199;
- if(_rd > 100)
- {
- _rd = _rd - 99;
- }
- if (_chance > _rd)
- {
- sprintf(temp, "%s %d/%d", "Sucesso ao refinar.", _rd, _chance);
- SendClientMessage(conn, temp);
- BASE_SetItemSanc(dest, ref + 1, 3);
- pMob[conn].GetCurrentScore(conn);
- SendScore(conn);
- 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);
- ItemLog(temp, pUser[conn].AccountName, pUser[conn].IP);
- //SendNotice(g_pMessageStringTable[_SS_Combin_12Succ]);
- if (amount > 1)
- {
- BASE_SetItemAmount(item, amount - 1);
- }
- else
- {
- memset(item, 0, sizeof(STRUCT_ITEM));
- }
- SendItem(conn, m->DestType, m->DestPos, dest);
- SendEmotion(conn, 14, 3);
- }
- else
- {
- sprintf(temp, "%s %d/%d", "Falha ao refinar.", _rd, _chance);
- SendClientMessage(conn, temp);
- 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);
- ItemLog(temp, pUser[conn].AccountName, pUser[conn].IP);
- if (amount > 1)
- BASE_SetItemAmount(item, amount - 1);
- else
- memset(item, 0, sizeof(STRUCT_ITEM));
- BASE_SetItemSanc(dest, 0, 0);
- SendItem(conn, m->DestType, m->DestPos, dest);
- int sFace = pMob[conn].MOB.Equip[0].sIndex / 10;
- if (sFace)
- SendEmotion(conn, 15, 0);
- else
- SendEmotion(conn, 20, 0);
- }
- return;
- }
- #pragma endregion
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement