| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- LoadVehicleModelCache() {
- g_DBResult = db_query(g_ResourceDB, "SELECT * FROM veh_data");
- for(new row, rows = db_num_rows(g_DBResult), modelid; row < rows; row ++) {
- modelid = db_get_field_assoc_int(g_DBResult, "modelid");
- if( IsValidVehicleModel(modelid) ) {
- db_get_field_assoc(g_DBResult, "name", g_VehModelString, sizeof g_VehModelString);
- strpack(g_VehModelNameCache[modelid - MIN_VEHMODEL_ID], g_VehModelString, MAX_VEHMODELNAME_LEN+1);
- }
- db_next_row(g_DBResult);
- }
- db_free_result(g_DBResult);
- }
- GetVehicleModelCacheIndex(modelid) {
- if( !IsValidVehicleModel(modelid) ) {
- return INVALID_ARRAY_INDEX;
- }
- return modelid - MIN_VEHMODEL_ID;
- }
- GetVehicleModelName(modelid, name[], name_size) {
- if( !IsValidVehicleModel(modelid) ) {
- return 0;
- }
- strunpack(name, g_VehModelNameCache[modelid - MIN_VEHMODEL_ID], name_size);
- return 1;
- }
- FindVehicleModels(result[], result_size, search[], categoryid, offset, &max_offset) {
- new rows_added;
- if( categoryid == INVALID_CATEGORY_ID ) {
- if( isempty(search) ) {
- for(new i = offset; i < MAX_VEHMODELS; i ++) {
- if( rows_added >= result_size ) {
- break;
- }
- result[rows_added ++] = i + MIN_VEHMODEL_ID;
- }
- max_offset = MAX_VEHMODELS - 1;
- return rows_added;
- } else {
- format(g_QueryString, sizeof g_QueryString, "\
- SELECT modelid, \
- (SELECT COUNT(*) FROM veh_data WHERE modelid LIKE '%%%q%%' OR name LIKE '%%%q%%') AS max_rowcount \
- FROM veh_data \
- WHERE modelid LIKE '%%%q%%' OR name LIKE '%%%q%%' \
- LIMIT %i OFFSET %i",
- search, search,
- search, search,
- result_size, offset
- );
- }
- } else {
- if( isempty(search) ) {
- format(g_QueryString, sizeof g_QueryString, "\
- SELECT modelid, \
- (SELECT COUNT(*) FROM veh_category_bind WHERE categoryid = '%i') AS max_rowcount \
- FROM veh_category_bind \
- WHERE categoryid = '%i' \
- LIMIT %i OFFSET %i",
- categoryid,
- categoryid,
- result_size, offset
- );
- } else {
- format(g_QueryString, sizeof g_QueryString, "\
- SELECT b.modelid AS modelid, \
- (\
- SELECT COUNT(*) \
- FROM veh_category_bind b \
- INNER JOIN veh_data d ON b.modelid = d.modelid \
- WHERE b.categoryid = '%i' AND (d.modelid LIKE '%%%q%%' OR d.name LIKE '%%%q%%') \
- ) AS max_rowcount \
- FROM veh_category_bind b \
- INNER JOIN veh_data d ON b.modelid = d.modelid \
- WHERE b.categoryid = '%i' AND (d.modelid LIKE '%%%q%%' OR d.name LIKE '%%%q%%') \
- LIMIT %i OFFSET %i",
- categoryid, search, search,
- categoryid, search, search,
- result_size, offset
- );
- }
- }
- g_DBResult = db_query(g_ResourceDB, g_QueryString);
- new result_rows = db_num_rows(g_DBResult);
- if( result_rows > 0 ) {
- max_offset = db_get_field_assoc_int(g_DBResult, "max_rowcount") - 1;
- if( max_offset < 0 ) {
- max_offset = 0;
- }
- }
- for(new row; row < result_rows; row ++) {
- if( rows_added >= result_size ) {
- break;
- }
- result[rows_added ++] = db_get_field_assoc_int(g_DBResult, "modelid");
- db_next_row(g_DBResult);
- }
- db_free_result(g_DBResult);
- return rows_added;
- }
|