uf.inc 90 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141
  1. /* SA:MP Useful Functions
  2. *
  3. * (c) Copyright 2005-2006, Credits:
  4. *
  5. * Alex "Y_Less" Cole
  6. * Jan "DracoBlue" Schütze
  7. * Gabriel "Larcius" Cordes
  8. * Rafelder
  9. * Mike
  10. * Slick
  11. * Allan
  12. * SidViciousII
  13. * Darkrealm
  14. * El Presy
  15. * Spectre
  16. * mabako
  17. * Sacky
  18. * Boss
  19. * Toxic
  20. * dyraXon
  21. * yellowblood
  22. * 50p
  23. * rapidZ
  24. * Tratulla
  25. * Kamazy
  26. * Simon
  27. * yom
  28. * Betamaster
  29. * Peter
  30. * kool
  31. * Hellomy
  32. *
  33. */
  34. #if defined _uf_included
  35. #endinput
  36. #endif
  37. #define _uf_included
  38. #pragma library uf
  39. #define MAX_STRING 255
  40. #define MAX_VEHICLES_MODELS 212
  41. #define MAX_AREAS 500
  42. #define MAX_FREEZE 100
  43. #define FREEZE_COUNTDOWN MAX_FREEZE
  44. #define FREEZE_COUNTUP MAX_FREEZE+1
  45. #define FREEZE_MENU MAX_FREEZE+2
  46. #define MAX_FREEZE_ALL FREEZE_MENU+1
  47. #define VTYPE_CAR 1
  48. #define VTYPE_HEAVY 2
  49. #define VTYPE_MONSTER 3
  50. #define VTYPE_BIKE 4
  51. #define VTYPE_QUAD 5
  52. #define VTYPE_BMX 6
  53. #define VTYPE_HELI 7
  54. #define VTYPE_PLANE 8
  55. #define VTYPE_SEA 9
  56. #define VTYPE_TRAILER 10
  57. #define VTYPE_TRAIN 11
  58. #define VTYPE_BOAT VTYPE_SEA
  59. #define VTYPE_BICYCLE VTYPE_BMX
  60. #define AREA_RECTANGLE 1
  61. #define AREA_CIRCLE 2
  62. #define AREA_ASHLAR 3
  63. #define AREA_CUBE AREA_ASHLAR
  64. #define AREA_SPHERE 4
  65. #define AREA_CYLINDER 5
  66. #define INF_INT 0x7F800000
  67. const Float:INF_FLOAT=Float:0x7F800000;
  68. const Float:PI=3.14159265;
  69. #define SecToMS(%1) %1*1000
  70. #define MinToMS(%1) %1*1000*60
  71. #define HourToMS(%1) %1*1000*60*60
  72. #define FORWARD 1
  73. #define SIDELONG 2
  74. #define SPEED_MPS 1
  75. #define SPEED_KMPH 2
  76. #define SPEED_MPH 3
  77. #define ACC_MPS2 1
  78. #define ACC_KMPH2 2
  79. #define ACC_G 3
  80. new stock VehicleNames[(MAX_VEHICLES_MODELS+1)][MAX_STRING] = {
  81. "Landstalker",
  82. "Bravura",
  83. "Buffalo",
  84. "Linerunner",
  85. "Pereniel",
  86. "Sentinel",
  87. "Dumper",
  88. "Firetruck",
  89. "Trashmaster",
  90. "Stretch",
  91. "Manana",
  92. "Infernus",
  93. "Voodoo",
  94. "Pony",
  95. "Mule",
  96. "Cheetah",
  97. "Ambulance",
  98. "Leviathan",
  99. "Moonbeam",
  100. "Esperanto",
  101. "Taxi",
  102. "Washington",
  103. "Bobcat",
  104. "Mr Whoopee",
  105. "BF Injection",
  106. "Hunter",
  107. "Premier",
  108. "Enforcer",
  109. "Securicar",
  110. "Banshee",
  111. "Predator",
  112. "Bus",
  113. "Rhino",
  114. "Barracks",
  115. "Hotknife",
  116. "Trailer", //artict1
  117. "Previon",
  118. "Coach",
  119. "Cabbie",
  120. "Stallion",
  121. "Rumpo",
  122. "RC Bandit",
  123. "Romero",
  124. "Packer",
  125. "Monster",
  126. "Admiral",
  127. "Squalo",
  128. "Seasparrow",
  129. "Pizzaboy",
  130. "Tram",
  131. "Trailer", //artict2
  132. "Turismo",
  133. "Speeder",
  134. "Reefer",
  135. "Tropic",
  136. "Flatbed",
  137. "Yankee",
  138. "Caddy",
  139. "Solair",
  140. "Berkley's RC Van",
  141. "Skimmer",
  142. "PCJ-600",
  143. "Faggio",
  144. "Freeway",
  145. "RC Baron",
  146. "RC Raider",
  147. "Glendale",
  148. "Oceanic",
  149. "Sanchez",
  150. "Sparrow",
  151. "Patriot",
  152. "Quad",
  153. "Coastguard",
  154. "Dinghy",
  155. "Hermes",
  156. "Sabre",
  157. "Rustler",
  158. "ZR3 50",
  159. "Walton",
  160. "Regina",
  161. "Comet",
  162. "BMX",
  163. "Burrito",
  164. "Camper",
  165. "Marquis",
  166. "Baggage",
  167. "Dozer",
  168. "Maverick",
  169. "News Chopper",
  170. "Rancher",
  171. "FBI Rancher",
  172. "Virgo",
  173. "Greenwood",
  174. "Jetmax",
  175. "Hotring",
  176. "Sandking",
  177. "Blista Compact",
  178. "Police Maverick",
  179. "Boxville",
  180. "Benson",
  181. "Mesa",
  182. "RC Goblin",
  183. "Hotring Racer", //hotrina
  184. "Hotring Racer", //hotrinb
  185. "Bloodring Banger",
  186. "Rancher",
  187. "Super GT",
  188. "Elegant",
  189. "Journey",
  190. "Bike",
  191. "Mountain Bike",
  192. "Beagle",
  193. "Cropdust",
  194. "Stunt",
  195. "Tanker", //petro
  196. "RoadTrain",
  197. "Nebula",
  198. "Majestic",
  199. "Buccaneer",
  200. "Shamal",
  201. "Hydra",
  202. "FCR-900",
  203. "NRG-500",
  204. "HPV1000",
  205. "Cement Truck",
  206. "Tow Truck",
  207. "Fortune",
  208. "Cadrona",
  209. "FBI Truck",
  210. "Willard",
  211. "Forklift",
  212. "Tractor",
  213. "Combine",
  214. "Feltzer",
  215. "Remington",
  216. "Slamvan",
  217. "Blade",
  218. "Freight",
  219. "Streak",
  220. "Vortex",
  221. "Vincent",
  222. "Bullet",
  223. "Clover",
  224. "Sadler",
  225. "Firetruck", //firela
  226. "Hustler",
  227. "Intruder",
  228. "Primo",
  229. "Cargobob",
  230. "Tampa",
  231. "Sunrise",
  232. "Merit",
  233. "Utility",
  234. "Nevada",
  235. "Yosemite",
  236. "Windsor",
  237. "Monster", //monstera
  238. "Monster", //monsterb
  239. "Uranus",
  240. "Jester",
  241. "Sultan",
  242. "Stratum",
  243. "Elegy",
  244. "Raindance",
  245. "RC Tiger",
  246. "Flash",
  247. "Tahoma",
  248. "Savanna",
  249. "Bandito",
  250. "Freight", //freiflat
  251. "Trailer", //streakc
  252. "Kart",
  253. "Mower",
  254. "Duneride",
  255. "Sweeper",
  256. "Broadway",
  257. "Tornado",
  258. "AT-400",
  259. "DFT-30",
  260. "Huntley",
  261. "Stafford",
  262. "BF-400",
  263. "Newsvan",
  264. "Tug",
  265. "Trailer", //petrotr
  266. "Emperor",
  267. "Wayfarer",
  268. "Euros",
  269. "Hotdog",
  270. "Club",
  271. "Trailer", //freibox
  272. "Trailer", //artict3
  273. "Andromada",
  274. "Dodo",
  275. "RC Cam",
  276. "Launch",
  277. "Police Car (LSPD)",
  278. "Police Car (SFPD)",
  279. "Police Car (LVPD)",
  280. "Police Ranger",
  281. "Picador",
  282. "S.W.A.T. Van",
  283. "Alpha",
  284. "Phoenix",
  285. "Glendale",
  286. "Sadler",
  287. "Luggage Trailer", //bagboxa
  288. "Luggage Trailer", //bagboxb
  289. "Stair Trailer", //tugstair
  290. "Boxville",
  291. "Farm Plow", //farmtr1
  292. "Utility Trailer", //utiltr1
  293. "Invalid Vehicle" //just to return if the modelid is invalid
  294. };
  295. #if defined OnPlayerBuyWeapon
  296. new stock Float:lvammu[3][3] = {
  297. (295.7932,-80.8074,1001.5156),
  298. (295.5800,-80.4444,1001.5156),
  299. (290.1626,-109.7770,1001.5156)
  300. };
  301. new stock Float:ammu[7][3] = {
  302. (296.7232,-38.5011,1001.5156),
  303. (313.0667,-165.7863,999.6010),
  304. (296.5075,-38.5065,1001.5156),
  305. (289.7543,-109.7784,1001.5156),
  306. (296.1650,-80.8099,1001.5156),
  307. (290.6806,-109.7799,1001.5156),
  308. (290.4812,-109.7673,1001.5156)
  309. };
  310. #endif
  311. #if defined OnPlayerGamble
  312. new stock Float:gamble1[12][3] = {
  313. (2230.7319,1589.3613,1007.1223),
  314. (2230.9382,1595.0582,1007.1223),
  315. (2230.7825,1615.1445,1007.1223),
  316. (2230.1284,1619.4703,1007.1223),
  317. (2241.9258,1619.5101,1007.1223),
  318. (2241.4067,1614.7375,1007.1223),
  319. (2242.6226,1595.3263,1007.1223),
  320. (2242.6494,1589.4646,1007.1223),
  321. (1958.8229,1025.9097,993.4035),
  322. (1963.6870,1025.8323,993.4035),
  323. (1959.4716,1010.6929,993.4035),
  324. (1963.4226,1010.7554,993.4035)
  325. };
  326. new stock Float:gamble2[3][3] = {
  327. (2230.3799,1604.6863,1006.1860),
  328. (2241.3516,1604.2601,1006.1797),
  329. (1126.4874,-1.4898,1000.6797)
  330. };
  331. new stock Float:gamble3[20][3] = {
  332. (1969.5471,1029.5972,992.4745),
  333. (1969.5416,1021.4896,992.4688),
  334. (1969.5569,1014.0104,992.4688),
  335. (1969.5547,1006.4145,992.4745),
  336. (1969.7015,1029.5469,992.4745),
  337. (1942.8903,1006.8364,992.4688),
  338. (1941.8312,1013.9740,992.4688),
  339. (1941.8381,1021.5088,992.4688),
  340. (1942.5658,1028.6289,992.4688),
  341. (2275.2219,1596.2104,1006.1797),
  342. (2275.2146,1589.7419,1006.1797),
  343. (2270.4824,1595.9219,1006.1797),
  344. (2265.4377,1596.3553,1006.1797),
  345. (2260.0259,1596.6718,1006.1797),
  346. (2254.9976,1596.3917,1006.1797),
  347. (2252.4050,1590.1534,1006.1797),
  348. (2257.4419,1590.0051,1006.1797),
  349. (2262.8257,1589.6021,1006.1797),
  350. (2267.9023,1589.6578,1006.1797),
  351. (1126.6071,2.9759,1000.6797)
  352. };
  353. new stock Float:gamble4[18][3] = {
  354. (1965.8324,997.9891,992.4688),
  355. (1962.9382,991.2863,992.4688),
  356. (1965.8340,998.0048,992.4688),
  357. (1958.1143,986.5440,992.4688),
  358. (1965.8490,1037.6136,992.4688),
  359. (1963.0631,1044.0096,992.4688),
  360. (1958.1376,1049.0104,992.4688),
  361. (2255.1760,1618.7878,1006.1797),
  362. (2255.2905,1614.8890,1006.1797),
  363. (2255.2170,1610.8423,1006.1797),
  364. (2268.5320,1606.8667,1006.1797),
  365. (2274.5471,1606.8854,1006.1797),
  366. (2218.6533,1619.8169,1006.1794),
  367. (2218.5603,1615.4678,1006.1797),
  368. (2216.3044,1603.6766,1006.1819),
  369. (2219.9624,1603.8689,1006.1797),
  370. (2218.4788,1593.6322,1006.1871),
  371. (2218.6128,1589.3203,1006.1841)
  372. };
  373. new stock Float:gamble5[2][3] = {
  374. (1961.4709,1020.2551,992.4688),
  375. (1961.5642,1015.8394,992.4688)
  376. };
  377. new stock Float:gamble6[5][3] = {
  378. (2271.6360,1586.1650,1006.1797),
  379. (2261.5183,1586.4304,1006.1797),
  380. (2251.8772,1586.5632,1006.1860),
  381. (1946.5306,986.7844,992.4688),
  382. (1120.0988,-1.3969,1000.6908)
  383. };
  384. new stock Float:gamble7[1][3] = {
  385. (1136.3954,-1.6494,1000.6797)
  386. };
  387. #endif
  388. enum SpeedEnum
  389. {
  390. Show,
  391. TextID,
  392. Float:MPS,
  393. Float:KMPH,
  394. Float:MPH
  395. }
  396. enum AccelerationEnum
  397. {
  398. Show,
  399. TextID,
  400. Float:MPS2,
  401. Float:KMPH2,
  402. Float:G
  403. }
  404. enum PlayersEnum
  405. {
  406. Float:X,
  407. Float:Y,
  408. Float:Z,
  409. Float:Health,
  410. Float:Armour,
  411. Last_Vehicle,
  412. Cur_Vehicle,
  413. Last_Team,
  414. Cur_Team,
  415. Money,
  416. State,
  417. Weapon,
  418. Score,
  419. Wanted,
  420. Freeze[MAX_FREEZE_ALL],
  421. Speed2[SpeedEnum],
  422. Acceleration[AccelerationEnum]
  423. }
  424. enum VehiclesEnum
  425. {
  426. Float:X,
  427. Float:Y,
  428. Float:Z,
  429. Float:Angle,
  430. Float:Health,
  431. Dynamic,
  432. Static,
  433. Last_Trailer,
  434. Cur_Trailer,
  435. Respawn,
  436. Color1,
  437. Color2,
  438. Objective[MAX_PLAYERS],
  439. Locked[MAX_PLAYERS]
  440. }
  441. enum PickupsEnum
  442. {
  443. Float:X,
  444. Float:Y,
  445. Float:Z,
  446. Model,
  447. Respawn,
  448. Type
  449. }
  450. enum CounterDownEnum
  451. {
  452. Style,
  453. TextID,
  454. }
  455. enum CounterUpEnum
  456. {
  457. Style,
  458. TextID,
  459. Time2
  460. }
  461. enum CountersEnum
  462. {
  463. Down[CounterDownEnum],
  464. Up[CounterUpEnum]
  465. }
  466. enum AreasEnum
  467. {
  468. Type,
  469. Float:X,
  470. Float:Y,
  471. Float:Z,
  472. Float:X2,
  473. Float:Y2,
  474. Float:Z2,
  475. Float:Radius,
  476. PlayerInArea[MAX_PLAYERS]
  477. }
  478. new stock preh[MAX_PLAYERS];
  479. new stock bets[MAX_PLAYERS];
  480. new stock betting[MAX_PLAYERS];
  481. new stock Pickups[MAX_PICKUPS][PickupsEnum];
  482. new stock Vehicles[MAX_VEHICLES][VehiclesEnum];
  483. new stock Players[MAX_PLAYERS][PlayersEnum];
  484. new stock Counters[MAX_PLAYERS][CountersEnum];
  485. new stock Areas[MAX_AREAS][AreasEnum];
  486. new stock SpeederTime=0;
  487. new stock CountersTime=0;
  488. stock GameModeInit()
  489. {
  490. TextDrawCreate(0.0,0.0," ");
  491. SetTimer("ufctimer", 100, true);
  492. SetTimer("Counter", 10, true);
  493. SetTimerEx("Speeder", 10, true, "i", 1000);
  494. SetTimer("ClearOutOfRangeVehicles", 2000, true);
  495. }
  496. stock IsVehicleConnected(vehicleid) //By Sacky (edited by Gabriel "Larcius" Cordes)
  497. {
  498. new Float:x1,Float:y1,Float:z1;
  499. GetVehiclePos(vehicleid,x1,y1,z1);
  500. if(x1==0.0 && y1==0.0 && z1==0.0)
  501. {
  502. return 0;
  503. }
  504. return 1;
  505. }
  506. stock IsPickupConnected(pickupid) //By Gabriel "Larcius" Cordes
  507. {
  508. if(Pickups[pickupid][X]==0.0 && Pickups[pickupid][Y]==0.0 && Pickups[pickupid][Z]==0.0)
  509. {
  510. return 0;
  511. }
  512. return 1;
  513. }
  514. stock IsAreaConnected(areaid) //By Gabriel "Larcius" Cordes
  515. {
  516. if(areaid<MAX_AREAS && Areas[areaid][Type])
  517. {
  518. return 1;
  519. }
  520. return 0;
  521. }
  522. stock TogglePlayerControllable2(playerid, controllable, freezeid=0) //By Gabriel "Larcius" Cordes
  523. {
  524. if(IsPlayerConnected(playerid))
  525. {
  526. new isplfreeze=IsPlayerFreeze(playerid);
  527. if (controllable==0)
  528. {
  529. if(freezeid>=MAX_FREEZE_ALL || freezeid<0)
  530. {
  531. for(new i=0; i<MAX_FREEZE_ALL; i++)
  532. {
  533. Players[playerid][Freeze][i]=0;
  534. }
  535. Players[playerid][Freeze][0]=1;
  536. }
  537. else
  538. {
  539. Players[playerid][Freeze][freezeid]=1;
  540. }
  541. if(!isplfreeze)
  542. {
  543. TogglePlayerControllable(playerid, 0);
  544. #if defined OnPlayerToggleControllable
  545. OnPlayerToggleControllable(playerid, 0);
  546. #endif
  547. }
  548. }
  549. else
  550. {
  551. if(freezeid>=MAX_FREEZE_ALL || freezeid<0)
  552. {
  553. for(new i=0; i<MAX_FREEZE_ALL; i++)
  554. {
  555. Players[playerid][Freeze][i]=0;
  556. }
  557. }
  558. else
  559. {
  560. Players[playerid][Freeze][freezeid]=0;
  561. }
  562. if(isplfreeze && !IsPlayerFreeze(playerid))
  563. {
  564. TogglePlayerControllable(playerid, 1);
  565. #if defined OnPlayerToggleControllable
  566. OnPlayerToggleControllable(playerid, 1);
  567. #endif
  568. }
  569. }
  570. return 1;
  571. }
  572. return 0;
  573. }
  574. stock Text:TextDrawCreateTimer(Float:x1, Float:y1, text[], ms) //By Gabriel "Larcius" Cordes
  575. {
  576. new Text:textid=TextDrawCreate(x1, y1, text);
  577. TextDrawDestroyTimer(textid, ms);
  578. return textid;
  579. }
  580. stock TextDrawDestroyTimer(Text:textid, ms) //By Gabriel "Larcius" Cordes
  581. {
  582. SetTimerEx("TextDrawDestroyTimer2",ms,false,"i",_:textid);
  583. return 1;
  584. }
  585. public TextDrawDestroyTimer2(textid) //By Gabriel "Larcius" Cordes
  586. {
  587. TextDrawDestroy(Text:textid);
  588. }
  589. stock encrypt(const string[])
  590. {
  591. return hash(string);
  592. }
  593. stock hash_key(const string[], key[]="", bit=32) //By Gabriel "Larcius" Cordes
  594. {
  595. new keyp[] = "abcdefghijklmopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ ,;.:-_~!\"§$%&/(){}[]=?`´'#+-*/\\äöü<>|^°µ²³";
  596. new retval[MAX_STRING],retval2[MAX_STRING],size,sum,j,ksize,hashedkey[MAX_STRING],c=0;
  597. new kpsize=strfind(keyp," ");
  598. format(retval, sizeof(retval), "%s",string);
  599. while(strlen(retval)>bit || c<2)
  600. {
  601. format(retval2, sizeof(retval2), "");
  602. j=strlen(retval);
  603. if(j<(2*bit))
  604. {
  605. j=(2*bit);
  606. c++;
  607. }
  608. j=floatval(floatdiv(j,2.0));
  609. size=strlen(retval);
  610. if(strlen(retval)<j)
  611. {
  612. size=j;
  613. }
  614. if(strlen(key)==0)
  615. {
  616. hashedkey=GetSingleChar(keyp,0);
  617. }
  618. else
  619. {
  620. hashedkey=hash(key,"",j);
  621. }
  622. ksize=strlen(hashedkey);
  623. for (new i=0; i<j; i++)
  624. {
  625. sum=((sum + strfind(keyp, GetSingleChar(hashedkey,(i%ksize))) + strfind(keyp, GetSingleChar(retval,(i%size))) + strfind(keyp, GetSingleChar(retval,((j+i)%size)))) % kpsize);
  626. strcat(retval2,GetSingleChar(keyp,sum));
  627. retval2=reverse(retval2);
  628. }
  629. format(retval, sizeof(retval), "%s",retval2);
  630. }
  631. return retval;
  632. }
  633. stock reverse(const source[]) //By Gabriel "Larcius" Cordes
  634. {
  635. new string[MAX_STRING];
  636. for(new i=(strlen(source)-1); i>=0; i--)
  637. {
  638. strcat(string,GetSingleChar(source,i));
  639. }
  640. return string;
  641. }
  642. stock GetSingleChar(const source[], num) //By Gabriel "Larcius" Cordes
  643. {
  644. new string[MAX_STRING];
  645. strmid(string,source,num,(num+1));
  646. return string;
  647. }
  648. stock left(const source[], pos) //By Alex "Y_Less" Cole (Edited by Sacky)
  649. {
  650. new retval[MAX_STRING];
  651. strmid(retval, source, 0, pos);
  652. return retval;
  653. }
  654. stock firstchars(const source[], len=1) //By Gabriel "Larcius" Cordes
  655. {
  656. new retval[MAX_STRING];
  657. strmid(retval, source, 0, len);
  658. return retval;
  659. }
  660. stock right(const source[], pos) //By Gabriel "Larcius" Cordes
  661. {
  662. new retval[MAX_STRING];
  663. strmid(retval, source, (pos+1), strlen(source));
  664. return retval;
  665. }
  666. stock lastchars(const source[], len=1) //By Alex "Y_Less" Cole
  667. {
  668. new retval[MAX_STRING];
  669. strmid(retval, source, (strlen(source)-len), strlen(source));
  670. return retval;
  671. }
  672. stock CountDownForPlayer(playerid, seconds, freeze, style=1) //By Gabriel "Larcius" Cordes
  673. {
  674. if(IsPlayerConnected(playerid))
  675. {
  676. if(!Counters[playerid][Down][Style])
  677. {
  678. Counters[playerid][Down][TextID]=0;
  679. }
  680. else if(Counters[playerid][Down][Style]!=style)
  681. {
  682. TextDrawDestroy(Text:Counters[playerid][Down][TextID]);
  683. }
  684. if(freeze==0 || style==0)
  685. {
  686. TogglePlayerControllable2(playerid, 1, FREEZE_COUNTDOWN);
  687. }
  688. else if(freeze)
  689. {
  690. TogglePlayerControllable2(playerid, 0, FREEZE_COUNTDOWN);
  691. SetCameraBehindPlayer(playerid);
  692. }
  693. Counters[playerid][Down][Style]=style;
  694. Counters[playerid][Down][Time]=seconds;
  695. return 1;
  696. }
  697. return 0;
  698. }
  699. stock CountDownForAll(seconds, freeze, style=1) //By Gabriel "Larcius" Cordes
  700. {
  701. new ret=0;
  702. for(new i=0; i<MAX_PLAYERS; i++)
  703. {
  704. if(CountDownForPlayer(i, seconds, freeze, style))
  705. {
  706. ret++;
  707. }
  708. }
  709. return ret;
  710. }
  711. stock CountUpForPlayer(playerid, seconds, freeze, style=1) //By Gabriel "Larcius" Cordes
  712. {
  713. if(IsPlayerConnected(playerid))
  714. {
  715. if(!Counters[playerid][Up][Style])
  716. {
  717. Counters[playerid][Up][TextID]=0;
  718. }
  719. else if(Counters[playerid][Up][Style]!=style)
  720. {
  721. TextDrawDestroy(Text:Counters[playerid][Up][TextID]);
  722. }
  723. if(freeze==0 || style==0)
  724. {
  725. TogglePlayerControllable2(playerid, 1, FREEZE_COUNTUP);
  726. }
  727. else if(freeze)
  728. {
  729. TogglePlayerControllable2(playerid, 0, FREEZE_COUNTUP);
  730. SetCameraBehindPlayer(playerid);
  731. }
  732. Counters[playerid][Up][Style]=style;
  733. Counters[playerid][Up][Time]=seconds;
  734. Counters[playerid][Up][Time2]=0;
  735. return 1;
  736. }
  737. return 0;
  738. }
  739. stock CountUpForAll(seconds, freeze, style=1) //By Gabriel "Larcius" Cordes
  740. {
  741. new ret=0;
  742. for(new i=0; i<MAX_PLAYERS; i++)
  743. {
  744. if(CountUpForPlayer(i, seconds, freeze, style))
  745. {
  746. ret++;
  747. }
  748. }
  749. return ret;
  750. }
  751. stock GetPlayerID(const playername[], partofname=0) //By Jan "DracoBlue" Schütze (edited by Gabriel "Larcius" Cordes)
  752. {
  753. new i;
  754. new playername1[MAX_STRING];
  755. for (i=0;i<MAX_PLAYERS;i++)
  756. {
  757. if (IsPlayerConnected(i))
  758. {
  759. GetPlayerName(i,playername1,sizeof(playername1));
  760. if (strcmp(playername1,playername,true)==0)
  761. {
  762. return i;
  763. }
  764. }
  765. }
  766. new correctsigns_userid=-1;
  767. new tmpuname[MAX_STRING];
  768. new hasmultiple=-1;
  769. if(partofname)
  770. {
  771. for (i=0;i<MAX_PLAYERS;i++)
  772. {
  773. if (IsPlayerConnected(i))
  774. {
  775. GetPlayerName(i,tmpuname,sizeof(tmpuname));
  776. if (strfind(tmpuname,partofname,true)==0)
  777. {
  778. hasmultiple++;
  779. correctsigns_userid=i;
  780. }
  781. if (hasmultiple>0)
  782. {
  783. return -2;
  784. }
  785. }
  786. }
  787. }
  788. return correctsigns_userid;
  789. }
  790. stock GetPlayerId(playername[])
  791. {
  792. return GetPlayerID(partofname[],0);
  793. }
  794. stock PlayerID(playername[])
  795. {
  796. return GetPlayerID(playername[],1);
  797. }
  798. stock PlayerId(playername[])
  799. {
  800. return GetPlayerID(playername[],1);
  801. }
  802. stock parsecommand(cmdtext[], cmd[], text[], parcount) //By Alex "Y_Less" Cole
  803. {
  804. new index = 0, length;
  805. length = strlen(cmdtext);
  806. while ((index < length) && (cmdtext[index] != ' '))
  807. {
  808. index++;
  809. }
  810. if (index == length)
  811. {
  812. strcat(cmd, cmdtext, MAX_STRING);
  813. text[0] = EOS;
  814. return 0;
  815. }
  816. else
  817. {
  818. strmid(cmd, cmdtext, 0, index, MAX_STRING);
  819. cmd[index] = EOS;
  820. strmid(text, cmdtext, index + 1, length, MAX_STRING);
  821. text[length] = EOS;
  822. if (parcount)
  823. {
  824. index = 0;
  825. new pars = 0;
  826. length = strlen(text);
  827. while (index < length)
  828. {
  829. if ((text[index] != ' ') && ((index == 0) || ((index > 0) && (text[index - 1] == ' '))))
  830. {
  831. pars++;
  832. }
  833. index++;
  834. }
  835. return pars;
  836. }
  837. else
  838. {
  839. return 1;
  840. }
  841. }
  842. return 0;
  843. }
  844. stock ReturnPlayerName(playerid) //By Alex "Y_Less" Cole
  845. {
  846. new pname[MAX_PLAYER_NAME];
  847. pname="Invalid PlayerID";
  848. if(IsPlayerConnected(playerid))
  849. {
  850. new pname[MAX_PLAYER_NAME];
  851. GetPlayerName(playerid, pname, sizeof (pname));
  852. }
  853. return pname
  854. }
  855. stock minrand(min, max) //By Alex "Y_Less" Cole
  856. {
  857. return random(max-min)+min;
  858. }
  859. stock Float:floatrand(Float:min, Float:max) //By Alex "Y_Less" Cole
  860. {
  861. new imin = floatround(min);
  862. return floatdiv(float(random((floatround(max)-imin)*100)+(imin*100)),100.0);
  863. }
  864. stock IsBetweenFloats(Float:f,Float:f1,Float:f2) //By Gabriel "Larcius" Cordes
  865. {
  866. switch(floatcmp(f1, f2))
  867. {
  868. case 0: if(f==f1){return 1;}
  869. case 1: if(f<=f1 && f>=f2){return 1;}
  870. case -1: if(f>=f1 && f<=f2){return 1;}
  871. }
  872. return 0;
  873. }
  874. stock GameTextForTeam(team, text[], time, style) //By Alex "Y_Less" Cole (edited by Gabriel "Larcius" Cordes)
  875. {
  876. ret=0;
  877. for (new i=0; i<MAX_PLAYERS; i++)
  878. {
  879. if (IsPlayerConnected(i) && Players[i][Cur_team]==team)
  880. {
  881. GameTextForPlayer(i, text, time, style);
  882. ret++;
  883. }
  884. }
  885. return ret;
  886. }
  887. stock SendClientMessageToTeam(team, color, text[]) //By Alex "Y_Less" Cole (edited by Gabriel "Larcius" Cordes)
  888. {
  889. new ret=0;
  890. for (new i=0; i<MAX_PLAYERS; i++)
  891. {
  892. if(IsPlayerConnected(i) && Players[i][Cur_team]==team)
  893. {
  894. SendClientMessage(i, color, text);
  895. ret++;
  896. }
  897. }
  898. return ret;
  899. }
  900. stock valstr2(num) //By Alex "Y_Less" Cole
  901. {
  902. new str[MAX_STRING];
  903. valstr(str, num);
  904. return str;
  905. }
  906. stock IsValidEmail(const email[]) //By Jan "DracoBlue" Schütze
  907. {
  908. new len=strlen(email);
  909. new cstate=0;
  910. for(new i=0;i<len;i++)
  911. {
  912. if ((cstate==0 || cstate==1) && (email[i]>='A' && email[i]<='Z') || (email[i]>='a' && email[i]<='z') || (email[i]=='.') || (email[i]=='-') || (email[i]=='_'))
  913. {
  914. }
  915. else
  916. {
  917. if ((cstate==0) &&(email[i]=='@'))
  918. {
  919. cstate=1;
  920. }
  921. else
  922. {
  923. return false;
  924. }
  925. }
  926. }
  927. if (cstate<1)
  928. {
  929. return false;
  930. }
  931. if (len<6)
  932. {
  933. return false;
  934. }
  935. if ((email[len-3]=='.') || (email[len-4]=='.') || (email[len-5]=='.'))
  936. {
  937. return true;
  938. }
  939. return false;
  940. }
  941. stock GetVehicleSpawnPos(vehicleid,&Float:spawn_x,&Float:spawn_y,&Float:spawn_z,&Float:angle_z) //By Gabriel "Larcius" Cordes
  942. {
  943. if(IsVehicleConnected(vehicleid))
  944. {
  945. }
  946. return -1,-1,-1,-1;
  947. }
  948. stock GetPlayerLastVehicleID(playerid) //By Gabriel "Larcius" Cordes
  949. {
  950. if(IsPlayerConnected(playerid))
  951. {
  952. return Players[playerid][Last_Vehicle];
  953. }
  954. return -1;
  955. }
  956. stock GetVehicleLastTrailerID(vehicleid) //By Gabriel "Larcius" Cordes
  957. {
  958. if(IsVehicleConnected(vehicleid))
  959. {
  960. return Vehicles[vehicleid][Last_Trailer];
  961. }
  962. return -1;
  963. }
  964. stock GetVehicleLastTrailer(vehicleid)
  965. {
  966. return GetVehicleLastTrailerID(vehicleid);
  967. }
  968. stock IsPlayerDriver(playerid) //By Sacky
  969. {
  970. if(IsPlayerConnected(playerid) && GetPlayerState(playerid)==PLAYER_STATE_DRIVER)
  971. {
  972. return 1;
  973. }
  974. return 0;
  975. }
  976. stock GetVehicleDriverID(vehicleid) //By Jan "DracoBlue" Schütze
  977. {
  978. if(IsVehicleConnected(vehicleid))
  979. {
  980. for (new i=0;i<MAX_PLAYERS;i++)
  981. {
  982. if (IsPlayerConnected(i) && GetPlayerVehicleID(i)==vehicleid && IsPlayerDriver(i))
  983. {
  984. return i;
  985. }
  986. }
  987. }
  988. return -1;
  989. }
  990. stock VehicleDriverID(vehicleid)
  991. {
  992. return GetVehicleDriverID(vehicleid);
  993. }
  994. stock IsNumeric(const string[]) //By Jan "DracoBlue" Schütze (edited by Gabriel "Larcius" Cordes
  995. {
  996. new length=strlen(string);
  997. if(length==0)
  998. {
  999. return 0;
  1000. }
  1001. for (new i=0; i<length; i++)
  1002. {
  1003. if (!((string[i] <= '9' && string[i] >= '0') || (i==0 && (string[i]=='-' || string[i]=='+'))))
  1004. {
  1005. return false;
  1006. }
  1007. }
  1008. return 0;
  1009. }
  1010. stock SendClientMessageToAdmins(colour,const str[]) //By Mike (Edited by Sacky)
  1011. {
  1012. new ret=0;
  1013. for (new i=0; i<MAX_PLAYERS; i++)
  1014. {
  1015. if (IsPlayerConnected(i) && IsPlayerAdmin(i))
  1016. {
  1017. SendClientMessage(i, colour, str);
  1018. ret++;
  1019. }
  1020. }
  1021. return ret;
  1022. }
  1023. stock Float:GetDistanceBetweenPoints(Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2) //By Gabriel "Larcius" Cordes
  1024. {
  1025. return floatadd(floatadd(floatsqroot(floatpower(floatsub(x1,x2),2)),floatsqroot(floatpower(floatsub(y1,y2),2))),floatsqroot(floatpower(floatsub(z1,z2),2)));
  1026. }
  1027. stock Float:GetDistanceToPoint(playerid,Float:x1,Float:y1,Float:z1) //By Gabriel "Larcius" Cordes
  1028. {
  1029. if (IsPlayerConnected(playerid))
  1030. {
  1031. new Float:x2,Float:y2,Float:z2;
  1032. GetPlayerPos(playerid,x2,y2,z2);
  1033. return GetDistanceBetweenPoints(x1,y1,z1,x2,y2,z2);
  1034. }
  1035. return INF_FLOAT;
  1036. }
  1037. stock Float:GetDistanceToVehicle(playerid,vehicleid) //By Darkrealm (Edited by Sacky and Gabriel "Larcius" Cordes)
  1038. {
  1039. if (IsPlayerConnected(playerid) && IsVehicleConnected(vehicleid))
  1040. {
  1041. new Float:x1,Float:y1,Float:z1;
  1042. GetVehiclePos(vehicleid,x1,y1,z1);
  1043. return GetDistanceToPoint(playerid,x1,y1,z1);
  1044. }
  1045. return INF_FLOAT;
  1046. }
  1047. stock Float:GetDistanceToCar(playerid,vehicleid) //By Darkrealm (Edited by Sacky and Gabriel "Larcius" Cordes)
  1048. {
  1049. return GetDistanceToVehicle(playerid,vehicleid);
  1050. }
  1051. stock GetClosestVehicle(playerid) //By Darkrealm (edited by Gabrie "Larcius" Cordes)
  1052. {
  1053. if(IsPlayerConnected(playerid) && IsVehicleConnected(0))
  1054. {
  1055. new closestvehicle=0;
  1056. new Float:closestdist=GetDistanceToVehicle(playerid,0);
  1057. for(new vehicleid=0; vehicleid<MAX_VEHICLES; vehicleid++)
  1058. {
  1059. new Float:dist = GetDistanceToVehicle(playerid,vehicleid);
  1060. if ((dist < closestdist))
  1061. {
  1062. closestdist = dist;
  1063. closestvehicle = vehicleid;
  1064. }
  1065. }
  1066. return closestvehicle;
  1067. }
  1068. return -1;
  1069. }
  1070. stock GetClosestCar(playerid)
  1071. {
  1072. return GetClosestVehicle(playerid);
  1073. }
  1074. stock Float:GetDistanceBetweenPlayers(playerid,playerid2) //By Slick (Edited by Sacky and Gabriel "Larcius" Cordes)
  1075. {
  1076. if(IsPlayerConnected(playerid) && IsPlayerConnected(playerid2))
  1077. {
  1078. new Float:x1,Float:y1,Float:z1;
  1079. GetPlayerPos(playerid2,x1,y1,z1);
  1080. return GetDistanceToPoint(playerid,x1,y1,z1);
  1081. }
  1082. return INF_FLOAT;
  1083. }
  1084. stock GetClosestPlayer(playerid) //By Slick (edited by Gabriel "Larcius" Cordes)
  1085. {
  1086. if(IsPlayerConnected(playerid) && IsPlayerConnected(0))
  1087. {
  1088. new closestplayer=0;
  1089. new Float:closestdist=GetDistanceBetweenPlayers(playerid,0);
  1090. for(new playerid2=0; playerid2<MAX_PLAYERS; playerid2++)
  1091. {
  1092. new Float:dist = GetDistanceBetweenPlayers(playerid,playerid2);
  1093. if ((dist < closestdist))
  1094. {
  1095. closestdist = dist;
  1096. closestplayer = playerid;
  1097. }
  1098. }
  1099. return closestplayer;
  1100. }
  1101. return -1;
  1102. }
  1103. stock GetClosestTeamPlayer(playerid) //By Gabriel "Larcius" Cordes
  1104. {
  1105. if(IsPlayerConnected(playerid) && IsPlayerConnected(0))
  1106. {
  1107. new closestplayer=0;
  1108. new Float:closestdist=GetDistanceBetweenPlayers(playerid,0);
  1109. for(new playerid2=0; playerid2<MAX_PLAYERS; playerid2++)
  1110. {
  1111. new Float:dist = GetDistanceBetweenPlayers(playerid,playerid2);
  1112. if (dist<closestdist && Players[playerid2][Cur_team]==Players[playerid][Cur_team])
  1113. {
  1114. closestdist = dist;
  1115. closestplayer = playerid;
  1116. }
  1117. }
  1118. return closestplayer;
  1119. }
  1120. return -1;
  1121. }
  1122. stock TwoWayRand(value) //By Allan
  1123. {
  1124. value = random(value*2+1)-value;
  1125. return value;
  1126. }
  1127. stock Float:QuadraticRootCalc(Float:Xsq,Float:X1,Float:num) //By Allan (corrected by Gabriel "Larcius" Cordes)
  1128. {
  1129. return floatmul(floatadd(floatmul(floatdiv(floatsqroot(floatmul(floatmul(floatmul(floatpower(X1,2),4.0),Xsq),num)),2.0),Xsq),X1),floatsub(floatmul(floatdiv(floatsqroot(floatmul(floatmul(floatmul(floatpower(X1,2),4.0),Xsq),num)),2.0),Xsq),X1));
  1130. }
  1131. stock SendFormattedGameTextToPlayer(playerid, const msg[], time, style, define) //By Allan
  1132. {
  1133. if(IsPlayerConnected(playerid))
  1134. {
  1135. new wrap[256];
  1136. format(wrap, sizeof(wrap), msg, define);
  1137. GameTextForPlayer(playerid,wrap,time,style);
  1138. return 1;
  1139. }
  1140. return 0;
  1141. }
  1142. stock SendFormattedGameTextToAll(const msg[], time, style, define) //By Allan (edited by Gabriel "Larcius" Cordes)
  1143. {
  1144. new ret=0;
  1145. for(new i=0; i<MAX_PLAYERS; i++)
  1146. {
  1147. if(IsPlayerConnected(i))
  1148. {
  1149. if(SendFormattedGameTextToPlayer(playerid, msg, time, style, define))
  1150. {
  1151. ret++;
  1152. }
  1153. }
  1154. }
  1155. return ret;
  1156. }
  1157. stock GivePlayerWeaponAlt(playerid, weaponid, ammo) //By Allan (Edited by Y_Less)
  1158. {
  1159. if ((weaponid > 15 && weaponid < 22) || (weaponid > 32 && weaponid < 37) || (weaponid > 38 && weaponid < 41) || (weaponid > 42 && weaponid != 46))
  1160. {
  1161. weaponid = 0;
  1162. print("Non-Working weapon class specified");
  1163. SendClientMessage(playerid, 0x0000FFAA, "Non-Working weapon class specified");
  1164. }
  1165. GivePlayerWeapon(playerid, weaponid, ammo);
  1166. return 1;
  1167. }
  1168. stock SecondsToString(time,mode=0) //By Gabriel "Larcius" Cordes
  1169. {
  1170. new seconds,minutes,minutes1,hours,string0[MAX_STRING],string1[MAX_STRING],string2[MAX_STRING];
  1171. seconds=time%60;
  1172. minutes=(time-seconds)%3600;
  1173. minutes1=(time-seconds)/60;
  1174. hours=(time-minutes*60-seconds)/3600;
  1175. if(hours<10)
  1176. {
  1177. format(string0, sizeof(string0), "0%d", hours);
  1178. }
  1179. else
  1180. {
  1181. format(string0, sizeof(string0), "%d", hours);
  1182. }
  1183. if(minutes<10)
  1184. {
  1185. format(string0, sizeof(string0), "%s:0%d",string0,minutes);
  1186. }
  1187. else
  1188. {
  1189. format(string0, sizeof(string0), "%s,%d",string0,minutes);
  1190. }
  1191. if(minutes1<10)
  1192. {
  1193. format(string1, sizeof(string1), "0%d",minutes1);
  1194. }
  1195. else
  1196. {
  1197. format(string1, sizeof(string1), "%d",minutes1);
  1198. }
  1199. if(seconds<10)
  1200. {
  1201. format(string0, sizeof(string0), "%s:0%d",string0,seconds);
  1202. format(string1, sizeof(string1), "%s:0%d",string1,seconds);
  1203. }
  1204. else
  1205. {
  1206. format(string0, sizeof(string0), "%s:%d",string0,seconds);
  1207. format(string1, sizeof(string1), "%s:%d",string1,seconds);
  1208. }
  1209. if(hours>0)
  1210. {
  1211. format(string2, sizeof(string2), "%d hours", hours);
  1212. }
  1213. if(minutes>0)
  1214. {
  1215. if(hours>0)
  1216. {
  1217. if(seconds>0)
  1218. {
  1219. format(string2, sizeof(string2), "%s, %d minutes", string2, minutes);
  1220. }
  1221. else
  1222. {
  1223. format(string2, sizeof(string2), "%s and %d minutes", string2, minutes);
  1224. }
  1225. }
  1226. }
  1227. if(seconds>0)
  1228. {
  1229. if(hours>0 || minutes>0)
  1230. {
  1231. format(string2, sizeof(string2), "%s and %d seconds", string2, seconds);
  1232. }
  1233. else
  1234. {
  1235. format(string2, sizeof(string2), "%d seconds", string2, seconds);
  1236. }
  1237. }
  1238. if(hours==0 && minutes==0 && seconds==0)
  1239. {
  1240. format(string2, sizeof(string2), "0 seconds");
  1241. }
  1242. switch(mode)
  1243. {
  1244. case 0: return string0;
  1245. case 1: return string1;
  1246. case 2: return string2;
  1247. }
  1248. return string0;
  1249. }
  1250. stock ConvertSeconds(time)
  1251. {
  1252. return SecondsToString(time,2)
  1253. }
  1254. stock timeconvert_seconds(time)
  1255. {
  1256. return SecondsToString(time,1);
  1257. }
  1258. stock wiper(playerid) //By Spectre
  1259. {
  1260. if(IsPlayerConnected(playerid))
  1261. {
  1262. for (new i=0;i<10;i++)
  1263. {
  1264. SendClientMessage(playerid,0xFFFFFFAA,"\n");
  1265. }
  1266. return 1;
  1267. }
  1268. return 0;
  1269. }
  1270. stock GetCurrentPosition(playerid) //By Sacky
  1271. {
  1272. new Float:x1, Float:y1, Float:z1, Float:a;
  1273. new string[MAX_STRING];
  1274. if(IsPlayerConnected(playerid))
  1275. {
  1276. GetPlayerPos(playerid,x1,y1,z1);
  1277. GetPlayerFacingAngle(playerid,a);
  1278. format(string,sizeof(string),"x: %d, y: %d, z: %d, angle: %d",floatround(x1),floatround(y1),floatround(z1),floatround(a));
  1279. return string;
  1280. }
  1281. return string;
  1282. }
  1283. stock GetVehicles() //By Gabriel "Larcius" Cordes
  1284. {
  1285. new vehicles=0;
  1286. for(new i=0;i<MAX_VEHICLES;i++)
  1287. {
  1288. if(IsVehicleConnected(i))
  1289. {
  1290. vehicles++;
  1291. }
  1292. }
  1293. return vehicles;
  1294. }
  1295. stock VehicleDriverName(vehicleid) //By Sacky
  1296. {
  1297. new playername[MAX_PLAYER_NAME];
  1298. for(new i=0;i<MAX_PLAYERS;i++)
  1299. {
  1300. if(IsPlayerConnected(i))
  1301. {
  1302. if(IsPlayerInVehicle(i,vehicleid))
  1303. {
  1304. GetPlayerName(i,playername,sizeof(playername));
  1305. return playername;
  1306. }
  1307. }
  1308. }
  1309. return playername;
  1310. }
  1311. stock IsPlayerInAnyInterior(playerid) //By Sacky (edited by Gabriel "Larcius" Cordes)
  1312. {
  1313. if(IsPlayerConnected(playerid))
  1314. {
  1315. new Float:x, Float:y, Float:z;
  1316. GetPlayerPos(playerid,x,y,z);
  1317. if(GetPlayerInterior(playerid) > 0 || (z>900 && !IsPlayerInPlane(playerid) && !IsPlayerInHeli(playerid)))
  1318. {
  1319. return 1;
  1320. }
  1321. }
  1322. return 0;
  1323. }
  1324. stock IsPlayerPassenger(playerid) //By Sacky
  1325. {
  1326. if(IsPlayerConnected(playerid) && GetPlayerState(playerid)==PLAYER_STATE_PASSENGER)
  1327. {
  1328. return 1;
  1329. }
  1330. return 0;
  1331. }
  1332. stock IsPlayerOnFoot(playerid) //By Sacky
  1333. {
  1334. if(IsPlayerConnected(playerid) && GetPlayerState(playerid)==PLAYER_STATE_ONFOOT)
  1335. {
  1336. return 1;
  1337. }
  1338. return 0;
  1339. }
  1340. stock IsPlayerOnBike(playerid) //By Gabriel "Larcius" Cordes
  1341. {
  1342. if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
  1343. {
  1344. if(GetVehicleType(GetPlayerVehicleID(playerid))==VTYPE_BIKE)
  1345. {
  1346. return 1;
  1347. }
  1348. }
  1349. return 0;
  1350. }
  1351. stock IsPlayerOnBicycle(playerid) //By Gabriel "Larcius" Cordes
  1352. {
  1353. if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
  1354. {
  1355. if(GetVehicleType(GetPlayerVehicleID(playerid))==VTYPE_BMX)
  1356. {
  1357. return 1;
  1358. }
  1359. }
  1360. return 0;
  1361. }
  1362. stock IsPlayerOnBMX(playerid)
  1363. {
  1364. return IsPlayerOnBicycle(playerid);
  1365. }
  1366. stock IsPlayerInBoat(playerid) //By Gabriel "Larcius" Cordes
  1367. {
  1368. if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
  1369. {
  1370. if(GetVehicleType(GetPlayerVehicleID(playerid))==VTYPE_SEA)
  1371. {
  1372. return 1;
  1373. }
  1374. }
  1375. return 0;
  1376. }
  1377. stock IsPlayerInHeavy(playerid) //By Gabriel "Larcius" Cordes
  1378. {
  1379. if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
  1380. {
  1381. if(GetVehicleType(GetPlayerVehicleID(playerid))==VTYPE_HEAVY)
  1382. {
  1383. return 1;
  1384. }
  1385. }
  1386. return 0;
  1387. }
  1388. stock IsPlayerInTruck(playerid)
  1389. {
  1390. return IsPlayerInHeavy(playerid);
  1391. }
  1392. stock IsPlayerInTrain(playerid) //By Gabriel "Larcius" Cordes
  1393. {
  1394. if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
  1395. {
  1396. if(GetVehicleType(GetPlayerVehicleID(playerid))==VTYPE_TRAIN)
  1397. {
  1398. return 1;
  1399. }
  1400. }
  1401. return 0;
  1402. }
  1403. stock IsPlayerInHelicopter(playerid) //By Gabriel "Larcius" Cordes
  1404. {
  1405. if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
  1406. {
  1407. if(GetVehicleType(GetPlayerVehicleID(playerid))==VTYPE_HELI)
  1408. {
  1409. return 1;
  1410. }
  1411. }
  1412. return 0;
  1413. }
  1414. stock IsPlayerInHeli(playerid)
  1415. {
  1416. return IsPlayerInHelicopter(playerid);
  1417. }
  1418. stock IsPlayerInPlane(playerid) //By Gabriel "Larcius" Cordes
  1419. {
  1420. if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
  1421. {
  1422. if(GetVehicleType(GetPlayerVehicleID(playerid))==VTYPE_PLANE)
  1423. {
  1424. return 1;
  1425. }
  1426. }
  1427. return 0;
  1428. }
  1429. stock IsPlayerInMonsterTruck(playerid) //By Gabriel "Larcius" Cordes
  1430. {
  1431. if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
  1432. {
  1433. if(GetVehicleType(GetPlayerVehicleID(playerid))==VTYPE_MONSTER)
  1434. {
  1435. return 1;
  1436. }
  1437. }
  1438. return 0;
  1439. }
  1440. stock IsPlayerInCar(playerid) //By Gabriel "Larcius" Cordes
  1441. {
  1442. if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
  1443. {
  1444. if(GetVehicleType(GetPlayerVehicleID(playerid))==VTYPE_CAR)
  1445. {
  1446. return 1;
  1447. }
  1448. }
  1449. return 0;
  1450. }
  1451. stock IsPlayerOnQuad(playerid) //By Gabriel "Larcius" Cordes
  1452. {
  1453. if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
  1454. {
  1455. if(GetVehicleType(GetPlayerVehicleID(playerid))==VTYPE_QUAD)
  1456. {
  1457. return 1;
  1458. }
  1459. }
  1460. return 0;
  1461. }
  1462. stock IsVehicleTrailer(vehicleid) //By Gabriel "Larcius" Cordes
  1463. {
  1464. if(GetVehicleType(vehicleid)==VTYPE_TRAILER)
  1465. {
  1466. return 1;
  1467. }
  1468. return 0;
  1469. }
  1470. stock IsPlayerInQuad(playerid) //By Gabriel "Larcius" Cordes
  1471. {
  1472. return IsPlayerOnQuad(playerid);
  1473. }
  1474. stock ShowSpeedForPlayer(playerid,a=SPEED_KMPH) //By Gabriel "Larcius" Cordes
  1475. {
  1476. if(IsPlayerConnected(playerid))
  1477. {
  1478. Players[playerid][Speed2][Show]=a;
  1479. return 1;
  1480. }
  1481. return 0;
  1482. }
  1483. stock ShowSpeedForAll(a=SPEED_KMPH) //By Gabriel "Larcius" Cordes
  1484. {
  1485. new ret=0;
  1486. for(new i=0;i<MAX_PLAYERS;i++)
  1487. {
  1488. if(ShowSpeedForPlayer(i,a))
  1489. {
  1490. ret++;
  1491. }
  1492. }
  1493. return ret;
  1494. }
  1495. stock HideSpeedForPlayer(playerid) //By Gabriel "Larcius" Cordes
  1496. {
  1497. if(IsPlayerConnected(playerid))
  1498. {
  1499. Players[playerid][Speed2][Show]=0;
  1500. return 1;
  1501. }
  1502. return 0;
  1503. }
  1504. stock HideSpeedForAll() //By Gabriel "Larcius" Cordes
  1505. {
  1506. new ret=0;
  1507. for(new i=0;i<MAX_PLAYERS;i++)
  1508. {
  1509. if(HideSpeedForPlayer(i))
  1510. {
  1511. ret++;
  1512. }
  1513. }
  1514. return ret;
  1515. }
  1516. stock ShowAccelerationForPlayer(playerid,a=ACC_MPS2) //By Gabriel "Larcius" Cordes
  1517. {
  1518. if(IsPlayerConnected(playerid))
  1519. {
  1520. Players[playerid][Acceleration][Show]=a;
  1521. return 1;
  1522. }
  1523. return 0;
  1524. }
  1525. stock ShowAccelerationForAll(a=ACC_MPS2) //By Gabriel "Larcius" Cordes
  1526. {
  1527. new ret=0;
  1528. for(new i=0;i<MAX_PLAYERS;i++)
  1529. {
  1530. if(ShowAccelerationForPlayer(i,a))
  1531. {
  1532. ret++;
  1533. }
  1534. }
  1535. return ret;
  1536. }
  1537. stock HideAccelerationForPlayer(playerid) //By Gabriel "Larcius" Cordes
  1538. {
  1539. if(IsPlayerConnected(playerid))
  1540. {
  1541. Players[playerid][Acceleration][Show]=0;
  1542. return 1;
  1543. }
  1544. return 0;
  1545. }
  1546. stock HideAccelerationForAll() //By Gabriel "Larcius" Cordes
  1547. {
  1548. new ret=0;
  1549. for(new i=0;i<MAX_PLAYERS;i++)
  1550. {
  1551. if(HideAccelerationForPlayer(i))
  1552. {
  1553. ret++;
  1554. }
  1555. }
  1556. return ret;
  1557. }
  1558. stock GetVehicleName(vehicleid) //By Sacky
  1559. {
  1560. new modelid=612;
  1561. if(IsVehicleConnected(vehicleid))
  1562. {
  1563. modelid=GetVehicleModel(vehicleid);
  1564. }
  1565. return VehicleNames[(modelid-400)];
  1566. }
  1567. stock GetVehicleNameByModel(modelid) //By Gabriel "Larcius" Cordes
  1568. {
  1569. if(400<modelid || modelid>611)
  1570. {
  1571. modelid=612;
  1572. }
  1573. return VehicleNames[(modelid-400)];
  1574. }
  1575. stock Float:GetDistanceToPointXY(playerid,Float:xs,Float:ys) //By Gabriel "Larcius" Cordes
  1576. {
  1577. new Float:x1,Float:y1,Float:z1;
  1578. GetPlayerPos(playerid,x1,y1,z1);
  1579. return GetDistanceToPoint(playerid,xs,ys,z1);
  1580. }
  1581. stock Float:GetDistanceBetweenPointsXY(Float:x1,Float:y1,Float:x2,Float:y2) //By Gabriel "Larcius" Cordes
  1582. {
  1583. return GetDistanceBetweenPoints(x1,y1,0.0,x2,y2,0.0);
  1584. }
  1585. stock Float:GetPlayerDistanceToPointXY(playerid,Float:xs,Float:ys)
  1586. {
  1587. return GetDistanceToPointXY(playerid,xs,ys);
  1588. }
  1589. stock Float:GetPlayerDistanceToPoint(playerid,Float:xs,Float:ys) //By Sacky
  1590. {
  1591. return GetDistanceToPointXY(playerid,xs,ys);
  1592. }
  1593. stock Float:GetPlayerDistanceToPointEx(playerid,Float:xs,Float:ys,Float:zs) //By Sacky
  1594. {
  1595. return GetDistanceToPoint(playerid,xs,ys,zs);
  1596. }
  1597. stock Float:GetPointDistanceToPoint(Float:x1,Float:y1,Float:x2,Float:y2) //By Sacky
  1598. {
  1599. return GetDistanceBetweenPoints(x1,y1,0.0,x2,y2,0.0);
  1600. }
  1601. stock Float:GetPointDistanceToPointEx(Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2) //By Sacky
  1602. {
  1603. return GetDistanceBetweenPoints(x1,y1,z1,x2,y2,z2);
  1604. }
  1605. stock IsPlayerInRectangle(playerid, Float:x1, Float:y1, Float:x2, Float:y2)
  1606. {
  1607. if(IsPlayerConnected(playerid))
  1608. {
  1609. new Float:xs,Float:ys,Float:zs;
  1610. GetPlayerPos(playerid,xs,ys,zs);
  1611. return IsPointInRectangle(xs,ys,x1,y1,x2,y2);
  1612. }
  1613. return 0;
  1614. }
  1615. stock IsPointInRectangle(Float:xs, Float:ys, Float:x1, Float:y1, Float:x2, Float:y2) //By Alex "Y_Less" Cole (edited by Gabriel "Larcius" Cordes)
  1616. {
  1617. if(IsBetweenFloats(xs,x1,x2) && IsBetweenFloats(ys,y1,y2))
  1618. {
  1619. return 1;
  1620. }
  1621. return 0;
  1622. }
  1623. stock IsPointInCircle(Float:xs,Float:ys,Float:x1,Float:y1,Float:radius1) //By Sacky
  1624. {
  1625. if(GetDistanceBetweenPointsXY(xs,ys,x1,y1)<=radius1)
  1626. {
  1627. return 1;
  1628. }
  1629. return 0;
  1630. }
  1631. stock IsPlayerInCircle(playerid,Float:x1,Float:y1,Float:radius1)
  1632. {
  1633. if(IsPlayerConnected(playerid))
  1634. {
  1635. new Float:xs,Float:ys,Float:zs;
  1636. GetPlayerPos(playerid,xs,ys,zs);
  1637. return IsPointInCircle(xs,ys,x1,y1,radius1);
  1638. }
  1639. return 0;
  1640. }
  1641. stock IsPlayerInAshlar(playerid,Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2)
  1642. {
  1643. if(IsPlayerConnected(playerid))
  1644. {
  1645. new Float:xs,Float:ys,Float:zs;
  1646. GetPlayerPos(playerid,xs,ys,zs);
  1647. return IsPointInAshlar(xs,ys,zs,x1,y1,z1,x2,y2,z2);
  1648. }
  1649. return 0;
  1650. }
  1651. stock IsPointInAshlar(Float:xs,Float:ys,Float:zs,Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2) //By 50p (edited by Gabriel "Larcius" Cordes)
  1652. {
  1653. if(IsBetweenFloats(xs,x1,x2) && IsBetweenFloats(ys,y1,y2) && IsBetweenFloats(zs,z1,z2))
  1654. {
  1655. return 1;
  1656. }
  1657. return 0;
  1658. }
  1659. stock IsPlayerInCube(Float:xs,Float:ys,Float:zs,Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2)
  1660. {
  1661. return IsPlayerInAshlar(xs,ys,zs,x1,y1,z1,x2,y2,z2);
  1662. }
  1663. stock IsPointInCube(playerid,Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2)
  1664. {
  1665. return IsPointInAshlar(playerid,x1,y1,z1,x2,y2,z2);
  1666. }
  1667. stock IsPlayerInSphere(playerid,Float:x1,Float:y1,Float:z1,Float:radius)
  1668. {
  1669. if(IsPlayerConnected(playerid))
  1670. {
  1671. new Float:xs,Float:ys,Float:zs;
  1672. GetPlayerPos(playerid,xs,ys,zs);
  1673. return IsPointInSphere(xs,ys,zs,x1,y1,z1,radius);
  1674. }
  1675. return 0;
  1676. }
  1677. stock IsPointInSphere(Float:xs,Float:ys,Float:zs,Float:x1,Float:y1,Float:z1,Float:radius) //By Sacky
  1678. {
  1679. if(GetDistanceBetweenPoints(xs,ys,zs,x1,y1,z1)<=radius)
  1680. {
  1681. return 1;
  1682. }
  1683. return 0;
  1684. }
  1685. stock IsPlayerInCylinder(playerid,Float:x1,Float:y1,Float:z1,Float:h1,Float:radius1)
  1686. {
  1687. if(IsPlayerConnected(playerid))
  1688. {
  1689. new Float:xs,Float:ys,Float:zs;
  1690. GetPlayerPos(playerid,xs,ys,zs);
  1691. return IsPointInCylinder(xs,ys,zs,x1,y1,z1,h1,radius1);
  1692. }
  1693. return 0;
  1694. }
  1695. stock IsPointInCylinder(Float:xs,Float:ys,Float:zs,Float:x1,Float:y1,Float:z1,Float:h1,Float:radius1) //By Sacky
  1696. {
  1697. if(GetDistanceBetweenPointsXY(xs,ys,x1,y1)<=radius1 && zs>=z1 && zs<=(z1+h1))
  1698. {
  1699. return 1;
  1700. }
  1701. return 0;
  1702. }
  1703. stock TakePlayerMoney(playerid,money) //By Sacky
  1704. {
  1705. if(IsPlayerConnected(playerid))
  1706. {
  1707. GivePlayerMoney(playerid,0-money);
  1708. return 1;
  1709. }
  1710. return 0;
  1711. }
  1712. stock DestroyPickup2(pickupid) //By Gabriel "Larcius" Cordes
  1713. {
  1714. if(IsPickupConnected(pickupid))
  1715. {
  1716. DestroyPickup(pickupid);
  1717. Pickups[pickupid][Model]=0;
  1718. Pickups[pickupid][Type]=0;
  1719. Pickups[pickupid][X]=0;
  1720. Pickups[pickupid][Y]=0;
  1721. Pickups[pickupid][Z]=0;
  1722. return 1;
  1723. }
  1724. return 0;
  1725. }
  1726. stock CreatePickup2(model,type,Float:x1,Float:y1,Float:z1) //By Gabriel "Larcius" Cordes
  1727. {
  1728. if(GetPickups()<MAX_PICKUPS)
  1729. {
  1730. new pickupid=CreatePickup(model,type,x1,y1,z1);
  1731. Pickups[pickupid][Model]=model;
  1732. Pickups[pickupid][Type]=type;
  1733. Pickups[pickupid][X]=x1;
  1734. Pickups[pickupid][Y]=y1;
  1735. Pickups[pickupid][Z]=z1;
  1736. return 1;
  1737. }
  1738. return 0;
  1739. }
  1740. stock AddStaticPickup2(model,type,Float:x1,Float:y1,Float:z1) //By Sacky (edited by Gabriel "Larcius" Cordes)
  1741. {
  1742. if(GetPickups()<MAX_PICKUPS)
  1743. {
  1744. new pickupid=AddStaticPickup(model,type,x1,y1,z1);
  1745. Pickups[pickupid][Model]=model;
  1746. Pickups[pickupid][Type]=type;
  1747. Pickups[pickupid][X]=x1;
  1748. Pickups[pickupid][Y]=y1;
  1749. Pickups[pickupid][Z]=z1;
  1750. return 1;
  1751. }
  1752. return 0;
  1753. }
  1754. stock SetVehicleParamsForPlayer2(vehicleid, playerid, objective, doorslocked, trailer=0) //By Gabriel "Larcius" Cordes
  1755. {
  1756. if(IsPlayerConnected(playerid) && IsVehicleConnected(vehicleid))
  1757. {
  1758. /* if(objective==0 && IsVehicleObjectivedForPlayer(vehicleid,playerid))
  1759. {
  1760. new Float:x1,Float:y1,Float:z1,Float:angle_z;
  1761. GetVehiclePos(vehicleid,x1,y1,z1);
  1762. GetVehicleZAngle(vehicleid,angle_z);
  1763. SetVehicleToRespawn(vehicleid);
  1764. if(IsVehicleTrailer(vehicleid))
  1765. {
  1766. AttachTrailerToVehicle(vehicleid,trailer);
  1767. }
  1768. else
  1769. {
  1770. PutPlayerInVehicle(playerid,vehicleid,0);
  1771. SetVehiclePos(vehicleid,x1,y1,z1);
  1772. SetVehicleZAngle(vehicleid,angle_z);
  1773. }
  1774. }*/
  1775. SetVehicleParamsForPlayer(vehicleid, playerid, objective, doorslocked);
  1776. Vehicles[vehicleid][Objective][playerid]=objective;
  1777. Vehicles[vehicleid][Locked][playerid]=doorslocked;
  1778. if (trailer && IsTrailerAttachedToVehicle(vehicleid))
  1779. {
  1780. SetVehicleParamsForPlayer2(GetVehicleTrailer(vehicleid), playerid, objective, doorslocked, vehicleid);
  1781. }
  1782. return 1;
  1783. }
  1784. return 0;
  1785. }
  1786. stock SetVehicleParamsForAll(vehicleid, objective, doorslocked, trailer=0) //By Gabriel "Larcius" Cordes
  1787. {
  1788. new ret=0;
  1789. for (new i=0; i<MAX_PLAYERS; i++)
  1790. {
  1791. if(SetVehicleParamsForPlayer2(vehicleid, i, objective, doorslocked, trailer))
  1792. {
  1793. ret++;
  1794. }
  1795. }
  1796. return ret;
  1797. }
  1798. stock DestroyVehicle2(vehicleid)
  1799. {
  1800. if(IsVehicleConnected(vehicleid))
  1801. {
  1802. SetVehicleParamsForAll(vehicleid, 0, 0);
  1803. DestroyVehicle(vehicleid);
  1804. Vehicles[vehicleid][X]=0.0;
  1805. Vehicles[vehicleid][Y]=0.0;
  1806. Vehicles[vehicleid][Z]=0.0;
  1807. Vehicles[vehicleid][Angle]=0.0;
  1808. Vehicles[vehicleid][Health]=0.0;
  1809. Vehicles[vehicleid][Dynamic]=0;
  1810. Vehicles[vehicleid][Respawn]=0;
  1811. Vehicles[vehicleid][Color1]=0;
  1812. Vehicles[vehicleid][Color2]=0;
  1813. Vehicles[vehicleid][Locked]=0;
  1814. return 1;
  1815. }
  1816. return 0;
  1817. }
  1818. stock AddStaticVehicleEx2(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, color1, color2,respawn_delay) //By Sacky (edited by Gabriel "Larcius" Cordes)
  1819. {
  1820. if(GetVehicles()<MAX_VEHICLES)
  1821. {
  1822. new id=AddStaticVehicleEx(modelid, spawn_x, spawn_y, spawn_z, z_angle, color1, color2,respawn_delay), Float:h;
  1823. GetVehicleHealth(id, h);
  1824. Vehicles[id][X]=spawn_x;
  1825. Vehicles[id][Y]=spawn_y;
  1826. Vehicles[id][Z]=spawn_z;
  1827. Vehicles[id][Health]=h;
  1828. Vehicles[id][Color1]=color1;
  1829. Vehicles[id][Color2]=color2;
  1830. Vehicles[id][Respawn]=respawn_delay;
  1831. Vehicles[id][Dynamic]=0;
  1832. Vehicles[id][Last_Trailer]=-1;
  1833. Vehicles[id][Cur_Trailer]=-1;
  1834. Vehicles[id][Static]=1;
  1835. Vehicles[id][Angle]=z_angle;
  1836. return 1;
  1837. }
  1838. return 0;
  1839. }
  1840. stock substr(const string[], const substr[] )
  1841. {
  1842. new found_str = strfind( string, substr );
  1843. new szRet[ 256 ];
  1844. if( found_str )
  1845. {
  1846. strmid( szRet, string, found_str + 1, strlen( string ) );
  1847. }
  1848. return szRet;
  1849. }
  1850. stock Float:GetPlayerSpeed(playerid,a=SPEED_KMPH) //By Gabriel "Larcius" Cordes
  1851. {
  1852. if(IsPlayerConnected(playerid))
  1853. {
  1854. switch(a)
  1855. {
  1856. case SPEED_KMPH: return Players[playerid][Speed2][KMPH];
  1857. case SPEED_MPH: return Players[playerid][Speed2][MPH];
  1858. case SPEED_MPS: return Players[playerid][Speed2][MPS];
  1859. }
  1860. }
  1861. return -1.0;
  1862. }
  1863. stock Float:GetPlayerAcceleration(playerid,a=ACC_MPS2) //By Sacky (basically edited by Gabriel "Larcius" Cordes)
  1864. {
  1865. if(IsPlayerConnected(playerid))
  1866. {
  1867. switch(a)
  1868. {
  1869. case ACC_MPS2: return Players[playerid][Acceleration][MPS2];
  1870. case ACC_KMPH2: return Players[playerid][Acceleration][KMPH2];
  1871. case ACC_G: return Players[playerid][Acceleration][G];
  1872. }
  1873. }
  1874. return 0.0;
  1875. }
  1876. stock GetAdmins() //By Gabriel "Larcius" Cordes
  1877. {
  1878. new admins=0;
  1879. for(new i=0;i<MAX_PLAYERS;i++)
  1880. {
  1881. if(IsPlayerConnected(i) && IsPlayerAdmin(i))
  1882. {
  1883. admins++;
  1884. }
  1885. }
  1886. return admins;
  1887. }
  1888. stock GetPickups() //By Gabriel "Larcius" Cordes
  1889. {
  1890. new pickups=0;
  1891. for(new i=0;i<MAX_PICKUPS;i++)
  1892. {
  1893. if(IsPickupConnected(i))
  1894. {
  1895. pickups++;
  1896. }
  1897. }
  1898. return pickups;
  1899. }
  1900. stock Float:isin(Float:opp,Float:hyp) //By Sacky
  1901. {
  1902. new Float:x = floatdiv(opp,hyp);
  1903. if(x < 1.0 && x > -1.0)
  1904. {
  1905. return x+(1.0/2.0)*(floatpower(x,3)/3.0)+((1.0*3.0)/(2.0*4.0))*(floatpower(x,5)/5.0)+((1.0*3.0*5.0)/(2.0*4.0*6.0))*(floatpower(x,7)/7.0)+((1.0*3.0*5.0*7.0)/(2.0*4.0*6.0*8.0))*(floatpower(x,9)/9.0)+((1.0*3.0*5.0*7.0*9.0)/(2.0*4.0*6.0*8.0*10.0))*(floatpower(x,11)/11.0);
  1906. }
  1907. return -1.0;
  1908. }
  1909. stock Float:icos(Float:adj,Float:hyp) //By Sacky
  1910. {
  1911. new Float:x = floatdiv(adj,hyp);
  1912. if(x < 1.0 && x > -1.0)
  1913. {
  1914. return floatsub(floatdiv(PI,2.0),isin(adj,hyp));
  1915. }
  1916. return -1.0;
  1917. }
  1918. stock Float:itan(Float:opp,Float:adj) //By Sacky
  1919. {
  1920. new Float:x = floatdiv(opp,adj);
  1921. if(x < 1.0 && x > -1.0)
  1922. {
  1923. return x-(1.0/3.0)*floatpower(x,3)+(1.0/5.0)*floatpower(x,5)-(1.0/7.0)*floatpower(x,7)+(1.0/9.0)*floatpower(x,9)-(1.0/11.0)*floatpower(x,11)+(1.0/13.0)*floatpower(x,13)-(1.0/15.0)*floatpower(x,15)+(1.0/17.0)*floatpower(x,17)-(1.0/19.0)*floatpower(x,19)+(1.0/21.0)*floatpower(x,21)-(1.0/23.0)*floatpower(x,23)+(1.0/25.0)*floatpower(x,25);
  1924. }
  1925. return -1.0;
  1926. }
  1927. stock Float:RadiansToDegrees(Float:radians) //By Sacky
  1928. {
  1929. return floatdiv(floatmul(radians,PI),180.0);
  1930. }
  1931. stock Float:DegreesToRadians(Float:degree) //By Sacky
  1932. {
  1933. return floatdiv(floatmul(degree,180.0),PI);
  1934. }
  1935. stock IsVehicleInUse(vehicleid) //By Sacky
  1936. {
  1937. if(IsVehicleConnected(vehicleid) && VehicleDriverID(vehicleid)!=-1)
  1938. {
  1939. return 1;
  1940. }
  1941. return 0;
  1942. }
  1943. stock PlayerPlaySound2(playerid,soundid) //By Sacky
  1944. {
  1945. new Float:x, Float:y, Float:z;
  1946. GetPlayerPos(playerid,x,y,z);
  1947. PlayerPlaySound(playerid,soundid,x,y,z);
  1948. return 1;
  1949. }
  1950. stock PlayerPlaySoundEx(playerid,soundid) //By Sacky
  1951. {
  1952. return PlayerPlaySound2(playerid,soundid);
  1953. }
  1954. stock SetVehicleSpawnPos(vehicleid,Float:x1,Float:y1,Float:z1,Float:angle1)
  1955. {
  1956. if(IsVehicleConnected(vehicleid))
  1957. {
  1958. Vehicles[vehicleid][X]=x1;
  1959. Vehicles[vehicleid][Y]=y1;
  1960. Vehicles[vehicleid][Z]=z1;
  1961. Vehicles[vehicleid][Angle]=angle1;
  1962. Vehicles[vehicleid][Dynamic]=1;
  1963. return 1;
  1964. }
  1965. return 0;
  1966. }
  1967. stock ResetVehicleSpawnPos(vehicleid)
  1968. {
  1969. if(IsVehicleConnected(vehicleid))
  1970. {
  1971. Vehicles[vehicleid][Dynamic]=0;
  1972. return 1;
  1973. }
  1974. return 0;
  1975. }
  1976. stock SetVehicleToRespawn2(vehicleid) //By Gabriel "Larcius" Cordes
  1977. {
  1978. if(IsVehicleConnected(vehicleid))
  1979. {
  1980. if(Vehicles[vehicleid][Dynamic])
  1981. {
  1982. SetVehiclePos(vehicleid,Vehicles[vehicleid][X],Vehicles[vehicleid][Y],Vehicles[vehicleid][Z]);
  1983. SetVehicleZAngle(vehicleid,Vehicles[vehicleid][Angle]);
  1984. #if defined OnVehicleRespawn
  1985. OnVehicleSpawn2(vehicleid,1);
  1986. #endif
  1987. return 2;
  1988. }
  1989. else
  1990. {
  1991. SetVehicleToRespawn(vehicleid);
  1992. return 1;
  1993. }
  1994. }
  1995. return 0;
  1996. }
  1997. stock randomcolor() //By Gabriel "Larcius" Cordes
  1998. {
  1999. return random(126);
  2000. }
  2001. stock AddStaticVehicle2(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, color1, color2) //By Boss (edited by Gabriel "Larcius" Cordes)
  2002. {
  2003. if(GetVehicles()<MAX_VEHICLES)
  2004. {
  2005. if(color1<0)
  2006. {
  2007. color1=randomcolor();
  2008. }
  2009. if(color2<0)
  2010. {
  2011. color2=randomcolor();
  2012. }
  2013. new vehicleid=AddStaticVehicle(modelid, spawn_x, spawn_y, spawn_z, z_angle, color1, color2), Float:h;
  2014. GetVehicleHealth(vehicleid, h);
  2015. Vehicles[vehicleid][X]=spawn_x;
  2016. Vehicles[vehicleid][Y]=spawn_y;
  2017. Vehicles[vehicleid][Z]=spawn_z;
  2018. Vehicles[vehicleid][Health]=h;
  2019. Vehicles[vehicleid][Color1]=color1;
  2020. Vehicles[vehicleid][Color2]=color2;
  2021. Vehicles[vehicleid][Dynamic]=0;
  2022. Vehicles[vehicleid][Last_Trailer]=-1;
  2023. Vehicles[vehicleid][Cur_Trailer]=-1;
  2024. Vehicles[vehicleid][Static]=1;
  2025. Vehicles[vehicleid][Respawn]=0;
  2026. Vehicles[vehicleid][Angle]=z_angle;
  2027. return 1;
  2028. }
  2029. return 0;
  2030. }
  2031. stock CreateVehicle2(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, color1, color2, respawn_delay) //By Boss (edited by Gabriel "Larcius" Cordes)
  2032. {
  2033. if(GetVehicles()<MAX_VEHICLES)
  2034. {
  2035. if(respawn_delay<0)
  2036. {
  2037. respawn_delay=INF_INT;
  2038. }
  2039. if(color1<0)
  2040. {
  2041. color1=randomcolor();
  2042. }
  2043. if(color2<0)
  2044. {
  2045. color2=randomcolor();
  2046. }
  2047. new id=CreateVehicle(modelid, spawn_x, spawn_y, spawn_z, z_angle, color1, color2, respawn_delay), Float:h;
  2048. GetVehicleHealth(id, h);
  2049. Vehicles[id][X]=spawn_x;
  2050. Vehicles[id][Y]=spawn_y;
  2051. Vehicles[id][Z]=spawn_z;
  2052. Vehicles[id][Health]=h;
  2053. Vehicles[id][Color1]=color1;
  2054. Vehicles[id][Color2]=color2;
  2055. Vehicles[id][Respawn]=respawn_delay;
  2056. Vehicles[id][Dynamic]=0;
  2057. Vehicles[id][Last_Trailer]=-1;
  2058. Vehicles[id][Cur_Trailer]=-1;
  2059. Vehicles[id][Static]=-1;
  2060. Vehicles[id][Angle]=z_angle;
  2061. return 1;
  2062. }
  2063. return 0;
  2064. }
  2065. stock AddStaticVehicleLine(modelid, Float:x1, Float:y1, Float:z1, Float:Z_Angle, color1, color2, Float:distance, MaxAmount, type) //By Gabriel "Larcius" Cordes
  2066. {
  2067. new ret=0, Float:xRate=floatmul(floatsin(Z_Angle,degrees),distance), Float:yRate=floatmul(floatcos(Z_Angle,degrees),distance), Float:tmp;
  2068. if(type==SIDELONG)
  2069. {
  2070. tmp=xRate;
  2071. xRate=yRate;
  2072. yRate=tmp;
  2073. }
  2074. for(new i=0; i<MaxAmount; i++)
  2075. {
  2076. if(AddStaticVehicle2(modelid, x1, y1, z1, Z_Angle, color1, color2))
  2077. {
  2078. x1+=xRate;
  2079. y1+=yRate;
  2080. ret++;
  2081. }
  2082. }
  2083. return ret;
  2084. }
  2085. stock CreateVehicleLine(modelid, Float:x1, Float:y1, Float:z1, Float:Z_Angle, color1, color2, respawn_delay, Float:distance, MaxAmount, type) //By Gabriel "Larcius" Cordes
  2086. {
  2087. new ret=0, Float:xRate=floatmul(floatsin(Z_Angle,degrees),distance), Float:yRate=floatmul(floatcos(Z_Angle,degrees),distance), Float:tmp;
  2088. if(type==SIDELONG)
  2089. {
  2090. tmp=xRate;
  2091. xRate=yRate;
  2092. yRate=tmp;
  2093. }
  2094. for(new i=0; i<MaxAmount; i++)
  2095. {
  2096. if(CreateVehicle2(modelid,x1,y1,z1,Z_Angle,color1,color2,respawn_delay))
  2097. {
  2098. x1+=xRate;
  2099. y1+=yRate;
  2100. ret++;
  2101. }
  2102. }
  2103. return ret;
  2104. }
  2105. stock DetachTrailerFromVehicle2(vehicleid) //By Gabriel "Larcius" Cordes
  2106. {
  2107. if(IsVehicleConnected(vehicleid) && IsTrailerAttachedToVehicle(vehicleid))
  2108. {
  2109. new trailerid=GetVehicleTrailer(vehicleid);
  2110. AttachTrailerToVehicle(trailerid, vehicleid);
  2111. DetachTrailerFromVehicle(vehicleid);
  2112. return trailerid;
  2113. }
  2114. return -1;
  2115. }
  2116. stock SetVehicleParamsForAllOthers(vehicleid, playerid, objective, doorslocked, trailer=0) //By Gabriel "Larcius" Cordes
  2117. {
  2118. new ret=0;
  2119. if(IsVehicleConnected(vehicleid))
  2120. {
  2121. for (new i=0; i<MAX_PLAYERS; i++)
  2122. {
  2123. if(IsPlayerConnected(i) && i!=playerid)
  2124. {
  2125. SetVehicleParamsForPlayer2(vehicleid, i, objective, doorslocked, trailer);
  2126. ret++;
  2127. }
  2128. }
  2129. }
  2130. return ret;
  2131. }
  2132. stock GetVehicleParamsOfPlayer(vehicleid, playerid, &objective, &doorslocked) //By Gabriel "Larcius" Cordes
  2133. {
  2134. objective=-1, doorslocked=-1;
  2135. if(IsPlayerConnected(playerid) && IsVehicleConnected(vehicleid))
  2136. {
  2137. objective=Vehicles[vehicleid][Objective][playerid];
  2138. doorslocked=Vehicles[vehicleid][Locked][playerid];
  2139. }
  2140. return objective,doorslocked;
  2141. }
  2142. stock GetVehicleParamsForPlayer(vehicleid, playerid, &objective, &doorslocked)
  2143. {
  2144. GetVehicleParamsOfPlayer(vehicleid, playerid, objective, doorslocked);
  2145. return objective, doorslocked;
  2146. }
  2147. stock IsPlayerFreeze(playerid)
  2148. {
  2149. if(IsPlayerConnected(playerid))
  2150. {
  2151. for(new i=0; i<MAX_FREEZE_ALL; i++)
  2152. {
  2153. if(Players[playerid][Freeze][i]==1)
  2154. {
  2155. return 1;
  2156. }
  2157. }
  2158. }
  2159. return 0;
  2160. }
  2161. stock IsVehicleLockedForPlayer(vehicleid, playerid) //By Gabriel "Larcius" Cordes
  2162. {
  2163. if(IsPlayerConnected(playerid) && IsVehicleConnected(vehicleid))
  2164. {
  2165. new objective, doorslocked;
  2166. GetVehicleParamsOfPlayer(vehicleid, playerid, objective, doorslocked);
  2167. if(doorslocked==1)
  2168. {
  2169. return 1;
  2170. }
  2171. }
  2172. return 0;
  2173. }
  2174. stock IsVehicleLockedForAnyPlayer(vehicleid) //By Gabriel "Larcius" Cordes
  2175. {
  2176. if(IsVehicleConnected(vehicleid))
  2177. {
  2178. for(new i=0; i<MAX_PLAYERS; i++)
  2179. {
  2180. if(IsPlayerConnected(i) && IsVehicleLockedForPlayer(vehicleid, i))
  2181. {
  2182. return 1;
  2183. }
  2184. }
  2185. }
  2186. return 0;
  2187. }
  2188. stock IsVehicleLockedForAll(vehicleid) //By Gabriel "Larcius" Cordes
  2189. {
  2190. if(IsVehicleConnected(vehicleid))
  2191. {
  2192. for(new i=0; i<MAX_PLAYERS; i++)
  2193. {
  2194. if(IsPlayerConnected(i) && !IsVehicleLockedForPlayer(vehicleid, i))
  2195. {
  2196. return 0;
  2197. }
  2198. }
  2199. return 1;
  2200. }
  2201. return 0;
  2202. }
  2203. stock IsVehicleObjectivedForPlayer(vehicleid, playerid) //By Gabriel "Larcius" Cordes
  2204. {
  2205. if(IsPlayerConnected(playerid) && IsVehicleConnected(vehicleid))
  2206. {
  2207. new objective, doorslocked;
  2208. GetVehicleParamsOfPlayer(vehicleid, playerid, objective, doorslocked);
  2209. if(objective==1)
  2210. {
  2211. return 1;
  2212. }
  2213. }
  2214. return 0;
  2215. }
  2216. stock IsVehicleObjectivedForAnyPlayer(vehicleid) //By Gabriel "Larcius" Cordes
  2217. {
  2218. if(IsVehicleConnected(vehicleid))
  2219. {
  2220. for(new i=0; i<MAX_PLAYERS; i++)
  2221. {
  2222. if(IsPlayerConnected(i) && IsVehicleObjectivedForPlayer(vehicleid, i))
  2223. {
  2224. return 1;
  2225. }
  2226. }
  2227. }
  2228. return 0;
  2229. }
  2230. stock IsVehicleObjectivedForAll(vehicleid) //By Gabriel "Larcius" Cordes
  2231. {
  2232. if(IsVehicleConnected(vehicleid))
  2233. {
  2234. for(new i=0; i<MAX_PLAYERS; i++)
  2235. {
  2236. if(IsPlayerConnected(i) && !IsVehicleObjectivedForPlayer(vehicleid, i))
  2237. {
  2238. return 0;
  2239. }
  2240. }
  2241. return 1;
  2242. }
  2243. return 0;
  2244. }
  2245. stock SetTeamPos(team, x, y, z) //dyraXon
  2246. {
  2247. for (new i = 0; i < MAX_PLAYERS; i++)
  2248. {
  2249. if (IsPlayerConnected(i) && Players[i][Cur_team]==team)
  2250. {
  2251. SetPlayerPos(i, x, y, z);
  2252. }
  2253. }
  2254. return 1;
  2255. }
  2256. stock IsTeamInArea(team, Float:minx, Float:maxx, Float:miny, Float:maxy) //dyraXon
  2257. {
  2258. for (new i = 0; i < MAX_PLAYERS; i++)
  2259. {
  2260. if (IsPlayerConnected(i) && Players[i][Cur_team]==team)
  2261. {
  2262. new Float:x, Float:y, Float:z;
  2263. GetPlayerPos(i, x, y, z);
  2264. if (x > minx && x < maxx && y > miny && y < maxy)
  2265. {
  2266. return 1;
  2267. }
  2268. }
  2269. }
  2270. return 0;
  2271. }
  2272. stock KickTeam(team) //dyraXon
  2273. {
  2274. for (new i = 0; i < MAX_PLAYERS; i++)
  2275. {
  2276. if (IsPlayerConnected(i) && Players[i][Cur_team]==team)
  2277. {
  2278. Kick(i);
  2279. }
  2280. }
  2281. return 1;
  2282. }
  2283. stock BanTeam(team) //dyraXon
  2284. {
  2285. for (new i = 0; i < MAX_PLAYERS; i++)
  2286. {
  2287. if (IsPlayerConnected(i) && Players[i][Cur_team]==team)
  2288. {
  2289. Ban(i);
  2290. }
  2291. }
  2292. }
  2293. stock GetVehicleType(vehicleid) //By YellowBlood (edited by Gabriel "Larcius" Cordes)
  2294. {
  2295. new type=0;
  2296. if(IsVehicleConnected(vehicleid))
  2297. {
  2298. switch(GetVehicleModel(vehicleid))
  2299. {
  2300. // ================== CARS =======
  2301. case
  2302. 416, //ambulan - car
  2303. 445, //admiral - car
  2304. 602, //alpha - car
  2305. 485, //baggage - car
  2306. 568, //bandito - car
  2307. 429, //banshee - car
  2308. 499, //benson - car
  2309. 424, //bfinject, //car
  2310. 536, //blade - car
  2311. 496, //blistac - car
  2312. 504, //bloodra - car
  2313. 422, //bobcat - car
  2314. 609, //boxburg - car
  2315. 498, //boxville, //car
  2316. 401, //bravura - car
  2317. 575, //broadway, //car
  2318. 518, //buccanee, //car
  2319. 402, //buffalo - car
  2320. 541, //bullet - car
  2321. 482, //burrito - car
  2322. 431, //bus - car
  2323. 438, //cabbie - car
  2324. 457, //caddy - car
  2325. 527, //cadrona - car
  2326. 483, //camper - car
  2327. 524, //cement - car
  2328. 415, //cheetah - car
  2329. 542, //clover - car
  2330. 589, //club - car
  2331. 480, //comet - car
  2332. 596, //copcarla, //car
  2333. 599, //copcarru, //car
  2334. 597, //copcarsf, //car
  2335. 598, //copcarvg, //car
  2336. 578, //dft30 - car
  2337. 486, //dozer - car
  2338. 507, //elegant - car
  2339. 562, //elegy - car
  2340. 585, //emperor - car
  2341. 427, //enforcer, //car
  2342. 419, //esperant, //car
  2343. 587, //euros - car
  2344. 490, //fbiranch, //car
  2345. 528, //fbitruck, //car
  2346. 533, //feltzer - car
  2347. 544, //firela - car
  2348. 407, //firetruk, //car
  2349. 565, //flash - car
  2350. 455, //flatbed - car
  2351. 530, //forklift, //car
  2352. 526, //fortune - car
  2353. 466, //glendale, //car
  2354. 604, //glenshit, //car
  2355. 492, //greenwoo, //car
  2356. 474, //hermes - car
  2357. 434, //hotknife, //car
  2358. 502, //hotrina - car
  2359. 503, //hotrinb - car
  2360. 494, //hotring - car
  2361. 579, //huntley - car
  2362. 545, //hustler - car
  2363. 411, //infernus, //car
  2364. 546, //intruder, //car
  2365. 559, //jester - car
  2366. 508, //journey - car
  2367. 571, //kart - car
  2368. 400, //landstal, //car
  2369. 403, //linerun - car
  2370. 517, //majestic, //car
  2371. 410, //manana - car
  2372. 551, //merit - car
  2373. 500, //mesa - car
  2374. 418, //moonbeam, //car
  2375. 572, //mower - car
  2376. 423, //mrwhoop - car
  2377. 516, //nebula - car
  2378. 582, //newsvan - car
  2379. 467, //oceanic - car
  2380. 404, //peren - car
  2381. 514, //petro - car
  2382. 603, //phoenix - car
  2383. 600, //picador - car
  2384. 413, //pony - car
  2385. 426, //premier - car
  2386. 436, //previon - car
  2387. 547, //primo - car
  2388. 489, //rancher - car
  2389. 441, //rcbandit, //car
  2390. 594, //rccam - car
  2391. 564, //rctiger - car
  2392. 515, //rdtrain - car
  2393. 479, //regina - car
  2394. 534, //remingtn, //car
  2395. 505, //rnchlure, //car
  2396. 442, //romero - car
  2397. 440, //rumpo - car
  2398. 475, //sabre - car
  2399. 543, //sadler - car
  2400. 605, //sadlshit, //car
  2401. 495, //sandking, //car
  2402. 567, //savanna - car
  2403. 428, //securica, //car
  2404. 405, //sentinel, //car
  2405. 535, //slamvan - car
  2406. 458, //solair - car
  2407. 580, //stafford, //car
  2408. 439, //stallion, //car
  2409. 561, //stratum - car
  2410. 409, //stretch - car
  2411. 560, //sultan - car
  2412. 550, //sunrise - car
  2413. 506, //supergt - car
  2414. 601, //swatvan - car
  2415. 574, //sweeper - car
  2416. 566, //tahoma - car
  2417. 549, //tampa - car
  2418. 420, //taxi - car
  2419. 459, //topfun - car
  2420. 576, //tornado - car
  2421. 583, //tug - car
  2422. 451, //turismo - car
  2423. 558, //uranus - car
  2424. 552, //utility - car
  2425. 540, //vincent - car
  2426. 491, //virgo - car
  2427. 412, //voodoo - car
  2428. 478, //walton - car
  2429. 421, //washing - car
  2430. 529, //willard - car
  2431. 555, //windsor - car
  2432. 456, //yankee - car
  2433. 554, //yosemite - car
  2434. 477 //zr350 - car
  2435. : type = VTYPE_CAR;
  2436. // ================== BIKES =======
  2437. case
  2438. 581, //bf400 - bike
  2439. 523, //copbike - bike
  2440. 462, //faggio - bike
  2441. 521, //fcr900 - bike
  2442. 463, //freeway - bike
  2443. 522, //nrg500 - bike
  2444. 461, //pcj600 - bike
  2445. 448, //pizzaboy, //bike
  2446. 468, //sanchez - bike
  2447. 586 //wayfarer, //bike
  2448. : type = VTYPE_BIKE;
  2449. // =================== BMX =======
  2450. case
  2451. 509, //bike - bmx
  2452. 481, //bmx - bmx
  2453. 510 //mtbike - bmx
  2454. : type = VTYPE_BMX;
  2455. // ================== QUADS =======
  2456. case
  2457. 471 //quad - quad
  2458. : type = VTYPE_QUAD;
  2459. // ================== SEA =======
  2460. case
  2461. 472, //coastg - boat
  2462. 473, //dinghy - boat
  2463. 493, //jetmax - boat
  2464. 595, //launch - boat
  2465. 484, //marquis - boat
  2466. 430, //predator, //boat
  2467. 453, //reefer - boat
  2468. 452, //speeder - boat
  2469. 446, //squalo - boat
  2470. 454 //tropic - boat
  2471. : type = VTYPE_SEA;
  2472. // ================= HELI =======
  2473. case
  2474. 548, //cargobob, //heli
  2475. 425, //hunter - heli
  2476. 417, //leviathn, //heli
  2477. 487, //maverick, //heli
  2478. 497, //polmav - heli
  2479. 563, //raindanc, //heli
  2480. 501, //rcgoblin, //heli
  2481. 465, //rcraider, //heli
  2482. 447, //seaspar - heli
  2483. 469, //sparrow - heli
  2484. 488 //vcnmav - heli
  2485. : type = VTYPE_HELI;
  2486. // ================ PLANE =======
  2487. case
  2488. 592, //androm - plane
  2489. 577, //at 400 - plane
  2490. 511, //beagle - plane
  2491. 512, //cropdust, //plane
  2492. 593, //dodo - plane
  2493. 520, //hydra - plane
  2494. 553, //nevada - plane
  2495. 464, //rcbaron - plane
  2496. 476, //rustler - plane
  2497. 519, //shamal - plane
  2498. 460, //skimmer - plane
  2499. 513, //stunt - plane
  2500. 539 //vortex - plane
  2501. : type = VTYPE_PLANE;
  2502. // ================== HEAVY =======
  2503. case
  2504. 588, //hotdog - car
  2505. 437, //coach - car
  2506. 532, //combine - car
  2507. 433, //barracks, //car
  2508. 414, //mule - car
  2509. 443, //packer - car
  2510. 470, //patriot - car
  2511. 432, //rhino - car
  2512. 525, //towtruck, //car
  2513. 531, //tractor - car
  2514. 408 //trash - car
  2515. : type = VTYPE_HEAVY;
  2516. // ================ MONSTER =======
  2517. case
  2518. 406, //dumper - mtruck
  2519. 573, //duneride, //mtruck
  2520. 444, //monster - mtruck
  2521. 556, //monstera, //mtruck
  2522. 557 //monsterb, //mtruck
  2523. : type = VTYPE_MONSTER;
  2524. // ================ TRAILER =======
  2525. case
  2526. 435, //artict1 - trailer
  2527. 450, //artict2 - trailer
  2528. 591, //artict3 - trailer
  2529. 606, //bagboxa - trailer
  2530. 607, //bagboxb - trailer
  2531. 610, //farmtr1 - trailer
  2532. 584, //petrotr - trailer
  2533. 608, //tugstair - trailer
  2534. 611 //utiltr1 - trailer
  2535. : type = VTYPE_TRAILER;
  2536. // ================== TRAIN =======
  2537. case
  2538. 590, //freibox - train
  2539. 569, //freiflat, //train
  2540. 537, //freight - train
  2541. 538, //streak - train
  2542. 570, //streakc - train
  2543. 449 //tram - train
  2544. : type = VTYPE_TRAIN;
  2545. }
  2546. }
  2547. return type;
  2548. }
  2549. stock GetPlayers() //By rapidZ
  2550. {
  2551. new players=0;
  2552. for (new i=0;i<MAX_PLAYERS;i++)
  2553. {
  2554. if(IsPlayerConnected(i))
  2555. {
  2556. players++;
  2557. }
  2558. }
  2559. return players;
  2560. }
  2561. stock str_replace(search[], replace[], source[]) //By Tratulla
  2562. {
  2563. new newnick[256];
  2564. new newlen;
  2565. for (new i; i < strlen(source); i++)
  2566. {
  2567. if (strlen(search) > 1 && i != (strlen(source) - 1))
  2568. {
  2569. new matched = 1;
  2570. new start = i;
  2571. for (new s=0; s < strlen(search) && matched == 1; s++)
  2572. {
  2573. if (source[i] != search[s] && s == 0)
  2574. {
  2575. newnick[newlen] = source[i];
  2576. matched = 0;
  2577. } else
  2578. {
  2579. if (source[i] == search[s])
  2580. {
  2581. i++;
  2582. } else
  2583. {
  2584. matched = 0;
  2585. }
  2586. }
  2587. }
  2588. if (matched == 0)
  2589. {
  2590. for (start=start; start <= i; start++)
  2591. {
  2592. newnick[newlen] = source[start];
  2593. newlen++;
  2594. }
  2595. } else
  2596. {
  2597. for (new r; r < strlen(replace); r++)
  2598. {
  2599. newnick[newlen] = replace[r];
  2600. newlen++;
  2601. }
  2602. i = (start + (strlen(search) - 1));
  2603. }
  2604. } else
  2605. {
  2606. if (strlen(search) == 1 && source[i] == search[0])
  2607. {
  2608. for (new r; r < strlen(replace); r++)
  2609. {
  2610. newnick[newlen] = replace[r];
  2611. newlen++;
  2612. }
  2613. } else
  2614. {
  2615. newnick[newlen] = source[i];
  2616. newlen++;
  2617. }
  2618. }
  2619. }
  2620. newnick[newlen] = EOS;
  2621. return newnick;
  2622. }
  2623. stock GameTextCheck(const string[]) //By Kamazy
  2624. {
  2625. for (new i=0; i<strlen(string); i++)
  2626. {
  2627. if ((string[i] == 126) && (string[i-1] == 126) || (string[i] == ' ') && (string[i-1] == '~') && (string[i-2] == ' ') || (string[i] == '~') && (string[i+2] != '~') && (string[i-2] != '~') || (string[i] == '~') && (string[i+2] == '~') && (string[i-2] == '~'))
  2628. {
  2629. return 1;
  2630. }
  2631. }
  2632. return 0;
  2633. }
  2634. stock SetPlayerPosEx(playerid,Float:x1,Float:y1,Float:z1,Float:Ang,Int) //By Kamazy
  2635. {
  2636. SetPlayerInterior(playerid,Int);
  2637. SetPlayerFacingAngle(playerid,Ang);
  2638. SetPlayerPos(playerid,x1,x1,z1);
  2639. SetCameraBehindPlayer(playerid);
  2640. return 1;
  2641. }
  2642. stock IsPlayerInRange(playerid, Float:Range, Float:Z_Range, Float:tar_x, Float:tar_y, Float:tar_z) //By Gabriel "Larcius" Cordes
  2643. {
  2644. new bool:care_z = true, Float:player_x, Float:player_y, Float:player_z, Float:radius_xy, Float:radius_z;
  2645. GetPlayerPos(playerid, player_x, player_y, player_z);
  2646. radius_xy = floatsqroot(floatadd(floatpower(floatsub(player_x,tar_x),2.0),floatpower(floatsub(player_y,tar_y),2.0)));
  2647. radius_z = floatsqroot(floatadd(floatpower(radius_xy,2.0),floatpower(floatsub(player_z,tar_z),2.0)));
  2648. if(radius_z > Z_Range && radius_xy < radius_z)
  2649. {
  2650. care_z = false;
  2651. }
  2652. if(radius_xy <= Range && care_z)
  2653. {
  2654. return 1;
  2655. }
  2656. return 0;
  2657. }
  2658. stock GivePlayerWeaponEx(playerid, ...) //By Peter
  2659. {
  2660. new Count = numargs();
  2661. for(new i = 1; i < Count; i += 2)
  2662. {
  2663. new WeaponID = getarg(i);
  2664. new Ammo = getarg((i+1));
  2665. if(WeaponID > 0 && WeaponID < 47)
  2666. {
  2667. GivePlayerWeaponAlt(playerid, WeaponID, Ammo);
  2668. }
  2669. }
  2670. return 1;
  2671. }
  2672. stock SendClientMessageToAllOthers(playerid, color, const message[]) //By yom
  2673. {
  2674. new ret=0;
  2675. for (new i=0; i<MAX_PLAYERS; i++)
  2676. {
  2677. if (IsPlayerConnected(i) && i!=playerid)
  2678. {
  2679. SendClientMessage(i, color, message);
  2680. ret++;
  2681. }
  2682. }
  2683. return ret;
  2684. }
  2685. stock GameTextForAllOthers(playerid, const string[], time, style) //By yom
  2686. {
  2687. new ret=0;
  2688. for (new i=0; i<MAX_PLAYERS; i++)
  2689. {
  2690. if (IsPlayerConnected(i) && i != playerid)
  2691. {
  2692. GameTextForPlayer(i, string, time, style);
  2693. ret++;
  2694. }
  2695. }
  2696. return ret;
  2697. }
  2698. stock SetPlayerColourAlpha(playerid, alpha)
  2699. {
  2700. return SetPlayerColorAlpha(playerid, alpha);
  2701. }
  2702. stock SetPlayerColorAlpha(playerid, alpha) //By Betamaster
  2703. {
  2704. new r, g, b, a;
  2705. HexToRGBA(GetPlayerColor(playerid), r, g, b, a);
  2706. SetPlayerColor(playerid, RGBAToHex(r, g, b, alpha));
  2707. }
  2708. stock RGBAToHex(r, g, b, a) //By Betamaster
  2709. {
  2710. return (r<<24 | g<<16 | b<<8 | a);
  2711. }
  2712. stock HexToRGBA(colour, &r, &g, &b, &a) //By Betamaster
  2713. {
  2714. r = (colour >> 24) & 0xFF;
  2715. g = (colour >> 16) & 0xFF;
  2716. b = (colour >> 8) & 0xFF;
  2717. a = colour & 0xFF;
  2718. }
  2719. stock IsPlayerInAreaEx(playerid, Float:...) //By kool
  2720. {
  2721. new Count = numargs();
  2722. new Float:xe[255], Float:ye[255];
  2723. new j=0;
  2724. for(new i=1; i<Count; i+=2)
  2725. {
  2726. xe[j] = Float:getarg(i);
  2727. ye[j] = Float:getarg(i+1);
  2728. j++;
  2729. }
  2730. xe[j] = xe[0];
  2731. ye[j] = ye[0];
  2732. new Lines;
  2733. new Float:xcut;
  2734. new Float:x, Float:y, Float:z;
  2735. GetPlayerPos(playerid, x, y, z);
  2736. for(new i=0; i<j; i++)
  2737. {
  2738. xcut = xe[i]+((y-ye[i])*(xe[i+1]-xe[i])/(ye[i+1]-ye[i]));
  2739. if(((y >= ye[i] && y <= ye[i+1]) || (y >= ye[i+1] && y <= ye[i])) && xcut < x)
  2740. {
  2741. Lines++;
  2742. }
  2743. }
  2744. if(Lines%2 == 1)
  2745. {
  2746. return 1;
  2747. }
  2748. return 0;
  2749. }
  2750. stock SetTeamScore(team, score) //By Hellomy
  2751. {
  2752. for (new i=0; i<MAX_PLAYERS; i++)
  2753. {
  2754. if (IsPlayerConnected(i) && Players[i][Cur_team]==team)
  2755. {
  2756. SetPlayerScore(i, score);
  2757. }
  2758. }
  2759. return 1;
  2760. }
  2761. stock GiveTeamMoney(team, amount) //By Hellomy
  2762. {
  2763. for (new i=0; i<MAX_PLAYERS; i++)
  2764. {
  2765. if (IsPlayerConnected(i) && Players[i][Cur_team]==team)
  2766. {
  2767. GivePlayerMoney(i, amount);
  2768. }
  2769. }
  2770. return 1;
  2771. }
  2772. stock SetTime(hours,minutes)
  2773. {
  2774. for(new i=0; i<MAX_PLAYERS; i++)
  2775. {
  2776. SetPlayerTime(i, hours, minutes);
  2777. }
  2778. }
  2779. stock Wait(time)
  2780. {
  2781. new stamp = tickcount();
  2782. while (tickcount() - stamp < time)
  2783. {
  2784. }
  2785. return 1;
  2786. }
  2787. stock strrest(const string[], index)
  2788. {
  2789. new length = strlen(string);
  2790. new offset = index;
  2791. new result[256];
  2792. while ((index < length) && ((index - offset) < (sizeof(result) - 1)) && (string[index] > '\r'))
  2793. {
  2794. result[index - offset] = string[index];
  2795. index++;
  2796. }
  2797. result[index - offset] = EOS;
  2798. return result;
  2799. }
  2800. stock Float:lengthdir_x(Float:len,Float:angles) //By Slick
  2801. {
  2802. return floatmul(floatcos(floatdiv(floatmul(angles,PI),180.0)),len);
  2803. }
  2804. stock Float:lengthdir_y(Float:len,Float:angles) //By Slick
  2805. {
  2806. return floatmul(-floatsin(floatdiv(floatmul(angles,PI),180.0)),len);
  2807. }
  2808. stock FindEmptySlot(const array[], const length) //By Gabriel "Larcius" Cordes
  2809. {
  2810. for (new i=0;i<length;i++)
  2811. {
  2812. if(!array[i])
  2813. {
  2814. return i;
  2815. }
  2816. }
  2817. return -1;
  2818. }
  2819. stock FindEmptySlot2D(const array[], const length, &d1, &d2) //By Gabriel "Larcius" Cordes
  2820. {
  2821. for (new i=0; i<length; i++)
  2822. {
  2823. if (array[i])
  2824. {
  2825. new d2=FindEmptySlot(array[i][], sizeof(array[i]));
  2826. if (d2!=-1)
  2827. {
  2828. new d1=i;
  2829. return d1, d2;
  2830. }
  2831. }
  2832. }
  2833. d1=-1;
  2834. d2=-1;
  2835. return d1,d2;
  2836. }
  2837. stock FindIntegerInArray(const num, const array[], const length) //By Gabriel "Larcius" Cordes
  2838. {
  2839. for (new i=0; i<length; i++)
  2840. {
  2841. if (array[i] == num)
  2842. {
  2843. return i;
  2844. }
  2845. }
  2846. return -1;
  2847. }
  2848. stock FindStringInArray(const string[], const array[], const length) //By Gabriel "Larcius" Cordes
  2849. {
  2850. for (new i=0; i<length; i++)
  2851. {
  2852. if (strcmp(string, array[i], true) == 0)
  2853. {
  2854. return i;
  2855. }
  2856. }
  2857. return -1;
  2858. }
  2859. stock FindFloatInArray(const Float:num, const array[], const length) //By Gabriel "Larcius" Cordes
  2860. {
  2861. for (new i=0; i<length; i++)
  2862. {
  2863. if (array[i] == num)
  2864. {
  2865. return i;
  2866. }
  2867. }
  2868. return -1;
  2869. }
  2870. stock FindIntegerIn2DArray(const num, const array[], length, &d1, &d2) //By Gabriel "Larcius" Cordes
  2871. {
  2872. for (new i=0; i<length; i++)
  2873. {
  2874. if (array[i])
  2875. {
  2876. new d2=FindIntegerInArray(num, array[i][], sizeof(array[i]));
  2877. if (d2 != -1)
  2878. {
  2879. new d1=i;
  2880. return d1, d2;
  2881. }
  2882. }
  2883. }
  2884. return -1;
  2885. }
  2886. stock FindStringIn2DArray(const string[], const array[], length, &d1, &d2) //By Gabriel "Larcius" Cordes
  2887. {
  2888. for (new i=0; i<length; i++)
  2889. {
  2890. if (array[i])
  2891. {
  2892. new d2=FindStringInArray(num, array[i][], sizeof(array[i]));
  2893. if (d2 != -1)
  2894. {
  2895. new d1=i;
  2896. return d1, d2;
  2897. }
  2898. }
  2899. }
  2900. return -1;
  2901. }
  2902. stock FindFloatIn2DArray(const Float:num, const array[], length, &d1, &d2) //By Gabriel "Larcius" Cordes
  2903. {
  2904. for (new i=0; i<length; i++)
  2905. {
  2906. if (array[i])
  2907. {
  2908. new d2=FindFloatInArray(num, array[i][], sizeof(array[i]));
  2909. if (d2 != -1)
  2910. {
  2911. new d1=i;
  2912. return d1, d2;
  2913. }
  2914. }
  2915. }
  2916. return -1;
  2917. }
  2918. stock AddArea(type,Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2,Float:radius1) //By Gabriel "Larcius" Cordes
  2919. {
  2920. new areaid=0;
  2921. while(IsAreaConnected(areaid) && areaid<MAX_AREAS)
  2922. {
  2923. areaid++;
  2924. }
  2925. if(areaid<MAX_AREAS)
  2926. {
  2927. Areas[areaid][Type]=0;
  2928. switch (type)
  2929. {
  2930. case AREA_RECTANGLE:
  2931. {
  2932. if(x1!=x2 && y1!=y2)
  2933. {
  2934. Areas[areaid][Type]=AREA_RECTANGLE;
  2935. Areas[areaid][X]=x1;
  2936. Areas[areaid][Y]=y1;
  2937. Areas[areaid][X2]=x2;
  2938. Areas[areaid][Y2]=y2;
  2939. }
  2940. }
  2941. case AREA_CIRCLE:
  2942. {
  2943. if(radius1!=0.0)
  2944. {
  2945. Areas[areaid][Type]=AREA_CIRCLE;
  2946. Areas[areaid][X]=x1;
  2947. Areas[areaid][Y]=y1;
  2948. Areas[areaid][Radius]=radius1;
  2949. }
  2950. }
  2951. case AREA_ASHLAR:
  2952. {
  2953. if(x1!=x2 && y1!=y2 && z1!=z2)
  2954. {
  2955. Areas[areaid][Type]=AREA_ASHLAR;
  2956. Areas[areaid][X]=x1;
  2957. Areas[areaid][Y]=y1;
  2958. Areas[areaid][Z]=z1;
  2959. Areas[areaid][X2]=x2;
  2960. Areas[areaid][Y2]=y2;
  2961. Areas[areaid][Z2]=z2;
  2962. }
  2963. }
  2964. case AREA_SPHERE:
  2965. {
  2966. if(radius1!=0.0)
  2967. {
  2968. Areas[areaid][Type]=AREA_SPHERE;
  2969. Areas[areaid][X]=x1;
  2970. Areas[areaid][Y]=y1;
  2971. Areas[areaid][Z]=z1;
  2972. Areas[areaid][Radius]=radius1;
  2973. }
  2974. }
  2975. case AREA_CYLINDER:
  2976. {
  2977. if(radius1!=0.0 && z2!=0.0)
  2978. {
  2979. Areas[areaid][Type]=AREA_CYLINDER;
  2980. Areas[areaid][X]=x1;
  2981. Areas[areaid][Y]=y1;
  2982. Areas[areaid][Z]=z1;
  2983. Areas[areaid][Z2]=z2;
  2984. Areas[areaid][Radius]=radius1;
  2985. }
  2986. }
  2987. }
  2988. if(Areas[areaid][Type])
  2989. {
  2990. return areaid;
  2991. }
  2992. }
  2993. return -1;
  2994. }
  2995. stock AddRectangleArea(Float:x1,Float:y1,Float:x2,Float:y2) //By Gabriel "Larcius" Cordes
  2996. {
  2997. return AddArea(AREA_RECTANGLE,x1,y1,0.0,x2,y2,0.0,0.0);
  2998. }
  2999. stock AddCircleArea(Float:x1,Float:y1,Float:radius1) //By Gabriel "Larcius" Cordes
  3000. {
  3001. return AddArea(AREA_CIRCLE,x1,y1,0.0,0.0,0.0,0.0,radius1);
  3002. }
  3003. stock AddAshlarArea(Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2) //By Gabriel "Larcius" Cordes
  3004. {
  3005. return AddArea(AREA_ASHLAR,x1,y1,z1,x2,y2,z2,0.0);
  3006. }
  3007. stock AddCubeArea(Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2)
  3008. {
  3009. return AddAshlarArea(x1,y1,z1,x2,y2,z2);
  3010. }
  3011. stock AddSphereArea(Float:x1,Float:y1,Float:z1,Float:radius1) //By Gabriel "Larcius" Cordes
  3012. {
  3013. return AddArea(AREA_SPHERE,x1,y1,z1,0.0,0.0,0.0,radius1);
  3014. }
  3015. stock AddCylinderArea(Float:x1,Float:y1,Float:z1,Float:z2,Float:radius1) //By Gabriel "Larcius" Cordes
  3016. {
  3017. return AddArea(AREA_Cylinder,x1,y1,z1,0.0,0.0,z2,radius1);
  3018. }
  3019. stock GetAreaType(areaid) //By Gabriel "Larcius" Cordes
  3020. {
  3021. if(IsAreaConnected(areaid))
  3022. {
  3023. return Areas[areaid][Type];
  3024. }
  3025. return 0;
  3026. }
  3027. stock GetAreaParams(areaid,&type,&Float:x1,&Float:y1,&Float:z1,&Float:x2,&Float:y2,&Float:z2,&Float:radius1)
  3028. {
  3029. if(IsAreaConnected(areaid))
  3030. {
  3031. type=Areas[areaid][Type];x1=Areas[areaid][X];y1=Areas[areaid][Y];z1=Areas[areaid][Z];x2=Areas[areaid][X2];y2=Areas[areaid][Y2];z2=Areas[areaid][Z2];radius1=Areas[areaid][Radius];
  3032. }
  3033. else
  3034. {
  3035. type=0;x1=0.0;y1=0.0;z1=0.0;x2=0.0;y2=0.0;z2=0.0;radius1=0.0;
  3036. }
  3037. return type,x1,y1,z1,x2,y2,z2,radius1;
  3038. }
  3039. stock IsPointInArea(Float:x1,Float:y1,Float:z1,areaid)
  3040. {
  3041. if(IsAreaConnected(areaid))
  3042. {
  3043. switch (Areas[areaid][Type])
  3044. {
  3045. case AREA_RECTANGLE:
  3046. {
  3047. if(IsPointInRectangle(x1,y1,Areas[areaid][X],Areas[areaid][Y],Areas[areaid][X2],Areas[areaid][Y2]))
  3048. {
  3049. return 1;
  3050. }
  3051. }
  3052. case AREA_CIRCLE:
  3053. {
  3054. if(IsPointInCircle(x1,y1,Areas[areaid][X],Areas[areaid][Y],Areas[areaid][Radius]))
  3055. {
  3056. return 1;
  3057. }
  3058. }
  3059. case AREA_ASHLAR:
  3060. {
  3061. if(IsPointInAshlar(x1,y1,z1,Areas[areaid][X],Areas[areaid][Y],Areas[areaid][Z],Areas[areaid][X2],Areas[areaid][Y2],Areas[areaid][Z2]))
  3062. {
  3063. return 1;
  3064. }
  3065. }
  3066. case AREA_SPHERE:
  3067. {
  3068. if(IsPointInSphere(x1,y1,z1,Areas[areaid][X],Areas[areaid][Y],Areas[areaid][Z],Areas[areaid][Radius]))
  3069. {
  3070. return 1;
  3071. }
  3072. }
  3073. case AREA_CYLINDER:
  3074. {
  3075. if(IsPointInCylinder(x1,y1,z1,Areas[areaid][X],Areas[areaid][Y],Areas[areaid][Z],Areas[areaid][Z2],Areas[areaid][Radius]))
  3076. {
  3077. return 1;
  3078. }
  3079. }
  3080. }
  3081. }
  3082. return 0;
  3083. }
  3084. stock IsPlayerInArea(playerid, areaid) //By Gabriel "Larcius" Cordes
  3085. {
  3086. if(IsPlayerConnected(playerid))
  3087. {
  3088. new Float:x,Float:y,Float:z;
  3089. GetPlayerPos(playerid,x,y,z);
  3090. if(IsPointInArea(x,y,z,areaid))
  3091. {
  3092. return 1;
  3093. }
  3094. }
  3095. return 0;
  3096. }
  3097. stock IsAnyPlayerInArea(areaid) //By Gabriel "Larcius" Cordes
  3098. {
  3099. if(IsAreaConnected(areaid))
  3100. {
  3101. for(new i=0; i<MAX_PLAYERS; i++)
  3102. {
  3103. if(IsPlayerInArea(i, areaid))
  3104. {
  3105. return 1;
  3106. }
  3107. }
  3108. }
  3109. return 0;
  3110. }
  3111. stock IsPlayerInAnyArea(playerid) //By Gabriel "Larcius" Cordes
  3112. {
  3113. if(IsPlayerConnected(playerid))
  3114. {
  3115. for(new i=0; i<MAX_AREAS; i++)
  3116. {
  3117. if(IsPlayerInArea(playerid, i))
  3118. {
  3119. return 1;
  3120. }
  3121. }
  3122. }
  3123. return 0;
  3124. }
  3125. stock AreaDestroy(areaid)
  3126. {
  3127. return DestroyArea(areaid);
  3128. }
  3129. stock DestroyArea(areaid) //By Gabriel "Larcius" Cordes
  3130. {
  3131. if(IsAreaConnected(areaid))
  3132. {
  3133. Areas[areaid][Type]=0;
  3134. Areas[areaid][X]=0.0;
  3135. Areas[areaid][Y]=0.0;
  3136. Areas[areaid][Z]=0.0;
  3137. Areas[areaid][X2]=0.0;
  3138. Areas[areaid][Y2]=0.0;
  3139. Areas[areaid][Z2]=0.0;
  3140. Areas[areaid][Radius]=0.0;
  3141. for(new i=0; i<MAX_PLAYERS; i++)
  3142. {
  3143. Areas[areaid][PlayerInArea][i]=0;
  3144. }
  3145. return 1;
  3146. }
  3147. return 0;
  3148. }
  3149. stock strfloat(Float:value) //By Gabriel "Larcius" Cordes
  3150. {
  3151. new string[MAX_STRING];
  3152. format(string, sizeof(string), "%f", value);
  3153. return string;
  3154. }
  3155. stock strfromfloat(Float:value)
  3156. {
  3157. return strfloat(value);
  3158. }
  3159. stock floattostr(Float:value)
  3160. {
  3161. return strfloat(value);
  3162. }
  3163. stock floatval(Float:value) //By Gabriel "Larcius" Cordes
  3164. {
  3165. new string[MAX_STRING];
  3166. string = strfloat(floatround(value));
  3167. return strval(left(string,strfind(string, ".", true)));
  3168. }
  3169. stock floatint(Float:value)
  3170. {
  3171. return floatval(value);
  3172. }
  3173. stock IsAnyPlayerInRangeOfVehicle(vehicleid,Float:range)
  3174. {
  3175. for (new i=0; i<=MAX_PLAYERS;i++)
  3176. {
  3177. if (IsPlayerInRangeOfVehicle(i,vehicleid,range))
  3178. {
  3179. return 1;
  3180. }
  3181. }
  3182. return 0;
  3183. }
  3184. public ClearOutOfRangeVehicles()
  3185. {
  3186. #if !defined OutOfRange
  3187. new Float:OutOfRange=250.0;
  3188. #endif
  3189. if(OutOfRange<=0)
  3190. {
  3191. OutOfRange=INF_FLOAT;
  3192. }
  3193. new ret=0;
  3194. for (new i=0;i<MAX_VEHICLES;i++)
  3195. {
  3196. if(IsVehicleConnected(i) && Vehicles[i][Static]==-1 && !IsAnyPlayerInRangeOfVehicle(i, OutOfRange) && (!IsVehicleLockedForAnyPlayer(i) || (GetPlayers()==1 && IsVehicleObjectivedForAnyPlayer(i))))
  3197. {
  3198. DestroyVehicle2(i);
  3199. ret++;
  3200. }
  3201. }
  3202. return ret;
  3203. }
  3204. stock IsPlayerInRangeOfVehicle(playerid, vehicleid, Float:range) //By Gabriel "Larcius" Cordes
  3205. {
  3206. if(IsVehicleConnected(vehicleid))
  3207. {
  3208. new Float:x1, Float:y1, Float:z1;
  3209. GetVehiclePos(vehicleid, x1, y1, z1);
  3210. return IsPlayerInSphere(playerid,x1,y1,z1,range);
  3211. }
  3212. return 0;
  3213. }
  3214. stock IsAnyPlayerInVehicle(vehicleid, status=PLAYER_STATE_NONE) //By Gabriel "Larcius" Cordes
  3215. {
  3216. // PLAYER_STATE_DRIVER means has to be driver, PLAYER_STATE_PASSENGER means has to be passenger, all other or nothing means don't care if driver or passenger
  3217. for (new i=0; i<=MAX_PLAYERS; i++)
  3218. {
  3219. if (IsVehicleConnected(i) && IsPlayerInVehicle(i, vehicleid))
  3220. {
  3221. if (status==PLAYER_STATE_DRIVER)
  3222. {
  3223. if (IsPlayerDriver(i))
  3224. {
  3225. return 1;
  3226. }
  3227. }
  3228. else if (status==PLAYER_STATE_PASSENGER)
  3229. {
  3230. if (IsPlayerPassenger(i))
  3231. {
  3232. return 1;
  3233. }
  3234. }
  3235. else
  3236. {
  3237. return 1;
  3238. }
  3239. }
  3240. }
  3241. return 0;
  3242. }
  3243. /* Useful Callbacks: */
  3244. public ufctimer()
  3245. {
  3246. for (new i=0; i<MAX_VEHICLES; i++)
  3247. {
  3248. if(IsVehicleConnected(i))
  3249. {
  3250. CheckVehicle(i);
  3251. }
  3252. }
  3253. for (new i=0; i<MAX_PLAYERS; i++)
  3254. {
  3255. if(IsPlayerConnected(i))
  3256. {
  3257. CheckArea(i);
  3258. CheckPickup(i);
  3259. CheckShot(i);
  3260. CheckPlayer(i);
  3261. }
  3262. }
  3263. }
  3264. public Speeder(ms) //By Gabriel "Larcius" Cordes
  3265. {
  3266. new mspassed=(tickcount()-SpeederTime);
  3267. if(mspassed>=ms)
  3268. {
  3269. SpeederTime=tickcount();
  3270. for(new i=0; i<MAX_PLAYERS; i++)
  3271. {
  3272. if(IsPlayerConnected(i))
  3273. {
  3274. UpdateSpeed(i,mspassed);
  3275. }
  3276. }
  3277. }
  3278. return 1;
  3279. }
  3280. stock CheckPickup(playerid)
  3281. {
  3282. for(new i=0; i<MAX_PICKUPS; i++)
  3283. {
  3284. if(IsPickupConnected(i))
  3285. {
  3286. if(IsPlayerInSphere(playerid,Pickups[i][X],Pickups[i][Y],Pickups[i][Z],1.0))
  3287. {
  3288. #if defined OnPlayerPickupItem
  3289. OnPlayerPickupItem(playerid,i,Pickups[i][Model],Pickups[i][Type]);
  3290. if(Pickups[i][Respawn]==2)
  3291. {
  3292. Pickups[i][Respawn]=180;
  3293. }
  3294. #endif
  3295. }
  3296. if(Pickups[i][Respawn]==0)
  3297. {
  3298. #if defined OnPlayerGetShot
  3299. OnPickupRespawn(i,Pickups[i][Model]);
  3300. #endif
  3301. Pickups[i][Respawn]=999;
  3302. }
  3303. if(Pickups[i][Respawn]!=999)
  3304. {
  3305. Pickups[i][Respawn]--;
  3306. }
  3307. }
  3308. }
  3309. }
  3310. stock CheckShot(playerid)
  3311. {
  3312. new Float:x1, Float:y1, Float:z1, Float:h, rh;
  3313. GetPlayerPos(playerid,x1,y1,z1);
  3314. GetPlayerHealth(playerid,h);
  3315. rh = floatround(h);
  3316. if(preh[playerid]-rh > 5)
  3317. {
  3318. new cid = GetClosestPlayer(playerid);
  3319. new Float:dis = GetDistanceBetweenPlayers(playerid, cid);
  3320. if(dis<100.0 && z1>=Players[playerid][Z])
  3321. {
  3322. if(IsPlayerInAnyVehicle(cid))
  3323. {
  3324. if(GetPlayerSpeed(cid,SPEED_KMPH) < 75.0)
  3325. {
  3326. }
  3327. #if defined OnPlayerGetShot
  3328. OnPlayerGetShot(playerid);
  3329. #endif
  3330. }
  3331. #if defined OnPlayerGetShot
  3332. OnPlayerGetShot(playerid);
  3333. #endif
  3334. }
  3335. }
  3336. preh[playerid] = rh;
  3337. }
  3338. stock UpdateSpeed(playerid,ms) //By Gabriel "Larcius" Cordes
  3339. {
  3340. new Float:x1,Float:y1,Float:z1,Float:distance,Float:tmp,Float:speedprev,txt[MAX_STRING];
  3341. GetPlayerPos(playerid,x1,y1,z1);
  3342. distance = GetDistanceToPoint(playerid,Players[playerid][X],Players[playerid][Y],Players[playerid][Z]);
  3343. speedprev = Players[playerid][Speed2][MPS];
  3344. tmp = floatdiv(floatmul(distance,1000.0),float(ms));
  3345. Players[playerid][Speed2][MPS] = tmp;
  3346. Players[playerid][Speed2][KMPH] = floatmul(tmp,3.6);
  3347. Players[playerid][Speed2][MPH] = floatmul(tmp,5.76);
  3348. tmp = floatdiv(floatmul(floatsub(tmp,speedprev),1000.0),float(ms));
  3349. Players[playerid][Acceleration][MPS2] = tmp;
  3350. Players[playerid][Acceleration][KMPH2] = floatdiv(tmp,12960.0);
  3351. Players[playerid][Acceleration][G] = floatdiv(tmp,9.81);
  3352. Players[playerid][X] = x1;
  3353. Players[playerid][Y] = y1;
  3354. Players[playerid][Z] = z1;
  3355. if(!Players[playerid][Speed2][Show] && Players[playerid][Speed2][TextID])
  3356. {
  3357. TextDrawDestroy(Text:Players[playerid][Speed2][TextID]);
  3358. }
  3359. else if(Players[playerid][Speed2][Show])
  3360. {
  3361. new show_speed=Players[playerid][Speed2][Show];
  3362. format(txt, sizeof(txt), "%d km/h", floatval(GetPlayerSpeed(playerid,SPEED_KMPH)));
  3363. switch (show_speed)
  3364. {
  3365. case SPEED_MPS: format(txt, sizeof(txt), "%d m/s", floatval(GetPlayerSpeed(playerid,show_speed)));
  3366. case SPEED_KMPH: format(txt, sizeof(txt), "%d km/h", floatval(GetPlayerSpeed(playerid,show_speed)));
  3367. case SPEED_MPH: format(txt, sizeof(txt), "%d m/h", floatval(GetPlayerSpeed(playerid,show_speed)));
  3368. }
  3369. if(!Players[playerid][Speed2][TextID])
  3370. {
  3371. Players[playerid][Speed2][TextID]=_:TextDrawCreate(10.0, 100.0, txt);
  3372. TextDrawFont(Text:Players[playerid][Speed2][TextID], 3);
  3373. TextDrawShowForPlayer(playerid, Text:Players[playerid][Speed2][TextID]);
  3374. }
  3375. else
  3376. {
  3377. TextDrawSetString(Text:Players[playerid][Speed2][TextID], txt);
  3378. }
  3379. }
  3380. if(!Players[playerid][Acceleration][Show] && Players[playerid][Acceleration][TextID])
  3381. {
  3382. TextDrawDestroy(Text:Players[playerid][Acceleration][TextID]);
  3383. }
  3384. else if(Players[playerid][Acceleration][Show])
  3385. {
  3386. new show_acc=Players[playerid][Acceleration][Show];
  3387. format(txt, sizeof(txt), "%d km/h", floatval(GetPlayerAcceleration(playerid,ACC_MPS2)));
  3388. switch (show_acc)
  3389. {
  3390. case ACC_MPS2: format(txt, sizeof(txt), "%d m/ss", floatval(GetPlayerAcceleration(playerid,show_acc)));
  3391. case ACC_KMPH2: format(txt, sizeof(txt), "%d km/hh", floatval(GetPlayerAcceleration(playerid,show_acc)));
  3392. case ACC_G: format(txt, sizeof(txt), "%d g", floatval(GetPlayerAcceleration(playerid,show_acc)));
  3393. }
  3394. if(!Players[playerid][Acceleration][TextID])
  3395. {
  3396. Players[playerid][Acceleration][TextID]=_:TextDrawCreate(10.0, 120.0, txt);
  3397. TextDrawFont(Text:Players[playerid][Acceleration][TextID], 3);
  3398. TextDrawShowForPlayer(playerid, Text:Players[playerid][Acceleration][TextID]);
  3399. }
  3400. else
  3401. {
  3402. TextDrawSetString(Text:Players[playerid][Acceleration][TextID], txt);
  3403. }
  3404. }
  3405. }
  3406. stock CheckArea(playerid)
  3407. {
  3408. new Float:x1,Float:y1,Float:z1;
  3409. GetPlayerPos(playerid,x1,y1,z1);
  3410. for(new areaid=0; areaid<MAX_AREAS; areaid++)
  3411. {
  3412. if(IsAreaConnected(areaid))
  3413. {
  3414. if(IsPlayerInArea(playerid,areaid))
  3415. {
  3416. if(!Areas[areaid][PlayerInArea][playerid])
  3417. {
  3418. Areas[areaid][PlayerInArea][playerid]=1;
  3419. #if defined OnPlayerEnterArea
  3420. OnPlayerEnterArea(playerid,areaid);
  3421. #endif
  3422. }
  3423. }
  3424. else if(Areas[areaid][PlayerInArea][playerid])
  3425. {
  3426. Areas[areaid][PlayerInArea][playerid]=0;
  3427. #if defined OnPlayerLeaveArea
  3428. OnPlayerLeaveArea(playerid,areaid);
  3429. #endif
  3430. }
  3431. }
  3432. }
  3433. new moneys = GetPlayerMoney(playerid);
  3434. new tmpmon = Players[playerid][Money]-moneys;
  3435. new tmpmon2 = moneys-Players[playerid][Money];
  3436. #if defined OnPlayerGamble
  3437. new nb;
  3438. #endif
  3439. if(tmpmon > 0)
  3440. {
  3441. #if defined OnPlayerBuyWeapon
  3442. for(new i=0;i<sizeof(lvammu);i++)
  3443. {
  3444. if(IsPlayerInSphere(playerid,lvammu[i][0],lvammu[i][1],lvammu[i][2],1.0))
  3445. {
  3446. switch (tmpmon)
  3447. {
  3448. case 200:OnPlayerBuyWeapon(playerid,22,200);
  3449. case 240:OnPlayerBuyWeapon(playerid,0,240);
  3450. case 300:OnPlayerBuyWeapon(playerid,32,300);
  3451. case 500:OnPlayerBuyWeapon(playerid,28,500);
  3452. case 600:{OnPlayerBuyWeapon(playerid,23,600);OnPlayerBuyWeapon(playerid,25,0);}
  3453. case 800:OnPlayerBuyWeapon(playerid,26,800);
  3454. case 1200:{OnPlayerBuyWeapon(playerid,24,1200);OnPlayerBuyWeapon(playerid,27,1200);}
  3455. case 2000:OnPlayerBuyWeapon(playerid,29,2000);
  3456. case 3500:OnPlayerBuyWeapon(playerid,30,3500);
  3457. case 4500:OnPlayerBuyWeapon(playerid,31,4500);
  3458. }
  3459. }
  3460. }
  3461. for(new i=0;i<sizeof(ammu);i++)
  3462. {
  3463. if(IsPlayerInSphere(playerid,ammu[i][0],ammu[i][1],ammu[i][2],1.0))
  3464. {
  3465. switch (tmpmon)
  3466. {
  3467. case 200:{OnPlayerBuyWeapon(playerid,22,200);OnPlayerBuyWeapoon(playerid,0,0);}
  3468. case 300:OnPlayerBuyWeapon(playerid,32,300);
  3469. case 500:OnPlayerBuyWeapon(playerid,28,500);
  3470. case 600:{OnPlayerBuyWeapon(playerid,23,600);OnPlayerBuyWeapon(playerid,25,0);}
  3471. case 800:OnPlayerBuyWeapon(playerid,26,800);
  3472. case 1200:{OnPlayerBuyWeapon(playerid,24,1200);OnPlayerBuyWeapon(playerid,27,1200);}
  3473. case 2000:OnPlayerBuyWeapon(playerid,29,2000);
  3474. case 3500:OnPlayerBuyWeapon(playerid,30,3500);
  3475. case 4500:OnPlayerBuyWeapon(playerid,31,4500);
  3476. }
  3477. }
  3478. }
  3479. #endif
  3480. #if defined OnPlayerBuyPizza
  3481. if(IsPlayerInSphere(playerid,374.0000,374.0000,374.0000,1.0))
  3482. {
  3483. switch (tmpmon)
  3484. {
  3485. case 2:OnPlayerBuyPizza(playerid,2);
  3486. }
  3487. }
  3488. #endif
  3489. #if defined OnPlayerBuyChicken
  3490. if(IsPlayerInSphere(playerid,368.7890,-6.8570,1001.8516,1.0))
  3491. {
  3492. switch (tmpmon)
  3493. {
  3494. case 2:OnPlayerBuyChicken(playerid,2.0);
  3495. }
  3496. }
  3497. #endif
  3498. #if defined OnPlayerBuyBurger
  3499. if(IsPlayerInSphere(playerid,375.5660,-68.2220,1001.5151,1.0))
  3500. {
  3501. switch (tmpmon)
  3502. {
  3503. case 2:OnPlayerBuyBurger(playerid,2);
  3504. }
  3505. }
  3506. #endif
  3507. #if defined OnPlayerBuyDrink
  3508. if(tmpmon == 5)
  3509. {
  3510. OnPlayerBuyDrink(playerid,5);
  3511. }
  3512. #endif
  3513. #if defined OnPlayerGamble
  3514. if(betting[playerid] != 0)
  3515. {
  3516. if(bets[playerid] == 0)
  3517. {
  3518. bets[playerid] = tmpmon;
  3519. }
  3520. else
  3521. {
  3522. OnPlayerGamble(playerid,betting[playerid],bets[playerid],0);
  3523. betting[playerid] = 0;
  3524. bets[playerid] = 0;
  3525. }
  3526. }
  3527. #endif
  3528. #if defined OnPlayerModVehicle
  3529. if(IsPlayerInSphere(playerid,617.5360,-1.9889,1000.6190,4.0) && IsPlayerInAnyVehicle(playerid))
  3530. {
  3531. new vehicleid = GetPlayerVehicleID(playerid);
  3532. switch (tmpmon)
  3533. {
  3534. case 150:OnPlayerModVehicle(playerid,vehicleid,1,150);
  3535. case 200:OnPlayerModVehicle(playerid,vehicleid,2,200);
  3536. case 250:OnPlayerModVehicle(playerid,vehicleid,3,250);
  3537. case 300:OnPlayerModVehicle(playerid,vehicleid,4,300);
  3538. case 350:{OnPlayerModVehicle(playerid,vehicleid,5,350);OnPlayerModVehicle(playerid,vehicleid,6,0);}
  3539. case 500:{OnPlayerModVehicle(playerid,vehicleid,7,500);OnPlayerModVehicle(playerid,vehicleid,8,0);}
  3540. case 550:OnPlayerModVehicle(playerid,vehicleid,9,550);
  3541. case 620:OnPlayerModVehicle(playerid,vehicleid,10,620);
  3542. case 770:OnPlayerModVehicle(playerid,vehicleid,11,770);
  3543. case 820:OnPlayerModVehicle(playerid,vehicleid,12,820);
  3544. case 1000:{OnPlayerModVehicle(playerid,vehicleid,13,1000);OnPlayerModVehicle(playerid,vehicleid,14,0);OnPlayerModVehicle(playerid,vehicleid,15,0);}
  3545. case 1030:OnPlayerModVehicle(playerid,vehicleid,16,1030);
  3546. case 1140:OnPlayerModVehicle(playerid,vehicleid,17,1140);
  3547. case 1200:OnPlayerModVehicle(playerid,vehicleid,18,1200);
  3548. case 1230:OnPlayerModVehicle(playerid,vehicleid,19,1230);
  3549. case 1500:OnPlayerModVehicle(playerid,vehicleid,20,1500);
  3550. case 1560:OnPlayerModVehicle(playerid,vehicleid,21,1560);
  3551. }
  3552. }
  3553. #endif
  3554. }
  3555. if(tmpmon2 > 0)
  3556. {
  3557. #if defined OnPlayerGamble
  3558. if(betting != 0)
  3559. {
  3560. OnPlayerGamble(playerid,betting[playerid],bets[playerid],1);
  3561. betting[playerid] = 0;
  3562. bets[playerid] = 0;
  3563. }
  3564. #endif
  3565. }
  3566. #if defined OnPlayerGamble
  3567. for(new i=0;i<sizeof(gamble1);i++)
  3568. {
  3569. if(IsPlayerInSphere(playerid,gamble1[i][0],gamble1[i][1],gamble1[i][2],1.0)
  3570. {
  3571. betting[playerid] = 1;
  3572. nb++;
  3573. }
  3574. }
  3575. for(new i=0;i<sizeof(gamble2);i++)
  3576. {
  3577. if(IsPlayerInSphere(playerid,gamble2[i][0],gamble2[i][1],gamble2[i][2],1.0)
  3578. {
  3579. betting[playerid] = 2;
  3580. nb++;
  3581. }
  3582. }
  3583. for(new i=0;i<sizeof(gamble3);i++)
  3584. {
  3585. if(IsPlayerInSphere(playerid,gamble3[i][0],gamble3[i][1],gamble3[i][2],1.0)
  3586. {
  3587. betting[playerid] = 3;
  3588. nb++;
  3589. }
  3590. }
  3591. for(new i=0;i<sizeof(gamble4);i++)
  3592. {
  3593. if(IsPlayerInSphere(playerid,gamble4[i][0],gamble4[i][1],gamble4[i][2],1.0)
  3594. {
  3595. betting[playerid] = 4;
  3596. nb++;
  3597. }
  3598. }
  3599. for(new i=0;i<sizeof(gamble5);i++)
  3600. {
  3601. if(IsPlayerInSphere(playerid,gamble5[i][0],gamble5[i][1],gamble5[i][2],1.0)
  3602. {
  3603. betting[playerid] = 2;
  3604. nb++;
  3605. }
  3606. }
  3607. for(new i=0;i<sizeof(gamble6);i++)
  3608. {
  3609. if(IsPlayerInSphere(playerid,gamble6[i][0],gamble6[i][1],gamble6[i][2],1.0)
  3610. {
  3611. betting[playerid] = 5;
  3612. nb++;
  3613. }
  3614. }
  3615. for(new i=0;i<sizeof(gamble7);i++)
  3616. {
  3617. if(IsPlayerInSphere(playerid,gamble7[i][0],gamble7[i][1],gamble7[i][2],1.0)
  3618. {
  3619. betting[playerid] = 3;
  3620. nb++;
  3621. }
  3622. }
  3623. if(nb == 0)
  3624. {
  3625. betting[playerid] = 0;
  3626. bets[playerid] = 0;
  3627. }
  3628. #endif
  3629. }
  3630. stock CheckVehicle(vehicleid) //By Gabriel "Larcius" Cordes
  3631. {
  3632. new Float:h, trailerid=-1;
  3633. GetVehicleHealth(vehicleid, h);
  3634. if(IsTrailerAttachedToVehicle(vehicleid))
  3635. {
  3636. trailerid=GetVehicleTrailer(vehicleid);
  3637. }
  3638. #if defined OnVehicleGetHealth
  3639. if(h!=Vehicles[vehicleid][Health])
  3640. {
  3641. OnVehicleGetHealth(vehicleid, floatsub(h,Vehicles[vehicleid][Health]));
  3642. }
  3643. #endif
  3644. if(trailerid>0 && Vehicles[vehicleid][Cur_Trailer]<0)
  3645. {
  3646. Vehicles[vehicleid][Cur_Trailer]=trailerid;
  3647. #if defined OnVehicleAttachTrailer
  3648. OnVehicleAttachTrailer(vehicleid, trailerid);
  3649. #endif
  3650. }
  3651. else if(trailerid<0 && Vehicles[vehicleid][Cur_Trailer]>0)
  3652. {
  3653. Vehicles[vehicleid][Last_Trailer]=Vehicles[vehicleid][Cur_Trailer];
  3654. Vehicles[vehicleid][Cur_Trailer]=-1;
  3655. #if defined OnVehicleDetachTrailer
  3656. OnVehicleDetachTrailer(vehicleid, Vehicles[vehicleid][Cur_Trailer]);
  3657. #endif
  3658. }
  3659. }
  3660. stock CheckPlayer(playerid) //By Rafelder (edited by Gabriel "Larcius" Cordes)
  3661. {
  3662. new Float:h, Float:a, m, t, s, w, sc, wl, keys, updown, leftright;
  3663. GetPlayerHealth(playerid, h);
  3664. GetPlayerArmour(playerid, a);
  3665. t=GetPlayerTeam(playerid);
  3666. m=GetPlayerMoney(playerid);
  3667. s=GetPlayerState(playerid);
  3668. w=GetPlayerWeapon(playerid);
  3669. sc=GetPlayerScore(playerid);
  3670. wl=GetPlayerWantedLevel(playerid);
  3671. GetPlayerKeys(playerid, keys, updown, leftright);
  3672. #if defined OnPlayerGetHealth
  3673. if (h!=Players[playerid][Health])
  3674. {
  3675. OnPlayerGetHealth(playerid,floatsub(h,Players[playerid][Health]));
  3676. }
  3677. #endif
  3678. #if defined OnPlayerGetArmour
  3679. if (a!=Players[playerid][Armour])
  3680. {
  3681. OnPlayerGetArmour(playerid,floatsub(a,Players[playerid][Armour]));
  3682. }
  3683. #endif
  3684. #if defined OnPlayerGetMoney
  3685. if (m!=Players[playerid][Money])
  3686. {
  3687. OnPlayerGetMoney(playerid,(m-Players[playerid][Money]));
  3688. }
  3689. #endif
  3690. if (t!=Players[playerid][Cur_Team])
  3691. {
  3692. Players[playerid][Last_Team]=Players[playerid][Cur_Team];
  3693. Players[playerid][Cur_Team]=t;
  3694. #if defined OnPlayerChangeTeam
  3695. OnPlayerChangeTeam(playerid, Players[playerid][Last_Team], t); //By Gabriel "Larcius" Cordes
  3696. #endif
  3697. }
  3698. if (s!=Players[playerid][State])
  3699. {
  3700. if(s==PLAYER_STATE_DRIVER || s==PLAYER_STATE_PASSENGER)
  3701. {
  3702. new vehicleid=GetPlayerVehicleID(playerid);
  3703. if (Vehicles[vehicleid][Locked][playerid])
  3704. {
  3705. new Float:x1, Float:y1, Float:z1;
  3706. GetPlayerPos(playerid, x1, y1, z1);
  3707. GameTextForPlayer(playerid, "~w~This vehicle is locked", 3000, 4);
  3708. RemovePlayerFromVehicle(playerid);
  3709. SetPlayerPos(playerid, x1, y1, z1);
  3710. }
  3711. else if(IsVehicleLockedForAnyPlayer(vehicleid) || (GetPlayers()==1 && IsVehicleObjectivedForPlayer(vehicleid, playerid)))
  3712. {
  3713. SetVehicleParamsForAll(vehicleid, 0, 0, 1);
  3714. }
  3715. new Text:txt=TextDrawCreateTimer(500.0,400.0,GetVehicleName(vehicleid),3000);
  3716. TextDrawFont(txt,3);
  3717. TextDrawShowForPlayer(playerid,txt);
  3718. }
  3719. else
  3720. {
  3721. Players[playerid][Last_Vehicle]=Players[playerid][Cur_Vehicle];
  3722. new vehicleid=Players[playerid][Last_Vehicle];
  3723. if ((Players[playerid][State]==PLAYER_STATE_DRIVER || Players[playerid][State]==PLAYER_STATE_PASSENGER) && IsVehicleLockedForPlayer(vehicleid, playerid))
  3724. {
  3725. new Float:x1, Float:y1, Float:z1;
  3726. GetVehiclePos(vehicleid, x1, y1, z1);
  3727. SetVehicleParamsForPlayer2(vehicleid, playerid, 1, 0, 1);
  3728. }
  3729. }
  3730. #if defined OnPlayerChangeState
  3731. OnPlayerChangeState(playerid, Players[playerid][State], s, Players[playerid][Last_Vehicle]);
  3732. #endif
  3733. }
  3734. #if defined OnPlayerSwitchWeapon
  3735. if (w!=Players[playerid][Weapon])
  3736. {
  3737. OnPlayerSwitchWeapon(playerid, Players[playerid][Weapon], w);
  3738. }
  3739. #endif
  3740. #if defined OnPlayerGetScore
  3741. if (sc!=Players[playerid][Score])
  3742. {
  3743. OnPlayerGetScore(playerid, (sc-Players[playerid][Score]));
  3744. }
  3745. #endif
  3746. #if defined OnPlayerGetWantedLevel
  3747. if (wl!=Players[playerid][Wanted])
  3748. {
  3749. OnPlayerGetWantedLevel(playerid, (wl-Players[playerid][Wanted]));
  3750. }
  3751. #endif
  3752. #if defined OnPlayerPressMoveKey
  3753. if (updown)
  3754. {
  3755. OnPlayerPressMoveKey(playerid, updown);
  3756. }
  3757. else if (updown)
  3758. {
  3759. OnPlayerPressMoveKey(playerid, leftright);
  3760. }
  3761. #endif
  3762. #if defined OnPlayerPressKey
  3763. if(keys && !updown && !leftright)
  3764. {
  3765. OnPlayerPressKey(playerid, keys);
  3766. }
  3767. #endif
  3768. Players[playerid][Health]=h;
  3769. Players[playerid][Armour]=a;
  3770. Players[playerid][Money]=m;
  3771. Players[playerid][State]=s;
  3772. Players[playerid][Weapon]=w;
  3773. Players[playerid][Score]=sc;
  3774. Players[playerid][Wanted]=wl;
  3775. if(IsPlayerInAnyVehicle(playerid))
  3776. {
  3777. Players[playerid][Cur_Vehicle]=GetPlayerVehicleID(playerid);
  3778. }
  3779. else
  3780. {
  3781. Players[playerid][Cur_Vehicle]=-1;
  3782. }
  3783. if (h<0.0)
  3784. {
  3785. Players[playerid][Health]=0.0;
  3786. Players[playerid][Armour]=0.0;
  3787. }
  3788. }
  3789. forward ufctimer();
  3790. forward Counter();
  3791. forward Speeder(ms);
  3792. forward ClearOutOfRangeVehicles();
  3793. forward TextDrawDestroyTimer2(textid);
  3794. // --------------------------------------------------
  3795. // Forwards (Callback declarations)
  3796. // --------------------------------------------------
  3797. #if defined OnPlayerPickupItem
  3798. forward OnPlayerPickupItem(playerid,pickupid,modelid,type);
  3799. #endif
  3800. #if defined OnPickupRespawn
  3801. forward OnPickupRespawn(pickupid,modelid);
  3802. #endif
  3803. #if defined OnPlayerGetShot
  3804. forward OnPlayerGetShot(playerid);
  3805. #endif
  3806. #if defined OnPlayerBuyWeapon
  3807. forward OnPlayerBuyWeapon(playerid,weaponid,cost);
  3808. #endif
  3809. #if defined OnPlayerBuyPizza
  3810. forward OnPlayerBuyPizza(playerid,cost);
  3811. #endif
  3812. #if defined OnPlayerBuyChicken
  3813. forward OnPlayerBuyChicken(playerid,cost);
  3814. #endif
  3815. #if defined OnPlayerBuyBurger
  3816. forward OnPlayerBuyBurger(playerid,cost);
  3817. #endif
  3818. #if defined OnPlayerBuyDrink
  3819. forward OnPlayerBuyDrink(playerid,cost);
  3820. #endif
  3821. #if defined OnPlayerGamble
  3822. forward OnPlayerGamble(playerid,type,bet,wl);
  3823. #endif
  3824. #if defined OnPlayerModVehicle
  3825. forward OnPlayerModVehicle(playerid,vehicleid,partid,cost);
  3826. #endif
  3827. #if defined OnVehicleSpawn2
  3828. forward OnVehicleSpawn2(vehicleid,dynamic);
  3829. #endif
  3830. #if defined OnPlayerGetHealth
  3831. forward OnPlayerGetHealth(playerid, Float:health);
  3832. #endif
  3833. #if defined OnPlayerGetArmour
  3834. forward OnPlayerGetArmour(playerid, Float:armour);
  3835. #endif
  3836. #if defined OnPlayerGetMoney
  3837. forward OnPlayerGetMoney(playerid, money);
  3838. #endif
  3839. #if defined OnPlayerGetScore
  3840. forward OnPlayerGetScore(playerid, score);
  3841. #endif
  3842. #if defined OnPlayerGetWantedLevel
  3843. forward OnPlayerGetWantedLevel(playerid, wantedlevel);
  3844. #endif
  3845. #if defined OnPlayerChangeTeam
  3846. forward OnPlayerChangeTeam(playerid, prev_team, cur_team);
  3847. #endif
  3848. #if defined OnPlayerChangeState
  3849. forward OnPlayerChangeState(playerid, prev_state, cur_state, last_vehicleid);
  3850. #endif
  3851. #if defined OnPlayerSwitchWeapon
  3852. forward OnPlayerSwitchWeapon(playerid, prev_weapon, cur_weapon);
  3853. #endif
  3854. #if defined OnPlayerPressKey
  3855. forward OnPlayerPressKey(playerid, key);
  3856. #endif
  3857. #if defined OnPlayerPressMoveKey
  3858. forward OnPlayerPressMoveKey(playerid, key);
  3859. #endif
  3860. #if defined OnVehicleGetHealth
  3861. forward OnVehicleGetHealth(vehicleid, Float:health);
  3862. #endif
  3863. #if defined OnVehicleAttachTrailer
  3864. forward OnVehicleAttachTrailer(vehicleid, trailerid);
  3865. #endif
  3866. #if defined OnVehicleDetachTrailer
  3867. forward OnVehicleDetachTrailer(vehicleid, trailerid);
  3868. #endif
  3869. #if defined OnPlayerToggleControllable
  3870. forward OnPlayerToggleControllable(playerid, controllable);
  3871. #endif
  3872. #if defined OnPlayerEnterArea
  3873. forward OnPlayerEnterArea(playerid,areaid);
  3874. #endif
  3875. #if defined OnPlayerLeaveArea
  3876. forward OnPlayerLeaveArea(playerid,areaid);
  3877. #endif
  3878. public OnVehicleSpawn(vehicleid)
  3879. {
  3880. if(Vehicles[vehicleid][Respawn]>=INF_INT && Vehicles[vehicleid][Static]==-1)
  3881. {
  3882. DestroyVehicle2(vehicleid);
  3883. }
  3884. else
  3885. {
  3886. SetVehicleParamsForAll(vehicleid,0,0);
  3887. #if defined OnVehicleSpawn2
  3888. OnVehicleSpawn2(vehicleid,0);
  3889. #endif
  3890. }
  3891. return 1;
  3892. }