[cpp] code

Viewer

  1.                         if (CharName16 == state.character.name) // if the session is equals to this character
  2.                         {
  3.                                 char Size[5000];
  4.                                 auto pBuffer = MakeStream(Size);
  5.                                 pBuffer.Write<uint8_t>(0x0F);
  6.                                 pBuffer.Write<uint8_t>(0x05);
  7.                                 pBuffer.Write<uint8_t>(0x0);
  8.  
  9.                                 if (!state.customs.m_CustomLinkedItemName.empty())
  10.                                 {
  11.                                         auto charname = to_wstring(CharName16);
  12.                                         auto message = to_wstring(Message);
  13.                                         for (auto &: state.customs.m_CustomLinkedItemName)
  14.                                         {
  15.                                                 if (== L' ')
  16.                                                         c = L'\u00A0';
  17.                                         }
  18.                                         auto leftmsg = message.substr(0, state.customs.m_GlobalLinkedItemBegin);
  19.                                         auto rightmsg = message.substr(leftmsg.length());
  20.  
  21.                                         std::wstring wholemsg = leftmsg.append(state.customs.m_CustomLinkedItemName).append(rightmsg);
  22.                                         pBuffer.WriteUnicode(charname.append(L":").append(wholemsg).c_str());
  23.                                 }
  24.                                 else
  25.                                         pBuffer.WriteUnicode(to_wstring(CharName16.append(":").append(Message)).c_str());
  26.  
  27.                                 pBuffer.Write<int8_t>((uint8_t)GameChatType::Global);
  28.                                 pBuffer.Write<uint32_t>(state.customs.CurrentGlobalColor);
  29.                                 pBuffer.Write<uint32_t>(state.character.uniqueid);
  30.                                 //below isnt required :D
  31.                                 if (state.customs.m_GlobalLinkedItemSlot != 0 && state.character.dbid != 0)
  32.                                 {
  33.                                         // give me a minute i will write a proper query without declare k
  34.                                         const std::lock_guard<std::mutex> lock(g_mssql_lock);
  35.                                         auto reader = g_mssql.OpenReader(g_mssql.SHARD"SELECT     IT.ID64, IT.RefItemID, IT.OptLevel, ISNULL(IT.Variance, 0), IT.[Data], IT.MagParamNum, ISNULL(IT.MagParam1, 0), ISNULL(IT.MagParam2, 0), ISNULL(IT.MagParam3, 0), ISNULL(IT.MagParam4, 0), ISNULL(IT.MagParam5, 0), ISNULL(IT.MagParam6, 0), ISNULL(IT.MagParam7, 0), ISNULL(IT.MagParam8, 0), ISNULL(IT.MagParam9, 0), ISNULL(IT.MagParam10, 0), ISNULL(IT.MagParam11, 0), ISNULL(IT.MagParam12, 0) FROM        SRO_VT_SHARD.dbo._Items IT JOIN       SRO_VT_SHARD.dbo._Inventory I ON              IT.ID64 = I.ItemID WHERE     I.CharID = " + std::to_string(state.character.dbid) + " AND              I.Slot = " + std::to_string(state.customs.m_GlobalLinkedItemSlot) + "");
  36.  
  37.                                         if (reader.next())
  38.                                         {
  39.                                                 //printf("found item retrieving its data \n");
  40.                                                 auto ID64 = reader.get<uint64_t>(0);
  41.                                                 auto RefItemID = reader.get<uint32_t>(1);
  42.                                                 auto OptLevel = reader.get<int>(2);
  43.                                                 auto Variance = reader.get<uint64_t>(3);
  44.                                                 auto Data = reader.get<uint32_t>(4);
  45.                                                 auto MagParamNum = reader.get<int>(5);
  46.                                                 std::list<int64_t> MagParamList;
  47.                                                 //printf("found magparamcount %d \n", MagParamNum);
  48.                                                 if (MagParamNum != 0)
  49.                                                 {
  50.                                                         for (size_t i = 0; i < MagParamNum; i++)
  51.                                                         {
  52.                                                                 printf("reading magparam %d\n"6 + i);
  53.                                                                 auto value = reader.get<uint64_t>(6+i);
  54.                                                                 std::cout << "Magparam val : " << value << std::endl;
  55.                                                                 MagParamList.push_back(value);
  56.                                                         }
  57.                                                 }
  58.                                                 uint8_t TypeID1 = 0, TypeID2 = 0, TypeID3 = 0, TypeID4 = 0;
  59.                                                 auto objreader = g_mssql.OpenReader(g_mssql.SHARD"select top 1 TypeID1,TypeID2,TypeID3,TypeID4 from _RefObjCommon where ID = " + std::to_string(RefItemID) + "");
  60.                                                 if (objreader.next())
  61.                                                 {
  62.                                                         printf("Found TypeIDs\n");
  63.                                                         TypeID1 = (uint8_t)objreader.get<char>(0);
  64.                                                         TypeID2 = (uint8_t)objreader.get<char>(1);
  65.                                                         TypeID3 = (uint8_t)objreader.get<char>(2);
  66.                                                         TypeID4 = (uint8_t)objreader.get<char>(3);
  67.                                                         printf("ID %d, TypeID1 = %d, TypeID2 = %d, TypeID3 = %d, TypeID4 = %d\n", RefItemID, TypeID1, TypeID2, TypeID3, TypeID4);
  68.                                                 }
  69.                                                 else
  70.                                                 {
  71.                                                         printf("TypeIds Not Found!\n");
  72.                                                         goto lb_getridofit;
  73.                                                 }
  74.                                                 printf("passed till now\n");
  75.                                                 //nasrun TypeID1 = 3 and TypeID2 = 1 and TypeID3 = 14 and TypeID4 = 1
  76.                                                 pBuffer.Write<int8_t>(1);//thats a flag for my stuff while reading
  77.                                                 // do u remove that flag or not nope, it fucks the packet no lol look
  78.                                                 if ((TypeID1 == 3 && TypeID2 == 1) || (TypeID1 == 3 && TypeID2 == 3))
  79.                                                 {
  80.                                                         //pBuffer.Write<uint8_t>(1);
  81.                                                         //pBuffer.Write<uint8_t>(6);
  82.                                                         //pBuffer.Write<uint8_t>(0x0D); // slot
  83.                                                         pBuffer.Write<int32_t>(0); // unk rentinfo data
  84.                                                         pBuffer.Write<int32_t>(RefItemID);
  85.                                                         if (TypeID1 == 3)
  86.                                                         {
  87.                                                                 if (TypeID2 == 1)  //ITEM_EU_CH_AVATAR
  88.                                                                 {
  89.                                                                         printf("Found an equipment or avatar\n");
  90.                                                                         pBuffer.Write<uint8_t>(OptLevel);
  91.                                                                         pBuffer.Write<int64_t>(Variance);//wait
  92.                                                                         if (Data == -1 && (TypeID1 == 3 && TypeID2 == 1 && TypeID3 == 14 && TypeID4 == 1))//nasruns
  93.                                                                         {
  94.                                                                                 pBuffer.Write<uint8_t>(0);//rent time over.
  95.                                                                                 pBuffer.Write<uint8_t>(0);//rent time over.
  96.                                                                                 pBuffer.Write<uint8_t>(0);//rent time over.
  97.                                                                                 pBuffer.Write<uint8_t>(128);//rent time over.
  98.                                                                         }
  99.                                                                         else
  100.                                                                                 pBuffer.Write<int32_t>((int)Data);
  101.                                                                         pBuffer.Write<uint8_t>(MagParamNum);
  102.                                                                         if (MagParamNum != 0)
  103.                                                                         {
  104.                                                                                 printf("writing magparams count %d\n", MagParamNum);
  105.                                                                                 for (auto param : MagParamList)
  106.                                                                                 {
  107.                                                                                         std::cout << "writing param : " << param << std::endl;
  108.                                                                                         pBuffer.Write<uint32_t>((param % 4294967296));
  109.                                                                                         pBuffer.Write<uint32_t>((param / 4294967296));
  110.                                                                                 }
  111.                                                                         }
  112.                                                                         std::list<SocketData> m_SocketsList;
  113.                                                                         std::list<AdvData> m_AdvList;
  114.                                                                         auto bOptTypeReader = g_mssql.OpenReader(g_mssql.SHARD"SELECT bOptType, nSlot, nOptID, nOptLvl, nOptValue, nParam1, nParam2 FROM  _BindingOptionWithItem WHERE (nOptID <> 0) AND (nItemDBID = " + std::to_string(ID64) + ") ORDER BY bOptType, nSlot");
  115.                                                                         while (bOptTypeReader.next())
  116.                                                                         {
  117.                                                                                 auto bOptType = bOptTypeReader.get<int>(0);
  118.                                                                                 auto nSlot = bOptTypeReader.get<int>(1);
  119.                                                                                 auto nOptID = bOptTypeReader.get<int>(2);
  120.                                                                                 auto nOptLvl = bOptTypeReader.get<int>(3);
  121.                                                                                 auto nOptValue = bOptTypeReader.get<int>(4);
  122.                                                                                 auto nParam1 = bOptTypeReader.get<int>(5);
  123.                                                                                 auto nParam2 = bOptTypeReader.get<int>(6);
  124.                                                                                 if (bOptType == 1)
  125.                                                                                 {
  126.                                                                                         printf("Found sockets\n");
  127.                                                                                         SocketData data;
  128.                                                                                         data.nSlot = nSlot;
  129.                                                                                         data.nOptID = nOptID;
  130.                                                                                         data.nOptLvl = nOptLvl;
  131.                                                                                         data.nParam1 = nParam1;
  132.                                                                                         data.nParam2 = nParam2;
  133.                                                                                         m_SocketsList.push_back(data);
  134.                                                                                 }
  135.                                                                                 else if (bOptType == 2)
  136.                                                                                 {
  137.                                                                                         printf("Found Adv\n");
  138.                                                                                         AdvData data;
  139.                                                                                         data.nOptID = nOptID;
  140.                                                                                         data.nOptValue = nOptValue;
  141.                                                                                         data.nSlot = nSlot;
  142.                                                                                         m_AdvList.push_back(data);
  143.                                                                                 }
  144.                                                                         }
  145.                                                                         pBuffer.Write<uint8_t>(1); // socket flag
  146.                                                                         pBuffer.Write<uint8_t>(m_SocketsList.size());
  147.                                                                         for (auto Socket : m_SocketsList)
  148.                                                                         {
  149.                                                                                 printf("writing sockets.\n");
  150.                                                                                 pBuffer.Write<uint8_t>(Socket.nSlot);
  151.                                                                                 pBuffer.Write<uint16_t>(Socket.nOptID);
  152.                                                                                 pBuffer.Write<uint16_t>(Socket.nOptLvl);
  153.                                                                                 pBuffer.Write<uint16_t>(Socket.nParam1);
  154.                                                                                 pBuffer.Write<uint16_t>(Socket.nParam2);
  155.                                                                         }
  156.                                                                         pBuffer.Write<uint8_t>(2); // adv flag
  157.                                                                         pBuffer.Write<uint8_t>(m_AdvList.size());
  158.                                                                         for (auto Adv : m_AdvList)
  159.                                                                         {
  160.                                                                                 printf("writing advs\n");
  161.                                                                                 pBuffer.Write<uint8_t>(Adv.nSlot);
  162.                                                                                 pBuffer.Write<uint32_t>(Adv.nOptID);
  163.                                                                                 pBuffer.Write<uint32_t>(Adv.nOptValue);
  164.                                                                         }
  165.                                                                 }
  166.                                                                 else if (TypeID2 == 3) // ITEM_ETC
  167.                                                                 {
  168.                                                                         printf("found item_etc stuff\n");
  169.                                                                         pBuffer.Write<uint16_t>((int)Data); // amount
  170.                                                                         if (TypeID3 == 11 && (TypeID4 == 1 || TypeID4 == 2)) // magicstone & attrstone
  171.                                                                         {
  172.                                                                                 printf("its stone\n");
  173.                                                                                 pBuffer.Write<uint16_t>(OptLevel);
  174.                                                                         }
  175.                                                                         else if (TypeID3 == 14 && TypeID4 == 2) // GACHA_CARD_WIN/LOSE
  176.                                                                         {
  177.                                                                                 printf("its gacha card win/lose\n");
  178.                                                                                 pBuffer.Write<uint8_t>(MagParamNum);
  179.                                                                                 if (MagParamNum != 0)
  180.                                                                                 {
  181.                                                                                         for (auto param : MagParamList)
  182.                                                                                         {
  183.                                                                                                 pBuffer.Write<uint32_t>((param % 4294967296));
  184.                                                                                                 pBuffer.Write<uint32_t>((param / 4294967296));
  185.                                                                                         }
  186.                                                                                 }
  187.                                                                         }
  188.                                                                 }
  189.                                                         }
  190.                                                 }
  191.                                                 else
  192.                                                 {
  193.                                                 printf("process over\n");
  194.                                                         goto lb_getridofit;
  195.                                                 }
  196.                                         }
  197.                                         else
  198.                                         {
  199.                                         printf("process over 2\n");
  200.                                                 goto lb_getridofit;
  201.                                         }
  202.                                 }// come team viewer to show you some thing to ask about it 
  203.                                 else
  204.                                 {
  205.                                 printf("process over 3\n");
  206.                                 lb_getridofit:
  207.                                         pBuffer.Write<uint8_t>(0);
  208.                                 }
  209.                                 Communication::SendToAll(Opcodes::SERVER::CUSTOM_RESPONSE, pBuffer);
  210.                                 if (!state.customs.m_CustomLinkedItemName.empty())
  211.                                 {
  212.                                         auto chatReplacedPacket = MakeStream(streamSize);
  213.                                         chatReplacedPacket.Write<uint8_t>(6);
  214.                                         chatReplacedPacket.WriteAscii(CharName16);
  215.                                         auto leftmsg = Message.substr(0, state.customs.m_GlobalLinkedItemBegin);
  216.                                         auto rightmsg = Message.substr(leftmsg.length());
  217.                                         std::wstring ItemName;
  218.                                         for (auto &: state.customs.m_CustomLinkedItemName)
  219.                                         {
  220.                                                 std::wstring curchar = std::wstring(1, c);
  221.                                                 if (!= L'\u035F')
  222.                                                         ItemName.append(curchar);
  223.                                         }
  224.                                         std::string normalitemname = std::string(ItemName.begin(), ItemName.end());
  225.                                         for (auto& c : normalitemname)
  226.                                         {
  227.                                                 if (== '\u00A0')
  228.                                                         c = ' ';
  229.                                         }
  230.                                         auto wholemsg = leftmsg.append(" ").append(normalitemname).append(" ").append(rightmsg);
  231.                                         chatReplacedPacket.WriteAscii(wholemsg);
  232.  
  233.                                        
  234.  
  235.                                         state.customs.m_CustomLinkedItemName = std::wstring();
  236.                                         state.customs.m_GlobalLinkedItemBegin = 0;
  237.                                         state.customs.m_GlobalLinkedItemEnd = 0;
  238.                                         state.customs.m_GlobalLinkedItemSlot = 0;
  239.                                         Communication::SendToAll(Opcodes::SERVER::CHAT, chatReplacedPacket);
  240.                                         return PacketResult::Ignore;
  241.                                 }
  242.                         }

Editor

You can edit this paste and save as new: