Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.07 KB | None | 0 0
  1. void CClientManager::__QUERY_PLAYER_DELETE(CPeer* peer, DWORD dwHandle, TPlayerDeletePacket* packet)
  2. {
  3. if (!packet->login[0] || !packet->player_id || packet->account_index >= PLAYER_PER_ACCOUNT)
  4. return;
  5.  
  6. CLoginData * ld = GetLoginDataByLogin(packet->login);
  7.  
  8. if (!ld)
  9. {
  10. peer->EncodeHeader(HEADER_DG_PLAYER_DELETE_FAILED, dwHandle, 1);
  11. peer->EncodeBYTE(packet->account_index);
  12. return;
  13. }
  14.  
  15. TAccountTable & r = ld->GetAccountRef();
  16.  
  17. if (strlen(r.social_id) < 7 || strncmp(packet->private_code, r.social_id + strlen(r.social_id) - 7, 7))
  18. {
  19. sys_log(0, "PLAYER_DELETE FAILED len(%d)", strlen(r.social_id));
  20. peer->EncodeHeader(HEADER_DG_PLAYER_DELETE_FAILED, dwHandle, 1);
  21. peer->EncodeBYTE(packet->account_index);
  22. return;
  23. }
  24.  
  25. CPlayerTableCache * pkPlayerCache = GetPlayerCache(packet->player_id);
  26. if (pkPlayerCache)
  27. {
  28. TPlayerTable * pTab = pkPlayerCache->Get();
  29.  
  30. if (pTab->level >= m_iPlayerDeleteLevelLimit)
  31. {
  32. sys_log(0, "PLAYER_DELETE FAILED LEVEL %u >= DELETE LIMIT %d", pTab->level, m_iPlayerDeleteLevelLimit);
  33. peer->EncodeHeader(HEADER_DG_PLAYER_DELETE_FAILED, dwHandle, 1);
  34. peer->EncodeBYTE(packet->account_index);
  35. return;
  36. }
  37.  
  38. if (pTab->level < m_iPlayerDeleteLevelLimitLower)
  39. {
  40. sys_log(0, "PLAYER_DELETE FAILED LEVEL %u < DELETE LIMIT %d", pTab->level, m_iPlayerDeleteLevelLimitLower);
  41. peer->EncodeHeader(HEADER_DG_PLAYER_DELETE_FAILED, dwHandle, 1);
  42. peer->EncodeBYTE(packet->account_index);
  43. return;
  44. }
  45. }
  46.  
  47. char szQuery[128];
  48. snprintf(szQuery, sizeof(szQuery), "SELECT p.id, p.level, p.name FROM player_index%s AS i, player%s AS p WHERE pid%u=%u AND pid%u=p.id",
  49. GetTablePostfix(), GetTablePostfix(), packet->account_index + 1, packet->player_id, packet->account_index + 1);
  50.  
  51. ClientHandleInfo * pi = new ClientHandleInfo(dwHandle, packet->player_id);
  52. pi->account_index = packet->account_index;
  53.  
  54. sys_log(0, "PLAYER_DELETE TRY: %s %d pid%d", packet->login, packet->player_id, packet->account_index + 1);
  55. CDBManager::instance().ReturnQuery(szQuery, QID_PLAYER_DELETE, peer->GetHandle(), pi);
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement