Guest User

Untitled

a guest
Apr 13th, 2019
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.31 KB | None | 0 0
  1. //add
  2. #include "../common/VnumHelper.h"
  3.  
  4. //search
  5. void CInputMain::Refine(LPCHARACTER ch, const char* c_pData)
  6. {
  7.  
  8. //add under
  9.  
  10. void CInputMain::SoulStoneUse(LPCHARACTER ch, const char* c_pData)
  11. {
  12. TPacketCGSoulStoneUse* p = (TPacketCGSoulStoneUse*)c_pData;
  13.  
  14. // check general data
  15. const DWORD* c_adwAvailSkillVnums = ch->GetUsableSkillList();
  16. if (!c_adwAvailSkillVnums)
  17. return;
  18.  
  19. bool bFoundVnum = false;
  20. for (int i = 0; i < CHARACTER_SKILL_COUNT; ++i)
  21. {
  22. if (!c_adwAvailSkillVnums[i])
  23. continue;
  24.  
  25. if (c_adwAvailSkillVnums[i] == p->skillIndex)
  26. {
  27. bFoundVnum = true;
  28. break;
  29. }
  30. }
  31. if (!bFoundVnum)
  32. return;
  33.  
  34. if (ch->GetSkillMasterType(p->skillIndex) != SKILL_GRAND_MASTER)
  35. return;
  36.  
  37. if (!p->Cell.IsDefaultInventoryPosition())
  38. return;
  39.  
  40. // check item
  41. LPITEM pkItem = ch->GetInventoryItem(p->Cell.cell);
  42. if (!pkItem || !CItemVnumHelper::IsSoulStone(pkItem->GetVnum()))
  43. return;
  44.  
  45. if (pkItem->IsExchanging())
  46. return;
  47.  
  48. if (ch->GetRaceNum() >= MAIN_RACE_MAX_NUM)
  49. return;
  50.  
  51. // use soulstones
  52. BYTE bCount = p->all ? pkItem->GetCount() : 1;
  53. BYTE bUseCount = 0;
  54. BYTE bSuccessCount = 0;
  55.  
  56. for (int i = 0; i < bCount; ++i)
  57. {
  58. ++bUseCount;
  59.  
  60. if (ch->LearnGrandMasterSkill(p->skillIndex))
  61. {
  62. ++bSuccessCount;
  63. if (ch->GetSkillMasterType(p->skillIndex) > SKILL_GRAND_MASTER)
  64. break;
  65. }
  66. }
  67.  
  68. pkItem->SetCount(pkItem->GetCount() - bUseCount);
  69.  
  70. if (bSuccessCount == 0)
  71. ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Egitim basarisiz oldu."));
  72. else if (ch->GetSkillMasterType(p->skillIndex) > SKILL_GRAND_MASTER)
  73. ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Grandmaster seviyesinde basarili oldunuz."));
  74. else if (bCount == 1)
  75. ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Egitim basarili oldu."));
  76. else if (bCount == bSuccessCount)
  77. ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Tum ruh taslari basariyla kullanildi."));
  78. else
  79. ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d/%d ruh taslari basariyla kullanildi."), bSuccessCount, bCount);
  80. }
  81.  
  82.  
  83. //search
  84. case HEADER_CG_XTRAP_ACK:
  85. {
  86. TPacketXTrapCSVerify* p = reinterpret_cast<TPacketXTrapCSVerify*>((void*)c_pData);
  87. CXTrapManager::instance().Verify_CSStep3(d->GetCharacter(), p->bPacketData);
  88. }
  89. break;
  90.  
  91. //add under
  92.  
  93. case HEADER_CG_SOULSTONE_USE:
  94. SoulStoneUse(ch, c_pData);
  95. break;
Advertisement
Add Comment
Please, Sign In to add comment