climb.pwn 105 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722
  1. #include <a_samp>
  2. #include <djson>
  3. #include <streamer>
  4. /*
  5. Car Ownership/Dealership
  6. - Make sure you have the includes to compile and latest versions.
  7. - You need to create a folder in your scriptfiles named playervehicles.
  8. - You need the cardealerships.json file in your scriptfiles folder. ( Check SFs )
  9. - For admin commands only admin rcon. (/createdealership /destroydealership /createpvehicle /destroypvehicle)
  10. */
  11. #define DIALOG_CDEDIT 1329
  12. #define DIALOG_CDUPGRADE 1328
  13. #define DIALOG_CDTILL 1327
  14. #define DIALOG_CDEDITCARS 1326
  15. #define DIALOG_CDEDITONE 1325
  16. #define DIALOG_CDEDITMODEL 1324
  17. #define DIALOG_CDEDITCOST 1323
  18. #define DIALOG_CDEDITPARK 1322
  19. #define DIALOG_CDDELVEH 1321
  20. #define DIALOG_CDNEWVEH 1320
  21. #define DIALOG_CDRADIUS 1319
  22. #define DIALOG_CDNAME 1318
  23. #define DIALOG_CDPRICE 1317
  24. #define DIALOG_CDBUY 1316
  25. #define DIALOG_CDWITHDRAW 1315
  26. #define DIALOG_CDDEPOSIT 1314
  27. #define DIALOG_CDSELL 1313
  28. #define DIALOG_CDLOCKBUY 1312
  29. #define DIALOG_CDLOCKMENU 1311
  30. #define COLOR_GREEN 0x33AA33AA
  31. #define COLOR_RED 0xAA3333AA
  32. #define COLOR_LIGHTBLUE 0x33CCFFAA
  33. #define COLOR_LIGHTRED 0xFF6347AA
  34. #define COLOR_GRAD1 0xB4B5B7FF
  35. #define COLOR_GRAD2 0xBFC0C2FF
  36. #define COLOR_GRAD4 0xD8D8D8FF
  37. #define COLOR_GREY 0xAFAFAFAA
  38. #define COLOR_WHITE 0xFFFFFFAA
  39. #define COLOR_YELLOW 0xFFFF00AA
  40. #define COLOR_PURPLE 0xC2A2DAAA
  41. /* PLAYER VEHICLE DEFINES */
  42. #define MAX_PLAYERVEHICLES 5
  43. #define MAX_MODS 15
  44. #define INVALID_PLAYER_VEHICLE_ID 0
  45. #define MAX_DEALERSHIPVEHICLES 10
  46. #define MAX_CARDEALERSHIPS 10
  47. forward LoadcDealerships();
  48. forward SavecDealership(id);
  49. forward PlayerPlayMusic(playerid);
  50. forward StopMusic();
  51. forward OnPlayerVehicleUpdate(playerid);
  52. forward OnPlayerVehicleLogin(playerid);
  53. forward LockPlayerVehicle(ownerid, carid, type);
  54. forward UnLockPlayerVehicle(ownerid, carid, type);
  55. forward Random(min, max);
  56. forward IsAt247(playerid);
  57. forward MeepMeep(playerid, vehicleid);
  58. forward PutPlayerInVeh(playerid, vehicleid);
  59. forward ReleasePlayer(playerid);
  60. forward ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5);
  61. new meepmeep[MAX_VEHICLES];
  62. enum pvInfo
  63. {
  64. Float:pvPosX,
  65. Float:pvPosY,
  66. Float:pvPosZ,
  67. Float:pvPosAngle,
  68. pvId,
  69. pvModelId,
  70. pvLock,
  71. pvLocked,
  72. pvPaintJob,
  73. pvColor1,
  74. pvColor2,
  75. pvMods[MAX_MODS],
  76. pvAllowPlayer[MAX_PLAYER_NAME],
  77. pvPark,
  78. };
  79. new PlayerVehicleInfo[MAX_PLAYERS][MAX_PLAYERVEHICLES][pvInfo];
  80. enum cdInfo
  81. {
  82. cdOwned,
  83. cdOwner[MAX_PLAYER_NAME],
  84. Float: cdEntranceX,
  85. Float: cdEntranceY,
  86. Float: cdEntranceZ,
  87. Float: cdExitX,
  88. Float: cdExitY,
  89. Float: cdExitZ,
  90. cdMessage[128],
  91. cdTill,
  92. cdInterior,
  93. Float: cdRadius,
  94. cdPrice,
  95. cdPickupID,
  96. Text3D:cdTextLabel,
  97. Text3D:cdVehicleLabel[MAX_DEALERSHIPVEHICLES],
  98. cdVehicleModel[MAX_DEALERSHIPVEHICLES],
  99. cdVehicleCost[MAX_DEALERSHIPVEHICLES],
  100. cdVehicleId[MAX_DEALERSHIPVEHICLES],
  101. Float: cdVehicleSpawnX[MAX_DEALERSHIPVEHICLES],
  102. Float: cdVehicleSpawnY[MAX_DEALERSHIPVEHICLES],
  103. Float: cdVehicleSpawnZ[MAX_DEALERSHIPVEHICLES],
  104. Float: cdVehicleSpawnAngle[MAX_DEALERSHIPVEHICLES],
  105. Float: cdVehicleSpawn[4],
  106. };
  107. new CarDealershipInfo[MAX_CARDEALERSHIPS][cdInfo];
  108. new VehicleName[][] = {
  109. "Landstalker",
  110. "Bravura",
  111. "Buffalo",
  112. "Linerunner",
  113. "Pereniel",
  114. "Sentinel",
  115. "Dumper",
  116. "Firetruck",
  117. "Trashmaster",
  118. "Stretch",
  119. "Manana",
  120. "Infernus",
  121. "Voodoo",
  122. "Pony",
  123. "Mule",
  124. "Cheetah",
  125. "Ambulance",
  126. "Leviathan",
  127. "Moonbeam",
  128. "Esperanto",
  129. "Taxi",
  130. "Washington",
  131. "Bobcat",
  132. "Mr Whoopee",
  133. "BF Injection",
  134. "Hunter",
  135. "Premier",
  136. "Enforcer",
  137. "Securicar",
  138. "Banshee",
  139. "Predator",
  140. "Bus",
  141. "Rhino",
  142. "Barracks",
  143. "Hotknife",
  144. "Trailer",
  145. "Previon",
  146. "Coach",
  147. "Cabbie",
  148. "Stallion",
  149. "Rumpo",
  150. "RC Bandit",
  151. "Romero",
  152. "Packer",
  153. "Monster Truck",
  154. "Admiral",
  155. "Squalo",
  156. "Seasparrow",
  157. "Pizzaboy",
  158. "Tram",
  159. "Trailer",
  160. "Turismo",
  161. "Speeder",
  162. "Reefer",
  163. "Tropic",
  164. "Flatbed",
  165. "Yankee",
  166. "Caddy",
  167. "Solair",
  168. "Berkley's RC Van",
  169. "Skimmer",
  170. "PCJ-600",
  171. "Faggio",
  172. "Freeway",
  173. "RC Baron",
  174. "RC Raider",
  175. "Glendale",
  176. "Oceanic",
  177. "Sanchez",
  178. "Sparrow",
  179. "Patriot",
  180. "Quad",
  181. "Coastguard",
  182. "Dinghy",
  183. "Hermes",
  184. "Sabre",
  185. "Rustler",
  186. "ZR-350",
  187. "Walton",
  188. "Regina",
  189. "Comet",
  190. "BMX",
  191. "Burrito",
  192. "Camper",
  193. "Marquis",
  194. "Baggage",
  195. "Dozer",
  196. "Maverick",
  197. "News Chopper",
  198. "Rancher",
  199. "FBI Rancher",
  200. "Virgo",
  201. "Greenwood",
  202. "Jetmax",
  203. "Hotring",
  204. "Sandking",
  205. "Blista Compact",
  206. "Police Maverick",
  207. "Boxville",
  208. "Benson",
  209. "Mesa",
  210. "RC Goblin",
  211. "Hotring Racer",
  212. "Hotring Racer",
  213. "Bloodring Banger",
  214. "Rancher",
  215. "Super GT",
  216. "Elegant",
  217. "Journey",
  218. "Bike",
  219. "Mountain Bike",
  220. "Beagle",
  221. "Cropdust",
  222. "Stunt",
  223. "Tanker",
  224. "RoadTrain",
  225. "Nebula",
  226. "Majestic",
  227. "Buccaneer",
  228. "Shamal",
  229. "Hydra",
  230. "FCR-900",
  231. "NRG-500",
  232. "HPV1000",
  233. "Cement Truck",
  234. "Tow Truck",
  235. "Fortune",
  236. "Cadrona",
  237. "FBI Truck",
  238. "Willard",
  239. "Forklift",
  240. "Tractor",
  241. "Combine",
  242. "Feltzer",
  243. "Remington",
  244. "Slamvan",
  245. "Blade",
  246. "Freight",
  247. "Streak",
  248. "Vortex",
  249. "Vincent",
  250. "Bullet",
  251. "Clover",
  252. "Sadler",
  253. "Firetruck",
  254. "Hustler",
  255. "Intruder",
  256. "Primo",
  257. "Cargobob",
  258. "Tampa",
  259. "Sunrise",
  260. "Merit",
  261. "Utility",
  262. "Nevada",
  263. "Yosemite",
  264. "Windsor",
  265. "Monster Truck",
  266. "Monster Truck",
  267. "Uranus",
  268. "Jester",
  269. "Sultan",
  270. "Stratum",
  271. "Elegy",
  272. "Raindance",
  273. "RC Tiger",
  274. "Flash",
  275. "Tahoma",
  276. "Savanna",
  277. "Bandito",
  278. "Freight",
  279. "Trailer",
  280. "Kart",
  281. "Mower",
  282. "Duneride",
  283. "Sweeper",
  284. "Broadway",
  285. "Tornado",
  286. "AT-400",
  287. "DFT-30",
  288. "Huntley",
  289. "Stafford",
  290. "BF-400",
  291. "Newsvan",
  292. "Tug",
  293. "Trailer",
  294. "Emperor",
  295. "Wayfarer",
  296. "Euros",
  297. "Hotdog",
  298. "Club",
  299. "Trailer",
  300. "Trailer",
  301. "Andromada",
  302. "Dodo",
  303. "RC Cam",
  304. "Launch",
  305. "Police Car (LSPD)",
  306. "Police Car (SFPD)",
  307. "Police Car (LVPD)",
  308. "Police Ranger",
  309. "Picador",
  310. "S.W.A.T. Van",
  311. "Alpha",
  312. "Phoenix",
  313. "Glendale",
  314. "Sadler",
  315. "Luggage Trailer",
  316. "Luggage Trailer",
  317. "Stair Trailer",
  318. "Boxville",
  319. "Farm Plow",
  320. "Utility Trailer"
  321. };
  322. public OnFilterScriptInit()
  323. {
  324. print("Debug 1");
  325. djson_GameModeInit();
  326. print("Debug 2");
  327. LoadcDealerships();
  328. print("Debug 3");
  329. new text_info[128];
  330. for(new d = 0; d < sizeof(CarDealershipInfo); d++)
  331. {
  332. if(CarDealershipInfo[d][cdEntranceX] != 0.0 && CarDealershipInfo[d][cdEntranceY] != 0.0)
  333. {
  334. CarDealershipInfo[d][cdPickupID] = CreateDynamicPickup(1239, 1, CarDealershipInfo[d][cdEntranceX], CarDealershipInfo[d][cdEntranceY], CarDealershipInfo[d][cdEntranceZ]);
  335. if(CarDealershipInfo[d][cdOwned])
  336. {
  337. format(text_info,256,"Car Dealership %s\nOwner: %s\nRadius: %.1f", CarDealershipInfo[d][cdMessage], CarDealershipInfo[d][cdOwner], CarDealershipInfo[d][cdRadius]);
  338. CarDealershipInfo[d][cdTextLabel] = CreateDynamic3DTextLabel(text_info,COLOR_GREEN,CarDealershipInfo[d][cdEntranceX], CarDealershipInfo[d][cdEntranceY], CarDealershipInfo[d][cdEntranceZ]+0.75,3.0,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,1);
  339. }
  340. else
  341. {
  342. format(text_info,256,"Car Dealership %s For Sale\nPrice: %d\nRadius: %.1f", CarDealershipInfo[d][cdMessage], CarDealershipInfo[d][cdPrice], CarDealershipInfo[d][cdRadius]);
  343. CarDealershipInfo[d][cdTextLabel] = CreateDynamic3DTextLabel(text_info,COLOR_RED,CarDealershipInfo[d][cdEntranceX], CarDealershipInfo[d][cdEntranceY], CarDealershipInfo[d][cdEntranceZ]+0.75,3.0,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,1);
  344. }
  345. }
  346. for(new v = 0; v < MAX_DEALERSHIPVEHICLES; v++)
  347. {
  348. if (CarDealershipInfo[d][cdVehicleModel][v] != 0)
  349. {
  350. new carcreated = CreateVehicle(CarDealershipInfo[d][cdVehicleModel][v], CarDealershipInfo[d][cdVehicleSpawnX][v], CarDealershipInfo[d][cdVehicleSpawnY][v], CarDealershipInfo[d][cdVehicleSpawnZ][v], CarDealershipInfo[d][cdVehicleSpawnAngle][v], 0, 0, 6);
  351. format(text_info,256,"%s For Sale | Price: %d", GetVehicleName(carcreated), CarDealershipInfo[d][cdVehicleCost][v]);
  352. CarDealershipInfo[d][cdVehicleLabel][v] = CreateDynamic3DTextLabel(text_info,COLOR_LIGHTBLUE,0.0, 0.0, 0.0,8.0,INVALID_PLAYER_ID,carcreated);
  353. CarDealershipInfo[d][cdVehicleId][v] = carcreated;
  354. }
  355. }
  356. }
  357. print("Car System loaded.");
  358. return 1;
  359. }
  360. stock ini_GetKey( line[] )
  361. {
  362. new keyRes[256];
  363. keyRes[0] = 0;
  364. if ( strfind( line , "=" , true ) == -1 ) return keyRes;
  365. strmid( keyRes , line , 0 , strfind( line , "=" , true ) , sizeof( keyRes) );
  366. return keyRes;
  367. }
  368. stock ini_GetValue( line[] )
  369. {
  370. new valRes[256];
  371. valRes[0]=0;
  372. if ( strfind( line , "=" , true ) == -1 ) return valRes;
  373. strmid( valRes , line , strfind( line , "=" , true )+1 , strlen( line ) , sizeof( valRes ) );
  374. return valRes;
  375. }
  376. public Random(min, max)
  377. {
  378. new a = random(max - min) + min;
  379. return a;
  380. }
  381. public IsAt247(playerid)
  382. {
  383. if(IsPlayerConnected(playerid))
  384. {
  385. new GVW;
  386. GVW = GetPlayerVirtualWorld(playerid);
  387. if(IsPlayerInRangeOfPoint(playerid, 100.0, -30.875, -88.9609, 1004.53))
  388. {
  389. return 1;
  390. }
  391. if(GVW == 2)
  392. {
  393. if(IsPlayerInRangeOfPoint(playerid, 100.0, 349.9702,177.8098,1014.1875))
  394. {
  395. return 1;
  396. }
  397. }
  398. }
  399. return 0;
  400. }
  401. public ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5)
  402. {
  403. if(IsPlayerConnected(playerid))
  404. {
  405. new Float:posx, Float:posy, Float:posz;
  406. new Float:oldposx, Float:oldposy, Float:oldposz;
  407. new Float:tempposx, Float:tempposy, Float:tempposz;
  408. GetPlayerPos(playerid, oldposx, oldposy, oldposz);
  409. //radi = 2.0; //Trigger Radius
  410. for(new i = 0; i < MAX_PLAYERS; i++)
  411. {
  412. if(IsPlayerConnected(i))
  413. {
  414. GetPlayerPos(i, posx, posy, posz);
  415. tempposx = (oldposx -posx);
  416. tempposy = (oldposy -posy);
  417. tempposz = (oldposz -posz);
  418. //printf("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
  419. new playerworld, player2world;
  420. playerworld = GetPlayerVirtualWorld(playerid);
  421. player2world = GetPlayerVirtualWorld(i);
  422. if(playerworld == player2world)
  423. {
  424. if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)))
  425. {
  426. SendClientMessage(i, col1, string);
  427. }
  428. else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)))
  429. {
  430. SendClientMessage(i, col2, string);
  431. }
  432. else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
  433. {
  434. SendClientMessage(i, col3, string);
  435. }
  436. else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
  437. {
  438. SendClientMessage(i, col4, string);
  439. }
  440. else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
  441. {
  442. SendClientMessage(i, col5, string);
  443. }
  444. }
  445. }
  446. else
  447. {
  448. SendClientMessage(i, col1, string);
  449. }
  450. }
  451. }//not connected
  452. return 1;
  453. }
  454. public LoadcDealerships()
  455. {
  456. new idx, idx2;
  457. new string[128];
  458. new owner[MAX_PLAYER_NAME];
  459. new message[128];
  460. djAutocommit(false);
  461. while (idx < sizeof(CarDealershipInfo))
  462. {
  463. format(string, sizeof(string), "%d/owned", idx);
  464. CarDealershipInfo[idx][cdOwned] = djInt("cardealerships.json", string);
  465. format(string, sizeof(string), "%d/owner", idx);
  466. format(owner, sizeof(owner), "%s", dj("cardealerships.json", string));
  467. strmid(CarDealershipInfo[idx][cdOwner], owner, 0, strlen(owner), 255);
  468. format(string, sizeof(string), "%d/entrance/x", idx);
  469. CarDealershipInfo[idx][cdEntranceX] = djFloat("cardealerships.json", string);
  470. format(string, sizeof(string), "%d/entrance/y", idx);
  471. CarDealershipInfo[idx][cdEntranceY] = djFloat("cardealerships.json", string);
  472. format(string, sizeof(string), "%d/entrance/z", idx);
  473. CarDealershipInfo[idx][cdEntranceZ] = djFloat("cardealerships.json", string);
  474. format(string, sizeof(string), "%d/exit/x", idx);
  475. CarDealershipInfo[idx][cdExitX] = djFloat("cardealerships.json", string);
  476. format(string, sizeof(string), "%d/exit/y", idx);
  477. CarDealershipInfo[idx][cdExitY] = djFloat("cardealerships.json", string);
  478. format(string, sizeof(string), "%d/exit/z", idx);
  479. CarDealershipInfo[idx][cdExitZ] = djFloat("cardealerships.json", string);
  480. format(string, sizeof(string), "%d/message", idx);
  481. format(message, sizeof(message), "%s", dj("cardealerships.json", string));
  482. strmid(CarDealershipInfo[idx][cdMessage], message, 0, strlen(message), 255);
  483. format(string, sizeof(string), "%d/till", idx);
  484. CarDealershipInfo[idx][cdTill] = djInt("cardealerships.json", string);
  485. format(string, sizeof(string), "%d/interior", idx);
  486. CarDealershipInfo[idx][cdInterior] = djInt("cardealerships.json", string);
  487. format(string, sizeof(string), "%d/vehiclespawn/x", idx);
  488. CarDealershipInfo[idx][cdVehicleSpawn][0] = djFloat("cardealerships.json", string);
  489. format(string, sizeof(string), "%d/vehiclespawn/y", idx);
  490. CarDealershipInfo[idx][cdVehicleSpawn][1] = djFloat("cardealerships.json", string);
  491. format(string, sizeof(string), "%d/vehiclespawn/z", idx);
  492. CarDealershipInfo[idx][cdVehicleSpawn][2] = djFloat("cardealerships.json", string);
  493. format(string, sizeof(string), "%d/vehiclespawn/a", idx);
  494. CarDealershipInfo[idx][cdVehicleSpawn][3] = djFloat("cardealerships.json", string);
  495. format(string, sizeof(string), "%d/radius", idx);
  496. CarDealershipInfo[idx][cdRadius] = djFloat("cardealerships.json", string);
  497. format(string, sizeof(string), "%d/price", idx);
  498. CarDealershipInfo[idx][cdPrice] = djInt("cardealerships.json", string);
  499. while (idx2 < MAX_DEALERSHIPVEHICLES)
  500. {
  501. format(string, sizeof(string), "%d/vehicleangle/%d", idx, idx2);
  502. CarDealershipInfo[idx][cdVehicleSpawnAngle][idx2] = djFloat("cardealerships.json", string);
  503. format(string, sizeof(string), "%d/vehiclespawnx/%d", idx, idx2);
  504. CarDealershipInfo[idx][cdVehicleSpawnX][idx2] = djFloat("cardealerships.json", string);
  505. format(string, sizeof(string), "%d/vehiclespawny/%d", idx, idx2);
  506. CarDealershipInfo[idx][cdVehicleSpawnY][idx2] = djFloat("cardealerships.json", string);
  507. format(string, sizeof(string), "%d/vehiclespawnz/%d", idx, idx2);
  508. CarDealershipInfo[idx][cdVehicleSpawnZ][idx2] = djFloat("cardealerships.json", string);
  509. format(string, sizeof(string), "%d/vehiclecost/%d", idx, idx2);
  510. CarDealershipInfo[idx][cdVehicleCost][idx2] = djInt("cardealerships.json", string);
  511. format(string, sizeof(string), "%d/vehicletypes/%d", idx, idx2);
  512. CarDealershipInfo[idx][cdVehicleModel][idx2] = djInt("cardealerships.json", string);
  513. printf("VehicleId:%d VehicleAngle:%.1f VehicleCost:%d.",
  514. idx2,
  515. CarDealershipInfo[idx][cdVehicleSpawnAngle][idx2],
  516. CarDealershipInfo[idx][cdVehicleCost][idx2]);
  517. idx2++;
  518. }
  519. idx2 = 0;
  520. idx++;
  521. }
  522. djAutocommit(true);
  523. return 1;
  524. }
  525. public SavecDealership(id)
  526. {
  527. new idx2;
  528. new string[128];
  529. printf("Saving Car Dealership %d.", id);
  530. //djAutocommit(false);
  531. format(string, sizeof(string), "%d/owned", id);
  532. djSetInt("cardealerships.json", string, CarDealershipInfo[id][cdOwned]);
  533. format(string, sizeof(string), "%d/owner", id);
  534. djSet("cardealerships.json", string, CarDealershipInfo[id][cdOwner]);
  535. format(string, sizeof(string), "%d/entrance/x", id);
  536. djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdEntranceX]);
  537. format(string, sizeof(string), "%d/entrance/y", id);
  538. djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdEntranceY]);
  539. format(string, sizeof(string), "%d/entrance/z", id);
  540. djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdEntranceZ]);
  541. format(string, sizeof(string), "%d/exit/x", id);
  542. djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdExitX]);
  543. format(string, sizeof(string), "%d/exit/y", id);
  544. djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdExitY]);
  545. format(string, sizeof(string), "%d/exit/z", id);
  546. djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdExitZ]);
  547. format(string, sizeof(string), "%d/message", id);
  548. djSet("cardealerships.json", string, CarDealershipInfo[id][cdMessage]);
  549. format(string, sizeof(string), "%d/till", id);
  550. djSetInt("cardealerships.json", string, CarDealershipInfo[id][cdTill]);
  551. format(string, sizeof(string), "%d/interior", id);
  552. djSetInt("cardealerships.json", string, CarDealershipInfo[id][cdInterior]);
  553. format(string, sizeof(string), "%d/vehiclespawn/x", id);
  554. djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdVehicleSpawn][0]);
  555. format(string, sizeof(string), "%d/vehiclespawn/y", id);
  556. djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdVehicleSpawn][1]);
  557. format(string, sizeof(string), "%d/vehiclespawn/z", id);
  558. djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdVehicleSpawn][2]);
  559. format(string, sizeof(string), "%d/vehiclespawn/a", id);
  560. djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdVehicleSpawn][3]);
  561. format(string, sizeof(string), "%d/radius", id);
  562. djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdRadius]);
  563. format(string, sizeof(string), "%d/price", id);
  564. djSetInt("cardealerships.json", string, CarDealershipInfo[id][cdPrice]);
  565. while (idx2 < MAX_DEALERSHIPVEHICLES)
  566. {
  567. format(string, sizeof(string), "%d/vehicleangle/%d", id, idx2);
  568. djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdVehicleSpawnAngle][idx2]);
  569. format(string, sizeof(string), "%d/vehiclespawnx/%d", id, idx2);
  570. djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdVehicleSpawnX][idx2]);
  571. format(string, sizeof(string), "%d/vehiclespawny/%d", id, idx2);
  572. djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdVehicleSpawnY][idx2]);
  573. format(string, sizeof(string), "%d/vehiclespawnz/%d", id, idx2);
  574. djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdVehicleSpawnZ][idx2]);
  575. format(string, sizeof(string), "%d/vehiclecost/%d", id, idx2);
  576. djSetInt("cardealerships.json", string, CarDealershipInfo[id][cdVehicleCost][idx2]);
  577. format(string, sizeof(string), "%d/vehicletypes/%d", id, idx2);
  578. djSetInt("cardealerships.json", string, CarDealershipInfo[id][cdVehicleModel][idx2]);
  579. printf("VehicleId:%d VehicleModel:%d VehicleCost:%d.",
  580. idx2,
  581. CarDealershipInfo[id][cdVehicleModel][idx2],
  582. CarDealershipInfo[id][cdVehicleCost][idx2]);
  583. idx2++;
  584. }
  585. //djAutocommit(true);
  586. return 1;
  587. }
  588. public OnPlayerVehicleUpdate(playerid)
  589. {
  590. new string[20+MAX_PLAYER_NAME];
  591. new playername[MAX_PLAYER_NAME];
  592. GetPlayerName(playerid, playername, sizeof(playername));
  593. format(string, sizeof(string), "playervehicles/%s.ini", playername);
  594. new File: hFile = fopen(string, io_write);
  595. if (hFile)
  596. {
  597. new var[32];
  598. for(new v = 0; v < MAX_PLAYERVEHICLES; v++)
  599. {
  600. format(var, 32, "pv%dPosX=%.1f\n", v, PlayerVehicleInfo[playerid][v][pvPosX]);fwrite(hFile, var);
  601. format(var, 32, "pv%dPosY=%.1f\n", v, PlayerVehicleInfo[playerid][v][pvPosY]);fwrite(hFile, var);
  602. format(var, 32, "pv%dPosZ=%.1f\n", v, PlayerVehicleInfo[playerid][v][pvPosZ]);fwrite(hFile, var);
  603. format(var, 32, "pv%dPosAngle=%.1f\n", v, PlayerVehicleInfo[playerid][v][pvPosAngle]);fwrite(hFile, var);
  604. format(var, 32, "pv%dModelId=%d\n", v, PlayerVehicleInfo[playerid][v][pvModelId]);fwrite(hFile, var);
  605. format(var, 32, "pv%dLock=%d\n", v, PlayerVehicleInfo[playerid][v][pvLock]);fwrite(hFile, var);
  606. format(var, 32, "pv%dLocked=%d\n", v, PlayerVehicleInfo[playerid][v][pvLocked]);fwrite(hFile, var);
  607. format(var, 32, "pv%dPaintJob=%d\n", v, PlayerVehicleInfo[playerid][v][pvPaintJob]);fwrite(hFile, var);
  608. format(var, 32, "pv%dColor1=%d\n", v, PlayerVehicleInfo[playerid][v][pvColor1]);fwrite(hFile, var);
  609. format(var, 32, "pv%dColor2=%d\n", v, PlayerVehicleInfo[playerid][v][pvColor2]);fwrite(hFile, var);
  610. for(new m = 0; m < MAX_MODS; m++)
  611. {
  612. format(var, 32, "pv%dMod%d=%d\n", v, m, PlayerVehicleInfo[playerid][v][pvMods][m]);fwrite(hFile, var);
  613. }
  614. format(var, 32, "pv%dAllowedPlayer=%s\n", v, PlayerVehicleInfo[playerid][v][pvAllowPlayer]);fwrite(hFile, var);
  615. }
  616. fclose(hFile);
  617. }
  618. return 1;
  619. }
  620. public OnPlayerVehicleLogin(playerid)
  621. {
  622. new string2[20+MAX_PLAYER_NAME];
  623. new playername[MAX_PLAYER_NAME];
  624. GetPlayerName(playerid, playername, sizeof(playername));
  625. format(string2, sizeof(string2), "playervehicles/%s.ini", playername);
  626. new File: UserFile = fopen(string2, io_read);
  627. if ( UserFile )
  628. {
  629. new key[ 256 ] , val[ 256 ];
  630. new Data[ 256 ];
  631. while ( fread( UserFile , Data , sizeof( Data ) ) )
  632. {
  633. key = ini_GetKey( Data );
  634. for(new v = 0; v < MAX_PLAYERVEHICLES; v++)
  635. {
  636. new string[128];
  637. format(string, 128, "pv%dPosX",v);
  638. if( strcmp( key , string , true ) == 0 ) { val = ini_GetValue( Data ); PlayerVehicleInfo[playerid][v][pvPosX] = floatstr( val ); }
  639. format(string, 128, "pv%dPosY",v);
  640. if( strcmp( key , string , true ) == 0 ) { val = ini_GetValue( Data ); PlayerVehicleInfo[playerid][v][pvPosY] = floatstr( val ); }
  641. format(string, 128, "pv%dPosZ",v);
  642. if( strcmp( key , string , true ) == 0 ) { val = ini_GetValue( Data ); PlayerVehicleInfo[playerid][v][pvPosZ] = floatstr( val ); }
  643. format(string, 128, "pv%dPosAngle",v);
  644. if( strcmp( key , string , true ) == 0 ) { val = ini_GetValue( Data ); PlayerVehicleInfo[playerid][v][pvPosAngle] = floatstr( val ); }
  645. format(string, 128, "pv%dModelId",v);
  646. if( strcmp( key , string , true ) == 0 ) { val = ini_GetValue( Data ); PlayerVehicleInfo[playerid][v][pvModelId] = strval( val ); }
  647. format(string, 128, "pv%dLock",v);
  648. if( strcmp( key , string , true ) == 0 ) { val = ini_GetValue( Data ); PlayerVehicleInfo[playerid][v][pvLock] = strval( val ); }
  649. format(string, 128, "pv%dLocked",v);
  650. if( strcmp( key , string , true ) == 0 ) { val = ini_GetValue( Data ); PlayerVehicleInfo[playerid][v][pvLocked] = strval( val ); }
  651. format(string, 128, "pv%dPaintJob",v);
  652. if( strcmp( key , string , true ) == 0 ) { val = ini_GetValue( Data ); PlayerVehicleInfo[playerid][v][pvPaintJob] = strval( val ); }
  653. format(string, 128, "pv%dColor1",v);
  654. if( strcmp( key , string , true ) == 0 ) { val = ini_GetValue( Data ); PlayerVehicleInfo[playerid][v][pvColor1] = strval( val ); }
  655. format(string, 128, "pv%dColor2",v);
  656. if( strcmp( key , string , true ) == 0 ) { val = ini_GetValue( Data ); PlayerVehicleInfo[playerid][v][pvColor2] = strval( val ); }
  657. for(new m = 0; m < MAX_MODS; m++)
  658. {
  659. format(string, 128, "pv%dMod%d", v, m);
  660. if( strcmp( key , string , true ) == 0 ) { val = ini_GetValue( Data ); PlayerVehicleInfo[playerid][v][pvMods][m] = strval( val ); }
  661. }
  662. format(string, 128, "pv%dAllowedPlayer",v);
  663. if( strcmp( key , string , true ) == 0 ) { val = ini_GetValue( Data ); strmid(PlayerVehicleInfo[playerid][v][pvAllowPlayer], val, 0, strlen(val)-1, 255); }
  664. }
  665. }
  666. }
  667. else
  668. {
  669. SendClientMessage(playerid, COLOR_GRAD1, " No player vehicle account found.");
  670. }
  671. LoadPlayerVehicles(playerid);
  672. return 1;
  673. }
  674. public PlayerPlayMusic(playerid)
  675. {
  676. if(IsPlayerConnected(playerid))
  677. {
  678. SetTimer("StopMusic", 5000, 0);
  679. PlayerPlaySound(playerid, 1068, 0.0, 0.0, 0.0);
  680. }
  681. }
  682. public StopMusic()
  683. {
  684. for(new i = 0; i < MAX_PLAYERS; i++)
  685. {
  686. if(IsPlayerConnected(i))
  687. {
  688. PlayerPlaySound(i, 1069, 0.0, 0.0, 0.0);
  689. }
  690. }
  691. }
  692. public OnFilterScriptExit()
  693. {
  694. for(new d = 0; d < sizeof(CarDealershipInfo); d++)
  695. {
  696. if(CarDealershipInfo[d][cdEntranceX] != 0.0 && CarDealershipInfo[d][cdEntranceY] != 0.0)
  697. {
  698. DestroyDynamicPickup(CarDealershipInfo[d][cdPickupID]);
  699. DestroyDynamic3DTextLabel(CarDealershipInfo[d][cdTextLabel]);
  700. }
  701. for(new v = 0; v < MAX_DEALERSHIPVEHICLES; v++)
  702. {
  703. if (CarDealershipInfo[d][cdVehicleModel][v] != 0)
  704. {
  705. DestroyCarDealershipVehicle(d, v);
  706. }
  707. }
  708. }
  709. djson_GameModeExit();
  710. return 1;
  711. }
  712. public OnPlayerSpawn(playerid)
  713. {
  714. if(GetPVarInt(playerid, "FirstSpawn") == 1)
  715. {
  716. OnPlayerVehicleLogin(playerid);
  717. SetPVarInt(playerid, "FirstSpawn", 0);
  718. }
  719. return 1;
  720. }
  721. public OnPlayerConnect(playerid)
  722. {
  723. for(new v = 0; v < MAX_PLAYERVEHICLES; v++)
  724. {
  725. PlayerVehicleInfo[playerid][v][pvModelId] = 0;
  726. PlayerVehicleInfo[playerid][v][pvPosX] = 0.0;
  727. PlayerVehicleInfo[playerid][v][pvPosY] = 0.0;
  728. PlayerVehicleInfo[playerid][v][pvPosZ] = 0.0;
  729. PlayerVehicleInfo[playerid][v][pvPosAngle] = 0.0;
  730. PlayerVehicleInfo[playerid][v][pvLock] = 0;
  731. PlayerVehicleInfo[playerid][v][pvLocked] = 0;
  732. PlayerVehicleInfo[playerid][v][pvPaintJob] = -1;
  733. PlayerVehicleInfo[playerid][v][pvColor1] = 0;
  734. PlayerVehicleInfo[playerid][v][pvColor2] = 0;
  735. new string[64];
  736. format(string, sizeof(string), "No-one");
  737. strmid(PlayerVehicleInfo[playerid][v][pvAllowPlayer], string, 0, strlen(string), 255);
  738. PlayerVehicleInfo[playerid][v][pvPark] = 0;
  739. for(new m = 0; m < MAX_MODS; m++)
  740. {
  741. PlayerVehicleInfo[playerid][v][pvMods][m] = 0;
  742. }
  743. }
  744. }
  745. public OnPlayerDisconnect(playerid, reason)
  746. {
  747. UnloadPlayerVehicles(playerid);
  748. OnPlayerVehicleUpdate(playerid);
  749. }
  750. //------------------------------------------------------------------------------
  751. //CAR DEALERSHIP SYSTEM BY ALEX DONUTS
  752. //------------------------------------------------------------------------------
  753. stock CreateCarDealership(Float: enx, Float: eny, Float: enz, Float: radius, price, message[])
  754. {
  755. new dealershipid = GetFreeCarDealership();
  756. if(dealershipid == -1) return -1;
  757. new text_info[128];
  758. CarDealershipInfo[dealershipid][cdEntranceX] = enx;
  759. CarDealershipInfo[dealershipid][cdEntranceY] = eny;
  760. CarDealershipInfo[dealershipid][cdEntranceZ] = enz;
  761. CarDealershipInfo[dealershipid][cdRadius] = radius;
  762. CarDealershipInfo[dealershipid][cdPrice] = price;
  763. strmid(CarDealershipInfo[dealershipid][cdMessage], message, 0, strlen(message), 255);
  764. CarDealershipInfo[dealershipid][cdPickupID] = CreateDynamicPickup(1239, 1, CarDealershipInfo[dealershipid][cdEntranceX], CarDealershipInfo[dealershipid][cdEntranceY], CarDealershipInfo[dealershipid][cdEntranceZ]);
  765. format(text_info,256,"Car Dealership %s For Sale\nPrice: %d\nRadius: %.1f", CarDealershipInfo[dealershipid][cdMessage], CarDealershipInfo[dealershipid][cdPrice], CarDealershipInfo[dealershipid][cdRadius]);
  766. CarDealershipInfo[dealershipid][cdTextLabel] = CreateDynamic3DTextLabel(text_info,COLOR_RED,CarDealershipInfo[dealershipid][cdEntranceX], CarDealershipInfo[dealershipid][cdEntranceY], CarDealershipInfo[dealershipid][cdEntranceZ]+0.75,3.0,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,1);
  767. SavecDealership(dealershipid);
  768. return dealershipid;
  769. }
  770. stock DestroyCarDealership(dealershipid)
  771. {
  772. new string[30];
  773. CarDealershipInfo[dealershipid][cdEntranceX] = 0.0;
  774. CarDealershipInfo[dealershipid][cdEntranceY] = 0.0;
  775. CarDealershipInfo[dealershipid][cdEntranceZ] = 0.0;
  776. CarDealershipInfo[dealershipid][cdRadius] = 0.0;
  777. CarDealershipInfo[dealershipid][cdTill] = 0;
  778. CarDealershipInfo[dealershipid][cdOwned] = 0;
  779. CarDealershipInfo[dealershipid][cdPrice] = 0;
  780. format(string, sizeof(string), "None");
  781. strmid(CarDealershipInfo[dealershipid][cdOwner], string, 0, strlen(string), 255);
  782. format(string, sizeof(string), "None");
  783. strmid(CarDealershipInfo[dealershipid][cdMessage], string, 0, strlen(string), 255);
  784. DestroyDynamic3DTextLabel(CarDealershipInfo[dealershipid][cdTextLabel]);
  785. DestroyDynamicPickup(CarDealershipInfo[dealershipid][cdPickupID]);
  786. CarDealershipInfo[dealershipid][cdPickupID] = 0;
  787. CarDealershipInfo[dealershipid][cdTextLabel] = Text3D:INVALID_3DTEXT_ID;
  788. CarDealershipInfo[dealershipid][cdVehicleSpawn][0] = 0.0;
  789. CarDealershipInfo[dealershipid][cdVehicleSpawn][1] = 0.0;
  790. CarDealershipInfo[dealershipid][cdVehicleSpawn][2] = 0.0;
  791. CarDealershipInfo[dealershipid][cdVehicleSpawn][3] = 0.0;
  792. for(new v = 0; v < MAX_DEALERSHIPVEHICLES; v++)
  793. {
  794. if (CarDealershipInfo[dealershipid][cdVehicleModel][v] != 0)
  795. {
  796. DestroyCarDealershipVehicle(dealershipid, v);
  797. }
  798. }
  799. SavecDealership(dealershipid);
  800. }
  801. stock GetFreeCarDealership()
  802. {
  803. new
  804. i = 0;
  805. while (i < MAX_CARDEALERSHIPS && CarDealershipInfo[i][cdEntranceX] != 0.0 && CarDealershipInfo[i][cdEntranceY] != 0.0)
  806. {
  807. i++;
  808. }
  809. if (i == MAX_CARDEALERSHIPS) return -1;
  810. return i;
  811. }
  812. stock SetPlayerOwnerOfCD(playerid, dealershipid)
  813. {
  814. new owner[MAX_PLAYER_NAME];
  815. CarDealershipInfo[dealershipid][cdOwned] = 1;
  816. GetPlayerName(playerid, owner, sizeof(owner));
  817. strmid(CarDealershipInfo[dealershipid][cdOwner], owner, 0, strlen(owner), 255);
  818. new text_info[128];
  819. format(text_info,256,"Car Dealership %s\nOwner: %s\nRadius: %.1f", CarDealershipInfo[dealershipid][cdMessage], CarDealershipInfo[dealershipid][cdOwner], CarDealershipInfo[dealershipid][cdRadius]);
  820. UpdateDynamic3DTextLabelText(CarDealershipInfo[dealershipid][cdTextLabel], COLOR_GREEN, text_info);
  821. SavecDealership(dealershipid);
  822. }
  823. stock SellCarDealership(dealershipid)
  824. {
  825. CarDealershipInfo[dealershipid][cdOwned] = 0;
  826. CarDealershipInfo[dealershipid][cdVehicleSpawn][0] = 0.0;
  827. CarDealershipInfo[dealershipid][cdVehicleSpawn][1] = 0.0;
  828. CarDealershipInfo[dealershipid][cdVehicleSpawn][2] = 0.0;
  829. CarDealershipInfo[dealershipid][cdVehicleSpawn][3] = 0.0;
  830. strmid(CarDealershipInfo[dealershipid][cdOwner], "No-one", 0, MAX_PLAYER_NAME, 255);
  831. new text_info[128];
  832. format(text_info,256,"Car Dealership %s For Sale\nPrice: %d\nRadius: %.1f", CarDealershipInfo[dealershipid][cdMessage], CarDealershipInfo[dealershipid][cdPrice], CarDealershipInfo[dealershipid][cdRadius]);
  833. UpdateDynamic3DTextLabelText(CarDealershipInfo[dealershipid][cdTextLabel], COLOR_RED, text_info);
  834. SavecDealership(dealershipid);
  835. }
  836. stock IsPlayerOwnerOfCD(playerid)
  837. {
  838. new owner[MAX_PLAYER_NAME];
  839. GetPlayerName(playerid, owner, sizeof(owner));
  840. for(new d = 0; d < MAX_CARDEALERSHIPS; d++)
  841. {
  842. if(strcmp(CarDealershipInfo[d][cdOwner],owner, true ) == 0)
  843. {
  844. return d;
  845. }
  846. }
  847. return -1;
  848. }
  849. stock IsPlayerOwnerOfCDEx(playerid, dealershipid)
  850. {
  851. new owner[MAX_PLAYER_NAME];
  852. GetPlayerName(playerid, owner, sizeof(owner));
  853. if(strcmp(CarDealershipInfo[dealershipid][cdOwner],owner, true ) == 0)
  854. {
  855. return 1;
  856. }
  857. return 0;
  858. }
  859. stock CreateCarDealershipVehicle(dealershipid, modelid, Float: x, Float: y, Float: z, Float: a, price)
  860. {
  861. new cdvehicleid = GetFreeCarDealershipVehicleId(dealershipid);
  862. if(cdvehicleid == -1) return -1;
  863. new text_info[128];
  864. CarDealershipInfo[dealershipid][cdVehicleModel][cdvehicleid] = modelid;
  865. CarDealershipInfo[dealershipid][cdVehicleCost][cdvehicleid] = price;
  866. CarDealershipInfo[dealershipid][cdVehicleSpawnX][cdvehicleid] = x;
  867. CarDealershipInfo[dealershipid][cdVehicleSpawnY][cdvehicleid] = y;
  868. CarDealershipInfo[dealershipid][cdVehicleSpawnZ][cdvehicleid] = z;
  869. CarDealershipInfo[dealershipid][cdVehicleSpawnAngle][cdvehicleid] = a;
  870. new carcreated = CreateVehicle(modelid, x, y, z, a, 0, 0, 6);
  871. format(text_info,256,"%s For Sale | Price: %d", GetVehicleName(carcreated), CarDealershipInfo[dealershipid][cdVehicleCost][cdvehicleid]);
  872. CarDealershipInfo[dealershipid][cdVehicleLabel][cdvehicleid] = CreateDynamic3DTextLabel(text_info,COLOR_LIGHTBLUE,0.0, 0.0, 0.0,5.0,INVALID_PLAYER_ID,carcreated,1);
  873. CarDealershipInfo[dealershipid][cdVehicleId][cdvehicleid] = carcreated;
  874. SavecDealership(cdvehicleid);
  875. return cdvehicleid;
  876. }
  877. stock DestroyCarDealershipVehicle(dealershipid, cdvehicleid)
  878. {
  879. CarDealershipInfo[dealershipid][cdVehicleModel][cdvehicleid] = 0;
  880. CarDealershipInfo[dealershipid][cdVehicleCost][cdvehicleid] = 0;
  881. CarDealershipInfo[dealershipid][cdVehicleSpawnX][cdvehicleid] = 0.0;
  882. CarDealershipInfo[dealershipid][cdVehicleSpawnY][cdvehicleid] = 0.0;
  883. CarDealershipInfo[dealershipid][cdVehicleSpawnZ][cdvehicleid] = 0.0;
  884. CarDealershipInfo[dealershipid][cdVehicleSpawnAngle][cdvehicleid] = 0.0;
  885. DestroyDynamic3DTextLabel(CarDealershipInfo[dealershipid][cdVehicleLabel][cdvehicleid]);
  886. DestroyVehicle(CarDealershipInfo[dealershipid][cdVehicleId][cdvehicleid]);
  887. CarDealershipInfo[dealershipid][cdVehicleLabel][cdvehicleid] = Text3D:INVALID_3DTEXT_ID;
  888. CarDealershipInfo[dealershipid][cdVehicleId][cdvehicleid] = 0;
  889. }
  890. stock GetFreeCarDealershipVehicleId(dealershipid)
  891. {
  892. new
  893. i = 0;
  894. while (i < MAX_DEALERSHIPVEHICLES && CarDealershipInfo[dealershipid][cdVehicleModel][i] != 0)
  895. {
  896. i++;
  897. }
  898. if (i == MAX_DEALERSHIPVEHICLES) return -1;
  899. return i;
  900. }
  901. stock GetCarDealershipVehicleId(vehicleid)
  902. {
  903. for(new d = 0; d < MAX_CARDEALERSHIPS; d++)
  904. {
  905. for(new v = 0; v < MAX_DEALERSHIPVEHICLES; v++)
  906. {
  907. if(CarDealershipInfo[d][cdVehicleId][v] == vehicleid)
  908. {
  909. return v;
  910. }
  911. }
  912. }
  913. return -1;
  914. }
  915. stock GetCarDealershipId(vehicleid)
  916. {
  917. for(new d = 0; d < MAX_CARDEALERSHIPS; d++)
  918. {
  919. for(new v = 0; v < MAX_DEALERSHIPVEHICLES; v++)
  920. {
  921. if(CarDealershipInfo[d][cdVehicleId][v] == vehicleid)
  922. {
  923. return d;
  924. }
  925. }
  926. }
  927. return -1;
  928. }
  929. //------------------------------------------------------------------------------
  930. //PLAYER VEHICLE SYSTEM BY ALEX DONUTS
  931. //------------------------------------------------------------------------------
  932. stock CreatePlayerVehicle(playerid, playervehicleid, modelid, Float: x, Float: y, Float: z, Float: angle, color1, color2)
  933. {
  934. if(PlayerVehicleInfo[playerid][playervehicleid][pvId] == INVALID_PLAYER_VEHICLE_ID)
  935. {
  936. new string[99];
  937. PlayerVehicleInfo[playerid][playervehicleid][pvModelId] = modelid;
  938. PlayerVehicleInfo[playerid][playervehicleid][pvPosX] = x;
  939. PlayerVehicleInfo[playerid][playervehicleid][pvPosY] = y;
  940. PlayerVehicleInfo[playerid][playervehicleid][pvPosZ] = z;
  941. PlayerVehicleInfo[playerid][playervehicleid][pvPosAngle] = angle;
  942. PlayerVehicleInfo[playerid][playervehicleid][pvColor1] = color1;
  943. PlayerVehicleInfo[playerid][playervehicleid][pvColor2] = color2;
  944. PlayerVehicleInfo[playerid][playervehicleid][pvPark] = 1;
  945. for(new m = 0; m < MAX_MODS; m++)
  946. {
  947. PlayerVehicleInfo[playerid][playervehicleid][pvMods][m] = 0;
  948. }
  949. new carcreated = CreateVehicle(modelid,x,y,z,angle,color1,color2,-1);
  950. PlayerVehicleInfo[playerid][playervehicleid][pvId] = carcreated;
  951. format(string, sizeof(string), "Created your vehicle #%d.", PlayerVehicleInfo[playerid][playervehicleid][pvId]);
  952. SendClientMessage(playerid, COLOR_GRAD1,string);
  953. return carcreated;
  954. }
  955. return INVALID_PLAYER_VEHICLE_ID;
  956. }
  957. stock DestroyPlayerVehicle(playerid, playervehicleid)
  958. {
  959. if(PlayerVehicleInfo[playerid][playervehicleid][pvId] != INVALID_PLAYER_VEHICLE_ID)
  960. {
  961. new string[99];
  962. DestroyVehicle(PlayerVehicleInfo[playerid][playervehicleid][pvId]);
  963. PlayerVehicleInfo[playerid][playervehicleid][pvModelId] = 0;
  964. PlayerVehicleInfo[playerid][playervehicleid][pvPosX] = 0.0;
  965. PlayerVehicleInfo[playerid][playervehicleid][pvPosY] = 0.0;
  966. PlayerVehicleInfo[playerid][playervehicleid][pvPosZ] = 0.0;
  967. PlayerVehicleInfo[playerid][playervehicleid][pvPosAngle] = 0.0;
  968. PlayerVehicleInfo[playerid][playervehicleid][pvPaintJob] = -1;
  969. PlayerVehicleInfo[playerid][playervehicleid][pvColor1] = 126;
  970. PlayerVehicleInfo[playerid][playervehicleid][pvColor2] = 126;
  971. format(string, sizeof(string), "None");
  972. strmid(PlayerVehicleInfo[playerid][playervehicleid][pvAllowPlayer], string, 0, strlen(string), 255);
  973. format(string, sizeof(string), "Your vehicle #%d has been destroyed.", PlayerVehicleInfo[playerid][playervehicleid][pvId]);
  974. SendClientMessage(playerid, COLOR_GRAD1,string);
  975. PlayerVehicleInfo[playerid][playervehicleid][pvId] = INVALID_PLAYER_VEHICLE_ID;
  976. }
  977. }
  978. stock LoadPlayerVehicles(playerid)
  979. {
  980. new playername[MAX_PLAYER_NAME];
  981. GetPlayerName(playerid, playername, sizeof(playername));
  982. printf(" Loading %s's vehicles.", playername);
  983. for(new v = 0; v < MAX_PLAYERVEHICLES; v++)
  984. {
  985. if(PlayerVehicleInfo[playerid][v][pvModelId] != 0)
  986. {
  987. new carcreated = CreateVehicle(PlayerVehicleInfo[playerid][v][pvModelId], PlayerVehicleInfo[playerid][v][pvPosX], PlayerVehicleInfo[playerid][v][pvPosY], PlayerVehicleInfo[playerid][v][pvPosZ], PlayerVehicleInfo[playerid][v][pvPosAngle],PlayerVehicleInfo[playerid][v][pvColor1], PlayerVehicleInfo[playerid][v][pvColor2], -1);
  988. PlayerVehicleInfo[playerid][v][pvId] = carcreated;
  989. }
  990. }
  991. LoadAllPlayerVehicleMods(playerid);
  992. }
  993. stock UnloadPlayerVehicles(playerid)
  994. {
  995. new playername[MAX_PLAYER_NAME];
  996. GetPlayerName(playerid, playername, sizeof(playername));
  997. printf(" Unloading %s's vehicles.", playername);
  998. for(new v = 0; v < MAX_PLAYERVEHICLES; v++)
  999. {
  1000. if(PlayerVehicleInfo[playerid][v][pvId] != INVALID_PLAYER_VEHICLE_ID)
  1001. {
  1002. //new Float:x, Float:y, Float:z, Float:angle;
  1003. //GetVehiclePos(PlayerVehicleInfo[playerid][v][pvId], x, y, z);
  1004. //GetVehicleZAngle(PlayerVehicleInfo[playerid][v][pvId], angle);
  1005. //UpdatePlayerVehicleParkPosition(playerid, v, x, y, z, angle);
  1006. UpdatePlayerVehicleMods(playerid, v);
  1007. DestroyVehicle(PlayerVehicleInfo[playerid][v][pvId]);
  1008. PlayerVehicleInfo[playerid][v][pvId] = INVALID_PLAYER_VEHICLE_ID;
  1009. }
  1010. }
  1011. }
  1012. stock UpdatePlayerVehicleParkPosition(playerid, playervehicleid, Float:newx, Float:newy, Float:newz, Float:newangle, Float:health)
  1013. {
  1014. new playername[MAX_PLAYER_NAME];
  1015. GetPlayerName(playerid, playername, sizeof(playername));
  1016. if(PlayerVehicleInfo[playerid][playervehicleid][pvId] != INVALID_PLAYER_VEHICLE_ID)
  1017. {
  1018. new Float:oldx, Float:oldy, Float:oldz;
  1019. oldx = PlayerVehicleInfo[playerid][playervehicleid][pvPosX];
  1020. oldy = PlayerVehicleInfo[playerid][playervehicleid][pvPosY];
  1021. oldz = PlayerVehicleInfo[playerid][playervehicleid][pvPosZ];
  1022. if(oldx == newx && oldy == newy && oldz == newz) return 0;
  1023. PlayerVehicleInfo[playerid][playervehicleid][pvPosX] = newx;
  1024. PlayerVehicleInfo[playerid][playervehicleid][pvPosY] = newy;
  1025. PlayerVehicleInfo[playerid][playervehicleid][pvPosZ] = newz;
  1026. PlayerVehicleInfo[playerid][playervehicleid][pvPosAngle] = newangle;
  1027. UpdatePlayerVehicleMods(playerid, playervehicleid);
  1028. DestroyVehicle(PlayerVehicleInfo[playerid][playervehicleid][pvId]);
  1029. new carcreated = CreateVehicle(PlayerVehicleInfo[playerid][playervehicleid][pvModelId], PlayerVehicleInfo[playerid][playervehicleid][pvPosX], PlayerVehicleInfo[playerid][playervehicleid][pvPosY], PlayerVehicleInfo[playerid][playervehicleid][pvPosZ],
  1030. PlayerVehicleInfo[playerid][playervehicleid][pvPosAngle],PlayerVehicleInfo[playerid][playervehicleid][pvColor1], PlayerVehicleInfo[playerid][playervehicleid][pvColor2], -1);
  1031. PlayerVehicleInfo[playerid][playervehicleid][pvId] = carcreated;
  1032. SetVehicleHealth(carcreated, health);
  1033. LoadPlayerVehicleMods(playerid, playervehicleid);
  1034. return 1;
  1035. }
  1036. return 0;
  1037. }
  1038. stock UpdatePlayerVehicleMods(playerid, playervehicleid)
  1039. {
  1040. new playername[MAX_PLAYER_NAME];
  1041. GetPlayerName(playerid, playername, sizeof(playername));
  1042. new carid = PlayerVehicleInfo[playerid][playervehicleid][pvId];
  1043. new exhaust, frontbumper, rearbumper, roof, spoilers, sideskirt1,
  1044. sideskirt2, wheels, hydraulics, nitro, hood, lamps, stereo, ventright, ventleft;
  1045. exhaust = GetVehicleComponentInSlot(carid, CARMODTYPE_EXHAUST);
  1046. frontbumper = GetVehicleComponentInSlot(carid, CARMODTYPE_FRONT_BUMPER);
  1047. rearbumper = GetVehicleComponentInSlot(carid, CARMODTYPE_REAR_BUMPER);
  1048. roof = GetVehicleComponentInSlot(carid, CARMODTYPE_ROOF);
  1049. spoilers = GetVehicleComponentInSlot(carid, CARMODTYPE_SPOILER);
  1050. sideskirt1 = GetVehicleComponentInSlot(carid, CARMODTYPE_SIDESKIRT);
  1051. sideskirt2 = GetVehicleComponentInSlot(carid, CARMODTYPE_SIDESKIRT);
  1052. wheels = GetVehicleComponentInSlot(carid, CARMODTYPE_WHEELS);
  1053. hydraulics = GetVehicleComponentInSlot(carid, CARMODTYPE_HYDRAULICS);
  1054. nitro = GetVehicleComponentInSlot(carid, CARMODTYPE_NITRO);
  1055. hood = GetVehicleComponentInSlot(carid, CARMODTYPE_HOOD);
  1056. lamps = GetVehicleComponentInSlot(carid, CARMODTYPE_LAMPS);
  1057. stereo = GetVehicleComponentInSlot(carid, CARMODTYPE_STEREO);
  1058. ventright = GetVehicleComponentInSlot(carid, CARMODTYPE_VENT_RIGHT);
  1059. ventleft = GetVehicleComponentInSlot(carid, CARMODTYPE_VENT_LEFT);
  1060. if(spoilers >= 1000) PlayerVehicleInfo[playerid][playervehicleid][pvMods][0] = spoilers;
  1061. if(hood >= 1000) PlayerVehicleInfo[playerid][playervehicleid][pvMods][1] = hood;
  1062. if(roof >= 1000) PlayerVehicleInfo[playerid][playervehicleid][pvMods][2] = roof;
  1063. if(sideskirt1 >= 1000) PlayerVehicleInfo[playerid][playervehicleid][pvMods][3] = sideskirt1;
  1064. if(lamps >= 1000) PlayerVehicleInfo[playerid][playervehicleid][pvMods][4] = lamps;
  1065. if(nitro >= 1000) PlayerVehicleInfo[playerid][playervehicleid][pvMods][5] = nitro;
  1066. if(exhaust >= 1000) PlayerVehicleInfo[playerid][playervehicleid][pvMods][6] = exhaust;
  1067. if(wheels >= 1000) PlayerVehicleInfo[playerid][playervehicleid][pvMods][7] = wheels;
  1068. if(stereo >= 1000) PlayerVehicleInfo[playerid][playervehicleid][pvMods][8] = stereo;
  1069. if(hydraulics >= 1000) PlayerVehicleInfo[playerid][playervehicleid][pvMods][9] = hydraulics;
  1070. if(frontbumper >= 1000) PlayerVehicleInfo[playerid][playervehicleid][pvMods][10] = frontbumper;
  1071. if(rearbumper >= 1000) PlayerVehicleInfo[playerid][playervehicleid][pvMods][11] = rearbumper;
  1072. if(ventright >= 1000) PlayerVehicleInfo[playerid][playervehicleid][pvMods][12] = ventright;
  1073. if(ventleft >= 1000) PlayerVehicleInfo[playerid][playervehicleid][pvMods][13] = ventleft;
  1074. if(sideskirt2 >= 1000) PlayerVehicleInfo[playerid][playervehicleid][pvMods][14] = sideskirt2;
  1075. }
  1076. stock LoadPlayerVehicleMods(playerid, playervehicleid)
  1077. {
  1078. printf(" Loading player #%d vehicle #%d mods.", playerid, playervehicleid);
  1079. new paintjob = PlayerVehicleInfo[playerid][playervehicleid][pvPaintJob];
  1080. new color1 = PlayerVehicleInfo[playerid][playervehicleid][pvColor1];
  1081. new color2 = PlayerVehicleInfo[playerid][playervehicleid][pvColor2];
  1082. if(PlayerVehicleInfo[playerid][playervehicleid][pvPaintJob] != -1)
  1083. {
  1084. ChangeVehiclePaintjob(PlayerVehicleInfo[playerid][playervehicleid][pvId], paintjob);
  1085. ChangeVehicleColor(PlayerVehicleInfo[playerid][playervehicleid][pvId], color1, color2);
  1086. }
  1087. for(new m = 0; m < MAX_MODS; m++)
  1088. {
  1089. if (PlayerVehicleInfo[playerid][playervehicleid][pvMods][m] >= 1000)
  1090. {
  1091. AddVehicleComponent(PlayerVehicleInfo[playerid][playervehicleid][pvId], PlayerVehicleInfo[playerid][playervehicleid][pvMods][m]);
  1092. }
  1093. }
  1094. }
  1095. stock LoadAllPlayerVehicleMods(playerid)
  1096. {
  1097. print(" Loading all vehicles mods.");
  1098. for(new v = 0; v < MAX_PLAYERVEHICLES; v++)
  1099. {
  1100. if(PlayerVehicleInfo[playerid][v][pvModelId] != 0)
  1101. {
  1102. new paintjob = PlayerVehicleInfo[playerid][v][pvPaintJob];
  1103. new color1 = PlayerVehicleInfo[playerid][v][pvColor1];
  1104. new color2 = PlayerVehicleInfo[playerid][v][pvColor2];
  1105. if(PlayerVehicleInfo[playerid][v][pvPaintJob] != -1)
  1106. {
  1107. ChangeVehiclePaintjob(PlayerVehicleInfo[playerid][v][pvId], paintjob);
  1108. }
  1109. ChangeVehicleColor(PlayerVehicleInfo[playerid][v][pvId], color1, color2);
  1110. for(new m = 0; m < MAX_MODS; m++)
  1111. {
  1112. if (PlayerVehicleInfo[playerid][v][pvMods][m] >= 1000)
  1113. {
  1114. AddVehicleComponent(PlayerVehicleInfo[playerid][v][pvId], PlayerVehicleInfo[playerid][v][pvMods][m]);
  1115. }
  1116. }
  1117. }
  1118. }
  1119. }
  1120. stock GetPlayerFreeVehicleId(playerid)
  1121. {
  1122. new
  1123. i = 0;
  1124. while (i < MAX_PLAYERVEHICLES && PlayerVehicleInfo[playerid][i][pvId])
  1125. {
  1126. i++;
  1127. }
  1128. if (i == MAX_PLAYERVEHICLES) return -1;
  1129. return i;
  1130. }
  1131. stock GetPlayerVehicle(playerid, vehicleid)
  1132. {
  1133. for(new v = 0; v < MAX_PLAYERVEHICLES; v++)
  1134. {
  1135. if(PlayerVehicleInfo[playerid][v][pvId] == vehicleid)
  1136. {
  1137. return v;
  1138. }
  1139. }
  1140. return -1;
  1141. }
  1142. stock strtok(const string[], &index)
  1143. {
  1144. new length = strlen(string);
  1145. while ((index < length) && (string[index] <= ' '))
  1146. {
  1147. index++;
  1148. }
  1149. new offset = index;
  1150. new result[20];
  1151. while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  1152. {
  1153. result[index - offset] = string[index];
  1154. index++;
  1155. }
  1156. result[index - offset] = EOS;
  1157. return result;
  1158. }
  1159. stock GetVehicleName(vehicleid)
  1160. {
  1161. new vn[50];
  1162. format(vn,sizeof(vn),"%s",VehicleName[GetVehicleModel(vehicleid)-400]);
  1163. return vn;
  1164. }
  1165. IsKeyJustDown(key, newkeys, oldkeys)
  1166. {
  1167. if((newkeys & key) && !(oldkeys & key)) return 1;
  1168. return 0;
  1169. }
  1170. IsNumeric(const string[])
  1171. {
  1172. for (new i = 0, j = strlen(string); i < j; i++)
  1173. {
  1174. if (string[i] > '9' || string[i] < '0') return 0;
  1175. }
  1176. return 1;
  1177. }
  1178. ReturnUser(text[], playerid = INVALID_PLAYER_ID)
  1179. {
  1180. new pos = 0;
  1181. while (text[pos] < 0x21) // Strip out leading spaces
  1182. {
  1183. if (text[pos] == 0) return INVALID_PLAYER_ID; // No passed text
  1184. pos++;
  1185. }
  1186. new userid = INVALID_PLAYER_ID;
  1187. if (IsNumeric(text[pos])) // Check whole passed string
  1188. {
  1189. // If they have a numeric name you have a problem (although names are checked on id failure)
  1190. userid = strval(text[pos]);
  1191. if (userid >=0 && userid < MAX_PLAYERS)
  1192. {
  1193. if(!IsPlayerConnected(userid))
  1194. {
  1195. /*if (playerid != INVALID_PLAYER_ID)
  1196. {
  1197. SendClientMessage(playerid, 0xFF0000AA, "User not connected");
  1198. }*/
  1199. userid = INVALID_PLAYER_ID;
  1200. }
  1201. else
  1202. {
  1203. return userid; // A player was found
  1204. }
  1205. }
  1206. /*else
  1207. {
  1208. if (playerid != INVALID_PLAYER_ID)
  1209. {
  1210. SendClientMessage(playerid, 0xFF0000AA, "Invalid user ID");
  1211. }
  1212. userid = INVALID_PLAYER_ID;
  1213. }
  1214. return userid;*/
  1215. // Removed for fallthrough code
  1216. }
  1217. // They entered [part of] a name or the id search failed (check names just incase)
  1218. new len = strlen(text[pos]);
  1219. new count = 0;
  1220. new name[MAX_PLAYER_NAME];
  1221. for (new i = 0; i < MAX_PLAYERS; i++)
  1222. {
  1223. if (IsPlayerConnected(i))
  1224. {
  1225. GetPlayerName(i, name, sizeof (name));
  1226. if (strcmp(name, text[pos], true, len) == 0) // Check segment of name
  1227. {
  1228. if (len == strlen(name)) // Exact match
  1229. {
  1230. return i; // Return the exact player on an exact match
  1231. // Otherwise if there are two players:
  1232. // Me and MeYou any time you entered Me it would find both
  1233. // And never be able to return just Me's id
  1234. }
  1235. else // Partial match
  1236. {
  1237. count++;
  1238. userid = i;
  1239. }
  1240. }
  1241. }
  1242. }
  1243. if (count != 1)
  1244. {
  1245. if (playerid != INVALID_PLAYER_ID)
  1246. {
  1247. if (count)
  1248. {
  1249. SendClientMessage(playerid, 0xFF0000AA, "Multiple users found, please narrow earch");
  1250. }
  1251. else
  1252. {
  1253. SendClientMessage(playerid, 0xFF0000AA, "No matching user found");
  1254. }
  1255. }
  1256. userid = INVALID_PLAYER_ID;
  1257. }
  1258. return userid; // INVALID_USER_ID for bad return
  1259. }
  1260. public OnEnterExitModShop(playerid,enterexit,interiorid)
  1261. {
  1262. if(enterexit == 1)
  1263. {
  1264. SendClientMessage(playerid, COLOR_GRAD1, " You have entered a modding shop.");
  1265. }
  1266. else
  1267. {
  1268. // Saving cars.
  1269. if(GetPlayerVehicle(playerid, GetPlayerVehicleID(playerid)) > -1)
  1270. {
  1271. UpdatePlayerVehicleMods(playerid, GetPlayerVehicle(playerid, GetPlayerVehicleID(playerid)));
  1272. return 1;
  1273. }
  1274. }
  1275. return 0;
  1276. }
  1277. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  1278. {
  1279. if(GetPlayerVehicle(playerid, vehicleid) > -1)
  1280. {
  1281. PlayerVehicleInfo[playerid][GetPlayerVehicle(playerid, vehicleid)][pvPaintJob] = paintjobid;
  1282. return 1;
  1283. }
  1284. return 1;
  1285. }
  1286. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  1287. {
  1288. if(GetPlayerVehicle(playerid, vehicleid) > -1)
  1289. {
  1290. PlayerVehicleInfo[playerid][GetPlayerVehicle(playerid, vehicleid)][pvColor1] = color1;
  1291. PlayerVehicleInfo[playerid][GetPlayerVehicle(playerid, vehicleid)][pvColor2] = color2;
  1292. return 1;
  1293. }
  1294. return 1;
  1295. }
  1296. public OnVehicleStreamIn(vehicleid, forplayerid)
  1297. {
  1298. new v;
  1299. for(new i = 0; i < MAX_PLAYERS; i++)
  1300. {
  1301. v = GetPlayerVehicle(i, vehicleid);
  1302. if(PlayerVehicleInfo[i][v][pvId] == vehicleid && forplayerid != i)
  1303. {
  1304. if(PlayerVehicleInfo[i][v][pvLock] == 3 && PlayerVehicleInfo[i][v][pvLocked])
  1305. {
  1306. SetVehicleParamsForPlayer(vehicleid,forplayerid,0,1);
  1307. }
  1308. else if(PlayerVehicleInfo[i][v][pvLock] == 3 && !PlayerVehicleInfo[i][v][pvLocked])
  1309. {
  1310. SetVehicleParamsForPlayer(vehicleid,forplayerid,0,0);
  1311. }
  1312. }
  1313. }
  1314. return 1;
  1315. }
  1316. public OnVehicleSpawn(vehicleid)
  1317. {
  1318. new v;
  1319. for(new i = 0; i < MAX_PLAYERS; i++)
  1320. {
  1321. if(IsPlayerConnected(i))
  1322. {
  1323. v = GetPlayerVehicle(i, vehicleid);
  1324. if(v != -1)
  1325. {
  1326. SendClientMessage(i, COLOR_GRAD1, " Your vehicle has been spawned.");
  1327. new paintjob = PlayerVehicleInfo[i][v][pvPaintJob];
  1328. new color1 = PlayerVehicleInfo[i][v][pvColor1];
  1329. new color2 = PlayerVehicleInfo[i][v][pvColor2];
  1330. ChangeVehiclePaintjob(vehicleid, paintjob);
  1331. ChangeVehicleColor(vehicleid, color1, color2);
  1332. for(new m = 0; m < MAX_MODS; m++)
  1333. {
  1334. if (PlayerVehicleInfo[i][v][pvMods][m] >= 1000)
  1335. {
  1336. AddVehicleComponent(vehicleid, PlayerVehicleInfo[i][v][pvMods][m]);
  1337. }
  1338. }
  1339. }
  1340. }
  1341. }
  1342. }
  1343. public MeepMeep(playerid, vehicleid)
  1344. {
  1345. if(IsPlayerInVehicle(playerid, vehicleid) && !meepmeep[vehicleid])
  1346. {
  1347. new Float:x, Float: y, Float: z;
  1348. GetVehiclePos(vehicleid, x, y, z);
  1349. for(new d = 0; d < MAX_PLAYERS; d++)
  1350. {
  1351. if(IsPlayerInRangeOfPoint(d, 30.0, x, y, z))
  1352. {
  1353. PlayerPlaySound(d, 1147, x, y, z);
  1354. }
  1355. }
  1356. SetTimerEx("MeepMeep", 1000, 0, "dd", playerid, vehicleid);
  1357. }
  1358. else if(!IsPlayerInVehicle(playerid, vehicleid) && !meepmeep[vehicleid])
  1359. {
  1360. new Float:x, Float: y, Float: z;
  1361. GetVehiclePos(vehicleid, x, y, z);
  1362. for(new d = 0; d < MAX_PLAYERS; d++)
  1363. {
  1364. if(IsPlayerInRangeOfPoint(d, 30.0, x, y, z))
  1365. {
  1366. PlayerPlaySound(d, 1147, x, y, z);
  1367. }
  1368. }
  1369. meepmeep[vehicleid] = 10;
  1370. SetTimerEx("MeepMeep", 1000, 0, "dd", playerid, vehicleid);
  1371. }
  1372. else if(meepmeep[vehicleid] > 1)
  1373. {
  1374. new Float:x, Float: y, Float: z;
  1375. GetVehiclePos(vehicleid, x, y, z);
  1376. for(new d = 0; d < MAX_PLAYERS; d++)
  1377. {
  1378. if(IsPlayerInRangeOfPoint(d, 30.0, x, y, z))
  1379. {
  1380. PlayerPlaySound(d, 1147, x, y, z);
  1381. }
  1382. }
  1383. meepmeep[vehicleid]--;
  1384. SetTimerEx("MeepMeep", 1000, 0, "dd", playerid, vehicleid);
  1385. }
  1386. else if(meepmeep[vehicleid] == 1)
  1387. {
  1388. new Float:x, Float: y, Float: z;
  1389. GetVehiclePos(vehicleid, x, y, z);
  1390. for(new d = 0; d < MAX_PLAYERS; d++)
  1391. {
  1392. if(IsPlayerInRangeOfPoint(d, 30.0, x, y, z))
  1393. {
  1394. PlayerPlaySound(d, 1147, x, y, z);
  1395. }
  1396. }
  1397. meepmeep[vehicleid] = 0;
  1398. }
  1399. return 1;
  1400. }
  1401. public PutPlayerInVeh(playerid, vehicleid)
  1402. {
  1403. PutPlayerInVehicle(playerid, vehicleid, 0);
  1404. }
  1405. public ReleasePlayer(playerid)
  1406. {
  1407. TogglePlayerControllable(playerid,1);
  1408. }
  1409. public LockPlayerVehicle(ownerid, carid, type)
  1410. {
  1411. new v = GetPlayerVehicle(ownerid, carid);
  1412. if(PlayerVehicleInfo[ownerid][v][pvId] == carid && type == 3)
  1413. {
  1414. for(new i = 0; i < MAX_PLAYERS; i++)
  1415. {
  1416. if(i != ownerid)
  1417. {
  1418. SetVehicleParamsForPlayer(carid,i,0,1);
  1419. }
  1420. }
  1421. }
  1422. }
  1423. public UnLockPlayerVehicle(ownerid, carid, type)
  1424. {
  1425. new v = GetPlayerVehicle(ownerid, carid);
  1426. if(PlayerVehicleInfo[ownerid][v][pvId] == carid && type == 3)
  1427. {
  1428. for(new i = 0; i < MAX_PLAYERS; i++)
  1429. {
  1430. if(i != ownerid)
  1431. {
  1432. SetVehicleParamsForPlayer(carid,i,0,0);
  1433. }
  1434. }
  1435. }
  1436. }
  1437. public OnPlayerCommandText(playerid, cmdtext[])
  1438. {
  1439. new string[128], cmd[128], tmp[128], idx;
  1440. cmd = strtok(cmdtext, idx);
  1441. new idcar = GetPlayerVehicleID(playerid);
  1442. new giveplayerid;
  1443. if(strcmp(cmd, "/park", true) == 0)
  1444. {
  1445. for(new d = 0 ; d < MAX_PLAYERVEHICLES; d++)
  1446. {
  1447. if(IsPlayerInVehicle(playerid, PlayerVehicleInfo[playerid][d][pvId]))
  1448. {
  1449. new Float:x, Float:y, Float:z, Float:angle, playername[MAX_PLAYER_NAME], Float:health;
  1450. GetVehicleHealth(PlayerVehicleInfo[playerid][d][pvId], health);
  1451. if(health < 500) return SendClientMessage(playerid, COLOR_GREY, " Your vehicle is too damaged to park it.");
  1452. GetVehiclePos(PlayerVehicleInfo[playerid][d][pvId], x, y, z);
  1453. GetVehicleZAngle(PlayerVehicleInfo[playerid][d][pvId], angle);
  1454. GetPlayerName(playerid, playername, sizeof(playername));
  1455. UpdatePlayerVehicleParkPosition(playerid, d, x, y, z, angle, health);
  1456. format(string, sizeof(string), "* %s has parked his vehicle.", playername);
  1457. ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
  1458. return 1;
  1459. }
  1460. }
  1461. SendClientMessage(playerid, COLOR_GREY, " You need to be inside a vehicle that you own.");
  1462. return 1;
  1463. }
  1464. if(strcmp(cmd, "/pvlock", true) == 0)
  1465. {
  1466. if(IsPlayerConnected(playerid))
  1467. {
  1468. new Float: x, Float: y, Float: z, playername[MAX_PLAYER_NAME];
  1469. GetPlayerName(playerid, playername, sizeof(playername));
  1470. for(new d = 0 ; d < MAX_PLAYERVEHICLES; d++)
  1471. {
  1472. if(PlayerVehicleInfo[playerid][d][pvId] != 0) GetVehiclePos(PlayerVehicleInfo[playerid][d][pvId], x, y, z);
  1473. if(IsPlayerInRangeOfPoint(playerid, 3.0, x, y, z))
  1474. {
  1475. if(PlayerVehicleInfo[playerid][d][pvLock] > 0 && PlayerVehicleInfo[playerid][d][pvLocked] == 0)
  1476. {
  1477. GameTextForPlayer(playerid,"~r~Vehicle Locked!",5000,6);
  1478. PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
  1479. PlayerVehicleInfo[playerid][d][pvLocked] = 1;
  1480. LockPlayerVehicle(playerid, PlayerVehicleInfo[playerid][d][pvId], PlayerVehicleInfo[playerid][d][pvLock]);
  1481. format(string, sizeof(string), "* %s has locked his vehicle.", playername);
  1482. ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
  1483. return 1;
  1484. }
  1485. else if(PlayerVehicleInfo[playerid][d][pvLock] > 0 && PlayerVehicleInfo[playerid][d][pvLocked] == 1)
  1486. {
  1487. GameTextForPlayer(playerid,"~g~Vehicle Unlocked!",5000,6);
  1488. PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
  1489. PlayerVehicleInfo[playerid][d][pvLocked] = 0;
  1490. UnLockPlayerVehicle(playerid, PlayerVehicleInfo[playerid][d][pvId], PlayerVehicleInfo[playerid][d][pvLock]);
  1491. format(string, sizeof(string), "* %s has unlocked his vehicle.", playername);
  1492. ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
  1493. return 1;
  1494. }
  1495. SendClientMessage(playerid, COLOR_GREY, " You don't have a lock system installed on this vehicle.");
  1496. return 1;
  1497. }
  1498. }
  1499. SendClientMessage(playerid, COLOR_GREY, " You are not near any vehicle that you own.");
  1500. }
  1501. return 1;
  1502. }
  1503. if(strcmp(cmd, "/editcardealership", true) == 0)
  1504. {
  1505. for(new d = 0 ; d < MAX_CARDEALERSHIPS; d++)
  1506. {
  1507. if(IsPlayerInRangeOfPoint(playerid, CarDealershipInfo[d][cdRadius], CarDealershipInfo[d][cdEntranceX], CarDealershipInfo[d][cdEntranceY], CarDealershipInfo[d][cdEntranceZ]))
  1508. {
  1509. if(IsPlayerOwnerOfCDEx(playerid, d))
  1510. {
  1511. SetPVarInt(playerid, "editingcd", d);
  1512. SetPVarInt(playerid, "editingcdveh", -1);
  1513. SetPVarInt(playerid, "editingcdvehpos", 0);
  1514. SetPVarInt(playerid, "editingcdvehnew", 0);
  1515. new listitems[] = "1 New Vehicle\n2 My Vehicles\n3 Upgrade\n4 Till";
  1516. ShowPlayerDialog(playerid,DIALOG_CDEDIT,DIALOG_STYLE_LIST,"Choose an item to continue", listitems,"Select","Cancel");
  1517. return 1;
  1518. }
  1519. else
  1520. {
  1521. SendClientMessage(playerid, COLOR_GREY, "You do not own that Car Dealership.");
  1522. return 1;
  1523. }
  1524. }
  1525. }
  1526. SendClientMessage(playerid, COLOR_GREY, "ERROR: You must be standing inside the radius of the Car Dealership.");
  1527. }
  1528. if(strcmp(cmd, "/editcar", true) == 0)
  1529. {
  1530. new vehicleid = GetPlayerVehicleID(playerid);
  1531. new v, d;
  1532. v = GetCarDealershipVehicleId(vehicleid);
  1533. d = GetCarDealershipId(vehicleid);
  1534. if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_GREY, "ERROR: You are not in any car.");
  1535. if(v != -1 && d != -1)
  1536. {
  1537. if(IsPlayerOwnerOfCDEx(playerid, d))
  1538. {
  1539. SetPVarInt(playerid, "editingcd", d);
  1540. SetPVarInt(playerid, "editingcdveh", v);
  1541. SetPVarInt(playerid, "editingcdvehpos", 0);
  1542. SetPVarInt(playerid, "editingcdvehnew", 0);
  1543. new listitems[] = "1 Edit Model\n2 Edit Cost\n3 Edit Park\n4 Delete Vehicle";
  1544. ShowPlayerDialog(playerid,DIALOG_CDEDITONE,DIALOG_STYLE_LIST,"Car Dealership:", listitems,"Select","Cancel");
  1545. return 1;
  1546. }
  1547. else
  1548. {
  1549. SendClientMessage(playerid, COLOR_GREY, "ERROR: You do not own that Car Dealership.");
  1550. }
  1551. }
  1552. else
  1553. {
  1554. SendClientMessage(playerid, COLOR_GREY, "ERROR: Car is not part of a Car Dealership.");
  1555. }
  1556. }
  1557. if(strcmp(cmd, "/buydealership", true) == 0)
  1558. {
  1559. for(new d = 0 ; d < MAX_CARDEALERSHIPS; d++)
  1560. {
  1561. if(IsPlayerInRangeOfPoint(playerid, 3.0, CarDealershipInfo[d][cdEntranceX], CarDealershipInfo[d][cdEntranceY], CarDealershipInfo[d][cdEntranceZ]))
  1562. {
  1563. if(!CarDealershipInfo[d][cdOwned])
  1564. {
  1565. if(GetPVarInt(playerid, "Cash") < CarDealershipInfo[d][cdPrice])
  1566. {
  1567. SendClientMessage(playerid, COLOR_GREY, " You do not have enough money to buy this Car Dealership.");
  1568. }
  1569. SetPVarInt(playerid, "Cash", GetPVarInt(playerid, "Cash")-CarDealershipInfo[d][cdPrice]);
  1570. SetPlayerOwnerOfCD(playerid, d);
  1571. PlayerPlayMusic(playerid);
  1572. SendClientMessage(playerid, COLOR_WHITE, "Congratulations, On Your New Purchase.");
  1573. SendClientMessage(playerid, COLOR_WHITE, "Type /help to review the new car dealership help section.");
  1574. SendClientMessage(playerid, COLOR_GRAD1, " Please set the position you want your brought cars to spawn.");
  1575. SendClientMessage(playerid, COLOR_GRAD2, " Stand where you want to have your brought vehicles spawn.");
  1576. SendClientMessage(playerid, COLOR_GRAD2, " Once ready press the fire button.");
  1577. SendClientMessage(playerid, COLOR_WHITE, " Note: If you don't set it your costumers wont be able to buy any cars.");
  1578. SetPVarInt(playerid, "editingcdvehpos", 2);
  1579. SetPVarInt(playerid, "editingcd", d);
  1580. return 1;
  1581. }
  1582. else
  1583. {
  1584. SendClientMessage(playerid, COLOR_GREY, "That Car Dealership is already owned and it's not for sale.");
  1585. }
  1586. }
  1587. }
  1588. }
  1589. if(strcmp(cmd, "/selldealership", true) == 0)
  1590. {
  1591. for(new d = 0 ; d < MAX_CARDEALERSHIPS; d++)
  1592. {
  1593. if(IsPlayerInRangeOfPoint(playerid, 3.0, CarDealershipInfo[d][cdEntranceX], CarDealershipInfo[d][cdEntranceY], CarDealershipInfo[d][cdEntranceZ]))
  1594. {
  1595. if(IsPlayerOwnerOfCDEx(playerid, d))
  1596. {
  1597. SetPVarInt(playerid, "editingcd", d);
  1598. format(string,128,"Are you sure you want to sell this Car Dealership for $%d?\n.", CarDealershipInfo[d][cdPrice] / 2);
  1599. ShowPlayerDialog(playerid,DIALOG_CDSELL,DIALOG_STYLE_MSGBOX,"Warning:",string,"Sell","Cancel");
  1600. return 1;
  1601. }
  1602. else
  1603. {
  1604. SendClientMessage(playerid, COLOR_GREY, "You are not the owner of this car dealership.");
  1605. return 1;
  1606. }
  1607. }
  1608. }
  1609. SendClientMessage(playerid, COLOR_GREY, "You have to be near a car dealership.");
  1610. }
  1611. if(strcmp(cmd, "/createcdveh", true) == 0)
  1612. {
  1613. if (!IsPlayerAdmin(playerid))
  1614. {
  1615. SendClientMessage(playerid, COLOR_GREY, " You are not allowed to use this command.");
  1616. return 1;
  1617. }
  1618. tmp = strtok(cmdtext,idx);
  1619. new dealershipid;
  1620. if (!strlen(tmp))
  1621. {
  1622. SendClientMessage(playerid, COLOR_GREY, "USAGE: /createcdveh [price] [dealership] [modelid]");
  1623. return 1;
  1624. }
  1625. new price = strval(tmp);
  1626. tmp = strtok(cmdtext, idx);
  1627. if (!strlen(tmp))
  1628. {
  1629. SendClientMessage(playerid, COLOR_GREY, "USAGE: /createcdveh [price] [dealership] [modelid]");
  1630. return 1;
  1631. }
  1632. dealershipid = strval(tmp);
  1633. tmp = strtok(cmdtext, idx);
  1634. if (!strlen(tmp))
  1635. {
  1636. SendClientMessage(playerid, COLOR_GREY, "USAGE: /createcdveh [price] [dealership] [modelid]");
  1637. return 1;
  1638. }
  1639. new modelid = strval(tmp);
  1640. new Float:X,Float:Y,Float:Z,Float:A;
  1641. GetPlayerPos(playerid,X,Y,Z);
  1642. GetPlayerFacingAngle(playerid, A);
  1643. new cdvehicleid = CreateCarDealershipVehicle(dealershipid, modelid, X, Y, Z, A, price);
  1644. if(cdvehicleid == -1)
  1645. {
  1646. SendClientMessage(playerid, COLOR_GREY, "ERROR: cdVehicles limit reached.");
  1647. }
  1648. else
  1649. {
  1650. format(string, sizeof(string), " Car Dealership Vehicle created with ID %d.", cdvehicleid);
  1651. SendClientMessage(playerid, COLOR_GRAD1, string);
  1652. }
  1653. }
  1654. if(strcmp(cmd, "/destroycdveh", true) == 0)
  1655. {
  1656. if (!IsPlayerAdmin(playerid))
  1657. {
  1658. SendClientMessage(playerid, COLOR_GREY, " You are not allowed to use this command.");
  1659. return 1;
  1660. }
  1661. /*for(new d = 1 ; d < MAX_CARDEALERSHIPS; d++)
  1662. {
  1663. if(IsPlayerInRangeOfPoint(playerid, 3.0, CarDealershipInfo[d][cdEntranceX], CarDealershipInfo[d][cdEntranceY], CarDealershipInfo[d][cdEntranceZ]))
  1664. {
  1665. DestroyCarDealership(d);
  1666. format(string, sizeof(string), " Car Dealership destroyed with ID %d.", d);
  1667. SendClientMessage(playerid, COLOR_GRAD1, string);
  1668. return 1;
  1669. }
  1670. }*/
  1671. new vehid;
  1672. tmp = strtok(cmdtext, idx);
  1673. if (!strlen(tmp))
  1674. {
  1675. SendClientMessage(playerid, COLOR_GREY, "USAGE: /destroycdveh [vehicleid]");
  1676. return 1;
  1677. }
  1678. vehid = strval(tmp);
  1679. DestroyCarDealershipVehicle(GetCarDealershipId(vehid), GetCarDealershipVehicleId(vehid));
  1680. SavecDealership(GetCarDealershipId(vehid));
  1681. format(string, sizeof(string), " Car Dealership Vehicle destroyed with ID %d.", vehid);
  1682. SendClientMessage(playerid, COLOR_GRAD1, string);
  1683. }
  1684. if(strcmp(cmd, "/createdealership", true) == 0)
  1685. {
  1686. if (!IsPlayerAdmin(playerid))
  1687. {
  1688. SendClientMessage(playerid, COLOR_GREY, " You are not allowed to use this command.");
  1689. return 1;
  1690. }
  1691. tmp = strtok(cmdtext,idx);
  1692. new radius;
  1693. if (!strlen(tmp))
  1694. {
  1695. SendClientMessage(playerid, COLOR_GREY, "USAGE: /createdealership [price] [radius] [message]");
  1696. return 1;
  1697. }
  1698. new price = strval(tmp);
  1699. tmp = strtok(cmdtext, idx);
  1700. if (!strlen(tmp))
  1701. {
  1702. SendClientMessage(playerid, COLOR_GREY, "USAGE: /createdealership [price] [radius] [message]");
  1703. return 1;
  1704. }
  1705. radius = strval(tmp);
  1706. new length = strlen(cmdtext);
  1707. while ((idx < length) && (cmdtext[idx] <= ' '))
  1708. {
  1709. idx++;
  1710. }
  1711. new offset = idx;
  1712. new result[64];
  1713. while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
  1714. {
  1715. result[idx - offset] = cmdtext[idx];
  1716. idx++;
  1717. }
  1718. result[idx - offset] = EOS;
  1719. if(!strlen(result))
  1720. {
  1721. SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /createdealership [price] [radius] [message]");
  1722. return 1;
  1723. }
  1724. new Float:X,Float:Y,Float:Z;
  1725. GetPlayerPos(playerid,X,Y,Z);
  1726. new dealershipid = CreateCarDealership(X, Y, Z, radius, price, result);
  1727. if(dealershipid == -1)
  1728. {
  1729. SendClientMessage(playerid, COLOR_GREY, "ERROR: Car Dealerships limit reached.");
  1730. }
  1731. else
  1732. {
  1733. format(string, sizeof(string), " Car Dealership created with ID %d.", dealershipid);
  1734. SendClientMessage(playerid, COLOR_GRAD1, string);
  1735. }
  1736. }
  1737. if(strcmp(cmd, "/destroydealership", true) == 0)
  1738. {
  1739. if (!IsPlayerAdmin(playerid))
  1740. {
  1741. SendClientMessage(playerid, COLOR_GREY, " You are not allowed to use this command.");
  1742. return 1;
  1743. }
  1744. for(new d = 0 ; d < MAX_CARDEALERSHIPS; d++)
  1745. {
  1746. if(IsPlayerInRangeOfPoint(playerid, 3.0, CarDealershipInfo[d][cdEntranceX], CarDealershipInfo[d][cdEntranceY], CarDealershipInfo[d][cdEntranceZ]))
  1747. {
  1748. DestroyCarDealership(d);
  1749. format(string, sizeof(string), " Car Dealership destroyed with ID %d.", d);
  1750. SendClientMessage(playerid, COLOR_GRAD1, string);
  1751. return 1;
  1752. }
  1753. }
  1754. new dealershipid;
  1755. tmp = strtok(cmdtext, idx);
  1756. if (!strlen(tmp))
  1757. {
  1758. SendClientMessage(playerid, COLOR_GREY, "USAGE: /destroydealership [dealershipid]");
  1759. return 1;
  1760. }
  1761. dealershipid = strval(tmp);
  1762. if(dealershipid > MAX_CARDEALERSHIPS) return 1;
  1763. if(dealershipid < 0) return 1;
  1764. DestroyCarDealership(dealershipid);
  1765. format(string, sizeof(string), " Car Dealership destroyed with ID %d.", dealershipid);
  1766. SendClientMessage(playerid, COLOR_GRAD1, string);
  1767. }
  1768. if(strcmp(cmd, "/vehid", true) == 0)
  1769. {
  1770. if(IsPlayerInAnyVehicle(playerid))
  1771. {
  1772. format(string, sizeof(string), "* Vehicle Name: %s | Vehicle Model:%d | Vehicle ID: %d.",GetVehicleName(idcar), GetVehicleModel(idcar), idcar);
  1773. SendClientMessage(playerid, COLOR_GREY, string);
  1774. }
  1775. return 1;
  1776. }
  1777. if(strcmp(cmd, "/createpvehicle", true) == 0)
  1778. {
  1779. if (!IsPlayerAdmin(playerid))
  1780. {
  1781. SendClientMessage(playerid, COLOR_GREY, " You are not allowed to use this command.");
  1782. return 1;
  1783. }
  1784. tmp = strtok(cmdtext,idx);
  1785. new modelid;
  1786. if (!strlen(tmp))
  1787. {
  1788. SendClientMessage(playerid, COLOR_GREY, "USAGE: /createpvehicle [playerid/partOfName] [modelid] [color 1] [color 2]");
  1789. return 1;
  1790. }
  1791. giveplayerid = ReturnUser(tmp);
  1792. tmp = strtok(cmdtext, idx);
  1793. if (!strlen(tmp))
  1794. {
  1795. SendClientMessage(playerid, COLOR_GREY, "USAGE: /createpvehicle [playerid/partOfName] [modelid] [color 1] [color 2]");
  1796. return 1;
  1797. }
  1798. modelid = strval(tmp);
  1799. tmp = strtok(cmdtext, idx);
  1800. if(!strlen(tmp))
  1801. {
  1802. SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /createpvehicle [playerid/partOfName] [modelid] [color 1] [color 2]");
  1803. return 1;
  1804. }
  1805. new color1;
  1806. color1 = strval(tmp);
  1807. if(color1 < 0 || color1 > 126) { SendClientMessage(playerid, COLOR_GREY, " Color Number can't be below 0 or above 126 !"); return 1; }
  1808. tmp = strtok(cmdtext, idx);
  1809. if(!strlen(tmp))
  1810. {
  1811. SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /createpvehicle [playerid/partOfName] [modelid] [color 1] [color 2]");
  1812. return 1;
  1813. }
  1814. new color2;
  1815. color2 = strval(tmp);
  1816. if(color2 < 0 || color2 > 126) { SendClientMessage(playerid, COLOR_GREY, " Color Number can't be below 0 or above 126 !"); return 1; }
  1817. if(modelid < 400 || modelid > 611) { SendClientMessage(playerid, COLOR_GREY, " Vehicle Number can't be below 400 or above 611 !"); return 1; }
  1818. new playervehicleid = GetPlayerFreeVehicleId(giveplayerid);
  1819. if(playervehicleid == -1) return SendClientMessage(playerid, COLOR_GREY, "ERROR: That player can't have more cars.");
  1820. new Float:X,Float:Y,Float:Z;
  1821. GetPlayerPos(giveplayerid,X,Y,Z);
  1822. new Float:Angle;
  1823. GetPlayerFacingAngle(giveplayerid,Angle);
  1824. new car = CreatePlayerVehicle(giveplayerid, playervehicleid, modelid, X, Y, Z, Angle, color1, color2);
  1825. if(car == INVALID_PLAYER_VEHICLE_ID)
  1826. {
  1827. SendClientMessage(playerid, COLOR_GREY, "ERROR: Something went wrong and the car didn't got created.");
  1828. }
  1829. else
  1830. {
  1831. format(string, sizeof(string), " Vehicle successfully created with ID %d.", car);
  1832. SendClientMessage(playerid, COLOR_GRAD1, string);
  1833. }
  1834. }
  1835. if(strcmp(cmd, "/destroypvehicle", true) == 0)
  1836. {
  1837. if (!IsPlayerAdmin(playerid))
  1838. {
  1839. SendClientMessage(playerid, COLOR_GREY, " You are not allowed to use this command.");
  1840. return 1;
  1841. }
  1842. tmp = strtok(cmdtext,idx);
  1843. new vehicleid;
  1844. if (!strlen(tmp))
  1845. {
  1846. SendClientMessage(playerid, COLOR_GREY, "USAGE: /destroypvehicle [playerid/partOfName] [vehicleid]");
  1847. return 1;
  1848. }
  1849. giveplayerid = ReturnUser(tmp);
  1850. tmp = strtok(cmdtext, idx);
  1851. if (!strlen(tmp))
  1852. {
  1853. SendClientMessage(playerid, COLOR_GREY, "USAGE: /destroypvehicle [playerid/partOfName] [vehicleid]");
  1854. return 1;
  1855. }
  1856. vehicleid = strval(tmp);
  1857. new playervehicleid = GetPlayerVehicle(giveplayerid, vehicleid);
  1858. if(playervehicleid == -1) return SendClientMessage(playerid, COLOR_GREY, "ERROR: That player doesn't own that vehicle.");
  1859. DestroyPlayerVehicle(giveplayerid, playervehicleid);
  1860. }
  1861. if(strcmp(cmd, "/buylock", true) == 0) /*Check*/
  1862. {
  1863. if(IsPlayerConnected(playerid))
  1864. {
  1865. if(!IsAt247(playerid))//centerpoint 24-7
  1866. {
  1867. SendClientMessage(playerid, COLOR_GRAD2, " You are not in a 24-7 !");
  1868. return 1;
  1869. }
  1870. ShowPlayerDialog(playerid, DIALOG_CDLOCKBUY, DIALOG_STYLE_LIST, "24/7", "[$10000]Alarm Lock\n[$50000]Electric Lock\n[$100000]Industrial Lock", "Buy", "Cancel");
  1871. }
  1872. }
  1873. return 0;
  1874. }
  1875. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  1876. {
  1877. new string[128];
  1878. if(dialogid == DIALOG_CDEDIT)
  1879. { // car dealership dialog
  1880. if(response && GetPVarInt(playerid, "editingcd") != -1)
  1881. {
  1882. if(listitem == 0) // New Vehicle
  1883. {
  1884. format(string,256,"Please type the model id of the new vehicle.");
  1885. ShowPlayerDialog(playerid,DIALOG_CDNEWVEH,DIALOG_STYLE_INPUT,"Warning:",string,"Ok","Cancel");
  1886. }
  1887. else if(listitem == 1) // My Vehicles
  1888. {
  1889. new vehicles;
  1890. for(new i=0; i<MAX_DEALERSHIPVEHICLES; i++)
  1891. {
  1892. if(CarDealershipInfo[GetPVarInt(playerid, "editingcd")][cdVehicleModel][i] != 0)
  1893. {
  1894. vehicles++;
  1895. format(string, sizeof(string), "Vehicle %d| Name: %s | Price: %d.",i+1,GetVehicleName(CarDealershipInfo[GetPVarInt(playerid, "editingcd")][cdVehicleId][i]),CarDealershipInfo[GetPVarInt(playerid, "editingcd")][cdVehicleCost][i]);
  1896. SendClientMessage(playerid, COLOR_WHITE, string);
  1897. }
  1898. }
  1899. if(vehicles)
  1900. {
  1901. ShowPlayerDialog(playerid, DIALOG_CDEDITCARS, DIALOG_STYLE_INPUT, "Car Dealership:", " Choose a vehicle to edit:", "Edit", "Back");
  1902. }
  1903. else
  1904. {
  1905. SendClientMessage(playerid, COLOR_GRAD2, " This Car Dealership doesn't have any cars.");
  1906. }
  1907. }
  1908. else if(listitem == 2) // Upgrade
  1909. {
  1910. new listitems[] = "1 Vehicle Spawn\n2 Radius\n3 Dealership Name\n4 Price";
  1911. ShowPlayerDialog(playerid,DIALOG_CDUPGRADE,DIALOG_STYLE_LIST,"Choose an item to continue", listitems,"Select","Cancel");
  1912. }
  1913. else if(listitem == 3) // Till
  1914. {
  1915. new listitems[] = "1 Withdraw\n2 Deposit";
  1916. ShowPlayerDialog(playerid,DIALOG_CDTILL,DIALOG_STYLE_LIST,"Choose an item to continue", listitems,"Select","Cancel");
  1917. }
  1918. }
  1919. else
  1920. {
  1921. SavecDealership(GetPVarInt(playerid, "editingcd"));
  1922. SetPVarInt(playerid, "editingcd", -1);
  1923. }
  1924. }
  1925. else if(dialogid == DIALOG_CDTILL)
  1926. { // car dealership dialog
  1927. if(response && GetPVarInt(playerid, "editingcd") != -1)
  1928. {
  1929. if(listitem == 0) // Withdraw
  1930. {
  1931. format(string, sizeof(string), "You have $%d in your till account.\n\n\tHow much money to withdraw?", CarDealershipInfo[GetPVarInt(playerid, "editingcd")][cdTill]);
  1932. ShowPlayerDialog(playerid,DIALOG_CDWITHDRAW,DIALOG_STYLE_INPUT,"Withdraw", string,"Select","Cancel");
  1933. }
  1934. else if(listitem == 1) // Deposit
  1935. {
  1936. format(string, sizeof(string), "You have $%d in your till account.\n\n\tHow much money to deposit?", CarDealershipInfo[GetPVarInt(playerid, "editingcd")][cdTill]);
  1937. ShowPlayerDialog(playerid,DIALOG_CDDEPOSIT,DIALOG_STYLE_INPUT,"Deposit", string,"Select","Cancel");
  1938. }
  1939. }
  1940. else
  1941. {
  1942. SavecDealership(GetPVarInt(playerid, "editingcd"));
  1943. SetPVarInt(playerid, "editingcd", -1);
  1944. }
  1945. }
  1946. else if(dialogid == DIALOG_CDWITHDRAW)
  1947. { // car dealership dialog
  1948. if(response && GetPVarInt(playerid, "editingcd") != -1)
  1949. {
  1950. if (IsNumeric(inputtext))
  1951. {
  1952. new money = strval(inputtext);
  1953. if(CarDealershipInfo[GetPVarInt(playerid, "editingcd")][cdTill] < money)
  1954. {
  1955. format(string, sizeof(string), "You don't have that much in your till!\n\nYou have $%d in your till account.\n\n\tHow much money to withdraw?", CarDealershipInfo[GetPVarInt(playerid, "editingcd")][cdTill]);
  1956. ShowPlayerDialog(playerid,DIALOG_CDWITHDRAW,DIALOG_STYLE_INPUT,"Withdraw", string,"Select","Cancel");
  1957. return 1;
  1958. }
  1959. CarDealershipInfo[GetPVarInt(playerid, "editingcd")][cdTill] -= money;
  1960. SetPVarInt(playerid, "Cash", GetPVarInt(playerid, "Cash")+money);
  1961. format(string, sizeof(string), "You have successfully withdrawn $%d from your till, new balance: $%d", money, CarDealershipInfo[GetPVarInt(playerid, "editingcd")][cdTill]);
  1962. SendClientMessage(playerid, COLOR_GRAD2, string);
  1963. SavecDealership(GetPVarInt(playerid, "editingcd"));
  1964. SetPVarInt(playerid, "editingcd", -1);
  1965. }
  1966. }
  1967. else
  1968. {
  1969. SavecDealership(GetPVarInt(playerid, "editingcd"));
  1970. SetPVarInt(playerid, "editingcd", -1);
  1971. }
  1972. }
  1973. else if(dialogid == DIALOG_CDDEPOSIT)
  1974. { // car dealership dialog
  1975. if(response && GetPVarInt(playerid, "editingcd") != -1)
  1976. {
  1977. if (IsNumeric(inputtext))
  1978. {
  1979. new money = strval(inputtext);
  1980. if(GetPVarInt(playerid, "Cash") < money)
  1981. {
  1982. format(string, sizeof(string), "You don't have that much in your wallet!\n\nYou have $%d in your till account.\n\n\tHow much money to deposit?", CarDealershipInfo[GetPVarInt(playerid, "editingcd")][cdTill]);
  1983. ShowPlayerDialog(playerid,DIALOG_CDDEPOSIT,DIALOG_STYLE_INPUT,"Deposit", string,"Select","Cancel");
  1984. return 1;
  1985. }
  1986. CarDealershipInfo[GetPVarInt(playerid, "editingcd")][cdTill] += money;
  1987. SetPVarInt(playerid, "Cash", GetPVarInt(playerid, "Cash")-money);
  1988. format(string, sizeof(string), "You have successfully deposited $%d to your till, new balance: $%d", money, CarDealershipInfo[GetPVarInt(playerid, "editingcd")][cdTill]);
  1989. SendClientMessage(playerid, COLOR_GRAD2, string);
  1990. SavecDealership(GetPVarInt(playerid, "editingcd"));
  1991. SetPVarInt(playerid, "editingcd", -1);
  1992. }
  1993. }
  1994. else
  1995. {
  1996. SavecDealership(GetPVarInt(playerid, "editingcd"));
  1997. SetPVarInt(playerid, "editingcd", -1);
  1998. }
  1999. }
  2000. else if(dialogid == DIALOG_CDUPGRADE)
  2001. { // car dealership dialog
  2002. if(response && GetPVarInt(playerid, "editingcd") != -1)
  2003. {
  2004. if(listitem == 0) // Vehicle Spawn
  2005. {
  2006. SendClientMessage(playerid, COLOR_GRAD2, " Please stand where you want to have your brought vehicles spawn.");
  2007. SendClientMessage(playerid, COLOR_GRAD2, " Once ready press the fire button.");
  2008. SetPVarInt(playerid, "editingcdvehpos", 2);
  2009. }
  2010. if(listitem == 1) // Radius
  2011. {
  2012. ShowPlayerDialog(playerid, DIALOG_CDRADIUS, DIALOG_STYLE_INPUT, "Car Dealership:", " Choose the new radius:", "Edit", "Back");
  2013. }
  2014. else if(listitem == 2) // Dealership Name
  2015. {
  2016. ShowPlayerDialog(playerid, DIALOG_CDNAME, DIALOG_STYLE_INPUT, "Car Dealership:", " Choose the new name:", "Edit", "Back");
  2017. }
  2018. else if(listitem == 3) // Price
  2019. {
  2020. ShowPlayerDialog(playerid, DIALOG_CDPRICE, DIALOG_STYLE_INPUT, "Car Dealership:", " Choose the new price:", "Edit", "Back");
  2021. }
  2022. }
  2023. else
  2024. {
  2025. SavecDealership(GetPVarInt(playerid, "editingcd"));
  2026. SetPVarInt(playerid, "editingcd", -1);
  2027. }
  2028. }
  2029. else if(dialogid == DIALOG_CDRADIUS)
  2030. { // car dealership dialog
  2031. if(response && GetPVarInt(playerid, "editingcd") != -1)
  2032. {
  2033. new d;
  2034. d = GetPVarInt(playerid, "editingcd");
  2035. new Float:radius = floatstr(inputtext);
  2036. new Float:radiusex = CarDealershipInfo[d][cdRadius];
  2037. new test = floatround(radius), test1 = floatround(radiusex);
  2038. if (CarDealershipInfo[d][cdRadius] > radius)
  2039. {
  2040. new cost = ( test - test1 ) * ( test1 * 1000 );
  2041. if(GetPVarInt(playerid, "Cash") < cost)
  2042. {
  2043. format(string, sizeof(string), "ERROR: You do not have enough money for this upgrade ($%d).",cost);
  2044. SendClientMessage(playerid, COLOR_GREY, string);
  2045. }
  2046. format(string, sizeof(string), " Car Dealership radius upgraded from %.1f to %.1f for $%d.",radiusex, radius, cost);
  2047. SendClientMessage(playerid, COLOR_GREY, string);
  2048. CarDealershipInfo[d][cdRadius] = radius;
  2049. format(string,128,"Car Dealership %s\nOwner: %s\nRadius: %.1f", CarDealershipInfo[d][cdMessage], CarDealershipInfo[d][cdOwner], CarDealershipInfo[d][cdRadius]);
  2050. UpdateDynamic3DTextLabelText(CarDealershipInfo[d][cdTextLabel], COLOR_GREEN, string);
  2051. new listitems[] = "1 Vehicle Spawn\n2 Radius\n3 Dealership Name\n4 Price";
  2052. ShowPlayerDialog(playerid,DIALOG_CDUPGRADE,DIALOG_STYLE_LIST,"Choose an item to continue", listitems,"Select","Cancel");
  2053. SavecDealership(GetPVarInt(playerid, "editingcd"));
  2054. }
  2055. }
  2056. else
  2057. {
  2058. new listitems[] = "1 Vehicle Spawn\n2 Radius\n3 Dealership Name\n4 Price";
  2059. ShowPlayerDialog(playerid,DIALOG_CDUPGRADE,DIALOG_STYLE_LIST,"Choose an item to continue", listitems,"Select","Cancel");
  2060. }
  2061. }
  2062. else if(dialogid == DIALOG_CDNAME)
  2063. { // car dealership dialog
  2064. if(response && GetPVarInt(playerid, "editingcd") != -1)
  2065. {
  2066. new d;
  2067. d = GetPVarInt(playerid, "editingcd");
  2068. if (!strlen(inputtext))
  2069. {
  2070. SendClientMessage(playerid, COLOR_LIGHTRED, "** You must type a name **");
  2071. ShowPlayerDialog(playerid, DIALOG_CDNAME, DIALOG_STYLE_INPUT, "Car Dealership:", " Choose the new name:", "Edit", "Back");
  2072. return 1;
  2073. }
  2074. new cost = strlen(inputtext) * 50;
  2075. format(string, sizeof(string), " Car Dealership name upgraded from %s to %s for $%d.", CarDealershipInfo[d][cdMessage], inputtext, cost);
  2076. SendClientMessage(playerid, COLOR_GREY, string);
  2077. strmid(CarDealershipInfo[d][cdMessage], inputtext, 0, strlen(inputtext), 255);
  2078. format(string,128,"Car Dealership %s\nOwner: %s\nRadius: %.1f", CarDealershipInfo[d][cdMessage], CarDealershipInfo[d][cdOwner], CarDealershipInfo[d][cdRadius]);
  2079. UpdateDynamic3DTextLabelText(CarDealershipInfo[d][cdTextLabel], COLOR_GREEN, string);
  2080. new listitems[] = "1 Vehicle Spawn\n2 Radius\n3 Dealership Name\n4 Price";
  2081. ShowPlayerDialog(playerid,DIALOG_CDUPGRADE,DIALOG_STYLE_LIST,"Choose an item to continue", listitems,"Select","Cancel");
  2082. SavecDealership(GetPVarInt(playerid, "editingcd"));
  2083. }
  2084. else
  2085. {
  2086. new listitems[] = "1 Vehicle Spawn\n2 Radius\n3 Dealership Name\n4 Price";
  2087. ShowPlayerDialog(playerid,DIALOG_CDUPGRADE,DIALOG_STYLE_LIST,"Choose an item to continue", listitems,"Select","Cancel");
  2088. }
  2089. }
  2090. else if(dialogid == DIALOG_CDEDITCARS)
  2091. { // car dealership dialog
  2092. if(response && GetPVarInt(playerid, "editingcd") != -1)
  2093. {
  2094. new cdvid;
  2095. if (IsNumeric(inputtext))
  2096. {
  2097. cdvid = strval(inputtext);
  2098. if(CarDealershipInfo[GetPVarInt(playerid, "editingcd")][cdVehicleModel][cdvid-1])
  2099. {
  2100. SetPVarInt(playerid, "editingcdveh", cdvid-1);
  2101. new listitems[] = "1 Edit Model\n2 Edit Cost\n3 Edit Park\n4 Delete Vehicle";
  2102. ShowPlayerDialog(playerid,DIALOG_CDEDITONE,DIALOG_STYLE_LIST,"Car Dealership:", listitems,"Select","Cancel");
  2103. }
  2104. }
  2105. }
  2106. else
  2107. {
  2108. new listitems[] = "1 New Vehicle\n2 My Vehicles\n3 Upgrade\n4 Till";
  2109. ShowPlayerDialog(playerid,DIALOG_CDEDIT,DIALOG_STYLE_LIST,"Choose an item to continue", listitems,"Select","Cancel");
  2110. }
  2111. }
  2112. else if(dialogid == DIALOG_CDEDITONE)
  2113. { // car dealership dialog
  2114. if(response && GetPVarInt(playerid, "editingcd") != -1 && GetPVarInt(playerid, "editingcdveh") != -1)
  2115. {
  2116. if(listitem == 0) // Edit Model
  2117. {
  2118. ShowPlayerDialog(playerid, DIALOG_CDEDITMODEL, DIALOG_STYLE_INPUT, "Car Dealership:", " Choose the new model id:", "Edit", "Back");
  2119. }
  2120. else if(listitem == 1) // Edit Cost
  2121. {
  2122. ShowPlayerDialog(playerid, DIALOG_CDEDITCOST, DIALOG_STYLE_INPUT, "Car Dealership:", " Choose the new price of the car:", "Edit", "Back");
  2123. }
  2124. else if(listitem == 2) // Edit Park
  2125. {
  2126. PutPlayerInVehicle(playerid, CarDealershipInfo[GetPVarInt(playerid, "editingcd")][cdVehicleId][GetPVarInt(playerid, "editingcdveh")], 0);
  2127. SendClientMessage(playerid, COLOR_GRAD2, " Please stand where you want to park the vehicle.");
  2128. SendClientMessage(playerid, COLOR_GRAD2, " Once ready press the fire button.");
  2129. SetPVarInt(playerid, "editingcdvehpos", 1);
  2130. }
  2131. else if(listitem == 3) // Delete Vehicle
  2132. {
  2133. format(string,256,"Are you sure you want to delete this %s?\nNote: You will not get any refounds.",
  2134. GetVehicleName(CarDealershipInfo[GetPVarInt(playerid, "editingcd")][cdVehicleId][GetPVarInt(playerid, "editingcdveh")]));
  2135. ShowPlayerDialog(playerid,DIALOG_CDDELVEH,DIALOG_STYLE_MSGBOX,"Warning:",string,"Ok","Cancel");
  2136. }
  2137. }
  2138. else
  2139. {
  2140. SavecDealership(GetPVarInt(playerid, "editingcd"));
  2141. SetPVarInt(playerid, "editingcdveh", -1);
  2142. }
  2143. }
  2144. else if(dialogid == DIALOG_CDEDITMODEL)
  2145. { // car dealership dialog
  2146. if(response && GetPVarInt(playerid, "editingcd") != -1 && GetPVarInt(playerid, "editingcdveh") != -1)
  2147. {
  2148. new modelid, d, v;
  2149. new text_info[128];
  2150. d = GetPVarInt(playerid, "editingcd");
  2151. v = GetPVarInt(playerid, "editingcdveh");
  2152. if (IsNumeric(inputtext))
  2153. {
  2154. modelid = strval(inputtext);
  2155. if(modelid < 400 || modelid > 611) { SendClientMessage(playerid, COLOR_GREY, " Vehicle Number can't be below 400 or above 611 !"); return 1; }
  2156. CarDealershipInfo[d][cdVehicleModel][v] = modelid;
  2157. DestroyDynamic3DTextLabel(CarDealershipInfo[d][cdVehicleLabel][v]);
  2158. DestroyVehicle(CarDealershipInfo[d][cdVehicleId][v]);
  2159. new carcreated;
  2160. carcreated = CreateVehicle(CarDealershipInfo[d][cdVehicleModel][v], CarDealershipInfo[d][cdVehicleSpawnX][v], CarDealershipInfo[d][cdVehicleSpawnY][v], CarDealershipInfo[d][cdVehicleSpawnZ][v], CarDealershipInfo[d][cdVehicleSpawnAngle][v], 0, 0, 6);
  2161. format(text_info,256,"%s For Sale | Price: %d", GetVehicleName(carcreated), CarDealershipInfo[d][cdVehicleCost][v]);
  2162. CarDealershipInfo[d][cdVehicleLabel][v] = CreateDynamic3DTextLabel(text_info,COLOR_LIGHTBLUE,0.0, 0.0, 0.0,8.0,INVALID_PLAYER_ID,carcreated);
  2163. CarDealershipInfo[d][cdVehicleId][v] = carcreated;
  2164. new listitems[] = "1 Edit Model\n2 Edit Cost\n3 Edit Park\n4 Delete Vehicle";
  2165. ShowPlayerDialog(playerid,DIALOG_CDEDITONE,DIALOG_STYLE_LIST,"Car Dealership:", listitems,"Select","Cancel");
  2166. SavecDealership(d);
  2167. }
  2168. }
  2169. else
  2170. {
  2171. new listitems[] = "1 Edit Model\n2 Edit Cost\n3 Edit Park\n4 Delete Vehicle";
  2172. ShowPlayerDialog(playerid,DIALOG_CDEDITONE,DIALOG_STYLE_LIST,"Car Dealership:", listitems,"Select","Cancel");
  2173. }
  2174. }
  2175. else if(dialogid == DIALOG_CDEDITCOST)
  2176. { // car dealership dialog
  2177. if(response && GetPVarInt(playerid, "editingcd") != -1 && GetPVarInt(playerid, "editingcdveh") != -1)
  2178. {
  2179. new price, d, v;
  2180. new text_info[128];
  2181. d = GetPVarInt(playerid, "editingcd");
  2182. v = GetPVarInt(playerid, "editingcdveh");
  2183. if (IsNumeric(inputtext))
  2184. {
  2185. price = strval(inputtext);
  2186. CarDealershipInfo[d][cdVehicleCost][v] = price;
  2187. format(text_info,256,"%s For Sale | Price: %d", GetVehicleName(CarDealershipInfo[d][cdVehicleId][v]), CarDealershipInfo[d][cdVehicleCost][v]);
  2188. UpdateDynamic3DTextLabelText(CarDealershipInfo[d][cdVehicleLabel][v], COLOR_LIGHTBLUE, text_info);
  2189. new listitems[] = "1 Edit Model\n2 Edit Cost\n3 Edit Park\n4 Delete Vehicle";
  2190. ShowPlayerDialog(playerid,DIALOG_CDEDITONE,DIALOG_STYLE_LIST,"Car Dealership:", listitems,"Select","Cancel");
  2191. SavecDealership(d);
  2192. }
  2193. }
  2194. else
  2195. {
  2196. new listitems[] = "1 Edit Model\n2 Edit Cost\n3 Edit Park\n4 Delete Vehicle";
  2197. ShowPlayerDialog(playerid,DIALOG_CDEDITONE,DIALOG_STYLE_LIST,"Car Dealership:", listitems,"Select","Cancel");
  2198. }
  2199. }
  2200. else if(dialogid == DIALOG_CDDELVEH)
  2201. { // car dealership dialog
  2202. if(response && GetPVarInt(playerid, "editingcd") != -1 && GetPVarInt(playerid, "editingcdveh") != -1)
  2203. {
  2204. DestroyCarDealershipVehicle(GetPVarInt(playerid, "editingcd"), GetPVarInt(playerid, "editingcdveh"));
  2205. SavecDealership(GetPVarInt(playerid, "editingcd"));
  2206. }
  2207. else
  2208. {
  2209. new listitems[] = "1 Edit Model\n2 Edit Cost\n3 Edit Park\n4 Delete Vehicle";
  2210. ShowPlayerDialog(playerid,DIALOG_CDEDITONE,DIALOG_STYLE_LIST,"Car Dealership:", listitems,"Select","Cancel");
  2211. }
  2212. }
  2213. else if(dialogid == DIALOG_CDEDITPARK)
  2214. { // car dealership dialog
  2215. if(response && GetPVarInt(playerid, "editingcd") != -1 && GetPVarInt(playerid, "editingcdveh") != -1 && GetPVarInt(playerid, "editingcdvehpos") == 1 || GetPVarInt(playerid, "editingcdvehnew"))
  2216. {
  2217. new Float: x, Float: y, Float: z, Float: a;
  2218. new d, v, text_info[128];
  2219. d = GetPVarInt(playerid, "editingcd");
  2220. v = GetPVarInt(playerid, "editingcdveh");
  2221. GetVehiclePos(CarDealershipInfo[d][cdVehicleId][v], x, y, z);
  2222. GetVehicleZAngle(CarDealershipInfo[d][cdVehicleId][v], a);
  2223. if(IsPlayerInRangeOfPoint(playerid, CarDealershipInfo[d][cdRadius], CarDealershipInfo[d][cdEntranceX], CarDealershipInfo[d][cdEntranceY], CarDealershipInfo[d][cdEntranceZ]))
  2224. {
  2225. CarDealershipInfo[d][cdVehicleSpawnX][v] = x;
  2226. CarDealershipInfo[d][cdVehicleSpawnY][v] = y;
  2227. CarDealershipInfo[d][cdVehicleSpawnZ][v] = z;
  2228. CarDealershipInfo[d][cdVehicleSpawnAngle][v] = a;
  2229. SetPVarInt(playerid, "editingcdvehpos", 0);
  2230. SetPVarInt(playerid, "editingcdvehnew", 0);
  2231. DestroyDynamic3DTextLabel(CarDealershipInfo[d][cdVehicleLabel][v]);
  2232. DestroyVehicle(CarDealershipInfo[d][cdVehicleId][v]);
  2233. new carcreated;
  2234. carcreated = CreateVehicle(CarDealershipInfo[d][cdVehicleModel][v], CarDealershipInfo[d][cdVehicleSpawnX][v], CarDealershipInfo[d][cdVehicleSpawnY][v], CarDealershipInfo[d][cdVehicleSpawnZ][v], CarDealershipInfo[d][cdVehicleSpawnAngle][v], 0, 0, 6);
  2235. format(text_info,256,"%s For Sale | Price: %d", GetVehicleName(carcreated), CarDealershipInfo[d][cdVehicleCost][v]);
  2236. CarDealershipInfo[d][cdVehicleLabel][v] = CreateDynamic3DTextLabel(text_info,COLOR_LIGHTBLUE,0.0, 0.0, 0.0,8.0,INVALID_PLAYER_ID,carcreated);
  2237. CarDealershipInfo[d][cdVehicleId][v] = carcreated;
  2238. TogglePlayerControllable(playerid, true);
  2239. new listitems[] = "1 Edit Model\n2 Edit Cost\n3 Edit Park\n4 Delete Vehicle";
  2240. ShowPlayerDialog(playerid,DIALOG_CDEDITONE,DIALOG_STYLE_LIST,"Car Dealership:", listitems,"Select","Cancel");
  2241. SavecDealership(d);
  2242. }
  2243. else
  2244. {
  2245. SendClientMessage(playerid, COLOR_GREY, "ERROR: You are out of this Car Dealership radius, please try again.");
  2246. TogglePlayerControllable(playerid, true);
  2247. }
  2248. }
  2249. else if(response && GetPVarInt(playerid, "editingcd") != -1 && GetPVarInt(playerid, "editingcdvehpos") == 2)
  2250. {
  2251. new Float: x, Float: y, Float: z, Float: a;
  2252. new d;
  2253. GetPlayerPos(playerid,x,y,z);
  2254. GetPlayerFacingAngle(playerid, a);
  2255. d = GetPVarInt(playerid, "editingcd");
  2256. if(IsPlayerInRangeOfPoint(playerid, CarDealershipInfo[d][cdRadius], CarDealershipInfo[d][cdEntranceX], CarDealershipInfo[d][cdEntranceY], CarDealershipInfo[d][cdEntranceZ]))
  2257. {
  2258. CarDealershipInfo[d][cdVehicleSpawn][0] = x;
  2259. CarDealershipInfo[d][cdVehicleSpawn][1] = y;
  2260. CarDealershipInfo[d][cdVehicleSpawn][2] = z;
  2261. CarDealershipInfo[d][cdVehicleSpawn][3] = a;
  2262. SetPVarInt(playerid, "editingcdvehpos", 0);
  2263. TogglePlayerControllable(playerid, true);
  2264. new listitems[] = "1 Vehicle Spawn\n2 Radius\n3 Dealership Name\n4 Price";
  2265. ShowPlayerDialog(playerid,DIALOG_CDUPGRADE,DIALOG_STYLE_LIST,"Choose an item to continue", listitems,"Select","Cancel");
  2266. SavecDealership(d);
  2267. }
  2268. else
  2269. {
  2270. SendClientMessage(playerid, COLOR_GREY, "ERROR: You are out of this Car Dealership radius, please try again.");
  2271. TogglePlayerControllable(playerid, true);
  2272. }
  2273. }
  2274. else if(!response && GetPVarInt(playerid, "editingcd") != -1 && GetPVarInt(playerid, "editingcdvehpos") == 1)
  2275. {
  2276. new listitems[] = "1 Edit Model\n2 Edit Cost\n3 Edit Park\n4 Delete Vehicle";
  2277. ShowPlayerDialog(playerid,DIALOG_CDEDITONE,DIALOG_STYLE_LIST,"Car Dealership:", listitems,"Select","Cancel");
  2278. TogglePlayerControllable(playerid, true);
  2279. SetPVarInt(playerid, "editingcdvehpos", 0);
  2280. }
  2281. else if(!response && GetPVarInt(playerid, "editingcd") != -1 && GetPVarInt(playerid, "editingcdvehpos") == 2)
  2282. {
  2283. new listitems[] = "1 Vehicle Spawn\n2 Radius\n3 Dealership Name\n4 Price";
  2284. ShowPlayerDialog(playerid,DIALOG_CDUPGRADE,DIALOG_STYLE_LIST,"Choose an item to continue", listitems,"Select","Cancel");
  2285. TogglePlayerControllable(playerid, true);
  2286. SetPVarInt(playerid, "editingcdvehpos", 0);
  2287. }
  2288. }
  2289. else if(dialogid == DIALOG_CDNEWVEH)
  2290. { // car dealership dialog
  2291. if(response && GetPVarInt(playerid, "editingcd") != -1)
  2292. {
  2293. new modelid, d;
  2294. new Float: x, Float: y, Float: z, Float: a;
  2295. new text_info[128];
  2296. d = GetPVarInt(playerid, "editingcd");
  2297. GetPlayerPos(playerid,x,y,z);
  2298. GetPlayerFacingAngle(playerid, a);
  2299. if (!IsNumeric(inputtext)) return SendClientMessage(playerid, COLOR_GRAD1, "ERROR: Model ID must be numbers.");
  2300. if (IsPlayerInRangeOfPoint(playerid, CarDealershipInfo[d][cdRadius], CarDealershipInfo[d][cdEntranceX], CarDealershipInfo[d][cdEntranceY], CarDealershipInfo[d][cdEntranceZ]))
  2301. {
  2302. modelid = strval(inputtext);
  2303. if(modelid < 400 || modelid > 611) { SendClientMessage(playerid, COLOR_GREY, " Vehicle Number can't be below 400 or above 611 !"); return 1; }
  2304. new cdvehicleid = CreateCarDealershipVehicle(d, modelid, x, y, z, a, 1337);
  2305. if(cdvehicleid == -1)
  2306. {
  2307. SendClientMessage(playerid, COLOR_GREY, "ERROR: Car couldn't be created.");
  2308. }
  2309. else
  2310. {
  2311. PutPlayerInVehicle(playerid, CarDealershipInfo[d][cdVehicleId][cdvehicleid], 0);
  2312. format(text_info, sizeof(text_info), " Car Dealership Vehicle created with Vehicle ID %d.", cdvehicleid-1);
  2313. SendClientMessage(playerid, COLOR_GRAD1, text_info);
  2314. SendClientMessage(playerid, COLOR_GRAD2, " Please stand where you want to add your new vehicle.");
  2315. SendClientMessage(playerid, COLOR_GRAD2, " Once ready press the fire button.");
  2316. SetPVarInt(playerid, "editingcdvehnew", 1);
  2317. SetPVarInt(playerid, "editingcdveh", cdvehicleid);
  2318. }
  2319. }
  2320. else
  2321. {
  2322. SendClientMessage(playerid, COLOR_GREY, "ERROR: You are out of this Car Dealership radius, please try again.");
  2323. TogglePlayerControllable(playerid, true);
  2324. }
  2325. }
  2326. else
  2327. {
  2328. TogglePlayerControllable(playerid, true);
  2329. SetPVarInt(playerid, "editingcd", -1);
  2330. }
  2331. }
  2332. else if(dialogid == DIALOG_CDBUY)
  2333. {
  2334. new vehicleid = GetPlayerVehicleID(playerid);
  2335. new v = GetCarDealershipVehicleId(vehicleid);
  2336. new d = GetCarDealershipId(vehicleid);
  2337. if(response)
  2338. {
  2339. if(CarDealershipInfo[d][cdVehicleSpawn][0] == 0.0 && CarDealershipInfo[d][cdVehicleSpawn][1] == 0.0 && CarDealershipInfo[d][cdVehicleSpawn][2] == 0.0)
  2340. {
  2341. SendClientMessage(playerid, COLOR_GRAD1, "ERROR: The owner of this Car Dealership hasen't set the brought vehicles spawn point.");
  2342. RemovePlayerFromVehicle(playerid);
  2343. return 1;
  2344. }
  2345. if(GetPVarInt(playerid, "Cash") < CarDealershipInfo[d][cdVehicleCost][v])
  2346. {
  2347. SendClientMessage(playerid, COLOR_GRAD1, "ERROR: You don't have enough money to buy this.");
  2348. RemovePlayerFromVehicle(playerid);
  2349. return 1;
  2350. }
  2351. new playervehicleid = GetPlayerFreeVehicleId(playerid);
  2352. if(playervehicleid == -1) return SendClientMessage(playerid, COLOR_GREY, "ERROR: You can't have more cars.");
  2353. new randcolor1 = Random(0, 126);
  2354. new randcolor2 = Random(0, 126);
  2355. SetPlayerPos(playerid, CarDealershipInfo[d][cdVehicleSpawn][0], CarDealershipInfo[d][cdVehicleSpawn][1], CarDealershipInfo[d][cdVehicleSpawn][2]+2);
  2356. new car = CreatePlayerVehicle(playerid, playervehicleid, CarDealershipInfo[d][cdVehicleModel][v], CarDealershipInfo[d][cdVehicleSpawn][0], CarDealershipInfo[d][cdVehicleSpawn][1], CarDealershipInfo[d][cdVehicleSpawn][2], CarDealershipInfo[d][cdVehicleSpawn][3], randcolor1, randcolor2);
  2357. if(car == INVALID_PLAYER_VEHICLE_ID)
  2358. {
  2359. SendClientMessage(playerid, COLOR_GREY, "ERROR: Something went wrong and the car didn't get created.");
  2360. }
  2361. else
  2362. {
  2363. SetTimerEx("PutPlayerInVeh", 2000, 0, "dd", playerid, car);
  2364. format(string, sizeof(string), " Thank you for buying at %s.", CarDealershipInfo[d][cdMessage]);
  2365. SendClientMessage(playerid, COLOR_GRAD1, string);
  2366. SetPVarInt(playerid, "Cash", GetPVarInt(playerid, "Cash")-CarDealershipInfo[d][cdVehicleCost][v]);
  2367. CarDealershipInfo[d][cdTill] += ( CarDealershipInfo[d][cdVehicleCost][v] * 40 ) / ( 100 );
  2368. SavecDealership(GetPVarInt(playerid, "editingcd"));
  2369. }
  2370. }
  2371. else
  2372. {
  2373. RemovePlayerFromVehicle(playerid);
  2374. return 1;
  2375. }
  2376. }
  2377. else if(dialogid == DIALOG_CDSELL)
  2378. {
  2379. if(response)
  2380. {
  2381. if(GetPVarInt(playerid, "editingcd") == -1) return 1;
  2382. SetPVarInt(playerid, "Cash", GetPVarInt(playerid, "Cash")+ (CarDealershipInfo[GetPVarInt(playerid, "editingcd")][cdPrice] / 2));
  2383. SellCarDealership(GetPVarInt(playerid, "editingcd"));
  2384. PlayerPlayMusic(playerid);
  2385. format(string, sizeof(string), "Car Dealership successfully sold for %d.", CarDealershipInfo[GetPVarInt(playerid, "editingcd")][cdPrice] / 2);
  2386. SendClientMessage(playerid, COLOR_WHITE, string);
  2387. }
  2388. else
  2389. {
  2390. SetPVarInt(playerid, "editingcd", -1);
  2391. return 1;
  2392. }
  2393. }
  2394. if(dialogid == DIALOG_CDLOCKBUY)
  2395. {
  2396. if(response)
  2397. {
  2398. if(listitem == 0)
  2399. {
  2400. if(GetPlayerFreeVehicleId(playerid) != -1)
  2401. {
  2402. if(GetPVarInt(playerid, "Cash") < 10000)
  2403. {
  2404. SendClientMessage(playerid, COLOR_GRAD2, " Not enough money!");
  2405. return 1;
  2406. }
  2407. SetPVarInt(playerid, "lockmenu", 1);
  2408. for(new i=0; i<MAX_PLAYERVEHICLES; i++)
  2409. {
  2410. if(PlayerVehicleInfo[playerid][i][pvId] != 0)
  2411. {
  2412. format(string, sizeof(string), "Vehicle %d| Name: %s.",i+1,GetVehicleName(PlayerVehicleInfo[playerid][i][pvId]));
  2413. SendClientMessage(playerid, COLOR_WHITE, string);
  2414. }
  2415. }
  2416. ShowPlayerDialog(playerid, DIALOG_CDLOCKMENU, DIALOG_STYLE_INPUT, "24-7;"," Select a vehicle to install this:", "Select", "Cancel");
  2417. }
  2418. else
  2419. {
  2420. SendClientMessage(playerid, COLOR_WHITE, "You do not have any Cars where we can install this item.");
  2421. return 1;
  2422. }
  2423. }
  2424. if(listitem == 1)
  2425. {
  2426. if(GetPlayerFreeVehicleId(playerid) != -1)
  2427. {
  2428. if(GetPVarInt(playerid, "Cash") < 50000)
  2429. {
  2430. SendClientMessage(playerid, COLOR_GRAD2, " Not enough money!");
  2431. return 1;
  2432. }
  2433. SetPVarInt(playerid, "lockmenu", 2);
  2434. for(new i=0; i<MAX_PLAYERVEHICLES; i++)
  2435. {
  2436. if(PlayerVehicleInfo[playerid][i][pvId] != 0)
  2437. {
  2438. format(string, sizeof(string), "Vehicle %d| Name: %s.",i+1,GetVehicleName(PlayerVehicleInfo[playerid][i][pvId]));
  2439. SendClientMessage(playerid, COLOR_WHITE, string);
  2440. }
  2441. }
  2442. ShowPlayerDialog(playerid, DIALOG_CDLOCKMENU, DIALOG_STYLE_INPUT, "24-7;"," Select a vehicle to install this:", "Select", "Cancel");
  2443. }
  2444. else
  2445. {
  2446. SendClientMessage(playerid, COLOR_WHITE, "You do not have any Cars where we can install this item.");
  2447. return 1;
  2448. }
  2449. }
  2450. if(listitem == 2)
  2451. {
  2452. if(GetPlayerFreeVehicleId(playerid) != -1)
  2453. {
  2454. if(GetPVarInt(playerid, "Cash") < 100000)
  2455. {
  2456. SendClientMessage(playerid, COLOR_GRAD2, " Not enough money!");
  2457. return 1;
  2458. }
  2459. SetPVarInt(playerid, "lockmenu", 3);
  2460. for(new i=0; i<MAX_PLAYERVEHICLES; i++)
  2461. {
  2462. if(PlayerVehicleInfo[playerid][i][pvId] != 0)
  2463. {
  2464. format(string, sizeof(string), "Vehicle %d| Name: %s.",i+1,GetVehicleName(PlayerVehicleInfo[playerid][i][pvId]));
  2465. SendClientMessage(playerid, COLOR_WHITE, string);
  2466. }
  2467. }
  2468. ShowPlayerDialog(playerid, DIALOG_CDLOCKMENU, DIALOG_STYLE_INPUT, "24-7;"," Select a vehicle to install this:", "Select", "Cancel");
  2469. }
  2470. else
  2471. {
  2472. SendClientMessage(playerid, COLOR_WHITE, "You do not have any Cars where we can install this item.");
  2473. return 1;
  2474. }
  2475. }
  2476. }
  2477. }
  2478. if(dialogid == DIALOG_CDLOCKMENU)
  2479. {
  2480. if(response)
  2481. {
  2482. if(GetPVarInt(playerid, "lockmenu") == 1)
  2483. {
  2484. new pvid;
  2485. if (IsNumeric(inputtext))
  2486. {
  2487. pvid = strval(inputtext)-1;
  2488. if(PlayerVehicleInfo[playerid][pvid][pvId] == 0)
  2489. {
  2490. SendClientMessage(playerid, COLOR_GRAD4, "ERROR: You don't have a vehicle in this slot.");
  2491. SetPVarInt(playerid, "lockmenu", 0);
  2492. return 1;
  2493. }
  2494. if(PlayerVehicleInfo[playerid][pvid][pvLock] == 1)
  2495. {
  2496. SendClientMessage(playerid, COLOR_GRAD4, "ERROR: You already have this item installed on this vehicle.");
  2497. SetPVarInt(playerid, "lockmenu", 0);
  2498. return 1;
  2499. }
  2500. format(string, sizeof(string), " You have Purchased an Alarm Lock !");
  2501. SendClientMessage(playerid, COLOR_GRAD4, string);
  2502. SendClientMessage(playerid, COLOR_YELLOW, "HINT: You can now use /pvlock to lock your car.");
  2503. SetPVarInt(playerid, "Cash", GetPVarInt(playerid, "Cash")-10000);
  2504. PlayerVehicleInfo[playerid][pvid][pvLock] = 1;
  2505. SetPVarInt(playerid, "lockmenu", 0);
  2506. }
  2507. }
  2508. else if(GetPVarInt(playerid, "lockmenu") == 2)
  2509. {
  2510. new pvid;
  2511. if (IsNumeric(inputtext))
  2512. {
  2513. pvid = strval(inputtext)-1;
  2514. if(PlayerVehicleInfo[playerid][pvid][pvId] == 0)
  2515. {
  2516. SendClientMessage(playerid, COLOR_GRAD4, "ERROR: You don't have a vehicle in this slot.");
  2517. SetPVarInt(playerid, "lockmenu", 0);
  2518. return 1;
  2519. }
  2520. if(PlayerVehicleInfo[playerid][pvid][pvLock] == 2)
  2521. {
  2522. SendClientMessage(playerid, COLOR_GRAD4, "ERROR: You already have this item installed on this vehicle.");
  2523. SetPVarInt(playerid, "lockmenu", 0);
  2524. return 1;
  2525. }
  2526. format(string, sizeof(string), " You have Purchased an Electric Shock Lock !");
  2527. SendClientMessage(playerid, COLOR_GRAD4, string);
  2528. SendClientMessage(playerid, COLOR_YELLOW, "HINT: You can now use /pvlock to lock your car.");
  2529. SetPVarInt(playerid, "Cash", GetPVarInt(playerid, "Cash")-50000);
  2530. PlayerVehicleInfo[playerid][pvid][pvLock] = 2;
  2531. SetPVarInt(playerid, "lockmenu", 0);
  2532. }
  2533. }
  2534. else if(GetPVarInt(playerid, "lockmenu") == 3)
  2535. {
  2536. new pvid;
  2537. if (IsNumeric(inputtext))
  2538. {
  2539. pvid = strval(inputtext)-1;
  2540. if(PlayerVehicleInfo[playerid][pvid][pvId] == 0)
  2541. {
  2542. SendClientMessage(playerid, COLOR_GRAD4, "ERROR: You don't have a vehicle in this slot.");
  2543. SetPVarInt(playerid, "lockmenu", 0);
  2544. return 1;
  2545. }
  2546. if(PlayerVehicleInfo[playerid][pvid][pvLock] == 3)
  2547. {
  2548. SendClientMessage(playerid, COLOR_GRAD4, "ERROR: You already have this item installed on this vehicle.");
  2549. SetPVarInt(playerid, "lockmenu", 0);
  2550. return 1;
  2551. }
  2552. format(string, sizeof(string), " You have Purchased an Industrial Lock !");
  2553. SendClientMessage(playerid, COLOR_GRAD4, string);
  2554. SendClientMessage(playerid, COLOR_YELLOW, "HINT: You can now use /pvlock to lock your car.");
  2555. SetPVarInt(playerid, "Cash", GetPVarInt(playerid, "Cash")-100000);
  2556. PlayerVehicleInfo[playerid][pvid][pvLock] = 3;
  2557. SetPVarInt(playerid, "lockmenu", 0);
  2558. }
  2559. }
  2560. }
  2561. }
  2562. return 1;
  2563. }
  2564. public OnPlayerStateChange(playerid, newstate, oldstate)
  2565. {
  2566. new string[128];
  2567. if(newstate == PLAYER_STATE_DRIVER)
  2568. {
  2569. new newcar = GetPlayerVehicleID(playerid);
  2570. if(GetCarDealershipVehicleId(newcar) != -1 && GetCarDealershipVehicleId(newcar) == GetPVarInt(playerid, "editingcdveh")) return 1;
  2571. if(GetCarDealershipVehicleId(newcar) != -1)
  2572. {
  2573. format(string,256,"Would you like to buy this %s?\n\nThis vehicle costs $%d.", GetVehicleName(newcar), CarDealershipInfo[GetCarDealershipId(newcar)][cdVehicleCost][GetCarDealershipVehicleId(newcar)]);
  2574. ShowPlayerDialog(playerid,DIALOG_CDBUY,DIALOG_STYLE_MSGBOX,"Warning:",string,"Buy","Cancel");
  2575. return 1;
  2576. }
  2577. new sendername[MAX_PLAYER_NAME];
  2578. new v;
  2579. for(new i = 0; i < MAX_PLAYERS; i++)
  2580. {
  2581. if(IsPlayerConnected(i))
  2582. {
  2583. v = GetPlayerVehicle(i, newcar);
  2584. if(v != -1)
  2585. {
  2586. if(i == playerid) goto owner;
  2587. new Float:x, Float: y, Float: z;
  2588. GetVehiclePos(newcar, x, y, z);
  2589. if(PlayerVehicleInfo[i][v][pvLocked] == 1 && PlayerVehicleInfo[i][v][pvLock] == 1)
  2590. {
  2591. for(new d = 0; d < MAX_PLAYERS; d++)
  2592. {
  2593. if(IsPlayerInRangeOfPoint(d, 30.0, x, y, z))
  2594. {
  2595. MeepMeep(playerid, newcar);
  2596. SetTimerEx("MeepMeep", 1000, 0, "dd", playerid, newcar);
  2597. }
  2598. }
  2599. format(string, sizeof(string), "*Car Alarm: BEEP BEEP BEEP BEEP BEEP BEEP BEEP BEEP BEEP");
  2600. ProxDetector(60.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
  2601. }
  2602. else if(PlayerVehicleInfo[i][v][pvLocked] == 1 && PlayerVehicleInfo[i][v][pvLock] == 2)
  2603. {
  2604. new player[MAX_PLAYER_NAME];
  2605. GetPlayerName(playerid, player, sizeof(player));
  2606. format(string, sizeof(string), "* %s gets electrified by the car lock",player);
  2607. ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
  2608. new Float:X, Float:Y, Float:Z, Float:HP;
  2609. GetPlayerPos(playerid, X, Y, Z);
  2610. SetPlayerPos(playerid, X, Y, Z+1);
  2611. RemovePlayerFromVehicle(playerid);
  2612. TogglePlayerControllable(playerid,0);
  2613. SetTimerEx("ReleasePlayer", 10000, 0, "d", playerid);
  2614. GameTextForPlayer(playerid,"~r~ELECTRIFIED!!!",10000,1);
  2615. GetPlayerHealth(playerid,HP);
  2616. SetPlayerHealth(playerid,HP-15);
  2617. return 1;
  2618. }
  2619. GetPlayerName(i, sendername, sizeof(sendername));
  2620. format(string,256,"Warning: This %s is owned by %s.", GetVehicleName(newcar), sendername);
  2621. SendClientMessage(playerid, COLOR_GREY, string);
  2622. owner:
  2623. if(i == playerid)
  2624. {
  2625. format(string,256," You are the owner of this %s.", GetVehicleName(newcar));
  2626. SendClientMessage(playerid, COLOR_GREY, string);
  2627. }
  2628. }
  2629. }
  2630. }
  2631. }
  2632. return 1;
  2633. }
  2634. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  2635. {
  2636. if (IsKeyJustDown(KEY_FIRE, newkeys, oldkeys))
  2637. {
  2638. if(IsPlayerConnected(playerid))
  2639. {
  2640. new string[128];
  2641. if(GetPVarInt(playerid, "editingcdvehpos"))
  2642. {
  2643. TogglePlayerControllable(playerid, false);
  2644. format(string,256,"Is this the new position you want?.");
  2645. ShowPlayerDialog(playerid,DIALOG_CDEDITPARK,DIALOG_STYLE_MSGBOX,"Warning:",string,"Ok","Cancel");
  2646. }
  2647. if(GetPVarInt(playerid, "editingcdvehnew"))
  2648. {
  2649. TogglePlayerControllable(playerid, false);
  2650. format(string,256,"Is this the new position you want?.");
  2651. ShowPlayerDialog(playerid,DIALOG_CDEDITPARK,DIALOG_STYLE_MSGBOX,"Warning:",string,"Ok","Cancel");
  2652. }
  2653. }
  2654. }
  2655. return 1;
  2656. }