func.pwn 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. FindAnimations(result[], result_size, search[], offset, &max_offset) {
  2. new rows_added;
  3. if( isempty(search) ) {
  4. for(new animid = MIN_ANIM_ID + offset; animid <= MAX_ANIM_ID; animid ++) {
  5. if( rows_added >= result_size ) {
  6. break;
  7. }
  8. result[rows_added ++] = animid;
  9. }
  10. max_offset = MAX_ANIMS - 1;
  11. } else {
  12. format(g_QueryString, sizeof g_QueryString, "\
  13. SELECT animidx, \
  14. (SELECT COUNT(*) FROM anim_data WHERE animidx LIKE '%%%q%%' OR lib LIKE '%%%q%%' OR name LIKE '%%%q%%') AS max_rowcount \
  15. FROM anim_data \
  16. WHERE animidx LIKE '%%%q%%' OR lib LIKE '%%%q%%' OR name LIKE '%%%q%%' \
  17. LIMIT %i OFFSET %i",
  18. search, search, search,
  19. search, search, search,
  20. result_size, offset
  21. );
  22. g_DBResult = db_query(g_ResourceDB, g_QueryString);
  23. new result_rows = db_num_rows(g_DBResult);
  24. if( result_rows > 0 ) {
  25. max_offset = db_get_field_assoc_int(g_DBResult, "max_rowcount") - 1;
  26. if( max_offset < 0 ) {
  27. max_offset = 0;
  28. }
  29. }
  30. for(new row; row < result_rows; row ++) {
  31. if( rows_added >= result_size ) {
  32. break;
  33. }
  34. result[rows_added ++] = db_get_field_assoc_int(g_DBResult, "animidx");
  35. db_next_row(g_DBResult);
  36. }
  37. db_free_result(g_DBResult);
  38. }
  39. return rows_added;
  40. }
  41. GetAnimationIndex(lib[], name[]) {
  42. new index = INVALID_ANIM_INDEX;
  43. if( isempty(lib) || isempty(name) ) {
  44. return index;
  45. }
  46. format(g_QueryString, sizeof g_QueryString, "\
  47. SELECT animidx FROM anim_data WHERE lib = '%q' AND name = '%q' LIMIT 1", lib, name
  48. );
  49. g_DBResult = db_query(g_ResourceDB, g_QueryString);
  50. if( db_num_rows(g_DBResult) > 0 ) {
  51. index = db_get_field_int(g_DBResult);
  52. }
  53. db_free_result(g_DBResult);
  54. return index;
  55. }