Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 2 из 3 ПерваяПервая 1 2 3 ПоследняяПоследняя
Показано с 11 по 20 из 25
  1. #11
    Аватар для vvw
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.08.2019
    Сообщений
    45
    Репутация:
    9 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    1. printf("%d", GetVehicleModelFromName("NRG-500"));

    Выдаёт нуль. Значение "hash", если что - 0xBBA5B096.
    То же самое и в случае с остальными моделями: циклом передаю названия моделей из массива в функцию и на все возвращает 0.
    + toupper крашит сервер, если название модели передавать в запакованном виде.

    И, как я понимаю, с такой реализацией можно забыть о том, что нужную модель будет искать по части названия?
    0. У тебя в массиве были одинаковые названия т/с.
    1. Чуть позже добавлю поддержку упакованных строк.
    2. Название можно менять через программу. Можно использовать сайт, где необходимо выбрать алгоритм fnv132. ОДНАКО, перед этим нужно перевести название т/с в верхний регистр, используя этот сайт. Поэтому я и думаю написать программу для конвертирования названий т/с из строк в хеш и наоборот.

    Исправил:
    1. stock GetVehicleModelFromName (const modelname[])
    2. {
    3. if ('0' <= modelname[0] <= '9') {
    4. new model = strval (modelname);
    5. if (400 <= model <= 611)
    6. return model;
    7. }
    8.  
    9. new len = strlen(modelname),
    10. hash = 0x811c9dc5,
    11. i = 0;
    12. while (i != len)
    13. hash = hash * 0x01000193 * toupper(modelname[i++]);
    14. switch (hash) {
    15. case 0xaa9e670e: return 400;
    16. case 0x48d21a32: return 401;
    17. case 0x0ebd03c0: return 402;
    18. case 0x40a03ca1: return 403;
    19. case 0x853e3eef: return 404;
    20. case 0x7b7768b1: return 405;
    21. case 0xad1566f6: return 406;
    22. case 0x4577ce94: return 407;
    23. case 0x47e9f403: return 408;
    24. case 0x9eb12194: return 409;
    25. case 0xd520d42b: return 410;
    26. case 0xb7b9c69b: return 411;
    27. case 0xb6a00af7: return 412;
    28. case 0xb61d5491: return 413;
    29. case 0x3dfac62a: return 414;
    30. case 0x7c7c1761: return 415;
    31. case 0x0e9f0bc5: return 416;
    32. case 0x52bec465: return 417;
    33. case 0x4cd67c23: return 418;
    34. case 0x10e27b70: return 419;
    35. case 0x2dd87431: return 420;
    36. case 0xd212535f: return 421;
    37. case 0xbd967cd6: return 422;
    38. case 0x38850d7d: return 423;
    39. case 0x1937d442: return 424;
    40. case 0xc8e2a7df: return 425;
    41. case 0x76044eb7: return 426;
    42. case 0x4456efc1: return 427;
    43. case 0x02e6d6fc: return 428;
    44. case 0x7b9888f3: return 429;
    45. case 0xeac37188: return 430;
    46. case 0x4a4a49e5: return 431;
    47. case 0x8a31ff09: return 432;
    48. case 0x28490cb8: return 433;
    49. case 0xbca7314d: return 434;
    50. case 0xa464a069: return 435;
    51. case 0xdd5384bc: return 436;
    52. case 0x48d9ab71: return 437;
    53. case 0x41e98457: return 438;
    54. case 0x10ccd46d: return 439;
    55. case 0xf8318edc: return 440;
    56. case 0xca4e49aa: return 441;
    57. case 0x26f4341b: return 442;
    58. case 0xf47205df: return 443;
    59. case 0xf88fe98d: return 444;
    60. case 0x15891ca5: return 445;
    61. case 0x11163d0c: return 446;
    62. case 0x4ad9564a: return 447;
    63. case 0xf4905965: return 448;
    64. case 0x46b84865: return 449;
    65. case 0xa464a06a: return 450;
    66. case 0xaefff156: return 451;
    67. case 0xa2e52fdf: return 452;
    68. case 0xd3c8aa5a: return 453;
    69. case 0x0041f5ce: return 454;
    70. case 0x0b8e9335: return 455;
    71. case 0xf4870598: return 456;
    72. case 0xde6ad316: return 457;
    73. case 0x03e4ca73: return 458;
    74. case 0x49ebfd34: return 459;
    75. case 0x7b47444f: return 460;
    76. case 0x57691f99: return 461;
    77. case 0x29d02a98: return 462;
    78. case 0x782fecd4: return 463;
    79. case 0x3eb8a214: return 464;
    80. case 0xb641ed19: return 465;
    81. case 0xb57abbc1: return 466;
    82. case 0x5aed41dd: return 467;
    83. case 0x16f0a71d: return 468;
    84. case 0x9c3efc0f: return 469;
    85. case 0xaa6d9f72: return 470;
    86. case 0xecb7efe7: return 471;
    87. case 0x36ce238c: return 472;
    88. case 0x9a1ae78c: return 473;
    89. case 0x219f72cf: return 474;
    90. case 0xa3c8578a: return 475;
    91. case 0xd239f6e4: return 476;
    92. case 0xa8f2f226: return 477;
    93. case 0x31845dfa: return 478;
    94. case 0xf43a1af1: return 479;
    95. case 0x8af82867: return 480;
    96. case 0x424a3d46: return 481;
    97. case 0xa7679208: return 482;
    98. case 0x46ef4c97: return 483;
    99. case 0xe8533915: return 484;
    100. case 0xbfb9b3d1: return 485;
    101. case 0x7e26fbbd: return 486;
    102. case 0xe0e3224d: return 487;
    103. case 0x5eefe90d: return 488;
    104. case 0x84ee7984: return 489;
    105. case 0x935fccc9: return 490;
    106. case 0x1d4bb7ee: return 491;
    107. case 0x2fdc4145: return 492;
    108. case 0x36c038a0: return 493;
    109. case 0x1713c38b: return 494;
    110. case 0xc9d59cf2: return 495;
    111. case 0x92626af1: return 496;
    112. case 0xfd790f5d: return 497;
    113. case 0xbb280574: return 498;
    114. case 0x95c900f4: return 499;
    115. case 0x332357cf: return 500;
    116. case 0x81aece69: return 501;
    117. case 0xfcee83d9: return 502;
    118. case 0xffee8880: return 503;
    119. case 0x6a55a6b0: return 504;
    120. case 0xd6c0f1b6: return 505;
    121. case 0x08b15607: return 506;
    122. case 0xb3f36289: return 507;
    123. case 0x97f2c0d3: return 508;
    124. case 0xc7e7acb6: return 509;
    125. case 0x24fd7b1f: return 510;
    126. case 0x49fbd09b: return 511;
    127. case 0xa27c4402: return 512;
    128. case 0x6a3791a7: return 513;
    129. case 0x839513e0: return 514;
    130. case 0x737caa4b: return 515;
    131. case 0x14dd24a8: return 516;
    132. case 0x23da0a81: return 517;
    133. case 0x5bc3e987: return 518;
    134. case 0x436330b9: return 519;
    135. case 0xe54d78d7: return 520;
    136. case 0x1e5fe420: return 521;
    137. case 0xbba5b096: return 522;
    138. case 0x48c69e2e: return 523;
    139. case 0xbd61f518: return 524;
    140. case 0x0ee457f6: return 525;
    141. case 0x8c81436c: return 526;
    142. case 0x94465685: return 527;
    143. case 0xc9fc379f: return 528;
    144. case 0xbe05b898: return 529;
    145. case 0xc052fd0a: return 530;
    146. case 0x7505fe02: return 531;
    147. case 0xde29dfa6: return 532;
    148. case 0x4ff6de45: return 533;
    149. case 0x5d681434: return 534;
    150. case 0x3a8f6e89: return 535;
    151. case 0xdd51d1b9: return 536;
    152. case 0x1324f0c0: return 537;
    153. case 0x9607d81f: return 538;
    154. case 0xfccd5305: return 539;
    155. case 0x5da79c32: return 540;
    156. case 0x2d99ee4d: return 541;
    157. case 0x6a2308d6: return 542;
    158. case 0x93523e04: return 543;
    159. case 0x0bbe1066: return 544;
    160. case 0xf7a8238e: return 545;
    161. case 0x39350504: return 546;
    162. case 0x4f9aa22c: return 547;
    163. case 0x3c014f04: return 548;
    164. case 0x11f3e134: return 549;
    165. case 0x4aa88126: return 550;
    166. case 0x7ba5beec: return 551;
    167. case 0x5ba64158: return 552;
    168. case 0xf22a86a8: return 553;
    169. case 0x7bcd021a: return 554;
    170. case 0x31786ba1: return 555;
    171. case 0x7231ebfb: return 556;
    172. case 0x7131ea16: return 557;
    173. case 0x72dcaff1: return 558;
    174. case 0xa29b3fa6: return 559;
    175. case 0x0781ea30: return 560;
    176. case 0x41c4c04f: return 561;
    177. case 0xa57a2703: return 562;
    178. case 0x4b86adcc: return 563;
    179. case 0x0a297361: return 564;
    180. case 0x068791d5: return 565;
    181. case 0x3a40b379: return 566;
    182. case 0xd6e869bb: return 567;
    183. case 0x50b80f72: return 568;
    184. case 0x3fde6cba: return 569;
    185. case 0x28b46bce: return 570;
    186. case 0xc5f9d9db: return 571;
    187. case 0x04bc1b61: return 572;
    188. case 0x113801f3: return 573;
    189. case 0x4aea0646: return 574;
    190. case 0x289df8bc: return 575;
    191. case 0x6a3bfa48: return 576;
    192. case 0xf461e519: return 577;
    193. case 0xe28dbeab: return 578;
    194. case 0x38b7183c: return 579;
    195. case 0xdec103ae: return 580;
    196. case 0x2e8836be: return 581;
    197. case 0xf544d67b: return 582;
    198. case 0x061e524b: return 583;
    199. case 0xb70d19c2: return 584;
    200. case 0xcaea9ab7: return 585;
    201. case 0x8e499490: return 586;
    202. case 0xe172dc61: return 587;
    203. case 0xcd5812c4: return 588;
    204. case 0x34f9b9e5: return 589;
    205. case 0xb63179f5: return 590;
    206. case 0xa464a06b: return 591;
    207. case 0x032e5a9e: return 592;
    208. case 0xbb2a0285: return 593;
    209. case 0x59511571: return 594;
    210. case 0xa3bcae40: return 595;
    211. case 0x43a8290d: return 596;
    212. case 0x19fcd299: return 597;
    213. case 0x74ec68aa: return 598;
    214. case 0x441f7486: return 599;
    215. case 0x8865004f: return 600;
    216. case 0xc06b7436: return 601;
    217. case 0x4073673b: return 602;
    218. case 0xc2c7e666: return 603;
    219. case 0x2a532ebb: return 604;
    220. case 0xd2518a36: return 605;
    221. case 0xe191b043: return 606;
    222. case 0xe191b040: return 607;
    223. case 0x0b9c6f7a: return 608;
    224. case 0x38ebb6c6: return 609;
    225. case 0x819a3fa4: return 610;
    226. case 0xaa2568c2: return 611;
    227. }
    228. return INVALID_VEHICLE_ID;
    229. }
    Последний раз редактировалось vvw; 11.10.2019 в 02:54.

  2. #12
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    0. Это не у меня, а в GTA =) Тот же Rancer под 505 и 489 ID, один из которых просто использовался в миссии. Вообще вот.

    2. Если это ответ на мои слова насчёт поиска транспорта по части названия, а не по полному названию, то для полноценного копирования принципов работы strfind придётся ведь чуть ли не побуквенно хэши делать, чтоб учесть разные варианты. И без того не малый список хешей разрастётся ещё больше. Такое себе решение, как мне кажется.

    Код всё равно возвращает INVALID_VEHICLE_ID, а не ID модели.

     Код теста, если что
    1. new const VehicleModelName[212][] =
    2. {
    3. {"Landstalker"}, {"Bravura"}, {"Buffalo"}, {"Linerunner"}, {"Perennial"},
    4. {"Sentinel"}, {"Dumper"}, {"Fire Truck"}, {"Trashmaster"}, {"Stretch"},
    5. {"Manana"}, {"Infernus"}, {"Voodoo"}, {"Pony"}, {"Mule"}, {"Cheetah"},
    6. {"Ambulance"}, {"Leviathan"}, {"Moonbeam"}, {"Esperanto"}, {"Taxi"},
    7. {"Washington"}, {"Bobcat"}, {"Mr.Whoopee"}, {"BF Injection"}, {"Hunter"},
    8. {"Premier"}, {"Enforcer"}, {"Securicar"}, {"Banshee"}, {"Predator"}, {"Bus"},
    9. {"Rhino"}, {"Barracks"}, {"Hotknife"}, {"Article Trailer 1"}, {"Previon"},
    10. {"Coach"}, {"Cabbie"}, {"Stallion"}, {"Rumpo"}, {"RC Bandit"}, {"Romero"},
    11. {"Packer"}, {"Monster"}, {"Admiral"}, {"Squalo"}, {"Seasparrow"}, {"Pizzaboy"},
    12. {"Tram"}, {"Article Trailer 2"}, {"Turismo"}, {"Speeder"}, {"Reefer"},
    13. {"Tropic"}, {"Flatbed"}, {"Yankee"}, {"Caddy"}, {"Solair"}, {"Berkleys RC Van"},
    14. {"Skimmer"}, {"PCJ-600"}, {"Faggio"}, {"Freeway"}, {"RC Baron"}, {"RC Raider"},
    15. {"Glendale"}, {"Oceanic"}, {"Sanchez"}, {"Sparrow"}, {"Patriot"}, {"Quadbike"},
    16. {"Coastguard"}, {"Dinghy"}, {"Hermes"}, {"Sabre"}, {"Rustler"}, {"ZR-350"},
    17. {"Walton"}, {"Regina"}, {"Comet"}, {"BMX"}, {"Burrito"}, {"Camper"},
    18. {"Marquis"}, {"Baggage"}, {"Dozer"}, {"Maverick"}, {"News Chopper"},
    19. {"Rancher"}, {"FBI Rancher"}, {"Virgo"}, {"Greenwood"}, {"Jetmax"},
    20. {"Hotring Racer"}, {"Sandking"}, {"Blista Compact"}, {"Police Maverick"},
    21. {"Boxville"}, {"Benson"}, {"Mesa"}, {"RC Goblin"}, {"Hotring Racer (A)"},
    22. {"Hotring Racer (B)"}, {"Bloodring Banger"}, {"Rancher 2"},
    23. {"Super GT"}, {"Elegant"}, {"Journey"}, {"Bike"}, {"Mountain Bike"},
    24. {"Beagle"}, {"Cropduster"}, {"Stuntplane"}, {"Tanker"}, {"Roadtrain"},
    25. {"Nebula"}, {"Majestic"}, {"Buccaneer"}, {"Shamal"}, {"Hydra"}, {"FCR-900"},
    26. {"NRG-500"}, {"HPV1000"}, {"Cement Truck"}, {"Towtruck"}, {"Fortune"}, {"Cardona"},
    27. {"FBI Truck"}, {"Willard"}, {"Forklift"}, {"Tractor"}, {"Combine Harvester"},
    28. {"Feltzer"}, {"Remington"}, {"Slamvan"}, {"Blade"}, {"Freight"}, {"Brown Streak"},
    29. {"Vortex"}, {"Vincent"}, {"Bullet"}, {"Clover"}, {"Sadler"}, {"Fire Truck 2"},
    30. {"Hustler"}, {"Intruder"}, {"Primo"}, {"Cargobob"}, {"Tampa"}, {"Sunrise"},
    31. {"Merit"}, {"Utility Van"}, {"Nevada"}, {"Yosemite"}, {"Windsor"}, {"Monster (A)"},
    32. {"Monster (B)"}, {"Uranus"}, {"Jester"}, {"Sultan"}, {"Stratum"}, {"Elegy"},
    33. {"Raindance"}, {"RC Tiger"}, {"Flash"}, {"Tahoma"}, {"Savanna"}, {"Bandito"},
    34. {"Freight"}, {"Brown Streak"}, {"Kart"}, {"Mower"}, {"Dune"}, {"Sweeper"},
    35. {"Broadway"}, {"Tornado"}, {"AT-400"}, {"DFT-30"}, {"Huntley"}, {"Stafford"},
    36. {"BF-400"}, {"Newsvan"}, {"Tug"}, {"Petrol Truck"}, {"Emperor"}, {"Wayfarer"},
    37. {"Euros"}, {"Hotdog"}, {"Club"}, {"Freight Box"}, {"Article Trailer 3"}, {"Andromada"},
    38. {"Dodo"}, {"RC Cam"}, {"Launch"}, {"Police (LSPD)"}, {"Police (SFPD)"}, {"Police (LVPD)"},
    39. {"Ranger"}, {"Picador"}, {"S.W.A.T."}, {"Alpha"}, {"Phoenix"}, {"Glendale 2"},
    40. {"Sadler 2"}, {"Baggage Box A"}, {"Baggage Box B"}, {"Stairs Trailer"}, {"Boxville 2"},
    41. {"Farm Trailer"}, {"Utility Trailer"}
    42. };
    43.  
    44.  
    45. main()
    46. {
    47. print("\n\n\n");
    48. for(new i, m; i < sizeof(VehicleModelName); i++)
    49. {
    50. m = GetVehicleModelFromName2(VehicleModelName[i]);
    51. if(m != GetVehicleModelFromName(VehicleModelName[i]))
    52. {
    53. printf("[Ошибка] %s (ID %d | %d)", VehicleModelName[i], m, GetVehicleModelFromName(VehicleModelName[i]));
    54. }
    55. }
    56. print("\n\n\n");
    57.  
    58. printf("%d", GetVehicleModelFromName("NRG-500"));
    59. }
    60.  
    61.  
    62. stock GetVehicleModelFromName (const modelname[])
    63. {
    64. if ('0' <= modelname[0] <= '9') {
    65. new model = strval (modelname);
    66. if (400 <= model <= 611)
    67. return model;
    68. }
    69.  
    70. new len = strlen(modelname),
    71. hash = 0x811c9dc5,
    72. i = 0;
    73. while (i != len)
    74. hash = hash * 0x01000193 * toupper(modelname[i++]);
    75. switch (hash) {
    76. case 0xaa9e670e: return 400;
    77. case 0x48d21a32: return 401;
    78. case 0x0ebd03c0: return 402;
    79. case 0x40a03ca1: return 403;
    80. case 0x853e3eef: return 404;
    81. case 0x7b7768b1: return 405;
    82. case 0xad1566f6: return 406;
    83. case 0x4577ce94: return 407;
    84. case 0x47e9f403: return 408;
    85. case 0x9eb12194: return 409;
    86. case 0xd520d42b: return 410;
    87. case 0xb7b9c69b: return 411;
    88. case 0xb6a00af7: return 412;
    89. case 0xb61d5491: return 413;
    90. case 0x3dfac62a: return 414;
    91. case 0x7c7c1761: return 415;
    92. case 0x0e9f0bc5: return 416;
    93. case 0x52bec465: return 417;
    94. case 0x4cd67c23: return 418;
    95. case 0x10e27b70: return 419;
    96. case 0x2dd87431: return 420;
    97. case 0xd212535f: return 421;
    98. case 0xbd967cd6: return 422;
    99. case 0x38850d7d: return 423;
    100. case 0x1937d442: return 424;
    101. case 0xc8e2a7df: return 425;
    102. case 0x76044eb7: return 426;
    103. case 0x4456efc1: return 427;
    104. case 0x02e6d6fc: return 428;
    105. case 0x7b9888f3: return 429;
    106. case 0xeac37188: return 430;
    107. case 0x4a4a49e5: return 431;
    108. case 0x8a31ff09: return 432;
    109. case 0x28490cb8: return 433;
    110. case 0xbca7314d: return 434;
    111. case 0xa464a069: return 435;
    112. case 0xdd5384bc: return 436;
    113. case 0x48d9ab71: return 437;
    114. case 0x41e98457: return 438;
    115. case 0x10ccd46d: return 439;
    116. case 0xf8318edc: return 440;
    117. case 0xca4e49aa: return 441;
    118. case 0x26f4341b: return 442;
    119. case 0xf47205df: return 443;
    120. case 0xf88fe98d: return 444;
    121. case 0x15891ca5: return 445;
    122. case 0x11163d0c: return 446;
    123. case 0x4ad9564a: return 447;
    124. case 0xf4905965: return 448;
    125. case 0x46b84865: return 449;
    126. case 0xa464a06a: return 450;
    127. case 0xaefff156: return 451;
    128. case 0xa2e52fdf: return 452;
    129. case 0xd3c8aa5a: return 453;
    130. case 0x0041f5ce: return 454;
    131. case 0x0b8e9335: return 455;
    132. case 0xf4870598: return 456;
    133. case 0xde6ad316: return 457;
    134. case 0x03e4ca73: return 458;
    135. case 0x49ebfd34: return 459;
    136. case 0x7b47444f: return 460;
    137. case 0x57691f99: return 461;
    138. case 0x29d02a98: return 462;
    139. case 0x782fecd4: return 463;
    140. case 0x3eb8a214: return 464;
    141. case 0xb641ed19: return 465;
    142. case 0xb57abbc1: return 466;
    143. case 0x5aed41dd: return 467;
    144. case 0x16f0a71d: return 468;
    145. case 0x9c3efc0f: return 469;
    146. case 0xaa6d9f72: return 470;
    147. case 0xecb7efe7: return 471;
    148. case 0x36ce238c: return 472;
    149. case 0x9a1ae78c: return 473;
    150. case 0x219f72cf: return 474;
    151. case 0xa3c8578a: return 475;
    152. case 0xd239f6e4: return 476;
    153. case 0xa8f2f226: return 477;
    154. case 0x31845dfa: return 478;
    155. case 0xf43a1af1: return 479;
    156. case 0x8af82867: return 480;
    157. case 0x424a3d46: return 481;
    158. case 0xa7679208: return 482;
    159. case 0x46ef4c97: return 483;
    160. case 0xe8533915: return 484;
    161. case 0xbfb9b3d1: return 485;
    162. case 0x7e26fbbd: return 486;
    163. case 0xe0e3224d: return 487;
    164. case 0x5eefe90d: return 488;
    165. case 0x84ee7984: return 489;
    166. case 0x935fccc9: return 490;
    167. case 0x1d4bb7ee: return 491;
    168. case 0x2fdc4145: return 492;
    169. case 0x36c038a0: return 493;
    170. case 0x1713c38b: return 494;
    171. case 0xc9d59cf2: return 495;
    172. case 0x92626af1: return 496;
    173. case 0xfd790f5d: return 497;
    174. case 0xbb280574: return 498;
    175. case 0x95c900f4: return 499;
    176. case 0x332357cf: return 500;
    177. case 0x81aece69: return 501;
    178. case 0xfcee83d9: return 502;
    179. case 0xffee8880: return 503;
    180. case 0x6a55a6b0: return 504;
    181. case 0xd6c0f1b6: return 505;
    182. case 0x08b15607: return 506;
    183. case 0xb3f36289: return 507;
    184. case 0x97f2c0d3: return 508;
    185. case 0xc7e7acb6: return 509;
    186. case 0x24fd7b1f: return 510;
    187. case 0x49fbd09b: return 511;
    188. case 0xa27c4402: return 512;
    189. case 0x6a3791a7: return 513;
    190. case 0x839513e0: return 514;
    191. case 0x737caa4b: return 515;
    192. case 0x14dd24a8: return 516;
    193. case 0x23da0a81: return 517;
    194. case 0x5bc3e987: return 518;
    195. case 0x436330b9: return 519;
    196. case 0xe54d78d7: return 520;
    197. case 0x1e5fe420: return 521;
    198. case 0xbba5b096: return 522;
    199. case 0x48c69e2e: return 523;
    200. case 0xbd61f518: return 524;
    201. case 0x0ee457f6: return 525;
    202. case 0x8c81436c: return 526;
    203. case 0x94465685: return 527;
    204. case 0xc9fc379f: return 528;
    205. case 0xbe05b898: return 529;
    206. case 0xc052fd0a: return 530;
    207. case 0x7505fe02: return 531;
    208. case 0xde29dfa6: return 532;
    209. case 0x4ff6de45: return 533;
    210. case 0x5d681434: return 534;
    211. case 0x3a8f6e89: return 535;
    212. case 0xdd51d1b9: return 536;
    213. case 0x1324f0c0: return 537;
    214. case 0x9607d81f: return 538;
    215. case 0xfccd5305: return 539;
    216. case 0x5da79c32: return 540;
    217. case 0x2d99ee4d: return 541;
    218. case 0x6a2308d6: return 542;
    219. case 0x93523e04: return 543;
    220. case 0x0bbe1066: return 544;
    221. case 0xf7a8238e: return 545;
    222. case 0x39350504: return 546;
    223. case 0x4f9aa22c: return 547;
    224. case 0x3c014f04: return 548;
    225. case 0x11f3e134: return 549;
    226. case 0x4aa88126: return 550;
    227. case 0x7ba5beec: return 551;
    228. case 0x5ba64158: return 552;
    229. case 0xf22a86a8: return 553;
    230. case 0x7bcd021a: return 554;
    231. case 0x31786ba1: return 555;
    232. case 0x7231ebfb: return 556;
    233. case 0x7131ea16: return 557;
    234. case 0x72dcaff1: return 558;
    235. case 0xa29b3fa6: return 559;
    236. case 0x0781ea30: return 560;
    237. case 0x41c4c04f: return 561;
    238. case 0xa57a2703: return 562;
    239. case 0x4b86adcc: return 563;
    240. case 0x0a297361: return 564;
    241. case 0x068791d5: return 565;
    242. case 0x3a40b379: return 566;
    243. case 0xd6e869bb: return 567;
    244. case 0x50b80f72: return 568;
    245. case 0x3fde6cba: return 569;
    246. case 0x28b46bce: return 570;
    247. case 0xc5f9d9db: return 571;
    248. case 0x04bc1b61: return 572;
    249. case 0x113801f3: return 573;
    250. case 0x4aea0646: return 574;
    251. case 0x289df8bc: return 575;
    252. case 0x6a3bfa48: return 576;
    253. case 0xf461e519: return 577;
    254. case 0xe28dbeab: return 578;
    255. case 0x38b7183c: return 579;
    256. case 0xdec103ae: return 580;
    257. case 0x2e8836be: return 581;
    258. case 0xf544d67b: return 582;
    259. case 0x061e524b: return 583;
    260. case 0xb70d19c2: return 584;
    261. case 0xcaea9ab7: return 585;
    262. case 0x8e499490: return 586;
    263. case 0xe172dc61: return 587;
    264. case 0xcd5812c4: return 588;
    265. case 0x34f9b9e5: return 589;
    266. case 0xb63179f5: return 590;
    267. case 0xa464a06b: return 591;
    268. case 0x032e5a9e: return 592;
    269. case 0xbb2a0285: return 593;
    270. case 0x59511571: return 594;
    271. case 0xa3bcae40: return 595;
    272. case 0x43a8290d: return 596;
    273. case 0x19fcd299: return 597;
    274. case 0x74ec68aa: return 598;
    275. case 0x441f7486: return 599;
    276. case 0x8865004f: return 600;
    277. case 0xc06b7436: return 601;
    278. case 0x4073673b: return 602;
    279. case 0xc2c7e666: return 603;
    280. case 0x2a532ebb: return 604;
    281. case 0xd2518a36: return 605;
    282. case 0xe191b043: return 606;
    283. case 0xe191b040: return 607;
    284. case 0x0b9c6f7a: return 608;
    285. case 0x38ebb6c6: return 609;
    286. case 0x819a3fa4: return 610;
    287. case 0xaa2568c2: return 611;
    288. }
    289. return INVALID_VEHICLE_ID;
    290. }
    291.  
    292.  
    293. stock GetVehicleModelFromName2(const model_name[])
    294. {
    295. if ('0' <= model_name[0] <= '9')
    296. {
    297. new model = strval(model_name);
    298. if(400 <= model <= 611)
    299. {
    300. return model;
    301. }
    302. }
    303.  
    304. static const sVehicleModelName[212][] =
    305. {
    306. {!"Landstalker"}, {!"Bravura"}, {!"Buffalo"}, {!"Linerunner"}, {!"Perennial"},
    307. {!"Sentinel"}, {!"Dumper"}, {!"Fire Truck"}, {!"Trashmaster"}, {!"Stretch"},
    308. {!"Manana"}, {!"Infernus"}, {!"Voodoo"}, {!"Pony"}, {!"Mule"}, {!"Cheetah"},
    309. {!"Ambulance"}, {!"Leviathan"}, {!"Moonbeam"}, {!"Esperanto"}, {!"Taxi"},
    310. {!"Washington"}, {!"Bobcat"}, {!"Mr.Whoopee"}, {!"BF Injection"}, {!"Hunter"},
    311. {!"Premier"}, {!"Enforcer"}, {!"Securicar"}, {!"Banshee"}, {!"Predator"}, {!"Bus"},
    312. {!"Rhino"}, {!"Barracks"}, {!"Hotknife"}, {!"Article Trailer 1"}, {!"Previon"},
    313. {!"Coach"}, {!"Cabbie"}, {!"Stallion"}, {!"Rumpo"}, {!"RC Bandit"}, {!"Romero"},
    314. {!"Packer"}, {!"Monster"}, {!"Admiral"}, {!"Squalo"}, {!"Seasparrow"}, {!"Pizzaboy"},
    315. {!"Tram"}, {!"Article Trailer 2"}, {!"Turismo"}, {!"Speeder"}, {!"Reefer"},
    316. {!"Tropic"}, {!"Flatbed"}, {!"Yankee"}, {!"Caddy"}, {!"Solair"}, {!"Berkleys RC Van"},
    317. {!"Skimmer"}, {!"PCJ-600"}, {!"Faggio"}, {!"Freeway"}, {!"RC Baron"}, {!"RC Raider"},
    318. {!"Glendale"}, {!"Oceanic"}, {!"Sanchez"}, {!"Sparrow"}, {!"Patriot"}, {!"Quadbike"},
    319. {!"Coastguard"}, {!"Dinghy"}, {!"Hermes"}, {!"Sabre"}, {!"Rustler"}, {!"ZR-350"},
    320. {!"Walton"}, {!"Regina"}, {!"Comet"}, {!"BMX"}, {!"Burrito"}, {!"Camper"},
    321. {!"Marquis"}, {!"Baggage"}, {!"Dozer"}, {!"Maverick"}, {!"News Chopper"},
    322. {!"Rancher"}, {!"FBI Rancher"}, {!"Virgo"}, {!"Greenwood"}, {!"Jetmax"},
    323. {!"Hotring Racer"}, {!"Sandking"}, {!"Blista Compact"}, {!"Police Maverick"},
    324. {!"Boxville"}, {!"Benson"}, {!"Mesa"}, {!"RC Goblin"}, {!"Hotring Racer (A)"},
    325. {!"Hotring Racer (B)"}, {!"Bloodring Banger"}, {!"Rancher 2"},
    326. {!"Super GT"}, {!"Elegant"}, {!"Journey"}, {!"Bike"}, {!"Mountain Bike"},
    327. {!"Beagle"}, {!"Cropduster"}, {!"Stuntplane"}, {!"Tanker"}, {!"Roadtrain"},
    328. {!"Nebula"}, {!"Majestic"}, {!"Buccaneer"}, {!"Shamal"}, {!"Hydra"}, {!"FCR-900"},
    329. {!"NRG-500"}, {!"HPV1000"}, {!"Cement Truck"}, {!"Towtruck"}, {!"Fortune"}, {!"Cardona"},
    330. {!"FBI Truck"}, {!"Willard"}, {!"Forklift"}, {!"Tractor"}, {!"Combine Harvester"},
    331. {!"Feltzer"}, {!"Remington"}, {!"Slamvan"}, {!"Blade"}, {!"Freight"}, {!"Brown Streak"},
    332. {!"Vortex"}, {!"Vincent"}, {!"Bullet"}, {!"Clover"}, {!"Sadler"}, {!"Fire Truck 2"},
    333. {!"Hustler"}, {!"Intruder"}, {!"Primo"}, {!"Cargobob"}, {!"Tampa"}, {!"Sunrise"},
    334. {!"Merit"}, {!"Utility Van"}, {!"Nevada"}, {!"Yosemite"}, {!"Windsor"}, {!"Monster (A)"},
    335. {!"Monster (B)"}, {!"Uranus"}, {!"Jester"}, {!"Sultan"}, {!"Stratum"}, {!"Elegy"},
    336. {!"Raindance"}, {!"RC Tiger"}, {!"Flash"}, {!"Tahoma"}, {!"Savanna"}, {!"Bandito"},
    337. {!"Freight"}, {!"Brown Streak"}, {!"Kart"}, {!"Mower"}, {!"Dune"}, {!"Sweeper"},
    338. {!"Broadway"}, {!"Tornado"}, {!"AT-400"}, {!"DFT-30"}, {!"Huntley"}, {!"Stafford"},
    339. {!"BF-400"}, {!"Newsvan"}, {!"Tug"}, {!"Petrol Truck"}, {!"Emperor"}, {!"Wayfarer"},
    340. {!"Euros"}, {!"Hotdog"}, {!"Club"}, {!"Freight Box"}, {!"Article Trailer 3"}, {!"Andromada"},
    341. {!"Dodo"}, {!"RC Cam"}, {!"Launch"}, {!"Police (LSPD)"}, {!"Police (SFPD)"}, {!"Police (LVPD)"},
    342. {!"Ranger"}, {!"Picador"}, {!"S.W.A.T."}, {!"Alpha"}, {!"Phoenix"}, {!"Glendale 2"},
    343. {!"Sadler 2"}, {!"Baggage Box A"}, {!"Baggage Box B"}, {!"Stairs Trailer"}, {!"Boxville 2"},
    344. {!"Farm Trailer"}, {!"Utility Trailer"}
    345. };
    346.  
    347. for(new i = 0; i < sizeof(sVehicleModelName); i++)
    348. {
    349. if(strfind(sVehicleModelName[i], model_name, true) != -1)
    350. return i+400;
    351. }
    352. return INVALID_VEHICLE_ID;
    353. }


    UPD:
    И да, я, если что, не буду против, если ты или кто-то ещё опубликует более лучший вариант. Как писал выше, я даже тему готов удалить эту, чтоб не вводить никого в заблуждение. Этот код был опубликован просто чтоб он не затерялся в пучине раздела с вопросами на другом форуме, ибо так или иначе подобные вопросы периодически слышу.
    И изначально я писал этот код, скорее, как пример того, что функцию можно превратить в кастомный спецификатор для sscanf, упростив написание команды для создания транспорта по названию. Цели сделать самый быстрый вариант реализации не было. Была цель показать пример + сделать так, чтоб можно было находить транспорт по части названия (ну как с тем же "NRG-500", для которого гораздо проще написать "NRG"). Так что если будет вариант сохранить функциональность, но увеличить скорость срабатывания - будет только круче.
    Последний раз редактировалось DeimoS; 11.10.2019 в 04:48.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  3. #13
    Аватар для vvw
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.08.2019
    Сообщений
    45
    Репутация:
    9 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    0. Это не у меня, а в GTA =) Тот же Rancer под 505 и 489 ID, один из которых просто использовался в миссии. Вообще вот.

    2. Если это ответ на мои слова насчёт поиска транспорта по части названия, а не по полному названию, то для полноценного копирования принципов работы strfind придётся ведь чуть ли не побуквенно хэши делать, чтоб учесть разные варианты. И без того не малый список хешей разрастётся ещё больше. Такое себе решение, как мне кажется.

    Код всё равно возвращает INVALID_VEHICLE_ID, а не ID модели.

     Код теста, если что
    1. new const VehicleModelName[212][] =
    2. {
    3. {"Landstalker"}, {"Bravura"}, {"Buffalo"}, {"Linerunner"}, {"Perennial"},
    4. {"Sentinel"}, {"Dumper"}, {"Fire Truck"}, {"Trashmaster"}, {"Stretch"},
    5. {"Manana"}, {"Infernus"}, {"Voodoo"}, {"Pony"}, {"Mule"}, {"Cheetah"},
    6. {"Ambulance"}, {"Leviathan"}, {"Moonbeam"}, {"Esperanto"}, {"Taxi"},
    7. {"Washington"}, {"Bobcat"}, {"Mr.Whoopee"}, {"BF Injection"}, {"Hunter"},
    8. {"Premier"}, {"Enforcer"}, {"Securicar"}, {"Banshee"}, {"Predator"}, {"Bus"},
    9. {"Rhino"}, {"Barracks"}, {"Hotknife"}, {"Article Trailer 1"}, {"Previon"},
    10. {"Coach"}, {"Cabbie"}, {"Stallion"}, {"Rumpo"}, {"RC Bandit"}, {"Romero"},
    11. {"Packer"}, {"Monster"}, {"Admiral"}, {"Squalo"}, {"Seasparrow"}, {"Pizzaboy"},
    12. {"Tram"}, {"Article Trailer 2"}, {"Turismo"}, {"Speeder"}, {"Reefer"},
    13. {"Tropic"}, {"Flatbed"}, {"Yankee"}, {"Caddy"}, {"Solair"}, {"Berkleys RC Van"},
    14. {"Skimmer"}, {"PCJ-600"}, {"Faggio"}, {"Freeway"}, {"RC Baron"}, {"RC Raider"},
    15. {"Glendale"}, {"Oceanic"}, {"Sanchez"}, {"Sparrow"}, {"Patriot"}, {"Quadbike"},
    16. {"Coastguard"}, {"Dinghy"}, {"Hermes"}, {"Sabre"}, {"Rustler"}, {"ZR-350"},
    17. {"Walton"}, {"Regina"}, {"Comet"}, {"BMX"}, {"Burrito"}, {"Camper"},
    18. {"Marquis"}, {"Baggage"}, {"Dozer"}, {"Maverick"}, {"News Chopper"},
    19. {"Rancher"}, {"FBI Rancher"}, {"Virgo"}, {"Greenwood"}, {"Jetmax"},
    20. {"Hotring Racer"}, {"Sandking"}, {"Blista Compact"}, {"Police Maverick"},
    21. {"Boxville"}, {"Benson"}, {"Mesa"}, {"RC Goblin"}, {"Hotring Racer (A)"},
    22. {"Hotring Racer (B)"}, {"Bloodring Banger"}, {"Rancher 2"},
    23. {"Super GT"}, {"Elegant"}, {"Journey"}, {"Bike"}, {"Mountain Bike"},
    24. {"Beagle"}, {"Cropduster"}, {"Stuntplane"}, {"Tanker"}, {"Roadtrain"},
    25. {"Nebula"}, {"Majestic"}, {"Buccaneer"}, {"Shamal"}, {"Hydra"}, {"FCR-900"},
    26. {"NRG-500"}, {"HPV1000"}, {"Cement Truck"}, {"Towtruck"}, {"Fortune"}, {"Cardona"},
    27. {"FBI Truck"}, {"Willard"}, {"Forklift"}, {"Tractor"}, {"Combine Harvester"},
    28. {"Feltzer"}, {"Remington"}, {"Slamvan"}, {"Blade"}, {"Freight"}, {"Brown Streak"},
    29. {"Vortex"}, {"Vincent"}, {"Bullet"}, {"Clover"}, {"Sadler"}, {"Fire Truck 2"},
    30. {"Hustler"}, {"Intruder"}, {"Primo"}, {"Cargobob"}, {"Tampa"}, {"Sunrise"},
    31. {"Merit"}, {"Utility Van"}, {"Nevada"}, {"Yosemite"}, {"Windsor"}, {"Monster (A)"},
    32. {"Monster (B)"}, {"Uranus"}, {"Jester"}, {"Sultan"}, {"Stratum"}, {"Elegy"},
    33. {"Raindance"}, {"RC Tiger"}, {"Flash"}, {"Tahoma"}, {"Savanna"}, {"Bandito"},
    34. {"Freight"}, {"Brown Streak"}, {"Kart"}, {"Mower"}, {"Dune"}, {"Sweeper"},
    35. {"Broadway"}, {"Tornado"}, {"AT-400"}, {"DFT-30"}, {"Huntley"}, {"Stafford"},
    36. {"BF-400"}, {"Newsvan"}, {"Tug"}, {"Petrol Truck"}, {"Emperor"}, {"Wayfarer"},
    37. {"Euros"}, {"Hotdog"}, {"Club"}, {"Freight Box"}, {"Article Trailer 3"}, {"Andromada"},
    38. {"Dodo"}, {"RC Cam"}, {"Launch"}, {"Police (LSPD)"}, {"Police (SFPD)"}, {"Police (LVPD)"},
    39. {"Ranger"}, {"Picador"}, {"S.W.A.T."}, {"Alpha"}, {"Phoenix"}, {"Glendale 2"},
    40. {"Sadler 2"}, {"Baggage Box A"}, {"Baggage Box B"}, {"Stairs Trailer"}, {"Boxville 2"},
    41. {"Farm Trailer"}, {"Utility Trailer"}
    42. };
    43.  
    44.  
    45. main()
    46. {
    47. print("\n\n\n");
    48. for(new i, m; i < sizeof(VehicleModelName); i++)
    49. {
    50. m = GetVehicleModelFromName2(VehicleModelName[i]);
    51. if(m != GetVehicleModelFromName(VehicleModelName[i]))
    52. {
    53. printf("[Ошибка] %s (ID %d | %d)", VehicleModelName[i], m, GetVehicleModelFromName(VehicleModelName[i]));
    54. }
    55. }
    56. print("\n\n\n");
    57.  
    58. printf("%d", GetVehicleModelFromName("NRG-500"));
    59. }
    60.  
    61.  
    62. stock GetVehicleModelFromName (const modelname[])
    63. {
    64. if ('0' <= modelname[0] <= '9') {
    65. new model = strval (modelname);
    66. if (400 <= model <= 611)
    67. return model;
    68. }
    69.  
    70. new len = strlen(modelname),
    71. hash = 0x811c9dc5,
    72. i = 0;
    73. while (i != len)
    74. hash = hash * 0x01000193 * toupper(modelname[i++]);
    75. switch (hash) {
    76. case 0xaa9e670e: return 400;
    77. case 0x48d21a32: return 401;
    78. case 0x0ebd03c0: return 402;
    79. case 0x40a03ca1: return 403;
    80. case 0x853e3eef: return 404;
    81. case 0x7b7768b1: return 405;
    82. case 0xad1566f6: return 406;
    83. case 0x4577ce94: return 407;
    84. case 0x47e9f403: return 408;
    85. case 0x9eb12194: return 409;
    86. case 0xd520d42b: return 410;
    87. case 0xb7b9c69b: return 411;
    88. case 0xb6a00af7: return 412;
    89. case 0xb61d5491: return 413;
    90. case 0x3dfac62a: return 414;
    91. case 0x7c7c1761: return 415;
    92. case 0x0e9f0bc5: return 416;
    93. case 0x52bec465: return 417;
    94. case 0x4cd67c23: return 418;
    95. case 0x10e27b70: return 419;
    96. case 0x2dd87431: return 420;
    97. case 0xd212535f: return 421;
    98. case 0xbd967cd6: return 422;
    99. case 0x38850d7d: return 423;
    100. case 0x1937d442: return 424;
    101. case 0xc8e2a7df: return 425;
    102. case 0x76044eb7: return 426;
    103. case 0x4456efc1: return 427;
    104. case 0x02e6d6fc: return 428;
    105. case 0x7b9888f3: return 429;
    106. case 0xeac37188: return 430;
    107. case 0x4a4a49e5: return 431;
    108. case 0x8a31ff09: return 432;
    109. case 0x28490cb8: return 433;
    110. case 0xbca7314d: return 434;
    111. case 0xa464a069: return 435;
    112. case 0xdd5384bc: return 436;
    113. case 0x48d9ab71: return 437;
    114. case 0x41e98457: return 438;
    115. case 0x10ccd46d: return 439;
    116. case 0xf8318edc: return 440;
    117. case 0xca4e49aa: return 441;
    118. case 0x26f4341b: return 442;
    119. case 0xf47205df: return 443;
    120. case 0xf88fe98d: return 444;
    121. case 0x15891ca5: return 445;
    122. case 0x11163d0c: return 446;
    123. case 0x4ad9564a: return 447;
    124. case 0xf4905965: return 448;
    125. case 0x46b84865: return 449;
    126. case 0xa464a06a: return 450;
    127. case 0xaefff156: return 451;
    128. case 0xa2e52fdf: return 452;
    129. case 0xd3c8aa5a: return 453;
    130. case 0x0041f5ce: return 454;
    131. case 0x0b8e9335: return 455;
    132. case 0xf4870598: return 456;
    133. case 0xde6ad316: return 457;
    134. case 0x03e4ca73: return 458;
    135. case 0x49ebfd34: return 459;
    136. case 0x7b47444f: return 460;
    137. case 0x57691f99: return 461;
    138. case 0x29d02a98: return 462;
    139. case 0x782fecd4: return 463;
    140. case 0x3eb8a214: return 464;
    141. case 0xb641ed19: return 465;
    142. case 0xb57abbc1: return 466;
    143. case 0x5aed41dd: return 467;
    144. case 0x16f0a71d: return 468;
    145. case 0x9c3efc0f: return 469;
    146. case 0xaa6d9f72: return 470;
    147. case 0xecb7efe7: return 471;
    148. case 0x36ce238c: return 472;
    149. case 0x9a1ae78c: return 473;
    150. case 0x219f72cf: return 474;
    151. case 0xa3c8578a: return 475;
    152. case 0xd239f6e4: return 476;
    153. case 0xa8f2f226: return 477;
    154. case 0x31845dfa: return 478;
    155. case 0xf43a1af1: return 479;
    156. case 0x8af82867: return 480;
    157. case 0x424a3d46: return 481;
    158. case 0xa7679208: return 482;
    159. case 0x46ef4c97: return 483;
    160. case 0xe8533915: return 484;
    161. case 0xbfb9b3d1: return 485;
    162. case 0x7e26fbbd: return 486;
    163. case 0xe0e3224d: return 487;
    164. case 0x5eefe90d: return 488;
    165. case 0x84ee7984: return 489;
    166. case 0x935fccc9: return 490;
    167. case 0x1d4bb7ee: return 491;
    168. case 0x2fdc4145: return 492;
    169. case 0x36c038a0: return 493;
    170. case 0x1713c38b: return 494;
    171. case 0xc9d59cf2: return 495;
    172. case 0x92626af1: return 496;
    173. case 0xfd790f5d: return 497;
    174. case 0xbb280574: return 498;
    175. case 0x95c900f4: return 499;
    176. case 0x332357cf: return 500;
    177. case 0x81aece69: return 501;
    178. case 0xfcee83d9: return 502;
    179. case 0xffee8880: return 503;
    180. case 0x6a55a6b0: return 504;
    181. case 0xd6c0f1b6: return 505;
    182. case 0x08b15607: return 506;
    183. case 0xb3f36289: return 507;
    184. case 0x97f2c0d3: return 508;
    185. case 0xc7e7acb6: return 509;
    186. case 0x24fd7b1f: return 510;
    187. case 0x49fbd09b: return 511;
    188. case 0xa27c4402: return 512;
    189. case 0x6a3791a7: return 513;
    190. case 0x839513e0: return 514;
    191. case 0x737caa4b: return 515;
    192. case 0x14dd24a8: return 516;
    193. case 0x23da0a81: return 517;
    194. case 0x5bc3e987: return 518;
    195. case 0x436330b9: return 519;
    196. case 0xe54d78d7: return 520;
    197. case 0x1e5fe420: return 521;
    198. case 0xbba5b096: return 522;
    199. case 0x48c69e2e: return 523;
    200. case 0xbd61f518: return 524;
    201. case 0x0ee457f6: return 525;
    202. case 0x8c81436c: return 526;
    203. case 0x94465685: return 527;
    204. case 0xc9fc379f: return 528;
    205. case 0xbe05b898: return 529;
    206. case 0xc052fd0a: return 530;
    207. case 0x7505fe02: return 531;
    208. case 0xde29dfa6: return 532;
    209. case 0x4ff6de45: return 533;
    210. case 0x5d681434: return 534;
    211. case 0x3a8f6e89: return 535;
    212. case 0xdd51d1b9: return 536;
    213. case 0x1324f0c0: return 537;
    214. case 0x9607d81f: return 538;
    215. case 0xfccd5305: return 539;
    216. case 0x5da79c32: return 540;
    217. case 0x2d99ee4d: return 541;
    218. case 0x6a2308d6: return 542;
    219. case 0x93523e04: return 543;
    220. case 0x0bbe1066: return 544;
    221. case 0xf7a8238e: return 545;
    222. case 0x39350504: return 546;
    223. case 0x4f9aa22c: return 547;
    224. case 0x3c014f04: return 548;
    225. case 0x11f3e134: return 549;
    226. case 0x4aa88126: return 550;
    227. case 0x7ba5beec: return 551;
    228. case 0x5ba64158: return 552;
    229. case 0xf22a86a8: return 553;
    230. case 0x7bcd021a: return 554;
    231. case 0x31786ba1: return 555;
    232. case 0x7231ebfb: return 556;
    233. case 0x7131ea16: return 557;
    234. case 0x72dcaff1: return 558;
    235. case 0xa29b3fa6: return 559;
    236. case 0x0781ea30: return 560;
    237. case 0x41c4c04f: return 561;
    238. case 0xa57a2703: return 562;
    239. case 0x4b86adcc: return 563;
    240. case 0x0a297361: return 564;
    241. case 0x068791d5: return 565;
    242. case 0x3a40b379: return 566;
    243. case 0xd6e869bb: return 567;
    244. case 0x50b80f72: return 568;
    245. case 0x3fde6cba: return 569;
    246. case 0x28b46bce: return 570;
    247. case 0xc5f9d9db: return 571;
    248. case 0x04bc1b61: return 572;
    249. case 0x113801f3: return 573;
    250. case 0x4aea0646: return 574;
    251. case 0x289df8bc: return 575;
    252. case 0x6a3bfa48: return 576;
    253. case 0xf461e519: return 577;
    254. case 0xe28dbeab: return 578;
    255. case 0x38b7183c: return 579;
    256. case 0xdec103ae: return 580;
    257. case 0x2e8836be: return 581;
    258. case 0xf544d67b: return 582;
    259. case 0x061e524b: return 583;
    260. case 0xb70d19c2: return 584;
    261. case 0xcaea9ab7: return 585;
    262. case 0x8e499490: return 586;
    263. case 0xe172dc61: return 587;
    264. case 0xcd5812c4: return 588;
    265. case 0x34f9b9e5: return 589;
    266. case 0xb63179f5: return 590;
    267. case 0xa464a06b: return 591;
    268. case 0x032e5a9e: return 592;
    269. case 0xbb2a0285: return 593;
    270. case 0x59511571: return 594;
    271. case 0xa3bcae40: return 595;
    272. case 0x43a8290d: return 596;
    273. case 0x19fcd299: return 597;
    274. case 0x74ec68aa: return 598;
    275. case 0x441f7486: return 599;
    276. case 0x8865004f: return 600;
    277. case 0xc06b7436: return 601;
    278. case 0x4073673b: return 602;
    279. case 0xc2c7e666: return 603;
    280. case 0x2a532ebb: return 604;
    281. case 0xd2518a36: return 605;
    282. case 0xe191b043: return 606;
    283. case 0xe191b040: return 607;
    284. case 0x0b9c6f7a: return 608;
    285. case 0x38ebb6c6: return 609;
    286. case 0x819a3fa4: return 610;
    287. case 0xaa2568c2: return 611;
    288. }
    289. return INVALID_VEHICLE_ID;
    290. }
    291.  
    292.  
    293. stock GetVehicleModelFromName2(const model_name[])
    294. {
    295. if ('0' <= model_name[0] <= '9')
    296. {
    297. new model = strval(model_name);
    298. if(400 <= model <= 611)
    299. {
    300. return model;
    301. }
    302. }
    303.  
    304. static const sVehicleModelName[212][] =
    305. {
    306. {!"Landstalker"}, {!"Bravura"}, {!"Buffalo"}, {!"Linerunner"}, {!"Perennial"},
    307. {!"Sentinel"}, {!"Dumper"}, {!"Fire Truck"}, {!"Trashmaster"}, {!"Stretch"},
    308. {!"Manana"}, {!"Infernus"}, {!"Voodoo"}, {!"Pony"}, {!"Mule"}, {!"Cheetah"},
    309. {!"Ambulance"}, {!"Leviathan"}, {!"Moonbeam"}, {!"Esperanto"}, {!"Taxi"},
    310. {!"Washington"}, {!"Bobcat"}, {!"Mr.Whoopee"}, {!"BF Injection"}, {!"Hunter"},
    311. {!"Premier"}, {!"Enforcer"}, {!"Securicar"}, {!"Banshee"}, {!"Predator"}, {!"Bus"},
    312. {!"Rhino"}, {!"Barracks"}, {!"Hotknife"}, {!"Article Trailer 1"}, {!"Previon"},
    313. {!"Coach"}, {!"Cabbie"}, {!"Stallion"}, {!"Rumpo"}, {!"RC Bandit"}, {!"Romero"},
    314. {!"Packer"}, {!"Monster"}, {!"Admiral"}, {!"Squalo"}, {!"Seasparrow"}, {!"Pizzaboy"},
    315. {!"Tram"}, {!"Article Trailer 2"}, {!"Turismo"}, {!"Speeder"}, {!"Reefer"},
    316. {!"Tropic"}, {!"Flatbed"}, {!"Yankee"}, {!"Caddy"}, {!"Solair"}, {!"Berkleys RC Van"},
    317. {!"Skimmer"}, {!"PCJ-600"}, {!"Faggio"}, {!"Freeway"}, {!"RC Baron"}, {!"RC Raider"},
    318. {!"Glendale"}, {!"Oceanic"}, {!"Sanchez"}, {!"Sparrow"}, {!"Patriot"}, {!"Quadbike"},
    319. {!"Coastguard"}, {!"Dinghy"}, {!"Hermes"}, {!"Sabre"}, {!"Rustler"}, {!"ZR-350"},
    320. {!"Walton"}, {!"Regina"}, {!"Comet"}, {!"BMX"}, {!"Burrito"}, {!"Camper"},
    321. {!"Marquis"}, {!"Baggage"}, {!"Dozer"}, {!"Maverick"}, {!"News Chopper"},
    322. {!"Rancher"}, {!"FBI Rancher"}, {!"Virgo"}, {!"Greenwood"}, {!"Jetmax"},
    323. {!"Hotring Racer"}, {!"Sandking"}, {!"Blista Compact"}, {!"Police Maverick"},
    324. {!"Boxville"}, {!"Benson"}, {!"Mesa"}, {!"RC Goblin"}, {!"Hotring Racer (A)"},
    325. {!"Hotring Racer (B)"}, {!"Bloodring Banger"}, {!"Rancher 2"},
    326. {!"Super GT"}, {!"Elegant"}, {!"Journey"}, {!"Bike"}, {!"Mountain Bike"},
    327. {!"Beagle"}, {!"Cropduster"}, {!"Stuntplane"}, {!"Tanker"}, {!"Roadtrain"},
    328. {!"Nebula"}, {!"Majestic"}, {!"Buccaneer"}, {!"Shamal"}, {!"Hydra"}, {!"FCR-900"},
    329. {!"NRG-500"}, {!"HPV1000"}, {!"Cement Truck"}, {!"Towtruck"}, {!"Fortune"}, {!"Cardona"},
    330. {!"FBI Truck"}, {!"Willard"}, {!"Forklift"}, {!"Tractor"}, {!"Combine Harvester"},
    331. {!"Feltzer"}, {!"Remington"}, {!"Slamvan"}, {!"Blade"}, {!"Freight"}, {!"Brown Streak"},
    332. {!"Vortex"}, {!"Vincent"}, {!"Bullet"}, {!"Clover"}, {!"Sadler"}, {!"Fire Truck 2"},
    333. {!"Hustler"}, {!"Intruder"}, {!"Primo"}, {!"Cargobob"}, {!"Tampa"}, {!"Sunrise"},
    334. {!"Merit"}, {!"Utility Van"}, {!"Nevada"}, {!"Yosemite"}, {!"Windsor"}, {!"Monster (A)"},
    335. {!"Monster (B)"}, {!"Uranus"}, {!"Jester"}, {!"Sultan"}, {!"Stratum"}, {!"Elegy"},
    336. {!"Raindance"}, {!"RC Tiger"}, {!"Flash"}, {!"Tahoma"}, {!"Savanna"}, {!"Bandito"},
    337. {!"Freight"}, {!"Brown Streak"}, {!"Kart"}, {!"Mower"}, {!"Dune"}, {!"Sweeper"},
    338. {!"Broadway"}, {!"Tornado"}, {!"AT-400"}, {!"DFT-30"}, {!"Huntley"}, {!"Stafford"},
    339. {!"BF-400"}, {!"Newsvan"}, {!"Tug"}, {!"Petrol Truck"}, {!"Emperor"}, {!"Wayfarer"},
    340. {!"Euros"}, {!"Hotdog"}, {!"Club"}, {!"Freight Box"}, {!"Article Trailer 3"}, {!"Andromada"},
    341. {!"Dodo"}, {!"RC Cam"}, {!"Launch"}, {!"Police (LSPD)"}, {!"Police (SFPD)"}, {!"Police (LVPD)"},
    342. {!"Ranger"}, {!"Picador"}, {!"S.W.A.T."}, {!"Alpha"}, {!"Phoenix"}, {!"Glendale 2"},
    343. {!"Sadler 2"}, {!"Baggage Box A"}, {!"Baggage Box B"}, {!"Stairs Trailer"}, {!"Boxville 2"},
    344. {!"Farm Trailer"}, {!"Utility Trailer"}
    345. };
    346.  
    347. for(new i = 0; i < sizeof(sVehicleModelName); i++)
    348. {
    349. if(strfind(sVehicleModelName[i], model_name, true) != -1)
    350. return i+400;
    351. }
    352. return INVALID_VEHICLE_ID;
    353. }


    UPD:
    И да, я, если что, не буду против, если ты или кто-то ещё опубликует более лучший вариант. Как писал выше, я даже тему готов удалить эту, чтоб не вводить никого в заблуждение. Этот код был опубликован просто чтоб он не затерялся в пучине раздела с вопросами на другом форуме, ибо так или иначе подобные вопросы периодически слышу.
    И изначально я писал этот код, скорее, как пример того, что функцию можно превратить в кастомный спецификатор для sscanf, упростив написание команды для создания транспорта по названию. Цели сделать самый быстрый вариант реализации не было. Была цель показать пример + сделать так, чтоб можно было находить транспорт по части названия (ну как с тем же "NRG-500", для которого гораздо проще написать "NRG"). Так что если будет вариант сохранить функциональность, но увеличить скорость срабатывания - будет только круче.
    лол я написал '*' вместо '^'.
    1. stock GetVehicleModelFromName (const modelname[])
    2. {
    3. if ('0' <= modelname[0] <= '9') {
    4. new model = strval (modelname);
    5. if (400 <= model <= 611)
    6. return model;
    7. }
    8.  
    9. new len = strlen(modelname),
    10. hash = 0x811c9dc5,
    11. i = 0;
    12. while (i != len)
    13. hash = hash * 0x01000193 ^ toupper(modelname[i++]);
    14. switch (hash) {
    15. case 0xaa9e670e: return 400;
    16. case 0x48d21a32: return 401;
    17. case 0x0ebd03c0: return 402;
    18. case 0x40a03ca1: return 403;
    19. case 0x853e3eef: return 404;
    20. case 0x7b7768b1: return 405;
    21. case 0xad1566f6: return 406;
    22. case 0x4577ce94: return 407;
    23. case 0x47e9f403: return 408;
    24. case 0x9eb12194: return 409;
    25. case 0xd520d42b: return 410;
    26. case 0xb7b9c69b: return 411;
    27. case 0xb6a00af7: return 412;
    28. case 0xb61d5491: return 413;
    29. case 0x3dfac62a: return 414;
    30. case 0x7c7c1761: return 415;
    31. case 0x0e9f0bc5: return 416;
    32. case 0x52bec465: return 417;
    33. case 0x4cd67c23: return 418;
    34. case 0x10e27b70: return 419;
    35. case 0x2dd87431: return 420;
    36. case 0xd212535f: return 421;
    37. case 0xbd967cd6: return 422;
    38. case 0x38850d7d: return 423;
    39. case 0x1937d442: return 424;
    40. case 0xc8e2a7df: return 425;
    41. case 0x76044eb7: return 426;
    42. case 0x4456efc1: return 427;
    43. case 0x02e6d6fc: return 428;
    44. case 0x7b9888f3: return 429;
    45. case 0xeac37188: return 430;
    46. case 0x4a4a49e5: return 431;
    47. case 0x8a31ff09: return 432;
    48. case 0x28490cb8: return 433;
    49. case 0xbca7314d: return 434;
    50. case 0xa464a069: return 435;
    51. case 0xdd5384bc: return 436;
    52. case 0x48d9ab71: return 437;
    53. case 0x41e98457: return 438;
    54. case 0x10ccd46d: return 439;
    55. case 0xf8318edc: return 440;
    56. case 0xca4e49aa: return 441;
    57. case 0x26f4341b: return 442;
    58. case 0xf47205df: return 443;
    59. case 0xf88fe98d: return 444;
    60. case 0x15891ca5: return 445;
    61. case 0x11163d0c: return 446;
    62. case 0x4ad9564a: return 447;
    63. case 0xf4905965: return 448;
    64. case 0x46b84865: return 449;
    65. case 0xa464a06a: return 450;
    66. case 0xaefff156: return 451;
    67. case 0xa2e52fdf: return 452;
    68. case 0xd3c8aa5a: return 453;
    69. case 0x0041f5ce: return 454;
    70. case 0x0b8e9335: return 455;
    71. case 0xf4870598: return 456;
    72. case 0xde6ad316: return 457;
    73. case 0x03e4ca73: return 458;
    74. case 0x49ebfd34: return 459;
    75. case 0x7b47444f: return 460;
    76. case 0x57691f99: return 461;
    77. case 0x29d02a98: return 462;
    78. case 0x782fecd4: return 463;
    79. case 0x3eb8a214: return 464;
    80. case 0xb641ed19: return 465;
    81. case 0xb57abbc1: return 466;
    82. case 0x5aed41dd: return 467;
    83. case 0x16f0a71d: return 468;
    84. case 0x9c3efc0f: return 469;
    85. case 0xaa6d9f72: return 470;
    86. case 0xecb7efe7: return 471;
    87. case 0x36ce238c: return 472;
    88. case 0x9a1ae78c: return 473;
    89. case 0x219f72cf: return 474;
    90. case 0xa3c8578a: return 475;
    91. case 0xd239f6e4: return 476;
    92. case 0xa8f2f226: return 477;
    93. case 0x31845dfa: return 478;
    94. case 0xf43a1af1: return 479;
    95. case 0x8af82867: return 480;
    96. case 0x424a3d46: return 481;
    97. case 0xa7679208: return 482;
    98. case 0x46ef4c97: return 483;
    99. case 0xe8533915: return 484;
    100. case 0xbfb9b3d1: return 485;
    101. case 0x7e26fbbd: return 486;
    102. case 0xe0e3224d: return 487;
    103. case 0x5eefe90d: return 488;
    104. case 0x84ee7984: return 489;
    105. case 0x935fccc9: return 490;
    106. case 0x1d4bb7ee: return 491;
    107. case 0x2fdc4145: return 492;
    108. case 0x36c038a0: return 493;
    109. case 0x1713c38b: return 494;
    110. case 0xc9d59cf2: return 495;
    111. case 0x92626af1: return 496;
    112. case 0xfd790f5d: return 497;
    113. case 0xbb280574: return 498;
    114. case 0x95c900f4: return 499;
    115. case 0x332357cf: return 500;
    116. case 0x81aece69: return 501;
    117. case 0xfcee83d9: return 502;
    118. case 0xffee8880: return 503;
    119. case 0x6a55a6b0: return 504;
    120. case 0xd6c0f1b6: return 505;
    121. case 0x08b15607: return 506;
    122. case 0xb3f36289: return 507;
    123. case 0x97f2c0d3: return 508;
    124. case 0xc7e7acb6: return 509;
    125. case 0x24fd7b1f: return 510;
    126. case 0x49fbd09b: return 511;
    127. case 0xa27c4402: return 512;
    128. case 0x6a3791a7: return 513;
    129. case 0x839513e0: return 514;
    130. case 0x737caa4b: return 515;
    131. case 0x14dd24a8: return 516;
    132. case 0x23da0a81: return 517;
    133. case 0x5bc3e987: return 518;
    134. case 0x436330b9: return 519;
    135. case 0xe54d78d7: return 520;
    136. case 0x1e5fe420: return 521;
    137. case 0xbba5b096: return 522;
    138. case 0x48c69e2e: return 523;
    139. case 0xbd61f518: return 524;
    140. case 0x0ee457f6: return 525;
    141. case 0x8c81436c: return 526;
    142. case 0x94465685: return 527;
    143. case 0xc9fc379f: return 528;
    144. case 0xbe05b898: return 529;
    145. case 0xc052fd0a: return 530;
    146. case 0x7505fe02: return 531;
    147. case 0xde29dfa6: return 532;
    148. case 0x4ff6de45: return 533;
    149. case 0x5d681434: return 534;
    150. case 0x3a8f6e89: return 535;
    151. case 0xdd51d1b9: return 536;
    152. case 0x1324f0c0: return 537;
    153. case 0x9607d81f: return 538;
    154. case 0xfccd5305: return 539;
    155. case 0x5da79c32: return 540;
    156. case 0x2d99ee4d: return 541;
    157. case 0x6a2308d6: return 542;
    158. case 0x93523e04: return 543;
    159. case 0x0bbe1066: return 544;
    160. case 0xf7a8238e: return 545;
    161. case 0x39350504: return 546;
    162. case 0x4f9aa22c: return 547;
    163. case 0x3c014f04: return 548;
    164. case 0x11f3e134: return 549;
    165. case 0x4aa88126: return 550;
    166. case 0x7ba5beec: return 551;
    167. case 0x5ba64158: return 552;
    168. case 0xf22a86a8: return 553;
    169. case 0x7bcd021a: return 554;
    170. case 0x31786ba1: return 555;
    171. case 0x7231ebfb: return 556;
    172. case 0x7131ea16: return 557;
    173. case 0x72dcaff1: return 558;
    174. case 0xa29b3fa6: return 559;
    175. case 0x0781ea30: return 560;
    176. case 0x41c4c04f: return 561;
    177. case 0xa57a2703: return 562;
    178. case 0x4b86adcc: return 563;
    179. case 0x0a297361: return 564;
    180. case 0x068791d5: return 565;
    181. case 0x3a40b379: return 566;
    182. case 0xd6e869bb: return 567;
    183. case 0x50b80f72: return 568;
    184. case 0x3fde6cba: return 569;
    185. case 0x28b46bce: return 570;
    186. case 0xc5f9d9db: return 571;
    187. case 0x04bc1b61: return 572;
    188. case 0x113801f3: return 573;
    189. case 0x4aea0646: return 574;
    190. case 0x289df8bc: return 575;
    191. case 0x6a3bfa48: return 576;
    192. case 0xf461e519: return 577;
    193. case 0xe28dbeab: return 578;
    194. case 0x38b7183c: return 579;
    195. case 0xdec103ae: return 580;
    196. case 0x2e8836be: return 581;
    197. case 0xf544d67b: return 582;
    198. case 0x061e524b: return 583;
    199. case 0xb70d19c2: return 584;
    200. case 0xcaea9ab7: return 585;
    201. case 0x8e499490: return 586;
    202. case 0xe172dc61: return 587;
    203. case 0xcd5812c4: return 588;
    204. case 0x34f9b9e5: return 589;
    205. case 0xb63179f5: return 590;
    206. case 0xa464a06b: return 591;
    207. case 0x032e5a9e: return 592;
    208. case 0xbb2a0285: return 593;
    209. case 0x59511571: return 594;
    210. case 0xa3bcae40: return 595;
    211. case 0x43a8290d: return 596;
    212. case 0x19fcd299: return 597;
    213. case 0x74ec68aa: return 598;
    214. case 0x441f7486: return 599;
    215. case 0x8865004f: return 600;
    216. case 0xc06b7436: return 601;
    217. case 0x4073673b: return 602;
    218. case 0xc2c7e666: return 603;
    219. case 0x2a532ebb: return 604;
    220. case 0xd2518a36: return 605;
    221. case 0xe191b043: return 606;
    222. case 0xe191b040: return 607;
    223. case 0x0b9c6f7a: return 608;
    224. case 0x38ebb6c6: return 609;
    225. case 0x819a3fa4: return 610;
    226. case 0xaa2568c2: return 611;
    227. }
    228. return INVALID_VEHICLE_ID;
    229. }


    Конечно, можно создать алиасы в хеш-таблице для NRG, ZR и других т/с. Для поиска по подстроке нужен вообше другой алгоритм. Однако сложность такого алгоритма будет в следующем: например, если введем "RC", то нам выдаст первую запись, которая содержит "RC". Можно ввести просто символ "-", в результате чего он возвратит номер модели "PCJ-600".

    Бинарный поиск.
    1. static VehicleModelName[212][] =
    2. {
    3. {445,"Admiral"},
    4. {602,"Alpha"},
    5. {416,"Ambulance"},
    6. {592,"Andromada"},
    7. {435,"Article Trailer 1"},
    8. {450,"Article Trailer 2"},
    9. {591,"Article Trailer 3"},
    10. {577,"AT-400"},
    11. {606,"Baggage Box A"},
    12. {607,"Baggage Box B"},
    13. {485,"Baggage"},
    14. {568,"Bandito"},
    15. {429,"Banshee"},
    16. {433,"Barracks"},
    17. {511,"Beagle"},
    18. {499,"Benson"},
    19. {459,"Berkleys RC Van"},
    20. {424,"BF Injection"},
    21. {581,"BF-400"},
    22. {509,"Bike"},
    23. {536,"Blade"},
    24. {496,"Blista Compact"},
    25. {504,"Bloodring Banger"},
    26. {481,"BMX"},
    27. {422,"Bobcat"},
    28. {609,"Boxville 2"},
    29. {498,"Boxville"},
    30. {401,"Bravura"},
    31. {575,"Broadway"},
    32. {538,"Brown Streak"},
    33. {518,"Buccaneer"},
    34. {402,"Buffalo"},
    35. {541,"Bullet"},
    36. {482,"Burrito"},
    37. {431,"Bus"},
    38. {438,"Cabbie"},
    39. {457,"Caddy"},
    40. {483,"Camper"},
    41. {527,"Cardona"},
    42. {548,"Cargobob"},
    43. {524,"Cement Truck"},
    44. {415,"Cheetah"},
    45. {542,"Clover"},
    46. {589,"Club"},
    47. {437,"Coach"},
    48. {472,"Coastguard"},
    49. {532,"Combine Harvester"},
    50. {480,"Comet"},
    51. {512,"Cropduster"},
    52. {578,"DFT-30"},
    53. {473,"Dinghy"},
    54. {593,"Dodo"},
    55. {486,"Dozer"},
    56. {406,"Dumper"},
    57. {573,"Dune"},
    58. {507,"Elegant"},
    59. {562,"Elegy"},
    60. {585,"Emperor"},
    61. {427,"Enforcer"},
    62. {419,"Esperanto"},
    63. {587,"Euros"},
    64. {462,"Faggio"},
    65. {610,"Farm Trailer"},
    66. {490,"FBI Rancher"},
    67. {528,"FBI Truck"},
    68. {521,"FCR-900"},
    69. {533,"Feltzer"},
    70. {544,"Fire Truck 2"},
    71. {407,"Fire Truck"},
    72. {565,"Flash"},
    73. {455,"Flatbed"},
    74. {530,"Forklift"},
    75. {526,"Fortune"},
    76. {463,"Freeway"},
    77. {590,"Freight Box"},
    78. {569,"Freight Flat Trailer"},
    79. {537,"Freight Train"},
    80. {604,"Glendale 2"},
    81. {466,"Glendale"},
    82. {492,"Greenwood"},
    83. {474,"Hermes"},
    84. {588,"Hotdog"},
    85. {434,"Hotknife"},
    86. {502,"Hotring Racer (A)"},
    87. {503,"Hotring Racer (B)"},
    88. {494,"Hotring Racer"},
    89. {523,"HPV1000"},
    90. {425,"Hunter"},
    91. {579,"Huntley"},
    92. {545,"Hustler"},
    93. {520,"Hydra"},
    94. {411,"Infernus"},
    95. {546,"Intruder"},
    96. {559,"Jester"},
    97. {493,"Jetmax"},
    98. {508,"Journey"},
    99. {571,"Kart"},
    100. {400,"Landstalker"},
    101. {595,"Launch"},
    102. {417,"Leviathan"},
    103. {403,"Linerunner"},
    104. {517,"Majestic"},
    105. {410,"Manana"},
    106. {484,"Marquis"},
    107. {487,"Maverick"},
    108. {551,"Merit"},
    109. {500,"Mesa"},
    110. {556,"Monster (A)"},
    111. {557,"Monster (B)"},
    112. {444,"Monster"},
    113. {418,"Moonbeam"},
    114. {510,"Mountain Bike"},
    115. {572,"Mower"},
    116. {423,"Mr.Whoopee"},
    117. {414,"Mule"},
    118. {516,"Nebula"},
    119. {553,"Nevada"},
    120. {488,"News Chopper"},
    121. {582,"Newsvan"},
    122. {522,"NRG-500"},
    123. {467,"Oceanic"},
    124. {443,"Packer"},
    125. {470,"Patriot"},
    126. {461,"PCJ-600"},
    127. {404,"Perennial"},
    128. {584,"Petrol Truck"},
    129. {603,"Phoenix"},
    130. {600,"Picador"},
    131. {448,"Pizzaboy"},
    132. {596,"Police (LSPD)"},
    133. {598,"Police (LVPD)"},
    134. {597,"Police (SFPD)"},
    135. {497,"Police Maverick"},
    136. {413,"Pony"},
    137. {430,"Predator"},
    138. {426,"Premier"},
    139. {436,"Previon"},
    140. {547,"Primo"},
    141. {471,"Quadbike"},
    142. {563,"Raindance"},
    143. {505,"Rancher 2"},
    144. {489,"Rancher"},
    145. {599,"Ranger"},
    146. {441,"RC Bandit"},
    147. {464,"RC Baron"},
    148. {594,"RC Cam"},
    149. {501,"RC Goblin"},
    150. {465,"RC Raider"},
    151. {564,"RC Tiger"},
    152. {453,"Reefer"},
    153. {479,"Regina"},
    154. {534,"Remington"},
    155. {432,"Rhino"},
    156. {515,"Roadtrain"},
    157. {442,"Romero"},
    158. {440,"Rumpo"},
    159. {476,"Rustler"},
    160. {601,"S.W.A.T."},
    161. {475,"Sabre"},
    162. {605,"Sadler 2"},
    163. {543,"Sadler"},
    164. {468,"Sanchez"},
    165. {495,"Sandking"},
    166. {567,"Savanna"},
    167. {447,"Seasparrow"},
    168. {428,"Securicar"},
    169. {405,"Sentinel"},
    170. {519,"Shamal"},
    171. {460,"Skimmer"},
    172. {535,"Slamvan"},
    173. {458,"Solair"},
    174. {469,"Sparrow"},
    175. {452,"Speeder"},
    176. {446,"Squalo"},
    177. {580,"Stafford"},
    178. {608,"Stairs Trailer"},
    179. {439,"Stallion"},
    180. {561,"Stratum"},
    181. {570,"Streak Trailer"},
    182. {409,"Stretch"},
    183. {513,"Stuntplane"},
    184. {560,"Sultan"},
    185. {550,"Sunrise"},
    186. {506,"Super GT"},
    187. {574,"Sweeper"},
    188. {566,"Tahoma"},
    189. {549,"Tampa"},
    190. {514,"Tanker"},
    191. {420,"Taxi"},
    192. {576,"Tornado"},
    193. {525,"Towtruck"},
    194. {531,"Tractor"},
    195. {449,"Tram"},
    196. {408,"Trashmaster"},
    197. {454,"Tropic"},
    198. {583,"Tug"},
    199. {451,"Turismo"},
    200. {558,"Uranus"},
    201. {611,"Utility Trailer"},
    202. {552,"Utility Van"},
    203. {540,"Vincent"},
    204. {491,"Virgo"},
    205. {412,"Voodoo"},
    206. {539,"Vortex"},
    207. {478,"Walton"},
    208. {421,"Washington"},
    209. {586,"Wayfarer"},
    210. {529,"Willard"},
    211. {555,"Windsor"},
    212. {456,"Yankee"},
    213. {554,"Yosemite"},
    214. {477,"ZR-350"}
    215. };
    216.  
    217. stock GetVehicleModelFromName (const modelname[])
    218. {
    219. if ('0' <= modelname[0] <= '9') {
    220. new model = strval (modelname);
    221. if (400 <= model <= 611)
    222. return model;
    223. }
    224. new len = strlen(modelname);
    225. new bottom = 0,
    226. top = sizeof(VehicleModelName),
    227. middle,
    228. result;
    229. while (bottom <= top) {
    230. middle = (bottom + top) / 2;
    231. result = strcmp(VehicleModelName[middle][1], modelname, .ignorecase=true, .length=len);
    232. if (result == 0)
    233. return VehicleModelName[middle][0];
    234. else if (result > 0)
    235. top = middle - 1;
    236. else
    237. bottom = middle + 1;
    238. }
    239. return INVALID_VEHICLE_ID;
    240. }

    Можно задать мин. значение длины названия вводимой модели. Можно через левенштейна или подобные ему алгоритмы после цикла while искать похожие названия, но это уже будет другая функция.

    В двух вариантах есть случаи, когда можно было бы использовать ассемблерные вставки, но мне лень и не хочется портить читаемость.
    Последний раз редактировалось vvw; 11.10.2019 в 10:27.

  4. #14
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Всё, вроде, работает
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  5. #15
    Аватар для Nexius_Tailer
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Во всех реализациях есть баг: если ввести в массив для поиска любое число между 400 и 611, но при этом оно будет именно как часть имени какой-либо реально существующей модели (например, "500", подразумевая "NRG-500"), то модель вернётся уже неверная (в данном примере 500, а не 522).

    - - - Добавлено - - -

    Возвращать номер модели такой же, какой был указан в строке для поиска нужно уже только в том случае, когда поиск по части имени ничего не находит, т.е. в конце, а не в начале функции.
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

  6. #16
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    Во всех реализациях есть баг: если ввести в массив для поиска любое число между 400 и 611, но при этом оно будет именно как часть имени какой-либо реально существующей модели (например, "500", подразумевая "NRG-500"), то модель вернётся уже неверная (в данном примере 500, а не 522).

    - - - Добавлено - - -

    Возвращать номер модели такой же, какой был указан в строке для поиска нужно уже только в том случае, когда поиск по части имени ничего не находит, т.е. в конце, а не в начале функции.
    На самом деле эта проблема решается заменой strval на тот же sscanf, например. Это же просто баг strval, который возвращает число если строка начинается с числа.
    Вообще в моей реализации есть и проблема, связанная со strfind. Например, не получится вызвать "sparrow", ибо strfind будет срабатывать на "seasparrow", так как эта модель находится раньше по списку. Решается это добавлением ещё одного цикла перед циклом со strfind, в котором будет strcmp. Я просто не стал вносить правки, ибо VVWVV начал делать реализацию через хэширование. Но сейчас всё же внесу их на всякий случай.

    UPD: обновил код
    Последний раз редактировалось DeimoS; 11.10.2019 в 13:59.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  7. #17
    Аватар для Nexius_Tailer
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Это же просто баг strval, который возвращает число если строка начинается с числа.
    Не в этом баге дело, если вся строка будет содержать лишь это число и ничего больше.
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

  8. #18
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Nexius_Tailer Посмотреть сообщение
    Не в этом баге дело, если вся строка будет содержать лишь это число и ничего больше.
    А, ты про это.
    Ну так ведь и задумано, что можно указывать и название модели, и её ID. Если сделать обработку ID после обработки названия моделей, то точно так же не получится использовать ID 400, 500, 600 и т.п., ибо поиск постоянно будет срабатывать на названиях модели. В этом случае лучше вообще тогда убрать ту часть, которая отвечает за обработку ID.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  9. #19
    Аватар для Nexius_Tailer
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.01.2015
    Адрес
    Гомель, Беларусь
    Сообщений
    547
    Репутация:
    158 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    А, ты про это.
    Ну так ведь и задумано, что можно указывать и название модели, и её ID. Если сделать обработку ID после обработки названия моделей, то точно так же не получится использовать ID 400, 500, 600 и т.п., ибо поиск постоянно будет срабатывать на названиях модели. В этом случае лучше вообще тогда убрать ту часть, которая отвечает за обработку ID.
    Да, но возвращать "модель" -> модель по остаточному принципу (т.е. только в случае, если вообще никаких совпадений в именах нет) всё равно как-то более логично, потому что основное предназначение функции это поиск по именам моделей на совпадение, а код выше скорее как дополнение и проверка на дурака. Хотя в данном случае удаление этой проверки во избежание путаницы тоже вполне вариант.
    Последний раз редактировалось Nexius_Tailer; 11.10.2019 в 14:51.
    Не хотите постоянно проверять обновления моих скриптов?
    Подключите его последним, после всех остальных
    Nexius's Update Checker

  10. #20
    Аватар для vvw
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.08.2019
    Сообщений
    45
    Репутация:
    9 ±
    Черд, я уже запутался, что вам нужно, а что нет. По своей сути GetVehicleModelFromName должен возвращать номер модели по ее полному названию. Если же мы хотим ввести только часть названия, то для этого уже нужно предусмотреть отдельный аргумент. Кроме того, я согласен с Nexius_Tailer, делать конвертацию числа из названия модели в этой функции - глупость. Логичнее делать это за ее пределами.

    Что-то вроде такого:
    1. new modelid = GetVehicleModelFromName(text);
    2. if (modelid == INVALID_VEHICLE_ID) {
    3. if ('0' <= text[0] <= '9') {
    4. new res = strval(text);
    5. if (400 <= res <= 611)
    6. modelid = res;
    7. } else {
    8. modelid = INVALID_VEHICLE_ID;
    9. }
    10. }
    11. //...


    Использовать 'INVALID_VEHICLE_ID' очень странно. Стоит сделать отдельную константу, чтобы не убивать читаемость и логику.

    Другой вариант
    1. stock GetVehicleModelFromName (const modelname[], bool:part=true)
    2. {
    3. new len = strlen(modelname),
    4. hash = 0x811c9dc5,
    5. i = 0;
    6. while (i != len)
    7. hash = hash * 0x01000193 ^ toupper(modelname[i++]);
    8. switch (hash) {
    9. case 0xaa9e670e: return 400;
    10. case 0x48d21a32: return 401;
    11. case 0x0ebd03c0: return 402;
    12. case 0x40a03ca1: return 403;
    13. case 0x853e3eef: return 404;
    14. case 0x7b7768b1: return 405;
    15. case 0xad1566f6: return 406;
    16. case 0x4577ce94: return 407;
    17. case 0x47e9f403: return 408;
    18. case 0x9eb12194: return 409;
    19. case 0xd520d42b: return 410;
    20. case 0xb7b9c69b: return 411;
    21. case 0xb6a00af7: return 412;
    22. case 0xb61d5491: return 413;
    23. case 0x3dfac62a: return 414;
    24. case 0x7c7c1761: return 415;
    25. case 0x0e9f0bc5: return 416;
    26. case 0x52bec465: return 417;
    27. case 0x4cd67c23: return 418;
    28. case 0x10e27b70: return 419;
    29. case 0x2dd87431: return 420;
    30. case 0xd212535f: return 421;
    31. case 0xbd967cd6: return 422;
    32. case 0x38850d7d: return 423;
    33. case 0x1937d442: return 424;
    34. case 0xc8e2a7df: return 425;
    35. case 0x76044eb7: return 426;
    36. case 0x4456efc1: return 427;
    37. case 0x02e6d6fc: return 428;
    38. case 0x7b9888f3: return 429;
    39. case 0xeac37188: return 430;
    40. case 0x4a4a49e5: return 431;
    41. case 0x8a31ff09: return 432;
    42. case 0x28490cb8: return 433;
    43. case 0xbca7314d: return 434;
    44. case 0xa464a069: return 435;
    45. case 0xdd5384bc: return 436;
    46. case 0x48d9ab71: return 437;
    47. case 0x41e98457: return 438;
    48. case 0x10ccd46d: return 439;
    49. case 0xf8318edc: return 440;
    50. case 0xca4e49aa: return 441;
    51. case 0x26f4341b: return 442;
    52. case 0xf47205df: return 443;
    53. case 0xf88fe98d: return 444;
    54. case 0x15891ca5: return 445;
    55. case 0x11163d0c: return 446;
    56. case 0x4ad9564a: return 447;
    57. case 0xf4905965: return 448;
    58. case 0x46b84865: return 449;
    59. case 0xa464a06a: return 450;
    60. case 0xaefff156: return 451;
    61. case 0xa2e52fdf: return 452;
    62. case 0xd3c8aa5a: return 453;
    63. case 0x0041f5ce: return 454;
    64. case 0x0b8e9335: return 455;
    65. case 0xf4870598: return 456;
    66. case 0xde6ad316: return 457;
    67. case 0x03e4ca73: return 458;
    68. case 0x49ebfd34: return 459;
    69. case 0x7b47444f: return 460;
    70. case 0x57691f99: return 461;
    71. case 0x29d02a98: return 462;
    72. case 0x782fecd4: return 463;
    73. case 0x3eb8a214: return 464;
    74. case 0xb641ed19: return 465;
    75. case 0xb57abbc1: return 466;
    76. case 0x5aed41dd: return 467;
    77. case 0x16f0a71d: return 468;
    78. case 0x9c3efc0f: return 469;
    79. case 0xaa6d9f72: return 470;
    80. case 0xecb7efe7: return 471;
    81. case 0x36ce238c: return 472;
    82. case 0x9a1ae78c: return 473;
    83. case 0x219f72cf: return 474;
    84. case 0xa3c8578a: return 475;
    85. case 0xd239f6e4: return 476;
    86. case 0xa8f2f226: return 477;
    87. case 0x31845dfa: return 478;
    88. case 0xf43a1af1: return 479;
    89. case 0x8af82867: return 480;
    90. case 0x424a3d46: return 481;
    91. case 0xa7679208: return 482;
    92. case 0x46ef4c97: return 483;
    93. case 0xe8533915: return 484;
    94. case 0xbfb9b3d1: return 485;
    95. case 0x7e26fbbd: return 486;
    96. case 0xe0e3224d: return 487;
    97. case 0x5eefe90d: return 488;
    98. case 0x84ee7984: return 489;
    99. case 0x935fccc9: return 490;
    100. case 0x1d4bb7ee: return 491;
    101. case 0x2fdc4145: return 492;
    102. case 0x36c038a0: return 493;
    103. case 0x1713c38b: return 494;
    104. case 0xc9d59cf2: return 495;
    105. case 0x92626af1: return 496;
    106. case 0xfd790f5d: return 497;
    107. case 0xbb280574: return 498;
    108. case 0x95c900f4: return 499;
    109. case 0x332357cf: return 500;
    110. case 0x81aece69: return 501;
    111. case 0xfcee83d9: return 502;
    112. case 0xffee8880: return 503;
    113. case 0x6a55a6b0: return 504;
    114. case 0xd6c0f1b6: return 505;
    115. case 0x08b15607: return 506;
    116. case 0xb3f36289: return 507;
    117. case 0x97f2c0d3: return 508;
    118. case 0xc7e7acb6: return 509;
    119. case 0x24fd7b1f: return 510;
    120. case 0x49fbd09b: return 511;
    121. case 0xa27c4402: return 512;
    122. case 0x6a3791a7: return 513;
    123. case 0x839513e0: return 514;
    124. case 0x737caa4b: return 515;
    125. case 0x14dd24a8: return 516;
    126. case 0x23da0a81: return 517;
    127. case 0x5bc3e987: return 518;
    128. case 0x436330b9: return 519;
    129. case 0xe54d78d7: return 520;
    130. case 0x1e5fe420: return 521;
    131. case 0xbba5b096: return 522;
    132. case 0x48c69e2e: return 523;
    133. case 0xbd61f518: return 524;
    134. case 0x0ee457f6: return 525;
    135. case 0x8c81436c: return 526;
    136. case 0x94465685: return 527;
    137. case 0xc9fc379f: return 528;
    138. case 0xbe05b898: return 529;
    139. case 0xc052fd0a: return 530;
    140. case 0x7505fe02: return 531;
    141. case 0xde29dfa6: return 532;
    142. case 0x4ff6de45: return 533;
    143. case 0x5d681434: return 534;
    144. case 0x3a8f6e89: return 535;
    145. case 0xdd51d1b9: return 536;
    146. case 0x1324f0c0: return 537;
    147. case 0x9607d81f: return 538;
    148. case 0xfccd5305: return 539;
    149. case 0x5da79c32: return 540;
    150. case 0x2d99ee4d: return 541;
    151. case 0x6a2308d6: return 542;
    152. case 0x93523e04: return 543;
    153. case 0x0bbe1066: return 544;
    154. case 0xf7a8238e: return 545;
    155. case 0x39350504: return 546;
    156. case 0x4f9aa22c: return 547;
    157. case 0x3c014f04: return 548;
    158. case 0x11f3e134: return 549;
    159. case 0x4aa88126: return 550;
    160. case 0x7ba5beec: return 551;
    161. case 0x5ba64158: return 552;
    162. case 0xf22a86a8: return 553;
    163. case 0x7bcd021a: return 554;
    164. case 0x31786ba1: return 555;
    165. case 0x7231ebfb: return 556;
    166. case 0x7131ea16: return 557;
    167. case 0x72dcaff1: return 558;
    168. case 0xa29b3fa6: return 559;
    169. case 0x0781ea30: return 560;
    170. case 0x41c4c04f: return 561;
    171. case 0xa57a2703: return 562;
    172. case 0x4b86adcc: return 563;
    173. case 0x0a297361: return 564;
    174. case 0x068791d5: return 565;
    175. case 0x3a40b379: return 566;
    176. case 0xd6e869bb: return 567;
    177. case 0x50b80f72: return 568;
    178. case 0x3fde6cba: return 569;
    179. case 0x28b46bce: return 570;
    180. case 0xc5f9d9db: return 571;
    181. case 0x04bc1b61: return 572;
    182. case 0x113801f3: return 573;
    183. case 0x4aea0646: return 574;
    184. case 0x289df8bc: return 575;
    185. case 0x6a3bfa48: return 576;
    186. case 0xf461e519: return 577;
    187. case 0xe28dbeab: return 578;
    188. case 0x38b7183c: return 579;
    189. case 0xdec103ae: return 580;
    190. case 0x2e8836be: return 581;
    191. case 0xf544d67b: return 582;
    192. case 0x061e524b: return 583;
    193. case 0xb70d19c2: return 584;
    194. case 0xcaea9ab7: return 585;
    195. case 0x8e499490: return 586;
    196. case 0xe172dc61: return 587;
    197. case 0xcd5812c4: return 588;
    198. case 0x34f9b9e5: return 589;
    199. case 0xb63179f5: return 590;
    200. case 0xa464a06b: return 591;
    201. case 0x032e5a9e: return 592;
    202. case 0xbb2a0285: return 593;
    203. case 0x59511571: return 594;
    204. case 0xa3bcae40: return 595;
    205. case 0x43a8290d: return 596;
    206. case 0x19fcd299: return 597;
    207. case 0x74ec68aa: return 598;
    208. case 0x441f7486: return 599;
    209. case 0x8865004f: return 600;
    210. case 0xc06b7436: return 601;
    211. case 0x4073673b: return 602;
    212. case 0xc2c7e666: return 603;
    213. case 0x2a532ebb: return 604;
    214. case 0xd2518a36: return 605;
    215. case 0xe191b043: return 606;
    216. case 0xe191b040: return 607;
    217. case 0x0b9c6f7a: return 608;
    218. case 0x38ebb6c6: return 609;
    219. case 0x819a3fa4: return 610;
    220. case 0xaa2568c2: return 611;
    221. }
    222. if (part) {
    223. static const sVehicleModelName[212][] =
    224. {
    225. {!"Landstalker"}, {!"Bravura"}, {!"Buffalo"}, {!"Linerunner"}, {!"Perennial"},
    226. {!"Sentinel"}, {!"Dumper"}, {!"Fire Truck"}, {!"Trashmaster"}, {!"Stretch"},
    227. {!"Manana"}, {!"Infernus"}, {!"Voodoo"}, {!"Pony"}, {!"Mule"}, {!"Cheetah"},
    228. {!"Ambulance"}, {!"Leviathan"}, {!"Moonbeam"}, {!"Esperanto"}, {!"Taxi"},
    229. {!"Washington"}, {!"Bobcat"}, {!"Mr.Whoopee"}, {!"BF Injection"}, {!"Hunter"},
    230. {!"Premier"}, {!"Enforcer"}, {!"Securicar"}, {!"Banshee"}, {!"Predator"}, {!"Bus"},
    231. {!"Rhino"}, {!"Barracks"}, {!"Hotknife"}, {!"Article Trailer 1"}, {!"Previon"},
    232. {!"Coach"}, {!"Cabbie"}, {!"Stallion"}, {!"Rumpo"}, {!"RC Bandit"}, {!"Romero"},
    233. {!"Packer"}, {!"Monster"}, {!"Admiral"}, {!"Squalo"}, {!"Seasparrow"}, {!"Pizzaboy"},
    234. {!"Tram"}, {!"Article Trailer 2"}, {!"Turismo"}, {!"Speeder"}, {!"Reefer"},
    235. {!"Tropic"}, {!"Flatbed"}, {!"Yankee"}, {!"Caddy"}, {!"Solair"}, {!"Berkleys RC Van"},
    236. {!"Skimmer"}, {!"PCJ-600"}, {!"Faggio"}, {!"Freeway"}, {!"RC Baron"}, {!"RC Raider"},
    237. {!"Glendale"}, {!"Oceanic"}, {!"Sanchez"}, {!"Sparrow"}, {!"Patriot"}, {!"Quadbike"},
    238. {!"Coastguard"}, {!"Dinghy"}, {!"Hermes"}, {!"Sabre"}, {!"Rustler"}, {!"ZR-350"},
    239. {!"Walton"}, {!"Regina"}, {!"Comet"}, {!"BMX"}, {!"Burrito"}, {!"Camper"},
    240. {!"Marquis"}, {!"Baggage"}, {!"Dozer"}, {!"Maverick"}, {!"News Chopper"},
    241. {!"Rancher"}, {!"FBI Rancher"}, {!"Virgo"}, {!"Greenwood"}, {!"Jetmax"},
    242. {!"Hotring Racer"}, {!"Sandking"}, {!"Blista Compact"}, {!"Police Maverick"},
    243. {!"Boxville"}, {!"Benson"}, {!"Mesa"}, {!"RC Goblin"}, {!"Hotring Racer (A)"},
    244. {!"Hotring Racer (B)"}, {!"Bloodring Banger"}, {!"Rancher 2"},
    245. {!"Super GT"}, {!"Elegant"}, {!"Journey"}, {!"Bike"}, {!"Mountain Bike"},
    246. {!"Beagle"}, {!"Cropduster"}, {!"Stuntplane"}, {!"Tanker"}, {!"Roadtrain"},
    247. {!"Nebula"}, {!"Majestic"}, {!"Buccaneer"}, {!"Shamal"}, {!"Hydra"}, {!"FCR-900"},
    248. {!"NRG-500"}, {!"HPV1000"}, {!"Cement Truck"}, {!"Towtruck"}, {!"Fortune"}, {!"Cardona"},
    249. {!"FBI Truck"}, {!"Willard"}, {!"Forklift"}, {!"Tractor"}, {!"Combine Harvester"},
    250. {!"Feltzer"}, {!"Remington"}, {!"Slamvan"}, {!"Blade"}, {!"Freight"}, {!"Brown Streak"},
    251. {!"Vortex"}, {!"Vincent"}, {!"Bullet"}, {!"Clover"}, {!"Sadler"}, {!"Fire Truck 2"},
    252. {!"Hustler"}, {!"Intruder"}, {!"Primo"}, {!"Cargobob"}, {!"Tampa"}, {!"Sunrise"},
    253. {!"Merit"}, {!"Utility Van"}, {!"Nevada"}, {!"Yosemite"}, {!"Windsor"}, {!"Monster (A)"},
    254. {!"Monster (B)"}, {!"Uranus"}, {!"Jester"}, {!"Sultan"}, {!"Stratum"}, {!"Elegy"},
    255. {!"Raindance"}, {!"RC Tiger"}, {!"Flash"}, {!"Tahoma"}, {!"Savanna"}, {!"Bandito"},
    256. {!"Freight"}, {!"Brown Streak"}, {!"Kart"}, {!"Mower"}, {!"Dune"}, {!"Sweeper"},
    257. {!"Broadway"}, {!"Tornado"}, {!"AT-400"}, {!"DFT-30"}, {!"Huntley"}, {!"Stafford"},
    258. {!"BF-400"}, {!"Newsvan"}, {!"Tug"}, {!"Petrol Truck"}, {!"Emperor"}, {!"Wayfarer"},
    259. {!"Euros"}, {!"Hotdog"}, {!"Club"}, {!"Freight Box"}, {!"Article Trailer 3"}, {!"Andromada"},
    260. {!"Dodo"}, {!"RC Cam"}, {!"Launch"}, {!"Police (LSPD)"}, {!"Police (SFPD)"}, {!"Police (LVPD)"},
    261. {!"Ranger"}, {!"Picador"}, {!"S.W.A.T."}, {!"Alpha"}, {!"Phoenix"}, {!"Glendale 2"},
    262. {!"Sadler 2"}, {!"Baggage Box A"}, {!"Baggage Box B"}, {!"Stairs Trailer"}, {!"Boxville 2"},
    263. {!"Farm Trailer"}, {!"Utility Trailer"}
    264. };
    265. for(new i = 0; i < sizeof(sVehicleModelName); i++)
    266. {
    267. if(strfind(sVehicleModelName[i], model_name, true) != -1)
    268. return i+400;
    269. }
    270. }
    271. return INVALID_VEHICLE_ID;
    272. }
    Последний раз редактировалось vvw; 11.10.2019 в 19:05.

  11. Пользователь сказал cпасибо:
    DeimoS (11.10.2019)
 

 
Страница 2 из 3 ПерваяПервая 1 2 3 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •