Advertisement
Guest User

Untitled

a guest
Sep 26th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.09 KB | None | 0 0
  1. EVENTFUNC(shop_event)
  2. {
  3. LPCHARACTER pc;
  4. CharacterVectorInteractor i;
  5.  
  6. if (CHARACTER_MANAGER::instance().GetCharactersByRaceNum(30000, i))
  7. {
  8. CharacterVectorInteractor::iterator it = i.begin();
  9.  
  10. while (it != i.end()) {
  11. LPCHARACTER pc = *it++;
  12. if (pc)
  13. {
  14. LPSHOP shop;
  15. if ((shop = pc->GetMyShop())) {
  16. if (pc->GetShopTime() < get_global_time() || shop->GetItemCount() <= 0)
  17. pc->DeleteMyShop();
  18. }
  19. else
  20. M2_DESTROY_CHARACTER(pc);
  21. }
  22.  
  23. }
  24. }
  25.  
  26. return PASSES_PER_SEC(SHOP_TIME_REFRESH);
  27. }
  28.  
  29.  
  30.  
  31. EVENTFUNC(fix_shop_event)
  32. {
  33. char szSockets[1024] = { '\0' };
  34. char *tempSockets = szSockets;
  35. for (int i = 0; i < ITEM_SOCKET_MAX_NUM; i++)
  36. {
  37. tempSockets += sprintf(tempSockets, "ps.socket%d", i);
  38.  
  39. if (i<ITEM_SOCKET_MAX_NUM - 1)
  40. tempSockets += sprintf(tempSockets, ",");
  41. }
  42. char szAttrs[1024] = { '\0' };
  43. char *tempAttrs = szAttrs;
  44. for (int i = 0; i < ITEM_ATTRIBUTE_MAX_NUM; i++)
  45. {
  46. if (i < 7)
  47. tempAttrs += sprintf(tempAttrs, "ps.attrtype%d,attrvalue%d", i, i);
  48. else
  49. tempAttrs += sprintf(tempAttrs, "ps.applytype%d,applyvalue%d", i - 7, i - 7);
  50. if (i<ITEM_ATTRIBUTE_MAX_NUM - 1)
  51. tempAttrs += sprintf(tempAttrs, ",");
  52. }
  53. SQLMsg * pkMsg(DBManager::instance().DirectQuery("SELECT ps.id,ps.shop_id,ps.player_id,REPLACE('%s','#PLAYER_NAME#',p.name),ps.vnum,ps.count,ps.price,%s,%s FROM `player_shop_items` ps LEFT JOIN player p ON p.id=ps.player_id where not EXISTS(select name from player_shop WHERE id=ps.shop_id) and not ISNULL(p.name)", LC_TEXT("SHOP_NAME"), szSockets, szAttrs));
  54. SQLResult * pRes = pkMsg->Get();
  55. if (pRes->uiNumRows>0)
  56. {
  57. MYSQL_ROW row;
  58. while ((row = mysql_fetch_row(pRes->pSQLResult)) != NULL)
  59. {
  60. DWORD id,pid,vnum,count,socket[6],attr[7][2];
  61. int col = 0;
  62. str_to_number(id, row[col++]);
  63. str_to_number(pid, row[col++]);
  64. col++;
  65.  
  66. str_to_number(vnum, row[col++]);
  67. str_to_number(count, row[col++]);
  68. for (int i = 0;i < ITEM_SOCKET_MAX_NUM;i++)
  69. str_to_number(socket[i], row[col++]);
  70. for (int i = 0;i < ITEM_ATTRIBUTE_MAX_NUM;i++)
  71. {
  72. str_to_number(attr[i][0], row[col++]);
  73. str_to_number(attr[i][1], row[col++]);
  74. }
  75. char query[1024];
  76. sprintf(query, "INSERT INTO player_gift SET owner_id=%d,vnum=%d,count=%d,reason='%s',`from`=replace(\"%s\",' ','_'),status='WAIT',date_add=NOW()",
  77. pid, vnum,count, LC_TEXT("SHOP_REASON"), row[3]);
  78.  
  79. for (int s = 0; s < ITEM_SOCKET_MAX_NUM; s++)
  80. {
  81. sprintf(query, "%s, socket%d='%d'", query, s, socket[s]);
  82.  
  83. }
  84. for (int ia = 0; ia < ITEM_ATTRIBUTE_MAX_NUM; ia++)
  85. {
  86. if (ia < 7)
  87. {
  88. sprintf(query, "%s, attrtype%d='%d'", query, ia, attr[ia][0]);
  89. sprintf(query, "%s, attrvalue%d='%d'", query, ia, attr[ia][1]);
  90. }
  91. else{
  92. sprintf(query, "%s, applytype%d='%d'", query, ia-7, attr[ia][0]);
  93. sprintf(query, "%s, applyvalue%d='%d'", query, ia-7, attr[ia][1]);
  94. }
  95.  
  96.  
  97. }
  98. DBManager::instance().DirectQuery(query);
  99. DBManager::instance().DirectQuery("delete from player_shop_items where id=%d",id);
  100.  
  101. }
  102. }
  103. return PASSES_PER_SEC(SHOP_TIME_REFRESH*60);
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement