Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.02 KB | None | 0 0
  1. #ifdef ENABLE_MINI_GAME_CHRISTMAS
  2. ACMD(do_christmas_add)
  3. {
  4. if (ch->IsObserverMode())
  5. return;
  6.  
  7. if (quest::CQuestManager::instance().GetEventFlag("eventChristmas") == 0)
  8. return;
  9.  
  10. LPITEM invItem;
  11. int slotNumber = 0, displayPos = 0;
  12. char arg1[256], arg2[256], positionList[256];
  13. two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2));
  14.  
  15. if (!*arg1 || 0 == arg1[0] || !isdigit(*arg1) || !*arg2 || 0 == arg2[0] || !isdigit(*arg2))
  16. return;
  17.  
  18. str_to_number(slotNumber, arg1);
  19. str_to_number(displayPos, arg2);
  20.  
  21. if (slotNumber < 0 || INVENTORY_MAX_NUM <= slotNumber)
  22. return;
  23.  
  24. if (displayPos < 0 || displayPos >= 10)
  25. return;
  26.  
  27. invItem = ch->GetInventoryItem(slotNumber);
  28.  
  29. if (NULL == invItem)
  30. return;
  31.  
  32. if (invItem->isLocked())
  33. return;
  34.  
  35. if(displayPos <= 8 && (invItem->GetVnum() != 39098 && invItem->GetVnum() != 39099))
  36. {
  37. ch->ChatPacket(CHAT_TYPE_INFO, "Ai nevoie de Glob Magic sau Glob Magic Special pentru aceste sloturi.");
  38. return;
  39. }
  40.  
  41. if(displayPos == 9 && invItem->GetVnum() != 39097)
  42. {
  43. ch->ChatPacket(CHAT_TYPE_INFO, "In varful bradului se pune Stea Magica.");
  44. return;
  45. }
  46.  
  47. char queryStr[QUERY_MAX_LEN];
  48. snprintf(queryStr, sizeof(queryStr), "SELECT items FROM christmas WHERE pid = %d LIMIT 1;", ch->GetPlayerID());
  49. std::unique_ptr<SQLMsg> upMsg(DBManager::instance().DirectQuery(queryStr));
  50. SQLResult* res = upMsg->Get();
  51.  
  52. if (!res || res->uiNumRows < 1 || res->uiNumRows > 255)
  53. return;
  54.  
  55. MYSQL_ROW row = mysql_fetch_row(upMsg->Get()->pSQLResult);
  56. strlcpy(positionList, row[0], sizeof(positionList));
  57.  
  58. if(positionList[displayPos*2] != '0')
  59. {
  60. ch->ChatPacket(CHAT_TYPE_INFO, "Ai pus deja un ornament in acest slot.");
  61. return;
  62. }
  63.  
  64. switch(invItem->GetVnum())
  65. {
  66. case 39098:
  67. positionList[displayPos*2] = '1';
  68. break;
  69.  
  70. case 39099:
  71. positionList[displayPos*2] = '2';
  72. break;
  73.  
  74. case 39097:
  75. positionList[displayPos*2] = '3';
  76. break;
  77. }
  78.  
  79. if(invItem->GetVnum() == 39097)
  80. {
  81. bool incompleteTree = false;
  82. for(int i = 0; i < 10; i++)
  83. {
  84. if(positionList[i*2] == '0')
  85. {
  86. incompleteTree = true;
  87. break;
  88. }
  89. }
  90.  
  91. if(incompleteTree == true)
  92. {
  93. ch->ChatPacket(CHAT_TYPE_INFO, "Inainte sa pui steaua completeaza bradul cu globuri.");
  94. return;
  95. }
  96. else
  97. {
  98. DBManager::instance().DirectQuery("UPDATE christmas SET items = '0|0|0|0|0|0|0|0|0|0', complete = complete + 1 WHERE pid = %d", ch->GetPlayerID());
  99.  
  100. ch->ChatPacket(CHAT_TYPE_COMMAND, "christmas clear");
  101. ch->ChatPacket(CHAT_TYPE_COMMAND, "christmas refresh");
  102.  
  103. ITEM_MANAGER::instance().RemoveItem(invItem);
  104. ch->AutoGiveItem(39096, 1);
  105. }
  106. }
  107. else
  108. {
  109. DBManager::instance().DirectQuery("UPDATE christmas SET items = '%s' WHERE pid = %d", positionList, ch->GetPlayerID());
  110.  
  111. ch->ChatPacket(CHAT_TYPE_COMMAND, "christmas add_item %d %d", displayPos, invItem->GetVnum());
  112. ch->ChatPacket(CHAT_TYPE_COMMAND, "christmas refresh");
  113.  
  114. ITEM_MANAGER::instance().RemoveItem(invItem);
  115. }
  116. }
  117. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement