func.pwn 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. DefaultCategorySelectData(playerid) {
  2. g_CategorySelectData[playerid][CATEGORYSELECT_PAGE] = MIN_CATEGORYSELECT_PAGE;
  3. g_CategorySelectData[playerid][CATEGORYSELECT_MAXPAGE] = MIN_CATEGORYSELECT_PAGE;
  4. strpack(g_CategorySelectData[playerid][CATEGORYSELECT_SEARCH], "");
  5. for(new row; row < MAX_CATEGORYSELECT_ROWS; row ++) {
  6. g_CategorySelectData[playerid][CATEGORYSELECT_ROW_ID][row] = INVALID_CATEGORY_ID;
  7. }
  8. }
  9. LoadCategorySelectData(playerid) {
  10. new rows_added, max_offset;
  11. strunpack(g_SearchString, g_CategorySelectData[playerid][CATEGORYSELECT_SEARCH]);
  12. switch( g_PlayerData[playerid][PLAYER_DATA_TDMODE] ) {
  13. case TDMODE_CREATELIST_OBJECT, TDMODE_CREATELIST_PICKUP, TDMODE_CREATELIST_ATTACH, TDMODE_CATMANAGER_MODELS: {
  14. rows_added = FindModelCategories(
  15. .result = g_CategorySelectData[playerid][CATEGORYSELECT_ROW_ID],
  16. .result_size = MAX_CATEGORYSELECT_ROWS,
  17. .search = g_SearchString,
  18. .offset = g_CategorySelectData[playerid][CATEGORYSELECT_PAGE] * MAX_CATEGORYSELECT_ROWS,
  19. .max_offset = max_offset
  20. );
  21. }
  22. case TDMODE_CREATELIST_VEHICLE, TDMODE_CATMANAGER_VEHICLES: {
  23. rows_added = FindVehicleCategories(
  24. .result = g_CategorySelectData[playerid][CATEGORYSELECT_ROW_ID],
  25. .result_size = MAX_CATEGORYSELECT_ROWS,
  26. .search = g_SearchString,
  27. .offset = g_CategorySelectData[playerid][CATEGORYSELECT_PAGE] * MAX_CATEGORYSELECT_ROWS,
  28. .max_offset = max_offset
  29. );
  30. }
  31. case TDMODE_CREATELIST_ACTOR, TDMODE_CATMANAGER_SKINS: {
  32. rows_added = FindSkinCategories(
  33. .result = g_CategorySelectData[playerid][CATEGORYSELECT_ROW_ID],
  34. .result_size = MAX_CATEGORYSELECT_ROWS,
  35. .search = g_SearchString,
  36. .offset = g_CategorySelectData[playerid][CATEGORYSELECT_PAGE] * MAX_CATEGORYSELECT_ROWS,
  37. .max_offset = max_offset
  38. );
  39. }
  40. case TDMODE_TEXTURELIST, TDMODE_CATMANAGER_TEXTURES: {
  41. rows_added = FindTextureCategories(
  42. .result = g_CategorySelectData[playerid][CATEGORYSELECT_ROW_ID],
  43. .result_size = MAX_CATEGORYSELECT_ROWS,
  44. .search = g_SearchString,
  45. .offset = g_CategorySelectData[playerid][CATEGORYSELECT_PAGE] * MAX_CATEGORYSELECT_ROWS,
  46. .max_offset = max_offset
  47. );
  48. }
  49. default: {
  50. return 0;
  51. }
  52. }
  53. for(new row = rows_added; row < MAX_CATEGORYSELECT_ROWS; row ++) {
  54. g_CategorySelectData[playerid][CATEGORYSELECT_ROW_ID][row] = INVALID_CATEGORY_ID;
  55. }
  56. g_CategorySelectData[playerid][CATEGORYSELECT_MAXPAGE] = max_offset / MAX_CATEGORYSELECT_ROWS;
  57. return 1;
  58. }
  59. ShowCategorySelect(playerid) {
  60. g_DialogCaption = "Category Select";
  61. g_DialogInfo = "Category ID\tCategory Name\n";
  62. for(new listitem; listitem < MAX_CATEGORYSELECT_LITEMS; listitem ++) {
  63. switch(listitem) {
  64. case LITEM_CATEGORYSELECT_ROW_F..LITEM_CATEGORYSELECT_ROW_L: {
  65. new
  66. row = listitem - LITEM_CATEGORYSELECT_ROW_F,
  67. categoryid = INVALID_CATEGORY_ID
  68. ;
  69. categoryid = g_CategorySelectData[playerid][CATEGORYSELECT_ROW_ID][row];
  70. switch( g_PlayerData[playerid][PLAYER_DATA_TDMODE] ) {
  71. case TDMODE_CREATELIST_OBJECT, TDMODE_CREATELIST_PICKUP, TDMODE_CREATELIST_ATTACH, TDMODE_CATMANAGER_MODELS: {
  72. GetModelCategoryName(categoryid, g_CategoryNameString, sizeof g_CategoryNameString);
  73. }
  74. case TDMODE_CREATELIST_VEHICLE, TDMODE_CATMANAGER_VEHICLES: {
  75. GetVehicleCategoryName(categoryid, g_CategoryNameString, sizeof g_CategoryNameString);
  76. }
  77. case TDMODE_CREATELIST_ACTOR, TDMODE_CATMANAGER_SKINS: {
  78. GetSkinCategoryName(categoryid, g_CategoryNameString, sizeof g_CategoryNameString);
  79. }
  80. case TDMODE_TEXTURELIST, TDMODE_CATMANAGER_TEXTURES: {
  81. GetTextureCategoryName(categoryid, g_CategoryNameString, sizeof g_CategoryNameString);
  82. }
  83. default: {
  84. return 1;
  85. }
  86. }
  87. if( categoryid == INVALID_CATEGORY_ID ) {
  88. strcat(g_DialogInfo, "-\t-\n");
  89. } else {
  90. format(g_DialogInfoRow, sizeof g_DialogInfoRow, "%i\t%s\n", categoryid, g_CategoryNameString);
  91. strcat(g_DialogInfo, g_DialogInfoRow);
  92. }
  93. }
  94. case LITEM_CATEGORYSELECT_PAGE: {
  95. format(g_DialogInfoRow, sizeof g_DialogInfoRow, "Page: %i / %i\n", g_CategorySelectData[playerid][CATEGORYSELECT_PAGE] + 1, g_CategorySelectData[playerid][CATEGORYSELECT_MAXPAGE] + 1);
  96. strcat(g_DialogInfo, g_DialogInfoRow);
  97. }
  98. case LITEM_CATEGORYSELECT_PAGE_F: {
  99. strcat(g_DialogInfo, "<< First Page <<\t \n");
  100. }
  101. case LITEM_CATEGORYSELECT_PAGE_P: {
  102. strcat(g_DialogInfo, "< Previous Page <\t \n");
  103. }
  104. case LITEM_CATEGORYSELECT_PAGE_N: {
  105. strcat(g_DialogInfo, "> Next Page >\t \n");
  106. }
  107. case LITEM_CATEGORYSELECT_PAGE_L: {
  108. strcat(g_DialogInfo, ">> Last Page >>\t \n");
  109. }
  110. case LITEM_CATEGORYSELECT_SEARCH: {
  111. strunpack(g_SearchString, g_CategorySelectData[playerid][CATEGORYSELECT_SEARCH]);
  112. if( isempty(g_SearchString) ) {
  113. strcat(g_DialogInfo, "Search\n");
  114. } else {
  115. format(g_DialogInfoRow, sizeof g_DialogInfoRow, "Search: %s\n", g_SearchString);
  116. strcat(g_DialogInfo, g_DialogInfoRow);
  117. }
  118. }
  119. default: {
  120. strcat(g_DialogInfo, " \t \n");
  121. }
  122. }
  123. }
  124. ShowPlayerDialog(playerid, DIALOGID_CATEGORYSELECT, DIALOG_STYLE_TABLIST_HEADERS, g_DialogCaption, g_DialogInfo, "Select", "Cancel");
  125. return 1;
  126. }
  127. ShowCategorySelectDialog(playerid, dialogid) {
  128. switch( dialogid ) {
  129. case DIALOGID_CATEGORYSELECT: {
  130. ShowCategorySelect(playerid);
  131. }
  132. case DIALOGID_CATEGORYSELECT_PAGE: {
  133. format(g_DialogInfo, sizeof g_DialogInfo, "Current Page: %i / %i", g_CategorySelectData[playerid][CATEGORYSELECT_PAGE] + 1, g_CategorySelectData[playerid][CATEGORYSELECT_MAXPAGE] + 1);
  134. ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Category Select: Page", g_DialogInfo, "Enter", "Cancel");
  135. }
  136. case DIALOGID_CATEGORYSELECT_SEARCH: {
  137. strunpack(g_SearchString, g_CategorySelectData[playerid][CATEGORYSELECT_SEARCH]);
  138. if( isempty(g_SearchString) ) {
  139. g_DialogInfo = "You are not searching for anything.";
  140. } else {
  141. format(g_DialogInfo, sizeof g_DialogInfo, "Current Search: %s", g_SearchString);
  142. }
  143. ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Category Select: Search", g_DialogInfo, "Enter", "Cancel");
  144. }
  145. default: {
  146. return 0;
  147. }
  148. }
  149. return 1;
  150. }