evi.inc 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. #if defined _evi_included
  2. #endinput
  3. #endif
  4. #define _evi_included
  5. #include <a_samp>
  6. #if !defined IsValidVehicle
  7. native IsValidVehicle(vehicleid);
  8. #endif
  9. enum modelFlags (<<= 1)
  10. {
  11. MFLAG_IS_VAN = 1,
  12. MFLAG_IS_BUS,
  13. MFLAG_IS_LOW,
  14. MFLAG_IS_BIG,
  15. MFLAG_REVERSE_BONNET,
  16. MFLAG_HANGING_BOOT,
  17. MFLAG_TAILGATE_BOOT,
  18. MFLAG_NOSWING_BOOT,
  19. MFLAG_NO_DOORS,
  20. MFLAG_TANDEM_SEATS,
  21. MFLAG_SIT_IN_BOAT,
  22. MFLAG_CONVERTIBLE,
  23. MFLAG_NO_EXHAUST,
  24. MFLAG_DOUBLE_EXHAUST,
  25. MFLAG_NO1FPS_LOOK_BEHIND,
  26. MFLAG_FORCE_DOOR_CHECK,
  27. MFLAG_AXLE_F_NOTILT,
  28. MFLAG_AXLE_F_SOLID,
  29. MFLAG_AXLE_F_MCPHERSON,
  30. MFLAG_AXLE_F_REVERSE,
  31. MFLAG_AXLE_R_NOTILT,
  32. MFLAG_AXLE_R_SOLID,
  33. MFLAG_AXLE_R_MCPHERSON,
  34. MFLAG_AXLE_R_REVERSE,
  35. MFLAG_IS_BIKE,
  36. MFLAG_IS_HELI,
  37. MFLAG_IS_PLANE,
  38. MFLAG_IS_BOAT,
  39. MFLAG_BOUNCE_PANELS,
  40. MFLAG_DOUBLE_RWHEELS,
  41. MFLAG_FORCE_GROUND_CLEARANCE,
  42. MFLAG_IS_HATCHBACK
  43. };
  44. enum handlingFlags (<<= 1)
  45. {
  46. HFLAG_1G_BOOST = 1,
  47. HFLAG_2G_BOOST,
  48. HFLAG_NPC_ANTI_ROLL,
  49. HFLAG_NPC_NEUTRAL_HANDL,
  50. HFLAG_NO_HANDBRAKE,
  51. HFLAG_STEER_REARWHEELS,
  52. HFLAG_HB_REARWHEEL_STEER,
  53. HFLAG_ALT_STEER_OPT,
  54. HFLAG_WHEEL_F_NARROW2,
  55. HFLAG_WHEEL_F_NARROW,
  56. HFLAG_WHEEL_F_WIDE,
  57. HFLAG_WHEEL_F_WIDE2,
  58. HFLAG_WHEEL_R_NARROW2,
  59. HFLAG_WHEEL_R_NARROW,
  60. HFLAG_WHEEL_R_WIDE,
  61. HFLAG_WHEEL_R_WIDE2,
  62. HFLAG_HYDRAULIC_GEOM,
  63. HFLAG_HYDRAULIC_INST,
  64. HFLAG_HYDRAULIC_NONE,
  65. HFLAG_NOS_INST,
  66. HFLAG_OFFROAD_ABILITY,
  67. HFLAG_OFFROAD_ABILITY2,
  68. HFLAG_HALOGEN_LIGHTS,
  69. HFLAG_PROC_REARWHEEL_1ST,
  70. HFLAG_USE_MAXSP_LIMIT,
  71. HFLAG_LOW_RIDER,
  72. HFLAG_STREET_RACER,
  73. HFLAG_UNUSED_FLAG, // Unused in data files. Required for continuity. Do not remove.
  74. HFLAG_SWINGING_CHASSIS
  75. }
  76. // -----------------------------------------------------------------------------
  77. static DB:dbfile;
  78. public OnGameModeInit()
  79. {
  80. dbfile = db_open("handling.db");
  81. if (funcidx("evi_OnGameModeInit") != -1)
  82. {
  83. return CallLocalFunction("evi_OnGameModeInit", "");
  84. }
  85. return 1;
  86. }
  87. public OnGameModeExit()
  88. {
  89. db_close(dbfile);
  90. if (funcidx("evi_OnGameModeExit") != -1)
  91. {
  92. return CallLocalFunction("evi_OnGameModeExit", "");
  93. }
  94. return 1;
  95. }
  96. public OnFilterScriptInit()
  97. {
  98. dbfile = db_open("handling.db");
  99. if (funcidx("evi_OnFilterScriptInit") != -1)
  100. {
  101. return CallLocalFunction("evi_OnFilterScriptInit", "");
  102. }
  103. return 1;
  104. }
  105. public OnFilterScriptExit()
  106. {
  107. db_close(dbfile);
  108. if (funcidx("evi_OnFilterScriptExit") != -1)
  109. {
  110. return CallLocalFunction("evi_OnFilterScriptExit", "");
  111. }
  112. return 1;
  113. }
  114. #if defined _ALS_OnGameModeInit
  115. #undef OnGameModeInit
  116. #else
  117. #define _ALS_OnGameModeInit
  118. #endif
  119. #define OnGameModeInit evi_OnGameModeInit
  120. #if defined _ALS_OnGameModeExit
  121. #undef OnGameModeExit
  122. #else
  123. #define _ALS_OnGameModeExit
  124. #endif
  125. #define OnGameModeExit evi_OnGameModeExit
  126. #if defined _ALS_OnFilterScriptInit
  127. #undef OnFilterScriptInit
  128. #else
  129. #define _ALS_OnFilterScriptInit
  130. #endif
  131. #define OnFilterScriptInit evi_OnFilterScriptInit
  132. #if defined _ALS_OnFilterScriptExit
  133. #undef OnFilterScriptExit
  134. #else
  135. #define _ALS_OnFilterScriptExit
  136. #endif
  137. #define OnFilterScriptExit evi_OnFilterScriptExit
  138. forward evi_OnGameModeInit();
  139. forward evi_OnGameModeExit();
  140. forward evi_OnFilterScriptInit();
  141. forward evi_OnFilterScriptExit();
  142. forward GetVehicleModelInfoAsInt(vehiclemodel, infotype[]);
  143. forward Float:GetVehicleModelInfoAsFloat(vehiclemodel, infotype[]);
  144. forward GetVehicleModelFlag(vehiclemodel, modelFlags:flag);
  145. forward GetVehicleHandlingFlag(vehiclemodel, handlingFlags:flag);
  146. public GetVehicleModelInfoAsInt(vehiclemodel, infotype[])
  147. {
  148. new
  149. sqlquery[80],
  150. DBResult:qresult;
  151. format(sqlquery, sizeof(sqlquery), "SELECT `%q` FROM `vehicle_main` WHERE `id` = %d", infotype, vehiclemodel);
  152. qresult = db_query(dbfile, sqlquery);
  153. db_get_field(qresult, 0, sqlquery, sizeof(sqlquery));
  154. db_free_result(qresult);
  155. if(strfind(infotype, "DriveType", true) != -1 || strfind(infotype, "EngineType", true) != -1) // saved as characters
  156. return sqlquery[0];
  157. return strval(sqlquery);
  158. }
  159. public Float:GetVehicleModelInfoAsFloat(vehiclemodel, infotype[])
  160. {
  161. new
  162. sqlquery[100],
  163. DBResult:qresult;
  164. format(sqlquery, sizeof(sqlquery), "SELECT `%q` FROM `vehicle_main` WHERE `id` = %d", infotype, vehiclemodel);
  165. qresult = db_query(dbfile, sqlquery);
  166. db_get_field(qresult, 0, sqlquery, sizeof(sqlquery));
  167. db_free_result(qresult);
  168. return floatstr(sqlquery);
  169. }
  170. public GetVehicleModelFlag(vehiclemodel, modelFlags:flag)
  171. {
  172. new
  173. query[100],
  174. DBResult:qresult,
  175. value;
  176. format(query, sizeof(query), "SELECT nModelFlags FROM vehicle_main WHERE id = %d AND nModelFlags & %d;", vehiclemodel, flag);
  177. qresult = db_query(dbfile, query);
  178. value = db_num_rows(qresult);
  179. db_free_result(qresult);
  180. return value;
  181. }
  182. public GetVehicleHandlingFlag(vehiclemodel, handlingFlags:flag)
  183. {
  184. new
  185. query[100],
  186. DBResult:qresult,
  187. value;
  188. format(query, sizeof(query), "SELECT nHandlingFlags FROM vehicle_main WHERE id = %d AND nHandlingFlags & %d;", vehiclemodel, flag);
  189. qresult = db_query(dbfile, query);
  190. value = db_num_rows(qresult);
  191. db_free_result(qresult);
  192. return value;
  193. }