gamemode.pwn 2.4 MB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852188531885418855188561885718858188591886018861188621886318864188651886618867188681886918870188711887218873188741887518876188771887818879188801888118882188831888418885188861888718888188891889018891188921889318894188951889618897188981889918900189011890218903189041890518906189071890818909189101891118912189131891418915189161891718918189191892018921189221892318924189251892618927189281892918930189311893218933189341893518936189371893818939189401894118942189431894418945189461894718948189491895018951189521895318954189551895618957189581895918960189611896218963189641896518966189671896818969189701897118972189731897418975189761897718978189791898018981189821898318984189851898618987189881898918990189911899218993189941899518996189971899818999190001900119002190031900419005190061900719008190091901019011190121901319014190151901619017190181901919020190211902219023190241902519026190271902819029190301903119032190331903419035190361903719038190391904019041190421904319044190451904619047190481904919050190511905219053190541905519056190571905819059190601906119062190631906419065190661906719068190691907019071190721907319074190751907619077190781907919080190811908219083190841908519086190871908819089190901909119092190931909419095190961909719098190991910019101191021910319104191051910619107191081910919110191111911219113191141911519116191171911819119191201912119122191231912419125191261912719128191291913019131191321913319134191351913619137191381913919140191411914219143191441914519146191471914819149191501915119152191531915419155191561915719158191591916019161191621916319164191651916619167191681916919170191711917219173191741917519176191771917819179191801918119182191831918419185191861918719188191891919019191191921919319194191951919619197191981919919200192011920219203192041920519206192071920819209192101921119212192131921419215192161921719218192191922019221192221922319224192251922619227192281922919230192311923219233192341923519236192371923819239192401924119242192431924419245192461924719248192491925019251192521925319254192551925619257192581925919260192611926219263192641926519266192671926819269192701927119272192731927419275192761927719278192791928019281192821928319284192851928619287192881928919290192911929219293192941929519296192971929819299193001930119302193031930419305193061930719308193091931019311193121931319314193151931619317193181931919320193211932219323193241932519326193271932819329193301933119332193331933419335193361933719338193391934019341193421934319344193451934619347193481934919350193511935219353193541935519356193571935819359193601936119362193631936419365193661936719368193691937019371193721937319374193751937619377193781937919380193811938219383193841938519386193871938819389193901939119392193931939419395193961939719398193991940019401194021940319404194051940619407194081940919410194111941219413194141941519416194171941819419194201942119422194231942419425194261942719428194291943019431194321943319434194351943619437194381943919440194411944219443194441944519446194471944819449194501945119452194531945419455194561945719458194591946019461194621946319464194651946619467194681946919470194711947219473194741947519476194771947819479194801948119482194831948419485194861948719488194891949019491194921949319494194951949619497194981949919500195011950219503195041950519506195071950819509195101951119512195131951419515195161951719518195191952019521195221952319524195251952619527195281952919530195311953219533195341953519536195371953819539195401954119542195431954419545195461954719548195491955019551195521955319554195551955619557195581955919560195611956219563195641956519566195671956819569195701957119572195731957419575195761957719578195791958019581195821958319584195851958619587195881958919590195911959219593195941959519596195971959819599196001960119602196031960419605196061960719608196091961019611196121961319614196151961619617196181961919620196211962219623196241962519626196271962819629196301963119632196331963419635196361963719638196391964019641196421964319644196451964619647196481964919650196511965219653196541965519656196571965819659196601966119662196631966419665196661966719668196691967019671196721967319674196751967619677196781967919680196811968219683196841968519686196871968819689196901969119692196931969419695196961969719698196991970019701197021970319704197051970619707197081970919710197111971219713197141971519716197171971819719197201972119722197231972419725197261972719728197291973019731197321973319734197351973619737197381973919740197411974219743197441974519746197471974819749197501975119752197531975419755197561975719758197591976019761197621976319764197651976619767197681976919770197711977219773197741977519776197771977819779197801978119782197831978419785197861978719788197891979019791197921979319794197951979619797197981979919800198011980219803198041980519806198071980819809198101981119812198131981419815198161981719818198191982019821198221982319824198251982619827198281982919830198311983219833198341983519836198371983819839198401984119842198431984419845198461984719848198491985019851198521985319854198551985619857198581985919860198611986219863198641986519866198671986819869198701987119872198731987419875198761987719878198791988019881198821988319884198851988619887198881988919890198911989219893198941989519896198971989819899199001990119902199031990419905199061990719908199091991019911199121991319914199151991619917199181991919920199211992219923199241992519926199271992819929199301993119932199331993419935199361993719938199391994019941199421994319944199451994619947199481994919950199511995219953199541995519956199571995819959199601996119962199631996419965199661996719968199691997019971199721997319974199751997619977199781997919980199811998219983199841998519986199871998819989199901999119992199931999419995199961999719998199992000020001200022000320004200052000620007200082000920010200112001220013200142001520016200172001820019200202002120022200232002420025200262002720028200292003020031200322003320034200352003620037200382003920040200412004220043200442004520046200472004820049200502005120052200532005420055200562005720058200592006020061200622006320064200652006620067200682006920070200712007220073200742007520076200772007820079200802008120082200832008420085200862008720088200892009020091200922009320094200952009620097200982009920100201012010220103201042010520106201072010820109201102011120112201132011420115201162011720118201192012020121201222012320124201252012620127201282012920130201312013220133201342013520136201372013820139201402014120142201432014420145201462014720148201492015020151201522015320154201552015620157201582015920160201612016220163201642016520166201672016820169201702017120172201732017420175201762017720178201792018020181201822018320184201852018620187201882018920190201912019220193201942019520196201972019820199202002020120202202032020420205202062020720208202092021020211202122021320214202152021620217202182021920220202212022220223202242022520226202272022820229202302023120232202332023420235202362023720238202392024020241202422024320244202452024620247202482024920250202512025220253202542025520256202572025820259202602026120262202632026420265202662026720268202692027020271202722027320274202752027620277202782027920280202812028220283202842028520286202872028820289202902029120292202932029420295202962029720298202992030020301203022030320304203052030620307203082030920310203112031220313203142031520316203172031820319203202032120322203232032420325203262032720328203292033020331203322033320334203352033620337203382033920340203412034220343203442034520346203472034820349203502035120352203532035420355203562035720358203592036020361203622036320364203652036620367203682036920370203712037220373203742037520376203772037820379203802038120382203832038420385203862038720388203892039020391203922039320394203952039620397203982039920400204012040220403204042040520406204072040820409204102041120412204132041420415204162041720418204192042020421204222042320424204252042620427204282042920430204312043220433204342043520436204372043820439204402044120442204432044420445204462044720448204492045020451204522045320454204552045620457204582045920460204612046220463204642046520466204672046820469204702047120472204732047420475204762047720478204792048020481204822048320484204852048620487204882048920490204912049220493204942049520496204972049820499205002050120502205032050420505205062050720508205092051020511205122051320514205152051620517205182051920520205212052220523205242052520526205272052820529205302053120532205332053420535205362053720538205392054020541205422054320544205452054620547205482054920550205512055220553205542055520556205572055820559205602056120562205632056420565205662056720568205692057020571205722057320574205752057620577205782057920580205812058220583205842058520586205872058820589205902059120592205932059420595205962059720598205992060020601206022060320604206052060620607206082060920610206112061220613206142061520616206172061820619206202062120622206232062420625206262062720628206292063020631206322063320634206352063620637206382063920640206412064220643206442064520646206472064820649206502065120652206532065420655206562065720658206592066020661206622066320664206652066620667206682066920670206712067220673206742067520676206772067820679206802068120682206832068420685206862068720688206892069020691206922069320694206952069620697206982069920700207012070220703207042070520706207072070820709207102071120712207132071420715207162071720718207192072020721207222072320724207252072620727207282072920730207312073220733207342073520736207372073820739207402074120742207432074420745207462074720748207492075020751207522075320754207552075620757207582075920760207612076220763207642076520766207672076820769207702077120772207732077420775207762077720778207792078020781207822078320784207852078620787207882078920790207912079220793207942079520796207972079820799208002080120802208032080420805208062080720808208092081020811208122081320814208152081620817208182081920820208212082220823208242082520826208272082820829208302083120832208332083420835208362083720838208392084020841208422084320844208452084620847208482084920850208512085220853208542085520856208572085820859208602086120862208632086420865208662086720868208692087020871208722087320874208752087620877208782087920880208812088220883208842088520886208872088820889208902089120892208932089420895208962089720898208992090020901209022090320904209052090620907209082090920910209112091220913209142091520916209172091820919209202092120922209232092420925209262092720928209292093020931209322093320934209352093620937209382093920940209412094220943209442094520946209472094820949209502095120952209532095420955209562095720958209592096020961209622096320964209652096620967209682096920970209712097220973209742097520976209772097820979209802098120982209832098420985209862098720988209892099020991209922099320994209952099620997209982099921000210012100221003210042100521006210072100821009210102101121012210132101421015210162101721018210192102021021210222102321024210252102621027210282102921030210312103221033210342103521036210372103821039210402104121042210432104421045210462104721048210492105021051210522105321054210552105621057210582105921060210612106221063210642106521066210672106821069210702107121072210732107421075210762107721078210792108021081210822108321084210852108621087210882108921090210912109221093210942109521096210972109821099211002110121102211032110421105211062110721108211092111021111211122111321114211152111621117211182111921120211212112221123211242112521126211272112821129211302113121132211332113421135211362113721138211392114021141211422114321144211452114621147211482114921150211512115221153211542115521156211572115821159211602116121162211632116421165211662116721168211692117021171211722117321174211752117621177211782117921180211812118221183211842118521186211872118821189211902119121192211932119421195211962119721198211992120021201212022120321204212052120621207212082120921210212112121221213212142121521216212172121821219212202122121222212232122421225212262122721228212292123021231212322123321234212352123621237212382123921240212412124221243212442124521246212472124821249212502125121252212532125421255212562125721258212592126021261212622126321264212652126621267212682126921270212712127221273212742127521276212772127821279212802128121282212832128421285212862128721288212892129021291212922129321294212952129621297212982129921300213012130221303213042130521306213072130821309213102131121312213132131421315213162131721318213192132021321213222132321324213252132621327213282132921330213312133221333213342133521336213372133821339213402134121342213432134421345213462134721348213492135021351213522135321354213552135621357213582135921360213612136221363213642136521366213672136821369213702137121372213732137421375213762137721378213792138021381213822138321384213852138621387213882138921390213912139221393213942139521396213972139821399214002140121402214032140421405214062140721408214092141021411214122141321414214152141621417214182141921420214212142221423214242142521426214272142821429214302143121432214332143421435214362143721438214392144021441214422144321444214452144621447214482144921450214512145221453214542145521456214572145821459214602146121462214632146421465214662146721468214692147021471214722147321474214752147621477214782147921480214812148221483214842148521486214872148821489214902149121492214932149421495214962149721498214992150021501215022150321504215052150621507215082150921510215112151221513215142151521516215172151821519215202152121522215232152421525215262152721528215292153021531215322153321534215352153621537215382153921540215412154221543215442154521546215472154821549215502155121552215532155421555215562155721558215592156021561215622156321564215652156621567215682156921570215712157221573215742157521576215772157821579215802158121582215832158421585215862158721588215892159021591215922159321594215952159621597215982159921600216012160221603216042160521606216072160821609216102161121612216132161421615216162161721618216192162021621216222162321624216252162621627216282162921630216312163221633216342163521636216372163821639216402164121642216432164421645216462164721648216492165021651216522165321654216552165621657216582165921660216612166221663216642166521666216672166821669216702167121672216732167421675216762167721678216792168021681216822168321684216852168621687216882168921690216912169221693216942169521696216972169821699217002170121702217032170421705217062170721708217092171021711217122171321714217152171621717217182171921720217212172221723217242172521726217272172821729217302173121732217332173421735217362173721738217392174021741217422174321744217452174621747217482174921750217512175221753217542175521756217572175821759217602176121762217632176421765217662176721768217692177021771217722177321774217752177621777217782177921780217812178221783217842178521786217872178821789217902179121792217932179421795217962179721798217992180021801218022180321804218052180621807218082180921810218112181221813218142181521816218172181821819218202182121822218232182421825218262182721828218292183021831218322183321834218352183621837218382183921840218412184221843218442184521846218472184821849218502185121852218532185421855218562185721858218592186021861218622186321864218652186621867218682186921870218712187221873218742187521876218772187821879218802188121882218832188421885218862188721888218892189021891218922189321894218952189621897218982189921900219012190221903219042190521906219072190821909219102191121912219132191421915219162191721918219192192021921219222192321924219252192621927219282192921930219312193221933219342193521936219372193821939219402194121942219432194421945219462194721948219492195021951219522195321954219552195621957219582195921960219612196221963219642196521966219672196821969219702197121972219732197421975219762197721978219792198021981219822198321984219852198621987219882198921990219912199221993219942199521996219972199821999220002200122002220032200422005220062200722008220092201022011220122201322014220152201622017220182201922020220212202222023220242202522026220272202822029220302203122032220332203422035220362203722038220392204022041220422204322044220452204622047220482204922050220512205222053220542205522056220572205822059220602206122062220632206422065220662206722068220692207022071220722207322074220752207622077220782207922080220812208222083220842208522086220872208822089220902209122092220932209422095220962209722098220992210022101221022210322104221052210622107221082210922110221112211222113221142211522116221172211822119221202212122122221232212422125221262212722128221292213022131221322213322134221352213622137221382213922140221412214222143221442214522146221472214822149221502215122152221532215422155221562215722158221592216022161221622216322164221652216622167221682216922170221712217222173221742217522176221772217822179221802218122182221832218422185221862218722188221892219022191221922219322194221952219622197221982219922200222012220222203222042220522206222072220822209222102221122212222132221422215222162221722218222192222022221222222222322224222252222622227222282222922230222312223222233222342223522236222372223822239222402224122242222432224422245222462224722248222492225022251222522225322254222552225622257222582225922260222612226222263222642226522266222672226822269222702227122272222732227422275222762227722278222792228022281222822228322284222852228622287222882228922290222912229222293222942229522296222972229822299223002230122302223032230422305223062230722308223092231022311223122231322314223152231622317223182231922320223212232222323223242232522326223272232822329223302233122332223332233422335223362233722338223392234022341223422234322344223452234622347223482234922350223512235222353223542235522356223572235822359223602236122362223632236422365223662236722368223692237022371223722237322374223752237622377223782237922380223812238222383223842238522386223872238822389223902239122392223932239422395223962239722398223992240022401224022240322404224052240622407224082240922410224112241222413224142241522416224172241822419224202242122422224232242422425224262242722428224292243022431224322243322434224352243622437224382243922440224412244222443224442244522446224472244822449224502245122452224532245422455224562245722458224592246022461224622246322464224652246622467224682246922470224712247222473224742247522476224772247822479224802248122482224832248422485224862248722488224892249022491224922249322494224952249622497224982249922500225012250222503225042250522506225072250822509225102251122512225132251422515225162251722518225192252022521225222252322524225252252622527225282252922530225312253222533225342253522536225372253822539225402254122542225432254422545225462254722548225492255022551225522255322554225552255622557225582255922560225612256222563225642256522566225672256822569225702257122572225732257422575225762257722578225792258022581225822258322584225852258622587225882258922590225912259222593225942259522596225972259822599226002260122602226032260422605226062260722608226092261022611226122261322614226152261622617226182261922620226212262222623226242262522626226272262822629226302263122632226332263422635226362263722638226392264022641226422264322644226452264622647226482264922650226512265222653226542265522656226572265822659226602266122662226632266422665226662266722668226692267022671226722267322674226752267622677226782267922680226812268222683226842268522686226872268822689226902269122692226932269422695226962269722698226992270022701227022270322704227052270622707227082270922710227112271222713227142271522716227172271822719227202272122722227232272422725227262272722728227292273022731227322273322734227352273622737227382273922740227412274222743227442274522746227472274822749227502275122752227532275422755227562275722758227592276022761227622276322764227652276622767227682276922770227712277222773227742277522776227772277822779227802278122782227832278422785227862278722788227892279022791227922279322794227952279622797227982279922800228012280222803228042280522806228072280822809228102281122812228132281422815228162281722818228192282022821228222282322824228252282622827228282282922830228312283222833228342283522836228372283822839228402284122842228432284422845228462284722848228492285022851228522285322854228552285622857228582285922860228612286222863228642286522866228672286822869228702287122872228732287422875228762287722878228792288022881228822288322884228852288622887228882288922890228912289222893228942289522896228972289822899229002290122902229032290422905229062290722908229092291022911229122291322914229152291622917229182291922920229212292222923229242292522926229272292822929229302293122932229332293422935229362293722938229392294022941229422294322944229452294622947229482294922950229512295222953229542295522956229572295822959229602296122962229632296422965229662296722968229692297022971229722297322974229752297622977229782297922980229812298222983229842298522986229872298822989229902299122992229932299422995229962299722998229992300023001230022300323004230052300623007230082300923010230112301223013230142301523016230172301823019230202302123022230232302423025230262302723028230292303023031230322303323034230352303623037230382303923040230412304223043230442304523046230472304823049230502305123052230532305423055230562305723058230592306023061230622306323064230652306623067230682306923070230712307223073230742307523076230772307823079230802308123082230832308423085230862308723088230892309023091230922309323094230952309623097230982309923100231012310223103231042310523106231072310823109231102311123112231132311423115231162311723118231192312023121231222312323124231252312623127231282312923130231312313223133231342313523136231372313823139231402314123142231432314423145231462314723148231492315023151231522315323154231552315623157231582315923160231612316223163231642316523166231672316823169231702317123172231732317423175231762317723178231792318023181231822318323184231852318623187231882318923190231912319223193231942319523196231972319823199232002320123202232032320423205232062320723208232092321023211232122321323214232152321623217232182321923220232212322223223232242322523226232272322823229232302323123232232332323423235232362323723238232392324023241232422324323244232452324623247232482324923250232512325223253232542325523256232572325823259232602326123262232632326423265232662326723268232692327023271232722327323274232752327623277232782327923280232812328223283232842328523286232872328823289232902329123292232932329423295232962329723298232992330023301233022330323304233052330623307233082330923310233112331223313233142331523316233172331823319233202332123322233232332423325233262332723328233292333023331233322333323334233352333623337233382333923340233412334223343233442334523346233472334823349233502335123352233532335423355233562335723358233592336023361233622336323364233652336623367233682336923370233712337223373233742337523376233772337823379233802338123382233832338423385233862338723388233892339023391233922339323394233952339623397233982339923400234012340223403234042340523406234072340823409234102341123412234132341423415234162341723418234192342023421234222342323424234252342623427234282342923430234312343223433234342343523436234372343823439234402344123442234432344423445234462344723448234492345023451234522345323454234552345623457234582345923460234612346223463234642346523466234672346823469234702347123472234732347423475234762347723478234792348023481234822348323484234852348623487234882348923490234912349223493234942349523496234972349823499235002350123502235032350423505235062350723508235092351023511235122351323514235152351623517235182351923520235212352223523235242352523526235272352823529235302353123532235332353423535235362353723538235392354023541235422354323544235452354623547235482354923550235512355223553235542355523556235572355823559235602356123562235632356423565235662356723568235692357023571235722357323574235752357623577235782357923580235812358223583235842358523586235872358823589235902359123592235932359423595235962359723598235992360023601236022360323604236052360623607236082360923610236112361223613236142361523616236172361823619236202362123622236232362423625236262362723628236292363023631236322363323634236352363623637236382363923640236412364223643236442364523646236472364823649236502365123652236532365423655236562365723658236592366023661236622366323664236652366623667236682366923670236712367223673236742367523676236772367823679236802368123682236832368423685236862368723688236892369023691236922369323694236952369623697236982369923700237012370223703237042370523706237072370823709237102371123712237132371423715237162371723718237192372023721237222372323724237252372623727237282372923730237312373223733237342373523736237372373823739237402374123742237432374423745237462374723748237492375023751237522375323754237552375623757237582375923760237612376223763237642376523766237672376823769237702377123772237732377423775237762377723778237792378023781237822378323784237852378623787237882378923790237912379223793237942379523796237972379823799238002380123802238032380423805238062380723808238092381023811238122381323814238152381623817238182381923820238212382223823238242382523826238272382823829238302383123832238332383423835238362383723838238392384023841238422384323844238452384623847238482384923850238512385223853238542385523856238572385823859238602386123862238632386423865238662386723868238692387023871238722387323874238752387623877238782387923880238812388223883238842388523886238872388823889238902389123892238932389423895238962389723898238992390023901239022390323904239052390623907239082390923910239112391223913239142391523916239172391823919239202392123922239232392423925239262392723928239292393023931239322393323934239352393623937239382393923940239412394223943239442394523946239472394823949239502395123952239532395423955239562395723958239592396023961239622396323964239652396623967239682396923970239712397223973239742397523976239772397823979239802398123982239832398423985239862398723988239892399023991239922399323994239952399623997239982399924000240012400224003240042400524006240072400824009240102401124012240132401424015240162401724018240192402024021240222402324024240252402624027240282402924030240312403224033240342403524036240372403824039240402404124042240432404424045240462404724048240492405024051240522405324054240552405624057240582405924060240612406224063240642406524066240672406824069240702407124072240732407424075240762407724078240792408024081240822408324084240852408624087240882408924090240912409224093240942409524096240972409824099241002410124102241032410424105241062410724108241092411024111241122411324114241152411624117241182411924120241212412224123241242412524126241272412824129241302413124132241332413424135241362413724138241392414024141241422414324144241452414624147241482414924150241512415224153241542415524156241572415824159241602416124162241632416424165241662416724168241692417024171241722417324174241752417624177241782417924180241812418224183241842418524186241872418824189241902419124192241932419424195241962419724198241992420024201242022420324204242052420624207242082420924210242112421224213242142421524216242172421824219242202422124222242232422424225242262422724228242292423024231242322423324234242352423624237242382423924240242412424224243242442424524246242472424824249242502425124252242532425424255242562425724258242592426024261242622426324264242652426624267242682426924270242712427224273242742427524276242772427824279242802428124282242832428424285242862428724288242892429024291242922429324294242952429624297242982429924300243012430224303243042430524306243072430824309243102431124312243132431424315243162431724318243192432024321243222432324324243252432624327243282432924330243312433224333243342433524336243372433824339243402434124342243432434424345243462434724348243492435024351243522435324354243552435624357243582435924360243612436224363243642436524366243672436824369243702437124372243732437424375243762437724378243792438024381243822438324384243852438624387243882438924390243912439224393243942439524396243972439824399244002440124402244032440424405244062440724408244092441024411244122441324414244152441624417244182441924420244212442224423244242442524426244272442824429244302443124432244332443424435244362443724438244392444024441244422444324444244452444624447244482444924450244512445224453244542445524456244572445824459244602446124462244632446424465244662446724468244692447024471244722447324474244752447624477244782447924480244812448224483244842448524486244872448824489244902449124492244932449424495244962449724498244992450024501245022450324504245052450624507245082450924510245112451224513245142451524516245172451824519245202452124522245232452424525245262452724528245292453024531245322453324534245352453624537245382453924540245412454224543245442454524546245472454824549245502455124552245532455424555245562455724558245592456024561245622456324564245652456624567245682456924570245712457224573245742457524576245772457824579245802458124582245832458424585245862458724588245892459024591245922459324594245952459624597245982459924600246012460224603246042460524606246072460824609246102461124612246132461424615246162461724618246192462024621246222462324624246252462624627246282462924630246312463224633246342463524636246372463824639246402464124642246432464424645246462464724648246492465024651246522465324654246552465624657246582465924660246612466224663246642466524666246672466824669246702467124672246732467424675246762467724678246792468024681246822468324684246852468624687246882468924690246912469224693246942469524696246972469824699247002470124702247032470424705247062470724708247092471024711247122471324714247152471624717247182471924720247212472224723247242472524726247272472824729247302473124732247332473424735247362473724738247392474024741247422474324744247452474624747247482474924750247512475224753247542475524756247572475824759247602476124762247632476424765247662476724768247692477024771247722477324774247752477624777247782477924780247812478224783247842478524786247872478824789247902479124792247932479424795247962479724798247992480024801248022480324804248052480624807248082480924810248112481224813248142481524816248172481824819248202482124822248232482424825248262482724828248292483024831248322483324834248352483624837248382483924840248412484224843248442484524846248472484824849248502485124852248532485424855248562485724858248592486024861248622486324864248652486624867248682486924870248712487224873248742487524876248772487824879248802488124882248832488424885248862488724888248892489024891248922489324894248952489624897248982489924900249012490224903249042490524906249072490824909249102491124912249132491424915249162491724918249192492024921249222492324924249252492624927249282492924930249312493224933249342493524936249372493824939249402494124942249432494424945249462494724948249492495024951249522495324954249552495624957249582495924960249612496224963249642496524966249672496824969249702497124972249732497424975249762497724978249792498024981249822498324984249852498624987249882498924990249912499224993249942499524996249972499824999250002500125002250032500425005250062500725008250092501025011250122501325014250152501625017250182501925020250212502225023250242502525026250272502825029250302503125032250332503425035250362503725038250392504025041250422504325044250452504625047250482504925050250512505225053250542505525056250572505825059250602506125062250632506425065250662506725068250692507025071250722507325074250752507625077250782507925080250812508225083250842508525086250872508825089250902509125092250932509425095250962509725098250992510025101251022510325104251052510625107251082510925110251112511225113251142511525116251172511825119251202512125122251232512425125251262512725128251292513025131251322513325134251352513625137251382513925140251412514225143251442514525146251472514825149251502515125152251532515425155251562515725158251592516025161251622516325164251652516625167251682516925170251712517225173251742517525176251772517825179251802518125182251832518425185251862518725188251892519025191251922519325194251952519625197251982519925200252012520225203252042520525206252072520825209252102521125212252132521425215252162521725218252192522025221252222522325224252252522625227252282522925230252312523225233252342523525236252372523825239252402524125242252432524425245252462524725248252492525025251252522525325254252552525625257252582525925260252612526225263252642526525266252672526825269252702527125272252732527425275252762527725278252792528025281252822528325284252852528625287252882528925290252912529225293252942529525296252972529825299253002530125302253032530425305253062530725308253092531025311253122531325314253152531625317253182531925320253212532225323253242532525326253272532825329253302533125332253332533425335253362533725338253392534025341253422534325344253452534625347253482534925350253512535225353253542535525356253572535825359253602536125362253632536425365253662536725368253692537025371253722537325374253752537625377253782537925380253812538225383253842538525386253872538825389253902539125392253932539425395253962539725398253992540025401254022540325404254052540625407254082540925410254112541225413254142541525416254172541825419254202542125422254232542425425254262542725428254292543025431254322543325434254352543625437254382543925440254412544225443254442544525446254472544825449254502545125452254532545425455254562545725458254592546025461254622546325464254652546625467254682546925470254712547225473254742547525476254772547825479254802548125482254832548425485254862548725488254892549025491254922549325494254952549625497254982549925500255012550225503255042550525506255072550825509255102551125512255132551425515255162551725518255192552025521255222552325524255252552625527255282552925530255312553225533255342553525536255372553825539255402554125542255432554425545255462554725548255492555025551255522555325554255552555625557255582555925560255612556225563255642556525566255672556825569255702557125572255732557425575255762557725578255792558025581255822558325584255852558625587255882558925590255912559225593255942559525596255972559825599256002560125602256032560425605256062560725608256092561025611256122561325614256152561625617256182561925620256212562225623256242562525626256272562825629256302563125632256332563425635256362563725638256392564025641256422564325644256452564625647256482564925650256512565225653256542565525656256572565825659256602566125662256632566425665256662566725668256692567025671256722567325674256752567625677256782567925680256812568225683256842568525686256872568825689256902569125692256932569425695256962569725698256992570025701257022570325704257052570625707257082570925710257112571225713257142571525716257172571825719257202572125722257232572425725257262572725728257292573025731257322573325734257352573625737257382573925740257412574225743257442574525746257472574825749257502575125752257532575425755257562575725758257592576025761257622576325764257652576625767257682576925770257712577225773257742577525776257772577825779257802578125782257832578425785257862578725788257892579025791257922579325794257952579625797257982579925800258012580225803258042580525806258072580825809258102581125812258132581425815258162581725818258192582025821258222582325824258252582625827258282582925830258312583225833258342583525836258372583825839258402584125842258432584425845258462584725848258492585025851258522585325854258552585625857258582585925860258612586225863258642586525866258672586825869258702587125872258732587425875258762587725878258792588025881258822588325884258852588625887258882588925890258912589225893258942589525896258972589825899259002590125902259032590425905259062590725908259092591025911259122591325914259152591625917259182591925920259212592225923259242592525926259272592825929259302593125932259332593425935259362593725938259392594025941259422594325944259452594625947259482594925950259512595225953259542595525956259572595825959259602596125962259632596425965259662596725968259692597025971259722597325974259752597625977259782597925980259812598225983259842598525986259872598825989259902599125992259932599425995259962599725998259992600026001260022600326004260052600626007260082600926010260112601226013260142601526016260172601826019260202602126022260232602426025260262602726028260292603026031260322603326034260352603626037260382603926040260412604226043260442604526046260472604826049260502605126052260532605426055260562605726058260592606026061260622606326064260652606626067260682606926070260712607226073260742607526076260772607826079260802608126082260832608426085260862608726088260892609026091260922609326094260952609626097260982609926100261012610226103261042610526106261072610826109261102611126112261132611426115261162611726118261192612026121261222612326124261252612626127261282612926130261312613226133261342613526136261372613826139261402614126142261432614426145261462614726148261492615026151261522615326154261552615626157261582615926160261612616226163261642616526166261672616826169261702617126172261732617426175261762617726178261792618026181261822618326184261852618626187261882618926190261912619226193261942619526196261972619826199262002620126202262032620426205262062620726208262092621026211262122621326214262152621626217262182621926220262212622226223262242622526226262272622826229262302623126232262332623426235262362623726238262392624026241262422624326244262452624626247262482624926250262512625226253262542625526256262572625826259262602626126262262632626426265262662626726268262692627026271262722627326274262752627626277262782627926280262812628226283262842628526286262872628826289262902629126292262932629426295262962629726298262992630026301263022630326304263052630626307263082630926310263112631226313263142631526316263172631826319263202632126322263232632426325263262632726328263292633026331263322633326334263352633626337263382633926340263412634226343263442634526346263472634826349263502635126352263532635426355263562635726358263592636026361263622636326364263652636626367263682636926370263712637226373263742637526376263772637826379263802638126382263832638426385263862638726388263892639026391263922639326394263952639626397263982639926400264012640226403264042640526406264072640826409264102641126412264132641426415264162641726418264192642026421264222642326424264252642626427264282642926430264312643226433264342643526436264372643826439264402644126442264432644426445264462644726448264492645026451264522645326454264552645626457264582645926460264612646226463264642646526466264672646826469264702647126472264732647426475264762647726478264792648026481264822648326484264852648626487264882648926490264912649226493264942649526496264972649826499265002650126502265032650426505265062650726508265092651026511265122651326514265152651626517265182651926520265212652226523265242652526526265272652826529265302653126532265332653426535265362653726538265392654026541265422654326544265452654626547265482654926550265512655226553265542655526556265572655826559265602656126562265632656426565265662656726568265692657026571265722657326574265752657626577265782657926580265812658226583265842658526586265872658826589265902659126592265932659426595265962659726598265992660026601266022660326604266052660626607266082660926610266112661226613266142661526616266172661826619266202662126622266232662426625266262662726628266292663026631266322663326634266352663626637266382663926640266412664226643266442664526646266472664826649266502665126652266532665426655266562665726658266592666026661266622666326664266652666626667266682666926670266712667226673266742667526676266772667826679266802668126682266832668426685266862668726688266892669026691266922669326694266952669626697266982669926700267012670226703267042670526706267072670826709267102671126712267132671426715267162671726718267192672026721267222672326724267252672626727267282672926730267312673226733267342673526736267372673826739267402674126742267432674426745267462674726748267492675026751267522675326754267552675626757267582675926760267612676226763267642676526766267672676826769267702677126772267732677426775267762677726778267792678026781267822678326784267852678626787267882678926790267912679226793267942679526796267972679826799268002680126802268032680426805268062680726808268092681026811268122681326814268152681626817268182681926820268212682226823268242682526826268272682826829268302683126832268332683426835268362683726838268392684026841268422684326844268452684626847268482684926850268512685226853268542685526856268572685826859268602686126862268632686426865268662686726868268692687026871268722687326874268752687626877268782687926880268812688226883268842688526886268872688826889268902689126892268932689426895268962689726898268992690026901269022690326904269052690626907269082690926910269112691226913269142691526916269172691826919269202692126922269232692426925269262692726928269292693026931269322693326934269352693626937269382693926940269412694226943269442694526946269472694826949269502695126952269532695426955269562695726958269592696026961269622696326964269652696626967269682696926970269712697226973269742697526976269772697826979269802698126982269832698426985269862698726988269892699026991269922699326994269952699626997269982699927000270012700227003270042700527006270072700827009270102701127012270132701427015270162701727018270192702027021270222702327024270252702627027270282702927030270312703227033270342703527036270372703827039270402704127042270432704427045270462704727048270492705027051270522705327054270552705627057270582705927060270612706227063270642706527066270672706827069270702707127072270732707427075270762707727078270792708027081270822708327084270852708627087270882708927090270912709227093270942709527096270972709827099271002710127102271032710427105271062710727108271092711027111271122711327114271152711627117271182711927120271212712227123271242712527126271272712827129271302713127132271332713427135271362713727138271392714027141271422714327144271452714627147271482714927150271512715227153271542715527156271572715827159271602716127162271632716427165271662716727168271692717027171271722717327174271752717627177271782717927180271812718227183271842718527186271872718827189271902719127192271932719427195271962719727198271992720027201272022720327204272052720627207272082720927210272112721227213272142721527216272172721827219272202722127222272232722427225272262722727228272292723027231272322723327234272352723627237272382723927240272412724227243272442724527246272472724827249272502725127252272532725427255272562725727258272592726027261272622726327264272652726627267272682726927270272712727227273272742727527276272772727827279272802728127282272832728427285272862728727288272892729027291272922729327294272952729627297272982729927300273012730227303273042730527306273072730827309273102731127312273132731427315273162731727318273192732027321273222732327324273252732627327273282732927330273312733227333273342733527336273372733827339273402734127342273432734427345273462734727348273492735027351273522735327354273552735627357273582735927360273612736227363273642736527366273672736827369273702737127372273732737427375273762737727378273792738027381273822738327384273852738627387273882738927390273912739227393273942739527396273972739827399274002740127402274032740427405274062740727408274092741027411274122741327414274152741627417274182741927420274212742227423274242742527426274272742827429274302743127432274332743427435274362743727438274392744027441274422744327444274452744627447274482744927450274512745227453274542745527456274572745827459274602746127462274632746427465274662746727468274692747027471274722747327474274752747627477274782747927480274812748227483274842748527486274872748827489274902749127492274932749427495274962749727498274992750027501275022750327504275052750627507275082750927510275112751227513275142751527516275172751827519275202752127522275232752427525275262752727528275292753027531275322753327534275352753627537275382753927540275412754227543275442754527546275472754827549275502755127552275532755427555275562755727558275592756027561275622756327564275652756627567275682756927570275712757227573275742757527576275772757827579275802758127582275832758427585275862758727588275892759027591275922759327594275952759627597275982759927600276012760227603276042760527606276072760827609276102761127612276132761427615276162761727618276192762027621276222762327624276252762627627276282762927630276312763227633276342763527636276372763827639276402764127642276432764427645276462764727648276492765027651276522765327654276552765627657276582765927660276612766227663276642766527666276672766827669276702767127672276732767427675276762767727678276792768027681276822768327684276852768627687276882768927690276912769227693276942769527696276972769827699277002770127702277032770427705277062770727708277092771027711277122771327714277152771627717277182771927720277212772227723277242772527726277272772827729277302773127732277332773427735277362773727738277392774027741277422774327744277452774627747277482774927750277512775227753277542775527756277572775827759277602776127762277632776427765277662776727768277692777027771277722777327774277752777627777277782777927780277812778227783277842778527786277872778827789277902779127792277932779427795277962779727798277992780027801278022780327804278052780627807278082780927810278112781227813278142781527816278172781827819278202782127822278232782427825278262782727828278292783027831278322783327834278352783627837278382783927840278412784227843278442784527846278472784827849278502785127852278532785427855278562785727858278592786027861278622786327864278652786627867278682786927870278712787227873278742787527876278772787827879278802788127882278832788427885278862788727888278892789027891278922789327894278952789627897278982789927900279012790227903279042790527906279072790827909279102791127912279132791427915279162791727918279192792027921279222792327924279252792627927279282792927930279312793227933279342793527936279372793827939279402794127942279432794427945279462794727948279492795027951279522795327954279552795627957279582795927960279612796227963279642796527966279672796827969279702797127972279732797427975279762797727978279792798027981279822798327984279852798627987279882798927990279912799227993279942799527996279972799827999280002800128002280032800428005280062800728008280092801028011280122801328014280152801628017280182801928020280212802228023280242802528026280272802828029280302803128032280332803428035280362803728038280392804028041280422804328044280452804628047280482804928050280512805228053280542805528056280572805828059280602806128062280632806428065280662806728068280692807028071280722807328074280752807628077280782807928080280812808228083280842808528086280872808828089280902809128092280932809428095280962809728098280992810028101281022810328104281052810628107281082810928110281112811228113281142811528116281172811828119281202812128122281232812428125281262812728128281292813028131281322813328134281352813628137281382813928140281412814228143281442814528146281472814828149281502815128152281532815428155281562815728158281592816028161281622816328164281652816628167281682816928170281712817228173281742817528176281772817828179281802818128182281832818428185281862818728188281892819028191281922819328194281952819628197281982819928200282012820228203282042820528206282072820828209282102821128212282132821428215282162821728218282192822028221282222822328224282252822628227282282822928230282312823228233282342823528236282372823828239282402824128242282432824428245282462824728248282492825028251282522825328254282552825628257282582825928260282612826228263282642826528266282672826828269282702827128272282732827428275282762827728278282792828028281282822828328284282852828628287282882828928290282912829228293282942829528296282972829828299283002830128302283032830428305283062830728308283092831028311283122831328314283152831628317283182831928320283212832228323283242832528326283272832828329283302833128332283332833428335283362833728338283392834028341283422834328344283452834628347283482834928350283512835228353283542835528356283572835828359283602836128362283632836428365283662836728368283692837028371283722837328374283752837628377283782837928380283812838228383283842838528386283872838828389283902839128392283932839428395283962839728398283992840028401284022840328404284052840628407284082840928410284112841228413284142841528416284172841828419284202842128422284232842428425284262842728428284292843028431284322843328434284352843628437284382843928440284412844228443284442844528446284472844828449284502845128452284532845428455284562845728458284592846028461284622846328464284652846628467284682846928470284712847228473284742847528476284772847828479284802848128482284832848428485284862848728488284892849028491284922849328494284952849628497284982849928500285012850228503285042850528506285072850828509285102851128512285132851428515285162851728518285192852028521285222852328524285252852628527285282852928530285312853228533285342853528536285372853828539285402854128542285432854428545285462854728548285492855028551285522855328554285552855628557285582855928560285612856228563285642856528566285672856828569285702857128572285732857428575285762857728578285792858028581285822858328584285852858628587285882858928590285912859228593285942859528596285972859828599286002860128602286032860428605286062860728608286092861028611286122861328614286152861628617286182861928620286212862228623286242862528626286272862828629286302863128632286332863428635286362863728638286392864028641286422864328644286452864628647286482864928650286512865228653286542865528656286572865828659286602866128662286632866428665286662866728668286692867028671286722867328674286752867628677286782867928680286812868228683286842868528686286872868828689286902869128692286932869428695286962869728698286992870028701287022870328704287052870628707287082870928710287112871228713287142871528716287172871828719287202872128722287232872428725287262872728728287292873028731287322873328734287352873628737287382873928740287412874228743287442874528746287472874828749287502875128752287532875428755287562875728758287592876028761287622876328764287652876628767287682876928770287712877228773287742877528776287772877828779287802878128782287832878428785287862878728788287892879028791287922879328794287952879628797287982879928800288012880228803288042880528806288072880828809288102881128812288132881428815288162881728818288192882028821288222882328824288252882628827288282882928830288312883228833288342883528836288372883828839288402884128842288432884428845288462884728848288492885028851288522885328854288552885628857288582885928860288612886228863288642886528866288672886828869288702887128872288732887428875288762887728878288792888028881288822888328884288852888628887288882888928890288912889228893288942889528896288972889828899289002890128902289032890428905289062890728908289092891028911289122891328914289152891628917289182891928920289212892228923289242892528926289272892828929289302893128932289332893428935289362893728938289392894028941289422894328944289452894628947289482894928950289512895228953289542895528956289572895828959289602896128962289632896428965289662896728968289692897028971289722897328974289752897628977289782897928980289812898228983289842898528986289872898828989289902899128992289932899428995289962899728998289992900029001290022900329004290052900629007290082900929010290112901229013290142901529016290172901829019290202902129022290232902429025290262902729028290292903029031290322903329034290352903629037290382903929040290412904229043290442904529046290472904829049290502905129052290532905429055290562905729058290592906029061290622906329064290652906629067290682906929070290712907229073290742907529076290772907829079290802908129082290832908429085290862908729088290892909029091290922909329094290952909629097290982909929100291012910229103291042910529106291072910829109291102911129112291132911429115291162911729118291192912029121291222912329124291252912629127291282912929130291312913229133291342913529136291372913829139291402914129142291432914429145291462914729148291492915029151291522915329154291552915629157291582915929160291612916229163291642916529166291672916829169291702917129172291732917429175291762917729178291792918029181291822918329184291852918629187291882918929190291912919229193291942919529196291972919829199292002920129202292032920429205292062920729208292092921029211292122921329214292152921629217292182921929220292212922229223292242922529226292272922829229292302923129232292332923429235292362923729238292392924029241292422924329244292452924629247292482924929250292512925229253292542925529256292572925829259292602926129262292632926429265292662926729268292692927029271292722927329274292752927629277292782927929280292812928229283292842928529286292872928829289292902929129292292932929429295292962929729298292992930029301293022930329304293052930629307293082930929310293112931229313293142931529316293172931829319293202932129322293232932429325293262932729328293292933029331293322933329334293352933629337293382933929340293412934229343293442934529346293472934829349293502935129352293532935429355293562935729358293592936029361293622936329364293652936629367293682936929370293712937229373293742937529376293772937829379293802938129382293832938429385293862938729388293892939029391293922939329394293952939629397293982939929400294012940229403294042940529406294072940829409294102941129412294132941429415294162941729418294192942029421294222942329424294252942629427294282942929430294312943229433294342943529436294372943829439294402944129442294432944429445294462944729448294492945029451294522945329454294552945629457294582945929460294612946229463294642946529466294672946829469294702947129472294732947429475294762947729478294792948029481294822948329484294852948629487294882948929490294912949229493294942949529496294972949829499295002950129502295032950429505295062950729508295092951029511295122951329514295152951629517295182951929520295212952229523295242952529526295272952829529295302953129532295332953429535295362953729538295392954029541295422954329544295452954629547295482954929550295512955229553295542955529556295572955829559295602956129562295632956429565295662956729568295692957029571295722957329574295752957629577295782957929580295812958229583295842958529586295872958829589295902959129592295932959429595295962959729598295992960029601296022960329604296052960629607296082960929610296112961229613296142961529616296172961829619296202962129622296232962429625296262962729628296292963029631296322963329634296352963629637296382963929640296412964229643296442964529646296472964829649296502965129652296532965429655296562965729658296592966029661296622966329664296652966629667296682966929670296712967229673296742967529676296772967829679296802968129682296832968429685296862968729688296892969029691296922969329694296952969629697296982969929700297012970229703297042970529706297072970829709297102971129712297132971429715297162971729718297192972029721297222972329724297252972629727297282972929730297312973229733297342973529736297372973829739297402974129742297432974429745297462974729748297492975029751297522975329754297552975629757297582975929760297612976229763297642976529766297672976829769297702977129772297732977429775297762977729778297792978029781297822978329784297852978629787297882978929790297912979229793297942979529796297972979829799298002980129802298032980429805298062980729808298092981029811298122981329814298152981629817298182981929820298212982229823298242982529826298272982829829298302983129832298332983429835298362983729838298392984029841298422984329844298452984629847298482984929850298512985229853298542985529856298572985829859298602986129862298632986429865298662986729868298692987029871298722987329874298752987629877298782987929880298812988229883298842988529886298872988829889298902989129892298932989429895298962989729898298992990029901299022990329904299052990629907299082990929910299112991229913299142991529916299172991829919299202992129922299232992429925299262992729928299292993029931299322993329934299352993629937299382993929940299412994229943299442994529946299472994829949299502995129952299532995429955299562995729958299592996029961299622996329964299652996629967299682996929970299712997229973299742997529976299772997829979299802998129982299832998429985299862998729988299892999029991299922999329994299952999629997299982999930000300013000230003300043000530006300073000830009300103001130012300133001430015300163001730018300193002030021300223002330024300253002630027300283002930030300313003230033300343003530036300373003830039300403004130042300433004430045300463004730048300493005030051300523005330054300553005630057300583005930060300613006230063300643006530066300673006830069300703007130072300733007430075300763007730078300793008030081300823008330084300853008630087300883008930090300913009230093300943009530096300973009830099301003010130102301033010430105301063010730108301093011030111301123011330114301153011630117301183011930120301213012230123301243012530126301273012830129301303013130132301333013430135301363013730138301393014030141301423014330144301453014630147301483014930150301513015230153301543015530156301573015830159301603016130162301633016430165301663016730168301693017030171301723017330174301753017630177301783017930180301813018230183301843018530186301873018830189301903019130192301933019430195301963019730198301993020030201302023020330204302053020630207302083020930210302113021230213302143021530216302173021830219302203022130222302233022430225302263022730228302293023030231302323023330234302353023630237302383023930240302413024230243302443024530246302473024830249302503025130252302533025430255302563025730258302593026030261302623026330264302653026630267302683026930270302713027230273302743027530276302773027830279302803028130282302833028430285302863028730288302893029030291302923029330294302953029630297302983029930300303013030230303303043030530306303073030830309303103031130312303133031430315303163031730318303193032030321303223032330324303253032630327303283032930330303313033230333303343033530336303373033830339303403034130342303433034430345303463034730348303493035030351303523035330354303553035630357303583035930360303613036230363303643036530366303673036830369303703037130372303733037430375303763037730378303793038030381303823038330384303853038630387303883038930390303913039230393303943039530396303973039830399304003040130402304033040430405304063040730408304093041030411304123041330414304153041630417304183041930420304213042230423304243042530426304273042830429304303043130432304333043430435304363043730438304393044030441304423044330444304453044630447304483044930450304513045230453304543045530456304573045830459304603046130462304633046430465304663046730468304693047030471304723047330474304753047630477304783047930480304813048230483304843048530486304873048830489304903049130492304933049430495304963049730498304993050030501305023050330504305053050630507305083050930510305113051230513305143051530516305173051830519305203052130522305233052430525305263052730528305293053030531305323053330534305353053630537305383053930540305413054230543305443054530546305473054830549305503055130552305533055430555305563055730558305593056030561305623056330564305653056630567305683056930570305713057230573305743057530576305773057830579305803058130582305833058430585305863058730588305893059030591305923059330594305953059630597305983059930600306013060230603306043060530606306073060830609306103061130612306133061430615306163061730618306193062030621306223062330624306253062630627306283062930630306313063230633306343063530636306373063830639306403064130642306433064430645306463064730648306493065030651306523065330654306553065630657306583065930660306613066230663306643066530666306673066830669306703067130672306733067430675306763067730678306793068030681306823068330684306853068630687306883068930690306913069230693306943069530696306973069830699307003070130702307033070430705307063070730708307093071030711307123071330714307153071630717307183071930720307213072230723307243072530726307273072830729307303073130732307333073430735307363073730738307393074030741307423074330744307453074630747307483074930750307513075230753307543075530756307573075830759307603076130762307633076430765307663076730768307693077030771307723077330774307753077630777307783077930780307813078230783307843078530786307873078830789307903079130792307933079430795307963079730798307993080030801308023080330804308053080630807308083080930810308113081230813308143081530816308173081830819308203082130822308233082430825308263082730828308293083030831308323083330834308353083630837308383083930840308413084230843308443084530846308473084830849308503085130852308533085430855308563085730858308593086030861308623086330864308653086630867308683086930870308713087230873308743087530876308773087830879308803088130882308833088430885308863088730888308893089030891308923089330894308953089630897308983089930900309013090230903309043090530906309073090830909309103091130912309133091430915309163091730918309193092030921309223092330924309253092630927309283092930930309313093230933309343093530936309373093830939309403094130942309433094430945309463094730948309493095030951309523095330954309553095630957309583095930960309613096230963309643096530966309673096830969309703097130972309733097430975309763097730978309793098030981309823098330984309853098630987309883098930990309913099230993309943099530996309973099830999310003100131002310033100431005310063100731008310093101031011310123101331014310153101631017310183101931020310213102231023310243102531026310273102831029310303103131032310333103431035310363103731038310393104031041310423104331044310453104631047310483104931050310513105231053310543105531056310573105831059310603106131062310633106431065310663106731068310693107031071310723107331074310753107631077310783107931080310813108231083310843108531086310873108831089310903109131092310933109431095310963109731098310993110031101311023110331104311053110631107311083110931110311113111231113311143111531116311173111831119311203112131122311233112431125311263112731128311293113031131311323113331134311353113631137311383113931140311413114231143311443114531146311473114831149311503115131152311533115431155311563115731158311593116031161311623116331164311653116631167311683116931170311713117231173311743117531176311773117831179311803118131182311833118431185311863118731188311893119031191311923119331194311953119631197311983119931200312013120231203312043120531206312073120831209312103121131212312133121431215312163121731218312193122031221312223122331224312253122631227312283122931230312313123231233312343123531236312373123831239312403124131242312433124431245312463124731248312493125031251312523125331254312553125631257312583125931260312613126231263312643126531266312673126831269312703127131272312733127431275312763127731278312793128031281312823128331284312853128631287312883128931290312913129231293312943129531296312973129831299313003130131302313033130431305313063130731308313093131031311313123131331314313153131631317313183131931320313213132231323313243132531326313273132831329313303133131332313333133431335313363133731338313393134031341313423134331344313453134631347313483134931350313513135231353313543135531356313573135831359313603136131362313633136431365313663136731368313693137031371313723137331374313753137631377313783137931380313813138231383313843138531386313873138831389313903139131392313933139431395313963139731398313993140031401314023140331404314053140631407314083140931410314113141231413314143141531416314173141831419314203142131422314233142431425314263142731428314293143031431314323143331434314353143631437314383143931440314413144231443314443144531446314473144831449314503145131452314533145431455314563145731458314593146031461314623146331464314653146631467314683146931470314713147231473314743147531476314773147831479314803148131482314833148431485314863148731488314893149031491314923149331494314953149631497314983149931500315013150231503315043150531506315073150831509315103151131512315133151431515315163151731518315193152031521315223152331524315253152631527315283152931530315313153231533315343153531536315373153831539315403154131542315433154431545315463154731548315493155031551315523155331554315553155631557315583155931560315613156231563315643156531566315673156831569315703157131572315733157431575315763157731578315793158031581315823158331584315853158631587315883158931590315913159231593315943159531596315973159831599316003160131602316033160431605316063160731608316093161031611316123161331614316153161631617316183161931620316213162231623316243162531626316273162831629316303163131632316333163431635316363163731638316393164031641316423164331644316453164631647316483164931650316513165231653316543165531656316573165831659316603166131662316633166431665316663166731668316693167031671316723167331674316753167631677316783167931680316813168231683316843168531686316873168831689316903169131692316933169431695316963169731698316993170031701317023170331704317053170631707317083170931710317113171231713317143171531716317173171831719317203172131722317233172431725317263172731728317293173031731317323173331734317353173631737317383173931740317413174231743317443174531746317473174831749317503175131752317533175431755317563175731758317593176031761317623176331764317653176631767317683176931770317713177231773317743177531776317773177831779317803178131782317833178431785317863178731788317893179031791317923179331794317953179631797317983179931800318013180231803318043180531806318073180831809318103181131812318133181431815318163181731818318193182031821318223182331824318253182631827318283182931830318313183231833318343183531836318373183831839318403184131842318433184431845318463184731848318493185031851318523185331854318553185631857318583185931860318613186231863318643186531866318673186831869318703187131872318733187431875318763187731878318793188031881318823188331884318853188631887318883188931890318913189231893318943189531896318973189831899319003190131902319033190431905319063190731908319093191031911319123191331914319153191631917319183191931920319213192231923319243192531926319273192831929319303193131932319333193431935319363193731938319393194031941319423194331944319453194631947319483194931950319513195231953319543195531956319573195831959319603196131962319633196431965319663196731968319693197031971319723197331974319753197631977319783197931980319813198231983319843198531986319873198831989319903199131992319933199431995319963199731998319993200032001320023200332004320053200632007320083200932010320113201232013320143201532016320173201832019320203202132022320233202432025320263202732028320293203032031320323203332034320353203632037320383203932040320413204232043320443204532046320473204832049320503205132052320533205432055320563205732058320593206032061320623206332064320653206632067320683206932070320713207232073320743207532076320773207832079320803208132082320833208432085320863208732088320893209032091320923209332094320953209632097320983209932100321013210232103321043210532106321073210832109321103211132112321133211432115321163211732118321193212032121321223212332124321253212632127321283212932130321313213232133321343213532136321373213832139321403214132142321433214432145321463214732148321493215032151321523215332154321553215632157321583215932160321613216232163321643216532166321673216832169321703217132172321733217432175321763217732178321793218032181321823218332184321853218632187321883218932190321913219232193321943219532196321973219832199322003220132202322033220432205322063220732208322093221032211322123221332214322153221632217322183221932220322213222232223322243222532226322273222832229322303223132232322333223432235322363223732238322393224032241322423224332244322453224632247322483224932250322513225232253322543225532256322573225832259322603226132262322633226432265322663226732268322693227032271322723227332274322753227632277322783227932280322813228232283322843228532286322873228832289322903229132292322933229432295322963229732298322993230032301323023230332304323053230632307323083230932310323113231232313323143231532316323173231832319323203232132322323233232432325323263232732328323293233032331323323233332334323353233632337323383233932340323413234232343323443234532346323473234832349323503235132352323533235432355323563235732358323593236032361323623236332364323653236632367323683236932370323713237232373323743237532376323773237832379323803238132382323833238432385323863238732388323893239032391323923239332394323953239632397323983239932400324013240232403324043240532406324073240832409324103241132412324133241432415324163241732418324193242032421324223242332424324253242632427324283242932430324313243232433324343243532436324373243832439324403244132442324433244432445324463244732448324493245032451324523245332454324553245632457324583245932460324613246232463324643246532466324673246832469324703247132472324733247432475324763247732478324793248032481324823248332484324853248632487324883248932490324913249232493324943249532496324973249832499325003250132502325033250432505325063250732508325093251032511325123251332514325153251632517325183251932520325213252232523325243252532526325273252832529325303253132532325333253432535325363253732538325393254032541325423254332544325453254632547325483254932550325513255232553325543255532556325573255832559325603256132562325633256432565325663256732568325693257032571325723257332574325753257632577325783257932580325813258232583325843258532586325873258832589325903259132592325933259432595325963259732598325993260032601326023260332604326053260632607326083260932610326113261232613326143261532616326173261832619326203262132622326233262432625326263262732628326293263032631326323263332634326353263632637326383263932640326413264232643326443264532646326473264832649326503265132652326533265432655326563265732658326593266032661326623266332664326653266632667326683266932670326713267232673326743267532676326773267832679326803268132682326833268432685326863268732688326893269032691326923269332694326953269632697326983269932700327013270232703327043270532706327073270832709327103271132712327133271432715327163271732718327193272032721327223272332724327253272632727327283272932730327313273232733327343273532736327373273832739327403274132742327433274432745327463274732748327493275032751327523275332754327553275632757327583275932760327613276232763327643276532766327673276832769327703277132772327733277432775327763277732778327793278032781327823278332784327853278632787327883278932790327913279232793327943279532796327973279832799328003280132802328033280432805328063280732808328093281032811328123281332814328153281632817328183281932820328213282232823328243282532826328273282832829328303283132832328333283432835328363283732838328393284032841328423284332844328453284632847328483284932850328513285232853328543285532856328573285832859328603286132862328633286432865328663286732868328693287032871328723287332874328753287632877328783287932880328813288232883328843288532886328873288832889328903289132892328933289432895328963289732898328993290032901329023290332904329053290632907329083290932910329113291232913329143291532916329173291832919329203292132922329233292432925329263292732928329293293032931329323293332934329353293632937329383293932940329413294232943329443294532946329473294832949329503295132952329533295432955329563295732958329593296032961329623296332964329653296632967329683296932970329713297232973329743297532976329773297832979329803298132982329833298432985329863298732988329893299032991329923299332994329953299632997329983299933000330013300233003330043300533006330073300833009330103301133012330133301433015330163301733018330193302033021330223302333024330253302633027330283302933030330313303233033330343303533036330373303833039330403304133042330433304433045330463304733048330493305033051330523305333054330553305633057330583305933060330613306233063330643306533066330673306833069330703307133072330733307433075330763307733078330793308033081330823308333084330853308633087330883308933090330913309233093330943309533096330973309833099331003310133102331033310433105331063310733108331093311033111331123311333114331153311633117331183311933120331213312233123331243312533126331273312833129331303313133132331333313433135331363313733138331393314033141331423314333144331453314633147331483314933150331513315233153331543315533156331573315833159331603316133162331633316433165331663316733168331693317033171331723317333174331753317633177331783317933180331813318233183331843318533186331873318833189331903319133192331933319433195331963319733198331993320033201332023320333204332053320633207332083320933210332113321233213332143321533216332173321833219332203322133222332233322433225332263322733228332293323033231332323323333234332353323633237332383323933240332413324233243332443324533246332473324833249332503325133252332533325433255332563325733258332593326033261332623326333264332653326633267332683326933270332713327233273332743327533276332773327833279332803328133282332833328433285332863328733288332893329033291332923329333294332953329633297332983329933300333013330233303333043330533306333073330833309333103331133312333133331433315333163331733318333193332033321333223332333324333253332633327333283332933330333313333233333333343333533336333373333833339333403334133342333433334433345333463334733348333493335033351333523335333354333553335633357333583335933360333613336233363333643336533366333673336833369333703337133372333733337433375333763337733378333793338033381333823338333384333853338633387333883338933390333913339233393333943339533396333973339833399334003340133402334033340433405334063340733408334093341033411334123341333414334153341633417334183341933420334213342233423334243342533426334273342833429334303343133432334333343433435334363343733438334393344033441334423344333444334453344633447334483344933450334513345233453334543345533456334573345833459334603346133462334633346433465334663346733468334693347033471334723347333474334753347633477334783347933480334813348233483334843348533486334873348833489334903349133492334933349433495334963349733498334993350033501335023350333504335053350633507335083350933510335113351233513335143351533516335173351833519335203352133522335233352433525335263352733528335293353033531335323353333534335353353633537335383353933540335413354233543335443354533546335473354833549335503355133552335533355433555335563355733558335593356033561335623356333564335653356633567335683356933570335713357233573335743357533576335773357833579335803358133582335833358433585335863358733588335893359033591335923359333594335953359633597335983359933600336013360233603336043360533606336073360833609336103361133612336133361433615336163361733618336193362033621336223362333624336253362633627336283362933630336313363233633336343363533636336373363833639336403364133642336433364433645336463364733648336493365033651336523365333654336553365633657336583365933660336613366233663336643366533666336673366833669336703367133672336733367433675336763367733678336793368033681336823368333684336853368633687336883368933690336913369233693336943369533696336973369833699337003370133702337033370433705337063370733708337093371033711337123371333714337153371633717337183371933720337213372233723337243372533726337273372833729337303373133732337333373433735337363373733738337393374033741337423374333744337453374633747337483374933750337513375233753337543375533756337573375833759337603376133762337633376433765337663376733768337693377033771337723377333774337753377633777337783377933780337813378233783337843378533786337873378833789337903379133792337933379433795337963379733798337993380033801338023380333804338053380633807338083380933810338113381233813338143381533816338173381833819338203382133822338233382433825338263382733828338293383033831338323383333834338353383633837338383383933840338413384233843338443384533846338473384833849338503385133852338533385433855338563385733858338593386033861338623386333864338653386633867338683386933870338713387233873338743387533876338773387833879338803388133882338833388433885338863388733888338893389033891338923389333894338953389633897338983389933900339013390233903339043390533906339073390833909339103391133912339133391433915339163391733918339193392033921339223392333924339253392633927339283392933930339313393233933339343393533936339373393833939339403394133942339433394433945339463394733948339493395033951339523395333954339553395633957339583395933960339613396233963339643396533966339673396833969339703397133972339733397433975339763397733978339793398033981339823398333984339853398633987339883398933990339913399233993339943399533996339973399833999340003400134002340033400434005340063400734008340093401034011340123401334014340153401634017340183401934020340213402234023340243402534026340273402834029340303403134032340333403434035340363403734038340393404034041340423404334044340453404634047340483404934050340513405234053340543405534056340573405834059340603406134062340633406434065340663406734068340693407034071340723407334074340753407634077340783407934080340813408234083340843408534086340873408834089340903409134092340933409434095340963409734098340993410034101341023410334104341053410634107341083410934110341113411234113341143411534116341173411834119341203412134122341233412434125341263412734128341293413034131341323413334134341353413634137341383413934140341413414234143341443414534146341473414834149341503415134152341533415434155341563415734158341593416034161341623416334164341653416634167341683416934170341713417234173341743417534176341773417834179341803418134182341833418434185341863418734188341893419034191341923419334194341953419634197341983419934200342013420234203342043420534206342073420834209342103421134212342133421434215342163421734218342193422034221342223422334224342253422634227342283422934230342313423234233342343423534236342373423834239342403424134242342433424434245342463424734248342493425034251342523425334254342553425634257342583425934260342613426234263342643426534266342673426834269342703427134272342733427434275342763427734278342793428034281342823428334284342853428634287342883428934290342913429234293342943429534296342973429834299343003430134302343033430434305343063430734308343093431034311343123431334314343153431634317343183431934320343213432234323343243432534326343273432834329343303433134332343333433434335343363433734338343393434034341343423434334344343453434634347343483434934350343513435234353343543435534356343573435834359343603436134362343633436434365343663436734368343693437034371343723437334374343753437634377343783437934380343813438234383343843438534386343873438834389343903439134392343933439434395343963439734398343993440034401344023440334404344053440634407344083440934410344113441234413344143441534416344173441834419344203442134422344233442434425344263442734428344293443034431344323443334434344353443634437344383443934440344413444234443344443444534446344473444834449344503445134452344533445434455344563445734458344593446034461344623446334464344653446634467344683446934470344713447234473344743447534476344773447834479344803448134482344833448434485344863448734488344893449034491344923449334494344953449634497344983449934500345013450234503345043450534506345073450834509345103451134512345133451434515345163451734518345193452034521345223452334524345253452634527345283452934530345313453234533345343453534536345373453834539345403454134542345433454434545345463454734548345493455034551345523455334554345553455634557345583455934560345613456234563345643456534566345673456834569345703457134572345733457434575345763457734578345793458034581345823458334584345853458634587345883458934590345913459234593345943459534596345973459834599346003460134602346033460434605346063460734608346093461034611346123461334614346153461634617346183461934620346213462234623346243462534626346273462834629346303463134632346333463434635346363463734638346393464034641346423464334644346453464634647346483464934650346513465234653346543465534656346573465834659346603466134662346633466434665346663466734668346693467034671346723467334674346753467634677346783467934680346813468234683346843468534686346873468834689346903469134692346933469434695346963469734698346993470034701347023470334704347053470634707347083470934710347113471234713347143471534716347173471834719347203472134722347233472434725347263472734728347293473034731347323473334734347353473634737347383473934740347413474234743347443474534746347473474834749347503475134752347533475434755347563475734758347593476034761347623476334764347653476634767347683476934770347713477234773347743477534776347773477834779347803478134782347833478434785347863478734788347893479034791347923479334794347953479634797347983479934800348013480234803348043480534806348073480834809348103481134812348133481434815348163481734818348193482034821348223482334824348253482634827348283482934830348313483234833348343483534836348373483834839348403484134842348433484434845348463484734848348493485034851348523485334854348553485634857348583485934860348613486234863348643486534866348673486834869348703487134872348733487434875348763487734878348793488034881348823488334884348853488634887348883488934890348913489234893348943489534896348973489834899349003490134902349033490434905349063490734908349093491034911349123491334914349153491634917349183491934920349213492234923349243492534926349273492834929349303493134932349333493434935349363493734938349393494034941349423494334944349453494634947349483494934950349513495234953349543495534956349573495834959349603496134962349633496434965349663496734968349693497034971349723497334974349753497634977349783497934980349813498234983349843498534986349873498834989349903499134992349933499434995349963499734998349993500035001350023500335004350053500635007350083500935010350113501235013350143501535016350173501835019350203502135022350233502435025350263502735028350293503035031350323503335034350353503635037350383503935040350413504235043350443504535046350473504835049350503505135052350533505435055350563505735058350593506035061350623506335064350653506635067350683506935070350713507235073350743507535076350773507835079350803508135082350833508435085350863508735088350893509035091350923509335094350953509635097350983509935100351013510235103351043510535106351073510835109351103511135112351133511435115351163511735118351193512035121351223512335124351253512635127351283512935130351313513235133351343513535136351373513835139351403514135142351433514435145351463514735148351493515035151351523515335154351553515635157351583515935160351613516235163351643516535166351673516835169351703517135172351733517435175351763517735178351793518035181351823518335184351853518635187351883518935190351913519235193351943519535196351973519835199352003520135202352033520435205352063520735208352093521035211352123521335214352153521635217352183521935220352213522235223352243522535226352273522835229352303523135232352333523435235352363523735238352393524035241352423524335244352453524635247352483524935250352513525235253352543525535256352573525835259352603526135262352633526435265352663526735268352693527035271352723527335274352753527635277352783527935280352813528235283352843528535286352873528835289352903529135292352933529435295352963529735298352993530035301353023530335304353053530635307353083530935310353113531235313353143531535316353173531835319353203532135322353233532435325353263532735328353293533035331353323533335334353353533635337353383533935340353413534235343353443534535346353473534835349353503535135352353533535435355353563535735358353593536035361353623536335364353653536635367353683536935370353713537235373353743537535376353773537835379353803538135382353833538435385353863538735388353893539035391353923539335394353953539635397353983539935400354013540235403354043540535406354073540835409354103541135412354133541435415354163541735418354193542035421354223542335424354253542635427354283542935430354313543235433354343543535436354373543835439354403544135442354433544435445354463544735448354493545035451354523545335454354553545635457354583545935460354613546235463354643546535466354673546835469354703547135472354733547435475354763547735478354793548035481354823548335484354853548635487354883548935490354913549235493354943549535496354973549835499355003550135502355033550435505355063550735508355093551035511355123551335514355153551635517355183551935520355213552235523355243552535526355273552835529355303553135532355333553435535355363553735538355393554035541355423554335544355453554635547355483554935550355513555235553355543555535556355573555835559355603556135562355633556435565355663556735568355693557035571355723557335574355753557635577355783557935580355813558235583355843558535586355873558835589355903559135592355933559435595355963559735598355993560035601356023560335604356053560635607356083560935610356113561235613356143561535616356173561835619356203562135622356233562435625356263562735628356293563035631356323563335634356353563635637356383563935640356413564235643356443564535646356473564835649356503565135652356533565435655356563565735658356593566035661356623566335664356653566635667356683566935670356713567235673356743567535676356773567835679356803568135682356833568435685356863568735688356893569035691356923569335694356953569635697356983569935700357013570235703357043570535706357073570835709357103571135712357133571435715357163571735718357193572035721357223572335724357253572635727357283572935730357313573235733357343573535736357373573835739357403574135742357433574435745357463574735748357493575035751357523575335754357553575635757357583575935760357613576235763357643576535766357673576835769357703577135772357733577435775357763577735778357793578035781357823578335784357853578635787357883578935790357913579235793357943579535796357973579835799358003580135802358033580435805358063580735808358093581035811358123581335814358153581635817358183581935820358213582235823358243582535826358273582835829358303583135832358333583435835358363583735838358393584035841358423584335844358453584635847358483584935850358513585235853358543585535856358573585835859358603586135862358633586435865358663586735868358693587035871358723587335874358753587635877358783587935880358813588235883358843588535886358873588835889358903589135892358933589435895358963589735898358993590035901359023590335904359053590635907359083590935910359113591235913359143591535916359173591835919359203592135922359233592435925359263592735928359293593035931359323593335934359353593635937359383593935940359413594235943359443594535946359473594835949359503595135952359533595435955359563595735958359593596035961359623596335964359653596635967359683596935970359713597235973359743597535976359773597835979359803598135982359833598435985359863598735988359893599035991359923599335994359953599635997359983599936000360013600236003360043600536006360073600836009360103601136012360133601436015360163601736018360193602036021360223602336024360253602636027360283602936030360313603236033360343603536036360373603836039360403604136042360433604436045360463604736048360493605036051360523605336054360553605636057360583605936060360613606236063360643606536066360673606836069360703607136072360733607436075360763607736078360793608036081360823608336084360853608636087360883608936090360913609236093360943609536096360973609836099361003610136102361033610436105361063610736108361093611036111361123611336114361153611636117361183611936120361213612236123361243612536126361273612836129361303613136132361333613436135361363613736138361393614036141361423614336144361453614636147361483614936150361513615236153361543615536156361573615836159361603616136162361633616436165361663616736168361693617036171361723617336174361753617636177361783617936180361813618236183361843618536186361873618836189361903619136192361933619436195361963619736198361993620036201362023620336204362053620636207362083620936210362113621236213362143621536216362173621836219362203622136222362233622436225362263622736228362293623036231362323623336234362353623636237362383623936240362413624236243362443624536246362473624836249362503625136252362533625436255362563625736258362593626036261362623626336264362653626636267362683626936270362713627236273362743627536276362773627836279362803628136282362833628436285362863628736288362893629036291362923629336294362953629636297362983629936300363013630236303363043630536306363073630836309363103631136312363133631436315363163631736318363193632036321363223632336324363253632636327363283632936330363313633236333363343633536336363373633836339363403634136342363433634436345363463634736348363493635036351363523635336354363553635636357363583635936360363613636236363363643636536366363673636836369363703637136372363733637436375363763637736378363793638036381363823638336384363853638636387363883638936390363913639236393363943639536396363973639836399364003640136402364033640436405364063640736408364093641036411364123641336414364153641636417364183641936420364213642236423364243642536426364273642836429364303643136432364333643436435364363643736438364393644036441364423644336444364453644636447364483644936450364513645236453364543645536456364573645836459364603646136462364633646436465364663646736468364693647036471364723647336474364753647636477364783647936480364813648236483364843648536486364873648836489364903649136492364933649436495364963649736498364993650036501365023650336504365053650636507365083650936510365113651236513365143651536516365173651836519365203652136522365233652436525365263652736528365293653036531365323653336534365353653636537365383653936540365413654236543365443654536546365473654836549365503655136552365533655436555365563655736558365593656036561365623656336564365653656636567365683656936570365713657236573365743657536576365773657836579365803658136582365833658436585365863658736588365893659036591365923659336594365953659636597365983659936600366013660236603366043660536606366073660836609366103661136612366133661436615366163661736618366193662036621366223662336624366253662636627366283662936630366313663236633366343663536636366373663836639366403664136642366433664436645366463664736648366493665036651366523665336654366553665636657366583665936660366613666236663366643666536666366673666836669366703667136672366733667436675366763667736678366793668036681366823668336684366853668636687366883668936690366913669236693366943669536696366973669836699367003670136702367033670436705367063670736708367093671036711367123671336714367153671636717367183671936720367213672236723367243672536726367273672836729367303673136732367333673436735367363673736738367393674036741367423674336744367453674636747367483674936750367513675236753367543675536756367573675836759367603676136762367633676436765367663676736768367693677036771367723677336774367753677636777367783677936780367813678236783367843678536786367873678836789367903679136792367933679436795367963679736798367993680036801368023680336804368053680636807368083680936810368113681236813368143681536816368173681836819368203682136822368233682436825368263682736828368293683036831368323683336834368353683636837368383683936840368413684236843368443684536846368473684836849368503685136852368533685436855368563685736858368593686036861368623686336864368653686636867368683686936870368713687236873368743687536876368773687836879368803688136882368833688436885368863688736888368893689036891368923689336894368953689636897368983689936900369013690236903369043690536906369073690836909369103691136912369133691436915369163691736918369193692036921369223692336924369253692636927369283692936930369313693236933369343693536936369373693836939369403694136942369433694436945369463694736948369493695036951369523695336954369553695636957369583695936960369613696236963369643696536966369673696836969369703697136972369733697436975369763697736978369793698036981369823698336984369853698636987369883698936990369913699236993369943699536996369973699836999370003700137002370033700437005370063700737008370093701037011370123701337014370153701637017370183701937020370213702237023370243702537026370273702837029370303703137032370333703437035370363703737038370393704037041370423704337044370453704637047370483704937050370513705237053370543705537056370573705837059370603706137062370633706437065370663706737068370693707037071370723707337074370753707637077370783707937080370813708237083370843708537086370873708837089370903709137092370933709437095370963709737098370993710037101371023710337104371053710637107371083710937110371113711237113371143711537116371173711837119371203712137122371233712437125371263712737128371293713037131371323713337134371353713637137371383713937140371413714237143371443714537146371473714837149371503715137152371533715437155371563715737158371593716037161371623716337164371653716637167371683716937170371713717237173371743717537176371773717837179371803718137182371833718437185371863718737188371893719037191371923719337194371953719637197371983719937200372013720237203372043720537206372073720837209372103721137212372133721437215372163721737218372193722037221372223722337224372253722637227372283722937230372313723237233372343723537236372373723837239372403724137242372433724437245372463724737248372493725037251372523725337254372553725637257372583725937260372613726237263372643726537266372673726837269372703727137272372733727437275372763727737278372793728037281372823728337284372853728637287372883728937290372913729237293372943729537296372973729837299373003730137302373033730437305373063730737308373093731037311373123731337314373153731637317373183731937320373213732237323373243732537326373273732837329373303733137332373333733437335373363733737338373393734037341373423734337344373453734637347373483734937350373513735237353373543735537356373573735837359373603736137362373633736437365373663736737368373693737037371373723737337374373753737637377373783737937380373813738237383373843738537386373873738837389373903739137392373933739437395373963739737398373993740037401374023740337404374053740637407374083740937410374113741237413374143741537416374173741837419374203742137422374233742437425374263742737428374293743037431374323743337434374353743637437374383743937440374413744237443374443744537446374473744837449374503745137452374533745437455374563745737458374593746037461374623746337464374653746637467374683746937470374713747237473374743747537476374773747837479374803748137482374833748437485374863748737488374893749037491374923749337494374953749637497374983749937500375013750237503375043750537506375073750837509375103751137512375133751437515375163751737518375193752037521375223752337524375253752637527375283752937530375313753237533375343753537536375373753837539375403754137542375433754437545375463754737548375493755037551375523755337554375553755637557375583755937560375613756237563375643756537566375673756837569375703757137572375733757437575375763757737578375793758037581375823758337584375853758637587375883758937590375913759237593375943759537596375973759837599376003760137602376033760437605376063760737608376093761037611376123761337614376153761637617376183761937620376213762237623376243762537626376273762837629376303763137632376333763437635376363763737638376393764037641376423764337644376453764637647376483764937650376513765237653376543765537656376573765837659376603766137662376633766437665376663766737668376693767037671376723767337674376753767637677376783767937680376813768237683376843768537686376873768837689376903769137692376933769437695376963769737698376993770037701377023770337704377053770637707377083770937710377113771237713377143771537716377173771837719377203772137722377233772437725377263772737728377293773037731377323773337734377353773637737377383773937740377413774237743377443774537746377473774837749377503775137752377533775437755377563775737758377593776037761377623776337764377653776637767377683776937770377713777237773377743777537776377773777837779377803778137782377833778437785377863778737788377893779037791377923779337794377953779637797377983779937800378013780237803378043780537806378073780837809378103781137812378133781437815378163781737818378193782037821378223782337824378253782637827378283782937830378313783237833378343783537836378373783837839378403784137842378433784437845378463784737848378493785037851378523785337854378553785637857378583785937860378613786237863378643786537866378673786837869378703787137872378733787437875378763787737878378793788037881378823788337884378853788637887378883788937890378913789237893378943789537896378973789837899379003790137902379033790437905379063790737908379093791037911379123791337914379153791637917379183791937920379213792237923379243792537926379273792837929379303793137932379333793437935379363793737938379393794037941379423794337944379453794637947379483794937950379513795237953379543795537956379573795837959379603796137962379633796437965379663796737968379693797037971379723797337974379753797637977379783797937980379813798237983379843798537986379873798837989379903799137992379933799437995379963799737998379993800038001380023800338004380053800638007380083800938010380113801238013380143801538016380173801838019380203802138022380233802438025380263802738028380293803038031380323803338034380353803638037380383803938040380413804238043380443804538046380473804838049380503805138052380533805438055380563805738058380593806038061380623806338064380653806638067380683806938070380713807238073380743807538076380773807838079380803808138082380833808438085380863808738088380893809038091380923809338094380953809638097380983809938100381013810238103381043810538106381073810838109381103811138112381133811438115381163811738118381193812038121381223812338124381253812638127381283812938130381313813238133381343813538136381373813838139381403814138142381433814438145381463814738148381493815038151381523815338154381553815638157381583815938160381613816238163381643816538166381673816838169381703817138172381733817438175381763817738178381793818038181381823818338184381853818638187381883818938190381913819238193381943819538196381973819838199382003820138202382033820438205382063820738208382093821038211382123821338214382153821638217382183821938220382213822238223382243822538226382273822838229382303823138232382333823438235382363823738238382393824038241382423824338244382453824638247382483824938250382513825238253382543825538256382573825838259382603826138262382633826438265382663826738268382693827038271382723827338274382753827638277382783827938280382813828238283382843828538286382873828838289382903829138292382933829438295382963829738298382993830038301383023830338304383053830638307383083830938310383113831238313383143831538316383173831838319383203832138322383233832438325383263832738328383293833038331383323833338334383353833638337383383833938340383413834238343383443834538346383473834838349383503835138352383533835438355383563835738358383593836038361383623836338364383653836638367383683836938370383713837238373383743837538376383773837838379383803838138382383833838438385383863838738388383893839038391383923839338394383953839638397383983839938400384013840238403384043840538406384073840838409384103841138412384133841438415384163841738418384193842038421384223842338424384253842638427384283842938430384313843238433384343843538436384373843838439384403844138442384433844438445384463844738448384493845038451384523845338454384553845638457384583845938460384613846238463384643846538466384673846838469384703847138472384733847438475384763847738478384793848038481384823848338484384853848638487384883848938490384913849238493384943849538496384973849838499385003850138502385033850438505385063850738508385093851038511385123851338514385153851638517385183851938520385213852238523385243852538526385273852838529385303853138532385333853438535385363853738538385393854038541385423854338544385453854638547385483854938550385513855238553385543855538556385573855838559385603856138562385633856438565385663856738568385693857038571385723857338574385753857638577385783857938580385813858238583385843858538586385873858838589385903859138592385933859438595385963859738598385993860038601386023860338604386053860638607386083860938610386113861238613386143861538616386173861838619386203862138622386233862438625386263862738628386293863038631386323863338634386353863638637386383863938640386413864238643386443864538646386473864838649386503865138652386533865438655386563865738658386593866038661386623866338664386653866638667386683866938670386713867238673386743867538676386773867838679386803868138682386833868438685386863868738688386893869038691386923869338694386953869638697386983869938700387013870238703387043870538706387073870838709387103871138712387133871438715387163871738718387193872038721387223872338724387253872638727387283872938730387313873238733387343873538736387373873838739387403874138742387433874438745387463874738748387493875038751387523875338754387553875638757387583875938760387613876238763387643876538766387673876838769387703877138772387733877438775387763877738778387793878038781387823878338784387853878638787387883878938790387913879238793387943879538796387973879838799388003880138802388033880438805388063880738808388093881038811388123881338814388153881638817388183881938820388213882238823388243882538826388273882838829388303883138832388333883438835388363883738838388393884038841388423884338844388453884638847388483884938850388513885238853388543885538856388573885838859388603886138862388633886438865388663886738868388693887038871388723887338874388753887638877388783887938880388813888238883388843888538886388873888838889388903889138892388933889438895388963889738898388993890038901389023890338904389053890638907389083890938910389113891238913389143891538916389173891838919389203892138922389233892438925389263892738928389293893038931389323893338934389353893638937389383893938940389413894238943389443894538946389473894838949389503895138952389533895438955389563895738958389593896038961389623896338964389653896638967389683896938970389713897238973389743897538976389773897838979389803898138982389833898438985389863898738988389893899038991389923899338994389953899638997389983899939000390013900239003390043900539006390073900839009390103901139012390133901439015390163901739018390193902039021390223902339024390253902639027390283902939030390313903239033390343903539036390373903839039390403904139042390433904439045390463904739048390493905039051390523905339054390553905639057390583905939060390613906239063390643906539066390673906839069390703907139072390733907439075390763907739078390793908039081390823908339084390853908639087390883908939090390913909239093390943909539096390973909839099391003910139102391033910439105391063910739108391093911039111391123911339114391153911639117391183911939120391213912239123391243912539126391273912839129391303913139132391333913439135391363913739138391393914039141391423914339144391453914639147391483914939150391513915239153391543915539156391573915839159391603916139162391633916439165391663916739168391693917039171391723917339174391753917639177391783917939180391813918239183391843918539186391873918839189391903919139192391933919439195391963919739198391993920039201392023920339204392053920639207392083920939210392113921239213392143921539216392173921839219392203922139222392233922439225392263922739228392293923039231392323923339234392353923639237392383923939240392413924239243392443924539246392473924839249392503925139252392533925439255392563925739258392593926039261392623926339264392653926639267392683926939270392713927239273392743927539276392773927839279392803928139282392833928439285392863928739288392893929039291392923929339294392953929639297392983929939300393013930239303393043930539306393073930839309393103931139312393133931439315393163931739318393193932039321393223932339324393253932639327393283932939330393313933239333393343933539336393373933839339393403934139342393433934439345393463934739348393493935039351393523935339354393553935639357393583935939360393613936239363393643936539366393673936839369393703937139372393733937439375393763937739378393793938039381393823938339384393853938639387393883938939390393913939239393393943939539396393973939839399394003940139402394033940439405394063940739408394093941039411394123941339414394153941639417394183941939420394213942239423394243942539426394273942839429394303943139432394333943439435394363943739438394393944039441394423944339444394453944639447394483944939450394513945239453394543945539456394573945839459394603946139462394633946439465394663946739468394693947039471394723947339474394753947639477394783947939480394813948239483394843948539486394873948839489394903949139492394933949439495394963949739498394993950039501395023950339504395053950639507395083950939510395113951239513395143951539516395173951839519395203952139522395233952439525395263952739528395293953039531395323953339534395353953639537395383953939540395413954239543395443954539546395473954839549395503955139552395533955439555395563955739558395593956039561395623956339564395653956639567395683956939570395713957239573395743957539576395773957839579395803958139582395833958439585395863958739588395893959039591395923959339594395953959639597395983959939600396013960239603396043960539606396073960839609396103961139612396133961439615396163961739618396193962039621396223962339624396253962639627396283962939630396313963239633396343963539636396373963839639396403964139642396433964439645396463964739648396493965039651396523965339654396553965639657396583965939660396613966239663396643966539666396673966839669396703967139672396733967439675396763967739678396793968039681396823968339684396853968639687396883968939690396913969239693396943969539696396973969839699397003970139702397033970439705397063970739708397093971039711397123971339714397153971639717397183971939720397213972239723397243972539726397273972839729397303973139732397333973439735397363973739738397393974039741397423974339744397453974639747397483974939750397513975239753397543975539756397573975839759397603976139762397633976439765397663976739768397693977039771397723977339774397753977639777397783977939780397813978239783397843978539786397873978839789397903979139792397933979439795397963979739798397993980039801398023980339804398053980639807398083980939810398113981239813398143981539816398173981839819398203982139822398233982439825398263982739828398293983039831398323983339834398353983639837398383983939840398413984239843398443984539846398473984839849398503985139852398533985439855398563985739858398593986039861398623986339864398653986639867398683986939870398713987239873398743987539876398773987839879398803988139882398833988439885398863988739888398893989039891398923989339894398953989639897398983989939900399013990239903399043990539906399073990839909399103991139912399133991439915399163991739918399193992039921399223992339924399253992639927399283992939930399313993239933399343993539936399373993839939399403994139942399433994439945399463994739948399493995039951399523995339954399553995639957399583995939960399613996239963399643996539966399673996839969399703997139972399733997439975399763997739978399793998039981399823998339984399853998639987399883998939990399913999239993399943999539996399973999839999400004000140002400034000440005400064000740008400094001040011400124001340014400154001640017400184001940020400214002240023400244002540026400274002840029400304003140032400334003440035400364003740038400394004040041400424004340044400454004640047400484004940050400514005240053400544005540056400574005840059400604006140062400634006440065400664006740068400694007040071400724007340074400754007640077400784007940080400814008240083400844008540086400874008840089400904009140092400934009440095400964009740098400994010040101401024010340104401054010640107401084010940110401114011240113401144011540116401174011840119401204012140122401234012440125401264012740128401294013040131401324013340134401354013640137401384013940140401414014240143401444014540146401474014840149401504015140152401534015440155401564015740158401594016040161401624016340164401654016640167401684016940170401714017240173401744017540176401774017840179401804018140182401834018440185401864018740188401894019040191401924019340194401954019640197401984019940200402014020240203402044020540206402074020840209402104021140212402134021440215402164021740218402194022040221402224022340224402254022640227402284022940230402314023240233402344023540236402374023840239402404024140242402434024440245402464024740248402494025040251402524025340254402554025640257402584025940260402614026240263402644026540266402674026840269402704027140272402734027440275402764027740278402794028040281402824028340284402854028640287402884028940290402914029240293402944029540296402974029840299403004030140302403034030440305403064030740308403094031040311403124031340314403154031640317403184031940320403214032240323403244032540326403274032840329403304033140332403334033440335403364033740338403394034040341403424034340344403454034640347403484034940350403514035240353403544035540356403574035840359403604036140362403634036440365403664036740368403694037040371403724037340374403754037640377403784037940380403814038240383403844038540386403874038840389403904039140392403934039440395403964039740398403994040040401404024040340404404054040640407404084040940410404114041240413404144041540416404174041840419404204042140422404234042440425404264042740428404294043040431404324043340434404354043640437404384043940440404414044240443404444044540446404474044840449404504045140452404534045440455404564045740458404594046040461404624046340464404654046640467404684046940470404714047240473404744047540476404774047840479404804048140482404834048440485404864048740488404894049040491404924049340494404954049640497404984049940500405014050240503405044050540506405074050840509405104051140512405134051440515405164051740518405194052040521405224052340524405254052640527405284052940530405314053240533405344053540536405374053840539405404054140542405434054440545405464054740548405494055040551405524055340554405554055640557405584055940560405614056240563405644056540566405674056840569405704057140572405734057440575405764057740578405794058040581405824058340584405854058640587405884058940590405914059240593405944059540596405974059840599406004060140602406034060440605406064060740608406094061040611406124061340614406154061640617406184061940620406214062240623406244062540626406274062840629406304063140632406334063440635406364063740638406394064040641406424064340644406454064640647406484064940650406514065240653406544065540656406574065840659406604066140662406634066440665406664066740668406694067040671406724067340674406754067640677406784067940680406814068240683406844068540686406874068840689406904069140692406934069440695406964069740698406994070040701407024070340704407054070640707407084070940710407114071240713407144071540716407174071840719407204072140722407234072440725407264072740728407294073040731407324073340734407354073640737407384073940740407414074240743407444074540746407474074840749407504075140752407534075440755407564075740758407594076040761407624076340764407654076640767407684076940770407714077240773407744077540776407774077840779407804078140782407834078440785407864078740788407894079040791407924079340794407954079640797407984079940800408014080240803408044080540806408074080840809408104081140812408134081440815408164081740818408194082040821408224082340824408254082640827408284082940830408314083240833408344083540836408374083840839408404084140842408434084440845408464084740848408494085040851408524085340854408554085640857408584085940860408614086240863408644086540866408674086840869408704087140872408734087440875408764087740878408794088040881408824088340884408854088640887408884088940890408914089240893408944089540896408974089840899409004090140902409034090440905409064090740908409094091040911409124091340914409154091640917409184091940920409214092240923409244092540926409274092840929409304093140932409334093440935409364093740938409394094040941409424094340944409454094640947409484094940950409514095240953409544095540956409574095840959409604096140962409634096440965409664096740968409694097040971409724097340974409754097640977409784097940980409814098240983409844098540986409874098840989409904099140992409934099440995409964099740998409994100041001410024100341004410054100641007410084100941010410114101241013410144101541016410174101841019410204102141022410234102441025410264102741028410294103041031410324103341034410354103641037410384103941040410414104241043410444104541046410474104841049410504105141052410534105441055410564105741058410594106041061410624106341064410654106641067410684106941070410714107241073410744107541076410774107841079410804108141082410834108441085410864108741088410894109041091410924109341094410954109641097410984109941100411014110241103411044110541106411074110841109411104111141112411134111441115411164111741118411194112041121411224112341124411254112641127411284112941130411314113241133411344113541136411374113841139411404114141142411434114441145411464114741148411494115041151411524115341154411554115641157411584115941160411614116241163411644116541166411674116841169411704117141172411734117441175411764117741178411794118041181411824118341184411854118641187411884118941190411914119241193411944119541196411974119841199412004120141202412034120441205412064120741208412094121041211412124121341214412154121641217412184121941220412214122241223412244122541226412274122841229412304123141232412334123441235412364123741238412394124041241412424124341244412454124641247412484124941250412514125241253412544125541256412574125841259412604126141262412634126441265412664126741268412694127041271412724127341274412754127641277412784127941280412814128241283412844128541286412874128841289412904129141292412934129441295412964129741298412994130041301413024130341304413054130641307413084130941310413114131241313413144131541316413174131841319413204132141322413234132441325413264132741328413294133041331413324133341334413354133641337413384133941340413414134241343413444134541346413474134841349413504135141352413534135441355413564135741358413594136041361413624136341364413654136641367413684136941370413714137241373413744137541376413774137841379413804138141382413834138441385413864138741388413894139041391413924139341394413954139641397413984139941400414014140241403414044140541406414074140841409414104141141412414134141441415414164141741418414194142041421414224142341424414254142641427414284142941430414314143241433414344143541436414374143841439414404144141442414434144441445414464144741448414494145041451414524145341454414554145641457414584145941460414614146241463414644146541466414674146841469414704147141472414734147441475414764147741478414794148041481414824148341484414854148641487414884148941490414914149241493414944149541496414974149841499415004150141502415034150441505415064150741508415094151041511415124151341514415154151641517415184151941520415214152241523415244152541526415274152841529415304153141532415334153441535415364153741538415394154041541415424154341544415454154641547415484154941550415514155241553415544155541556415574155841559415604156141562415634156441565415664156741568415694157041571415724157341574415754157641577415784157941580415814158241583415844158541586415874158841589415904159141592415934159441595415964159741598415994160041601416024160341604416054160641607416084160941610416114161241613416144161541616416174161841619416204162141622416234162441625416264162741628416294163041631416324163341634416354163641637416384163941640416414164241643416444164541646416474164841649416504165141652416534165441655416564165741658416594166041661416624166341664416654166641667416684166941670416714167241673416744167541676416774167841679416804168141682416834168441685416864168741688416894169041691416924169341694416954169641697416984169941700417014170241703417044170541706417074170841709417104171141712417134171441715417164171741718417194172041721417224172341724417254172641727417284172941730417314173241733417344173541736417374173841739417404174141742417434174441745417464174741748417494175041751417524175341754417554175641757417584175941760417614176241763417644176541766417674176841769417704177141772417734177441775417764177741778417794178041781417824178341784417854178641787417884178941790417914179241793417944179541796417974179841799418004180141802418034180441805418064180741808418094181041811418124181341814418154181641817418184181941820418214182241823418244182541826418274182841829418304183141832418334183441835418364183741838418394184041841418424184341844418454184641847418484184941850418514185241853418544185541856418574185841859418604186141862418634186441865418664186741868418694187041871418724187341874418754187641877418784187941880418814188241883418844188541886418874188841889418904189141892418934189441895418964189741898418994190041901419024190341904419054190641907419084190941910419114191241913419144191541916419174191841919419204192141922419234192441925419264192741928419294193041931419324193341934419354193641937419384193941940419414194241943419444194541946419474194841949419504195141952419534195441955419564195741958419594196041961419624196341964419654196641967419684196941970419714197241973419744197541976419774197841979419804198141982419834198441985419864198741988419894199041991419924199341994419954199641997419984199942000420014200242003420044200542006420074200842009420104201142012420134201442015420164201742018420194202042021420224202342024420254202642027420284202942030420314203242033420344203542036420374203842039420404204142042420434204442045420464204742048420494205042051420524205342054420554205642057420584205942060420614206242063420644206542066420674206842069420704207142072420734207442075420764207742078420794208042081420824208342084420854208642087420884208942090420914209242093420944209542096420974209842099421004210142102421034210442105421064210742108421094211042111421124211342114421154211642117421184211942120421214212242123421244212542126421274212842129421304213142132421334213442135421364213742138421394214042141421424214342144421454214642147421484214942150421514215242153421544215542156421574215842159421604216142162421634216442165421664216742168421694217042171421724217342174421754217642177421784217942180421814218242183421844218542186421874218842189421904219142192421934219442195421964219742198421994220042201422024220342204422054220642207422084220942210422114221242213422144221542216422174221842219422204222142222422234222442225422264222742228422294223042231422324223342234422354223642237422384223942240422414224242243422444224542246422474224842249422504225142252422534225442255422564225742258422594226042261422624226342264422654226642267422684226942270422714227242273422744227542276422774227842279422804228142282422834228442285422864228742288422894229042291422924229342294422954229642297422984229942300423014230242303423044230542306423074230842309423104231142312423134231442315423164231742318423194232042321423224232342324423254232642327423284232942330423314233242333423344233542336423374233842339423404234142342423434234442345423464234742348423494235042351423524235342354423554235642357423584235942360423614236242363423644236542366423674236842369423704237142372423734237442375423764237742378423794238042381423824238342384423854238642387423884238942390423914239242393423944239542396423974239842399424004240142402424034240442405424064240742408424094241042411424124241342414424154241642417424184241942420424214242242423424244242542426424274242842429424304243142432424334243442435424364243742438424394244042441424424244342444424454244642447424484244942450424514245242453424544245542456424574245842459424604246142462424634246442465424664246742468424694247042471424724247342474424754247642477424784247942480424814248242483424844248542486424874248842489424904249142492424934249442495424964249742498424994250042501425024250342504425054250642507425084250942510425114251242513425144251542516425174251842519425204252142522425234252442525425264252742528425294253042531425324253342534425354253642537425384253942540425414254242543425444254542546425474254842549425504255142552425534255442555425564255742558425594256042561425624256342564425654256642567425684256942570425714257242573425744257542576425774257842579425804258142582425834258442585425864258742588425894259042591425924259342594425954259642597425984259942600426014260242603426044260542606426074260842609426104261142612426134261442615426164261742618426194262042621426224262342624426254262642627426284262942630426314263242633426344263542636426374263842639426404264142642426434264442645426464264742648426494265042651426524265342654426554265642657426584265942660426614266242663426644266542666426674266842669426704267142672426734267442675426764267742678426794268042681426824268342684426854268642687426884268942690426914269242693426944269542696426974269842699427004270142702427034270442705427064270742708427094271042711427124271342714427154271642717427184271942720427214272242723427244272542726427274272842729427304273142732427334273442735427364273742738427394274042741427424274342744427454274642747427484274942750427514275242753427544275542756427574275842759427604276142762427634276442765427664276742768427694277042771427724277342774427754277642777427784277942780427814278242783427844278542786427874278842789427904279142792427934279442795427964279742798427994280042801428024280342804428054280642807428084280942810428114281242813428144281542816428174281842819428204282142822428234282442825428264282742828428294283042831428324283342834428354283642837428384283942840428414284242843428444284542846428474284842849428504285142852428534285442855428564285742858428594286042861428624286342864428654286642867428684286942870428714287242873428744287542876428774287842879428804288142882428834288442885428864288742888428894289042891428924289342894428954289642897428984289942900429014290242903429044290542906429074290842909429104291142912429134291442915429164291742918429194292042921429224292342924429254292642927429284292942930429314293242933429344293542936429374293842939429404294142942429434294442945429464294742948429494295042951429524295342954429554295642957429584295942960429614296242963429644296542966429674296842969429704297142972429734297442975429764297742978429794298042981429824298342984429854298642987429884298942990429914299242993429944299542996429974299842999430004300143002430034300443005430064300743008430094301043011430124301343014430154301643017430184301943020430214302243023430244302543026430274302843029430304303143032430334303443035430364303743038430394304043041430424304343044430454304643047430484304943050430514305243053430544305543056430574305843059430604306143062430634306443065430664306743068430694307043071430724307343074430754307643077430784307943080430814308243083430844308543086430874308843089430904309143092430934309443095430964309743098430994310043101431024310343104431054310643107431084310943110431114311243113431144311543116431174311843119431204312143122431234312443125431264312743128431294313043131431324313343134431354313643137431384313943140431414314243143431444314543146431474314843149431504315143152431534315443155431564315743158431594316043161431624316343164431654316643167431684316943170431714317243173431744317543176431774317843179431804318143182431834318443185431864318743188431894319043191431924319343194431954319643197431984319943200432014320243203432044320543206432074320843209432104321143212432134321443215432164321743218432194322043221432224322343224432254322643227432284322943230432314323243233432344323543236432374323843239432404324143242432434324443245432464324743248432494325043251432524325343254432554325643257432584325943260432614326243263432644326543266432674326843269432704327143272432734327443275432764327743278432794328043281432824328343284432854328643287432884328943290432914329243293432944329543296432974329843299433004330143302433034330443305433064330743308433094331043311433124331343314433154331643317433184331943320433214332243323433244332543326433274332843329433304333143332433334333443335433364333743338433394334043341433424334343344433454334643347433484334943350433514335243353433544335543356433574335843359433604336143362433634336443365433664336743368433694337043371433724337343374433754337643377433784337943380433814338243383433844338543386433874338843389433904339143392433934339443395433964339743398433994340043401434024340343404434054340643407434084340943410434114341243413434144341543416434174341843419434204342143422434234342443425434264342743428434294343043431434324343343434434354343643437434384343943440434414344243443434444344543446434474344843449434504345143452434534345443455434564345743458434594346043461434624346343464434654346643467434684346943470434714347243473434744347543476434774347843479434804348143482434834348443485434864348743488434894349043491434924349343494434954349643497434984349943500435014350243503435044350543506435074350843509435104351143512435134351443515435164351743518435194352043521435224352343524435254352643527435284352943530435314353243533435344353543536435374353843539435404354143542435434354443545435464354743548435494355043551435524355343554435554355643557435584355943560435614356243563435644356543566435674356843569435704357143572435734357443575435764357743578435794358043581435824358343584435854358643587435884358943590435914359243593435944359543596435974359843599436004360143602436034360443605436064360743608436094361043611436124361343614436154361643617436184361943620436214362243623436244362543626436274362843629436304363143632436334363443635436364363743638436394364043641436424364343644436454364643647436484364943650436514365243653436544365543656436574365843659436604366143662436634366443665436664366743668436694367043671436724367343674436754367643677436784367943680436814368243683436844368543686436874368843689436904369143692436934369443695436964369743698436994370043701437024370343704437054370643707437084370943710437114371243713437144371543716437174371843719437204372143722437234372443725437264372743728437294373043731437324373343734437354373643737437384373943740437414374243743437444374543746437474374843749437504375143752437534375443755437564375743758437594376043761437624376343764437654376643767437684376943770437714377243773437744377543776437774377843779437804378143782437834378443785437864378743788437894379043791437924379343794437954379643797437984379943800438014380243803438044380543806438074380843809438104381143812438134381443815438164381743818438194382043821438224382343824438254382643827438284382943830438314383243833438344383543836438374383843839438404384143842438434384443845438464384743848438494385043851438524385343854438554385643857438584385943860438614386243863438644386543866438674386843869438704387143872438734387443875438764387743878438794388043881438824388343884438854388643887438884388943890438914389243893438944389543896438974389843899439004390143902439034390443905439064390743908439094391043911439124391343914439154391643917439184391943920439214392243923439244392543926439274392843929439304393143932439334393443935439364393743938439394394043941439424394343944439454394643947439484394943950439514395243953439544395543956439574395843959439604396143962439634396443965439664396743968439694397043971439724397343974439754397643977439784397943980439814398243983439844398543986439874398843989439904399143992439934399443995439964399743998439994400044001440024400344004440054400644007440084400944010440114401244013440144401544016440174401844019440204402144022440234402444025440264402744028440294403044031440324403344034440354403644037440384403944040440414404244043440444404544046440474404844049440504405144052440534405444055440564405744058440594406044061440624406344064440654406644067440684406944070440714407244073440744407544076440774407844079440804408144082440834408444085440864408744088440894409044091440924409344094440954409644097440984409944100441014410244103441044410544106441074410844109441104411144112441134411444115441164411744118441194412044121441224412344124441254412644127441284412944130441314413244133441344413544136441374413844139441404414144142441434414444145441464414744148441494415044151441524415344154441554415644157441584415944160441614416244163441644416544166441674416844169441704417144172441734417444175441764417744178441794418044181441824418344184441854418644187441884418944190441914419244193441944419544196441974419844199442004420144202442034420444205442064420744208442094421044211442124421344214442154421644217442184421944220442214422244223442244422544226442274422844229442304423144232442334423444235442364423744238442394424044241442424424344244442454424644247442484424944250442514425244253442544425544256442574425844259442604426144262442634426444265442664426744268442694427044271442724427344274442754427644277442784427944280442814428244283442844428544286442874428844289442904429144292442934429444295442964429744298442994430044301443024430344304443054430644307443084430944310443114431244313443144431544316443174431844319443204432144322443234432444325443264432744328443294433044331443324433344334443354433644337443384433944340443414434244343443444434544346443474434844349443504435144352443534435444355443564435744358443594436044361443624436344364443654436644367443684436944370443714437244373443744437544376443774437844379443804438144382443834438444385443864438744388443894439044391443924439344394443954439644397443984439944400444014440244403444044440544406444074440844409444104441144412444134441444415444164441744418444194442044421444224442344424444254442644427444284442944430444314443244433444344443544436444374443844439444404444144442444434444444445444464444744448444494445044451444524445344454444554445644457444584445944460444614446244463444644446544466444674446844469444704447144472444734447444475444764447744478444794448044481444824448344484444854448644487444884448944490444914449244493444944449544496444974449844499445004450144502445034450444505445064450744508445094451044511445124451344514445154451644517445184451944520445214452244523445244452544526445274452844529445304453144532445334453444535445364453744538445394454044541445424454344544445454454644547445484454944550445514455244553445544455544556445574455844559445604456144562445634456444565445664456744568445694457044571445724457344574445754457644577445784457944580445814458244583445844458544586445874458844589445904459144592445934459444595445964459744598445994460044601446024460344604446054460644607446084460944610446114461244613446144461544616446174461844619446204462144622446234462444625446264462744628446294463044631446324463344634446354463644637446384463944640446414464244643446444464544646446474464844649446504465144652446534465444655446564465744658446594466044661446624466344664446654466644667446684466944670446714467244673446744467544676446774467844679446804468144682446834468444685446864468744688446894469044691446924469344694446954469644697446984469944700447014470244703447044470544706447074470844709447104471144712447134471444715447164471744718447194472044721447224472344724447254472644727447284472944730447314473244733447344473544736447374473844739447404474144742447434474444745447464474744748447494475044751447524475344754447554475644757447584475944760447614476244763447644476544766447674476844769447704477144772447734477444775447764477744778447794478044781447824478344784447854478644787447884478944790447914479244793447944479544796447974479844799448004480144802448034480444805448064480744808448094481044811448124481344814448154481644817448184481944820448214482244823448244482544826448274482844829448304483144832448334483444835448364483744838448394484044841448424484344844448454484644847448484484944850448514485244853448544485544856448574485844859448604486144862448634486444865448664486744868448694487044871448724487344874448754487644877448784487944880448814488244883448844488544886448874488844889448904489144892448934489444895448964489744898448994490044901449024490344904449054490644907449084490944910449114491244913449144491544916449174491844919449204492144922449234492444925449264492744928449294493044931449324493344934449354493644937449384493944940449414494244943449444494544946449474494844949449504495144952449534495444955449564495744958449594496044961449624496344964449654496644967449684496944970449714497244973449744497544976449774497844979449804498144982449834498444985449864498744988449894499044991449924499344994449954499644997449984499945000450014500245003450044500545006450074500845009450104501145012450134501445015450164501745018450194502045021450224502345024450254502645027450284502945030450314503245033450344503545036450374503845039450404504145042450434504445045450464504745048450494505045051450524505345054450554505645057450584505945060450614506245063450644506545066450674506845069450704507145072450734507445075450764507745078450794508045081450824508345084450854508645087450884508945090450914509245093450944509545096450974509845099451004510145102451034510445105451064510745108451094511045111451124511345114451154511645117451184511945120451214512245123451244512545126451274512845129451304513145132451334513445135451364513745138451394514045141451424514345144451454514645147451484514945150451514515245153451544515545156451574515845159451604516145162451634516445165451664516745168451694517045171451724517345174451754517645177451784517945180451814518245183451844518545186451874518845189451904519145192451934519445195451964519745198451994520045201452024520345204452054520645207452084520945210452114521245213452144521545216452174521845219452204522145222452234522445225452264522745228452294523045231452324523345234452354523645237452384523945240452414524245243452444524545246452474524845249452504525145252452534525445255452564525745258452594526045261452624526345264452654526645267452684526945270452714527245273452744527545276452774527845279452804528145282452834528445285452864528745288452894529045291452924529345294452954529645297452984529945300453014530245303453044530545306453074530845309453104531145312453134531445315453164531745318453194532045321453224532345324453254532645327453284532945330453314533245333453344533545336453374533845339453404534145342453434534445345453464534745348453494535045351453524535345354453554535645357453584535945360453614536245363453644536545366453674536845369453704537145372453734537445375453764537745378453794538045381453824538345384453854538645387453884538945390453914539245393453944539545396453974539845399454004540145402454034540445405454064540745408454094541045411454124541345414454154541645417454184541945420454214542245423454244542545426454274542845429454304543145432454334543445435454364543745438454394544045441454424544345444454454544645447454484544945450454514545245453454544545545456454574545845459454604546145462454634546445465454664546745468454694547045471454724547345474454754547645477454784547945480454814548245483454844548545486454874548845489454904549145492454934549445495454964549745498454994550045501455024550345504455054550645507455084550945510455114551245513455144551545516455174551845519455204552145522455234552445525455264552745528455294553045531455324553345534455354553645537455384553945540455414554245543455444554545546455474554845549455504555145552455534555445555455564555745558455594556045561455624556345564455654556645567455684556945570455714557245573455744557545576455774557845579455804558145582455834558445585455864558745588455894559045591455924559345594455954559645597455984559945600456014560245603456044560545606456074560845609456104561145612456134561445615456164561745618456194562045621456224562345624456254562645627456284562945630456314563245633456344563545636456374563845639456404564145642456434564445645456464564745648456494565045651456524565345654456554565645657456584565945660456614566245663456644566545666456674566845669456704567145672456734567445675456764567745678456794568045681456824568345684456854568645687456884568945690456914569245693456944569545696456974569845699457004570145702457034570445705457064570745708457094571045711457124571345714457154571645717457184571945720457214572245723457244572545726457274572845729457304573145732457334573445735457364573745738457394574045741457424574345744457454574645747457484574945750457514575245753457544575545756457574575845759457604576145762457634576445765457664576745768457694577045771457724577345774457754577645777457784577945780457814578245783457844578545786457874578845789457904579145792457934579445795457964579745798457994580045801458024580345804458054580645807458084580945810458114581245813458144581545816458174581845819458204582145822458234582445825458264582745828458294583045831458324583345834458354583645837458384583945840458414584245843458444584545846458474584845849458504585145852458534585445855458564585745858458594586045861458624586345864458654586645867458684586945870458714587245873458744587545876458774587845879458804588145882458834588445885458864588745888458894589045891458924589345894458954589645897458984589945900459014590245903459044590545906459074590845909459104591145912459134591445915459164591745918459194592045921459224592345924459254592645927459284592945930459314593245933459344593545936459374593845939459404594145942459434594445945459464594745948459494595045951459524595345954459554595645957459584595945960459614596245963459644596545966459674596845969459704597145972459734597445975459764597745978459794598045981459824598345984459854598645987459884598945990459914599245993459944599545996459974599845999460004600146002460034600446005460064600746008460094601046011460124601346014460154601646017460184601946020460214602246023460244602546026460274602846029460304603146032460334603446035460364603746038460394604046041460424604346044460454604646047460484604946050460514605246053460544605546056460574605846059460604606146062460634606446065460664606746068460694607046071460724607346074460754607646077460784607946080460814608246083460844608546086460874608846089460904609146092460934609446095460964609746098460994610046101461024610346104461054610646107461084610946110461114611246113461144611546116461174611846119461204612146122461234612446125461264612746128461294613046131461324613346134461354613646137461384613946140461414614246143461444614546146461474614846149461504615146152461534615446155461564615746158461594616046161461624616346164461654616646167461684616946170461714617246173461744617546176461774617846179461804618146182461834618446185461864618746188461894619046191461924619346194461954619646197461984619946200462014620246203462044620546206462074620846209462104621146212462134621446215462164621746218462194622046221462224622346224462254622646227462284622946230462314623246233462344623546236462374623846239462404624146242462434624446245462464624746248462494625046251462524625346254462554625646257462584625946260462614626246263462644626546266462674626846269462704627146272462734627446275462764627746278462794628046281462824628346284462854628646287462884628946290462914629246293462944629546296462974629846299463004630146302463034630446305463064630746308463094631046311463124631346314463154631646317463184631946320463214632246323463244632546326463274632846329463304633146332463334633446335463364633746338463394634046341463424634346344463454634646347463484634946350463514635246353463544635546356463574635846359463604636146362463634636446365463664636746368463694637046371463724637346374463754637646377463784637946380463814638246383463844638546386463874638846389463904639146392463934639446395463964639746398463994640046401464024640346404464054640646407464084640946410464114641246413464144641546416464174641846419464204642146422464234642446425464264642746428464294643046431464324643346434464354643646437464384643946440464414644246443464444644546446464474644846449464504645146452464534645446455464564645746458464594646046461464624646346464464654646646467464684646946470464714647246473464744647546476464774647846479464804648146482464834648446485464864648746488464894649046491464924649346494464954649646497464984649946500465014650246503465044650546506465074650846509465104651146512465134651446515465164651746518465194652046521465224652346524465254652646527465284652946530465314653246533465344653546536465374653846539465404654146542465434654446545465464654746548465494655046551465524655346554465554655646557465584655946560465614656246563465644656546566465674656846569465704657146572465734657446575465764657746578465794658046581465824658346584465854658646587465884658946590465914659246593465944659546596465974659846599466004660146602466034660446605466064660746608466094661046611466124661346614466154661646617466184661946620466214662246623466244662546626466274662846629466304663146632466334663446635466364663746638466394664046641466424664346644466454664646647466484664946650466514665246653466544665546656466574665846659466604666146662466634666446665466664666746668466694667046671466724667346674466754667646677466784667946680466814668246683466844668546686466874668846689466904669146692466934669446695466964669746698466994670046701467024670346704467054670646707467084670946710467114671246713467144671546716467174671846719467204672146722467234672446725467264672746728467294673046731467324673346734467354673646737467384673946740467414674246743467444674546746467474674846749467504675146752467534675446755467564675746758467594676046761467624676346764467654676646767467684676946770467714677246773467744677546776467774677846779467804678146782467834678446785467864678746788467894679046791467924679346794467954679646797467984679946800468014680246803468044680546806468074680846809468104681146812468134681446815468164681746818468194682046821468224682346824468254682646827468284682946830468314683246833468344683546836468374683846839468404684146842468434684446845468464684746848468494685046851468524685346854468554685646857468584685946860468614686246863468644686546866468674686846869468704687146872468734687446875468764687746878468794688046881468824688346884468854688646887468884688946890468914689246893468944689546896468974689846899469004690146902469034690446905469064690746908469094691046911469124691346914469154691646917469184691946920469214692246923469244692546926469274692846929469304693146932469334693446935469364693746938469394694046941469424694346944469454694646947469484694946950469514695246953469544695546956469574695846959469604696146962469634696446965469664696746968469694697046971469724697346974469754697646977469784697946980469814698246983469844698546986469874698846989469904699146992469934699446995469964699746998469994700047001470024700347004470054700647007470084700947010470114701247013470144701547016470174701847019470204702147022470234702447025470264702747028470294703047031470324703347034470354703647037470384703947040470414704247043470444704547046470474704847049470504705147052470534705447055470564705747058470594706047061470624706347064470654706647067470684706947070470714707247073470744707547076470774707847079470804708147082470834708447085470864708747088470894709047091470924709347094470954709647097470984709947100471014710247103471044710547106471074710847109471104711147112471134711447115471164711747118471194712047121471224712347124471254712647127471284712947130471314713247133471344713547136471374713847139471404714147142471434714447145471464714747148471494715047151471524715347154471554715647157471584715947160471614716247163471644716547166471674716847169471704717147172471734717447175471764717747178471794718047181471824718347184471854718647187471884718947190471914719247193471944719547196471974719847199472004720147202472034720447205472064720747208472094721047211472124721347214472154721647217472184721947220472214722247223472244722547226472274722847229472304723147232472334723447235472364723747238472394724047241472424724347244472454724647247472484724947250472514725247253472544725547256472574725847259472604726147262472634726447265472664726747268472694727047271472724727347274472754727647277472784727947280472814728247283472844728547286472874728847289472904729147292472934729447295472964729747298472994730047301473024730347304473054730647307473084730947310473114731247313473144731547316473174731847319473204732147322473234732447325473264732747328473294733047331473324733347334473354733647337473384733947340473414734247343473444734547346473474734847349473504735147352473534735447355473564735747358473594736047361473624736347364473654736647367473684736947370473714737247373473744737547376473774737847379473804738147382473834738447385473864738747388473894739047391473924739347394473954739647397473984739947400474014740247403474044740547406474074740847409474104741147412474134741447415474164741747418474194742047421474224742347424474254742647427474284742947430474314743247433474344743547436474374743847439474404744147442474434744447445474464744747448474494745047451474524745347454474554745647457474584745947460474614746247463474644746547466474674746847469474704747147472474734747447475474764747747478474794748047481474824748347484474854748647487474884748947490474914749247493474944749547496474974749847499475004750147502475034750447505475064750747508475094751047511475124751347514475154751647517475184751947520475214752247523475244752547526475274752847529475304753147532475334753447535475364753747538475394754047541475424754347544475454754647547475484754947550475514755247553475544755547556475574755847559475604756147562475634756447565475664756747568475694757047571475724757347574475754757647577475784757947580475814758247583475844758547586475874758847589475904759147592475934759447595475964759747598475994760047601476024760347604476054760647607476084760947610476114761247613476144761547616476174761847619476204762147622476234762447625476264762747628476294763047631476324763347634476354763647637476384763947640476414764247643476444764547646476474764847649476504765147652476534765447655476564765747658476594766047661476624766347664476654766647667476684766947670476714767247673476744767547676476774767847679476804768147682476834768447685476864768747688476894769047691476924769347694476954769647697476984769947700477014770247703477044770547706477074770847709477104771147712477134771447715477164771747718477194772047721477224772347724477254772647727477284772947730477314773247733477344773547736477374773847739477404774147742477434774447745477464774747748477494775047751477524775347754477554775647757477584775947760477614776247763477644776547766477674776847769477704777147772477734777447775477764777747778477794778047781477824778347784477854778647787477884778947790477914779247793477944779547796477974779847799478004780147802478034780447805478064780747808478094781047811478124781347814478154781647817478184781947820478214782247823478244782547826478274782847829478304783147832478334783447835478364783747838478394784047841478424784347844478454784647847478484784947850478514785247853478544785547856478574785847859478604786147862478634786447865478664786747868478694787047871478724787347874478754787647877478784787947880478814788247883478844788547886478874788847889478904789147892478934789447895478964789747898478994790047901479024790347904479054790647907479084790947910479114791247913479144791547916479174791847919479204792147922479234792447925479264792747928479294793047931479324793347934479354793647937479384793947940479414794247943479444794547946479474794847949479504795147952479534795447955479564795747958479594796047961479624796347964479654796647967479684796947970479714797247973479744797547976479774797847979479804798147982479834798447985479864798747988479894799047991479924799347994479954799647997479984799948000480014800248003480044800548006480074800848009480104801148012480134801448015480164801748018480194802048021480224802348024480254802648027480284802948030480314803248033480344803548036480374803848039480404804148042480434804448045480464804748048480494805048051480524805348054480554805648057480584805948060480614806248063480644806548066480674806848069480704807148072480734807448075480764807748078480794808048081480824808348084480854808648087480884808948090480914809248093480944809548096480974809848099481004810148102481034810448105481064810748108481094811048111481124811348114481154811648117481184811948120481214812248123481244812548126481274812848129481304813148132481334813448135481364813748138481394814048141481424814348144481454814648147481484814948150481514815248153481544815548156481574815848159481604816148162481634816448165481664816748168481694817048171481724817348174481754817648177481784817948180481814818248183481844818548186481874818848189481904819148192481934819448195481964819748198481994820048201482024820348204482054820648207482084820948210482114821248213482144821548216482174821848219482204822148222482234822448225482264822748228482294823048231482324823348234482354823648237482384823948240482414824248243482444824548246482474824848249482504825148252482534825448255482564825748258482594826048261482624826348264482654826648267482684826948270482714827248273482744827548276482774827848279482804828148282482834828448285482864828748288482894829048291482924829348294482954829648297482984829948300483014830248303483044830548306483074830848309483104831148312483134831448315483164831748318483194832048321483224832348324483254832648327483284832948330483314833248333483344833548336483374833848339483404834148342483434834448345483464834748348483494835048351483524835348354483554835648357483584835948360483614836248363483644836548366483674836848369483704837148372483734837448375483764837748378483794838048381483824838348384483854838648387483884838948390483914839248393483944839548396483974839848399484004840148402484034840448405484064840748408484094841048411484124841348414484154841648417484184841948420484214842248423484244842548426484274842848429484304843148432484334843448435484364843748438484394844048441484424844348444484454844648447484484844948450484514845248453484544845548456484574845848459484604846148462484634846448465484664846748468484694847048471484724847348474484754847648477484784847948480484814848248483484844848548486484874848848489484904849148492484934849448495484964849748498484994850048501485024850348504485054850648507485084850948510485114851248513485144851548516485174851848519485204852148522485234852448525485264852748528485294853048531485324853348534485354853648537485384853948540485414854248543485444854548546485474854848549485504855148552485534855448555485564855748558485594856048561485624856348564485654856648567485684856948570485714857248573485744857548576485774857848579485804858148582485834858448585485864858748588485894859048591485924859348594485954859648597485984859948600486014860248603486044860548606486074860848609486104861148612486134861448615486164861748618486194862048621486224862348624486254862648627486284862948630486314863248633486344863548636486374863848639486404864148642486434864448645486464864748648486494865048651486524865348654486554865648657486584865948660486614866248663486644866548666486674866848669486704867148672486734867448675486764867748678486794868048681486824868348684486854868648687486884868948690486914869248693486944869548696486974869848699487004870148702487034870448705487064870748708487094871048711487124871348714487154871648717487184871948720487214872248723487244872548726487274872848729487304873148732487334873448735487364873748738487394874048741487424874348744487454874648747487484874948750487514875248753487544875548756487574875848759487604876148762487634876448765487664876748768487694877048771487724877348774487754877648777487784877948780487814878248783487844878548786487874878848789487904879148792487934879448795487964879748798487994880048801488024880348804488054880648807488084880948810488114881248813488144881548816488174881848819488204882148822488234882448825488264882748828488294883048831488324883348834488354883648837488384883948840488414884248843488444884548846488474884848849488504885148852488534885448855488564885748858488594886048861488624886348864488654886648867488684886948870488714887248873488744887548876488774887848879488804888148882488834888448885488864888748888488894889048891488924889348894488954889648897488984889948900489014890248903489044890548906489074890848909489104891148912489134891448915489164891748918489194892048921489224892348924489254892648927489284892948930489314893248933489344893548936489374893848939489404894148942489434894448945489464894748948489494895048951489524895348954489554895648957489584895948960489614896248963489644896548966489674896848969489704897148972489734897448975489764897748978489794898048981489824898348984489854898648987489884898948990489914899248993489944899548996489974899848999490004900149002490034900449005490064900749008490094901049011490124901349014490154901649017490184901949020490214902249023490244902549026490274902849029490304903149032490334903449035490364903749038490394904049041490424904349044490454904649047490484904949050490514905249053490544905549056490574905849059490604906149062490634906449065490664906749068490694907049071490724907349074490754907649077490784907949080490814908249083490844908549086490874908849089490904909149092490934909449095490964909749098490994910049101491024910349104491054910649107491084910949110491114911249113491144911549116491174911849119491204912149122491234912449125491264912749128491294913049131491324913349134491354913649137491384913949140491414914249143491444914549146491474914849149491504915149152491534915449155491564915749158491594916049161491624916349164491654916649167491684916949170491714917249173491744917549176491774917849179491804918149182491834918449185491864918749188491894919049191491924919349194491954919649197491984919949200492014920249203492044920549206492074920849209492104921149212492134921449215492164921749218492194922049221492224922349224492254922649227492284922949230492314923249233492344923549236492374923849239492404924149242492434924449245492464924749248492494925049251492524925349254492554925649257492584925949260492614926249263492644926549266492674926849269492704927149272492734927449275492764927749278492794928049281492824928349284492854928649287492884928949290492914929249293492944929549296492974929849299493004930149302493034930449305493064930749308493094931049311493124931349314493154931649317493184931949320493214932249323493244932549326493274932849329493304933149332493334933449335493364933749338493394934049341493424934349344493454934649347493484934949350493514935249353493544935549356493574935849359493604936149362493634936449365493664936749368493694937049371493724937349374493754937649377493784937949380493814938249383493844938549386493874938849389493904939149392493934939449395493964939749398493994940049401494024940349404494054940649407494084940949410494114941249413494144941549416494174941849419494204942149422494234942449425494264942749428494294943049431494324943349434494354943649437494384943949440494414944249443494444944549446494474944849449494504945149452494534945449455494564945749458494594946049461494624946349464494654946649467494684946949470494714947249473494744947549476494774947849479494804948149482494834948449485494864948749488494894949049491494924949349494494954949649497494984949949500495014950249503495044950549506495074950849509495104951149512495134951449515495164951749518495194952049521495224952349524495254952649527495284952949530495314953249533495344953549536495374953849539495404954149542495434954449545495464954749548495494955049551495524955349554495554955649557495584955949560495614956249563495644956549566495674956849569495704957149572495734957449575495764957749578495794958049581495824958349584495854958649587495884958949590495914959249593495944959549596495974959849599496004960149602496034960449605496064960749608496094961049611496124961349614496154961649617496184961949620496214962249623496244962549626496274962849629496304963149632496334963449635496364963749638496394964049641496424964349644496454964649647496484964949650496514965249653496544965549656496574965849659496604966149662496634966449665496664966749668496694967049671496724967349674496754967649677496784967949680496814968249683496844968549686496874968849689496904969149692496934969449695496964969749698496994970049701497024970349704497054970649707497084970949710497114971249713497144971549716497174971849719497204972149722497234972449725497264972749728497294973049731497324973349734497354973649737497384973949740497414974249743497444974549746497474974849749497504975149752497534975449755497564975749758497594976049761497624976349764497654976649767497684976949770497714977249773497744977549776497774977849779497804978149782497834978449785497864978749788497894979049791497924979349794497954979649797497984979949800498014980249803498044980549806498074980849809498104981149812498134981449815498164981749818498194982049821498224982349824498254982649827498284982949830498314983249833498344983549836498374983849839498404984149842498434984449845498464984749848498494985049851498524985349854498554985649857498584985949860498614986249863498644986549866498674986849869498704987149872498734987449875498764987749878498794988049881498824988349884498854988649887498884988949890498914989249893498944989549896498974989849899499004990149902499034990449905499064990749908499094991049911499124991349914499154991649917499184991949920499214992249923499244992549926499274992849929499304993149932499334993449935499364993749938499394994049941499424994349944499454994649947499484994949950499514995249953499544995549956499574995849959499604996149962499634996449965499664996749968499694997049971499724997349974499754997649977499784997949980499814998249983499844998549986499874998849989499904999149992499934999449995499964999749998499995000050001500025000350004500055000650007500085000950010500115001250013500145001550016500175001850019500205002150022500235002450025500265002750028500295003050031500325003350034500355003650037500385003950040500415004250043500445004550046500475004850049500505005150052500535005450055500565005750058500595006050061500625006350064500655006650067500685006950070500715007250073500745007550076500775007850079500805008150082500835008450085500865008750088500895009050091500925009350094500955009650097500985009950100501015010250103501045010550106501075010850109501105011150112501135011450115501165011750118501195012050121501225012350124501255012650127501285012950130501315013250133501345013550136501375013850139501405014150142501435014450145501465014750148501495015050151501525015350154501555015650157501585015950160501615016250163501645016550166501675016850169501705017150172501735017450175501765017750178501795018050181501825018350184501855018650187501885018950190501915019250193501945019550196501975019850199502005020150202502035020450205502065020750208502095021050211502125021350214502155021650217502185021950220502215022250223502245022550226502275022850229502305023150232502335023450235502365023750238502395024050241502425024350244502455024650247502485024950250502515025250253502545025550256502575025850259502605026150262502635026450265502665026750268502695027050271502725027350274502755027650277502785027950280502815028250283502845028550286502875028850289502905029150292502935029450295502965029750298502995030050301503025030350304503055030650307503085030950310503115031250313503145031550316503175031850319503205032150322503235032450325503265032750328503295033050331503325033350334503355033650337503385033950340503415034250343503445034550346503475034850349503505035150352503535035450355503565035750358503595036050361503625036350364503655036650367503685036950370503715037250373503745037550376503775037850379503805038150382503835038450385503865038750388503895039050391503925039350394503955039650397503985039950400504015040250403504045040550406504075040850409504105041150412504135041450415504165041750418504195042050421504225042350424504255042650427504285042950430504315043250433504345043550436504375043850439504405044150442504435044450445504465044750448504495045050451504525045350454504555045650457504585045950460504615046250463504645046550466504675046850469504705047150472504735047450475504765047750478504795048050481504825048350484504855048650487504885048950490504915049250493504945049550496504975049850499505005050150502505035050450505505065050750508505095051050511505125051350514505155051650517505185051950520505215052250523505245052550526505275052850529505305053150532505335053450535505365053750538505395054050541505425054350544505455054650547505485054950550505515055250553505545055550556505575055850559505605056150562505635056450565505665056750568505695057050571505725057350574505755057650577505785057950580505815058250583505845058550586505875058850589505905059150592505935059450595505965059750598505995060050601506025060350604506055060650607506085060950610506115061250613506145061550616506175061850619506205062150622506235062450625506265062750628506295063050631506325063350634506355063650637506385063950640506415064250643506445064550646506475064850649506505065150652506535065450655506565065750658506595066050661506625066350664506655066650667506685066950670506715067250673506745067550676506775067850679506805068150682506835068450685506865068750688506895069050691506925069350694506955069650697506985069950700507015070250703507045070550706507075070850709507105071150712507135071450715507165071750718507195072050721507225072350724507255072650727507285072950730507315073250733507345073550736507375073850739507405074150742507435074450745507465074750748507495075050751507525075350754507555075650757507585075950760507615076250763507645076550766507675076850769507705077150772507735077450775507765077750778507795078050781507825078350784507855078650787507885078950790507915079250793507945079550796507975079850799508005080150802508035080450805508065080750808508095081050811508125081350814508155081650817508185081950820508215082250823508245082550826508275082850829508305083150832508335083450835508365083750838508395084050841508425084350844508455084650847508485084950850508515085250853508545085550856508575085850859508605086150862508635086450865508665086750868508695087050871508725087350874508755087650877508785087950880508815088250883508845088550886508875088850889508905089150892508935089450895508965089750898508995090050901509025090350904509055090650907509085090950910509115091250913509145091550916509175091850919509205092150922509235092450925509265092750928509295093050931509325093350934509355093650937509385093950940509415094250943509445094550946509475094850949509505095150952509535095450955509565095750958509595096050961509625096350964509655096650967509685096950970509715097250973509745097550976509775097850979509805098150982509835098450985509865098750988509895099050991509925099350994509955099650997509985099951000510015100251003510045100551006510075100851009510105101151012510135101451015510165101751018510195102051021510225102351024510255102651027510285102951030510315103251033510345103551036510375103851039510405104151042510435104451045510465104751048510495105051051510525105351054510555105651057510585105951060510615106251063510645106551066510675106851069510705107151072510735107451075510765107751078510795108051081510825108351084510855108651087510885108951090510915109251093510945109551096510975109851099511005110151102511035110451105511065110751108511095111051111511125111351114511155111651117511185111951120511215112251123511245112551126511275112851129511305113151132511335113451135511365113751138511395114051141511425114351144511455114651147511485114951150511515115251153511545115551156511575115851159511605116151162511635116451165511665116751168511695117051171511725117351174511755117651177511785117951180511815118251183511845118551186511875118851189511905119151192511935119451195511965119751198511995120051201512025120351204512055120651207512085120951210512115121251213512145121551216512175121851219512205122151222512235122451225512265122751228512295123051231512325123351234512355123651237512385123951240512415124251243512445124551246512475124851249512505125151252512535125451255512565125751258512595126051261512625126351264512655126651267512685126951270512715127251273512745127551276512775127851279512805128151282512835128451285512865128751288512895129051291512925129351294512955129651297512985129951300513015130251303513045130551306513075130851309513105131151312513135131451315513165131751318513195132051321513225132351324513255132651327513285132951330513315133251333513345133551336513375133851339513405134151342513435134451345513465134751348513495135051351513525135351354513555135651357513585135951360513615136251363513645136551366513675136851369513705137151372513735137451375513765137751378513795138051381513825138351384513855138651387513885138951390513915139251393513945139551396513975139851399514005140151402514035140451405514065140751408514095141051411514125141351414514155141651417514185141951420514215142251423514245142551426514275142851429514305143151432514335143451435514365143751438514395144051441514425144351444514455144651447514485144951450514515145251453514545145551456514575145851459514605146151462514635146451465514665146751468514695147051471514725147351474514755147651477514785147951480514815148251483514845148551486514875148851489514905149151492514935149451495514965149751498514995150051501515025150351504515055150651507515085150951510515115151251513515145151551516515175151851519515205152151522515235152451525515265152751528515295153051531515325153351534515355153651537515385153951540515415154251543515445154551546515475154851549515505155151552515535155451555515565155751558515595156051561515625156351564515655156651567515685156951570515715157251573515745157551576515775157851579515805158151582515835158451585515865158751588515895159051591515925159351594515955159651597515985159951600516015160251603516045160551606516075160851609516105161151612516135161451615516165161751618516195162051621516225162351624516255162651627516285162951630516315163251633516345163551636516375163851639516405164151642516435164451645516465164751648516495165051651516525165351654516555165651657516585165951660516615166251663516645166551666516675166851669516705167151672516735167451675516765167751678516795168051681516825168351684516855168651687516885168951690516915169251693516945169551696516975169851699517005170151702517035170451705517065170751708517095171051711517125171351714517155171651717517185171951720517215172251723517245172551726517275172851729517305173151732517335173451735517365173751738517395174051741517425174351744517455174651747517485174951750517515175251753517545175551756517575175851759517605176151762517635176451765517665176751768517695177051771517725177351774517755177651777517785177951780517815178251783517845178551786517875178851789517905179151792517935179451795517965179751798517995180051801518025180351804518055180651807518085180951810518115181251813518145181551816518175181851819518205182151822518235182451825518265182751828518295183051831518325183351834518355183651837518385183951840518415184251843518445184551846518475184851849518505185151852518535185451855518565185751858518595186051861518625186351864518655186651867518685186951870518715187251873518745187551876518775187851879518805188151882518835188451885518865188751888518895189051891518925189351894518955189651897518985189951900519015190251903519045190551906519075190851909519105191151912519135191451915519165191751918519195192051921519225192351924519255192651927519285192951930519315193251933519345193551936519375193851939519405194151942519435194451945519465194751948519495195051951519525195351954519555195651957519585195951960519615196251963519645196551966519675196851969519705197151972519735197451975519765197751978519795198051981519825198351984519855198651987519885198951990519915199251993519945199551996519975199851999520005200152002520035200452005520065200752008520095201052011520125201352014520155201652017520185201952020520215202252023520245202552026520275202852029520305203152032520335203452035520365203752038520395204052041520425204352044520455204652047520485204952050520515205252053520545205552056520575205852059520605206152062520635206452065520665206752068520695207052071520725207352074520755207652077520785207952080520815208252083520845208552086520875208852089520905209152092520935209452095520965209752098520995210052101521025210352104521055210652107521085210952110521115211252113521145211552116521175211852119521205212152122521235212452125521265212752128521295213052131521325213352134521355213652137521385213952140521415214252143521445214552146521475214852149521505215152152521535215452155521565215752158521595216052161521625216352164521655216652167521685216952170521715217252173521745217552176521775217852179521805218152182521835218452185521865218752188521895219052191521925219352194521955219652197521985219952200522015220252203522045220552206522075220852209522105221152212522135221452215522165221752218522195222052221522225222352224522255222652227522285222952230522315223252233522345223552236522375223852239522405224152242522435224452245522465224752248522495225052251522525225352254522555225652257522585225952260522615226252263522645226552266522675226852269522705227152272522735227452275522765227752278522795228052281522825228352284522855228652287522885228952290522915229252293522945229552296522975229852299523005230152302523035230452305523065230752308523095231052311523125231352314523155231652317523185231952320523215232252323523245232552326523275232852329523305233152332523335233452335523365233752338523395234052341523425234352344523455234652347523485234952350523515235252353523545235552356523575235852359523605236152362523635236452365523665236752368523695237052371523725237352374523755237652377523785237952380523815238252383523845238552386523875238852389523905239152392523935239452395523965239752398523995240052401524025240352404524055240652407524085240952410524115241252413524145241552416524175241852419524205242152422524235242452425524265242752428524295243052431524325243352434524355243652437524385243952440524415244252443524445244552446524475244852449524505245152452524535245452455524565245752458524595246052461524625246352464524655246652467524685246952470524715247252473524745247552476524775247852479524805248152482524835248452485524865248752488524895249052491524925249352494524955249652497524985249952500525015250252503525045250552506525075250852509525105251152512525135251452515525165251752518525195252052521525225252352524525255252652527525285252952530525315253252533525345253552536525375253852539525405254152542525435254452545525465254752548525495255052551525525255352554525555255652557525585255952560525615256252563525645256552566525675256852569525705257152572525735257452575525765257752578525795258052581525825258352584525855258652587525885258952590525915259252593525945259552596525975259852599526005260152602526035260452605526065260752608526095261052611526125261352614526155261652617526185261952620526215262252623526245262552626526275262852629526305263152632526335263452635526365263752638526395264052641526425264352644526455264652647526485264952650526515265252653526545265552656526575265852659526605266152662526635266452665526665266752668526695267052671526725267352674526755267652677526785267952680526815268252683526845268552686526875268852689526905269152692526935269452695526965269752698526995270052701527025270352704527055270652707527085270952710527115271252713527145271552716527175271852719527205272152722527235272452725527265272752728527295273052731527325273352734527355273652737527385273952740527415274252743527445274552746527475274852749527505275152752527535275452755527565275752758527595276052761527625276352764527655276652767527685276952770527715277252773527745277552776527775277852779527805278152782527835278452785527865278752788527895279052791527925279352794527955279652797527985279952800528015280252803528045280552806528075280852809528105281152812528135281452815528165281752818528195282052821528225282352824528255282652827528285282952830528315283252833528345283552836528375283852839528405284152842528435284452845528465284752848528495285052851528525285352854528555285652857528585285952860528615286252863528645286552866528675286852869528705287152872528735287452875528765287752878528795288052881528825288352884528855288652887528885288952890528915289252893528945289552896528975289852899529005290152902529035290452905529065290752908529095291052911529125291352914529155291652917529185291952920529215292252923529245292552926529275292852929529305293152932529335293452935529365293752938529395294052941529425294352944529455294652947529485294952950529515295252953529545295552956529575295852959529605296152962529635296452965529665296752968529695297052971529725297352974529755297652977529785297952980529815298252983529845298552986529875298852989529905299152992529935299452995529965299752998529995300053001530025300353004530055300653007530085300953010530115301253013530145301553016530175301853019530205302153022530235302453025530265302753028530295303053031530325303353034530355303653037530385303953040530415304253043530445304553046530475304853049530505305153052530535305453055530565305753058530595306053061530625306353064530655306653067530685306953070530715307253073530745307553076530775307853079530805308153082530835308453085530865308753088530895309053091530925309353094530955309653097530985309953100531015310253103531045310553106531075310853109531105311153112531135311453115531165311753118531195312053121531225312353124531255312653127531285312953130531315313253133531345313553136531375313853139531405314153142531435314453145531465314753148531495315053151531525315353154531555315653157531585315953160531615316253163531645316553166531675316853169531705317153172531735317453175531765317753178531795318053181531825318353184531855318653187531885318953190531915319253193531945319553196531975319853199532005320153202532035320453205532065320753208532095321053211532125321353214532155321653217532185321953220532215322253223532245322553226532275322853229532305323153232532335323453235532365323753238532395324053241532425324353244532455324653247532485324953250532515325253253532545325553256532575325853259532605326153262532635326453265532665326753268532695327053271532725327353274532755327653277532785327953280532815328253283532845328553286532875328853289532905329153292532935329453295532965329753298532995330053301533025330353304533055330653307533085330953310533115331253313533145331553316533175331853319533205332153322533235332453325533265332753328533295333053331533325333353334533355333653337533385333953340533415334253343533445334553346533475334853349533505335153352533535335453355533565335753358533595336053361533625336353364533655336653367533685336953370533715337253373533745337553376533775337853379533805338153382533835338453385533865338753388533895339053391533925339353394533955339653397533985339953400534015340253403534045340553406534075340853409534105341153412534135341453415534165341753418534195342053421534225342353424534255342653427534285342953430534315343253433534345343553436534375343853439534405344153442534435344453445534465344753448534495345053451534525345353454534555345653457534585345953460534615346253463534645346553466534675346853469534705347153472534735347453475534765347753478534795348053481534825348353484534855348653487534885348953490534915349253493534945349553496534975349853499535005350153502535035350453505535065350753508535095351053511535125351353514535155351653517535185351953520535215352253523535245352553526535275352853529535305353153532535335353453535535365353753538535395354053541535425354353544535455354653547535485354953550535515355253553535545355553556535575355853559535605356153562535635356453565535665356753568535695357053571535725357353574535755357653577535785357953580535815358253583535845358553586535875358853589535905359153592535935359453595535965359753598535995360053601536025360353604536055360653607536085360953610536115361253613536145361553616536175361853619536205362153622536235362453625536265362753628536295363053631536325363353634536355363653637536385363953640536415364253643536445364553646536475364853649536505365153652536535365453655536565365753658536595366053661536625366353664536655366653667536685366953670536715367253673536745367553676536775367853679536805368153682536835368453685536865368753688536895369053691536925369353694536955369653697536985369953700537015370253703537045370553706537075370853709537105371153712537135371453715537165371753718537195372053721537225372353724537255372653727537285372953730537315373253733537345373553736537375373853739537405374153742537435374453745537465374753748537495375053751537525375353754537555375653757537585375953760537615376253763537645376553766537675376853769537705377153772537735377453775537765377753778537795378053781537825378353784537855378653787537885378953790537915379253793537945379553796537975379853799538005380153802538035380453805538065380753808538095381053811538125381353814538155381653817538185381953820538215382253823538245382553826538275382853829538305383153832538335383453835538365383753838538395384053841538425384353844538455384653847538485384953850538515385253853538545385553856538575385853859538605386153862538635386453865538665386753868538695387053871538725387353874538755387653877538785387953880538815388253883538845388553886538875388853889538905389153892538935389453895538965389753898538995390053901539025390353904539055390653907539085390953910539115391253913539145391553916539175391853919539205392153922539235392453925539265392753928539295393053931539325393353934539355393653937539385393953940539415394253943539445394553946539475394853949539505395153952539535395453955539565395753958539595396053961539625396353964539655396653967539685396953970539715397253973539745397553976539775397853979539805398153982539835398453985539865398753988539895399053991539925399353994539955399653997539985399954000540015400254003540045400554006540075400854009540105401154012540135401454015540165401754018540195402054021540225402354024540255402654027540285402954030540315403254033540345403554036540375403854039540405404154042540435404454045540465404754048540495405054051540525405354054540555405654057540585405954060540615406254063540645406554066540675406854069540705407154072540735407454075540765407754078540795408054081540825408354084540855408654087540885408954090540915409254093540945409554096540975409854099541005410154102541035410454105541065410754108541095411054111541125411354114541155411654117541185411954120541215412254123541245412554126541275412854129541305413154132541335413454135541365413754138541395414054141541425414354144541455414654147541485414954150541515415254153541545415554156541575415854159541605416154162541635416454165541665416754168541695417054171541725417354174541755417654177541785417954180541815418254183541845418554186541875418854189541905419154192541935419454195541965419754198541995420054201542025420354204542055420654207542085420954210542115421254213542145421554216542175421854219542205422154222542235422454225542265422754228542295423054231542325423354234542355423654237542385423954240542415424254243542445424554246542475424854249542505425154252542535425454255542565425754258542595426054261542625426354264542655426654267542685426954270542715427254273542745427554276542775427854279542805428154282542835428454285542865428754288542895429054291542925429354294542955429654297542985429954300543015430254303543045430554306543075430854309543105431154312543135431454315543165431754318543195432054321543225432354324543255432654327543285432954330543315433254333543345433554336543375433854339543405434154342543435434454345543465434754348543495435054351543525435354354543555435654357543585435954360543615436254363543645436554366543675436854369543705437154372543735437454375543765437754378543795438054381543825438354384543855438654387543885438954390543915439254393543945439554396543975439854399544005440154402544035440454405544065440754408544095441054411544125441354414544155441654417544185441954420544215442254423544245442554426544275442854429544305443154432544335443454435544365443754438544395444054441544425444354444544455444654447544485444954450544515445254453544545445554456544575445854459544605446154462544635446454465544665446754468544695447054471544725447354474544755447654477544785447954480544815448254483544845448554486544875448854489544905449154492544935449454495544965449754498544995450054501545025450354504545055450654507545085450954510545115451254513545145451554516545175451854519545205452154522545235452454525545265452754528545295453054531545325453354534545355453654537545385453954540545415454254543545445454554546545475454854549545505455154552545535455454555545565455754558545595456054561545625456354564545655456654567545685456954570545715457254573545745457554576545775457854579545805458154582545835458454585545865458754588545895459054591545925459354594545955459654597545985459954600546015460254603546045460554606546075460854609546105461154612546135461454615546165461754618546195462054621546225462354624546255462654627546285462954630546315463254633546345463554636546375463854639546405464154642546435464454645546465464754648546495465054651546525465354654546555465654657546585465954660546615466254663546645466554666546675466854669546705467154672546735467454675546765467754678546795468054681546825468354684546855468654687546885468954690546915469254693546945469554696546975469854699547005470154702547035470454705547065470754708547095471054711547125471354714547155471654717547185471954720547215472254723547245472554726547275472854729547305473154732547335473454735547365473754738547395474054741547425474354744547455474654747547485474954750547515475254753547545475554756547575475854759547605476154762547635476454765547665476754768547695477054771547725477354774547755477654777547785477954780547815478254783547845478554786547875478854789547905479154792547935479454795547965479754798547995480054801548025480354804548055480654807548085480954810548115481254813548145481554816548175481854819548205482154822548235482454825548265482754828548295483054831548325483354834548355483654837548385483954840548415484254843548445484554846548475484854849548505485154852548535485454855548565485754858548595486054861548625486354864548655486654867548685486954870548715487254873548745487554876548775487854879548805488154882548835488454885548865488754888548895489054891548925489354894548955489654897548985489954900549015490254903549045490554906549075490854909549105491154912549135491454915549165491754918549195492054921549225492354924549255492654927549285492954930549315493254933549345493554936549375493854939549405494154942549435494454945549465494754948549495495054951549525495354954549555495654957549585495954960549615496254963549645496554966549675496854969549705497154972549735497454975549765497754978549795498054981549825498354984549855498654987549885498954990549915499254993549945499554996549975499854999550005500155002550035500455005550065500755008550095501055011550125501355014550155501655017550185501955020550215502255023550245502555026550275502855029550305503155032550335503455035550365503755038550395504055041550425504355044550455504655047550485504955050550515505255053550545505555056550575505855059550605506155062550635506455065550665506755068550695507055071550725507355074550755507655077550785507955080550815508255083550845508555086550875508855089550905509155092550935509455095550965509755098550995510055101551025510355104551055510655107551085510955110551115511255113551145511555116551175511855119551205512155122551235512455125551265512755128551295513055131551325513355134551355513655137551385513955140551415514255143551445514555146551475514855149551505515155152551535515455155551565515755158551595516055161551625516355164551655516655167551685516955170551715517255173551745517555176551775517855179551805518155182551835518455185551865518755188551895519055191551925519355194551955519655197551985519955200552015520255203552045520555206552075520855209552105521155212552135521455215552165521755218552195522055221552225522355224552255522655227552285522955230552315523255233552345523555236552375523855239552405524155242552435524455245552465524755248552495525055251552525525355254552555525655257552585525955260552615526255263552645526555266552675526855269552705527155272552735527455275552765527755278552795528055281552825528355284552855528655287552885528955290552915529255293552945529555296552975529855299553005530155302553035530455305553065530755308553095531055311553125531355314553155531655317553185531955320553215532255323553245532555326553275532855329553305533155332553335533455335553365533755338553395534055341553425534355344553455534655347553485534955350553515535255353553545535555356553575535855359553605536155362553635536455365553665536755368553695537055371553725537355374553755537655377553785537955380553815538255383553845538555386553875538855389553905539155392553935539455395553965539755398553995540055401554025540355404554055540655407554085540955410554115541255413554145541555416554175541855419554205542155422554235542455425554265542755428554295543055431554325543355434554355543655437554385543955440554415544255443554445544555446554475544855449554505545155452554535545455455554565545755458554595546055461554625546355464554655546655467554685546955470554715547255473554745547555476554775547855479554805548155482554835548455485554865548755488554895549055491554925549355494554955549655497554985549955500555015550255503555045550555506555075550855509555105551155512555135551455515555165551755518555195552055521555225552355524555255552655527555285552955530555315553255533555345553555536555375553855539555405554155542555435554455545555465554755548555495555055551555525555355554555555555655557555585555955560555615556255563555645556555566555675556855569555705557155572555735557455575555765557755578555795558055581555825558355584555855558655587555885558955590555915559255593555945559555596555975559855599556005560155602556035560455605556065560755608556095561055611556125561355614556155561655617556185561955620556215562255623556245562555626556275562855629556305563155632556335563455635556365563755638556395564055641556425564355644556455564655647556485564955650556515565255653556545565555656556575565855659556605566155662556635566455665556665566755668556695567055671556725567355674556755567655677556785567955680556815568255683556845568555686556875568855689556905569155692556935569455695556965569755698556995570055701557025570355704557055570655707557085570955710557115571255713557145571555716557175571855719557205572155722557235572455725557265572755728557295573055731557325573355734557355573655737557385573955740557415574255743557445574555746557475574855749557505575155752557535575455755557565575755758557595576055761557625576355764557655576655767557685576955770557715577255773557745577555776557775577855779557805578155782557835578455785557865578755788557895579055791557925579355794557955579655797557985579955800558015580255803558045580555806558075580855809558105581155812558135581455815558165581755818558195582055821558225582355824558255582655827558285582955830558315583255833558345583555836558375583855839558405584155842558435584455845558465584755848558495585055851558525585355854558555585655857558585585955860558615586255863558645586555866558675586855869558705587155872558735587455875558765587755878558795588055881558825588355884558855588655887558885588955890558915589255893558945589555896558975589855899559005590155902559035590455905559065590755908559095591055911559125591355914559155591655917559185591955920559215592255923559245592555926559275592855929559305593155932559335593455935559365593755938559395594055941559425594355944559455594655947559485594955950559515595255953559545595555956559575595855959559605596155962559635596455965559665596755968559695597055971559725597355974559755597655977559785597955980559815598255983559845598555986559875598855989559905599155992559935599455995559965599755998559995600056001560025600356004560055600656007560085600956010560115601256013560145601556016560175601856019560205602156022560235602456025560265602756028560295603056031560325603356034560355603656037560385603956040560415604256043560445604556046560475604856049560505605156052560535605456055560565605756058560595606056061560625606356064560655606656067560685606956070560715607256073560745607556076560775607856079560805608156082560835608456085560865608756088560895609056091560925609356094560955609656097560985609956100561015610256103561045610556106561075610856109561105611156112561135611456115561165611756118561195612056121561225612356124561255612656127561285612956130561315613256133561345613556136561375613856139561405614156142561435614456145561465614756148561495615056151561525615356154561555615656157561585615956160561615616256163561645616556166561675616856169561705617156172561735617456175561765617756178561795618056181561825618356184561855618656187561885618956190561915619256193561945619556196561975619856199562005620156202562035620456205562065620756208562095621056211562125621356214562155621656217562185621956220562215622256223562245622556226562275622856229562305623156232562335623456235562365623756238562395624056241562425624356244562455624656247562485624956250562515625256253562545625556256562575625856259562605626156262562635626456265562665626756268562695627056271562725627356274562755627656277562785627956280562815628256283562845628556286562875628856289562905629156292562935629456295562965629756298562995630056301563025630356304563055630656307563085630956310563115631256313563145631556316563175631856319563205632156322563235632456325563265632756328563295633056331563325633356334563355633656337563385633956340563415634256343563445634556346563475634856349563505635156352563535635456355563565635756358563595636056361563625636356364563655636656367563685636956370563715637256373563745637556376563775637856379563805638156382563835638456385563865638756388563895639056391563925639356394563955639656397563985639956400564015640256403564045640556406564075640856409564105641156412564135641456415564165641756418564195642056421564225642356424564255642656427564285642956430564315643256433564345643556436564375643856439564405644156442564435644456445564465644756448564495645056451564525645356454564555645656457564585645956460564615646256463564645646556466564675646856469564705647156472564735647456475564765647756478564795648056481564825648356484564855648656487564885648956490564915649256493564945649556496564975649856499565005650156502565035650456505565065650756508565095651056511565125651356514565155651656517565185651956520565215652256523565245652556526565275652856529565305653156532565335653456535565365653756538565395654056541565425654356544565455654656547565485654956550565515655256553565545655556556565575655856559565605656156562565635656456565565665656756568565695657056571565725657356574565755657656577565785657956580565815658256583565845658556586565875658856589565905659156592565935659456595565965659756598565995660056601566025660356604566055660656607566085660956610566115661256613566145661556616566175661856619566205662156622566235662456625566265662756628566295663056631566325663356634566355663656637566385663956640566415664256643566445664556646566475664856649566505665156652566535665456655566565665756658566595666056661566625666356664566655666656667566685666956670566715667256673566745667556676566775667856679566805668156682566835668456685566865668756688566895669056691566925669356694566955669656697566985669956700567015670256703567045670556706567075670856709567105671156712567135671456715567165671756718567195672056721567225672356724567255672656727567285672956730567315673256733567345673556736567375673856739567405674156742567435674456745567465674756748567495675056751567525675356754567555675656757567585675956760567615676256763567645676556766567675676856769567705677156772567735677456775567765677756778567795678056781567825678356784567855678656787567885678956790567915679256793567945679556796567975679856799568005680156802568035680456805568065680756808568095681056811568125681356814568155681656817568185681956820568215682256823568245682556826568275682856829568305683156832568335683456835568365683756838568395684056841568425684356844568455684656847568485684956850568515685256853568545685556856568575685856859568605686156862568635686456865568665686756868568695687056871568725687356874568755687656877568785687956880568815688256883568845688556886568875688856889568905689156892568935689456895568965689756898568995690056901569025690356904569055690656907569085690956910569115691256913569145691556916569175691856919569205692156922569235692456925569265692756928569295693056931569325693356934569355693656937569385693956940569415694256943569445694556946569475694856949569505695156952569535695456955569565695756958569595696056961569625696356964569655696656967569685696956970569715697256973569745697556976569775697856979569805698156982569835698456985569865698756988569895699056991569925699356994569955699656997569985699957000570015700257003570045700557006570075700857009570105701157012570135701457015570165701757018570195702057021570225702357024570255702657027570285702957030570315703257033570345703557036570375703857039570405704157042570435704457045570465704757048570495705057051570525705357054570555705657057570585705957060570615706257063570645706557066570675706857069570705707157072570735707457075570765707757078570795708057081570825708357084570855708657087570885708957090570915709257093570945709557096570975709857099571005710157102571035710457105571065710757108571095711057111571125711357114571155711657117571185711957120571215712257123571245712557126571275712857129571305713157132571335713457135571365713757138571395714057141571425714357144571455714657147571485714957150571515715257153571545715557156571575715857159571605716157162571635716457165571665716757168571695717057171571725717357174571755717657177571785717957180571815718257183571845718557186571875718857189571905719157192571935719457195571965719757198571995720057201572025720357204572055720657207572085720957210572115721257213572145721557216572175721857219572205722157222572235722457225572265722757228572295723057231572325723357234572355723657237572385723957240572415724257243572445724557246572475724857249572505725157252572535725457255572565725757258572595726057261572625726357264572655726657267572685726957270572715727257273572745727557276572775727857279572805728157282572835728457285572865728757288572895729057291572925729357294572955729657297572985729957300573015730257303573045730557306573075730857309573105731157312573135731457315573165731757318573195732057321573225732357324573255732657327573285732957330573315733257333573345733557336573375733857339573405734157342573435734457345573465734757348573495735057351573525735357354573555735657357573585735957360573615736257363573645736557366573675736857369573705737157372573735737457375573765737757378573795738057381573825738357384573855738657387573885738957390573915739257393573945739557396573975739857399574005740157402574035740457405574065740757408574095741057411574125741357414574155741657417574185741957420574215742257423574245742557426574275742857429574305743157432574335743457435574365743757438574395744057441574425744357444574455744657447574485744957450574515745257453574545745557456574575745857459574605746157462574635746457465574665746757468574695747057471574725747357474574755747657477574785747957480574815748257483574845748557486574875748857489574905749157492574935749457495574965749757498574995750057501575025750357504575055750657507575085750957510575115751257513575145751557516575175751857519575205752157522575235752457525575265752757528575295753057531575325753357534575355753657537575385753957540575415754257543575445754557546575475754857549575505755157552575535755457555575565755757558575595756057561575625756357564575655756657567575685756957570575715757257573575745757557576575775757857579575805758157582575835758457585575865758757588575895759057591575925759357594575955759657597575985759957600576015760257603576045760557606576075760857609576105761157612576135761457615576165761757618576195762057621576225762357624576255762657627576285762957630576315763257633576345763557636576375763857639576405764157642576435764457645576465764757648576495765057651576525765357654576555765657657576585765957660576615766257663576645766557666576675766857669576705767157672576735767457675576765767757678576795768057681576825768357684576855768657687576885768957690576915769257693576945769557696576975769857699577005770157702577035770457705577065770757708577095771057711577125771357714577155771657717577185771957720577215772257723577245772557726577275772857729577305773157732577335773457735577365773757738577395774057741577425774357744577455774657747577485774957750577515775257753577545775557756577575775857759577605776157762577635776457765577665776757768577695777057771577725777357774577755777657777577785777957780577815778257783577845778557786577875778857789577905779157792577935779457795577965779757798577995780057801578025780357804578055780657807578085780957810578115781257813578145781557816578175781857819578205782157822578235782457825578265782757828578295783057831578325783357834578355783657837578385783957840578415784257843578445784557846578475784857849578505785157852578535785457855578565785757858578595786057861578625786357864578655786657867578685786957870578715787257873578745787557876578775787857879578805788157882578835788457885578865788757888578895789057891578925789357894578955789657897578985789957900579015790257903579045790557906579075790857909579105791157912579135791457915579165791757918579195792057921579225792357924579255792657927579285792957930579315793257933579345793557936579375793857939579405794157942579435794457945579465794757948579495795057951579525795357954579555795657957579585795957960579615796257963579645796557966579675796857969579705797157972579735797457975579765797757978579795798057981579825798357984579855798657987579885798957990579915799257993579945799557996579975799857999580005800158002580035800458005580065800758008580095801058011580125801358014580155801658017580185801958020580215802258023580245802558026580275802858029580305803158032580335803458035580365803758038580395804058041580425804358044580455804658047580485804958050580515805258053580545805558056580575805858059580605806158062580635806458065580665806758068580695807058071580725807358074580755807658077580785807958080580815808258083580845808558086580875808858089580905809158092580935809458095580965809758098580995810058101581025810358104581055810658107581085810958110581115811258113581145811558116581175811858119581205812158122581235812458125581265812758128581295813058131581325813358134581355813658137581385813958140581415814258143581445814558146581475814858149581505815158152581535815458155581565815758158581595816058161581625816358164581655816658167581685816958170581715817258173581745817558176581775817858179581805818158182581835818458185581865818758188581895819058191581925819358194581955819658197581985819958200582015820258203582045820558206582075820858209582105821158212582135821458215582165821758218582195822058221582225822358224582255822658227582285822958230582315823258233582345823558236582375823858239582405824158242582435824458245582465824758248582495825058251582525825358254582555825658257582585825958260582615826258263582645826558266582675826858269582705827158272582735827458275582765827758278582795828058281582825828358284582855828658287582885828958290582915829258293582945829558296582975829858299583005830158302583035830458305583065830758308583095831058311583125831358314583155831658317583185831958320583215832258323583245832558326583275832858329583305833158332583335833458335583365833758338583395834058341583425834358344583455834658347583485834958350583515835258353583545835558356583575835858359583605836158362583635836458365583665836758368583695837058371583725837358374583755837658377583785837958380583815838258383583845838558386583875838858389583905839158392583935839458395583965839758398583995840058401584025840358404584055840658407584085840958410584115841258413584145841558416584175841858419584205842158422584235842458425584265842758428584295843058431584325843358434584355843658437584385843958440584415844258443584445844558446584475844858449584505845158452584535845458455584565845758458584595846058461584625846358464584655846658467584685846958470584715847258473584745847558476584775847858479584805848158482584835848458485584865848758488584895849058491584925849358494584955849658497584985849958500585015850258503585045850558506585075850858509585105851158512585135851458515585165851758518585195852058521585225852358524585255852658527585285852958530585315853258533585345853558536585375853858539585405854158542585435854458545585465854758548585495855058551585525855358554585555855658557585585855958560585615856258563585645856558566585675856858569585705857158572585735857458575585765857758578585795858058581585825858358584585855858658587585885858958590585915859258593585945859558596585975859858599586005860158602586035860458605586065860758608586095861058611586125861358614586155861658617586185861958620586215862258623586245862558626586275862858629586305863158632586335863458635586365863758638586395864058641586425864358644586455864658647586485864958650586515865258653586545865558656586575865858659586605866158662586635866458665586665866758668586695867058671586725867358674586755867658677586785867958680586815868258683586845868558686586875868858689586905869158692586935869458695586965869758698586995870058701587025870358704587055870658707587085870958710587115871258713587145871558716587175871858719587205872158722587235872458725587265872758728587295873058731587325873358734587355873658737587385873958740587415874258743587445874558746587475874858749587505875158752587535875458755587565875758758587595876058761587625876358764587655876658767587685876958770587715877258773587745877558776587775877858779587805878158782587835878458785587865878758788587895879058791587925879358794587955879658797587985879958800588015880258803588045880558806588075880858809588105881158812588135881458815588165881758818588195882058821588225882358824588255882658827588285882958830588315883258833588345883558836588375883858839588405884158842588435884458845588465884758848588495885058851588525885358854588555885658857588585885958860588615886258863588645886558866588675886858869588705887158872588735887458875588765887758878588795888058881588825888358884588855888658887588885888958890588915889258893588945889558896588975889858899589005890158902589035890458905589065890758908589095891058911589125891358914589155891658917589185891958920589215892258923589245892558926589275892858929589305893158932589335893458935589365893758938589395894058941589425894358944589455894658947589485894958950589515895258953589545895558956589575895858959589605896158962589635896458965589665896758968589695897058971589725897358974589755897658977589785897958980589815898258983589845898558986589875898858989589905899158992589935899458995589965899758998589995900059001590025900359004590055900659007590085900959010590115901259013590145901559016590175901859019590205902159022590235902459025590265902759028590295903059031590325903359034590355903659037590385903959040590415904259043590445904559046590475904859049590505905159052590535905459055590565905759058590595906059061590625906359064590655906659067590685906959070590715907259073590745907559076590775907859079590805908159082590835908459085590865908759088590895909059091590925909359094590955909659097590985909959100591015910259103591045910559106591075910859109591105911159112591135911459115591165911759118591195912059121591225912359124591255912659127591285912959130591315913259133591345913559136591375913859139591405914159142591435914459145591465914759148591495915059151591525915359154591555915659157591585915959160591615916259163591645916559166591675916859169591705917159172591735917459175591765917759178591795918059181591825918359184591855918659187591885918959190591915919259193591945919559196591975919859199592005920159202592035920459205592065920759208592095921059211592125921359214592155921659217592185921959220592215922259223592245922559226592275922859229592305923159232592335923459235592365923759238592395924059241592425924359244592455924659247592485924959250592515925259253592545925559256592575925859259592605926159262592635926459265592665926759268592695927059271592725927359274592755927659277592785927959280592815928259283592845928559286592875928859289592905929159292592935929459295592965929759298592995930059301593025930359304593055930659307593085930959310593115931259313593145931559316593175931859319593205932159322593235932459325593265932759328593295933059331593325933359334593355933659337593385933959340593415934259343593445934559346593475934859349593505935159352593535935459355593565935759358593595936059361593625936359364593655936659367593685936959370593715937259373593745937559376593775937859379593805938159382593835938459385593865938759388593895939059391593925939359394593955939659397593985939959400594015940259403594045940559406594075940859409594105941159412594135941459415594165941759418594195942059421594225942359424594255942659427594285942959430594315943259433594345943559436594375943859439594405944159442594435944459445594465944759448594495945059451594525945359454594555945659457594585945959460594615946259463594645946559466594675946859469594705947159472594735947459475594765947759478594795948059481594825948359484594855948659487594885948959490594915949259493594945949559496594975949859499595005950159502595035950459505595065950759508595095951059511595125951359514595155951659517595185951959520595215952259523595245952559526595275952859529595305953159532595335953459535595365953759538595395954059541595425954359544595455954659547595485954959550595515955259553595545955559556595575955859559595605956159562595635956459565595665956759568595695957059571595725957359574595755957659577595785957959580595815958259583595845958559586595875958859589595905959159592595935959459595595965959759598595995960059601596025960359604596055960659607596085960959610596115961259613596145961559616596175961859619596205962159622596235962459625596265962759628596295963059631596325963359634596355963659637596385963959640596415964259643596445964559646596475964859649596505965159652596535965459655596565965759658596595966059661596625966359664596655966659667596685966959670596715967259673596745967559676596775967859679596805968159682596835968459685596865968759688596895969059691596925969359694596955969659697596985969959700597015970259703597045970559706597075970859709597105971159712597135971459715597165971759718597195972059721597225972359724597255972659727597285972959730597315973259733597345973559736597375973859739597405974159742597435974459745597465974759748597495975059751597525975359754597555975659757597585975959760597615976259763597645976559766597675976859769597705977159772597735977459775597765977759778597795978059781597825978359784597855978659787597885978959790597915979259793597945979559796597975979859799598005980159802598035980459805598065980759808598095981059811598125981359814598155981659817598185981959820598215982259823598245982559826598275982859829598305983159832598335983459835598365983759838598395984059841598425984359844598455984659847598485984959850598515985259853598545985559856598575985859859598605986159862598635986459865598665986759868598695987059871598725987359874598755987659877598785987959880598815988259883598845988559886598875988859889598905989159892598935989459895598965989759898598995990059901599025990359904599055990659907599085990959910599115991259913599145991559916599175991859919599205992159922599235992459925599265992759928599295993059931599325993359934599355993659937599385993959940599415994259943599445994559946599475994859949599505995159952599535995459955599565995759958599595996059961599625996359964599655996659967599685996959970599715997259973599745997559976599775997859979599805998159982599835998459985599865998759988599895999059991599925999359994599955999659997599985999960000600016000260003600046000560006600076000860009600106001160012600136001460015600166001760018600196002060021600226002360024600256002660027600286002960030600316003260033600346003560036600376003860039600406004160042600436004460045600466004760048600496005060051600526005360054600556005660057600586005960060600616006260063600646006560066600676006860069600706007160072600736007460075600766007760078600796008060081600826008360084600856008660087600886008960090600916009260093600946009560096600976009860099601006010160102601036010460105601066010760108601096011060111601126011360114601156011660117601186011960120601216012260123601246012560126601276012860129601306013160132601336013460135601366013760138601396014060141601426014360144601456014660147601486014960150601516015260153601546015560156601576015860159601606016160162601636016460165601666016760168601696017060171601726017360174601756017660177601786017960180601816018260183601846018560186601876018860189601906019160192601936019460195601966019760198601996020060201602026020360204602056020660207602086020960210602116021260213602146021560216602176021860219602206022160222602236022460225602266022760228602296023060231602326023360234602356023660237602386023960240602416024260243602446024560246602476024860249602506025160252602536025460255602566025760258602596026060261602626026360264602656026660267602686026960270602716027260273602746027560276602776027860279602806028160282602836028460285602866028760288602896029060291602926029360294602956029660297602986029960300603016030260303603046030560306603076030860309603106031160312603136031460315603166031760318603196032060321603226032360324603256032660327603286032960330603316033260333603346033560336603376033860339603406034160342603436034460345603466034760348603496035060351603526035360354603556035660357603586035960360603616036260363603646036560366603676036860369603706037160372603736037460375603766037760378603796038060381603826038360384603856038660387603886038960390603916039260393603946039560396603976039860399604006040160402604036040460405604066040760408604096041060411604126041360414604156041660417604186041960420604216042260423604246042560426604276042860429604306043160432604336043460435604366043760438604396044060441604426044360444604456044660447604486044960450604516045260453604546045560456604576045860459604606046160462604636046460465604666046760468604696047060471604726047360474604756047660477604786047960480604816048260483604846048560486604876048860489604906049160492604936049460495604966049760498604996050060501605026050360504605056050660507605086050960510605116051260513605146051560516605176051860519605206052160522605236052460525605266052760528605296053060531605326053360534605356053660537605386053960540605416054260543605446054560546605476054860549605506055160552605536055460555605566055760558605596056060561605626056360564605656056660567605686056960570605716057260573605746057560576605776057860579605806058160582605836058460585605866058760588605896059060591605926059360594605956059660597605986059960600606016060260603606046060560606606076060860609606106061160612606136061460615606166061760618606196062060621606226062360624606256062660627606286062960630606316063260633606346063560636606376063860639606406064160642606436064460645606466064760648606496065060651606526065360654606556065660657606586065960660606616066260663606646066560666606676066860669606706067160672606736067460675606766067760678606796068060681606826068360684606856068660687606886068960690606916069260693606946069560696606976069860699607006070160702607036070460705607066070760708607096071060711607126071360714607156071660717607186071960720607216072260723607246072560726607276072860729607306073160732607336073460735607366073760738607396074060741607426074360744607456074660747607486074960750607516075260753607546075560756607576075860759607606076160762607636076460765607666076760768607696077060771607726077360774607756077660777607786077960780607816078260783607846078560786607876078860789607906079160792607936079460795607966079760798607996080060801608026080360804608056080660807608086080960810608116081260813608146081560816608176081860819608206082160822608236082460825608266082760828608296083060831608326083360834608356083660837608386083960840608416084260843608446084560846608476084860849608506085160852608536085460855608566085760858608596086060861608626086360864608656086660867608686086960870608716087260873608746087560876608776087860879608806088160882608836088460885608866088760888608896089060891608926089360894608956089660897608986089960900609016090260903609046090560906609076090860909609106091160912609136091460915609166091760918609196092060921609226092360924609256092660927609286092960930609316093260933609346093560936609376093860939609406094160942609436094460945609466094760948609496095060951609526095360954609556095660957609586095960960609616096260963609646096560966609676096860969609706097160972609736097460975609766097760978609796098060981609826098360984609856098660987609886098960990609916099260993609946099560996609976099860999610006100161002610036100461005610066100761008610096101061011610126101361014610156101661017610186101961020610216102261023610246102561026610276102861029610306103161032610336103461035610366103761038610396104061041610426104361044610456104661047610486104961050610516105261053610546105561056610576105861059610606106161062610636106461065610666106761068610696107061071610726107361074610756107661077610786107961080610816108261083610846108561086610876108861089610906109161092610936109461095610966109761098610996110061101611026110361104611056110661107611086110961110611116111261113611146111561116611176111861119611206112161122611236112461125611266112761128611296113061131611326113361134611356113661137611386113961140611416114261143611446114561146611476114861149611506115161152611536115461155611566115761158611596116061161611626116361164611656116661167611686116961170611716117261173611746117561176611776117861179611806118161182611836118461185611866118761188611896119061191611926119361194611956119661197611986119961200612016120261203612046120561206612076120861209612106121161212612136121461215612166121761218612196122061221612226122361224612256122661227612286122961230612316123261233612346123561236612376123861239612406124161242612436124461245612466124761248612496125061251612526125361254612556125661257612586125961260612616126261263612646126561266612676126861269612706127161272612736127461275612766127761278612796128061281612826128361284612856128661287612886128961290612916129261293612946129561296612976129861299613006130161302613036130461305613066130761308613096131061311613126131361314613156131661317613186131961320613216132261323613246132561326613276132861329613306133161332613336133461335613366133761338613396134061341613426134361344613456134661347613486134961350613516135261353613546135561356613576135861359613606136161362613636136461365613666136761368613696137061371613726137361374613756137661377613786137961380613816138261383613846138561386613876138861389613906139161392613936139461395613966139761398613996140061401614026140361404614056140661407614086140961410614116141261413614146141561416614176141861419614206142161422614236142461425614266142761428614296143061431614326143361434614356143661437614386143961440614416144261443614446144561446614476144861449614506145161452614536145461455614566145761458614596146061461614626146361464614656146661467614686146961470614716147261473614746147561476614776147861479614806148161482614836148461485614866148761488614896149061491614926149361494614956149661497614986149961500615016150261503615046150561506615076150861509615106151161512615136151461515615166151761518615196152061521615226152361524615256152661527615286152961530615316153261533615346153561536615376153861539615406154161542615436154461545615466154761548615496155061551615526155361554615556155661557615586155961560615616156261563615646156561566615676156861569615706157161572615736157461575615766157761578615796158061581615826158361584615856158661587615886158961590615916159261593615946159561596615976159861599616006160161602616036160461605616066160761608616096161061611616126161361614616156161661617616186161961620616216162261623616246162561626616276162861629616306163161632616336163461635616366163761638616396164061641616426164361644616456164661647616486164961650616516165261653616546165561656616576165861659616606166161662616636166461665616666166761668616696167061671616726167361674616756167661677616786167961680616816168261683616846168561686616876168861689616906169161692616936169461695616966169761698616996170061701617026170361704617056170661707617086170961710617116171261713617146171561716617176171861719617206172161722617236172461725617266172761728617296173061731617326173361734617356173661737617386173961740617416174261743617446174561746617476174861749617506175161752617536175461755617566175761758617596176061761617626176361764617656176661767617686176961770617716177261773617746177561776617776177861779617806178161782617836178461785617866178761788617896179061791617926179361794617956179661797617986179961800618016180261803618046180561806618076180861809618106181161812618136181461815618166181761818618196182061821618226182361824618256182661827618286182961830618316183261833618346183561836618376183861839618406184161842618436184461845618466184761848618496185061851618526185361854618556185661857618586185961860618616186261863618646186561866618676186861869618706187161872618736187461875618766187761878618796188061881618826188361884618856188661887618886188961890618916189261893618946189561896618976189861899619006190161902619036190461905619066190761908619096191061911619126191361914619156191661917619186191961920619216192261923619246192561926619276192861929619306193161932619336193461935619366193761938619396194061941619426194361944619456194661947619486194961950619516195261953619546195561956619576195861959619606196161962619636196461965619666196761968619696197061971619726197361974619756197661977619786197961980619816198261983619846198561986619876198861989619906199161992619936199461995619966199761998619996200062001620026200362004620056200662007620086200962010620116201262013620146201562016620176201862019620206202162022620236202462025620266202762028620296203062031620326203362034620356203662037620386203962040620416204262043620446204562046620476204862049620506205162052620536205462055620566205762058620596206062061620626206362064620656206662067620686206962070620716207262073620746207562076620776207862079620806208162082620836208462085620866208762088620896209062091620926209362094620956209662097620986209962100621016210262103621046210562106621076210862109621106211162112621136211462115621166211762118621196212062121621226212362124621256212662127621286212962130621316213262133621346213562136621376213862139621406214162142621436214462145621466214762148621496215062151621526215362154621556215662157621586215962160621616216262163621646216562166621676216862169621706217162172621736217462175621766217762178621796218062181621826218362184621856218662187621886218962190621916219262193621946219562196621976219862199622006220162202622036220462205622066220762208622096221062211622126221362214622156221662217622186221962220622216222262223622246222562226622276222862229622306223162232622336223462235622366223762238622396224062241622426224362244622456224662247622486224962250622516225262253622546225562256622576225862259622606226162262622636226462265622666226762268622696227062271622726227362274622756227662277622786227962280622816228262283622846228562286622876228862289622906229162292622936229462295622966229762298622996230062301623026230362304623056230662307623086230962310623116231262313623146231562316623176231862319623206232162322623236232462325623266232762328623296233062331623326233362334623356233662337623386233962340623416234262343623446234562346623476234862349623506235162352623536235462355623566235762358623596236062361623626236362364623656236662367623686236962370623716237262373623746237562376623776237862379623806238162382623836238462385623866238762388623896239062391623926239362394623956239662397623986239962400624016240262403624046240562406624076240862409624106241162412624136241462415624166241762418624196242062421624226242362424624256242662427624286242962430624316243262433624346243562436624376243862439624406244162442624436244462445624466244762448624496245062451624526245362454624556245662457624586245962460624616246262463624646246562466624676246862469624706247162472624736247462475624766247762478624796248062481624826248362484624856248662487624886248962490624916249262493624946249562496624976249862499625006250162502625036250462505625066250762508625096251062511625126251362514625156251662517625186251962520625216252262523625246252562526625276252862529625306253162532625336253462535625366253762538625396254062541625426254362544625456254662547625486254962550625516255262553625546255562556625576255862559625606256162562625636256462565625666256762568625696257062571625726257362574625756257662577625786257962580625816258262583625846258562586625876258862589625906259162592625936259462595625966259762598625996260062601626026260362604626056260662607626086260962610626116261262613626146261562616626176261862619626206262162622626236262462625626266262762628626296263062631626326263362634626356263662637626386263962640626416264262643626446264562646626476264862649626506265162652626536265462655626566265762658626596266062661626626266362664626656266662667626686266962670626716267262673626746267562676626776267862679626806268162682626836268462685626866268762688626896269062691626926269362694626956269662697626986269962700627016270262703627046270562706627076270862709627106271162712627136271462715627166271762718627196272062721627226272362724627256272662727627286272962730627316273262733627346273562736627376273862739627406274162742627436274462745627466274762748627496275062751627526275362754627556275662757627586275962760627616276262763627646276562766627676276862769627706277162772627736277462775627766277762778627796278062781627826278362784627856278662787627886278962790627916279262793627946279562796627976279862799628006280162802628036280462805628066280762808628096281062811628126281362814628156281662817628186281962820628216282262823628246282562826628276282862829628306283162832628336283462835628366283762838628396284062841628426284362844628456284662847628486284962850628516285262853628546285562856628576285862859628606286162862628636286462865628666286762868628696287062871628726287362874628756287662877628786287962880628816288262883628846288562886628876288862889628906289162892628936289462895628966289762898628996290062901629026290362904629056290662907629086290962910629116291262913629146291562916629176291862919629206292162922629236292462925629266292762928629296293062931629326293362934629356293662937629386293962940629416294262943629446294562946629476294862949629506295162952629536295462955629566295762958629596296062961629626296362964629656296662967629686296962970629716297262973629746297562976629776297862979629806298162982629836298462985629866298762988629896299062991629926299362994629956299662997629986299963000630016300263003630046300563006630076300863009630106301163012630136301463015630166301763018630196302063021630226302363024630256302663027630286302963030630316303263033630346303563036630376303863039630406304163042630436304463045630466304763048630496305063051630526305363054630556305663057630586305963060630616306263063630646306563066630676306863069630706307163072630736307463075630766307763078630796308063081630826308363084630856308663087630886308963090630916309263093630946309563096630976309863099631006310163102631036310463105631066310763108631096311063111631126311363114631156311663117631186311963120631216312263123631246312563126631276312863129631306313163132631336313463135631366313763138631396314063141631426314363144631456314663147631486314963150631516315263153631546315563156631576315863159631606316163162631636316463165631666316763168631696317063171631726317363174631756317663177631786317963180631816318263183631846318563186631876318863189631906319163192631936319463195631966319763198631996320063201632026320363204632056320663207632086320963210632116321263213632146321563216632176321863219632206322163222632236322463225632266322763228632296323063231632326323363234632356323663237632386323963240632416324263243632446324563246632476324863249632506325163252632536325463255632566325763258632596326063261632626326363264632656326663267632686326963270632716327263273632746327563276632776327863279632806328163282632836328463285632866328763288632896329063291632926329363294632956329663297632986329963300633016330263303633046330563306633076330863309633106331163312633136331463315633166331763318633196332063321633226332363324633256332663327633286332963330633316333263333633346333563336633376333863339633406334163342633436334463345633466334763348633496335063351633526335363354633556335663357633586335963360633616336263363633646336563366633676336863369633706337163372633736337463375633766337763378633796338063381633826338363384633856338663387633886338963390633916339263393633946339563396633976339863399634006340163402634036340463405634066340763408634096341063411634126341363414634156341663417634186341963420634216342263423634246342563426634276342863429634306343163432634336343463435634366343763438634396344063441634426344363444634456344663447634486344963450634516345263453634546345563456634576345863459634606346163462634636346463465634666346763468634696347063471634726347363474634756347663477634786347963480634816348263483634846348563486634876348863489634906349163492634936349463495634966349763498634996350063501635026350363504635056350663507635086350963510635116351263513635146351563516635176351863519635206352163522635236352463525635266352763528635296353063531635326353363534635356353663537635386353963540635416354263543635446354563546635476354863549635506355163552635536355463555635566355763558635596356063561635626356363564635656356663567635686356963570635716357263573635746357563576635776357863579635806358163582635836358463585635866358763588635896359063591635926359363594635956359663597635986359963600636016360263603636046360563606636076360863609636106361163612636136361463615636166361763618636196362063621636226362363624636256362663627636286362963630636316363263633636346363563636636376363863639636406364163642636436364463645636466364763648636496365063651636526365363654636556365663657636586365963660636616366263663636646366563666636676366863669636706367163672636736367463675636766367763678636796368063681636826368363684636856368663687636886368963690636916369263693636946369563696636976369863699637006370163702637036370463705637066370763708637096371063711637126371363714637156371663717637186371963720637216372263723637246372563726637276372863729637306373163732637336373463735637366373763738637396374063741637426374363744637456374663747637486374963750637516375263753637546375563756637576375863759637606376163762637636376463765637666376763768637696377063771637726377363774637756377663777637786377963780637816378263783637846378563786637876378863789637906379163792637936379463795637966379763798637996380063801638026380363804638056380663807638086380963810638116381263813638146381563816638176381863819638206382163822638236382463825638266382763828638296383063831638326383363834638356383663837638386383963840638416384263843638446384563846638476384863849638506385163852638536385463855638566385763858638596386063861638626386363864638656386663867638686386963870638716387263873638746387563876638776387863879638806388163882638836388463885638866388763888638896389063891638926389363894638956389663897638986389963900639016390263903639046390563906639076390863909639106391163912639136391463915639166391763918639196392063921639226392363924639256392663927639286392963930639316393263933639346393563936639376393863939639406394163942639436394463945639466394763948639496395063951639526395363954639556395663957639586395963960639616396263963639646396563966639676396863969639706397163972639736397463975639766397763978639796398063981639826398363984639856398663987639886398963990639916399263993639946399563996639976399863999640006400164002640036400464005640066400764008640096401064011640126401364014640156401664017640186401964020640216402264023640246402564026640276402864029640306403164032640336403464035640366403764038640396404064041640426404364044640456404664047640486404964050640516405264053640546405564056640576405864059640606406164062640636406464065640666406764068640696407064071640726407364074640756407664077640786407964080640816408264083640846408564086640876408864089640906409164092640936409464095640966409764098640996410064101641026410364104641056410664107641086410964110641116411264113641146411564116641176411864119641206412164122641236412464125641266412764128641296413064131641326413364134641356413664137641386413964140641416414264143641446414564146641476414864149641506415164152641536415464155641566415764158641596416064161641626416364164641656416664167641686416964170641716417264173641746417564176641776417864179641806418164182641836418464185641866418764188641896419064191641926419364194641956419664197641986419964200642016420264203642046420564206642076420864209642106421164212642136421464215642166421764218642196422064221642226422364224642256422664227642286422964230642316423264233642346423564236642376423864239642406424164242642436424464245642466424764248642496425064251642526425364254642556425664257642586425964260642616426264263642646426564266642676426864269642706427164272642736427464275642766427764278642796428064281642826428364284642856428664287642886428964290642916429264293642946429564296642976429864299643006430164302643036430464305643066430764308643096431064311643126431364314643156431664317643186431964320643216432264323643246432564326643276432864329643306433164332643336433464335643366433764338643396434064341643426434364344643456434664347643486434964350643516435264353643546435564356643576435864359643606436164362643636436464365643666436764368643696437064371643726437364374643756437664377643786437964380643816438264383643846438564386643876438864389643906439164392643936439464395643966439764398643996440064401644026440364404644056440664407644086440964410644116441264413644146441564416644176441864419644206442164422644236442464425644266442764428644296443064431644326443364434644356443664437644386443964440644416444264443644446444564446644476444864449644506445164452644536445464455644566445764458644596446064461644626446364464644656446664467644686446964470644716447264473644746447564476644776447864479644806448164482644836448464485644866448764488644896449064491644926449364494644956449664497644986449964500645016450264503645046450564506645076450864509645106451164512645136451464515645166451764518645196452064521645226452364524645256452664527645286452964530645316453264533645346453564536645376453864539645406454164542645436454464545645466454764548645496455064551645526455364554645556455664557645586455964560645616456264563645646456564566645676456864569645706457164572
  1. /*
  2. ----- 2020, gamemode sold to Ice, all rights to him.
  3. /*
  4. Drakey:
  5. WARNING: IF PEOPLE ARE FALLING THROUGH FLOORS / NOT LOADING PROPERLY
  6. SEARCH SetTimerEx("UnFreezePlayer", 2000
  7. CHANGE TO SetTimerEx("UnFreezePlayer", 8000
  8. --------------------------------------------------------------------- */
  9. #include <a_samp>
  10. #pragma unused g_TrashPickups
  11. #pragma dynamic 50000
  12. #undef MAX_PLAYERS
  13. #define MAX_PLAYERS (100)
  14. #undef MAX_VEHICLES
  15. #define MAX_VEHICLES (1500)
  16. #undef INVALID_3DTEXT_ID
  17. #define INVALID_3DTEXT_ID (Text3D:0xFFFF)
  18. #undef INVALID_TEXT_DRAW
  19. #define INVALID_TEXT_DRAW (Text:0xFFFF)
  20. #define MaxFire 80
  21. //gsf = GetPlayerSkin(playerid);
  22. new gsfskin1;
  23. new gsfskin2;
  24. new gsfskin3;
  25. new fd_wall[52];
  26. new ReviewQuiz[MAX_PLAYERS] = -1;
  27. new retexture; // variable for admin jail mapping
  28. new msg[2056];
  29. new currentQuestion[MAX_PLAYERS];
  30. new quizIndexes[MAX_PLAYERS][50];
  31. new Float:vehicleStartingHealth[MAX_PLAYERS];
  32. new oldWeapon[MAX_PLAYERS], newWeapon[MAX_PLAYERS], oldAmmo[MAX_PLAYERS], newAmmo[MAX_PLAYERS];
  33. new questionResponse[MAX_PLAYERS][11][500];
  34. new Text3D:FireText[MaxFire];
  35. /*---------------------------------------------------------------------------
  36. Dependencies
  37. These are the includes which will be used for this gamemode.
  38. Make sure you add a link to the release topic!
  39. ---------------------------------------------------------------------------*/
  40. #include <a_mysql> // http://forum.sa-mp.com/showthread.php?t=56564
  41. #include <streamer> // http://forum.sa-mp.com/showthread.php?t=102865
  42. #include <sscanf2> // http://forum.sa-mp.com/showthread.php?t=120356
  43. #include <easyDialog> // http://forum.sa-mp.com/showthread.php?t=475838
  44. #include <foreach> // http://forum.sa-mp.com/showthread.php?t=92679
  45. #include <progress2> // http://forum.sa-mp.com/showthread.php?t=537468
  46. #include <MapAndreas> // http://forum.sa-mp.com/showthread.php?t=120013
  47. #include <zcmd> // http://forum.sa-mp.com/showthread.php?t=91354
  48. #include <OPA> // http://forum.sa-mp.com/showthread.php?t=474196
  49. #include <fader>
  50. #include <zone-data>
  51. #include <YSI\y_hooks>
  52. #include <nex-ac>
  53. #include <VPP>
  54. #include <OnVehicleModEx>
  55. /*--------------------------------------------------------------
  56. SQL information
  57. This script utilizes the MySQL plugin for data storage.
  58. SQL_HOSTNAME - The hostname to connect to.
  59. SQL_DATABASE - The name of the database.
  60. SQL_USERNAME - The username to authenticate to.
  61. SQL_PASSWORD - The password for the user.
  62. ---------------------------------------------------------------------------*/
  63. #define SQL_HOSTNAME "localhost"
  64. #define SQL_DATABASE "crp"
  65. #define SQL_USERNAME "root"
  66. #define SQL_PASSWORD "" //4vDYb6Gg
  67. /*#define SQL_HOSTNAME "127.0.0.1"
  68. #define SQL_DATABASE "core-db"
  69. #define SQL_USERNAME "root"
  70. #define SQL_PASSWORD ""*/
  71. /*---------------------------------------------------------------------------
  72. Definitions
  73. The colors, limits, settings, etc are all here!
  74. Please be cautious when changing any values.
  75. ---------------------------------------------------------------------------*/
  76. // MAJOR.MINOR.PATCH
  77. #define SERVER_REVISION "1.0.0"
  78. #define SERVER_WEBSITE ""
  79. #include "utils/def_color.pwn"
  80. #include "utils/def_max.pwn"
  81. #include "utils/def_time.pwn"
  82. #include "utils/def_fade.pwn"
  83. // Add to def_max.pwn when you get time. (lazy)
  84. #define MAX_FACTION_EQUIPMENT 20
  85. #define MAX_FACTION_ACCESSORIES 20
  86. #define BODY_PART_TORSO 3
  87. #define BODY_PART_GROIN 4
  88. #define BODY_PART_LEFT_ARM 5
  89. #define BODY_PART_RIGHT_ARM 6
  90. #define BODY_PART_LEFT_LEG 7
  91. #define BODY_PART_RIGHT_LEG 8
  92. #define BODY_PART_HEAD 9
  93. #define COMPANY_STORE 1
  94. #define COMPANY_CLOTHES 2
  95. #define COMPANY_RESTAURANT 3
  96. #define COMPANY_RENTALS 4
  97. #define COMPANY_PHONE 5
  98. #define COMPANY_DEALERSHIP 6
  99. #define COMPANY_GYM 7
  100. #define COMPANY_AMMO 8
  101. #define COMPANY_BAR 9
  102. #define FACTION_LEO 1
  103. #define FACTION_MEDICAL 2
  104. #define FACTION_GOVERNMENT 3
  105. #define FACTION_ILLEGAL 4
  106. #define FACTION_NEWS 5
  107. #define DONATOR_BASIC 1
  108. #define DONATOR_STANDARD 2
  109. #define DONATOR_INVESTOR 3
  110. #define DONATOR_PREMIUM 4
  111. #define ATTACHED_SLOT_MISC 5
  112. #define ATTACHED_SLOT_MELEE 6
  113. #define ATTACHED_SLOT_PRIMARY 7
  114. #define ATTACHED_SLOT_SECONDARY 8
  115. #define ATTACHED_SLOT_TERTIARY 9
  116. #define INVALID_ID -1
  117. #define SendInfoMessage(%0,%1) SendFormatMessage((%0), COLOR_WHITE, ""%1)
  118. #define SendSyntaxMessage(%0,%1) SendFormatMessage((%0), COLOR_LIGHTGREY, "Usage: "%1)
  119. #define SendErrorMessage(%0,%1) ShowErrorToPlayer((%0), "~r~"%1)
  120. #define percent(%0,%1) (((%0) / 100) * (%1))
  121. #define FADE_START_QUIZ 555
  122. forward SetIntVar(playerid, varname[], value);
  123. forward SetFloatVar(playerid, varname[], Float:value);
  124. forward GetIntVar(playerid, varname[]);
  125. forward Float:GetFloatVar(playerid, varname[]);
  126. //PVar Updating - useful as fuck
  127. #define UpdateIntVar(%0,%1,%2) SetIntVar(%0,%1,(GetIntVar(%0, %1) + %2))
  128. #define UpdateFloatVar(%0,%1,%2) SetFloatVar(%0, %1, (GetFloatVar(%0, %1) + %2))
  129. #define EMBED_RED "{FF0000}"
  130. #define EMBED_WHITE "{FFFFFF}"
  131. #define COLOR_LIGHTRED 0xFF6347AA
  132. #define SCM SendClientMessage
  133. #define SCMALL SendClientMessageToAll
  134. #define Holding(%0) \
  135. ((newkeys & (%0)) == (%0))
  136. // How many fires max.?
  137. forward OnFireKill(ID, killerid);
  138. forward f_OnPlayerUpdate(playerid);
  139. forward VehicleToPoint(Float:radi, vehicleid, Float:x, Float:y, Float:z);
  140. forward HealthDown();
  141. forward f_init();
  142. /*---------------------------------------------------------------------------
  143. Enums
  144. These enumerators are later used for array indexing.
  145. ---------------------------------------------------------------------------*/
  146. new TaxiObject[MAX_VEHICLES+1] = {INVALID_OBJECT_ID, ...};
  147. // start of enumerators for matical's setstation
  148. new
  149. FireObj[MaxFire],
  150. Float:FirePos[MaxFire][3],
  151. TotalFires = 0,
  152. FireHealth[MaxFire],
  153. FireHealthMax[MaxFire];
  154. #if defined Labels
  155. #endif
  156. enum BOOMBOX_INFO
  157. {
  158. boomboxUrlName[128],
  159. boomboxURL[128]
  160. }
  161. new DRPStations[][BOOMBOX_INFO] = { // OTHER DIALOG
  162. {"Los Santos Country", "http://country.lsfm.us:8342/stream"},
  163. {"RC Rock", "http://188.165.192.5:8007/stream"},
  164. {"Red County FM ( RCFM )", "http://91.134.169.6:8224"},
  165. {"Trace FM", "http://178.32.62.172:9284"},
  166. {"Drill House Entertainment", "http://myradiostream.com/4/8182.pls"}
  167. };
  168. new PunkStations[][BOOMBOX_INFO] = { // ROCK DIALOG
  169. {"Punk Rock - ROCKRADIO.com", "http://tunein.com/embed/player/s253015/"}
  170. };
  171. new ClassicStations[][BOOMBOX_INFO] = { // ROCK DIALOG
  172. {"Jamm FM", "http://yp.shoutcast.com/sbin/tunein-station.pls?id=563458"},
  173. {"CLASSICAL 102", "http://yp.shoutcast.com/sbin/tunein-station.pls?id=324044"},
  174. {"CLASSICAL Hits", "http://tunein.com/embed/player/s249942/"}
  175. };
  176. new MetalStations[][BOOMBOX_INFO] = { // ROCK DIALOG
  177. {"Metalcore Kingdom", "http://yp.shoutcast.com/sbin/tunein-station.pls?id=901777"}
  178. };
  179. new RaggaeStations[][BOOMBOX_INFO] = { // URBAN DIALOG
  180. {"420 FM - Hippie Radio", "http://tunein.com/radio/Roots-Reggae-s249978/"}
  181. };
  182. new DanceStations[][BOOMBOX_INFO] = { // OTHER DIALOG
  183. {"Deep House Lounge", "http://yp.shoutcast.com/sbin/tunein-station.pls?id=186925"},
  184. {"Trap Lounge", "http://yp.shoutcast.com/sbin/tunein-station.pls?id=916108"},
  185. {"GotRadio - Mash Ups", "http://206.217.213.236:8530/"},
  186. {"Noise FM", "http://yp.shoutcast.com/sbin/tunein-station.pls?id=379239"}
  187. };
  188. new RapStations[][BOOMBOX_INFO] = { // URBAN DIALOG
  189. {"Flow 103", "http://173.245.71.186:8000"},
  190. {"Powerhitz.com", "http://108.61.30.179:5000"},
  191. {"Urban Hitz Radio", "http://176.31.244.83:4418"},
  192. {"Capital Tune FM", "http://69.175.94.98:8328/"},
  193. {"Bates FM - 104.3 Jamz", "http://174.36.42.110:8630"},
  194. {"TrueHipHop.FM", "http://culturefm.dynds.org:9020"},
  195. {"AAZO Radio Rap", "http://77.67.46.74:8000/aazoradio-raphiphop.mp3/"},
  196. {"Street Style Radio", "http://174.37.16.73:5709/StreetStyleRadio"}
  197. };
  198. new HHStations[][BOOMBOX_INFO] = { // URBAN DIALOG
  199. {"Got Radio - Urban Jams", "http://206.217.213.235:8150"},
  200. {"181.FM - Old School Hip Hop & RNB", "http://108.61.73.118:8068"},
  201. {"HOT 108 JamZ", "http://yp.shoutcast.com/sbin/tunein-station.pls?id=8318"},
  202. {"181.FM - The BOX - #1 For Hip-Hop", "http://108.61.73.119:8024"},
  203. {"Radio Los Santos", "http://91.134.169.6:8222/"},
  204. {"AceRadio.Net", "http://174.36.42.110:8370"}
  205. };
  206. new Top40Stations[][BOOMBOX_INFO] = { // POP DIALOG
  207. {"ChartHits.FM Top 40 Radio", "http://193.34.51.49:80"},
  208. {"#1 Mega Hits", "http://yp.shoutcast.com/sbin/tunein-station.pls?id=424867"},
  209. {"Party Vibe Radio", "http://yp.shoutcast.com/sbin/tunein-station.pls?id=99179841"}
  210. };
  211. new TalkStations[][BOOMBOX_INFO] = { // OTHER DIALOG
  212. {"ChartHits.FM - Your HITZ More MUSIC!", "http://79.141.174.206:22000"},
  213. {"Top Hits Music - SKY.FM", "http://stream-67.shoutcast.com:80/tophits_skyfm_mp3_96kbps"},
  214. {"181.fm - The Office", "http://108.61.73.117:8002"}
  215. };
  216. // end of matical's setstation enumerators
  217. /*new MaterialIDs[][matLIST] = {
  218. {0, "none", "none", "{6EF83C}Reset Material", "None"},
  219. {1649, "wglass", "carshowwin2", "Glass", "Glass Textures"},
  220. {5722, "sunrise01_lawn", "plainglass", "Glass 1", "Glass Textures"},
  221. {3857, "ottos_glass", "carshowroom1", "Glass 2", "Glass Textures"},
  222. {3979, "civic01_lan", "sl_laglasswall2", "Glass 3", "Glass Textures"},
  223. {10871, "blacksky_sfse", "ws_glass_balustrade", "Glass 4", "Glass Textures"},
  224. {16640, "a51", "a51_glass", "51 Glass", "Glass Textures"},
  225. {10789, "xenon_sfse", "newindow4", "Green Window", "Windows"},
  226. {3925, "weemap", "sw_shedwindow1", "Blue Window", "Windows"},
  227. {18200, "w_town2cs_t", "inwindow1128", "White Window", "Windows"},
  228. {5870, "sunst18_lawn", "inwindow4", "Gate Window", "Windows"},
  229. {18200, "w_town2cs_t", "Bow_door_graffiti_128", "Graffiti", "Misc."},
  230. {5716, "sunrise02_lawn", "manndoor_law", "Chinese paint", "Misc."},
  231. {1229, "signs", "phonesign_128", "Phone Sign", "Misc."},
  232. {1229, "signs", "NoParking2_128", "Parking Sign", "Misc."},
  233. {6351, "rodeo02_law2", "prolsign01_LA", "Pro Laps", "Misc."},
  234. {5771, "melrose11_lawn", "melrsign08_LA", "SPAVCEY", "Misc."},
  235. {9593, "hosbibalsfw", "dt_cops_US_flag", "US Flag", "Misc."},
  236. {9259, "presidio01_sfn", "stainwin_law", "Presidio", "Misc."}
  237. };*/
  238. enum matLIST
  239. {
  240. Name[128],
  241. ModelID,
  242. TxdName[64],
  243. TextureName[64],
  244. Resource[32]
  245. };
  246. new MaterialIDs[][matLIST] =
  247. {
  248. {"{6EF83C}Reset Material", 0, "none", "none", "None"},
  249. #define PCOLORS "Material Colors"
  250. {"Purple", 8839, "vgsecarshow", "lightpurple2_32", PCOLORS},
  251. {"Blue", 5774, "garag3_lawn", "bluestucco1", PCOLORS},
  252. {"Bright Blue", 8839, "vgsecarshow", "lightblue2_32", PCOLORS},
  253. {"Bright Green", 8839, "vgsecarshow", "lightgreen2_32", PCOLORS},
  254. {"Green", 19271, "MapMarkers", "green-2", PCOLORS},
  255. {"Lime Green", 18749, "MatTextures", "lime", PCOLORS},
  256. {"Yellow", 5168, "lashops6_las2", "yellow2_128", PCOLORS},
  257. {"Brighter Yellow", 18245, "cw_junkyardmachin", "Was_scrpyd_light_yellow", PCOLORS},
  258. {"Orange", 18250, "cw_junkbuildcs_t", "Was_scrpyd_baler_locker", PCOLORS},
  259. {"Orange 2", 18749, "MatTextures", "SAMPOrange", PCOLORS},
  260. {"Pink", 3267, "milbase", "lightred2_32", PCOLORS},
  261. {"Red", 18856, "MatTextures", "SAMPRed", PCOLORS},
  262. {"Darker Red", 19184, "MapMarkers", "red-2", PCOLORS},
  263. {"Deep Red", 5142, "lashops1b_las2", "snpdwhit2", PCOLORS},
  264. {"Pitch Black", 13816, "lahills_safe1", "black16", PCOLORS},
  265. {"Smoky Black", 11088, "crackfactdem_sfs", "ws_altz_wall7_top_burn", PCOLORS},
  266. {"Light Gray", 8839, "vgsecarshow", "lightblue_64", PCOLORS},
  267. {"Happy Gray", 16109, "des_se1", "parking2plain", PCOLORS},
  268. {"Eggshell", 8675, "wddngchpl02", "vgschapelwall01_64", PCOLORS},
  269. {"White", 4833, "airprtrunway_las", "white", PCOLORS},
  270. #define PFABRICS "Printed Fabrics"
  271. {"Varied Green Stripes", 17511, "stadium_lae2", "stadt_banner1", PFABRICS},
  272. {"Varied Purple and Green Stripes", 17511, "stadium_lae2", "stadt_banner2", PFABRICS},
  273. {"Varied White, Brown and Green Stripes", 17511, "stadium_lae2", "stadt_banner3", PFABRICS},
  274. {"Blue, White and Red Stripes", 9583, "bigshap_sfw", "boatfunnel1_128", PFABRICS},
  275. {"Blue and White Stripes", 12850, "cunte_block1", "ablusrip", PFABRICS},
  276. {"Blue, Green, White and Yellow Stripes", 5142, "lashops1b_las2", "sanpedshpito", PFABRICS},
  277. {"Red And White Stripes", 3039, "ct_salx", "ct_stall1", PFABRICS},
  278. {"Black, Gray, Yellow, Red", 3990, "lanroad", "lakerbcol", PFABRICS},
  279. {"Red and Green Tartan", 3060, "paracx", "parachute_e", PFABRICS},
  280. {"Multi-colored Squares", 3922, "bistro", "Tablecloth", PFABRICS},
  281. {"Spongy Red", 10412, "hotel1", "carpet_red_256", PFABRICS},
  282. {"Spongy Maroon", 14808, "lee_strip2", "WH_carpet1", PFABRICS},
  283. {"Spongy Blue", 5392, "eastshops1_lae", "blueshop2_LAe", PFABRICS},
  284. {"Yellow Tartan", 13003, "ce_racestart", "CJ_TARTAN", PFABRICS},
  285. {"Blue Camouflage", 10631, "queensammo_sfs", "ammu_camo1", PFABRICS},
  286. {"Blue Patterns", 10226, "sfeship1", "CJ_CUSHION2", PFABRICS},
  287. {"Blue Patterns 2", 19447, "all_walls", "vgsn_scrollsgn256", PFABRICS},
  288. {"Brown Flower Pattern", 15034, "genhotelsave", "cj_cushion1", PFABRICS},
  289. {"Brown Sheets", 16150, "ufo_bar", "Gen_Sacki", PFABRICS},
  290. {"Floral Print", 2680, "cj_chris", "CJ_Floral", PFABRICS},
  291. {"White and Blue Mattress", 12954, "sw_furniture", "CJ_MATRESS2", PFABRICS},
  292. {"Used Mattress", 1637, "od_beachstuff", "lounger_matress", PFABRICS},
  293. {"Plain Matress", 2575, "cj_hotel_poor", "CJ_mattress", PFABRICS},
  294. {"Rainbow Stripes", 3853, "gay_xref", "ws_gayflag1", PFABRICS},
  295. {"American Flag", 12853, "cunte_gas01", "starspangban1_256", PFABRICS},
  296. {"American Flag 2", 14782, "intring_gymint3", "star_spang", PFABRICS},
  297. {"Confederate Flag", 12853, "cunte_gas01", "cj_flag2", PFABRICS},
  298. {"Italian Flag", 5111, "ground2_las2", "sanpedpawn1a", PFABRICS},
  299. {"Black Carpet", 17946, "carter_mainmap", "mp_carter_carpet", PFABRICS},
  300. {"Gray Carpet", 14475, "ganghoos", "mp_burn_carpet", PFABRICS},
  301. {"Red Carpet", 14506, "imy_motel", "mp_motel_carpet1", PFABRICS},
  302. {"Red Carpet 2", 8463, "vgseland", "triadcarpet2", PFABRICS},
  303. {"Black Carpet 2", 14700, "vgshs2int2", "carpet-tile", PFABRICS},
  304. {"Dark Carpet", 14838, "lee_stripclub", "cl_floornew_256", PFABRICS},
  305. {"Worn Gray Carpet", 14701, "lahss2int2", "HS1_carpet1", PFABRICS},
  306. {"Blue Rug", 11704, "bdupsnew", "Bdup2_carpet", PFABRICS},
  307. {"Light Blue Fabric", 14707, "labig3int2", "HS2_3Wall10", PFABRICS},
  308. {"Light Purple Fabric", 14707, "labig3int2", "HS2_3Wall7", PFABRICS},
  309. {"Pink Fabric", 14707, "labig3int2", "HS2_3Wall9", PFABRICS},
  310. {"Old White Fabric", 14756, "smallsfhs", "wall6", PFABRICS},
  311. {"White Carpet", 14672, "genintintsex", "mp_cop_floor2", PFABRICS},
  312. {"Black Carpet 3", 14808, "lee_strip2", "strip_carpet2", PFABRICS},
  313. {"Yellow Carpet", 14590, "mafcastopfoor", "ab_carpet01", PFABRICS},
  314. {"Old Black Carpet", 18028, "cj_bar2", "GB_nastybar10", PFABRICS},
  315. {"Dark Carpet 2", 14431, "dr_gsnew", "mp_gs_carpet", PFABRICS},
  316. {"Light Carpet", 14581, "ab_mafiasuitea", "carp01S", PFABRICS},
  317. {"Zebra Stripes", 14838, "lee_stripclub", "zebra_skin", PFABRICS},
  318. {"Light Blue Carpet", 14708, "labig1int2", "GB_rug01", PFABRICS},
  319. {"Fancy Rug", 11704, "bdupsnew", "Bdup2_Rug", PFABRICS},
  320. {"Pink Curtain", 11707, "cuntcuts", "AH_pinkcurtain", PFABRICS},
  321. {"Brown Curtain", 14710, "vgshm3int2", "ah_curtains1", PFABRICS},
  322. {"Blue Curtain", 14701, "lahss2int2", "HS2_Curt1", PFABRICS},
  323. {"Light Blue Curtain", 14702, "masmall3int2", "HS2_Curt2", PFABRICS},
  324. {"Light Blue Curtain 2", 2559, "hospital", "CJ_H_CURTAIN1", PFABRICS},
  325. {"Orange Curtain", 14701, "lahss2int2", "HS2_Curt4", PFABRICS},
  326. {"Purple Curtain", 14701, "lahss2int2", "HS2_Curt5", PFABRICS},
  327. {"Red Curtain", 14808, "lee_strip2", "Strip_curtain", PFABRICS},
  328. #define WOODS "Wood"
  329. {"The Standard", 19400, "all_walls", "mp_diner_woodwall", WOODS},
  330. {"Classy Wood", 16150, "ufo_bar", "sa_wood08_128", WOODS},
  331. {"Brown Wood", 14581, "ab_mafiasuitea", "walp45S", WOODS},
  332. {"Red Wood", 13681, "lahillshilhs1e", "woodboards2", WOODS},
  333. {"Reclaimed Wood", 6094, "canalsg_law", "ws_sheetwood_clean", WOODS},
  334. {"Light Wood 1", 3881, "apsecurity_sfxrf", "CJ_WOOD1", WOODS},
  335. {"Light Wood 2", 13003, "ce_racestart", "sa_wood07_128", WOODS},
  336. {"Light Wood 3", 16377, "des_byofficeint", "CJ_LIGHTWOOD", WOODS},
  337. {"Dark Wood 1", 1515, "dsfs", "CJ_WOOD6", WOODS},
  338. {"Dark Wood 2", 11631, "mp_ranchcut", "mpCJ_WOOD_DARK", WOODS},
  339. {"Dark, Ugly Wood", 18250, "cw_junkbuildcs_t", "Was_scrpyd_shack_wall", WOODS},
  340. {"Dull, Dark Wood", 17925, "lae2fake_int", "ab_wood1", WOODS},
  341. {"Rotting Painted Wood 1", 17566, "contachou1_lae2", "comptwall26", WOODS},
  342. {"Rotting Painted Wood 2", 3193, "cxref_desert", "des_bywall1", WOODS},
  343. {"Rotting Painted Wood 3", 3355, "cxref_savhus", "des_bywall2", WOODS},
  344. {"Rotting Painted Wood 4", 14700, "vgshs2int2", "ah_CRAKPLNK", WOODS},
  345. {"Very Old Wood", 12976, "sw_diner1", "telepole128", WOODS},
  346. {"Tatty Wood", 5149, "lasground2_las2", "tatty_wood_1", WOODS},
  347. {"'Fence' Wood", 5122, "ground3_las2", "fence1", WOODS},
  348. {"Fancy Diner Flooring", 3919, "librest", "DinerFloor", WOODS},
  349. {"Sleek Wood Flooring", 14771, "int_brothelint3", "GB_nastybar12", WOODS},
  350. {"Cheap Wood Flooring", 14825, "genintint2_gym", "gym_floor5", WOODS},
  351. {"Cheap, Scratched Flooring", 14709, "lamidint2", "mp_apt1_floor", WOODS},
  352. {"Fine Parquet", 14581, "ab_mafiasuitea", "wood02S", WOODS},
  353. {"Wooden Mosaic", 4004, "civic07_lan", "cityhallroof", WOODS},
  354. {"Wood Square Panels", 13007, "sw_bankint", "woodfloor1", WOODS},
  355. {"Wood Planks", 16322, "a51_stores", "des_ghotwood1", WOODS},
  356. {"Aged Planks", 1219, "woodpanels", "planks01", WOODS},
  357. {"White Planks", 10152, "sfvictorian2", "pier69_ground1", WOODS},
  358. {"White Planks 2", 12960, "sw_church", "ws_vic_wood1", WOODS},
  359. {"White Planks 3", 12911, "sw_farm1", "sw_barnwood1", WOODS},
  360. {"Old White Planks", 12911, "sw_farm1", "sw_barnwood2", WOODS},
  361. {"Old White Planks 2", 4849, "ground3_las", "pierboards_la", WOODS},
  362. {"Gray Planks", 3310, "sw_poorhouse", "GB_nastybar08", WOODS},
  363. {"Old Gray Planks", 4820, "ground4_las", "adet", WOODS},
  364. {"Boardwalk", 13809, "lahillsground4", "boardwalk_la" , WOODS},
  365. {"Wood Boards", 5134, "wasteland_las2", "floorboard256128" , WOODS},
  366. {"Light Wood Pattern", 3306, "cunte_house1", "des_ntwnwall1", WOODS},
  367. {"Dark Brown Planks", 17298, "weefarmcuntw", "sjmbigold2", WOODS},
  368. {"Creepy Planks", 12937, "sw_oldshack", "sw_cabinwall01", WOODS},
  369. {"Blue Planks", 5766, "capitol_lawn", "lasjmscruffwall3", WOODS},
  370. {"Bright Blue Planks", 5135, "groundb_las2", "sanpedock8", WOODS},
  371. {"Bright Yellow Planks", 5113, "lasground_las2", "sanpedpawn1", WOODS},
  372. {"White and Red Wood", 4830, "airport2", "sw_shedwall02", WOODS},
  373. {"White and Blue Wood", 12925, "sw_sheds", "sw_shedwall03", WOODS},
  374. {"Dull Wood Logs", 17067, "cw2_logcabins", "cw2_logwall", WOODS},
  375. {"Light Wood Logs", 11490, "des_ranch", "des_logwall", WOODS},
  376. {"Flat Logs", 13711, "mullho03_lahills", "des_flatlogs", WOODS},
  377. {"Wood Slats", 11501, "des_farmstuff", "des_woodslats1", WOODS},
  378. {"Walnut 1", 14581, "ab_mafiasuitea", "ab_walnut", WOODS},
  379. {"Walnut 2", 14581, "ab_mafiasuitea", "ab_walnutLite", WOODS},
  380. {"Brown Wood Paneling", 9583, "bigshap_sfw", "bridge_walls2_sfw", WOODS},
  381. {"Tiki Reed", 8536, "tikisign", "tikireed01_128", WOODS},
  382. {"Bamboo", 3595, "dingbat01_la", "bambowal1_LA", WOODS},
  383. {"Old Barn", 16146, "des_ufoinn", "shackdoor01", WOODS},
  384. {"Bloody wood", 12937, "sw_oldshack", "sw_woodflloorsplat", WOODS},
  385. #define TILES "Tiles"
  386. {"Shiny White", 10023, "bigwhitesfe", "recessed_light_SF", TILES},
  387. {"White and Blue", 12841, "cos_pizzaplace", "swimpoolside1_128", TILES},
  388. {"Yellow and Blue", 5408, "tempstuff_lae", "examball1_LAe", TILES},
  389. {"Blue Pool Tiles", 13675, "lahillsgrounds", "bevpool", TILES},
  390. {"Better Times", 4004, "civic07_lan", "Bow_sub_wallshine", TILES},
  391. {"Small White Tiles", 12853, "cunte_gas01", "sw_floor1", TILES},
  392. {"Thin Wall Tiles", 17049, "cuntwf", "sw_walltile", TILES},
  393. {"Thick Wall Tiles", 4558, "lanlacmab_lan2", "sl_gallerywall1", TILES},
  394. {"Dirty Wall Tiles", 14700, "vgshs2int2", "ah_whitiles", TILES},
  395. {"The Classic", 3961, "lee_kitch", "dinerfloor01_128", TILES},
  396. {"The Classic 2", 14771, "int_brothelint3", "bwtilebroth", TILES},
  397. {"The Classic 3", 18082, "cj_barb", "CJ_TILES_5", TILES},
  398. {"Aged Classic", 13724, "docg01_lahills", "marbletile8b", TILES},
  399. {"Classy Blue", 10871, "blacksky_sfse", "ws_slatetiles", TILES},
  400. {"Dark Blue", 6351, "rodeo02_law2", "helmutwall1_LAw", TILES},
  401. {"Classic White", 3904, "libertyfar", "subplat", TILES},
  402. {"Aged Fancy Tiles", 5772, "stationtunnel", "mp_apt1_bathfloor1", TILES},
  403. {"Fancy Black Tiles", 14388, "dr_gsnew", "mp_gs_kitchfloor", TILES},
  404. {"Modern White Tiles", 10932, "station_sfse", "ws_stationfloor", TILES},
  405. {"Modern Yellow Tiles", 10973, "mall_sfse", "mallfloor3", TILES},
  406. {"Blue And Yellow Tiles", 1594, "chairsntable", "mallfloor6", TILES},
  407. {"Tile Stone", 1677, "wshxrefhse2", "tilestone256", TILES},
  408. {"Dirty Tiles", 11389, "hubint1_sfse", "ab_ceiling1", TILES},
  409. {"Stone Tiles", 16639, "a51_labs", "dam_terazzo" , TILES},
  410. {"Old Black Tiles", 5815, "lawngrnd", "man_cellarfloor128", TILES},
  411. {"Dark Tiles", 14700, "vgshs2int2", "AH_rykitiles", TILES},
  412. {"Terra Cotta Tile", 18020, "genintintfastb2", "ws_terratiles", TILES},
  413. {"Gray Tiles", 14706, "labig2int2", "ab_tile1", TILES},
  414. {"Brown/Olive Green Bricks", 14756, "smallsfhs", "mp_carter_tilewall", TILES},
  415. {"Brown Tiles", 14709, "lamidint2", "mp_apt1_kitchfloor", TILES},
  416. {"Brown Tiles 2", 18029, "genintintsmallrest", "GB_restaursmll06", TILES},
  417. {"Light Green Tiles", 18029, "genintintsmallrest", "GB_restaursmll07", TILES},
  418. {"Dull Red Tiles", 14388, "dr_gsnew", "AH_flroortile12", TILES},
  419. {"Red Stones", 13675, "lahillsgrounds", "sjmlahus29", TILES},
  420. {"Blue Mosaic", 17562, "coast_apts", "otb_floor1", TILES},
  421. {"Green Mosaic", 3595, "dingbat01_la", "mosaic1_LAwn", TILES},
  422. {"Hexagon Tile Pattern", 14506, "imy_motel", "ab_tilehex2", TILES},
  423. {"Green Formica", 11704, "cj_kitchen", "FORMICA2", TILES},
  424. #define MARB "Building"
  425. {"Black Marble", 3922, "bistro", "Marble", MARB},
  426. {"Black Marble 2", 10969, "scum_sfse", "Was_scrpyd_floor_hangar", MARB},
  427. {"Gray Marble", 4830, "airport2", "LASLACMA96", MARB},
  428. {"White Marble", 3922, "bistro", "Marble2", MARB},
  429. {"Yellow Marble", 3922, "bistro", "rest_wall4", MARB},
  430. {"White Marble Block", 16023, "des_trainstuff", "ws_stoneblock", MARB},
  431. {"Stone Wall 1", 18202, "w_towncs_t", "hatwall256hi", MARB},
  432. {"Stone Wall 2", 13724, "docg01_lahills", "des_ranchwall1", MARB},
  433. {"Stone Wall 3", 8839, "vgsecarshow", "sw_wallbrick_06", MARB},
  434. {"Stone Wall 4", 8565, "vgsebuild01", "ws_stonewall", MARB},
  435. {"Stone Wall 5", 6056, "venice_law", "stonewall_la", MARB},
  436. {"Stone Wall 6", 6057, "venicegb02_law", "stonewall3_la", MARB},
  437. {"Fancy Stones", 5113, "lasground_las2", "adeta", MARB},
  438. {"Dark Stones", 18029, "genintintsmallrest", "GB_restaursmll05", MARB},
  439. {"Yellow Stones", 16136, "des_telescopestuff", "stoneclad1", MARB},
  440. {"White Brick Wall", 8399, "vgs_shops", "vgsclubwall05_128", MARB},
  441. {"Gray Stone Wall", 8645, "vegashsetx", "badhousewall01_128", MARB},
  442. {"Concrete Pattern", 4849, "ground3_las", "ws_bigstones", MARB},
  443. {"Gray Brick Wall", 13823, "lahillsground4cye", "GB_nastybar03", MARB},
  444. {"Fancy White Bricks", 13675, "lahillsgrounds", "bevr03b_law", MARB},
  445. {"Red Brick Wall", 8531, "officeground", "ws_redbrickold", MARB},
  446. {"Old Red Brick Wall", 5180, "lashops93_las2", "ws_oldredbrick", MARB},
  447. {"Old Red Brick Wall 2", 10864, "bridgeland_sfse", "ws_altz_wall1", MARB},
  448. {"Brick Wall 1", 8839, "vgsecarshow", "sw_brewbrick01", MARB},
  449. {"Brick Wall 2", 8390, "vegasemulticar", "ws_mixedbrick", MARB},
  450. {"Brick Wall 3", 13015, "sw_genstore", "sw_wallbrick_03", MARB},
  451. {"Brick Wall 4", 12959, "sw_library", "sw_brick05", MARB},
  452. {"Brick Wall 5", 17049, "cuntwf", "sw_brick04", MARB},
  453. {"Brick Wall 6", 12853, "cunte_gas01", "sw_brick03", MARB},
  454. {"Brick Wall 7", 4552, "ammu_lan2", "sl_lavicdtwall1", MARB},
  455. {"Brick Wall 8", 10769, "docks2_sfse", "ws_sandstone1", MARB},
  456. {"Brick Wall 9", 9683, "goldengate_sfw", "stonesandkb2_128", MARB},
  457. {"Brick Wall 10", 5418, "idlewood3_lae", "ws_sandstone2", MARB},
  458. {"Brick Wall 11", 12988, "sw_fact02", "ws_sandstone2b", MARB},
  459. {"Brick Wall 12", 18018, "genintintbarb", "GB_midbar01", MARB},
  460. {"Black Concrete", 3975, "lanbloke", "p_floor3", MARB},
  461. {"Black Concrete 2", 14771, "int_brothelint3", "GB_midbar15", MARB},
  462. {"Dark Stone Wall", 17545, "burnsground", "newall1-1128", MARB},
  463. {"White Concrete", 11089, "cf_metals_sfse", "ws_altz_wall8_top", MARB},
  464. {"Gray Concrete", 6052, "law_doontoon", "carpark_256128", MARB},
  465. {"Gray Concrete 2", 14783, "intgarage2aint3", "Bow_Abattoir_Conc2", MARB},
  466. {"Concrete Block", 1214, "metal", "BLOCK2low", MARB},
  467. {"Cracked Yellow Concrete", 14700, "vgshs2int2", "ah_yelbadwall", MARB},
  468. {"Metal Pattern", 12984, "sw_block11", "sw_stairs1", MARB},
  469. {"Rusted Concrete", 10375, "subshops_sfs", "ws_rooftarmac1", MARB},
  470. #define METALS "Metals"
  471. {"Silver Metal", 1560, "7_11_door", "cj_sheetmetal2", METALS},
  472. {"Red Metal", 2130, "cj_kitchen", "CJ_RED", METALS},
  473. {"Scratched Metal", 16640, "a51", "scratchedmetal", METALS},
  474. {"Blue Paneling", 16067, "des_stownmots1", "corugwall1", METALS},
  475. {"Red Paneling", 16067, "des_stownmots1", "corugwallnew6_128", METALS},
  476. {"Yellow Paneling", 18265, "w_town3cs_t", "corugwall_sandy", METALS},
  477. {"Old Purple Metal", 5126, "imrancomp_las2", "ws_oldpaintedblue", METALS},
  478. {"Old Gray Metal", 12858, "wiresnshit", "ws_oldpainted", METALS},
  479. {"Old White Metal", 10820, "roadbridge_sfse", "ws_oldpainted2", METALS},
  480. {"Rusty White Metal", 10820, "roadbridge_sfse", "ws_oldpainted2rusty", METALS},
  481. {"Dull Green Metal", 1257, "bustopm", "CJ_GREENMETAL", METALS},
  482. {"Green Metal", 10770, "carrier_sfse", "ws_floor2", METALS},
  483. {"Gray Metal", 10770, "carrier_sfse", "ws_shipmetal1", METALS},
  484. {"Black Metal", 10770, "carrier_sfse", "ws_shipmetal3", METALS},
  485. {"White Metal", 10770, "carrier_sfse", "ws_shipmetal4", METALS},
  486. {"Light Blue Metal", 11145, "carrierint_sfs", "ws_shipmetal5", METALS},
  487. {"White Metal Tiles", 3262, "privatesign", "ws_metalpanel1", METALS},
  488. {"Black Metal Tiles", 9362, "sfn_byofficeint", "CJ_Black_metal", METALS},
  489. {"Dark Metal", 970, "fences", "blackmetal", METALS},
  490. {"Light Metal Banding", 12960, "sw_church", "banding3_64HV", METALS},
  491. {"Brown Metal Banding", 5408, "tempstuff_lae", "sl_metalbndrust1", METALS},
  492. {"Scratched Metal 2", 3961, "lee_kitch", "metal5", METALS},
  493. {"Scratched Metal 3", 3961, "lee_kitch", "metal6", METALS},
  494. {"Clean Metal Plate", 9361, "sfn_office", "des_facmetal", METALS},
  495. {"Silver Metal 2", 1214, "metal", "CJ_FRAME_Glass", METALS},
  496. {"Sleek Metal", 14581, "ab_mafiasuitea", "barbersmir1", METALS},
  497. {"Metal Door", 13022, "sw_block11a", "Bow_abbmetaldoor", METALS},
  498. {"Metal Door 2", 12980, "sw_block10", "Was_scrpyd_door_dbl_grey", METALS},
  499. {"Bolted White Metal Panel", 10820, "roadbridge_sfse", "banding9_64HV", METALS},
  500. {"Bolted Yellow Metal Panel", 5126, "imrancomp_las2", "banding5_64HV", METALS},
  501. {"Bolted Brown Metal Panel", 3080, "adjumpx", "rustyboltpanel", METALS},
  502. {"Bolted Black Metal", 16322, "a51_stores", "girder2_grey_64HV", METALS},
  503. {"Bolted Red Metal", 5126, "imrancomp_las2", "girder2_red_64HV", METALS},
  504. {"New Bolted White Metal Panel", 16322, "a51_stores", "dish_panel_a", METALS},
  505. {"Metal Plate", 915, "airconext", "CJ_plating", METALS},
  506. {"Gray Metal 2", 4833, "airprtrunway_las", "cj_sheetmetal", METALS},
  507. {"Old Red Metal", 5123, "chemgrnd_las2", "redmetal", METALS},
  508. {"Old Dark Red Metal", 946, "bskball_standext", "drkbrownmetal", METALS},
  509. {"Old Brown Metal", 11145, "carrierint_sfs", "Metalox64", METALS},
  510. {"Brown Rust", 12937, "sw_oldshack", "rustc256128", METALS},
  511. {"Orange Rust", 11395, "corvinsign_sfse", "rustb256128", METALS},
  512. {"Red Rust 1", 18247, "cw_junkyarddigcs_t", "Was_scrpyd_rustmetal", METALS},
  513. {"Red Rust 2", 10844, "genwhse_sfse", "Gen_Gantry_Rust", METALS},
  514. {"Rusty Sheet", 10140, "frieghter2sfe", "sw_olddrum1", METALS},
  515. {"Old Light Blue Metal", 4821, "union_las", "bluemetal03", METALS},
  516. {"Old Dark Blue Metal", 5126, "imrancomp_las2", "bluemetal02", METALS},
  517. {"Old Gray Metal 2", 9029, "vgetrainfnce", "Metal1_128", METALS},
  518. {"Rusty Gray Metal", 17001, "factorycuntw", "Gen_Metal", METALS},
  519. {"Corrugated Sheet", 3246, "cxref_oldwest", "corr_roof1", METALS},
  520. {"Corrugated Sheet 2", 3925, "weemap", "corrRoof_64HV", METALS},
  521. {"Old Corrugated Sheet", 5775, "sunset01_lawn", "ws_corr_metal2", METALS},
  522. {"Rusty Corrugated Sheet", 9680, "tramstatsfw", "ws_corr_metal1", METALS},
  523. {"Tin Roof Pattern", 16071, "des_quarrybelts", "des_oldtinroof", METALS},
  524. {"Strange Metal Pattern", 16322, "a51_stores", "a51_metal1", METALS},
  525. {"Rusty Metal Pattern", 16322, "a51_stores", "Gen_Freight", METALS},
  526. {"Rusty Metal Pattern 2", 10281, "michgar", "Metal2_256128", METALS},
  527. {"White and Blue Metal", 3961, "lee_kitch", "metal2", METALS},
  528. {"Metal Walkway Pattern", 16640, "a51", "sl_metalwalk", METALS},
  529. {"Perforated Metal Plate", 8954, "vgsespras", "sf_spray_floor2", METALS},
  530. {"Checker Plate", 9583, "bigshap_sfw", "shipfloor_sfw", METALS},
  531. {"Checker Plate 2", 5138, "ground_las2", "metpat64" , METALS},
  532. {"Checker Plate 3", 964, "cj_crate_will", "CJ_FLIGHT_CASE", METALS},
  533. #define POSTERS "Paintings"
  534. {"The Discharger", 13761, "lahills_whisky", "discharger", POSTERS},
  535. {"Slam It In", 4833, "airprtrunway_las", "bobo_2", POSTERS},
  536. {"MC Club", 5733, "melrose08_lawn", "base5_1", POSTERS},
  537. {"Mad Dog", 6357, "sunstrans_law2", "dogbill01", POSTERS},
  538. {"Love Fist Poster", 6354, "sunset03_law2", "billLA01", POSTERS},
  539. {"Dandell Poster", 6354, "sunset03_law2", "billLA02", POSTERS},
  540. {"Map of San Andreas", 16644, "a51_detailstuff", "a51_map", POSTERS},
  541. {"Candy Suxxx", 6357, "sunstrans_law2", "SunBillB05", POSTERS},
  542. {"Candy Suxxx 2", 2254, "picture_frame_clip", "CJ_PAINTING9", POSTERS},
  543. {"Inquisitive Man", 1583, "targets", "target1", POSTERS},
  544. {"Inquisitive Woman", 1583, "targets", "target2", POSTERS},
  545. {"Inquisitive Woman 2", 1583, "targets", "target3", POSTERS},
  546. {"Summer Sky", 3925, "weemap", "skyclouds", POSTERS},
  547. {"Jesus Saves", 17700, "gangblok1_lae2", "mural01_LA", POSTERS},
  548. {"Gant Bridge", 10434, "hashblock2b_sfs", "ws_mural2", POSTERS},
  549. {"San Fierro Skyline", 10439, "hashblock3_sfs", "ws_mural1", POSTERS},
  550. {"Black And White Mural", 5142, "lashops1b_las2", "mural03_LA", POSTERS},
  551. {"Colored Mural", 5134, "wasteland_las2", "mural05_LA", POSTERS},
  552. {"Gant Bridge 2", 2254, "picture_frame_clip", "CJ_PAINTING24", POSTERS},
  553. {"SF Pointy Building", 11631, "mp_ranchcut", "CJ_PAINTING20", POSTERS},
  554. {"Santa Maria Lifeguard", 2254, "picture_frame_clip", "CJ_PAINTING12", POSTERS},
  555. {"Seaside Painting", 11631, "mp_ranchcut", "CJ_PAINTING6", POSTERS},
  556. {"Bone County", 2254, "picture_frame_clip", "CJ_PAINTING26", POSTERS},
  557. {"Aircraft Photos", 16407, "des_airfieldhus", "plane_photos1", POSTERS},
  558. {"Yellow Car", 2254, "picture_frame_clip", "CJ_PAINTING2", POSTERS},
  559. {"Los Santos", 2254, "picture_frame_clip", "CJ_PAINTING3", POSTERS},
  560. {"Pier Lights", 2254, "picture_frame_clip", "CJ_PAINTING4", POSTERS},
  561. {"San Fierro", 2267, "picture_frame", "CJ_PAINTING14", POSTERS},
  562. {"Sunset Bridge", 2267, "picture_frame", "CJ_PAINTING30", POSTERS},
  563. {"San Fierro Bridge", 2267, "picture_frame", "CJ_PAINTING28", POSTERS},
  564. {"Landscape 1", 2267, "picture_frame", "CJ_PAINTING11", POSTERS},
  565. {"Landscape 2", 2267, "picture_frame", "CJ_PAINTING23", POSTERS},
  566. {"Landscape 3", 2267, "picture_frame", "CJ_PAINTING35", POSTERS},
  567. {"Landscape 4", 2267, "picture_frame", "CJ_PAINTING37", POSTERS},
  568. {"Palms", 2254, "picture_frame_clip", "CJ_PAINTING8", POSTERS},
  569. {"Bowling", 2254, "picture_frame_clip", "CJ_PAINTING27", POSTERS},
  570. {"Sailships", 2267, "picture_frame", "CJ_PAINTING34", POSTERS},
  571. {"Ship", 2267, "picture_frame", "CJ_PAINTING19", POSTERS},
  572. {"Ship 2", 2267, "picture_frame", "CJ_PAINTING36", POSTERS},
  573. {"Beach Sunset", 14803, "BDupsNew", "Bdup2_poster", POSTERS},
  574. {"Tropical 1", 11707, "cuntcuts", "GB_canvas17", POSTERS},
  575. {"Tropical 2", 11707, "cuntcuts", "GB_canvas18", POSTERS},
  576. {"Water Droplet", 14708, "labig1int2", "GB_restaursmll53", POSTERS},
  577. {"College Friends", 14708, "labig1int2", "GB_photo01", POSTERS},
  578. {"Casually Dressed Woman", 14708, "labig1int2", "GB_photo02", POSTERS},
  579. {"Cat 1", 2267, "picture_frame", "CJ_PAINTING1", POSTERS},
  580. {"Cat 2", 2267, "picture_frame", "CJ_PAINTING7", POSTERS},
  581. {"Flowers 1", 2267, "picture_frame", "CJ_PAINTING18", POSTERS},
  582. {"Flowers 2", 2267, "picture_frame", "CJ_PAINTING29", POSTERS},
  583. {"Leafs", 2267, "picture_frame", "CJ_PAINTING21", POSTERS},
  584. {"Strange Mosaic Art", 2267, "picture_frame", "CJ_PAINTING16", POSTERS},
  585. {"Modern Art", 2254, "picture_frame_clip", "CJ_PAINTING15", POSTERS},
  586. {"Modern Art 2", 14708, "labig1int2", "HS_art", POSTERS},
  587. {"Unknown Text", 11631, "mp_ranchcut", "CJ_PAINTING22", POSTERS},
  588. #define WALLPAPERS "Wallpapers"
  589. {"Purple Wallpaper", 17925, "lae2fake_int", "burglry_wall4", WALLPAPERS},
  590. {"Turquoise Wallpaper", 5706, "ci_studio5", "tw@t_wall1", WALLPAPERS},
  591. {"White Wall With Blue Border", 8391, "ballys01", "ballywall01_64", WALLPAPERS},
  592. {"Dirty White Wall", 5135, "groundb_las2", "snpedwar2", WALLPAPERS},
  593. {"Yellow and Orange Wall", 8639, "chinatownmall", "ctmall15_128", WALLPAPERS},
  594. {"Cheap Blue Paint", 5787, "melrose02_lawn", "LAbluewall", WALLPAPERS},
  595. {"Cheap Green Paint", 5787, "melrose02_lawn", "LAgreenwall", WALLPAPERS},
  596. {"Cheap Red Paint", 5787, "melrose02_lawn", "LAredwall", WALLPAPERS},
  597. {"White Concrete Wall", 8675, "wddngchpl02", "vgschapelwall01_64", WALLPAPERS},
  598. {"Pink Concrete wall", 8401, "vgshpground", "vegaspawnwall_128", WALLPAPERS},
  599. {"Brown Concrete wall", 16150, "ufo_bar", "brwall_128", WALLPAPERS},
  600. {"Grey Concrete wall", 6286, "santamonhus1", "studwalltop_law", WALLPAPERS},
  601. {"Light Gray Concrete Wall", 4981, "wiresetc2_las", "lasunion7", WALLPAPERS},
  602. {"Peeling Paint 1", 11389, "hubint1_sfse", "ws_peeling_ceiling1_BIG", WALLPAPERS},
  603. {"Peeling Paint 2", 17566, "contachou1_lae2", "comptwall27", WALLPAPERS},
  604. {"Peeling Paint 3", 17566, "contachou1_lae2", "ws_peeling2", WALLPAPERS},
  605. {"Peeling Paint 4", 11092, "burgalrystore_sfse", "ws_peeling_ceiling2", WALLPAPERS},
  606. {"Painted Concrete 1", 14783, "intgarage2aint3", "comptwall3", WALLPAPERS},
  607. {"Painted Concrete 2", 14700, "vgshs2int2", "ah_BADCEIL", WALLPAPERS},
  608. {"Painted Concrete 3", 14700, "vgshs2int2", "ah_RFPLSTR", WALLPAPERS},
  609. {"Painted Concrete 4", 14700, "vgshs2int2", "ah_grnplstr", WALLPAPERS},
  610. {"Painted Tiles", 14701, "lahss2int2", "HS1_Kwall2", WALLPAPERS},
  611. {"Low Wood Paneling", 14708, "labig1int2", "GB_restaursmll32", WALLPAPERS},
  612. {"Low Green Tile Paneling", 14709, "lamidint2", "mp_apt1_bathtiles", WALLPAPERS},
  613. {"Wood Paneling 1", 14709, "lamidint2", "mp_apt1_roomwall", WALLPAPERS},
  614. {"Wood Paneling 2", 14709, "lamidint2", "mp_apt1_woodpanel", WALLPAPERS},
  615. {"Wood Paneling 3", 14777, "int_casinoint3", "GB_midbar09", WALLPAPERS},
  616. {"Wood Paneling 4", 18029, "genintintsmallrest", "GB_restaursmll09", WALLPAPERS},
  617. {"Crosses w/ Wood Border", 18018, "genintintbarb", "GB_midbar07", WALLPAPERS},
  618. {"Fancy Paneling", 14431, "dr_gsnew", "mp_gs_wall", WALLPAPERS},
  619. {"Painted Concrete 5", 14388, "dr_gsnew", "mp_gs_wall1", WALLPAPERS},
  620. {"Dark Bordered Wallpaper", 14388, "dr_gsnew", "mp_gs_libwall", WALLPAPERS},
  621. {"Orange Wallaper", 14710, "vgshm3int2", "HSV_2carpet1", WALLPAPERS},
  622. {"Red Wallpaper", 14703, "vghsb3int2", "HS2_3Carpet1", WALLPAPERS},
  623. {"Bright Artex Pattern", 11704, "bdupsnew", "Bdup2_Artex", WALLPAPERS},
  624. {"Fancy Red Dragon Design", 3533, "triadprops_lvs", "walpaper_dragn", WALLPAPERS},
  625. {"Slight Purple Artex Pattern", 14710, "vgshm3int2", "HS2_Artex2", WALLPAPERS},
  626. {"Green Artex Pattern", 14701, "lahss2int2", "HS2_Artex6", WALLPAPERS},
  627. {"White Artex Pattern", 14701, "lahss2int2", "HS2_Artex3", WALLPAPERS},
  628. {"Green Stripes", 1675, "wshxrefhse", "washdecowall3256", WALLPAPERS},
  629. {"Wallpaper 1", 11704, "bdupsnew", "Bdup2_wallpaper", WALLPAPERS},
  630. {"Wallpaper 2", 11704, "bdupsnew", "Bdup2_wallpaperB", WALLPAPERS},
  631. {"Wallpaper 3", 11707, "cuntcuts", "GB_tile01", WALLPAPERS},
  632. {"Wallpaper 4", 14710, "vgshm3int2", "HSV_3wall3", WALLPAPERS},
  633. {"Wallpaper 5", 14701, "lahss2int2", "HS1_wall2", WALLPAPERS},
  634. {"Wallpaper 6", 14701, "lahss2int2", "HS1_wall3", WALLPAPERS},
  635. {"Wallpaper 7", 14701, "lahss2int2", "HS1_wall4", WALLPAPERS},
  636. {"Wallpaper 8", 14712, "lahss2bint2", "HS3_wall2", WALLPAPERS},
  637. {"Wallpaper 9", 14712, "lahss2bint2", "HS1_2Wall2", WALLPAPERS},
  638. {"Wallpaper 10", 14702, "masmall3int2", "HS3_wall3", WALLPAPERS},
  639. {"Wallpaper 11", 14702, "masmall3int2", "HS3_wall5", WALLPAPERS},
  640. {"Wallpaper 12", 14702, "masmall3int2", "HS3_wall6", WALLPAPERS},
  641. {"Wallpaper 13", 14703, "vghsb3int2", "HS2_2Wall2", WALLPAPERS},
  642. {"Wallpaper 14", 14703, "vghsb3int2", "HS2_3Wall1", WALLPAPERS},
  643. {"Wallpaper 15", 14703, "vghsb3int2", "HS4_Wall7", WALLPAPERS},
  644. {"Wallpaper 16", 14709, "lamidint2", "mp_apt1_kitchwallpaper", WALLPAPERS},
  645. {"Wallpaper 17", 14707, "labig3int2", "WH_walls", WALLPAPERS},
  646. {"Wallpaper 18", 14711, "vgshm2int2", "HS2_4wall1", WALLPAPERS},
  647. {"Wallpaper 19", 15034, "genhotelsave", "HS2_2Wall4", WALLPAPERS},
  648. {"Wallpaper 20", 14590, "mafcastopfoor", "donut_wall1", WALLPAPERS},
  649. {"Wallpaper 21", 5727, "sunrise04_lawn", "fredwall2_LAwN", WALLPAPERS},
  650. {"Wallpaper 22", 14702, "masmall3int2", "HS3_wall4", WALLPAPERS},
  651. #define MISC "Misc"
  652. {"Graffiti", 18200, "w_town2cs_t", "Bow_door_graffiti_128", MISC},
  653. {"Chinese paint", 5716, "sunrise02_lawn", "manndoor_law", MISC},
  654. {"Phone Sign", 1229, "signs", "phonesign_128", MISC},
  655. {"Parking Sign", 1229, "signs", "NoParking2_128", MISC},
  656. {"Pro Laps", 6351, "rodeo02_law2", "prolsign01_LA", MISC},
  657. {"SPAVCEY", 5771, "melrose11_lawn", "melrsign08_LA", MISC},
  658. {"US Flag", 9593, "hosbibalsfw", "dt_cops_US_flag", MISC},
  659. {"Presidio", 9259, "presidio01_sfn", "stainwin_law", MISC},
  660. {"Fading Yellow", 9494, "chinatownsfe", "chtown4_sf", MISC},
  661. {"Fading Blue", 9494, "chinatownsfe", "chtown6_sf", MISC},
  662. {"Fading Green", 9494, "chinatownsfe", "chtown8_sf", MISC},
  663. {"Hay", 12911, "sw_farm1", "forestfloorbranch256", MISC},
  664. {"Hay and Wood", 12911, "sw_farm1", "sw_barnfloor1", MISC},
  665. {"Garage Door", 5138, "ground_las2", "alleydoor8", MISC},
  666. {"Flamingos", 8488, "flamingo1", "flmngo01_256", MISC},
  667. {"Wood Framed Windows", 14771, "int_brothelint3", "GB_nastybar13", MISC},
  668. {"White Framed Windows", 14710, "vgshm3int2", "kit_windo_12", MISC},
  669. {"Creepy Old Window", 14700, "vgshs2int2", "ah_FLKWIN", MISC},
  670. {"Fancy Window", 14710, "vgshm3int2", "windo_blinds", MISC},
  671. {"Blue Material", 14770, "genintgenintint3", "GB_midbar04", MISC},
  672. {"Blue Material 2", 14771, "int_brothelint3", "GB_midbar10", MISC},
  673. {"Black Material", 15046, "svcunthoose", "csGarageTrolley01psd", MISC},
  674. {"Bordered Black Material", 15046, "svcunthoose", "csheistbox01", MISC},
  675. {"Red Cushions", 14838, "lee_stripclub", "Strip_bar_wall1", MISC},
  676. {"Funky 1", 14808, "lee_strip2", "strip_neon_Curtain", MISC},
  677. {"Funky 2", 14808, "lee_strip2", "strip_neon_flat", MISC},
  678. {"Glass Wall 1", 16639, "a51_labs", "ws_trainstationwin1", MISC},
  679. {"Glass Wall 2", 10973, "mall_sfse", "ws_trainstationwin2", MISC},
  680. {"Glass 1", 1649, "wglass", "carshowwin2", MISC},
  681. {"Glass 2", 5722, "sunrise01_lawn", "plainglass", MISC},
  682. {"Water", 3947, "rczero_track", "waterclear256", MISC},
  683. {"Snow", 3914, "snow", "mp_snow", MISC},
  684. {"Blank", 1337, "none", "none", MISC},
  685. {"Classic Window", 15048, "labigsave", "AH_windows", MISC},
  686. {"Wood Framed Simple Window", 14661, "int_tatoo", "mp_shop_window", MISC},
  687. {"Metal Framed Window", 14495, "sweetshall", "mcstraps_window", MISC},
  688. {"Metal Framed Black Windows", 14736, "whorerooms", "AH_cheapwindow", MISC},
  689. {"Door 'Males Only'", 18008, "intclothesa", "CJ_VICT_DOOR", MISC},
  690. {"Door 'Females Only'", 18008, "intclothesa", "CJ_VICT_DOOR2", MISC},
  691. {"Gold", 14707, "labig3int2", "gold128", MISC},
  692. {"Gold 2", 14607, "triad_main", "buddha_gold", MISC},
  693. {"Booger Green ", 19527, "Cauldron1", "AlienLiquid1", MISC},
  694. {"Fading Dark Blue", 14639, "traidman", "ab_aquarium", MISC},
  695. {"Glass 3", 14755, "sfhss2", "CJ_FRAME_Glass", MISC},
  696. {"Glass 4", 1978, "kbroul1", "shelf_glas", MISC},
  697. {"Dirty Glass", 914, "industrialext", "CJ_GEN_GLASS2", MISC},
  698. {"Dirty Glass 2", 10713, "gayclub_sfs", "CJ_GEN_GLASS2", MISC},
  699. {"Black Rubber", 18018, "genintintbarb", "CJ_BLACK_RUB2", MISC},
  700. {"White Formica", 1770, "cj_tables", "FORMICA1", MISC},
  701. {"Water 2", 18742, "MatTextures", "waterclear256", MISC},
  702. {"Water 3", 19841, "vegaswaterfall", "newaterfal1_256", MISC},
  703. {"Unnamed Mesh", 3280, "country_breakable", "ws_castironwalk", MISC},
  704. {"Camouflage Net", 2068, "cj_ammo_net", "CJ_cammonet", MISC},
  705. {"Fading Yellow Glass" , 19197,"EnExMarkers", "enex", MISC},
  706. {"Basket Pattern 1", 8534, "tikimotel", "sa_wood01_128", MISC},
  707. {"Basket Pattern 2", 8534, "tikimotel", "sa_wood03_128", MISC},
  708. {"Basket Pattern 3", 8534, "tikimotel", "sa_wood04_128", MISC},
  709. {"Transperancy", 18888, "ForceFields", "white", MISC},
  710. {"Unnamed Ceiling 1", 11312, "carshow_sfse", "ws_officy_ceiling", MISC},
  711. {"Unnamed Ceiling 2", 18007, "int_cutbar3", "ceilingtile1_128", MISC},
  712. {"Unnamed Ceiling 3", 18026, "scummy", "ceiling_256", MISC},
  713. {"Unnamed Ceiling 4", 18038, "vegas_munation", "gun_ceiling1", MISC},
  714. {"Unnamed Ceiling 5", 18038, "vegas_munation", "gun_ceiling2", MISC},
  715. {"Unnamed Ceiling 6", 18038, "vegas_munation", "gun_ceiling3", MISC},
  716. {"Unnamed Ceiling 7", 14534, "ab_wooziea", "dt_office_roof", MISC},
  717. {"Unnamed Ceiling 8", 14526, "sweetsmain", "ah_whitpanelceil", MISC},
  718. {"Unnamed Ceiling 9", 15042, "svsfsm", "AH_walltile2", MISC},
  719. {"Unnamed Ceiling 10", 18045, "gen_munation", "mp_diner_ceilingdirt", MISC},
  720. {"Dark Wood Border", 14431, "dr_gsnew", "mp_gs_border", MISC},
  721. {"Light Wood Border", 14431, "dr_gsnew", "mp_gs_border1", MISC},
  722. {"Old Wood Panel", 14700, "vgshs2int2", "AH_oldwdpan", MISC},
  723. {"Wood Panel", 14431, "dr_gsnew", "mp_gs_woodpanel", MISC},
  724. {"Wood Panel 2", 14750, "sfhsm2", "ah_pnwainscot3", MISC},
  725. {"Wood Panel 3", 15048, "labigsave", "AH_barpanelM", MISC},
  726. {"Wood Panel 4", 14748, "sfhsm1", "ah_pnwainscot", MISC},
  727. {"Wood Panel 5", 14735, "newcrak", "AH_wdpanscum", MISC},
  728. {"Wood Panel 6", 14853, "gen_pol_vegas", "mp_cop_panel", MISC},
  729. {"Wood Panel 7", 14789, "ab_sfgymmain", "ab_panelWall1", MISC},
  730. {"Wood Panel 8", 14789, "ab_sfgymmain", "ab_panelWall2", MISC},
  731. {"Perforated Wood", 18026, "scummy", "CJ_BACK_BOARD", MISC},
  732. {"Funky 3", 14832, "lee_stripclub", "mirror_ref1", MISC},
  733. {"Unnamed something 2", 1389, "cranes_dyn2", "ws_sheetsteel", MISC},
  734. {"Unnamed something 3", 1824, "gamingtble", "crapside_128", MISC},
  735. {"Unnamed Something 4", 2788, "pizza_furn", "CJ_CORD", MISC},
  736. {"Black Leather", 1753, "cj_sofa", "CJ-COUCHL2", MISC},
  737. {"Brown Leather", 1753, "cj_sofa", "CJ-COUCHL1", MISC},
  738. {"Red Leather", 1770, "cj_tables", "CJ_RED_LEATHER", MISC},
  739. {"Pink 'Leather'", 2487, "rc_shop_hanger", "CJ_kite2", MISC},
  740. {"Blue 'Leather'", 2487, "rc_shop_hanger", "CJ_kite3", MISC},
  741. {"Unnamed Concrete Wall 1", 17925, "lae2fake_int", "ab_wall3", MISC},
  742. {"Unnamed Concrete Wall 2", 18060, "mp_diner2", "mp_diner_wall", MISC},
  743. {"Unnamed Material", 13594, "kickstart", "ah_bluBADWL", MISC},
  744. {"Red Square", 1898, "kb_wheel1", "wheel_o_2", MISC},
  745. {"Green Square", 1898, "kb_wheel1", "wheel_o_2f", MISC},
  746. {"Light Green Square", 1898, "kb_wheel1", "wheel_o_2b", MISC},
  747. {"Blue Square", 1898, "kb_wheel1", "wheel_o_2c", MISC},
  748. {"Light Blue Square", 1898, "kb_wheel1", "wheel_o_2d", MISC},
  749. {"Yellow Square", 1898, "kb_wheel1", "wheel_o_2e", MISC},
  750. {"Unnamed Asian Wall", 14620, "triad_bar", "triad_decor1", MISC},
  751. {"Unnamed Red Something", 6989, "vgnfremnt1", "casinolights4_128", MISC},
  752. {"Unnamed Blue Something", 6989, "vgnfremnt1", "casinolightsblu_128", MISC},
  753. {"Unnamed Yellow Something", 6989, "vgnfremnt1", "casinolightsyel_128", MISC},
  754. {"Funky Red Tiles", 6989, "vgnfremnt1", "casinolights9_256", MISC},
  755. {"Unnamed PC Screen 1", 9822, "ship_brijsfw", "ship_screen1sfw", MISC},
  756. {"Unnamed PC Screen 2", 9822, "ship_brijsfw", "ship_greenscreen1", MISC},
  757. {"TV Screen", 1781, "cj_tv", "CJ_TV_SCREEN", MISC},
  758. {"TV Noise", 14640, "chinese_furn", "ab_tv_noise", MISC},
  759. {"Empty Golden Frame", 6989, "vgnfremnt1", "goldframe_256", MISC},
  760. {"Blood", 19836, "particle", "bloodpool_64", MISC},
  761. {"Blood 2", 18067, "intclothes_acc", "mp_cloth_vicrug", MISC},
  762. {"Unnamed Creepy Concrete", 14888, "gf6", "mp_gimp_basewall", MISC},
  763. {"Seeing Eye", 14839, "lee_strippriv", "Strip_Sign12", MISC},
  764. {"Unnamed Glass 1", 2176, "casino_props", "flameOptic", MISC},
  765. {"Unnamed Glass 2", 2176, "casino_props", "tubelite", MISC}
  766. };
  767. #define MaterialRes Dialog_Show(playerid, TextureResources, DIALOG_STYLE_LIST, "Texture Category:", "Material Colors\nPrinted Fabrics\nWooden\nTiles\nBuilding\nMetals\nPaintings\nWallpapers\nMisc", "Select", "Exit");
  768. enum MAT_COLORS
  769. {
  770. ColorHex,
  771. ColorName[32]
  772. };
  773. new MaterialColors[][MAT_COLORS] =
  774. {
  775. {0, "none"},
  776. {0xFFF0F8FF, "Alice Blue"},
  777. {0xFFFAEBD7, "Antique White"},
  778. {0xFF00FFFF, "Aqua"},
  779. {0xFF7FFFD4, "Aquamarine"},
  780. {0xFFF0FFFF, "Azure"},
  781. {0xFFF5F5DC, "Beige"},
  782. {0xFFFFE4C4, "Bisque"},
  783. {0xFF000000, "Black"},
  784. {0xFFFFEBCD, "Blanched Almond"},
  785. {0xFF0000FF, "Blue"},
  786. {0xFF8A2BE2, "Blue Violet"},
  787. {0xFFA52A2A, "Brown"},
  788. {0xFFDEB887, "Burly Wood"},
  789. {0xFF5F9EA0, "Cadet Blue"},
  790. {0xFF7FFF00, "Chartreuse"},
  791. {0xFFD2691E, "Chocolate"},
  792. {0xFFFF7F50, "Coral"},
  793. {0xFF6495ED, "Cornflower Blue"},
  794. {0xFFFFF8DC, "Cornsilk"},
  795. {0xFFDC143C, "Crimson"},
  796. {0xFF00FFFF, "Cyan"},
  797. {0xFF00008B, "Dark Blue"},
  798. {0xFF008B8B, "Dark Cyan"},
  799. {0xFFB8860B, "Dark Goldenrod"},
  800. {0xFFA9A9A9, "Dark Gray"},
  801. {0xFF006400, "Dark Green"},
  802. {0xFFBDB76B, "Dark Khaki"},
  803. {0xFF8B008B, "Dark Magenta"},
  804. {0xFF556B2F, "Dark Olive Green"},
  805. {0xFFFF8C00, "Dark Orange"},
  806. {0xFF9932CC, "Dark Orchid"},
  807. {0xFF8B0000, "Dark Red"},
  808. {0xFFE9967A, "Dark Salmon"},
  809. {0xFF8FBC8F, "Dark Sea Green"},
  810. {0xFF483D8B, "Dark Slate Blue"},
  811. {0xFF2F4F4F, "Dark Slate Gray"},
  812. {0xFF00CED1, "Dark Turquoise"},
  813. {0xFF9400D3, "Dark Violet"},
  814. {0xFFFF1493, "Deep Pink"},
  815. {0xFF00BFFF, "Deep Sky Blue"},
  816. {0xFF696969, "Dim Gray"},
  817. {0xFF1E90FF, "Dodger Blue"},
  818. {0xFFB22222, "Firebrick"},
  819. {0xFFFFFAF0, "Floral White"},
  820. {0xFF228B22, "Forest Green"},
  821. {0xFFFF00FF, "Fuchsia"},
  822. {0xFFDCDCDC, "Gainsboro"},
  823. {0xFFF8F8FF, "Ghost White"},
  824. {0xFFFFD700, "Gold"},
  825. {0xFFDAA520, "Goldenrod"},
  826. {0xFF808080, "Gray"},
  827. {0xFF008000, "Green"},
  828. {0xFFADFF2F, "Green Yellow"},
  829. {0xFFF0FFF0, "Honeydew"},
  830. {0xFFFF69B4, "Hot Pink"},
  831. {0xFFCD5C5C, "Indian Red"},
  832. {0xFF4B0082, "Indigo"},
  833. {0xFFFFFFF0, "Ivory"},
  834. {0xFFF0E68C, "Khaki"},
  835. {0xFFE6E6FA, "Lavender"},
  836. {0xFFFFF0F5, "Lavender Blush"},
  837. {0xFF7CFC00, "Lawn Green"},
  838. {0xFFFFFACD, "Lemon Chiffon"},
  839. {0xFFADD8E6, "Light Blue"},
  840. {0xFFF08080, "Light Coral"},
  841. {0xFFE0FFFF, "Light Cyan"},
  842. {0xFFFAFAD2, "Light Goldenrod Yellow"},
  843. {0xFFD3D3D3, "Light Gray"},
  844. {0xFF90EE90, "Light Green"},
  845. {0xFFFFB6C1, "Light Pink"},
  846. {0xFFFFA07A, "Light Salmon"},
  847. {0xFF20B2AA, "Light Sea Green"},
  848. {0xFF87CEFA, "Light Sky Blue"},
  849. {0xFF778899, "Light Slate Gray"},
  850. {0xFFB0C4DE, "Light Steel Blue"},
  851. {0xFFFFFFE0, "Light Yellow"},
  852. {0xFF00FF00, "Lime"},
  853. {0xFF32CD32, "Lime Green"},
  854. {0xFFFAF0E6, "Linen"},
  855. {0xFFFF00FF, "Magenta"},
  856. {0xFF800000, "Maroon"},
  857. {0xFF66CDAA, "Medium Aquamarine"},
  858. {0xFF0000CD, "Medium Blue"},
  859. {0xFFBA55D3, "Medium Orchid"},
  860. {0xFF9370DB, "Medium Purple"},
  861. {0xFF3CB371, "Medium Sea Green"},
  862. {0xFF7B68EE, "Medium Slate Blue"},
  863. {0xFF00FA9A, "Medium Spring Green"},
  864. {0xFF48D1CC, "Medium Turquoise"},
  865. {0xFFC71585, "Medium Violet Red"},
  866. {0xFF191970, "Midnight Blue"},
  867. {0xFFF5FFFA, "Mint Cream"},
  868. {0xFFFFE4E1, "Misty Rose"},
  869. {0xFFFFE4B5, "Moccasin"},
  870. {0xFFFFDEAD, "Navajo White"},
  871. {0xFF000080, "Navy"},
  872. {0xFFFDF5E6, "Old Lace"},
  873. {0xFF808000, "Olive"},
  874. {0xFF6B8E23, "Olive Drab"},
  875. {0xFFFFA500, "Orange"},
  876. {0xFFFF4500, "Orange Red"},
  877. {0xFFDA70D6, "Orchid"},
  878. {0xFFEEE8AA, "Pale Goldenrod"},
  879. {0xFF98FB98, "Pale Green"},
  880. {0xFFAFEEEE, "Pale Turquoise"},
  881. {0xFFDB7093, "Pale Violet Red"},
  882. {0xFFFFEFD5, "Papaya Whip"},
  883. {0xFFFFDAB9, "Peach Puff"},
  884. {0xFFCD853F, "Peru"},
  885. {0xFFFFC0CB, "Pink"},
  886. {0xFFDDA0DD, "Plum"},
  887. {0xFFB0E0E6, "Powder Blue"},
  888. {0xFF800080, "Purple"},
  889. {0xFFFF0000, "Red"},
  890. {0xFFBC8F8F, "Rosy Brown"},
  891. {0xFF4169E1, "Royal Blue"},
  892. {0xFF8B4513, "Saddle Brown"},
  893. {0xFFFA8072, "Salmon"},
  894. {0xFFF4A460, "Sandy Brown"},
  895. {0xFF2E8B57, "Sea Green"},
  896. {0xFFFFF5EE, "SeaShell"},
  897. {0xFFA0522D, "Sienna"},
  898. {0xFFC0C0C0, "Silver"},
  899. {0xFF87CEEB, "Sky Blue"},
  900. {0xFF6A5ACD, "Slate Blue"},
  901. {0xFF708090, "Slate Gray"},
  902. {0xFFFFFAFA, "Snow"},
  903. {0xFF00FF7F, "Spring Green"},
  904. {0xFF4682B4, "Steel Blue"},
  905. {0xFFD2B48C, "Tan"},
  906. {0xFF008080, "Teal"},
  907. {0xFFD8BFD8, "Thistle"},
  908. {0xFFFF6347, "Tomato"},
  909. {0xFF40E0D0, "Turquoise"},
  910. {0xFFEE82EE, "Violet"},
  911. {0xFFF5DEB3, "Wheat"},
  912. {0xFFFFFFFF, "White"},
  913. {0xFFF5F5F5, "White Smoke"},
  914. {0xFFFFFF00, "Yellow"},
  915. {0xFF9ACD32, "Yellow Green"}
  916. };
  917. new const componentSlotNames[][] = {
  918. {"Spoiler"},
  919. {"Hood"},
  920. {"Roof"},
  921. {"Sideskirt"},
  922. {"Lamps"},
  923. {"Nitro"},
  924. {"Exhaust"},
  925. {"Wheels"},
  926. {"Stereo"},
  927. {"Hydraulics"},
  928. {"Front Bumper"},
  929. {"Rear Bumper"},
  930. {"Vent Right"},
  931. {"Vent Left"}
  932. };
  933. enum e_Players
  934. {
  935. PlayerText:pText[103],
  936. PlayerBar:pBars[2],
  937. pIgnoreTD,
  938. pFooter,
  939. pID,
  940. pIP[16],
  941. pLoggedIn,
  942. pSetupInfo,
  943. pRegistered[32],
  944. pOrigin[24],
  945. pGender,
  946. pAge,
  947. pSkin,
  948. pUniform,
  949. pOutfit,
  950. pOutfitIndex,
  951. pOutfitTick,
  952. Float:pSpawn[4],
  953. Float:pHealth,
  954. Float:pArmor,
  955. pInterior,
  956. pWorld,
  957. Float:pTraveled,
  958. pPocketMoney,
  959. pSavingsMoney,
  960. pBankMoney,
  961. pAdmin,
  962. pMapper,
  963. pMapperDuty,
  964. pJailType,
  965. pJailTime,
  966. pMuted,
  967. pFitness,
  968. pMinutes,
  969. pSeconds,
  970. pHoursOnline,
  971. pJob,
  972. pJobPaycheck,
  973. pPaycheck,
  974. pWorkoutTime,
  975. pGymMembership,
  976. pPhoneLastKnown,
  977. pPhone,
  978. pPhoneOff,
  979. pPhoneSMS,
  980. pDeathState,
  981. pDeathTime,
  982. pHospital,
  983. pShowPM,
  984. pShowSpeed,
  985. pShowFuel,
  986. pSpawnedCar,
  987. pShowTime,
  988. pShowOOC,
  989. pShowReports,
  990. pShowAdmin,
  991. pShowSupporter,
  992. pBleeding,
  993. pBleedingTime,
  994. pPaymentType,
  995. pBankAccount,
  996. pSupporter,
  997. pVeteran,
  998. pFactionMod,
  999. pFaction,
  1000. pFactionID,
  1001. pFactionRank,
  1002. pFactionLeader,
  1003. pFactionOffer,
  1004. pFriskOffer,
  1005. pTazer,
  1006. pTazed,
  1007. pHandcuffed,
  1008. pCuffedBy,
  1009. pWarrants,
  1010. pCharges,
  1011. pAdminName[24],
  1012. pAdminTitle[24],
  1013. pPackageOrder,
  1014. pPackageType,
  1015. pPackageGrams,
  1016. pPackageTime,
  1017. pCarLicense,
  1018. pGunLicense,
  1019. pPilotLicense,
  1020. pCDL, // Trucker License
  1021. pAdTime,
  1022. pRentHouse,
  1023. pMaskID,
  1024. pMaskTag,
  1025. pHideAdmin,
  1026. pBrokenLeg,
  1027. pChatStyle,
  1028. pWalkStyle,
  1029. pChannel,
  1030. pCamera,
  1031. pDonator,
  1032. pExpiryDate,
  1033. pNameChanges,
  1034. pNameChange[MAX_PLAYER_NAME],
  1035. pBlind,
  1036. pNicks,
  1037. pSession,
  1038. pSessionCaller,
  1039. pSpawnType,
  1040. pSpawnExtra,
  1041. pCrashed,
  1042. Float:pDistance[3],
  1043. Text3D:pPausedText,
  1044. Text3D:pInjuredText,
  1045. pFurnitureMenu,
  1046. pAccessoryMenu,
  1047. pEditJob,
  1048. pEditRank,
  1049. pSafeMenu,
  1050. pTrashbin,
  1051. pSelected,
  1052. pEditUniform,
  1053. pEditEquipment,
  1054. pEditAccessory,
  1055. pAccessoryName[32],
  1056. pAccessoryModel,
  1057. pSelectedItem,
  1058. pNotebookID,
  1059. pSendText,
  1060. pBank,
  1061. pCategory,
  1062. pPreviewIndex,
  1063. pHouse,
  1064. pCompany,
  1065. pProduct,
  1066. pProductName[24],
  1067. pFoodType,
  1068. pFoodPrice,
  1069. pTarget,
  1070. pSetStaff,
  1071. pHotwire,
  1072. pHotwireTime,
  1073. pStartEngine,
  1074. pSpectate,
  1075. pLastReport,
  1076. pSupportTime,
  1077. pBanPage,
  1078. pLights,
  1079. pHouseInfo,
  1080. pCompanyInfo,
  1081. pBuildingInfo,
  1082. pSetPosition,
  1083. pFlashOn,
  1084. pPaused,
  1085. pLastUpdate,
  1086. pFireTime,
  1087. pWorkout,
  1088. pWeight,
  1089. pReps,
  1090. pSpeedLevel,
  1091. pDistanceRan,
  1092. pGoods,
  1093. pMining,
  1094. pJobStage,
  1095. pObject,
  1096. pWorking,
  1097. pWorkVehicle,
  1098. pBuyOutfit,
  1099. pSitting,
  1100. pCarConfirm,
  1101. pAdjustSpawn,
  1102. pRental,
  1103. pViewStats,
  1104. pStatsPage,
  1105. pParkTime,
  1106. pChoose,
  1107. pEdit,
  1108. pEditID,
  1109. pHouseEdit,
  1110. pTransfer,
  1111. pCalling,
  1112. pCaller,
  1113. pPayphone,
  1114. pInsideTaxi,
  1115. pPassenger,
  1116. pTaxiMeter,
  1117. pTaxiTime,
  1118. bool:pTaxiDuty,
  1119. pTaxiFare,
  1120. pRefuel,
  1121. pGasPrice,
  1122. pMedicKit,
  1123. pPainkillers,
  1124. pPicking,
  1125. pPickID,
  1126. pPickTime,
  1127. pFainted,
  1128. pUnfairDeath,
  1129. pAdminDuty,
  1130. pSupporterDuty,
  1131. pHelpRequest,
  1132. pCheatFlags,
  1133. pCheckpoint,
  1134. pAnticheat,
  1135. pAnimation,
  1136. pDuty,
  1137. pBadge,
  1138. pSelectUniform,
  1139. pUniformIndex,
  1140. pUniformTick,
  1141. pChangeRank,
  1142. pDispatch,
  1143. pDealershipMenu,
  1144. pDealershipIndex,
  1145. pVehicleColor,
  1146. pColorID,
  1147. pEmergency,
  1148. pCallTaxi,
  1149. pPackage,
  1150. pStoned,
  1151. pStonedTime,
  1152. pSetBank,
  1153. pGiveDrugs,
  1154. pDrivingTest,
  1155. pDrivingCP,
  1156. pTestTime,
  1157. pRepairCar,
  1158. pHouseOffer,
  1159. pHousePrice,
  1160. pHouseSell,
  1161. pCompanyOffer,
  1162. pCompanyPrice,
  1163. pCompanySell,
  1164. pCarOffer,
  1165. pCarPrice,
  1166. pCarSell,
  1167. pShakeOffer,
  1168. pShakeType,
  1169. pSprayTag,
  1170. pTrashPickup,
  1171. pTrash,
  1172. pModShop,
  1173. pStereoPlayerID,
  1174. pVehicleStream,
  1175. pChatting,
  1176. pAddVehicle,
  1177. pVehiclePrice,
  1178. pVehicleCompany,
  1179. pVehicleRental,
  1180. pVehicleFaction,
  1181. pAutoShop,
  1182. pAutoTime,
  1183. Float:pAutoX,
  1184. Float:pAutoY,
  1185. Float:pAutoZ,
  1186. Float:pAutoA,
  1187. pEnterTime,
  1188. pCommandSpam,
  1189. pCommandMuted,
  1190. pConfirmBackdoor,
  1191. pBackdoorType,
  1192. pFurniturePerms,
  1193. pFactionCallsign,
  1194. pCallsign[128],
  1195. pAddCharges,
  1196. // bool:pFakelicense,
  1197. pDrugOrderType,
  1198. pBigEars,
  1199. pWarnTimer,
  1200. pWarnWeapon,
  1201. pWarnHealth,
  1202. pWarnArmor,
  1203. pWarnAirbreak,
  1204. pWarnSpeedhack,
  1205. pWarnMoneyHack,
  1206. pWarnAmmoHack,
  1207. pWarnFlyHack,
  1208. pWarnDialogHack,
  1209. pWarnGodMode,
  1210. pWarnRapidFire,
  1211. pWarnTeleport,
  1212. pActivated,
  1213. pGPCI[41],
  1214. pBeingReported,
  1215. pReportReason[64],
  1216. // Added by Grime, 10-03-2017.
  1217. pModPreview,
  1218. pOldComponent,
  1219. pVehicleParams[7],
  1220. pRepairShop,
  1221. pRepairTime
  1222. };
  1223. enum e_Weapons
  1224. {
  1225. wMelee,
  1226. wPrimary,
  1227. wPrimaryAmmo,
  1228. wPrimarySerial,
  1229. wSecondary,
  1230. wSecondaryAmmo,
  1231. wSecondarySerial,
  1232. wTertiary,
  1233. wTertiaryAmmo,
  1234. wTertiarySerial
  1235. };
  1236. enum e_WeaponOffsets
  1237. {
  1238. wBoneID,
  1239. wHidden,
  1240. Float:wOffsetX,
  1241. Float:wOffsetY,
  1242. Float:wOffsetZ,
  1243. Float:wOffsetRX,
  1244. Float:wOffsetRY,
  1245. Float:wOffsetRZ
  1246. };
  1247. enum e_Server
  1248. {
  1249. Accounts,
  1250. PlayerRecord,
  1251. RecordDate[24],
  1252. TaxRate,
  1253. TaxVault,
  1254. Motd[128]
  1255. };
  1256. enum e_Statistics
  1257. {
  1258. sHotwired, // Total vehicles hotwired
  1259. sRentals, // Total vehicles rented
  1260. sHospitalFees, // Total hospital fees
  1261. sItemsUsed, // Total items used
  1262. sItemsDropped, // Total items dropped
  1263. sItemsPicked, // Total items picked up
  1264. sDistanceRan, // Total distance ran on treadmill
  1265. sTotalReps, // Total weights lifted
  1266. sHouses, // Total houses purchased
  1267. sCompanies, // Total companies purchased
  1268. sVehicles, // Total vehicles purchased
  1269. sFurnitureFees, // Total money spent on furniture,
  1270. sTotalWarrants, // Total warrants issued
  1271. sReports, // Total accepted reports
  1272. sHelpRequests // Total accepted help requests
  1273. };
  1274. enum e_Timers
  1275. {
  1276. tFooter,
  1277. tWorkout,
  1278. tHospital,
  1279. tRefuel,
  1280. tRepair
  1281. };
  1282. enum e_VehicleInfo
  1283. {
  1284. vInit,
  1285. vFuel,
  1286. vWindows,
  1287. vWindowFL,
  1288. vWindowFR,
  1289. vWindowBL,
  1290. vWindowBR,
  1291. vAdmin,
  1292. vGoods,
  1293. vObject,
  1294. vColor[2],
  1295. vStream[128 char]
  1296. };
  1297. enum e_Inventory
  1298. {
  1299. invExists,
  1300. invID,
  1301. invName[MAX_ITEM_NAME],
  1302. invValue,
  1303. invSerial,
  1304. Float:invOffset[6]
  1305. };
  1306. enum e_DropItems
  1307. {
  1308. dExists,
  1309. dID,
  1310. dName[MAX_ITEM_NAME],
  1311. dValue,
  1312. dSerial,
  1313. Float:dSpawn[4],
  1314. dInterior,
  1315. dWorld,
  1316. dObject,
  1317. //Text3D:dText,
  1318. Float:dOffset[6]
  1319. };
  1320. enum e_ReportQueue
  1321. {
  1322. rExists,
  1323. rReportTime,
  1324. rReporter,
  1325. rText[128]
  1326. };
  1327. enum e_EmergencyCalls
  1328. {
  1329. ecExists,
  1330. ecTime,
  1331. ecName[128],
  1332. ecService[32],
  1333. ecNumber,
  1334. ecLocation[128],
  1335. ecSituation[128]
  1336. };
  1337. enum e_ApbList
  1338. {
  1339. apbExists,
  1340. apbReporter,
  1341. apbDesc1[128]
  1342. };
  1343. enum e_Houses
  1344. {
  1345. hID,
  1346. hExists,
  1347. hOwner,
  1348. hOwnerName[MAX_PLAYER_NAME],
  1349. hValue,
  1350. hAddress[32],
  1351. Float:hSpawn[4],
  1352. Float:hInt[4],
  1353. Float:hBackdoor[4],
  1354. Float:hBackdoorInt[4],
  1355. hExterior,
  1356. hExteriorWorld,
  1357. hInterior,
  1358. hWorld,
  1359. hLocked,
  1360. hAlarm,
  1361. hRentPrice,
  1362. hLights,
  1363. hEdit,
  1364. hCheckpoint,
  1365. //Text3D:hText,
  1366. Text3D:hBackdoorText[2],
  1367. hFaction
  1368. };
  1369. enum e_Companies
  1370. {
  1371. cID,
  1372. cExists,
  1373. cOwner,
  1374. cOwnerName[MAX_PLAYER_NAME],
  1375. cValue,
  1376. cType,
  1377. cName[32],
  1378. Float:cSpawn[4],
  1379. Float:cVehicle[4],
  1380. Float:cInt[4],
  1381. cExterior,
  1382. cExteriorWorld,
  1383. cInterior,
  1384. cWorld,
  1385. cLocked,
  1386. cSafe,
  1387. cStock,
  1388. cCheckpoint,
  1389. cIcon,
  1390. //Text3D:cText,
  1391. Text3D:cDeliverText,
  1392. cFee,
  1393. cStream[256],
  1394. cFaction
  1395. };
  1396. enum e_Products
  1397. {
  1398. prStock,
  1399. prPrice
  1400. };
  1401. enum e_RestaurantItems
  1402. {
  1403. rtID,
  1404. rtExists,
  1405. rtName[24],
  1406. rtStock,
  1407. rtPrice,
  1408. rtType,
  1409. rtHealth
  1410. };
  1411. enum e_Vehicles
  1412. {
  1413. vID,
  1414. vExists,
  1415. vCompany,
  1416. vOwner,
  1417. vModel,
  1418. vRegistered[32],
  1419. vPrice,
  1420. vRentable,
  1421. Float:vSpawn[4],
  1422. vColor1,
  1423. vColor2,
  1424. vPaintjob,
  1425. vLocked,
  1426. vTrunkMoney,
  1427. vFaction,
  1428. vSiren,
  1429. vAlarm,
  1430. vPlate[32],
  1431. vImpound,
  1432. vDespawned,
  1433. vMods[14],
  1434. vRenter,
  1435. vVehicle,
  1436. Text3D:vText
  1437. };
  1438. enum e_Buildings
  1439. {
  1440. bID,
  1441. bExists,
  1442. bName[32],
  1443. bIconType,
  1444. bLocked,
  1445. Float:bSpawn[4],
  1446. Float:bInt[4],
  1447. bExterior,
  1448. bExteriorWorld,
  1449. bInterior,
  1450. bWorld,
  1451. bPickup,
  1452. Text3D:bText,
  1453. bIcon
  1454. };
  1455. enum e_Furniture
  1456. {
  1457. fID,
  1458. fExists,
  1459. fHouseID,
  1460. fModel,
  1461. Float:fSpawn[6],
  1462. fInterior,
  1463. fWorld,
  1464. fCode, // Safe code
  1465. fMoney, // Safe money
  1466. fSafeOpen,
  1467. fDoorOpen,
  1468. fObject,
  1469. fEdit,
  1470. Text3D:fText,
  1471. fMaterial[3],
  1472. fMatColour[3],
  1473. };
  1474. enum e_StoredItems
  1475. {
  1476. stID,
  1477. stExists,
  1478. stVehicle,
  1479. stFurniture,
  1480. stTrashbin,
  1481. stName[MAX_ITEM_NAME char],
  1482. stValue,
  1483. stSerial,
  1484. Float:stOffset[6],
  1485. vehicleItem,
  1486. Float:vehicleOffset[6]
  1487. };
  1488. enum e_BankAccounts
  1489. {
  1490. bankID,
  1491. bankExists,
  1492. bankName[32],
  1493. bankBalance
  1494. };
  1495. enum e_Accessories
  1496. {
  1497. aID,
  1498. aExists,
  1499. aAttached,
  1500. aName[32],
  1501. aModel,
  1502. aBone,
  1503. Float:aOffset[9]
  1504. };
  1505. enum e_GasPumps
  1506. {
  1507. gpID,
  1508. gpExists,
  1509. gpCompany,
  1510. Float:gpSpawn[4],
  1511. Float:gpFuel,
  1512. gpObject,
  1513. Text3D:gpText
  1514. };
  1515. enum e_ATM
  1516. {
  1517. atmID,
  1518. atmExists,
  1519. Float:atmSpawn[4],
  1520. atmInterior,
  1521. atmWorld,
  1522. atmObject,
  1523. Text3D:atmText
  1524. };
  1525. enum e_Dealership
  1526. {
  1527. dcID,
  1528. dcExists,
  1529. dcCompany,
  1530. dcModel,
  1531. dcPrice
  1532. };
  1533. enum e_Casings
  1534. {
  1535. scID,
  1536. scExists,
  1537. scSerial,
  1538. scWeapon,
  1539. scTime,
  1540. Float:scSpawn[3],
  1541. scInterior,
  1542. scWorld,
  1543. scObject
  1544. };
  1545. enum e_Bloods
  1546. {
  1547. blID,
  1548. blExists,
  1549. blType,
  1550. blOwner[24],
  1551. Float:blSpawn[3],
  1552. blInterior,
  1553. blWorld,
  1554. blObject,
  1555. blTime
  1556. };
  1557. enum e_WeedPlants
  1558. {
  1559. wpID,
  1560. wpExists,
  1561. wpOwner[24],
  1562. Float:wpSpawn[3],
  1563. wpInterior,
  1564. wpWorld,
  1565. wpObject,
  1566. wpTime
  1567. };
  1568. enum e_Factions
  1569. {
  1570. fcID,
  1571. fcExists,
  1572. fcName[32],
  1573. fcType,
  1574. fcColor,
  1575. fcMaxRanks,
  1576. Float:fcLockerX,
  1577. Float:fcLockerY,
  1578. Float:fcLockerZ,
  1579. fcLockerInt,
  1580. fcLockerWorld,
  1581. fcUniforms[MAX_FACTION_UNIFORMS],
  1582. fcPaycheck[MAX_FACTION_RANKS],
  1583. fcWeaponRights[6],
  1584. fcDrugRights,
  1585. fcSprayRights,
  1586. Float:fcSpawnX, // Emmet 09/27/2017
  1587. Float:fcSpawnY,
  1588. Float:fcSpawnZ,
  1589. Float:fcSpawnA,
  1590. fcSpawnInt,
  1591. fcSpawnWorld, //
  1592. fcPickup,
  1593. Text3D:fcText
  1594. };
  1595. enum e_FactionItems
  1596. {
  1597. fcItemExists,
  1598. fcItemName[MAX_ITEM_NAME],
  1599. fcItemValue
  1600. };
  1601. enum e_FactionAccessories
  1602. {
  1603. fcAccessoryExists,
  1604. fcAccessoryName[32],
  1605. fcAccessoryModel,
  1606. fcAccessoryBone
  1607. };
  1608. enum e_FactionGuns
  1609. {
  1610. fcWeapon,
  1611. fcAmmo,
  1612. fcRank
  1613. };
  1614. enum e_ArrestPoints
  1615. {
  1616. apID,
  1617. apExists,
  1618. Float:apX,
  1619. Float:apY,
  1620. Float:apZ,
  1621. apInterior,
  1622. apWorld,
  1623. Text3D:apText,
  1624. apPickup
  1625. };
  1626. enum e_Teleports
  1627. {
  1628. tpID,
  1629. tpExists,
  1630. tpName[32],
  1631. Float:tpX,
  1632. Float:tpY,
  1633. Float:tpZ,
  1634. Float:tpA,
  1635. tpInterior,
  1636. tpWorld
  1637. };
  1638. enum e_Gates
  1639. {
  1640. gID,
  1641. gExists,
  1642. gModel,
  1643. gPassword[64],
  1644. Float:gSpeed,
  1645. Float:gRadius,
  1646. gFactionID,
  1647. gLinkID,
  1648. Float:gSpawn[6],
  1649. Float:gMove[6],
  1650. gInterior,
  1651. gWorld,
  1652. gOpened,
  1653. gObject
  1654. };
  1655. enum e_Labels
  1656. {
  1657. lID,
  1658. lExists,
  1659. lColor,
  1660. lText[144],
  1661. Float:lX,
  1662. Float:lY,
  1663. Float:lZ,
  1664. Float:lDistance,
  1665. lInterior,
  1666. lWorld,
  1667. Text3D:lText3D
  1668. };
  1669. enum e_AutoShops {
  1670. asID,
  1671. asExists,
  1672. Float:asX,
  1673. Float:asY,
  1674. Float:asZ,
  1675. asPickup,
  1676. asIcon,
  1677. Text3D:asText
  1678. };
  1679. enum e_Deploys {
  1680. dpExists,
  1681. dpType,
  1682. dpFaction,
  1683. Float:dpX,
  1684. Float:dpY,
  1685. Float:dpZ,
  1686. Float:dpA,
  1687. dpObject
  1688. };
  1689. enum e_Objects {
  1690. oID,
  1691. oExists,
  1692. oModel,
  1693. Float:oX,
  1694. Float:oY,
  1695. Float:oZ,
  1696. Float:oRX,
  1697. Float:oRY,
  1698. Float:oRZ,
  1699. Float:oDistance,
  1700. oInterior,
  1701. oWorld,
  1702. gDebug,
  1703. oObjectID,
  1704. Text3D:oText
  1705. };
  1706. enum e_Trashbins {
  1707. tID,
  1708. tExists,
  1709. Float:tX,
  1710. Float:tY,
  1711. Float:tZ,
  1712. Float:tA,
  1713. tInterior,
  1714. tWorld,
  1715. Text3D:tText,
  1716. tObject
  1717. };
  1718. enum e_SprayTags {
  1719. sID,
  1720. sExists,
  1721. sColor,
  1722. sText[64],
  1723. Float:sX,
  1724. Float:sY,
  1725. Float:sZ,
  1726. Float:sA,
  1727. sObject
  1728. };
  1729. enum e_Tags {
  1730. tagID,
  1731. tagExists,
  1732. tagColor,
  1733. tagText[64],
  1734. Float:tagX,
  1735. Float:tagY,
  1736. Float:tagZ,
  1737. Float:tagA,
  1738. tagObject,
  1739. tagFontSize,
  1740. tagBold
  1741. };
  1742. enum e_Payphones {
  1743. phID,
  1744. phExists,
  1745. phNumber,
  1746. phOccupied,
  1747. phCaller,
  1748. Float:phX,
  1749. Float:phY,
  1750. Float:phZ,
  1751. Float:phA,
  1752. phInterior,
  1753. phWorld,
  1754. phObject,
  1755. Text3D:phText
  1756. };
  1757. enum e_JobVehicles {
  1758. Transporter[11],
  1759. Forklifter[6],
  1760. TaxiDriver[6],
  1761. Pizzaboy[5],
  1762. Trashman[5]
  1763. };
  1764. enum e_Stereo {
  1765. pStereoID,
  1766. Float:pStereoX,
  1767. Float:pStereoY,
  1768. Float:pStereoZ,
  1769. pStereoInterior,
  1770. pStereoWorld,
  1771. pStereoURL[255 char],
  1772. pStereoObject,
  1773. Text3D:pStereoText
  1774. };
  1775. enum e_Checkpoints {
  1776. cpEmployment,
  1777. cpPolice
  1778. };
  1779. enum e_LastShots {
  1780. lWeaponID,
  1781. lWeaponShots
  1782. };
  1783. new
  1784. Players[MAX_PLAYERS][e_Players],
  1785. pSpecLimit[MAX_PLAYERS],
  1786. Weapons[MAX_PLAYERS][e_Weapons],
  1787. WeaponOffsets[MAX_PLAYERS][6][e_WeaponOffsets],
  1788. Stereos[MAX_PLAYERS][e_Stereo],
  1789. Statistics[MAX_PLAYERS][e_Statistics],
  1790. Timers[MAX_PLAYERS][e_Timers],
  1791. Inventory[MAX_PLAYERS][MAX_INVENTORY_ITEMS][e_Inventory],
  1792. LastShots[MAX_PLAYERS][10][e_LastShots],
  1793. DropItems[MAX_DROPPED_ITEMS][e_DropItems],
  1794. Houses[MAX_HOUSES][e_Houses],
  1795. Companies[MAX_COMPANIES][e_Companies],
  1796. Products[MAX_COMPANIES][MAX_PRODUCTS][e_Products],
  1797. RestaurantItems[MAX_COMPANIES][MAX_RESTAURANT_ITEMS][e_RestaurantItems],
  1798. VehicleInformation[MAX_VEHICLES][e_VehicleInfo],
  1799. Reports[MAX_REPORTS][e_ReportQueue],
  1800. Emergency[MAX_EMERGENCY][e_EmergencyCalls],
  1801. Apbs[MAX_APBS][e_ApbList],
  1802. Vehicles[MAX_CARS][e_Vehicles],
  1803. Buildings[MAX_BUILDINGS][e_Buildings],
  1804. Furniture[MAX_FURNITURE][e_Furniture],
  1805. StoredItems[MAX_STORED_ITEMS][e_StoredItems],
  1806. BankAccounts[MAX_PLAYERS][MAX_BANK_ACCOUNTS][e_BankAccounts],
  1807. Accessories[MAX_PLAYERS][MAX_ACCESSORIES][e_Accessories],
  1808. GasPumps[MAX_GAS_PUMPS][e_GasPumps],
  1809. ATM[MAX_ATMS][e_ATM],
  1810. DealershipCars[MAX_DEALERSHIP_CARS][e_Dealership],
  1811. ShellCasings[MAX_SHELL_CASINGS][e_Casings],
  1812. Bloods[MAX_BLOOD][e_Bloods],
  1813. WeedPlants[MAX_WEEDPLANTS][e_WeedPlants],
  1814. Factions[MAX_FACTIONS][e_Factions],
  1815. FactionEquipment[MAX_FACTIONS][MAX_FACTION_EQUIPMENT][e_FactionItems],
  1816. FactionAccessories[MAX_FACTIONS][MAX_FACTION_ACCESSORIES][e_FactionAccessories],
  1817. Ranks[MAX_FACTIONS][MAX_FACTION_RANKS][MAX_RANK_NAME],
  1818. ArrestPoints[MAX_ARREST_POINTS][e_ArrestPoints],
  1819. Teleports[MAX_ADMIN_TELEPORTS][e_Teleports],
  1820. Gates[MAX_GATES][e_Gates],
  1821. Labels[MAX_DYNAMIC_LABELS][e_Labels],
  1822. AutoShops[MAX_AUTO_SHOPS][e_AutoShops],
  1823. DeployedItems[MAX_DEPLOYED_ITEMS][e_Deploys],
  1824. Objects[MAX_SCRIPT_OBJECTS][e_Objects],
  1825. Trashbins[MAX_TRASH_BINS][e_Trashbins],
  1826. SprayTags[MAX_SPRAY_TAGS][e_SprayTags],
  1827. Tags[MAX_TAGS][e_Tags],
  1828. Payphones[MAX_PAYPHONES][e_Payphones],
  1829. PoliceObjects[MAX_PLAYERS][MAX_PLAYER_ATTACHED_OBJECTS],
  1830. bool:BlockedPM[MAX_PLAYERS][MAX_PLAYERS];
  1831. new
  1832. Server[e_Server],
  1833. Float:WeaponDamages[47],
  1834. JobVehicles[e_JobVehicles],
  1835. Checkpoints[e_Checkpoints],
  1836. gMinutes,
  1837. gCallsHour,
  1838. gArrestsHour,
  1839. gConnection,
  1840. gTestVehicles[4],
  1841. gVehicleBlacklist[212],
  1842. gListString[16384],
  1843. gWeatherID = 5,
  1844. gEnabledOOC = 0,
  1845. gObjectDebug,
  1846. gExecute[512],
  1847. Text3D:playerNametag[MAX_PLAYERS],
  1848. gListedItems[MAX_PLAYERS][100],
  1849. gWeights[MAX_PLAYERS][2],
  1850. gLastVehicleID[MAX_PLAYERS],
  1851. gPlayerKicked[MAX_PLAYERS],
  1852. gSeatData[MAX_PLAYERS] = {-1, ...},
  1853. gPreviewFurniture[MAX_PLAYERS] = {-1, ...},
  1854. gPreviewDeploy[MAX_PLAYERS] = {-1, ...},
  1855. gPreviewDeployID[MAX_PLAYERS],
  1856. gTargetName[MAX_PLAYERS][MAX_PLAYER_NAME],
  1857. gHelpRequest[MAX_PLAYERS][128 char],
  1858. gTemporaryText[MAX_PLAYERS][64 char],
  1859. gAdvertisement[MAX_PLAYERS][128 char],
  1860. gSirenObject[MAX_VEHICLES] = {INVALID_OBJECT_ID, ...},
  1861. Text3D:gCallsignText[MAX_VEHICLES] = {INVALID_3DTEXT_ID, ...},
  1862. Text:gGlobalTextdraws[3];
  1863. //gListitemSelected[MAX_PLAYERS] = {-1, ...},
  1864. //gPrisonDoors[6],
  1865. //gPrisonDoorStatus[3];
  1866. enum
  1867. {
  1868. SPAWN_TYPE_LAST = 0,
  1869. SPAWN_TYPE_AIRPORT,
  1870. SPAWN_TYPE_HOUSE,
  1871. SPAWN_TYPE_COMPANY,
  1872. SPAWN_TYPE_FACTION
  1873. };
  1874. enum
  1875. {
  1876. JOB_NONE,
  1877. JOB_TRANSPORTER,
  1878. JOB_FORKLIFTER,
  1879. JOB_MINER,
  1880. JOB_TAXI,
  1881. JOB_PIZZA,
  1882. JOB_TRASHMAN,
  1883. JOB_MECHANIC,
  1884. JOB_GUNDEALER
  1885. };
  1886. enum
  1887. {
  1888. WEAPON_MELEE,
  1889. WEAPON_PRIMARY,
  1890. WEAPON_SECONDARY,
  1891. WEAPON_TERTIARY
  1892. };
  1893. enum
  1894. {
  1895. WORKOUT_NONE,
  1896. WORKOUT_DUMBELLS,
  1897. WORKOUT_TREADMILL
  1898. };
  1899. enum
  1900. {
  1901. CHECKPOINT_NONE,
  1902. CHECKPOINT_GPS,
  1903. CHECKPOINT_PACKAGE,
  1904. CHECKPOINT_JOB
  1905. };
  1906. enum
  1907. {
  1908. ITEM_INFO_MODEL = 1,
  1909. ITEM_INFO_WEIGHT,
  1910. ITEM_INFO_VALUE,
  1911. ITEM_INFO_WEAPON_ID,
  1912. ITEM_INFO_ILLEGAL,
  1913. ITEM_INFO_STACKABLE,
  1914. ITEM_INFO_DRUG
  1915. };
  1916. enum
  1917. {
  1918. DEATH_STATE_NONE,
  1919. DEATH_STATE_INJURED,
  1920. DEATH_STATE_HOSPITAL//,
  1921. //DEATH_STATE_MELEE
  1922. };
  1923. enum {
  1924. GENDER_MALE = 1,
  1925. GENDER_FEMALE
  1926. };
  1927. enum {
  1928. HOSPITAL_NONE = -1,
  1929. HOSPITAL_COUNTY_GENERAL,
  1930. HOSPITAL_ALL_SAINTS,
  1931. HOSPITAL_MONTGOMERY,
  1932. HOSPITAL_LAS_VENTURAS,
  1933. HOSPITAL_SAN_FIERRO,
  1934. HOSPITAL_FORT_CARSON,
  1935. HOSPITAL_EL_QUEBRADOS,
  1936. HOSPITAL_ANGEL_PINE
  1937. };
  1938. enum {
  1939. EDIT_TYPE_NONE,
  1940. EDIT_TYPE_PREVIEW,
  1941. EDIT_TYPE_FURNITURE,
  1942. EDIT_TYPE_ACCESSORY,
  1943. EDIT_TYPE_PUMP,
  1944. EDIT_TYPE_ATM,
  1945. EDIT_TYPE_GATE,
  1946. EDIT_TYPE_GATE_MOVE,
  1947. EDIT_TYPE_OBJECT,
  1948. EDIT_TYPE_TRASHBIN,
  1949. EDIT_TYPE_TAG,
  1950. EDIT_TYPE_SPRAY,
  1951. EDIT_TYPE_PAYPHONE,
  1952. EDIT_TYPE_WEAPON,
  1953. EDIT_TYPE_DEPLOY,
  1954. EDIT_TYPE_TRUNK
  1955. };
  1956. enum {
  1957. FURNITURE_KITCHEN,
  1958. FURNITURE_TABLES,
  1959. FURNITURE_CHAIRS,
  1960. FURNITURE_SHELVES,
  1961. FURNITURE_BATHROOM,
  1962. FURNITURE_BEDROOM,
  1963. FURNITURE_CABINETS,
  1964. FURNITURE_ELECTRIC,
  1965. FURNITURE_PLANTS,
  1966. FURNITURE_TRASH,
  1967. FURNITURE_DOORS,
  1968. FURNITURE_CARPETS,
  1969. FURNITURE_FRAMES,
  1970. FURNITURE_MISC,
  1971. FURNITURE_WALL,
  1972. FURNITURE_SPECIAL,
  1973. FURNITURE_EFFECT
  1974. };
  1975. enum {
  1976. ACCESSORY_GLASSES,
  1977. ACCESSORY_BANDANAS,
  1978. ACCESSORY_HATS,
  1979. ACCESSORY_CHEST,
  1980. ACCESSORY_BAGS
  1981. };
  1982. enum {
  1983. CHOOSE_TYPE_NONE,
  1984. CHOOSE_TYPE_TRUNK,
  1985. CHOOSE_TYPE_SAFE,
  1986. CHOOSE_TYPE_TRASH
  1987. };
  1988. enum {
  1989. STORED_TYPE_TRUNK,
  1990. STORED_TYPE_SAFE,
  1991. STORED_TYPE_TRASH
  1992. };
  1993. enum {
  1994. PICK_LOCK_NONE,
  1995. PICK_LOCK_HOUSE,
  1996. PICK_LOCK_SAFE,
  1997. PICK_LOCK_COMPANY,
  1998. PICK_LOCK_VEHICLE
  1999. };
  2000. enum {
  2001. PAYMENT_TYPE_CASH,
  2002. PAYMENT_TYPE_BANK
  2003. };
  2004. enum {
  2005. BANK_ACCESS_MENU,
  2006. BANK_ATM_MENU,
  2007. BANK_PAYMENT_TYPE
  2008. };
  2009. enum {
  2010. TRANSFER_TO_SAFE,
  2011. TRANSFER_TO_TRUNK,
  2012. TRANSFER_TO_TRASH,
  2013. TRANSFER_TO_PLAYER,
  2014. TRANSFER_TO_GROUND
  2015. };
  2016. enum {
  2017. TRANSFER_FROM_SAFE,
  2018. TRANSFER_FROM_TRUNK,
  2019. TRANSFER_FROM_TRASH,
  2020. TRANSFER_FROM_GROUND
  2021. };
  2022. enum {
  2023. DEPLOY_TYPE_CONE,
  2024. DEPLOY_TYPE_SPIKES,
  2025. DEPLOY_TYPE_ROADBLOCK,
  2026. DEPLOY_TYPE_FLARE,
  2027. DEPLOY_TYPE_BARREL,
  2028. DEPLOY_TYPE_TAPE
  2029. };
  2030. /*
  2031. {"Steroids", 2891, 1, true, true, true},
  2032. {"Heroin", 2891, 1, true, true, true},
  2033. {"LSD", 2891, 1, true, true, true},
  2034. {"Ecstasy", 2891, 1, true, true, true},
  2035. {"Marijuana", 2891, 1, true, true, true},
  2036. {"Crack", 2891, 1, true, true, true},
  2037. {"Cocaine", 2891, 1, true, true, true},
  2038. {"Methamphetamine", 2891, 1, true, true, true},
  2039. {"PCP", 2891, 1, true, true, true},
  2040. */
  2041. enum {
  2042. PACKAGE_TYPE_NONE,
  2043. PACKAGE_TYPE_MELEE,
  2044. PACKAGE_TYPE_PISTOLS,
  2045. PACKAGE_TYPE_SHOTGUNS,
  2046. PACKAGE_TYPE_SMGS,
  2047. PACKAGE_TYPE_RIFLES,
  2048. PACKAGE_TYPE_EXPLOSIVES,
  2049. PACKAGE_TYPE_MARIJUANA,
  2050. PACKAGE_TYPE_COCAINE,
  2051. PACKAGE_TYPE_HEROIN,
  2052. PACKAGE_TYPE_STEROIDS,
  2053. PACKAGE_TYPE_LSD,
  2054. PACKAGE_TYPE_ECSTASY,
  2055. PACKAGE_TYPE_CRACK,
  2056. PACKAGE_TYPE_METH,
  2057. PACKAGE_TYPE_PCP,
  2058. PACKAGE_TYPE_AMMO_1,
  2059. PACKAGE_TYPE_AMMO_2,
  2060. PACKAGE_TYPE_AMMO_3,
  2061. PACKAGE_TYPE_AMMO_4,
  2062. PACKAGE_TYPE_AMMO_5,
  2063. PACKAGE_TYPE_AMMO_6
  2064. };
  2065. enum {
  2066. STONED_TYPE_NONE,
  2067. STONED_TYPE_MARIJUANA,
  2068. STONED_TYPE_COCAINE,
  2069. STONED_TYPE_HEROIN,
  2070. STONED_TYPE_STEROIDS,
  2071. STONED_TYPE_LSD,
  2072. STONED_TYPE_ECSTASY,
  2073. STONED_TYPE_CRACK,
  2074. STONED_TYPE_METH,
  2075. STONED_TYPE_PCP
  2076. };
  2077. enum {
  2078. WEAPON_TYPE_MELEE,
  2079. WEAPON_TYPE_PISTOL,
  2080. WEAPON_TYPE_SHOTGUN,
  2081. WEAPON_TYPE_SMG,
  2082. WEAPON_TYPE_ASSAULT,
  2083. WEAPON_TYPE_RIFLE
  2084. };
  2085. /*---------------------------------------------------------------------------
  2086. Array data
  2087. The arrays below contain data used by the server.
  2088. Arrays that use "const" cannot be modified.
  2089. ---------------------------------------------------------------------------*/
  2090. enum e_Callsigns
  2091. {
  2092. e_CallsignID,
  2093. e_CallsignTakenBy,
  2094. // 1-LSPD
  2095. e_CallsignFaction,
  2096. // Text of the callsign
  2097. e_CallsignTextShort[32],
  2098. // Text of the callsign
  2099. e_CallsignTextFull[64]
  2100. };
  2101. new g_Callsigns[][e_Callsigns] =
  2102. {
  2103. {1, -1, 1, "1-A-1", "1-Adam-1"},
  2104. {2, -1, 1, "1-A-2", "1-Adam-2"},
  2105. {3, -1, 1, "1-A-3", "1-Adam-3"},
  2106. {4, -1, 1, "1-A-4", "1-Adam-4"},
  2107. {5, -1, 1, "1-A-5", "1-Adam-5"},
  2108. {6, -1, 1, "2-A-1", "2-Adam-1"},
  2109. {7, -1, 1, "2-A-2", "2-Adam-2"},
  2110. {8, -1, 1, "2-A-3", "2-Adam-3"},
  2111. {9, -1, 1, "2-A-4", "2-Adam-4"},
  2112. {10, -1, 1, "2-A-5", "2-Adam-5"},
  2113. {11, -1, 1, "3-A-1", "3-Adam-1"},
  2114. {12, -1, 1, "3-A-2", "3-Adam-2"},
  2115. {13, -1, 1, "3-A-3", "3-Adam-3"},
  2116. {14, -1, 1, "3-A-4", "3-Adam-4"},
  2117. {15, -1, 1, "3-A-5", "3-Adam-5"},
  2118. {16, -1, 1, "1-L-1", "1-Lincoln-1"},
  2119. {17, -1, 1, "1-L-2", "1-Lincoln-2"},
  2120. {18, -1, 1, "1-L-3", "1-Lincoln-3"},
  2121. {19, -1, 1, "1-L-4", "1-Lincoln-4"},
  2122. {20, -1, 1, "1-L-5", "1-Lincoln-5"},
  2123. {21, -1, 1, "2-L-1", "2-Lincoln-1"},
  2124. {22, -1, 1, "2-L-2", "2-Lincoln-2"},
  2125. {23, -1, 1, "2-L-3", "2-Lincoln-3"},
  2126. {24, -1, 1, "2-L-4", "2-Lincoln-4"},
  2127. {25, -1, 1, "2-L-5", "2-Lincoln-5"},
  2128. {26, -1, 1, "3-L-1", "3-Lincoln-1"},
  2129. {27, -1, 1, "3-L-2", "3-Lincoln-2"},
  2130. {28, -1, 1, "3-L-3", "3-Lincoln-3"},
  2131. {29, -1, 1, "3-L-4", "3-Lincoln-4"},
  2132. {30, -1, 1, "3-L-5", "3-Lincoln-5"},
  2133. {31, -1, 1, "1-D-1", "1-David-1"},
  2134. {32, -1, 1, "1-D-2", "1-David-2"},
  2135. {33, -1, 1, "2-D-1", "2-David-1"},
  2136. {34, -1, 1, "2-D-2", "2-David-2"},
  2137. {35, -1, 1, "3-D-1", "3-David-1"},
  2138. {36, -1, 1, "3-D-2", "3-David-2"},
  2139. {37, -1, 1, "1-M-1", "1-Mary-1"},
  2140. {38, -1, 1, "1-M-2", "1-Mary-2"},
  2141. {39, -1, 1, "2-M-1", "2-Mary-1"},
  2142. {40, -1, 1, "2-M-2", "2-Mary-2"},
  2143. {41, -1, 1, "3-M-1", "3-Mary-1"},
  2144. {42, -1, 1, "3-M-2", "3-Mary-2"},
  2145. {43, -1, 1, "1-T-1", "1-Tom-1"},
  2146. {44, -1, 1, "1-T-2", "1-Tom-2"},
  2147. {45, -1, 1, "1-T-3", "1-Tom-3"},
  2148. {46, -1, 1, "1-T-4", "1-Tom-4"},
  2149. {47, -1, 1, "1-T-5", "1-Tom-5"},
  2150. {48, -1, 1, "2-T-1", "2-Tom-1"},
  2151. {49, -1, 1, "2-T-2", "2-Tom-2"},
  2152. {50, -1, 1, "2-T-3", "2-Tom-3"},
  2153. {51, -1, 1, "2-T-4", "2-Tom-4"},
  2154. {52, -1, 1, "2-T-5", "2-Tom-5"},
  2155. {53, -1, 1, "3-T-1", "3-Tom-1"},
  2156. {54, -1, 1, "3-T-2", "3-Tom-2"},
  2157. {55, -1, 1, "3-T-3", "3-Tom-3"},
  2158. {56, -1, 1, "3-T-4", "3-Tom-4"},
  2159. {57, -1, 1, "3-T-5", "3-Tom-5"},
  2160. {58, -1, 1, "1-TL-1", "1-TL-1"},
  2161. {59, -1, 1, "1-TL-2", "1-TL-2"},
  2162. {60, -1, 1, "1-TL-3", "1-TL-3"},
  2163. {61, -1, 1, "2-TL-1", "2-TL-1"},
  2164. {62, -1, 1, "2-TL-2", "2-TL-2"},
  2165. {63, -1, 1, "2-TL-3", "2-TL-3"},
  2166. {64, -1, 1, "3-TL-1", "3-TL-1"},
  2167. {65, -1, 1, "3-TL-2", "3-TL-2"},
  2168. {66, -1, 1, "3-TL-3", "3-TL-3"},
  2169. {67, -1, 1, "1-G-1", "1-George-1"},
  2170. {68, -1, 1, "1-G-2", "1-George-2"},
  2171. {69, -1, 1, "1-G-3", "1-George-3"},
  2172. {70, -1, 1, "1-G-4", "1-George-4"},
  2173. {71, -1, 1, "2-G-1", "2-George-1"},
  2174. {72, -1, 1, "2-G-2", "2-George-2"},
  2175. {73, -1, 1, "2-G-3", "2-George-3"},
  2176. {74, -1, 1, "2-G-4", "2-George-4"},
  2177. {75, -1, 1, "3-G-1", "3-George-1"},
  2178. {76, -1, 1, "3-G-2", "3-George-2"},
  2179. {77, -1, 1, "3-G-3", "3-George-3"},
  2180. {78, -1, 1, "3-G-4", "3-George-4"},
  2181. {79, -1, 1, "1-H-1", "1-Henry-1"},
  2182. {80, -1, 1, "1-H-2", "1-Henry-2"},
  2183. {81, -1, 1, "2-H-1", "2-Henry-1"},
  2184. {82, -1, 1, "2-H-2", "2-Henry-2"},
  2185. {83, -1, 1, "3-H-1", "3-Henry-1"},
  2186. {84, -1, 1, "3-H-2", "3-Henry-2"}
  2187. };
  2188. enum e_CompanyItems
  2189. {
  2190. // Type of company that offers this item.
  2191. e_CompanyType,
  2192. // Name of the product.
  2193. e_ItemName[32],
  2194. // Default price for this item.
  2195. e_DefaultPrice,
  2196. // Does this item have to be stocked before it can be bought?
  2197. bool:e_IsStockable
  2198. };
  2199. // List of all buyable items for each company.
  2200. new g_CompanyItems[][e_CompanyItems] =
  2201. {
  2202. {COMPANY_STORE, "Toolbox", 1500, true},
  2203. {COMPANY_STORE, "Stereo", 700, true},
  2204. {COMPANY_STORE, "Bandages", 500, true},
  2205. {COMPANY_STORE, "Medical Kit", 1000, true},
  2206. {COMPANY_STORE, "Notebook", 250, true},
  2207. {COMPANY_STORE, "Gasoline", 500, true},
  2208. {COMPANY_STORE, "Cigarettes", 200, true},
  2209. {COMPANY_STORE, "Screwdriver", 500, true},
  2210. {COMPANY_STORE, "Mask", 5000, true},
  2211. {COMPANY_STORE, "Beer", 50, true},
  2212. {COMPANY_STORE, "Wine", 70, true},
  2213. {COMPANY_STORE, "Baseball Bat", 300, true},
  2214. {COMPANY_STORE, "Spraycan", 200, true},
  2215. //{COMPANY_STORE, "Walkie Talkie", 50, true},
  2216. {COMPANY_STORE, "Portable Radio", 2500, true},
  2217. {COMPANY_STORE, "Camera", 1000, true},
  2218. {COMPANY_STORE, "SIM Card", 100, false},
  2219. {COMPANY_STORE, "Mobile Phone", 250, true},
  2220. {COMPANY_CLOTHES, "Glasses", 100, true},
  2221. {COMPANY_CLOTHES, "Bandanas", 100, true},
  2222. {COMPANY_CLOTHES, "Hats", 100, true},
  2223. {COMPANY_CLOTHES, "Bags", 150, true},
  2224. //{COMPANY_CLOTHES, "Chest", 500, true},
  2225. {COMPANY_GYM, "Membership", 2500, false},
  2226. {COMPANY_GYM, "Protein Shake", 500, true},
  2227. {COMPANY_PHONE, "SIM Card", 200, false},
  2228. {COMPANY_PHONE, "Mobile Phone", 350, true},
  2229. //{COMPANY_AMMO, "Kevlar Vest", 6000, true},
  2230. {COMPANY_AMMO, "Armor", 7500, true},
  2231. {COMPANY_AMMO, "Pepper Spray", 1250, true},
  2232. {COMPANY_AMMO, "Desert Eagle", 10000, true},
  2233. {COMPANY_AMMO, "Shotgun", 12000, true},
  2234. {COMPANY_AMMO, "Rifle", 15000, true},
  2235. {COMPANY_AMMO, "9x19mm Ammo", 1500, true},
  2236. {COMPANY_AMMO, ".50cal Ammo", 1500, true},
  2237. {COMPANY_AMMO, "12 Gauge Ammo", 1500, true},
  2238. {COMPANY_AMMO, "5.56x45mm Ammo", 1500, true},
  2239. {COMPANY_AMMO, "7.62x39mm Ammo", 1500, true},
  2240. {COMPANY_AMMO, "7.62x51mm Ammo", 1500, true},
  2241. {COMPANY_BAR, "Cigarette", 150, true},
  2242. {COMPANY_BAR, "Sprunk", 250, true},
  2243. {COMPANY_BAR, "Beer", 250, true},
  2244. {COMPANY_BAR, "Wine", 250, true}
  2245. };
  2246. new const g_CompanyTypes[][] = {
  2247. "Corner Store",
  2248. "Clothing Store",
  2249. "Restaurant",
  2250. "Car Rentals",
  2251. "Phone Company",
  2252. "Dealership",
  2253. "Gym",
  2254. "Ammunition",
  2255. "Bar"
  2256. };
  2257. new const g_FurnitureTypes[][] = {
  2258. "Kitchen",
  2259. "Tables",
  2260. "Chairs/Couches",
  2261. "Shelves",
  2262. "Bathroom",
  2263. "Bedroom",
  2264. "Cabinets",
  2265. "Electronics",
  2266. "Plants",
  2267. "Trashcans",
  2268. "Doors",
  2269. "Carpets",
  2270. "Frames",
  2271. "Miscellaneous",
  2272. "Wall",
  2273. "Special"
  2274. };
  2275. enum e_AccessoryList
  2276. {
  2277. e_AccessoryCategory,
  2278. e_AccessoryName[32],
  2279. e_AccessoryModel
  2280. };
  2281. new const g_AccessoryList[][e_AccessoryList] =
  2282. {
  2283. {ACCESSORY_GLASSES, "GlassesType1", 19006},
  2284. {ACCESSORY_GLASSES, "GlassesType2", 19007},
  2285. {ACCESSORY_GLASSES, "GlassesType3", 19008},
  2286. {ACCESSORY_GLASSES, "GlassesType4", 19009},
  2287. {ACCESSORY_GLASSES, "GlassesType5", 19010},
  2288. {ACCESSORY_GLASSES, "GlassesType6", 19011},
  2289. {ACCESSORY_GLASSES, "GlassesType7", 19012},
  2290. {ACCESSORY_GLASSES, "GlassesType8", 19013},
  2291. {ACCESSORY_GLASSES, "GlassesType9", 19014},
  2292. {ACCESSORY_GLASSES, "GlassesType10", 19015},
  2293. {ACCESSORY_GLASSES, "GlassesType11", 19016},
  2294. {ACCESSORY_GLASSES, "GlassesType12", 19017},
  2295. {ACCESSORY_GLASSES, "GlassesType13", 19018},
  2296. {ACCESSORY_GLASSES, "GlassesType14", 19019},
  2297. {ACCESSORY_GLASSES, "GlassesType15", 19020},
  2298. {ACCESSORY_GLASSES, "GlassesType16", 19021},
  2299. {ACCESSORY_GLASSES, "GlassesType17", 19022},
  2300. {ACCESSORY_GLASSES, "GlassesType18", 19023},
  2301. {ACCESSORY_GLASSES, "GlassesType19", 19024},
  2302. {ACCESSORY_GLASSES, "GlassesType20", 19025},
  2303. {ACCESSORY_GLASSES, "GlassesType21", 19026},
  2304. {ACCESSORY_GLASSES, "GlassesType22", 19027},
  2305. {ACCESSORY_GLASSES, "GlassesType23", 19028},
  2306. {ACCESSORY_GLASSES, "GlassesType24", 19029},
  2307. {ACCESSORY_GLASSES, "GlassesType25", 19030},
  2308. {ACCESSORY_GLASSES, "GlassesType26", 19031},
  2309. {ACCESSORY_GLASSES, "GlassesType27", 19032},
  2310. {ACCESSORY_GLASSES, "GlassesType28", 19033},
  2311. {ACCESSORY_GLASSES, "GlassesType29", 19034},
  2312. {ACCESSORY_GLASSES, "GlassesType30", 19035},
  2313. {ACCESSORY_BANDANAS, "Balaclava1", 19801},
  2314. {ACCESSORY_BANDANAS, "Mask1", 18911},
  2315. {ACCESSORY_BANDANAS, "Mask2", 18912},
  2316. {ACCESSORY_BANDANAS, "Mask3", 18913},
  2317. {ACCESSORY_BANDANAS, "Mask4", 18914},
  2318. {ACCESSORY_BANDANAS, "Mask5", 18915},
  2319. {ACCESSORY_BANDANAS, "Mask6", 18916},
  2320. {ACCESSORY_BANDANAS, "Mask7", 18917},
  2321. {ACCESSORY_BANDANAS, "Mask8", 18918},
  2322. {ACCESSORY_BANDANAS, "Mask9", 18919},
  2323. {ACCESSORY_BANDANAS, "Mask10", 18920},
  2324. {ACCESSORY_BANDANAS, "Bandana1", 18891},
  2325. {ACCESSORY_BANDANAS, "Bandana2", 18892},
  2326. {ACCESSORY_BANDANAS, "Bandana3", 18893},
  2327. {ACCESSORY_BANDANAS, "Bandana4", 18894},
  2328. {ACCESSORY_BANDANAS, "Bandana5", 18895},
  2329. {ACCESSORY_BANDANAS, "Bandana6", 18896},
  2330. {ACCESSORY_BANDANAS, "Bandana7", 18897},
  2331. {ACCESSORY_BANDANAS, "Bandana8", 18898},
  2332. {ACCESSORY_BANDANAS, "Bandana9", 18899},
  2333. {ACCESSORY_BANDANAS, "Bandana10", 18900},
  2334. {ACCESSORY_BANDANAS, "Bandana11", 18901},
  2335. {ACCESSORY_BANDANAS, "Bandana12", 18902},
  2336. {ACCESSORY_BANDANAS, "Bandana13", 18903},
  2337. {ACCESSORY_BANDANAS, "Bandana14", 18904},
  2338. {ACCESSORY_BANDANAS, "Bandana15", 18905},
  2339. {ACCESSORY_BANDANAS, "Bandana16", 18906},
  2340. {ACCESSORY_BANDANAS, "Bandana17", 18907},
  2341. {ACCESSORY_BANDANAS, "Bandana18", 18908},
  2342. {ACCESSORY_BANDANAS, "Bandana19", 18909},
  2343. {ACCESSORY_BANDANAS, "Bandana20", 18910},
  2344. {ACCESSORY_BANDANAS, "gasmask01", 19472},
  2345. {ACCESSORY_BANDANAS, "MaskZorro1", 18974},
  2346. {ACCESSORY_BANDANAS, "BDupsMask1", 11704},
  2347. {ACCESSORY_HATS, "HardHat1", 18638},
  2348. {ACCESSORY_HATS, "BlackHat1", 18639},
  2349. {ACCESSORY_HATS, "Hat1", 18926},
  2350. {ACCESSORY_HATS, "Hat2", 18927},
  2351. {ACCESSORY_HATS, "Hat3", 18928},
  2352. {ACCESSORY_HATS, "Hat4", 18929},
  2353. {ACCESSORY_HATS, "Hat5", 18930},
  2354. {ACCESSORY_HATS, "Hat6", 18931},
  2355. {ACCESSORY_HATS, "Hat7", 18932},
  2356. {ACCESSORY_HATS, "Hat8", 18933},
  2357. {ACCESSORY_HATS, "Hat9", 18934},
  2358. {ACCESSORY_HATS, "Hat10", 18935},
  2359. {ACCESSORY_HATS, "HatBoater1", 18944},
  2360. {ACCESSORY_HATS, "HatBoater2", 18945},
  2361. {ACCESSORY_HATS, "HatBoater3", 18946},
  2362. {ACCESSORY_HATS, "HatBowler1", 18947},
  2363. {ACCESSORY_HATS, "HatBowler2", 18948},
  2364. {ACCESSORY_HATS, "HatBowler3", 18949},
  2365. {ACCESSORY_HATS, "HatBowler4", 18950},
  2366. {ACCESSORY_HATS, "HatBowler5", 18951},
  2367. {ACCESSORY_HATS, "CowboyHat2", 18962},
  2368. {ACCESSORY_HATS, "HatMan1", 18967},
  2369. {ACCESSORY_HATS, "HatMan2", 18968},
  2370. {ACCESSORY_HATS, "HatMan3", 18969},
  2371. {ACCESSORY_HATS, "HatTiger1", 18970},
  2372. {ACCESSORY_HATS, "HatCool1", 18971},
  2373. {ACCESSORY_HATS, "HatCool2", 18972},
  2374. {ACCESSORY_HATS, "HatCool3", 18973},
  2375. {ACCESSORY_HATS, "SantaHat1", 19064},
  2376. {ACCESSORY_HATS, "SantaHat2", 19065},
  2377. {ACCESSORY_HATS, "SantaHat3", 19066},
  2378. {ACCESSORY_HATS, "HoodyHat1", 19067},
  2379. {ACCESSORY_HATS, "HoodyHat2", 19068},
  2380. {ACCESSORY_HATS, "HoodyHat3", 19069},
  2381. {ACCESSORY_HATS, "HardHat2", 19093},
  2382. {ACCESSORY_HATS, "BurgerShotHat1", 19094},
  2383. {ACCESSORY_HATS, "CowboyHat1", 19095},
  2384. {ACCESSORY_HATS, "CowboyHat3", 19096},
  2385. {ACCESSORY_HATS, "CowboyHat4", 19097},
  2386. {ACCESSORY_HATS, "CowboyHat5", 19098},
  2387. {ACCESSORY_HATS, "CluckinBellHat1", 19137},
  2388. {ACCESSORY_HATS, "HardHat3", 19160},
  2389. {ACCESSORY_BAGS, "Nike Bag", -2000},
  2390. {ACCESSORY_BAGS, "McDonalds Bag", -2001}
  2391. // {ACCESSORY_LEO, "GunHolster1", 19773},
  2392. // {ACCESSORY_LEO, "ConstructionVest1", 19160},
  2393. // {ACCESSORY_LEO, "SWATHelmet1", 19141},
  2394. // {ACCESSORY_LEO, "policeHat01", 19521},
  2395. // {ACCESSORY_LEO, "PoliceHat2", 19162},
  2396. // {ACCESSORY_LEO, "PoliceCap2", 19099},
  2397. // {ACCESSORY_LEO, "PoliceCap3", 19100} //maticalfinishwhenback
  2398. };
  2399. /*enum {
  2400. FURNITURE_FRIDGE,
  2401. FURNITURE_STOVE,
  2402. FURNITURE_TRASHCAN,
  2403. FURNITURE_BED,
  2404. FURNITURE_CHAIR,
  2405. FURNITURE_ARMCHAIR,
  2406. FURNITURE_COUCH,
  2407. FURNITURE_STOOL,
  2408. FURNITURE_CURTAIN,
  2409. FURNITURE_FLAG,
  2410. FURNITURE_RUG,
  2411. FURNITURE_STATUE,
  2412. FURNITURE_TOWEL,
  2413. FURNITURE_PAINTING,
  2414. FURNITURE_POSTER,
  2415. FURNITURE_PLANT,
  2416. FURNITURE_SPORT,
  2417. FURNITURE_TV,
  2418. FURNITURE_GAMING,
  2419. FURNITURE_MEDIA,
  2420. FURNITURE_LAMP,
  2421. FURNITURE_BATHROOM,
  2422. FURNITURE_STORAGE,
  2423. FURNITURE_DINETABLE,
  2424. FURNITURE_COFFEETABLE,
  2425. FURNITURE_COUNTER,
  2426. FURNITURE_CABINET,
  2427. FURNITURE_SHELF,
  2428. FURNITURE_MESS,
  2429. FURNITURE_MISC,
  2430. FURNITURE_OFFICE,
  2431. FURNITURE_PILLAR,
  2432. FURNITURE_DOOR,
  2433. FURNITURE_TOY,
  2434. FURNITURE_GAMBLE,
  2435. FURNITURE_TAG,
  2436. FURNITURE_PARTY,
  2437. FURNITURE_EFFECT,
  2438. FURNITURE_WALLDOORWAY,
  2439. FURNITURE_WALLWINDOW,
  2440. FURNITURE_WALLSHORT,
  2441. FURNITURE_WALLLONG,
  2442. FURNITURE_GLASS
  2443. };*/
  2444. /*new const g_FurnitureTypes[][] = {
  2445. "Refridgerators",
  2446. "Stoves",
  2447. "Trashcans",
  2448. "Beds",
  2449. "Chairs",
  2450. "Arm chairs",
  2451. "Couches",
  2452. "Stools",
  2453. "Curtains",
  2454. "Flags",
  2455. "Rugs",
  2456. "Statues",
  2457. "Towels",
  2458. "Paintings",
  2459. "Posters",
  2460. "Plants",
  2461. "Sport equipment",
  2462. "Televisions",
  2463. "Gaming equipment",
  2464. "Media",
  2465. "Lamp",
  2466. "Bathroom",
  2467. "Storage",
  2468. "Dining tables",
  2469. "Coffee tables",
  2470. "Counters",
  2471. "Cabinets",
  2472. "Shelves",
  2473. "Mess",
  2474. "Misc",
  2475. "Office",
  2476. "Pillars",
  2477. "Doors",
  2478. "Toys",
  2479. "Gambling",
  2480. "Gang tags",
  2481. "Party",
  2482. "Effects",
  2483. "Wall (Doorway)",
  2484. "Wall (Window)",
  2485. "Wall (Short)",
  2486. "Wall (Long)",
  2487. "Glass"
  2488. };*/
  2489. enum e_FurnitureList
  2490. {
  2491. e_ModelCategory,
  2492. e_ModelName[32],
  2493. e_ModelID,
  2494. e_ModelPrice
  2495. };
  2496. new const g_FurnitureList[][e_FurnitureList] =
  2497. {
  2498. {FURNITURE_KITCHEN, "CJ_KITCH1_FRIDGE", 2147, 2000},
  2499. {FURNITURE_KITCHEN, "CJ_KITCH1_COOKER", 2170, 1000},
  2500. {FURNITURE_KITCHEN, "CJ_KITCH1_SINK", 2336, 550},
  2501. {FURNITURE_KITCHEN, "CJ_KITCH1_WASHER", 2337, 400},
  2502. {FURNITURE_KITCHEN, "CJ_KITCH1_L", 2158, 550},
  2503. {FURNITURE_KITCHEN, "CJ_KITCH1_M", 2334, 550},
  2504. {FURNITURE_KITCHEN, "CJ_KITCH1_R", 2335, 550},
  2505. {FURNITURE_KITCHEN, "CJ_KITCH1_CORNER", 2338, 550},
  2506. {FURNITURE_KITCHEN, "CJ_KITCH2_FRIDGE", 2131, 450},
  2507. {FURNITURE_KITCHEN, "CJ_KITCH2_SINK", 2132, 550},
  2508. {FURNITURE_KITCHEN, "CJ_KITCH2_COOKER", 2339, 1000},
  2509. {FURNITURE_KITCHEN, "CJ_KITCH2_WASHER", 2340, 400},
  2510. {FURNITURE_KITCHEN, "CJ_KITCH2_L", 2141, 1000},
  2511. {FURNITURE_KITCHEN, "CJ_KITCH2_M", 2134, 1000},
  2512. {FURNITURE_KITCHEN, "CJ_KITCH2_R", 2133, 1000},
  2513. {FURNITURE_KITCHEN, "CJ_KITCH2_CORNER", 2341, 550},
  2514. {FURNITURE_KITCHEN, "CJ_K3_COOKER", 2135, 2000},
  2515. {FURNITURE_KITCHEN, "CJ_K3_SINK", 2136, 450},
  2516. {FURNITURE_KITCHEN, "CJ_K3_LOW_UNIT1", 2138, 1000},
  2517. {FURNITURE_KITCHEN, "CJ_K3_LOW_UNIT2", 2139, 1000},
  2518. {FURNITURE_KITCHEN, "CJ_K3_LOW_UNIT3", 2137, 1000},
  2519. {FURNITURE_KITCHEN, "CJ_K3_TALL_UNIT1", 2140, 400},
  2520. {FURNITURE_KITCHEN, "CJ_K3_C_UNIT", 2305, 400},
  2521. {FURNITURE_KITCHEN, "CJ_K3_WASH_MAC", 2303, 550},
  2522. {FURNITURE_KITCHEN, "CJ_K3_UNIT06", 2145, 450},
  2523. {FURNITURE_KITCHEN, "CJ_K1_FRIDGE_UNIT", 2127, 400},
  2524. {FURNITURE_KITCHEN, "CJ_K1_SINK", 2130, 1000},
  2525. {FURNITURE_KITCHEN, "CJ_K1_TALL_UNIT", 2128, 1000},
  2526. {FURNITURE_KITCHEN, "CJ_K1_LOW_UNIT", 2129, 550},
  2527. {FURNITURE_KITCHEN, "CJ_K1_LOW_CORNER", 2304, 550},
  2528. {FURNITURE_KITCHEN, "CJ_THIN_FRIGE", 1780, 550},
  2529. {FURNITURE_KITCHEN, "CJ_FF_CONTER_5", 2446, 600},
  2530. {FURNITURE_KITCHEN, "CJ_FF_CONTER_5c", 2447, 600},
  2531. {FURNITURE_KITCHEN, "CJ_FF_CONTER_5d", 2448, 600},
  2532. {FURNITURE_KITCHEN, "CJ_FF_CONTER_5e", 2449, 2000},
  2533. {FURNITURE_KITCHEN, "CJ_FF_CONTER_5b", 2450, 450},
  2534. {FURNITURE_KITCHEN, "CJ_FF_CONTER_8b", 2454, 400},
  2535. {FURNITURE_KITCHEN, "CJ_FF_CONTER_8c", 2457, 400},
  2536. {FURNITURE_KITCHEN, "CJ_FF_COFFEE", 2500, 250},
  2537. {FURNITURE_KITCHEN, "CJ_FF_FRYER", 2415, 550},
  2538. {FURNITURE_KITCHEN, "CJ_FF_COOKER", 2417, 550},
  2539. {FURNITURE_KITCHEN, "CJ_FF_MICROW", 2421, 250},
  2540. {FURNITURE_KITCHEN, "CJ_MICROWAVE1", 2149, 800},
  2541. {FURNITURE_KITCHEN, "CJ_FF_PIZZA_OVEN", 2426, 1500},
  2542. {FURNITURE_KITCHEN, "CJ_FF_FRIDGE2", 2452, 400},
  2543. {FURNITURE_KITCHEN, "CJ_FF_DISP", 2416, 9000},
  2544. {FURNITURE_KITCHEN, "CJ_FF_JUICE_L", 2427, 550},
  2545. {FURNITURE_KITCHEN, "CJ_FF_CUP_DISP", 2429, 2000},
  2546. {FURNITURE_KITCHEN, "CJ_OFF2_LIC_2_R", 2530, 550},
  2547. {FURNITURE_KITCHEN, "CJ_OFF2_LIC_1_R", 2532, 550},
  2548. {FURNITURE_KITCHEN, "MarcosFryingPan1", 19581, 500},
  2549. {FURNITURE_KITCHEN, "MarcosSteak1", 19582, 500},
  2550. {FURNITURE_KITCHEN, "MarcosKnife1", 19583, 500},
  2551. {FURNITURE_KITCHEN, "MarcosSaucepan1", 19584, 500},
  2552. {FURNITURE_KITCHEN, "MarcosPan1", 19585, 500},
  2553. {FURNITURE_KITCHEN, "MarcosSpatula1", 19586, 500},
  2554. {FURNITURE_TABLES, "parktable1", 1281, 600},
  2555. {FURNITURE_TABLES, "DYN_TABLE_1", 1433, 600},
  2556. {FURNITURE_TABLES, "DYN_TABLE_2", 1432, 7500},
  2557. {FURNITURE_TABLES, "craps_table", 1824, 9000},
  2558. {FURNITURE_TABLES, "wheel_table", 1896, 6500},
  2559. {FURNITURE_TABLES, "k_pooltablesm", 2964, 2000},
  2560. {FURNITURE_TABLES, "pokertable01", 19474, 400},
  2561. {FURNITURE_TABLES, "officedesk1l", 1998, 2000},
  2562. {FURNITURE_TABLES, "officedesk2", 1999, 400},
  2563. {FURNITURE_TABLES, "officedesk1", 2008, 4500},
  2564. {FURNITURE_TABLES, "officedesk2l", 2009, 2000},
  2565. {FURNITURE_TABLES, "MED_OFFICE_DESK_1", 2165, 400},
  2566. {FURNITURE_TABLES, "MED_OFFICE_DESK_2", 2166, 4500},
  2567. {FURNITURE_TABLES, "MED_OFFICE_DESK_3", 2173, 400},
  2568. {FURNITURE_TABLES, "MED_OFFICE2_DESK_1", 2172, 400},
  2569. {FURNITURE_TABLES, "MED_OFFICE3_DESK_1", 2169, 1000},
  2570. {FURNITURE_TABLES, "MED_OFFICE4_DESK_1", 2171, 4500},
  2571. {FURNITURE_TABLES, "MED_OFFICE4_DESK_2", 2174, 400},
  2572. {FURNITURE_TABLES, "MED_OFFICE4_DESK_3", 2175, 400},
  2573. {FURNITURE_TABLES, "MED_OFFICE5_DESK_3", 2180, 2500},
  2574. {FURNITURE_TABLES, "MED_OFFICE5_DESK_2", 2181, 550},
  2575. {FURNITURE_TABLES, "MED_OFFICE5_DESK_1", 2182, 400},
  2576. {FURNITURE_TABLES, "MED_OFFICE3_DESK_09", 2183, 6000},
  2577. {FURNITURE_TABLES, "MED_OFFICE6_DESK_2", 2184, 6500},
  2578. {FURNITURE_TABLES, "MED_OFFICE6_DESK_1", 2185, 2000},
  2579. {FURNITURE_TABLES, "MED_OFFICE2_DESK_2", 2193, 7000},
  2580. {FURNITURE_TABLES, "MED_OFFICE2_DESK_3", 2198, 2000},
  2581. {FURNITURE_TABLES, "MED_OFFICE8_DESK_1", 2205, 550},
  2582. {FURNITURE_TABLES, "MED_OFFICE8_DESK_02", 2206, 2500},
  2583. {FURNITURE_TABLES, "MED_OFFICE7_DESK_1", 2207, 550},
  2584. {FURNITURE_TABLES, "MED_OFFICE9_DESK_1", 2209, 5500},
  2585. {FURNITURE_TABLES, "MED_OFFICE4_DESK_4", 2308, 6000},
  2586. {FURNITURE_TABLES, "CJ_FF_WORKTOP", 2418, 400},
  2587. {FURNITURE_TABLES, "CJ_FF_WORKTOP_2", 2419, 400},
  2588. {FURNITURE_TABLES, "CJ_FF_WORKTOP_3", 2451, 2000},
  2589. {FURNITURE_TABLES, "CJ_DF_WORKTOP_2", 936, 1000},
  2590. {FURNITURE_TABLES, "CJ_DF_WORKTOP", 937, 400},
  2591. {FURNITURE_TABLES, "CJ_DF_WORKTOP_3", 941, 1000},
  2592. {FURNITURE_TABLES, "CJ_TV_TABLE2", 2311, 2000},
  2593. {FURNITURE_TABLES, "CJ_TV_TABLE1", 2313, 2500},
  2594. {FURNITURE_TABLES, "CJ_TV_TABLE3", 2314, 550},
  2595. {FURNITURE_TABLES, "CJ_TV_TABLE4", 2315, 550},
  2596. {FURNITURE_TABLES, "CJ_TV_TABLE5", 2319, 2500},
  2597. {FURNITURE_TABLES, "CJ_TV_TABLE6", 2321, 2000},
  2598. {FURNITURE_TABLES, "CJ_HIFI_TABLE", 2346, 2500},
  2599. {FURNITURE_TABLES, "Shop_set_1_Table", 2370, 1000},
  2600. {FURNITURE_TABLES, "POLCE_DESK1", 2605, 1500},
  2601. {FURNITURE_TABLES, "POLCE_DESK2", 2607, 2000},
  2602. {FURNITURE_TABLES, "CJ_PIZZA_TABLE", 2635, 2500},
  2603. {FURNITURE_TABLES, "CJ_PIZZA_TABLE2", 2637, 2500},
  2604. {FURNITURE_TABLES, "CJ_BURG_TABLE", 2644, 2500},
  2605. {FURNITURE_TABLES, "CJ_donut_TABLE", 2747, 2000},
  2606. {FURNITURE_TABLES, "CJ_CHICK_TABLE", 2762, 2000},
  2607. {FURNITURE_TABLES, "CJ_CHICK_TABLE_2", 2763, 2000},
  2608. {FURNITURE_TABLES, "CJ_PIZZA_TABLE03", 2764, 2500},
  2609. {FURNITURE_TABLES, "MED_DINNING_6", 2119, 2500},
  2610. {FURNITURE_TABLES, "SWANK_DINNING_6", 2118, 2000},
  2611. {FURNITURE_TABLES, "SWANK_DINNING_5", 2117, 2500},
  2612. {FURNITURE_TABLES, "LOW_DINNING_6", 2116, 1500},
  2613. {FURNITURE_TABLES, "LOW_DINNING_1", 2115, 1500},
  2614. {FURNITURE_TABLES, "castable1", 2802, 400},
  2615. {FURNITURE_TABLES, "a51_labtable1_", 3383, 2000},
  2616. {FURNITURE_CHAIRS, "Stonebench1", 1256, 2000},
  2617. {FURNITURE_CHAIRS, "parkbench1", 1280, 2500},
  2618. {FURNITURE_CHAIRS, "CJ_BLOCKER_BENCH", 1368, 2500},
  2619. {FURNITURE_CHAIRS, "swivelchair_B", 1663, 1500},
  2620. {FURNITURE_CHAIRS, "swivelchair_A", 1671, 1500},
  2621. {FURNITURE_CHAIRS, "kb_swivelchair1", 1714, 1500},
  2622. {FURNITURE_CHAIRS, "kb_swivelchair2", 1715, 1500},
  2623. {FURNITURE_CHAIRS, "kb_slot_stool", 1716, 1000},
  2624. {FURNITURE_CHAIRS, "est_chair1", 1721, 1000},
  2625. {FURNITURE_CHAIRS, "kb_chair03", 1704, 2000},
  2626. {FURNITURE_CHAIRS, "kb_chair04", 1705, 2000},
  2627. {FURNITURE_CHAIRS, "kb_chair02", 1708, 2000},
  2628. {FURNITURE_CHAIRS, "kb_chair01", 1711, 2000},
  2629. {FURNITURE_CHAIRS, "mrk_seating1", 1723, 550},
  2630. {FURNITURE_CHAIRS, "mrk_seating1b", 1724, 200},
  2631. {FURNITURE_CHAIRS, "mrk_seating2", 1726, 550},
  2632. {FURNITURE_CHAIRS, "mrk_seating2b", 1727, 2000},
  2633. {FURNITURE_CHAIRS, "mrk_seating3", 1728, 1000},
  2634. {FURNITURE_CHAIRS, "mrk_seating3b", 1729, 2500},
  2635. {FURNITURE_CHAIRS, "CJ_EASYCHAIR1", 1735, 2000},
  2636. {FURNITURE_CHAIRS, "SWANK_DIN_CHAIR_5", 1739, 1000},
  2637. {FURNITURE_CHAIRS, "SWANK_1_FootStool", 1746, 500},
  2638. {FURNITURE_CHAIRS, "CJ_BARSTOOL", 1805, 1000},
  2639. {FURNITURE_CHAIRS, "MED_OFFICE_CHAIR", 1806, 2500},
  2640. {FURNITURE_CHAIRS, "CJ_FOLDCHAIR", 1810, 500},
  2641. {FURNITURE_CHAIRS, "MED_DIN_CHAIR_5", 1811, 1500},
  2642. {FURNITURE_CHAIRS, "SWANK_DIN_CHAIR_2", 2079, 1000},
  2643. {FURNITURE_CHAIRS, "MED_DIN_CHAIR_4", 2120, 1500},
  2644. {FURNITURE_CHAIRS, "LOW_DIN_CHAIR_2", 2121, 500},
  2645. {FURNITURE_CHAIRS, "SWANK_DIN_CHAIR_4", 2123, 1000},
  2646. {FURNITURE_CHAIRS, "SWANK_DIN_CHAIR_1", 2124, 1500},
  2647. {FURNITURE_CHAIRS, "MED_DIN_CHAIR_1", 2125, 500},
  2648. {FURNITURE_CHAIRS, "MED_OFFICE_CHAIR2", 2309, 1000},
  2649. {FURNITURE_CHAIRS, "CJ_PIZZA_CHAIR2", 2638, 400},
  2650. {FURNITURE_CHAIRS, "CJ_PIZZA_CHAIR3", 2639, 550},
  2651. {FURNITURE_CHAIRS, "LEE_stripCHAIR2", 2776, 1000},
  2652. {FURNITURE_CHAIRS, "CJ_BURG_CHAIR", 2788, 1000},
  2653. {FURNITURE_CHAIRS, "SWK_COUCH_1", 2290, 400},
  2654. {FURNITURE_CHAIRS, "LOW_COUCH_3", 1768, 400},
  2655. {FURNITURE_CHAIRS, "MED_COUCH_1", 1766, 400},
  2656. {FURNITURE_CHAIRS, "LOW_COUCH_2", 1764, 400},
  2657. {FURNITURE_CHAIRS, "LOW_COUCH_1", 1763, 400},
  2658. {FURNITURE_CHAIRS, "SWANK_COUCH_2", 1761, 400},
  2659. {FURNITURE_CHAIRS, "MED_COUCH_2", 1760, 400},
  2660. {FURNITURE_CHAIRS, "LOW_COUCH_5", 1757, 400},
  2661. {FURNITURE_CHAIRS, "LOW_COUCH_4", 1756, 400},
  2662. {FURNITURE_CHAIRS, "SWANK_COUCH_1", 1753, 2000},
  2663. {FURNITURE_CHAIRS, "kb_couch04", 1713, 400},
  2664. {FURNITURE_CHAIRS, "kb_couch05", 1712, 400},
  2665. {FURNITURE_CHAIRS, "kb_couch07", 1710, 6000},
  2666. {FURNITURE_CHAIRS, "kb_couch08", 1709, 8000},
  2667. {FURNITURE_CHAIRS, "kb_couch01", 1707, 400},
  2668. {FURNITURE_CHAIRS, "kb_couch03", 1706, 400},
  2669. {FURNITURE_CHAIRS, "kb_couch02", 1703, 400},
  2670. {FURNITURE_CHAIRS, "kb_couch06", 1702, 400},
  2671. {FURNITURE_SHELVES, "CJ_BEDROOM1", 2323, 2000},
  2672. {FURNITURE_SHELVES, "CJ_BEDROOM1_W", 2330, 6000},
  2673. {FURNITURE_SHELVES, "mrk_wrobe_tmp", 2025, 5500},
  2674. {FURNITURE_SHELVES, "MED_SHELF", 1744, 1500},
  2675. {FURNITURE_SHELVES, "DYN_CUPBOARD", 1417, 1000},
  2676. {FURNITURE_SHELVES, "MED_OFFICE_UNIT_4", 2161, 400},
  2677. {FURNITURE_SHELVES, "MED_OFFICE_UNIT_1", 2162, 400},
  2678. {FURNITURE_SHELVES, "MED_OFFICE_UNIT_2", 2163, 4500},
  2679. {FURNITURE_SHELVES, "MED_OFFICE_UNIT_5", 2164, 400},
  2680. {FURNITURE_SHELVES, "MED_OFFICE_UNIT_7", 2167, 400},
  2681. {FURNITURE_SHELVES, "MED_OFFICE6_MC_1", 2199, 2500},
  2682. {FURNITURE_SHELVES, "CJ_HOBBY_SHELF", 2462, 550},
  2683. {FURNITURE_SHELVES, "CJ_HOBBY_SHELF_2", 2463, 550},
  2684. {FURNITURE_SHELVES, "CJ_HOBBY_SHELF_3", 2475, 1000},
  2685. {FURNITURE_SHELVES, "CJ_HOBBY_SHELF_4", 2482, 400},
  2686. {FURNITURE_SHELVES, "CJ_HOBBY_SHELF_5", 2502, 550},
  2687. {FURNITURE_SHELVES, "CJ_HOBBY_SHELF_6", 2509, 550},
  2688. {FURNITURE_SHELVES, "Med_BOOKSHELF", 1742, 2500},
  2689. {FURNITURE_SHELVES, "CJ_M_FILEING1", 2065, 1000},
  2690. {FURNITURE_SHELVES, "CJ_M_FILEING2", 2066, 1000},
  2691. {FURNITURE_SHELVES, "CJ_M_FILEING3", 2067, 1000},
  2692. {FURNITURE_BATHROOM, "CJ_TOILET_BS", 2738, 2000},
  2693. {FURNITURE_BATHROOM, "CJ_TOILET1", 2514, 2000},
  2694. {FURNITURE_BATHROOM, "CJ_TOILET2", 2521, 2500},
  2695. {FURNITURE_BATHROOM, "CJ_TOILET3", 2528, 2000},
  2696. {FURNITURE_BATHROOM, "CJ_TOILET4", 2525, 550},
  2697. {FURNITURE_BATHROOM, "CJ_SHOWER1", 2517, 1000},
  2698. {FURNITURE_BATHROOM, "CJ_SHOWER2", 2520, 550},
  2699. {FURNITURE_BATHROOM, "CJ_SHOWER4", 2527, 550},
  2700. {FURNITURE_BATHROOM, "CJ_BATH1", 2516, 550},
  2701. {FURNITURE_BATHROOM, "CJ_BATH2", 2519, 2500},
  2702. {FURNITURE_BATHROOM, "CJ_BATH3", 2522, 400},
  2703. {FURNITURE_BATHROOM, "CJ_BATH4", 2526, 550},
  2704. {FURNITURE_BATHROOM, "CJ_BATH5", 2097, 2000},
  2705. {FURNITURE_BATHROOM, "CJ_B_SINK1", 2739, 2000},
  2706. {FURNITURE_BATHROOM, "CJ_B_SINK2", 2518, 2000},
  2707. {FURNITURE_BATHROOM, "CJ_B_SINK3", 2523, 550},
  2708. {FURNITURE_BATHROOM, "CJ_B_SINK4", 2524, 2500},
  2709. {FURNITURE_BEDROOM, "kb_bed_test1", 1700, 550},
  2710. {FURNITURE_BEDROOM, "kb_bed_test2", 1701, 550},
  2711. {FURNITURE_BEDROOM, "MED_BED_3", 1745, 550},
  2712. {FURNITURE_BEDROOM, "LOW_BED_2", 1793, 550},
  2713. {FURNITURE_BEDROOM, "LOW_BED_3", 1794, 550},
  2714. {FURNITURE_BEDROOM, "SWANK_BED_2", 1795, 550},
  2715. {FURNITURE_BEDROOM, "LOW_BED_4", 1796, 550},
  2716. {FURNITURE_BEDROOM, "SWANK_BED_3", 1797, 550},
  2717. {FURNITURE_BEDROOM, "SWANK_BED_1", 1798, 550},
  2718. {FURNITURE_BEDROOM, "MED_BED_4", 1799, 550},
  2719. {FURNITURE_BEDROOM, "LOW_BED_1", 1800, 550},
  2720. {FURNITURE_BEDROOM, "SWANK_BED_4", 1801, 550},
  2721. {FURNITURE_BEDROOM, "MED_BED_2", 1802, 550},
  2722. {FURNITURE_BEDROOM, "LOW_BED_5", 1812, 550},
  2723. {FURNITURE_BEDROOM, "SWANK_BED_5", 2090, 550},
  2724. {FURNITURE_BEDROOM, "SWANK_BED_7", 2298, 550},
  2725. {FURNITURE_BEDROOM, "SWANK_BED_6", 2299, 550},
  2726. {FURNITURE_BEDROOM, "MED_BED_8", 2300, 550},
  2727. {FURNITURE_BEDROOM, "MED_BED_9", 2301, 550},
  2728. {FURNITURE_BEDROOM, "LOW_BED_06", 2302, 550},
  2729. {FURNITURE_CABINETS, "SWANK_CABINET_3", 1730, 550},
  2730. {FURNITURE_CABINETS, "LOW_CABINET_3", 1740, 1000},
  2731. {FURNITURE_CABINETS, "LOW_CABINET_1", 1741, 1000},
  2732. {FURNITURE_CABINETS, "MED_CABINET_3", 1743, 550},
  2733. {FURNITURE_CABINETS, "SWANK_CABINET_1", 2078, 550},
  2734. {FURNITURE_CABINETS, "MED_CABINET_1", 2084, 2000},
  2735. {FURNITURE_CABINETS, "MED_CABINET_2", 2087, 2500},
  2736. {FURNITURE_CABINETS, "LOW_CABINET_4", 2088, 550},
  2737. {FURNITURE_CABINETS, "SWANK_CABINET_2", 2089, 400},
  2738. {FURNITURE_CABINETS, "SWANK_CABINET_4", 2094, 1000},
  2739. {FURNITURE_CABINETS, "LOW_CABINET_2", 2095, 550},
  2740. {FURNITURE_CABINETS, "MED_OFFICE8_CABINET", 2204, 1000},
  2741. {FURNITURE_CABINETS, "SWANK_CABINET_4D", 2306, 550},
  2742. {FURNITURE_CABINETS, "SWANK_CABINET_4b", 2307, 550},
  2743. {FURNITURE_CABINETS, "LOW_CABINET_1_S", 2328, 550},
  2744. {FURNITURE_CABINETS, "LOW_CABINET_1_L", 2329, 400},
  2745. {FURNITURE_CABINETS, "ZEROWARDROBE", 14556, 2000},
  2746. {FURNITURE_ELECTRIC, "LCDTVBig1", 19786, 10000},
  2747. {FURNITURE_ELECTRIC, "LCDTV1", 19787, 8000},
  2748. {FURNITURE_ELECTRIC, "Telephone1", 19807, 500},
  2749. {FURNITURE_ELECTRIC, "Keyboard1", 19808, 500},
  2750. {FURNITURE_ELECTRIC, "TV_WARD_Low", 2093, 6000},
  2751. {FURNITURE_ELECTRIC, "TV_UNIT_1", 2296, 5500},
  2752. {FURNITURE_ELECTRIC, "TV_UNIT_1", 2297, 2000},
  2753. {FURNITURE_ELECTRIC, "tv_stand_driv", 14532, 550},
  2754. {FURNITURE_ELECTRIC, "DYN_TV", 1429, 550},
  2755. {FURNITURE_ELECTRIC, "LOW_TV_2", 1747, 550},
  2756. {FURNITURE_ELECTRIC, "LOW_TV_3", 1748, 550},
  2757. {FURNITURE_ELECTRIC, "MED_TV_3", 1749, 550},
  2758. {FURNITURE_ELECTRIC, "MED_TV_2", 1750, 550},
  2759. {FURNITURE_ELECTRIC, "MED_TV_4", 1751, 550},
  2760. {FURNITURE_ELECTRIC, "SWANK_TV_3", 1752, 550},
  2761. {FURNITURE_ELECTRIC, "SWANK_TV_4", 1786, 550},
  2762. {FURNITURE_ELECTRIC, "CJ_Sphere_TV", 2224, 550},
  2763. {FURNITURE_ELECTRIC, "PHOTOCOPIER_1", 2186, 2000},
  2764. {FURNITURE_ELECTRIC, "PHOTOCOPIER_2", 2202, 4500},
  2765. {FURNITURE_ELECTRIC, "DYN_FF_TILL", 1514, 400},
  2766. {FURNITURE_ELECTRIC, "CJ_FF_TILL", 2422, 4500},
  2767. {FURNITURE_ELECTRIC, "PC_1", 2190, 550},
  2768. {FURNITURE_ELECTRIC, "CJ_WATERCOOLER2", 1808, 400},
  2769. {FURNITURE_ELECTRIC, "water_coolnu", 2002, 1000},
  2770. {FURNITURE_ELECTRIC, "washer", 1208, 550},
  2771. {FURNITURE_ELECTRIC, "DYN_BAR_B_Q", 1481, 400},
  2772. {FURNITURE_ELECTRIC, "gym_treadmill", 2627, 12000},
  2773. {FURNITURE_ELECTRIC, "gym_bench2", 2628, 400},
  2774. {FURNITURE_ELECTRIC, "gym_bench1", 2629, 400},
  2775. {FURNITURE_ELECTRIC, "gym_bike", 2630, 400},
  2776. {FURNITURE_ELECTRIC, "snesish", 1718, 2000},
  2777. {FURNITURE_ELECTRIC, "LOW_CONSOLE", 1719, 2000},
  2778. {FURNITURE_ELECTRIC, "SWANK_CONSOLE", 2028, 550},
  2779. {FURNITURE_ELECTRIC, "MED_VIDEO_2", 1782, 1000},
  2780. {FURNITURE_ELECTRIC, "SWANK_VIDEO_2", 1783, 1000},
  2781. {FURNITURE_ELECTRIC, "LOW_VIDEO_1", 1785, 1000},
  2782. {FURNITURE_ELECTRIC, "SWANK_VIDEO_1", 1788, 1000},
  2783. {FURNITURE_ELECTRIC, "SWANK_VIDEO_3", 1790, 1000},
  2784. {FURNITURE_ELECTRIC, "LOW_HI_FI_2", 2102, 550},
  2785. {FURNITURE_ELECTRIC, "LOW_HI_FI_1", 2103, 550},
  2786. {FURNITURE_ELECTRIC, "LOW_HI_FI_3", 2226, 2500},
  2787. {FURNITURE_ELECTRIC, "MED_HI_FI_1", 2099, 400},
  2788. {FURNITURE_ELECTRIC, "MED_HI_FI_2", 2100, 400},
  2789. {FURNITURE_ELECTRIC, "MED_HI_FI_3", 2101, 400},
  2790. {FURNITURE_ELECTRIC, "SWANK_SPEAKER", 2229, 4500},
  2791. {FURNITURE_ELECTRIC, "SWANK_SPEAKER_2", 2230, 400},
  2792. {FURNITURE_ELECTRIC, "SWANK_SPEAKER_3", 2231, 400},
  2793. {FURNITURE_ELECTRIC, "MED_SPEAKER_4", 2232, 400},
  2794. {FURNITURE_PLANTS, "veg_palmkb1", 625, 2000},
  2795. {FURNITURE_PLANTS, "veg_palmkb2", 626, 2000},
  2796. {FURNITURE_PLANTS, "veg_palmkb3", 627, 2000},
  2797. {FURNITURE_PLANTS, "veg_palmkb4", 628, 2000},
  2798. {FURNITURE_PLANTS, "veg_palmkb8", 630, 2000},
  2799. {FURNITURE_PLANTS, "veg_palmkb9", 631, 2000},
  2800. {FURNITURE_PLANTS, "veg_palmkb7", 632, 2000},
  2801. {FURNITURE_PLANTS, "veg_palmkb10", 633, 2000},
  2802. {FURNITURE_PLANTS, "kb_planter+bush", 638, 2000},
  2803. {FURNITURE_PLANTS, "pot_02", 644, 2000},
  2804. {FURNITURE_PLANTS, "veg_palmkb14", 646, 2000},
  2805. {FURNITURE_PLANTS, "Plant_Pot_10", 948, 2000},
  2806. {FURNITURE_PLANTS, "Plant_Pot_4", 949, 2000},
  2807. {FURNITURE_PLANTS, "Plant_Pot_12", 950, 2000},
  2808. {FURNITURE_PLANTS, "CJ_BUSH_PROP3", 1360, 2000},
  2809. {FURNITURE_PLANTS, "CJ_BUSH_PROP2", 1361, 2000},
  2810. {FURNITURE_PLANTS, "CJ_BUSH_PROP", 1364, 2000},
  2811. {FURNITURE_PLANTS, "nu_plant_ofc", 2001, 200},
  2812. {FURNITURE_PLANTS, "nu_plant3_ofc", 2010, 200},
  2813. {FURNITURE_PLANTS, "nu_plant2_ofc", 2011, 200},
  2814. {FURNITURE_PLANTS, "Plant_Pot_2", 2194, 200},
  2815. {FURNITURE_PLANTS, "Plant_Pot_3", 2195, 200},
  2816. {FURNITURE_PLANTS, "Plant_Pot_1", 2203, 100},
  2817. {FURNITURE_PLANTS, "Plant_Pot_8", 2240, 500},
  2818. {FURNITURE_PLANTS, "Plant_Pot_5", 2241, 200},
  2819. {FURNITURE_PLANTS, "Plant_Pot_7", 2242, 200},
  2820. {FURNITURE_PLANTS, "Plant_Pot_9", 2244, 200},
  2821. {FURNITURE_PLANTS, "Plant_Pot_11", 2245, 200},
  2822. {FURNITURE_PLANTS, "Plant_Pot_14", 2246, 200},
  2823. {FURNITURE_PLANTS, "Plant_Pot_16", 2248, 200},
  2824. {FURNITURE_PLANTS, "Plant_Pot_21", 2252, 200},
  2825. {FURNITURE_PLANTS, "Plant_Pot_22", 2253, 2000},
  2826. {FURNITURE_PLANTS, "GB_romanpot01", 2811, 2000},
  2827. {FURNITURE_PLANTS, "sfx_plant03", 3802, 2000},
  2828. {FURNITURE_PLANTS, "sfx_winplant07", 3806, 2000},
  2829. {FURNITURE_PLANTS, "sfx_plant04", 3810, 2000},
  2830. {FURNITURE_TRASH, "CJ_Dump1_LOW01", 1430, 1500},
  2831. {FURNITURE_TRASH, "DYN_DUMPSTER", 1415, 1000},
  2832. {FURNITURE_TRASH, "CJ_HIPPO_BIN", 1371, 2000},
  2833. {FURNITURE_TRASH, "CJ_BIN1", 1359, 1500},
  2834. {FURNITURE_TRASH, "CJ_WASTEBIN", 1347, 500},
  2835. {FURNITURE_TRASH, "BinNt09_LA", 1339, 1500},
  2836. {FURNITURE_TRASH, "BinNt07_LA", 1337, 1500},
  2837. {FURNITURE_TRASH, "bin1", 1300, 1500},
  2838. {FURNITURE_TRASH, "wastebin", 1235, 1000},
  2839. {FURNITURE_TRASH, "BinNt14_LA", 1330, 1000},
  2840. {FURNITURE_TRASH, "BinNt13_LA", 1329, 1000},
  2841. {FURNITURE_TRASH, "BinNt10_LA", 1328, 1500},
  2842. {FURNITURE_TRASH, "dump1", 1227, 400},
  2843. {FURNITURE_TRASH, "BinNt06_LA", 1336, 2000},
  2844. {FURNITURE_TRASH, "BinNt04_LA", 1334, 2000},
  2845. {FURNITURE_TRASH, "BinNt03_LA", 1333, 2000},
  2846. {FURNITURE_TRASH, "TrashcanChicken", 2770, 2000},
  2847. {FURNITURE_TRASH, "CJ_FF_BUCKET", 2420, 2000},
  2848. {FURNITURE_TRASH, "gunbox", 1271, 400},
  2849. {FURNITURE_TRASH, "k_smashboxes", 2971, 550},
  2850. {FURNITURE_TRASH, "temp_cardbox", 2900, 500},
  2851. {FURNITURE_TRASH, "cardboardbox4", 1221, 500},
  2852. {FURNITURE_TRASH, "cardboardbox2", 1220, 500},
  2853. {FURNITURE_DOORS, "GenDoorINT04Static", 19802, 1000},
  2854. {FURNITURE_DOORS, "Gen_doorEXT03", 1498, 1600},
  2855. {FURNITURE_DOORS, "chinaTgate", 2930, 1400},
  2856. {FURNITURE_DOORS, "kmb_petroldoor", 2911, 1600},
  2857. {FURNITURE_DOORS, "ad_flatdoor", 3061, 500},
  2858. {FURNITURE_DOORS, "Gen_wardrobe", 1567, 600},
  2859. {FURNITURE_DOORS, "Gen_doorINT01", 1491, 400},
  2860. {FURNITURE_DOORS, "Gen_doorINT02", 1492, 400},
  2861. {FURNITURE_DOORS, "Gen_doorSHOP01", 1493, 400},
  2862. {FURNITURE_DOORS, "Gen_doorINT03", 1494, 400},
  2863. {FURNITURE_DOORS, "Gen_doorEXT01", 1495, 400},
  2864. {FURNITURE_DOORS, "Gen_doorSHOP02", 1496, 400},
  2865. {FURNITURE_DOORS, "Gen_doorEXT02", 1497, 400},
  2866. {FURNITURE_DOORS, "Gen_doorEXT03", 1498, 400},
  2867. {FURNITURE_DOORS, "Gen_doorINT05", 1499, 400},
  2868. {FURNITURE_DOORS, "Gen_doorEXT05", 1500, 400},
  2869. {FURNITURE_DOORS, "Gen_doorEXT04", 1501, 400},
  2870. {FURNITURE_DOORS, "Gen_doorINT04", 1502, 400},
  2871. {FURNITURE_DOORS, "Gen_doorEXT06", 1504, 400},
  2872. {FURNITURE_DOORS, "Gen_doorEXT07", 1505, 400},
  2873. {FURNITURE_DOORS, "Gen_doorEXT08", 1506, 400},
  2874. {FURNITURE_DOORS, "Gen_doorEXT09", 1507, 400},
  2875. {FURNITURE_DOORS, "Gen_doorEXT10", 1523, 400},
  2876. {FURNITURE_DOORS, "vgsEspdr01", 8957, 2500},
  2877. {FURNITURE_DOORS, "vgwspry1", 7891, 2000},
  2878. {FURNITURE_DOORS, "imy_la_door", 3109, 400},
  2879. {FURNITURE_DOORS, "ab_casdorLok", 3089, 3000},
  2880. {FURNITURE_DOORS, "ad_flatdoor", 3061, 550},
  2881. {FURNITURE_DOORS, "warehouse_door2b", 3037, 2000},
  2882. {FURNITURE_DOORS, "cr1_door", 3029, 550},
  2883. {FURNITURE_DOORS, "dts_bbdoor", 2970, 550},
  2884. {FURNITURE_DOORS, "kmb_lockeddoor", 2949, 400},
  2885. {FURNITURE_DOORS, "cr_door_02", 2948, 400},
  2886. {FURNITURE_DOORS, "cr_door_01", 2947, 400},
  2887. {FURNITURE_DOORS, "cr_door_03", 2946, 400},
  2888. {FURNITURE_DOORS, "freight_SFW_door", 2944, 550},
  2889. {FURNITURE_DOORS, "newtowerdoor1", 977, 550},
  2890. {FURNITURE_CARPETS, "man_sdr_rug", 1828, 1000},
  2891. {FURNITURE_CARPETS, "gb_livingrug01", 2815, 1000},
  2892. {FURNITURE_CARPETS, "gb_bedrug01", 2817, 1000},
  2893. {FURNITURE_CARPETS, "gb_bedrug02", 2818, 1000},
  2894. {FURNITURE_CARPETS, "gb_livingrug02", 2833, 1000},
  2895. {FURNITURE_CARPETS, "gb_livingrug03", 2834, 1000},
  2896. {FURNITURE_CARPETS, "gb_livingrug04", 2835, 1000},
  2897. {FURNITURE_CARPETS, "gb_livingrug05", 2836, 1000},
  2898. {FURNITURE_CARPETS, "gb_bedrug03", 2841, 1000},
  2899. {FURNITURE_CARPETS, "gb_bedrug04", 2842, 1000},
  2900. {FURNITURE_CARPETS, "gb_bedrug05", 2847, 1000},
  2901. {FURNITURE_CARPETS, "gym_mat1", 2631, 1000},
  2902. {FURNITURE_CARPETS, "gym_mat02", 2632, 1000},
  2903. {FURNITURE_FRAMES, "SAMPPicture1", 19172, 500},
  2904. {FURNITURE_FRAMES, "Frame_2", 2289, 1000},
  2905. {FURNITURE_FRAMES, "Frame_3", 2288, 1000},
  2906. {FURNITURE_FRAMES, "Frame_4", 2287, 1000},
  2907. {FURNITURE_FRAMES, "Frame_5", 2286, 1000},
  2908. {FURNITURE_FRAMES, "Frame_1", 2285, 1000},
  2909. {FURNITURE_FRAMES, "Frame_6", 2284, 1000},
  2910. {FURNITURE_FRAMES, "Frame_Thick_3", 2283, 100},
  2911. {FURNITURE_FRAMES, "Frame_Thick_4", 2282, 100},
  2912. {FURNITURE_FRAMES, "Frame_Thick_5", 2281, 100},
  2913. {FURNITURE_FRAMES, "Frame_Thick_1", 2280, 100},
  2914. {FURNITURE_FRAMES, "Frame_Thick_6", 2279, 100},
  2915. {FURNITURE_FRAMES, "Frame_Thick_2", 2278, 100},
  2916. {FURNITURE_FRAMES, "Frame_Fab_2", 2277, 100},
  2917. {FURNITURE_FRAMES, "Frame_Fab_3", 2276, 100},
  2918. {FURNITURE_FRAMES, "Frame_Fab_4", 2275, 100},
  2919. {FURNITURE_FRAMES, "Frame_Fab_6", 2274, 100},
  2920. {FURNITURE_FRAMES, "Frame_Fab_1", 2273, 100},
  2921. {FURNITURE_FRAMES, "Frame_Fab_5", 2272, 100},
  2922. {FURNITURE_FRAMES, "Frame_WOOD_1", 2271, 100},
  2923. {FURNITURE_FRAMES, "Frame_WOOD_6", 2270, 100},
  2924. {FURNITURE_FRAMES, "Frame_WOOD_4", 2269, 100},
  2925. {FURNITURE_FRAMES, "Frame_WOOD_2", 2268, 100},
  2926. {FURNITURE_FRAMES, "Frame_WOOD_3", 2267, 100},
  2927. {FURNITURE_FRAMES, "Frame_WOOD_5", 2266, 100},
  2928. {FURNITURE_FRAMES, "Frame_SLIM_6", 2265, 100},
  2929. {FURNITURE_FRAMES, "Frame_SLIM_5", 2264, 100},
  2930. {FURNITURE_FRAMES, "Frame_SLIM_4", 2263, 100},
  2931. {FURNITURE_FRAMES, "Frame_SLIM_3", 2262, 100},
  2932. {FURNITURE_FRAMES, "Frame_SLIM_2", 2261, 100},
  2933. {FURNITURE_FRAMES, "Frame_SLIM_1", 2260, 100},
  2934. {FURNITURE_FRAMES, "Frame_Clip_6", 2259, 100},
  2935. {FURNITURE_FRAMES, "Frame_Clip_5", 2258, 100},
  2936. {FURNITURE_FRAMES, "Frame_Clip_4", 2257, 100},
  2937. {FURNITURE_FRAMES, "Frame_Clip_3", 2256, 100},
  2938. {FURNITURE_FRAMES, "Frame_Clip_2", 2255, 100},
  2939. {FURNITURE_FRAMES, "Frame_Clip_1", 2254, 100},
  2940. //Spraytag
  2941. {FURNITURE_MISC, "Tag [GSF]", 18659, 100},
  2942. {FURNITURE_MISC, "Tag [SBF]", 18660, 100},
  2943. {FURNITURE_MISC, "Tag [VLA]", 18661, 100},
  2944. {FURNITURE_MISC, "Tag [KTB]", 18662, 100},
  2945. {FURNITURE_MISC, "Tag [SFR]", 18663, 100},
  2946. {FURNITURE_MISC, "Tag [TBD]", 18664, 100},
  2947. {FURNITURE_MISC, "Tag [LSV]", 18665, 100},
  2948. {FURNITURE_MISC, "Tag [FYB]", 18666, 100},
  2949. {FURNITURE_MISC, "Tag [RHB]", 18667, 100},
  2950. //
  2951. {FURNITURE_MISC, "Wine Glass", 19818, 300},
  2952. {FURNITURE_MISC, "Cocktail Glass", 19819, 300},
  2953. {FURNITURE_MISC, "Propbeer Glass", 1666, 300},
  2954. {FURNITURE_MISC, "Big Cock", 19823, 300},
  2955. {FURNITURE_MISC, "Red rum", 19820, 300},
  2956. {FURNITURE_MISC, "Vodka", 19821, 300},
  2957. {FURNITURE_MISC, "X.O", 19824, 300},
  2958. {FURNITURE_MISC, "Damaged crate", 924, 300},
  2959. {FURNITURE_MISC, "Top crate", 1355, 300},
  2960. {FURNITURE_MISC, "Empty crate", 19639, 300},
  2961. {FURNITURE_MISC, "Paper Messes", 2674, 300},
  2962. {FURNITURE_MISC, "Fisinh Rod", 18632, 600},
  2963. {FURNITURE_MISC, "Rope1", 19087, 100},
  2964. {FURNITURE_MISC, "CJ_FLAG1", 2047, 100},
  2965. {FURNITURE_MISC, "kmb_packet", 2891, 500},
  2966. {FURNITURE_MISC, "craigpackage", 1279, 1000},
  2967. {FURNITURE_MISC, "drug_white", 1575, 500},
  2968. {FURNITURE_MISC, "drug_orange", 1576, 500},
  2969. {FURNITURE_MISC, "drug_yellow", 1577, 500},
  2970. {FURNITURE_MISC, "drug_green", 1578, 500},
  2971. {FURNITURE_MISC, "drug_blue", 1579, 500},
  2972. {FURNITURE_MISC, "drug_red", 1580, 500},
  2973. {FURNITURE_MISC, "kmb_marijuana", 2901, 2000},
  2974. {FURNITURE_MISC, "grassplant", 3409, 1000},
  2975. {FURNITURE_MISC, "DYN_ASHTRY", 1510, 500},
  2976. {FURNITURE_MISC, "propashtray1", 1665, 500},
  2977. {FURNITURE_MISC, "WoodenStage1", 19608, 2000},
  2978. {FURNITURE_MISC, "DrumKit1", 19609, 1000},
  2979. {FURNITURE_MISC, "Microphone1", 19610, 1000},
  2980. {FURNITURE_MISC, "MicrophoneStand1", 19611, 2000},
  2981. {FURNITURE_MISC, "GuitarAmp1", 19612, 1000},
  2982. {FURNITURE_MISC, "GuitarAmp2", 19613, 2000},
  2983. {FURNITURE_MISC, "GuitarAmp3", 19614, 2000},
  2984. {FURNITURE_MISC, "GuitarAmp4", 19615, 1000},
  2985. {FURNITURE_MISC, "GuitarAmp5", 19616, 1000},
  2986. {FURNITURE_MISC, "GoldRecord1", 19617, 550},
  2987. {FURNITURE_MISC, "CJ_Stags_head", 1736, 2000},
  2988. {FURNITURE_MISC, "CJ_Radiator_old", 1738, 1000},
  2989. {FURNITURE_MISC, "CJ_MOP_PAIL", 1778, 1000},
  2990. {FURNITURE_MISC, "CJ_chambermaid", 1789, 2000},
  2991. {FURNITURE_MISC, "cj_bucket", 2713, 1000},
  2992. {FURNITURE_MISC, "des_blackbags", 16444, 2000},
  2993. {FURNITURE_MISC, "nf_blackboard", 3077, 2000},
  2994. {FURNITURE_MISC, "kmb_dumbbell_L", 3072, 1000},
  2995. {FURNITURE_MISC, "kmb_dumbbell_R", 3071, 1000},
  2996. {FURNITURE_MISC, "portaloo", 2984, 550},
  2997. {FURNITURE_MISC, "CJ_TARGET6", 2056, 500},
  2998. {FURNITURE_MISC, "CJ_TARGET5", 2055, 500},
  2999. {FURNITURE_MISC, "CJ_TARGET4", 2051, 500},
  3000. {FURNITURE_MISC, "CJ_TARGET2", 2050, 500},
  3001. {FURNITURE_MISC, "CJ_TARGET1", 2049, 500},
  3002. {FURNITURE_MISC, "hos_trolley", 1997, 1000},
  3003. {FURNITURE_MISC, "shop_sec_cam", 1886, 1000},
  3004. {FURNITURE_MISC, "nt_firehose_01", 1613, 1000},
  3005. {FURNITURE_MISC, "lsmall_window01", 19325, 2000},
  3006. {FURNITURE_MISC, "window001", 19466, 550},
  3007. {FURNITURE_MISC, "wglasssmash", 1649, 1000},
  3008. {FURNITURE_MISC, "Orange1", 19574, 500},
  3009. {FURNITURE_MISC, "Apple1", 19575, 500},
  3010. {FURNITURE_MISC, "Apple2", 19576, 500},
  3011. {FURNITURE_MISC, "Tomato1", 19577, 500},
  3012. {FURNITURE_MISC, "Banana1", 19578, 500},
  3013. {FURNITURE_MISC, "gb_bedclothes01", 2819, 100},
  3014. {FURNITURE_MISC, "gb_bedclothes02", 2843, 100},
  3015. {FURNITURE_MISC, "gb_bedclothes03", 2844, 100},
  3016. {FURNITURE_MISC, "gb_bedclothes04", 2845, 100},
  3017. {FURNITURE_MISC, "gb_bedclothes05", 2846, 100},
  3018. {FURNITURE_MISC, "GB_platedirty01", 2812, 100},
  3019. {FURNITURE_MISC, "GB_kitchplatecln01", 2822, 100},
  3020. {FURNITURE_MISC, "GB_platedirty02", 2829, 100},
  3021. {FURNITURE_MISC, "GB_platedirty04", 2830, 100},
  3022. {FURNITURE_MISC, "GB_platedirty03", 2831, 100},
  3023. {FURNITURE_MISC, "GB_platedirty05", 2832, 100},
  3024. {FURNITURE_MISC, "GB_kitchplatecln02", 2862, 100},
  3025. {FURNITURE_MISC, "GB_kitchplatecln03", 2863, 100},
  3026. {FURNITURE_MISC, "GB_kitchplatecln04", 2864, 100},
  3027. {FURNITURE_MISC, "GB_kitchplatecln05", 2865, 100},
  3028. {FURNITURE_MISC, "Angel", 3935, 5000},
  3029. {FURNITURE_MISC, "Carter Statue", 14467, 5000},
  3030. {FURNITURE_MISC, "Broken Statue", 2743, 5000},
  3031. {FURNITURE_MISC, "Rocking Horse", 11733, 5000},
  3032. {FURNITURE_MISC, "Clothes Hanger", 2373, 500},
  3033. {FURNITURE_WALL, "wall016", 19368, 450},
  3034. {FURNITURE_WALL, "wall087", 19447, 550},
  3035. {FURNITURE_WALL, "wall015", 19367, 450},
  3036. {FURNITURE_WALL, "wall014", 19366, 550},
  3037. {FURNITURE_WALL, "wall018", 19370, 450},
  3038. {FURNITURE_WALL, "wall010", 19362, 550},
  3039. {FURNITURE_WALL, "wall035", 19387, 450},
  3040. {FURNITURE_WALL, "wall059", 19411, 550},
  3041. {FURNITURE_WALL, "wall017", 19369, 450},
  3042. {FURNITURE_WALL, "wall073", 19433, 550},
  3043. {FURNITURE_WALL, "wall077", 19437, 450},
  3044. {FURNITURE_WALL, "wall040", 19392, 550},
  3045. {FURNITURE_WALL, "wall096", 19456, 450},
  3046. {FURNITURE_WALL, "wall043", 19395, 550},
  3047. {FURNITURE_WALL, "wall037", 19389, 450},
  3048. {FURNITURE_WALL, "wall038", 19390, 550},
  3049. {FURNITURE_WALL, "wall039", 19391, 450},
  3050. {FURNITURE_WALL, "wall041", 19393, 550},
  3051. {FURNITURE_WALL, "wall042", 19394, 450},
  3052. {FURNITURE_WALL, "wall042", 19397, 550},
  3053. {FURNITURE_WALL, "wall044", 19396, 450},
  3054. {FURNITURE_WALL, "wall102", 19462, 550},
  3055. {FURNITURE_WALL, "wall046", 19398, 450},
  3056. {FURNITURE_WALL, "wall024", 19376, 550},
  3057. {FURNITURE_WALL, "wall105", 19465, 450},
  3058. {FURNITURE_WALL, "wall020", 19372, 550},
  3059. {FURNITURE_WALL, "wall104", 19464, 450},
  3060. {FURNITURE_SPECIAL, "Chemistry Dryer", 3287, 1200},
  3061. {FURNITURE_SPECIAL, "Centrifuge", 19830, 3500},
  3062. {FURNITURE_SPECIAL, "Mixer", 19585, 2500},
  3063. {FURNITURE_SPECIAL, "Reactor", 2360, 2000},
  3064. {FURNITURE_SPECIAL, "Dehydrater", 2002, 900},
  3065. {FURNITURE_SPECIAL, "Pickup Pump", 1244, 6000},
  3066. {FURNITURE_SPECIAL, "Pickup Pump (Small)", 1008, 1000},
  3067. {FURNITURE_SPECIAL, "Bike Pedal", 2798, 500},
  3068. {FURNITURE_SPECIAL, "Long Exhaust", 1114, 700},
  3069. {FURNITURE_EFFECT, "Smoke Flare", 18728, 3000},
  3070. {FURNITURE_EFFECT, "Puke", 18722, 3000},
  3071. {FURNITURE_EFFECT, "Molotov Fire", 18701, 3000},
  3072. {FURNITURE_EFFECT, "Coke Trail", 18676, 3000},
  3073. {FURNITURE_EFFECT, "Cam Flash (Once)", 18670, 3000},
  3074. {FURNITURE_EFFECT, "Flasher", 345, 3000}
  3075. };
  3076. enum e_WeaponInfo
  3077. {
  3078. e_WeaponSlot,
  3079. e_WeaponClip,
  3080. e_WeaponModel
  3081. };
  3082. new const g_WeaponInfo[47][e_WeaponInfo] =
  3083. {
  3084. {0, 0, 0},
  3085. {0, 0, 331},
  3086. {1, 0, 333},
  3087. {1, 0, 334},
  3088. {1, 0, 335},
  3089. {1, 0, 336},
  3090. {1, 0, 337},
  3091. {1, 0, 338},
  3092. {1, 0, 339},
  3093. {1, 0, 341},
  3094. {10, 0, 321},
  3095. {10, 0, 322},
  3096. {10, 0, 323},
  3097. {10, 0, 324},
  3098. {10, 0, 325},
  3099. {10, 0, 326},
  3100. {8, 0, 342},
  3101. {8, 0, 343},
  3102. {8, 0, 344},
  3103. {0, 0, 0},
  3104. {0, 0, 0},
  3105. {0, 0, 0},
  3106. {2, 17, 346},
  3107. {2, 17, 347},
  3108. {2, 7, 348},
  3109. {3, 0, 349},
  3110. {3, 2, 350},
  3111. {3, 7, 351},
  3112. {4, 50, 352},
  3113. {4, 30, 353},
  3114. {5, 30, 355},
  3115. {5, 50, 356},
  3116. {4, 50, 372},
  3117. {6, 0, 357},
  3118. {6, 0, 358},
  3119. {7, 0, 359},
  3120. {7, 0, 360},
  3121. {7, 500, 361},
  3122. {7, 500, 362},
  3123. {8, 0, 363},
  3124. {9, 0, 364},
  3125. {9, 0, 365},
  3126. {9, 0, 366},
  3127. {11, 0, 367},
  3128. {11, 0, 368},
  3129. {11, 0, 368},
  3130. {11, 0, 371}
  3131. };
  3132. new const g_AnimationLibraries[][] =
  3133. {
  3134. !"AIRPORT", !"ATTRACTORS", !"BAR", !"BASEBALL",
  3135. !"BD_FIRE", !"BEACH", !"BENCHPRESS", !"BF_INJECTION",
  3136. !"BIKED", !"BIKEH", !"BIKELEAP", !"BIKES",
  3137. !"BIKEV", !"BIKE_DBZ", !"BMX", !"BOMBER",
  3138. !"BOX", !"BSKTBALL", !"BUDDY", !"BUS",
  3139. !"CAMERA", !"CAR", !"CARRY", !"CAR_CHAT",
  3140. !"CASINO", !"CHAINSAW", !"CHOPPA", !"CLOTHES",
  3141. !"COACH", !"COLT45", !"COP_AMBIENT", !"COP_DVBYZ",
  3142. !"CRACK", !"CRIB", !"DAM_JUMP", !"DANCING",
  3143. !"DEALER", !"DILDO", !"DODGE", !"DOZER",
  3144. !"DRIVEBYS", !"FAT", !"FIGHT_B", !"FIGHT_C",
  3145. !"FIGHT_D", !"FIGHT_E", !"FINALE", !"FINALE2",
  3146. !"FLAME", !"FLOWERS", !"FOOD", !"FREEWEIGHTS",
  3147. !"GANGS", !"GHANDS", !"GHETTO_DB", !"GOGGLES",
  3148. !"GRAFFITI", !"GRAVEYARD", !"GRENADE", !"GYMNASIUM",
  3149. !"HAIRCUTS", !"HEIST9", !"INT_HOUSE", !"INT_OFFICE",
  3150. !"INT_SHOP", !"JST_BUISNESS", !"KART", !"KISSING",
  3151. !"KNIFE", !"LAPDAN1", !"LAPDAN2", !"LAPDAN3",
  3152. !"LOWRIDER", !"MD_CHASE", !"MD_END", !"MEDIC",
  3153. !"MISC", !"MTB", !"MUSCULAR", !"NEVADA",
  3154. !"ON_LOOKERS", !"OTB", !"PARACHUTE", !"PARK",
  3155. !"PAULNMAC", !"PED", !"PLAYER_DVBYS", !"PLAYIDLES",
  3156. !"POLICE", !"POOL", !"POOR", !"PYTHON",
  3157. !"QUAD", !"QUAD_DBZ", !"RAPPING", !"RIFLE",
  3158. !"RIOT", !"ROB_BANK", !"ROCKET", !"RUSTLER",
  3159. !"RYDER", !"SCRATCHING", !"SHAMAL", !"SHOP",
  3160. !"SHOTGUN", !"SILENCED", !"SKATE", !"SMOKING",
  3161. !"SNIPER", !"SPRAYCAN", !"STRIP", !"SUNBATHE",
  3162. !"SWAT", !"SWEET", !"SWIM", !"SWORD",
  3163. !"TANK", !"TATTOOS", !"TEC", !"TRAIN",
  3164. !"TRUCK", !"UZI", !"VAN", !"VENDING",
  3165. !"VORTEX", !"WAYFARER", !"WEAPONS", !"WUZI",
  3166. !"WOP", !"GFUNK", !"RUNNINGMAN", !"BLOWJOBZ"
  3167. };
  3168. new const g_VehicleNames[212][] =
  3169. {
  3170. "Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel", "Dumper", "Firetruck", "Trashmaster",
  3171. "Stretch", "Manana", "Infernus", "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam",
  3172. "Esperanto", "Taxi", "Washington", "Bobcat", "Whoopee", "BF Injection", "Hunter", "Premier", "Enforcer",
  3173. "Securicar", "Banshee", "Predator", "Bus", "Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach",
  3174. "Cabbie", "Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster", "Admiral", "Squalo", "Seasparrow",
  3175. "Pizzaboy", "Tram", "Trailer", "Turismo", "Speeder", "Reefer", "Tropic", "Flatbed", "Yankee", "Caddy", "Solair",
  3176. "Berkley's RC Van", "Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider", "Glendale", "Oceanic",
  3177. "Sanchez", "Sparrow", "Patriot", "Quad", "Coastguard", "Dinghy", "Hermes", "Sabre", "Rustler", "ZR-350", "Walton",
  3178. "Regina", "Comet", "BMX", "Burrito", "Camper", "Marquis", "Baggage", "Dozer", "Maverick", "News Chopper", "Rancher",
  3179. "FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring", "Sandking", "Blista Compact", "Police Maverick",
  3180. "Boxville", "Benson", "Mesa", "RC Goblin", "Hotring Racer A", "Hotring Racer B", "Bloodring Banger", "Rancher",
  3181. "Super GT", "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropduster", "Stunt", "Tanker", "Roadtrain",
  3182. "Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra", "FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck",
  3183. "Fortune", "Cadrona", "SWAT Truck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer", "Remington", "Slamvan",
  3184. "Blade", "Streak", "Freight", "Vortex", "Vincent", "Bullet", "Clover", "Sadler", "Firetruck", "Hustler", "Intruder",
  3185. "Primo", "Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite", "Windsor", "Monster", "Monster",
  3186. "Uranus", "Jester", "Sultan", "Stratum", "Elegy", "Raindance", "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito",
  3187. "Freight Flat", "Streak Carriage", "Kart", "Mower", "Dune", "Sweeper", "Broadway", "Tornado", "AT-400", "DFT-30",
  3188. "Huntley", "Stafford", "BF-400", "News Van", "Tug", "Trailer", "Emperor", "Wayfarer", "Euros", "Hotdog", "Club",
  3189. "Freight Box", "Trailer", "Andromada", "Dodo", "RC Cam", "Launch", "LSPD Car", "SFPD Car", "LVPD Car",
  3190. "Police Rancher", "Picador", "S.W.A.T", "Alpha", "Phoenix", "Glendale", "Sadler", "Luggage", "Luggage", "Stairs",
  3191. "Boxville", "Tiller", "Utility Trailer"
  3192. };
  3193. new const Float:g_LightSwitches[][] =
  3194. {
  3195. {1364.983886, -2146.622314, 1051.249267, 180.0000},
  3196. {1750.794799, -1823.229003, 1001.000976, 180.0000},
  3197. {1283.106079, -1141.087524, 980.765502, 180.0000},
  3198. {2009.972900, -1699.866210, 1166.380493, 270.0000},
  3199. {1179.235839, -418.864257, 1235.295532, 270.0000},
  3200. {2183.259277, -1131.408813, 1129.336059, 90.0000},
  3201. {1433.186401, -1833.914184, 1314.197875, 90.0000},
  3202. {925.934936, -497.943176, 844.603149, 270.0000},
  3203. {827.491210, -1014.966735, 800.616577, 90.0000},
  3204. {1321.020996, -166.627578, 1088.712036, 270.0000},
  3205. {1832.481689, -1277.765502, 832.790344, 0.0000},
  3206. {2655.479736, -1022.791198, 930.556945, 0.0000}
  3207. };
  3208. new const Float:g_HospitalLocations[][] =
  3209. {
  3210. {2034.1500, -1402.7036, 17.2946, 180.0000},
  3211. {1172.4954, -1321.4164, 15.3988, 270.0000},
  3212. {1240.7651, 326.6705, 19.7555, 335.0000},
  3213. {1607.3220, 1815.8779, 10.8203, 0.0000},
  3214. {-2655.1208, 639.3203, 14.4531, 180.0000},
  3215. {-318.6898, 1048.6490, 20.3403, 0.0000},
  3216. {-1514.7906, 2519.4641, 56.0703, 0.0000},
  3217. {-2203.7671, -2309.6816, 31.3750, 225.0000}
  3218. };
  3219. new const Float:g_TestCheckpoints[][] =
  3220. {
  3221. /*{1964.1777, -1985.2305, 13.2617},
  3222. {1964.0260, -1929.5844, 13.2583},
  3223. {1963.9639, -1859.5959, 13.2579},
  3224. {1964.3365, -1794.9149, 13.2578},
  3225. {1976.9269, -1754.8848, 13.2578},
  3226. {2003.8291, -1732.9901, 13.2578},
  3227. {2012.5283, -1675.0514, 13.2578},
  3228. {2071.8647, -1674.4196, 13.2655},
  3229. {2078.9463, -1708.5052, 13.2656},
  3230. {2086.4880, -1764.8125, 13.2704},
  3231. {2079.3931, -1822.3281, 13.2578},
  3232. {2079.0554, -1893.4973, 13.2179},
  3233. {2034.7793, -1929.5000, 13.2169},
  3234. {1976.3959, -1929.3317, 13.2578},
  3235. {1958.6281, -1961.4639, 13.5750},
  3236. {1974.5994, -1990.2570, 13.4266}*/
  3237. {1202.1882, -1849.4520, 13.2621},
  3238. {1143.1660, -1849.5922, 13.2566},
  3239. {1071.2588, -1849.8652, 13.2682},
  3240. {1036.1475, -1795.2440, 13.5767},
  3241. {1040.1671, -1726.2327, 13.2578},
  3242. {1040.2419, -1668.0111, 13.2578},
  3243. {1039.9519, -1614.0441, 13.2578},
  3244. {1026.0361, -1570.0818, 13.2653},
  3245. {983.8574, -1569.9839, 13.2578},
  3246. {915.2708, -1584.9355, 13.2578},
  3247. {914.9992, -1626.3933, 13.2578},
  3248. {914.7863, -1688.9620, 13.2556},
  3249. {914.9989, -1762.4529, 13.2578},
  3250. {953.0164, -1781.2417, 13.9314},
  3251. {1006.2765, -1795.0682, 13.9239},
  3252. {1050.8878, -1824.5197, 13.4472},
  3253. {1075.3669, -1855.0442, 13.2660},
  3254. {1125.2623, -1854.6885, 13.2578},
  3255. {1187.8931, -1855.5801, 13.2734},
  3256. {1214.0253, -1839.7546, 13.2569}
  3257. };
  3258. new const Float:g_TrashPickups[][] =
  3259. {
  3260. {2233.970458, -1963.004638, 13.004289, 280.663208},
  3261. {2326.081054, -1935.369628, 13.035931, 90.000000},
  3262. {2183.682128, -1884.950927, 13.006871, 180.000000},
  3263. {2070.470947, -1796.343872, 13.006866, 86.331871},
  3264. {2005.668457, -1761.876342, 13.009079, 90.000000},
  3265. {1796.317626, -1720.861938, 12.956867, 6.284942},
  3266. {1613.645874, -1897.403076, 13.028025, 182.839935},
  3267. {1403.755126, -1882.066162, 12.992812, 181.006591},
  3268. {1321.991943, -1666.734008, 13.016869, 267.994384},
  3269. {1249.822998, -1581.848632, 13.006018, -178.084884}
  3270. };
  3271. new gTrashObjects[MAX_PLAYERS][sizeof(g_TrashPickups)];
  3272. enum e_StaticBuildings
  3273. {
  3274. e_BuildingName[32],
  3275. e_IconModel,
  3276. e_Interior,
  3277. e_VirtualWorld,
  3278. Float:e_SpawnX,
  3279. Float:e_SpawnY,
  3280. Float:e_SpawnZ,
  3281. Float:e_InsideX,
  3282. Float:e_InsideY,
  3283. Float:e_InsideZ,
  3284. Float:e_InsideA,
  3285. bool:e_Freeze // Freeze the player after entering to stream objects
  3286. };
  3287. enum {
  3288. BUILDING_POLICE,
  3289. BUILDING_PRISON,
  3290. BUILDING_DMV,
  3291. BUILDING_CITYHALL
  3292. };
  3293. new const g_StaticBuildings[][e_StaticBuildings] =
  3294. {
  3295. {"Police Station", 1247, 10, 1, 1555.1296, -1675.5555, 16.1954, 126.0735, 1138.7159, 527.4651, 0.0000, true},
  3296. {"County Jail", 1247, 7, 2, 1059.3806, -321.3055, 73.9956, 2574.9722, -1475.3905, -48.8995, 0.0000, true},
  3297. {"Los Santos DMV", 1239, 3, 3, 1219.2091, -1812.2405, 16.5938, 1494.4213, 1304.1852, 1093.2891, 0.0000, true},
  3298. {"City Hall", 1314, 3, 4, 1479.3539, -1771.4526, 18.7958, 389.6911, 173.8717, 1008.3828, 90.0000, true}
  3299. };
  3300. enum e_ItemArray
  3301. {
  3302. e_ItemName[MAX_ITEM_NAME],
  3303. e_ItemModel,
  3304. e_ItemWeight,
  3305. bool:e_ItemValue, // Does this item have a quantity (e.g. ammunition, drug grams, quantity)
  3306. bool:e_ItemIllegal, // Is this an illegal item?
  3307. bool:e_ItemStackable // Does this item stack inside your inventory?
  3308. };
  3309. new const g_ItemList[][e_ItemArray] =
  3310. {
  3311. {"Mobile Phone", 330, 2, true, false},
  3312. {"Stereo", 2102, 6, false, false},
  3313. {"Screwdriver", 18644, 1, false, false},
  3314. {"Toolbox", 2969, 4, false, false},
  3315. {"Bandages", 11748, 2, true, false},
  3316. {"Medical Kit", 11738, 3, false, false},
  3317. {"Notebook", 2894, 2, false, false},
  3318. {"Cigarettes", 19896, 1, true, false},
  3319. {"Painkillers", 2709, 2, true, false},
  3320. {"Gasoline", 19621, 3, true, false},
  3321. {"Kevlar Vest", 19515, 3, true, false},
  3322. {"Armor", 19515, 3, true, true},
  3323. {"Mask", 19801, 1, true, false},
  3324. {"Beer", 1543, 2, false, false},
  3325. {"Wine", 1487, 2, false, false},
  3326. {"Spraycan", 2749, 2, true, false},
  3327. {"Walkie Talkie", 19942, 2, true, false},
  3328. {"Portable Radio", 19942, 2, true, false},
  3329. {"Camera", 367, 2, false, false},
  3330. {"Car Key", 11746, 1, true, false},
  3331. //name, model, weight, value, illegal, stack
  3332. {"Cuffs", 19418, 1, false, true},
  3333. {"Cuff Keys", 11746, 1, false, true},
  3334. // Faction items
  3335. {"Fire Extinguisher", 366, 2, true, true},
  3336. // Weapon packages
  3337. {"Melee Package", 3014, 2, false, true},
  3338. {"Pistol Package", 3014, 3, false, true},
  3339. {"Shotgun Package", 3014, 3, false, true},
  3340. {"SMG Package", 3014, 3, false, true},
  3341. {"Rifle Package", 3014, 3, false, true},
  3342. {"Materials", 3014, 3, true, true, true},
  3343. // Drugs
  3344. //{"Marijuana", 2891, 1, true, true, true},
  3345. //{"Cocaine", 2891, 1, true, true, true},
  3346. //{"Heroin", 2891, 1, true, true, true},
  3347. {"Steroids", 2891, 1, true, true, true},
  3348. {"Heroin", 2891, 1, true, true, true},
  3349. {"LSD", 2891, 1, true, true, true},
  3350. {"Ecstasy", 2891, 1, true, true, true},
  3351. {"Marijuana", 2891, 1, true, true, true},
  3352. {"Crack", 2891, 1, true, true, true},
  3353. {"Cocaine", 2891, 1, true, true, true},
  3354. {"Methamphetamine", 2891, 1, true, true, true},
  3355. {"PCP", 2891, 1, true, true, true},
  3356. {"Baking Soda", 2891, 1, true, true, true},
  3357. {"Morning Glory Seeds", 2891, 1, true, true, true},
  3358. {"Opium Poppies", 2891, 1, true, true, true},
  3359. {"Marijuana Seeds", 2891, 1, true, true, true},
  3360. {"Muriatic Acid", 2891, 1, true, true, true},
  3361. {"Lye", 2891, 1, true, true, true},
  3362. {"Ether", 2891, 1, true, true, true},
  3363. {"Ephedrine", 2891, 1, true, true, true},
  3364. {"Diethyl", 2891, 1, true, true, true},
  3365. {"Hydrogen Peroxide", 2891, 1, true, true, true},
  3366. {"Formic Acid", 2891, 1, true, true, true},
  3367. {"Isosafrole", 2891, 1, true, true, true},
  3368. // Weapons
  3369. {"Golf Club", 333, 3, false, true},
  3370. {"Nightstick", 334, 2, false, true},
  3371. {"Knife", 335, 1, false, true},
  3372. {"Baseball Bat", 336, 3, false, true},
  3373. {"Shovel", 337, 3, false, true},
  3374. {"Pool Cue", 338, 2, false, true},
  3375. {"Katana", 339, 4, false, true},
  3376. {"Colt 45", 346, 3, true, true},
  3377. {"Silenced 45", 347, 4, true, true},
  3378. {"Desert Eagle", 348, 3, true, true},
  3379. {"Shotgun", 349, 6, true, true},
  3380. {"SPAS-12", 351, 6, true, true},
  3381. {"UZI", 352, 4, true, true},
  3382. {"Tec-9", 372, 4, true, true},
  3383. {"MP5", 353, 5, true, true},
  3384. {"AK-47", 355, 7, true, true},
  3385. {"M16", 356, 7, true, true},
  3386. {"Rifle", 357, 6, true, true},
  3387. {"Sniper Rifle", 358, 7, true, true},
  3388. {"Pepper Spray", 365, 2, true, true},
  3389. //{"Taser", 347, 1, false, true},
  3390. // Ammunition
  3391. {".50cal", 2061, 2, true, true},
  3392. {"9x19mm", 2061, 2, true, true},
  3393. {"5.56x45mm", 2061, 2, true, true},
  3394. {"7.62x39mm", 2061, 2, true, true},
  3395. {"7.62x51mm", 2061, 2, true, true},
  3396. {"12 Gauge", 2061, 2, true, true}
  3397. };
  3398. enum e_DropOffsets
  3399. {
  3400. e_Item[MAX_ITEM_NAME],
  3401. Float:e_OffsetZ,
  3402. Float:e_OffsetRX,
  3403. Float:e_OffsetRY
  3404. };
  3405. /*
  3406. {"Steroids", 2891, 1, true, true, true},
  3407. {"Heroin", 2891, 1, true, true, true},
  3408. {"LSD", 2891, 1, true, true, true},
  3409. {"Ecstasy", 2891, 1, true, true, true},
  3410. {"Marijuana", 2891, 1, true, true, true},
  3411. {"Crack", 2891, 1, true, true, true},
  3412. {"Cocaine", 2891, 1, true, true, true},
  3413. {"Methamphetamine", 2891, 1, true, true, true},
  3414. {"PCP", 2891, 1, true, true, true},
  3415. */
  3416. new const g_GroundOffsets[][e_DropOffsets] =
  3417. {
  3418. {"Mobile Phone", 1.0, 90.0, 0.0},
  3419. {"Stereo", 1.0, 0.0, 0.0},
  3420. {"Screwdriver", 0.95, 0.0, 90.0},
  3421. {"Toolbox", 0.9, 0.0, 0.0},
  3422. {"Bandages", 0.95, 0.0, 0.0},
  3423. {"Medical Kit", 0.9, 0.0, 0.0},
  3424. {"Notebook", 1.0, 0.0, 0.0},
  3425. {"Cigarettes", 0.95, 0.0, 0.0},
  3426. {"Painkillers", 0.85, 0.0, 0.0},
  3427. {"Gasoline", 0.9, 0.0, 0.0},
  3428. {"Kevlar Vest", 0.7, 0.0, -90.0},
  3429. {"Armor", 0.7, 0.0, -90.0},
  3430. {"Mask", 0.9, 0.0, 0.0},
  3431. {"Beer", 1.0, 0.0, 0.0},
  3432. {"Wine", 0.8, 0.0, 0.0},
  3433. {"Spraycan", 1.0, 0.0, 0.0},
  3434. {"Walkie Talkie", 0.95, -90.0, 0.0},
  3435. {"Portable Radio", 0.95, -90.0, 0.0},
  3436. {"Car Key", 0.95, 90.0, 0.0},
  3437. {"Cuffs", 0.95, 90.0, 0.0},
  3438. {"Cuff Keys", 0.95, 90.0, 0.0},
  3439. {"Melee Package", 0.7, 0.0, 0.0},
  3440. {"Pistol Package", 0.7, 0.0, 0.0},
  3441. {"Shotgun Package", 0.7, 0.0, 0.0},
  3442. {"SMG Package", 0.7, 0.0, 0.0},
  3443. {"Rifle Package", 0.7, 0.0, 0.0},
  3444. {"Steroids", 1.0, 0.0, 0.0},
  3445. {"Heroin", 1.0, 0.0, 0.0},
  3446. {"LSD", 1.0, 0.0, 0.0},
  3447. {"Ecstasy", 1.0, 0.0, 0.0},
  3448. {"Marijuana", 1.0, 0.0, 0.0},
  3449. {"Crack", 1.0, 0.0, 0.0},
  3450. {"Cocaine", 1.0, 0.0, 0.0},
  3451. {"Methamphetamine", 1.0, 0.0, 0.0},
  3452. {"PCP", 1.0, 0.0, 0.0},
  3453. {".50cal", 0.7, 0.0, 0.0},
  3454. {"9x19mm", 0.7, 0.0, 0.0},
  3455. {"5.56x45mm", 0.7, 0.0, 0.0},
  3456. {"7.62x39mm", 0.7, 0.0, 0.0},
  3457. {"7.62x51mm", 0.7, 0.0, 0.0},
  3458. {"12 Gauge", 0.7, 0.0, 0.0}
  3459. };
  3460. enum e_InteriorList {
  3461. e_Interior,
  3462. Float: e_InteriorX,
  3463. Float: e_InteriorY,
  3464. Float: e_InteriorZ,
  3465. Float: e_InteriorA
  3466. };
  3467. new const Float:g_HouseInteriors[][e_InteriorList] =
  3468. {
  3469. {0, 0000.0000, 0000.0000, 0000.0000, 000.0000},
  3470. {3, 1363.7614, -2145.6965, 1050.5886, 356.4167},
  3471. {6, 1749.6356, -1822.4457, 1000.3405, 355.5393},
  3472. {4, 1282.0646, -1140.2067, 980.0524, 1.5357},
  3473. {8, 2008.8319, -1698.8461, 1165.7001, 88.6156},
  3474. {9, 1178.3398, -419.0833, 1234.7045, 177.8144},
  3475. {11, 2184.1011, -1130.3905, 1128.7655, 265.1024},
  3476. {2, 1434.0806, -1832.7854, 1313.5573, 267.1467},
  3477. {7, 925.0102, -496.8101, 843.8953, 88.8976},
  3478. {3, 828.6323, -1014.0038, 799.9664, 266.5594},
  3479. {5, 1320.1091, -167.6174, 1088.0741, 89.3401},
  3480. {1, 1834.2408, -1278.7684, 832.1602, 177.6579},
  3481. {5, 2654.4524, -1023.7827, 929.9266, 180.4350},
  3482. {1, 244.0626, 304.9826, 999.1484, 270.4359},
  3483. {1, 1417.2693,-18.4743,1000.9266,89.4260},
  3484. {10, 2259.7542,-1136.0293,1050.6328,271.4703},
  3485. {3, 2495.9561,-1692.3522,1014.7422,179.3060},
  3486. {3, 235.2513,1187.0618,1080.2578,1.5732},
  3487. {2, 225.3744,1239.9326,1082.1406,91.4331},
  3488. {5, 226.9044,1114.2283,1080.9961,270.5323},
  3489. {4, 310.8174,313.8372,1003.3047,90.7227},
  3490. {5, 1298.8762,-796.5984,1084.0078,359.3316}
  3491. };
  3492. new const Float:g_CompanyInteriors[][e_InteriorList] =
  3493. {
  3494. {0, 0000.0000, 0000.0000, 0000.0000, 000.0000},
  3495. {17, -25.8827, -187.3007, 1003.5469, 0.0000}, // COMPANY_STORE
  3496. {18, 161.3682, -96.3227, 1001.8047, 0.0000}, // COMPANY_CLOTHES
  3497. {17, 377.1490, -192.6511, 1000.6401, 0.0000}, // COMPANY_RESTAURANT
  3498. {3, -2026.8729, -104.1907, 1035.1719, 180.0000}, // COMPANY_RENTALS
  3499. {3, 833.9849, 7.4472, 1004.1797, 90.0000}, // COMPANY_PHONE
  3500. {3, 1494.4321, 1304.0353, 1093.2891, 0.0000}, // COMPANY_DEALERSHIP
  3501. {5, 772.4077, -4.7408, 1000.7291, 0.0000}, // COMPANY_GYM
  3502. {7, 315.7720, -142.9962, 999.6016, 0.0000}, // COMPANY_AMMO
  3503. {11, 501.9501, -68.5032, 998.7578, 180.0000} // COMPANY_BAR
  3504. };
  3505. new const Float:g_HospitalDeliverPoints[6][3] =
  3506. {
  3507. {-2692.6580, 635.4608, 14.4531},
  3508. {-334.9757, 1063.0171, 19.7392},
  3509. {1579.9666, 1767.1462, 10.8203},
  3510. {1177.8599, -1308.3982, 13.8301},
  3511. {2024.4246, -1404.1580, 17.2020},
  3512. {1243.9304, 331.4186, 19.5547}
  3513. };
  3514. new const Float:g_HospitalSpawns[16][3] =
  3515. {
  3516. {2507.6208, -1698.1387, 2105.4109},
  3517. {2507.5833, -1695.3528, 2105.4109},
  3518. {2507.6140, -1692.8528, 2105.4109},
  3519. {2507.6499, -1690.3484, 2105.4109},
  3520. {2513.5959, -1698.1089, 2105.4109},
  3521. {2513.5156, -1695.3512, 2105.4109},
  3522. {2513.5745, -1692.7902, 2105.4109},
  3523. {2513.6406, -1690.2950, 2105.4109},
  3524. {2513.5474, -1714.5375, 2105.4109},
  3525. {2513.5000, -1717.0905, 2105.4109},
  3526. {2513.5068, -1719.7252, 2105.4109},
  3527. {2513.4722, -1722.4310, 2105.4109},
  3528. {2507.4583, -1714.5662, 2105.4109},
  3529. {2513.4426, -1717.0591, 2105.4109},
  3530. {2513.4963, -1719.7118, 2105.4109},
  3531. {2507.4795, -1722.3256, 2105.4109}
  3532. };
  3533. new const Float:g_RepairShops[][] =
  3534. {
  3535. {2074.7122, -1831.3906, 13.5469, 2065.4092, -1831.4474, 13.3643, 90.0000, 2076.0828, -1831.3698, 13.2777, 270.0000},
  3536. {1025.1017, -1032.9968, 31.8545, 1024.9688, -1023.1215, 31.9303, 0.0000, 1024.9032, -1033.9376, 31.6534, 180.0000},
  3537. {488.5583, -1731.2819, 11.2464, 487.3807, -1741.6285, 11.0107, 170.0000, 489.1483, -1730.7385, 11.0434, 350.0000},
  3538. {720.2086, -465.7499, 16.3437, 720.0692, -456.0589, 17.0412, 0.0000, 720.1885, -469.6240, 17.0489, 180.0000},
  3539. {-99.8833, 1109.2959, 19.7422, -100.0493, 1116.5676, 20.3480, 0.0000, -99.8743, 1105.2859, 20.4476, 180.0000},
  3540. {-1420.7378, 2594.0757, 55.7505, -1420.5433, 2585.7573, 56.5724, 180.0000, -1420.6559, 2595.4070, 56.4271, 0.0000}
  3541. };
  3542. new g_ValidSkinModels[] = {
  3543. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
  3544. 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
  3545. 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
  3546. 63, 64, 65, 66, 68, 69, 72, 73, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 88,
  3547. 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
  3548. 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
  3549. 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 140, 141, 142,
  3550. 143, 144, 145, 146, 147, 148, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
  3551. 161, 162, 167, 168, 169, 170, 171, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
  3552. 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
  3553. 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
  3554. 217, 219, 220, 221, 222, 223, 224, 225, 226, 228, 229, 230, 231, 232, 233, 234, 235,
  3555. 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 253,
  3556. 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 268, 272, 273, 289, 290, 291, 292,
  3557. 293, 294, 295, 296, 297, 298, 299
  3558. };
  3559. new g_MaleSkins[185] = {
  3560. 1, 2, 3, 4, 5, 6, 7, 8, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
  3561. 30, 32, 33, 34, 35, 36, 37, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 57, 58, 59, 60,
  3562. 61, 62, 66, 68, 72, 73, 78, 79, 80, 81, 82, 83, 84, 94, 95, 96, 97, 98, 99, 100, 101, 102,
  3563. 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
  3564. 121, 122, 123, 124, 125, 126, 127, 128, 132, 133, 134, 135, 136, 137, 142, 143, 144, 146,
  3565. 147, 153, 154, 155, 156, 158, 159, 160, 161, 162, 167, 168, 170, 171, 173, 174, 175, 176,
  3566. 177, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 200, 202, 203, 204, 206,
  3567. 208, 209, 210, 212, 213, 217, 220, 221, 222, 223, 228, 229, 230, 234, 235, 236, 239, 240,
  3568. 241, 242, 247, 248, 249, 250, 253, 254, 255, 258, 259, 260, 261, 262, 268, 272, 273, 289,
  3569. 290, 291, 292, 293, 294, 295, 296, 297, 299
  3570. };
  3571. new g_FemaleSkins[77] = {
  3572. 9, 10, 11, 12, 13, 31, 38, 39, 40, 41, 53, 54, 55, 56, 63, 64, 65, 69, 75, 76, 77, 85, 88,
  3573. 89, 90, 91, 92, 93, 129, 130, 131, 138, 140, 141, 145, 148, 150, 151, 152, 157, 169, 178,
  3574. 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 201, 205, 207, 211, 214, 215, 216, 219,
  3575. 224, 225, 226, 231, 232, 233, 237, 238, 243, 244, 245, 246, 251, 256, 257, 263, 298
  3576. };
  3577. /*new g_VehicleColors[256] = {
  3578. 0x000000FF, 0xF5F5F5FF, 0x2A77A1FF, 0x840410FF, 0x263739FF, 0x86446EFF, 0xD78E10FF, 0x4C75B7FF, 0xBDBEC6FF, 0x5E7072FF,
  3579. 0x46597AFF, 0x656A79FF, 0x5D7E8DFF, 0x58595AFF, 0xD6DAD6FF, 0x9CA1A3FF, 0x335F3FFF, 0x730E1AFF, 0x7B0A2AFF, 0x9F9D94FF,
  3580. 0x3B4E78FF, 0x732E3EFF, 0x691E3BFF, 0x96918CFF, 0x515459FF, 0x3F3E45FF, 0xA5A9A7FF, 0x635C5AFF, 0x3D4A68FF, 0x979592FF,
  3581. 0x421F21FF, 0x5F272BFF, 0x8494ABFF, 0x767B7CFF, 0x646464FF, 0x5A5752FF, 0x252527FF, 0x2D3A35FF, 0x93A396FF, 0x6D7A88FF,
  3582. 0x221918FF, 0x6F675FFF, 0x7C1C2AFF, 0x5F0A15FF, 0x193826FF, 0x5D1B20FF, 0x9D9872FF, 0x7A7560FF, 0x989586FF, 0xADB0B0FF,
  3583. 0x848988FF, 0x304F45FF, 0x4D6268FF, 0x162248FF, 0x272F4BFF, 0x7D6256FF, 0x9EA4ABFF, 0x9C8D71FF, 0x6D1822FF, 0x4E6881FF,
  3584. 0x9C9C98FF, 0x917347FF, 0x661C26FF, 0x949D9FFF, 0xA4A7A5FF, 0x8E8C46FF, 0x341A1EFF, 0x6A7A8CFF, 0xAAAD8EFF, 0xAB988FFF,
  3585. 0x851F2EFF, 0x6F8297FF, 0x585853FF, 0x9AA790FF, 0x601A23FF, 0x20202CFF, 0xA4A096FF, 0xAA9D84FF, 0x78222BFF, 0x0E316DFF,
  3586. 0x722A3FFF, 0x7B715EFF, 0x741D28FF, 0x1E2E32FF, 0x4D322FFF, 0x7C1B44FF, 0x2E5B20FF, 0x395A83FF, 0x6D2837FF, 0xA7A28FFF,
  3587. 0xAFB1B1FF, 0x364155FF, 0x6D6C6EFF, 0x0F6A89FF, 0x204B6BFF, 0x2B3E57FF, 0x9B9F9DFF, 0x6C8495FF, 0x4D8495FF, 0xAE9B7FFF,
  3588. 0x406C8FFF, 0x1F253BFF, 0xAB9276FF, 0x134573FF, 0x96816CFF, 0x64686AFF, 0x105082FF, 0xA19983FF, 0x385694FF, 0x525661FF,
  3589. 0x7F6956FF, 0x8C929AFF, 0x596E87FF, 0x473532FF, 0x44624FFF, 0x730A27FF, 0x223457FF, 0x640D1BFF, 0xA3ADC6FF, 0x695853FF,
  3590. 0x9B8B80FF, 0x620B1CFF, 0x5B5D5EFF, 0x624428FF, 0x731827FF, 0x1B376DFF, 0xEC6AAEFF, 0x000000FF, 0x177517FF, 0x210606FF,
  3591. 0x125478FF, 0x452A0DFF, 0x571E1EFF, 0x010701FF, 0x25225AFF, 0x2C89AAFF, 0x8A4DBDFF, 0x35963AFF, 0xB7B7B7FF, 0x464C8DFF,
  3592. 0x84888CFF, 0x817867FF, 0x817A26FF, 0x6A506FFF, 0x583E6FFF, 0x8CB972FF, 0x824F78FF, 0x6D276AFF, 0x1E1D13FF, 0x1E1306FF,
  3593. 0x1F2518FF, 0x2C4531FF, 0x1E4C99FF, 0x2E5F43FF, 0x1E9948FF, 0x1E9999FF, 0x999976FF, 0x7C8499FF, 0x992E1EFF, 0x2C1E08FF,
  3594. 0x142407FF, 0x993E4DFF, 0x1E4C99FF, 0x198181FF, 0x1A292AFF, 0x16616FFF, 0x1B6687FF, 0x6C3F99FF, 0x481A0EFF, 0x7A7399FF,
  3595. 0x746D99FF, 0x53387EFF, 0x222407FF, 0x3E190CFF, 0x46210EFF, 0x991E1EFF, 0x8D4C8DFF, 0x805B80FF, 0x7B3E7EFF, 0x3C1737FF,
  3596. 0x733517FF, 0x781818FF, 0x83341AFF, 0x8E2F1CFF, 0x7E3E53FF, 0x7C6D7CFF, 0x020C02FF, 0x072407FF, 0x163012FF, 0x16301BFF,
  3597. 0x642B4FFF, 0x368452FF, 0x999590FF, 0x818D96FF, 0x99991EFF, 0x7F994CFF, 0x839292FF, 0x788222FF, 0x2B3C99FF, 0x3A3A0BFF,
  3598. 0x8A794EFF, 0x0E1F49FF, 0x15371CFF, 0x15273AFF, 0x375775FF, 0x060820FF, 0x071326FF, 0x20394BFF, 0x2C5089FF, 0x15426CFF,
  3599. 0x103250FF, 0x241663FF, 0x692015FF, 0x8C8D94FF, 0x516013FF, 0x090F02FF, 0x8C573AFF, 0x52888EFF, 0x995C52FF, 0x99581EFF,
  3600. 0x993A63FF, 0x998F4EFF, 0x99311EFF, 0x0D1842FF, 0x521E1EFF, 0x42420DFF, 0x4C991EFF, 0x082A1DFF, 0x96821DFF, 0x197F19FF,
  3601. 0x3B141FFF, 0x745217FF, 0x893F8DFF, 0x7E1A6CFF, 0x0B370BFF, 0x27450DFF, 0x071F24FF, 0x784573FF, 0x8A653AFF, 0x732617FF,
  3602. 0x319490FF, 0x56941DFF, 0x59163DFF, 0x1B8A2FFF, 0x38160BFF, 0x041804FF, 0x355D8EFF, 0x2E3F5BFF, 0x561A28FF, 0x4E0E27FF,
  3603. 0x706C67FF, 0x3B3E42FF, 0x2E2D33FF, 0x7B7E7DFF, 0x4A4442FF, 0x28344EFF
  3604. };*/
  3605. enum e_SittingPositions
  3606. {
  3607. e_SittingIn[24],
  3608. e_SittingOut[24],
  3609. Float:e_SittingX,
  3610. Float:e_SittingY,
  3611. Float:e_SittingZ,
  3612. Float:e_SittingA
  3613. };
  3614. new const g_SittingPositions[][e_SittingPositions] =
  3615. {
  3616. {"FF_SIT_IN_L", "FF_SIT_OUT_L_180", 374.0676, -181.0147, 1000.6328, 180.0000},
  3617. {"FF_SIT_IN_L", "FF_SIT_OUT_L_180", 374.0782, -184.1134, 1000.6328, 180.0000},
  3618. {"FF_SIT_IN_L", "FF_SIT_OUT_L_180", 373.8982, -187.0960, 1000.6401, 180.0000},
  3619. {"FF_SIT_IN_L", "FF_SIT_OUT_L_180", 373.9221, -190.0732, 1000.6401, 180.0000},
  3620. {"FF_SIT_IN_L", "FF_SIT_OUT_L_180", 375.1001, -189.6535, 1000.6401, 0.0000},
  3621. {"FF_SIT_IN_L", "FF_SIT_OUT_L_180", 375.0905, -187.1382, 1000.6401, 0.0000},
  3622. {"FF_SIT_IN_L", "FF_SIT_OUT_L_180", 375.0905, -184.6665, 1000.6328, 0.0000},
  3623. {"FF_SIT_IN_L", "FF_SIT_OUT_L_180", 375.0905, -182.2018, 1000.6328, 0.0000},
  3624. {"FF_SIT_IN_R", "FF_SIT_OUT_R_180", 373.9148, -182.6303, 1000.6328, 0.0000},
  3625. {"FF_SIT_IN_R", "FF_SIT_OUT_R_180", 373.8991, -185.7240, 1000.6401, 0.0000},
  3626. {"FF_SIT_IN_R", "FF_SIT_OUT_R_180", 373.9482, -188.6557, 1000.6401, 0.0000},
  3627. {"FF_SIT_IN_R", "FF_SIT_OUT_R_180", 374.0638, -191.7607, 1000.6328, 0.0000},
  3628. {"FF_SIT_IN_R", "FF_SIT_OUT_R_180", 375.1168, -188.4465, 1000.6401, 180.0000},
  3629. {"FF_SIT_IN_R", "FF_SIT_OUT_R_180", 375.0603, -185.9716, 1000.6401, 180.0000},
  3630. {"FF_SIT_IN_R", "FF_SIT_OUT_R_180", 375.1057, -183.4811, 1000.6328, 180.0000},
  3631. {"FF_SIT_IN_R", "FF_SIT_OUT_R_180", 375.0972, -180.9725, 1000.6328, 180.0000}
  3632. };
  3633. new const g_ValidObjectModels[] =
  3634. {
  3635. 320, 321, 322, 323, 324, 325, 326, 327, 328, 330, 331, 333, 334, 335, 336, 337, 338, 339, 341,
  3636. 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360,
  3637. 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 615, 616, 617, 618, 619, 620,
  3638. 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639,
  3639. 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658,
  3640. 659, 660, 661, 664, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683,
  3641. 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 700, 701, 702, 703,
  3642. 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722,
  3643. 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
  3644. 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760,
  3645. 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779,
  3646. 780, 781, 782, 789, 790, 791, 792, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811,
  3647. 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830,
  3648. 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849,
  3649. 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868,
  3650. 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887,
  3651. 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906,
  3652. 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928,
  3653. 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947,
  3654. 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 966, 967,
  3655. 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986,
  3656. 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 1000, 1001, 1002, 1003, 1004, 1005,
  3657. 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021,
  3658. 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037,
  3659. 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053,
  3660. 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,
  3661. 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085,
  3662. 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101,
  3663. 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117,
  3664. 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133,
  3665. 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149,
  3666. 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165,
  3667. 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181,
  3668. 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1207, 1208, 1209, 1210,
  3669. 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226,
  3670. 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242,
  3671. 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258,
  3672. 1259, 1260, 1262, 1263, 1264, 1265, 1267, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277,
  3673. 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293,
  3674. 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309,
  3675. 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1327,
  3676. 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343,
  3677. 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359,
  3678. 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375,
  3679. 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391,
  3680. 1392, 1393, 1394, 1395, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418,
  3681. 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434,
  3682. 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450,
  3683. 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466,
  3684. 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482,
  3685. 1483, 1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498,
  3686. 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514,
  3687. 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530,
  3688. 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546,
  3689. 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562,
  3690. 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1574, 1575, 1576, 1577, 1578, 1579,
  3691. 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595,
  3692. 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611,
  3693. 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627,
  3694. 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643,
  3695. 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659,
  3696. 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1675, 1676,
  3697. 1677, 1679, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694,
  3698. 1695, 1696, 1697, 1698, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711,
  3699. 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727,
  3700. 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743,
  3701. 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, 1758, 1759,
  3702. 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775,
  3703. 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791,
  3704. 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807,
  3705. 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823,
  3706. 1824, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839,
  3707. 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855,
  3708. 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871,
  3709. 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887,
  3710. 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903,
  3711. 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919,
  3712. 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935,
  3713. 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951,
  3714. 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967,
  3715. 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983,
  3716. 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
  3717. 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015,
  3718. 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031,
  3719. 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047,
  3720. 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063,
  3721. 2064, 2065, 2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079,
  3722. 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095,
  3723. 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108, 2109, 2110, 2111,
  3724. 2112, 2113, 2114, 2115, 2116, 2117, 2118, 2119, 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2127,
  3725. 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, 2143,
  3726. 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159,
  3727. 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2168, 2169, 2170, 2171, 2172, 2173, 2174, 2175,
  3728. 2176, 2177, 2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, 2186, 2187, 2188, 2189, 2190, 2191,
  3729. 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207,
  3730. 2208, 2209, 2210, 2211, 2212, 2213, 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223,
  3731. 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239,
  3732. 2240, 2241, 2242, 2243, 2244, 2245, 2246, 2247, 2248, 2249, 2250, 2251, 2252, 2253, 2254, 2255,
  3733. 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271,
  3734. 2272, 2273, 2274, 2275, 2276, 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287,
  3735. 2288, 2289, 2290, 2291, 2292, 2293, 2294, 2295, 2296, 2297, 2298, 2299, 2300, 2301, 2302, 2303,
  3736. 2304, 2305, 2306, 2307, 2308, 2309, 2310, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2318, 2319,
  3737. 2320, 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, 2329, 2330, 2331, 2332, 2333, 2334, 2335,
  3738. 2336, 2337, 2338, 2339, 2340, 2341, 2342, 2343, 2344, 2345, 2346, 2347, 2348, 2349, 2350, 2351,
  3739. 2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359, 2360, 2361, 2362, 2363, 2364, 2365, 2366, 2367,
  3740. 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383,
  3741. 2384, 2385, 2386, 2387, 2388, 2389, 2390, 2391, 2392, 2393, 2394, 2395, 2396, 2397, 2398, 2399,
  3742. 2400, 2401, 2402, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2415,
  3743. 2416, 2417, 2418, 2419, 2420, 2421, 2422, 2423, 2424, 2425, 2426, 2427, 2428, 2429, 2430, 2431,
  3744. 2432, 2433, 2434, 2435, 2436, 2437, 2438, 2439, 2440, 2441, 2442, 2443, 2444, 2445, 2446, 2447,
  3745. 2448, 2449, 2450, 2451, 2452, 2453, 2454, 2455, 2456, 2457, 2458, 2459, 2460, 2461, 2462, 2463,
  3746. 2464, 2465, 2466, 2467, 2468, 2469, 2470, 2471, 2472, 2473, 2474, 2475, 2476, 2477, 2478, 2479,
  3747. 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2489, 2490, 2491, 2492, 2493, 2494, 2495,
  3748. 2496, 2497, 2498, 2499, 2500, 2501, 2502, 2503, 2504, 2505, 2506, 2507, 2508, 2509, 2510, 2511,
  3749. 2512, 2513, 2514, 2515, 2516, 2517, 2518, 2519, 2520, 2521, 2522, 2523, 2524, 2525, 2526, 2527,
  3750. 2528, 2529, 2530, 2531, 2532, 2533, 2534, 2535, 2536, 2537, 2538, 2539, 2540, 2541, 2542, 2543,
  3751. 2544, 2545, 2546, 2547, 2548, 2549, 2550, 2551, 2552, 2553, 2554, 2555, 2556, 2557, 2558, 2559,
  3752. 2560, 2561, 2562, 2563, 2564, 2565, 2566, 2567, 2568, 2569, 2570, 2571, 2572, 2573, 2574, 2575,
  3753. 2576, 2577, 2578, 2579, 2580, 2581, 2582, 2583, 2584, 2585, 2586, 2587, 2588, 2589, 2590, 2591,
  3754. 2592, 2593, 2594, 2595, 2596, 2597, 2598, 2599, 2600, 2601, 2602, 2603, 2604, 2605, 2606, 2607,
  3755. 2608, 2609, 2610, 2611, 2612, 2613, 2614, 2615, 2616, 2617, 2618, 2619, 2620, 2621, 2622, 2623,
  3756. 2624, 2625, 2626, 2627, 2628, 2629, 2630, 2631, 2632, 2633, 2634, 2635, 2636, 2637, 2638, 2639,
  3757. 2640, 2641, 2642, 2643, 2644, 2645, 2646, 2647, 2648, 2649, 2650, 2651, 2652, 2653, 2654, 2655,
  3758. 2656, 2657, 2658, 2659, 2660, 2661, 2662, 2663, 2664, 2665, 2666, 2667, 2668, 2669, 2670, 2671,
  3759. 2672, 2673, 2674, 2675, 2676, 2677, 2678, 2679, 2680, 2681, 2682, 2683, 2684, 2685, 2686, 2687,
  3760. 2688, 2689, 2690, 2691, 2692, 2693, 2694, 2695, 2696, 2697, 2698, 2699, 2700, 2701, 2702, 2703,
  3761. 2704, 2705, 2706, 2707, 2708, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2716, 2717, 2718, 2719,
  3762. 2720, 2721, 2722, 2723, 2724, 2725, 2726, 2727, 2728, 2729, 2730, 2731, 2732, 2733, 2734, 2735,
  3763. 2736, 2737, 2738, 2739, 2740, 2741, 2742, 2743, 2744, 2745, 2746, 2747, 2748, 2749, 2750, 2751,
  3764. 2752, 2753, 2754, 2755, 2756, 2757, 2758, 2759, 2760, 2761, 2762, 2763, 2764, 2765, 2766, 2767,
  3765. 2768, 2769, 2770, 2771, 2772, 2773, 2774, 2775, 2776, 2777, 2778, 2779, 2780, 2781, 2782, 2783,
  3766. 2784, 2785, 2788, 2789, 2790, 2791, 2792, 2793, 2794, 2795, 2796, 2797, 2798, 2799, 2800, 2801,
  3767. 2802, 2803, 2804, 2805, 2806, 2807, 2808, 2809, 2810, 2811, 2812, 2813, 2814, 2815, 2816, 2817,
  3768. 2818, 2819, 2820, 2821, 2822, 2823, 2824, 2825, 2826, 2827, 2828, 2829, 2830, 2831, 2832, 2833,
  3769. 2834, 2835, 2836, 2837, 2838, 2839, 2840, 2841, 2842, 2843, 2844, 2845, 2846, 2847, 2848, 2849,
  3770. 2850, 2851, 2852, 2853, 2854, 2855, 2856, 2857, 2858, 2859, 2860, 2861, 2862, 2863, 2864, 2865,
  3771. 2866, 2867, 2868, 2869, 2870, 2871, 2872, 2873, 2874, 2875, 2876, 2877, 2878, 2879, 2880, 2881,
  3772. 2882, 2885, 2886, 2887, 2888, 2889, 2890, 2891, 2892, 2893, 2894, 2895, 2896, 2897, 2898, 2899,
  3773. 2900, 2901, 2902, 2903, 2904, 2905, 2906, 2907, 2908, 2909, 2910, 2911, 2912, 2913, 2914, 2915,
  3774. 2916, 2917, 2918, 2919, 2920, 2921, 2922, 2923, 2924, 2925, 2926, 2927, 2928, 2929, 2930, 2931,
  3775. 2932, 2933, 2934, 2935, 2936, 2937, 2938, 2939, 2940, 2941, 2942, 2943, 2944, 2945, 2946, 2947,
  3776. 2948, 2949, 2950, 2951, 2952, 2953, 2954, 2955, 2956, 2957, 2958, 2959, 2960, 2961, 2962, 2963,
  3777. 2964, 2965, 2966, 2967, 2968, 2969, 2970, 2971, 2972, 2973, 2974, 2975, 2976, 2977, 2978, 2979,
  3778. 2980, 2981, 2982, 2983, 2984, 2985, 2986, 2987, 2988, 2989, 2990, 2991, 2992, 2993, 2994, 2995,
  3779. 2996, 2997, 2998, 2999, 3000, 3001, 3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, 3010, 3011,
  3780. 3012, 3013, 3014, 3015, 3016, 3017, 3018, 3019, 3020, 3021, 3022, 3023, 3024, 3025, 3026, 3027,
  3781. 3028, 3029, 3030, 3031, 3032, 3033, 3034, 3035, 3036, 3037, 3038, 3039, 3040, 3041, 3042, 3043,
  3782. 3044, 3045, 3046, 3047, 3048, 3049, 3050, 3051, 3052, 3053, 3054, 3055, 3056, 3057, 3058, 3059,
  3783. 3060, 3061, 3062, 3063, 3064, 3065, 3066, 3067, 3068, 3069, 3070, 3071, 3072, 3073, 3074, 3075,
  3784. 3076, 3077, 3078, 3079, 3080, 3081, 3082, 3083, 3084, 3085, 3086, 3087, 3088, 3089, 3090, 3091,
  3785. 3092, 3093, 3094, 3095, 3096, 3097, 3098, 3099, 3100, 3101, 3102, 3103, 3104, 3105, 3106, 3107,
  3786. 3108, 3109, 3110, 3111, 3112, 3113, 3114, 3115, 3116, 3117, 3119, 3120, 3121, 3122, 3123, 3124,
  3787. 3125, 3126, 3127, 3128, 3129, 3130, 3131, 3132, 3133, 3134, 3135, 3167, 3168, 3169, 3170, 3171,
  3788. 3172, 3173, 3174, 3175, 3178, 3187, 3193, 3214, 3221, 3241, 3242, 3243, 3244, 3246, 3249, 3250,
  3789. 3252, 3253, 3255, 3256, 3257, 3258, 3259, 3260, 3261, 3262, 3263, 3264, 3265, 3267, 3268, 3269,
  3790. 3270, 3271, 3272, 3273, 3274, 3275, 3276, 3277, 3278, 3279, 3280, 3281, 3282, 3283, 3284, 3285,
  3791. 3286, 3287, 3292, 3293, 3294, 3302, 3303, 3304, 3305, 3306, 3307, 3308, 3309, 3310, 3311, 3312,
  3792. 3313, 3314, 3315, 3316, 3317, 3330, 3331, 3334, 3335, 3336, 3337, 3350, 3351, 3352, 3353, 3354,
  3793. 3355, 3356, 3359, 3361, 3362, 3363, 3364, 3374, 3375, 3378, 3379, 3380, 3381, 3383, 3384, 3385,
  3794. 3386, 3387, 3388, 3389, 3390, 3391, 3392, 3393, 3394, 3395, 3396, 3397, 3398, 3399, 3400, 3401,
  3795. 3402, 3403, 3406, 3407, 3408, 3409, 3410, 3411, 3412, 3414, 3415, 3417, 3418, 3419, 3425, 3426,
  3796. 3427, 3428, 3430, 3431, 3432, 3433, 3434, 3435, 3436, 3437, 3438, 3439, 3440, 3441, 3442, 3443,
  3797. 3444, 3445, 3446, 3447, 3448, 3449, 3450, 3451, 3452, 3453, 3454, 3455, 3456, 3457, 3458, 3459,
  3798. 3460, 3461, 3462, 3463, 3464, 3465, 3466, 3467, 3468, 3469, 3470, 3471, 3472, 3473, 3474, 3475,
  3799. 3483, 3484, 3485, 3486, 3487, 3488, 3489, 3491, 3493, 3494, 3496, 3497, 3498, 3499, 3501, 3502,
  3800. 3503, 3504, 3505, 3506, 3507, 3508, 3509, 3510, 3511, 3512, 3513, 3514, 3515, 3516, 3517, 3518,
  3801. 3519, 3520, 3521, 3522, 3524, 3525, 3526, 3528, 3529, 3530, 3531, 3532, 3533, 3534, 3550, 3554,
  3802. 3555, 3556, 3557, 3558, 3564, 3565, 3566, 3567, 3568, 3569, 3570, 3571, 3572, 3573, 3574, 3575,
  3803. 3576, 3577, 3578, 3580, 3582, 3583, 3584, 3585, 3586, 3587, 3588, 3589, 3590, 3593, 3594, 3595,
  3804. 3596, 3597, 3598, 3599, 3600, 3601, 3602, 3603, 3604, 3605, 3606, 3607, 3608, 3609, 3612, 3613,
  3805. 3614, 3615, 3616, 3617, 3618, 3619, 3620, 3621, 3622, 3623, 3624, 3625, 3626, 3627, 3628, 3629,
  3806. 3630, 3631, 3632, 3633, 3634, 3635, 3636, 3637, 3638, 3639, 3640, 3641, 3642, 3643, 3644, 3646,
  3807. 3648, 3649, 3651, 3653, 3655, 3657, 3658, 3659, 3660, 3661, 3663, 3664, 3665, 3666, 3671, 3673,
  3808. 3674, 3675, 3676, 3677, 3678, 3684, 3689, 3694, 3697, 3698, 3700, 3702, 3704, 3707, 3711, 3713,
  3809. 3715, 3717, 3722, 3724, 3741, 3743, 3749, 3752, 3753, 3754, 3755, 3757, 3759, 3761, 3762, 3763,
  3810. 3764, 3765, 3771, 3776, 3781, 3783, 3785, 3786, 3787, 3788, 3789, 3790, 3791, 3792, 3793, 3794,
  3811. 3795, 3796, 3797, 3798, 3799, 3800, 3801, 3802, 3803, 3804, 3805, 3806, 3807, 3808, 3809, 3810,
  3812. 3811, 3812, 3813, 3814, 3816, 3818, 3819, 3820, 3821, 3822, 3823, 3824, 3825, 3826, 3827, 3828,
  3813. 3829, 3830, 3842, 3843, 3844, 3845, 3850, 3851, 3852, 3853, 3854, 3855, 3856, 3857, 3858, 3859,
  3814. 3860, 3861, 3862, 3863, 3864, 3865, 3866, 3867, 3872, 3873, 3875, 3876, 3877, 3878, 3879, 3881,
  3815. 3882, 3884, 3885, 3886, 3887, 3890, 3891, 3892, 3893, 3894, 3895, 3897, 3898, 3899, 3900, 3902,
  3816. 3903, 3905, 3906, 3907, 3910, 3911, 3914, 3915, 3916, 3917, 3918, 3919, 3920, 3921, 3922, 3923,
  3817. 3924, 3925, 3926, 3927, 3928, 3929, 3930, 3931, 3932, 3933, 3934, 3935, 3936, 3937, 3938, 3939,
  3818. 3940, 3941, 3942, 3943, 3944, 3945, 3946, 3947, 3948, 3949, 3950, 3951, 3952, 3953, 3954, 3955,
  3819. 3956, 3957, 3958, 3959, 3960, 3961, 3962, 3963, 3964, 3965, 3966, 3967, 3968, 3969, 3970, 3971,
  3820. 3972, 3973, 3975, 3976, 3977, 3978, 3979, 3980, 3981, 3982, 3983, 3984, 3985, 3986, 3987, 3988,
  3821. 3989, 3990, 3991, 3992, 3993, 3994, 3995, 3996, 3997, 3998, 4000, 4001, 4002, 4003, 4004, 4005,
  3822. 4006, 4007, 4008, 4010, 4011, 4012, 4013, 4014, 4015, 4016, 4017, 4018, 4019, 4020, 4021, 4022,
  3823. 4023, 4027, 4028, 4029, 4030, 4032, 4033, 4034, 4048, 4058, 4059, 4060, 4079, 4084, 4085, 4086,
  3824. 4087, 4088, 4089, 4090, 4091, 4099, 4100, 4101, 4102, 4103, 4106, 4107, 4108, 4109, 4110, 4112,
  3825. 4113, 4114, 4117, 4120, 4121, 4122, 4123, 4125, 4127, 4128, 4129, 4131, 4133, 4139, 4141, 4142,
  3826. 4144, 4146, 4148, 4150, 4152, 4154, 4156, 4158, 4160, 4163, 4165, 4168, 4170, 4171, 4172, 4173,
  3827. 4174, 4175, 4176, 4178, 4180, 4182, 4183, 4184, 4185, 4186, 4188, 4189, 4190, 4192, 4193, 4195,
  3828. 4196, 4197, 4198, 4199, 4201, 4202, 4203, 4205, 4206, 4207, 4209, 4212, 4213, 4214, 4215, 4216,
  3829. 4217, 4218, 4219, 4220, 4221, 4222, 4227, 4230, 4231, 4232, 4233, 4235, 4238, 4239, 4240, 4241,
  3830. 4242, 4243, 4244, 4245, 4246, 4247, 4248, 4249, 4250, 4251, 4252, 4253, 4254, 4255, 4256, 4257,
  3831. 4258, 4259, 4260, 4261, 4262, 4263, 4264, 4265, 4266, 4267, 4268, 4269, 4270, 4271, 4272, 4273,
  3832. 4274, 4275, 4276, 4277, 4278, 4279, 4280, 4281, 4282, 4283, 4284, 4285, 4286, 4287, 4288, 4289,
  3833. 4290, 4291, 4292, 4293, 4294, 4295, 4296, 4297, 4298, 4299, 4300, 4301, 4302, 4303, 4304, 4305,
  3834. 4306, 4307, 4308, 4309, 4310, 4311, 4312, 4313, 4314, 4315, 4316, 4317, 4318, 4319, 4320, 4321,
  3835. 4322, 4323, 4324, 4325, 4326, 4327, 4328, 4329, 4330, 4331, 4332, 4333, 4334, 4335, 4336, 4337,
  3836. 4338, 4339, 4340, 4341, 4342, 4343, 4344, 4345, 4346, 4347, 4348, 4349, 4350, 4351, 4352, 4353,
  3837. 4354, 4355, 4356, 4357, 4358, 4359, 4360, 4361, 4362, 4363, 4364, 4365, 4366, 4367, 4368, 4369,
  3838. 4370, 4371, 4372, 4373, 4374, 4504, 4505, 4506, 4507, 4508, 4509, 4510, 4511, 4512, 4513, 4514,
  3839. 4515, 4516, 4517, 4518, 4519, 4520, 4521, 4522, 4523, 4524, 4525, 4526, 4527, 4533, 4535, 4538,
  3840. 4540, 4550, 4551, 4552, 4553, 4554, 4555, 4556, 4557, 4558, 4559, 4560, 4562, 4563, 4564, 4565,
  3841. 4567, 4568, 4569, 4570, 4571, 4572, 4573, 4574, 4575, 4576, 4584, 4585, 4586, 4587, 4588, 4589,
  3842. 4590, 4591, 4592, 4593, 4594, 4595, 4596, 4597, 4598, 4599, 4600, 4601, 4602, 4603, 4604, 4605,
  3843. 4636, 4637, 4638, 4639, 4640, 4641, 4642, 4643, 4644, 4645, 4646, 4647, 4648, 4649, 4650, 4651,
  3844. 4652, 4653, 4654, 4656, 4658, 4660, 4662, 4664, 4666, 4679, 4681, 4682, 4683, 4684, 4685, 4690,
  3845. 4691, 4692, 4694, 4695, 4697, 4700, 4701, 4702, 4703, 4708, 4710, 4711, 4712, 4714, 4715, 4716,
  3846. 4717, 4718, 4720, 4721, 4722, 4723, 4724, 4725, 4726, 4727, 4729, 4730, 4731, 4732, 4733, 4734,
  3847. 4735, 4736, 4737, 4738, 4739, 4740, 4741, 4742, 4743, 4744, 4745, 4746, 4747, 4748, 4749, 4750,
  3848. 4751, 4752, 4806, 4807, 4808, 4809, 4810, 4811, 4812, 4813, 4814, 4815, 4816, 4817, 4818, 4819,
  3849. 4820, 4821, 4822, 4823, 4824, 4825, 4826, 4827, 4828, 4829, 4830, 4831, 4832, 4833, 4834, 4835,
  3850. 4836, 4837, 4838, 4839, 4840, 4841, 4842, 4843, 4844, 4845, 4846, 4847, 4848, 4849, 4850, 4851,
  3851. 4852, 4853, 4854, 4855, 4856, 4857, 4858, 4859, 4860, 4861, 4862, 4863, 4864, 4865, 4866, 4867,
  3852. 4868, 4869, 4870, 4871, 4872, 4873, 4874, 4875, 4876, 4877, 4878, 4879, 4880, 4881, 4882, 4883,
  3853. 4884, 4885, 4886, 4887, 4888, 4889, 4890, 4891, 4892, 4894, 4895, 4896, 4897, 4898, 4981, 4982,
  3854. 4983, 4984, 4985, 4986, 4988, 4990, 4991, 4992, 4993, 4994, 4995, 4996, 4997, 4998, 4999, 5000,
  3855. 5001, 5002, 5003, 5004, 5005, 5006, 5007, 5009, 5013, 5016, 5017, 5020, 5021, 5023, 5024, 5025,
  3856. 5026, 5028, 5030, 5031, 5032, 5033, 5034, 5036, 5038, 5040, 5042, 5043, 5044, 5046, 5051, 5052,
  3857. 5056, 5057, 5058, 5059, 5060, 5061, 5062, 5064, 5066, 5068, 5069, 5070, 5071, 5072, 5073, 5074,
  3858. 5075, 5076, 5077, 5078, 5079, 5080, 5081, 5082, 5083, 5084, 5086, 5087, 5088, 5089, 5105, 5106,
  3859. 5107, 5108, 5109, 5110, 5111, 5112, 5113, 5114, 5115, 5116, 5117, 5118, 5119, 5120, 5121, 5122,
  3860. 5123, 5124, 5125, 5126, 5127, 5128, 5129, 5130, 5131, 5132, 5133, 5134, 5135, 5136, 5137, 5138,
  3861. 5139, 5140, 5141, 5142, 5143, 5144, 5145, 5146, 5147, 5148, 5149, 5150, 5151, 5152, 5153, 5154,
  3862. 5155, 5156, 5157, 5158, 5160, 5166, 5167, 5168, 5169, 5170, 5171, 5172, 5173, 5174, 5175, 5176,
  3863. 5177, 5178, 5179, 5180, 5181, 5182, 5183, 5184, 5185, 5186, 5187, 5188, 5189, 5190, 5191, 5192,
  3864. 5231, 5232, 5233, 5234, 5243, 5244, 5250, 5259, 5260, 5261, 5262, 5265, 5266, 5267, 5268, 5269,
  3865. 5270, 5271, 5272, 5273, 5274, 5275, 5276, 5277, 5278, 5279, 5290, 5291, 5292, 5293, 5294, 5295,
  3866. 5296, 5297, 5298, 5299, 5301, 5302, 5306, 5308, 5309, 5310, 5311, 5312, 5313, 5314, 5322, 5323,
  3867. 5324, 5325, 5326, 5327, 5328, 5329, 5330, 5333, 5337, 5338, 5339, 5340, 5341, 5342, 5343, 5347,
  3868. 5349, 5351, 5353, 5355, 5358, 5363, 5364, 5366, 5367, 5368, 5369, 5370, 5371, 5372, 5373, 5374,
  3869. 5375, 5390, 5391, 5392, 5393, 5394, 5395, 5396, 5397, 5398, 5399, 5400, 5401, 5402, 5403, 5404,
  3870. 5405, 5406, 5407, 5408, 5409, 5410, 5411, 5412, 5413, 5414, 5415, 5416, 5417, 5418, 5419, 5420,
  3871. 5421, 5422, 5423, 5424, 5425, 5426, 5427, 5428, 5429, 5430, 5431, 5432, 5433, 5434, 5435, 5436,
  3872. 5437, 5438, 5439, 5440, 5441, 5442, 5443, 5444, 5445, 5446, 5447, 5448, 5449, 5450, 5451, 5452,
  3873. 5453, 5456, 5457, 5458, 5459, 5461, 5462, 5463, 5464, 5465, 5467, 5469, 5470, 5471, 5472, 5473,
  3874. 5474, 5475, 5476, 5477, 5478, 5479, 5480, 5481, 5482, 5483, 5484, 5485, 5486, 5487, 5488, 5489,
  3875. 5490, 5491, 5492, 5493, 5494, 5495, 5496, 5497, 5498, 5499, 5500, 5501, 5502, 5503, 5504, 5505,
  3876. 5506, 5507, 5508, 5509, 5510, 5511, 5512, 5513, 5518, 5519, 5520, 5521, 5522, 5528, 5532, 5565,
  3877. 5624, 5626, 5627, 5628, 5629, 5630, 5631, 5632, 5633, 5634, 5635, 5636, 5637, 5638, 5639, 5640,
  3878. 5641, 5642, 5643, 5644, 5650, 5652, 5654, 5655, 5656, 5660, 5661, 5662, 5663, 5665, 5668, 5674,
  3879. 5676, 5677, 5678, 5679, 5681, 5682, 5703, 5704, 5705, 5706, 5707, 5708, 5709, 5710, 5711, 5712,
  3880. 5713, 5714, 5715, 5716, 5717, 5718, 5719, 5720, 5721, 5722, 5723, 5724, 5725, 5726, 5727, 5728,
  3881. 5729, 5730, 5731, 5732, 5733, 5734, 5735, 5736, 5737, 5738, 5739, 5740, 5741, 5742, 5743, 5744,
  3882. 5745, 5746, 5747, 5748, 5749, 5750, 5751, 5752, 5753, 5754, 5755, 5756, 5757, 5758, 5759, 5760,
  3883. 5761, 5762, 5763, 5764, 5765, 5766, 5767, 5768, 5769, 5770, 5771, 5772, 5773, 5774, 5775, 5776,
  3884. 5777, 5778, 5779, 5780, 5781, 5782, 5783, 5784, 5785, 5786, 5787, 5788, 5789, 5790, 5791, 5792,
  3885. 5793, 5794, 5795, 5796, 5797, 5798, 5799, 5800, 5801, 5802, 5803, 5804, 5805, 5806, 5807, 5808,
  3886. 5809, 5810, 5811, 5812, 5813, 5814, 5815, 5816, 5817, 5818, 5819, 5820, 5821, 5822, 5823, 5835,
  3887. 5836, 5837, 5838, 5844, 5845, 5846, 5847, 5848, 5853, 5854, 5855, 5856, 5857, 5859, 5860, 5861,
  3888. 5862, 5863, 5864, 5865, 5866, 5868, 5870, 5871, 5872, 5873, 5874, 5875, 5876, 5877, 5878, 5881,
  3889. 5882, 5885, 5886, 5887, 5888, 5891, 5892, 5893, 5896, 5986, 5987, 5990, 5991, 5992, 5993, 5994,
  3890. 5995, 5998, 5999, 6001, 6006, 6007, 6010, 6035, 6036, 6037, 6038, 6039, 6040, 6041, 6042, 6043,
  3891. 6044, 6045, 6046, 6047, 6048, 6049, 6050, 6051, 6052, 6053, 6054, 6055, 6056, 6057, 6058, 6059,
  3892. 6060, 6061, 6062, 6063, 6064, 6065, 6066, 6087, 6088, 6094, 6095, 6096, 6098, 6099, 6100, 6101,
  3893. 6102, 6103, 6104, 6110, 6111, 6112, 6113, 6114, 6115, 6116, 6117, 6118, 6119, 6120, 6121, 6122,
  3894. 6123, 6124, 6125, 6126, 6127, 6128, 6129, 6130, 6132, 6133, 6134, 6135, 6136, 6137, 6138, 6145,
  3895. 6148, 6150, 6151, 6152, 6157, 6158, 6159, 6160, 6165, 6186, 6187, 6188, 6189, 6192, 6193, 6194,
  3896. 6195, 6196, 6199, 6203, 6204, 6205, 6209, 6210, 6211, 6212, 6213, 6214, 6217, 6223, 6225, 6227,
  3897. 6228, 6229, 6230, 6231, 6232, 6233, 6234, 6235, 6236, 6237, 6248, 6249, 6250, 6251, 6252, 6257,
  3898. 6280, 6281, 6282, 6283, 6284, 6285, 6286, 6287, 6288, 6289, 6290, 6291, 6292, 6293, 6294, 6295,
  3899. 6296, 6297, 6298, 6299, 6300, 6301, 6302, 6303, 6304, 6305, 6306, 6307, 6308, 6309, 6310, 6311,
  3900. 6312, 6313, 6314, 6315, 6316, 6317, 6318, 6319, 6320, 6321, 6322, 6323, 6324, 6325, 6326, 6327,
  3901. 6328, 6329, 6330, 6331, 6332, 6333, 6334, 6336, 6337, 6338, 6340, 6341, 6342, 6343, 6344, 6345,
  3902. 6347, 6349, 6350, 6351, 6352, 6353, 6354, 6355, 6356, 6357, 6362, 6363, 6364, 6366, 6368, 6369,
  3903. 6370, 6371, 6372, 6373, 6385, 6386, 6387, 6388, 6389, 6390, 6391, 6393, 6397, 6398, 6399, 6400,
  3904. 6403, 6404, 6405, 6406, 6407, 6411, 6412, 6413, 6416, 6417, 6421, 6422, 6427, 6428, 6430, 6431,
  3905. 6436, 6443, 6444, 6448, 6449, 6450, 6451, 6457, 6458, 6461, 6462, 6466, 6487, 6488, 6489, 6490,
  3906. 6497, 6499, 6501, 6502, 6507, 6508, 6509, 6513, 6514, 6516, 6517, 6518, 6519, 6520, 6521, 6522,
  3907. 6524, 6863, 6864, 6865, 6866, 6867, 6868, 6869, 6871, 6872, 6873, 6874, 6875, 6876, 6877, 6878,
  3908. 6879, 6880, 6881, 6882, 6883, 6884, 6885, 6886, 6887, 6888, 6897, 6898, 6899, 6900, 6907, 6908,
  3909. 6909, 6910, 6912, 6913, 6914, 6915, 6916, 6917, 6919, 6920, 6921, 6922, 6923, 6924, 6925, 6926,
  3910. 6928, 6929, 6930, 6931, 6932, 6933, 6934, 6944, 6945, 6946, 6947, 6948, 6949, 6950, 6951, 6952,
  3911. 6953, 6954, 6955, 6956, 6957, 6958, 6959, 6960, 6961, 6962, 6963, 6964, 6965, 6966, 6967, 6968,
  3912. 6969, 6970, 6971, 6972, 6973, 6974, 6975, 6976, 6977, 6978, 6979, 6980, 6981, 6982, 6983, 6984,
  3913. 6985, 6986, 6987, 6988, 6989, 6990, 6991, 6993, 6994, 6997, 6999, 7009, 7010, 7011, 7012, 7013,
  3914. 7014, 7015, 7016, 7017, 7018, 7019, 7020, 7021, 7022, 7023, 7024, 7025, 7026, 7027, 7028, 7029,
  3915. 7030, 7031, 7032, 7033, 7034, 7035, 7036, 7037, 7038, 7039, 7040, 7041, 7042, 7043, 7044, 7045,
  3916. 7046, 7047, 7048, 7049, 7050, 7051, 7052, 7053, 7054, 7055, 7056, 7057, 7064, 7069, 7071, 7072,
  3917. 7073, 7075, 7076, 7077, 7078, 7079, 7080, 7081, 7082, 7083, 7084, 7085, 7086, 7087, 7088, 7089,
  3918. 7090, 7091, 7092, 7093, 7094, 7095, 7096, 7097, 7098, 7099, 7100, 7101, 7102, 7103, 7104, 7105,
  3919. 7153, 7172, 7184, 7186, 7187, 7188, 7189, 7190, 7191, 7192, 7196, 7197, 7198, 7200, 7201, 7202,
  3920. 7203, 7204, 7205, 7206, 7207, 7208, 7209, 7210, 7212, 7213, 7217, 7218, 7220, 7221, 7222, 7223,
  3921. 7224, 7226, 7227, 7228, 7229, 7230, 7231, 7232, 7233, 7234, 7236, 7238, 7240, 7242, 7243, 7244,
  3922. 7245, 7246, 7247, 7248, 7249, 7250, 7251, 7252, 7253, 7254, 7263, 7264, 7265, 7266, 7268, 7269,
  3923. 7271, 7272, 7273, 7276, 7277, 7280, 7287, 7288, 7289, 7290, 7291, 7292, 7294, 7295, 7296, 7297,
  3924. 7298, 7299, 7300, 7301, 7302, 7303, 7304, 7305, 7306, 7307, 7308, 7309, 7310, 7311, 7312, 7313,
  3925. 7314, 7315, 7317, 7319, 7320, 7321, 7324, 7326, 7327, 7331, 7332, 7333, 7334, 7335, 7336, 7337,
  3926. 7344, 7347, 7353, 7355, 7357, 7359, 7361, 7362, 7364, 7366, 7367, 7368, 7369, 7370, 7371, 7377,
  3927. 7378, 7379, 7380, 7381, 7383, 7387, 7388, 7389, 7390, 7391, 7392, 7415, 7416, 7417, 7418, 7419,
  3928. 7420, 7421, 7422, 7423, 7424, 7425, 7426, 7427, 7428, 7429, 7430, 7431, 7432, 7433, 7434, 7435,
  3929. 7436, 7437, 7438, 7439, 7440, 7441, 7442, 7443, 7444, 7445, 7446, 7447, 7448, 7449, 7450, 7451,
  3930. 7452, 7453, 7454, 7455, 7456, 7457, 7458, 7459, 7460, 7461, 7462, 7463, 7464, 7465, 7466, 7467,
  3931. 7468, 7469, 7470, 7471, 7472, 7473, 7474, 7475, 7476, 7477, 7478, 7479, 7480, 7481, 7482, 7483,
  3932. 7484, 7485, 7486, 7488, 7489, 7490, 7491, 7492, 7493, 7494, 7495, 7496, 7497, 7498, 7499, 7500,
  3933. 7501, 7502, 7503, 7504, 7505, 7506, 7507, 7508, 7509, 7510, 7511, 7512, 7513, 7514, 7515, 7516,
  3934. 7517, 7518, 7519, 7520, 7521, 7522, 7523, 7524, 7525, 7526, 7527, 7528, 7529, 7530, 7531, 7532,
  3935. 7533, 7534, 7535, 7536, 7537, 7538, 7539, 7540, 7541, 7542, 7543, 7544, 7545, 7546, 7547, 7548,
  3936. 7549, 7550, 7551, 7552, 7553, 7554, 7555, 7556, 7557, 7558, 7559, 7560, 7561, 7562, 7563, 7564,
  3937. 7565, 7566, 7567, 7568, 7569, 7570, 7571, 7572, 7573, 7574, 7575, 7576, 7577, 7578, 7579, 7580,
  3938. 7581, 7582, 7583, 7584, 7585, 7586, 7587, 7588, 7589, 7590, 7591, 7592, 7593, 7595, 7596, 7597,
  3939. 7598, 7599, 7600, 7601, 7602, 7603, 7604, 7605, 7606, 7607, 7608, 7609, 7610, 7611, 7612, 7613,
  3940. 7614, 7615, 7616, 7617, 7618, 7619, 7620, 7621, 7622, 7623, 7624, 7625, 7626, 7627, 7628, 7629,
  3941. 7630, 7631, 7632, 7633, 7634, 7635, 7636, 7637, 7638, 7639, 7640, 7641, 7642, 7643, 7644, 7645,
  3942. 7646, 7647, 7648, 7649, 7650, 7651, 7652, 7653, 7654, 7655, 7656, 7657, 7658, 7659, 7660, 7661,
  3943. 7662, 7663, 7664, 7665, 7666, 7681, 7692, 7696, 7707, 7708, 7709, 7729, 7730, 7731, 7755, 7832,
  3944. 7834, 7836, 7837, 7838, 7839, 7840, 7841, 7842, 7849, 7852, 7854, 7861, 7862, 7863, 7864, 7865,
  3945. 7866, 7867, 7868, 7878, 7880, 7881, 7882, 7884, 7885, 7889, 7891, 7892, 7893, 7894, 7900, 7901,
  3946. 7902, 7903, 7904, 7905, 7906, 7907, 7908, 7909, 7910, 7911, 7912, 7913, 7914, 7915, 7916, 7917,
  3947. 7918, 7919, 7920, 7921, 7922, 7923, 7924, 7925, 7926, 7927, 7929, 7930, 7931, 7932, 7933, 7934,
  3948. 7938, 7939, 7940, 7942, 7943, 7944, 7945, 7947, 7950, 7952, 7953, 7954, 7955, 7956, 7963, 7965,
  3949. 7967, 7969, 7971, 7972, 7973, 7978, 7979, 7980, 7981, 7982, 7983, 7984, 7985, 7986, 7987, 7988,
  3950. 7989, 7990, 7991, 7992, 7993, 7994, 7995, 7996, 7997, 7998, 7999, 8000, 8001, 8002, 8003, 8004,
  3951. 8005, 8006, 8007, 8008, 8009, 8010, 8033, 8034, 8035, 8036, 8037, 8038, 8039, 8040, 8041, 8042,
  3952. 8043, 8044, 8045, 8046, 8047, 8048, 8049, 8050, 8051, 8052, 8053, 8054, 8055, 8056, 8057, 8058,
  3953. 8059, 8060, 8061, 8062, 8063, 8064, 8065, 8066, 8067, 8068, 8069, 8070, 8071, 8072, 8073, 8074,
  3954. 8075, 8076, 8077, 8078, 8079, 8080, 8081, 8082, 8083, 8084, 8085, 8086, 8087, 8091, 8128, 8130,
  3955. 8131, 8132, 8133, 8134, 8135, 8136, 8137, 8147, 8148, 8149, 8150, 8151, 8152, 8153, 8154, 8155,
  3956. 8165, 8167, 8168, 8169, 8171, 8172, 8173, 8174, 8175, 8176, 8177, 8178, 8185, 8186, 8187, 8188,
  3957. 8189, 8194, 8198, 8199, 8200, 8201, 8202, 8206, 8207, 8208, 8209, 8210, 8212, 8213, 8214, 8215,
  3958. 8216, 8217, 8218, 8219, 8228, 8229, 8230, 8231, 8232, 8236, 8237, 8240, 8242, 8244, 8245, 8246,
  3959. 8247, 8249, 8251, 8253, 8254, 8255, 8256, 8260, 8262, 8263, 8264, 8281, 8283, 8285, 8286, 8287,
  3960. 8288, 8290, 8292, 8293, 8294, 8300, 8302, 8305, 8306, 8308, 8310, 8311, 8313, 8314, 8315, 8319,
  3961. 8320, 8321, 8322, 8323, 8324, 8325, 8326, 8327, 8328, 8329, 8330, 8331, 8332, 8333, 8335, 8337,
  3962. 8339, 8341, 8342, 8343, 8344, 8345, 8350, 8351, 8352, 8353, 8354, 8355, 8356, 8357, 8368, 8369,
  3963. 8370, 8371, 8372, 8373, 8375, 8377, 8378, 8380, 8382, 8383, 8386, 8388, 8390, 8391, 8392, 8393,
  3964. 8394, 8395, 8396, 8397, 8398, 8399, 8400, 8401, 8402, 8403, 8404, 8405, 8406, 8407, 8408, 8409,
  3965. 8410, 8411, 8412, 8416, 8417, 8418, 8419, 8420, 8421, 8422, 8423, 8424, 8425, 8426, 8427, 8428,
  3966. 8429, 8430, 8431, 8432, 8433, 8434, 8435, 8436, 8437, 8438, 8439, 8440, 8441, 8442, 8443, 8444,
  3967. 8445, 8446, 8447, 8448, 8449, 8450, 8451, 8452, 8453, 8454, 8455, 8456, 8457, 8458, 8459, 8460,
  3968. 8461, 8462, 8463, 8464, 8465, 8466, 8467, 8468, 8469, 8470, 8471, 8472, 8473, 8474, 8475, 8476,
  3969. 8477, 8480, 8481, 8482, 8483, 8484, 8485, 8486, 8487, 8488, 8489, 8490, 8491, 8492, 8493, 8494,
  3970. 8495, 8496, 8497, 8498, 8499, 8500, 8501, 8502, 8503, 8504, 8505, 8506, 8507, 8508, 8509, 8510,
  3971. 8511, 8512, 8513, 8514, 8515, 8516, 8517, 8518, 8519, 8520, 8521, 8522, 8523, 8524, 8525, 8526,
  3972. 8527, 8528, 8529, 8530, 8531, 8532, 8533, 8534, 8535, 8536, 8537, 8538, 8539, 8540, 8541, 8542,
  3973. 8543, 8544, 8545, 8546, 8547, 8548, 8549, 8550, 8551, 8552, 8553, 8554, 8555, 8556, 8557, 8558,
  3974. 8559, 8560, 8561, 8562, 8563, 8564, 8565, 8566, 8567, 8568, 8569, 8570, 8571, 8572, 8573, 8574,
  3975. 8575, 8576, 8577, 8578, 8579, 8580, 8581, 8582, 8583, 8584, 8585, 8586, 8587, 8588, 8589, 8590,
  3976. 8591, 8592, 8593, 8594, 8595, 8596, 8597, 8607, 8608, 8609, 8610, 8611, 8612, 8613, 8614, 8615,
  3977. 8616, 8617, 8618, 8619, 8620, 8621, 8622, 8623, 8624, 8625, 8626, 8627, 8628, 8629, 8630, 8631,
  3978. 8632, 8633, 8634, 8635, 8636, 8637, 8638, 8639, 8640, 8641, 8642, 8643, 8644, 8645, 8646, 8647,
  3979. 8648, 8649, 8650, 8651, 8652, 8653, 8654, 8655, 8656, 8657, 8658, 8659, 8660, 8661, 8662, 8663,
  3980. 8664, 8665, 8666, 8667, 8668, 8669, 8670, 8671, 8672, 8673, 8674, 8675, 8676, 8677, 8678, 8679,
  3981. 8680, 8681, 8682, 8683, 8684, 8685, 8686, 8687, 8688, 8689, 8710, 8824, 8825, 8826, 8827, 8828,
  3982. 8832, 8833, 8834, 8835, 8836, 8837, 8838, 8839, 8840, 8841, 8842, 8843, 8844, 8845, 8846, 8849,
  3983. 8850, 8851, 8852, 8853, 8854, 8855, 8856, 8857, 8858, 8859, 8860, 8865, 8866, 8867, 8868, 8869,
  3984. 8870, 8871, 8872, 8873, 8874, 8875, 8876, 8877, 8878, 8879, 8880, 8881, 8882, 8883, 8884, 8885,
  3985. 8886, 8887, 8888, 8889, 8932, 8947, 8948, 8954, 8955, 8957, 8969, 8979, 8980, 8981, 8982, 8983,
  3986. 8989, 8990, 8991, 9000, 9001, 9002, 9003, 9004, 9005, 9006, 9007, 9008, 9019, 9020, 9021, 9022,
  3987. 9023, 9024, 9025, 9026, 9027, 9028, 9029, 9030, 9031, 9032, 9033, 9034, 9035, 9036, 9037, 9039,
  3988. 9041, 9042, 9043, 9044, 9045, 9046, 9047, 9052, 9054, 9055, 9056, 9057, 9062, 9064, 9065, 9066,
  3989. 9070, 9071, 9072, 9076, 9078, 9080, 9082, 9083, 9086, 9087, 9088, 9089, 9090, 9093, 9094, 9095,
  3990. 9098, 9099, 9100, 9101, 9104, 9106, 9108, 9109, 9110, 9111, 9112, 9113, 9114, 9115, 9116, 9117,
  3991. 9118, 9119, 9120, 9121, 9122, 9123, 9124, 9125, 9126, 9127, 9128, 9129, 9131, 9132, 9135, 9136,
  3992. 9137, 9138, 9139, 9140, 9150, 9152, 9153, 9154, 9159, 9162, 9163, 9164, 9165, 9166, 9167, 9168,
  3993. 9169, 9171, 9173, 9174, 9175, 9184, 9185, 9186, 9187, 9188, 9189, 9190, 9191, 9192, 9193, 9205,
  3994. 9206, 9207, 9208, 9209, 9210, 9211, 9212, 9213, 9214, 9215, 9216, 9217, 9218, 9219, 9220, 9221,
  3995. 9222, 9223, 9224, 9225, 9226, 9227, 9228, 9229, 9230, 9231, 9232, 9233, 9234, 9235, 9236, 9237,
  3996. 9238, 9239, 9240, 9241, 9242, 9243, 9244, 9245, 9246, 9247, 9248, 9249, 9250, 9251, 9252, 9253,
  3997. 9254, 9255, 9256, 9257, 9258, 9259, 9260, 9261, 9262, 9264, 9265, 9266, 9267, 9269, 9270, 9271,
  3998. 9272, 9273, 9274, 9275, 9276, 9277, 9278, 9279, 9280, 9281, 9282, 9283, 9284, 9285, 9286, 9287,
  3999. 9288, 9289, 9290, 9291, 9292, 9293, 9294, 9295, 9296, 9297, 9298, 9299, 9300, 9301, 9302, 9303,
  4000. 9304, 9305, 9306, 9307, 9308, 9309, 9310, 9311, 9312, 9313, 9314, 9315, 9316, 9317, 9318, 9319,
  4001. 9320, 9321, 9322, 9323, 9324, 9325, 9326, 9327, 9328, 9329, 9330, 9331, 9332, 9333, 9334, 9335,
  4002. 9336, 9337, 9338, 9339, 9340, 9341, 9342, 9343, 9344, 9345, 9346, 9347, 9348, 9349, 9350, 9351,
  4003. 9352, 9353, 9361, 9362, 9437, 9438, 9439, 9440, 9476, 9482, 9483, 9484, 9485, 9486, 9487, 9488,
  4004. 9489, 9490, 9491, 9492, 9493, 9494, 9495, 9496, 9497, 9498, 9499, 9500, 9501, 9502, 9503, 9504,
  4005. 9505, 9506, 9507, 9508, 9509, 9510, 9511, 9512, 9513, 9514, 9515, 9516, 9517, 9518, 9519, 9520,
  4006. 9521, 9522, 9523, 9524, 9525, 9526, 9527, 9528, 9529, 9530, 9547, 9549, 9550, 9551, 9552, 9553,
  4007. 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569,
  4008. 9570, 9571, 9572, 9573, 9575, 9576, 9577, 9578, 9579, 9580, 9581, 9582, 9583, 9584, 9585, 9586,
  4009. 9587, 9588, 9589, 9590, 9591, 9592, 9593, 9594, 9595, 9596, 9597, 9598, 9599, 9600, 9601, 9602,
  4010. 9603, 9604, 9605, 9606, 9607, 9608, 9609, 9610, 9611, 9612, 9613, 9614, 9615, 9616, 9617, 9618,
  4011. 9623, 9624, 9625, 9652, 9653, 9680, 9682, 9683, 9685, 9689, 9690, 9693, 9694, 9696, 9697, 9698,
  4012. 9699, 9700, 9701, 9702, 9703, 9704, 9705, 9706, 9707, 9708, 9709, 9710, 9711, 9712, 9713, 9714,
  4013. 9715, 9716, 9717, 9718, 9719, 9720, 9721, 9722, 9723, 9724, 9725, 9726, 9727, 9728, 9729, 9730,
  4014. 9731, 9732, 9733, 9734, 9735, 9736, 9737, 9738, 9739, 9740, 9741, 9742, 9743, 9744, 9745, 9746,
  4015. 9747, 9748, 9749, 9750, 9751, 9752, 9753, 9754, 9761, 9762, 9763, 9764, 9765, 9766, 9767, 9812,
  4016. 9814, 9815, 9816, 9817, 9818, 9819, 9820, 9821, 9822, 9823, 9824, 9825, 9827, 9829, 9830, 9831,
  4017. 9832, 9833, 9834, 9835, 9836, 9837, 9838, 9858, 9859, 9860, 9863, 9864, 9885, 9886, 9889, 9891,
  4018. 9893, 9894, 9895, 9896, 9897, 9898, 9899, 9900, 9901, 9902, 9903, 9904, 9905, 9906, 9907, 9908,
  4019. 9909, 9910, 9911, 9912, 9913, 9914, 9915, 9916, 9917, 9918, 9919, 9920, 9921, 9922, 9923, 9924,
  4020. 9925, 9926, 9927, 9928, 9929, 9930, 9931, 9932, 9933, 9934, 9946, 9947, 9948, 9949, 9950, 9951,
  4021. 9952, 9953, 9954, 9955, 9956, 9957, 9958, 10008, 10009, 10010, 10011, 10012, 10013, 10014, 10015,
  4022. 10016, 10017, 10018, 10019, 10020, 10021, 10022, 10023, 10024, 10025, 10026, 10027, 10028, 10029,
  4023. 10030, 10031, 10032, 10033, 10034, 10035, 10036, 10037, 10038, 10039, 10040, 10041, 10042, 10043,
  4024. 10044, 10045, 10046, 10047, 10048, 10049, 10050, 10051, 10052, 10053, 10054, 10055, 10056, 10057,
  4025. 10058, 10060, 10061, 10062, 10063, 10064, 10065, 10066, 10067, 10068, 10069, 10070, 10071, 10072,
  4026. 10073, 10074, 10075, 10076, 10077, 10078, 10079, 10080, 10083, 10084, 10086, 10087, 10101, 10110,
  4027. 10111, 10112, 10113, 10114, 10115, 10116, 10117, 10118, 10119, 10120, 10121, 10122, 10123, 10124,
  4028. 10125, 10126, 10127, 10128, 10129, 10130, 10131, 10132, 10133, 10134, 10135, 10136, 10137, 10138,
  4029. 10139, 10140, 10142, 10143, 10145, 10146, 10147, 10148, 10149, 10150, 10151, 10152, 10153, 10154,
  4030. 10165, 10166, 10173, 10174, 10175, 10176, 10177, 10178, 10179, 10180, 10181, 10182, 10183, 10184,
  4031. 10185, 10186, 10187, 10188, 10189, 10193, 10194, 10195, 10196, 10197, 10226, 10227, 10228, 10229,
  4032. 10230, 10231, 10233, 10234, 10235, 10236, 10242, 10244, 10245, 10246, 10247, 10248, 10249, 10250,
  4033. 10252, 10255, 10260, 10261, 10262, 10263, 10264, 10265, 10266, 10267, 10270, 10271, 10273, 10274,
  4034. 10275, 10276, 10278, 10280, 10281, 10282, 10287, 10288, 10289, 10290, 10294, 10295, 10296, 10300,
  4035. 10301, 10305, 10306, 10308, 10309, 10310, 10350, 10351, 10352, 10353, 10354, 10355, 10356, 10357,
  4036. 10358, 10359, 10360, 10361, 10362, 10363, 10364, 10365, 10366, 10367, 10368, 10369, 10370, 10371,
  4037. 10372, 10373, 10374, 10375, 10376, 10377, 10378, 10379, 10380, 10381, 10382, 10383, 10384, 10385,
  4038. 10386, 10387, 10388, 10389, 10390, 10391, 10392, 10393, 10394, 10395, 10396, 10397, 10398, 10399,
  4039. 10400, 10401, 10402, 10403, 10404, 10405, 10406, 10407, 10408, 10409, 10410, 10411, 10412, 10413,
  4040. 10414, 10415, 10416, 10417, 10418, 10419, 10420, 10421, 10422, 10423, 10424, 10425, 10426, 10427,
  4041. 10428, 10429, 10430, 10431, 10432, 10433, 10434, 10435, 10436, 10437, 10438, 10439, 10440, 10441,
  4042. 10442, 10443, 10444, 10445, 10446, 10447, 10448, 10449, 10450, 10451, 10452, 10453, 10454, 10455,
  4043. 10456, 10457, 10458, 10459, 10460, 10461, 10462, 10463, 10464, 10465, 10466, 10467, 10468, 10469,
  4044. 10470, 10471, 10472, 10473, 10474, 10475, 10476, 10477, 10478, 10479, 10480, 10481, 10482, 10483,
  4045. 10484, 10485, 10486, 10487, 10488, 10489, 10490, 10491, 10492, 10493, 10558, 10559, 10560, 10561,
  4046. 10562, 10563, 10564, 10565, 10566, 10567, 10568, 10569, 10570, 10571, 10572, 10573, 10574, 10575,
  4047. 10576, 10601, 10606, 10608, 10609, 10610, 10611, 10612, 10613, 10614, 10615, 10616, 10617, 10618,
  4048. 10619, 10621, 10622, 10623, 10624, 10625, 10626, 10627, 10628, 10629, 10630, 10631, 10632, 10633,
  4049. 10634, 10635, 10636, 10637, 10638, 10639, 10649, 10651, 10671, 10672, 10675, 10676, 10682, 10683,
  4050. 10694, 10695, 10696, 10697, 10698, 10699, 10700, 10701, 10702, 10703, 10704, 10705, 10706, 10707,
  4051. 10708, 10709, 10710, 10711, 10712, 10713, 10716, 10718, 10722, 10734, 10735, 10736, 10737, 10738,
  4052. 10739, 10740, 10741, 10742, 10743, 10744, 10750, 10751, 10752, 10753, 10754, 10755, 10756, 10757,
  4053. 10758, 10759, 10760, 10761, 10762, 10763, 10764, 10765, 10766, 10767, 10768, 10769, 10770, 10771,
  4054. 10772, 10773, 10774, 10775, 10776, 10777, 10778, 10779, 10780, 10781, 10782, 10783, 10784, 10785,
  4055. 10786, 10787, 10788, 10789, 10790, 10791, 10792, 10793, 10794, 10795, 10806, 10807, 10808, 10809,
  4056. 10810, 10811, 10814, 10815, 10816, 10817, 10818, 10819, 10820, 10821, 10822, 10823, 10824, 10825,
  4057. 10826, 10827, 10828, 10829, 10830, 10831, 10832, 10833, 10834, 10835, 10836, 10837, 10838, 10839,
  4058. 10840, 10841, 10842, 10843, 10844, 10845, 10846, 10847, 10848, 10849, 10850, 10851, 10852, 10854,
  4059. 10855, 10856, 10857, 10858, 10859, 10860, 10861, 10862, 10863, 10864, 10865, 10866, 10867, 10868,
  4060. 10869, 10870, 10871, 10872, 10873, 10874, 10875, 10885, 10889, 10890, 10891, 10903, 10904, 10905,
  4061. 10917, 10925, 10926, 10927, 10928, 10929, 10930, 10931, 10932, 10933, 10934, 10935, 10936, 10937,
  4062. 10938, 10939, 10940, 10941, 10942, 10943, 10944, 10945, 10946, 10947, 10948, 10949, 10950, 10951,
  4063. 10952, 10953, 10954, 10955, 10956, 10957, 10958, 10959, 10960, 10961, 10962, 10965, 10966, 10967,
  4064. 10968, 10969, 10970, 10971, 10972, 10973, 10974, 10975, 10976, 10977, 10978, 10979, 10980, 10981,
  4065. 10982, 10983, 10984, 10985, 10986, 10987, 10988, 10989, 10990, 10991, 10992, 10993, 10994, 10995,
  4066. 10996, 10997, 10998, 10999, 11000, 11001, 11002, 11003, 11004, 11005, 11006, 11007, 11008, 11009,
  4067. 11010, 11011, 11012, 11013, 11014, 11015, 11071, 11072, 11073, 11074, 11075, 11076, 11077, 11078,
  4068. 11079, 11080, 11081, 11082, 11083, 11084, 11085, 11086, 11087, 11088, 11089, 11090, 11091, 11092,
  4069. 11093, 11094, 11095, 11096, 11097, 11098, 11099, 11100, 11101, 11102, 11103, 11104, 11105, 11106,
  4070. 11107, 11110, 11111, 11112, 11113, 11114, 11115, 11116, 11117, 11118, 11119, 11120, 11121, 11122,
  4071. 11123, 11124, 11125, 11126, 11127, 11128, 11129, 11130, 11131, 11132, 11133, 11134, 11135, 11136,
  4072. 11137, 11138, 11139, 11145, 11146, 11147, 11148, 11149, 11150, 11223, 11224, 11225, 11226, 11228,
  4073. 11229, 11230, 11231, 11232, 11233, 11234, 11235, 11236, 11237, 11238, 11239, 11240, 11241, 11242,
  4074. 11243, 11244, 11245, 11246, 11247, 11252, 11253, 11254, 11255, 11256, 11257, 11258, 11259, 11260,
  4075. 11261, 11280, 11283, 11285, 11287, 11288, 11289, 11290, 11292, 11293, 11295, 11297, 11299, 11301,
  4076. 11302, 11303, 11305, 11306, 11308, 11312, 11313, 11314, 11315, 11316, 11317, 11318, 11319, 11324,
  4077. 11326, 11327, 11332, 11334, 11335, 11337, 11340, 11342, 11343, 11345, 11351, 11352, 11353, 11359,
  4078. 11360, 11362, 11363, 11364, 11365, 11367, 11374, 11379, 11380, 11381, 11382, 11383, 11384, 11385,
  4079. 11386, 11387, 11388, 11389, 11390, 11391, 11392, 11393, 11394, 11395, 11396, 11400, 11401, 11406,
  4080. 11408, 11409, 11410, 11411, 11412, 11413, 11414, 11416, 11417, 11420, 11421, 11422, 11423, 11424,
  4081. 11425, 11426, 11427, 11428, 11429, 11430, 11431, 11432, 11433, 11434, 11435, 11436, 11437, 11438,
  4082. 11439, 11440, 11441, 11442, 11443, 11444, 11445, 11446, 11447, 11448, 11449, 11450, 11451, 11452,
  4083. 11453, 11454, 11455, 11456, 11457, 11458, 11459, 11460, 11461, 11462, 11463, 11464, 11465, 11466,
  4084. 11467, 11468, 11469, 11470, 11471, 11472, 11473, 11474, 11475, 11476, 11477, 11478, 11479, 11480,
  4085. 11481, 11482, 11483, 11484, 11485, 11486, 11487, 11488, 11489, 11490, 11491, 11492, 11493, 11494,
  4086. 11495, 11496, 11497, 11498, 11499, 11500, 11501, 11502, 11503, 11504, 11505, 11506, 11507, 11508,
  4087. 11509, 11510, 11511, 11512, 11513, 11514, 11515, 11516, 11517, 11518, 11519, 11520, 11521, 11522,
  4088. 11523, 11524, 11525, 11526, 11527, 11528, 11529, 11530, 11531, 11532, 11533, 11534, 11535, 11536,
  4089. 11537, 11538, 11539, 11540, 11541, 11542, 11543, 11544, 11545, 11546, 11547, 11548, 11549, 11550,
  4090. 11551, 11552, 11553, 11554, 11555, 11556, 11557, 11558, 11559, 11560, 11561, 11562, 11563, 11564,
  4091. 11565, 11566, 11567, 11568, 11571, 11572, 11579, 11580, 11581, 11607, 11608, 11609, 11610, 11611,
  4092. 11615, 11623, 11625, 11626, 11627, 11628, 11629, 11631, 11647, 11663, 11664, 11665, 11666, 11674,
  4093. 11677, 11678, 11679, 11680, 11681, 11682, 11683, 11684, 11685, 11686, 11687, 11688, 11689, 11690,
  4094. 11691, 11692, 11693, 11694, 11695, 11696, 11697, 11698, 11699, 11700, 11701, 11702, 11704, 11705,
  4095. 11706, 11707, 11708, 11709, 11710, 11711, 11712, 11713, 11714, 11715, 11716, 11717, 11718, 11719,
  4096. 11720, 11721, 11722, 11723, 11724, 11725, 11726, 11727, 11728, 11729, 11730, 11731, 11732, 11733,
  4097. 11734, 11735, 11736, 11737, 11738, 11739, 11740, 11741, 11742, 11743, 11744, 11745, 11746, 11747,
  4098. 11748, 11749, 11750, 11751, 11752, 11753, 12800, 12801, 12802, 12803, 12804, 12805, 12806, 12807,
  4099. 12808, 12809, 12810, 12811, 12812, 12813, 12814, 12815, 12816, 12817, 12818, 12819, 12820, 12821,
  4100. 12822, 12823, 12824, 12825, 12826, 12827, 12828, 12829, 12830, 12831, 12832, 12833, 12835, 12836,
  4101. 12837, 12838, 12839, 12840, 12841, 12842, 12843, 12844, 12845, 12846, 12847, 12848, 12849, 12850,
  4102. 12851, 12852, 12853, 12854, 12855, 12856, 12857, 12858, 12859, 12860, 12861, 12862, 12863, 12864,
  4103. 12865, 12866, 12867, 12868, 12869, 12870, 12871, 12872, 12873, 12874, 12875, 12876, 12877, 12878,
  4104. 12879, 12880, 12881, 12882, 12883, 12884, 12885, 12886, 12887, 12888, 12889, 12890, 12891, 12892,
  4105. 12893, 12894, 12895, 12896, 12897, 12898, 12899, 12900, 12901, 12902, 12903, 12904, 12905, 12906,
  4106. 12907, 12908, 12909, 12910, 12911, 12912, 12913, 12914, 12915, 12916, 12917, 12918, 12919, 12920,
  4107. 12921, 12922, 12923, 12924, 12925, 12926, 12927, 12928, 12929, 12930, 12931, 12932, 12933, 12934,
  4108. 12935, 12936, 12937, 12938, 12939, 12940, 12941, 12942, 12943, 12944, 12945, 12946, 12947, 12948,
  4109. 12949, 12950, 12951, 12952, 12953, 12954, 12955, 12956, 12957, 12958, 12959, 12960, 12961, 12962,
  4110. 12963, 12964, 12965, 12966, 12967, 12968, 12969, 12970, 12971, 12972, 12973, 12974, 12975, 12976,
  4111. 12977, 12978, 12979, 12980, 12981, 12982, 12983, 12984, 12985, 12986, 12987, 12988, 12989, 12990,
  4112. 12991, 12992, 12993, 12994, 12995, 12996, 12997, 12998, 12999, 13000, 13001, 13002, 13003, 13004,
  4113. 13005, 13006, 13007, 13008, 13009, 13010, 13011, 13012, 13013, 13014, 13015, 13016, 13017, 13018,
  4114. 13019, 13020, 13021, 13022, 13023, 13024, 13025, 13027, 13028, 13030, 13033, 13034, 13035, 13036,
  4115. 13038, 13039, 13040, 13041, 13042, 13043, 13044, 13045, 13049, 13050, 13051, 13058, 13059, 13060,
  4116. 13061, 13065, 13066, 13070, 13071, 13072, 13077, 13078, 13081, 13082, 13083, 13084, 13088, 13092,
  4117. 13095, 13096, 13097, 13098, 13099, 13100, 13101, 13102, 13103, 13104, 13105, 13106, 13107, 13109,
  4118. 13118, 13119, 13120, 13121, 13122, 13123, 13124, 13125, 13126, 13127, 13128, 13129, 13131, 13132,
  4119. 13134, 13135, 13136, 13137, 13138, 13139, 13140, 13141, 13142, 13143, 13144, 13145, 13146, 13147,
  4120. 13148, 13149, 13150, 13153, 13156, 13157, 13158, 13163, 13165, 13167, 13168, 13169, 13170, 13171,
  4121. 13172, 13173, 13174, 13175, 13176, 13177, 13178, 13179, 13180, 13181, 13187, 13188, 13190, 13198,
  4122. 13205, 13206, 13207, 13208, 13209, 13210, 13211, 13212, 13213, 13214, 13235, 13236, 13237, 13295,
  4123. 13296, 13297, 13312, 13321, 13323, 13324, 13325, 13332, 13336, 13342, 13345, 13347, 13348, 13349,
  4124. 13360, 13361, 13363, 13364, 13367, 13368, 13369, 13370, 13371, 13374, 13375, 13422, 13435, 13436,
  4125. 13437, 13438, 13439, 13440, 13441, 13442, 13443, 13444, 13445, 13447, 13448, 13449, 13450, 13451,
  4126. 13452, 13461, 13470, 13484, 13485, 13486, 13489, 13490, 13491, 13493, 13494, 13495, 13496, 13497,
  4127. 13498, 13499, 13500, 13501, 13502, 13503, 13504, 13505, 13506, 13507, 13508, 13509, 13510, 13511,
  4128. 13512, 13513, 13514, 13515, 13516, 13517, 13518, 13519, 13520, 13521, 13522, 13523, 13524, 13525,
  4129. 13526, 13527, 13528, 13529, 13530, 13531, 13532, 13533, 13534, 13535, 13536, 13537, 13538, 13539,
  4130. 13540, 13541, 13542, 13543, 13544, 13545, 13546, 13547, 13548, 13549, 13550, 13551, 13552, 13553,
  4131. 13554, 13555, 13556, 13557, 13558, 13559, 13560, 13561, 13562, 13563, 13590, 13591, 13592, 13593,
  4132. 13594, 13595, 13596, 13597, 13598, 13599, 13600, 13601, 13602, 13603, 13604, 13605, 13606, 13607,
  4133. 13608, 13609, 13610, 13611, 13612, 13613, 13614, 13615, 13616, 13617, 13618, 13619, 13620, 13621,
  4134. 13622, 13623, 13624, 13625, 13626, 13627, 13628, 13629, 13630, 13631, 13632, 13633, 13634, 13635,
  4135. 13636, 13637, 13638, 13639, 13640, 13641, 13642, 13643, 13644, 13645, 13646, 13647, 13648, 13649,
  4136. 13650, 13651, 13652, 13653, 13654, 13655, 13656, 13657, 13658, 13659, 13660, 13661, 13662, 13663,
  4137. 13664, 13665, 13666, 13667, 13672, 13673, 13674, 13675, 13676, 13677, 13678, 13679, 13680, 13681,
  4138. 13682, 13683, 13684, 13685, 13686, 13687, 13688, 13689, 13690, 13691, 13692, 13693, 13694, 13695,
  4139. 13696, 13697, 13698, 13699, 13700, 13701, 13702, 13703, 13704, 13705, 13706, 13707, 13708, 13709,
  4140. 13710, 13711, 13712, 13713, 13714, 13715, 13716, 13717, 13718, 13719, 13720, 13721, 13722, 13723,
  4141. 13724, 13725, 13726, 13727, 13728, 13729, 13730, 13731, 13732, 13733, 13734, 13735, 13736, 13737,
  4142. 13738, 13739, 13740, 13741, 13742, 13743, 13744, 13746, 13747, 13748, 13749, 13751, 13752, 13753,
  4143. 13754, 13755, 13756, 13757, 13758, 13761, 13784, 13789, 13795, 13801, 13802, 13804, 13805, 13806,
  4144. 13809, 13810, 13813, 13814, 13816, 13817, 13818, 13820, 13821, 13823, 13824, 13825, 13826, 13831,
  4145. 13845, 13861, 13862, 13863, 13864, 13865, 13871, 13872, 13882, 13887, 13890, 14383, 14384, 14385,
  4146. 14386, 14387, 14388, 14389, 14390, 14391, 14392, 14393, 14394, 14395, 14396, 14397, 14398, 14399,
  4147. 14400, 14401, 14402, 14403, 14404, 14405, 14406, 14407, 14408, 14409, 14410, 14411, 14412, 14413,
  4148. 14414, 14415, 14416, 14417, 14418, 14419, 14420, 14421, 14422, 14423, 14424, 14425, 14426, 14427,
  4149. 14428, 14429, 14430, 14431, 14432, 14433, 14434, 14435, 14436, 14437, 14438, 14439, 14440, 14441,
  4150. 14442, 14443, 14444, 14445, 14446, 14447, 14448, 14449, 14450, 14451, 14452, 14453, 14454, 14455,
  4151. 14456, 14457, 14458, 14459, 14460, 14461, 14462, 14463, 14464, 14465, 14466, 14467, 14468, 14469,
  4152. 14470, 14471, 14472, 14473, 14474, 14475, 14476, 14477, 14478, 14479, 14480, 14481, 14482, 14483,
  4153. 14484, 14485, 14486, 14487, 14488, 14489, 14490, 14491, 14492, 14493, 14494, 14495, 14496, 14497,
  4154. 14498, 14499, 14500, 14501, 14502, 14503, 14504, 14505, 14506, 14507, 14508, 14509, 14510, 14511,
  4155. 14512, 14513, 14514, 14515, 14516, 14517, 14518, 14519, 14520, 14521, 14522, 14523, 14524, 14525,
  4156. 14526, 14527, 14528, 14530, 14531, 14532, 14533, 14534, 14535, 14536, 14537, 14538, 14539, 14540,
  4157. 14541, 14542, 14543, 14544, 14545, 14546, 14547, 14548, 14549, 14550, 14551, 14552, 14553, 14554,
  4158. 14556, 14558, 14559, 14560, 14561, 14562, 14563, 14564, 14565, 14566, 14567, 14568, 14569, 14570,
  4159. 14571, 14572, 14573, 14574, 14575, 14576, 14577, 14578, 14579, 14580, 14581, 14582, 14583, 14584,
  4160. 14585, 14586, 14587, 14588, 14589, 14590, 14591, 14592, 14593, 14594, 14595, 14596, 14597, 14598,
  4161. 14599, 14600, 14601, 14602, 14603, 14604, 14605, 14606, 14607, 14608, 14609, 14610, 14611, 14612,
  4162. 14613, 14614, 14615, 14616, 14617, 14618, 14619, 14620, 14621, 14622, 14623, 14624, 14625, 14626,
  4163. 14627, 14628, 14629, 14630, 14631, 14632, 14633, 14634, 14635, 14636, 14637, 14638, 14639, 14640,
  4164. 14641, 14642, 14643, 14650, 14651, 14652, 14653, 14654, 14655, 14656, 14657, 14660, 14661, 14662,
  4165. 14663, 14664, 14665, 14666, 14667, 14668, 14669, 14670, 14671, 14672, 14673, 14674, 14675, 14676,
  4166. 14677, 14678, 14679, 14680, 14681, 14682, 14683, 14684, 14685, 14686, 14687, 14688, 14689, 14690,
  4167. 14691, 14692, 14693, 14694, 14695, 14699, 14700, 14701, 14702, 14703, 14704, 14705, 14706, 14707,
  4168. 14708, 14709, 14710, 14711, 14712, 14713, 14714, 14715, 14716, 14717, 14718, 14719, 14720, 14721,
  4169. 14722, 14723, 14724, 14725, 14726, 14727, 14728, 14735, 14736, 14737, 14738, 14739, 14740, 14741,
  4170. 14742, 14743, 14744, 14745, 14746, 14747, 14748, 14749, 14750, 14751, 14752, 14753, 14754, 14755,
  4171. 14756, 14757, 14758, 14759, 14760, 14761, 14762, 14763, 14764, 14765, 14770, 14771, 14772, 14773,
  4172. 14774, 14775, 14776, 14777, 14778, 14779, 14780, 14781, 14782, 14783, 14784, 14785, 14786, 14787,
  4173. 14788, 14789, 14790, 14791, 14792, 14793, 14794, 14795, 14796, 14797, 14798, 14799, 14800, 14801,
  4174. 14802, 14803, 14804, 14805, 14806, 14807, 14808, 14809, 14810, 14811, 14812, 14813, 14814, 14815,
  4175. 14816, 14817, 14818, 14819, 14820, 14821, 14822, 14823, 14824, 14825, 14826, 14827, 14828, 14829,
  4176. 14830, 14831, 14832, 14833, 14834, 14835, 14836, 14837, 14838, 14839, 14840, 14841, 14842, 14843,
  4177. 14844, 14845, 14846, 14847, 14848, 14849, 14850, 14851, 14852, 14853, 14854, 14855, 14856, 14858,
  4178. 14859, 14860, 14861, 14862, 14863, 14864, 14865, 14866, 14867, 14868, 14869, 14870, 14871, 14872,
  4179. 14873, 14874, 14875, 14876, 14877, 14878, 14879, 14880, 14881, 14882, 14883, 14885, 14886, 14887,
  4180. 14888, 14889, 14890, 14891, 14892, 14893, 14894, 14895, 14896, 14897, 14898, 14900, 14901, 14902,
  4181. 14903, 15025, 15026, 15027, 15028, 15029, 15030, 15031, 15032, 15033, 15034, 15035, 15036, 15037,
  4182. 15038, 15039, 15040, 15041, 15042, 15043, 15044, 15045, 15046, 15047, 15048, 15049, 15050, 15051,
  4183. 15052, 15053, 15054, 15055, 15056, 15057, 15058, 15059, 15060, 15061, 15062, 15063, 15064, 16000,
  4184. 16001, 16002, 16003, 16004, 16005, 16006, 16007, 16008, 16009, 16010, 16011, 16012, 16013, 16014,
  4185. 16015, 16016, 16017, 16018, 16019, 16020, 16021, 16022, 16023, 16024, 16025, 16026, 16027, 16028,
  4186. 16029, 16030, 16031, 16032, 16033, 16034, 16035, 16036, 16037, 16038, 16039, 16040, 16041, 16042,
  4187. 16043, 16044, 16045, 16046, 16047, 16048, 16049, 16050, 16051, 16052, 16053, 16054, 16055, 16056,
  4188. 16057, 16058, 16059, 16060, 16061, 16062, 16063, 16064, 16065, 16066, 16067, 16068, 16069, 16070,
  4189. 16071, 16072, 16073, 16074, 16075, 16076, 16077, 16078, 16079, 16080, 16081, 16082, 16083, 16084,
  4190. 16085, 16086, 16087, 16088, 16089, 16090, 16091, 16092, 16093, 16094, 16095, 16096, 16097, 16098,
  4191. 16099, 16100, 16101, 16102, 16103, 16104, 16105, 16106, 16107, 16108, 16109, 16110, 16111, 16112,
  4192. 16113, 16114, 16115, 16116, 16117, 16118, 16119, 16120, 16121, 16122, 16123, 16124, 16125, 16126,
  4193. 16127, 16128, 16129, 16130, 16131, 16132, 16133, 16134, 16135, 16136, 16137, 16138, 16139, 16140,
  4194. 16141, 16142, 16143, 16144, 16145, 16146, 16147, 16148, 16149, 16150, 16151, 16152, 16153, 16154,
  4195. 16155, 16156, 16157, 16158, 16159, 16160, 16161, 16162, 16163, 16164, 16165, 16166, 16167, 16168,
  4196. 16169, 16170, 16171, 16172, 16173, 16174, 16175, 16176, 16177, 16178, 16179, 16180, 16181, 16182,
  4197. 16183, 16184, 16185, 16186, 16187, 16188, 16189, 16190, 16191, 16192, 16193, 16194, 16195, 16196,
  4198. 16197, 16198, 16199, 16200, 16201, 16202, 16203, 16204, 16205, 16206, 16207, 16208, 16209, 16210,
  4199. 16211, 16212, 16213, 16214, 16215, 16216, 16217, 16218, 16219, 16220, 16221, 16222, 16223, 16224,
  4200. 16225, 16226, 16227, 16228, 16229, 16230, 16231, 16232, 16233, 16234, 16235, 16236, 16237, 16238,
  4201. 16239, 16240, 16241, 16242, 16243, 16244, 16245, 16246, 16247, 16248, 16249, 16250, 16251, 16252,
  4202. 16253, 16254, 16255, 16256, 16257, 16258, 16259, 16260, 16261, 16262, 16263, 16264, 16265, 16266,
  4203. 16267, 16268, 16269, 16270, 16271, 16272, 16273, 16274, 16275, 16276, 16277, 16278, 16279, 16280,
  4204. 16281, 16282, 16283, 16284, 16285, 16286, 16287, 16288, 16289, 16290, 16291, 16292, 16293, 16294,
  4205. 16295, 16296, 16297, 16298, 16299, 16300, 16301, 16302, 16303, 16304, 16305, 16306, 16307, 16308,
  4206. 16309, 16310, 16311, 16312, 16313, 16314, 16315, 16316, 16317, 16318, 16319, 16320, 16321, 16322,
  4207. 16323, 16324, 16325, 16326, 16327, 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335, 16337,
  4208. 16338, 16339, 16340, 16341, 16342, 16343, 16344, 16345, 16346, 16347, 16348, 16349, 16350, 16351,
  4209. 16352, 16353, 16354, 16355, 16356, 16357, 16358, 16359, 16360, 16361, 16362, 16363, 16364, 16365,
  4210. 16366, 16367, 16368, 16369, 16370, 16371, 16372, 16373, 16374, 16375, 16376, 16377, 16378, 16384,
  4211. 16385, 16386, 16387, 16388, 16389, 16390, 16391, 16392, 16393, 16394, 16395, 16396, 16397, 16398,
  4212. 16399, 16400, 16401, 16402, 16403, 16404, 16405, 16406, 16407, 16408, 16409, 16410, 16411, 16420,
  4213. 16421, 16422, 16423, 16424, 16430, 16434, 16436, 16437, 16438, 16439, 16442, 16444, 16445, 16446,
  4214. 16448, 16475, 16477, 16479, 16480, 16481, 16498, 16500, 16501, 16502, 16503, 16530, 16531, 16532,
  4215. 16533, 16534, 16535, 16562, 16563, 16564, 16568, 16571, 16593, 16599, 16601, 16605, 16610, 16613,
  4216. 16622, 16623, 16627, 16628, 16629, 16630, 16631, 16632, 16633, 16634, 16635, 16636, 16637, 16638,
  4217. 16639, 16640, 16641, 16642, 16643, 16644, 16645, 16646, 16647, 16648, 16649, 16650, 16651, 16652,
  4218. 16653, 16654, 16655, 16656, 16657, 16658, 16659, 16660, 16661, 16662, 16663, 16664, 16665, 16666,
  4219. 16667, 16668, 16669, 16670, 16671, 16673, 16675, 16676, 16677, 16678, 16681, 16682, 16683, 16684,
  4220. 16685, 16689, 16690, 16692, 16693, 16694, 16700, 16701, 16702, 16705, 16706, 16707, 16708, 16731,
  4221. 16732, 16733, 16734, 16735, 16736, 16737, 16738, 16739, 16740, 16741, 16742, 16743, 16744, 16745,
  4222. 16746, 16747, 16753, 16754, 16756, 16757, 16758, 16759, 16760, 16766, 16767, 16769, 16770, 16771,
  4223. 16773, 16774, 16775, 16776, 16777, 16778, 16779, 16780, 16781, 16782, 16783, 16784, 16785, 16786,
  4224. 16787, 16788, 16789, 16790, 17000, 17001, 17002, 17003, 17004, 17005, 17006, 17007, 17008, 17009,
  4225. 17010, 17011, 17012, 17013, 17014, 17015, 17016, 17017, 17018, 17019, 17020, 17021, 17022, 17023,
  4226. 17024, 17025, 17026, 17027, 17028, 17029, 17030, 17031, 17032, 17033, 17034, 17035, 17036, 17037,
  4227. 17038, 17039, 17040, 17041, 17042, 17043, 17044, 17045, 17046, 17047, 17048, 17049, 17050, 17051,
  4228. 17052, 17053, 17054, 17055, 17056, 17057, 17058, 17059, 17060, 17061, 17062, 17063, 17064, 17065,
  4229. 17066, 17067, 17068, 17069, 17070, 17071, 17072, 17073, 17074, 17075, 17076, 17077, 17078, 17079,
  4230. 17080, 17081, 17082, 17083, 17084, 17085, 17086, 17087, 17088, 17089, 17090, 17091, 17092, 17093,
  4231. 17094, 17095, 17096, 17097, 17098, 17099, 17100, 17101, 17102, 17103, 17104, 17105, 17106, 17107,
  4232. 17108, 17109, 17110, 17111, 17112, 17113, 17114, 17115, 17116, 17117, 17118, 17119, 17120, 17121,
  4233. 17122, 17123, 17124, 17125, 17126, 17127, 17128, 17129, 17130, 17131, 17132, 17133, 17134, 17135,
  4234. 17136, 17137, 17138, 17139, 17140, 17141, 17142, 17143, 17144, 17145, 17146, 17148, 17150, 17152,
  4235. 17154, 17156, 17158, 17160, 17162, 17164, 17166, 17168, 17170, 17172, 17174, 17176, 17178, 17180,
  4236. 17182, 17184, 17186, 17188, 17190, 17192, 17194, 17196, 17198, 17200, 17202, 17204, 17208, 17210,
  4237. 17212, 17214, 17216, 17218, 17220, 17222, 17224, 17226, 17228, 17230, 17232, 17234, 17236, 17238,
  4238. 17240, 17242, 17244, 17246, 17248, 17250, 17252, 17254, 17256, 17258, 17260, 17262, 17267, 17269,
  4239. 17271, 17273, 17275, 17277, 17279, 17281, 17283, 17284, 17285, 17286, 17287, 17288, 17289, 17290,
  4240. 17291, 17292, 17293, 17294, 17295, 17296, 17297, 17298, 17299, 17300, 17301, 17302, 17303, 17305,
  4241. 17307, 17308, 17309, 17310, 17323, 17324, 17326, 17327, 17329, 17331, 17333, 17334, 17335, 17426,
  4242. 17427, 17428, 17429, 17430, 17431, 17432, 17433, 17434, 17436, 17437, 17438, 17439, 17440, 17441,
  4243. 17442, 17443, 17444, 17448, 17450, 17451, 17452, 17453, 17454, 17455, 17456, 17457, 17458, 17459,
  4244. 17460, 17461, 17462, 17463, 17464, 17465, 17466, 17467, 17468, 17469, 17470, 17471, 17472, 17474,
  4245. 17500, 17501, 17502, 17503, 17504, 17505, 17506, 17507, 17508, 17509, 17510, 17511, 17513, 17514,
  4246. 17515, 17516, 17517, 17518, 17519, 17520, 17521, 17522, 17523, 17524, 17525, 17526, 17527, 17528,
  4247. 17529, 17530, 17531, 17532, 17533, 17534, 17535, 17536, 17537, 17538, 17539, 17540, 17541, 17542,
  4248. 17543, 17544, 17545, 17546, 17547, 17548, 17549, 17550, 17551, 17552, 17553, 17554, 17555, 17556,
  4249. 17557, 17558, 17559, 17560, 17561, 17562, 17563, 17564, 17565, 17566, 17567, 17568, 17573, 17574,
  4250. 17575, 17576, 17577, 17578, 17579, 17582, 17583, 17585, 17586, 17588, 17589, 17591, 17592, 17594,
  4251. 17595, 17596, 17597, 17598, 17599, 17600, 17601, 17602, 17603, 17604, 17605, 17606, 17607, 17608,
  4252. 17609, 17610, 17611, 17612, 17613, 17614, 17615, 17616, 17617, 17618, 17619, 17620, 17621, 17622,
  4253. 17623, 17624, 17625, 17626, 17627, 17628, 17629, 17630, 17631, 17632, 17633, 17634, 17635, 17636,
  4254. 17637, 17638, 17639, 17640, 17641, 17642, 17643, 17644, 17645, 17646, 17647, 17648, 17649, 17650,
  4255. 17651, 17652, 17653, 17654, 17655, 17656, 17657, 17658, 17659, 17660, 17661, 17662, 17663, 17664,
  4256. 17665, 17666, 17667, 17668, 17669, 17670, 17671, 17672, 17673, 17674, 17675, 17676, 17677, 17678,
  4257. 17679, 17680, 17681, 17682, 17683, 17684, 17685, 17686, 17687, 17688, 17689, 17690, 17691, 17692,
  4258. 17693, 17694, 17695, 17696, 17697, 17698, 17699, 17700, 17804, 17805, 17807, 17809, 17829, 17841,
  4259. 17848, 17849, 17851, 17852, 17853, 17854, 17859, 17860, 17862, 17863, 17864, 17865, 17866, 17867,
  4260. 17872, 17874, 17875, 17876, 17877, 17878, 17879, 17880, 17881, 17886, 17887, 17888, 17891, 17892,
  4261. 17893, 17894, 17897, 17898, 17899, 17901, 17902, 17904, 17905, 17906, 17907, 17911, 17912, 17913,
  4262. 17915, 17916, 17917, 17918, 17919, 17920, 17921, 17922, 17925, 17926, 17927, 17928, 17933, 17934,
  4263. 17936, 17937, 17938, 17939, 17940, 17941, 17942, 17943, 17944, 17946, 17947, 17950, 17951, 17953,
  4264. 17954, 17955, 17956, 17957, 17958, 17968, 17969, 17971, 17972, 17973, 17974, 17976, 17978, 18000,
  4265. 18001, 18002, 18003, 18004, 18005, 18006, 18007, 18008, 18009, 18010, 18011, 18012, 18013, 18014,
  4266. 18015, 18016, 18017, 18018, 18019, 18020, 18021, 18022, 18023, 18024, 18025, 18026, 18027, 18028,
  4267. 18029, 18030, 18031, 18032, 18033, 18034, 18035, 18036, 18038, 18039, 18040, 18041, 18042, 18043,
  4268. 18044, 18045, 18046, 18047, 18048, 18049, 18050, 18051, 18052, 18053, 18054, 18055, 18056, 18057,
  4269. 18058, 18059, 18060, 18061, 18062, 18063, 18064, 18065, 18066, 18067, 18068, 18069, 18070, 18071,
  4270. 18072, 18073, 18074, 18075, 18076, 18077, 18078, 18079, 18080, 18081, 18082, 18083, 18084, 18085,
  4271. 18086, 18087, 18088, 18089, 18090, 18091, 18092, 18093, 18094, 18095, 18096, 18097, 18098, 18099,
  4272. 18100, 18101, 18102, 18104, 18105, 18109, 18112, 18200, 18201, 18202, 18203, 18204, 18205, 18206,
  4273. 18207, 18208, 18209, 18210, 18211, 18212, 18213, 18214, 18215, 18216, 18217, 18218, 18219, 18220,
  4274. 18221, 18222, 18223, 18224, 18225, 18226, 18227, 18228, 18229, 18230, 18231, 18232, 18233, 18234,
  4275. 18235, 18236, 18237, 18238, 18239, 18240, 18241, 18242, 18243, 18244, 18245, 18246, 18247, 18248,
  4276. 18249, 18250, 18251, 18252, 18253, 18254, 18255, 18256, 18257, 18258, 18259, 18260, 18261, 18262,
  4277. 18263, 18264, 18265, 18266, 18267, 18268, 18269, 18270, 18271, 18272, 18273, 18274, 18275, 18276,
  4278. 18277, 18278, 18279, 18280, 18281, 18282, 18283, 18284, 18285, 18286, 18287, 18288, 18289, 18290,
  4279. 18291, 18292, 18293, 18294, 18295, 18296, 18297, 18298, 18299, 18300, 18301, 18302, 18303, 18304,
  4280. 18305, 18306, 18307, 18308, 18309, 18310, 18311, 18312, 18313, 18314, 18315, 18316, 18317, 18318,
  4281. 18319, 18320, 18321, 18322, 18323, 18324, 18325, 18326, 18327, 18328, 18329, 18330, 18331, 18332,
  4282. 18333, 18334, 18335, 18336, 18337, 18338, 18339, 18340, 18341, 18342, 18343, 18344, 18345, 18346,
  4283. 18347, 18348, 18349, 18350, 18351, 18352, 18353, 18354, 18355, 18356, 18357, 18358, 18359, 18360,
  4284. 18361, 18362, 18363, 18364, 18365, 18366, 18367, 18368, 18369, 18370, 18371, 18372, 18373, 18374,
  4285. 18375, 18376, 18377, 18378, 18379, 18380, 18381, 18382, 18383, 18384, 18385, 18386, 18387, 18388,
  4286. 18389, 18390, 18391, 18392, 18393, 18394, 18432, 18433, 18434, 18435, 18436, 18437, 18438, 18439,
  4287. 18440, 18441, 18442, 18443, 18444, 18445, 18446, 18447, 18448, 18449, 18450, 18451, 18452, 18453,
  4288. 18454, 18455, 18456, 18457, 18458, 18459, 18460, 18461, 18462, 18463, 18464, 18465, 18466, 18467,
  4289. 18468, 18469, 18470, 18471, 18472, 18473, 18474, 18475, 18476, 18477, 18478, 18479, 18480, 18481,
  4290. 18482, 18483, 18484, 18485, 18496, 18518, 18551, 18552, 18553, 18561, 18563, 18565, 18566, 18567,
  4291. 18568, 18569, 18608, 18609, 18610, 18611, 18612, 18613, 18614, 18615, 18616, 18617, 18618, 18619,
  4292. 18620, 18621, 18622, 18623, 18624, 18625, 18626, 18627, 18628, 18629, 18630, 10047, 10048, 10049,
  4293. 10050, 10051, 10052, 10053, 10054, 10055, 10056, 10057, 10058, 10059, 10060, 10061, 10062, 10063,
  4294. 10064, 10065, 10066, 10067, 10068, 10069, 10070, 10071, 10072, 10073, 10074, 10075, 10076, 10077,
  4295. 10078, 10079, 10080, 10081, 10082, 10083, 10084, 10085, 10086, 10087, 10088, 10089, 10090, 10091,
  4296. 10092, 10093, 10094, 10095, 10096, 10097, 10098, 10099, 10100, 10101, 10102, 10103, 10104, 10105,
  4297. 10106, 10107, 10108, 10109, 10110, 10111, 10112, 10113, 10114, 10115, 10116, 10117, 10118, 10119,
  4298. 10120, 10121, 10122, 10123, 10124, 10125, 10126, 10127, 10128, 10129, 10130, 10131, 10132, 10133,
  4299. 10134, 10135, 10136, 10137, 10138, 10139, 10140, 10141, 10142, 10143, 10144, 10145, 10146, 10147,
  4300. 10148, 10149, 10150, 10151, 10152, 10153, 10154, 10155, 10156, 10157, 10158, 10159, 10160, 10161,
  4301. 10162, 10163, 10164, 10165, 10166, 10167, 10168, 10169, 10170, 10171, 10172, 10173, 10174, 10175,
  4302. 10176, 10177, 10178, 10179, 10180, 10181, 10182, 10183, 10184, 10185, 10186, 10187, 10188, 10189,
  4303. 10190, 10191, 10192, 10193, 10194, 10195, 10196, 10197, 10198, 10199, 10200, 10201, 10202, 10203,
  4304. 10204, 10205, 10206, 10207, 10208, 10209, 10210, 10211, 10212, 10213, 10214, 10215, 10216, 10217,
  4305. 10218, 10219, 10220, 10221, 10222, 10223, 10224, 10225, 10226, 10227, 10228, 10229, 10230, 10231,
  4306. 10232, 10233, 10234, 10235, 10236, 10237, 10238, 10239, 10240, 10241, 10242, 10243, 10244, 10245,
  4307. 10246, 10247, 10248, 10249, 10250, 10251, 10252, 10253, 10254, 10255, 10256, 10257, 10258, 10259,
  4308. 10260, 10261, 10262, 10263, 10264, 10265, 10266, 10267, 10268, 10269, 10270, 10271, 10272, 10273,
  4309. 10274, 10275, 10276, 10277, 10278, 10279, 10280, 10281, 10282, 10283, 10284, 10285, 10286, 10287,
  4310. 10288, 10289, 10290, 10291, 10292, 10293, 10294, 10295, 10296, 10297, 10298, 10299, 10300, 10301,
  4311. 10302, 10303, 10304, 10305, 10306, 10307, 10308, 10309, 10310, 10311, 10312, 10313, 10314, 10315,
  4312. 10316, 10317, 10318, 10319, 10320, 10321, 10322, 10323, 10324, 10325, 10326, 10327, 10328, 10329,
  4313. 10330, 10331, 10332, 10333, 10334, 10335, 10336, 10337, 10338, 10339, 10340, 10341, 10342, 10343,
  4314. 10344, 10345, 10346, 10347, 10348, 10349, 10350, 10351, 10352, 10353, 10354, 10355, 10356, 10357,
  4315. 10358, 10359, 10360, 10361, 10362, 10363, 10364, 10365, 10366, 10367, 10368, 10369, 10370, 10371,
  4316. 10372, 10373, 10374, 10375, 10376, 10377, 10378, 10379, 10380, 10381, 10382, 10383, 10384, 10385,
  4317. 10386, 10387, 10388, 10389, 10390, 10391, 10392, 10393, 10394, 10395, 10396, 10397, 10398, 10399,
  4318. 10400, 10401, 10402, 10403, 10404, 10405, 10406, 10407, 10408, 10409, 10410, 10411, 10412, 10413,
  4319. 10414, 10415, 10416, 10417, 10418, 10419, 10420, 10421, 10422, 10423, 10424, 10425, 10426, 10427,
  4320. 10428, 10429, 10430, 10431, 10432, 10433, 10434, 10435, 10436, 10437, 10438, 10439, 10440, 10441,
  4321. 10442, 10443, 10444, 10445, 10446, 10447, 10448, 10449, 10450, 10451, 10452, 10453, 10454, 10455,
  4322. 10456, 10457, 10458, 10459, 10460, 10461, 10462, 10463, 10464, 10465, 10466, 10467, 10468, 10469,
  4323. 10470, 10471, 10472, 10473, 10474, 10475, 10476, 10477, 10478, 10479, 10480, 10481, 10482, 10483,
  4324. 10484, 10485, 10486, 10487, 10488, 10489, 10490, 10491, 10492, 10493, 10494, 10495, 10496, 10497,
  4325. 10498, 10499, 10500, 10501, 10502, 10503, 10504, 10505, 10506, 10507, 10508, 10509, 10510, 10511,
  4326. 10512, 10513, 10514, 10515, 10516, 10517, 10518, 10519, 10520, 10521, 10522, 10523, 10524, 10525,
  4327. 10526, 10527, 10528, 10529, 10530, 10531, 10532, 10533, 10534, 10535, 10536, 10537, 10538, 10539,
  4328. 10540, 10541, 10542, 10543, 10544, 10545, 10546, 10547, 10548, 10549, 10550, 10551, 10552, 10553,
  4329. 10554, 10555, 10556, 10557, 10558, 10559, 10560, 10561, 10562, 10563, 10564, 10565, 10566, 10567,
  4330. 10568, 10569, 10570, 10571, 10572, 10573, 10574, 10575, 10576, 10577, 10578, 10579, 10580, 10581,
  4331. 10582, 10583, 10584, 10585, 10586, 10587, 10588, 10589, 10590, 10591, 10592, 10593, 10594, 10595,
  4332. 10596, 10597, 10598, 10599, 10600, 10601, 10602, 10603, 10604, 10605, 10606, 10607, 10608, 10609,
  4333. 10610, 10611, 10612, 10613, 10614, 10615, 10616, 10617, 10618, 10619, 10620, 10621, 10622, 10623,
  4334. 10624, 10625, 10626, 10627, 10628, 10629, 10630, 10631, 10632, 10633, 10634, 10635, 10636, 10637,
  4335. 10638, 10639, 10640, 10641, 10642, 10643, 10644, 10645, 10646, 10647, 10648, 10649, 10650, 10651,
  4336. 10652, 10653, 10654, 10655, 10656, 10657, 10658, 10659, 10660, 10661, 10662, 10663, 10664, 10665,
  4337. 10666, 10667, 10668, 10669, 10670, 10671, 10672, 10673, 10674, 10675, 10676, 10677, 10678, 10679,
  4338. 10680, 10681, 10682, 10683, 10684, 10685, 10686, 10687, 10688, 10689, 10690, 10691, 10692, 10693,
  4339. 10694, 10695, 10696, 10697, 10698, 10699, 10700, 10701, 10702, 10703, 10704, 10705, 10706, 10707,
  4340. 10708, 10709, 10710, 10711, 10712, 10713, 10714, 10715, 10716, 10717, 10718, 10719, 10720, 10721,
  4341. 10722, 10723, 10724, 10725, 10726, 10727, 10728, 10729, 10730, 10731, 10732, 10733, 10734, 10735,
  4342. 10736, 10737, 10738, 10739, 10740, 10741, 10742, 10743, 10744, 10745, 10746, 10747, 10748, 10749,
  4343. 10750, 10751, 10752, 10753, 10754, 10755, 10756, 10757, 10758, 10759, 10760, 10761, 10762, 10763,
  4344. 10764, 10765, 10766, 10767, 10768, 10769, 10770, 10771, 10772, 10773, 10774, 10775, 10776, 10777,
  4345. 10778, 10779, 10780, 10781, 10782, 10783, 10784, 10785, 10786, 10787, 10788, 10789, 10790, 10791,
  4346. 10792, 10793, 10794, 10795, 10796, 10797, 10798, 10799, 10800, 10801, 10802, 10803, 10804, 10805,
  4347. 10806, 10807, 10808, 10809, 10810, 10811, 10812, 10813, 10814, 10815, 10816, 10817, 10818, 10819,
  4348. 10820, 10821, 10822, 10823, 10824, 10825, 10826, 10827, 10828, 10829, 10830, 10831, 10832, 10833,
  4349. 10834, 10835, 10836, 10837, 10838, 10839, 10840, 10841, 10842, 10843, 10844, 10845, 10846, 10847,
  4350. 10848, 10849, 10850, 10851, 10852, 10853, 10854, 10855, 10856, 10857, 10858, 10859, 10860, 10861,
  4351. 10862, 10863, 10864, 10865, 10866, 10867, 10868, 10869, 10870, 10871, 10872, 10873, 10874, 10875,
  4352. 10876, 10877, 10878, 10879, 10880, 10881, 10882, 10883, 10884, 10885, 10886, 10887, 10888, 10889,
  4353. 10890, 10891, 10892, 10893, 10894, 10895, 10896, 10897, 10898, 10899, 10900, 10901, 10902, 10903,
  4354. 10904, 10905, 10906, 10907, 10908, 10909, 10910, 10911, 10912, 10913, 10914, 10915, 10916, 10917,
  4355. 10918, 10919, 10920, 10921, 10922, 10923, 10924, 10925, 10926, 10927, 10928, 10929, 10930, 10931,
  4356. 10932, 10933, 10934, 10935, 10936, 10937, 10938, 10939, 10940, 10941, 10942, 10943, 10944, 10945,
  4357. 10946, 10947, 10948, 10949, 10950, 10951, 10952, 10953, 10954, 10955, 10956, 10957, 10958, 10959,
  4358. 10960, 10961, 10962, 10963, 10964, 10965, 10966, 10967, 10968, 10969, 10970, 10971, 10972, 10973,
  4359. 10974, 10975, 10976, 10977, 10978, 10979, 10980, 10981, 10982, 10983, 10984, 10985, 10986, 10987,
  4360. 10988, 10989, 10990, 10991, 10992, 10993, 10994, 10995, 10996, 10997, 10998, 10999, 11000, 11001,
  4361. 11002, 11003, 11004, 11005, 11006, 11007, 11008, 11009, 11010, 11011, 11012, 11013, 11014, 11015,
  4362. 11016, 11017, 11018, 11019, 11020, 11021, 11022, 11023, 11024, 11025, 11026, 11027, 11028, 11029,
  4363. 11030, 11031, 11032, 11033, 11034, 11035, 11036, 11037, 11038, 11039, 11040, 11041, 11042, 11043,
  4364. 11044, 11045, 11046, 11047, 11048, 11049, 11050, 11051, 11052, 11053, 11054, 11055, 11056, 11057,
  4365. 11058, 11059, 11060, 11061, 11062, 11063, 11064, 11065, 11066, 11067, 11068, 11069, 11070, 11071,
  4366. 11072, 11073, 11074, 11075, 11076, 11077, 11078, 11079, 11080, 11081, 11082, 11083, 11084, 11085,
  4367. 11086, 11087, 11088, 11089, 11090, 11091, 11092, 11093, 11094, 11095, 11096, 11097, 11098, 11099,
  4368. 11100, 11101, 11102, 11103, 11104, 11105, 11106, 11107, 11108, 11109, 11110, 11111, 11112, 11113,
  4369. 11114, 11115, 11116, 11117, 11118, 11119, 11120, 11121, 11122, 11123, 11124, 11125, 11126, 11127,
  4370. 11128, 11129, 11130, 11131, 11132, 11133, 11134, 11135, 11136, 11137, 11138, 11139, 11140, 11141,
  4371. 11142, 11143, 11144, 11145, 11146, 11147, 11148, 11149, 11150, 11151, 11152, 11153, 11154, 11155,
  4372. 11156, 11157, 11158, 11159, 11160, 11161, 11162, 11163, 11164, 11165, 11166, 11167, 11168, 11169,
  4373. 11170, 11171, 11172, 11173, 11174, 11175, 11176, 11177, 11178, 11179, 11180, 11181, 11182, 11183,
  4374. 11184, 11185, 11186, 11187, 11188, 11189, 11190, 11191, 11192, 11193, 11194, 11195, 11196, 11197,
  4375. 11198, 11199, 11200, 11201, 11202, 11203, 11204, 11205, 11206, 11207, 11208, 11209, 11210, 11211,
  4376. 11212, 11213, 11214, 11215, 11216, 11217, 11218, 11219, 11220, 11221, 11222, 11223, 11224, 11225,
  4377. 11226, 11227, 11228, 11229, 11230, 11231, 11232, 11233, 11234, 11235, 11236, 11237, 11238, 11239,
  4378. 11240, 11241, 11242, 11243, 11244, 11245, 11246, 11247, 11248, 11249, 11250, 11251, 11252, 11253,
  4379. 11254, 11255, 11256, 11257, 11258, 11259, 11260, 11261, 11262, 11263, 11264, 11265, 11266, 11267,
  4380. 11268, 11269, 11270, 11271, 11272, 11273, 11274, 11275, 11276, 11277, 11278, 11279, 11280, 11281,
  4381. 11282, 11283, 11284, 11285, 11286, 11287, 11288, 11289, 11290, 11291, 11292, 11293, 11294, 11295,
  4382. 11296, 11297, 11298, 11299, 11300, 11301, 11302, 11303, 11304, 11305, 11306, 11307, 11308, 11309,
  4383. 11310, 11311, 11312, 11313, 11314, 11315, 11316, 11317, 11318, 11319, 11320, 11321, 11322, 11323,
  4384. 11324, 11325, 11326, 11327, 11328, 11329, 11330, 11331, 11332, 11333, 11334, 11335, 11336, 11337,
  4385. 11338, 11339, 11340, 11341, 11342, 11343, 11344, 11345, 11346, 11347, 11348, 11349, 11350, 11351,
  4386. 11352, 11353, 11354, 11355, 11356, 11357, 11358, 11359, 11360, 11361, 11362, 11363, 11364, 11365,
  4387. 11366, 11367, 11368, 11369, 11370, 11371, 11372, 11373, 11374, 11375, 11376, 11377, 11378, 11379,
  4388. 11380, 11381, 11382, 11383, 11384, 11385, 11386, 11387, 11388, 11389, 11390, 11391, 11392, 11393,
  4389. 11394, 11395, 11396, 11397, 11398, 11399, 11400, 11401, 11402, 11403, 11404, 11405, 11406, 11407,
  4390. 11408, 11409, 11410, 11411, 11412, 11413, 11414, 11415, 11416, 11417, 11418, 11419, 11420, 11421,
  4391. 11422, 11423, 11424, 11425, 11426, 11427, 11428, 11429, 11430, 11431, 11432, 11433, 11434, 11435,
  4392. 11436, 11437, 11438, 11439, 11440, 11441, 11442, 11443, 11444, 11445, 11446, 11447, 11448, 11449,
  4393. 11450, 11451, 11452, 11453, 11454, 11455, 11456, 11457, 11458, 11459, 11460, 11461, 11462, 11463,
  4394. 11464, 11465, 11466, 11467, 11468, 11469, 11470, 11471, 11472, 11473, 11474, 11475, 11476, 11477,
  4395. 11478, 11479, 11480, 11481, 11482, 11483, 11484, 11485, 11486, 11487, 11488, 11489, 11490, 11491,
  4396. 11492, 11493, 11494, 11495, 11496, 11497, 11498, 11499, 11500, 11501, 11502, 11503, 11504, 11505,
  4397. 11506, 11507, 11508, 11509, 11510, 11511, 11512, 11513, 11514, 11515, 11516, 11517, 11518, 11519,
  4398. 11520, 11521, 11522, 11523, 11524, 11525, 11526, 11527, 11528, 11529, 11530, 11531, 11532, 11533,
  4399. 11534, 11535, 11536, 11537, 11538, 11539, 11540, 11541, 11542, 11543, 11544, 11545, 11546, 11547,
  4400. 11548, 11549, 11550, 11551, 11552, 11553, 11554, 11555, 11556, 11557, 11558, 11559, 11560, 11561,
  4401. 11562, 11563, 11564, 11565, 11566, 11567, 11568, 11569, 11570, 11571, 11572, 11573, 11574, 11575,
  4402. 11576, 11577, 11578, 11579, 11580, 11581, 11582, 11583, 11584, 11585, 11586, 11587, 11588, 11589,
  4403. 11590, 11591, 11592, 11593, 11594, 11595, 11596, 11597, 11598, 11599, 11600, 11601, 11602, 11603,
  4404. 11604, 11605, 11606, 11607, 11608, 11609, 11610, 11611, 11612, 11613, 11614, 11615, 11616, 11617,
  4405. 11618, 11619, 11620, 11621, 11622, 11623, 11624, 11625, 11626, 11627, 11628, 11629, 11630, 11631,
  4406. 11632, 11633, 11634, 11635, 11636, 11637, 11638, 11639, 11640, 11641, 11642, 11643, 11644, 11645,
  4407. 11646, 11647, 11648, 11649, 11650, 11651, 11652, 11653, 11654, 11655, 11656, 11657, 11658, 11659,
  4408. 11660, 11661, 11662, 11663, 11664, 11665, 11666, 11667, 11668, 11669, 11670, 11671, 11672, 11673,
  4409. 11674, 11675, 11676, 11677, 11678, 11679, 11680, 11681, 11682, 11683, 11684, 11685, 11686, 11687,
  4410. 11688, 11689, 11690, 11691, 11692, 11693, 11694, 11695, 11696, 11697, 11698, 11699, 11700, 11701,
  4411. 11702, 11703, 11704, 11705, 11706, 11707, 11708, 11709, 11710, 11711, 11712, 11713, 11714, 11715,
  4412. 11716, 11717, 11718, 11719, 11720, 11721, 11722, 11723, 11724, 11725, 11726, 11727, 11728, 11729,
  4413. 11730, 11731, 11732, 11733, 11734, 11735, 11736, 11737, 11738, 11739, 11740, 11741, 11742, 11743,
  4414. 11744, 11745, 11746, 11747, 11748, 11749, 11750, 11751, 11752, 11753, 11754, 11755, 11756, 11757,
  4415. 11758, 11759, 11760, 11761, 11762, 11763, 11764, 11765, 11766, 11767, 11768, 11769, 11770, 11771,
  4416. 11772, 11773, 11774, 11775, 11776, 11777, 11778, 11779, 11780, 11781, 11782, 11783, 11784, 11785,
  4417. 11786, 11787, 11788, 11789, 11790, 11791, 11792, 11793, 11794, 11795, 11796, 11797, 11798, 11799,
  4418. 11800, 11801, 11802, 11803, 11804, 11805, 11806, 11807, 11808, 11809, 11810, 11811, 11812, 11813,
  4419. 11814, 11815, 11816, 11817, 11818, 11819, 11820, 11821, 11822, 11823, 11824, 11825, 11826, 11827,
  4420. 11828, 11829, 11830, 11831, 11832, 11833, 11834, 11835, 11836, 11837, 11838, 11839, 11840, 11841,
  4421. 11842, 11843, 11844, 11845, 11846, 11847, 11848, 11849, 11850, 11851, 11852, 11853, 11854, 11855,
  4422. 11856, 11857, 11858, 11859, 11860, 11861, 11862, 11863, 11864, 11865, 11866, 11867, 11868, 11869,
  4423. 11870, 11871, 11872, 11873, 11874, 11875, 11876, 11877, 11878, 11879, 11880, 11881, 11882, 11883,
  4424. 11884, 11885, 11886, 11887, 11888, 11889, 11890, 11891, 11892, 11893, 11894, 11895, 11896, 11897,
  4425. 11898, 11899, 11900, 11901, 11902, 11903, 11904, 11905, 11906, 11907, 11908, 11909, 11910, 11911,
  4426. 11912, 11913, 11914, 11915, 11916, 11917, 11918, 11919, 11920, 11921, 11922, 11923, 11924, 11925,
  4427. 11926, 11927, 11928, 11929, 11930, 11931, 11932, 11933, 11934, 11935, 11936, 11937, 11938, 11939,
  4428. 11940, 11941, 11942, 11943, 11944, 11945, 11946, 11947, 11948, 11949, 11950, 11951, 11952, 11953,
  4429. 11954, 11955, 11956, 11957, 11958, 11959, 11960, 11961, 11962, 11963, 11964, 11965, 11966, 11967,
  4430. 11968, 11969, 11970, 11971, 11972, 11973, 11974, 11975, 11976, 11977, 11978, 11979, 11980, 11981,
  4431. 11982, 11983, 11984, 11985, 11986, 11987, 11988, 11989, 11990, 11991, 11992, 11993, 11994, 11995,
  4432. 11996, 11997, 11998, 11999, 12000, 12001, 12002, 12003, 12004, 12005, 12006, 12007, 12008, 12009,
  4433. 12010, 12011, 12012, 12013, 12014, 12015, 12016, 12017, 12018, 12019, 12020, 12021, 12022, 12023,
  4434. 12024, 12025, 12026, 12027, 12028, 12029, 12030, 12031, 12032, 12033, 12034, 12035, 12036, 12037,
  4435. 12038, 12039, 12040, 12041, 12042, 12043, 12044, 12045, 12046, 12047, 12048, 12049, 12050, 12051,
  4436. 12052, 12053, 12054, 12055, 12056, 12057, 12058, 12059, 12060, 12061, 12062, 12063, 12064, 12065,
  4437. 12066, 12067, 12068, 12069, 12070, 12071, 12072, 12073, 12074, 12075, 12076, 12077, 12078, 12079,
  4438. 12080, 12081, 12082, 12083, 12084, 12085, 12086, 12087, 12088, 12089, 12090, 12091, 12092, 12093,
  4439. 12094, 12095, 12096, 12097, 12098, 12099, 12100, 12101, 12102, 12103, 12104, 12105, 12106, 12107,
  4440. 12108, 12109, 12110, 12111, 12112, 12113, 12114, 12115, 12116, 12117, 12118, 12119, 12120, 12121,
  4441. 12122, 12123, 12124, 12125, 12126, 12127, 12128, 12129, 12130, 12131, 12132, 12133, 12134, 12135,
  4442. 12136, 12137, 12138, 12139, 12140, 12141, 12142, 12143, 12144, 12145, 12146, 12147, 12148, 12149,
  4443. 12150, 12151, 12152, 12153, 12154, 12155, 12156, 12157, 12158, 12159, 12160, 12161, 12162, 12163,
  4444. 12164, 12165, 12166, 12167, 12168, 12169, 12170, 12171, 12172, 12173, 12174, 12175, 12176, 12177,
  4445. 12178, 12179, 12180, 12181, 12182, 12183, 12184, 12185, 12186, 12187, 12188, 12189, 12190, 12191,
  4446. 12192, 12193, 12194, 12195, 12196, 12197, 12198, 12199, 12200, 12201, 12202, 12203, 12204, 12205,
  4447. 12206, 12207, 12208, 12209, 12210, 12211, 12212, 12213, 12214, 12215, 12216, 12217, 12218, 12219,
  4448. 12220, 12221, 12222, 12223, 12224, 12225, 12226, 12227, 12228, 12229, 12230, 12231, 12232, 12233,
  4449. 12234, 12235, 12236, 12237, 12238, 12239, 12240, 12241, 12242, 12243, 12244, 12245, 12246, 12247,
  4450. 12248, 12249, 12250, 12251, 12252, 12253, 12254, 12255, 12256, 12257, 12258, 12259, 12260, 12261,
  4451. 12262, 12263, 12264, 12265, 12266, 12267, 12268, 12269, 12270, 12271, 12272, 12273, 12274, 12275,
  4452. 12276, 12277, 12278, 12279, 12280, 12281, 12282, 12283, 12284, 12285, 12286, 12287, 12288, 12289,
  4453. 12290, 12291, 12292, 12293, 12294, 12295, 12296, 12297, 12298, 12299, 12300, 12301, 12302, 12303,
  4454. 12304, 12305, 12306, 12307, 12308, 12309, 12310, 12311, 12312, 12313, 12314, 12315, 12316, 12317,
  4455. 12318, 12319, 12320, 12321, 12322, 12323, 12324, 12325, 12326, 12327, 12328, 12329, 12330, 12331,
  4456. 12332, 12333, 12334, 12335, 12336, 12337, 12338, 12339, 12340, 12341, 12342, 12343, 12344, 12345,
  4457. 12346, 12347, 12348, 12349, 12350, 12351, 12352, 12353, 12354, 12355, 12356, 12357, 12358, 12359,
  4458. 12360, 12361, 12362, 12363, 12364, 12365, 12366, 12367, 12368, 12369, 12370, 12371, 12372, 12373,
  4459. 12374, 12375, 12376, 12377, 12378, 12379, 12380, 12381, 12382, 12383, 12384, 12385, 12386, 12387,
  4460. 12388, 12389, 12390, 12391, 12392, 12393, 12394, 12395, 12396, 12397, 12398, 12399, 12400, 12401,
  4461. 12402, 12403, 12404, 12405, 12406, 12407, 12408, 12409, 12410, 12411, 12412, 12413, 12414, 12415,
  4462. 12416, 12417, 12418, 12419, 12420, 12421, 12422, 12423, 12424, 12425, 12426, 12427, 12428, 12429,
  4463. 12430, 12431, 12432, 12433, 12434, 12435, 12436, 12437, 12438, 12439, 12440, 12441, 12442, 12443,
  4464. 12444, 12445, 12446, 12447, 12448, 12449, 12450, 12451, 12452, 12453, 12454, 12455, 12456, 12457,
  4465. 12458, 12459, 12460, 12461, 12462, 12463, 12464, 12465, 12466, 12467, 12468, 12469, 12470, 12471,
  4466. 12472, 12473, 12474, 12475, 12476, 12477, 12478, 12479, 12480, 12481, 12482, 12483, 12484, 12485,
  4467. 12486, 12487, 12488, 12489, 12490, 12491, 12492, 12493, 12494, 12495, 12496, 12497, 12498, 12499,
  4468. 12500, 12501, 12502, 12503, 12504, 12505, 12506, 12507, 12508, 12509, 12510, 12511, 12512, 12513,
  4469. 12514, 12515, 12516, 12517, 12518, 12519, 12520, 12521, 12522, 12523, 12524, 12525, 12526, 12527,
  4470. 12528, 12529, 12530, 12531, 12532, 12533, 12534, 12535, 12536, 12537, 12538, 12539, 12540, 12541,
  4471. 12542, 12543, 12544, 12545, 12546, 12547, 12548, 12549, 12550, 12551, 12552, 12553, 12554, 12555,
  4472. 12556, 12557, 12558, 12559, 12560, 12561, 12562, 12563, 12564, 12565, 12566, 12567, 12568, 12569,
  4473. 12570, 12571, 12572, 12573, 12574, 12575, 12576, 12577, 12578, 12579, 12580, 12581, 12582, 12583,
  4474. 12584, 12585, 12586, 12587, 12588, 12589, 12590, 12591, 12592, 12593, 12594, 12595, 12596, 12597,
  4475. 12598, 12599, 12600, 12601, 12602, 12603, 12604, 12605, 12606, 12607, 12608, 12609, 12610, 12611,
  4476. 12612, 12613, 12614, 12615, 12616, 12617, 12618, 12619, 12620, 12621, 12622, 12623, 12624, 12625,
  4477. 12626, 12627, 12628, 12629, 12630, 12631, 12632, 12633, 12634, 12635, 12636, 12637, 12638, 12639,
  4478. 12640, 12641, 12642, 12643, 12644, 12645, 12646, 12647, 12648, 12649, 12650, 12651, 12652, 12653,
  4479. 12654, 12655, 12656, 12657, 12658, 12659, 12660, 12661, 12662, 12663, 12664, 12665, 12666, 12667,
  4480. 12668, 12669, 12670, 12671, 12672, 12673, 12674, 12675, 12676, 12677, 12678, 12679, 12680, 12681,
  4481. 12682, 12683, 12684, 12685, 12686, 12687, 12688, 12689, 12690, 12691, 12692, 12693, 12694, 12695,
  4482. 12696, 12697, 12698, 12699, 12700, 12701, 12702, 12703, 12704, 12705, 12706, 12707, 12708, 12709,
  4483. 12710, 12711, 12712, 12713, 12714, 12715, 12716, 12717, 12718, 12719, 12720, 12721, 12722, 12723,
  4484. 12724, 12725, 12726, 12727, 12728, 12729, 12730, 12731, 12732, 12733, 12734, 12735, 12736, 12737,
  4485. 12738, 12739, 12740, 12741, 12742, 12743, 12744, 12745, 12746, 12747, 12748, 12749, 12750, 12751,
  4486. 12752, 12753, 12754, 12755, 12756, 12757, 12758, 12759, 12760, 12761, 12762, 12763, 12764, 12765,
  4487. 12766, 12767, 12768, 12769, 12770, 12771, 12772, 12773, 12774, 12775, 12776, 12777, 12778, 12779,
  4488. 12780, 12781, 12782, 12783, 12784, 12785, 12786, 12787, 12788, 12789, 12790, 12791, 12792, 12793,
  4489. 12794, 12795, 12796, 12797, 12798, 12799, 12800, 12801, 12802, 12803, 12804, 12805, 12806, 12807,
  4490. 12808, 12809, 12810, 12811, 12812, 12813, 12814, 12815, 12816, 12817, 12818, 12819, 12820, 12821,
  4491. 12822, 12823, 12824, 12825, 12826, 12827, 12828, 12829, 12830, 12831, 12832, 12833, 12834, 12835,
  4492. 12836, 12837, 12838, 12839, 12840, 12841, 12842, 12843, 12844, 12845, 12846, 12847, 12848, 12849,
  4493. 12850, 12851, 12852, 12853, 12854, 12855, 12856, 12857, 12858, 12859, 12860, 12861, 12862, 12863,
  4494. 12864, 12865, 12866, 12867, 12868, 12869, 12870, 12871, 12872, 12873, 12874, 12875, 12876, 12877,
  4495. 12878, 12879, 12880, 12881, 12882, 12883, 12884, 12885, 12886, 12887, 12888, 12889, 12890, 12891,
  4496. 12892, 12893, 12894, 12895, 12896, 12897, 12898, 12899, 12900, 12901, 12902, 12903, 12904, 12905,
  4497. 12906, 12907, 12908, 12909, 12910, 12911, 12912, 12913, 12914, 12915, 12916, 12917, 12918, 12919,
  4498. 12920, 12921, 12922, 12923, 12924, 12925, 12926, 12927, 12928, 12929, 12930, 12931, 12932, 12933,
  4499. 12934, 12935, 12936, 12937, 12938, 12939, 12940, 12941, 12942, 12943, 12944, 12945, 12946, 12947,
  4500. 12948, 12949, 12950, 12951, 12952, 12953, 12954, 12955, 12956, 12957, 12958, 12959, 12960, 12961,
  4501. 12962, 12963, 12964, 12965, 12966, 12967, 12968, 12969, 12970, 12971, 12972, 12973, 12974, 12975,
  4502. 12976, 12977, 12978, 12979, 12980, 12981, 12982, 12983, 12984, 12985, 12986, 12987, 12988, 12989,
  4503. 12990, 12991, 12992, 12993, 12994, 12995, 12996, 12997, 12998, 12999, 13000, 13001, 13002, 13003,
  4504. 13004, 13005, 13006, 13007, 13008, 13009, 13010, 13011, 13012, 13013, 13014, 13015, 13016, 13017,
  4505. 13018, 13019, 13020, 13021, 13022, 13023, 13024, 13025, 13026, 13027, 13028, 13029, 13030, 13031,
  4506. 13032, 13033, 13034, 13035, 13036, 13037, 13038, 13039, 13040, 13041, 13042, 13043, 13044, 13045,
  4507. 13046, 13047, 13048, 13049, 13050, 13051, 13052, 13053, 13054, 13055, 13056, 13057, 13058, 13059,
  4508. 13060, 13061, 13062, 13063, 13064, 13065, 13066, 13067, 13068, 13069, 13070, 13071, 13072, 13073,
  4509. 13074, 13075, 13076, 13077, 13078, 13079, 13080, 13081, 13082, 13083, 13084, 13085, 13086, 13087,
  4510. 13088, 13089, 13090, 13091, 13092, 13093, 13094, 13095, 13096, 13097, 13098, 13099, 13100, 13101,
  4511. 13102, 13103, 13104, 13105, 13106, 13107, 13108, 13109, 13110, 13111, 13112, 13113, 13114, 13115,
  4512. 13116, 13117, 13118, 13119, 13120, 13121, 13122, 13123, 13124, 13125, 13126, 13127, 13128, 13129,
  4513. 13130, 13131, 13132, 13133, 13134, 13135, 13136, 13137, 13138, 13139, 13140, 13141, 13142, 13143,
  4514. 13144, 13145, 13146, 13147, 13148, 13149, 13150, 13151, 13152, 13153, 13154, 13155, 13156, 13157,
  4515. 13158, 13159, 13160, 13161, 13162, 13163, 13164, 13165, 13166, 13167, 13168, 13169, 13170, 13171,
  4516. 13172, 13173, 13174, 13175, 13176, 13177, 13178, 13179, 13180, 13181, 13182, 13183, 13184, 13185,
  4517. 13186, 13187, 13188, 13189, 13190, 13191, 13192, 13193, 13194, 13195, 13196, 13197, 13198, 13199,
  4518. 13200, 13201, 13202, 13203, 13204, 13205, 13206, 13207, 13208, 13209, 13210, 13211, 13212, 13213,
  4519. 13214, 13215, 13216, 13217, 13218, 13219, 13220, 13221, 13222, 13223, 13224, 13225, 13226, 13227,
  4520. 13228, 13229, 13230, 13231, 13232, 13233, 13234, 13235, 13236, 13237, 13238, 13239, 13240, 13241,
  4521. 13242, 13243, 13244, 13245, 13246, 13247, 13248, 13249, 13250, 13251, 13252, 13253, 13254, 13255,
  4522. 13256, 13257, 13258, 13259, 13260, 13261, 13262, 13263, 13264, 13265, 13266, 13267, 13268, 13269,
  4523. 13270, 13271, 13272, 13273, 13274, 13275, 13276, 13277, 13278, 13279, 13280, 13281, 13282, 13283,
  4524. 13284, 13285, 13286, 13287, 13288, 13289, 13290, 13291, 13292, 13293, 13294, 13295, 13296, 13297,
  4525. 13298, 13299, 13300, 13301, 13302, 13303, 13304, 13305, 13306, 13307, 13308, 13309, 13310, 13311,
  4526. 13312, 13313, 13314, 13315, 13316, 13317, 13318, 13319, 13320, 13321, 13322, 13323, 13324, 13325,
  4527. 13326, 13327, 13328, 13329, 13330, 13331, 13332, 13333, 13334, 13335, 13336, 13337, 13338, 13339,
  4528. 13340, 13341, 13342, 13343, 13344, 13345, 13346, 13347, 13348, 13349, 13350, 13351, 13352, 13353,
  4529. 13354, 13355, 13356, 13357, 13358, 13359, 13360, 13361, 13362, 13363, 13364, 13365, 13366, 13367,
  4530. 13368, 13369, 13370, 13371, 13372, 13373, 13374, 13375, 13376, 13377, 13378, 13379, 13380, 13381,
  4531. 13382, 13383, 13384, 13385, 13386, 13387, 13388, 13389, 13390, 13391, 13392, 13393, 13394, 13395,
  4532. 13396, 13397, 13398, 13399, 13400, 13401, 13402, 13403, 13404, 13405, 13406, 13407, 13408, 13409,
  4533. 13410, 13411, 13412, 13413, 13414, 13415, 13416, 13417, 13418, 13419, 13420, 13421, 13422, 13423,
  4534. 13424, 13425, 13426, 13427, 13428, 13429, 13430, 13431, 13432, 13433, 13434, 13435, 13436, 13437,
  4535. 13438, 13439, 13440, 13441, 13442, 13443, 13444, 13445, 13446, 13447, 13448, 13449, 13450, 13451,
  4536. 13452, 13453, 13454, 13455, 13456, 13457, 13458, 13459, 13460, 13461, 13462, 13463, 13464, 13465,
  4537. 13466, 13467, 13468, 13469, 13470, 13471, 13472, 13473, 13474, 13475, 13476, 13477, 13478, 13479,
  4538. 13480, 13481, 13482, 13483, 13484, 13485, 13486, 13487, 13488, 13489, 13490, 13491, 13492, 13493,
  4539. 13494, 13495, 13496, 13497, 13498, 13499, 13500, 13501, 13502, 13503, 13504, 13505, 13506, 13507,
  4540. 13508, 13509, 13510, 13511, 13512, 13513, 13514, 13515, 13516, 13517, 13518, 13519, 13520, 13521,
  4541. 13522, 13523, 13524, 13525, 13526, 13527, 13528, 13529, 13530, 13531, 13532, 13533, 13534, 13535,
  4542. 13536, 13537, 13538, 13539, 13540, 13541, 13542, 13543, 13544, 13545, 13546, 13547, 13548, 13549,
  4543. 13550, 13551, 13552, 13553, 13554, 13555, 13556, 13557, 13558, 13559, 13560, 13561, 13562, 13563,
  4544. 13564, 13565, 13566, 13567, 13568, 13569, 13570, 13571, 13572, 13573, 13574, 13575, 13576, 13577,
  4545. 13578, 13579, 13580, 13581, 13582, 13583, 13584, 13585, 13586, 13587, 13588, 13589, 13590, 13591,
  4546. 13592, 13593, 13594, 13595, 13596, 13597, 13598, 13599, 13600, 13601, 13602, 13603, 13604, 13605,
  4547. 13606, 13607, 13608, 13609, 13610, 13611, 13612, 13613, 13614, 13615, 13616, 13617, 13618, 13619,
  4548. 13620, 13621, 13622, 13623, 13624, 13625, 13626, 13627, 13628, 13629, 13630, 13631, 13632, 13633,
  4549. 13634, 13635, 13636, 13637, 13638, 13639, 13640, 13641, 13642, 13643, 13644, 13645, 13646, 13647,
  4550. 13648, 13649, 13650, 13651, 13652, 13653, 13654, 13655, 13656, 13657, 13658, 13659, 13660, 13661,
  4551. 13662, 13663, 13664, 13665, 13666, 13667, 13668, 13669, 13670, 13671, 13672, 13673, 13674, 13675,
  4552. 13676, 13677, 13678, 13679, 13680, 13681, 13682, 13683, 13684, 13685, 13686, 13687, 13688, 13689,
  4553. 13690, 13691, 13692, 13693, 13694, 13695, 13696, 13697, 13698, 13699, 13700, 13701, 13702, 13703,
  4554. 13704, 13705, 13706, 13707, 13708, 13709, 13710, 13711, 13712, 13713, 13714, 13715, 13716, 13717,
  4555. 13718, 13719, 13720, 13721, 13722, 13723, 13724, 13725, 13726, 13727, 13728, 13729, 13730, 13731,
  4556. 13732, 13733, 13734, 13735, 13736, 13737, 13738, 13739, 13740, 13741, 13742, 13743, 13744, 13745,
  4557. 13746, 13747, 13748, 13749, 13750, 13751, 13752, 13753, 13754, 13755, 13756, 13757, 13758, 13759,
  4558. 13760, 13761, 13762, 13763, 13764, 13765, 13766, 13767, 13768, 13769, 13770, 13771, 13772, 13773,
  4559. 13774, 13775, 13776, 13777, 13778, 13779, 13780, 13781, 13782, 13783, 13784, 13785, 13786, 13787,
  4560. 13788, 13789, 13790, 13791, 13792, 13793, 13794, 13795, 13796, 13797, 13798, 13799, 13800, 13801,
  4561. 13802, 13803, 13804, 13805, 13806, 13807, 13808, 13809, 13810, 13811, 13812, 13813, 13814, 13815,
  4562. 13816, 13817, 13818, 13819, 13820, 13821, 13822, 13823, 13824, 13825, 13826, 13827, 13828, 13829,
  4563. 13830, 13831, 13832, 13833, 13834, 13835, 13836, 13837, 13838, 13839, 13840, 13841, 13842, 13843,
  4564. 13844, 13845, 13846, 13847, 13848, 13849, 13850, 13851, 13852, 13853, 13854, 13855, 13856, 13857,
  4565. 13858, 13859, 13860, 13861, 13862, 13863, 13864, 13865, 13866, 13867, 13868, 13869, 13870, 13871,
  4566. 13872, 13873, 13874, 13875, 13876, 13877, 13878, 13879, 13880, 13881, 13882, 13883, 13884, 13885,
  4567. 13886, 13887, 13888, 13889, 13890, 13891, 13892, 13893, 13894, 13895, 13896, 13897, 13898, 13899,
  4568. 13900, 13901, 13902, 13903, 13904, 13905, 13906, 13907, 13908, 13909, 13910, 13911, 13912, 13913,
  4569. 13914, 13915, 13916, 13917, 13918, 13919, 13920, 13921, 13922, 13923, 13924, 13925, 13926, 13927,
  4570. 13928, 13929, 13930, 13931, 13932, 13933, 13934, 13935, 13936, 13937, 13938, 13939, 13940, 13941,
  4571. 13942, 13943, 13944, 13945, 13946, 13947, 13948, 13949, 13950, 13951, 13952, 13953, 13954, 13955,
  4572. 13956, 13957, 13958, 13959, 13960, 13961, 13962, 13963, 13964, 13965, 13966, 13967, 13968, 13969,
  4573. 13970, 13971, 13972, 13973, 13974, 13975, 13976, 13977, 13978, 13979, 13980, 13981, 13982, 13983,
  4574. 13984, 13985, 13986, 13987, 13988, 13989, 13990, 13991, 13992, 13993, 13994, 13995, 13996, 13997,
  4575. 13998, 13999, 14000, 14001, 14002, 14003, 14004, 14005, 14006, 14007, 14008, 14009, 14010, 14011,
  4576. 14012, 14013, 14014, 14015, 14016, 14017, 14018, 14019, 14020, 14021, 14022, 14023, 14024, 14025,
  4577. 14026, 14027, 14028, 14029, 14030, 14031, 14032, 14033, 14034, 14035, 14036, 14037, 14038, 14039,
  4578. 14040, 14041, 14042, 14043, 14044, 14045, 14046, 14047, 14048, 14049, 14050, 14051, 14052, 14053,
  4579. 14054, 14055, 14056, 14057, 14058, 14059, 14060, 14061, 14062, 14063, 14064, 14065, 14066, 14067,
  4580. 14068, 14069, 14070, 14071, 14072, 14073, 14074, 14075, 14076, 14077, 14078, 14079, 14080, 14081,
  4581. 14082, 14083, 14084, 14085, 14086, 14087, 14088, 14089, 14090, 14091, 14092, 14093, 14094, 14095,
  4582. 14096, 14097, 14098, 14099, 14100, 14101, 14102, 14103, 14104, 14105, 14106, 14107, 14108, 14109,
  4583. 14110, 14111, 14112, 14113, 14114, 14115, 14116, 14117, 14118, 14119, 14120, 14121, 14122, 14123,
  4584. 14124, 14125, 14126, 14127, 14128, 14129, 14130, 14131, 14132, 14133, 14134, 14135, 14136, 14137,
  4585. 14138, 14139, 14140, 14141, 14142, 14143, 14144, 14145, 14146, 14147, 14148, 14149, 14150, 14151,
  4586. 14152, 14153, 14154, 14155, 14156, 14157, 14158, 14159, 14160, 14161, 14162, 14163, 14164, 14165,
  4587. 14166, 14167, 14168, 14169, 14170, 14171, 14172, 14173, 14174, 14175, 14176, 14177, 14178, 14179,
  4588. 14180, 14181, 14182, 14183, 14184, 14185, 14186, 14187, 14188, 14189, 14190, 14191, 14192, 14193,
  4589. 14194, 14195, 14196, 14197, 14198, 14199, 14200, 14201, 14202, 14203, 14204, 14205, 14206, 14207,
  4590. 14208, 14209, 14210, 14211, 14212, 14213, 14214, 14215, 14216, 14217, 14218, 14219, 14220, 14221,
  4591. 14222, 14223, 14224, 14225, 14226, 14227, 14228, 14229, 14230, 14231, 14232, 14233, 14234, 14235,
  4592. 14236, 14237, 14238, 14239, 14240, 14241, 14242, 14243, 14244, 14245, 14246, 14247, 14248, 14249,
  4593. 14250, 14251, 14252, 14253, 14254, 14255, 14256, 14257, 14258, 14259, 14260, 14261, 14262, 14263,
  4594. 14264, 14265, 14266, 14267, 14268, 14269, 14270, 14271, 14272, 14273, 14274, 14275, 14276, 14277,
  4595. 14278, 14279, 14280, 14281, 14282, 14283, 14284, 14285, 14286, 14287, 14288, 14289, 14290, 14291,
  4596. 14292, 14293, 14294, 14295, 14296, 14297, 14298, 14299, 14300, 14301, 14302, 14303, 14304, 14305,
  4597. 14306, 14307, 14308, 14309, 14310, 14311, 14312, 14313, 14314, 14315, 14316, 14317, 14318, 14319,
  4598. 14320, 14321, 14322, 14323, 14324, 14325, 14326, 14327, 14328, 14329, 14330, 14331, 14332, 14333,
  4599. 14334, 14335, 14336, 14337, 14338, 14339, 14340, 14341, 14342, 14343, 14344, 14345, 14346, 14347,
  4600. 14348, 14349, 14350, 14351, 14352, 14353, 14354, 14355, 14356, 14357, 14358, 14359, 14360, 14361,
  4601. 14362, 14363, 14364, 14365, 14366, 14367, 14368, 14369, 14370, 14371, 14372, 14373, 14374, 14375,
  4602. 14376, 14377, 14378, 14379, 14380, 14381, 14382, 14383, 14384, 14385, 14386, 14387, 14388, 14389,
  4603. 14390, 14391, 14392, 14393, 14394, 14395, 14396, 14397, 14398, 14399, 14400, 14401, 14402, 14403,
  4604. 14404, 14405, 14406, 14407, 14408, 14409, 14410, 14411, 14412, 14413, 14414, 14415, 14416, 14417,
  4605. 14418, 14419, 14420, 14421, 14422, 14423, 14424, 14425, 14426, 14427, 14428, 14429, 14430, 14431,
  4606. 14432, 14433, 14434, 14435, 14436, 14437, 14438, 14439, 14440, 14441, 14442, 14443, 14444, 14445,
  4607. 14446, 14447, 14448, 14449, 14450, 14451, 14452, 14453, 14454, 14455, 14456, 14457, 14458, 14459,
  4608. 14460, 14461, 14462, 14463, 14464, 14465, 14466, 14467, 14468, 14469, 14470, 14471, 14472, 14473,
  4609. 14474, 14475, 14476, 14477, 14478, 14479, 14480, 14481, 14482, 14483, 14484, 14485, 14486, 14487,
  4610. 14488, 14489, 14490, 14491, 14492, 14493, 14494, 14495, 14496, 14497, 14498, 14499, 14500, 14501,
  4611. 14502, 14503, 14504, 14505, 14506, 14507, 14508, 14509, 14510, 14511, 14512, 14513, 14514, 14515,
  4612. 14516, 14517, 14518, 14519, 14520, 14521, 14522, 14523, 14524, 14525, 14526, 14527, 14528, 14529,
  4613. 14530, 14531, 14532, 14533, 14534, 14535, 14536, 14537, 14538, 14539, 14540, 14541, 14542, 14543,
  4614. 14544, 14545, 14546, 14547, 14548, 14549, 14550, 14551, 14552, 14553, 14554, 14555, 14556, 14557,
  4615. 14558, 14559, 14560, 14561, 14562, 14563, 14564, 14565, 14566, 14567, 14568, 14569, 14570, 14571,
  4616. 14572, 14573, 14574, 14575, 14576, 14577, 14578, 14579, 14580, 14581, 14582, 14583, 14584, 14585,
  4617. 14586, 14587, 14588, 14589, 14590, 14591, 14592, 14593, 14594, 14595, 14596, 14597, 14598, 14599,
  4618. 14600, 14601, 14602, 14603, 14604, 14605, 14606, 14607, 14608, 14609, 14610, 14611, 14612, 14613,
  4619. 14614, 14615, 14616, 14617, 14618, 14619, 14620, 14621, 14622, 14623, 14624, 14625, 14626, 14627,
  4620. 14628, 14629, 14630, 14631, 14632, 14633, 14634, 14635, 14636, 14637, 14638, 14639, 14640, 14641,
  4621. 14642, 14643, 14644, 14645, 14646, 14647, 14648, 14649, 14650, 14651, 14652, 14653, 14654, 14655,
  4622. 14656, 14657, 14658, 14659, 14660, 14661, 14662, 14663, 14664, 14665, 14666, 14667, 14668, 14669,
  4623. 14670, 14671, 14672, 14673, 14674, 14675, 14676, 14677, 14678, 14679, 14680, 14681, 14682, 14683,
  4624. 14684, 14685, 14686, 14687, 14688, 14689, 14690, 14691, 14692, 14693, 14694, 14695, 14696, 14697,
  4625. 14698, 14699, 14700, 14701, 14702, 14703, 14704, 14705, 14706, 14707, 14708, 14709, 14710, 14711,
  4626. 14712, 14713, 14714, 14715, 14716, 14717, 14718, 14719, 14720, 14721, 14722, 14723, 14724, 14725,
  4627. 14726, 14727, 14728, 14729, 14730, 14731, 14732, 14733, 14734, 14735, 14736, 14737, 14738, 14739,
  4628. 14740, 14741, 14742, 14743, 14744, 14745, 14746, 14747, 14748, 14749, 14750, 14751, 14752, 14753,
  4629. 14754, 14755, 14756, 14757, 14758, 14759, 14760, 14761, 14762, 14763, 14764, 14765, 14766, 14767,
  4630. 14768, 14769, 14770, 14771, 14772, 14773, 14774, 14775, 14776, 14777, 14778, 14779, 14780, 14781,
  4631. 14782, 14783, 14784, 14785, 14786, 14787, 14788, 14789, 14790, 14791, 14792, 14793, 14794, 14795,
  4632. 14796, 14797, 14798, 14799, 14800, 14801, 14802, 14803, 14804, 14805, 14806, 14807, 14808, 14809,
  4633. 14810, 14811, 14812, 14813, 14814, 14815, 14816, 14817, 14818, 14819, 14820, 14821, 14822, 14823,
  4634. 14824, 14825, 14826, 14827, 14828, 14829, 14830, 14831, 14832, 14833, 14834, 14835, 14836, 14837,
  4635. 14838, 14839, 14840, 14841, 14842, 14843, 14844, 14845, 14846, 14847, 14848, 14849, 14850, 14851,
  4636. 14852, 14853, 14854, 14855, 14856, 14857, 14858, 14859, 14860, 14861, 14862, 14863, 14864, 14865,
  4637. 14866, 14867, 14868, 14869, 14870, 14871, 14872, 14873, 14874, 14875, 14876, 14877, 14878, 14879,
  4638. 14880, 14881, 14882, 14883, 14884, 14885, 14886, 14887, 14888, 14889, 14890, 14891, 14892, 14893,
  4639. 14894, 14895, 14896, 14897, 14898, 14899, 14900, 14901, 14902, 14903, 14904, 14905, 14906, 14907,
  4640. 14908, 14909, 14910, 14911, 14912, 14913, 14914, 14915, 14916, 14917, 14918, 14919, 14920, 14921,
  4641. 14922, 14923, 14924, 14925, 14926, 14927, 14928, 14929, 14930, 14931, 14932, 14933, 14934, 14935,
  4642. 14936, 14937, 14938, 14939, 14940, 14941, 14942, 14943, 14944, 14945, 14946, 14947, 14948, 14949,
  4643. 14950, 14951, 14952, 14953, 14954, 14955, 14956, 14957, 14958, 14959, 14960, 14961, 14962, 14963,
  4644. 14964, 14965, 14966, 14967, 14968, 14969, 14970, 14971, 14972, 14973, 14974, 14975, 14976, 14977,
  4645. 14978, 14979, 14980, 14981, 14982, 14983, 14984, 14985, 14986, 14987, 14988, 14989, 14990, 14991,
  4646. 14992, 14993, 14994, 14995, 14996, 14997, 14998, 14999, 15000, 15001, 15002, 15003, 15004, 15005,
  4647. 15006, 15007, 15008, 15009, 15010, 15011, 15012, 15013, 15014, 15015, 15016, 15017, 15018, 15019,
  4648. 15020, 15021, 15022, 15023, 15024, 15025, 15026, 15027, 15028, 15029, 15030, 15031, 15032, 15033,
  4649. 15034, 15035, 15036, 15037, 15038, 15039, 15040, 15041, 15042, 15043, 15044, 15045, 15046, 15047,
  4650. 15048, 15049, 15050, 15051, 15052, 15053, 15054, 15055, 15056, 15057, 15058, 15059, 15060, 15061,
  4651. 15062, 15063, 15064, 15065, 15066, 15067, 15068, 15069, 15070, 15071, 15072, 15073, 15074, 15075,
  4652. 15076, 15077, 15078, 15079, 15080, 15081, 15082, 15083, 15084, 15085, 15086, 15087, 15088, 15089,
  4653. 15090, 15091, 15092, 15093, 15094, 15095, 15096, 15097, 15098, 15099, 15100, 15101, 15102, 15103,
  4654. 15104, 15105, 15106, 15107, 15108, 15109, 15110, 15111, 15112, 15113, 15114, 15115, 15116, 15117,
  4655. 15118, 15119, 15120, 15121, 15122, 15123, 15124, 15125, 15126, 15127, 15128, 15129, 15130, 15131,
  4656. 15132, 15133, 15134, 15135, 15136, 15137, 15138, 15139, 15140, 15141, 15142, 15143, 15144, 15145,
  4657. 15146, 15147, 15148, 15149, 15150, 15151, 15152, 15153, 15154, 15155, 15156, 15157, 15158, 15159,
  4658. 15160, 15161, 15162, 15163, 15164, 15165, 15166, 15167, 15168, 15169, 15170, 15171, 15172, 15173,
  4659. 15174, 15175, 15176, 15177, 15178, 15179, 15180, 15181, 15182, 15183, 15184, 15185, 15186, 15187,
  4660. 15188, 15189, 15190, 15191, 15192, 15193, 15194, 15195, 15196, 15197, 15198, 15199, 15200, 15201,
  4661. 15202, 15203, 15204, 15205, 15206, 15207, 15208, 15209, 15210, 15211, 15212, 15213, 15214, 15215,
  4662. 15216, 15217, 15218, 15219, 15220, 15221, 15222, 15223, 15224, 15225, 15226, 15227, 15228, 15229,
  4663. 15230, 15231, 15232, 15233, 15234, 15235, 15236, 15237, 15238, 15239, 15240, 15241, 15242, 15243,
  4664. 15244, 15245, 15246, 15247, 15248, 15249, 15250, 15251, 15252, 15253, 15254, 15255, 15256, 15257,
  4665. 15258, 15259, 15260, 15261, 15262, 15263, 15264, 15265, 15266, 15267, 15268, 15269, 15270, 15271,
  4666. 15272, 15273, 15274, 15275, 15276, 15277, 15278, 15279, 15280, 15281, 15282, 15283, 15284, 15285,
  4667. 15286, 15287, 15288, 15289, 15290, 15291, 15292, 15293, 15294, 15295, 15296, 15297, 15298, 15299,
  4668. 15300, 15301, 15302, 15303, 15304, 15305, 15306, 15307, 15308, 15309, 15310, 15311, 15312, 15313,
  4669. 15314, 15315, 15316, 15317, 15318, 15319, 15320, 15321, 15322, 15323, 15324, 15325, 15326, 15327,
  4670. 15328, 15329, 15330, 15331, 15332, 15333, 15334, 15335, 15336, 15337, 15338, 15339, 15340, 15341,
  4671. 15342, 15343, 15344, 15345, 15346, 15347, 15348, 15349, 15350, 15351, 15352, 15353, 15354, 15355,
  4672. 15356, 15357, 15358, 15359, 15360, 15361, 15362, 15363, 15364, 15365, 15366, 15367, 15368, 15369,
  4673. 15370, 15371, 15372, 15373, 15374, 15375, 15376, 15377, 15378, 15379, 15380, 15381, 15382, 15383,
  4674. 15384, 15385, 15386, 15387, 15388, 15389, 15390, 15391, 15392, 15393, 15394, 15395, 15396, 15397,
  4675. 15398, 15399, 15400, 15401, 15402, 15403, 15404, 15405, 15406, 15407, 15408, 15409, 15410, 15411,
  4676. 15412, 15413, 15414, 15415, 15416, 15417, 15418, 15419, 15420, 15421, 15422, 15423, 15424, 15425,
  4677. 15426, 15427, 15428, 15429, 15430, 15431, 15432, 15433, 15434, 15435, 15436, 15437, 15438, 15439,
  4678. 15440, 15441, 15442, 15443, 15444, 15445, 15446, 15447, 15448, 15449, 15450, 15451, 15452, 15453,
  4679. 15454, 15455, 15456, 15457, 15458, 15459, 15460, 15461, 15462, 15463, 15464, 15465, 15466, 15467,
  4680. 15468, 15469, 15470, 15471, 15472, 15473, 15474, 15475, 15476, 15477, 15478, 15479, 15480, 15481,
  4681. 15482, 15483, 15484, 15485, 15486, 15487, 15488, 15489, 15490, 15491, 15492, 15493, 15494, 15495,
  4682. 15496, 15497, 15498, 15499, 15500, 15501, 15502, 15503, 15504, 15505, 15506, 15507, 15508, 15509,
  4683. 15510, 15511, 15512, 15513, 15514, 15515, 15516, 15517, 15518, 15519, 15520, 15521, 15522, 15523,
  4684. 15524, 15525, 15526, 15527, 15528, 15529, 15530, 15531, 15532, 15533, 15534, 15535, 15536, 15537,
  4685. 15538, 15539, 15540, 15541, 15542, 15543, 15544, 15545, 15546, 15547, 15548, 15549, 15550, 15551,
  4686. 15552, 15553, 15554, 15555, 15556, 15557, 15558, 15559, 15560, 15561, 15562, 15563, 15564, 15565,
  4687. 15566, 15567, 15568, 15569, 15570, 15571, 15572, 15573, 15574, 15575, 15576, 15577, 15578, 15579,
  4688. 15580, 15581, 15582, 15583, 15584, 15585, 15586, 15587, 15588, 15589, 15590, 15591, 15592, 15593,
  4689. 15594, 15595, 15596, 15597, 15598, 15599, 15600, 15601, 15602, 15603, 15604, 15605, 15606, 15607,
  4690. 15608, 15609, 15610, 15611, 15612, 15613, 15614, 15615, 15616, 15617, 15618, 15619, 15620, 15621,
  4691. 15622, 15623, 15624, 15625, 15626, 15627, 15628, 15629, 15630, 15631, 15632, 15633, 15634, 15635,
  4692. 15636, 15637, 15638, 15639, 15640, 15641, 15642, 15643, 15644, 15645, 15646, 15647, 15648, 15649,
  4693. 15650, 15651, 15652, 15653, 15654, 15655, 15656, 15657, 15658, 15659, 15660, 15661, 15662, 15663,
  4694. 15664, 15665, 15666, 15667, 15668, 15669, 15670, 15671, 15672, 15673, 15674, 15675, 15676, 15677,
  4695. 15678, 15679, 15680, 15681, 15682, 15683, 15684, 15685, 15686, 15687, 15688, 15689, 15690, 15691,
  4696. 15692, 15693, 15694, 15695, 15696, 15697, 15698, 15699, 15700, 15701, 15702, 15703, 15704, 15705,
  4697. 15706, 15707, 15708, 15709, 15710, 15711, 15712, 15713, 15714, 15715, 15716, 15717, 15718, 15719,
  4698. 15720, 15721, 15722, 15723, 15724, 15725, 15726, 15727, 15728, 15729, 15730, 15731, 15732, 15733,
  4699. 15734, 15735, 15736, 15737, 15738, 15739, 15740, 15741, 15742, 15743, 15744, 15745, 15746, 15747,
  4700. 15748, 15749, 15750, 15751, 15752, 15753, 15754, 15755, 15756, 15757, 15758, 15759, 15760, 15761,
  4701. 15762, 15763, 15764, 15765, 15766, 15767, 15768, 15769, 15770, 15771, 15772, 15773, 15774, 15775,
  4702. 15776, 15777, 15778, 15779, 15780, 15781, 15782, 15783, 15784, 15785, 15786, 15787, 15788, 15789,
  4703. 15790, 15791, 15792, 15793, 15794, 15795, 15796, 15797, 15798, 15799, 15800, 15801, 15802, 15803,
  4704. 15804, 15805, 15806, 15807, 15808, 15809, 15810, 15811, 15812, 15813, 15814, 15815, 15816, 15817,
  4705. 15818, 15819, 15820, 15821, 15822, 15823, 15824, 15825, 15826, 15827, 15828, 15829, 15830, 15831,
  4706. 15832, 15833, 15834, 15835, 15836, 15837, 15838, 15839, 15840, 15841, 15842, 15843, 15844, 15845,
  4707. 15846, 15847, 15848, 15849, 15850, 15851, 15852, 15853, 15854, 15855, 15856, 15857, 15858, 15859,
  4708. 15860, 15861, 15862, 15863, 15864, 15865, 15866, 15867, 15868, 15869, 15870, 15871, 15872, 15873,
  4709. 15874, 15875, 15876, 15877, 15878, 15879, 15880, 15881, 15882, 15883, 15884, 15885, 15886, 15887,
  4710. 15888, 15889, 15890, 15891, 15892, 15893, 15894, 15895, 15896, 15897, 15898, 15899, 15900, 15901,
  4711. 15902, 15903, 15904, 15905, 15906, 15907, 15908, 15909, 15910, 15911, 15912, 15913, 15914, 15915,
  4712. 15916, 15917, 15918, 15919, 15920, 15921, 15922, 15923, 15924, 15925, 15926, 15927, 15928, 15929,
  4713. 15930, 15931, 15932, 15933, 15934, 15935, 15936, 15937, 15938, 15939, 15940, 15941, 15942, 15943,
  4714. 15944, 15945, 15946, 15947, 15948, 15949, 15950, 15951, 15952, 15953, 15954, 15955, 15956, 15957,
  4715. 15958, 15959, 15960, 15961, 15962, 15963, 15964, 15965, 15966, 15967, 15968, 15969, 15970, 15971,
  4716. 15972, 15973, 15974, 15975, 15976, 15977, 15978, 15979, 15980, 15981, 15982, 15983, 15984, 15985,
  4717. 15986, 15987, 15988, 15989, 15990, 15991, 15992, 15993, 15994, 15995, 15996, 15997, 15998, 15999,
  4718. 16000, 16001, 16002, 16003, 16004, 16005, 16006, 16007, 16008, 16009, 16010, 16011, 16012, 16013,
  4719. 16014, 16015, 16016, 16017, 16018, 16019, 16020, 16021, 16022, 16023, 16024, 16025, 16026, 16027,
  4720. 16028, 16029, 16030, 16031, 16032, 16033, 16034, 16035, 16036, 16037, 16038, 16039, 16040, 16041,
  4721. 16042, 16043, 16044, 16045, 16046, 16047, 16048, 16049, 16050, 16051, 16052, 16053, 16054, 16055,
  4722. 16056, 16057, 16058, 16059, 16060, 16061, 16062, 16063, 16064, 16065, 16066, 16067, 16068, 16069,
  4723. 16070, 16071, 16072, 16073, 16074, 16075, 16076, 16077, 16078, 16079, 16080, 16081, 16082, 16083,
  4724. 16084, 16085, 16086, 16087, 16088, 16089, 16090, 16091, 16092, 16093, 16094, 16095, 16096, 16097,
  4725. 16098, 16099, 16100, 16101, 16102, 16103, 16104, 16105, 16106, 16107, 16108, 16109, 16110, 16111,
  4726. 16112, 16113, 16114, 16115, 16116, 16117, 16118, 16119, 16120, 16121, 16122, 16123, 16124, 16125,
  4727. 16126, 16127, 16128, 16129, 16130, 16131, 16132, 16133, 16134, 16135, 16136, 16137, 16138, 16139,
  4728. 16140, 16141, 16142, 16143, 16144, 16145, 16146, 16147, 16148, 16149, 16150, 16151, 16152, 16153,
  4729. 16154, 16155, 16156, 16157, 16158, 16159, 16160, 16161, 16162, 16163, 16164, 16165, 16166, 16167,
  4730. 16168, 16169, 16170, 16171, 16172, 16173, 16174, 16175, 16176, 16177, 16178, 16179, 16180, 16181,
  4731. 16182, 16183, 16184, 16185, 16186, 16187, 16188, 16189, 16190, 16191, 16192, 16193, 16194, 16195,
  4732. 16196, 16197, 16198, 16199, 16200, 16201, 16202, 16203, 16204, 16205, 16206, 16207, 16208, 16209,
  4733. 16210, 16211, 16212, 16213, 16214, 16215, 16216, 16217, 16218, 16219, 16220, 16221, 16222, 16223,
  4734. 16224, 16225, 16226, 16227, 16228, 16229, 16230, 16231, 16232, 16233, 16234, 16235, 16236, 16237,
  4735. 16238, 16239, 16240, 16241, 16242, 16243, 16244, 16245, 16246, 16247, 16248, 16249, 16250, 16251,
  4736. 16252, 16253, 16254, 16255, 16256, 16257, 16258, 16259, 16260, 16261, 16262, 16263, 16264, 16265,
  4737. 16266, 16267, 16268, 16269, 16270, 16271, 16272, 16273, 16274, 16275, 16276, 16277, 16278, 16279,
  4738. 16280, 16281, 16282, 16283, 16284, 16285, 16286, 16287, 16288, 16289, 16290, 16291, 16292, 16293,
  4739. 16294, 16295, 16296, 16297, 16298, 16299, 16300, 16301, 16302, 16303, 16304, 16305, 16306, 16307,
  4740. 16308, 16309, 16310, 16311, 16312, 16313, 16314, 16315, 16316, 16317, 16318, 16319, 16320, 16321,
  4741. 16322, 16323, 16324, 16325, 16326, 16327, 16328, 16329, 16330, 16331, 16332, 16333, 16334, 16335,
  4742. 16336, 16337, 16338, 16339, 16340, 16341, 16342, 16343, 16344, 16345, 16346, 16347, 16348, 16349,
  4743. 16350, 16351, 16352, 16353, 16354, 16355, 16356, 16357, 16358, 16359, 16360, 16361, 16362, 16363,
  4744. 16364, 16365, 16366, 16367, 16368, 16369, 16370, 16371, 16372, 16373, 16374, 16375, 16376, 16377,
  4745. 16378, 16379, 16380, 16381, 16382, 16383, 16384, 16385, 16386, 16387, 16388, 16389, 16390, 16391,
  4746. 16392, 16393, 16394, 16395, 16396, 16397, 16398, 16399, 16400, 16401, 16402, 16403, 16404, 16405,
  4747. 16406, 16407, 16408, 16409, 16410, 16411, 16412, 16413, 16414, 16415, 16416, 16417, 16418, 16419,
  4748. 16420, 16421, 16422, 16423, 16424, 16425, 16426, 16427, 16428, 16429, 16430, 16431, 16432, 16433,
  4749. 16434, 16435, 16436, 16437, 16438, 16439, 16440, 16441, 16442, 16443, 16444, 16445, 16446, 16447,
  4750. 16448, 16449, 16450, 16451, 16452, 16453, 16454, 16455, 16456, 16457, 16458, 16459, 16460, 16461,
  4751. 16462, 16463, 16464, 16465, 16466, 16467, 16468, 16469, 16470, 16471, 16472, 16473, 16474, 16475,
  4752. 16476, 16477, 16478, 16479, 16480, 16481, 16482, 16483, 16484, 16485, 16486, 16487, 16488, 16489,
  4753. 16490, 16491, 16492, 16493, 16494, 16495, 16496, 16497, 16498, 16499, 16500, 16501, 16502, 16503,
  4754. 16504, 16505, 16506, 16507, 16508, 16509, 16510, 16511, 16512, 16513, 16514, 16515, 16516, 16517,
  4755. 16518, 16519, 16520, 16521, 16522, 16523, 16524, 16525, 16526, 16527, 16528, 16529, 16530, 16531,
  4756. 16532, 16533, 16534, 16535, 16536, 16537, 16538, 16539, 16540, 16541, 16542, 16543, 16544, 16545,
  4757. 16546, 16547, 16548, 16549, 16550, 16551, 16552, 16553, 16554, 16555, 16556, 16557, 16558, 16559,
  4758. 16560, 16561, 16562, 16563, 16564, 16565, 16566, 16567, 16568, 16569, 16570, 16571, 16572, 16573,
  4759. 16574, 16575, 16576, 16577, 16578, 16579, 16580, 16581, 16582, 16583, 16584, 16585, 16586, 16587,
  4760. 16588, 16589, 16590, 16591, 16592, 16593, 16594, 16595, 16596, 16597, 16598, 16599, 16600, 16601,
  4761. 16602, 16603, 16604, 16605, 16606, 16607, 16608, 16609, 16610, 16611, 16612, 16613, 16614, 16615,
  4762. 16616, 16617, 16618, 16619, 16620, 16621, 16622, 16623, 16624, 16625, 16626, 16627, 16628, 16629,
  4763. 16630, 16631, 16632, 16633, 16634, 16635, 16636, 16637, 16638, 16639, 16640, 16641, 16642, 16643,
  4764. 16644, 16645, 16646, 16647, 16648, 16649, 16650, 16651, 16652, 16653, 16654, 16655, 16656, 16657,
  4765. 16658, 16659, 16660, 16661, 16662, 16663, 16664, 16665, 16666, 16667, 16668, 16669, 16670, 16671,
  4766. 16672, 16673, 16674, 16675, 16676, 16677, 16678, 16679, 16680, 16681, 16682, 16683, 16684, 16685,
  4767. 16686, 16687, 16688, 16689, 16690, 16691, 16692, 16693, 16694, 16695, 16696, 16697, 16698, 16699,
  4768. 16700, 16701, 16702, 16703, 16704, 16705, 16706, 16707, 16708, 16709, 16710, 16711, 16712, 16713,
  4769. 16714, 16715, 16716, 16717, 16718, 16719, 16720, 16721, 16722, 16723, 16724, 16725, 16726, 16727,
  4770. 16728, 16729, 16730, 16731, 16732, 16733, 16734, 16735, 16736, 16737, 16738, 16739, 16740, 16741,
  4771. 16742, 16743, 16744, 16745, 16746, 16747, 16748, 16749, 16750, 16751, 16752, 16753, 16754, 16755,
  4772. 16756, 16757, 16758, 16759, 16760, 16761, 16762, 16763, 16764, 16765, 16766, 16767, 16768, 16769,
  4773. 16770, 16771, 16772, 16773, 16774, 16775, 16776, 16777, 16778, 16779, 16780, 16781, 16782, 16783,
  4774. 16784, 16785, 16786, 16787, 16788, 16789, 16790, 16791, 16792, 16793, 16794, 16795, 16796, 16797,
  4775. 16798, 16799, 16800, 16801, 16802, 16803, 16804, 16805, 16806, 16807, 16808, 16809, 16810, 16811,
  4776. 16812, 16813, 16814, 16815, 16816, 16817, 16818, 16819, 16820, 16821, 16822, 16823, 16824, 16825,
  4777. 16826, 16827, 16828, 16829, 16830, 16831, 16832, 16833, 16834, 16835, 16836, 16837, 16838, 16839,
  4778. 16840, 16841, 16842, 16843, 16844, 16845, 16846, 16847, 16848, 16849, 16850, 16851, 16852, 16853,
  4779. 16854, 16855, 16856, 16857, 16858, 16859, 16860, 16861, 16862, 16863, 16864, 16865, 16866, 16867,
  4780. 16868, 16869, 16870, 16871, 16872, 16873, 16874, 16875, 16876, 16877, 16878, 16879, 16880, 16881,
  4781. 16882, 16883, 16884, 16885, 16886, 16887, 16888, 16889, 16890, 16891, 16892, 16893, 16894, 16895,
  4782. 16896, 16897, 16898, 16899, 16900, 16901, 16902, 16903, 16904, 16905, 16906, 16907, 16908, 16909,
  4783. 16910, 16911, 16912, 16913, 16914, 16915, 16916, 16917, 16918, 16919, 16920, 16921, 16922, 16923,
  4784. 16924, 16925, 16926, 16927, 16928, 16929, 16930, 16931, 16932, 16933, 16934, 16935, 16936, 16937,
  4785. 16938, 16939, 16940, 16941, 16942, 16943, 16944, 16945, 16946, 16947, 16948, 16949, 16950, 16951,
  4786. 16952, 16953, 16954, 16955, 16956, 16957, 16958, 16959, 16960, 16961, 16962, 16963, 16964, 16965,
  4787. 16966, 16967, 16968, 16969, 16970, 16971, 16972, 16973, 16974, 16975, 16976, 16977, 16978, 16979,
  4788. 16980, 16981, 16982, 16983, 16984, 16985, 16986, 16987, 16988, 16989, 16990, 16991, 16992, 16993,
  4789. 16994, 16995, 16996, 16997, 16998, 16999, 17000, 17001, 17002, 17003, 17004, 17005, 17006, 17007,
  4790. 17008, 17009, 17010, 17011, 17012, 17013, 17014, 17015, 17016, 17017, 17018, 17019, 17020, 17021,
  4791. 17022, 17023, 17024, 17025, 17026, 17027, 17028, 17029, 17030, 17031, 17032, 17033, 17034, 17035,
  4792. 17036, 17037, 17038, 17039, 17040, 17041, 17042, 17043, 17044, 17045, 17046, 17047, 17048, 17049,
  4793. 17050, 17051, 17052, 17053, 17054, 17055, 17056, 17057, 17058, 17059, 17060, 17061, 17062, 17063,
  4794. 17064, 17065, 17066, 17067, 17068, 17069, 17070, 17071, 17072, 17073, 17074, 17075, 17076, 17077,
  4795. 17078, 17079, 17080, 17081, 17082, 17083, 17084, 17085, 17086, 17087, 17088, 17089, 17090, 17091,
  4796. 17092, 17093, 17094, 17095, 17096, 17097, 17098, 17099, 17100, 17101, 17102, 17103, 17104, 17105,
  4797. 17106, 17107, 17108, 17109, 17110, 17111, 17112, 17113, 17114, 17115, 17116, 17117, 17118, 17119,
  4798. 17120, 17121, 17122, 17123, 17124, 17125, 17126, 17127, 17128, 17129, 17130, 17131, 17132, 17133,
  4799. 17134, 17135, 17136, 17137, 17138, 17139, 17140, 17141, 17142, 17143, 17144, 17145, 17146, 17147,
  4800. 17148, 17149, 17150, 17151, 17152, 17153, 17154, 17155, 17156, 17157, 17158, 17159, 17160, 17161,
  4801. 17162, 17163, 17164, 17165, 17166, 17167, 17168, 17169, 17170, 17171, 17172, 17173, 17174, 17175,
  4802. 17176, 17177, 17178, 17179, 17180, 17181, 17182, 17183, 17184, 17185, 17186, 17187, 17188, 17189,
  4803. 17190, 17191, 17192, 17193, 17194, 17195, 17196, 17197, 17198, 17199, 17200, 17201, 17202, 17203,
  4804. 17204, 17205, 17206, 17207, 17208, 17209, 17210, 17211, 17212, 17213, 17214, 17215, 17216, 17217,
  4805. 17218, 17219, 17220, 17221, 17222, 17223, 17224, 17225, 17226, 17227, 17228, 17229, 17230, 17231,
  4806. 17232, 17233, 17234, 17235, 17236, 17237, 17238, 17239, 17240, 17241, 17242, 17243, 17244, 17245,
  4807. 17246, 17247, 17248, 17249, 17250, 17251, 17252, 17253, 17254, 17255, 17256, 17257, 17258, 17259,
  4808. 17260, 17261, 17262, 17263, 17264, 17265, 17266, 17267, 17268, 17269, 17270, 17271, 17272, 17273,
  4809. 17274, 17275, 17276, 17277, 17278, 17279, 17280, 17281, 17282, 17283, 17284, 17285, 17286, 17287,
  4810. 17288, 17289, 17290, 17291, 17292, 17293, 17294, 17295, 17296, 17297, 17298, 17299, 17300, 17301,
  4811. 17302, 17303, 17304, 17305, 17306, 17307, 17308, 17309, 17310, 17311, 17312, 17313, 17314, 17315,
  4812. 17316, 17317, 17318, 17319, 17320, 17321, 17322, 17323, 17324, 17325, 17326, 17327, 17328, 17329,
  4813. 17330, 17331, 17332, 17333, 17334, 17335, 17336, 17337, 17338, 17339, 17340, 17341, 17342, 17343,
  4814. 17344, 17345, 17346, 17347, 17348, 17349, 17350, 17351, 17352, 17353, 17354, 17355, 17356, 17357,
  4815. 17358, 17359, 17360, 17361, 17362, 17363, 17364, 17365, 17366, 17367, 17368, 17369, 17370, 17371,
  4816. 17372, 17373, 17374, 17375, 17376, 17377, 17378, 17379, 17380, 17381, 17382, 17383, 17384, 17385,
  4817. 17386, 17387, 17388, 17389, 17390, 17391, 17392, 17393, 17394, 17395, 17396, 17397, 17398, 17399,
  4818. 17400, 17401, 17402, 17403, 17404, 17405, 17406, 17407, 17408, 17409, 17410, 17411, 17412, 17413,
  4819. 17414, 17415, 17416, 17417, 17418, 17419, 17420, 17421, 17422, 17423, 17424, 17425, 17426, 17427,
  4820. 17428, 17429, 17430, 17431, 17432, 17433, 17434, 17435, 17436, 17437, 17438, 17439, 17440, 17441,
  4821. 17442, 17443, 17444, 17445, 17446, 17447, 17448, 17449, 17450, 17451, 17452, 17453, 17454, 17455,
  4822. 17456, 17457, 17458, 17459, 17460, 17461, 17462, 17463, 17464, 17465, 17466, 17467, 17468, 17469,
  4823. 17470, 17471, 17472, 17473, 17474, 17475, 17476, 17477, 17478, 17479, 17480, 17481, 17482, 17483,
  4824. 17484, 17485, 17486, 17487, 17488, 17489, 17490, 17491, 17492, 17493, 17494, 17495, 17496, 17497,
  4825. 17498, 17499, 17500, 17501, 17502, 17503, 17504, 17505, 17506, 17507, 17508, 17509, 17510, 17511,
  4826. 17512, 17513, 17514, 17515, 17516, 17517, 17518, 17519, 17520, 17521, 17522, 17523, 17524, 17525,
  4827. 17526, 17527, 17528, 17529, 17530, 17531, 17532, 17533, 17534, 17535, 17536, 17537, 17538, 17539,
  4828. 17540, 17541, 17542, 17543, 17544, 17545, 17546, 17547, 17548, 17549, 17550, 17551, 17552, 17553,
  4829. 17554, 17555, 17556, 17557, 17558, 17559, 17560, 17561, 17562, 17563, 17564, 17565, 17566, 17567,
  4830. 17568, 17569, 17570, 17571, 17572, 17573, 17574, 17575, 17576, 17577, 17578, 17579, 17580, 17581,
  4831. 17582, 17583, 17584, 17585, 17586, 17587, 17588, 17589, 17590, 17591, 17592, 17593, 17594, 17595,
  4832. 17596, 17597, 17598, 17599, 17600, 17601, 17602, 17603, 17604, 17605, 17606, 17607, 17608, 17609,
  4833. 17610, 17611, 17612, 17613, 17614, 17615, 17616, 17617, 17618, 17619, 17620, 17621, 17622, 17623,
  4834. 17624, 17625, 17626, 17627, 17628, 17629, 17630, 17631, 17632, 17633, 17634, 17635, 17636, 17637,
  4835. 17638, 17639, 17640, 17641, 17642, 17643, 17644, 17645, 17646, 17647, 17648, 17649, 17650, 17651,
  4836. 17652, 17653, 17654, 17655, 17656, 17657, 17658, 17659, 17660, 17661, 17662, 17663, 17664, 17665,
  4837. 17666, 17667, 17668, 17669, 17670, 17671, 17672, 17673, 17674, 17675, 17676, 17677, 17678, 17679,
  4838. 17680, 17681, 17682, 17683, 17684, 17685, 17686, 17687, 17688, 17689, 17690, 17691, 17692, 17693,
  4839. 17694, 17695, 17696, 17697, 17698, 17699, 17700, 17701, 17702, 17703, 17704, 17705, 17706, 17707,
  4840. 17708, 17709, 17710, 17711, 17712, 17713, 17714, 17715, 17716, 17717, 17718, 17719, 17720, 17721,
  4841. 17722, 17723, 17724, 17725, 17726, 17727, 17728, 17729, 17730, 17731, 17732, 17733, 17734, 17735,
  4842. 17736, 17737, 17738, 17739, 17740, 17741, 17742, 17743, 17744, 17745, 17746, 17747, 17748, 17749,
  4843. 17750, 17751, 17752, 17753, 17754, 17755, 17756, 17757, 17758, 17759, 17760, 17761, 17762, 17763,
  4844. 17764, 17765, 17766, 17767, 17768, 17769, 17770, 17771, 17772, 17773, 17774, 17775, 17776, 17777,
  4845. 17778, 17779, 17780, 17781, 17782, 17783, 17784, 17785, 17786, 17787, 17788, 17789, 17790, 17791,
  4846. 17792, 17793, 17794, 17795, 17796, 17797, 17798, 17799, 17800, 17801, 17802, 17803, 17804, 17805,
  4847. 17806, 17807, 17808, 17809, 17810, 17811, 17812, 17813, 17814, 17815, 17816, 17817, 17818, 17819,
  4848. 17820, 17821, 17822, 17823, 17824, 17825, 17826, 17827, 17828, 17829, 17830, 17831, 17832, 17833,
  4849. 17834, 17835, 17836, 17837, 17838, 17839, 17840, 17841, 17842, 17843, 17844, 17845, 17846, 17847,
  4850. 17848, 17849, 17850, 17851, 17852, 17853, 17854, 17855, 17856, 17857, 17858, 17859, 17860, 17861,
  4851. 17862, 17863, 17864, 17865, 17866, 17867, 17868, 17869, 17870, 17871, 17872, 17873, 17874, 17875,
  4852. 17876, 17877, 17878, 17879, 17880, 17881, 17882, 17883, 17884, 17885, 17886, 17887, 17888, 17889,
  4853. 17890, 17891, 17892, 17893, 17894, 17895, 17896, 17897, 17898, 17899, 17900, 17901, 17902, 17903,
  4854. 17904, 17905, 17906, 17907, 17908, 17909, 17910, 17911, 17912, 17913, 17914, 17915, 17916, 17917,
  4855. 17918, 17919, 17920, 17921, 17922, 17923, 17924, 17925, 17926, 17927, 17928, 17929, 17930, 17931,
  4856. 17932, 17933, 17934, 17935, 17936, 17937, 17938, 17939, 17940, 17941, 17942, 17943, 17944, 17945,
  4857. 17946, 17947, 17948, 17949, 17950, 17951, 17952, 17953, 17954, 17955, 17956, 17957, 17958, 17959,
  4858. 17960, 17961, 17962, 17963, 17964, 17965, 17966, 17967, 17968, 17969, 17970, 17971, 17972, 17973,
  4859. 17974, 17975, 17976, 17977, 17978, 17979, 17980, 17981, 17982, 17983, 17984, 17985, 17986, 17987,
  4860. 17988, 17989, 17990, 17991, 17992, 17993, 17994, 17995, 17996, 17997, 17998, 17999, 18000, 18001,
  4861. 18002, 18003, 18004, 18005, 18006, 18007, 18008, 18009, 18010, 18011, 18012, 18013, 18014, 18015,
  4862. 18016, 18017, 18018, 18019, 18020, 18021, 18022, 18023, 18024, 18025, 18026, 18027, 18028, 18029,
  4863. 18030, 18031, 18032, 18033, 18034, 18035, 18036, 18037, 18038, 18039, 18040, 18041, 18042, 18043,
  4864. 18044, 18045, 18046, 18047, 18048, 18049, 18050, 18051, 18052, 18053, 18054, 18055, 18056, 18057,
  4865. 18058, 18059, 18060, 18061, 18062, 18063, 18064, 18065, 18066, 18067, 18068, 18069, 18070, 18071,
  4866. 18072, 18073, 18074, 18075, 18076, 18077, 18078, 18079, 18080, 18081, 18082, 18083, 18084, 18085,
  4867. 18086, 18087, 18088, 18089, 18090, 18091, 18092, 18093, 18094, 18095, 18096, 18097, 18098, 18099,
  4868. 18100, 18101, 18102, 18103, 18104, 18105, 18106, 18107, 18108, 18109, 18110, 18111, 18112, 18113,
  4869. 18114, 18115, 18116, 18117, 18118, 18119, 18120, 18121, 18122, 18123, 18124, 18125, 18126, 18127,
  4870. 18128, 18129, 18130, 18131, 18132, 18133, 18134, 18135, 18136, 18137, 18138, 18139, 18140, 18141,
  4871. 18142, 18143, 18144, 18145, 18146, 18147, 18148, 18149, 18150, 18151, 18152, 18153, 18154, 18155,
  4872. 18156, 18157, 18158, 18159, 18160, 18161, 18162, 18163, 18164, 18165, 18166, 18167, 18168, 18169,
  4873. 18170, 18171, 18172, 18173, 18174, 18175, 18176, 18177, 18178, 18179, 18180, 18181, 18182, 18183,
  4874. 18184, 18185, 18186, 18187, 18188, 18189, 18190, 18191, 18192, 18193, 18194, 18195, 18196, 18197,
  4875. 18198, 18199, 18200, 18201, 18202, 18203, 18204, 18205, 18206, 18207, 18208, 18209, 18210, 18211,
  4876. 18212, 18213, 18214, 18215, 18216, 18217, 18218, 18219, 18220, 18221, 18222, 18223, 18224, 18225,
  4877. 18226, 18227, 18228, 18229, 18230, 18231, 18232, 18233, 18234, 18235, 18236, 18237, 18238, 18239,
  4878. 18240, 18241, 18242, 18243, 18244, 18245, 18246, 18247, 18248, 18249, 18250, 18251, 18252, 18253,
  4879. 18254, 18255, 18256, 18257, 18258, 18259, 18260, 18261, 18262, 18263, 18264, 18265, 18266, 18267,
  4880. 18268, 18269, 18270, 18271, 18272, 18273, 18274, 18275, 18276, 18277, 18278, 18279, 18280, 18281,
  4881. 18282, 18283, 18284, 18285, 18286, 18287, 18288, 18289, 18290, 18291, 18292, 18293, 18294, 18295,
  4882. 18296, 18297, 18298, 18299, 18300, 18301, 18302, 18303, 18304, 18305, 18306, 18307, 18308, 18309,
  4883. 18310, 18311, 18312, 18313, 18314, 18315, 18316, 18317, 18318, 18319, 18320, 18321, 18322, 18323,
  4884. 18324, 18325, 18326, 18327, 18328, 18329, 18330, 18331, 18332, 18333, 18334, 18335, 18336, 18337,
  4885. 18338, 18339, 18340, 18341, 18342, 18343, 18344, 18345, 18346, 18347, 18348, 18349, 18350, 18351,
  4886. 18352, 18353, 18354, 18355, 18356, 18357, 18358, 18359, 18360, 18361, 18362, 18363, 18364, 18365,
  4887. 18366, 18367, 18368, 18369, 18370, 18371, 18372, 18373, 18374, 18375, 18376, 18377, 18378, 18379,
  4888. 18380, 18381, 18382, 18383, 18384, 18385, 18386, 18387, 18388, 18389, 18390, 18391, 18392, 18393,
  4889. 18394, 18395, 18396, 18397, 18398, 18399, 18400, 18401, 18402, 18403, 18404, 18405, 18406, 18407,
  4890. 18408, 18409, 18410, 18411, 18412, 18413, 18414, 18415, 18416, 18417, 18418, 18419, 18420, 18421,
  4891. 18422, 18423, 18424, 18425, 18426, 18427, 18428, 18429, 18430, 18431, 18432, 18433, 18434, 18435,
  4892. 18436, 18437, 18438, 18439, 18440, 18441, 18442, 18443, 18444, 18445, 18446, 18447, 18448, 18449,
  4893. 18450, 18451, 18452, 18453, 18454, 18455, 18456, 18457, 18458, 18459, 18460, 18461, 18462, 18463,
  4894. 18464, 18465, 18466, 18467, 18468, 18469, 18470, 18471, 18472, 18473, 18474, 18475, 18476, 18477,
  4895. 18478, 18479, 18480, 18481, 18482, 18483, 18484, 18485, 18486, 18487, 18488, 18489, 18490, 18491,
  4896. 18492, 18493, 18494, 18495, 18496, 18497, 18498, 18499, 18500, 18501, 18502, 18503, 18504, 18505,
  4897. 18506, 18507, 18508, 18509, 18510, 18511, 18512, 18513, 18514, 18515, 18516, 18517, 18518, 18519,
  4898. 18520, 18521, 18522, 18523, 18524, 18525, 18526, 18527, 18528, 18529, 18530, 18531, 18532, 18533,
  4899. 18534, 18535, 18536, 18537, 18538, 18539, 18540, 18541, 18542, 18543, 18544, 18545, 18546, 18547,
  4900. 18548, 18549, 18550, 18551, 18552, 18553, 18554, 18555, 18556, 18557, 18558, 18559, 18560, 18561,
  4901. 18562, 18563, 18564, 18565, 18566, 18567, 18568, 18569, 18570, 18571, 18572, 18573, 18574, 18575,
  4902. 18576, 18577, 18578, 18579, 18580, 18581, 18582, 18583, 18584, 18585, 18586, 18587, 18588, 18589,
  4903. 18590, 18591, 18592, 18593, 18594, 18595, 18596, 18597, 18598, 18599, 18600, 18601, 18602, 18603,
  4904. 18604, 18605, 18606, 18607, 18608, 18609, 18610, 18611, 18612, 18613, 18614, 18615, 18616, 18617,
  4905. 18618, 18619, 18620, 18621, 18622, 18623, 18624, 18625, 18626, 18627, 18628, 18629, 18630, 18631,
  4906. 18632, 18633, 18634, 18635, 18636, 18637, 18638, 18639, 18640, 18641, 18642, 18643, 18644, 18645,
  4907. 18646, 18647, 18648, 18649, 18650, 18651, 18652, 18653, 18654, 18655, 18656, 18657, 18658, 18659,
  4908. 18660, 18661, 18662, 18663, 18664, 18665, 18666, 18667, 18668, 18669, 18670, 18671, 18672, 18673,
  4909. 18674, 18675, 18676, 18677, 18678, 18679, 18680, 18681, 18682, 18683, 18684, 18685, 18686, 18687,
  4910. 18688, 18689, 18690, 18691, 18692, 18693, 18694, 18695, 18696, 18697, 18698, 18699, 18700, 18701,
  4911. 18702, 18703, 18704, 18705, 18706, 18707, 18708, 18709, 18710, 18711, 18712, 18713, 18714, 18715,
  4912. 18716, 18717, 18718, 18719, 18720, 18721, 18722, 18723, 18724, 18725, 18726, 18727, 18728, 18729,
  4913. 18730, 18731, 18732, 18733, 18734, 18735, 18736, 18737, 18738, 18739, 18740, 18741, 18742, 18743,
  4914. 18744, 18745, 18746, 18747, 18748, 18749, 18750, 18751, 18752, 18753, 18754, 18755, 18756, 18757,
  4915. 18758, 18759, 18760, 18761, 18762, 18763, 18764, 18765, 18766, 18767, 18768, 18769, 18770, 18771,
  4916. 18772, 18773, 18774, 18775, 18776, 18777, 18778, 18779, 18780, 18781, 18782, 18783, 18784, 18785,
  4917. 18786, 18787, 18788, 18789, 18790, 18791, 18792, 18793, 18794, 18795, 18796, 18797, 18798, 18799,
  4918. 18800, 18801, 18802, 18803, 18804, 18805, 18806, 18807, 18808, 18809, 18810, 18811, 18812, 18813,
  4919. 18814, 18815, 18816, 18817, 18818, 18819, 18820, 18821, 18822, 18823, 18824, 18825, 18826, 18827,
  4920. 18828, 18829, 18830, 18831, 18832, 18833, 18834, 18835, 18836, 18837, 18838, 18839, 18840, 18841,
  4921. 18842, 18843, 18844, 18845, 18846, 18847, 18848, 18849, 18850, 18851, 18852, 18853, 18854, 18855,
  4922. 18856, 18857, 18858, 18859, 18860, 18861, 18862, 18863, 18864, 18865, 18866, 18867, 18868, 18869,
  4923. 18870, 18871, 18872, 18873, 18874, 18875, 18876, 18877, 18878, 18879, 18880, 18881, 18882, 18883,
  4924. 18884, 18885, 18886, 18887, 18888, 18889, 18890, 18891, 18892, 18893, 18894, 18895, 18896, 18897,
  4925. 18898, 18899, 18900, 18901, 18902, 18903, 18904, 18905, 18906, 18907, 18908, 18909, 18910, 18911,
  4926. 18912, 18913, 18914, 18915, 18916, 18917, 18918, 18919, 18920, 18921, 18922, 18923, 18924, 18925,
  4927. 18926, 18927, 18928, 18929, 18930, 18931, 18932, 18933, 18934, 18935, 18936, 18937, 18938, 18939,
  4928. 18940, 18941, 18942, 18943, 18944, 18945, 18946, 18947, 18948, 18949, 18950, 18951, 18952, 18953,
  4929. 18954, 18955, 18956, 18957, 18958, 18959, 18960, 18961, 18962, 18963, 18964, 18965, 18966, 18967,
  4930. 18968, 18969, 18970, 18971, 18972, 18973, 18974, 18975, 18976, 18977, 18978, 18979, 18980, 18981,
  4931. 18982, 18983, 18984, 18985, 18986, 18987, 18988, 18989, 18990, 18991, 18992, 18993, 18994, 18995,
  4932. 18996, 18997, 18998, 18999, 19000, 19001, 19002, 19003, 19004, 19005, 19006, 19007, 19008, 19009,
  4933. 19010, 19011, 19012, 19013, 19014, 19015, 19016, 19017, 19018, 19019, 19020, 19021, 19022, 19023,
  4934. 19024, 19025, 19026, 19027, 19028, 19029, 19030, 19031, 19032, 19033, 19034, 19035, 19036, 19037,
  4935. 19038, 19039, 19040, 19041, 19042, 19043, 19044, 19045, 19046, 19047, 19048, 19049, 19050, 19051,
  4936. 19052, 19053, 19054, 19055, 19056, 19057, 19058, 19059, 19060, 19061, 19062, 19063, 19064, 19065,
  4937. 19066, 19067, 19068, 19069, 19070, 19071, 19072, 19073, 19074, 19075, 19076, 19077, 19078, 19079,
  4938. 19080, 19081, 19082, 19083, 19084, 19085, 19086, 19087, 19088, 19089, 19090, 19091, 19092, 19093,
  4939. 19094, 19095, 19096, 19097, 19098, 19099, 19100, 19101, 19102, 19103, 19104, 19105, 19106, 19107,
  4940. 19108, 19109, 19110, 19111, 19112, 19113, 19114, 19115, 19116, 19117, 19118, 19119, 19120, 19121,
  4941. 19122, 19123, 19124, 19125, 19126, 19127, 19128, 19129, 19130, 19131, 19132, 19133, 19134, 19135,
  4942. 19136, 19137, 19138, 19139, 19140, 19141, 19142, 19143, 19144, 19145, 19146, 19147, 19148, 19149,
  4943. 19150, 19151, 19152, 19153, 19154, 19155, 19156, 19157, 19158, 19159, 19160, 19161, 19162, 19163,
  4944. 19164, 19165, 19166, 19167, 19168, 19169, 19170, 19171, 19172, 19173, 19174, 19175, 19176, 19177,
  4945. 19178, 19179, 19180, 19181, 19182, 19183, 19184, 19185, 19186, 19187, 19188, 19189, 19190, 19191,
  4946. 19192, 19193, 19194, 19195, 19196, 19197, 19198, 19199, 19200, 19201, 19202, 19203, 19204, 19205,
  4947. 19206, 19207, 19208, 19209, 19210, 19211, 19212, 19213, 19214, 19215, 19216, 19217, 19218, 19219,
  4948. 19220, 19221, 19222, 19223, 19224, 19225, 19226, 19227, 19228, 19229, 19230, 19231, 19232, 19233,
  4949. 19234, 19235, 19236, 19237, 19238, 19239, 19240, 19241, 19242, 19243, 19244, 19245, 19246, 19247,
  4950. 19248, 19249, 19250, 19251, 19252, 19253, 19254, 19255, 19256, 19257, 19258, 19259, 19260, 19261,
  4951. 19262, 19263, 19264, 19265, 19266, 19267, 19268, 19269, 19270, 19271, 19272, 19273, 19274, 19275,
  4952. 19276, 19277, 19278, 19279, 19280, 19281, 19282, 19283, 19284, 19285, 19286, 19287, 19288, 19289,
  4953. 19290, 19291, 19292, 19293, 19294, 19295, 19296, 19297, 19298, 19299, 19300, 19301, 19302, 19303,
  4954. 19304, 19305, 19306, 19307, 19308, 19309, 19310, 19311, 19312, 19313, 19314, 19315, 19316, 19317,
  4955. 19318, 19319, 19320, 19321, 19322, 19323, 19324, 19325, 19326, 19327, 19328, 19329, 19330, 19331,
  4956. 19332, 19333, 19334, 19335, 19336, 19337, 19338, 19339, 19340, 19341, 19342, 19343, 19344, 19345,
  4957. 19346, 19347, 19348, 19349, 19350, 19351, 19352, 19353, 19354, 19355, 19356, 19357, 19358, 19359,
  4958. 19360, 19361, 19362, 19363, 19364, 19365, 19366, 19367, 19368, 19369, 19370, 19371, 19372, 19373,
  4959. 19374, 19375, 19376, 19377, 19378, 19379, 19380, 19381, 19382, 19383, 19384, 19385, 19386, 19387,
  4960. 19388, 19389, 19390, 19391, 19392, 19393, 19394, 19395, 19396, 19397, 19398, 19399, 19400, 19401,
  4961. 19402, 19403, 19404, 19405, 19406, 19407, 19408, 19409, 19410, 19411, 19412, 19413, 19414, 19415,
  4962. 19416, 19417, 19418, 19419, 19420, 19421, 19422, 19423, 19424, 19425, 19426, 19427, 19428, 19429,
  4963. 19430, 19431, 19432, 19433, 19434, 19435, 19436, 19437, 19438, 19439, 19440, 19441, 19442, 19443,
  4964. 19444, 19445, 19446, 19447, 19448, 19449, 19450, 19451, 19452, 19453, 19454, 19455, 19456, 19457,
  4965. 19458, 19459, 19460, 19461, 19462, 19463, 19464, 19465, 19466, 19467, 19468, 19469, 19470, 19471,
  4966. 19472, 19473, 19474, 19475, 19476, 19477, 19478, 19479, 19480, 19481, 19482, 19483, 19484, 19485,
  4967. 19486, 19487, 19488, 19489, 19490, 19491, 19492, 19493, 19494, 19495, 19496, 19497, 19498, 19499,
  4968. 19500, 19501, 19502, 19503, 19504, 19505, 19506, 19507, 19508, 19509, 19510, 19511, 19512, 19513,
  4969. 19514, 19515, 19516, 19517, 19518, 19519, 19520, 19521, 19522, 19523, 19524, 19525, 19526, 19527,
  4970. 19528, 19529, 19530, 19531, 19532, 19533, 19534, 19535, 19536, 19537, 19538, 19539, 19540, 19541,
  4971. 19542, 19543, 19544, 19545, 19546, 19547, 19548, 19549, 19550, 19551, 19552, 19553, 19554, 19555,
  4972. 19556, 19557, 19558, 19559, 19560, 19561, 19562, 19563, 19564, 19565, 19566, 19567, 19568, 19569,
  4973. 19570, 19571, 19572, 19573, 19574, 19575, 19576, 19577, 19578, 19579, 19580, 19581, 19582, 19583,
  4974. 19584, 19585, 19586, 19587, 19588, 19589, 19590, 19591, 19592, 19593, 19594, 19595, 19596, 19597,
  4975. 19598, 19599, 19600, 19601, 19602, 19603, 19604, 19605, 19606, 19607, 19608, 19609, 19610, 19611,
  4976. 19612, 19613, 19614, 19615, 19616, 19617, 19618, 19619, 19620, 19621, 19622, 19623, 19624, 19625,
  4977. 19626, 19627, 19628, 19629, 19630, 19631, 19632, 19633, 19634, 19635, 19636, 19637, 19638, 19639,
  4978. 19640, 19641, 19642, 19643, 19644, 19645, 19646, 19647, 19648, 19649, 19650, 19651, 19652, 19653,
  4979. 19654, 19655, 19656, 19657, 19658, 19659, 19660, 19661, 19662, 19663, 19664, 19665, 19666, 19667,
  4980. 19668, 19669, 19670, 19671, 19672, 19673, 19674, 19675, 19676, 19677, 19678, 19679, 19680, 19681,
  4981. 19682, 19683, 19684, 19685, 19686, 19687, 19688, 19689, 19690, 19691, 19692, 19693, 19694, 19695,
  4982. 19696, 19697, 19698, 19699, 19700, 19701, 19702, 19703, 19704, 19705, 19706, 19707, 19708, 19709,
  4983. 19710, 19711, 19712, 19713, 19714, 19715, 19716, 19717, 19718, 19719, 19720, 19721, 19722, 19723,
  4984. 19724, 19725, 19726, 19727, 19728, 19729, 19730, 19731, 19732, 19733, 19734, 19735, 19736, 19737,
  4985. 19738, 19739, 19740, 19741, 19742, 19743, 19744, 19745, 19746, 19747, 19748, 19749, 19750, 19751,
  4986. 19752, 19753, 19754, 19755, 19756, 19757, 19758, 19759, 19760, 19761, 19762, 19763, 19764, 19765,
  4987. 19766, 19767, 19768, 19769, 19770, 19771, 19772, 19773, 19774, 19775, 19776, 19777, 19778, 19779,
  4988. 19780, 19781, 19782, 19783, 19784, 19785, 19786, 19787, 19788, 19789, 19790, 19791, 19792, 19793,
  4989. 19794, 19795, 19796, 19797, 19798, 19799, 19800, 19801, 19802, 19803, 19804, 19805, 19806, 19807,
  4990. 19808, 19809, 19810, 19811, 19812, 19813, 19814, 19815, 19816, 19817, 19818, 19819, 19820, 19821,
  4991. 19822, 19823, 19824, 19825, 19826, 19827, 19828, 19829, 19830, 19831, 19832, 19833, 19834, 19835,
  4992. 19836, 19837, 19838, 19839, 19840, 19841, 19842, 19843, 19844, 19845, 19846, 19847, 19848, 19849,
  4993. 19850, 19851, 19852, 19853, 19854, 19855, 19856, 19857, 19858, 19859, 19860, 19861, 19862, 19863,
  4994. 19864, 19865, 19866, 19867, 19868, 19869, 19870, 19871, 19872, 19873, 19874, 19875, 19876, 19877,
  4995. 19878, 19879, 19880, 19881, 19882, 19883, 19884, 19885, 19886, 19887, 19888, 19889, 19890, 19891,
  4996. 19892, 19893, 19894, 19895, 19896, 19897, 19898, 19899, 19900, 19901, 19902, 19903, 19904, 19905,
  4997. 19906, 19907, 19908, 19909, 19910, 19911, 19912, 19913, 19914, 19915, 19916, 19917, 19918, 19919,
  4998. 19920, 19921, 19922, 19923, 19924, 19925, 19926, 19927, 19928, 19929, 19930, 19931, 19932, 19933,
  4999. 19934, 19935, 19936, 19937, 19938, 19939, 19940, 19941, 19942, 19943, 19944, 19945, 19946, 19947,
  5000. 19948, 19949, 19950, 19951, 19952, 19953, 19954, 19955, 19956, 19957, 19958, 19959, 19960, 19961,
  5001. 19962, 19963, 19964, 19965, 19966, 19967, 19968, 19969, 19970, 19971, 19972, 19973, 19974, 19975,
  5002. 19976, 19977, 19978, 19979, 19980, 19981, 19982, 19983, 19984, 19985, 19986, 19987, 19988, 19989,
  5003. 19990, 19991, 19992, 19993, 19994, 19995, 19996, 19997, 19998, 19999
  5004. };
  5005. enum e_Interiors
  5006. {
  5007. e_InteriorName[32],
  5008. e_Interior,
  5009. Float: e_InteriorX,
  5010. Float: e_InteriorY,
  5011. Float: e_InteriorZ,
  5012. Float: e_InteriorA
  5013. };
  5014. new EnteringVehicle[MAX_PLAYERS];
  5015. new EnteringVeh_Timer[MAX_PLAYERS];
  5016. // interiors.txt
  5017. new const g_Interiors[][e_Interiors] =
  5018. {
  5019. {"Ganton Gym", 5, 770.8033, -0.7033, 1000.7267, 22.8599},
  5020. {"Brothel 1", 3, 974.0177, -9.5937, 1001.1484, 22.6045},
  5021. {"Brothel 2", 3, 961.9308, -51.9071, 1001.1172, 95.5381},
  5022. {"Inside Track Betting", 3, 830.6016, 5.9404, 1004.1797, 125.8149},
  5023. {"Blastin' Fools Records", 3, 1037.8276, 0.397, 1001.2845, 353.9335},
  5024. {"The Big Spread Ranch", 3, 1212.1489, -28.5388, 1000.9531, 170.5692},
  5025. {"Warehouse 1", 18, 1290.4106, 1.9512, 1001.0201, 179.9419},
  5026. {"Warehouse 2", 1, 1412.1472, -2.2836, 1000.9241, 114.661},
  5027. {"B Dup's Apartment", 3, 1527.0468, -12.0236, 1002.0971, 350.0013},
  5028. {"B Dup's Crack Palace", 2, 1523.5098, -47.8211, 1002.2699, 262.7038},
  5029. {"Wheel Arch Angels", 3, 612.2191, -123.9028, 997.9922, 266.5704},
  5030. {"OG Loc's House", 3, 512.9291, -11.6929, 1001.5653, 198.7669},
  5031. {"Barber Shop", 3, 418.4666, -80.4595, 1001.8047, 343.2358},
  5032. {"Planning Department", 3, 386.5259, 173.6381, 1008.3828, 63.7399},
  5033. {"Las Venturas Police Department", 3, 288.4723, 170.0647, 1007.1794, 22.0477},
  5034. {"Pro-Laps", 3, 206.4627, -137.7076, 1003.0938, 10.9347},
  5035. {"Sex Shop", 3, -100.2674, -22.9376, 1000.7188, 17.285},
  5036. {"Las Venturas Tattoo parlor", 3, -201.2236, -43.2465, 1002.2734, 45.8613},
  5037. {"Lost San Fierro Tattoo parlor", 17, -202.9381, -6.7006, 1002.2734, 204.2693},
  5038. {"24/7 (version 1)", 17, -25.7220, -187.8216, 1003.5469, 5.0760},
  5039. {"Diner 1", 5, 454.9853, -107.2548, 999.4376, 309.0195},
  5040. {"Pizza Stack", 5, 372.5565, -131.3607, 1001.4922, 354.2285},
  5041. {"Rusty Brown's Donuts", 17, 378.026, -190.5155, 1000.6328, 141.0245},
  5042. {"Ammu-nation", 7, 315.244, -140.8858, 999.6016, 7.4226},
  5043. {"Victim", 5, 225.0306, -9.1838, 1002.218, 85.5322},
  5044. {"Loco Low Co", 2, 611.3536, -77.5574, 997.9995, 320.9263},
  5045. {"San Fierro Police Department", 10, 246.0688, 108.9703, 1003.2188, 0.2922},
  5046. {"24/7 (version 2 - large)", 10, 6.0856, -28.8966, 1003.5494, 5.0365},
  5047. {"Las Venturas Gym", 7, 773.7318, -74.6957, 1000.6542, 5.2304},
  5048. {"Transfenders", 1, 621.4528, -23.7289, 1000.9219, 15.6789},
  5049. {"World of Coq", 1, 445.6003, -6.9823, 1000.7344, 172.2105},
  5050. {"Ammu-nation (version 2)", 1, 285.8361, -39.0166, 1001.5156, 0.7529},
  5051. {"SubUrban", 1, 204.1174, -46.8047, 1001.8047, 357.5777},
  5052. {"Denise's Bedroom", 1, 245.2307, 304.7632, 999.1484, 273.4364},
  5053. {"Helena's Barn", 3, 290.623, 309.0622, 999.1484, 89.9164},
  5054. {"Barbara's Love nest", 5, 322.5014, 303.6906, 999.1484, 8.1747},
  5055. {"San Fierro Garage", 1, -2041.2334, 178.3969, 28.8465, 156.2153},
  5056. {"Oval Stadium", 1, -1402.6613, 106.3897, 1032.2734, 105.1356},
  5057. {"8-Track Stadium", 7, -1403.0116, -250.4526, 1043.5341, 355.8576},
  5058. {"The Pig Pen (strip club 2)", 2, 1204.6689, -13.5429, 1000.9219, 350.0204},
  5059. {"Four Dragons", 10, 2016.1156, 1017.1541, 996.875, 88.0055},
  5060. {"Liberty City", 1, -741.8495, 493.0036, 1371.9766, 71.7782},
  5061. {"Ryder's house", 2, 2447.8704, -1704.4509, 1013.5078, 314.5253},
  5062. {"Sweet's House", 1, 2527.0176, -1679.2076, 1015.4986, 260.9709},
  5063. {"RC Battlefield", 10, -1129.8909, 1057.5424, 1346.4141, 274.5268},
  5064. {"The Johnson House", 3, 2496.0549, -1695.1749, 1014.7422, 179.2174},
  5065. {"Burger shot", 10, 366.0248, -73.3478, 1001.5078, 292.0084},
  5066. {"Caligula's Casino", 1, 2233.9363, 1711.8038, 1011.6312, 184.3891},
  5067. {"Katie's Lovenest", 2, 269.6405, 305.9512, 999.1484, 215.6625},
  5068. {"Barber Shop 2 (Reece's)", 2, 414.2987, -18.8044, 1001.8047, 41.4265},
  5069. {"Angel Pine Trailer", 2, 1.1853, -3.2387, 999.4284, 87.5718},
  5070. {"24/7 (version 3)", 18, -30.9875, -89.6806, 1003.5469, 359.8401},
  5071. {"Zip", 18, 161.4048, -94.2416, 1001.8047, 0.7938},
  5072. {"The Pleasure Domes", 3, -2638.8232, 1407.3395, 906.4609, 94.6794},
  5073. {"Madd Dogg's Mansion", 5, 1267.8407, -776.9587, 1091.9063, 231.3418},
  5074. {"Big Smoke's Crack Palace", 2, 2536.5322, -1294.8425, 1044.125, 254.9548},
  5075. {"Burning Desire Building", 5, 2350.1597, -1181.0658, 1027.9766, 99.1864},
  5076. {"Wu-Zi Mu's", 1, -2158.6731, 642.09, 1052.375, 86.5402},
  5077. {"Abandoned AC tower", 10, 419.8936, 2537.1155, 10.0000, 67.6537},
  5078. {"Wardrobe/Changing room", 14, 256.9047, -41.6537, 1002.0234, 85.8774},
  5079. {"Didier Sachs", 14, 204.1658, -165.7678, 1000.5234, 181.7583},
  5080. {"Casino (Redsands West)", 12, 1133.35, -7.8462, 1000.6797, 165.8482},
  5081. {"Kickstart Stadium", 14, -1420.4277, 1616.9221, 1052.5313, 159.1255},
  5082. {"Club", 17, 493.1443, -24.2607, 1000.6797, 356.9864},
  5083. {"Atrium", 18, 1727.2853, -1642.9451, 20.2254, 172.4193},
  5084. {"Los Santos Tattoo Parlor", 16, -202.842, -24.0325, 1002.2734, 252.8154},
  5085. {"Safe House group 1", 5, 2233.6919, -1112.8107, 1050.8828, 8.6483},
  5086. {"Safe House group 2", 6, 1211.2484, 1049.0234, 359.941, 170.9341},
  5087. {"Safe House group 3", 9, 2319.1272, -1023.9562, 1050.2109, 167.3959},
  5088. {"Safe House group 4", 10, 2261.0977, -1137.8833, 1050.6328, 266.88},
  5089. {"Sherman Dam", 17, -944.2402, 1886.1536, 5.0051, 179.8548},
  5090. {"24/7 (version 4)", 16, -26.1856, -140.9164, 1003.5469, 2.9087},
  5091. {"Jefferson Motel", 15, 2217.281, -1150.5349, 1025.7969, 273.7328},
  5092. {"Jet Interior", 1, 1.5491, 23.3183, 1199.5938, 359.9054},
  5093. {"The Welcome Pump", 1, 681.6216, -451.8933, -25.6172, 166.166},
  5094. {"Burglary House X1", 3, 234.6087, 1187.8195, 1080.2578, 349.4844},
  5095. {"Burglary House X2", 2, 225.5707, 1240.0643, 1082.1406, 96.2852},
  5096. {"Burglary House X3", 1, 224.288, 1289.1907, 1082.1406, 359.868},
  5097. {"Burglary House X4", 5, 239.2819, 1114.1991, 1080.9922, 270.2654},
  5098. {"Binco", 15, 207.5219, -109.7448, 1005.1328, 358.62},
  5099. {"4 Burglary houses", 15, 295.1391, 1473.3719, 1080.2578, 352.9526},
  5100. {"Blood Bowl Stadium", 15, -1417.8927, 932.4482, 1041.5313, 0.7013},
  5101. {"Budget Inn Motel Room", 12, 446.3247, 509.9662, 1001.4195, 330.5671},
  5102. {"Palamino Bank", 0, 2306.3826, -15.2365, 26.7496, 274.49},
  5103. {"Palamino Diner", 0, 2331.8984, 6.7816, 26.5032, 100.2357},
  5104. {"Dillimore Gas Station", 0, 663.0588, -573.6274, 16.3359, 264.9829},
  5105. {"Lil' Probe Inn", 18, -227.5703, 1401.5544, 27.7656, 269.2978},
  5106. {"Torreno's Ranch", 0, -688.1496, 942.0826, 13.6328, 177.6574},
  5107. {"Zombotech - lobby area", 0, -1916.1268, 714.8617, 46.5625, 152.2839},
  5108. {"Crypt in LS cemetery (temple)", 0, 818.7714, -1102.8689, 25.794, 91.1439},
  5109. {"Blueberry Liquor Store", 0, 255.2083, -59.6753, 1.5703, 1.4645},
  5110. {"Pair of Burglary Houses", 2, 446.626, 1397.738, 1084.3047, 343.9647},
  5111. {"Crack Den", 5, 227.3922, 1114.6572, 1080.9985, 267.459},
  5112. {"Burglary House X11", 5, 227.7559, 1114.3844, 1080.9922, 266.2624},
  5113. {"Burglary House X12", 4, 261.1165, 1287.2197, 1080.2578, 178.9149},
  5114. {"Ammu-nation (version 3)", 4, 291.7626, -80.1306, 1001.5156, 290.2195},
  5115. {"Jay's Diner", 4, 449.0172, -88.9894, 999.5547, 89.6608},
  5116. {"24/7 (version 5)", 4, -27.844, -26.6737, 1003.5573, 184.3118},
  5117. {"Warehouse 3", 0, 2135.2004, -2276.2815, 20.6719, 318.59},
  5118. {"Michelle's Love Nest*", 4, 306.1966, 307.819, 1003.3047, 203.1354},
  5119. {"Burglary House X14", 10, 24.3769, 1341.1829, 1084.375, 8.3305},
  5120. {"Sindacco Abatoir", 1, 963.0586, 2159.7563, 1011.0303, 175.313},
  5121. {"K.A.C.C. Military Fuels Depot", 0, 2548.4807, 2823.7429, 10.8203, 270.6003},
  5122. {"Area 69", 0, 215.1515, 1874.0579, 13.1406, 177.5538},
  5123. {"Burglary House X13", 4, 221.6766, 1142.4962, 1082.6094, 184.9618},
  5124. {"Unused Safe House", 12, 2323.7063, -1147.6509, 1050.7101, 206.5352},
  5125. {"Millie's Bedroom", 6, 344.9984, 307.1824, 999.1557, 193.643},
  5126. {"Barber Shop", 12, 411.9707, -51.9217, 1001.8984, 173.3449},
  5127. {"Dirtbike Stadium", 4, -1421.5618, -663.8262, 1059.5569, 170.9341},
  5128. {"Cobra Gym", 6, 773.8887, -47.7698, 1000.5859, 10.7161},
  5129. {"Los Santos Police Department", 6, 246.6695, 65.8039, 1003.6406, 7.9562},
  5130. {"Los Santos Airport", 14, -1864.9434, 55.7325, 1055.5276, 85.8541},
  5131. {"Burglary House X15", 4, -262.1759, 1456.6158, 1084.3672, 82.459},
  5132. {"Burglary House X16", 5, 22.861, 1404.9165, 1084.4297, 349.6158},
  5133. {"Burglary House X17", 5, 140.3679, 1367.8837, 1083.8621, 349.2372},
  5134. {"Bike School", 3, 1494.8589, 1306.48, 1093.2953, 196.065},
  5135. {"Francis International Airport", 14, -1813.213, -58.012, 1058.9641, 335.3199},
  5136. {"Vice Stadium", 16, -1401.067, 1265.3706, 1039.8672, 178.6483},
  5137. {"Burglary House X18", 6, 234.2826, 1065.229, 1084.2101, 4.3864},
  5138. {"Burglary House X19", 6, -68.5145, 1353.8485, 1080.2109, 3.5742},
  5139. {"Zero's RC Shop", 6, -2240.1028, 136.973, 1035.4141, 269.0954},
  5140. {"Ammu-nation (version 4)", 6, 297.144, -109.8702, 1001.5156, 20.2254},
  5141. {"Ammu-nation (version 5)", 6, 316.5025, -167.6272, 999.5938, 10.3031},
  5142. {"Burglary House X20", 15, -285.2511, 1471.197, 1084.375, 85.6547},
  5143. {"24/7 (version 6)", 6, -26.8339, -55.5846, 1003.5469, 3.9528},
  5144. {"Secret Valley Diner", 6, 442.1295, -52.4782, 999.7167, 177.9394},
  5145. {"Rosenberg's Office in Caligulas", 2, 2182.2017, 1628.5848, 1043.8723, 224.8601},
  5146. {"Fanny Batter's Whore House", 6, 748.4623, 1438.2378, 1102.9531, 0.6069},
  5147. {"Colonel Furhberger's", 8, 2807.3604, -1171.7048, 1025.5703, 193.7117},
  5148. {"Cluckin' Bell", 9, 366.0002, -9.4338, 1001.8516, 160.528},
  5149. {"The Camel's Toe Safehouse", 1, 2216.1282, -1076.3052, 1050.4844, 86.428},
  5150. {"Caligula's Roof", 1, 2268.5156, 1647.7682, 1084.2344, 99.7331},
  5151. {"Old Venturas Strip Casino", 2, 2236.6997, -1078.9478, 1049.0234, 2.5706},
  5152. {"Driving School", 3, -2031.1196, -115.8287, 1035.1719, 190.1877},
  5153. {"Verdant Bluffs Safehouse", 8, 2365.1089, -1133.0795, 1050.875, 177.3947},
  5154. {"Bike School", 0, 1168.512, 1360.1145, 10.9293, 196.5933},
  5155. {"Andromada", 9, 315.4544, 976.5972, 1960.8511, 359.6368},
  5156. {"Four Dragons' Janitor's Office", 10, 1893.0731, 1017.8958, 31.8828, 86.1044},
  5157. {"Bar", 11, 501.9578, -70.5648, 998.7578, 171.5706},
  5158. {"Burglary House X21", 8, -42.5267, 1408.23, 1084.4297, 172.068},
  5159. {"Willowfield Safehouse", 11, 2283.3118, 1139.307, 1050.8984, 19.7032},
  5160. {"Burglary House X22", 9, 84.9244, 1324.2983, 1083.8594, 159.5582},
  5161. {"Burglary House X23", 9, 260.7421, 1238.2261, 1084.2578, 84.3084},
  5162. {"Otto's Autos", 0, -1658.1656, 1215.0002, 7.25, 103.9074},
  5163. {"Wang Cars", 0, -1961.6281, 295.2378, 35.4688, 264.4891}
  5164. };
  5165. main(){}
  5166. // Whirlpool by Y_Less.
  5167. native WP_Hash(buffer[], len, const str[]);
  5168. // IsValidVehicle function. Undefined by default.
  5169. native IsValidVehicle(vehicleid);
  5170. native gpci(playerid, serial[], len);
  5171. /*
  5172. CreateDynamic3DTextLabel(
  5173. const text[],
  5174. color,
  5175. Float:x,
  5176. Float:y,
  5177. Float:z,
  5178. Float:drawdistance,
  5179. attachedplayer = INVALID_PLAYER_ID,
  5180. attachedvehicle = INVALID_VEHICLE_ID,
  5181. testlos = 0,
  5182. worldid = -1,
  5183. interiorid = -1,
  5184. playerid = -1
  5185. );
  5186. */
  5187. /*---------------------------------------------------------------------------
  5188. Functions
  5189. The functions below are used for this gamemode.
  5190. Any functions not created by me will contain credits.
  5191. ---------------------------------------------------------------------------*/
  5192. mysql_isnull(const string[])
  5193. {
  5194. return (!strcmp(string, "NULL"));
  5195. }
  5196. mysql_escaped(const string[])
  5197. {
  5198. new
  5199. retString[300];
  5200. mysql_real_escape_string(string, retString, gConnection);
  5201. return retString;
  5202. }
  5203. /*Random(min, max)
  5204. {
  5205. return random(max - min) + min;
  5206. }*/
  5207. RGBAToARGB(rgba)
  5208. {
  5209. return (rgba >>> 8 | rgba << 24);
  5210. }
  5211. KickPlayer(playerid)
  5212. {
  5213. gPlayerKicked[playerid] = 1;
  5214. return SetTimerEx("DelayKick", 400, false, "i", playerid);
  5215. }
  5216. ReturnElapsed(total)
  5217. {
  5218. new
  5219. string[16],
  5220. hours,
  5221. minutes,
  5222. seconds
  5223. ;
  5224. seconds = total;
  5225. hours = seconds / 3600;
  5226. seconds -= hours * 3600;
  5227. minutes = seconds / 60;
  5228. seconds -= minutes * 60;
  5229. if (total >= 3600) {
  5230. format(string, sizeof(string), "%02d:%02d:%02d", hours, minutes, seconds);
  5231. } else {
  5232. format(string, sizeof(string), "%02d:%02d", minutes, seconds);
  5233. }
  5234. return string;
  5235. }
  5236. GetHelpRequest(playerid)
  5237. {
  5238. new
  5239. string[128];
  5240. strunpack(string, gHelpRequest[playerid]);
  5241. return string;
  5242. }
  5243. GetPrisonInterior()
  5244. {
  5245. return g_StaticBuildings[BUILDING_PRISON][e_Interior];
  5246. }
  5247. GetPrisonVirtualWorld()
  5248. {
  5249. return g_StaticBuildings[BUILDING_PRISON][e_VirtualWorld];
  5250. }
  5251. Float:GetPlayerHealthEx(playerid)
  5252. {
  5253. new
  5254. Float:health;
  5255. GetPlayerHealth(playerid, health);
  5256. return health;
  5257. }
  5258. Float:GetPlayerArmourEx(playerid)
  5259. {
  5260. new
  5261. Float:health;
  5262. GetPlayerArmour(playerid, health);
  5263. return health;
  5264. }
  5265. Float:GetVehicleHealthEx(vehicleid)
  5266. {
  5267. new
  5268. Float:health;
  5269. GetVehicleHealth(vehicleid, health);
  5270. return health;
  5271. }
  5272. DestroyVehicleEx(vehicleid)
  5273. {
  5274. if (IsValidVehicle(vehicleid))
  5275. {
  5276. ClearVehicleObjects(vehicleid);
  5277. ResetVehicleStream(vehicleid);
  5278. }
  5279. return DestroyVehicle(vehicleid);
  5280. }
  5281. GetRepairCost(vehicleid)
  5282. {
  5283. return (1000 - floatround(GetVehicleHealthEx(vehicleid))) / 2;
  5284. }
  5285. /*GetCurrentWeaponSerial(playerid)
  5286. {
  5287. new weaponid = GetPlayerWeapon(playerid);
  5288. if (weaponid == Weapons[playerid][wPrimary]) {
  5289. return Weapons[playerid][wPrimarySerial];
  5290. } else if (weaponid == Weapons[playerid][wSecondary]) {
  5291. return Weapons[playerid][wSecondarySerial];
  5292. } else if (weaponid == Weapons[playerid][wTertiary]) {
  5293. return Weapons[playerid][wTertiarySerial];
  5294. }
  5295. return 0;
  5296. }*/
  5297. ApplyChatAnimation(playerid, name[])
  5298. {
  5299. if (IsPlayerInAnyVehicle(playerid))
  5300. ApplyAnimation(playerid, "GANGS", name, 4.1, 1, 0, 0, 0, 0, 1);
  5301. else
  5302. ApplyAnimation(playerid, "GANGS", name, 4.1, 1, 1, 1, 1, 1, 1);
  5303. }
  5304. PlayChatStyle(playerid, const text[])
  5305. {
  5306. switch (Players[playerid][pChatStyle])
  5307. {
  5308. case 1: ApplyChatAnimation(playerid, "prtial_gngtlkA");
  5309. case 2: ApplyChatAnimation(playerid, "prtial_gngtlkB");
  5310. case 3: ApplyChatAnimation(playerid, "prtial_gngtlkC");
  5311. case 4: ApplyChatAnimation(playerid, "prtial_gngtlkD");
  5312. case 5: ApplyChatAnimation(playerid, "prtial_gngtlkE");
  5313. case 6: ApplyChatAnimation(playerid, "prtial_gngtlkF");
  5314. case 7: ApplyChatAnimation(playerid, "prtial_gngtlkG");
  5315. case 8: ApplyChatAnimation(playerid, "prtial_gngtlkH");
  5316. default: ApplyChatAnimation(playerid, "prtial_gngtlkC");
  5317. }
  5318. if (!Players[playerid][pChatting])
  5319. {
  5320. SetTimerEx("StopChatting", strlen(text) * 100, false, "i", playerid);
  5321. Players[playerid][pChatting] = 1;
  5322. }
  5323. }
  5324. PlayAnimation(playerid, library[], name[], Float:speed, loop, lockx, locky, freeze, time, forcesync)
  5325. {
  5326. ApplyAnimation(playerid, library, "null", 0.0, 0, 0, 0, 0, 0, 1);
  5327. ApplyAnimation(playerid, library, name, speed, loop, lockx, locky, freeze, time, forcesync);
  5328. if (loop > 0 || freeze > 0)
  5329. {
  5330. Players[playerid][pAnimation] = 1;
  5331. ShowFooterText(playerid, "Press ~r~~k~~PED_SPRINT~~w~ to stop the animation.");
  5332. }
  5333. }
  5334. IsValidSkin(skin)
  5335. {
  5336. return (0 <= skin <= 311) && skin != 74;
  5337. }
  5338. IsVehicleOccupied(vehicleid)
  5339. {
  5340. return GetVehicleDriver(vehicleid) != INVALID_PLAYER_ID;
  5341. }
  5342. IsAnimationPermitted(playerid)
  5343. {
  5344. return (GetPlayerState(playerid) == PLAYER_STATE_ONFOOT && !Players[playerid][pTazed] && !Players[playerid][pDeathState] && !Players[playerid][pMining]);
  5345. }
  5346. IsPlayerHoldingTazer(playerid)
  5347. {
  5348. return (GetPlayerWeapon(playerid) == WEAPON_SILENCED && Players[playerid][pTazer]);
  5349. }
  5350. IsPlayerInRangeOfLocker(playerid)
  5351. {
  5352. return (Players[playerid][pFaction] != INVALID_ID && IsPlayerNearPoint(playerid, 2.0, Factions[Players[playerid][pFaction]][fcLockerX], Factions[Players[playerid][pFaction]][fcLockerY], Factions[Players[playerid][pFaction]][fcLockerZ], Factions[Players[playerid][pFaction]][fcLockerInt], Factions[Players[playerid][pFaction]][fcLockerWorld]));
  5353. }
  5354. IsPlayerInFaction(playerid, type)
  5355. {
  5356. return (Players[playerid][pFaction] != INVALID_ID && Factions[Players[playerid][pFaction]][fcType] == type);
  5357. }
  5358. IsPlayerInAir(playerid)
  5359. {
  5360. switch (GetPlayerAnimationIndex(playerid))
  5361. {
  5362. case 958..979, 1130, 1195, 1197, 1198:
  5363. return 1;
  5364. }
  5365. return 0;
  5366. }
  5367. IsPlayerSprinting(playerid)
  5368. {
  5369. new
  5370. keys,
  5371. ud,
  5372. lr;
  5373. GetPlayerKeys(playerid, keys, ud, lr);
  5374. if ((keys & KEY_SPRINT) && (1222 <= GetPlayerAnimationIndex(playerid) <= 1236))
  5375. return 1;
  5376. return 0;
  5377. }
  5378. IsPlayerInside(playerid)
  5379. {
  5380. return GetPlayerInterior(playerid) > 0 && GetPlayerVirtualWorld(playerid) > 0;
  5381. }
  5382. IsPlayerInBank(playerid)
  5383. {
  5384. return GetPlayerInterior(playerid) > 0 && IsPlayerInRangeOfPoint(playerid, 5.0, 196.8612, 1723.2732, 1231.4624);
  5385. }
  5386. IsPlayerSelectingOutfit(playerid)
  5387. {
  5388. return Players[playerid][pBuyOutfit] != INVALID_ID || Players[playerid][pOutfitIndex] != INVALID_ID;
  5389. }
  5390. IsPlayerInjured(playerid)
  5391. {
  5392. return Players[playerid][pDeathState] != DEATH_STATE_NONE;
  5393. }
  5394. IsPlayerBugged(playerid)
  5395. {
  5396. return (IsPlayerAtInvalidCoords(playerid) && GetPlayerHealthEx(playerid) == 0.0);
  5397. }
  5398. IsPlayerSpectating(playerid)
  5399. {
  5400. return (GetPlayerState(playerid) == PLAYER_STATE_SPECTATING);
  5401. }
  5402. IsPlayerLoggedIn(playerid)
  5403. {
  5404. return (Players[playerid][pLoggedIn]);
  5405. }
  5406. IsPlayerPaused(playerid)
  5407. {
  5408. return (Players[playerid][pPaused]);
  5409. }
  5410. IsPlayerJailed(playerid)
  5411. {
  5412. return (Players[playerid][pJailType] > 0);
  5413. }
  5414. IsWeaponHideable(weaponid)
  5415. {
  5416. return (22 <= weaponid <= 24) || (weaponid == 28 || weaponid == 32) || (weaponid == 4) || (weaponid == 3);
  5417. }
  5418. IsHolsterWeapon(weaponid)
  5419. {
  5420. return (weaponid == 2) || (2 <= weaponid <= 9) || (22 <= weaponid <= 34);
  5421. }
  5422. IsDrivebyWeapon(weaponid)
  5423. {
  5424. return (28 <= weaponid <= 32) || weaponid == 22 || weaponid == 25;
  5425. }
  5426. GetPausedTime(playerid)
  5427. {
  5428. if (IsPlayerPaused(playerid))
  5429. {
  5430. return (gettime() - Players[playerid][pLastUpdate]);
  5431. }
  5432. return 0;
  5433. }
  5434. IsValidPayphoneID(id)
  5435. {
  5436. return (id >= 0 && id < MAX_PAYPHONES) && Payphones[id][phExists];
  5437. }
  5438. IsValidSprayTagID(id)
  5439. {
  5440. return (id >= 0 && id < MAX_SPRAY_TAGS) && SprayTags[id][sExists];
  5441. }
  5442. IsValidTagID(id)
  5443. {
  5444. return (id >= 0 && id < MAX_TAGS) && Tags[id][tagExists];
  5445. }
  5446. IsValidAutoShopID(id)
  5447. {
  5448. return (id >= 0 && id < MAX_AUTO_SHOPS) && AutoShops[id][asExists];
  5449. }
  5450. IsValidObjectID(id)
  5451. {
  5452. return (id >= 0 && id < MAX_SCRIPT_OBJECTS) && Objects[id][oExists];
  5453. }
  5454. IsValidGateID(id)
  5455. {
  5456. return (id >= 0 && id < MAX_GATES) && Gates[id][gExists];
  5457. }
  5458. IsValidLabelID(id)
  5459. {
  5460. return (id >= 0 && id < MAX_DYNAMIC_LABELS) && Labels[id][lExists];
  5461. }
  5462. IsValidArrestPointID(id)
  5463. {
  5464. return (id >= 0 && id < MAX_ARREST_POINTS) && ArrestPoints[id][apExists];
  5465. }
  5466. IsValidFactionID(id)
  5467. {
  5468. return (id >= 0 && id < MAX_FACTIONS) && Factions[id][fcExists];
  5469. }
  5470. IsValidFurnitureID(id)
  5471. {
  5472. return (id >= 0 && id < MAX_FURNITURE) && Furniture[id][fExists];
  5473. }
  5474. IsValidVehicleID(id)
  5475. {
  5476. return (id >= 0 && id < MAX_CARS) && Vehicles[id][vExists];
  5477. }
  5478. IsValidHouseID(id)
  5479. {
  5480. return (id >= 0 && id < MAX_HOUSES) && Houses[id][hExists];
  5481. }
  5482. IsValidCompanyID(id)
  5483. {
  5484. return (id >= 0 && id < MAX_COMPANIES) && Companies[id][cExists];
  5485. }
  5486. IsValidBuildingID(id)
  5487. {
  5488. return (id >= 0 && id < MAX_BUILDINGS) && Buildings[id][bExists];
  5489. }
  5490. IsValidPumpID(id)
  5491. {
  5492. return (id >= 0 && id < MAX_GAS_PUMPS) && GasPumps[id][gpExists];
  5493. }
  5494. IsValidATMID(id)
  5495. {
  5496. return (id >= 0 && id < MAX_ATMS) && ATM[id][atmExists];
  5497. }
  5498. IsValidTrashbinID(id)
  5499. {
  5500. return (id >= 0 && id < MAX_TRASH_BINS) && Trashbins[id][tExists];
  5501. }
  5502. IsTestVehicle(vehicleid)
  5503. {
  5504. //return (gTestVehicles[0] <= vehicleid <= gTestVehicles[3]);
  5505. return (vehicleid == gTestVehicles[0] || vehicleid == gTestVehicles[1] || vehicleid == gTestVehicles[2] || vehicleid == gTestVehicles[3]);
  5506. }
  5507. GetDonatorLevel(level)
  5508. {
  5509. new str[12];
  5510. if (level == 0)
  5511. str = "None";
  5512. else if (level == DONATOR_BASIC)
  5513. str = "Basic";
  5514. else if (level == DONATOR_STANDARD)
  5515. str = "Standard";
  5516. else if (level == DONATOR_INVESTOR)
  5517. str = "Investor";
  5518. else if (level == DONATOR_PREMIUM)
  5519. str = "Premium";
  5520. return str;
  5521. }
  5522. GetSupporterLevel(level)
  5523. {
  5524. new str[24];
  5525. if (level == 0)
  5526. str = "None";
  5527. else if (level == 1)
  5528. str = "Supporter";
  5529. else if (level == 2)
  5530. str = "Head Supporter";
  5531. return str;
  5532. }
  5533. GetMapperLevel(level)
  5534. {
  5535. new str[12];
  5536. if (level == 0)
  5537. str = "None";
  5538. else if (level == 1)
  5539. str = "Mapper";
  5540. else if (level == 2)
  5541. str = "Head Mapper";
  5542. return str;
  5543. }
  5544. GetFactionModLevel(level)
  5545. {
  5546. new str[20];
  5547. if (level == 0)
  5548. str = "None";
  5549. else if (level == 1)
  5550. str = "Faction Mod";
  5551. else if (level == 2)
  5552. str = "Head of Factions";
  5553. return str;
  5554. }
  5555. GetBoneName(boneid)
  5556. {
  5557. new str[16];
  5558. switch (boneid)
  5559. {
  5560. case 1:
  5561. str = "Spine";
  5562. case 2:
  5563. str = "Head";
  5564. case 3:
  5565. str = "Left upper arm";
  5566. case 4:
  5567. str = "Right upper arm";
  5568. case 5:
  5569. str = "Left hand";
  5570. case 6:
  5571. str = "Right hand";
  5572. case 7:
  5573. str = "Left thigh";
  5574. case 8:
  5575. str = "Right thigh";
  5576. case 9:
  5577. str = "Left foot";
  5578. case 10:
  5579. str = "Right foot";
  5580. case 11:
  5581. str = "Right calf";
  5582. case 12:
  5583. str = "Left calf";
  5584. case 13:
  5585. str = "Left forearm";
  5586. case 14:
  5587. str = "Right forearm";
  5588. case 15:
  5589. str = "Left shoulder";
  5590. case 16:
  5591. str = "Right shoulder";
  5592. case 17:
  5593. str = "Neck";
  5594. case 18:
  5595. str = "Jaw";
  5596. }
  5597. return str;
  5598. }
  5599. /*GetRadioStation(stationid)
  5600. {
  5601. new str[128];
  5602. switch (stationid)
  5603. {
  5604. case 0:
  5605. str = "none";
  5606. case 1:
  5607. str = "http://listen.181fm.com/181-office_128k.mp3";
  5608. }
  5609. return str;
  5610. }
  5611. */
  5612. GetBodypartName(bodypartid)
  5613. {
  5614. new str[12];
  5615. if (bodypartid == BODY_PART_TORSO)
  5616. str = "torso";
  5617. else if (bodypartid == BODY_PART_GROIN)
  5618. str = "groin";
  5619. else if (bodypartid == BODY_PART_LEFT_ARM)
  5620. str = "left arm";
  5621. else if (bodypartid == BODY_PART_RIGHT_ARM)
  5622. str = "right arm";
  5623. else if (bodypartid == BODY_PART_LEFT_LEG)
  5624. str = "left leg";
  5625. else if (bodypartid == BODY_PART_RIGHT_LEG)
  5626. str = "right leg";
  5627. else if (bodypartid == BODY_PART_HEAD)
  5628. str = "head";
  5629. return str;
  5630. }
  5631. GetJobName(type)
  5632. {
  5633. new str[16];
  5634. if (type == JOB_NONE)
  5635. str = "Unemployed";
  5636. else if (type == JOB_TRANSPORTER)
  5637. str = "Transporter";
  5638. else if (type == JOB_FORKLIFTER)
  5639. str = "Forklifter";
  5640. else if (type == JOB_MINER)
  5641. str = "Miner";
  5642. else if (type == JOB_TAXI)
  5643. str = "Taxi Driver";
  5644. else if (type == JOB_PIZZA)
  5645. str = "Pizzaboy";
  5646. else if (type == JOB_TRASHMAN)
  5647. str = "Trashman";
  5648. else if (type == JOB_MECHANIC)
  5649. str = "Mechanic";
  5650. return str;
  5651. }
  5652. GetMonth(month)
  5653. {
  5654. new
  5655. string[12];
  5656. if (month == 1)
  5657. string = "January";
  5658. else if (month == 2)
  5659. string = "February";
  5660. else if (month == 3)
  5661. string = "March";
  5662. else if (month == 4)
  5663. string = "April";
  5664. else if (month == 5)
  5665. string = "May";
  5666. else if (month == 6)
  5667. string = "June";
  5668. else if (month == 7)
  5669. string = "July";
  5670. else if (month == 8)
  5671. string = "August";
  5672. else if (month == 9)
  5673. string = "September";
  5674. else if (month == 10)
  5675. string = "October";
  5676. else if (month == 11)
  5677. string = "November";
  5678. else if (month == 12)
  5679. string = "December";
  5680. return string;
  5681. }
  5682. GetWeapon(weaponid)
  5683. {
  5684. new
  5685. name[24];
  5686. if (weaponid == 0)
  5687. name = "No Weapon";
  5688. else if (weaponid == 18)
  5689. name = "Molotov Cocktail";
  5690. else if (weaponid == 44)
  5691. name = "Nightvision Goggles";
  5692. else if (weaponid == 45)
  5693. name = "Infrared Goggles";
  5694. else
  5695. GetWeaponName(weaponid, name, sizeof(name));
  5696. return name;
  5697. }
  5698. GetCompanyType(type)
  5699. {
  5700. new string[16];
  5701. if (1 <= type <= sizeof(g_CompanyTypes))
  5702. strcat(string, g_CompanyTypes[--type]);
  5703. else
  5704. string = "None";
  5705. return string;
  5706. }
  5707. GetFactionType(type)
  5708. {
  5709. new string[16];
  5710. switch (type)
  5711. {
  5712. case FACTION_LEO:
  5713. string = "Law Enforcement";
  5714. case FACTION_MEDICAL:
  5715. string = "Medical";
  5716. case FACTION_GOVERNMENT:
  5717. string = "Government";
  5718. case FACTION_ILLEGAL:
  5719. string = "Illegal";
  5720. case FACTION_NEWS:
  5721. string = "News";
  5722. }
  5723. return string;
  5724. }
  5725. GetFitnessLevel(playerid)
  5726. {
  5727. new string[16];
  5728. if (0 <= Players[playerid][pFitness] <= 29)
  5729. string = "Weak";
  5730. else if (30 <= Players[playerid][pFitness] <= 59)
  5731. string = "Moderate";
  5732. else if (60 <= Players[playerid][pFitness] <= 79)
  5733. string = "Strong";
  5734. else if (80 <= Players[playerid][pFitness] <= 100)
  5735. string = "Very Strong";
  5736. return string;
  5737. }
  5738. GetGenderForPlayer(playerid)
  5739. {
  5740. new str[8];
  5741. if (Players[playerid][pGender] == 1)
  5742. str = "Male";
  5743. else if (Players[playerid][pGender] == 2)
  5744. str = "Female";
  5745. return str;
  5746. }
  5747. GetClipCapacity(weaponid)
  5748. {
  5749. switch (weaponid)
  5750. {
  5751. case 22, 23:
  5752. return 17;
  5753. case 24:
  5754. return 7;
  5755. case 28, 31, 32:
  5756. return 50;
  5757. case 29, 30:
  5758. return 30;
  5759. }
  5760. return 0;
  5761. }
  5762. GetNextPayphoneID()
  5763. {
  5764. for (new i = 0; i < MAX_PAYPHONES; i ++)
  5765. {
  5766. if (!Payphones[i][phExists])
  5767. {
  5768. return i;
  5769. }
  5770. }
  5771. return INVALID_ID;
  5772. }
  5773. GetNextTagID()
  5774. {
  5775. for (new i = 0; i < MAX_TAGS; i ++)
  5776. {
  5777. if (!Tags[i][tagExists])
  5778. {
  5779. return i;
  5780. }
  5781. }
  5782. return INVALID_ID;
  5783. }
  5784. GetNextSprayTagID()
  5785. {
  5786. for (new i = 0; i < MAX_SPRAY_TAGS; i ++)
  5787. {
  5788. if (!SprayTags[i][sExists])
  5789. {
  5790. return i;
  5791. }
  5792. }
  5793. return INVALID_ID;
  5794. }
  5795. GetNextTrashbinID()
  5796. {
  5797. for (new i = 0; i < MAX_TRASH_BINS; i ++)
  5798. {
  5799. if (!Trashbins[i][tExists])
  5800. {
  5801. return i;
  5802. }
  5803. }
  5804. return INVALID_ID;
  5805. }
  5806. GetNextObjectID()
  5807. {
  5808. for (new i = 0; i < MAX_SCRIPT_OBJECTS; i ++)
  5809. {
  5810. if (!Objects[i][oExists])
  5811. {
  5812. return i;
  5813. }
  5814. }
  5815. return INVALID_ID;
  5816. }
  5817. GetNextDeployID()
  5818. {
  5819. for (new i = 0; i < MAX_DEPLOYED_ITEMS; i ++)
  5820. {
  5821. if (!DeployedItems[i][dpExists])
  5822. {
  5823. return i;
  5824. }
  5825. }
  5826. return INVALID_ID;
  5827. }
  5828. /*GetNextAutoShopID()
  5829. {
  5830. for (new i = 0; i < MAX_AUTO_SHOPS; i ++)
  5831. {
  5832. if (!AutoShops[i][asExists])
  5833. {
  5834. return i;
  5835. }
  5836. }
  5837. return INVALID_ID;
  5838. }*/
  5839. GetNextGateID()
  5840. {
  5841. for (new i = 0; i < MAX_GATES; i ++)
  5842. {
  5843. if (!Gates[i][gExists])
  5844. {
  5845. return i;
  5846. }
  5847. }
  5848. return INVALID_ID;
  5849. }
  5850. GetNextLabelID()
  5851. {
  5852. for (new i = 0; i < MAX_DYNAMIC_LABELS; i ++)
  5853. {
  5854. if (!Labels[i][lExists])
  5855. {
  5856. return i;
  5857. }
  5858. }
  5859. return INVALID_ID;
  5860. }
  5861. GetNextTeleportID()
  5862. {
  5863. for (new i = 0; i < MAX_ADMIN_TELEPORTS; i ++)
  5864. {
  5865. if (!Teleports[i][tpExists])
  5866. {
  5867. return i;
  5868. }
  5869. }
  5870. return INVALID_ID;
  5871. }
  5872. GetNextArrestPointID()
  5873. {
  5874. for (new i = 0; i < MAX_ARREST_POINTS; i ++)
  5875. {
  5876. if (!ArrestPoints[i][apExists])
  5877. {
  5878. return i;
  5879. }
  5880. }
  5881. return INVALID_ID;
  5882. }
  5883. GetNextFactionID()
  5884. {
  5885. for (new i = 0; i < MAX_FACTIONS; i ++)
  5886. {
  5887. if (!Factions[i][fcExists])
  5888. {
  5889. return i;
  5890. }
  5891. }
  5892. return INVALID_ID;
  5893. }
  5894. /*GetNextShellCasingID()
  5895. {
  5896. for (new i = 0; i < MAX_SHELL_CASINGS; i ++)
  5897. {
  5898. if (!ShellCasings[i][scExists])
  5899. {
  5900. return i;
  5901. }
  5902. }
  5903. return INVALID_ID;
  5904. }*/
  5905. /*GetNextBloodID()
  5906. {
  5907. for (new i = 0; i < MAX_BLOOD; i ++)
  5908. {
  5909. if (!Bloods[i][blExists])
  5910. {
  5911. return i;
  5912. }
  5913. }
  5914. return INVALID_ID;
  5915. }
  5916. */
  5917. GetNextWeedPlantID()
  5918. {
  5919. for (new i = 0; i < MAX_WEEDPLANTS; i ++)
  5920. {
  5921. if (!WeedPlants[i][wpExists])
  5922. {
  5923. return i;
  5924. }
  5925. }
  5926. return INVALID_ID;
  5927. }
  5928. GetNextDealershipCarID()
  5929. {
  5930. for (new i = 0; i < MAX_DEALERSHIP_CARS; i ++)
  5931. {
  5932. if (!DealershipCars[i][dcExists])
  5933. {
  5934. return i;
  5935. }
  5936. }
  5937. return INVALID_ID;
  5938. }
  5939. GetNextATMID()
  5940. {
  5941. for (new i = 0; i < MAX_ATMS; i ++)
  5942. {
  5943. if (!ATM[i][atmExists])
  5944. {
  5945. return i;
  5946. }
  5947. }
  5948. return INVALID_ID;
  5949. }
  5950. GetNextGasPumpID()
  5951. {
  5952. for (new i = 0; i < MAX_GAS_PUMPS; i ++)
  5953. {
  5954. if (!GasPumps[i][gpExists])
  5955. {
  5956. return i;
  5957. }
  5958. }
  5959. return INVALID_ID;
  5960. }
  5961. GetNextFurnitureID()
  5962. {
  5963. for (new i = 0; i < MAX_FURNITURE; i ++)
  5964. {
  5965. if (!Furniture[i][fExists])
  5966. {
  5967. return i;
  5968. }
  5969. }
  5970. return INVALID_ID;
  5971. }
  5972. GetNextStoredItemID()
  5973. {
  5974. for (new i = 0; i < MAX_STORED_ITEMS; i ++)
  5975. {
  5976. if (!StoredItems[i][stExists])
  5977. {
  5978. return i;
  5979. }
  5980. }
  5981. return INVALID_ID;
  5982. }
  5983. GetNextVehicleID()
  5984. {
  5985. for (new i = 0; i < MAX_CARS; i ++)
  5986. {
  5987. if (!Vehicles[i][vExists])
  5988. {
  5989. return i;
  5990. }
  5991. }
  5992. return INVALID_ID;
  5993. }
  5994. GetNextHouseID()
  5995. {
  5996. for (new i = 0; i < MAX_HOUSES; i ++)
  5997. {
  5998. if (!Houses[i][hExists])
  5999. {
  6000. return i;
  6001. }
  6002. }
  6003. return INVALID_ID;
  6004. }
  6005. GetNextRestaurantItemID(company)
  6006. {
  6007. for (new i = 0; i < MAX_RESTAURANT_ITEMS; i ++)
  6008. {
  6009. if (!RestaurantItems[company][i][rtExists])
  6010. {
  6011. return i;
  6012. }
  6013. }
  6014. return INVALID_ID;
  6015. }
  6016. GetNextCompanyID()
  6017. {
  6018. for (new i = 0; i < MAX_COMPANIES; i ++)
  6019. {
  6020. if (!Companies[i][cExists])
  6021. {
  6022. return i;
  6023. }
  6024. }
  6025. return INVALID_ID;
  6026. }
  6027. GetNextBuildingID()
  6028. {
  6029. for (new i = 0; i < MAX_BUILDINGS; i ++)
  6030. {
  6031. if (!Buildings[i][bExists])
  6032. {
  6033. return i;
  6034. }
  6035. }
  6036. return INVALID_ID;
  6037. }
  6038. GetNextAccessoryID(playerid)
  6039. {
  6040. for (new i = 0; i < MAX_ACCESSORIES; i ++)
  6041. {
  6042. if (!Accessories[playerid][i][aExists])
  6043. {
  6044. return i;
  6045. }
  6046. }
  6047. return INVALID_ID;
  6048. }
  6049. GetNextBankAccountID(playerid)
  6050. {
  6051. for (new i = 0; i < MAX_BANK_ACCOUNTS; i ++)
  6052. {
  6053. if (!BankAccounts[playerid][i][bankExists])
  6054. {
  6055. return i;
  6056. }
  6057. }
  6058. return INVALID_ID;
  6059. }
  6060. GetNextItemID(playerid)
  6061. {
  6062. for (new i = 0; i < MAX_INVENTORY_ITEMS; i ++)
  6063. {
  6064. if (!Inventory[playerid][i][invExists])
  6065. {
  6066. return i;
  6067. }
  6068. }
  6069. return INVALID_ID;
  6070. }
  6071. GetNextDropID()
  6072. {
  6073. for (new i = 0; i < MAX_DROPPED_ITEMS; i ++)
  6074. {
  6075. if (!DropItems[i][dExists])
  6076. {
  6077. return i;
  6078. }
  6079. }
  6080. return INVALID_ID;
  6081. }
  6082. ShowPlayerTextDraws(playerid, start, end)
  6083. {
  6084. for (new i = start; i < end + 1; i ++)
  6085. {
  6086. PlayerTextDrawShow(playerid, Players[playerid][pText][i]);
  6087. }
  6088. }
  6089. HidePlayerTextDraws(playerid, start, end)
  6090. {
  6091. for (new i = start; i < end + 1; i ++)
  6092. {
  6093. PlayerTextDrawHide(playerid, Players[playerid][pText][i]);
  6094. }
  6095. }
  6096. ShowWeaponRights(playerid, faction)
  6097. {
  6098. new string[160];
  6099. if (IsValidFactionID(faction))
  6100. {
  6101. format(string, sizeof(string), "Melee Weapons\t%s", (Factions[faction][fcWeaponRights][0]) ? ("Yes") : ("No"));
  6102. format(string, sizeof(string), "%s\nPistols\t%s", string, (Factions[faction][fcWeaponRights][1]) ? ("Yes") : ("No"));
  6103. format(string, sizeof(string), "%s\nShotguns\t%s", string, (Factions[faction][fcWeaponRights][2]) ? ("Yes") : ("No"));
  6104. format(string, sizeof(string), "%s\nSMGs\t\t%s", string, (Factions[faction][fcWeaponRights][3]) ? ("Yes") : ("No"));
  6105. format(string, sizeof(string), "%s\nRifles\t\t%s", string, (Factions[faction][fcWeaponRights][4]) ? ("Yes") : ("No"));
  6106. format(string, sizeof(string), "%s\nExplosives\t\t%s", string, (Factions[faction][fcWeaponRights][5]) ? ("Yes") : ("No"));
  6107. Dialog_Show(playerid, WeaponRights, DIALOG_STYLE_LIST, "{FFFFFF}Weapon Rights", string, "Toggle", "Back");
  6108. }
  6109. }
  6110. ShowFactionRights(playerid, faction)
  6111. {
  6112. if (IsValidFactionID(faction))
  6113. {
  6114. Dialog_Show(playerid, FactionRights, DIALOG_STYLE_LIST, "{FFFFFF}Faction Rights", "Weapon Rights\nDrug Rights\t\t%s\nSpray Rights\t\t%s", "Toggle", "Back", (Factions[faction][fcDrugRights]) ? ("Yes") : ("No"), (Factions[faction][fcSprayRights]) ? ("Yes") : ("No"));
  6115. }
  6116. }
  6117. ShowFactionRoster(playerid)
  6118. {
  6119. format(gExecute, sizeof(gExecute), "SELECT Username, LoginDate, FactionRank FROM rp_accounts WHERE FactionID = %i ORDER BY FactionRank", Players[playerid][pFactionID]);
  6120. mysql_tquery(gConnection, gExecute, "OnPlayerViewRoster", "i", playerid);
  6121. }
  6122. ShowAdminRoster(playerid)
  6123. {
  6124. format(gExecute, sizeof(gExecute), "SELECT Username, LoginDate, Admin FROM rp_accounts WHERE Admin > 0");
  6125. mysql_tquery(gConnection, gExecute, "OnPlayerViewAdminRoster", "i", playerid);
  6126. }
  6127. ShowPlayerNotebook(playerid, itemid)
  6128. {
  6129. new
  6130. id = Inventory[playerid][itemid][invID];
  6131. Players[playerid][pNotebookID] = itemid;
  6132. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_notes WHERE itemID = %i", id);
  6133. mysql_tquery(gConnection, gExecute, "OnPlayerViewNotes", "i", playerid);
  6134. }
  6135. ShowTicketList(playerid)
  6136. {
  6137. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_tickets WHERE Player = %i ORDER BY ID DESC", Players[playerid][pID]);
  6138. mysql_tquery(gConnection, gExecute, "OnPlayerShowTickets", "i", playerid);
  6139. }
  6140. ShowFineList(playerid)
  6141. {
  6142. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_tickets WHERE Player = %i ORDER BY ID DESC", Players[playerid][pID]);
  6143. mysql_tquery(gConnection, gExecute, "OnPlayerShowFines", "i", playerid);
  6144. }
  6145. ShowANoteList(playerid, targetid)
  6146. {
  6147. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_anotes WHERE Player = %i ORDER BY ID DESC", Players[playerid][pID]);
  6148. mysql_tquery(gConnection, gExecute, "OnPlayerShowANotes", "ii", playerid, targetid);
  6149. }
  6150. ShowDeathLogs(playerid)
  6151. {
  6152. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_deathlogs ORDER BY ID DESC LIMIT 20");
  6153. mysql_tquery(gConnection, gExecute, "OnPlayerShowDeathLogs", "i", playerid);
  6154. }
  6155. ShowBanLogs(playerid)
  6156. {
  6157. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_banlogs ORDER BY ID DESC");
  6158. mysql_tquery(gConnection, gExecute, "OnPlayerShowBanLogs", "i", playerid);
  6159. }
  6160. GetOwnedCompanies(playerid)
  6161. {
  6162. new count = 0;
  6163. for (new i = 0; i < MAX_COMPANIES; i ++)
  6164. {
  6165. if (IsValidCompanyID(i) && IsCompanyOwner(playerid, i))
  6166. {
  6167. count++;
  6168. }
  6169. }
  6170. return count;
  6171. }
  6172. GetCompanyLimit(playerid)
  6173. {
  6174. switch (Players[playerid][pDonator])
  6175. {
  6176. case DONATOR_BASIC:
  6177. return 2;
  6178. case DONATOR_STANDARD:
  6179. return 3;
  6180. case DONATOR_INVESTOR:
  6181. return 4;
  6182. case DONATOR_PREMIUM:
  6183. return 0;
  6184. }
  6185. return 1;
  6186. }
  6187. GetOwnedHouses(playerid)
  6188. {
  6189. new count = 0;
  6190. for (new i = 0; i < MAX_HOUSES; i ++)
  6191. {
  6192. if (IsValidHouseID(i) && IsHouseOwner(playerid, i))
  6193. {
  6194. count++;
  6195. }
  6196. }
  6197. return count;
  6198. }
  6199. GetHouseLimit(playerid)
  6200. {
  6201. switch (Players[playerid][pDonator])
  6202. {
  6203. case DONATOR_BASIC:
  6204. return 3;
  6205. case DONATOR_STANDARD:
  6206. return 4;
  6207. case DONATOR_INVESTOR:
  6208. return 5;
  6209. case DONATOR_PREMIUM:
  6210. return 0;
  6211. }
  6212. return 2;
  6213. }
  6214. GetOwnedVehicles(playerid)
  6215. {
  6216. new count = 0;
  6217. for (new i = 0; i < MAX_CARS; i ++)
  6218. {
  6219. if (IsValidVehicleID(i) && IsVehicleOwner(playerid, i))
  6220. {
  6221. count ++;
  6222. }
  6223. }
  6224. return count;
  6225. }
  6226. /*GetVehicleLimit(playerid)
  6227. {
  6228. switch (Players[playerid][pDonator])
  6229. {
  6230. case DONATOR_BASIC:
  6231. return 3;
  6232. case DONATOR_STANDARD:
  6233. return 4;
  6234. case DONATOR_INVESTOR:
  6235. return 5;
  6236. case DONATOR_PREMIUM:
  6237. return 0;
  6238. }
  6239. return 2;
  6240. }*/
  6241. GetVehicleLimit(playerid)
  6242. {
  6243. switch (Players[playerid][pDonator])
  6244. {
  6245. case DONATOR_BASIC:
  6246. return 6;
  6247. case DONATOR_STANDARD:
  6248. return 8;
  6249. case DONATOR_INVESTOR:
  6250. return 10;
  6251. case DONATOR_PREMIUM:
  6252. return 12;
  6253. }
  6254. return 4;
  6255. }
  6256. GetVehicleSpawnLimit(playerid)
  6257. {
  6258. switch (Players[playerid][pDonator])
  6259. {
  6260. case DONATOR_BASIC:
  6261. return 3;
  6262. case DONATOR_STANDARD:
  6263. return 4;
  6264. case DONATOR_INVESTOR:
  6265. return 5;
  6266. case DONATOR_PREMIUM:
  6267. return 6;
  6268. }
  6269. return 2;
  6270. }
  6271. ShowSpawnedVehicleList(playerid)
  6272. {
  6273. new
  6274. index = 0
  6275. ;
  6276. gListString = "Model\tPlate";
  6277. for (new i = 0; i < MAX_CARS; i ++)
  6278. {
  6279. if (IsValidVehicleID(i) && IsVehicleOwner(playerid, i) && !Vehicles[i][vDespawned])
  6280. {
  6281. format(gListString, sizeof(gListString), "%s\n%s\t%s", gListString, GetVehicleModelName(Vehicles[i][vModel]), Vehicles[i][vPlate]);
  6282. gListedItems[playerid][index++] = i;
  6283. }
  6284. }
  6285. if (index)
  6286. {
  6287. return Dialog_Show(playerid, DespawnVehicle, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Despawn Vehicle", gListString, "Despawn", "Close");
  6288. }
  6289. return 0;
  6290. }
  6291. ShowDespawnedVehicleList(playerid)
  6292. {
  6293. new
  6294. index = 0
  6295. ;
  6296. gListString = "Model\tPlate";
  6297. for (new i = 0; i < MAX_CARS; i ++)
  6298. {
  6299. if (IsValidVehicleID(i) && IsVehicleOwner(playerid, i) && Vehicles[i][vDespawned])
  6300. {
  6301. format(gListString, sizeof(gListString), "%s\n%s\t%s", gListString, GetVehicleModelName(Vehicles[i][vModel]), Vehicles[i][vPlate]);
  6302. gListedItems[playerid][index++] = i;
  6303. }
  6304. }
  6305. if (index)
  6306. {
  6307. return Dialog_Show(playerid, SpawnVehicle, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Spawn Vehicle", gListString, "Spawn", "Close");
  6308. }
  6309. return 0;
  6310. }
  6311. ShowVehicleTrackList(playerid)
  6312. {
  6313. new
  6314. index = 0
  6315. ;
  6316. gListString = "Model\tPlate";
  6317. for (new i = 0; i < MAX_CARS; i ++)
  6318. {
  6319. if (IsValidVehicleID(i) && IsVehicleOwner(playerid, i))
  6320. {
  6321. format(gListString, sizeof(gListString), "%s\n%s\t%s", gListString, GetVehicleModelName(Vehicles[i][vModel]), Vehicles[i][vPlate]);
  6322. gListedItems[playerid][index++] = i;
  6323. }
  6324. }
  6325. if (index)
  6326. {
  6327. return Dialog_Show(playerid, FindVehicle, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Find Car", gListString, "Find", "Close");
  6328. }
  6329. return 0;
  6330. }
  6331. ShowImpoundList(playerid)
  6332. {
  6333. new
  6334. index = 0
  6335. ;
  6336. gListString = "Model\tPlate\tPrice";
  6337. for (new i = 0; i < MAX_CARS; i ++)
  6338. {
  6339. if (IsValidVehicleID(i) && IsVehicleOwner(playerid, i) && Vehicles[i][vImpound] > 0)
  6340. {
  6341. format(gListString, sizeof(gListString), "%s\n%s\t%s\t%s", gListString, GetVehicleModelName(Vehicles[i][vModel]), Vehicles[i][vPlate], FormatNumber(Vehicles[i][vImpound]));
  6342. gListedItems[playerid][index++] = i;
  6343. }
  6344. }
  6345. if (index)
  6346. {
  6347. return Dialog_Show(playerid, ReleaseCar, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Release Vehicle", gListString, "Pay", "Cancel");
  6348. }
  6349. return 0;
  6350. }
  6351. SavePayphone(id)
  6352. {
  6353. static
  6354. queryString[512];
  6355. if (!Payphones[id][phExists]) return 0;
  6356. format(queryString, sizeof(queryString), "UPDATE rp_payphones SET phNumber = %i, phX = %.4f, phY = %.4f, phZ = %.4f, phA = %.4f, phInterior = %i, phWorld = %i WHERE phID = %i",
  6357. Payphones[id][phNumber],
  6358. Payphones[id][phX],
  6359. Payphones[id][phY],
  6360. Payphones[id][phZ],
  6361. Payphones[id][phA],
  6362. Payphones[id][phInterior],
  6363. Payphones[id][phWorld],
  6364. Payphones[id][phID]
  6365. );
  6366. return mysql_tquery(gConnection, queryString);
  6367. }
  6368. CallPayphone(playerid, payphone)
  6369. {
  6370. foreach (new i : Player)
  6371. {
  6372. if (IsPlayerNearPoint(i, 20.0, Payphones[payphone][phX], Payphones[payphone][phY], Payphones[payphone][phZ], Payphones[payphone][phInterior], Payphones[payphone][phWorld]))
  6373. {
  6374. SendClientMessage(i, COLOR_PURPLE, "* The payphone is ringing. (( /answer ))");
  6375. }
  6376. }
  6377. Payphones[payphone][phCaller] = playerid;
  6378. UpdatePayphoneText(payphone);
  6379. }
  6380. AssignPayphone(playerid, payphone)
  6381. {
  6382. if (IsValidPayphoneID(payphone))
  6383. {
  6384. Players[playerid][pPayphone] = payphone;
  6385. Payphones[payphone][phOccupied] = true;
  6386. Payphones[payphone][phCaller] = INVALID_PLAYER_ID;
  6387. UpdatePayphoneText(payphone);
  6388. }
  6389. }
  6390. UpdatePayphoneText(id)
  6391. {
  6392. new
  6393. string[64];
  6394. if (!Payphones[id][phExists]) return 0;
  6395. if (IsPlayerConnected(Payphones[id][phCaller])) {
  6396. format(string, sizeof(string), "ID: %i\nNumber: %i\n{FFD000}Ringing (/answer)", id, Payphones[id][phNumber]);
  6397. }
  6398. else if (Payphones[id][phOccupied]) {
  6399. format(string, sizeof(string), "ID: %i\nNumber: %i\n{FF5030}Occupied", id, Payphones[id][phNumber]);
  6400. }
  6401. else {
  6402. format(string, sizeof(string), "ID: %i\nNumber: %i\n{33CC33}Available (/call)", id, Payphones[id][phNumber]);
  6403. }
  6404. UpdateDynamic3DTextLabelText(Payphones[id][phText], COLOR_GREY, string);
  6405. return 1;
  6406. }
  6407. UpdatePayphone(id)
  6408. {
  6409. if (!Payphones[id][phExists]) return 0;
  6410. DestroyDynamicObject(Payphones[id][phObject]);
  6411. DestroyDynamic3DTextLabel(Payphones[id][phText]);
  6412. Payphones[id][phObject] = CreateDynamicObject(1216, Payphones[id][phX], Payphones[id][phY], Payphones[id][phZ], 0.0, 0.0, Payphones[id][phA], Payphones[id][phWorld], Payphones[id][phInterior]);
  6413. Payphones[id][phText] = CreateDynamic3DTextLabel("Payphone", COLOR_GREY, Payphones[id][phX], Payphones[id][phY], Payphones[id][phZ] + 0.5, 5.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, Payphones[id][phWorld], Payphones[id][phInterior]);
  6414. UpdatePayphoneText(id);
  6415. return 1;
  6416. }
  6417. IsPhoneBusy(number)
  6418. {
  6419. new targetid = GetPhonePlayerID(number);
  6420. return (targetid != INVALID_PLAYER_ID && Players[targetid][pCalling] > 0);
  6421. }
  6422. GetPhonePayphoneID(number)
  6423. {
  6424. for (new i = 0; i < MAX_PAYPHONES; i ++)
  6425. {
  6426. if (IsValidPayphoneID(i) && Payphones[i][phNumber] == number)
  6427. {
  6428. return i;
  6429. }
  6430. }
  6431. return INVALID_ID;
  6432. }
  6433. GetPhonePlayerID(number)
  6434. {
  6435. foreach (new i : Player)
  6436. {
  6437. if (Players[i][pPhone] == number)
  6438. {
  6439. return i;
  6440. }
  6441. }
  6442. return INVALID_PLAYER_ID;
  6443. }
  6444. IsVehicleBlacklisted(modelid)
  6445. {
  6446. if (400 <= modelid <= 611) {
  6447. modelid -= 400;
  6448. return gVehicleBlacklist[modelid];
  6449. }
  6450. return 0;
  6451. }
  6452. BlacklistVehicle(modelid)
  6453. {
  6454. if ((400 <= modelid <= 611) && !IsVehicleBlacklisted(modelid)) {
  6455. format(gExecute, sizeof(gExecute), "INSERT INTO rp_carblacklist (Model) VALUES(%i)", modelid);
  6456. mysql_tquery(gConnection, gExecute);
  6457. modelid -= 400;
  6458. gVehicleBlacklist[modelid] = true;
  6459. }
  6460. }
  6461. UnBlacklistVehicle(modelid)
  6462. {
  6463. if ((400 <= modelid <= 611) && IsVehicleBlacklisted(modelid)) {
  6464. format(gExecute, sizeof(gExecute), "DELETE FROM rp_carblacklist WHERE Model = %i", modelid);
  6465. mysql_tquery(gConnection, gExecute);
  6466. modelid -= 400;
  6467. gVehicleBlacklist[modelid] = false;
  6468. }
  6469. }
  6470. IsValidDamageWeapon(weaponid)
  6471. {
  6472. if(!(0 <= weaponid <= 46))
  6473. return false;
  6474. switch(weaponid)
  6475. {
  6476. case 0, 19..21, WEAPON_DILDO..WEAPON_FLOWER, WEAPON_GRENADE..WEAPON_MOLTOV, WEAPON_ROCKETLAUNCHER..WEAPON_MINIGUN, WEAPON_SATCHEL..WEAPON_PARACHUTE:
  6477. return false;
  6478. }
  6479. return true;
  6480. }
  6481. ShowWeaponDamageEditMenu(playerid)
  6482. {
  6483. static
  6484. string[512];
  6485. string = "Weapon\tDamage";
  6486. for(new i = 0; i < sizeof(WeaponDamages); i ++)
  6487. {
  6488. if(IsValidDamageWeapon(i))
  6489. {
  6490. if (WeaponDamages[i] != 0.0)
  6491. format(string, sizeof(string), "%s\n%s\t%.1f%c", string, GetWeapon(i), WeaponDamages[i], '%');
  6492. else
  6493. format(string, sizeof(string), "%s\n%s\tDefault", string, GetWeapon(i));
  6494. }
  6495. }
  6496. Dialog_Show(playerid, WeaponDamages, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Select Weapon", string, "Change", "Cancel");
  6497. }
  6498. ProcessDamage(playerid, weaponid)
  6499. {
  6500. new
  6501. Float:damage = WeaponDamages[weaponid],
  6502. Float:health,
  6503. Float:armor;
  6504. if (damage != 0.0)
  6505. {
  6506. GetPlayerHealth(playerid, health);
  6507. GetPlayerArmour(playerid, armor);
  6508. if (armor >= damage) {
  6509. armor -= damage;
  6510. } else if (armor < damage) {
  6511. health -= (damage - armor), armor = 0;
  6512. } else if (health >= damage) {
  6513. health -= damage;
  6514. } else {
  6515. health = 0;
  6516. }
  6517. SetPlayerHealth(playerid, health);
  6518. SetPlayerArmour(playerid, armor);
  6519. }
  6520. }
  6521. SetPlayerToFacePlayer(playerid, targetid)
  6522. {
  6523. new
  6524. Float:x,
  6525. Float:y,
  6526. Float:z,
  6527. Float:tx,
  6528. Float:ty,
  6529. Float:tz
  6530. ;
  6531. GetPlayerPos(playerid, x, y, z);
  6532. GetPlayerPos(targetid, tx, ty, tz);
  6533. SetPlayerFacingAngle(playerid, (180.0 - atan2(x - tx, y - ty)));
  6534. }
  6535. SetWeaponDamage(weaponid, Float:damage) // Edited by Grime (09-27-2017)
  6536. {
  6537. if(IsValidDamageWeapon(weaponid))
  6538. {
  6539. format(gExecute, sizeof(gExecute), "INSERT INTO rp_gundamages (Weapon, Damage) VALUES(%i, %.4f) ON DUPLICATE KEY UPDATE Damage = %.4f", weaponid, damage, damage);
  6540. mysql_tquery(gConnection, gExecute);
  6541. WeaponDamages[weaponid] = damage;
  6542. }
  6543. }
  6544. GetTotalPaycheckAmount(playerid)
  6545. {
  6546. new total = 0;
  6547. if (Players[playerid][pJobPaycheck] > 0) {
  6548. total += Players[playerid][pJobPaycheck];
  6549. }
  6550. if (Players[playerid][pFaction] != INVALID_ID && GetFactionRankPay(Players[playerid][pFaction], Players[playerid][pFactionRank]) > 0) {
  6551. total += GetFactionRankPay(Players[playerid][pFaction], Players[playerid][pFactionRank]);
  6552. }
  6553. if (Players[playerid][pPaycheck] > 0) {
  6554. total += Players[playerid][pPaycheck];
  6555. }
  6556. return total;
  6557. }
  6558. UpdateTag(tag)
  6559. {
  6560. if (!Tags[tag][tagExists]) return 0;
  6561. DestroyDynamicObject(Tags[tag][tagObject]);
  6562. Tags[tag][tagObject] = CreateDynamicObject(19482, Tags[tag][tagX], Tags[tag][tagY], Tags[tag][tagZ], 0.0, 0.0, Tags[tag][tagA]);
  6563. SetDynamicObjectMaterial(Tags[tag][tagObject], 0, 0, "none", "none", 0);
  6564. SetDynamicObjectMaterialText(Tags[tag][tagObject], 0, Tags[tag][tagText], OBJECT_MATERIAL_SIZE_512x256, "Arial", Tags[tag][tagFontSize], Tags[tag][tagBold], Tags[tag][tagColor], 0, 0);
  6565. //OBJECT_MATERIAL_SIZE_256x128
  6566. return 1;
  6567. }
  6568. SaveTag(tag)
  6569. {
  6570. static
  6571. queryString[512];
  6572. if (!Tags[tag][tagExists]) return 0;
  6573. format(queryString, sizeof(queryString), "UPDATE rp_tags SET stText = '%s', stColor = %i, stX = %.4f, stY = %.4f, stZ = %.4f, stA = %.4f, stFontSize = %i, stBold = %i WHERE stID = %i",
  6574. mysql_escaped(Tags[tag][tagText]),
  6575. Tags[tag][tagColor],
  6576. Tags[tag][tagX],
  6577. Tags[tag][tagY],
  6578. Tags[tag][tagZ],
  6579. Tags[tag][tagA],
  6580. Tags[tag][tagFontSize],
  6581. Tags[tag][tagBold],
  6582. Tags[tag][tagID]
  6583. );
  6584. return mysql_tquery(gConnection, queryString);
  6585. }
  6586. UpdateSprayTag(spray)
  6587. {
  6588. if (!SprayTags[spray][sExists]) return 0;
  6589. DestroyDynamicObject(SprayTags[spray][sObject]);
  6590. SprayTags[spray][sObject] = CreateDynamicObject(19482, SprayTags[spray][sX], SprayTags[spray][sY], SprayTags[spray][sZ], 0.0, 0.0, SprayTags[spray][sA]);
  6591. SetDynamicObjectMaterial(SprayTags[spray][sObject], 0, 0, "none", "none", 0);
  6592. SetDynamicObjectMaterialText(SprayTags[spray][sObject], 0, SprayTags[spray][sText], OBJECT_MATERIAL_SIZE_256x128, "Arial", 24, 1, SprayTags[spray][sColor], 0, 0);
  6593. return 1;
  6594. }
  6595. SaveSprayTag(spray)
  6596. {
  6597. static
  6598. queryString[512];
  6599. if (!SprayTags[spray][sExists]) return 0;
  6600. format(queryString, sizeof(queryString), "UPDATE rp_spraytags SET stText = '%s', stColor = %i, stX = %.4f, stY = %.4f, stZ = %.4f, stA = %.4f WHERE stID = %i",
  6601. mysql_escaped(SprayTags[spray][sText]),
  6602. SprayTags[spray][sColor],
  6603. SprayTags[spray][sX],
  6604. SprayTags[spray][sY],
  6605. SprayTags[spray][sZ],
  6606. SprayTags[spray][sA],
  6607. SprayTags[spray][sID]
  6608. );
  6609. return mysql_tquery(gConnection, queryString);
  6610. }
  6611. GetClosestSprayTag(playerid)
  6612. {
  6613. for (new i = 0; i < MAX_SPRAY_TAGS; i ++)
  6614. {
  6615. if (SprayTags[i][sExists] && IsPlayerInRangeOfPoint(playerid, 3.0, SprayTags[i][sX], SprayTags[i][sY], SprayTags[i][sZ]))
  6616. {
  6617. return i;
  6618. }
  6619. }
  6620. return INVALID_ID;
  6621. }
  6622. GetClosestTag(playerid)
  6623. {
  6624. for (new i = 0; i < MAX_TAGS; i ++)
  6625. {
  6626. if (Tags[i][tagExists] && IsPlayerInRangeOfPoint(playerid, 3.0, Tags[i][tagX], Tags[i][tagY], Tags[i][tagZ]))
  6627. {
  6628. return i;
  6629. }
  6630. }
  6631. return INVALID_ID;
  6632. }
  6633. AddTag(Float:x, Float:y, Float:z, Float:angle, const tag[])
  6634. {
  6635. new id = GetNextTagID();
  6636. if (id != INVALID_ID)
  6637. {
  6638. strcpy(Tags[id][tagText], tag, 64);
  6639. Tags[id][tagExists] = 1;
  6640. Tags[id][tagColor] = 0xFFFFFFFF;
  6641. Tags[id][tagX] = x;
  6642. Tags[id][tagY] = y;
  6643. Tags[id][tagZ] = z;
  6644. Tags[id][tagA] = angle - 90.0;
  6645. Tags[id][tagObject] = INVALID_OBJECT_ID;
  6646. Tags[id][tagFontSize] = 24;
  6647. Tags[id][tagBold] = 1;
  6648. format(gExecute, sizeof(gExecute), "INSERT INTO rp_tags (stColor) VALUES(%i)", SprayTags[id][sColor]);
  6649. mysql_tquery(gConnection, gExecute, "OnTagAdded", "i", id);
  6650. UpdateTag(id);
  6651. }
  6652. return id;
  6653. }
  6654. AddSprayTag(Float:x, Float:y, Float:z, Float:angle)
  6655. {
  6656. new id = GetNextSprayTagID();
  6657. if (id != INVALID_ID)
  6658. {
  6659. strcpy(SprayTags[id][sText], "/spray to spray\nthis point", 64);
  6660. SprayTags[id][sExists] = 1;
  6661. SprayTags[id][sColor] = 0xFFFFFFFF;
  6662. SprayTags[id][sX] = x;
  6663. SprayTags[id][sY] = y;
  6664. SprayTags[id][sZ] = z;
  6665. SprayTags[id][sA] = angle - 90.0;
  6666. SprayTags[id][sObject] = INVALID_OBJECT_ID;
  6667. format(gExecute, sizeof(gExecute), "INSERT INTO rp_spraytags (stColor) VALUES(%i)", SprayTags[id][sColor]);
  6668. mysql_tquery(gConnection, gExecute, "OnSprayTagAdded", "i", id);
  6669. UpdateSprayTag(id);
  6670. }
  6671. return id;
  6672. }
  6673. IsCallIncoming(playerid)
  6674. {
  6675. return (Players[playerid][pCalling] == 1 && Players[playerid][pCaller] != INVALID_PLAYER_ID);
  6676. }
  6677. IsPlayerNearRingingPayphone(playerid)
  6678. {
  6679. new payphone = GetClosestPayphone(playerid);
  6680. return (IsValidPayphoneID(payphone) && Payphones[payphone][phCaller] != INVALID_PLAYER_ID);
  6681. }
  6682. GetClosestPayphone(playerid)
  6683. {
  6684. for (new i = 0; i < MAX_PAYPHONES; i ++)
  6685. {
  6686. if (Payphones[i][phExists] && IsPlayerNearPoint(playerid, 2.0, Payphones[i][phX], Payphones[i][phY], Payphones[i][phZ], Payphones[i][phInterior], Payphones[i][phWorld]))
  6687. {
  6688. return i;
  6689. }
  6690. }
  6691. return INVALID_ID;
  6692. }
  6693. AddPayphone(Float:x, Float:y, Float:z, Float:angle, interior, world)
  6694. {
  6695. new
  6696. id = GetNextPayphoneID();
  6697. if (id != INVALID_ID)
  6698. {
  6699. Payphones[id][phExists] = 1;
  6700. Payphones[id][phNumber] = Random(1000000, 9999999);
  6701. Payphones[id][phOccupied] = 0;
  6702. Payphones[id][phCaller] = INVALID_PLAYER_ID;
  6703. Payphones[id][phX] = x;
  6704. Payphones[id][phY] = y;
  6705. Payphones[id][phZ] = z;
  6706. Payphones[id][phA] = angle;
  6707. Payphones[id][phInterior] = interior;
  6708. Payphones[id][phWorld] = world;
  6709. Payphones[id][phObject] = INVALID_OBJECT_ID;
  6710. Payphones[id][phText] = INVALID_3DTEXT_ID;
  6711. UpdatePayphone(id);
  6712. format(gExecute, sizeof(gExecute), "INSERT INTO rp_payphones (phInterior) VALUES(%i)", interior);
  6713. mysql_tquery(gConnection, gExecute, "OnPayphoneAdded", "i", id);
  6714. }
  6715. return id;
  6716. }
  6717. UseAmmunition(playerid, itemid)
  6718. {
  6719. new string[128];
  6720. if (Weapons[playerid][wPrimary] > 0 && Weapons[playerid][wPrimaryAmmo] > 0) {
  6721. format(string, sizeof(string), "%s\n%s (%i)", string, GetWeapon(Weapons[playerid][wPrimary]), Weapons[playerid][wPrimaryAmmo]);
  6722. } else {
  6723. format(string, sizeof(string), "%s\n%s", string, GetWeapon(Weapons[playerid][wPrimary]));
  6724. }
  6725. if (Weapons[playerid][wSecondary] > 0 && Weapons[playerid][wSecondaryAmmo] > 0) {
  6726. format(string, sizeof(string), "%s\n%s (%i)", string, GetWeapon(Weapons[playerid][wSecondary]), Weapons[playerid][wSecondaryAmmo]);
  6727. } else {
  6728. format(string, sizeof(string), "%s\n%s", string, GetWeapon(Weapons[playerid][wSecondary]));
  6729. }
  6730. if (Players[playerid][pDonator] >= DONATOR_STANDARD) {
  6731. if (Weapons[playerid][wTertiary] > 0 && Weapons[playerid][wTertiaryAmmo] > 0) {
  6732. format(string, sizeof(string), "%s\n%s (%i)", string, GetWeapon(Weapons[playerid][wTertiary]), Weapons[playerid][wTertiaryAmmo]);
  6733. } else {
  6734. format(string, sizeof(string), "%s\n%s", string, GetWeapon(Weapons[playerid][wTertiary]));
  6735. }
  6736. }
  6737. Players[playerid][pSelected] = itemid;
  6738. Dialog_Show(playerid, UseAmmunition, DIALOG_STYLE_LIST, "{FFFFFF}Use ammunition", string, "Load", "Cancel");
  6739. }
  6740. AddTrashbin(Float:x, Float:y, Float:z, Float:angle, interior, world)
  6741. {
  6742. new
  6743. id = GetNextTrashbinID();
  6744. if (id != INVALID_ID)
  6745. {
  6746. Trashbins[id][tExists] = 1;
  6747. Trashbins[id][tX] = x;
  6748. Trashbins[id][tY] = y;
  6749. Trashbins[id][tZ] = z;
  6750. Trashbins[id][tA] = angle;
  6751. Trashbins[id][tInterior] = interior;
  6752. Trashbins[id][tWorld] = world;
  6753. Trashbins[id][tText] = INVALID_3DTEXT_ID;
  6754. Trashbins[id][tObject] = INVALID_OBJECT_ID;
  6755. UpdateTrashbin(id);
  6756. format(gExecute, sizeof(gExecute), "INSERT INTO rp_trashbins (tInterior) VALUES(%i)", interior);
  6757. mysql_tquery(gConnection, gExecute, "OnTrashbinAdded", "i", id);
  6758. }
  6759. return id;
  6760. }
  6761. SaveTrashbin(trashbin)
  6762. {
  6763. static
  6764. queryString[192];
  6765. if (!Trashbins[trashbin][tExists]) return 0;
  6766. format(queryString, sizeof(queryString), "UPDATE rp_trashbins SET tX = %.4f, tY = %.4f, tZ = %.4f, tA = %.4f, tInterior = %i, tWorld = %i WHERE tID = %i", Trashbins[trashbin][tX], Trashbins[trashbin][tY], Trashbins[trashbin][tZ], Trashbins[trashbin][tA], Trashbins[trashbin][tInterior], Trashbins[trashbin][tWorld], Trashbins[trashbin][tID]);
  6767. return mysql_tquery(gConnection, queryString);
  6768. }
  6769. UpdateTrashbin(trashbin)
  6770. {
  6771. new string[64];
  6772. if (!Trashbins[trashbin][tExists]) return 0;
  6773. DestroyDynamic3DTextLabel(Trashbins[trashbin][tText]);
  6774. DestroyDynamicObject(Trashbins[trashbin][tObject]);
  6775. format(string, sizeof(string), "ID: %i\nPress Y to look inside", trashbin);
  6776. Trashbins[trashbin][tText] = CreateDynamic3DTextLabel(string, COLOR_GREY, Trashbins[trashbin][tX], Trashbins[trashbin][tY], Trashbins[trashbin][tZ], 2.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, Trashbins[trashbin][tWorld], Trashbins[trashbin][tInterior]);
  6777. Trashbins[trashbin][tObject] = CreateDynamicObject(1337, Trashbins[trashbin][tX], Trashbins[trashbin][tY], Trashbins[trashbin][tZ], 0.0, 0.0, Trashbins[trashbin][tA], Trashbins[trashbin][tWorld], Trashbins[trashbin][tInterior]);
  6778. return 1;
  6779. }
  6780. ShowTrashbinItems(playerid, trashbin)
  6781. {
  6782. if (!IsValidTrashbinID(trashbin))
  6783. {
  6784. return 0;
  6785. }
  6786. else
  6787. {
  6788. new
  6789. title[64],
  6790. index = 0;
  6791. gListString = "Item\tWeight\nStore Item";
  6792. for (new i = 0; i < MAX_STORED_ITEMS; i ++)
  6793. {
  6794. if (StoredItems[i][stExists] && StoredItems[i][stTrashbin] == Trashbins[trashbin][tID])
  6795. {
  6796. format(gListString, sizeof(gListString), "%s\n%s\t%i lbs", gListString, GetStoredItemName(i), GetItemInformation(StoredItems[i][stName], ITEM_INFO_WEIGHT));
  6797. gListedItems[playerid][index++] = i;
  6798. }
  6799. }
  6800. Players[playerid][pTrashbin] = trashbin;
  6801. format(title, sizeof(title), "{FFFFFF}Trashbin - Capacity: %i/%i", GetTrashbinTotalWeight(trashbin), MAX_TRASHBIN_WEIGHT);
  6802. Dialog_Show(playerid, TrashbinMenu, DIALOG_STYLE_TABLIST_HEADERS, title, gListString, "Select", "Back");
  6803. }
  6804. return 1;
  6805. }
  6806. SaveObject(object)
  6807. {
  6808. static
  6809. queryString[512];
  6810. if (!Objects[object][oExists]) return 0;
  6811. format(queryString, sizeof(queryString), "UPDATE rp_objects SET oModel = %i, oX = %.4f, oY = %.4f, oZ = %.4f, oRX = %.4f, oRY = %.4f, oRZ = %.4f, oDistance = %.4f, oInterior = %i, oWorld = %i WHERE oID = %i",
  6812. Objects[object][oModel],
  6813. Objects[object][oX],
  6814. Objects[object][oY],
  6815. Objects[object][oZ],
  6816. Objects[object][oRX],
  6817. Objects[object][oRY],
  6818. Objects[object][oRZ],
  6819. Objects[object][oDistance],
  6820. Objects[object][oInterior],
  6821. Objects[object][oWorld],
  6822. Objects[object][oID]
  6823. );
  6824. return mysql_tquery(gConnection, queryString);
  6825. }
  6826. AddObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, Float:distance, interior, worldid)
  6827. {
  6828. new
  6829. id = GetNextObjectID();
  6830. if (id != INVALID_ID)
  6831. {
  6832. Objects[id][oExists] = 1;
  6833. Objects[id][oModel] = modelid;
  6834. Objects[id][oX] = x;
  6835. Objects[id][oY] = y;
  6836. Objects[id][oZ] = z;
  6837. Objects[id][oRX] = rx;
  6838. Objects[id][oRY] = ry;
  6839. Objects[id][oRZ] = rz;
  6840. Objects[id][oDistance] = distance;
  6841. Objects[id][oInterior] = interior;
  6842. Objects[id][oWorld] = worldid;
  6843. Objects[id][oObjectID] = INVALID_OBJECT_ID;
  6844. Objects[id][oText] = INVALID_3DTEXT_ID;
  6845. UpdateObject(id);
  6846. format(gExecute, sizeof(gExecute), "INSERT INTO rp_objects (oModel) VALUES(%i)", modelid);
  6847. mysql_tquery(gConnection, gExecute, "OnObjectAdded", "i", id);
  6848. }
  6849. return id;
  6850. }
  6851. UpdateObjectLabel(object)
  6852. {
  6853. new string[32];
  6854. if (!Objects[object][oExists]) return 0;
  6855. DestroyDynamic3DTextLabel(Objects[object][oText]);
  6856. if (gObjectDebug)
  6857. {
  6858. format(string, sizeof(string), "ID: %i\nModel ID: %i", object, Objects[object][oModel]);
  6859. Objects[object][oText] = CreateDynamic3DTextLabel(string, COLOR_GREY, Objects[object][oX], Objects[object][oY], Objects[object][oZ] + 0.5, 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, Objects[object][oWorld], Objects[object][oInterior]);
  6860. }
  6861. else
  6862. {
  6863. Objects[object][oText] = INVALID_3DTEXT_ID;
  6864. }
  6865. return 1;
  6866. }
  6867. UpdateObject(object)
  6868. {
  6869. if (!Objects[object][oExists]) return 0;
  6870. DestroyDynamicObject(Objects[object][oObjectID]);
  6871. Objects[object][oObjectID] = CreateDynamicObject(Objects[object][oModel], Objects[object][oX], Objects[object][oY], Objects[object][oZ], Objects[object][oRX], Objects[object][oRY], Objects[object][oRZ], Objects[object][oWorld], Objects[object][oInterior], -1, Objects[object][oDistance], Objects[object][oDistance]);
  6872. if (gObjectDebug)
  6873. {
  6874. UpdateObjectLabel(object);
  6875. }
  6876. return 1;
  6877. }
  6878. UpdateLabel(label)
  6879. {
  6880. if (!Labels[label][lExists]) return 0;
  6881. DestroyDynamic3DTextLabel(Labels[label][lText3D]);
  6882. Labels[label][lText3D] = CreateDynamic3DTextLabel(Labels[label][lText], Labels[label][lColor], Labels[label][lX], Labels[label][lY], Labels[label][lZ], Labels[label][lDistance], INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, Labels[label][lWorld], Labels[label][lInterior]);
  6883. return 1;
  6884. }
  6885. SaveLabel(label)
  6886. {
  6887. static
  6888. queryString[512];
  6889. if (!Labels[label][lExists]) return 0;
  6890. format(queryString, sizeof(queryString), "UPDATE rp_dynamiclabels SET lColor = %i, lText = '%s', lX = %.4f, lY = %.4f, lZ = %.4f, lDistance = %.4f, lInterior = %i, lWorld = %i WHERE lID = %i",
  6891. Labels[label][lColor],
  6892. mysql_escaped(Labels[label][lText]),
  6893. Labels[label][lX],
  6894. Labels[label][lY],
  6895. Labels[label][lZ],
  6896. Labels[label][lDistance],
  6897. Labels[label][lInterior],
  6898. Labels[label][lWorld],
  6899. Labels[label][lID]
  6900. );
  6901. return mysql_tquery(gConnection, queryString);
  6902. }
  6903. IsPlayerInRangeOfHospital(playerid)
  6904. {
  6905. for (new i = 0; i < sizeof(g_HospitalDeliverPoints); i ++)
  6906. {
  6907. if (IsPlayerInRangeOfPoint(playerid, 5.0, g_HospitalDeliverPoints[i][0], g_HospitalDeliverPoints[i][1], g_HospitalDeliverPoints[i][2]))
  6908. {
  6909. return 1;
  6910. }
  6911. }
  6912. return 0;
  6913. }
  6914. GetPlayerZoneNameEx(playerid)
  6915. {
  6916. new
  6917. Float:x,
  6918. Float:y,
  6919. Float:z,
  6920. zone[MAX_ZONE_NAME];
  6921. if (GetPlayerPosEx(playerid, x, y, z))
  6922. {
  6923. strcpy(zone, GetZoneName(x, y, z));
  6924. }
  6925. else
  6926. {
  6927. zone = "Interior";
  6928. }
  6929. return zone;
  6930. }
  6931. GetPlayerPosEx(playerid, &Float:x, &Float:y, &Float:z)
  6932. {
  6933. new
  6934. insideid = INVALID_ID
  6935. ;
  6936. if ((insideid = GetCurrentCompany(playerid)) != INVALID_ID)
  6937. {
  6938. x = Companies[insideid][cSpawn][0];
  6939. y = Companies[insideid][cSpawn][1];
  6940. z = Companies[insideid][cSpawn][2];
  6941. return 1;
  6942. }
  6943. else if ((insideid = GetCurrentHouse(playerid)) != INVALID_ID)
  6944. {
  6945. x = Houses[insideid][hSpawn][0];
  6946. y = Houses[insideid][hSpawn][1];
  6947. z = Houses[insideid][hSpawn][2];
  6948. return 1;
  6949. }
  6950. else if ((insideid = GetCurrentBuilding(playerid)) != INVALID_ID)
  6951. {
  6952. x = Buildings[insideid][bSpawn][0];
  6953. y = Buildings[insideid][bSpawn][1];
  6954. z = Buildings[insideid][bSpawn][2];
  6955. return 1;
  6956. }
  6957. else if (IsPlayerInside(playerid))
  6958. {
  6959. return 0;
  6960. }
  6961. return GetPlayerPos(playerid, x, y, z);
  6962. }
  6963. Float:GetDeployedItemRange(id)
  6964. {
  6965. switch (DeployedItems[id][dpType])
  6966. {
  6967. case DEPLOY_TYPE_CONE, DEPLOY_TYPE_FLARE, DEPLOY_TYPE_BARREL, DEPLOY_TYPE_TAPE:
  6968. return 2.0;
  6969. case DEPLOY_TYPE_SPIKES:
  6970. return 3.0;
  6971. case DEPLOY_TYPE_ROADBLOCK:
  6972. return 7.0;
  6973. }
  6974. return 0.0;
  6975. }
  6976. GetClosestTrashbin(playerid)
  6977. {
  6978. for (new i = 0; i < MAX_TRASH_BINS; i ++)
  6979. {
  6980. if (Trashbins[i][tExists] && IsPlayerNearPoint(playerid, 2.0, Trashbins[i][tX], Trashbins[i][tY], Trashbins[i][tZ], Trashbins[i][tInterior], Trashbins[i][tWorld]))
  6981. {
  6982. return i;
  6983. }
  6984. }
  6985. return INVALID_ID;
  6986. }
  6987. GetClosestDeployedItem(playerid)
  6988. {
  6989. for (new i = 0; i < MAX_DEPLOYED_ITEMS; i ++)
  6990. {
  6991. if (DeployedItems[i][dpExists] && IsPlayerInRangeOfPoint(playerid, GetDeployedItemRange(i), DeployedItems[i][dpX], DeployedItems[i][dpY], DeployedItems[i][dpZ]))
  6992. {
  6993. return i;
  6994. }
  6995. }
  6996. return INVALID_ID;
  6997. }
  6998. GetClosestLabel(playerid)
  6999. {
  7000. for (new i = 0; i < MAX_DYNAMIC_LABELS; i ++)
  7001. {
  7002. if (Labels[i][lExists] && IsPlayerNearPoint(playerid, 2.0, Labels[i][lX], Labels[i][lY], Labels[i][lZ], Labels[i][lInterior], Labels[i][lWorld]))
  7003. {
  7004. return i;
  7005. }
  7006. }
  7007. return INVALID_ID;
  7008. }
  7009. IsAutoShopInUse(id)
  7010. {
  7011. foreach (new i : Player)
  7012. {
  7013. if (Players[i][pAutoShop] == id)
  7014. {
  7015. return 1;
  7016. }
  7017. }
  7018. return 0;
  7019. }
  7020. GetClosestAutoShop(playerid)
  7021. {
  7022. for (new i = 0; i < MAX_AUTO_SHOPS; i ++)
  7023. {
  7024. if (IsValidAutoShopID(i) && IsPlayerInRangeOfPoint(playerid, 5.0, AutoShops[i][asX], AutoShops[i][asY], AutoShops[i][asZ]))
  7025. {
  7026. return i;
  7027. }
  7028. }
  7029. return INVALID_ID;
  7030. }
  7031. UpdateAutoShop(id)
  7032. {
  7033. new string[64];
  7034. if (!AutoShops[id][asExists]) return 0;
  7035. DestroyDynamicPickup(AutoShops[id][asPickup]);
  7036. DestroyDynamicMapIcon(AutoShops[id][asIcon]);
  7037. DestroyDynamic3DTextLabel(AutoShops[id][asText]);
  7038. format(string, sizeof(string), "ID: %i\nUse /repair to repair vehicle", id);
  7039. AutoShops[id][asPickup] = CreateDynamicPickup(1239, 23, AutoShops[id][asX], AutoShops[id][asY], AutoShops[id][asZ]);
  7040. AutoShops[id][asIcon] = CreateDynamicMapIcon(AutoShops[id][asX], AutoShops[id][asY], AutoShops[id][asZ], 27, 0);
  7041. AutoShops[id][asText] = CreateDynamic3DTextLabel(string, COLOR_GREY, AutoShops[id][asX], AutoShops[id][asY], AutoShops[id][asZ], 15.0);
  7042. return 1;
  7043. }
  7044. GetFactionOnlineMembers(faction)
  7045. {
  7046. new count = 0;
  7047. foreach (new i : Player)
  7048. {
  7049. if (IsPlayerLoggedIn(i) && Players[i][pFaction] == faction)
  7050. {
  7051. count++;
  7052. }
  7053. }
  7054. return count;
  7055. }
  7056. GetFactionIDName(id)
  7057. {
  7058. new
  7059. string[32] = "Not Specified",
  7060. faction
  7061. ;
  7062. faction = GetFactionID(id);
  7063. if (IsValidFactionID(faction))
  7064. {
  7065. strcpy(string, Factions[faction][fcName]);
  7066. }
  7067. return string;
  7068. }
  7069. enum SAZONE_MAIN {
  7070. SAZONE_NAME[28],
  7071. Float:SAZONE_AREA[6]
  7072. };
  7073. static const gSAZones[][SAZONE_MAIN] = {
  7074. // NAME AREA (Xmin,Ymin,Zmin,Xmax,Ymax,Zmax)
  7075. {"The Big Ear", {-410.00,1403.30,-3.00,-137.90,1681.20,200.00}},
  7076. {"Aldea Malvada", {-1372.10,2498.50,0.00,-1277.50,2615.30,200.00}},
  7077. {"Angel Pine", {-2324.90,-2584.20,-6.10,-1964.20,-2212.10,200.00}},
  7078. {"Arco del Oeste", {-901.10,2221.80,0.00,-592.00,2571.90,200.00}},
  7079. {"Avispa Country Club", {-2646.40,-355.40,0.00,-2270.00,-222.50,200.00}},
  7080. {"Avispa Country Club", {-2831.80,-430.20,-6.10,-2646.40,-222.50,200.00}},
  7081. {"Avispa Country Club", {-2361.50,-417.10,0.00,-2270.00,-355.40,200.00}},
  7082. {"Avispa Country Club", {-2667.80,-302.10,-28.80,-2646.40,-262.30,71.10}},
  7083. {"Avispa Country Club", {-2470.00,-355.40,0.00,-2270.00,-318.40,46.10}},
  7084. {"Avispa Country Club", {-2550.00,-355.40,0.00,-2470.00,-318.40,39.70}},
  7085. {"Back o Beyond", {-1166.90,-2641.10,0.00,-321.70,-1856.00,200.00}},
  7086. {"Battery Point", {-2741.00,1268.40,-4.50,-2533.00,1490.40,200.00}},
  7087. {"Bayside", {-2741.00,2175.10,0.00,-2353.10,2722.70,200.00}},
  7088. {"Bayside Marina", {-2353.10,2275.70,0.00,-2153.10,2475.70,200.00}},
  7089. {"Beacon Hill", {-399.60,-1075.50,-1.40,-319.00,-977.50,198.50}},
  7090. {"Blackfield", {964.30,1203.20,-89.00,1197.30,1403.20,110.90}},
  7091. {"Blackfield", {964.30,1403.20,-89.00,1197.30,1726.20,110.90}},
  7092. {"Blackfield Chapel", {1375.60,596.30,-89.00,1558.00,823.20,110.90}},
  7093. {"Blackfield Chapel", {1325.60,596.30,-89.00,1375.60,795.00,110.90}},
  7094. {"Blackfield Intersection", {1197.30,1044.60,-89.00,1277.00,1163.30,110.90}},
  7095. {"Blackfield Intersection", {1166.50,795.00,-89.00,1375.60,1044.60,110.90}},
  7096. {"Blackfield Intersection", {1277.00,1044.60,-89.00,1315.30,1087.60,110.90}},
  7097. {"Blackfield Intersection", {1375.60,823.20,-89.00,1457.30,919.40,110.90}},
  7098. {"Blueberry", {104.50,-220.10,2.30,349.60,152.20,200.00}},
  7099. {"Blueberry", {19.60,-404.10,3.80,349.60,-220.10,200.00}},
  7100. {"Blueberry Acres", {-319.60,-220.10,0.00,104.50,293.30,200.00}},
  7101. {"Pershing Apartments", {2087.30,1543.20,-89.00,2437.30,1703.20,110.90}},
  7102. {"Pershing Apartments", {2137.40,1703.20,-89.00,2437.30,1783.20,110.90}},
  7103. {"Calton Heights", {-2274.10,744.10,-6.10,-1982.30,1358.90,200.00}},
  7104. {"Chinatown", {-2274.10,578.30,-7.60,-2078.60,744.10,200.00}},
  7105. {"City Hall", {-2867.80,277.40,-9.10,-2593.40,458.40,200.00}},
  7106. {"Come-A-Lot", {2087.30,943.20,-89.00,2623.10,1203.20,110.90}},
  7107. {"Commerce", {1323.90,-1842.20,-89.00,1701.90,-1722.20,110.90}},
  7108. {"Commerce", {1323.90,-1722.20,-89.00,1440.90,-1577.50,110.90}},
  7109. {"Commerce", {1370.80,-1577.50,-89.00,1463.90,-1384.90,110.90}},
  7110. {"Commerce", {1463.90,-1577.50,-89.00,1667.90,-1430.80,110.90}},
  7111. {"Commerce", {1583.50,-1722.20,-89.00,1758.90,-1577.50,110.90}},
  7112. {"Commerce", {1667.90,-1577.50,-89.00,1812.60,-1430.80,110.90}},
  7113. {"Conference Center", {1046.10,-1804.20,-89.00,1323.90,-1722.20,110.90}},
  7114. {"Conference Center", {1073.20,-1842.20,-89.00,1323.90,-1804.20,110.90}},
  7115. {"Cranberry Station", {-2007.80,56.30,0.00,-1922.00,224.70,100.00}},
  7116. {"Creek", {2749.90,1937.20,-89.00,2921.60,2669.70,110.90}},
  7117. {"Dillimore", {580.70,-674.80,-9.50,861.00,-404.70,200.00}},
  7118. {"Doherty", {-2270.00,-324.10,-0.00,-1794.90,-222.50,200.00}},
  7119. {"Doherty", {-2173.00,-222.50,-0.00,-1794.90,265.20,200.00}},
  7120. {"Downtown", {-1982.30,744.10,-6.10,-1871.70,1274.20,200.00}},
  7121. {"Downtown", {-1871.70,1176.40,-4.50,-1620.30,1274.20,200.00}},
  7122. {"Downtown", {-1700.00,744.20,-6.10,-1580.00,1176.50,200.00}},
  7123. {"Downtown", {-1580.00,744.20,-6.10,-1499.80,1025.90,200.00}},
  7124. {"Downtown", {-2078.60,578.30,-7.60,-1499.80,744.20,200.00}},
  7125. {"Downtown", {-1993.20,265.20,-9.10,-1794.90,578.30,200.00}},
  7126. {"Downtown Los Santos", {1463.90,-1430.80,-89.00,1724.70,-1290.80,110.90}},
  7127. {"Downtown Los Santos", {1724.70,-1430.80,-89.00,1812.60,-1250.90,110.90}},
  7128. {"Downtown Los Santos", {1463.90,-1290.80,-89.00,1724.70,-1150.80,110.90}},
  7129. {"Downtown Los Santos", {1370.80,-1384.90,-89.00,1463.90,-1170.80,110.90}},
  7130. {"Downtown Los Santos", {1724.70,-1250.90,-89.00,1812.60,-1150.80,110.90}},
  7131. {"Downtown Los Santos", {1370.80,-1170.80,-89.00,1463.90,-1130.80,110.90}},
  7132. {"Downtown Los Santos", {1378.30,-1130.80,-89.00,1463.90,-1026.30,110.90}},
  7133. {"Downtown Los Santos", {1391.00,-1026.30,-89.00,1463.90,-926.90,110.90}},
  7134. {"Downtown Los Santos", {1507.50,-1385.20,110.90,1582.50,-1325.30,335.90}},
  7135. {"East Beach", {2632.80,-1852.80,-89.00,2959.30,-1668.10,110.90}},
  7136. {"East Beach", {2632.80,-1668.10,-89.00,2747.70,-1393.40,110.90}},
  7137. {"East Beach", {2747.70,-1668.10,-89.00,2959.30,-1498.60,110.90}},
  7138. {"East Beach", {2747.70,-1498.60,-89.00,2959.30,-1120.00,110.90}},
  7139. {"East Los Santos", {2421.00,-1628.50,-89.00,2632.80,-1454.30,110.90}},
  7140. {"East Los Santos", {2222.50,-1628.50,-89.00,2421.00,-1494.00,110.90}},
  7141. {"East Los Santos", {2266.20,-1494.00,-89.00,2381.60,-1372.00,110.90}},
  7142. {"East Los Santos", {2381.60,-1494.00,-89.00,2421.00,-1454.30,110.90}},
  7143. {"East Los Santos", {2281.40,-1372.00,-89.00,2381.60,-1135.00,110.90}},
  7144. {"East Los Santos", {2381.60,-1454.30,-89.00,2462.10,-1135.00,110.90}},
  7145. {"East Los Santos", {2462.10,-1454.30,-89.00,2581.70,-1135.00,110.90}},
  7146. {"Easter Basin", {-1794.90,249.90,-9.10,-1242.90,578.30,200.00}},
  7147. {"Easter Basin", {-1794.90,-50.00,-0.00,-1499.80,249.90,200.00}},
  7148. {"Easter Bay Airport", {-1499.80,-50.00,-0.00,-1242.90,249.90,200.00}},
  7149. {"Easter Bay Airport", {-1794.90,-730.10,-3.00,-1213.90,-50.00,200.00}},
  7150. {"Easter Bay Airport", {-1213.90,-730.10,0.00,-1132.80,-50.00,200.00}},
  7151. {"Easter Bay Airport", {-1242.90,-50.00,0.00,-1213.90,578.30,200.00}},
  7152. {"Easter Bay Airport", {-1213.90,-50.00,-4.50,-947.90,578.30,200.00}},
  7153. {"Easter Bay Airport", {-1315.40,-405.30,15.40,-1264.40,-209.50,25.40}},
  7154. {"Easter Bay Airport", {-1354.30,-287.30,15.40,-1315.40,-209.50,25.40}},
  7155. {"Easter Bay Airport", {-1490.30,-209.50,15.40,-1264.40,-148.30,25.40}},
  7156. {"Easter Bay Chemicals", {-1132.80,-768.00,0.00,-956.40,-578.10,200.00}},
  7157. {"Easter Bay Chemicals", {-1132.80,-787.30,0.00,-956.40,-768.00,200.00}},
  7158. {"El Castillo del Diablo", {-464.50,2217.60,0.00,-208.50,2580.30,200.00}},
  7159. {"El Castillo del Diablo", {-208.50,2123.00,-7.60,114.00,2337.10,200.00}},
  7160. {"El Castillo del Diablo", {-208.50,2337.10,0.00,8.40,2487.10,200.00}},
  7161. {"El Corona", {1812.60,-2179.20,-89.00,1970.60,-1852.80,110.90}},
  7162. {"El Corona", {1692.60,-2179.20,-89.00,1812.60,-1842.20,110.90}},
  7163. {"El Quebrados", {-1645.20,2498.50,0.00,-1372.10,2777.80,200.00}},
  7164. {"Esplanade East", {-1620.30,1176.50,-4.50,-1580.00,1274.20,200.00}},
  7165. {"Esplanade East", {-1580.00,1025.90,-6.10,-1499.80,1274.20,200.00}},
  7166. {"Esplanade East", {-1499.80,578.30,-79.60,-1339.80,1274.20,20.30}},
  7167. {"Esplanade North", {-2533.00,1358.90,-4.50,-1996.60,1501.20,200.00}},
  7168. {"Esplanade North", {-1996.60,1358.90,-4.50,-1524.20,1592.50,200.00}},
  7169. {"Esplanade North", {-1982.30,1274.20,-4.50,-1524.20,1358.90,200.00}},
  7170. {"Fallen Tree", {-792.20,-698.50,-5.30,-452.40,-380.00,200.00}},
  7171. {"Fallow Bridge", {434.30,366.50,0.00,603.00,555.60,200.00}},
  7172. {"Fern Ridge", {508.10,-139.20,0.00,1306.60,119.50,200.00}},
  7173. {"Financial", {-1871.70,744.10,-6.10,-1701.30,1176.40,300.00}},
  7174. {"Fisher's Lagoon", {1916.90,-233.30,-100.00,2131.70,13.80,200.00}},
  7175. {"Flint Intersection", {-187.70,-1596.70,-89.00,17.00,-1276.60,110.90}},
  7176. {"Flint Range", {-594.10,-1648.50,0.00,-187.70,-1276.60,200.00}},
  7177. {"Fort Carson", {-376.20,826.30,-3.00,123.70,1220.40,200.00}},
  7178. {"Foster Valley", {-2270.00,-430.20,-0.00,-2178.60,-324.10,200.00}},
  7179. {"Foster Valley", {-2178.60,-599.80,-0.00,-1794.90,-324.10,200.00}},
  7180. {"Foster Valley", {-2178.60,-1115.50,0.00,-1794.90,-599.80,200.00}},
  7181. {"Foster Valley", {-2178.60,-1250.90,0.00,-1794.90,-1115.50,200.00}},
  7182. {"Frederick Bridge", {2759.20,296.50,0.00,2774.20,594.70,200.00}},
  7183. {"Gant Bridge", {-2741.40,1659.60,-6.10,-2616.40,2175.10,200.00}},
  7184. {"Gant Bridge", {-2741.00,1490.40,-6.10,-2616.40,1659.60,200.00}},
  7185. {"Ganton", {2222.50,-1852.80,-89.00,2632.80,-1722.30,110.90}},
  7186. {"Ganton", {2222.50,-1722.30,-89.00,2632.80,-1628.50,110.90}},
  7187. {"Garcia", {-2411.20,-222.50,-0.00,-2173.00,265.20,200.00}},
  7188. {"Garcia", {-2395.10,-222.50,-5.30,-2354.00,-204.70,200.00}},
  7189. {"Garver Bridge", {-1339.80,828.10,-89.00,-1213.90,1057.00,110.90}},
  7190. {"Garver Bridge", {-1213.90,950.00,-89.00,-1087.90,1178.90,110.90}},
  7191. {"Garver Bridge", {-1499.80,696.40,-179.60,-1339.80,925.30,20.30}},
  7192. {"Glen Park", {1812.60,-1449.60,-89.00,1996.90,-1350.70,110.90}},
  7193. {"Glen Park", {1812.60,-1100.80,-89.00,1994.30,-973.30,110.90}},
  7194. {"Glen Park", {1812.60,-1350.70,-89.00,2056.80,-1100.80,110.90}},
  7195. {"Green Palms", {176.50,1305.40,-3.00,338.60,1520.70,200.00}},
  7196. {"Greenglass College", {964.30,1044.60,-89.00,1197.30,1203.20,110.90}},
  7197. {"Greenglass College", {964.30,930.80,-89.00,1166.50,1044.60,110.90}},
  7198. {"Hampton Barns", {603.00,264.30,0.00,761.90,366.50,200.00}},
  7199. {"Hankypanky Point", {2576.90,62.10,0.00,2759.20,385.50,200.00}},
  7200. {"Harry Gold Parkway", {1777.30,863.20,-89.00,1817.30,2342.80,110.90}},
  7201. {"Hashbury", {-2593.40,-222.50,-0.00,-2411.20,54.70,200.00}},
  7202. {"Hilltop Farm", {967.30,-450.30,-3.00,1176.70,-217.90,200.00}},
  7203. {"Hunter Quarry", {337.20,710.80,-115.20,860.50,1031.70,203.70}},
  7204. {"Idlewood", {1812.60,-1852.80,-89.00,1971.60,-1742.30,110.90}},
  7205. {"Idlewood", {1812.60,-1742.30,-89.00,1951.60,-1602.30,110.90}},
  7206. {"Idlewood", {1951.60,-1742.30,-89.00,2124.60,-1602.30,110.90}},
  7207. {"Idlewood", {1812.60,-1602.30,-89.00,2124.60,-1449.60,110.90}},
  7208. {"Idlewood", {2124.60,-1742.30,-89.00,2222.50,-1494.00,110.90}},
  7209. {"Idlewood", {1971.60,-1852.80,-89.00,2222.50,-1742.30,110.90}},
  7210. {"Jefferson", {1996.90,-1449.60,-89.00,2056.80,-1350.70,110.90}},
  7211. {"Jefferson", {2124.60,-1494.00,-89.00,2266.20,-1449.60,110.90}},
  7212. {"Jefferson", {2056.80,-1372.00,-89.00,2281.40,-1210.70,110.90}},
  7213. {"Jefferson", {2056.80,-1210.70,-89.00,2185.30,-1126.30,110.90}},
  7214. {"Jefferson", {2185.30,-1210.70,-89.00,2281.40,-1154.50,110.90}},
  7215. {"Jefferson", {2056.80,-1449.60,-89.00,2266.20,-1372.00,110.90}},
  7216. {"Julius Thruway East", {2623.10,943.20,-89.00,2749.90,1055.90,110.90}},
  7217. {"Julius Thruway East", {2685.10,1055.90,-89.00,2749.90,2626.50,110.90}},
  7218. {"Julius Thruway East", {2536.40,2442.50,-89.00,2685.10,2542.50,110.90}},
  7219. {"Julius Thruway East", {2625.10,2202.70,-89.00,2685.10,2442.50,110.90}},
  7220. {"Julius Thruway North", {2498.20,2542.50,-89.00,2685.10,2626.50,110.90}},
  7221. {"Julius Thruway North", {2237.40,2542.50,-89.00,2498.20,2663.10,110.90}},
  7222. {"Julius Thruway North", {2121.40,2508.20,-89.00,2237.40,2663.10,110.90}},
  7223. {"Julius Thruway North", {1938.80,2508.20,-89.00,2121.40,2624.20,110.90}},
  7224. {"Julius Thruway North", {1534.50,2433.20,-89.00,1848.40,2583.20,110.90}},
  7225. {"Julius Thruway North", {1848.40,2478.40,-89.00,1938.80,2553.40,110.90}},
  7226. {"Julius Thruway North", {1704.50,2342.80,-89.00,1848.40,2433.20,110.90}},
  7227. {"Julius Thruway North", {1377.30,2433.20,-89.00,1534.50,2507.20,110.90}},
  7228. {"Julius Thruway South", {1457.30,823.20,-89.00,2377.30,863.20,110.90}},
  7229. {"Julius Thruway South", {2377.30,788.80,-89.00,2537.30,897.90,110.90}},
  7230. {"Julius Thruway West", {1197.30,1163.30,-89.00,1236.60,2243.20,110.90}},
  7231. {"Julius Thruway West", {1236.60,2142.80,-89.00,1297.40,2243.20,110.90}},
  7232. {"Juniper Hill", {-2533.00,578.30,-7.60,-2274.10,968.30,200.00}},
  7233. {"Juniper Hollow", {-2533.00,968.30,-6.10,-2274.10,1358.90,200.00}},
  7234. {"K.A.C.C. Military Fuels", {2498.20,2626.50,-89.00,2749.90,2861.50,110.90}},
  7235. {"Kincaid Bridge", {-1339.80,599.20,-89.00,-1213.90,828.10,110.90}},
  7236. {"Kincaid Bridge", {-1213.90,721.10,-89.00,-1087.90,950.00,110.90}},
  7237. {"Kincaid Bridge", {-1087.90,855.30,-89.00,-961.90,986.20,110.90}},
  7238. {"King's", {-2329.30,458.40,-7.60,-1993.20,578.30,200.00}},
  7239. {"King's", {-2411.20,265.20,-9.10,-1993.20,373.50,200.00}},
  7240. {"King's", {-2253.50,373.50,-9.10,-1993.20,458.40,200.00}},
  7241. {"LVA Freight Depot", {1457.30,863.20,-89.00,1777.40,1143.20,110.90}},
  7242. {"LVA Freight Depot", {1375.60,919.40,-89.00,1457.30,1203.20,110.90}},
  7243. {"LVA Freight Depot", {1277.00,1087.60,-89.00,1375.60,1203.20,110.90}},
  7244. {"LVA Freight Depot", {1315.30,1044.60,-89.00,1375.60,1087.60,110.90}},
  7245. {"LVA Freight Depot", {1236.60,1163.40,-89.00,1277.00,1203.20,110.90}},
  7246. {"Las Barrancas", {-926.10,1398.70,-3.00,-719.20,1634.60,200.00}},
  7247. {"Las Brujas", {-365.10,2123.00,-3.00,-208.50,2217.60,200.00}},
  7248. {"Las Colinas", {1994.30,-1100.80,-89.00,2056.80,-920.80,110.90}},
  7249. {"Las Colinas", {2056.80,-1126.30,-89.00,2126.80,-920.80,110.90}},
  7250. {"Las Colinas", {2185.30,-1154.50,-89.00,2281.40,-934.40,110.90}},
  7251. {"Las Colinas", {2126.80,-1126.30,-89.00,2185.30,-934.40,110.90}},
  7252. {"Las Colinas", {2747.70,-1120.00,-89.00,2959.30,-945.00,110.90}},
  7253. {"Las Colinas", {2632.70,-1135.00,-89.00,2747.70,-945.00,110.90}},
  7254. {"Las Colinas", {2281.40,-1135.00,-89.00,2632.70,-945.00,110.90}},
  7255. {"Las Payasadas", {-354.30,2580.30,2.00,-133.60,2816.80,200.00}},
  7256. {"Las Venturas Airport", {1236.60,1203.20,-89.00,1457.30,1883.10,110.90}},
  7257. {"Las Venturas Airport", {1457.30,1203.20,-89.00,1777.30,1883.10,110.90}},
  7258. {"Las Venturas Airport", {1457.30,1143.20,-89.00,1777.40,1203.20,110.90}},
  7259. {"Las Venturas Airport", {1515.80,1586.40,-12.50,1729.90,1714.50,87.50}},
  7260. {"Last Dime Motel", {1823.00,596.30,-89.00,1997.20,823.20,110.90}},
  7261. {"Leafy Hollow", {-1166.90,-1856.00,0.00,-815.60,-1602.00,200.00}},
  7262. {"Liberty City", {-1000.00,400.00,1300.00,-700.00,600.00,1400.00}},
  7263. {"Lil' Probe Inn", {-90.20,1286.80,-3.00,153.80,1554.10,200.00}},
  7264. {"Linden Side", {2749.90,943.20,-89.00,2923.30,1198.90,110.90}},
  7265. {"Linden Station", {2749.90,1198.90,-89.00,2923.30,1548.90,110.90}},
  7266. {"Linden Station", {2811.20,1229.50,-39.50,2861.20,1407.50,60.40}},
  7267. {"Little Mexico", {1701.90,-1842.20,-89.00,1812.60,-1722.20,110.90}},
  7268. {"Little Mexico", {1758.90,-1722.20,-89.00,1812.60,-1577.50,110.90}},
  7269. {"Los Flores", {2581.70,-1454.30,-89.00,2632.80,-1393.40,110.90}},
  7270. {"Los Flores", {2581.70,-1393.40,-89.00,2747.70,-1135.00,110.90}},
  7271. {"Los Santos International", {1249.60,-2394.30,-89.00,1852.00,-2179.20,110.90}},
  7272. {"Los Santos International", {1852.00,-2394.30,-89.00,2089.00,-2179.20,110.90}},
  7273. {"Los Santos International", {1382.70,-2730.80,-89.00,2201.80,-2394.30,110.90}},
  7274. {"Los Santos International", {1974.60,-2394.30,-39.00,2089.00,-2256.50,60.90}},
  7275. {"Los Santos International", {1400.90,-2669.20,-39.00,2189.80,-2597.20,60.90}},
  7276. {"Los Santos International", {2051.60,-2597.20,-39.00,2152.40,-2394.30,60.90}},
  7277. {"Marina", {647.70,-1804.20,-89.00,851.40,-1577.50,110.90}},
  7278. {"Marina", {647.70,-1577.50,-89.00,807.90,-1416.20,110.90}},
  7279. {"Marina", {807.90,-1577.50,-89.00,926.90,-1416.20,110.90}},
  7280. {"Market", {787.40,-1416.20,-89.00,1072.60,-1310.20,110.90}},
  7281. {"Market", {952.60,-1310.20,-89.00,1072.60,-1130.80,110.90}},
  7282. {"Market", {1072.60,-1416.20,-89.00,1370.80,-1130.80,110.90}},
  7283. {"Market", {926.90,-1577.50,-89.00,1370.80,-1416.20,110.90}},
  7284. {"Market Station", {787.40,-1410.90,-34.10,866.00,-1310.20,65.80}},
  7285. {"Martin Bridge", {-222.10,293.30,0.00,-122.10,476.40,200.00}},
  7286. {"Missionary Hill", {-2994.40,-811.20,0.00,-2178.60,-430.20,200.00}},
  7287. {"Montgomery", {1119.50,119.50,-3.00,1451.40,493.30,200.00}},
  7288. {"Montgomery", {1451.40,347.40,-6.10,1582.40,420.80,200.00}},
  7289. {"Montgomery Intersection", {1546.60,208.10,0.00,1745.80,347.40,200.00}},
  7290. {"Montgomery Intersection", {1582.40,347.40,0.00,1664.60,401.70,200.00}},
  7291. {"Mulholland", {1414.00,-768.00,-89.00,1667.60,-452.40,110.90}},
  7292. {"Mulholland", {1281.10,-452.40,-89.00,1641.10,-290.90,110.90}},
  7293. {"Mulholland", {1269.10,-768.00,-89.00,1414.00,-452.40,110.90}},
  7294. {"Mulholland", {1357.00,-926.90,-89.00,1463.90,-768.00,110.90}},
  7295. {"Mulholland", {1318.10,-910.10,-89.00,1357.00,-768.00,110.90}},
  7296. {"Mulholland", {1169.10,-910.10,-89.00,1318.10,-768.00,110.90}},
  7297. {"Mulholland", {768.60,-954.60,-89.00,952.60,-860.60,110.90}},
  7298. {"Mulholland", {687.80,-860.60,-89.00,911.80,-768.00,110.90}},
  7299. {"Mulholland", {737.50,-768.00,-89.00,1142.20,-674.80,110.90}},
  7300. {"Mulholland", {1096.40,-910.10,-89.00,1169.10,-768.00,110.90}},
  7301. {"Mulholland", {952.60,-937.10,-89.00,1096.40,-860.60,110.90}},
  7302. {"Mulholland", {911.80,-860.60,-89.00,1096.40,-768.00,110.90}},
  7303. {"Mulholland", {861.00,-674.80,-89.00,1156.50,-600.80,110.90}},
  7304. {"Mulholland Intersection", {1463.90,-1150.80,-89.00,1812.60,-768.00,110.90}},
  7305. {"North Rock", {2285.30,-768.00,0.00,2770.50,-269.70,200.00}},
  7306. {"Ocean Docks", {2373.70,-2697.00,-89.00,2809.20,-2330.40,110.90}},
  7307. {"Ocean Docks", {2201.80,-2418.30,-89.00,2324.00,-2095.00,110.90}},
  7308. {"Ocean Docks", {2324.00,-2302.30,-89.00,2703.50,-2145.10,110.90}},
  7309. {"Ocean Docks", {2089.00,-2394.30,-89.00,2201.80,-2235.80,110.90}},
  7310. {"Ocean Docks", {2201.80,-2730.80,-89.00,2324.00,-2418.30,110.90}},
  7311. {"Ocean Docks", {2703.50,-2302.30,-89.00,2959.30,-2126.90,110.90}},
  7312. {"Ocean Docks", {2324.00,-2145.10,-89.00,2703.50,-2059.20,110.90}},
  7313. {"Ocean Flats", {-2994.40,277.40,-9.10,-2867.80,458.40,200.00}},
  7314. {"Ocean Flats", {-2994.40,-222.50,-0.00,-2593.40,277.40,200.00}},
  7315. {"Ocean Flats", {-2994.40,-430.20,-0.00,-2831.80,-222.50,200.00}},
  7316. {"Octane Springs", {338.60,1228.50,0.00,664.30,1655.00,200.00}},
  7317. {"Old Venturas Strip", {2162.30,2012.10,-89.00,2685.10,2202.70,110.90}},
  7318. {"Palisades", {-2994.40,458.40,-6.10,-2741.00,1339.60,200.00}},
  7319. {"Palomino Creek", {2160.20,-149.00,0.00,2576.90,228.30,200.00}},
  7320. {"Paradiso", {-2741.00,793.40,-6.10,-2533.00,1268.40,200.00}},
  7321. {"Pershing Square", {1440.90,-1722.20,-89.00,1583.50,-1577.50,110.90}},
  7322. {"Pilgrim", {2437.30,1383.20,-89.00,2624.40,1783.20,110.90}},
  7323. {"Pilgrim", {2624.40,1383.20,-89.00,2685.10,1783.20,110.90}},
  7324. {"Pilson Intersection", {1098.30,2243.20,-89.00,1377.30,2507.20,110.90}},
  7325. {"Pirates in Men's Pants", {1817.30,1469.20,-89.00,2027.40,1703.20,110.90}},
  7326. {"Playa Del Seville", {2703.50,-2126.90,-89.00,2959.30,-1852.80,110.90}},
  7327. {"Prickle Pine", {1534.50,2583.20,-89.00,1848.40,2863.20,110.90}},
  7328. {"Prickle Pine", {1117.40,2507.20,-89.00,1534.50,2723.20,110.90}},
  7329. {"Prickle Pine", {1848.40,2553.40,-89.00,1938.80,2863.20,110.90}},
  7330. {"Prickle Pine", {1938.80,2624.20,-89.00,2121.40,2861.50,110.90}},
  7331. {"Queens", {-2533.00,458.40,0.00,-2329.30,578.30,200.00}},
  7332. {"Queens", {-2593.40,54.70,0.00,-2411.20,458.40,200.00}},
  7333. {"Queens", {-2411.20,373.50,0.00,-2253.50,458.40,200.00}},
  7334. {"Randolph Industrial Estate", {1558.00,596.30,-89.00,1823.00,823.20,110.90}},
  7335. {"Redsands East", {1817.30,2011.80,-89.00,2106.70,2202.70,110.90}},
  7336. {"Redsands East", {1817.30,2202.70,-89.00,2011.90,2342.80,110.90}},
  7337. {"Redsands East", {1848.40,2342.80,-89.00,2011.90,2478.40,110.90}},
  7338. {"Redsands West", {1236.60,1883.10,-89.00,1777.30,2142.80,110.90}},
  7339. {"Redsands West", {1297.40,2142.80,-89.00,1777.30,2243.20,110.90}},
  7340. {"Redsands West", {1377.30,2243.20,-89.00,1704.50,2433.20,110.90}},
  7341. {"Redsands West", {1704.50,2243.20,-89.00,1777.30,2342.80,110.90}},
  7342. {"Regular Tom", {-405.70,1712.80,-3.00,-276.70,1892.70,200.00}},
  7343. {"Richman", {647.50,-1118.20,-89.00,787.40,-954.60,110.90}},
  7344. {"Richman", {647.50,-954.60,-89.00,768.60,-860.60,110.90}},
  7345. {"Richman", {225.10,-1369.60,-89.00,334.50,-1292.00,110.90}},
  7346. {"Richman", {225.10,-1292.00,-89.00,466.20,-1235.00,110.90}},
  7347. {"Richman", {72.60,-1404.90,-89.00,225.10,-1235.00,110.90}},
  7348. {"Richman", {72.60,-1235.00,-89.00,321.30,-1008.10,110.90}},
  7349. {"Richman", {321.30,-1235.00,-89.00,647.50,-1044.00,110.90}},
  7350. {"Richman", {321.30,-1044.00,-89.00,647.50,-860.60,110.90}},
  7351. {"Richman", {321.30,-860.60,-89.00,687.80,-768.00,110.90}},
  7352. {"Richman", {321.30,-768.00,-89.00,700.70,-674.80,110.90}},
  7353. {"Robada Intersection", {-1119.00,1178.90,-89.00,-862.00,1351.40,110.90}},
  7354. {"Roca Escalante", {2237.40,2202.70,-89.00,2536.40,2542.50,110.90}},
  7355. {"Roca Escalante", {2536.40,2202.70,-89.00,2625.10,2442.50,110.90}},
  7356. {"Rockshore East", {2537.30,676.50,-89.00,2902.30,943.20,110.90}},
  7357. {"Rockshore West", {1997.20,596.30,-89.00,2377.30,823.20,110.90}},
  7358. {"Rockshore West", {2377.30,596.30,-89.00,2537.30,788.80,110.90}},
  7359. {"Rodeo", {72.60,-1684.60,-89.00,225.10,-1544.10,110.90}},
  7360. {"Rodeo", {72.60,-1544.10,-89.00,225.10,-1404.90,110.90}},
  7361. {"Rodeo", {225.10,-1684.60,-89.00,312.80,-1501.90,110.90}},
  7362. {"Rodeo", {225.10,-1501.90,-89.00,334.50,-1369.60,110.90}},
  7363. {"Rodeo", {334.50,-1501.90,-89.00,422.60,-1406.00,110.90}},
  7364. {"Rodeo", {312.80,-1684.60,-89.00,422.60,-1501.90,110.90}},
  7365. {"Rodeo", {422.60,-1684.60,-89.00,558.00,-1570.20,110.90}},
  7366. {"Rodeo", {558.00,-1684.60,-89.00,647.50,-1384.90,110.90}},
  7367. {"Rodeo", {466.20,-1570.20,-89.00,558.00,-1385.00,110.90}},
  7368. {"Rodeo", {422.60,-1570.20,-89.00,466.20,-1406.00,110.90}},
  7369. {"Rodeo", {466.20,-1385.00,-89.00,647.50,-1235.00,110.90}},
  7370. {"Rodeo", {334.50,-1406.00,-89.00,466.20,-1292.00,110.90}},
  7371. {"Royal Casino", {2087.30,1383.20,-89.00,2437.30,1543.20,110.90}},
  7372. {"San Andreas Sound", {2450.30,385.50,-100.00,2759.20,562.30,200.00}},
  7373. {"Santa Flora", {-2741.00,458.40,-7.60,-2533.00,793.40,200.00}},
  7374. {"Santa Maria Beach", {342.60,-2173.20,-89.00,647.70,-1684.60,110.90}},
  7375. {"Santa Maria Beach", {72.60,-2173.20,-89.00,342.60,-1684.60,110.90}},
  7376. {"Shady Cabin", {-1632.80,-2263.40,-3.00,-1601.30,-2231.70,200.00}},
  7377. {"Shady Creeks", {-1820.60,-2643.60,-8.00,-1226.70,-1771.60,200.00}},
  7378. {"Shady Creeks", {-2030.10,-2174.80,-6.10,-1820.60,-1771.60,200.00}},
  7379. {"Sobell Rail Yards", {2749.90,1548.90,-89.00,2923.30,1937.20,110.90}},
  7380. {"Spinybed", {2121.40,2663.10,-89.00,2498.20,2861.50,110.90}},
  7381. {"Starfish Casino", {2437.30,1783.20,-89.00,2685.10,2012.10,110.90}},
  7382. {"Starfish Casino", {2437.30,1858.10,-39.00,2495.00,1970.80,60.90}},
  7383. {"Starfish Casino", {2162.30,1883.20,-89.00,2437.30,2012.10,110.90}},
  7384. {"Temple", {1252.30,-1130.80,-89.00,1378.30,-1026.30,110.90}},
  7385. {"Temple", {1252.30,-1026.30,-89.00,1391.00,-926.90,110.90}},
  7386. {"Temple", {1252.30,-926.90,-89.00,1357.00,-910.10,110.90}},
  7387. {"Temple", {952.60,-1130.80,-89.00,1096.40,-937.10,110.90}},
  7388. {"Temple", {1096.40,-1130.80,-89.00,1252.30,-1026.30,110.90}},
  7389. {"Temple", {1096.40,-1026.30,-89.00,1252.30,-910.10,110.90}},
  7390. {"The Camel's Toe", {2087.30,1203.20,-89.00,2640.40,1383.20,110.90}},
  7391. {"The Clown's Pocket", {2162.30,1783.20,-89.00,2437.30,1883.20,110.90}},
  7392. {"The Emerald Isle", {2011.90,2202.70,-89.00,2237.40,2508.20,110.90}},
  7393. {"The Farm", {-1209.60,-1317.10,114.90,-908.10,-787.30,251.90}},
  7394. {"The Four Dragons Casino", {1817.30,863.20,-89.00,2027.30,1083.20,110.90}},
  7395. {"The High Roller", {1817.30,1283.20,-89.00,2027.30,1469.20,110.90}},
  7396. {"The Mako Span", {1664.60,401.70,0.00,1785.10,567.20,200.00}},
  7397. {"The Panopticon", {-947.90,-304.30,-1.10,-319.60,327.00,200.00}},
  7398. {"The Pink Swan", {1817.30,1083.20,-89.00,2027.30,1283.20,110.90}},
  7399. {"The Sherman Dam", {-968.70,1929.40,-3.00,-481.10,2155.20,200.00}},
  7400. {"The Strip", {2027.40,863.20,-89.00,2087.30,1703.20,110.90}},
  7401. {"The Strip", {2106.70,1863.20,-89.00,2162.30,2202.70,110.90}},
  7402. {"The Strip", {2027.40,1783.20,-89.00,2162.30,1863.20,110.90}},
  7403. {"The Strip", {2027.40,1703.20,-89.00,2137.40,1783.20,110.90}},
  7404. {"The Visage", {1817.30,1863.20,-89.00,2106.70,2011.80,110.90}},
  7405. {"The Visage", {1817.30,1703.20,-89.00,2027.40,1863.20,110.90}},
  7406. {"Unity Station", {1692.60,-1971.80,-20.40,1812.60,-1932.80,79.50}},
  7407. {"Valle Ocultado", {-936.60,2611.40,2.00,-715.90,2847.90,200.00}},
  7408. {"Verdant Bluffs", {930.20,-2488.40,-89.00,1249.60,-2006.70,110.90}},
  7409. {"Verdant Bluffs", {1073.20,-2006.70,-89.00,1249.60,-1842.20,110.90}},
  7410. {"Verdant Bluffs", {1249.60,-2179.20,-89.00,1692.60,-1842.20,110.90}},
  7411. {"Verdant Meadows", {37.00,2337.10,-3.00,435.90,2677.90,200.00}},
  7412. {"Verona Beach", {647.70,-2173.20,-89.00,930.20,-1804.20,110.90}},
  7413. {"Verona Beach", {930.20,-2006.70,-89.00,1073.20,-1804.20,110.90}},
  7414. {"Verona Beach", {851.40,-1804.20,-89.00,1046.10,-1577.50,110.90}},
  7415. {"Verona Beach", {1161.50,-1722.20,-89.00,1323.90,-1577.50,110.90}},
  7416. {"Verona Beach", {1046.10,-1722.20,-89.00,1161.50,-1577.50,110.90}},
  7417. {"Vinewood", {787.40,-1310.20,-89.00,952.60,-1130.80,110.90}},
  7418. {"Vinewood", {787.40,-1130.80,-89.00,952.60,-954.60,110.90}},
  7419. {"Vinewood", {647.50,-1227.20,-89.00,787.40,-1118.20,110.90}},
  7420. {"Vinewood", {647.70,-1416.20,-89.00,787.40,-1227.20,110.90}},
  7421. {"Whitewood Estates", {883.30,1726.20,-89.00,1098.30,2507.20,110.90}},
  7422. {"Whitewood Estates", {1098.30,1726.20,-89.00,1197.30,2243.20,110.90}},
  7423. {"Willowfield", {1970.60,-2179.20,-89.00,2089.00,-1852.80,110.90}},
  7424. {"Willowfield", {2089.00,-2235.80,-89.00,2201.80,-1989.90,110.90}},
  7425. {"Willowfield", {2089.00,-1989.90,-89.00,2324.00,-1852.80,110.90}},
  7426. {"Willowfield", {2201.80,-2095.00,-89.00,2324.00,-1989.90,110.90}},
  7427. {"Willowfield", {2541.70,-1941.40,-89.00,2703.50,-1852.80,110.90}},
  7428. {"Willowfield", {2324.00,-2059.20,-89.00,2541.70,-1852.80,110.90}},
  7429. {"Willowfield", {2541.70,-2059.20,-89.00,2703.50,-1941.40,110.90}},
  7430. {"Yellow Bell Station", {1377.40,2600.40,-21.90,1492.40,2687.30,78.00}},
  7431. // Main Zones
  7432. {"Los Santos", {44.60,-2892.90,-242.90,2997.00,-768.00,900.00}},
  7433. {"Las Venturas", {869.40,596.30,-242.90,2997.00,2993.80,900.00}},
  7434. {"Bone County", {-480.50,596.30,-242.90,869.40,2993.80,900.00}},
  7435. {"Tierra Robada", {-2997.40,1659.60,-242.90,-480.50,2993.80,900.00}},
  7436. {"Tierra Robada", {-1213.90,596.30,-242.90,-480.50,1659.60,900.00}},
  7437. {"San Fierro", {-2997.40,-1115.50,-242.90,-1213.90,1659.60,900.00}},
  7438. {"Red County", {-1213.90,-768.00,-242.90,2997.00,596.30,900.00}},
  7439. {"Flint County", {-1213.90,-2892.90,-242.90,44.60,-768.00,900.00}},
  7440. {"Whetstone", {-2997.40,-2892.90,-242.90,-1213.90,-1115.50,900.00}}
  7441. };
  7442. ShowGateEditMenu(playerid, gate)
  7443. {
  7444. new
  7445. string[32];
  7446. if (IsValidGateID(gate))
  7447. {
  7448. Players[playerid][pSelected] = gate;
  7449. format(string, sizeof(string), "{FFFFFF}Edit gate: %i", gate);
  7450. if (Gates[gate][gLinkID])
  7451. {
  7452. Dialog_Show(playerid, EditGate, DIALOG_STYLE_LIST, string, "Gate Location\nGate Position\nGate Destination\nGate Password\t\t%s\nGate Faction\t\t%s\nGate Speed\t\t%.1f\nGate Radius\t\t%.1f\nGate Linker\t\tID: %i", "Select", "Cancel", Gates[gate][gPassword], GetFactionIDName(Gates[gate][gFactionID]), Gates[gate][gSpeed], Gates[gate][gRadius], GetGateID(Gates[gate][gLinkID]));
  7453. }
  7454. else
  7455. {
  7456. Dialog_Show(playerid, EditGate, DIALOG_STYLE_LIST, string, "Gate Location\nGate Position\nGate Destination\nGate Password\t\t%s\nGate Faction\t\t%s\nGate Speed\t\t%.1f\nGate Radius\t\t%.1f\nGate Linker\t\tNot Specified", "Select", "Cancel", Gates[gate][gPassword], GetFactionIDName(Gates[gate][gFactionID]), Gates[gate][gSpeed], Gates[gate][gRadius]);
  7457. }
  7458. }
  7459. return 1;
  7460. }
  7461. GateCheck(playerid)
  7462. {
  7463. new gate = GetClosestGate(playerid);
  7464. /*if ((IsPlayerInFaction(playerid, FACTION_LEO)) && (IsPlayerInRangeOfPoint(playerid, 1.5, 1812.0830, -1545.2319, 1700.4287) || IsPlayerInRangeOfPoint(playerid, 1.5, 1810.3752, -1548.3003, 1700.4287)))
  7465. {
  7466. if (!gPrisonDoorStatus[0])
  7467. {
  7468. gPrisonDoorStatus[0] = 1;
  7469. SendInfoMessage(playerid, "You have opened the doors.");
  7470. MoveDynamicObject(gPrisonDoors[0], 1807.76147461, -1547.63208008, 1699.42480469, 0.50);
  7471. MoveDynamicObject(gPrisonDoors[1], 1812.76184082, -1547.60510254, 1699.42480469, 0.50);
  7472. }
  7473. else
  7474. {
  7475. gPrisonDoorStatus[0] = 0;
  7476. SendInfoMessage(playerid, "You have closed the doors.");
  7477. MoveDynamicObject(gPrisonDoors[0], 1808.76147461, -1547.63208008, 1699.42480469, 0.50);
  7478. MoveDynamicObject(gPrisonDoors[1], 1811.76184082, -1547.60510254, 1699.42480469, 0.50);
  7479. }
  7480. ShowActionBubble(playerid, "* %s uses their key to control the doors.", ReturnNameEx(playerid));
  7481. return 1;
  7482. }
  7483. else if ((IsPlayerInFaction(playerid, FACTION_LEO)) && (IsPlayerInRangeOfPoint(playerid, 2.0, 1812.0830,-1545.2319,1700.4287)))
  7484. {
  7485. if (!gPrisonDoorStatus[1])
  7486. {
  7487. gPrisonDoorStatus[1] = 1;
  7488. SendInfoMessage(playerid, "You have opened the doors.");
  7489. MoveDynamicObject(gPrisonDoors[2], 1812.73828125, -1545.82873535, 1699.42480469, 0.50);
  7490. MoveDynamicObject(gPrisonDoors[3], 1807.73071289, -1545.87463379, 1699.42480469, 0.50);
  7491. }
  7492. else
  7493. {
  7494. gPrisonDoorStatus[1] = 0;
  7495. SendInfoMessage(playerid, "You have closed the doors.");
  7496. MoveDynamicObject(gPrisonDoors[2], 1811.73828125, -1545.82873535, 1699.42480469, 0.50);
  7497. MoveDynamicObject(gPrisonDoors[3], 1808.73071289, -1545.87463379, 1699.42480469, 0.50);
  7498. }
  7499. ShowActionBubble(playerid, "* %s uses their key to control the doors.", ReturnNameEx(playerid));
  7500. return 1;
  7501. }
  7502. else if ((IsPlayerInFaction(playerid, FACTION_LEO)) && (IsPlayerInRangeOfPoint(playerid, 3.0, 1797.00830078, -1525.15258789, 1699.42480469) || IsPlayerInRangeOfPoint(playerid, 3.0, 1793.6631, -1523.9191, 1700.4287)))
  7503. {
  7504. if (!gPrisonDoorStatus[2])
  7505. {
  7506. gPrisonDoorStatus[2] = 1;
  7507. SendInfoMessage(playerid, "You have opened the doors.");
  7508. MoveDynamicObject(gPrisonDoors[4], 1798.00830078, -1525.15258789, 1699.42480469, 0.50);
  7509. MoveDynamicObject(gPrisonDoors[5], 1793.00976562, -1525.18676758, 1699.42480469, 0.50);
  7510. }
  7511. else
  7512. {
  7513. gPrisonDoorStatus[2] = 0;
  7514. SendInfoMessage(playerid, "You have closed the doors.");
  7515. MoveDynamicObject(gPrisonDoors[4], 1797.00830078, -1525.15258789, 1699.42480469, 0.50);
  7516. MoveDynamicObject(gPrisonDoors[5], 1794.00976562, -1525.18676758, 1699.42480469, 0.50);
  7517. }
  7518. ShowActionBubble(playerid, "* %s uses their key to control the doors.", ReturnNameEx(playerid));
  7519. return 1;
  7520. }
  7521. else */
  7522. if (IsValidGateID(gate))
  7523. {
  7524. if (!isnull(Gates[gate][gPassword]) && !Gates[gate][gOpened])
  7525. {
  7526. Dialog_Show(playerid, OpenGate, DIALOG_STYLE_INPUT, "{FFFFFF}Gate Password", "Please input the password of this gate:", "Submit", "Cancel");
  7527. }
  7528. else if (Gates[gate][gFactionID] > 0 && GetFactionID(Gates[gate][gFactionID]) != Players[playerid][pFaction])
  7529. {
  7530. SendErrorMessage(playerid, "You don't have the remote to this gate.");
  7531. }
  7532. else
  7533. {
  7534. OpenGate(playerid, gate);
  7535. }
  7536. return 1;
  7537. }
  7538. return 0;
  7539. }
  7540. OpenGate(playerid, gate)
  7541. {
  7542. if (IsValidGateID(gate))
  7543. {
  7544. GateHandler(gate);
  7545. if (Gates[gate][gLinkID] > 0) GateHandler(GetGateID(Gates[gate][gLinkID]));
  7546. if (Gates[gate][gOpened])
  7547. {
  7548. SendInfoMessage(playerid, "You have opened the gate.");
  7549. }
  7550. else
  7551. {
  7552. SendInfoMessage(playerid, "You have closed the gate.");
  7553. }
  7554. //ShowActionBubble(playerid, "* %s presses a button to control the gate.", ReturnNameEx(playerid));
  7555. }
  7556. }
  7557. GateHandler(gate)
  7558. {
  7559. if (IsValidGateID(gate))
  7560. {
  7561. Gates[gate][gOpened] = !Gates[gate][gOpened];
  7562. if (Gates[gate][gOpened])
  7563. {
  7564. MoveDynamicObject(Gates[gate][gObject], Gates[gate][gMove][0], Gates[gate][gMove][1], Gates[gate][gMove][2], Gates[gate][gSpeed], Gates[gate][gMove][3], Gates[gate][gMove][4], Gates[gate][gMove][5]);
  7565. }
  7566. else
  7567. {
  7568. MoveDynamicObject(Gates[gate][gObject], Gates[gate][gSpawn][0], Gates[gate][gSpawn][1], Gates[gate][gSpawn][2], Gates[gate][gSpeed], Gates[gate][gSpawn][3], Gates[gate][gSpawn][4], Gates[gate][gSpawn][5]);
  7569. }
  7570. }
  7571. }
  7572. UpdateGate(gate)
  7573. {
  7574. if (!Gates[gate][gExists]) return 0;
  7575. DestroyDynamicObject(Gates[gate][gObject]);
  7576. Gates[gate][gObject] = CreateDynamicObject(Gates[gate][gModel], Gates[gate][gSpawn][0], Gates[gate][gSpawn][1], Gates[gate][gSpawn][2], Gates[gate][gSpawn][3], Gates[gate][gSpawn][4], Gates[gate][gSpawn][5], Gates[gate][gWorld], Gates[gate][gInterior]);
  7577. Gates[gate][gOpened] = 0;
  7578. if (Gates[gate][gLinkID] > 0)
  7579. {
  7580. UpdateGate(GetGateID(Gates[gate][gLinkID]));
  7581. }
  7582. return 1;
  7583. }
  7584. GetGateID(id) // id = SQL id
  7585. {
  7586. for (new i = 0; i < MAX_GATES; i ++)
  7587. {
  7588. if (IsValidGateID(i) && Gates[i][gID] == id)
  7589. {
  7590. return i;
  7591. }
  7592. }
  7593. return INVALID_ID;
  7594. }
  7595. SaveGate(gate)
  7596. {
  7597. static
  7598. queryString[1024];
  7599. if (!Gates[gate][gExists]) return 0;
  7600. format(queryString, sizeof(queryString), "UPDATE rp_gates SET gModel = %i, gPassword = '%s', gSpeed = %.4f, gRadius = %.4f, gFactionID = %i, gLinkID = %i, gX = %.4f, gY = %.4f, gZ = %.4f, gRX = %.4f, gRY = %.4f, gRZ = %.4f",
  7601. Gates[gate][gModel],
  7602. mysql_escaped(Gates[gate][gPassword]),
  7603. Gates[gate][gSpeed],
  7604. Gates[gate][gRadius],
  7605. Gates[gate][gFactionID],
  7606. Gates[gate][gLinkID],
  7607. Gates[gate][gSpawn][0],
  7608. Gates[gate][gSpawn][1],
  7609. Gates[gate][gSpawn][2],
  7610. Gates[gate][gSpawn][3],
  7611. Gates[gate][gSpawn][4],
  7612. Gates[gate][gSpawn][5]
  7613. );
  7614. format(queryString, sizeof(queryString), "%s, gMoveX = %.4f, gMoveY = %.4f, gMoveZ = %.4f, gMoveRX = %.4f, gMoveRY = %.4f, gMoveRZ = %.4f, gInterior = %i, gWorld = %i WHERE gID = %i",
  7615. queryString,
  7616. Gates[gate][gMove][0],
  7617. Gates[gate][gMove][1],
  7618. Gates[gate][gMove][2],
  7619. Gates[gate][gMove][3],
  7620. Gates[gate][gMove][4],
  7621. Gates[gate][gMove][5],
  7622. Gates[gate][gInterior],
  7623. Gates[gate][gWorld],
  7624. Gates[gate][gID]
  7625. );
  7626. return mysql_tquery(gConnection, queryString);
  7627. }
  7628. GetClosestGate(playerid)
  7629. {
  7630. for (new i = 0; i < MAX_GATES; i ++)
  7631. {
  7632. if (Gates[i][gExists] && IsPlayerNearPoint(playerid, Gates[i][gRadius], Gates[i][gSpawn][0], Gates[i][gSpawn][1], Gates[i][gSpawn][2], Gates[i][gInterior], Gates[i][gWorld]))
  7633. {
  7634. return i;
  7635. }
  7636. }
  7637. return INVALID_ID;
  7638. }
  7639. strreplace(string[], const search[], const replace[], max_len = sizeof(string))
  7640. {
  7641. new
  7642. pos = -1;
  7643. while ((pos = strfind(string, search)) != -1)
  7644. {
  7645. strdel(string, pos, pos + strlen(search));
  7646. strins(string, replace, pos, max_len);
  7647. }
  7648. }
  7649. ShowTeleportList(playerid, delete=0)
  7650. {
  7651. new
  7652. index;
  7653. gListString[0] = 0;
  7654. for (new i = 0; i < MAX_ADMIN_TELEPORTS; i ++)
  7655. {
  7656. if (Teleports[i][tpExists])
  7657. {
  7658. format(gListString, sizeof(gListString), "%s\n%s", gListString, Teleports[i][tpName]);
  7659. gListedItems[playerid][index++] = i;
  7660. }
  7661. }
  7662. if (index)
  7663. {
  7664. if (delete)
  7665. {
  7666. return Dialog_Show(playerid, DeleteTeleports, DIALOG_STYLE_LIST, "{FFFFFF}Delete Teleports", gListString, "Delete", "Cancel");
  7667. }
  7668. else
  7669. {
  7670. return Dialog_Show(playerid, Teleports, DIALOG_STYLE_LIST, "{FFFFFF}List of Teleports", gListString, "Teleport", "Cancel");
  7671. }
  7672. }
  7673. return 0;
  7674. }
  7675. ShowInteriorList(playerid)
  7676. {
  7677. static
  7678. s_InteriorList[4096]
  7679. ;
  7680. if (!strlen(s_InteriorList))
  7681. {
  7682. for (new i = 0; i < sizeof(g_Interiors); i ++)
  7683. {
  7684. strcat(s_InteriorList, g_Interiors[i][e_InteriorName]);
  7685. strcat(s_InteriorList, "\n");
  7686. }
  7687. }
  7688. Dialog_Show(playerid, TeleportInt, DIALOG_STYLE_LIST, "{FFFFFF}Teleport to interior", s_InteriorList, "Teleport", "Cancel");
  7689. }
  7690. ShowFAQMenu(playerid)
  7691. {
  7692. Dialog_Show(playerid, FAQ, DIALOG_STYLE_LIST, "{FFFFFF}FAQ and Guide", "Fitness system\nWeapon management\nItem management\nBank accounts\nBuying a vehicle\nFinding a job\nAuto shops\nInteractive keys\nDrug system", "Select", "Back");
  7693. }
  7694. ShowAnimationList(playerid)
  7695. {
  7696. SendClientMessage(playerid, COLOR_GREY, "-------------------------------------------------------------------------------------------------------------------------------");
  7697. SendClientMessage(playerid, COLOR_GREY, "Animations:{FFFFFF} /bar, /kiss, /wash, /lay, /blowjob, /bomb, /basketball, /camera.");
  7698. SendClientMessage(playerid, COLOR_GREY, "Animations:{FFFFFF} /carry, /crack, /chat, /think, /dance, /deal, /eat, /lean, /facepalm.");
  7699. SendClientMessage(playerid, COLOR_GREY, "Animations:{FFFFFF} /gsign, /spraycan, /throw, /boxing, /cpr, /swipe, /sit, /point.");
  7700. SendClientMessage(playerid, COLOR_GREY, "Animations:{FFFFFF} /taichi, /wank, /cover, /fucku, /getup, /tired, /wave, /doorkick.");
  7701. SendClientMessage(playerid, COLOR_GREY, "Animations:{FFFFFF} /laugh, /cry, /what, /rap, /riot, /injured, /fall, /crossarms.");
  7702. SendClientMessage(playerid, COLOR_GREY, "Animations:{FFFFFF} /reload, /aim, /salute, /scratch, /dodge, /showoff, /hitch, /puke.");
  7703. SendClientMessage(playerid, COLOR_GREY, "Animations:{FFFFFF} /come, /walk, /drunk, /handsup, /checktime, /piss, /stopanim.");
  7704. SendClientMessage(playerid, COLOR_GREY, "-------------------------------------------------------------------------------------------------------------------------------");
  7705. }
  7706. /*
  7707. enum e_Callsigns
  7708. {
  7709. e_CallsignID,
  7710. // 1-LSPD
  7711. e_CallsignFaction,
  7712. // Text of the callsign
  7713. e_CallsignTextShort[32],
  7714. // Text of the callsign
  7715. e_CallsignTextFull[64]
  7716. };
  7717. new g_Callsigns[][e_Callsigns] =
  7718. {
  7719. {0, 1, "1-A-1", "1-Adam-1"},
  7720. g_CompanyItems[i][e_ItemName]
  7721. for (new i = 0; i < sizeof(g_CompanyItems); i ++)
  7722. {
  7723. if (Companies[company][cType] == g_CompanyItems[i][e_CompanyType])
  7724. {
  7725. if (g_CompanyItems[i][e_IsStockable])
  7726. {
  7727. if (Products[company][index][prStock] > 0)
  7728. {
  7729. format(string, sizeof(string), "%s\nIn Stock\tItem: %s (%s)", string, g_CompanyItems[i][e_ItemName], FormatNumber(Products[company][index][prPrice]));
  7730. */
  7731. /*ShowCallsignMenu(playerid)
  7732. {
  7733. new string[2048];
  7734. format(string, sizeof(string), "In use by\tShort\tLong");
  7735. for (new i = 0; i < sizeof(g_Callsigns); i ++)
  7736. {
  7737. if(g_Callsigns[i][e_CallsignFaction] == 1)
  7738. {
  7739. if (g_Callsigns[i][e_CallsignTakenBy] == INVALID_ID)
  7740. {
  7741. format(string, sizeof(string), "%s\nNobody\t%s\t%s", string, g_Callsigns[i][e_CallsignTextShort], g_Callsigns[i][e_CallsignTextFull]);
  7742. }
  7743. else
  7744. {
  7745. format(string, sizeof(string), "%s\n%s\t%s\t%s", string, ReturnNameEx(g_Callsigns[i][e_CallsignTakenBy], 0), g_Callsigns[i][e_CallsignTextShort], g_Callsigns[i][e_CallsignTextFull]);
  7746. }
  7747. }
  7748. }
  7749. Dialog_Show(playerid, MDC_CallsignMenu, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}MDC - Callsigns", string, "Select", "Cancel");
  7750. }*/
  7751. ShowNewMDCMenu(playerid)
  7752. {
  7753. Dialog_Show(playerid, MDC_MainMenu, DIALOG_STYLE_LIST, "{FFFFFF}Mobile Data Computer - Main Menu", "MAIN SCREEN\nNAME SEARCH\nPLATE SEARCH\nSERIAL SEARCH\nADDRESS SEARCH\nLAST 911\nCALLSIGNS", "Login", "Exit");
  7754. }
  7755. ShowNewMDC(playerid)
  7756. {
  7757. new string[256];
  7758. format(string, sizeof(string), "%s %s\n\nOFFICERS ON DUTY: %i\nCALLS LAST HOUR: %i\nARRESTS LAST HOUR: %i", GetPlayerFactionRank(playerid), ReturnNameEx(playerid), GetFactionOnlineMembers(Players[playerid][pFaction]), gCallsHour, gArrestsHour);
  7759. Dialog_Show(playerid, MDC_Login, DIALOG_STYLE_MSGBOX, "{FFFFFF}Mobile Data Computer", string, "Login", "Exit");
  7760. }
  7761. ShowMDCMainMenu(playerid)
  7762. {
  7763. Dialog_Show(playerid, MDC, DIALOG_STYLE_LIST, "{FFFFFF}Mobile Data Computer", "Search Player\nList APBs\nTrace Plate\nTrace Serial\nFind Address", "Select", "Cancel");
  7764. }
  7765. ShowMDCLookupPlayer(playerid)
  7766. {
  7767. if (!isnull(gTargetName[playerid]))
  7768. {
  7769. format(gExecute, sizeof(gExecute), "SELECT ID, Age, Origin, Warrants, Charges, PhoneLastKnown, CarLicense, GunLicense, TotalWarrants FROM rp_accounts WHERE Username = '%s'", gTargetName[playerid]);
  7770. mysql_tquery(gConnection, gExecute, "OnMDCViewInformationNew", "i", playerid);
  7771. }
  7772. }
  7773. ShowMDCPlayerMenu(playerid)
  7774. {
  7775. if (!isnull(gTargetName[playerid]))
  7776. {
  7777. new
  7778. string[MAX_PLAYER_NAME + 8];
  7779. format(string, sizeof(string), "{FFFFFF}%s", gTargetName[playerid]);
  7780. Dialog_Show(playerid, MDCPlayer, DIALOG_STYLE_LIST, string, "Add Warrant\nList Warrants\nClear Warrants\nInformation", "Select", "Cancel");
  7781. }
  7782. }
  7783. ShowMDCPlayerMenuNew(playerid)
  7784. {
  7785. if (!isnull(gTargetName[playerid]))
  7786. {
  7787. new
  7788. string[MAX_PLAYER_NAME + 8];
  7789. format(string, sizeof(string), "{FFFFFF}%s", gTargetName[playerid]);
  7790. Dialog_Show(playerid, MDCPlayerNew, DIALOG_STYLE_LIST, string, "View Information\nPrint Information\nManage Warrants\nManage Licenses\nManage Charges\nArrest Record", "Select", "Cancel");
  7791. }
  7792. }
  7793. GetHouseOwnerID(house)
  7794. {
  7795. foreach (new i : Player)
  7796. {
  7797. if (IsPlayerLoggedIn(i) && Players[i][pID] == Houses[house][hOwner])
  7798. {
  7799. return i;
  7800. }
  7801. }
  7802. return INVALID_PLAYER_ID;
  7803. }
  7804. ResetHotwiring(playerid)
  7805. {
  7806. if (Players[playerid][pHotwire] != INVALID_VEHICLE_ID)
  7807. {
  7808. SetAlarmStatus(Players[playerid][pHotwire], false);
  7809. HideFooterText(playerid);
  7810. Players[playerid][pHotwire] = INVALID_VEHICLE_ID;
  7811. Players[playerid][pHotwireTime] = 0;
  7812. }
  7813. }
  7814. ResetLastShots(playerid)
  7815. {
  7816. for (new i = BODY_PART_TORSO; i <= BODY_PART_HEAD; i ++) {
  7817. LastShots[playerid][i][lWeaponID] = 0;
  7818. LastShots[playerid][i][lWeaponShots] = 0;
  7819. }
  7820. }
  7821. GetNextUniform(faction, index)
  7822. {
  7823. index++;
  7824. if (index >= MAX_FACTION_UNIFORMS) {
  7825. index = 0;
  7826. }
  7827. for (new i = index; i < MAX_FACTION_UNIFORMS; i ++)
  7828. {
  7829. if (Factions[faction][fcUniforms][i] > 0) {
  7830. return i;
  7831. }
  7832. }
  7833. return 0;
  7834. }
  7835. GetPreviousUniform(faction, index)
  7836. {
  7837. if (index - 1 < 0) {
  7838. index = MAX_FACTION_UNIFORMS;
  7839. }
  7840. for (new i = index; --i >= 0; )
  7841. {
  7842. if (Factions[faction][fcUniforms][i] > 0) {
  7843. return i;
  7844. }
  7845. }
  7846. return 0;
  7847. }
  7848. HandleOutfitNavigation(playerid, lr)
  7849. {
  7850. if (lr == KEY_LEFT)
  7851. {
  7852. if (--Players[playerid][pOutfitIndex] < 0)
  7853. {
  7854. Players[playerid][pOutfitIndex] = sizeof(g_ValidSkinModels) - 1;
  7855. }
  7856. PlayerPlaySound(playerid, 1053, 0.0, 0.0, 0.0);
  7857. UpdateOutfitSelection(playerid);
  7858. }
  7859. else if (lr == KEY_RIGHT)
  7860. {
  7861. if (++Players[playerid][pOutfitIndex] == sizeof(g_ValidSkinModels))
  7862. {
  7863. Players[playerid][pOutfitIndex] = 0;
  7864. }
  7865. PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
  7866. UpdateOutfitSelection(playerid);
  7867. }
  7868. }
  7869. HandleUniformNavigation(playerid, lr)
  7870. {
  7871. if (lr == KEY_LEFT)
  7872. {
  7873. Players[playerid][pUniformIndex] = GetPreviousUniform(Players[playerid][pFaction], Players[playerid][pUniformIndex]);
  7874. SetPlayerSkin(playerid, Factions[Players[playerid][pFaction]][fcUniforms][Players[playerid][pUniformIndex]]);
  7875. PlayerPlaySound(playerid, 1053, 0.0, 0.0, 0.0);
  7876. }
  7877. else if (lr == KEY_RIGHT)
  7878. {
  7879. Players[playerid][pUniformIndex] = GetNextUniform(Players[playerid][pFaction], Players[playerid][pUniformIndex]);
  7880. SetPlayerSkin(playerid, Factions[Players[playerid][pFaction]][fcUniforms][Players[playerid][pUniformIndex]]);
  7881. PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
  7882. }
  7883. }
  7884. IsLockerSetup(faction)
  7885. {
  7886. return !(Factions[faction][fcLockerX] == 0.0 && Factions[faction][fcLockerY] == 0.0 && Factions[faction][fcLockerZ] == 0.0);
  7887. }
  7888. SetupUniformSelection(playerid)
  7889. {
  7890. if (Players[playerid][pFaction] != INVALID_ID)
  7891. {
  7892. new index = GetFirstUniform(Players[playerid][pFaction]);
  7893. if (index == INVALID_ID) return 0;
  7894. Players[playerid][pSelectUniform] = 1;
  7895. Players[playerid][pUniformIndex] = index;
  7896. Players[playerid][pUniformTick] = 0;
  7897. SetPlayerSkin(playerid, Factions[Players[playerid][pFaction]][fcUniforms][index]);
  7898. TogglePlayerControllable(playerid, false);
  7899. }
  7900. return 1;
  7901. }
  7902. GetFirstUniform(faction)
  7903. {
  7904. for (new i = 0; i < MAX_FACTION_UNIFORMS; i ++)
  7905. {
  7906. if (Factions[faction][fcUniforms][i] > 0)
  7907. {
  7908. return i;
  7909. }
  7910. }
  7911. return INVALID_ID;
  7912. }
  7913. GetFactionWeaponRights(faction, type)
  7914. {
  7915. new package, string[32];
  7916. if (type == 0) {
  7917. package = PACKAGE_TYPE_MELEE;
  7918. } else if (type == 1) {
  7919. package = PACKAGE_TYPE_PISTOLS;
  7920. } else if (type == 2) {
  7921. package = PACKAGE_TYPE_SHOTGUNS;
  7922. } else if (type == 3) {
  7923. package = PACKAGE_TYPE_SMGS;
  7924. } else if (type == 4) {
  7925. package = PACKAGE_TYPE_RIFLES;
  7926. } else if (type == 5) {
  7927. package = PACKAGE_TYPE_EXPLOSIVES;
  7928. }
  7929. if (Factions[faction][fcWeaponRights][type])
  7930. format(string, sizeof(string), "{33CC33}%s{FFFFFF}", FormatNumber(GetPackagePrice(package)));
  7931. else
  7932. string = "{FF5030}Not Available{FFFFFF}";
  7933. return string;
  7934. }
  7935. GetFactionEmbedColor(faction)
  7936. {
  7937. new
  7938. string[32],
  7939. color;
  7940. color = Factions[faction][fcColor] >>> 8;
  7941. if (color) {
  7942. format(string, sizeof(string), "{%06x}#%06x", color, color);
  7943. } else {
  7944. string = "N/A";
  7945. }
  7946. return string;
  7947. }
  7948. UpdateFaction(faction)
  7949. {
  7950. if (!IsValidFactionID(faction)) return 0;
  7951. new string[32];
  7952. DestroyDynamicPickup(Factions[faction][fcPickup]);
  7953. DestroyDynamic3DTextLabel(Factions[faction][fcText]);
  7954. if (IsLockerSetup(faction))
  7955. {
  7956. format(string, sizeof(string), "(ID) %i\nPress Y to access locker", faction);
  7957. Factions[faction][fcPickup] = CreateDynamicPickup(1239, 23, Factions[faction][fcLockerX], Factions[faction][fcLockerY], Factions[faction][fcLockerZ], Factions[faction][fcLockerWorld], Factions[faction][fcLockerInt]);
  7958. Factions[faction][fcText] = CreateDynamic3DTextLabel(string, -1, Factions[faction][fcLockerX], Factions[faction][fcLockerY], Factions[faction][fcLockerZ], 10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, Factions[faction][fcLockerWorld], Factions[faction][fcLockerInt]);
  7959. }
  7960. return 1;
  7961. }
  7962. SaveFactionEquipment(faction, index)
  7963. {
  7964. static
  7965. queryString[192];
  7966. if(!IsValidFactionID(faction)) return 0;
  7967. mysql_format(gConnection, queryString, sizeof(queryString), "INSERT INTO rp_factionequipment (itemFactionID, itemSlot, itemName, itemValue) VALUES(%i, %i, '%e', %i) ON DUPLICATE KEY UPDATE itemName = '%e', itemValue = %i", Factions[faction][fcID], index, FactionEquipment[faction][index][fcItemName], FactionEquipment[faction][index][fcItemValue], FactionEquipment[faction][index][fcItemName], FactionEquipment[faction][index][fcItemValue]);
  7968. mysql_tquery(gConnection, queryString);
  7969. return 1;
  7970. }
  7971. SaveFactionAccessory(faction, index)
  7972. {
  7973. static
  7974. queryString[256];
  7975. if(!IsValidFactionID(faction)) return 0;
  7976. mysql_format(gConnection, queryString, sizeof(queryString), "INSERT INTO rp_factionaccessories (accessoryFactionID, accessorySlot, accessoryName, accessoryModel, accessoryBone) VALUES(%i, %i, '%e', %i, %i) ON DUPLICATE KEY UPDATE accessoryName = '%e', accessoryModel = %i, accessoryBone = %i",
  7977. Factions[faction][fcID], index, FactionAccessories[faction][index][fcAccessoryName], FactionAccessories[faction][index][fcAccessoryModel], FactionAccessories[faction][index][fcAccessoryBone], FactionAccessories[faction][index][fcAccessoryName], FactionAccessories[faction][index][fcAccessoryModel], FactionAccessories[faction][index][fcAccessoryBone]);
  7978. mysql_tquery(gConnection, queryString);
  7979. return 1;
  7980. }
  7981. SaveFactionUniform(faction, index)
  7982. {
  7983. static
  7984. queryString[192];
  7985. if (!IsValidFactionID(faction)) return 0;
  7986. format(queryString, sizeof(queryString), "INSERT INTO rp_factionskins (uniformFactionID, uniformNumber, uniformSkin) VALUES(%i, %i, %i) ON DUPLICATE KEY UPDATE uniformSkin = %i", Factions[faction][fcID], index, Factions[faction][fcUniforms][index], Factions[faction][fcUniforms][index]);
  7987. mysql_tquery(gConnection, queryString);
  7988. return 1;
  7989. }
  7990. SaveFactionRank(faction, index)
  7991. {
  7992. static
  7993. queryString[512];
  7994. if (!IsValidFactionID(faction)) return 0;
  7995. format(queryString, sizeof(queryString), "INSERT INTO rp_factionranks (rankFactionID, rankNumber, rankName, rankPaycheck) VALUES(%i, %i, '%s', %i) ON DUPLICATE KEY UPDATE rankName = '%s', rankPaycheck = %i", Factions[faction][fcID], index, Ranks[faction][index], Factions[faction][fcPaycheck][index], Ranks[faction][index], Factions[faction][fcPaycheck][index]);
  7996. mysql_tquery(gConnection, queryString);
  7997. return 1;
  7998. }
  7999. SaveFaction(faction)
  8000. {
  8001. static
  8002. queryString[1024];
  8003. if (!IsValidFactionID(faction)) return 0;
  8004. format(queryString, sizeof(queryString), "UPDATE rp_factions SET fcName = '%s', fcType = %i, fcColor = %i, fcMaxRanks = %i, fcLockerX = %.f, fcLockerY = %.4f, fcLockerZ = %.4f, fcLockerInt = %i, fcLockerWorld = %i, fcMeleeRights = %i, fcPistolRights = %i, fcShotgunRights = %i, fcSMGRights = %i, fcRifleRights = %i, fcDrugRights = %i, fcSprayRights = %i, fcSpawnX = '%f', fcSpawnY = '%f', fcSpawnZ = '%f', fcSpawnA = '%f', fcSpawnInt = %i, fcSpawnWorld = %i WHERE fcID = %i",
  8005. mysql_escaped(Factions[faction][fcName]),
  8006. Factions[faction][fcType],
  8007. Factions[faction][fcColor],
  8008. Factions[faction][fcMaxRanks],
  8009. Factions[faction][fcLockerX],
  8010. Factions[faction][fcLockerY],
  8011. Factions[faction][fcLockerZ],
  8012. Factions[faction][fcLockerInt],
  8013. Factions[faction][fcLockerWorld],
  8014. Factions[faction][fcWeaponRights][0],
  8015. Factions[faction][fcWeaponRights][1],
  8016. Factions[faction][fcWeaponRights][2],
  8017. Factions[faction][fcWeaponRights][3],
  8018. Factions[faction][fcWeaponRights][4],
  8019. Factions[faction][fcDrugRights],
  8020. Factions[faction][fcSprayRights],
  8021. Factions[faction][fcSpawnX],
  8022. Factions[faction][fcSpawnY],
  8023. Factions[faction][fcSpawnZ],
  8024. Factions[faction][fcSpawnA],
  8025. Factions[faction][fcSpawnInt],
  8026. Factions[faction][fcSpawnWorld],
  8027. Factions[faction][fcID]
  8028. );
  8029. return mysql_tquery(gConnection, queryString);
  8030. }
  8031. GetFactionRankPay(faction, rank)
  8032. {
  8033. if (IsValidFactionID(faction) && (1 <= rank <= Factions[faction][fcMaxRanks]))
  8034. {
  8035. return Factions[faction][fcPaycheck][--rank];
  8036. }
  8037. return 0;
  8038. }
  8039. GetFactionRank(faction, rank)
  8040. {
  8041. new
  8042. name[MAX_RANK_NAME];
  8043. name = "Unspecified";
  8044. if (IsValidFactionID(faction) && (1 <= rank <= Factions[faction][fcMaxRanks]))
  8045. {
  8046. rank--;
  8047. if (!isnull(Ranks[faction][rank]))
  8048. {
  8049. strcpy(name, Ranks[faction][rank]);
  8050. }
  8051. }
  8052. return name;
  8053. }
  8054. GetPlayerFactionName(playerid)
  8055. {
  8056. new
  8057. name[32];
  8058. if (Players[playerid][pFaction] != INVALID_ID)
  8059. {
  8060. strcpy(name, Factions[Players[playerid][pFaction]][fcName]);
  8061. }
  8062. else
  8063. {
  8064. name = "No Faction";
  8065. }
  8066. return name;
  8067. }
  8068. GetPlayerFactionType(playerid)
  8069. {
  8070. if (Players[playerid][pFaction] != INVALID_ID)
  8071. {
  8072. return Factions[Players[playerid][pFaction]][fcType];
  8073. }
  8074. return 0;
  8075. }
  8076. GetPlayerFactionRank(playerid)
  8077. {
  8078. new name[MAX_RANK_NAME] = "Unspecified";
  8079. if (Players[playerid][pFaction] != INVALID_ID)
  8080. {
  8081. strcpy(name, Ranks[Players[playerid][pFaction]][Players[playerid][pFactionRank] - 1]);
  8082. if (isnull(name))
  8083. {
  8084. name = "Unspecified";
  8085. }
  8086. }
  8087. return name;
  8088. }
  8089. GetPlayerFactionID(playerid)
  8090. {
  8091. for (new i = 0; i < MAX_FACTIONS; i ++)
  8092. {
  8093. if (IsValidFactionID(i) && Factions[i][fcID] == Players[playerid][pFactionID])
  8094. {
  8095. return i;
  8096. }
  8097. }
  8098. return INVALID_ID;
  8099. }
  8100. GetFactionID(id) // id = SQL id
  8101. {
  8102. for (new i = 0; i < MAX_FACTIONS; i ++)
  8103. {
  8104. if (IsValidFactionID(i) && Factions[i][fcID] == id)
  8105. {
  8106. return i;
  8107. }
  8108. }
  8109. return INVALID_ID;
  8110. }
  8111. ClearTrunkItems(vehicle)
  8112. {
  8113. for (new i = 0; i < MAX_STORED_ITEMS; i ++)
  8114. {
  8115. if (StoredItems[i][stExists] && StoredItems[i][stVehicle] == Vehicles[vehicle][vID])
  8116. {
  8117. StoredItems[i][stExists] = 0;
  8118. StoredItems[i][stVehicle] = 0;
  8119. }
  8120. }
  8121. format(gExecute, sizeof(gExecute), "DELETE FROM rp_items WHERE itemVehicleID = %i", Vehicles[vehicle][vID]);
  8122. mysql_tquery(gConnection, gExecute);
  8123. }
  8124. ClearTrashbinItems(trashbin)
  8125. {
  8126. for (new i = 0; i < MAX_STORED_ITEMS; i ++)
  8127. {
  8128. if (StoredItems[i][stExists] && StoredItems[i][stTrashbin] == Trashbins[trashbin][tID])
  8129. {
  8130. StoredItems[i][stExists] = 0;
  8131. StoredItems[i][stTrashbin] = 0;
  8132. }
  8133. }
  8134. format(gExecute, sizeof(gExecute), "DELETE FROM rp_items WHERE itemTrashbinID = %i", Trashbins[trashbin][tID]);
  8135. mysql_tquery(gConnection, gExecute);
  8136. }
  8137. ClearSafeItems(safe)
  8138. {
  8139. for (new i = 0; i < MAX_STORED_ITEMS; i ++)
  8140. {
  8141. if (StoredItems[i][stExists] && StoredItems[i][stFurniture] == Furniture[safe][fID])
  8142. {
  8143. StoredItems[i][stExists] = 0;
  8144. StoredItems[i][stFurniture] = 0;
  8145. }
  8146. }
  8147. format(gExecute, sizeof(gExecute), "DELETE FROM rp_items WHERE itemFurnitureID = %i", Furniture[safe][fID]);
  8148. mysql_tquery(gConnection, gExecute);
  8149. }
  8150. ClearFactionVehicles(faction)
  8151. {
  8152. for (new i = 0; i < MAX_CARS; i ++)
  8153. {
  8154. if (IsValidVehicleID(i) && Vehicles[i][vFaction] == Factions[faction][fcID])
  8155. {
  8156. DestroyVehicleEx(Vehicles[i][vVehicle]);
  8157. Vehicles[i][vExists] = 0;
  8158. Vehicles[i][vVehicle] = INVALID_VEHICLE_ID;
  8159. }
  8160. }
  8161. format(gExecute, sizeof(gExecute), "DELETE FROM rp_vehicles WHERE vFaction = %i", Factions[faction][fcID]);
  8162. mysql_tquery(gConnection, gExecute);
  8163. }
  8164. RespawnFactionVehicles(faction)
  8165. {
  8166. for (new i = 0; i < MAX_CARS; i ++)
  8167. {
  8168. if (IsValidVehicleID(i) && Vehicles[i][vFaction] == Factions[faction][fcID])
  8169. {
  8170. SetVehicleToRespawn(Vehicles[i][vVehicle]);
  8171. }
  8172. }
  8173. }
  8174. ClearFactionGates(faction)
  8175. {
  8176. for (new i = 0; i < MAX_GATES; i ++)
  8177. {
  8178. if (IsValidGateID(i) && Gates[i][gFactionID] == Factions[faction][fcID])
  8179. {
  8180. DestroyDynamicObject(Gates[i][gObject]);
  8181. Gates[i][gExists] = 0;
  8182. Gates[i][gObject] = INVALID_OBJECT_ID;
  8183. }
  8184. }
  8185. format(gExecute, sizeof(gExecute), "DELETE FROM rp_gates WHERE gFactionID = %i", Factions[faction][fcID]);
  8186. mysql_tquery(gConnection, gExecute);
  8187. }
  8188. ResetFaction(faction)
  8189. {
  8190. for (new i = 0; i < 5; i ++) {
  8191. Factions[faction][fcWeaponRights][i] = 0;
  8192. }
  8193. for (new i = 0; i < MAX_FACTION_RANKS; i ++) {
  8194. Factions[faction][fcPaycheck][i] = 0;
  8195. }
  8196. for (new i = 0; i < MAX_FACTION_UNIFORMS; i ++) {
  8197. Factions[faction][fcUniforms][i] = 0;
  8198. }
  8199. DestroyDynamicPickup(Factions[faction][fcPickup]);
  8200. DestroyDynamic3DTextLabel(Factions[faction][fcText]);
  8201. Factions[faction][fcID] = 0;
  8202. Factions[faction][fcExists] = 0;
  8203. Factions[faction][fcType] = 0;
  8204. Factions[faction][fcColor] = -1;
  8205. Factions[faction][fcMaxRanks] = 5;
  8206. Factions[faction][fcLockerX] = 0.0;
  8207. Factions[faction][fcLockerY] = 0.0;
  8208. Factions[faction][fcLockerZ] = 0.0;
  8209. Factions[faction][fcLockerInt] = 0;
  8210. Factions[faction][fcLockerWorld] = 0;
  8211. Factions[faction][fcDrugRights] = 0;
  8212. Factions[faction][fcSprayRights] = 0;
  8213. Factions[faction][fcSpawnX] = 0.0;
  8214. Factions[faction][fcSpawnY] = 0.0;
  8215. Factions[faction][fcSpawnZ] = 0.0;
  8216. Factions[faction][fcSpawnA] = 0.0;
  8217. Factions[faction][fcSpawnInt] = 0;
  8218. Factions[faction][fcSpawnWorld] = 0;
  8219. Factions[faction][fcPickup] = INVALID_ID;
  8220. Factions[faction][fcText] = INVALID_3DTEXT_ID;
  8221. }
  8222. FormatSerial(serial)
  8223. {
  8224. new
  8225. string[8];
  8226. if (serial)
  8227. {
  8228. format(string, sizeof(string), "%i", serial);
  8229. }
  8230. else
  8231. {
  8232. string = "XXXXX";
  8233. }
  8234. return string;
  8235. }
  8236. SetPlayerValidArmor(playerid, Float:amount)
  8237. {
  8238. if (IsPlayerConnected(playerid))
  8239. {
  8240. Players[playerid][pArmor] = amount;
  8241. Players[playerid][pAnticheat] = 2;
  8242. if (amount >= 100.0) {
  8243. amount = 99.0;
  8244. }
  8245. else if (amount < 0.0) {
  8246. amount = 0.0;
  8247. }
  8248. return SetPlayerArmour(playerid, amount);
  8249. }
  8250. return 0;
  8251. }
  8252. UpdateMaskForPlayer(playerid)
  8253. {
  8254. foreach (new i : Player)
  8255. {
  8256. //if (Players[playerid][pMaskID] > 0)
  8257. UpdateNameTag(playerid, 2);
  8258. //ShowPlayerNameTagForPlayer(i, playerid, 0);
  8259. //else
  8260. // UpdateNameTag(playerid, 1);
  8261. //ShowPlayerNameTagForPlayer(i, playerid, 1);
  8262. }
  8263. }
  8264. UpdateColorForPlayer(playerid)
  8265. {
  8266. if(CheckAdmin(playerid, 1) && Players[playerid][pAdminDuty])
  8267. {
  8268. switch (Players[playerid][pAdmin])
  8269. {
  8270. case 1..2:
  8271. SetPlayerColor(playerid, 0xE8AF0EFF);
  8272. case 3..4:
  8273. SetPlayerColor(playerid, 0xE8AF0EFF);
  8274. default:
  8275. SetPlayerColor(playerid, 0xE8AF0EFF);
  8276. }
  8277. }
  8278. else if (Players[playerid][pSupporter] > 0 && Players[playerid][pSupporterDuty])
  8279. {
  8280. SetPlayerColor(playerid, COLOR_TESTER);
  8281. }
  8282. else if (Players[playerid][pFaction] != INVALID_ID && Players[playerid][pDuty])
  8283. {
  8284. SetPlayerColor(playerid, Factions[Players[playerid][pFaction]][fcColor]);
  8285. }
  8286. else
  8287. {
  8288. SetPlayerColor(playerid, COLOR_PLAYER);
  8289. }
  8290. }
  8291. IsVehicleInDealership(company, model)
  8292. {
  8293. if (!IsValidCompanyID(company) || Companies[company][cType] != COMPANY_DEALERSHIP)
  8294. {
  8295. return 0;
  8296. }
  8297. for (new i = 0; i < MAX_DEALERSHIP_CARS; i ++)
  8298. {
  8299. if (DealershipCars[i][dcExists] && DealershipCars[i][dcCompany] == Companies[company][cID] && DealershipCars[i][dcModel] == model)
  8300. {
  8301. return 1;
  8302. }
  8303. }
  8304. return 0;
  8305. }
  8306. AddVehicleToDealership(company, model, price)
  8307. {
  8308. if (!IsValidCompanyID(company) || Companies[company][cType] != COMPANY_DEALERSHIP)
  8309. {
  8310. return INVALID_ID;
  8311. }
  8312. new
  8313. id = GetNextDealershipCarID();
  8314. if (id != INVALID_ID)
  8315. {
  8316. DealershipCars[id][dcExists] = 1;
  8317. DealershipCars[id][dcCompany] = Companies[company][cID];
  8318. DealershipCars[id][dcModel] = model;
  8319. DealershipCars[id][dcPrice] = price;
  8320. format(gExecute, sizeof(gExecute), "INSERT INTO rp_dealercars (Company) VALUES(%i)", DealershipCars[id][dcCompany]);
  8321. mysql_tquery(gConnection, gExecute, "OnDealershipCarAdded", "i", id);
  8322. }
  8323. return id;
  8324. }
  8325. GetPackedString(const string[])
  8326. {
  8327. new
  8328. retString[200];
  8329. if (ispacked(string))
  8330. strunpack(retString, string);
  8331. else
  8332. strcat(retString, string);
  8333. return retString;
  8334. }
  8335. GetDeathReason(reason)
  8336. {
  8337. new string[24];
  8338. switch (reason)
  8339. {
  8340. case 0:
  8341. string = "Fist";
  8342. case 1..46:
  8343. GetWeaponName(reason, string, sizeof(string));
  8344. case 47:
  8345. string = "Fake Pistol";
  8346. case 49:
  8347. string = "Vehicle";
  8348. case 50:
  8349. string = "Helicopter Blades";
  8350. case 51:
  8351. string = "Explosion";
  8352. case 53:
  8353. string = "Drowned";
  8354. case 54:
  8355. string = "Splat";
  8356. }
  8357. return string;
  8358. }
  8359. GetVehicleFromPlate(const plate[])
  8360. {
  8361. for (new i = 0; i < MAX_CARS; i ++)
  8362. {
  8363. if (IsValidVehicleID(i) && !strcmp(Vehicles[i][vPlate], plate, true))
  8364. {
  8365. return i;
  8366. }
  8367. }
  8368. return INVALID_ID;
  8369. }
  8370. GetPlayerID(const name[])
  8371. {
  8372. foreach (new i : Player)
  8373. {
  8374. if (IsPlayerLoggedIn(i) && !strcmp(ReturnName(i), name))
  8375. {
  8376. return i;
  8377. }
  8378. }
  8379. return INVALID_PLAYER_ID;
  8380. }
  8381. IsWeaponCheater(playerid)
  8382. {
  8383. new
  8384. weaponid = GetPlayerWeapon(playerid);
  8385. if (GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) {
  8386. return 0;
  8387. } else if (PlayerHasWeapon(playerid, weaponid)) {
  8388. return 0;
  8389. }
  8390. return 1;
  8391. }
  8392. GetRandomHouse()
  8393. {
  8394. new
  8395. houses[MAX_HOUSES],
  8396. index = 0;
  8397. for (new i = 0; i < MAX_HOUSES; i ++)
  8398. {
  8399. if (IsValidHouseID(i) && !Houses[i][hExterior] && !Houses[i][hExteriorWorld] && !strcmp(GetRegionName(Houses[i][hSpawn][0], Houses[i][hSpawn][1], Houses[i][hSpawn][2]), "Los Santos"))
  8400. {
  8401. houses[index++] = i;
  8402. }
  8403. }
  8404. if (index)
  8405. return houses[random(index)];
  8406. else
  8407. return INVALID_ID;
  8408. }
  8409. GetRandomTrash()
  8410. {
  8411. new
  8412. trash[MAX_TRASH_BINS],
  8413. index = 0;
  8414. for (new i = 0; i < MAX_TRASH_BINS; i ++)
  8415. {
  8416. if (IsValidTrashbinID(i) && !strcmp(GetRegionName(Trashbins[i][tX], Trashbins[i][tY], Trashbins[i][tZ]), "Los Santos"))
  8417. {
  8418. trash[index++] = i;
  8419. }
  8420. }
  8421. if (index)
  8422. return trash[random(index)];
  8423. else
  8424. return INVALID_ID;
  8425. }
  8426. /*
  8427. enum e_Trashbins {
  8428. tID,
  8429. tExists,
  8430. Float:tX,
  8431. Float:tY,
  8432. Float:tZ,
  8433. Float:tA,
  8434. tInterior,
  8435. tWorld,
  8436. Text3D:tText,
  8437. tObject
  8438. };
  8439. */
  8440. GetVehicleComponentTypeCount(vehicleid, type)
  8441. {
  8442. new count;
  8443. for(new i = MIN_COMPONENT_ID; i <= MAX_COMPONENT_ID; i ++)
  8444. {
  8445. if(IsValidComponentForVehicle(vehicleid, i) && GetVehicleComponentType(i) == type)
  8446. {
  8447. count++;
  8448. }
  8449. }
  8450. return count;
  8451. }
  8452. IsVehicleModifiable(vehicleid)
  8453. {
  8454. for(new i = CARMODTYPE_SPOILER; i <= CARMODTYPE_VENT_LEFT; i ++)
  8455. {
  8456. if(GetVehicleComponentTypeCount(vehicleid, i) > 0)
  8457. {
  8458. return 1;
  8459. }
  8460. }
  8461. return 0;
  8462. }
  8463. GetVehicleComponentPriceEx(componentid)
  8464. {
  8465. new price = GetVehicleComponentPrice(componentid);
  8466. return price > 0 ? price : 500;
  8467. }
  8468. GetVehicleComponentName(componentid)
  8469. {
  8470. new
  8471. name[32];
  8472. GetComponentName(componentid, name, sizeof(name));
  8473. return name;
  8474. }
  8475. CancelComponentPreview(playerid)
  8476. {
  8477. if(Players[playerid][pModPreview] >= 1000)
  8478. {
  8479. RemoveVehicleComponent(GetPlayerVehicleID(playerid), Players[playerid][pModPreview]);
  8480. AddVehicleComponent(GetPlayerVehicleID(playerid), Players[playerid][pOldComponent]);
  8481. }
  8482. Players[playerid][pModPreview] = 0;
  8483. }
  8484. IsPlayerInModdingShop(playerid)
  8485. {
  8486. return IsPlayerInRangeOfPoint(playerid, 30.0, 1041.2220, -1028.3320, 32.1016);
  8487. }
  8488. ExitModdingShop(playerid)
  8489. {
  8490. if(IsPlayerInModdingShop(playerid))
  8491. {
  8492. if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  8493. {
  8494. CancelComponentPreview(playerid);
  8495. SetVehiclePos(GetPlayerVehicleID(playerid), 1041.4913, -1031.0121, 32.0686);
  8496. SetVehicleZAngle(GetPlayerVehicleID(playerid), 180.0000);
  8497. SetVehicleVirtualWorld(GetPlayerVehicleID(playerid), 0);
  8498. LinkVehicleToInterior(GetPlayerVehicleID(playerid), 0);
  8499. SetVehicleParamsEx(GetPlayerVehicleID(playerid), Players[playerid][pVehicleParams][0], Players[playerid][pVehicleParams][1], Players[playerid][pVehicleParams][2], Players[playerid][pVehicleParams][3], Players[playerid][pVehicleParams][4], Players[playerid][pVehicleParams][5], Players[playerid][pVehicleParams][6]);
  8500. }
  8501. else
  8502. {
  8503. SetPlayerPos(playerid, 1041.4913, -1031.0121, 32.0686);
  8504. SetPlayerFacingAngle(playerid, 180.0000);
  8505. }
  8506. SetPlayerInterior(playerid, 0);
  8507. SetPlayerVirtualWorld(playerid, 0);
  8508. }
  8509. return 1;
  8510. }
  8511. ShowModMainMenu(playerid)
  8512. {
  8513. if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  8514. {
  8515. new vehicleid = GetPlayerVehicleID(playerid), string[256];
  8516. for(new i = CARMODTYPE_SPOILER; i <= CARMODTYPE_VENT_LEFT; i ++)
  8517. {
  8518. if(GetVehicleComponentTypeCount(vehicleid, i) > 0)
  8519. {
  8520. format(string, sizeof(string), "%s\n%s", string, componentSlotNames[i]);
  8521. }
  8522. }
  8523. if(isnull(string))
  8524. {
  8525. SendErrorMessage(playerid, "This vehicle cannot be modified.");
  8526. }
  8527. else
  8528. {
  8529. Dialog_Show(playerid, ModdingMenu, DIALOG_STYLE_LIST, "{33AA33}Modding - Main Menu", string, "Select", "Exit");
  8530. }
  8531. }
  8532. return 1;
  8533. }
  8534. ShowModBrowseMenu(playerid)
  8535. {
  8536. if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  8537. {
  8538. new vehicleid = GetPlayerVehicleID(playerid), string[512], count;
  8539. string = "Component\tPrice";
  8540. for(new i = MIN_COMPONENT_ID; i <= MAX_COMPONENT_ID; i ++)
  8541. {
  8542. if(GetVehicleComponentType(i) == Players[playerid][pSelected] && IsValidComponentForVehicle(vehicleid, i))
  8543. {
  8544. format(string, sizeof(string), "%s\n%s\t($%i)", string, GetVehicleComponentName(i), GetVehicleComponentPriceEx(i));
  8545. count++;
  8546. }
  8547. }
  8548. if(isnull(string))
  8549. {
  8550. SendErrorMessage(playerid, "There are no mods in this category available for your vehicle.");
  8551. ShowModMainMenu(playerid);
  8552. }
  8553. else
  8554. {
  8555. strcat(string, "\n{FFFF00}<< Go Back");
  8556. Dialog_Show(playerid, ModdingBrowse, DIALOG_STYLE_TABLIST_HEADERS, "{33AA33}Modding - Select Mod", string, "Select", "Exit");
  8557. }
  8558. }
  8559. return 1;
  8560. }
  8561. IsRepairShopInUse(id)
  8562. {
  8563. foreach(new i : Player)
  8564. {
  8565. if(Players[i][pRepairShop] == id && IsPlayerInRangeOfPoint(i, 10.0, g_RepairShops[id][3], g_RepairShops[id][4], g_RepairShops[id][5]))
  8566. {
  8567. return 1;
  8568. }
  8569. }
  8570. return 0;
  8571. }
  8572. GetAmmunitionType(weaponid)
  8573. {
  8574. new
  8575. type[16];
  8576. switch (weaponid)
  8577. {
  8578. case 22, 23, 28, 29, 32:
  8579. type = "9x19mm";
  8580. case 24:
  8581. type = ".50cal";
  8582. case 25, 26, 27:
  8583. type = "12 Gauge";
  8584. case 30:
  8585. type = "7.62x39mm";
  8586. case 31:
  8587. type = "5.56x45mm";
  8588. case 33, 34:
  8589. type = "7.62x51mm";
  8590. default:
  8591. type = "Unknown";
  8592. }
  8593. return type;
  8594. }
  8595. stock randomEx(min, max)
  8596. {
  8597. new rand = random(max-min)+min;
  8598. return rand;
  8599. }
  8600. stock GSF(playerid, skinid)
  8601. {
  8602. new pName[MAX_PLAYER_NAME];
  8603. GetPlayerName(playerid, pName, sizeof(pName));
  8604. //If the player has the [TM] tag in his name...
  8605. if(strfind(pName, "[GSF]", true) != -1)
  8606. {
  8607. switch(skinid)
  8608. {
  8609. //Add your own private skin ids here...
  8610. case 105, 106, 107: return 1;
  8611. }
  8612. }
  8613. return 0;
  8614. }
  8615. stock NotAuthMSG(playerid)
  8616. {
  8617. return SCM(playerid, COLOR_LIGHTRED, " You Are Not An Admin");
  8618. }
  8619. stock PlayPlayerBoomBoxURL(playerid, urlname[], url[])
  8620. {
  8621. new vehicle = GetPlayerVehicleID(playerid);
  8622. if(IsPlayerInVehicle(playerid, vehicle))
  8623. {
  8624. format(msg, sizeof(msg), "> %s has tuned the radio station to %s.", ReturnNameEx(playerid), urlname);
  8625. SetPlayerChatBubble(playerid, msg, COLOR_GREEN, 15.0, 10000);
  8626. SCM(playerid, COLOR_GREEN, msg);
  8627. Players[playerid][pVehicleStream] = vehicle;
  8628. strpack(VehicleInformation[vehicle][vStream], urlname, 128 char);
  8629. StartMusicInVehicle(vehicle, url);
  8630. }
  8631. return 1;
  8632. }
  8633. stock StartMusicInVehicle(vehicle, url[])
  8634. {
  8635. foreach(new i : Player)
  8636. {
  8637. if(GetPlayerVehicleID(i) == vehicle)
  8638. {
  8639. StopAudioStreamForPlayer(i);
  8640. PlayAudioStreamForPlayer(i, url);
  8641. }
  8642. }
  8643. return 1;
  8644. }
  8645. Float:DistanceCameraTargetToLocation(Float:CamX, Float:CamY, Float:CamZ, Float:ObjX, Float:ObjY, Float:ObjZ, Float:FrX, Float:FrY, Float:FrZ)
  8646. {
  8647. new Float:TGTDistance;
  8648. TGTDistance = floatsqroot((CamX - ObjX) * (CamX - ObjX) + (CamY - ObjY) * (CamY - ObjY) + (CamZ - ObjZ) * (CamZ - ObjZ));
  8649. new Float:tmpX, Float:tmpY, Float:tmpZ;
  8650. tmpX = FrX * TGTDistance + CamX;
  8651. tmpY = FrY * TGTDistance + CamY;
  8652. tmpZ = FrZ * TGTDistance + CamZ;
  8653. return floatsqroot((tmpX - ObjX) * (tmpX - ObjX) + (tmpY - ObjY) * (tmpY - ObjY) + (tmpZ - ObjZ) * (tmpZ - ObjZ));
  8654. }
  8655. PlayerFaces(playerid, Float:x, Float:y, Float:z, Float:radius)
  8656. {
  8657. new Float:cx,Float:cy,Float:cz,Float:fx,Float:fy,Float:fz;
  8658. GetPlayerCameraPos(playerid, cx, cy, cz);
  8659. GetPlayerCameraFrontVector(playerid, fx, fy, fz);
  8660. return (radius >= DistanceCameraTargetToLocation(cx, cy, cz, x, y, z, fx, fy, fz));
  8661. }
  8662. DeleteFire(ID)
  8663. {
  8664. DestroyDynamicObject(FireObj[ID]);
  8665. TotalFires--;
  8666. FirePos[ID][0] = 0, FirePos[ID][1] = 0, FirePos[ID][2] = 0;
  8667. }
  8668. DeleteAllFire()
  8669. {
  8670. new ID;
  8671. for(ID = 0; ID<MaxFire; ID++)
  8672. {
  8673. DestroyDynamicObject(FireObj[ID]);
  8674. TotalFires= 0;
  8675. FirePos[ID][0] = 0, FirePos[ID][1] = 0, FirePos[ID][2] = 0;
  8676. #if defined Labels
  8677. Delete3DTextLabel(FireText[ID]);
  8678. #endif
  8679. }
  8680. }
  8681. IsValidFire(ID)
  8682. {
  8683. if( (FirePos[ID][0] != 0) && (FirePos[ID][1] != 0) && (FirePos[ID][2] != 0) ) return true;
  8684. else return false;
  8685. }
  8686. /*
  8687. GetClosestFire(playerid)
  8688. {
  8689. new i;
  8690. for(i = 0; i<MaxFire; i++)
  8691. {
  8692. if(IsValidFire(i) && IsPlayerInRangeOfPoint(playerid, 1, FirePos[i][0], FirePos[i][1], FirePos[i][2]))
  8693. {
  8694. return i;
  8695. }
  8696. }
  8697. return 0;
  8698. }*/
  8699. f_OnPlayerUpdate(playerid)
  8700. {
  8701. new newkeys,l,u;
  8702. GetPlayerKeys(playerid, newkeys, l, u);
  8703. new i;
  8704. if(Holding(KEY_FIRE))
  8705. {
  8706. if(GetPlayerWeapon(playerid) == 42)
  8707. {
  8708. for(i = 0; i < MaxFire; i++)
  8709. {
  8710. if(IsValidFire(i))
  8711. {
  8712. if(PlayerFaces(playerid, FirePos[i][0], FirePos[i][1], FirePos[i][2], 1) && IsPlayerInRangeOfPoint(playerid, 4, FirePos[i][0], FirePos[i][1], FirePos[i][2]))
  8713. {
  8714. FireHealth[i]-=2;
  8715. if(FireHealth[i] <= 0)
  8716. {
  8717. DeleteFire(i);
  8718. CallRemoteFunction("OnFireDeath", "dd", i, playerid);
  8719. }
  8720. }
  8721. }
  8722. }
  8723. }
  8724. }
  8725. return 1;
  8726. }
  8727. GetArrestTime(categid, chargeid)
  8728. {
  8729. switch (categid)
  8730. {
  8731. case 1:
  8732. {
  8733. switch (chargeid)
  8734. {
  8735. case 1:
  8736. return 5;
  8737. case 2:
  8738. return 10;
  8739. case 3:
  8740. return 10;
  8741. case 4:
  8742. return 15;
  8743. case 5:
  8744. return 15;
  8745. case 6:
  8746. return 20;
  8747. case 7:
  8748. return 25;
  8749. case 8:
  8750. return 25;
  8751. case 9:
  8752. return 30;
  8753. case 10:
  8754. return 20;
  8755. case 11:
  8756. return 10;
  8757. case 12:
  8758. return 15;
  8759. case 13:
  8760. return 30;
  8761. default:
  8762. return 999;
  8763. }
  8764. }
  8765. case 2:
  8766. {
  8767. switch (chargeid)
  8768. {
  8769. case 1:
  8770. return 5;
  8771. case 2:
  8772. return 10;
  8773. case 3:
  8774. return 10;
  8775. case 4:
  8776. return 15;
  8777. case 5:
  8778. return 15;
  8779. case 6:
  8780. return 20;
  8781. case 7:
  8782. return 25;
  8783. case 8:
  8784. return 25;
  8785. case 9:
  8786. return 30;
  8787. case 10:
  8788. return 20;
  8789. case 11:
  8790. return 10;
  8791. case 12:
  8792. return 15;
  8793. case 13:
  8794. return 30;
  8795. default:
  8796. return 999;
  8797. }
  8798. }
  8799. case 3:
  8800. {
  8801. switch (chargeid)
  8802. {
  8803. case 1:
  8804. return 5;
  8805. case 2:
  8806. return 10;
  8807. case 3:
  8808. return 10;
  8809. case 4:
  8810. return 15;
  8811. case 5:
  8812. return 15;
  8813. case 6:
  8814. return 20;
  8815. case 7:
  8816. return 25;
  8817. case 8:
  8818. return 25;
  8819. case 9:
  8820. return 30;
  8821. case 10:
  8822. return 20;
  8823. case 11:
  8824. return 10;
  8825. case 12:
  8826. return 15;
  8827. case 13:
  8828. return 30;
  8829. default:
  8830. return 999;
  8831. }
  8832. }
  8833. case 4:
  8834. {
  8835. switch (chargeid)
  8836. {
  8837. case 1:
  8838. return 5;
  8839. case 2:
  8840. return 10;
  8841. case 3:
  8842. return 10;
  8843. case 4:
  8844. return 15;
  8845. case 5:
  8846. return 15;
  8847. case 6:
  8848. return 20;
  8849. case 7:
  8850. return 25;
  8851. case 8:
  8852. return 25;
  8853. case 9:
  8854. return 30;
  8855. case 10:
  8856. return 20;
  8857. case 11:
  8858. return 10;
  8859. case 12:
  8860. return 15;
  8861. case 13:
  8862. return 30;
  8863. default:
  8864. return 999;
  8865. }
  8866. }
  8867. case 5:
  8868. {
  8869. switch (chargeid)
  8870. {
  8871. case 1:
  8872. return 5;
  8873. case 2:
  8874. return 10;
  8875. case 3:
  8876. return 10;
  8877. case 4:
  8878. return 15;
  8879. case 5:
  8880. return 15;
  8881. case 6:
  8882. return 20;
  8883. case 7:
  8884. return 25;
  8885. case 8:
  8886. return 25;
  8887. case 9:
  8888. return 30;
  8889. case 10:
  8890. return 20;
  8891. case 11:
  8892. return 10;
  8893. case 12:
  8894. return 15;
  8895. case 13:
  8896. return 30;
  8897. default:
  8898. return 999;
  8899. }
  8900. }
  8901. case 6:
  8902. {
  8903. switch (chargeid)
  8904. {
  8905. case 1:
  8906. return 5;
  8907. case 2:
  8908. return 10;
  8909. case 3:
  8910. return 10;
  8911. case 4:
  8912. return 15;
  8913. case 5:
  8914. return 15;
  8915. case 6:
  8916. return 20;
  8917. case 7:
  8918. return 25;
  8919. case 8:
  8920. return 25;
  8921. case 9:
  8922. return 30;
  8923. case 10:
  8924. return 20;
  8925. case 11:
  8926. return 10;
  8927. case 12:
  8928. return 15;
  8929. case 13:
  8930. return 30;
  8931. default:
  8932. return 999;
  8933. }
  8934. }
  8935. case 7:
  8936. {
  8937. switch (chargeid)
  8938. {
  8939. case 1:
  8940. return 5;
  8941. case 2:
  8942. return 10;
  8943. case 3:
  8944. return 10;
  8945. case 4:
  8946. return 15;
  8947. case 5:
  8948. return 15;
  8949. case 6:
  8950. return 20;
  8951. case 7:
  8952. return 25;
  8953. case 8:
  8954. return 25;
  8955. case 9:
  8956. return 30;
  8957. case 10:
  8958. return 20;
  8959. case 11:
  8960. return 10;
  8961. case 12:
  8962. return 15;
  8963. case 13:
  8964. return 30;
  8965. default:
  8966. return 999;
  8967. }
  8968. }
  8969. case 8:
  8970. {
  8971. switch (chargeid)
  8972. {
  8973. case 1:
  8974. return 5;
  8975. case 2:
  8976. return 10;
  8977. case 3:
  8978. return 10;
  8979. case 4:
  8980. return 15;
  8981. case 5:
  8982. return 15;
  8983. case 6:
  8984. return 20;
  8985. case 7:
  8986. return 25;
  8987. case 8:
  8988. return 25;
  8989. case 9:
  8990. return 30;
  8991. case 10:
  8992. return 20;
  8993. case 11:
  8994. return 10;
  8995. case 12:
  8996. return 15;
  8997. case 13:
  8998. return 30;
  8999. default:
  9000. return 999;
  9001. }
  9002. }
  9003. case 9:
  9004. {
  9005. switch (chargeid)
  9006. {
  9007. case 1:
  9008. return 5;
  9009. case 2:
  9010. return 10;
  9011. case 3:
  9012. return 10;
  9013. case 4:
  9014. return 15;
  9015. case 5:
  9016. return 15;
  9017. case 6:
  9018. return 20;
  9019. case 7:
  9020. return 25;
  9021. case 8:
  9022. return 25;
  9023. case 9:
  9024. return 30;
  9025. case 10:
  9026. return 20;
  9027. case 11:
  9028. return 10;
  9029. case 12:
  9030. return 15;
  9031. case 13:
  9032. return 30;
  9033. default:
  9034. return 999;
  9035. }
  9036. }
  9037. }
  9038. return 0;
  9039. }
  9040. /* foreach (new i : Player)
  9041. {
  9042. if (IsPlayerInVehicle(i, vehicleid))
  9043. {
  9044. Players[i][pVehicleStream] = vehicleid;
  9045. PlayAudioStreamForPlayer(i, station);
  9046. }
  9047. }
  9048. strpack(VehicleInformation[vehicleid][vStream], station, 128 char);*/
  9049. stock ShowBoomBoxStations(playerid)
  9050. {
  9051. Dialog_Show(playerid, ChangeGenre, DIALOG_STYLE_LIST, "Genres:", "URBAN\nROCK\nOTHER\nPOP\n{F2E146}Custom Stream\n{F2E146}OFF - To turn off.", "Select", "<<<");
  9052. return 1;
  9053. }
  9054. stock StopCarBoomBox(vehicle)
  9055. {
  9056. foreach(new i : Player)
  9057. {
  9058. if(GetPlayerVehicleID(i) == vehicle)
  9059. {
  9060. StopAudioStreamForPlayer(i);
  9061. }
  9062. }
  9063. return 1;
  9064. }
  9065. stock RemoveBuildings(playerid)
  9066. {
  9067. // Player IP
  9068. GetPlayerIp(playerid, Players[playerid][pIP], 16);
  9069. // Willowfield
  9070. RemoveBuildingForPlayer(playerid, 5110, 2443.63281, -1901.32031, 18.00781, 0.25); //removeWorldObject (mexcrnershp2_las2) (1)
  9071. RemoveBuildingForPlayer(playerid, 5226, 2443.63281, -1901.32031, 18.00781, 0.25); //LOD Remove Object 5110
  9072. RemoveBuildingForPlayer(playerid, 1635, 2441.4375, -1901.69531, 14.72656, 0.25); //removeWorldObject (nt_aircon1dbl) (1)
  9073. RemoveBuildingForPlayer(playerid, 1687, 2430.51563, -1917.72656, 18.96094, 0.25); //removeWorldObject (gen_roofbit1) (1)
  9074. RemoveBuildingForPlayer(playerid, 5179, 2439.72656, -1952.09375, 16.02344, 0.25); //removeWorldObject (mexcrnershp_las2) (1)
  9075. RemoveBuildingForPlayer(playerid, 5248, 2439.72656, -1952.09375, 16.02344, 0.25); //LOD Remove Object 5179
  9076. RemoveBuildingForPlayer(playerid, 5187, 2439.28125, -1979.96094, 15.75, 0.25); //removeWorldObject (mexcrnrxc_las2) (1)
  9077. RemoveBuildingForPlayer(playerid, 5249, 2439.28125, -1979.96094, 15.75, 0.25); //LOD Remove Object 5187
  9078. RemoveBuildingForPlayer(playerid, 1635, 2440.35938, -1974.92969, 16.03906, 0.25); //removeWorldObject (nt_aircon1dbl) (2)
  9079. RemoveBuildingForPlayer(playerid, 1687, 2446.28125, -1992.58594, 18.35938, 0.25); //removeWorldObject (gen_roofbit1) (2)
  9080. RemoveBuildingForPlayer(playerid, 1687, 2430.47656, -1967.78906, 18.35938, 0.25); //removeWorldObject (gen_roofbit1) (3)
  9081. RemoveBuildingForPlayer(playerid, 1635, 2456.39844, -1959.5625, 16.03906, 0.25); //removeWorldObject (nt_aircon1dbl) (3)
  9082. RemoveBuildingForPlayer(playerid, 1687, 2437.21094, -1946.64844, 18.35938, 0.25); //removeWorldObject (gen_roofbit1) (4)
  9083. // Power bar
  9084. Players[playerid][pBars][0] = CreatePlayerProgressBar(playerid, 556.000000, 130.000000, 57.000000, 4.699999, COLOR_SAMP, 100.0000, 0);
  9085. // Gram
  9086. RemoveBuildingForPlayer(playerid, 5635, 2182.2891, -1324.7500, 28.6016, 0.25);
  9087. // Stupid bush at Unity
  9088. RemoveBuildingForPlayer(playerid, 5024, 1748.8438, -1883.0313, 14.1875, 0.25);
  9089. // Sprunk machines
  9090. RemoveBuildingForPlayer(playerid, 1302, 0.0, 0.0, 0.0, 6000.0);
  9091. RemoveBuildingForPlayer(playerid, 1209, 0.0, 0.0, 0.0, 6000.0);
  9092. RemoveBuildingForPlayer(playerid, 955, 0.0, 0.0, 0.0, 6000.0);
  9093. RemoveBuildingForPlayer(playerid, 956, 0.0, 0.0, 0.0, 6000.0);
  9094. RemoveBuildingForPlayer(playerid, 1775, 0.0, 0.0, 0.0, 6000.0);
  9095. RemoveBuildingForPlayer(playerid, 1776, 0.0, 0.0, 0.0, 6000.0);
  9096. RemoveBuildingForPlayer(playerid, 1977, 0.0, 0.0, 0.0, 6000.0);
  9097. // Fuel pumps
  9098. RemoveBuildingForPlayer(playerid, 3465, 0.0, 0.0, 0.0, 6000.0);
  9099. RemoveBuildingForPlayer(playerid, 1686, 0.0, 0.0, 0.0, 6000.0);
  9100. RemoveBuildingForPlayer(playerid, 1244, 0.0, 0.0, 0.0, 6000.0);
  9101. RemoveBuildingForPlayer(playerid, 1676, 0.0, 0.0, 0.0, 6000.0);
  9102. // Pay N' Spray, Mod Shop and Bomb Shop doors
  9103. RemoveBuildingForPlayer(playerid, 5043, 1843.3672, -1856.3203, 13.8750, 0.25);
  9104. //RemoveBuildingForPlayer(playerid, 5340, 2644.8594, -2039.2344, 14.0391, 0.25);
  9105. RemoveBuildingForPlayer(playerid, 5422, 2071.4766, -1831.4219, 14.5625, 0.25);
  9106. RemoveBuildingForPlayer(playerid, 5856, 1024.9844, -1029.3516, 33.1953, 0.25);
  9107. //RemoveBuildingForPlayer(playerid, 5779, 1041.3516, -1025.9297, 32.6719, 0.25);
  9108. RemoveBuildingForPlayer(playerid, 6400, 488.2813, -1734.6953, 12.3906, 0.25);
  9109. //RemoveBuildingForPlayer(playerid, 10575, -2716.3516, 217.4766, 5.3828, 0.25);
  9110. //RemoveBuildingForPlayer(playerid, 11313, -1935.8594, 239.5313, 35.3516, 0.25);
  9111. RemoveBuildingForPlayer(playerid, 11319, -1904.5313, 277.8984, 42.9531, 0.25);
  9112. RemoveBuildingForPlayer(playerid, 9625, -2425.7266, 1027.9922, 52.2813, 0.25);
  9113. RemoveBuildingForPlayer(playerid, 9093, 2386.6563, 1043.6016, 11.5938, 0.25);
  9114. RemoveBuildingForPlayer(playerid, 7707, 2006.0000, 2317.6016, 11.3125, 0.25);
  9115. RemoveBuildingForPlayer(playerid, 7709, 2006.0000, 2303.7266, 11.3125, 0.25);
  9116. RemoveBuildingForPlayer(playerid, 7891, 1968.7422, 2162.4922, 12.0938, 0.25);
  9117. RemoveBuildingForPlayer(playerid, 3294, -1420.5469, 2591.1563, 57.7422, 0.25);
  9118. RemoveBuildingForPlayer(playerid, 3294, -100.0000, 1111.4141, 21.6406, 0.25);
  9119. RemoveBuildingForPlayer(playerid, 13028, 720.0156, -462.5234, 16.8594, 0.25);
  9120. //Prison EXT remove
  9121. RemoveBuildingForPlayer(playerid, 3295, 1099.1172, -358.4766, 77.6172, 0.25);
  9122. RemoveBuildingForPlayer(playerid, 3347, 1114.2969, -353.8203, 72.7969, 0.25);
  9123. RemoveBuildingForPlayer(playerid, 3347, 1107.5938, -358.5156, 72.7969, 0.25);
  9124. RemoveBuildingForPlayer(playerid, 3376, 1070.4766, -355.1641, 77.3359, 0.25);
  9125. RemoveBuildingForPlayer(playerid, 3404, 1019.3828, -300.2422, 72.9844, 0.25);
  9126. RemoveBuildingForPlayer(playerid, 3404, 1045.5625, -300.6016, 72.9844, 0.25);
  9127. RemoveBuildingForPlayer(playerid, 785, 1150.3516, -343.1094, 58.4141, 0.25);
  9128. RemoveBuildingForPlayer(playerid, 785, 1091.6094, -250.0078, 71.0391, 0.25);
  9129. RemoveBuildingForPlayer(playerid, 3276, 1012.2891, -282.5391, 73.8438, 0.25);
  9130. RemoveBuildingForPlayer(playerid, 3276, 1023.4219, -279.9063, 73.8438, 0.25);
  9131. RemoveBuildingForPlayer(playerid, 1503, 1019.3203, -282.7891, 73.2031, 0.25);
  9132. RemoveBuildingForPlayer(playerid, 694, 1045.8438, -270.9453, 75.4219, 0.25);
  9133. RemoveBuildingForPlayer(playerid, 3276, 1047.3125, -280.3359, 73.8438, 0.25);
  9134. RemoveBuildingForPlayer(playerid, 3276, 1059.2266, -281.2656, 73.8438, 0.25);
  9135. RemoveBuildingForPlayer(playerid, 3276, 1082.9922, -283.6797, 73.8438, 0.25);
  9136. RemoveBuildingForPlayer(playerid, 791, 1091.6094, -250.0078, 71.0391, 0.25);
  9137. RemoveBuildingForPlayer(playerid, 694, 1130.1719, -278.6172, 70.7031, 0.25);
  9138. RemoveBuildingForPlayer(playerid, 694, 1137.7031, -313.9141, 68.9531, 0.25);
  9139. RemoveBuildingForPlayer(playerid, 13451, 1146.1406, -369.1328, 49.3281, 0.25);
  9140. RemoveBuildingForPlayer(playerid, 791, 1150.3516, -343.1094, 58.4141, 0.25);
  9141. RemoveBuildingForPlayer(playerid, 3276, 1009.4766, -440.1797, 54.3281, 0.25);
  9142. RemoveBuildingForPlayer(playerid, 3276, 1007.6953, -416.6406, 63.4453, 0.25);
  9143. RemoveBuildingForPlayer(playerid, 3276, 1008.4375, -428.4063, 58.8516, 0.25);
  9144. RemoveBuildingForPlayer(playerid, 3276, 1042.8203, -410.4141, 62.6563, 0.25);
  9145. RemoveBuildingForPlayer(playerid, 3276, 1041.9297, -422.1328, 58.1563, 0.25);
  9146. RemoveBuildingForPlayer(playerid, 3276, 1040.8281, -434.0625, 53.7422, 0.25);
  9147. RemoveBuildingForPlayer(playerid, 3276, 1007.7969, -385.0078, 71.8438, 0.25);
  9148. RemoveBuildingForPlayer(playerid, 3276, 1042.9219, -386.4531, 70.3516, 0.25);
  9149. RemoveBuildingForPlayer(playerid, 3276, 1042.9688, -374.4766, 72.8906, 0.25);
  9150. RemoveBuildingForPlayer(playerid, 3425, 1015.0938, -361.1016, 84.0391, 0.25);
  9151. RemoveBuildingForPlayer(playerid, 3276, 1007.6719, -361.6250, 73.8438, 0.25);
  9152. RemoveBuildingForPlayer(playerid, 1308, 1042.8125, -368.1953, 73.1016, 0.25);
  9153. RemoveBuildingForPlayer(playerid, 3276, 1007.6250, -349.8984, 73.8438, 0.25);
  9154. RemoveBuildingForPlayer(playerid, 3276, 1007.5234, -326.4453, 73.8438, 0.25);
  9155. RemoveBuildingForPlayer(playerid, 3276, 1007.4766, -314.7188, 73.8438, 0.25);
  9156. RemoveBuildingForPlayer(playerid, 3276, 1007.4297, -302.9922, 73.8438, 0.25);
  9157. RemoveBuildingForPlayer(playerid, 3276, 1007.3828, -291.2578, 73.8438, 0.25);
  9158. RemoveBuildingForPlayer(playerid, 3402, 1019.3828, -300.2422, 72.9844, 0.25);
  9159. RemoveBuildingForPlayer(playerid, 698, 1053.2891, -378.6719, 74.4297, 0.25);
  9160. RemoveBuildingForPlayer(playerid, 698, 1092.4688, -383.6172, 74.8906, 0.25);
  9161. RemoveBuildingForPlayer(playerid, 3276, 1083.6641, -368.5313, 73.8438, 0.25);
  9162. RemoveBuildingForPlayer(playerid, 3276, 1071.9375, -368.5156, 73.8438, 0.25);
  9163. RemoveBuildingForPlayer(playerid, 3276, 1060.2109, -368.4922, 73.8438, 0.25);
  9164. RemoveBuildingForPlayer(playerid, 3375, 1070.4766, -355.1641, 77.3359, 0.25);
  9165. RemoveBuildingForPlayer(playerid, 1308, 1094.4141, -367.9688, 72.8984, 0.25);
  9166. RemoveBuildingForPlayer(playerid, 1408, 1092.7109, -327.0625, 73.5703, 0.25);
  9167. RemoveBuildingForPlayer(playerid, 1408, 1095.3984, -329.8203, 73.5078, 0.25);
  9168. RemoveBuildingForPlayer(playerid, 700, 1095.3828, -327.4766, 73.1797, 0.25);
  9169. RemoveBuildingForPlayer(playerid, 1408, 1092.7969, -321.4844, 73.5703, 0.25);
  9170. RemoveBuildingForPlayer(playerid, 1408, 1092.9063, -315.9688, 73.5703, 0.25);
  9171. RemoveBuildingForPlayer(playerid, 1408, 1093.1953, -299.2969, 73.5703, 0.25);
  9172. RemoveBuildingForPlayer(playerid, 3402, 1045.5625, -300.6016, 72.9844, 0.25);
  9173. RemoveBuildingForPlayer(playerid, 13206, 1072.9531, -289.1797, 72.7344, 0.25);
  9174. RemoveBuildingForPlayer(playerid, 1408, 1093.3047, -293.7813, 73.5703, 0.25);
  9175. RemoveBuildingForPlayer(playerid, 1408, 1096.1563, -291.2656, 73.5703, 0.25);
  9176. RemoveBuildingForPlayer(playerid, 656, 1096.6250, -294.4141, 72.9375, 0.25);
  9177. RemoveBuildingForPlayer(playerid, 3286, 1099.1172, -358.4766, 77.6172, 0.25);
  9178. RemoveBuildingForPlayer(playerid, 3175, 1107.5938, -358.5156, 72.7969, 0.25);
  9179. RemoveBuildingForPlayer(playerid, 3276, 1107.1172, -368.5703, 73.8438, 0.25);
  9180. RemoveBuildingForPlayer(playerid, 3253, 1106.6406, -319.8750, 73.7422, 0.25);
  9181. RemoveBuildingForPlayer(playerid, 1408, 1106.4922, -330.0234, 73.5078, 0.25);
  9182. RemoveBuildingForPlayer(playerid, 1408, 1100.9141, -329.9297, 73.5078, 0.25);
  9183. RemoveBuildingForPlayer(playerid, 700, 1106.5469, -328.1641, 73.1797, 0.25);
  9184. RemoveBuildingForPlayer(playerid, 1308, 1101.2891, -329.5313, 72.8984, 0.25);
  9185. RemoveBuildingForPlayer(playerid, 3250, 1110.2422, -298.9453, 73.0391, 0.25);
  9186. RemoveBuildingForPlayer(playerid, 1408, 1101.6719, -291.3750, 73.5703, 0.25);
  9187. RemoveBuildingForPlayer(playerid, 1408, 1107.2656, -291.4609, 73.5703, 0.25);
  9188. RemoveBuildingForPlayer(playerid, 672, 1097.4688, -314.2109, 73.6641, 0.25);
  9189. RemoveBuildingForPlayer(playerid, 3175, 1114.2969, -353.8203, 72.7969, 0.25);
  9190. RemoveBuildingForPlayer(playerid, 1408, 1117.5781, -330.2109, 73.5078, 0.25);
  9191. RemoveBuildingForPlayer(playerid, 1408, 1112.0000, -330.1250, 73.5078, 0.25);
  9192. RemoveBuildingForPlayer(playerid, 656, 1116.4453, -326.7578, 72.9375, 0.25);
  9193. RemoveBuildingForPlayer(playerid, 1408, 1112.7813, -291.5703, 73.5703, 0.25);
  9194. RemoveBuildingForPlayer(playerid, 1408, 1118.3750, -291.6641, 73.5703, 0.25);
  9195. RemoveBuildingForPlayer(playerid, 1408, 1120.4297, -327.7656, 73.5703, 0.25);
  9196. RemoveBuildingForPlayer(playerid, 1408, 1121.0234, -294.5234, 73.5703, 0.25);
  9197. RemoveBuildingForPlayer(playerid, 1408, 1120.6250, -316.7344, 73.5703, 0.25);
  9198. RemoveBuildingForPlayer(playerid, 1408, 1120.9297, -300.1172, 73.5703, 0.25);
  9199. RemoveBuildingForPlayer(playerid, 1408, 1120.8203, -305.6328, 73.5703, 0.25);
  9200. RemoveBuildingForPlayer(playerid, 1408, 1120.7344, -311.2188, 73.5703, 0.25);
  9201. RemoveBuildingForPlayer(playerid, 1408, 1120.5391, -322.2500, 73.5703, 0.25);
  9202. // Removes the donut posters in the restaurant interior.
  9203. RemoveBuildingForPlayer(playerid, 2716, 372.1016, -182.5313, 1002.2813, 0.25);
  9204. RemoveBuildingForPlayer(playerid, 2717, 372.1016, -184.2109, 1002.2813, 0.25);
  9205. RemoveBuildingForPlayer(playerid, 2715, 372.1094, -188.6953, 1002.2813, 0.25);
  9206. RemoveBuildingForPlayer(playerid, 2717, 372.1094, -190.3438, 1002.2813, 0.25);
  9207. RemoveBuildingForPlayer(playerid, 2715, 377.1250, -188.7188, 1003.1094, 0.25);
  9208. RemoveBuildingForPlayer(playerid, 2717, 377.1172, -185.6172, 1003.1094, 0.25);
  9209. RemoveBuildingForPlayer(playerid, 2716, 377.1172, -182.5469, 1003.1094, 0.25);
  9210. RemoveBuildingForPlayer(playerid, 2432, 383.2188, -185.1328, 1002.0313, 0.25);
  9211. RemoveBuildingForPlayer(playerid, 2715, 379.4609, -179.1953, 1002.8125, 0.25);
  9212. // NEW LOS SANTOS FIRE DEPARTMENT
  9213. RemoveBuildingForPlayer(playerid, 1297, 2278.5469, -1544.1797, 29.0938, 0.25);
  9214. RemoveBuildingForPlayer(playerid, 1297, 2278.5469, -1512.9609, 29.0938, 0.25);
  9215. RemoveBuildingForPlayer(playerid, 946, 2290.6406, -1541.6094, 28.0703, 0.25);
  9216. RemoveBuildingForPlayer(playerid, 946, 2290.5781, -1514.2734, 28.0469, 0.25);
  9217. RemoveBuildingForPlayer(playerid, 1297, 2300.3672, -1544.1797, 29.0938, 0.25);
  9218. RemoveBuildingForPlayer(playerid, 1297, 2300.3672, -1512.9609, 29.0938, 0.25);
  9219. RemoveBuildingForPlayer(playerid, 1297, 2305.5859, -1512.9609, 27.2188, 0.25);
  9220. RemoveBuildingForPlayer(playerid, 1297, 2305.5859, -1544.1797, 27.2188, 0.25);
  9221. RemoveBuildingForPlayer(playerid, 946, 2316.9375, -1541.6094, 26.5000, 0.25);
  9222. RemoveBuildingForPlayer(playerid, 946, 2316.9375, -1514.2734, 26.5000, 0.25);
  9223. RemoveBuildingForPlayer(playerid, 1297, 2337.8125, -1523.8281, 26.2266, 0.25);
  9224. RemoveBuildingForPlayer(playerid, 1297, 2327.4063, -1544.1797, 27.2188, 0.25);
  9225. RemoveBuildingForPlayer(playerid, 1297, 2327.4063, -1512.9609, 27.2188, 0.25);
  9226. /*
  9227. RemoveBuildingForPlayer(playerid, 717, 1703.9922, -1150.1484, 23.0938, 0.25);
  9228. RemoveBuildingForPlayer(playerid, 717, 1721.2344, -1150.1484, 23.0938, 0.25);
  9229. RemoveBuildingForPlayer(playerid, 1300, 1715.4922, -1037.9766, 23.2656, 0.25);
  9230. RemoveBuildingForPlayer(playerid, 1294, 1734.9531, -1156.9922, 27.3516, 0.25);
  9231. RemoveBuildingForPlayer(playerid, 717, 1738.7813, -1150.1484, 23.0938, 0.25);
  9232. RemoveBuildingForPlayer(playerid, 1227, 1789.7734, -1116.0625, 23.8906, 0.25);
  9233. RemoveBuildingForPlayer(playerid, 1227, 1789.9063, -1112.6406, 23.8906, 0.25);
  9234. RemoveBuildingForPlayer(playerid, 717, 1726.0000, -1064.8828, 23.1563, 0.25);
  9235. RemoveBuildingForPlayer(playerid, 4640, 1728.7891, -1065.0938, 24.5000, 0.25);
  9236. RemoveBuildingForPlayer(playerid, 1300, 1730.6328, -1033.6719, 23.2656, 0.25);
  9237. RemoveBuildingForPlayer(playerid, 4598, 1737.2031, -1052.8203, 23.3359, 0.25);
  9238. RemoveBuildingForPlayer(playerid, 4599, 1738.1875, -1044.9922, 22.9844, 0.25);
  9239. RemoveBuildingForPlayer(playerid, 1300, 1747.8594, -1063.2969, 23.2656, 0.25);
  9240. RemoveBuildingForPlayer(playerid, 717, 1758.3828, -1066.3594, 23.1797, 0.25);
  9241. RemoveBuildingForPlayer(playerid, 1300, 1758.0781, -1064.5547, 23.2656, 0.25);
  9242. RemoveBuildingForPlayer(playerid, 717, 1765.1563, -1042.5234, 23.1797, 0.25);
  9243. RemoveBuildingForPlayer(playerid, 1300, 1764.8594, -1040.7188, 23.2656, 0.25);
  9244. RemoveBuildingForPlayer(playerid, 4641, 1788.5391, -1026.3516, 24.5000, 0.25);*/
  9245. return 1;
  9246. }
  9247. stock FindVehicleByPlate(plate[])
  9248. {
  9249. for(new i = 0; i < MAX_CARS; i++)
  9250. {
  9251. if(CompareStrings(plate, Vehicles[i][vPlate]) && Vehicles[vehicle][vOwner] && !Vehicles[i][vDespawned])
  9252. {
  9253. return true;
  9254. }
  9255. }
  9256. return false;
  9257. }
  9258. stock RemoveVar(playerid, varname[])
  9259. {
  9260. return DeletePVar(playerid, varname);
  9261. }
  9262. stock SetIntVar(playerid, varname[], value)
  9263. {
  9264. return SetPVarInt(playerid, varname, value);
  9265. }
  9266. stock GetIntVar(playerid, varname[])
  9267. {
  9268. return GetPVarInt(playerid, varname);
  9269. }
  9270. stock SetFloatVar(playerid, varname[], Float:value)
  9271. {
  9272. return SetPVarFloat(playerid, varname, Float:value);
  9273. }
  9274. stock Float:GetFloatVar(playerid, varname[])
  9275. {
  9276. return GetPVarFloat(playerid, varname);
  9277. }
  9278. stock SetStringVar(playerid, varname[], value[])
  9279. {
  9280. return SetPVarString(playerid, varname, value);
  9281. }
  9282. stock GetStringVar(playerid, varname[])
  9283. {
  9284. new str[256];
  9285. GetPVarString(playerid, varname, str, sizeof(str));
  9286. return str;
  9287. }
  9288. stock HasAttachedObject(playerid, objectid)
  9289. {
  9290. for(new i = 0; i < MAX_PLAYER_ATTACHED_OBJECTS; i++)
  9291. {
  9292. if(PoliceObjects[playerid][i] == objectid)
  9293. return true;
  9294. }
  9295. return false;
  9296. }
  9297. stock SetCallsign(vehicleid, callsign[])
  9298. {
  9299. new
  9300. Float:fSizeX,
  9301. Float:fSizeY,
  9302. Float:fSizeZ;
  9303. if (gCallsignText[vehicleid] != INVALID_3DTEXT_ID)
  9304. Delete3DTextLabel(gCallsignText[vehicleid]);
  9305. GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_SIZE, fSizeX, fSizeY, fSizeZ);
  9306. if(strlen(callsign) > 32)
  9307. {
  9308. new pos = 32;
  9309. if(pos < 32-1) pos = 32;
  9310. format(msg, sizeof(msg), "%.*s\n%s", pos, callsign, callsign[pos]);
  9311. gCallsignText[vehicleid] = Create3DTextLabel(msg, COLOR_WHITE, 0.0, 0.0, 0.0, 15.0, 0);
  9312. Attach3DTextLabelToVehicle(gCallsignText[vehicleid], vehicleid, -0.7, -2.4, -0.3);
  9313. }
  9314. else
  9315. {
  9316. gCallsignText[vehicleid] = Create3DTextLabel(callsign, COLOR_WHITE, 0.0, 0.0, 0.0, 15.0, 0);
  9317. Attach3DTextLabelToVehicle(gCallsignText[vehicleid], vehicleid, -0.7, -2.4, -0.3);
  9318. }
  9319. return 1;
  9320. }
  9321. stock RemoveCallsign(vehicleid)
  9322. {
  9323. Delete3DTextLabel(gCallsignText[vehicleid]);
  9324. gCallsignText[vehicleid] = INVALID_3DTEXT_ID;
  9325. return 1;
  9326. }
  9327. stock CheckAdmin(playerid, level)
  9328. {
  9329. if (Players[playerid][pAdmin] >= level)
  9330. return true;
  9331. else
  9332. return false;
  9333. }
  9334. stock GetPlayer2DZone(playerid, zone[], len)
  9335. {
  9336. new Float:x, Float:y, Float:z;
  9337. GetPlayerPos(playerid, x,y,z);
  9338. for(new i = 0; i != sizeof(gSAZones); i++)
  9339. {
  9340. if(x >= gSAZones[i][SAZONE_AREA][0] && x <= gSAZones[i][SAZONE_AREA][3] && y >= gSAZones[i][SAZONE_AREA][1] && y <= gSAZones[i][SAZONE_AREA][4])
  9341. {
  9342. return format(zone, len, gSAZones[i][SAZONE_NAME], 0);
  9343. }
  9344. }
  9345. return 0;
  9346. }
  9347. stock RemoveEquipment(playerid)
  9348. {
  9349. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  9350. return 0;
  9351. ResetWeapons(playerid);
  9352. SetPlayerValidArmor(playerid, 0.0);
  9353. new itemid;
  9354. while((itemid = GetInventoryItemID(playerid, "Desert Eagle")) >= 0)
  9355. {
  9356. RemoveItemFromInventory(playerid, itemid);
  9357. }
  9358. while((itemid = GetInventoryItemID(playerid, "Shotgun")) >= 0)
  9359. {
  9360. RemoveItemFromInventory(playerid, itemid);
  9361. }
  9362. while((itemid = GetInventoryItemID(playerid, "Cuffs")) >= 0)
  9363. {
  9364. RemoveItemFromInventory(playerid, itemid);
  9365. }
  9366. while((itemid = GetInventoryItemID(playerid, "Cuff Keys")) >= 0)
  9367. {
  9368. RemoveItemFromInventory(playerid, itemid);
  9369. }
  9370. while((itemid = GetInventoryItemID(playerid, "Medical Kit")) >= 0)
  9371. {
  9372. RemoveItemFromInventory(playerid, itemid);
  9373. }
  9374. while((itemid = GetInventoryItemID(playerid, "Nightstick")) >= 0)
  9375. {
  9376. RemoveItemFromInventory(playerid, itemid);
  9377. }
  9378. while((itemid = GetInventoryItemID(playerid, "Pepper Spray")) >= 0)
  9379. {
  9380. RemoveItemFromInventory(playerid, itemid);
  9381. }
  9382. while((itemid = GetInventoryItemID(playerid, "MP5")) >= 0)
  9383. {
  9384. RemoveItemFromInventory(playerid, itemid);
  9385. }
  9386. while((itemid = GetInventoryItemID(playerid, "M16")) >= 0)
  9387. {
  9388. RemoveItemFromInventory(playerid, itemid);
  9389. }
  9390. while((itemid = GetInventoryItemID(playerid, "Sniper Rifle")) >= 0)
  9391. {
  9392. RemoveItemFromInventory(playerid, itemid);
  9393. }
  9394. while((itemid = GetInventoryItemID(playerid, "Armor")) >= 0)
  9395. {
  9396. RemoveItemFromInventory(playerid, itemid);
  9397. }
  9398. return 1;
  9399. }
  9400. stock GetInitials(const string[])
  9401. {
  9402. new
  9403. ret[32],
  9404. index = 0;
  9405. for (new i = 0, l = strlen(string); i != l; i ++)
  9406. {
  9407. if (('A' <= string[i] <= 'Z') && (i == 0 || string[i - 1] == ' '))
  9408. ret[index++] = string[i];
  9409. }
  9410. return ret;
  9411. }
  9412. stock FaintPlayer(playerid)
  9413. {
  9414. new
  9415. Float:x,
  9416. Float:y,
  9417. Float:z;
  9418. GetPlayerPos(playerid, x, y, z);
  9419. if (!Players[playerid][pFainted])
  9420. {
  9421. if (GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  9422. {
  9423. SetPlayerPos(playerid, x, y, z + 1.5);
  9424. }
  9425. Players[playerid][pFainted] = 1;
  9426. TogglePlayerControllable(playerid, 0);
  9427. SetTimerEx("ResetFaint", 5000, false, "i", playerid);
  9428. if (!IsPlayerInAnyVehicle(playerid))
  9429. {
  9430. ApplyAnimation(playerid, "PED", "KO_skid_back", 4.1, 0, 0, 0, 1, 0, 1);
  9431. }
  9432. }
  9433. return 1;
  9434. }
  9435. IsVehicleSeatOccupied(vehicleid, seatid)
  9436. {
  9437. if (!GetVehicleModel(vehicleid))
  9438. {
  9439. return 0;
  9440. }
  9441. else
  9442. {
  9443. for (new i = 0; i < MAX_PLAYERS; i ++)
  9444. {
  9445. if (IsPlayerInVehicle(i, vehicleid) && GetPlayerVehicleSeat(i) == seatid)
  9446. {
  9447. return 1;
  9448. }
  9449. }
  9450. }
  9451. return 0;
  9452. }
  9453. GetVehicleNextSeat(vehicleid, seat = 1)
  9454. {
  9455. new
  9456. seats = GetVehicleSeats(vehicleid);
  9457. if (seats > 1)
  9458. {
  9459. for (new i = seat; i < seats; i ++)
  9460. {
  9461. if (!IsVehicleSeatOccupied(vehicleid, i))
  9462. {
  9463. return i;
  9464. }
  9465. }
  9466. }
  9467. return INVALID_ID;
  9468. }
  9469. GetVehicleSeats(vehicleid)
  9470. {
  9471. new
  9472. modelid = GetVehicleModel(vehicleid);
  9473. static const s_VehicleSeats[] =
  9474. {
  9475. 4, 2, 2, 2, 4, 4, 1, 2, 2, 4, 2, 2, 2, 4, 2, 2, 4, 2, 4, 2, 4, 4, 2, 2, 2, 1, 4, 4, 4, 2,
  9476. 1, 7, 1, 2, 2, 0, 2, 7, 4, 2, 4, 1, 2, 2, 2, 4, 1, 2, 1, 0, 0, 2, 1, 1, 1, 2, 2, 2, 4,
  9477. 4, 2, 2, 2, 2, 1, 1, 4, 4, 2, 2, 4, 2, 1, 1, 2, 2, 1, 2, 2, 4, 2, 1, 4, 3, 1, 1, 1, 4, 2,
  9478. 2, 4, 2, 4, 1, 2, 2, 2, 4, 4, 2, 2, 1, 2, 2, 2, 2, 2, 4, 2, 1, 1, 2, 1, 1, 2, 2, 4, 2, 2,
  9479. 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 4, 1, 1, 1, 2, 2, 2, 2, 7, 7, 1, 4, 2, 2, 2, 2, 2, 4, 4,
  9480. 2, 2, 4, 4, 2, 1, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 1, 2, 4, 4, 1, 0, 0, 1, 1, 2, 1, 2, 2, 1, 2,
  9481. 4, 4, 2, 4, 1, 0, 4, 2, 2, 2, 2, 0, 0, 7, 2, 2, 1, 4, 4, 4, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0,
  9482. 4, 0, 0
  9483. };
  9484. return (modelid < 400 || modelid > 611) ? (0) : (s_VehicleSeats[(modelid - 400)]);
  9485. }
  9486. UpdateArrestPoint(point)
  9487. {
  9488. new string[64];
  9489. if (!ArrestPoints[point][apExists]) return 0;
  9490. format(string, sizeof(string), "ID: %i\nUse /arrest to turn in a suspect.", point);
  9491. DestroyDynamicPickup(ArrestPoints[point][apPickup]);
  9492. DestroyDynamic3DTextLabel(ArrestPoints[point][apText]);
  9493. ArrestPoints[point][apPickup] = CreateDynamicPickup(1247, 23, ArrestPoints[point][apX], ArrestPoints[point][apY], ArrestPoints[point][apZ], ArrestPoints[point][apWorld], ArrestPoints[point][apInterior]);
  9494. ArrestPoints[point][apText] = CreateDynamic3DTextLabel(string, COLOR_GREY, ArrestPoints[point][apX], ArrestPoints[point][apY], ArrestPoints[point][apZ], 10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, ArrestPoints[point][apWorld], ArrestPoints[point][apInterior]);
  9495. return 1;
  9496. }
  9497. GetClosestArrestPoint(playerid)
  9498. {
  9499. for (new i = 0; i < MAX_ARREST_POINTS; i ++)
  9500. {
  9501. if (ArrestPoints[i][apExists] && IsPlayerNearPoint(playerid, 5.0, ArrestPoints[i][apX], ArrestPoints[i][apY], ArrestPoints[i][apZ], ArrestPoints[i][apInterior], ArrestPoints[i][apWorld]))
  9502. {
  9503. return i;
  9504. }
  9505. }
  9506. return INVALID_ID;
  9507. }
  9508. GetClosestShell(playerid)
  9509. {
  9510. for (new i = 0; i < MAX_SHELL_CASINGS; i ++)
  9511. {
  9512. if (ShellCasings[i][scExists] && IsPlayerNearPoint(playerid, 1.5, ShellCasings[i][scSpawn][0], ShellCasings[i][scSpawn][1], ShellCasings[i][scSpawn][2], ShellCasings[i][scInterior], ShellCasings[i][scWorld]))
  9513. {
  9514. return i;
  9515. }
  9516. }
  9517. return INVALID_ID;
  9518. }
  9519. /*GetClosestBlood(playerid)
  9520. {
  9521. for (new i = 0; i < MAX_BLOOD; i ++)
  9522. {
  9523. if (Bloods[i][blExists] && IsPlayerNearPoint(playerid, 1.5, Bloods[i][blSpawn][0], Bloods[i][blSpawn][1], Bloods[i][blSpawn][2], Bloods[i][blInterior], Bloods[i][blWorld]))
  9524. {
  9525. return i;
  9526. }
  9527. }
  9528. return INVALID_ID;
  9529. }*/
  9530. GetClosestWeedPlant(playerid)
  9531. {
  9532. for (new i = 0; i < MAX_WEEDPLANTS; i ++)
  9533. {
  9534. if (WeedPlants[i][wpExists] && IsPlayerNearPoint(playerid, 1.5, WeedPlants[i][wpSpawn][0], WeedPlants[i][wpSpawn][1], WeedPlants[i][wpSpawn][2], WeedPlants[i][wpInterior], WeedPlants[i][wpWorld]))
  9535. {
  9536. return i;
  9537. }
  9538. }
  9539. return INVALID_ID;
  9540. }
  9541. DeleteShellCasing(id)
  9542. {
  9543. if (id != INVALID_ID)
  9544. {
  9545. DestroyDynamicObject(ShellCasings[id][scObject]);
  9546. format(gExecute, sizeof(gExecute), "DELETE FROM rp_casings WHERE scID = %i", ShellCasings[id][scID]);
  9547. mysql_tquery(gConnection, gExecute);
  9548. ShellCasings[id][scExists] = 0;
  9549. ShellCasings[id][scID] = 0;
  9550. ShellCasings[id][scObject] = INVALID_OBJECT_ID;
  9551. }
  9552. return 1;
  9553. }
  9554. DeleteWeedPlant(id)
  9555. {
  9556. if (id != INVALID_ID)
  9557. {
  9558. DestroyDynamicObject(WeedPlants[id][wpObject]);
  9559. format(gExecute, sizeof(gExecute), "DELETE FROM rp_weedplants WHERE wpID = %i", WeedPlants[id][wpID]);
  9560. mysql_tquery(gConnection, gExecute);
  9561. WeedPlants[id][wpExists] = 0;
  9562. WeedPlants[id][wpID] = 0;
  9563. WeedPlants[id][wpObject] = INVALID_OBJECT_ID;
  9564. }
  9565. return 1;
  9566. }
  9567. /*
  9568. enum e_Bloods
  9569. {
  9570. blID,
  9571. blExists,
  9572. blType,
  9573. blOwner[24],
  9574. Float:blSpawn[3],
  9575. blInterior,
  9576. blWorld,
  9577. blObject,
  9578. blTime
  9579. }
  9580. */
  9581. /*
  9582. if (!IsPlayerInAnyVehicle(playerid) && GetPlayerPos(playerid, x, y, z))
  9583. {
  9584. if (!IsPlayerInAir(playerid))
  9585. {
  9586. SetTimerEx("DeleteObject", 300000, false, "i", CreateDynamicObject(19836, x, y, z - 0.95, 0.0, 0.0, 0.0, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid)));
  9587. }
  9588. //SetTimerEx("DeleteObject", 1000, false, "i", CreateDynamicObject(18668, x, y, z - 1.7, 0.0, 0.0, 0.0));
  9589. }
  9590. */
  9591. /*AddBlood(playerid, Float:x, Float:y, Float:z, interior, world)
  9592. {
  9593. new
  9594. id = GetNextBloodID();
  9595. if(IsPlayerInAnyVehicle(playerid))
  9596. return 0;
  9597. if(IsPlayerInAir(playerid))
  9598. return 0;
  9599. if (id != INVALID_ID)
  9600. {
  9601. Bloods[id][blExists] = 1;
  9602. Bloods[id][blType] = 1;
  9603. Bloods[id][blTime] = gettime();
  9604. Bloods[id][blSpawn][0] = x;
  9605. Bloods[id][blSpawn][1] = y;
  9606. Bloods[id][blSpawn][2] = z;
  9607. Bloods[id][blInterior] = interior;
  9608. Bloods[id][blWorld] = world;
  9609. strcpy(Bloods[id][blOwner], ReturnName(playerid), 24);
  9610. UpdateBlood(id);
  9611. //format(gExecute, sizeof(gExecute), "INSERT INTO rp_blood (blType, blTime, blX, blY, blZ, blInterior, blWorld, blOwner) VALUES(%i, %i, %.4f, %.4f, %.4f, %i, %i, '%s')", Bloods[id][blType], Bloods[id][blTime], x, y, z, interior, world, Bloods[id][blOwner]);
  9612. //mysql_tquery(gConnection, gExecute, "OnBloodAdded", "i", id);
  9613. }
  9614. return id;
  9615. }*/
  9616. AddWeedPlant(playerid, Float:x, Float:y, Float:z, interior, world)
  9617. {
  9618. new
  9619. id = GetNextWeedPlantID();
  9620. if (IsPlayerInAnyVehicle(playerid))
  9621. return 0;
  9622. if (IsPlayerInAir(playerid))
  9623. return 0;
  9624. if (id != INVALID_ID)
  9625. {
  9626. WeedPlants[id][wpExists] = 1;
  9627. WeedPlants[id][wpTime] = 0;
  9628. WeedPlants[id][wpSpawn][0] = x;
  9629. WeedPlants[id][wpSpawn][1] = y;
  9630. WeedPlants[id][wpSpawn][2] = z;
  9631. WeedPlants[id][wpInterior] = interior;
  9632. WeedPlants[id][wpWorld] = world;
  9633. strcpy(WeedPlants[id][wpOwner], ReturnName(playerid), 24);
  9634. UpdateWeedPlant(id);
  9635. format(gExecute, sizeof(gExecute), "INSERT INTO rp_weedplants (wpTime, wpX, wpY, wpZ, wpInterior, wpWorld, wpOwner) VALUES(%i, %.4f, %.4f, %.4f, %i, %i, '%s')", WeedPlants[id][wpTime], x, y, z, interior, world, WeedPlants[id][wpOwner]);
  9636. mysql_tquery(gConnection, gExecute, "OnWeedPlantAdded", "i", id);
  9637. }
  9638. return id;
  9639. }
  9640. /*AddShellCasing(serial, weaponid, Float:x, Float:y, Float:z, interior, world)
  9641. {
  9642. new
  9643. id = GetNextShellCasingID();
  9644. if (id != INVALID_ID)
  9645. {
  9646. ShellCasings[id][scExists] = 1;
  9647. ShellCasings[id][scSerial] = serial;
  9648. ShellCasings[id][scWeapon] = weaponid;
  9649. ShellCasings[id][scTime] = gettime();
  9650. ShellCasings[id][scSpawn][0] = x;
  9651. ShellCasings[id][scSpawn][1] = y;
  9652. ShellCasings[id][scSpawn][2] = z;
  9653. ShellCasings[id][scInterior] = interior;
  9654. ShellCasings[id][scWorld] = world;
  9655. ShellCasings[id][scObject] = INVALID_OBJECT_ID;
  9656. UpdateShellCasing(id);
  9657. format(gExecute, sizeof(gExecute), "INSERT INTO rp_casings (scSerial, scWeapon, scTime, scX, scY, scZ, scInterior, scWorld) VALUES(%i, %i, %i, %.4f, %.4f, %.4f, %i, %i)", serial, weaponid, ShellCasings[id][scTime], x, y, z, interior, world);
  9658. mysql_tquery(gConnection, gExecute, "OnShellCasingAdded", "i", id);
  9659. }
  9660. return id;
  9661. }*/
  9662. UpdateShellCasing(id)
  9663. {
  9664. if (!ShellCasings[id][scExists]) return 0;
  9665. DestroyDynamicObject(ShellCasings[id][scObject]);
  9666. ShellCasings[id][scObject] = CreateDynamicObject(3027, ShellCasings[id][scSpawn][0], ShellCasings[id][scSpawn][1], ShellCasings[id][scSpawn][2] - 0.95, 0.0, 90.0, 0.0, ShellCasings[id][scWorld], ShellCasings[id][scInterior], .streamdistance = 20.0);
  9667. SetDynamicObjectMaterial(ShellCasings[id][scObject], 0, 2061, "cj_ammo", "CJ_BULLETBRASS");
  9668. return 1;
  9669. }
  9670. /*UpdateBlood(id)
  9671. {
  9672. if (!Bloods[id][blExists]) return 0;
  9673. DestroyDynamicObject(Bloods[id][blObject]);
  9674. Bloods[id][blObject] = CreateDynamicObject(19836, Bloods[id][blSpawn][0], Bloods[id][blSpawn][1], Bloods[id][blSpawn][2] - 0.95, 0.0, 0.0, 0.0, Bloods[id][blWorld], Bloods[id][blInterior], .streamdistance = 20.0);
  9675. return 1;
  9676. }*/
  9677. UpdateWeedPlant(id)
  9678. {
  9679. if (!WeedPlants[id][wpExists]) return 0;
  9680. DestroyDynamicObject(WeedPlants[id][wpObject]);
  9681. WeedPlants[id][wpObject] = CreateDynamicObject(19473, WeedPlants[id][wpSpawn][0], WeedPlants[id][wpSpawn][1], WeedPlants[id][wpSpawn][2] - 0.95, 0.0, 0.0, 0.0, WeedPlants[id][wpWorld], WeedPlants[id][wpInterior], .streamdistance = 20.0);
  9682. return 1;
  9683. }
  9684. SaveDealershipCar(id)
  9685. {
  9686. static
  9687. queryString[128];
  9688. if (!DealershipCars[id][dcExists]) return 0;
  9689. format(queryString, sizeof(queryString), "UPDATE rp_dealercars SET Model = %i, Price = %i WHERE ID = %i", DealershipCars[id][dcModel], DealershipCars[id][dcPrice], DealershipCars[id][dcID]);
  9690. return mysql_tquery(gConnection, queryString);
  9691. }
  9692. GetClosestATM(playerid)
  9693. {
  9694. for (new i = 0; i < MAX_ATMS; i ++)
  9695. {
  9696. if (ATM[i][atmExists] && IsPlayerNearPoint(playerid, 2.0, ATM[i][atmSpawn][0], ATM[i][atmSpawn][1], ATM[i][atmSpawn][2], ATM[i][atmInterior], ATM[i][atmWorld]))
  9697. {
  9698. return i;
  9699. }
  9700. }
  9701. return INVALID_ID;
  9702. }
  9703. SaveATM(id)
  9704. {
  9705. static
  9706. queryString[192];
  9707. if (!ATM[id][atmExists]) return 0;
  9708. format(queryString, sizeof(queryString), "UPDATE rp_atms SET atmX = %.4f, atmY = %.4f, atmZ = %.4f, atmA = %.4f, atmInterior = %i, atmWorld = %i WHERE atmID = %i",
  9709. ATM[id][atmSpawn][0],
  9710. ATM[id][atmSpawn][1],
  9711. ATM[id][atmSpawn][2],
  9712. ATM[id][atmSpawn][3],
  9713. ATM[id][atmInterior],
  9714. ATM[id][atmWorld],
  9715. ATM[id][atmID]
  9716. );
  9717. return mysql_tquery(gConnection, queryString);
  9718. }
  9719. UpdateATM(id)
  9720. {
  9721. new string[64];
  9722. if (!ATM[id][atmExists])
  9723. {
  9724. return 0;
  9725. }
  9726. DestroyDynamic3DTextLabel(ATM[id][atmText]);
  9727. DestroyDynamicObject(ATM[id][atmObject]);
  9728. format(string, sizeof(string), "ID: %i\nPress Y to use machine", id);
  9729. ATM[id][atmObject] = CreateDynamicObject(19526, ATM[id][atmSpawn][0], ATM[id][atmSpawn][1], ATM[id][atmSpawn][2], 0.0, 0.0, ATM[id][atmSpawn][3], ATM[id][atmWorld], ATM[id][atmInterior]);
  9730. ATM[id][atmText] = CreateDynamic3DTextLabel(string, COLOR_GREY, ATM[id][atmSpawn][0], ATM[id][atmSpawn][1], ATM[id][atmSpawn][2] + 0.9, 5.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, ATM[id][atmWorld], ATM[id][atmInterior]);
  9731. return 1;
  9732. }
  9733. StopRepairing(playerid)
  9734. {
  9735. if (Players[playerid][pRepairCar])
  9736. {
  9737. KillTimer(Timers[playerid][tRepair]);
  9738. Players[playerid][pRepairCar] = 0;
  9739. }
  9740. }
  9741. StopWorking(playerid)
  9742. {
  9743. if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_CARRY)
  9744. {
  9745. SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE);
  9746. RemovePlayerAttachedObject(playerid, ATTACHED_SLOT_MISC);
  9747. }
  9748. if (IsValidVehicle(Players[playerid][pWorkVehicle]) && IsValidDynamicObject(VehicleInformation[Players[playerid][pWorkVehicle]][vObject]))
  9749. {
  9750. DestroyDynamicObject(VehicleInformation[Players[playerid][pWorkVehicle]][vObject]);
  9751. VehicleInformation[Players[playerid][pWorkVehicle]][vObject] = INVALID_OBJECT_ID;
  9752. }
  9753. if (Players[playerid][pJob] == JOB_TRASHMAN)
  9754. {
  9755. ClearTrashBags(playerid);
  9756. }
  9757. Players[playerid][pWorking] = 0;
  9758. Players[playerid][pWorkVehicle] = INVALID_VEHICLE_ID;
  9759. Players[playerid][pTrash] = 0;
  9760. Players[playerid][pTrashPickup] = 0;
  9761. ResetCheckpoint(playerid);
  9762. }
  9763. StartWorking(playerid)
  9764. {
  9765. switch (Players[playerid][pJob])
  9766. {
  9767. case JOB_FORKLIFTER:
  9768. {
  9769. switch (random(5))
  9770. {
  9771. case 0: SetCheckpoint(playerid, CHECKPOINT_JOB, 2756.0898, -2568.1514, 13.3329, 2.0);
  9772. case 1: SetCheckpoint(playerid, CHECKPOINT_JOB, 2396.0554, -2507.3931, 13.6478, 2.0);
  9773. case 2: SetCheckpoint(playerid, CHECKPOINT_JOB, 2350.6902, -2329.9878, 13.5469, 2.0);
  9774. case 3: SetCheckpoint(playerid, CHECKPOINT_JOB, 2204.1365, -2592.5439, 13.5409, 2.0);
  9775. case 4: SetCheckpoint(playerid, CHECKPOINT_JOB, 2450.6052, -2628.4292, 13.6645, 2.0);
  9776. }
  9777. Players[playerid][pJobStage] = 0;
  9778. Players[playerid][pWorking] = 1;
  9779. }
  9780. }
  9781. }
  9782. StopPicking(playerid)
  9783. {
  9784. if (Players[playerid][pPicking] == PICK_LOCK_VEHICLE)
  9785. {
  9786. SetAlarmStatus(Vehicles[Players[playerid][pPickID]][vVehicle], false);
  9787. }
  9788. Players[playerid][pPicking] = PICK_LOCK_NONE;
  9789. Players[playerid][pPickID] = INVALID_ID;
  9790. Players[playerid][pPickTime] = 0;
  9791. PlayerPlaySound(playerid, 9202, 0.0, 0.0, 0.0);
  9792. PlayerPlaySound(playerid, 1036, 0.0, 0.0, 0.0);
  9793. }
  9794. ClearTrashBags(playerid)
  9795. {
  9796. for (new i = 0; i < sizeof(g_TrashPickups); i ++)
  9797. {
  9798. if (IsValidPlayerObject(playerid, gTrashObjects[playerid][i]))
  9799. {
  9800. DestroyPlayerObject(playerid, gTrashObjects[playerid][i]);
  9801. gTrashObjects[playerid][i] = INVALID_OBJECT_ID;
  9802. }
  9803. }
  9804. }
  9805. PickLock(playerid, type, id)
  9806. {
  9807. Players[playerid][pPicking] = type;
  9808. Players[playerid][pPickID] = id;
  9809. switch (type)
  9810. {
  9811. case PICK_LOCK_HOUSE:
  9812. {
  9813. if (Houses[id][hAlarm])
  9814. {
  9815. foreach (new i : Player)
  9816. {
  9817. if (GetCurrentHouse(i) == id)
  9818. {
  9819. PlayerPlaySound(i, 9200, Houses[id][hInt][0], Houses[id][hInt][1], Houses[id][hInt][2]);
  9820. }
  9821. if (IsHouseOwner(i, id))
  9822. {
  9823. SendFormatMessage(i, COLOR_YELLOW, "* Text from Home Security: The alarm has been activated at %s from a possible intruder!", Houses[id][hAddress]);
  9824. }
  9825. if (GetPlayerFactionType(i) == FACTION_LEO)
  9826. {
  9827. SendFormatMessage(i, COLOR_RED, "* [DISPATCH] House Alarm has been Activated any available units please respond.");
  9828. SendFormatMessage(i, COLOR_RED, "* [DISPATCH] House located in %s, address: '%s' *", GetZoneName(Houses[id][hSpawn][0], Houses[id][hSpawn][1], Houses[id][hSpawn][2]), Houses[id][hAddress]);
  9829. //break;
  9830. }
  9831. }
  9832. /*foreach (new j : Player)
  9833. {
  9834. if (GetPlayerFactionType(j) == FACTION_LEO)
  9835. {
  9836. SendFormatMessage(j, COLOR_RED, "* [ALARM] House located in %s, address: '%s' *", GetZoneName(Houses[id][hSpawn][0], Houses[id][hSpawn][1], Houses[id][hSpawn][2]), Houses[id][hAddress]);
  9837. //break;
  9838. }
  9839. }*/
  9840. PlayerPlaySound(playerid, 9200, Houses[id][hSpawn][0], Houses[id][hSpawn][1], Houses[id][hSpawn][2]);
  9841. }
  9842. Players[playerid][pPickTime] = 45;
  9843. }
  9844. case PICK_LOCK_SAFE:
  9845. {
  9846. new hid = GetNearbyHouse(playerid);
  9847. if (Houses[hid][hAlarm])
  9848. {
  9849. foreach (new i : Player)
  9850. {
  9851. /*if (GetCurrentHouse(i) == hid)
  9852. {
  9853. PlayerPlaySound(i, 9200, Houses[hid][hInt][0], Houses[hid][hInt][1], Houses[hid][hInt][2]);
  9854. }*/
  9855. if (IsHouseOwner(i, hid))
  9856. {
  9857. SendFormatMessage(i, COLOR_YELLOW, "* Text from Home Security: The alarm has been activated at %s from a possible intruder!", Houses[hid][hAddress]);
  9858. }
  9859. if (GetPlayerFactionType(i) == FACTION_LEO)
  9860. {
  9861. SendFormatMessage(i, COLOR_RED, "* [DISPATCH] House SAFE Alarm has been Activated any available units please respond.");
  9862. SendFormatMessage(i, COLOR_RED, "* [DISPATCH] House located in %s, address: '%s' *", GetZoneName(Houses[hid][hSpawn][0], Houses[hid][hSpawn][1], Houses[hid][hSpawn][2]), Houses[hid][hAddress]);
  9863. //break;
  9864. }
  9865. }
  9866. //PlayerPlaySound(playerid, 9200, Houses[hid][hSpawn][0], Houses[hid][hSpawn][1], Houses[hid][hSpawn][2]);
  9867. }
  9868. Players[playerid][pPickTime] = 45;
  9869. }
  9870. case PICK_LOCK_COMPANY:
  9871. {
  9872. foreach (new i : Player)
  9873. {
  9874. /*if (GetCurrentCompany(i) == id)
  9875. {
  9876. PlayerPlaySound(i, 9200, Companies[id][cInt][0], Companies[id][cInt][1], Companies[id][cInt][2]);
  9877. }*/
  9878. if (IsCompanyOwner(i, id))
  9879. {
  9880. SendFormatMessage(i, COLOR_YELLOW, "* Text from CompSec: The alarm has been activated at %s from a possible intruder!", Companies[id][cName]);
  9881. }
  9882. if (GetPlayerFactionType(i) == FACTION_LEO)
  9883. {
  9884. SendFormatMessage(i, COLOR_DARKGREEN, "* [DISPATCH] Company Alarm has been Activated any available units please respond, CODE-3.");
  9885. SendFormatMessage(i, COLOR_DARKGREEN, "* [DISPATCH] Company located in %s, company name: '%s' *", GetZoneName(Companies[id][cSpawn][0], Companies[id][cSpawn][1], Companies[id][cSpawn][2]), Companies[id][cName]);
  9886. }
  9887. }
  9888. Players[playerid][pPickTime] = 50;
  9889. }
  9890. case PICK_LOCK_VEHICLE:
  9891. {
  9892. Players[playerid][pPickTime] = 40;
  9893. if (Vehicles[id][vAlarm])
  9894. {
  9895. SetAlarmStatus(Vehicles[id][vVehicle], true);
  9896. }
  9897. }
  9898. }
  9899. }
  9900. /*SpawnBloodObject(playerid)
  9901. {
  9902. new Float:x, Float:y, Float:z;
  9903. if (!IsPlayerInAnyVehicle(playerid) && GetPlayerPos(playerid, x, y, z))
  9904. {
  9905. if (!IsPlayerInAir(playerid))
  9906. {
  9907. SetTimerEx("DeleteObject", 300000, false, "i", CreateDynamicObject(19836, x, y, z - 0.95, 0.0, 0.0, 0.0, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid)));
  9908. }
  9909. //SetTimerEx("DeleteObject", 1000, false, "i", CreateDynamicObject(18668, x, y, z - 1.7, 0.0, 0.0, 0.0));
  9910. }
  9911. }*/
  9912. ShowSettings(playerid)
  9913. {
  9914. new string[512];
  9915. string = "Name\tStatus";
  9916. if (Players[playerid][pShowPM])
  9917. {
  9918. format(string, sizeof(string), "%s\nPrivate Messages\t{33CC33}Enabled", string);
  9919. }
  9920. else
  9921. {
  9922. format(string, sizeof(string), "%s\nPrivate Messages\t{FF5030}Disabled", string);
  9923. }
  9924. if (Players[playerid][pShowSpeed])
  9925. {
  9926. format(string, sizeof(string), "%s\nSpeedometer\t\t{33CC33}Enabled", string);
  9927. }
  9928. else
  9929. {
  9930. format(string, sizeof(string), "%s\nSpeedometer\t\t{FF5030}Disabled", string);
  9931. }
  9932. if (Players[playerid][pShowFuel])
  9933. {
  9934. format(string, sizeof(string), "%s\nFuel Gauge\t\t{33CC33}Enabled", string);
  9935. }
  9936. else
  9937. {
  9938. format(string, sizeof(string), "%s\nFuel Gauge\t\t{FF5030}Disabled", string);
  9939. }
  9940. if (Players[playerid][pShowTime])
  9941. {
  9942. format(string, sizeof(string), "%s\nTime Textdraw\t\t{33CC33}Enabled", string);
  9943. }
  9944. else
  9945. {
  9946. format(string, sizeof(string), "%s\nTime Textdraw\t\t{FF5030}Disabled", string);
  9947. }
  9948. if (Players[playerid][pShowOOC])
  9949. {
  9950. format(string, sizeof(string), "%s\nOOC Chat\t\t{33CC33}Enabled", string);
  9951. }
  9952. else
  9953. {
  9954. format(string, sizeof(string), "%s\nOOC Chat\t\t{FF5030}Disabled", string);
  9955. }
  9956. if (Players[playerid][pAdmin] > 0 || Players[playerid][pSupporter] > 0)
  9957. {
  9958. if (Players[playerid][pShowSupporter])
  9959. {
  9960. format(string, sizeof(string), "%s\nSupporter Chat\t\t{33CC33}Enabled", string);
  9961. }
  9962. else
  9963. {
  9964. format(string, sizeof(string), "%s\nSupporter Chat\t\t{FF5030}Disabled", string);
  9965. }
  9966. }
  9967. if (Players[playerid][pAdmin] > 0)
  9968. {
  9969. if (Players[playerid][pShowReports])
  9970. {
  9971. format(string, sizeof(string), "%s\nReports\t\t{33CC33}Enabled", string);
  9972. }
  9973. else
  9974. {
  9975. format(string, sizeof(string), "%s\nReports\t\t{FF5030}Disabled", string);
  9976. }
  9977. if (Players[playerid][pShowAdmin])
  9978. {
  9979. format(string, sizeof(string), "%s\nAdmin Chat\t\t{33CC33}Enabled", string);
  9980. }
  9981. else
  9982. {
  9983. format(string, sizeof(string), "%s\nAdmin Chat\t\t{FF5030}Disabled", string);
  9984. }
  9985. }
  9986. Dialog_Show(playerid, MySettings, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Settings", string, "Switch", "Cancel");
  9987. return 1;
  9988. }
  9989. /*stock GetComponentName(componentid)
  9990. {
  9991. new modname[64];
  9992. switch (componentid)
  9993. {
  9994. case 1000: modname = "Pro Spoiler";
  9995. case 1001: modname = "Win Spoiler";
  9996. case 1002: modname = "Drag Spoiler";
  9997. case 1003: modname = "Alpha Spoiler";
  9998. case 1004: modname = "Champ Scoop";
  9999. case 1005: modname = "Fury Scoop";
  10000. case 1006: modname = "Roof Scoop";
  10001. case 1007: modname = "Right Sideskirt";
  10002. case 1008: modname = "5x Nitrous";
  10003. case 1009: modname = "2x Nitrous";
  10004. case 1010: modname = "10x Nitrous";
  10005. case 1011: modname = "Race Scoop";
  10006. case 1012: modname = "Worx Scoop";
  10007. case 1013: modname = "Round Fog Lamp";
  10008. case 1014: modname = "Champ Spoiler";
  10009. case 1015: modname = "Race Spoiler";
  10010. case 1016: modname = "Worx Spoiler";
  10011. case 1017: modname = "Left Sideskirt";
  10012. case 1018: modname = "Upswept Exhaust";
  10013. case 1019: modname = "Twin Exhaust";
  10014. case 1020: modname = "Large Exhaust";
  10015. case 1021: modname = "Medium Exhaust";
  10016. case 1022: modname = "Small Exhaust";
  10017. case 1023: modname = "Fury Spoiler";
  10018. case 1024: modname = "Square Fog Lights";
  10019. case 1025: modname = "Offroad";
  10020. case 1026, 1036, 1047, 1056, 1069, 1090: modname = "Right Alien Sideskirt";
  10021. case 1027, 1040, 1051, 1062, 1071, 1094: modname = "Left Alien Sideskirt";
  10022. case 1028, 1034, 1046, 1064, 1065, 1092: modname = "Alien Exhaust";
  10023. case 1029, 1037, 1045, 1059, 1066, 1089: modname = "X-Flow Exhaust";
  10024. case 1030, 1039, 1048, 1057, 1070, 1095: modname = "Right X-Flow Sideskirt";
  10025. case 1031, 1041, 1052, 1063, 1072, 1093: modname = "Left X-Flow Sideskirt";
  10026. case 1032, 1038, 1054, 1055, 1067, 1088: modname = "Alien Roof Vent";
  10027. case 1033, 1035, 1053, 1061, 1068, 1091: modname = "X-Flow Roof Vent";
  10028. case 1042: modname = "Right Chrome Sideskirt";
  10029. case 1099: modname = "Left Chrome Sideskirt";
  10030. case 1043, 1105, 1114, 1127, 1132, 1135: modname = "Slamin Exhaust";
  10031. case 1044, 1104, 1113, 1126, 1129, 1136: modname = "Chrome Exhaust";
  10032. case 1050, 1058, 1139, 1146, 1158, 1163: modname = "X-Flow Spoiler";
  10033. case 1049, 1060, 1138, 1147, 1162, 1164: modname = "Alien Spoiler";
  10034. case 1073: modname = "Shadow";
  10035. case 1074: modname = "Mega";
  10036. case 1075: modname = "Rimshine";
  10037. case 1076: modname = "Wires";
  10038. case 1077: modname = "Classic";
  10039. case 1078: modname = "Twist";
  10040. case 1079: modname = "Cutter";
  10041. case 1080: modname = "Stitch";
  10042. case 1081: modname = "Grove";
  10043. case 1082: modname = "Import";
  10044. case 1083: modname = "Dollar";
  10045. case 1084: modname = "Trance";
  10046. case 1085: modname = "Atomic";
  10047. case 1086: modname = "Stereo";
  10048. case 1087: modname = "Hydraulics";
  10049. case 1096: modname = "Ahab";
  10050. case 1097: modname = "Virtual";
  10051. case 1098: modname = "Access";
  10052. case 1100: modname = "Chrome Grill";
  10053. case 1101: modname = "Left Chrome Flames Sideskirt";
  10054. case 1102, 1107: modname = "Left Chrome Strip Sideskirt";
  10055. case 1103: modname = "Convertible Roof";
  10056. case 1106, 1124: modname = "Left Chrome Arches Sideskirt";
  10057. case 1108, 1133, 1134: modname = "Right Chrome Strip Sideskirt";
  10058. case 1109: modname = "Chrome Rear Bullbars";
  10059. case 1110: modname = "Slamin Rear Bullbars";
  10060. case 1111, 1112: modname = "Front Sign";
  10061. case 1115: modname = "Chrome Front Bullbars";
  10062. case 1116: modname = "Slamin Front Bullbars";
  10063. case 1117, 1174, 1179, 1182, 1189, 1191: modname = "Chrome Front Bumper";
  10064. case 1175, 1181, 1185, 1188, 1190: modname = "Slamin Front Bumper";
  10065. case 1176, 1180, 1184, 1187, 1192: modname = "Chrome Rear Bumper";
  10066. case 1177, 1178, 1183, 1186, 1193: modname = "Slamin Rear Bumper";
  10067. case 1118: modname = "Right Chrome Trim Sideskirt";
  10068. case 1119: modname = "Right Wheelcovers Sideskirt";
  10069. case 1120: modname = "Left Chrome Trim Sideskirt";
  10070. case 1121: modname = "Left Wheelcovers Sideskirt";
  10071. case 1122: modname = "Right Chrome Flames Sideskirt";
  10072. case 1123: modname = "Bullbar Chrome Bars";
  10073. case 1125: modname = "Bullbar Chrome Lights";
  10074. case 1128: modname = "Vinyl Hardtop Roof";
  10075. case 1130: modname = "Hardtop Roof";
  10076. case 1131: modname = "Softtop Roof";
  10077. case 1140, 1148, 1151, 1156, 1161, 1167: modname = "X-Flow Rear Bumper";
  10078. case 1141, 1149, 1150, 1154, 1159, 1168: modname = "Alien Rear Bumper";
  10079. case 1142: modname = "Left Oval Vent";
  10080. case 1143: modname = "Right Oval Vent";
  10081. case 1144: modname = "Left Square Vent";
  10082. case 1145: modname = "Right Square Vent";
  10083. case 1152, 1157, 1165, 1170, 1172, 1173: modname = "X-Flow Front Bumper";
  10084. case 1153, 1155, 1160, 1166, 1169, 1171: modname = "Alien Front Bumper";
  10085. }
  10086. return modname;
  10087. }*/
  10088. SaveComponent(id, slot)
  10089. {
  10090. static
  10091. queryString[200];
  10092. if (!Vehicles[id][vExists]) return 0;
  10093. format(queryString, sizeof(queryString), "INSERT INTO rp_vehiclemods VALUES(%i, %i, %i) ON DUPLICATE KEY UPDATE vComponent = %i", Vehicles[id][vID], slot, Vehicles[id][vMods][slot], Vehicles[id][vMods][slot]);
  10094. return mysql_tquery(gConnection, queryString);
  10095. }
  10096. SaveVehicle(id)
  10097. {
  10098. static
  10099. queryString[1024];
  10100. if (!Vehicles[id][vExists])
  10101. {
  10102. return 0;
  10103. }
  10104. format(queryString, sizeof(queryString), "UPDATE rp_vehicles SET vPlate = '%s', vRegistered = '%s', vCompany = %i, vOwner = %i, vModel = %i, vPrice = %i, vRentable = %i, vX = %.4f, vY = %.4f, vZ = %.4f, vA = %.4f, vColor1 = %i, vColor2 = %i, vPaintjob = %i, vLocked = %i, vTrunkMoney = %i",
  10105. mysql_escaped(Vehicles[id][vPlate]),
  10106. Vehicles[id][vRegistered],
  10107. Vehicles[id][vCompany],
  10108. Vehicles[id][vOwner],
  10109. Vehicles[id][vModel],
  10110. Vehicles[id][vPrice],
  10111. Vehicles[id][vRentable],
  10112. Vehicles[id][vSpawn][0],
  10113. Vehicles[id][vSpawn][1],
  10114. Vehicles[id][vSpawn][2],
  10115. Vehicles[id][vSpawn][3],
  10116. Vehicles[id][vColor1],
  10117. Vehicles[id][vColor2],
  10118. Vehicles[id][vPaintjob],
  10119. Vehicles[id][vLocked],
  10120. Vehicles[id][vTrunkMoney]
  10121. );
  10122. format(queryString, sizeof(queryString), "%s, vFaction = %i, vSiren = %i, vAlarm = %i, vImpound = %i, vDespawned = %i WHERE vID = %i",
  10123. queryString,
  10124. Vehicles[id][vFaction],
  10125. Vehicles[id][vSiren],
  10126. Vehicles[id][vAlarm],
  10127. Vehicles[id][vImpound],
  10128. Vehicles[id][vDespawned],
  10129. Vehicles[id][vID]
  10130. );
  10131. return mysql_tquery(gConnection, queryString);
  10132. }
  10133. UpdateVehicle(id)
  10134. {
  10135. new
  10136. string[48];
  10137. if (Vehicles[id][vRentable])
  10138. {
  10139. if (Vehicles[id][vLocked])
  10140. {
  10141. Vehicles[id][vLocked] = 0;
  10142. }
  10143. if (Vehicles[id][vRenter] != INVALID_PLAYER_ID)
  10144. {
  10145. Players[Vehicles[id][vRenter]][pRental] = INVALID_ID;
  10146. Vehicles[id][vRenter] = INVALID_PLAYER_ID;
  10147. }
  10148. }
  10149. DestroyVehicleEx(Vehicles[id][vVehicle]);
  10150. DestroyDynamic3DTextLabel(Vehicles[id][vText]);
  10151. if (!Vehicles[id][vImpound] && !Vehicles[id][vDespawned])
  10152. {
  10153. Vehicles[id][vVehicle] = SpawnVehicle(Vehicles[id][vModel], Vehicles[id][vSpawn][0], Vehicles[id][vSpawn][1], Vehicles[id][vSpawn][2], Vehicles[id][vSpawn][3], Vehicles[id][vColor1], Vehicles[id][vColor2], (Vehicles[id][vFaction] > 0) ? (1800) : (0), Vehicles[id][vSiren]);
  10154. if (Vehicles[id][vVehicle] != INVALID_VEHICLE_ID)
  10155. {
  10156. SetVehicleNumberPlate(Vehicles[id][vVehicle], Vehicles[id][vPlate]);
  10157. ResyncVehicle(Vehicles[id][vVehicle]);
  10158. if (Vehicles[id][vRentable])
  10159. {
  10160. format(string, sizeof(string), "You can rent this vehicle!\nPrice: {33AA33}%s", FormatNumber(Vehicles[id][vPrice]));
  10161. Vehicles[id][vText] = CreateDynamic3DTextLabel(string, COLOR_GREY, 0.0, 0.0, 0.0, 10.0, INVALID_PLAYER_ID, Vehicles[id][vVehicle]);
  10162. }
  10163. ApplyModifications(id);
  10164. }
  10165. }
  10166. else
  10167. {
  10168. Vehicles[id][vVehicle] = INVALID_VEHICLE_ID;
  10169. }
  10170. return 1;
  10171. }
  10172. ApplyModifications(id)
  10173. {
  10174. if (IsValidVehicleID(id) && IsValidVehicle(Vehicles[id][vVehicle]))
  10175. {
  10176. ChangeVehicleColor(Vehicles[id][vVehicle], Vehicles[id][vColor1], Vehicles[id][vColor2]);
  10177. if (Vehicles[id][vPaintjob] != INVALID_ID)
  10178. {
  10179. ChangeVehiclePaintjob(Vehicles[id][vVehicle], Vehicles[id][vPaintjob]);
  10180. }
  10181. for (new i = 0; i < 14; i ++)
  10182. {
  10183. if (Vehicles[id][vMods][i] > 0)
  10184. {
  10185. AddVehicleComponent(Vehicles[id][vVehicle], Vehicles[id][vMods][i]);
  10186. }
  10187. }
  10188. SetLockStatus(Vehicles[id][vVehicle], Vehicles[id][vLocked]);
  10189. }
  10190. }
  10191. ToggleVehicleSiren(vehicleid)
  10192. {
  10193. new
  10194. Float:x,
  10195. Float:y,
  10196. Float:z,
  10197. Float:tmp;
  10198. if (gSirenObject[vehicleid] == INVALID_OBJECT_ID)
  10199. {
  10200. GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_SIZE, z, z, z);
  10201. GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_FRONTSEAT, x, y, tmp);
  10202. gSirenObject[vehicleid] = CreateDynamicObject(18646, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
  10203. AttachDynamicObjectToVehicle(gSirenObject[vehicleid], vehicleid, -x, y, z / 1.9, 0.0, 0.0, 0.0);
  10204. }
  10205. else
  10206. {
  10207. AttachDynamicObjectToVehicle(gSirenObject[vehicleid], INVALID_VEHICLE_ID, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
  10208. DestroyDynamicObject(gSirenObject[vehicleid]);
  10209. gSirenObject[vehicleid] = INVALID_OBJECT_ID;
  10210. }
  10211. }
  10212. GetVehicleJobType(vehicleid)
  10213. {
  10214. if (JobVehicles[Transporter][0] <= vehicleid <= JobVehicles[Transporter][10]) {
  10215. return JOB_TRANSPORTER;
  10216. } else if (JobVehicles[Forklifter][0] <= vehicleid <= JobVehicles[Forklifter][5]) {
  10217. return JOB_FORKLIFTER;
  10218. } else if (JobVehicles[TaxiDriver][0] <= vehicleid <= JobVehicles[TaxiDriver][5]) {
  10219. return JOB_TAXI;
  10220. } else if (JobVehicles[Pizzaboy][0] <= vehicleid <= JobVehicles[Pizzaboy][4]) {
  10221. return JOB_PIZZA;
  10222. } else if (JobVehicles[Trashman][0] <= vehicleid <= JobVehicles[Trashman][4]) {
  10223. return JOB_TRASHMAN;
  10224. }
  10225. return JOB_NONE;
  10226. }
  10227. PlayerHasKeys(playerid, vehicle)
  10228. {
  10229. for (new i = 0; i < MAX_INVENTORY_ITEMS; i ++)
  10230. {
  10231. if (Inventory[playerid][i][invExists] && !strcmp(Inventory[playerid][i][invName], "Car Key") && Inventory[playerid][i][invValue] == Vehicles[vehicle][vID])
  10232. {
  10233. return 1;
  10234. }
  10235. }
  10236. return 0;
  10237. }
  10238. GetVehicleKeys(playerid, vehicleid)
  10239. {
  10240. new id;
  10241. if(CheckAdmin(playerid, 1) && Players[playerid][pAdminDuty])
  10242. {
  10243. return 1;
  10244. }
  10245. else if (VehicleInformation[vehicleid][vAdmin])
  10246. {
  10247. return 1;
  10248. }
  10249. else if (IsTestVehicle(vehicleid) && Players[playerid][pDrivingTest])
  10250. {
  10251. return 1;
  10252. }
  10253. else if (GetVehicleJobType(vehicleid) != JOB_NONE && Players[playerid][pJob] == GetVehicleJobType(vehicleid))
  10254. {
  10255. return 1;
  10256. }
  10257. else if ((id = GetVehicleID(vehicleid)) != INVALID_ID)
  10258. {
  10259. if (Vehicles[id][vRenter] == playerid || IsVehicleOwner(playerid, id))
  10260. {
  10261. return 1;
  10262. }
  10263. else if (Vehicles[id][vFaction] != 0 && GetFactionID(Vehicles[id][vFaction]) == Players[playerid][pFaction])
  10264. {
  10265. return 1;
  10266. }
  10267. else if (Vehicles[id][vOwner] != 0 && PlayerHasKeys(playerid, id))
  10268. {
  10269. return 1;
  10270. }
  10271. }
  10272. return 0;
  10273. }
  10274. IsRentalCar(vehicleid)
  10275. {
  10276. new
  10277. id = GetVehicleID(vehicleid);
  10278. if (id == INVALID_ID)
  10279. {
  10280. return 0;
  10281. }
  10282. return Vehicles[id][vRentable];
  10283. }
  10284. GetVehicleID(vehicleid)
  10285. {
  10286. new modelid = GetVehicleModel(vehicleid);
  10287. if (!IsValidVehicle(vehicleid))
  10288. {
  10289. return INVALID_ID;
  10290. }
  10291. else
  10292. {
  10293. for (new i = 0; i < MAX_CARS; i ++)
  10294. {
  10295. if (Vehicles[i][vExists] && Vehicles[i][vModel] == modelid && Vehicles[i][vVehicle] == vehicleid)
  10296. {
  10297. return i;
  10298. }
  10299. }
  10300. }
  10301. return INVALID_ID;
  10302. }
  10303. RespawnRentalCar(playerid)
  10304. {
  10305. new
  10306. vehicle = Players[playerid][pRental];
  10307. if (vehicle != INVALID_ID && Vehicles[vehicle][vRentable])
  10308. {
  10309. Vehicles[vehicle][vRenter] = INVALID_PLAYER_ID;
  10310. Players[playerid][pRental] = INVALID_ID;
  10311. SetVehicleToRespawn(Vehicles[vehicle][vVehicle]);
  10312. UpdateVehicle(vehicle);
  10313. }
  10314. return 1;
  10315. }
  10316. GetVehicleCompany(id)
  10317. {
  10318. for (new i = 0; i < MAX_COMPANIES; i ++)
  10319. {
  10320. if (IsValidCompanyID(i) && Companies[i][cID] == Vehicles[id][vCompany])
  10321. {
  10322. return i;
  10323. }
  10324. }
  10325. return INVALID_ID;
  10326. }
  10327. IsVehicleOwner(playerid, vehicle)
  10328. {
  10329. return (IsValidVehicleID(vehicle)) && (Vehicles[vehicle][vOwner] == Players[playerid][pID]);
  10330. }
  10331. ShowTrunkItems(playerid, vehicle)
  10332. {
  10333. if (!IsValidVehicleID(vehicle))
  10334. {
  10335. return 0;
  10336. }
  10337. else
  10338. {
  10339. new
  10340. title[64],
  10341. index = 0;
  10342. gListString = "Item\tWeight\nStore Item";
  10343. for (new i = 0; i < MAX_STORED_ITEMS; i ++)
  10344. {
  10345. if (StoredItems[i][stExists] && StoredItems[i][stVehicle] == Vehicles[vehicle][vID])
  10346. {
  10347. format(gListString, sizeof(gListString), "%s\n%s\t%i lbs", gListString, GetStoredItemName(i), GetItemInformation(StoredItems[i][stName], ITEM_INFO_WEIGHT));
  10348. gListedItems[playerid][index++] = i;
  10349. }
  10350. }
  10351. format(title, sizeof(title), "{FFFFFF}Trunk - Capacity: %i/%i", GetTrunkTotalWeight(vehicle), GetTrunkCapacity(vehicle));
  10352. Dialog_Show(playerid, TrunkItems, DIALOG_STYLE_TABLIST_HEADERS, title, gListString, "Select", "Back");
  10353. }
  10354. return 1;
  10355. }
  10356. SetPlayerCellphoneAction(playerid, enable)
  10357. {
  10358. if (Players[playerid][pDeathState] != DEATH_STATE_NONE || Players[playerid][pHandcuffed])
  10359. {
  10360. return 0;
  10361. }
  10362. else
  10363. {
  10364. if (VehicleHasDoors(GetPlayerVehicleID(playerid)) && Players[playerid][pChatting])
  10365. {
  10366. Players[playerid][pChatting] = 0;
  10367. }
  10368. if (enable)
  10369. {
  10370. if (VehicleHasDoors(GetPlayerVehicleID(playerid)))
  10371. {
  10372. ApplyAnimation(playerid, "CAR_CHAT", "carfone_in", 4.1, 0, 0, 0, 1, 0, 1);
  10373. }
  10374. else
  10375. {
  10376. SetPlayerSpecialAction(playerid, SPECIAL_ACTION_USECELLPHONE);
  10377. SetPlayerAttachedObject(playerid, ATTACHED_SLOT_MISC, 330, 6);
  10378. }
  10379. }
  10380. else
  10381. {
  10382. if (VehicleHasDoors(GetPlayerVehicleID(playerid)))
  10383. {
  10384. ApplyAnimation(playerid, "CAR_CHAT", "carfone_out", 4.1, 0, 0, 0, 0, 0, 1);
  10385. }
  10386. else
  10387. {
  10388. SetPlayerSpecialAction(playerid, SPECIAL_ACTION_STOPUSECELLPHONE);
  10389. RemovePlayerAttachedObject(playerid, ATTACHED_SLOT_MISC);
  10390. }
  10391. }
  10392. }
  10393. return 1;
  10394. }
  10395. HangupCall(playerid)
  10396. {
  10397. if (Players[playerid][pCalling] > 0)
  10398. {
  10399. for (new i = 0; i < MAX_PAYPHONES; i ++)
  10400. {
  10401. if (IsValidPayphoneID(i) && Payphones[i][phCaller] == playerid)
  10402. {
  10403. Payphones[i][phCaller] = INVALID_PLAYER_ID;
  10404. UpdatePayphoneText(i);
  10405. }
  10406. }
  10407. if (Players[playerid][pCaller] != INVALID_PLAYER_ID)
  10408. {
  10409. SetPlayerCellphoneAction(Players[playerid][pCaller], false);
  10410. SendInfoMessage(Players[playerid][pCaller], "The other line has ended the call.");
  10411. PlayerPlaySound(Players[playerid][pCaller], 20601, 0.0, 0.0, 0.0);
  10412. if (Players[Players[playerid][pCaller]][pPayphone] != INVALID_ID)
  10413. {
  10414. ResetPayphone(Players[playerid][pCaller]);
  10415. ShowActionBubble(Players[playerid][pCaller], "* %s hangs up the payphone.", ReturnNameEx(Players[playerid][pCaller]));
  10416. }
  10417. else
  10418. {
  10419. ShowActionBubble(Players[playerid][pCaller], "* %s hangs up the phone and puts it in their pocket.", ReturnNameEx(Players[playerid][pCaller]));
  10420. }
  10421. Players[Players[playerid][pCaller]][pCalling] = 0;
  10422. Players[Players[playerid][pCaller]][pCaller] = INVALID_PLAYER_ID;
  10423. }
  10424. SetPlayerCellphoneAction(playerid, false);
  10425. PlayerPlaySound(playerid, 20601, 0.0, 0.0, 0.0);
  10426. Players[playerid][pDispatch] = 0;
  10427. Players[playerid][pCalling] = 0;
  10428. Players[playerid][pCaller] = INVALID_PLAYER_ID;
  10429. if (Players[playerid][pPayphone] != INVALID_ID)
  10430. {
  10431. ResetPayphone(playerid);
  10432. ShowActionBubble(playerid, "* %s hangs up the payphone.", ReturnNameEx(playerid));
  10433. }
  10434. else
  10435. {
  10436. ShowActionBubble(playerid, "* %s hangs up the phone and puts it in their pocket.", ReturnNameEx(playerid));
  10437. }
  10438. }
  10439. }
  10440. SendTextMessage(playerid, number, const text[])
  10441. {
  10442. foreach (new i : Player)
  10443. {
  10444. if (number != 0 && Players[i][pPhone] == number)
  10445. {
  10446. if (Players[i][pPhoneOff])
  10447. {
  10448. return SendErrorMessage(playerid, "That player's phone is turned off.");
  10449. }
  10450. else
  10451. {
  10452. SendFormatMessage(i, COLOR_YELLOW, "* Text from %i: %s", Players[playerid][pPhone], text);
  10453. SendFormatMessage(playerid, COLOR_YELLOW, "* Text to %i: %s", number, text);
  10454. return 1;
  10455. }
  10456. }
  10457. }
  10458. return SendErrorMessage(playerid, "The specified number is not in service.");
  10459. }
  10460. CallNumber(playerid, number, payphone = INVALID_ID)
  10461. {
  10462. if (Players[playerid][pCalling] > 0)
  10463. {
  10464. return SendErrorMessage(playerid, "You are already on a call.");
  10465. }
  10466. else if (Players[playerid][pPhone] == number)
  10467. {
  10468. return SendErrorMessage(playerid, "You can't dial your own number.");
  10469. }
  10470. else
  10471. {
  10472. new targetid = GetPhonePlayerID(number);
  10473. if (IsValidPayphoneID(payphone))
  10474. {
  10475. ShowActionBubble(playerid, "* %s inserts a coin and picks up the payphone.", ReturnNameEx(playerid));
  10476. AssignPayphone(playerid, payphone);
  10477. }
  10478. else
  10479. {
  10480. ShowActionBubble(playerid, "* %s takes out their phone and dials a number.", ReturnNameEx(playerid));
  10481. }
  10482. if (IsPlayerConnected(targetid))
  10483. {
  10484. if (Players[targetid][pPhoneOff])
  10485. {
  10486. return SendClientMessage(playerid, COLOR_LIGHTGREY, "** The phone is switched off. The number would automatically forward to voicemail. **");
  10487. }
  10488. else if (Players[targetid][pCalling] > 0)
  10489. {
  10490. return SendClientMessage(playerid, COLOR_LIGHTGREY, "** The other line is currently busy. **");
  10491. }
  10492. else
  10493. {
  10494. Players[playerid][pCalling] = 1;
  10495. Players[playerid][pCaller] = targetid;
  10496. Players[targetid][pCalling] = 1;
  10497. Players[targetid][pCaller] = playerid;
  10498. if (IsValidPayphoneID(payphone))
  10499. {
  10500. SendInfoMessage(targetid, "Payphone (%i) is attempting to call you (use /answer to answer).", Payphones[payphone][phNumber]);
  10501. }
  10502. else
  10503. {
  10504. SendInfoMessage(targetid, "Number %i is attempting to call you (use /answer to answer).", Players[playerid][pPhone]);
  10505. }
  10506. ShowActionBubble(targetid, "* %s's phone starts to ring.", ReturnNameEx(targetid));
  10507. HandlePhoneRing(targetid);
  10508. }
  10509. }
  10510. else
  10511. {
  10512. new id = GetPhonePayphoneID(number);
  10513. if (IsValidPayphoneID(id) && !Payphones[id][phOccupied])
  10514. {
  10515. CallPayphone(playerid, id);
  10516. }
  10517. else
  10518. {
  10519. SetTimerEx("OnPhoneResponse", 3000, false, "ii", playerid, number);
  10520. }
  10521. Players[playerid][pCalling] = 1;
  10522. }
  10523. SetPlayerCellphoneAction(playerid, true);
  10524. HandlePhoneDial(playerid);
  10525. SendInfoMessage(playerid, "You have dialed number: %i. Please wait for a connection...", number);
  10526. PlayerPlaySound(playerid, 16001, 0.0, 0.0, 0.0);
  10527. }
  10528. return 1;
  10529. }
  10530. ListContacts(playerid)
  10531. {
  10532. if (Players[playerid][pPhone] > 0)
  10533. {
  10534. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_contacts WHERE Phone = %i", Players[playerid][pPhone]);
  10535. mysql_tquery(gConnection, gExecute, "OnPlayerListContacts", "i", playerid);
  10536. }
  10537. }
  10538. OpenPhone(playerid)
  10539. {
  10540. new strHead[128];
  10541. if (Players[playerid][pPhone] > 0)
  10542. {
  10543. format(strHead,sizeof(strHead),"{FFFFFF}Phone: %i",Players[playerid][pPhone]);
  10544. Dialog_Show(playerid, PhoneMenu, DIALOG_STYLE_LIST, strHead, "Call\nSMS\nContacts\nMusic\nBank\nSettings", "Select", "Cancel");
  10545. }
  10546. }
  10547. EditAttachedObjectEx(playerid, type, index)
  10548. {
  10549. Players[playerid][pEdit] = type;
  10550. return EditAttachedObject(playerid, index);
  10551. }
  10552. EditDynamicObjectEx(playerid, type, objectid, extraid = INVALID_ID)
  10553. {
  10554. Players[playerid][pEdit] = type;
  10555. Players[playerid][pEditID] = extraid;
  10556. return EditDynamicObject(playerid, objectid);
  10557. }
  10558. CancelObjectEdit(playerid)
  10559. {
  10560. Players[playerid][pEdit] = EDIT_TYPE_NONE;
  10561. Players[playerid][pEditID] = INVALID_ID;
  10562. return CancelEdit(playerid);
  10563. }
  10564. UpdateGasPump(id)
  10565. {
  10566. new
  10567. string[128];
  10568. if (GasPumps[id][gpExists])
  10569. {
  10570. DestroyDynamicObject(GasPumps[id][gpObject]);
  10571. DestroyDynamic3DTextLabel(GasPumps[id][gpText]);
  10572. format(string, sizeof(string), "{2B89DB}[Gas Station]:\n ID: %i\nGasoline: %.1f gallons\nUse /refuel to refill vehicle", id, GasPumps[id][gpFuel]);
  10573. GasPumps[id][gpObject] = CreateDynamicObject(3465, GasPumps[id][gpSpawn][0], GasPumps[id][gpSpawn][1], GasPumps[id][gpSpawn][2], 0.0, 0.0, GasPumps[id][gpSpawn][3]);
  10574. GasPumps[id][gpText] = CreateDynamic3DTextLabel(string, -1, GasPumps[id][gpSpawn][0], GasPumps[id][gpSpawn][1], GasPumps[id][gpSpawn][2], 3.0);
  10575. }
  10576. return 1;
  10577. }
  10578. SaveGasPump(id)
  10579. {
  10580. static
  10581. queryString[200];
  10582. if (!GasPumps[id][gpExists]) return 0;
  10583. format(queryString, sizeof(queryString), "UPDATE rp_gaspumps SET gpX = %.4f, gpY = %.4f, gpZ = %.4f, gpA = %.4f, gpFuel = %.4f WHERE gpID = %i", GasPumps[id][gpSpawn][0], GasPumps[id][gpSpawn][1], GasPumps[id][gpSpawn][2], GasPumps[id][gpSpawn][3], GasPumps[id][gpFuel], GasPumps[id][gpID]);
  10584. return mysql_tquery(gConnection, queryString);
  10585. }
  10586. GetClosestPump(playerid)
  10587. {
  10588. for (new i = 0; i < MAX_GAS_PUMPS; i ++)
  10589. {
  10590. if (GasPumps[i][gpExists] && IsPlayerInRangeOfPoint(playerid, 6.0, GasPumps[i][gpSpawn][0], GasPumps[i][gpSpawn][1], GasPumps[i][gpSpawn][2]))
  10591. {
  10592. return i;
  10593. }
  10594. }
  10595. return INVALID_ID;
  10596. }
  10597. StopRefuel(playerid)
  10598. {
  10599. if (Players[playerid][pRefuel] != INVALID_ID)
  10600. {
  10601. new
  10602. company = GetPumpCompany(Players[playerid][pRefuel]);
  10603. if (IsValidCompanyID(company))
  10604. {
  10605. GiveCompanyMoney(company, Players[playerid][pGasPrice]);
  10606. }
  10607. KillTimer(Timers[playerid][tRefuel]);
  10608. SaveGasPump(Players[playerid][pRefuel]);
  10609. RemoveMoney(playerid, Players[playerid][pGasPrice]);
  10610. SendInfoMessage(playerid, "You have filled your vehicle for {33CC33}%s{FFFFFF}.", FormatNumber(Players[playerid][pGasPrice]));
  10611. Players[playerid][pRefuel] = INVALID_ID;
  10612. Players[playerid][pGasPrice] = 0;
  10613. }
  10614. return 1;
  10615. }
  10616. GetPumpCompany(id)
  10617. {
  10618. for (new i = 0; i < MAX_COMPANIES; i ++)
  10619. {
  10620. if (IsValidCompanyID(i) && Companies[i][cID] == GasPumps[id][gpCompany])
  10621. {
  10622. return i;
  10623. }
  10624. }
  10625. return INVALID_ID;
  10626. }
  10627. AddATMMachine(Float:x, Float:y, Float:z, Float:angle, interior, world)
  10628. {
  10629. new
  10630. id = GetNextATMID();
  10631. if (id != INVALID_ID)
  10632. {
  10633. ATM[id][atmExists] = 1;
  10634. ATM[id][atmSpawn][0] = x;
  10635. ATM[id][atmSpawn][1] = y;
  10636. ATM[id][atmSpawn][2] = z;
  10637. ATM[id][atmSpawn][3] = angle;
  10638. ATM[id][atmInterior] = interior;
  10639. ATM[id][atmWorld] = world;
  10640. ATM[id][atmObject] = INVALID_OBJECT_ID;
  10641. ATM[id][atmText] = INVALID_3DTEXT_ID;
  10642. UpdateATM(id);
  10643. format(gExecute, sizeof(gExecute), "INSERT INTO rp_atms (atmInterior) VALUES(%i)", interior);
  10644. mysql_tquery(gConnection, gExecute, "OnATMAdded", "i", id);
  10645. }
  10646. return id;
  10647. }
  10648. AddGasPump(company, Float:x, Float:y, Float:z, Float:angle)
  10649. {
  10650. new
  10651. id = GetNextGasPumpID();
  10652. if (id != INVALID_ID)
  10653. {
  10654. GasPumps[id][gpExists] = 1;
  10655. GasPumps[id][gpCompany] = Companies[company][cID];
  10656. GasPumps[id][gpSpawn][0] = x;
  10657. GasPumps[id][gpSpawn][1] = y;
  10658. GasPumps[id][gpSpawn][2] = z;
  10659. GasPumps[id][gpSpawn][3] = angle + 90.0;
  10660. GasPumps[id][gpFuel] = 5000.0;
  10661. GasPumps[id][gpObject] = INVALID_OBJECT_ID;
  10662. GasPumps[id][gpText] = INVALID_3DTEXT_ID;
  10663. UpdateGasPump(id);
  10664. format(gExecute, sizeof(gExecute), "INSERT INTO rp_gaspumps (gpCompany) VALUES(%i)", GasPumps[id][gpCompany]);
  10665. mysql_tquery(gConnection, gExecute, "OnGasPumpAdded", "i", id);
  10666. }
  10667. return id;
  10668. }
  10669. ShowTrunkMenu(playerid, vehicle)
  10670. {
  10671. new string[128];
  10672. if (!IsValidVehicleID(vehicle)) return 0;
  10673. format(string, sizeof(string), "Money: {00FF00}%s{FFFFFF}\nView Items", FormatNumber(Vehicles[vehicle][vTrunkMoney]));
  10674. Dialog_Show(playerid, VehicleTrunk, DIALOG_STYLE_LIST, "{FFFFFF}Trunk menu", string, "Select", "Cancel");
  10675. return 1;
  10676. }
  10677. DeleteVehicle(id)
  10678. {
  10679. if (!IsValidVehicleID(id))
  10680. {
  10681. return 0;
  10682. }
  10683. format(gExecute, sizeof(gExecute), "DELETE FROM rp_vehicles WHERE vID = %i", Vehicles[id][vID]);
  10684. mysql_tquery(gConnection, gExecute);
  10685. ClearTrunkItems(id);
  10686. ResetVehicle(id);
  10687. return 1;
  10688. }
  10689. AddVehicle(company, model, price, Float:x, Float:y, Float:z, Float:angle, color1, color2, playerid = INVALID_PLAYER_ID, faction = INVALID_ID, bool:rentable = false, bool:despawned = false)
  10690. {
  10691. new
  10692. id = GetNextVehicleID();
  10693. if (id != INVALID_ID)
  10694. {
  10695. if(rentable == true)
  10696. {
  10697. format(Vehicles[id][vPlate], 45, "RENTAL%i", id);
  10698. }
  10699. else format(Vehicles[id][vPlate], 32, "%c%c%c %i", Random('A', 'Z'), Random('A', 'Z'), Random('A', 'Z'), Random(100, 999));
  10700. format(Vehicles[id][vRegistered], 32, GetDateAndTime());
  10701. for (new i = 0; i < 14; i ++) {
  10702. Vehicles[id][vMods][i] = 0;
  10703. }
  10704. Vehicles[id][vExists] = 1;
  10705. Vehicles[id][vCompany] = 0;
  10706. Vehicles[id][vModel] = model;
  10707. Vehicles[id][vPrice] = price;
  10708. Vehicles[id][vRentable] = 0;
  10709. Vehicles[id][vOwner] = 0;
  10710. Vehicles[id][vSpawn][0] = x;
  10711. Vehicles[id][vSpawn][1] = y;
  10712. Vehicles[id][vSpawn][2] = z;
  10713. Vehicles[id][vSpawn][3] = angle;
  10714. Vehicles[id][vColor1] = color1;
  10715. Vehicles[id][vColor2] = color2;
  10716. Vehicles[id][vPaintjob] = INVALID_ID;
  10717. Vehicles[id][vLocked] = 0;
  10718. Vehicles[id][vTrunkMoney] = 0;
  10719. Vehicles[id][vFaction] = 0;
  10720. Vehicles[id][vSiren] = 0;
  10721. Vehicles[id][vAlarm] = 0;
  10722. Vehicles[id][vImpound] = 0;
  10723. Vehicles[id][vDespawned] = despawned;
  10724. Vehicles[id][vRentable] = rentable;
  10725. Vehicles[id][vText] = INVALID_3DTEXT_ID;
  10726. Vehicles[id][vVehicle] = INVALID_VEHICLE_ID;
  10727. Vehicles[id][vRenter] = INVALID_PLAYER_ID;
  10728. if (IsPlayerConnected(playerid) && IsPlayerLoggedIn(playerid))
  10729. {
  10730. Vehicles[id][vOwner] = Players[playerid][pID];
  10731. }
  10732. if (IsValidCompanyID(company) && Companies[company][cType] == COMPANY_RENTALS)
  10733. {
  10734. Vehicles[id][vCompany] = Companies[company][cID];
  10735. }
  10736. if (IsValidFactionID(faction))
  10737. {
  10738. Vehicles[id][vFaction] = Factions[faction][fcID];
  10739. }
  10740. UpdateVehicle(id);
  10741. format(gExecute, sizeof(gExecute), "INSERT INTO rp_vehicles (vModel) VALUES(%i)", model);
  10742. mysql_tquery(gConnection, gExecute, "OnVehicleAdded", "i", id);
  10743. }
  10744. return id;
  10745. }
  10746. DiscardWeapon(playerid, type)
  10747. {
  10748. if (GetPlayerState(playerid) != PLAYER_STATE_ONFOOT)
  10749. {
  10750. return SendErrorMessage(playerid, "You must be onfoot to discard weapons.");
  10751. }
  10752. switch (type)
  10753. {
  10754. case WEAPON_MELEE:
  10755. {
  10756. if (!Weapons[playerid][wMelee])
  10757. {
  10758. SendErrorMessage(playerid, "You don't have a weapon in that slot.");
  10759. }
  10760. else
  10761. {
  10762. SendInfoMessage(playerid, "You have dropped your %s.", GetWeapon(Weapons[playerid][wMelee]));
  10763. ApplyAnimation(playerid, "BOMBER", "BOM_Plant_In", 4.1, 0, 0, 0, 0, 0);
  10764. if (Players[playerid][pFaction] != INVALID_ID && Factions[Players[playerid][pFaction]][fcType] != FACTION_ILLEGAL)
  10765. {
  10766. SetPlayerWeapon(playerid, WEAPON_MELEE, 0);
  10767. SendInfoMessage(playerid, "As you are a faction member, dropped weapons will not appear on the ground.");
  10768. }
  10769. else
  10770. {
  10771. DropWeapon(playerid, Weapons[playerid][wMelee]);
  10772. }
  10773. }
  10774. }
  10775. case WEAPON_PRIMARY:
  10776. {
  10777. if (!Weapons[playerid][wPrimary])
  10778. {
  10779. SendErrorMessage(playerid, "You don't have a weapon in that slot.");
  10780. }
  10781. else
  10782. {
  10783. SendInfoMessage(playerid, "You have dropped your %s (%i ammo).", GetWeapon(Weapons[playerid][wPrimary]), Weapons[playerid][wPrimaryAmmo]);
  10784. ApplyAnimation(playerid, "BOMBER", "BOM_Plant_In", 4.1, 0, 0, 0, 0, 0);
  10785. if (Players[playerid][pFaction] != INVALID_ID && Factions[Players[playerid][pFaction]][fcType] != FACTION_ILLEGAL)
  10786. {
  10787. SetPlayerWeapon(playerid, WEAPON_PRIMARY, 0);
  10788. SendInfoMessage(playerid, "As you are a faction member, dropped weapons will not appear on the ground.");
  10789. }
  10790. else
  10791. {
  10792. DropWeapon(playerid, Weapons[playerid][wPrimary], Weapons[playerid][wPrimaryAmmo]);
  10793. }
  10794. }
  10795. }
  10796. case WEAPON_SECONDARY:
  10797. {
  10798. if (!Weapons[playerid][wSecondary])
  10799. {
  10800. SendErrorMessage(playerid, "You don't have a weapon in that slot.");
  10801. }
  10802. else
  10803. {
  10804. SendInfoMessage(playerid, "You have dropped your %s (%i ammo).", GetWeapon(Weapons[playerid][wSecondary]), Weapons[playerid][wSecondaryAmmo]);
  10805. ApplyAnimation(playerid, "BOMBER", "BOM_Plant_In", 4.1, 0, 0, 0, 0, 0);
  10806. if (Players[playerid][pFaction] != INVALID_ID && Factions[Players[playerid][pFaction]][fcType] != FACTION_ILLEGAL)
  10807. {
  10808. SetPlayerWeapon(playerid, WEAPON_SECONDARY, 0);
  10809. SendInfoMessage(playerid, "As you are a faction member, dropped weapons will not appear on the ground.");
  10810. }
  10811. else
  10812. {
  10813. DropWeapon(playerid, Weapons[playerid][wSecondary], Weapons[playerid][wSecondaryAmmo]);
  10814. }
  10815. }
  10816. }
  10817. case WEAPON_TERTIARY:
  10818. {
  10819. if (!Weapons[playerid][wTertiary])
  10820. {
  10821. SendErrorMessage(playerid, "You don't have a weapon in that slot.");
  10822. }
  10823. else
  10824. {
  10825. SendInfoMessage(playerid, "You have dropped your %s (%i ammo).", GetWeapon(Weapons[playerid][wTertiary]), Weapons[playerid][wTertiaryAmmo]);
  10826. ApplyAnimation(playerid, "BOMBER", "BOM_Plant_In", 4.1, 0, 0, 0, 0, 0);
  10827. if (Players[playerid][pFaction] != INVALID_ID && Factions[Players[playerid][pFaction]][fcType] != FACTION_ILLEGAL)
  10828. {
  10829. SetPlayerWeapon(playerid, WEAPON_TERTIARY, 0);
  10830. SendInfoMessage(playerid, "As you are a faction member, dropped weapons will not appear on the ground.");
  10831. }
  10832. else
  10833. {
  10834. DropWeapon(playerid, Weapons[playerid][wTertiary], Weapons[playerid][wTertiaryAmmo]);
  10835. }
  10836. }
  10837. }
  10838. }
  10839. return 1;
  10840. }
  10841. ListBankTransfers(playerid)
  10842. {
  10843. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_transfers WHERE Player = %i", Players[playerid][pID]);
  10844. mysql_tquery(gConnection, gExecute, "OnPlayerViewTransfers", "i", playerid);
  10845. }
  10846. ShowBankAccountMenu(playerid, id)
  10847. {
  10848. new
  10849. string[64];
  10850. if (!BankAccounts[playerid][id][bankExists])
  10851. {
  10852. return 0;
  10853. }
  10854. Players[playerid][pBank] = id;
  10855. format(string, sizeof(string), "{FFFFFF}%s", BankAccounts[playerid][id][bankName]);
  10856. Dialog_Show(playerid, BankMenu, DIALOG_STYLE_LIST, string, "Withdraw (%s)\nDeposit\nTransfer\nPaycheck (%s)\nCollect Transfers\nClose Account", "Select", "Cancel", FormatNumber(BankAccounts[playerid][id][bankBalance]), FormatNumber(Players[playerid][pPaycheck]));
  10857. return 1;
  10858. }
  10859. ShowBankAccounts(playerid, type)
  10860. {
  10861. new
  10862. displayString[MAX_BANK_ACCOUNTS * 50],
  10863. index = 0
  10864. ;
  10865. displayString = "Name\tBalance\n";
  10866. if (type == BANK_ACCESS_MENU)
  10867. {
  10868. strcat(displayString, "New Account");
  10869. }
  10870. for (new i = 0; i < MAX_BANK_ACCOUNTS; i ++)
  10871. {
  10872. if (BankAccounts[playerid][i][bankExists])
  10873. {
  10874. format(displayString, sizeof(displayString), "%s\n%s\t%s", displayString, BankAccounts[playerid][i][bankName], FormatNumber(BankAccounts[playerid][i][bankBalance]));
  10875. gListedItems[playerid][index++] = i;
  10876. }
  10877. }
  10878. switch (type)
  10879. {
  10880. case BANK_ACCESS_MENU:
  10881. {
  10882. return Dialog_Show(playerid, BankAccounts, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Bank accounts", displayString, "Select", "Cancel");
  10883. }
  10884. case BANK_ATM_MENU:
  10885. {
  10886. if (index)
  10887. {
  10888. return Dialog_Show(playerid, ATMSelect, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Bank accounts", displayString, "Select", "Cancel");
  10889. }
  10890. }
  10891. case BANK_PAYMENT_TYPE:
  10892. {
  10893. if (index)
  10894. {
  10895. return Dialog_Show(playerid, PaymentAccount, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Select account", displayString, "Select", "Cancel");
  10896. }
  10897. }
  10898. }
  10899. return 0;
  10900. }
  10901. CheckBank(playerid, targetid)
  10902. {
  10903. new
  10904. displayString[MAX_BANK_ACCOUNTS * 50],
  10905. index = 0
  10906. ;
  10907. displayString = "Name\tBalance\n";
  10908. for (new i = 0; i < MAX_BANK_ACCOUNTS; i ++)
  10909. {
  10910. if (BankAccounts[targetid][i][bankExists])
  10911. {
  10912. format(displayString, sizeof(displayString), "%s\n%s\t%s", displayString, BankAccounts[targetid][i][bankName], FormatNumber(BankAccounts[targetid][i][bankBalance]));
  10913. gListedItems[playerid][index++] = i;
  10914. }
  10915. }
  10916. return Dialog_Show(playerid, aBankAccounts, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Bank accounts", displayString, "","Exit");
  10917. }
  10918. SaveBankAccount(playerid, id)
  10919. {
  10920. static
  10921. queryString[200];
  10922. if (!BankAccounts[playerid][id][bankExists])
  10923. {
  10924. return 0;
  10925. }
  10926. format(queryString, sizeof(queryString), "UPDATE rp_bankaccounts SET bankName = '%s', bankBalance = %i WHERE bankID = %i", mysql_escaped(BankAccounts[playerid][id][bankName]), BankAccounts[playerid][id][bankBalance], BankAccounts[playerid][id][bankID]);
  10927. return mysql_tquery(gConnection, queryString);
  10928. }
  10929. GetPrimaryBankAccount(playerid)
  10930. {
  10931. for (new i = 0; i < MAX_BANK_ACCOUNTS; i ++)
  10932. {
  10933. if (BankAccounts[playerid][i][bankExists] && BankAccounts[playerid][i][bankID] == Players[playerid][pBankAccount])
  10934. {
  10935. return i;
  10936. }
  10937. }
  10938. return INVALID_ID;
  10939. }
  10940. AddBankAccount(playerid, const name[])
  10941. {
  10942. new
  10943. id = GetNextBankAccountID(playerid);
  10944. if (id != INVALID_ID)
  10945. {
  10946. strcpy(BankAccounts[playerid][id][bankName], name, 32);
  10947. BankAccounts[playerid][id][bankExists] = 1;
  10948. BankAccounts[playerid][id][bankBalance] = 0;
  10949. format(gExecute, sizeof(gExecute), "INSERT INTO rp_bankaccounts (ID) VALUES(%i)", Players[playerid][pID]);
  10950. mysql_tquery(gConnection, gExecute, "OnBankAccountAdded", "ii", playerid, id);
  10951. }
  10952. return id;
  10953. }
  10954. OnPlayerExitTaxi(playerid)
  10955. {
  10956. if (Players[playerid][pInsideTaxi] != INVALID_PLAYER_ID)
  10957. {
  10958. SendInfoMessage(playerid, "You have arrived to your destination for {33CC33}%s{FFFFFF}.", FormatNumber(Players[playerid][pTaxiMeter]*Players[Players[playerid][pInsideTaxi]][pTaxiFare]));
  10959. SendInfoMessage(Players[playerid][pInsideTaxi], "You have received {33CC33}%s{FFFFFF} on your paycheck.", FormatNumber(Players[playerid][pTaxiMeter]*Players[Players[playerid][pInsideTaxi]][pTaxiFare]));
  10960. RemoveMoney(playerid, Players[playerid][pTaxiMeter]*Players[Players[playerid][pInsideTaxi]][pTaxiFare]);
  10961. Players[Players[playerid][pInsideTaxi]][pJobPaycheck] += Players[playerid][pTaxiMeter]*Players[Players[playerid][pInsideTaxi]][pTaxiFare];
  10962. ResetTaxi(playerid);
  10963. }
  10964. }
  10965. ResetTaxi(playerid)
  10966. {
  10967. if (Players[playerid][pInsideTaxi] != INVALID_PLAYER_ID)
  10968. {
  10969. Players[Players[playerid][pInsideTaxi]][pPassenger] = 0;
  10970. Players[playerid][pInsideTaxi] = INVALID_PLAYER_ID;
  10971. Players[playerid][pTaxiMeter] = 0;
  10972. Players[playerid][pTaxiTime] = 0;
  10973. }
  10974. }
  10975. IsAdvertisementActive(playerid)
  10976. {
  10977. return ispacked(gAdvertisement[playerid]);
  10978. }
  10979. IsHelpRequestActive(playerid)
  10980. {
  10981. return ispacked(gHelpRequest[playerid]);
  10982. }
  10983. ResetAdvertisement(playerid)
  10984. {
  10985. gAdvertisement[playerid]{0} = 0;
  10986. }
  10987. ResetHelpRequest(playerid)
  10988. {
  10989. gHelpRequest[playerid]{0} = 0;
  10990. }
  10991. PlayerHasLeadership(playerid)
  10992. {
  10993. return (Players[playerid][pFactionRank] >= Factions[Players[playerid][pFaction]][fcMaxRanks] - 1 || Players[playerid][pFactionLeader]);
  10994. }
  10995. SetPlayerFaction(playerid, faction, rank)
  10996. {
  10997. if (IsValidFactionID(faction))
  10998. {
  10999. Players[playerid][pFaction] = faction;
  11000. Players[playerid][pFactionID] = Factions[faction][fcID];
  11001. Players[playerid][pFactionRank] = rank;
  11002. if (rank >= Factions[faction][fcMaxRanks] - 1) {
  11003. Players[playerid][pFactionLeader] = 1;
  11004. } else {
  11005. Players[playerid][pFactionLeader] = 0;
  11006. }
  11007. if(GetPlayerFactionType(playerid) == FACTION_LEO)
  11008. {
  11009. //Players[playerid][pBadge] = 100 + random(999) + Players[playerid][pID];
  11010. Players[playerid][pBadge] = Random(100, 9999);
  11011. } else {
  11012. Players[playerid][pBadge] = 0;
  11013. }
  11014. SaveAccount(playerid);
  11015. }
  11016. }
  11017. ResetFactionInfo(playerid)
  11018. {
  11019. RemoveEquipment(playerid);
  11020. Players[playerid][pFaction] = INVALID_ID;
  11021. Players[playerid][pFactionID] = 0;
  11022. Players[playerid][pFactionRank] = 0;
  11023. Players[playerid][pFactionLeader] = 0;
  11024. }
  11025. SetCheckpoint(playerid, type, Float:x, Float:y, Float:z, Float:size)
  11026. {
  11027. Players[playerid][pCheckpoint] = type;
  11028. SetCheckpointsForPlayer(playerid);
  11029. DisablePlayerCheckpoint(playerid);
  11030. SetPlayerCheckpoint(playerid, x, y, z, size);
  11031. }
  11032. ResetCheckpoint(playerid)
  11033. {
  11034. Players[playerid][pCheckpoint] = CHECKPOINT_NONE;
  11035. DisablePlayerCheckpoint(playerid);
  11036. }
  11037. SetCheckpointsForPlayer(playerid)
  11038. {
  11039. if (Players[playerid][pWorking] || Players[playerid][pCheckpoint] != CHECKPOINT_NONE || Players[playerid][pDrivingTest])
  11040. TogglePlayerAllDynamicCPs(playerid, false);
  11041. else
  11042. TogglePlayerAllDynamicCPs(playerid, true);
  11043. }
  11044. VehicleStereoUpdate(playerid)
  11045. {
  11046. new
  11047. vehicleid = GetPlayerVehicleID(playerid),
  11048. string[255]
  11049. ;
  11050. if (Players[playerid][pStereoPlayerID] != INVALID_PLAYER_ID)
  11051. {
  11052. Players[playerid][pStereoPlayerID] = INVALID_PLAYER_ID;
  11053. StopAudioStreamForPlayer(playerid);
  11054. }
  11055. if (IsValidVehicle(vehicleid) && Players[playerid][pVehicleStream] != vehicleid)
  11056. {
  11057. strunpack(string, VehicleInformation[vehicleid][vStream]);
  11058. if (strcmp(string, "Not Specified") != 0)
  11059. {
  11060. PlayAudioStreamForPlayer(playerid, string);
  11061. Players[playerid][pVehicleStream] = vehicleid;
  11062. }
  11063. }
  11064. else if (Players[playerid][pVehicleStream] != INVALID_PLAYER_ID && !IsPlayerInVehicle(playerid, Players[playerid][pVehicleStream]))
  11065. {
  11066. Players[playerid][pVehicleStream] = INVALID_VEHICLE_ID;
  11067. StopAudioStreamForPlayer(playerid);
  11068. }
  11069. }
  11070. StereoUpdate(playerid)
  11071. {
  11072. new
  11073. targetid = GetNearbyStereoPlayerID(playerid),
  11074. string[255]
  11075. ;
  11076. if (Players[playerid][pVehicleStream] != INVALID_VEHICLE_ID)
  11077. {
  11078. Players[playerid][pVehicleStream] = INVALID_VEHICLE_ID;
  11079. StopAudioStreamForPlayer(playerid);
  11080. }
  11081. if (targetid != INVALID_PLAYER_ID && Players[playerid][pStereoPlayerID] != targetid)
  11082. {
  11083. strunpack(string, Stereos[targetid][pStereoURL]);
  11084. if (strcmp(string, "Not Specified") != 0)
  11085. {
  11086. PlayAudioStreamForPlayer(playerid, string, Stereos[targetid][pStereoX], Stereos[targetid][pStereoY], Stereos[targetid][pStereoZ], 50.0, true);
  11087. Players[playerid][pStereoPlayerID] = targetid;
  11088. }
  11089. }
  11090. else if (Players[playerid][pStereoPlayerID] != INVALID_PLAYER_ID && Players[playerid][pStereoPlayerID] != targetid)
  11091. {
  11092. Players[playerid][pStereoPlayerID] = INVALID_PLAYER_ID;
  11093. StopAudioStreamForPlayer(playerid);
  11094. }
  11095. }
  11096. ResetPayphone(playerid)
  11097. {
  11098. if (Players[playerid][pPayphone] != INVALID_ID)
  11099. {
  11100. Payphones[Players[playerid][pPayphone]][phOccupied] = 0;
  11101. UpdatePayphoneText(Players[playerid][pPayphone]);
  11102. }
  11103. Players[playerid][pPayphone] = INVALID_ID;
  11104. }
  11105. GetNearbyStereoPlayerID(playerid)
  11106. {
  11107. foreach (new i : Player)
  11108. {
  11109. if (Stereos[i][pStereoID] != INVALID_ID && IsPlayerNearPoint(playerid, 50.0, Stereos[i][pStereoX], Stereos[i][pStereoY], Stereos[i][pStereoZ], Stereos[i][pStereoInterior], Stereos[i][pStereoWorld]))
  11110. {
  11111. return i;
  11112. }
  11113. }
  11114. return INVALID_PLAYER_ID;
  11115. }
  11116. PickupStereo(playerid)
  11117. {
  11118. ApplyAnimation(playerid, "BOMBER", "BOM_Plant_In", 4.1, 0, 0, 0, 0, 0);
  11119. ShowActionBubble(playerid, "* %s picks up their stereo and turns it off.", ReturnNameEx(playerid));
  11120. ResetStereo(playerid);
  11121. SendInfoMessage(playerid, "You have picked up your stereo.");
  11122. }
  11123. ResetStereo(playerid)
  11124. {
  11125. if (Stereos[playerid][pStereoID] != INVALID_ID)
  11126. {
  11127. DestroyDynamic3DTextLabel(Stereos[playerid][pStereoText]);
  11128. DestroyDynamicObject(Stereos[playerid][pStereoObject]);
  11129. }
  11130. Stereos[playerid][pStereoID] = INVALID_ID;
  11131. Stereos[playerid][pStereoX] = 0.0;
  11132. Stereos[playerid][pStereoY] = 0.0;
  11133. Stereos[playerid][pStereoZ] = 0.0;
  11134. Stereos[playerid][pStereoInterior] = 0;
  11135. Stereos[playerid][pStereoWorld] = 0;
  11136. Stereos[playerid][pStereoObject] = INVALID_OBJECT_ID;
  11137. Stereos[playerid][pStereoText] = INVALID_3DTEXT_ID;
  11138. }
  11139. ResetPlayer(playerid)
  11140. {
  11141. Players[playerid][pSession] = 0;
  11142. Players[playerid][pSessionCaller] = -1;
  11143. if (Players[playerid][pWorkout] != WORKOUT_NONE)
  11144. {
  11145. StopWorkout(playerid);
  11146. }
  11147. if (Players[playerid][pHotwire] != INVALID_VEHICLE_ID)
  11148. {
  11149. Players[playerid][pHotwire] = INVALID_VEHICLE_ID;
  11150. Players[playerid][pHotwireTime] = 0;
  11151. }
  11152. if (Players[playerid][pSetPosition])
  11153. {
  11154. Players[playerid][pSetPosition] = 0;
  11155. }
  11156. if (Players[playerid][pFurnitureMenu])
  11157. {
  11158. HideFurniturePreviewer(playerid);
  11159. }
  11160. if (Players[playerid][pAccessoryMenu])
  11161. {
  11162. HideAccessoryPreviewer(playerid);
  11163. }
  11164. if (Players[playerid][pOutfitIndex] != INVALID_ID)
  11165. {
  11166. CancelOutfitSelection(playerid);
  11167. }
  11168. if (Players[playerid][pHouseEdit] != INVALID_ID)
  11169. {
  11170. SetFurnitureEditMode(Players[playerid][pHouseEdit], false);
  11171. Players[playerid][pHouseEdit] = INVALID_ID;
  11172. }
  11173. if (Players[playerid][pCarConfirm] != INVALID_ID)
  11174. {
  11175. Players[playerid][pCarConfirm] = INVALID_ID;
  11176. }
  11177. if (Players[playerid][pRefuel] != INVALID_ID)
  11178. {
  11179. StopRefuel(playerid);
  11180. }
  11181. if (Players[playerid][pHandcuffed])
  11182. {
  11183. SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE);
  11184. }
  11185. if (Players[playerid][pCalling] > 0)
  11186. {
  11187. HangupCall(playerid);
  11188. }
  11189. if (Players[playerid][pMaskID] > 0)
  11190. {
  11191. Players[playerid][pMaskID] = 0;
  11192. UpdateMaskForPlayer(playerid);
  11193. }
  11194. for(new i = 0; i < MAX_PLAYER_ATTACHED_OBJECTS; i++)
  11195. PoliceObjects[playerid][i] = INVALID_OBJECT_ID;
  11196. StopWorking(playerid);
  11197. StopPicking(playerid);
  11198. StopRepairing(playerid);
  11199. ResetWeapons(playerid);
  11200. ResetPayphone(playerid);
  11201. CancelEdit(playerid);
  11202. SetPlayerArmedWeapon(playerid, 0);
  11203. Players[playerid][pFlashOn] = 0;
  11204. Players[playerid][pSitting] = 0;
  11205. Players[playerid][pEdit] = EDIT_TYPE_NONE;
  11206. Players[playerid][pBleeding] = 0;
  11207. Players[playerid][pBleedingTime] = 0;
  11208. Players[playerid][pMedicKit] = 0;
  11209. Players[playerid][pPainkillers] = 0;
  11210. Players[playerid][pTazer] = 0;
  11211. Players[playerid][pTazed] = 0;
  11212. Players[playerid][pHandcuffed] = 0;
  11213. Players[playerid][pCuffedBy] = INVALID_PLAYER_ID;
  11214. Players[playerid][pAnimation] = 0;
  11215. Players[playerid][pSelectUniform] = 0;
  11216. Players[playerid][pDealershipMenu] = INVALID_ID;
  11217. Players[playerid][pStoned] = STONED_TYPE_NONE;
  11218. Players[playerid][pStonedTime] = 0;
  11219. Players[playerid][pCallTaxi] = 0;
  11220. Players[playerid][pSprayTag] = INVALID_ID;
  11221. Players[playerid][pBrokenLeg] = 0;
  11222. Players[playerid][pChatting] = 0;
  11223. Players[playerid][pAutoShop] = INVALID_ID;
  11224. Players[playerid][pMining] = 0;
  11225. }
  11226. SetAttachedObject(playerid, modelid, bone, Float:x = 0.0, Float:y = 0.0, Float:z = 0.0, Float:rx = 0.0, Float:ry = 0.0, Float:rz = 0.0, Float:sx = 1.0, Float:sy = 1.0, Float:sz = 1.0, materialcolor1 = 0, materialcolor2 = 0)
  11227. {
  11228. for (new i = 0; i < MAX_PLAYER_ATTACHED_OBJECTS; i ++)
  11229. {
  11230. if (!IsPlayerAttachedObjectSlotUsed(playerid, i))
  11231. {
  11232. SetPlayerAttachedObject(playerid, i, modelid, bone, x, y, z, rx, ry, rz, sx, sy, sz, materialcolor1, materialcolor2);
  11233. return i;
  11234. }
  11235. }
  11236. return INVALID_ID;
  11237. }
  11238. StopWorkout(playerid)
  11239. {
  11240. if (Players[playerid][pWorkout] != WORKOUT_NONE)
  11241. {
  11242. HidePlayerProgressBar(playerid, Players[playerid][pBars][0]);
  11243. HidePlayerTextDraws(playerid, 58, 62);
  11244. SetCameraBehindPlayer(playerid);
  11245. TogglePlayerControllable(playerid, 1);
  11246. KillTimer(Timers[playerid][tWorkout]);
  11247. switch (Players[playerid][pWorkout])
  11248. {
  11249. case WORKOUT_DUMBELLS:
  11250. {
  11251. Players[playerid][pWeight] = 0;
  11252. Players[playerid][pReps] = 0;
  11253. PlayerPlaySound(playerid, 17807, 0.0, 0.0, 0.0);
  11254. RemovePlayerAttachedObject(playerid, gWeights[playerid][0]);
  11255. RemovePlayerAttachedObject(playerid, gWeights[playerid][1]);
  11256. }
  11257. case WORKOUT_TREADMILL:
  11258. {
  11259. Players[playerid][pSpeedLevel] = 0;
  11260. Players[playerid][pDistanceRan] = 0;
  11261. PlayerPlaySound(playerid, 17808, 0.0, 0.0, 0.0);
  11262. }
  11263. }
  11264. Players[playerid][pWorkout] = WORKOUT_NONE;
  11265. }
  11266. return 1;
  11267. }
  11268. WorkoutUpdate(playerid)
  11269. {
  11270. if (Players[playerid][pWorkout] != WORKOUT_NONE)
  11271. {
  11272. new
  11273. Float:value = GetPlayerProgressBarValue(playerid, Players[playerid][pBars][0]);
  11274. switch (Players[playerid][pWorkout])
  11275. {
  11276. case WORKOUT_DUMBELLS:
  11277. {
  11278. switch (Players[playerid][pWeight])
  11279. {
  11280. case 20..60:
  11281. {
  11282. ApplyAnimation(playerid, "Freeweights", "gym_free_A", 4.1, 0, 0, 0, 0, 0, 1);
  11283. }
  11284. case 70..110:
  11285. {
  11286. ApplyAnimation(playerid, "Freeweights", "gym_free_B", 4.1, 0, 0, 0, 0, 0, 1);
  11287. }
  11288. }
  11289. if (value < 90.0)
  11290. {
  11291. AddPowerToMeter(playerid);
  11292. }
  11293. else
  11294. {
  11295. Players[playerid][pReps]++;
  11296. Statistics[playerid][sTotalReps]++;
  11297. if (Players[playerid][pFitness] < 100 && (Players[playerid][pReps] % ((120 - Players[playerid][pWeight]) / 5)) == 0)
  11298. {
  11299. AddFitnessForPlayer(playerid);
  11300. }
  11301. SetPlayerProgressBarValue(playerid, Players[playerid][pBars][0], 0.0);
  11302. PlayerTextDrawFormatString(playerid, Players[playerid][pText][60], "%i", Players[playerid][pReps]);
  11303. ApplyAnimation(playerid, "Freeweights", "gym_free_down", 4.1, 0, 0, 0, 0, 0, 1);
  11304. ApplyAnimation(playerid, "Freeweights", "gym_free_down", 4.1, 0, 0, 0, 0, 0, 1);
  11305. if (Players[playerid][pReps] == 50 && !Players[playerid][pGymMembership])
  11306. {
  11307. Players[playerid][pWorkoutTime] = gettime() + 43200;
  11308. StopWorkout(playerid);
  11309. ShowFooterText(playerid, "You have reached your limit for today!");
  11310. ApplyAnimation(playerid, "Freeweights", "gym_free_putdown", 4.1, 0, 0, 0, 0, 0, 1);
  11311. }
  11312. }
  11313. }
  11314. case WORKOUT_TREADMILL:
  11315. {
  11316. Players[playerid][pDistanceRan] = Players[playerid][pDistanceRan] + 1;
  11317. Statistics[playerid][sDistanceRan]++;
  11318. SetPlayerProgressBarValue(playerid, Players[playerid][pBars][0], value + (Players[playerid][pSpeedLevel] + 12));
  11319. PlayerTextDrawFormatString(playerid, Players[playerid][pText][62], "%i", Players[playerid][pDistanceRan]);
  11320. if (Players[playerid][pFitness] < 100 && (Players[playerid][pDistanceRan] % 100) == 0)
  11321. {
  11322. AddFitnessForPlayer(playerid);
  11323. }
  11324. if (Players[playerid][pDistanceRan] == 200 && !Players[playerid][pGymMembership])
  11325. {
  11326. Players[playerid][pWorkoutTime] = gettime() + 43200;
  11327. StopWorkout(playerid);
  11328. ShowFooterText(playerid, "You have reached your limit for today!");
  11329. ApplyAnimation(playerid, "GYMNASIUM", "gym_tread_getoff", 4.1, 0, 0, 0, 0, 0, 1);
  11330. }
  11331. }
  11332. }
  11333. }
  11334. return 1;
  11335. }
  11336. AddPowerToMeter(playerid)
  11337. {
  11338. new
  11339. Float:value = GetPlayerProgressBarValue(playerid, Players[playerid][pBars][0]);
  11340. switch (Players[playerid][pWeight])
  11341. {
  11342. case 20: SetPlayerProgressBarValue(playerid, Players[playerid][pBars][0], value + 22.0);
  11343. case 30: SetPlayerProgressBarValue(playerid, Players[playerid][pBars][0], value + 20.5);
  11344. case 40: SetPlayerProgressBarValue(playerid, Players[playerid][pBars][0], value + 19.0);
  11345. case 50: SetPlayerProgressBarValue(playerid, Players[playerid][pBars][0], value + 18.0);
  11346. case 60: SetPlayerProgressBarValue(playerid, Players[playerid][pBars][0], value + 16.0);
  11347. case 70: SetPlayerProgressBarValue(playerid, Players[playerid][pBars][0], value + 14.0);
  11348. case 80: SetPlayerProgressBarValue(playerid, Players[playerid][pBars][0], value + 12.0);
  11349. case 90: SetPlayerProgressBarValue(playerid, Players[playerid][pBars][0], value + 10.0);
  11350. case 100: SetPlayerProgressBarValue(playerid, Players[playerid][pBars][0], value + 8.0);
  11351. case 110: SetPlayerProgressBarValue(playerid, Players[playerid][pBars][0], value + 6.0);
  11352. }
  11353. }
  11354. SetReloadAnimation(playerid, weaponid)
  11355. {
  11356. switch (weaponid)
  11357. {
  11358. case 22:
  11359. {
  11360. if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_DUCK)
  11361. ApplyAnimation(playerid, "COLT45", "colt45_crouchreload", 4.1, 0, 0, 0, 0, 0, 1);
  11362. else
  11363. ApplyAnimation(playerid, "COLT45", "colt45_reload", 4.1, 0, 0, 0, 0, 0, 1);
  11364. }
  11365. case 23:
  11366. {
  11367. if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_DUCK)
  11368. ApplyAnimation(playerid, "SILENCED", "CrouchReload", 4.1, 0, 0, 0, 0, 0, 1);
  11369. else
  11370. ApplyAnimation(playerid, "SILENCED", "Silence_reload", 4.1, 0, 0, 0, 0, 0, 1);
  11371. }
  11372. case 24:
  11373. {
  11374. if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_DUCK)
  11375. ApplyAnimation(playerid, "PYTHON", "python_crouchreload", 4.1, 0, 0, 0, 0, 0, 1);
  11376. else
  11377. ApplyAnimation(playerid, "PYTHON", "python_reload", 4.1, 0, 0, 0, 0, 0, 1);
  11378. }
  11379. case 25:
  11380. {
  11381. if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_DUCK)
  11382. ApplyAnimation(playerid, "BUDDY", "buddy_crouchreload", 4.1, 0, 0, 0, 0, 0, 1);
  11383. else
  11384. ApplyAnimation(playerid, "BUDDY", "buddy_reload", 4.1, 0, 0, 0, 0, 0, 1);
  11385. }
  11386. case 26:
  11387. {
  11388. if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_DUCK)
  11389. ApplyAnimation(playerid, "COLT45", "colt45_crouchreload", 4.1, 0, 0, 0, 0, 0, 1);
  11390. else
  11391. ApplyAnimation(playerid, "COLT45", "sawnoff_reload", 4.1, 0, 0, 0, 0, 0, 1);
  11392. }
  11393. case 27:
  11394. {
  11395. if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_DUCK)
  11396. ApplyAnimation(playerid, "BUDDY", "buddy_crouchreload", 4.1, 0, 0, 0, 0, 0, 1);
  11397. else
  11398. ApplyAnimation(playerid, "BUDDY", "buddy_reload", 4.1, 0, 0, 0, 0, 0, 1);
  11399. }
  11400. case 28:
  11401. {
  11402. if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_DUCK)
  11403. ApplyAnimation(playerid, "UZI", "UZI_crouchreload", 4.1, 0, 0, 0, 0, 0, 1);
  11404. else
  11405. ApplyAnimation(playerid, "UZI", "UZI_reload", 4.1, 0, 0, 0, 0, 0, 1);
  11406. }
  11407. case 29, 30, 31, 33, 34:
  11408. {
  11409. if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_DUCK)
  11410. ApplyAnimation(playerid, "RIFLE", "RIFLE_crouchload", 4.1, 0, 0, 0, 0, 0, 1);
  11411. else
  11412. ApplyAnimation(playerid, "RIFLE", "RIFLE_load", 4.1, 0, 0, 0, 0, 0, 1);
  11413. }
  11414. case 32:
  11415. {
  11416. if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_DUCK)
  11417. ApplyAnimation(playerid, "TEC", "TEC_crouchreload", 4.1, 0, 0, 0, 0, 0, 1);
  11418. else
  11419. ApplyAnimation(playerid, "TEC", "TEC_reload", 4.1, 0, 0, 0, 0, 0, 1);
  11420. }
  11421. }
  11422. return 1;
  11423. }
  11424. SetCheckpointForPackage(playerid)
  11425. {
  11426. if (IsValidPlayerObject(playerid, Players[playerid][pPackage]))
  11427. {
  11428. DestroyPlayerObject(playerid, Players[playerid][pPackage]);
  11429. }
  11430. Players[playerid][pPackage] = INVALID_OBJECT_ID;
  11431. SendInfoMessage(playerid, "The package can be found at the checkpoint on your mini-map.");
  11432. ShowFooterText(playerid, "Go to the marker to pickup your ~r~package~w~.");
  11433. switch (random(3))
  11434. {
  11435. case 0:
  11436. {
  11437. SetCheckpoint(playerid, CHECKPOINT_PACKAGE, 1550.09, -27.9456, 20.5695, 1.5);
  11438. Players[playerid][pPackage] = CreatePlayerObject(playerid, 3014, 1550.09, -27.9456, 20.5695, 0.0, 0.0, 0.0);
  11439. }
  11440. case 1:
  11441. {
  11442. SetCheckpoint(playerid, CHECKPOINT_PACKAGE, 1357.66, 1042.88, 10.0403, 1.5);
  11443. Players[playerid][pPackage] = CreatePlayerObject(playerid, 3014, 1357.66, 1042.88, 10.0403, 0.0, 0.0, 0.0);
  11444. }
  11445. case 2:
  11446. {
  11447. SetCheckpoint(playerid, CHECKPOINT_PACKAGE, -124.091, 1077.85, 19.009, 1.5);
  11448. Players[playerid][pPackage] = CreatePlayerObject(playerid, 3014, -124.091, 1077.85, 19.009, 0.0, 0.0, 0.0);
  11449. }
  11450. }
  11451. }
  11452. IsItemWeapon(item[])
  11453. {
  11454. new modelid = GetItemInformation(item, ITEM_INFO_MODEL);
  11455. if(modelid)
  11456. {
  11457. for(new i = 0; i < sizeof(g_WeaponInfo); i ++)
  11458. {
  11459. if(g_WeaponInfo[i][e_WeaponModel] == modelid)
  11460. {
  11461. return true;
  11462. }
  11463. }
  11464. }
  11465. return false;
  11466. }
  11467. GetWeaponItemName(weaponid)
  11468. {
  11469. new string[32];
  11470. for (new i = 0; i < sizeof(g_ItemList); i ++)
  11471. {
  11472. if (g_ItemList[i][e_ItemModel] == g_WeaponInfo[weaponid][e_WeaponModel])
  11473. {
  11474. strcpy(string, g_ItemList[i][e_ItemName]);
  11475. }
  11476. }
  11477. return string;
  11478. }
  11479. UpdateWeaponOffset(playerid, slot)
  11480. {
  11481. new index = 0;
  11482. if (slot == WEAPON_MELEE) {
  11483. index = ATTACHED_SLOT_MELEE;
  11484. } else if (slot == WEAPON_PRIMARY) {
  11485. index = ATTACHED_SLOT_PRIMARY;
  11486. } else if (slot == WEAPON_SECONDARY) {
  11487. index = ATTACHED_SLOT_SECONDARY;
  11488. } else if (slot == WEAPON_TERTIARY) {
  11489. index = ATTACHED_SLOT_TERTIARY;
  11490. }
  11491. RemovePlayerAttachedObject(playerid, index);
  11492. UpdateWeaponHolster(playerid);
  11493. }
  11494. UpdateWeaponHolster(playerid)
  11495. {
  11496. new
  11497. weaponid = GetPlayerWeapon(playerid),
  11498. type;
  11499. if (IsPlayerAttachedObjectSlotUsed(playerid, ATTACHED_SLOT_MELEE) && weaponid == Weapons[playerid][wMelee])
  11500. {
  11501. RemovePlayerAttachedObject(playerid, ATTACHED_SLOT_MELEE);
  11502. }
  11503. else if (weaponid != Weapons[playerid][wMelee] && !IsPlayerAttachedObjectSlotUsed(playerid, ATTACHED_SLOT_MELEE) && IsHolsterWeapon(Weapons[playerid][wMelee]))
  11504. {
  11505. type = GetWeaponOffsetType(Weapons[playerid][wMelee]);
  11506. if (!WeaponOffsets[playerid][type][wBoneID]) {
  11507. SetDefaultWeaponOffset(playerid, Weapons[playerid][wMelee]);
  11508. }
  11509. if (!WeaponOffsets[playerid][type][wHidden]) {
  11510. SetPlayerAttachedObject(playerid, ATTACHED_SLOT_MELEE, g_WeaponInfo[Weapons[playerid][wMelee]][e_WeaponModel], WeaponOffsets[playerid][type][wBoneID], WeaponOffsets[playerid][type][wOffsetX], WeaponOffsets[playerid][type][wOffsetY], WeaponOffsets[playerid][type][wOffsetZ], WeaponOffsets[playerid][type][wOffsetRX], WeaponOffsets[playerid][type][wOffsetRY], WeaponOffsets[playerid][type][wOffsetRZ]);
  11511. }
  11512. }
  11513. if (IsPlayerAttachedObjectSlotUsed(playerid, ATTACHED_SLOT_PRIMARY) && weaponid == Weapons[playerid][wPrimary])
  11514. {
  11515. RemovePlayerAttachedObject(playerid, ATTACHED_SLOT_PRIMARY);
  11516. }
  11517. else if (weaponid != Weapons[playerid][wPrimary] && !IsPlayerAttachedObjectSlotUsed(playerid, ATTACHED_SLOT_PRIMARY) && IsHolsterWeapon(Weapons[playerid][wPrimary]))
  11518. {
  11519. type = GetWeaponOffsetType(Weapons[playerid][wPrimary]);
  11520. if (!WeaponOffsets[playerid][type][wBoneID]) {
  11521. SetDefaultWeaponOffset(playerid, Weapons[playerid][wPrimary]);
  11522. }
  11523. if (!WeaponOffsets[playerid][type][wHidden]) {
  11524. SetPlayerAttachedObject(playerid, ATTACHED_SLOT_PRIMARY, g_WeaponInfo[Weapons[playerid][wPrimary]][e_WeaponModel], WeaponOffsets[playerid][type][wBoneID], WeaponOffsets[playerid][type][wOffsetX], WeaponOffsets[playerid][type][wOffsetY], WeaponOffsets[playerid][type][wOffsetZ], WeaponOffsets[playerid][type][wOffsetRX], WeaponOffsets[playerid][type][wOffsetRY], WeaponOffsets[playerid][type][wOffsetRZ]);
  11525. }
  11526. }
  11527. if (IsPlayerAttachedObjectSlotUsed(playerid, ATTACHED_SLOT_SECONDARY) && weaponid == Weapons[playerid][wSecondary])
  11528. {
  11529. RemovePlayerAttachedObject(playerid, ATTACHED_SLOT_SECONDARY);
  11530. }
  11531. else if (weaponid != Weapons[playerid][wSecondary] && !IsPlayerAttachedObjectSlotUsed(playerid, ATTACHED_SLOT_SECONDARY) && IsHolsterWeapon(Weapons[playerid][wSecondary]))
  11532. {
  11533. type = GetWeaponOffsetType(Weapons[playerid][wSecondary]);
  11534. if (!WeaponOffsets[playerid][type][wBoneID]) {
  11535. SetDefaultWeaponOffset(playerid, Weapons[playerid][wSecondary]);
  11536. }
  11537. if (!WeaponOffsets[playerid][type][wHidden]) {
  11538. SetPlayerAttachedObject(playerid, ATTACHED_SLOT_SECONDARY, g_WeaponInfo[Weapons[playerid][wSecondary]][e_WeaponModel], WeaponOffsets[playerid][type][wBoneID], WeaponOffsets[playerid][type][wOffsetX], WeaponOffsets[playerid][type][wOffsetY], WeaponOffsets[playerid][type][wOffsetZ], WeaponOffsets[playerid][type][wOffsetRX], WeaponOffsets[playerid][type][wOffsetRY], WeaponOffsets[playerid][type][wOffsetRZ]);
  11539. }
  11540. }
  11541. if (IsPlayerAttachedObjectSlotUsed(playerid, ATTACHED_SLOT_TERTIARY) && weaponid == Weapons[playerid][wTertiary])
  11542. {
  11543. RemovePlayerAttachedObject(playerid, ATTACHED_SLOT_TERTIARY);
  11544. }
  11545. else if (weaponid != Weapons[playerid][wTertiary] && !IsPlayerAttachedObjectSlotUsed(playerid, ATTACHED_SLOT_TERTIARY) && IsHolsterWeapon(Weapons[playerid][wTertiary]))
  11546. {
  11547. type = GetWeaponOffsetType(Weapons[playerid][wTertiary]);
  11548. if (!WeaponOffsets[playerid][type][wBoneID]) {
  11549. SetDefaultWeaponOffset(playerid, Weapons[playerid][wTertiary]);
  11550. }
  11551. if (!WeaponOffsets[playerid][type][wHidden]) {
  11552. SetPlayerAttachedObject(playerid, ATTACHED_SLOT_TERTIARY, g_WeaponInfo[Weapons[playerid][wTertiary]][e_WeaponModel], WeaponOffsets[playerid][type][wBoneID], WeaponOffsets[playerid][type][wOffsetX], WeaponOffsets[playerid][type][wOffsetY], WeaponOffsets[playerid][type][wOffsetZ], WeaponOffsets[playerid][type][wOffsetRX], WeaponOffsets[playerid][type][wOffsetRY], WeaponOffsets[playerid][type][wOffsetRZ]);
  11553. }
  11554. }
  11555. return 1;
  11556. }
  11557. OnPlayerPurchaseItem(playerid, item[], company, product)
  11558. {
  11559. new price = Products[company][product][prPrice];
  11560. if (!IsValidCompanyID(company))
  11561. {
  11562. return 0;
  11563. }
  11564. else if (Products[company][product][prStock] == 0)
  11565. {
  11566. return SendErrorMessage(playerid, "This item is out of stock.");
  11567. }
  11568. else if (!PlayerCanAfford(playerid, Products[company][product][prPrice]))
  11569. {
  11570. return SendErrorMessage(playerid, "You cannot afford this item.");
  11571. }
  11572. else
  11573. {
  11574. if (!strcmp(item, "SIM Card"))
  11575. {
  11576. new
  11577. number = (100000 + random(899999));
  11578. for (new i = 0; i < MAX_INVENTORY_ITEMS; i ++)
  11579. {
  11580. if (Inventory[playerid][i][invExists] && !strcmp(Inventory[playerid][i][invName], "Mobile Phone") && !Inventory[playerid][i][invValue])
  11581. {
  11582. SetItemValue(playerid, i, number);
  11583. SendInfoMessage(playerid, "Your new number is %i. You can find your phone in your inventory.", number);
  11584. PurchaseProduct(playerid, company, product);
  11585. new log[128];
  11586. format(log, sizeof(log), "%s purchased a SIM Card, number %i.", ReturnName(playerid), number);
  11587. CreateLog("purchase", log);
  11588. return 1;
  11589. }
  11590. }
  11591. SendErrorMessage(playerid, "You must purchase a mobile phone first.");
  11592. }
  11593. else if (!strcmp(item, "Mobile Phone"))
  11594. {
  11595. if (!IsSufficientSpace(playerid, "Mobile Phone"))
  11596. {
  11597. SendErrorMessage(playerid, "There is no more room in your inventory.");
  11598. }
  11599. else
  11600. {
  11601. AddItemToInventory(playerid, "Mobile Phone");
  11602. SendInfoMessage(playerid, "You have purchased a mobile phone for {33CC33}%s{FFFFFF}. Buy a SIM card to activate it.", FormatNumber(price));
  11603. PurchaseProduct(playerid, company, product);
  11604. new log[128];
  11605. format(log, sizeof(log), "%s purchased a phone.", ReturnName(playerid));
  11606. CreateLog("purchase", log);
  11607. }
  11608. }
  11609. else if (!strcmp(item, "Membership"))
  11610. {
  11611. if (Players[playerid][pGymMembership])
  11612. {
  11613. SendErrorMessage(playerid, "You already have one!");
  11614. }
  11615. else
  11616. {
  11617. Players[playerid][pGymMembership] = 1;
  11618. Players[playerid][pWorkoutTime] = 0;
  11619. SendInfoMessage(playerid, "You have purchased a membership! You now have unlimited access to the equipment.");
  11620. PurchaseProduct(playerid, company, product);
  11621. new log[128];
  11622. format(log, sizeof(log), "%s purchased a Gym Membership.", ReturnName(playerid));
  11623. CreateLog("purchase", log);
  11624. }
  11625. }
  11626. else if (!strcmp(item, "Protein Shake"))
  11627. {
  11628. if (GetPlayerHealthEx(playerid) >= 100.0)
  11629. {
  11630. SendErrorMessage(playerid, "You don't need this right now.");
  11631. }
  11632. else
  11633. {
  11634. GivePlayerHealth(playerid, 20.0);
  11635. ApplyAnimation(playerid, "BAR", "dnk_stndM_loop", 4.1, 0, 0, 0, 0, 0);
  11636. SendInfoMessage(playerid, "You have purchased a protein shake for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  11637. PurchaseProduct(playerid, company, product);
  11638. new log[128];
  11639. format(log, sizeof(log), "%s purchased a Protein Shake.", ReturnName(playerid));
  11640. CreateLog("purchase", log);
  11641. }
  11642. }
  11643. else if (!strcmp(item, "Outfit"))
  11644. {
  11645. if (IsPlayerSelectingOutfit(playerid))
  11646. {
  11647. SendErrorMessage(playerid, "You are already selecting an outfit.");
  11648. }
  11649. else
  11650. {
  11651. Players[playerid][pBuyOutfit] = company;
  11652. TogglePlayerControllable(playerid, 0);
  11653. SavePositionAndHealth(playerid);
  11654. FadeScreenForPlayer(playerid, FADE_BUY_OUTFIT);
  11655. }
  11656. }
  11657. else if (!strcmp(item, "Glasses"))
  11658. {
  11659. ShowAccessoryPreviewer(playerid, ACCESSORY_GLASSES);
  11660. Players[playerid][pSelected] = product;
  11661. }
  11662. else if (!strcmp(item, "Bandanas"))
  11663. {
  11664. ShowAccessoryPreviewer(playerid, ACCESSORY_BANDANAS);
  11665. Players[playerid][pSelected] = product;
  11666. }
  11667. else if (!strcmp(item, "Hats"))
  11668. {
  11669. ShowAccessoryPreviewer(playerid, ACCESSORY_HATS);
  11670. Players[playerid][pSelected] = product;
  11671. }
  11672. else if (!strcmp(item, "Bags"))
  11673. {
  11674. ShowAccessoryPreviewer(playerid, ACCESSORY_BAGS);
  11675. Players[playerid][pSelected] = product;
  11676. }
  11677. else if (!strcmp(item, "Toolbox"))
  11678. {
  11679. if (!IsSufficientSpace(playerid, "Toolbox"))
  11680. {
  11681. SendErrorMessage(playerid, "There is no more room in your inventory.");
  11682. }
  11683. else
  11684. {
  11685. AddItemToInventory(playerid, "Toolbox");
  11686. SendInfoMessage(playerid, "You have purchased a toolbox for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  11687. PurchaseProduct(playerid, company, product);
  11688. new log[128];
  11689. format(log, sizeof(log), "%s purchased a toolbox.", ReturnName(playerid));
  11690. CreateLog("purchase", log);
  11691. }
  11692. }
  11693. else if (!strcmp(item, "Stereo"))
  11694. {
  11695. if (!IsSufficientSpace(playerid, "Stereo"))
  11696. {
  11697. SendErrorMessage(playerid, "There is no more room in your inventory.");
  11698. }
  11699. else if (Players[playerid][pHoursOnline] < 4)
  11700. {
  11701. SendErrorMessage(playerid, "You need at least 4 playing hours to buy this item.");
  11702. }
  11703. else
  11704. {
  11705. AddItemToInventory(playerid, "Stereo");
  11706. SendInfoMessage(playerid, "You have purchased a stereo for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  11707. PurchaseProduct(playerid, company, product);
  11708. new log[128];
  11709. format(log, sizeof(log), "%s purchased a stereo.", ReturnName(playerid));
  11710. CreateLog("purchase", log);
  11711. }
  11712. }
  11713. else if (!strcmp(item, "Bandages"))
  11714. {
  11715. if (!IsSufficientSpace(playerid, "Bandages"))
  11716. {
  11717. SendErrorMessage(playerid, "There is no more room in your inventory.");
  11718. }
  11719. else
  11720. {
  11721. AddItemToInventory(playerid, "Bandages", 5);
  11722. SendInfoMessage(playerid, "You have purchased a pack of 5 bandage rolls for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  11723. PurchaseProduct(playerid, company, product);
  11724. new log[128];
  11725. format(log, sizeof(log), "%s purchased bandages.", ReturnName(playerid));
  11726. CreateLog("purchase", log);
  11727. }
  11728. }
  11729. else if (!strcmp(item, "Medical Kit"))
  11730. {
  11731. if (!IsSufficientSpace(playerid, "Medical Kit"))
  11732. {
  11733. SendErrorMessage(playerid, "There is no more room in your inventory.");
  11734. }
  11735. else
  11736. {
  11737. AddItemToInventory(playerid, "Medical Kit");
  11738. SendInfoMessage(playerid, "You have purchased a medical kit for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  11739. PurchaseProduct(playerid, company, product);
  11740. new log[128];
  11741. format(log, sizeof(log), "%s purchased a medical kit.", ReturnName(playerid));
  11742. CreateLog("purchase", log);
  11743. }
  11744. }
  11745. else if (!strcmp(item, "Water"))
  11746. {
  11747. if (Companies[company][cType] == COMPANY_GYM)
  11748. {
  11749. if (GetPlayerHealthEx(playerid) >= 100.0)
  11750. {
  11751. SendErrorMessage(playerid, "You don't need this right now.");
  11752. }
  11753. else
  11754. {
  11755. GivePlayerHealth(playerid, 15.0);
  11756. ApplyAnimation(playerid, "BAR", "dnk_stndM_loop", 4.1, 0, 0, 0, 0, 0);
  11757. SendInfoMessage(playerid, "You have purchased some water for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  11758. PurchaseProduct(playerid, company, product);
  11759. new log[128];
  11760. format(log, sizeof(log), "%s purchased water.", ReturnName(playerid));
  11761. CreateLog("purchase", log);
  11762. }
  11763. }
  11764. }
  11765. else if (!strcmp(item, "Notebook"))
  11766. {
  11767. if (!IsSufficientSpace(playerid, "Notebook"))
  11768. {
  11769. SendErrorMessage(playerid, "There is no more room in your inventory.");
  11770. }
  11771. else
  11772. {
  11773. AddItemToInventory(playerid, "Notebook");
  11774. SendInfoMessage(playerid, "You have purchased a notebook for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  11775. PurchaseProduct(playerid, company, product);
  11776. new log[128];
  11777. format(log, sizeof(log), "%s purchased a notebook.", ReturnName(playerid));
  11778. CreateLog("purchase", log);
  11779. }
  11780. }
  11781. else if (!strcmp(item, "Gasoline"))
  11782. {
  11783. if (!IsSufficientSpace(playerid, "Gasoline"))
  11784. {
  11785. SendErrorMessage(playerid, "There is no more room in your inventory.");
  11786. }
  11787. else
  11788. {
  11789. AddItemToInventory(playerid, "Gasoline", 10);
  11790. SendInfoMessage(playerid, "You have purchased a can of gasoline for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  11791. PurchaseProduct(playerid, company, product);
  11792. new log[128];
  11793. format(log, sizeof(log), "%s purchased a can of gasoline.", ReturnName(playerid));
  11794. CreateLog("purchase", log);
  11795. }
  11796. }
  11797. else if (!strcmp(item, "Cigarettes"))
  11798. {
  11799. if (!IsSufficientSpace(playerid, "Cigarettes"))
  11800. {
  11801. SendErrorMessage(playerid, "There is no more room in your inventory.");
  11802. }
  11803. else
  11804. {
  11805. AddItemToInventory(playerid, "Cigarettes", 20);
  11806. SendInfoMessage(playerid, "You have purchased a pack of 20 cigarettes for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  11807. PurchaseProduct(playerid, company, product);
  11808. new log[128];
  11809. format(log, sizeof(log), "%s purchased a pack of cigarettes.", ReturnName(playerid));
  11810. CreateLog("purchase", log);
  11811. }
  11812. }
  11813. else if (!strcmp(item, "Screwdriver"))
  11814. {
  11815. if (!IsSufficientSpace(playerid, "Screwdriver"))
  11816. {
  11817. SendErrorMessage(playerid, "There is no more room in your inventory.");
  11818. }
  11819. else
  11820. {
  11821. AddItemToInventory(playerid, "Screwdriver");
  11822. SendInfoMessage(playerid, "You have purchased a screwdriver for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  11823. PurchaseProduct(playerid, company, product);
  11824. new log[128];
  11825. format(log, sizeof(log), "%s purchased a screwdriver.", ReturnName(playerid));
  11826. CreateLog("purchase", log);
  11827. }
  11828. }
  11829. else if (!strcmp(item, "Mask"))
  11830. {
  11831. if (!IsSufficientSpace(playerid, "Mask"))
  11832. {
  11833. SendErrorMessage(playerid, "There is no more room in your inventory.");
  11834. }
  11835. else if (Players[playerid][pHoursOnline] < 10)
  11836. {
  11837. SendErrorMessage(playerid, "There is a 10 hour playing requirement for this item.");
  11838. }
  11839. else
  11840. {
  11841. AddItemToInventory(playerid, "Mask", Random(10000, 99999));
  11842. SendInfoMessage(playerid, "You have purchased a mask for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  11843. PurchaseProduct(playerid, company, product);
  11844. new log[128];
  11845. format(log, sizeof(log), "%s purchased a mask.", ReturnName(playerid));
  11846. CreateLog("purchase", log);
  11847. }
  11848. }
  11849. else if (!strcmp(item, "Cigarette"))
  11850. {
  11851. if (Companies[company][cType] == COMPANY_BAR)
  11852. {
  11853. SetPlayerSpecialAction(playerid, SPECIAL_ACTION_SMOKE_CIGGY);
  11854. SendInfoMessage(playerid, "You have purchased a cigarette for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  11855. PurchaseProduct(playerid, company, product);
  11856. new log[128];
  11857. format(log, sizeof(log), "%s purchased a cigarette.", ReturnName(playerid));
  11858. CreateLog("purchase", log);
  11859. }
  11860. }
  11861. else if (!strcmp(item, "Sprunk"))
  11862. {
  11863. if (Companies[company][cType] == COMPANY_BAR)
  11864. {
  11865. SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_SPRUNK);
  11866. SendInfoMessage(playerid, "You have purchased a can of sprunk for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  11867. PurchaseProduct(playerid, company, product);
  11868. new log[128];
  11869. format(log, sizeof(log), "%s purchased a sprunk.", ReturnName(playerid));
  11870. CreateLog("purchase", log);
  11871. }
  11872. }
  11873. else if (!strcmp(item, "Beer"))
  11874. {
  11875. if (Companies[company][cType] == COMPANY_BAR)
  11876. {
  11877. SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_BEER);
  11878. SendInfoMessage(playerid, "You have purchased a bottle of beer for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  11879. PurchaseProduct(playerid, company, product);
  11880. }
  11881. else if (!IsSufficientSpace(playerid, "Beer"))
  11882. {
  11883. SendErrorMessage(playerid, "There is no more room in your inventory.");
  11884. }
  11885. else
  11886. {
  11887. AddItemToInventory(playerid, "Beer");
  11888. SendInfoMessage(playerid, "You have purchased a bottle of beer for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  11889. PurchaseProduct(playerid, company, product);
  11890. new log[128];
  11891. format(log, sizeof(log), "%s purchased a bottle of beer.", ReturnName(playerid));
  11892. CreateLog("purchase", log);
  11893. }
  11894. }
  11895. else if (!strcmp(item, "Wine"))
  11896. {
  11897. if (Companies[company][cType] == COMPANY_BAR)
  11898. {
  11899. SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_WINE);
  11900. SendInfoMessage(playerid, "You have purchased a bottle of wine for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  11901. PurchaseProduct(playerid, company, product);
  11902. }
  11903. else if (!IsSufficientSpace(playerid, "Wine"))
  11904. {
  11905. SendErrorMessage(playerid, "There is no more room in your inventory.");
  11906. }
  11907. else
  11908. {
  11909. AddItemToInventory(playerid, "Wine");
  11910. SendInfoMessage(playerid, "You have purchased a bottle of wine for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  11911. PurchaseProduct(playerid, company, product);
  11912. new log[128];
  11913. format(log, sizeof(log), "%s purchased a bottle of wine.", ReturnName(playerid));
  11914. CreateLog("purchase", log);
  11915. }
  11916. }
  11917. else if (!strcmp(item, "Spraycan"))
  11918. {
  11919. if (!IsSufficientSpace(playerid, "Spraycan"))
  11920. {
  11921. SendErrorMessage(playerid, "There is no more room in your inventory.");
  11922. }
  11923. else
  11924. {
  11925. AddItemToInventory(playerid, "Spraycan", 5);
  11926. SendInfoMessage(playerid, "You have purchased a 5 liter spraycan for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  11927. PurchaseProduct(playerid, company, product);
  11928. new log[128];
  11929. format(log, sizeof(log), "%s purchased a 5 liter spraycan.", ReturnName(playerid));
  11930. CreateLog("purchase", log);
  11931. }
  11932. }
  11933. else if (!strcmp(item, "Baseball Bat"))
  11934. {
  11935. if (!IsSufficientSpace(playerid, "Baseball Bat"))
  11936. {
  11937. SendErrorMessage(playerid, "There is no more room in your inventory.");
  11938. }
  11939. else
  11940. {
  11941. AddItemToInventory(playerid, "Baseball Bat");
  11942. SendInfoMessage(playerid, "You have purchased a baseball bat for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  11943. PurchaseProduct(playerid, company, product);
  11944. new log[128];
  11945. format(log, sizeof(log), "%s purchased a baseball bat.", ReturnName(playerid));
  11946. CreateLog("purchase", log);
  11947. }
  11948. }
  11949. else if (!strcmp(item, "Walkie Talkie"))
  11950. {
  11951. if (!IsSufficientSpace(playerid, "Walkie Talkie"))
  11952. {
  11953. SendErrorMessage(playerid, "There is no more room in your inventory.");
  11954. }
  11955. else
  11956. {
  11957. AddItemToInventory(playerid, "Walkie Talkie");
  11958. SendInfoMessage(playerid, "You have purchased a walkie talkie for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  11959. PurchaseProduct(playerid, company, product);
  11960. new log[128];
  11961. format(log, sizeof(log), "%s purchased a walkie talkie.", ReturnName(playerid));
  11962. CreateLog("purchase", log);
  11963. }
  11964. }
  11965. else if (!strcmp(item, "Portable Radio"))
  11966. {
  11967. if (!IsSufficientSpace(playerid, "Portable Radio"))
  11968. {
  11969. SendErrorMessage(playerid, "There is no more room in your inventory.");
  11970. }
  11971. else
  11972. {
  11973. AddItemToInventory(playerid, "Portable Radio");
  11974. SendInfoMessage(playerid, "You have purchased a portable radio for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  11975. PurchaseProduct(playerid, company, product);
  11976. new log[128];
  11977. format(log, sizeof(log), "%s purchased a portable radio.", ReturnName(playerid));
  11978. CreateLog("purchase", log);
  11979. }
  11980. }
  11981. else if (!strcmp(item, "Camera"))
  11982. {
  11983. if (!IsSufficientSpace(playerid, "Camera"))
  11984. {
  11985. SendErrorMessage(playerid, "There is no more room in your inventory.");
  11986. }
  11987. else
  11988. {
  11989. AddItemToInventory(playerid, "Camera");
  11990. SendInfoMessage(playerid, "You have purchased a camera for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  11991. PurchaseProduct(playerid, company, product);
  11992. new log[128];
  11993. format(log, sizeof(log), "%s purchased a camera.", ReturnName(playerid));
  11994. CreateLog("purchase", log);
  11995. }
  11996. }
  11997. /*else if (!strcmp(item, "Kevlar Vest"))
  11998. {
  11999. if (!IsSufficientSpace(playerid, "Kevlar Vest"))
  12000. {
  12001. SendErrorMessage(playerid, "There is no more room in your inventory.");
  12002. }
  12003. else
  12004. {
  12005. AddItemToInventory(playerid, "Kevlar Vest", 50);
  12006. SendInfoMessage(playerid, "You have purchased a kevlar vest for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  12007. PurchaseProduct(playerid, company, product);
  12008. }
  12009. }*/
  12010. else if (!strcmp(item, "Armor"))
  12011. {
  12012. if (!Players[playerid][pGunLicense])
  12013. {
  12014. SendErrorMessage(playerid, "You haven't been issued a gun license.");
  12015. }
  12016. else if (!IsSufficientSpace(playerid, "Armor"))
  12017. {
  12018. SendErrorMessage(playerid, "There is no more room in your inventory.");
  12019. }
  12020. else
  12021. {
  12022. AddItemToInventory(playerid, "Armor", 50);
  12023. SendInfoMessage(playerid, "You have purchased armor for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  12024. PurchaseProduct(playerid, company, product);
  12025. new log[128];
  12026. format(log, sizeof(log), "%s purchased armor.", ReturnName(playerid));
  12027. CreateLog("purchase", log);
  12028. }
  12029. }
  12030. else if (!strcmp(item, "Pepper Spray"))
  12031. {
  12032. if (!Players[playerid][pGunLicense])
  12033. {
  12034. SendErrorMessage(playerid, "You haven't been issued a gun license.");
  12035. }
  12036. else if (!IsSufficientSpace(playerid, "Pepper Spray"))
  12037. {
  12038. SendErrorMessage(playerid, "There is no more room in your inventory.");
  12039. }
  12040. else
  12041. {
  12042. AddItemToInventory(playerid, "Pepper Spray", 2000);
  12043. SendInfoMessage(playerid, "You have purchased a can of pepper spray for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  12044. PurchaseProduct(playerid, company, product);
  12045. new log[128];
  12046. format(log, sizeof(log), "%s purchased a pepper spray.", ReturnName(playerid));
  12047. CreateLog("purchase", log);
  12048. }
  12049. }
  12050. else if (!strcmp(item, "Desert Eagle"))
  12051. {
  12052. new serial = Random(10000, 99999);
  12053. if (!Players[playerid][pGunLicense])
  12054. {
  12055. SendErrorMessage(playerid, "You haven't been issued a gun license.");
  12056. }
  12057. else if (!IsSufficientSpace(playerid, "Desert Eagle"))
  12058. {
  12059. SendErrorMessage(playerid, "There is no more room in your inventory.");
  12060. }
  12061. else
  12062. {
  12063. AddItemToInventory(playerid, "Desert Eagle", 0, serial);
  12064. PurchaseProduct(playerid, company, product);
  12065. SendInfoMessage(playerid, "You have purchased a Desert Eagle for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  12066. AddSerialToRegistry(serial, "Desert Eagle", ReturnName(playerid), Companies[company][cName]);
  12067. new log[128];
  12068. format(log, sizeof(log), "%s purchased a desert eagle, serial: %i.", ReturnName(playerid), serial);
  12069. CreateLog("purchase", log);
  12070. }
  12071. }
  12072. else if (!strcmp(item, "Shotgun"))
  12073. {
  12074. new serial = Random(10000, 99999);
  12075. if(!Players[playerid][pGunLicense])
  12076. {
  12077. SendErrorMessage(playerid,"You haven't been issued a gun license.");
  12078. }
  12079. else if (!IsSufficientSpace(playerid, "Shotgun"))
  12080. {
  12081. SendErrorMessage(playerid, "There is no more room in your inventory.");
  12082. }
  12083. else
  12084. {
  12085. AddItemToInventory(playerid, "Shotgun", 0, serial);
  12086. PurchaseProduct(playerid, company, product);
  12087. SendInfoMessage(playerid, "You have purchased a Shotgun for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  12088. AddSerialToRegistry(serial, "Shotgun", ReturnName(playerid), Companies[company][cName]);
  12089. new log[128];
  12090. format(log, sizeof(log), "%s purchased a shotgun, serial: %i.", ReturnName(playerid), serial);
  12091. CreateLog("purchase", log);
  12092. }
  12093. }
  12094. else if (!strcmp(item, "Rifle"))
  12095. {
  12096. new serial = Random(10000, 99999);
  12097. if (!Players[playerid][pGunLicense])
  12098. {
  12099. SendErrorMessage(playerid, "You haven't been issued a gun license.");
  12100. }
  12101. else if (!IsSufficientSpace(playerid, "Rifle"))
  12102. {
  12103. SendErrorMessage(playerid, "There is no more room in your inventory.");
  12104. }
  12105. else
  12106. {
  12107. AddItemToInventory(playerid, "Rifle", 0, serial);
  12108. PurchaseProduct(playerid, company, product);
  12109. SendInfoMessage(playerid, "You have purchased a Rifle for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  12110. AddSerialToRegistry(serial, "Rifle", ReturnName(playerid), Companies[company][cName]);
  12111. new log[128];
  12112. format(log, sizeof(log), "%s purchased a rifle, serial: %i.", ReturnName(playerid), serial);
  12113. CreateLog("purchase", log);
  12114. }
  12115. }
  12116. else if (!strcmp(item, "9x19mm Ammo"))
  12117. {
  12118. if (!Players[playerid][pGunLicense])
  12119. {
  12120. SendErrorMessage(playerid, "You haven't been issued a gun license.");
  12121. }
  12122. else if (!IsSufficientSpace(playerid, "9x19mm"))
  12123. {
  12124. SendErrorMessage(playerid, "There is no more room in your inventory.");
  12125. }
  12126. else
  12127. {
  12128. AddItemToInventory(playerid, "9x19mm", 50);
  12129. SendInfoMessage(playerid, "You have purchased a 50 pack of 9x19mm ammunition for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  12130. PurchaseProduct(playerid, company, product);
  12131. new log[128];
  12132. format(log, sizeof(log), "%s purchased 9x19mm.", ReturnName(playerid));
  12133. CreateLog("purchase", log);
  12134. }
  12135. }
  12136. else if (!strcmp(item, ".50cal Ammo"))
  12137. {
  12138. if (!Players[playerid][pGunLicense])
  12139. {
  12140. SendErrorMessage(playerid, "You haven't been issued a gun license.");
  12141. }
  12142. else if (!IsSufficientSpace(playerid, ".50cal"))
  12143. {
  12144. SendErrorMessage(playerid, "There is no more room in your inventory.");
  12145. }
  12146. else
  12147. {
  12148. AddItemToInventory(playerid, ".50cal", 50);
  12149. SendInfoMessage(playerid, "You have purchased a 50 pack of ammunation from ammunition for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  12150. PurchaseProduct(playerid, company, product);
  12151. new log[128];
  12152. format(log, sizeof(log), "%s purchased .50cal.", ReturnName(playerid));
  12153. CreateLog("purchase", log);
  12154. }
  12155. }
  12156. else if (!strcmp(item, "12 Gauge Ammo"))
  12157. {
  12158. if (!Players[playerid][pGunLicense])
  12159. {
  12160. SendErrorMessage(playerid, "You haven't been issued a gun license.");
  12161. }
  12162. else if (!IsSufficientSpace(playerid, "12 Gauge"))
  12163. {
  12164. SendErrorMessage(playerid, "There is no more room in your inventory.");
  12165. }
  12166. else
  12167. {
  12168. AddItemToInventory(playerid, "12 Gauge", 20);
  12169. SendInfoMessage(playerid, "You have purchased a 20 pack of 12 Gauge ammunition for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  12170. PurchaseProduct(playerid, company, product);
  12171. new log[128];
  12172. format(log, sizeof(log), "%s purchased 12 Gauge.", ReturnName(playerid));
  12173. CreateLog("purchase", log);
  12174. }
  12175. }
  12176. else if (!strcmp(item, "5.56x45mm Ammo"))
  12177. {
  12178. if (!Players[playerid][pGunLicense])
  12179. {
  12180. SendErrorMessage(playerid, "You haven't been issued a gun license.");
  12181. }
  12182. else if (!IsSufficientSpace(playerid, "5.56x45mm"))
  12183. {
  12184. SendErrorMessage(playerid, "There is no more room in your inventory.");
  12185. }
  12186. else
  12187. {
  12188. AddItemToInventory(playerid, "5.56x45mm", 75);
  12189. SendInfoMessage(playerid, "You have purchased a 75 pack of 5.56x45mm ammunition for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  12190. PurchaseProduct(playerid, company, product);
  12191. new log[128];
  12192. format(log, sizeof(log), "%s purchased 5.56x45mm.", ReturnName(playerid));
  12193. CreateLog("purchase", log);
  12194. }
  12195. }
  12196. else if (!strcmp(item, "7.62x39mm Ammo"))
  12197. {
  12198. if (!Players[playerid][pGunLicense])
  12199. {
  12200. SendErrorMessage(playerid, "You haven't been issued a gun license.");
  12201. }
  12202. else if (!IsSufficientSpace(playerid, "7.62x39mm"))
  12203. {
  12204. SendErrorMessage(playerid, "There is no more room in your inventory.");
  12205. }
  12206. else
  12207. {
  12208. AddItemToInventory(playerid, "7.62x39mm", 50);
  12209. SendInfoMessage(playerid, "You have purchased a 50 pack of 7.62x39mm ammunition for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  12210. PurchaseProduct(playerid, company, product);
  12211. new log[128];
  12212. format(log, sizeof(log), "%s purchased 7.62x39mm.", ReturnName(playerid));
  12213. CreateLog("purchase", log);
  12214. }
  12215. }
  12216. else if (!strcmp(item, "7.62x51mm Ammo"))
  12217. {
  12218. if (!Players[playerid][pGunLicense])
  12219. {
  12220. SendErrorMessage(playerid, "You haven't been issued a gun license.");
  12221. }
  12222. else if (!IsSufficientSpace(playerid, "7.62x51mm"))
  12223. {
  12224. SendErrorMessage(playerid, "There is no more room in your inventory.");
  12225. }
  12226. else
  12227. {
  12228. AddItemToInventory(playerid, "7.62x51mm", 25);
  12229. SendInfoMessage(playerid, "You have purchased a 25 pack of 7.62x51mm ammunition for {33CC33}%s{FFFFFF}.", FormatNumber(price));
  12230. PurchaseProduct(playerid, company, product);
  12231. new log[128];
  12232. format(log, sizeof(log), "%s purchased 7x62x51mm.", ReturnName(playerid));
  12233. CreateLog("purchase", log);
  12234. }
  12235. }
  12236. }
  12237. return 1;
  12238. }
  12239. ShowStatsForPlayer(playerid, targetid) // "targetid" is the player to show the dialog to.
  12240. {
  12241. /*static
  12242. statString[1024];
  12243. if (!IsPlayerLoggedIn(playerid) || !IsPlayerLoggedIn(targetid))
  12244. {
  12245. return 0;
  12246. }
  12247. switch (page)
  12248. {
  12249. case 1:
  12250. {
  12251. format(statString, sizeof(statString), "{6688FF}Username:{FFFFFF} %s\n{6688FF}Register date:{FFFFFF} %s", ReturnNameEx(playerid, 0), Players[playerid][pRegistered]);
  12252. format(statString, sizeof(statString), "%s\n{6688FF}Gender:{FFFFFF} %s\n{6688FF}Age:{FFFFFF} %i years old\n{6688FF}Origin:{FFFFFF} %s\n{6688FF}Playing hours:{FFFFFF} %i hours", statString, GetGenderForPlayer(playerid), Players[playerid][pAge], Players[playerid][pOrigin], Players[playerid][pHoursOnline]);
  12253. format(statString, sizeof(statString), "%s\n{6688FF}Pocket money:{FFFFFF} %s\n{6688FF}Paycheck:{FFFFFF} %s (%i minutes)", statString, FormatNumber(Players[playerid][pPocketMoney]), FormatNumber(Players[playerid][pPaycheck]), (60 - Players[playerid][pMinutes]));
  12254. format(statString, sizeof(statString), "%s\n{6688FF}Payment type:{FFFFFF} %s\n{6688FF}Total weight:{FFFFFF} %i/%i\n{6688FF}Fitness:{FFFFFF} %s", statString, GetPaymentType(playerid), GetInventoryTotalWeight(playerid), GetInventoryMaxWeight(playerid), GetFitnessLevel(playerid));
  12255. format(statString, sizeof(statString), "%s\n{6688FF}Car license:{FFFFFF} %s\n{6688FF}Gun license:{FFFFFF} %s\n{6688FF}Distance traveled:{FFFFFF} %.2f km", statString, (Players[playerid][pCarLicense]) ? ("Yes") : ("No"), (Players[playerid][pGunLicense]) ? ("Yes") : ("No"), Players[playerid][pTraveled]);
  12256. Dialog_Show(targetid, Stats, DIALOG_STYLE_MSGBOX, "{FFFFFF}Statistics", statString, "Next", "Close");
  12257. }
  12258. case 2:
  12259. {
  12260. format(statString, sizeof(statString), "{6688FF}Vehicles hotwired:{FFFFFF} %i\n{6688FF}Vehicles rented:{FFFFFF} %i\n{6688FF}Total hospital fees:{FFFFFF} %s\n{6688FF}Items used:{FFFFFF} %i\n{6688FF}Items dropped:{FFFFFF} %i\n{6688FF}Items picked up:{FFFFFF} %i", Statistics[playerid][sHotwired], Statistics[playerid][sRentals], FormatNumber(Statistics[playerid][sHospitalFees]), Statistics[playerid][sItemsUsed], Statistics[playerid][sItemsDropped], Statistics[playerid][sItemsPicked]);
  12261. format(statString, sizeof(statString), "%s\n{6688FF}Distance ran:{FFFFFF} %i\n{6688FF}Total weights lifted:{FFFFFF} %i\n{6688FF}Houses purchased:{FFFFFF} %i\n{6688FF}Companies purchased:{FFFFFF} %i", statString, Statistics[playerid][sDistanceRan], Statistics[playerid][sTotalReps], Statistics[playerid][sHouses], Statistics[playerid][sCompanies]);
  12262. format(statString, sizeof(statString), "%s\n{6688FF}Vehicles purchased:{FFFFFF} %i\n{6688FF}Furniture purchased:{FFFFFF} %s\n{6688FF}Warrants issued:{FFFFFF} %i", statString, Statistics[playerid][sVehicles], FormatNumber(Statistics[playerid][sFurnitureFees]), Statistics[playerid][sTotalWarrants]);
  12263. Dialog_Show(targetid, Stats, DIALOG_STYLE_MSGBOX, "{FFFFFF}Statistics", statString, "Back", "Close");
  12264. }
  12265. }
  12266. Players[targetid][pViewStats] = playerid;
  12267. Players[targetid][pStatsPage] = page;*/
  12268. SendClientMessage(targetid, COLOR_DARKGREEN, "____________________________________________________________________________");
  12269. //SendClientMessage(targetid, COLOR_GREY, "-------------------------------------------------------------------------------------------------------------------------------------");
  12270. SendFormatMessage(targetid, COLOR_LIGHTGREY, "** Stats for %s **", ReturnNameEx(playerid, 0));
  12271. SendFormatMessage(targetid, COLOR_WHITE, "Hours: %i hours | Capacity: %i/%i", Players[playerid][pHoursOnline], GetInventoryTotalWeight(playerid), GetInventoryMaxWeight(playerid));
  12272. SendFormatMessage(targetid, COLOR_LIGHTGREY, "Money: %s | Paycheck: %s | Savings: %s | Payment: %s | Fitness: %s | Job: %s", FormatNumber(Players[playerid][pPocketMoney]), FormatNumber(Players[playerid][pPaycheck]), FormatNumber(Players[playerid][pSavingsMoney]), GetPaymentType(playerid), GetFitnessLevel(playerid), GetJobName(Players[playerid][pJob]));
  12273. SendFormatMessage(targetid, COLOR_WHITE, "Melee: %s | Primary: %s | Ammo: %i | Secondary: %s | Ammo: %i", GetWeapon(Weapons[playerid][wMelee]), GetWeapon(Weapons[playerid][wPrimary]), Weapons[playerid][wPrimaryAmmo], GetWeapon(Weapons[playerid][wSecondary]), Weapons[playerid][wSecondaryAmmo]);
  12274. SendFormatMessage(targetid, COLOR_LIGHTGREY, "Phone: %i | Channel: %i | Faction: %s | Rank: %s", Players[playerid][pPhone], Players[playerid][pChannel], GetPlayerFactionName(playerid), GetPlayerFactionRank(playerid));
  12275. SendFormatMessage(targetid, COLOR_WHITE, "Name Changes: %i | Jail Time: %i seconds | Health: %.1f | Armor: %.1f", Players[playerid][pNameChanges], Players[playerid][pJailTime], GetPlayerHealthEx(playerid), GetPlayerArmourEx(playerid));
  12276. SendFormatMessage(targetid, COLOR_LIGHTGREY, "Car License: %s | Gun License: %s | Traveled: %.2f km | Registered: %s | Donator: %s", (Players[playerid][pCarLicense]) ? ("Yes") : ("No"), (Players[playerid][pGunLicense]) ? ("Yes") : ("No"), Players[playerid][pTraveled], Players[playerid][pRegistered], GetDonatorLevel(Players[playerid][pDonator]));
  12277. //SendClientMessage(targetid, COLOR_GREY, "-------------------------------------------------------------------------------------------------------------------------------------");
  12278. SendClientMessage(targetid, COLOR_DARKGREEN, "____________________________________________________________________________");
  12279. /*SendClientMessage(targetid, COLOR_DARKGREEN, "____________________________________________________________________________");
  12280. //SendClientMessage(targetid, COLOR_GREY, "-------------------------------------------------------------------------------------------------------------------------------------");
  12281. SendFormatMessage(targetid, COLOR_LIGHTGREY, "** Stats for %s **", ReturnNameEx(playerid, 0));
  12282. SendFormatMessage(targetid, COLOR_WHITE, "Gender: %s | Age: %i | Origin: %s | Fitness: %s");
  12283. SendFormatMessage(targetid, COLOR_WHITE, "Faction: %s | Rank: %s | Job: %s | Phone: %i | Channel: %i");
  12284. SendFormatMessage(targetid, COLOR_WHITE, "Melee: %s | Primary: %s | Ammo: %i | Secondary: %s | Ammo: %i");
  12285. SendFormatMessage(targetid, COLOR_WHITE, "Level: %i | Experience: %i/%i | Donator Level: %s");
  12286. SendFormatMessage(targetid, COLOR_WHITE, "Health: %.0f | Armor: %.0f | Hours Played: %i");
  12287. SendFormatMessage(targetid, COLOR_WHITE, "Cash: %s | Paycheck: %s | Savings: %s | Payment: %s");
  12288. SendFormatMessage(targetid, COLOR_WHITE, "");
  12289. SendFormatMessage(targetid, COLOR_WHITE, "");
  12290. SendFormatMessage(targetid, COLOR_WHITE, "");
  12291. //SendClientMessage(targetid, COLOR_GREY, "-------------------------------------------------------------------------------------------------------------------------------------");
  12292. SendClientMessage(targetid, COLOR_DARKGREEN, "____________________________________________________________________________");*/
  12293. return 1;
  12294. }
  12295. ShowRentalEditMenu(playerid, company)
  12296. {
  12297. if (Companies[company][cType] != COMPANY_RENTALS)
  12298. {
  12299. return 0;
  12300. }
  12301. else
  12302. {
  12303. new
  12304. index = 0;
  12305. gListString = "Model\tPrice";
  12306. for (new i = 0; i < MAX_CARS; i ++)
  12307. {
  12308. if (IsValidVehicleID(i) && Vehicles[i][vCompany] == Companies[company][cID])
  12309. {
  12310. format(gListString, sizeof(gListString), "%s\n%s\t%s", gListString, GetVehicleModelName(Vehicles[i][vModel]), FormatNumber(Vehicles[i][vPrice]));
  12311. gListedItems[playerid][index++] = i;
  12312. }
  12313. }
  12314. Players[playerid][pCompany] = company;
  12315. Dialog_Show(playerid, RentalEdit, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Change prices", gListString, "Change", "Back");
  12316. }
  12317. return 1;
  12318. }
  12319. ShowRestaurantEditMenu(playerid, company)
  12320. {
  12321. static
  12322. string[(MAX_RESTAURANT_ITEMS * 32)];
  12323. if (Companies[company][cType] != COMPANY_RESTAURANT)
  12324. {
  12325. return 0;
  12326. }
  12327. else
  12328. {
  12329. new
  12330. index = 0;
  12331. string = "Add to Menu";
  12332. for (new i = 0; i < MAX_RESTAURANT_ITEMS; i ++)
  12333. {
  12334. if (RestaurantItems[company][i][rtExists])
  12335. {
  12336. format(string, sizeof(string), "%s\nStock: %i\tItem: %s (%s)", string, RestaurantItems[company][i][rtStock], RestaurantItems[company][i][rtName], FormatNumber(RestaurantItems[company][i][rtPrice]));
  12337. gListedItems[playerid][index++] = i;
  12338. }
  12339. }
  12340. Dialog_Show(playerid, RestaurantEdit, DIALOG_STYLE_LIST, "{FFFFFF}Select item to edit", string, "Edit", "Back");
  12341. }
  12342. return 1;
  12343. }
  12344. ShowDealershipEditMenu(playerid, company)
  12345. {
  12346. static
  12347. string[3072];
  12348. if (Companies[company][cType] != COMPANY_DEALERSHIP)
  12349. {
  12350. return 0;
  12351. }
  12352. else
  12353. {
  12354. new
  12355. index = 0;
  12356. string = "Add Vehicle";
  12357. for (new i = 0; i < MAX_DEALERSHIP_CARS; i ++)
  12358. {
  12359. if (DealershipCars[i][dcExists] && DealershipCars[i][dcCompany] == Companies[company][cID])
  12360. {
  12361. format(string, sizeof(string), "%s\n%s (price: %s)", string, GetVehicleModelName(DealershipCars[i][dcModel]), FormatNumber(DealershipCars[i][dcPrice]));
  12362. gListedItems[playerid][index++] = i;
  12363. }
  12364. }
  12365. Players[playerid][pCompany] = company;
  12366. Dialog_Show(playerid, DealerList, DIALOG_STYLE_LIST, "{FFFFFF}Dealership cars", string, "Select", "Back");
  12367. }
  12368. return 1;
  12369. }
  12370. ShowProductEditMenu(playerid, company)
  12371. {
  12372. new
  12373. string[(MAX_PRODUCTS * 64)],
  12374. index = 0
  12375. ;
  12376. switch (Companies[company][cType])
  12377. {
  12378. case COMPANY_RESTAURANT:
  12379. {
  12380. ShowRestaurantEditMenu(playerid, company);
  12381. }
  12382. case COMPANY_RENTALS:
  12383. {
  12384. ShowRentalEditMenu(playerid, company);
  12385. }
  12386. default:
  12387. {
  12388. for (new i = 0; i < sizeof(g_CompanyItems); i ++)
  12389. {
  12390. if (Companies[company][cType] == g_CompanyItems[i][e_CompanyType])
  12391. {
  12392. if (g_CompanyItems[i][e_IsStockable])
  12393. {
  12394. format(string, sizeof(string), "%s\nStock: %i\tItem: %s (%s)", string, Products[company][index][prStock], g_CompanyItems[i][e_ItemName], FormatNumber(Products[company][index][prPrice]));
  12395. }
  12396. else
  12397. {
  12398. format(string, sizeof(string), "%s\nItem: %s (%s)", string, g_CompanyItems[i][e_ItemName], FormatNumber(Products[company][index][prPrice]));
  12399. }
  12400. gListedItems[playerid][index++] = i;
  12401. }
  12402. }
  12403. if (strlen(string))
  12404. {
  12405. return Dialog_Show(playerid, EditProducts, DIALOG_STYLE_LIST, "{FFFFFF}Select product to edit", string, "Edit", "Back");
  12406. }
  12407. return 0;
  12408. }
  12409. }
  12410. return 1;
  12411. }
  12412. ShowRestaurantMenu(playerid, company)
  12413. {
  12414. new
  12415. string[(MAX_RESTAURANT_ITEMS * 64)],
  12416. index = 0;
  12417. for (new i = 0; i < MAX_RESTAURANT_ITEMS; i ++)
  12418. {
  12419. if (RestaurantItems[company][i][rtExists])
  12420. {
  12421. if (RestaurantItems[company][i][rtStock] > 0)
  12422. {
  12423. format(string, sizeof(string), "%s\nIn Stock\tItem: %s (%s)", string, RestaurantItems[company][i][rtName], FormatNumber(RestaurantItems[company][i][rtPrice]));
  12424. }
  12425. else
  12426. {
  12427. format(string, sizeof(string), "%s\nOut of Stock\tItem: %s (%s)", string, RestaurantItems[company][i][rtName], FormatNumber(RestaurantItems[company][i][rtPrice]));
  12428. }
  12429. gListedItems[playerid][index++] = i;
  12430. }
  12431. }
  12432. if (strlen(string))
  12433. {
  12434. Dialog_Show(playerid, BuyFood, DIALOG_STYLE_LIST, "{FFFFFF}Restaurant menu", string, "Purchase", "Back");
  12435. }
  12436. else
  12437. {
  12438. SendErrorMessage(playerid, "The owner of this restaurant has not added any food items.");
  12439. }
  12440. return 1;
  12441. }
  12442. ShowProductsForSale(playerid, company)
  12443. {
  12444. new
  12445. string[(MAX_PRODUCTS * 64)],
  12446. index = 0;
  12447. if (Companies[company][cType] == COMPANY_DEALERSHIP)
  12448. {
  12449. SendInfoMessage(playerid, "Use the arrows to browse between vehicles. Press ESC to cancel.");
  12450. return ShowDealershipPreviewMenu(playerid, company);
  12451. }
  12452. for (new i = 0; i < sizeof(g_CompanyItems); i ++)
  12453. {
  12454. if (Companies[company][cType] == g_CompanyItems[i][e_CompanyType])
  12455. {
  12456. if (g_CompanyItems[i][e_IsStockable])
  12457. {
  12458. if (Products[company][index][prStock] > 0)
  12459. {
  12460. format(string, sizeof(string), "%s\nIn Stock\tItem: %s (%s)", string, g_CompanyItems[i][e_ItemName], FormatNumber(Products[company][index][prPrice]));
  12461. }
  12462. else
  12463. {
  12464. format(string, sizeof(string), "%s\nOut of Stock\tItem: %s (%s)", string, g_CompanyItems[i][e_ItemName], FormatNumber(Products[company][index][prPrice]));
  12465. }
  12466. }
  12467. else
  12468. {
  12469. format(string, sizeof(string), "%s\nIn Stock\tItem: %s (%s)", string, g_CompanyItems[i][e_ItemName], FormatNumber(Products[company][index][prPrice]));
  12470. }
  12471. gListedItems[playerid][index++] = i;
  12472. }
  12473. }
  12474. if (strlen(string))
  12475. {
  12476. return Dialog_Show(playerid, BuyItem, DIALOG_STYLE_LIST, "{FFFFFF}Select product to buy", string, "Purchase", "Back");
  12477. }
  12478. return 0;
  12479. }
  12480. ShowHouseEditMenu(playerid, house)
  12481. {
  12482. new
  12483. string[32];
  12484. if (IsValidHouseID(house))
  12485. {
  12486. Players[playerid][pSelected] = house;
  12487. format(string, sizeof(string), "{FFFFFF}Edit house: %i", house);
  12488. Dialog_Show(playerid, EditHouse, DIALOG_STYLE_LIST, string, "House Location\nHouse Interior\nHouse Owner\t\t%s\nHouse Price\t\t%s\nHouse Address\t\t%s", "Edit", "Cancel", GetHouseOwner(house), FormatNumber(Houses[house][hValue]), Houses[house][hAddress]);
  12489. }
  12490. return 1;
  12491. }
  12492. ShowPaycheckEditMenu(playerid, faction)
  12493. {
  12494. if (IsValidFactionID(faction))
  12495. {
  12496. gListString[0] = 0;
  12497. for (new i = 1; i <= Factions[faction][fcMaxRanks]; i ++)
  12498. {
  12499. format(gListString, sizeof(gListString), "%s\n%i) %s (%s)", gListString, i, GetFactionRank(faction, i), FormatNumber(GetFactionRankPay(faction, i)));
  12500. }
  12501. Players[playerid][pSelected] = faction;
  12502. Dialog_Show(playerid, EditPaychecks, DIALOG_STYLE_LIST, "{FFFFFF}Faction Paychecks", gListString, "Change", "Cancel");
  12503. }
  12504. return 1;
  12505. }
  12506. ShowRankEditMenu(playerid, faction)
  12507. {
  12508. if (IsValidFactionID(faction))
  12509. {
  12510. gListString[0] = 0;
  12511. for (new i = 1; i <= Factions[faction][fcMaxRanks]; i ++)
  12512. {
  12513. format(gListString, sizeof(gListString), "%s\n%i) %s", gListString, i, GetFactionRank(faction, i));
  12514. }
  12515. Players[playerid][pSelected] = faction;
  12516. Dialog_Show(playerid, EditRanks, DIALOG_STYLE_LIST, "{FFFFFF}Faction Ranks", gListString, "Change", "Cancel");
  12517. }
  12518. return 1;
  12519. }
  12520. ShowEquipmentEditMenu(playerid, faction)
  12521. {
  12522. if(IsValidFactionID(faction))
  12523. {
  12524. gListString[0] = 0;
  12525. for(new i = 0; i < MAX_FACTION_EQUIPMENT; i ++)
  12526. {
  12527. if(!FactionEquipment[faction][i][fcItemExists])
  12528. format(gListString, sizeof(gListString), "%s\n%i) Empty Slot", gListString, i + 1);
  12529. else if(FactionEquipment[faction][i][fcItemValue] > 0)
  12530. format(gListString, sizeof(gListString), "%s\n%i) %s (%i)", gListString, i + 1, FactionEquipment[faction][i][fcItemName], FactionEquipment[faction][i][fcItemValue]);
  12531. else
  12532. format(gListString, sizeof(gListString), "%s\n%i) %s", gListString, i + 1, FactionEquipment[faction][i][fcItemName]);
  12533. }
  12534. Dialog_Show(playerid, EditEquipment, DIALOG_STYLE_LIST, "{FFFFFF}Faction Equipment", gListString, "Edit", "Cancel");
  12535. }
  12536. return 1;
  12537. }
  12538. ShowAccessoryEditMenu(playerid, faction)
  12539. {
  12540. if(IsValidFactionID(faction))
  12541. {
  12542. gListString[0] = 0;
  12543. for(new i = 0; i < MAX_FACTION_ACCESSORIES; i ++)
  12544. {
  12545. if(!FactionAccessories[faction][i][fcAccessoryExists])
  12546. format(gListString, sizeof(gListString), "%s\n%i) Empty Slot", gListString, i + 1);
  12547. else
  12548. format(gListString, sizeof(gListString), "%s\n%i) %s", gListString, i + 1, FactionAccessories[faction][i][fcAccessoryName]);
  12549. }
  12550. Dialog_Show(playerid, EditAccessories, DIALOG_STYLE_LIST, "{FFFFFF}Faction Accessories", gListString, "Edit", "Cancel");
  12551. }
  12552. return 1;
  12553. }
  12554. ShowUniformEditMenu(playerid, faction)
  12555. {
  12556. if (IsValidFactionID(faction))
  12557. {
  12558. gListString[0] = 0;
  12559. for (new i = 0; i < MAX_FACTION_UNIFORMS; i ++)
  12560. {
  12561. if (!Factions[faction][fcUniforms][i])
  12562. {
  12563. format(gListString, sizeof(gListString), "%s\n%i) Empty Slot", gListString, i + 1);
  12564. }
  12565. else
  12566. {
  12567. format(gListString, sizeof(gListString), "%s\n%i) Skin: %i", gListString, i + 1, Factions[faction][fcUniforms][i]);
  12568. }
  12569. }
  12570. Dialog_Show(playerid, EditUniforms, DIALOG_STYLE_LIST, "{FFFFFF}Faction Uniforms", gListString, "Edit", "Cancel");
  12571. }
  12572. return 1;
  12573. }
  12574. ShowFactionEditMenu(playerid, faction)
  12575. {
  12576. if (IsValidFactionID(faction))
  12577. {
  12578. Players[playerid][pSelected] = faction;
  12579. Dialog_Show(playerid, EditFaction, DIALOG_STYLE_LIST, "{FFFFFF}Edit Faction", "Faction Name\t\t%s\nFaction Type\t\t%s\nFaction Color\t\t%s{FFFFFF}\nFaction Ranks\t\t%i\nFaction Rights\nRank Names\nRank Paychecks\nFaction Spawn\nLocker Spawn\nLocker Uniforms\nLocker Equipment\nLocker Accessories", "Change", "Cancel", Factions[faction][fcName], GetFactionType(Factions[faction][fcType]), GetFactionEmbedColor(faction), Factions[faction][fcMaxRanks]);
  12580. }
  12581. return 1;
  12582. }
  12583. ShowBuildingEditMenu(playerid, building)
  12584. {
  12585. new
  12586. string[32];
  12587. if (IsValidBuildingID(building))
  12588. {
  12589. Players[playerid][pSelected] = building;
  12590. format(string, sizeof(string), "{FFFFFF}Edit building: %i", building);
  12591. Dialog_Show(playerid, EditBuilding, DIALOG_STYLE_LIST, string, "Building Location\nBuilding Interior\nBuilding Status\t\t%s\nBuilding Name\t\t%s\nBuilding World\t\t%i\nBuilding Icon\t\t%i", "Edit", "Cancel", (Buildings[building][bLocked]) ? ("Locked") : ("Unlocked"), Buildings[building][bName], Buildings[building][bWorld], Buildings[building][bIconType]);
  12592. }
  12593. return 1;
  12594. }
  12595. ShowCompanyEditMenu(playerid, company)
  12596. {
  12597. new
  12598. string[32];
  12599. if (IsValidCompanyID(company))
  12600. {
  12601. Players[playerid][pSelected] = company;
  12602. format(string, sizeof(string), "{FFFFFF}Edit company: %i", company);
  12603. if (Companies[company][cType] == COMPANY_DEALERSHIP)
  12604. {
  12605. Dialog_Show(playerid, EditCompany, DIALOG_STYLE_LIST, string, "Company Location\nCompany Interior\nVehicle Spawn\nCompany Owner\t%s\nCompany Price\t\t%s\nCompany Name\t\t%s\nCompany Type\t\t%s\nCompany Stock\t\t%i", "Edit", "Cancel", GetCompanyOwner(company), FormatNumber(Companies[company][cValue]), Companies[company][cName], GetCompanyType(Companies[company][cType]), Companies[company][cStock]);
  12606. }
  12607. else
  12608. {
  12609. Dialog_Show(playerid, EditCompany, DIALOG_STYLE_LIST, string, "Company Location\nCompany Interior\nDelivery Point\nCompany Owner\t%s\nCompany Price\t\t%s\nCompany Name\t\t%s\nCompany Type\t\t%s\nCompany Stock\t\t%i", "Edit", "Cancel", GetCompanyOwner(company), FormatNumber(Companies[company][cValue]), Companies[company][cName], GetCompanyType(Companies[company][cType]), Companies[company][cStock]);
  12610. }
  12611. }
  12612. return 1;
  12613. }
  12614. UpdateLightsForPlayer(playerid)
  12615. {
  12616. new id = GetCurrentHouse(playerid);
  12617. if (id != INVALID_ID)
  12618. {
  12619. if (Houses[id][hLights])
  12620. TextDrawHideForPlayer(playerid, gGlobalTextdraws[0]);
  12621. else
  12622. TextDrawShowForPlayer(playerid, gGlobalTextdraws[0]);
  12623. Players[playerid][pLights] = Houses[id][hLights];
  12624. }
  12625. else
  12626. {
  12627. TextDrawHideForPlayer(playerid, gGlobalTextdraws[0]);
  12628. Players[playerid][pLights] = 0;
  12629. }
  12630. return 1;
  12631. }
  12632. EnterCaller(playerid)
  12633. {
  12634. new id;
  12635. if (Players[playerid][pSetPosition] || Players[playerid][pTazed] || Players[playerid][pJailType] > 0)
  12636. {
  12637. return 0;
  12638. }
  12639. if ((id = GetClosestHouse(playerid)) != INVALID_ID)
  12640. {
  12641. if (Houses[id][hLocked])
  12642. {
  12643. SendErrorMessage(playerid, "The doors are locked.");
  12644. }
  12645. else if (Houses[id][hInt][0] == 0.0 && Houses[id][hInt][1] == 0.0 && Houses[id][hInt][2] == 0.0)
  12646. {
  12647. SendErrorMessage(playerid, "This house doesn't have an interior set.");
  12648. }
  12649. else if (IsPlayerNearBackdoor(playerid, id) && !IsBackdoorExitSetup(id))
  12650. {
  12651. return SendErrorMessage(playerid, "The backdoor exit is not setup yet.");
  12652. }
  12653. else
  12654. {
  12655. TogglePlayerControllable(playerid,0);
  12656. GameTextForPlayer(playerid, "~r~Loading objects...", 2000, 4);
  12657. SetTimerEx("UnFreezePlayer", 2000, false, "i", playerid); // was 8000 before
  12658. if (IsPlayerNearBackdoor(playerid, id)) {
  12659. SetPlayerFadePos(playerid, Houses[id][hBackdoorInt][0], Houses[id][hBackdoorInt][1], Houses[id][hBackdoorInt][2], Houses[id][hInt][3], Houses[id][hInterior], Houses[id][hWorld]);
  12660. } else {
  12661. SetPlayerFadePos(playerid, Houses[id][hInt][0], Houses[id][hInt][1], Houses[id][hInt][2], Houses[id][hInt][3], Houses[id][hInterior], Houses[id][hWorld]);
  12662. }
  12663. ShowActionBubble(playerid, "* %s opens the door and enters the house.", ReturnNameEx(playerid));
  12664. return 1;
  12665. }
  12666. }
  12667. else if ((id = GetClosestCompany(playerid)) != INVALID_ID)
  12668. {
  12669. if (Companies[id][cLocked])
  12670. {
  12671. SendErrorMessage(playerid, "The doors are locked.");
  12672. }
  12673. else if (Companies[id][cInt][0] == 0.0 && Companies[id][cInt][1] == 0.0 && Companies[id][cInt][2] == 0.0)
  12674. {
  12675. SendErrorMessage(playerid, "This company doesn't have an interior set.");
  12676. }
  12677. else if (!PlayerCanAfford(playerid, Companies[id][cFee]))
  12678. {
  12679. return SendErrorMessage(playerid, "You can't afford the entrance fee.");
  12680. }
  12681. else
  12682. {
  12683. TogglePlayerControllable(playerid,0);
  12684. GameTextForPlayer(playerid, "~r~Loading objects...", 2000, 4);
  12685. SetTimerEx("UnFreezePlayer", 2000, false, "i", playerid);
  12686. SetPlayerFadePos(playerid, Companies[id][cInt][0], Companies[id][cInt][1], Companies[id][cInt][2], Companies[id][cInt][3], Companies[id][cInterior], Companies[id][cWorld]);
  12687. ShowActionBubble(playerid, "* %s opens the door and enters the company.", ReturnNameEx(playerid));
  12688. GiveCompanyMoney(id, Companies[id][cFee]);
  12689. RemoveMoney(playerid, Companies[id][cFee]);
  12690. if(!isnull(Companies[id][cStream])) {
  12691. PlayAudioStreamForPlayer(playerid, Companies[id][cStream]);
  12692. }
  12693. return 1;
  12694. }
  12695. }
  12696. else if ((id = GetClosestBuilding(playerid)) != INVALID_ID)
  12697. {
  12698. if (Buildings[id][bLocked])
  12699. {
  12700. SendErrorMessage(playerid, "The doors are locked.");
  12701. }
  12702. else if (Buildings[id][bInt][0] == 0.0 && Buildings[id][bInt][1] == 0.0 && Buildings[id][bInt][2] == 0.0)
  12703. {
  12704. SendErrorMessage(playerid, "This building doesn't have an interior set.");
  12705. }
  12706. else
  12707. {
  12708. TogglePlayerControllable(playerid,0);
  12709. GameTextForPlayer(playerid, "~r~Loading objects...", 2000, 4);
  12710. SetTimerEx("UnFreezePlayer", 2000, false, "i", playerid);
  12711. SetPlayerFadePos(playerid, Buildings[id][bInt][0], Buildings[id][bInt][1], Buildings[id][bInt][2], Buildings[id][bInt][3], Buildings[id][bInterior], Buildings[id][bWorld]);
  12712. ShowActionBubble(playerid, "* %s opens the door and enters the building.", ReturnNameEx(playerid));
  12713. return 1;
  12714. }
  12715. }
  12716. for (new i = 0; i < sizeof(g_StaticBuildings); i ++)
  12717. {
  12718. if (IsPlayerInRangeOfPoint(playerid, 2.0, g_StaticBuildings[i][e_SpawnX], g_StaticBuildings[i][e_SpawnY], g_StaticBuildings[i][e_SpawnZ]))
  12719. {
  12720. TogglePlayerControllable(playerid,0);
  12721. GameTextForPlayer(playerid, "~r~Loading objects...", 2000, 4);
  12722. SetTimerEx("UnFreezePlayer", 2000, false, "i", playerid);
  12723. SetPlayerFadePos(playerid, g_StaticBuildings[i][e_InsideX], g_StaticBuildings[i][e_InsideY], g_StaticBuildings[i][e_InsideZ], g_StaticBuildings[i][e_InsideA], g_StaticBuildings[i][e_Interior], g_StaticBuildings[i][e_VirtualWorld], g_StaticBuildings[i][e_Freeze]);
  12724. ShowActionBubble(playerid, "* %s opens the door and enters the building.", ReturnNameEx(playerid));
  12725. return 1;
  12726. }
  12727. }
  12728. for (new i = 0; i < sizeof(g_HospitalLocations); i ++)
  12729. {
  12730. if (IsPlayerInRangeOfPoint(playerid, 2.0, g_HospitalLocations[i][0], g_HospitalLocations[i][1], g_HospitalLocations[i][2]))
  12731. {
  12732. TogglePlayerControllable(playerid,0);
  12733. GameTextForPlayer(playerid, "~r~Loading objects...", 2000, 4);
  12734. SetTimerEx("UnFreezePlayer", 2000, false, "i", playerid);
  12735. SetPlayerFadePos(playerid, 2502.0286, -1706.2908, 2104.7358, 270.0000, 8, i);
  12736. ShowActionBubble(playerid, "* %s opens the door and enters the building.", ReturnNameEx(playerid));
  12737. return 1;
  12738. }
  12739. }
  12740. if(IsPlayerInRangeOfPoint(playerid, 5.0, 1041.2220, -1028.3320, 32.1016) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  12741. {
  12742. new vehicleid = GetPlayerVehicleID(playerid);
  12743. if(!IsVehicleModifiable(vehicleid))
  12744. {
  12745. return SendErrorMessage(playerid, "This vehicle cannot be modified.");
  12746. }
  12747. Players[playerid][pModPreview] = 0;
  12748. SetVehiclePos(vehicleid, 614.8823, -125.0021, 998.0926);
  12749. SetVehicleZAngle(vehicleid, 90.0000);
  12750. //SetVehicleVirtualWorld(vehicleid, 9999);
  12751. LinkVehicleToInterior(vehicleid, 3);
  12752. GetVehicleParamsEx(vehicleid, Players[playerid][pVehicleParams][0], Players[playerid][pVehicleParams][1], Players[playerid][pVehicleParams][2], Players[playerid][pVehicleParams][3], Players[playerid][pVehicleParams][4], Players[playerid][pVehicleParams][5], Players[playerid][pVehicleParams][6]);
  12753. SetVehicleParamsEx(vehicleid, 0, 0, 0, 0, 0, 0, 0);
  12754. SetPlayerInterior(playerid, 3);
  12755. //SetPlayerVirtualWorld(playerid, 9999);
  12756. SetCameraBehindPlayer(playerid);
  12757. ShowModMainMenu(playerid);
  12758. return 1;
  12759. }
  12760. if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER && !Players[playerid][pRepairTime])
  12761. {
  12762. for(new i = 0; i < sizeof(g_RepairShops); i ++)
  12763. {
  12764. if(IsPlayerInRangeOfPoint(playerid, 5.0, g_RepairShops[i][0], g_RepairShops[i][1], g_RepairShops[i][2]))
  12765. {
  12766. if(IsRepairShopInUse(i))
  12767. {
  12768. return SendErrorMessage(playerid, "This Pay n' Spray is currently in use.");
  12769. }
  12770. if((!PlayerCanAfford(playerid, 500)) && (GetPlayerFactionType(playerid) != FACTION_LEO && GetPlayerFactionType(playerid) != FACTION_MEDICAL))
  12771. {
  12772. return SendErrorMessage(playerid, "You can't afford the entry cost.");
  12773. }
  12774. SetVehiclePos(GetPlayerVehicleID(playerid), g_RepairShops[i][3], g_RepairShops[i][4], g_RepairShops[i][5]);
  12775. SetVehicleZAngle(GetPlayerVehicleID(playerid), g_RepairShops[i][6]);
  12776. /*foreach(new p : Player)
  12777. {
  12778. if(IsPlayerInVehicle(p, GetPlayerVehicleID(playerid)))
  12779. {
  12780. SetPlayerCameraPos(p, repairShopCameras[i][0], repairShopCameras[i][1], repairShopCameras[i][2]);
  12781. SetPlayerCameraLookAt(p, repairShopCameras[i][3], repairShopCameras[i][4], repairShopCameras[i][5]);
  12782. }
  12783. }*/
  12784. TogglePlayerControllable(playerid, 0);
  12785. SendClientMessage(playerid, COLOR_WHITE, "Garage: You will be moved out the garage in 8 seconds.");
  12786. if(GetPlayerFactionType(playerid) == FACTION_LEO || GetPlayerFactionType(playerid) == FACTION_MEDICAL)
  12787. {
  12788. SendClientMessage(playerid, COLOR_GREEN, "Your vehicle is fixed free of charge due to being in a government faction!");
  12789. }
  12790. else
  12791. {
  12792. RemoveMoney(playerid, -500);
  12793. }
  12794. Players[playerid][pRepairTime] = 8;
  12795. Players[playerid][pRepairShop] = i;
  12796. return 1;
  12797. }
  12798. }
  12799. return 1;
  12800. }
  12801. return 0;
  12802. }
  12803. ExitCaller(playerid)
  12804. {
  12805. new id;
  12806. if (Players[playerid][pSetPosition] || Players[playerid][pTazed] || Players[playerid][pJailType] > 0)
  12807. {
  12808. return 0;
  12809. }
  12810. if (IsPlayerInRangeOfPoint(playerid, 3.0, 1725.3818, -2242.7742, 2039.3804))
  12811. {
  12812. TogglePlayerControllable(playerid,0);
  12813. GameTextForPlayer(playerid, "~r~Loading objects...", 2000, 4);
  12814. SetTimerEx("UnFreezePlayer", 2000, false, "i", playerid);
  12815. SetPlayerFadePos(playerid, 1685.8079, -2333.4343, 13.5469, 0.0000, 0, 0);
  12816. RemovePlayerMapIcon(playerid, 0);
  12817. HideFooterText(playerid);
  12818. return 1;
  12819. }
  12820. if ((id = GetCurrentHouse(playerid)) != INVALID_ID)
  12821. {
  12822. if (IsPlayerNearBackdoorExit(playerid, id) && !IsBackdoorSetup(id))
  12823. {
  12824. return SendErrorMessage(playerid, "The backdoor entrance is not setup yet.");
  12825. }
  12826. if (IsPlayerInRangeOfPoint(playerid, 3.0, Houses[id][hInt][0], Houses[id][hInt][1], Houses[id][hInt][2]))
  12827. {
  12828. TogglePlayerControllable(playerid,0);
  12829. GameTextForPlayer(playerid, "~r~Loading objects...", 2000, 4);
  12830. SetTimerEx("UnFreezePlayer", 2000, false, "i", playerid);
  12831. SetPlayerFadePos(playerid, Houses[id][hSpawn][0], Houses[id][hSpawn][1], Houses[id][hSpawn][2], Houses[id][hSpawn][3], Houses[id][hExterior], Houses[id][hExteriorWorld]);
  12832. ShowActionBubble(playerid, "* %s opens the door and exits the house.", ReturnNameEx(playerid));
  12833. }
  12834. else if (IsPlayerNearBackdoorExit(playerid, id))
  12835. {
  12836. TogglePlayerControllable(playerid,0);
  12837. GameTextForPlayer(playerid, "~r~Loading objects...", 2000, 4);
  12838. SetTimerEx("UnFreezePlayer", 2000, false, "i", playerid);
  12839. SetPlayerFadePos(playerid, Houses[id][hBackdoor][0], Houses[id][hBackdoor][1], Houses[id][hBackdoor][2], 0.0, Houses[id][hExterior], Houses[id][hExteriorWorld]);
  12840. ShowActionBubble(playerid, "* %s opens the door and exits the house.", ReturnNameEx(playerid));
  12841. }
  12842. return 1;
  12843. }
  12844. else if ((id = GetCurrentCompany(playerid)) != INVALID_ID && IsPlayerInRangeOfPoint(playerid, 3.0, Companies[id][cInt][0], Companies[id][cInt][1], Companies[id][cInt][2]))
  12845. {
  12846. TogglePlayerControllable(playerid,0);
  12847. GameTextForPlayer(playerid, "~r~Loading objects...", 2000, 4);
  12848. SetTimerEx("UnFreezePlayer", 2000, false, "i", playerid);
  12849. SetPlayerFadePos(playerid, Companies[id][cSpawn][0], Companies[id][cSpawn][1], Companies[id][cSpawn][2], Companies[id][cSpawn][3], Companies[id][cExterior], Companies[id][cExteriorWorld]);
  12850. ShowActionBubble(playerid, "* %s opens the door and exits the company.", ReturnNameEx(playerid));
  12851. if(!isnull(Companies[id][cStream])) {
  12852. StopAudioStreamForPlayer(playerid);
  12853. }
  12854. return 1;
  12855. }
  12856. else if ((id = GetCurrentBuilding(playerid)) != INVALID_ID && IsPlayerInRangeOfPoint(playerid, 3.0, Buildings[id][bInt][0], Buildings[id][bInt][1], Buildings[id][bInt][2]))
  12857. {
  12858. SetPlayerFadePos(playerid, Buildings[id][bSpawn][0], Buildings[id][bSpawn][1], Buildings[id][bSpawn][2], Buildings[id][bSpawn][3], Buildings[id][bExterior], Buildings[id][bExteriorWorld]);
  12859. ShowActionBubble(playerid, "* %s opens the door and exits the building.", ReturnNameEx(playerid));
  12860. TogglePlayerControllable(playerid,0);
  12861. GameTextForPlayer(playerid, "~r~Loading objects...", 2000, 4);
  12862. SetTimerEx("UnFreezePlayer", 2000, false, "i", playerid);
  12863. return 1;
  12864. }
  12865. for (new i = 0; i < sizeof(g_StaticBuildings); i ++)
  12866. {
  12867. if (IsPlayerNearPoint(playerid, 3.0, g_StaticBuildings[i][e_InsideX], g_StaticBuildings[i][e_InsideY], g_StaticBuildings[i][e_InsideZ], g_StaticBuildings[i][e_Interior], g_StaticBuildings[i][e_VirtualWorld]))
  12868. {
  12869. TogglePlayerControllable(playerid,0);
  12870. GameTextForPlayer(playerid, "~r~Loading objects...", 2000, 4);
  12871. SetTimerEx("UnFreezePlayer", 2000, false, "i", playerid);
  12872. SetPlayerFadePos(playerid, g_StaticBuildings[i][e_SpawnX], g_StaticBuildings[i][e_SpawnY], g_StaticBuildings[i][e_SpawnZ], 0.0, 0, 0);
  12873. ShowActionBubble(playerid, "* %s opens the door and exits the building.", ReturnNameEx(playerid));
  12874. return 1;
  12875. }
  12876. }
  12877. for (new i = 0; i < sizeof(g_HospitalLocations); i ++)
  12878. {
  12879. if (IsPlayerNearPoint(playerid, 3.0, 2502.0286, -1706.2908, 2104.7358) && GetPlayerVirtualWorld(playerid) == i)
  12880. {
  12881. SetPlayerFadePos(playerid, g_HospitalLocations[i][0], g_HospitalLocations[i][1], g_HospitalLocations[i][2], 0.0, 0, 0);
  12882. ShowActionBubble(playerid, "* %s opens the door and exits the building.", ReturnNameEx(playerid));
  12883. TogglePlayerControllable(playerid,0);
  12884. GameTextForPlayer(playerid, "~r~Loading objects...", 2000, 4);
  12885. SetTimerEx("UnFreezePlayer", 2000, false, "i", playerid);
  12886. return 1;
  12887. }
  12888. }
  12889. if(IsPlayerInModdingShop(playerid))
  12890. {
  12891. return ExitModdingShop(playerid);
  12892. }
  12893. return 0;
  12894. }
  12895. PlayerCanAfford(playerid, amount)
  12896. {
  12897. switch (Players[playerid][pPaymentType])
  12898. {
  12899. case PAYMENT_TYPE_CASH:
  12900. {
  12901. return Players[playerid][pPocketMoney] >= amount;
  12902. }
  12903. case PAYMENT_TYPE_BANK:
  12904. {
  12905. new
  12906. bank = GetPrimaryBankAccount(playerid);
  12907. if (bank != INVALID_ID)
  12908. {
  12909. return BankAccounts[playerid][bank][bankBalance] >= amount;
  12910. }
  12911. }
  12912. }
  12913. return 0;
  12914. }
  12915. RemoveMoney(playerid, amount)
  12916. {
  12917. switch (Players[playerid][pPaymentType])
  12918. {
  12919. case PAYMENT_TYPE_CASH:
  12920. {
  12921. Players[playerid][pPocketMoney] -= amount;
  12922. GivePlayerMoney(playerid, -amount);
  12923. }
  12924. case PAYMENT_TYPE_BANK:
  12925. {
  12926. new
  12927. bank = GetPrimaryBankAccount(playerid);
  12928. if (bank != INVALID_ID)
  12929. {
  12930. BankAccounts[playerid][bank][bankBalance] -= amount;
  12931. SaveBankAccount(playerid, bank);
  12932. }
  12933. }
  12934. }
  12935. return 0;
  12936. }
  12937. /*GetCurrentHouse(playerid)
  12938. {
  12939. new
  12940. world = GetPlayerVirtualWorld(playerid);
  12941. for (new i = 0; i < MAX_HOUSES; i ++)
  12942. {
  12943. if ((Houses[i][hExists]) && Houses[i][hInterior] == GetPlayerInterior(playerid) && Houses[i][hWorld] == world)
  12944. {
  12945. return i;
  12946. }
  12947. }
  12948. return INVALID_ID;
  12949. }*///knulla2
  12950. GetCurrentHouse(playerid)
  12951. {
  12952. for (new i = 0; i < MAX_HOUSES; i ++)
  12953. {
  12954. if ((Houses[i][hExists]) && Houses[i][hInterior] == GetPlayerInterior(playerid) && Houses[i][hWorld] == GetPlayerVirtualWorld(playerid))
  12955. {
  12956. return i;
  12957. }
  12958. }
  12959. return INVALID_ID;
  12960. }
  12961. GetNearbyHouse(playerid)
  12962. {
  12963. new
  12964. id = GetClosestHouse(playerid);
  12965. if (id == INVALID_ID)
  12966. {
  12967. id = GetCurrentHouse(playerid);
  12968. }
  12969. return id;
  12970. }
  12971. IsPlayerNearBackdoorExit(playerid, house)
  12972. {
  12973. return (IsBackdoorSetup(house) && IsPlayerNearPoint(playerid, 3.0, Houses[house][hBackdoorInt][0], Houses[house][hBackdoorInt][1], Houses[house][hBackdoorInt][2], Houses[house][hInterior], Houses[house][hWorld]));
  12974. }
  12975. IsPlayerNearBackdoor(playerid, house)
  12976. {
  12977. return (IsBackdoorSetup(house) && IsPlayerNearPoint(playerid, 3.0, Houses[house][hBackdoor][0], Houses[house][hBackdoor][1], Houses[house][hBackdoor][2], Houses[house][hExterior], Houses[house][hExteriorWorld]));
  12978. }
  12979. GetClosestHouse(playerid)
  12980. {
  12981. for (new i = 0; i < MAX_HOUSES; i ++)
  12982. {
  12983. if (!Houses[i][hExists]) {
  12984. continue;
  12985. } else if (IsPlayerNearPoint(playerid, 2.0, Houses[i][hSpawn][0], Houses[i][hSpawn][1], Houses[i][hSpawn][2], Houses[i][hExterior], Houses[i][hExteriorWorld]) || IsPlayerNearBackdoor(playerid, i)) {
  12986. return i;
  12987. }
  12988. }
  12989. return INVALID_ID;
  12990. }
  12991. GetClosestFurniture(playerid, Float:range, model)
  12992. {
  12993. for (new i = 0; i < MAX_FURNITURE; i ++)
  12994. {
  12995. if (Furniture[i][fExists] && Furniture[i][fModel] == model && IsPlayerNearPoint(playerid, range, Furniture[i][fSpawn][0], Furniture[i][fSpawn][1], Furniture[i][fSpawn][2], Furniture[i][fInterior], Furniture[i][fWorld]))
  12996. {
  12997. return i;
  12998. }
  12999. }
  13000. return INVALID_ID;
  13001. }
  13002. GetClosestFridge(playerid, Float:range)
  13003. {
  13004. for (new i = 0; i < MAX_FURNITURE; i ++)
  13005. {
  13006. if (Furniture[i][fExists] && ((Furniture[i][fModel] == 19916) || (Furniture[i][fModel] == 2147) || (Furniture[i][fModel] == 2131) || (Furniture[i][fModel] == 2127) || (Furniture[i][fModel] == 2452)) && IsPlayerNearPoint(playerid, range, Furniture[i][fSpawn][0], Furniture[i][fSpawn][1], Furniture[i][fSpawn][2], Furniture[i][fInterior], Furniture[i][fWorld]))
  13007. {
  13008. return i;
  13009. }
  13010. }
  13011. return INVALID_ID;
  13012. }
  13013. GetClosestDoor(playerid, Float:range)
  13014. {
  13015. for (new i = 0; i < MAX_FURNITURE; i ++)
  13016. {
  13017. //if (Furniture[i][fExists] && ((Furniture[i][fModel] == 19802 || Furniture[i][fModel] == 1498) && IsPlayerNearPoint(playerid, range, Furniture[i][fSpawn][0], Furniture[i][fSpawn][1], Furniture[i][fSpawn][2], Furniture[i][fInterior], Furniture[i][fWorld]))
  13018. if (Furniture[i][fExists] && ((Furniture[i][fModel] == 19802) || (Furniture[i][fModel] == 1498)) && IsPlayerNearPoint(playerid, range, Furniture[i][fSpawn][0], Furniture[i][fSpawn][1], Furniture[i][fSpawn][2], Furniture[i][fInterior], Furniture[i][fWorld]))
  13019. {
  13020. return i;
  13021. }
  13022. }
  13023. return INVALID_ID;
  13024. }
  13025. SetHouseInteriorType(house, type)
  13026. {
  13027. if (1 <= type <= sizeof(g_HouseInteriors) - 1)
  13028. {
  13029. Houses[house][hInt][0] = g_HouseInteriors[type][e_InteriorX];
  13030. Houses[house][hInt][1] = g_HouseInteriors[type][e_InteriorY];
  13031. Houses[house][hInt][2] = g_HouseInteriors[type][e_InteriorZ];
  13032. Houses[house][hInt][3] = g_HouseInteriors[type][e_InteriorA];
  13033. Houses[house][hInterior] = g_HouseInteriors[type][e_Interior];
  13034. }
  13035. }
  13036. SaveBuilding(building)
  13037. {
  13038. static
  13039. queryString[512];
  13040. if (!Buildings[building][bExists]) return 0;
  13041. format(queryString, sizeof(queryString), "UPDATE rp_buildings SET bName = '%s', bIconType = %i, bLocked = %i, bSpawnX = %.4f, bSpawnY = %.4f, bSpawnZ = %.4f, bSpawnA = %.4f, bIntX = %.4f, bIntY = %.4f, bIntZ = %.4f, bIntA = %.4f, bExterior = %i, bExteriorWorld = %i, bInterior = %i, bWorld = %i WHERE bID = %i",
  13042. mysql_escaped(Buildings[building][bName]),
  13043. Buildings[building][bIconType],
  13044. Buildings[building][bLocked],
  13045. Buildings[building][bSpawn][0],
  13046. Buildings[building][bSpawn][1],
  13047. Buildings[building][bSpawn][2],
  13048. Buildings[building][bSpawn][3],
  13049. Buildings[building][bInt][0],
  13050. Buildings[building][bInt][1],
  13051. Buildings[building][bInt][2],
  13052. Buildings[building][bInt][3],
  13053. Buildings[building][bExterior],
  13054. Buildings[building][bExteriorWorld],
  13055. Buildings[building][bInterior],
  13056. Buildings[building][bWorld],
  13057. Buildings[building][bID]
  13058. );
  13059. return mysql_tquery(gConnection, queryString);
  13060. }
  13061. UpdateBuilding(building)
  13062. {
  13063. if (!Buildings[building][bExists]) return 0;
  13064. DestroyDynamicPickup(Buildings[building][bPickup]);
  13065. DestroyDynamicMapIcon(Buildings[building][bIcon]);
  13066. DestroyDynamic3DTextLabel(Buildings[building][bText]);
  13067. Buildings[building][bPickup] = CreateDynamicPickup(19198, 23, Buildings[building][bSpawn][0], Buildings[building][bSpawn][1], Buildings[building][bSpawn][2] + 0.5, Buildings[building][bExteriorWorld], Buildings[building][bExterior]);
  13068. if (Buildings[building][bIconType] != 0)
  13069. {
  13070. Buildings[building][bIcon] = CreateDynamicMapIcon(Buildings[building][bSpawn][0], Buildings[building][bSpawn][1], Buildings[building][bSpawn][2], Buildings[building][bIconType], 0, Buildings[building][bExteriorWorld], Buildings[building][bExterior]);
  13071. }
  13072. Buildings[building][bText] = CreateDynamic3DTextLabel(Buildings[building][bName], COLOR_GREY, Buildings[building][bSpawn][0], Buildings[building][bSpawn][1], Buildings[building][bSpawn][2], 15.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, Buildings[building][bExteriorWorld], Buildings[building][bExterior]);
  13073. return 1;
  13074. }
  13075. /*GetCurrentBuilding(playerid)
  13076. {
  13077. new
  13078. world = GetPlayerVirtualWorld(playerid);
  13079. for (new i = 0; i < MAX_BUILDINGS; i ++)
  13080. {
  13081. if (Buildings[i][bExists] && Buildings[i][bInterior] == GetPlayerInterior(playerid) && Buildings[i][bWorld] == world)
  13082. {
  13083. return i;
  13084. }
  13085. }
  13086. return INVALID_ID;
  13087. }*///knulla3
  13088. GetCurrentBuilding(playerid)
  13089. {
  13090. for (new i = 0; i < MAX_BUILDINGS; i ++)
  13091. {
  13092. if (Buildings[i][bExists] && Buildings[i][bInterior] == GetPlayerInterior(playerid) && Buildings[i][bWorld] == GetPlayerVirtualWorld(playerid))
  13093. {
  13094. return i;
  13095. }
  13096. }
  13097. return INVALID_ID;
  13098. }
  13099. GetClosestBuilding(playerid)
  13100. {
  13101. for (new i = 0; i < MAX_BUILDINGS; i ++)
  13102. {
  13103. if (Buildings[i][bExists] && IsPlayerNearPoint(playerid, 2.0, Buildings[i][bSpawn][0], Buildings[i][bSpawn][1], Buildings[i][bSpawn][2], Buildings[i][bExterior], Buildings[i][bExteriorWorld]))
  13104. {
  13105. return i;
  13106. }
  13107. }
  13108. return INVALID_ID;
  13109. }
  13110. ResetBuilding(building)
  13111. {
  13112. DestroyDynamicPickup(Buildings[building][bPickup]);
  13113. DestroyDynamicMapIcon(Buildings[building][bIcon]);
  13114. DestroyDynamic3DTextLabel(Buildings[building][bText]);
  13115. Buildings[building][bID] = 0;
  13116. Buildings[building][bExists] = 0;
  13117. Buildings[building][bIconType] = 0;
  13118. Buildings[building][bLocked] = 0;
  13119. Buildings[building][bInt][0] = 0.0;
  13120. Buildings[building][bInt][1] = 0.0;
  13121. Buildings[building][bInt][2] = 0.0;
  13122. Buildings[building][bInt][3] = 0.0;
  13123. Buildings[building][bInterior] = 0;
  13124. Buildings[building][bWorld] = 0;
  13125. Buildings[building][bExterior] = 0;
  13126. Buildings[building][bExteriorWorld] = 0;
  13127. Buildings[building][bPickup] = INVALID_ID;
  13128. Buildings[building][bIcon] = INVALID_ID;
  13129. Buildings[building][bText] = INVALID_3DTEXT_ID;
  13130. }
  13131. ClearPumps(company)
  13132. {
  13133. if (!IsValidCompanyID(company))
  13134. {
  13135. return 0;
  13136. }
  13137. for (new i = 0; i < MAX_GAS_PUMPS; i ++)
  13138. {
  13139. if (GasPumps[i][gpExists] && GasPumps[i][gpCompany] == Companies[company][cID])
  13140. {
  13141. DestroyDynamicObject(GasPumps[i][gpObject]);
  13142. DestroyDynamic3DTextLabel(GasPumps[i][gpText]);
  13143. GasPumps[i][gpExists] = 0;
  13144. GasPumps[i][gpID] = 0;
  13145. }
  13146. }
  13147. format(gExecute, sizeof(gExecute), "DELETE FROM rp_gaspumps WHERE gpCompany = %i", Companies[company][cID]);
  13148. mysql_tquery(gConnection, gExecute);
  13149. return 1;
  13150. }
  13151. ClearFurniture(house)
  13152. {
  13153. if (!IsValidHouseID(house))
  13154. {
  13155. return 0;
  13156. }
  13157. for (new i = 0; i < MAX_FURNITURE; i ++)
  13158. {
  13159. if (Furniture[i][fExists] && Furniture[i][fHouseID] == Houses[house][hID])
  13160. {
  13161. if (Furniture[i][fModel] == 2332)
  13162. {
  13163. ClearSafeItems(i);
  13164. }
  13165. DestroyDynamicObject(Furniture[i][fObject]);
  13166. DestroyDynamic3DTextLabel(Furniture[i][fText]);
  13167. Furniture[i][fExists] = 0;
  13168. Furniture[i][fID] = 0;
  13169. }
  13170. }
  13171. format(gExecute, sizeof(gExecute), "DELETE FROM rp_furniture WHERE fHouseID = %i", Houses[house][hID]);
  13172. mysql_tquery(gConnection, gExecute);
  13173. return 1;
  13174. }
  13175. ClearOutsideFurniture(house)
  13176. {
  13177. if (!IsValidHouseID(house))
  13178. {
  13179. return 0;
  13180. }
  13181. for (new i = 0; i < MAX_FURNITURE; i ++)
  13182. {
  13183. if (Furniture[i][fExists] && Furniture[i][fHouseID] == Houses[house][hID] && Furniture[i][fInterior] == Houses[house][hInterior] && Furniture[i][fWorld] == Houses[house][hWorld])
  13184. {
  13185. if (Furniture[i][fModel] == 2332)
  13186. {
  13187. ClearSafeItems(i);
  13188. }
  13189. DeleteFurniture(i);
  13190. }
  13191. }
  13192. return 1;
  13193. }
  13194. ResetHouse(house)
  13195. {
  13196. DestroyDynamicCP(Houses[house][hCheckpoint]);
  13197. //DestroyDynamic3DTextLabel(Houses[house][hText]);
  13198. DestroyDynamic3DTextLabel(Houses[house][hBackdoorText][0]);
  13199. DestroyDynamic3DTextLabel(Houses[house][hBackdoorText][1]);
  13200. strcpy(Houses[house][hOwnerName], "Nobody", MAX_PLAYER_NAME);
  13201. Houses[house][hID] = 0;
  13202. Houses[house][hExists] = 0;
  13203. Houses[house][hOwner] = 0;
  13204. Houses[house][hValue] = 0;
  13205. Houses[house][hLocked] = 0;
  13206. Houses[house][hAlarm] = 0;
  13207. Houses[house][hLights] = 0;
  13208. Houses[house][hEdit] = 0;
  13209. Houses[house][hInt][0] = 0.0;
  13210. Houses[house][hInt][1] = 0.0;
  13211. Houses[house][hInt][2] = 0.0;
  13212. Houses[house][hInt][3] = 0.0;
  13213. Houses[house][hBackdoor][0] = 0.0;
  13214. Houses[house][hBackdoor][1] = 0.0;
  13215. Houses[house][hBackdoor][2] = 0.0;
  13216. Houses[house][hBackdoorInt][0] = 0.0;
  13217. Houses[house][hBackdoorInt][1] = 0.0;
  13218. Houses[house][hBackdoorInt][2] = 0.0;
  13219. Houses[house][hInterior] = 0;
  13220. Houses[house][hWorld] = 0;
  13221. Houses[house][hRentPrice] = 0;
  13222. Houses[house][hExterior] = 0;
  13223. Houses[house][hExteriorWorld] = 0;
  13224. Houses[house][hCheckpoint] = INVALID_ID;
  13225. //Houses[house][hText] = INVALID_3DTEXT_ID;
  13226. Houses[house][hBackdoorText][0] = INVALID_3DTEXT_ID;
  13227. Houses[house][hBackdoorText][1] = INVALID_3DTEXT_ID;
  13228. Houses[house][hFaction] = 0;
  13229. }
  13230. IsRentingHouse(playerid, house)
  13231. {
  13232. return (IsValidHouseID(house)) && Houses[house][hID] == Players[playerid][pRentHouse];
  13233. }
  13234. IsHouseOwner(playerid, house)
  13235. {
  13236. return (IsValidHouseID(house)) && (Houses[house][hOwner] == Players[playerid][pID]);
  13237. }
  13238. UpdateFurniture(furniture)
  13239. {
  13240. if (!IsValidFurnitureID(furniture))
  13241. {
  13242. return 0;
  13243. }
  13244. DestroyDynamicObject(Furniture[furniture][fObject]);
  13245. Furniture[furniture][fObject] = CreateDynamicObject(Furniture[furniture][fModel], Furniture[furniture][fSpawn][0], Furniture[furniture][fSpawn][1], Furniture[furniture][fSpawn][2], Furniture[furniture][fSpawn][3], Furniture[furniture][fSpawn][4], Furniture[furniture][fSpawn][5], Furniture[furniture][fWorld], Furniture[furniture][fInterior]);
  13246. for(new i = 0; i != 3; i ++)
  13247. {
  13248. if(MaterialIDs[Furniture[furniture][fMaterial][i]][ModelID] != 0)
  13249. {
  13250. SetDynamicObjectMaterial(Furniture[furniture][fObject], i, MaterialIDs[Furniture[furniture][fMaterial][i]][ModelID], MaterialIDs[Furniture[furniture][fMaterial][i]][TxdName], MaterialIDs[Furniture[furniture][fMaterial][i]][TextureName], MaterialColors[Furniture[furniture][fMatColour][i]][ColorHex]);
  13251. }
  13252. else if(Furniture[furniture][fMatColour][i] != 0)
  13253. {
  13254. SetDynamicObjectMaterial(Furniture[furniture][fObject], i, -1, MaterialIDs[Furniture[furniture][fMaterial][i]][TxdName], MaterialIDs[Furniture[furniture][fMaterial][i]][TextureName], MaterialColors[Furniture[furniture][fMatColour][i]][ColorHex]);
  13255. }
  13256. }
  13257. UpdateFurnitureText(furniture);
  13258. return 1;
  13259. }
  13260. UpdateFurnitureText(furniture)
  13261. {
  13262. new
  13263. string[64];
  13264. if (!IsValidFurnitureID(furniture))
  13265. {
  13266. return 0;
  13267. }
  13268. DestroyDynamic3DTextLabel(Furniture[furniture][fText]);
  13269. if (Furniture[furniture][fEdit])
  13270. {
  13271. format(string, sizeof(string), "ID: {00FF00}%i{FFFFFF}\n/edit, /delete.", furniture);
  13272. Furniture[furniture][fText] = CreateDynamic3DTextLabel(string, COLOR_WHITE, Furniture[furniture][fSpawn][0], Furniture[furniture][fSpawn][1], Furniture[furniture][fSpawn][2], 50.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, Furniture[furniture][fWorld], Furniture[furniture][fInterior]);
  13273. }
  13274. else
  13275. {
  13276. if (Furniture[furniture][fModel] == 2332)
  13277. {
  13278. if (Furniture[furniture][fSafeOpen])
  13279. {
  13280. Furniture[furniture][fText] = CreateDynamic3DTextLabel("Status: {00FF00}Opened{AFAFAF}\nPress Y to use safe", COLOR_GREY, Furniture[furniture][fSpawn][0], Furniture[furniture][fSpawn][1], Furniture[furniture][fSpawn][2], 3.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, Furniture[furniture][fWorld], Furniture[furniture][fInterior]);
  13281. }
  13282. else
  13283. {
  13284. Furniture[furniture][fText] = CreateDynamic3DTextLabel("Status: {FF5030}Closed{AFAFAF}\nPress Y to use safe", COLOR_GREY, Furniture[furniture][fSpawn][0], Furniture[furniture][fSpawn][1], Furniture[furniture][fSpawn][2], 3.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, Furniture[furniture][fWorld], Furniture[furniture][fInterior]);
  13285. }
  13286. }
  13287. /*if ((Furniture[furniture][fModel] == 19916) || (Furniture[furniture][fModel] == 2147) || (Furniture[furniture][fModel] == 2131) || (Furniture[furniture][fModel] == 2127) || (Furniture[furniture][fModel] == 2452))
  13288. {
  13289. Furniture[furniture][fText] = CreateDynamic3DTextLabel("Refridgerator\n'/heal' to heal", COLOR_GREY, Furniture[furniture][fSpawn][0], Furniture[furniture][fSpawn][1], Furniture[furniture][fSpawn][2], 10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, Furniture[furniture][fWorld], Furniture[furniture][fInterior]);
  13290. }*/
  13291. else
  13292. {
  13293. Furniture[furniture][fText] = INVALID_3DTEXT_ID;
  13294. }
  13295. }
  13296. return 1;
  13297. }
  13298. SaveFurniture(furniture)
  13299. {
  13300. static
  13301. queryString[512];
  13302. if (!IsValidFurnitureID(furniture)) return 0;
  13303. format(queryString, sizeof(queryString), "UPDATE rp_furniture SET fModel = %i, fX = %.4f, fY = %.4f, fZ = %.4f, fRX = %.4f, fRY = %.4f, fRZ = %.4f, fInterior = %i, fWorld = %i, fCode = %i, fMoney = %i, Mat1 = %i, Mat2 = %i, Mat3 = %i, MatColor1 = %i, MatColor2 = %i, MatColor3 = %i WHERE fID = %i",
  13304. Furniture[furniture][fModel],
  13305. Furniture[furniture][fSpawn][0],
  13306. Furniture[furniture][fSpawn][1],
  13307. Furniture[furniture][fSpawn][2],
  13308. Furniture[furniture][fSpawn][3],
  13309. Furniture[furniture][fSpawn][4],
  13310. Furniture[furniture][fSpawn][5],
  13311. Furniture[furniture][fInterior],
  13312. Furniture[furniture][fWorld],
  13313. Furniture[furniture][fCode],
  13314. Furniture[furniture][fMoney],
  13315. Furniture[furniture][fMaterial][0],
  13316. Furniture[furniture][fMaterial][1],
  13317. Furniture[furniture][fMaterial][2],
  13318. Furniture[furniture][fMatColour][0],
  13319. Furniture[furniture][fMatColour][1],
  13320. Furniture[furniture][fMatColour][2],
  13321. Furniture[furniture][fID]
  13322. );
  13323. return mysql_tquery(gConnection, queryString);
  13324. }
  13325. DeleteFurniture(furniture)
  13326. {
  13327. if (!IsValidFurnitureID(furniture))
  13328. {
  13329. return 0;
  13330. }
  13331. if (Furniture[furniture][fModel] == 2332)
  13332. {
  13333. ClearSafeItems(furniture);
  13334. }
  13335. DestroyDynamicObject(Furniture[furniture][fObject]);
  13336. DestroyDynamic3DTextLabel(Furniture[furniture][fText]);
  13337. format(gExecute, sizeof(gExecute), "DELETE FROM rp_furniture WHERE fID = %i", Furniture[furniture][fID]);
  13338. mysql_tquery(gConnection, gExecute);
  13339. Furniture[furniture][fID] = 0;
  13340. Furniture[furniture][fExists] = 0;
  13341. Furniture[furniture][fObject] = INVALID_OBJECT_ID;
  13342. Furniture[furniture][fText] = INVALID_3DTEXT_ID;
  13343. return 1;
  13344. }
  13345. ShowFurnitureCategories(playerid)
  13346. {
  13347. new string[192];
  13348. for (new i = 0; i < sizeof(g_FurnitureTypes); i ++) {
  13349. strcat(string, g_FurnitureTypes[i]);
  13350. strcat(string, "\n");
  13351. }
  13352. Dialog_Show(playerid, BuyFurniture, DIALOG_STYLE_LIST, "{FFFFFF}Select category", string, "Select", "Cancel");
  13353. }
  13354. SetFurnitureEditMode(house, enable)
  13355. {
  13356. Houses[house][hEdit] = enable;
  13357. for (new i = 0; i < MAX_FURNITURE; i ++)
  13358. {
  13359. if (Furniture[i][fExists] && Furniture[i][fHouseID] == Houses[house][hID])
  13360. {
  13361. Furniture[i][fEdit] = enable;
  13362. UpdateFurnitureText(i);
  13363. }
  13364. }
  13365. }
  13366. AddFurniture(house, modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, interior, worldid)
  13367. {
  13368. new
  13369. id = GetNextFurnitureID();
  13370. if (id != INVALID_ID)
  13371. {
  13372. Furniture[id][fExists] = 1;
  13373. Furniture[id][fHouseID] = Houses[house][hID];
  13374. Furniture[id][fEdit] = Houses[house][hEdit];
  13375. Furniture[id][fModel] = modelid;
  13376. Furniture[id][fSpawn][0] = x;
  13377. Furniture[id][fSpawn][1] = y;
  13378. Furniture[id][fSpawn][2] = z;
  13379. Furniture[id][fSpawn][3] = rx;
  13380. Furniture[id][fSpawn][4] = ry;
  13381. Furniture[id][fSpawn][5] = rz;
  13382. Furniture[id][fInterior] = interior;
  13383. Furniture[id][fWorld] = worldid;
  13384. Furniture[id][fCode] = 0;
  13385. Furniture[id][fMoney] = 0;
  13386. Furniture[id][fSafeOpen] = 0;
  13387. Furniture[id][fDoorOpen] = 0;
  13388. Furniture[id][fObject] = INVALID_OBJECT_ID;
  13389. Furniture[id][fText] = INVALID_3DTEXT_ID;
  13390. for(new i = 0; i != 3; i ++)
  13391. {
  13392. Furniture[id][fMaterial][i] = 0;
  13393. Furniture[id][fMatColour][i] = 0;
  13394. }
  13395. UpdateFurniture(id);
  13396. format(gExecute, sizeof(gExecute), "INSERT INTO rp_furniture (fHouseID) VALUES(%i)", Furniture[id][fHouseID]);
  13397. mysql_tquery(gConnection, gExecute, "OnFurnitureAdded", "i", id);
  13398. }
  13399. return id;
  13400. }
  13401. /*GetCurrentCompany(playerid)
  13402. {
  13403. new
  13404. world = GetPlayerVirtualWorld(playerid);
  13405. for (new i = 0; i < MAX_COMPANIES; i ++)
  13406. {
  13407. if (Companies[i][cExists] && Companies[i][cInterior] == GetPlayerInterior(playerid) && Companies[i][cWorld] == world)
  13408. {
  13409. return i;
  13410. }
  13411. }
  13412. return INVALID_ID;
  13413. }*///knulla1
  13414. GetCurrentCompany(playerid)
  13415. {
  13416. for (new i = 0; i < MAX_COMPANIES; i ++)
  13417. {
  13418. if (Companies[i][cExists] && Companies[i][cInterior] == GetPlayerInterior(playerid) && Companies[i][cWorld] == GetPlayerVirtualWorld(playerid))
  13419. {
  13420. return i;
  13421. }
  13422. }
  13423. return INVALID_ID;
  13424. }
  13425. GetNearbyCompany(playerid)
  13426. {
  13427. new
  13428. id = GetClosestCompany(playerid);
  13429. if (id == INVALID_ID)
  13430. {
  13431. id = GetCurrentCompany(playerid);
  13432. }
  13433. return id;
  13434. }
  13435. GetClosestCompany(playerid)
  13436. {
  13437. new Float:range;
  13438. if (IsPlayerInAnyVehicle(playerid)) {
  13439. range = 5.0;
  13440. } else {
  13441. range = 2.0;
  13442. }
  13443. for (new i = 0; i < MAX_COMPANIES; i ++)
  13444. {
  13445. if (Companies[i][cExists] && IsPlayerNearPoint(playerid, range, Companies[i][cSpawn][0], Companies[i][cSpawn][1], Companies[i][cSpawn][2], Companies[i][cExterior], Companies[i][cExteriorWorld]))
  13446. {
  13447. return i;
  13448. }
  13449. }
  13450. return INVALID_ID;
  13451. }
  13452. GetClosestDeliveryPoint(playerid)
  13453. {
  13454. for (new i = 0; i < MAX_COMPANIES; i ++)
  13455. {
  13456. if (Companies[i][cExists] && IsPlayerInRangeOfPoint(playerid, 5.0, Companies[i][cVehicle][0], Companies[i][cVehicle][1], Companies[i][cVehicle][2]))
  13457. {
  13458. return i;
  13459. }
  13460. }
  13461. return GetClosestCompany(playerid);
  13462. }
  13463. SaveRestaurantItem(company, id)
  13464. {
  13465. static
  13466. queryString[255];
  13467. if (!IsValidCompanyID(company)) return 0;
  13468. format(queryString, sizeof(queryString), "UPDATE rp_fooditems SET Name = '%s', Stock = %i, Price = %i, Type = %i, Health = %i WHERE ID = %i", RestaurantItems[company][id][rtName], RestaurantItems[company][id][rtStock], RestaurantItems[company][id][rtPrice], RestaurantItems[company][id][rtType], RestaurantItems[company][id][rtHealth], RestaurantItems[company][id][rtID]);
  13469. mysql_tquery(gConnection, queryString);
  13470. return 1;
  13471. }
  13472. SaveProduct(company, product)
  13473. {
  13474. static
  13475. queryString[255];
  13476. if (!IsValidCompanyID(company)) return 0;
  13477. format(queryString, sizeof(queryString), "INSERT INTO rp_products (cID, ID, Price, Stock) VALUES(%i, %i, %i, %i) ON DUPLICATE KEY UPDATE Price = %i, Stock = %i", Companies[company][cID], product, Products[company][product][prPrice], Products[company][product][prStock], Products[company][product][prPrice], Products[company][product][prStock]);
  13478. mysql_tquery(gConnection, queryString);
  13479. return 1;
  13480. }
  13481. CheckCompanyItems(company)
  13482. {
  13483. for (new i = 0, index = 0; i < sizeof(g_CompanyItems); i ++)
  13484. {
  13485. if (Companies[company][cType] == g_CompanyItems[i][e_CompanyType])
  13486. {
  13487. if (!Products[company][index][prPrice])
  13488. {
  13489. Products[company][index][prPrice] = g_CompanyItems[i][e_DefaultPrice];
  13490. if (g_CompanyItems[i][e_IsStockable])
  13491. Products[company][index][prStock] = 200;
  13492. else
  13493. Products[company][index][prStock] = -1;
  13494. SaveProduct(company, index);
  13495. }
  13496. index++;
  13497. }
  13498. }
  13499. }
  13500. GetCompanyOwner(company)
  13501. {
  13502. new playername[MAX_PLAYER_NAME];
  13503. if (Companies[company][cOwner])
  13504. strcpy(playername, Companies[company][cOwnerName]);
  13505. else
  13506. playername = "Nobody";
  13507. return playername;
  13508. }
  13509. SetCompanyOwner(company, playerid)
  13510. {
  13511. if (playerid == INVALID_PLAYER_ID)
  13512. {
  13513. strcpy(Companies[company][cOwnerName], "Nobody", MAX_PLAYER_NAME);
  13514. Companies[company][cOwner] = 0;
  13515. }
  13516. else if (IsPlayerLoggedIn(playerid))
  13517. {
  13518. GetPlayerName(playerid, Companies[company][cOwnerName], MAX_PLAYER_NAME);
  13519. Companies[company][cOwner] = Players[playerid][pID];
  13520. }
  13521. UpdateCompany(company);
  13522. SaveCompany(company);
  13523. }
  13524. UpdateCompany(company)
  13525. {
  13526. new
  13527. string[128];
  13528. if (!Companies[company][cExists]) return 0;
  13529. DestroyDynamicCP(Companies[company][cCheckpoint]);
  13530. //DestroyDynamicMapIcon(Companies[company][cIcon]);
  13531. //DestroyDynamic3DTextLabel(Companies[company][cText]);
  13532. DestroyDynamic3DTextLabel(Companies[company][cDeliverText]);
  13533. if (Companies[company][cOwner])
  13534. {
  13535. if (Companies[company][cLocked])
  13536. format(string, sizeof(string), "Status: {AA3333}Closed{AFAFAF}\n%s", Companies[company][cName]);
  13537. else
  13538. format(string, sizeof(string), "Status: {33AA33}Opened{AFAFAF}\n%s", Companies[company][cName]);
  13539. }
  13540. else
  13541. {
  13542. format(string, sizeof(string), "Price: {33CC33}%s{AFAFAF}\n%s", FormatNumber(Companies[company][cValue]), Companies[company][cName]);
  13543. }
  13544. Companies[company][cCheckpoint] = CreateDynamicCP(Companies[company][cSpawn][0], Companies[company][cSpawn][1], Companies[company][cSpawn][2], 2.0, Companies[company][cExteriorWorld], Companies[company][cExterior], .streamdistance = 10.0);
  13545. //Companies[company][cText] = CreateDynamic3DTextLabel(string, COLOR_GREY, Companies[company][cSpawn][0], Companies[company][cSpawn][1], Companies[company][cSpawn][2], 20.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, Companies[company][cExteriorWorld], Companies[company][cExterior]);
  13546. /*switch (Companies[company][cType])
  13547. {
  13548. case COMPANY_STORE: type = 17;
  13549. case COMPANY_CLOTHES: type = 45;
  13550. case COMPANY_RESTAURANT: type = 10;
  13551. case COMPANY_RENTALS: type = 55;
  13552. case COMPANY_PHONE: type = 56;
  13553. case COMPANY_DEALERSHIP: type = 55;
  13554. case COMPANY_GYM: type = 54;
  13555. case COMPANY_AMMO: type = 18;
  13556. case COMPANY_BAR: type = 49;
  13557. }*/
  13558. //Companies[company][cIcon] = CreateDynamicMapIcon(Companies[company][cSpawn][0], Companies[company][cSpawn][1], Companies[company][cSpawn][2], type, 0, Companies[company][cExteriorWorld], Companies[company][cExterior]);
  13559. if (Companies[company][cType] != COMPANY_DEALERSHIP)
  13560. {
  13561. Companies[company][cDeliverText] = CreateDynamic3DTextLabel("/deliver", COLOR_GREY, Companies[company][cVehicle][0], Companies[company][cVehicle][1], Companies[company][cVehicle][2], 10.0);
  13562. }
  13563. return 1;
  13564. }
  13565. SaveCompany(company)
  13566. {
  13567. static
  13568. queryString[1024];
  13569. if (!Companies[company][cExists]) return 0;
  13570. format(queryString, sizeof(queryString), "UPDATE rp_companies SET `cOwner` = %i, `cOwnerName` = '%s', `cValue` = %i, `cType` = %i, `cName` = '%s', `cSpawnX` = %.4f, `cSpawnY` = %.4f, `cSpawnZ` = %.4f, `cSpawnA` = %.4f, `cVehicleX` = %.4f, `cVehicleY` = %.4f, `cVehicleZ` = %.4f, `cVehicleA` = %.4f, `cIntX` = %.4f, `cIntY` = %.4f, `cIntZ` = %.4f, `cIntA` = %.4f",
  13571. Companies[company][cOwner],
  13572. Companies[company][cOwnerName],
  13573. Companies[company][cValue],
  13574. Companies[company][cType],
  13575. mysql_escaped(Companies[company][cName]),
  13576. Companies[company][cSpawn][0],
  13577. Companies[company][cSpawn][1],
  13578. Companies[company][cSpawn][2],
  13579. Companies[company][cSpawn][3],
  13580. Companies[company][cVehicle][0],
  13581. Companies[company][cVehicle][1],
  13582. Companies[company][cVehicle][2],
  13583. Companies[company][cVehicle][3],
  13584. Companies[company][cInt][0],
  13585. Companies[company][cInt][1],
  13586. Companies[company][cInt][2],
  13587. Companies[company][cInt][3]
  13588. );
  13589. format(queryString, sizeof(queryString), "%s, `cExterior` = %i, `cExteriorWorld` = %i, `cInterior` = %i, `cWorld` = %i, `cLocked` = %i, `cSafe` = %i, `cStock` = %i WHERE `cID` = %i",
  13590. queryString,
  13591. Companies[company][cExterior],
  13592. Companies[company][cExteriorWorld],
  13593. Companies[company][cInterior],
  13594. Companies[company][cWorld],
  13595. Companies[company][cLocked],
  13596. Companies[company][cSafe],
  13597. Companies[company][cStock],
  13598. Companies[company][cID]
  13599. );
  13600. return mysql_tquery(gConnection, queryString);
  13601. }
  13602. SetCompanyType(company, type)
  13603. {
  13604. if (1 <= type <= sizeof(g_CompanyInteriors) - 1)
  13605. {
  13606. Companies[company][cInt][0] = g_CompanyInteriors[type][e_InteriorX];
  13607. Companies[company][cInt][1] = g_CompanyInteriors[type][e_InteriorY];
  13608. Companies[company][cInt][2] = g_CompanyInteriors[type][e_InteriorZ];
  13609. Companies[company][cInt][3] = g_CompanyInteriors[type][e_InteriorA];
  13610. Companies[company][cInterior] = g_CompanyInteriors[type][e_Interior];
  13611. Companies[company][cType] = type;
  13612. }
  13613. }
  13614. PurchaseProduct(playerid, company, product)
  13615. {
  13616. if (Products[company][product][prStock] > 0)
  13617. {
  13618. Products[company][product][prStock]--;
  13619. SaveProduct(company, product);
  13620. }
  13621. RemoveMoney(playerid, Products[company][product][prPrice]);
  13622. if (!IsCompanyOwner(playerid, company))
  13623. {
  13624. GiveCompanyMoney(company, Products[company][product][prPrice]);
  13625. }
  13626. }
  13627. GiveCompanyMoney(company, money)
  13628. {
  13629. new tax = percent(money, Server[TaxRate]);
  13630. if (IsValidCompanyID(company))
  13631. {
  13632. Companies[company][cSafe] += money - tax;
  13633. SaveCompany(company);
  13634. Server[TaxVault] += tax;
  13635. SaveInformation();
  13636. }
  13637. }
  13638. /*GetBootOffset(vehicleid, &Float:x, &Float:y, &Float:z)
  13639. {
  13640. new
  13641. Float:fX,
  13642. Float:fY,
  13643. Float:fZ,
  13644. Float:fA,
  13645. Float:fSX,
  13646. Float:fSY,
  13647. Float:fSZ;
  13648. if (!IsValidVehicle(vehicleid))
  13649. {
  13650. x = 0.0;
  13651. y = 0.0;
  13652. z = 0.0;
  13653. return 0;
  13654. }
  13655. else
  13656. {
  13657. GetVehiclePos(vehicleid, fX, fY, fZ);
  13658. GetVehicleZAngle(vehicleid, fA);
  13659. GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_SIZE, fSX, fSY, fSZ);
  13660. x = fX - (floatsqroot(fSY + fSY) * floatsin(-fA, degrees));
  13661. y = fY - (floatsqroot(fSY + fSY) * floatcos(-fA, degrees));
  13662. z = fZ;
  13663. }
  13664. return 1;
  13665. }
  13666. GetClosestBoot(playerid)
  13667. {
  13668. new
  13669. vehicleid = GetClosestVehicle(playerid);
  13670. if (vehicleid != INVALID_VEHICLE_ID && GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
  13671. {
  13672. new
  13673. Float:x,
  13674. Float:y,
  13675. Float:z;
  13676. GetBootOffset(vehicleid, x, y, z);
  13677. if (IsPlayerInRangeOfPoint(playerid, 3.0, x, y, z))
  13678. {
  13679. return vehicleid;
  13680. }
  13681. }
  13682. return INVALID_VEHICLE_ID;
  13683. }*/
  13684. GetClosestVehicle(playerid)
  13685. {
  13686. new
  13687. Float:x,
  13688. Float:y,
  13689. Float:z;
  13690. for (new i = 1; i < MAX_VEHICLES; i ++)
  13691. {
  13692. if (!IsValidVehicle(i) || !IsVehicleStreamedIn(i, playerid))
  13693. {
  13694. continue;
  13695. }
  13696. else
  13697. {
  13698. GetVehiclePos(i, x, y, z);
  13699. if (IsPlayerInRangeOfPoint(playerid, 3.7, x, y, z))
  13700. {
  13701. return i;
  13702. }
  13703. }
  13704. }
  13705. return INVALID_VEHICLE_ID;
  13706. }
  13707. ClearVehicleObjects(vehicleid)
  13708. {
  13709. if (!IsValidVehicle(vehicleid)) return 0;
  13710. if (IsValidDynamicObject(VehicleInformation[vehicleid][vObject]))
  13711. {
  13712. DestroyDynamicObject(VehicleInformation[vehicleid][vObject]);
  13713. VehicleInformation[vehicleid][vObject] = INVALID_OBJECT_ID;
  13714. }
  13715. if (IsValidDynamicObject(gSirenObject[vehicleid]))
  13716. {
  13717. DestroyDynamicObject(gSirenObject[vehicleid]);
  13718. gSirenObject[vehicleid] = INVALID_OBJECT_ID;
  13719. }
  13720. if (gCallsignText[vehicleid] != INVALID_3DTEXT_ID)
  13721. {
  13722. Delete3DTextLabel(gCallsignText[vehicleid]);
  13723. gCallsignText[vehicleid] = INVALID_3DTEXT_ID;
  13724. }
  13725. if(TaxiObject[vehicleid] != INVALID_OBJECT_ID)
  13726. {
  13727. DestroyDynamicObject(TaxiObject[vehicleid]);
  13728. TaxiObject[vehicleid] = INVALID_OBJECT_ID;
  13729. }
  13730. return 1;
  13731. }
  13732. ResyncVehicle(vehicleid)
  13733. {
  13734. new worldid = GetVehicleVirtualWorld(vehicleid);
  13735. SetVehicleVirtualWorld(vehicleid, worldid + 1);
  13736. SetVehicleVirtualWorld(vehicleid, worldid);
  13737. }
  13738. ResetVehicle(vehicle)
  13739. {
  13740. for (new i = 0; i < 14; i ++) {
  13741. Vehicles[vehicle][vMods][i] = 0;
  13742. }
  13743. strcpy(Vehicles[vehicle][vPlate], "XYZSR998");
  13744. DestroyVehicleEx(Vehicles[vehicle][vVehicle]);
  13745. DestroyDynamic3DTextLabel(Vehicles[vehicle][vText]);
  13746. Vehicles[vehicle][vID] = 0;
  13747. Vehicles[vehicle][vExists] = 0;
  13748. Vehicles[vehicle][vCompany] = 0;
  13749. Vehicles[vehicle][vOwner] = 0;
  13750. Vehicles[vehicle][vModel] = 0;
  13751. Vehicles[vehicle][vPrice] = 0;
  13752. Vehicles[vehicle][vRentable] = 0;
  13753. Vehicles[vehicle][vSpawn][0] = 0.0;
  13754. Vehicles[vehicle][vSpawn][1] = 0.0;
  13755. Vehicles[vehicle][vSpawn][2] = 0.0;
  13756. Vehicles[vehicle][vSpawn][3] = 0.0;
  13757. Vehicles[vehicle][vColor1] = 0;
  13758. Vehicles[vehicle][vColor2] = 0;
  13759. Vehicles[vehicle][vPaintjob] = INVALID_ID;
  13760. Vehicles[vehicle][vLocked] = 0;
  13761. Vehicles[vehicle][vTrunkMoney] = 0;
  13762. Vehicles[vehicle][vFaction] = 0;
  13763. Vehicles[vehicle][vSiren] = 0;
  13764. Vehicles[vehicle][vAlarm] = 0;
  13765. Vehicles[vehicle][vImpound] = 0;
  13766. Vehicles[vehicle][vDespawned] = 0;
  13767. Vehicles[vehicle][vVehicle] = INVALID_VEHICLE_ID;
  13768. Vehicles[vehicle][vText] = INVALID_3DTEXT_ID;
  13769. Vehicles[vehicle][vRenter] = INVALID_PLAYER_ID;
  13770. }
  13771. IsAdminNameSetup(playerid)
  13772. {
  13773. return (strcmp(Players[playerid][pAdminName], "none", true));
  13774. }
  13775. IsAdminTitleSetup(playerid)
  13776. {
  13777. return (strcmp(Players[playerid][pAdminTitle], "none", true));
  13778. }
  13779. IsVehicleSpawnSetup(company)
  13780. {
  13781. return (Companies[company][cVehicle][0] != 0.0 && Companies[company][cVehicle][1] != 0.0 && Companies[company][cVehicle][2] != 0.0);
  13782. }
  13783. ResetCompany(company)
  13784. {
  13785. for (new i = 0; i < MAX_PRODUCTS; i ++)
  13786. {
  13787. Products[company][i][prStock] = 0;
  13788. Products[company][i][prPrice] = 0;
  13789. }
  13790. DestroyDynamicCP(Companies[company][cCheckpoint]);
  13791. DestroyDynamicMapIcon(Companies[company][cIcon]);
  13792. //DestroyDynamic3DTextLabel(Companies[company][cText]);
  13793. DestroyDynamic3DTextLabel(Companies[company][cDeliverText]);
  13794. strcpy(Companies[company][cOwnerName], "Nobody", MAX_PLAYER_NAME);
  13795. Companies[company][cID] = 0;
  13796. Companies[company][cExists] = 0;
  13797. Companies[company][cOwner] = 0;
  13798. Companies[company][cValue] = 0;
  13799. Companies[company][cType] = 0;
  13800. Companies[company][cLocked] = 0;
  13801. Companies[company][cSafe] = 0;
  13802. Companies[company][cStock] = 0;
  13803. Companies[company][cVehicle][0] = 0.0;
  13804. Companies[company][cVehicle][1] = 0.0;
  13805. Companies[company][cVehicle][2] = 0.0;
  13806. Companies[company][cVehicle][3] = 0.0;
  13807. Companies[company][cInterior] = 0;
  13808. Companies[company][cWorld] = 0;
  13809. Companies[company][cExterior] = 0;
  13810. Companies[company][cExteriorWorld] = 0;
  13811. Companies[company][cCheckpoint] = INVALID_ID;
  13812. Companies[company][cIcon] = INVALID_ID;
  13813. //Companies[company][cText] = INVALID_3DTEXT_ID;
  13814. Companies[company][cDeliverText] = INVALID_3DTEXT_ID;
  13815. }
  13816. IsCompanyOwner(playerid, company)
  13817. {
  13818. return (IsValidCompanyID(company)) && (Companies[company][cOwner] == Players[playerid][pID]);
  13819. }
  13820. GetPaymentType(playerid)
  13821. {
  13822. new ret[16];
  13823. if (Players[playerid][pPaymentType] == PAYMENT_TYPE_CASH)
  13824. ret = "Cash";
  13825. else if (Players[playerid][pPaymentType] == PAYMENT_TYPE_BANK)
  13826. ret = "Bank Account";
  13827. return ret;
  13828. }
  13829. IsPlayerAtInvalidCoords(playerid)
  13830. {
  13831. new
  13832. Float:fX,
  13833. Float:fY,
  13834. Float:fZ;
  13835. if (GetPlayerPos(playerid, fX, fY, fZ))
  13836. {
  13837. return (fX == 0.0 && fY == 0.0 && fZ == 0.0);
  13838. }
  13839. return 0;
  13840. }
  13841. IsWeaponModel(model)
  13842. {
  13843. for (new i = 0; i < sizeof(g_WeaponInfo); i ++)
  13844. {
  13845. if (g_WeaponInfo[i][e_WeaponModel] == model) return 1;
  13846. }
  13847. return 0;
  13848. }
  13849. IsPlayerNearPoint(playerid, Float:range, Float:x, Float:y, Float:z, interior = -1, world = -1)
  13850. {
  13851. if (interior == -1)
  13852. interior = GetPlayerInterior(playerid);
  13853. if (world == -1)
  13854. world = GetPlayerVirtualWorld(playerid);
  13855. return (IsPlayerInRangeOfPoint(playerid, range, x, y, z)) && (GetPlayerInterior(playerid) == interior && GetPlayerVirtualWorld(playerid) == world);
  13856. }
  13857. ResetVehicleStream(vehicleid)
  13858. {
  13859. strpack(VehicleInformation[vehicleid][vStream], "Not Specified", 128);
  13860. }
  13861. SetupVehicle(vehicleid, color1 = -1, color2 = -1)
  13862. {
  13863. if (vehicleid != INVALID_VEHICLE_ID)
  13864. {
  13865. ResetVehicleStream(vehicleid);
  13866. VehicleInformation[vehicleid][vInit] = 1;
  13867. VehicleInformation[vehicleid][vFuel] = 100;
  13868. VehicleInformation[vehicleid][vAdmin] = 0;
  13869. VehicleInformation[vehicleid][vGoods] = 0;
  13870. VehicleInformation[vehicleid][vObject] = INVALID_OBJECT_ID;
  13871. VehicleInformation[vehicleid][vColor][0] = color1;
  13872. VehicleInformation[vehicleid][vColor][1] = color2;
  13873. VehicleInformation[vehicleid][vWindows] = 1;
  13874. VehicleInformation[vehicleid][vWindowFL] = 1;
  13875. VehicleInformation[vehicleid][vWindowFR] = 1;
  13876. VehicleInformation[vehicleid][vWindowBL] = 1;
  13877. VehicleInformation[vehicleid][vWindowBR] = 1;
  13878. gSirenObject[vehicleid] = INVALID_OBJECT_ID;
  13879. gCallsignText[vehicleid] = INVALID_3DTEXT_ID;
  13880. }
  13881. }
  13882. SpawnConfirmationVehicle(playerid, company, faction, price, modelid, color1, color2, bool:rental = false)
  13883. {
  13884. new
  13885. Float:x,
  13886. Float:y,
  13887. Float:z,
  13888. Float:angle
  13889. ;
  13890. GetPlayerPos(playerid, x, y, z);
  13891. GetPlayerFacingAngle(playerid, angle);
  13892. Players[playerid][pAddVehicle] = SpawnVehicle(modelid, x, y, z, angle, color1, color2, -1, 0);
  13893. if (IsValidVehicle(Players[playerid][pAddVehicle]))
  13894. {
  13895. Players[playerid][pVehiclePrice] = price;
  13896. Players[playerid][pVehicleCompany] = company;
  13897. Players[playerid][pVehicleRental] = rental;
  13898. Players[playerid][pVehicleFaction] = faction;
  13899. PutPlayerInVehicle(playerid, Players[playerid][pAddVehicle], 0);
  13900. SetVehicleParamsEx(Players[playerid][pAddVehicle], 1, 1, 0, 0, 0, 0, 0);
  13901. }
  13902. return 1;
  13903. }
  13904. SpawnVehicle(modelid, Float:fX, Float:fY, Float:fZ, Float:fA, color1, color2, respawn = -1, addsiren = 0)
  13905. {
  13906. new vehicleid = INVALID_VEHICLE_ID;
  13907. if (400 <= modelid <= 611)
  13908. {
  13909. vehicleid = AddStaticVehicleEx(modelid, fX, fY, fZ, fA, color1, color2, respawn, addsiren);
  13910. SetupVehicle(vehicleid, color1, color2);
  13911. CallLocalFunction("OnVehicleSpawn", "i", vehicleid);
  13912. }
  13913. return vehicleid;
  13914. }
  13915. GetVehicleModelName(modelid)
  13916. {
  13917. new string[32];
  13918. if (400 <= modelid <= 611)
  13919. strcpy(string, g_VehicleNames[modelid - 400]);
  13920. else
  13921. string = "Unknown";
  13922. return string;
  13923. }
  13924. GetVehicleName(vehicleid)
  13925. {
  13926. new modelid, string[32];
  13927. if (400 <= (modelid = GetVehicleModel(vehicleid)) <= 611)
  13928. strcpy(string, g_VehicleNames[modelid - 400]);
  13929. else
  13930. string = "Unknown";
  13931. return string;
  13932. }
  13933. GetVehicleModelFromName(const string[])
  13934. {
  13935. new
  13936. modelid = strval(string);
  13937. if (400 <= modelid <= 611)
  13938. {
  13939. return modelid;
  13940. }
  13941. else
  13942. {
  13943. for (new i = 0; i < sizeof(g_VehicleNames); i ++)
  13944. {
  13945. if (strfind(g_VehicleNames[i], string, true) != -1)
  13946. {
  13947. modelid = i + 400;
  13948. return modelid;
  13949. }
  13950. }
  13951. }
  13952. return 0;
  13953. }
  13954. GetWeaponOffsetType(weaponid)
  13955. {
  13956. if (weaponid == 2 || (2 <= weaponid <= 9)) {
  13957. return WEAPON_TYPE_MELEE;
  13958. } else if (22 <= weaponid <= 24) {
  13959. return WEAPON_TYPE_PISTOL;
  13960. } else if (25 <= weaponid <= 27) {
  13961. return WEAPON_TYPE_SHOTGUN;
  13962. } else if (weaponid == 28 || weaponid == 29 || weaponid == 32) {
  13963. return WEAPON_TYPE_SMG;
  13964. } else if (weaponid == 30 || weaponid == 31) {
  13965. return WEAPON_TYPE_ASSAULT;
  13966. } else if (weaponid == 33 || weaponid == 34) {
  13967. return WEAPON_TYPE_RIFLE;
  13968. }
  13969. return INVALID_ID;
  13970. }
  13971. GetPlayerWeaponID(playerid, slot)
  13972. {
  13973. if (slot == WEAPON_MELEE) {
  13974. return Weapons[playerid][wMelee];
  13975. } else if (slot == WEAPON_PRIMARY) {
  13976. return Weapons[playerid][wPrimary];
  13977. } else if (slot == WEAPON_SECONDARY) {
  13978. return Weapons[playerid][wSecondary];
  13979. } else if (slot == WEAPON_TERTIARY) {
  13980. return Weapons[playerid][wTertiary];
  13981. }
  13982. return 0;
  13983. }
  13984. GetPlayerWeaponAmmo(playerid, slot)
  13985. {
  13986. if (slot == WEAPON_PRIMARY) {
  13987. return Weapons[playerid][wPrimaryAmmo];
  13988. } else if (slot == WEAPON_SECONDARY) {
  13989. return Weapons[playerid][wSecondaryAmmo];
  13990. } else if (slot == WEAPON_TERTIARY) {
  13991. return Weapons[playerid][wTertiaryAmmo];
  13992. }
  13993. return 0;
  13994. }
  13995. PlayerHasWeapon(playerid, weaponid)
  13996. {
  13997. if (Weapons[playerid][wMelee] == weaponid || Weapons[playerid][wPrimary] == weaponid || Weapons[playerid][wSecondary] == weaponid || Weapons[playerid][wTertiary] == weaponid) {
  13998. return 1;
  13999. }
  14000. else if (weaponid == 23 && Players[playerid][pTazer]) {
  14001. return 1;
  14002. }
  14003. else if (weaponid == 0 || weaponid == 40 || weaponid == 43 || weaponid == 46) {
  14004. return 1;
  14005. }
  14006. return 0;
  14007. }
  14008. SetWeaponHidden(playerid, slot, enable)
  14009. {
  14010. if (!(WEAPON_TYPE_MELEE <= slot <= WEAPON_TYPE_RIFLE)) {
  14011. return 0;
  14012. }
  14013. WeaponOffsets[playerid][slot][wHidden] = enable;
  14014. format(gExecute, sizeof(gExecute), "UPDATE rp_weaponoffsets SET Hidden = %i WHERE ID = %i AND Slot = %i", enable, Players[playerid][pID], slot);
  14015. mysql_tquery(gConnection, gExecute);
  14016. return 1;
  14017. }
  14018. SetDefaultWeaponOffset(playerid, weaponid)
  14019. {
  14020. switch (weaponid)
  14021. {
  14022. case 2, 5..9:
  14023. SetWeaponOffset(playerid, GetWeaponOffsetType(weaponid), 1, -0.254000, 0.186999, -0.066999, 9.699998, 57.799995, -2.400001); // 0
  14024. case 22..24:
  14025. SetWeaponOffset(playerid, GetWeaponOffsetType(weaponid), 8, 0.000000, -0.010999, 0.143000, -96.400016, 0.000000, 0.000000);
  14026. case 25:
  14027. SetWeaponOffset(playerid, GetWeaponOffsetType(weaponid), 1, -0.182000, -0.265999, 0.037999, -8.600000, 3.800007, 3.799999); // 1 shotgun
  14028. case 27:
  14029. SetWeaponOffset(playerid, GetWeaponOffsetType(weaponid), 1, -0.286000, -0.170999, 0.001000, 0.000000, 6.199998, 2.999999);
  14030. case 28, 29, 32:
  14031. SetWeaponOffset(playerid, GetWeaponOffsetType(weaponid), 7, 0.041999, -0.068999, -0.131999, -75.299995, 6.900000, 0.100000); // 3 mp5
  14032. case 30, 31:
  14033. SetWeaponOffset(playerid, GetWeaponOffsetType(weaponid), 1, -0.121999, -0.174998, 0.088999, 0.000000, 35.400012, 0.000000); // 0 m4
  14034. case 33, 34:
  14035. SetWeaponOffset(playerid, GetWeaponOffsetType(weaponid), 1, -0.095000, -0.238999, -0.174999, -3.100000, -25.399997, 3.899999);
  14036. }
  14037. }
  14038. SetWeaponOffset(playerid, slot, bone, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
  14039. {
  14040. if (!(WEAPON_TYPE_MELEE <= slot <= WEAPON_TYPE_RIFLE)) {
  14041. return 0;
  14042. }
  14043. WeaponOffsets[playerid][slot][wBoneID] = bone;
  14044. WeaponOffsets[playerid][slot][wHidden] = false;
  14045. WeaponOffsets[playerid][slot][wOffsetX] = x;
  14046. WeaponOffsets[playerid][slot][wOffsetY] = y;
  14047. WeaponOffsets[playerid][slot][wOffsetZ] = z;
  14048. WeaponOffsets[playerid][slot][wOffsetRX] = rx;
  14049. WeaponOffsets[playerid][slot][wOffsetRY] = ry;
  14050. WeaponOffsets[playerid][slot][wOffsetRZ] = rz;
  14051. format(gExecute, sizeof(gExecute), "INSERT INTO rp_weaponoffsets VALUES(%i, %i, %i, 0, %.4f, %.4f, %.4f, %.4f, %.4f, %.4f) ON DUPLICATE KEY UPDATE Bone = %i, Hidden = 0, OffsetX = %.4f, OffsetY = %.4f, OffsetZ = %.4f, OffsetRX = %.4f, OffsetRY = %.4f, OffsetRZ = %.4f", Players[playerid][pID], slot, bone, x, y, z, rx, ry, rz, bone, x, y, z, rx, ry, rz);
  14052. mysql_tquery(gConnection, gExecute);
  14053. return 1;
  14054. }
  14055. GiveWeaponAmmo(playerid, slot, ammo)
  14056. {
  14057. switch (slot)
  14058. {
  14059. case WEAPON_PRIMARY:
  14060. {
  14061. Weapons[playerid][wPrimaryAmmo] += ammo;
  14062. GivePlayerWeapon(playerid, Weapons[playerid][wPrimary], ammo);
  14063. if (GetPlayerState(playerid) == PLAYER_STATE_ONFOOT) {
  14064. SetPlayerArmedWeapon(playerid, Weapons[playerid][wPrimary]);
  14065. } else if (GetPlayerState(playerid) != PLAYER_STATE_PASSENGER && !IsDrivebyWeapon(Weapons[playerid][wPrimary])) {
  14066. SetPlayerArmedWeapon(playerid, 0);
  14067. }
  14068. }
  14069. case WEAPON_SECONDARY:
  14070. {
  14071. Weapons[playerid][wSecondaryAmmo] += ammo;
  14072. GivePlayerWeapon(playerid, Weapons[playerid][wSecondary], ammo);
  14073. if (GetPlayerState(playerid) == PLAYER_STATE_ONFOOT) {
  14074. SetPlayerArmedWeapon(playerid, Weapons[playerid][wSecondary]);
  14075. } else if (GetPlayerState(playerid) != PLAYER_STATE_PASSENGER && !IsDrivebyWeapon(Weapons[playerid][wSecondary])) {
  14076. SetPlayerArmedWeapon(playerid, 0);
  14077. }
  14078. }
  14079. case WEAPON_TERTIARY:
  14080. {
  14081. Weapons[playerid][wTertiaryAmmo] += ammo;
  14082. GivePlayerWeapon(playerid, Weapons[playerid][wTertiary], ammo);
  14083. if (GetPlayerState(playerid) == PLAYER_STATE_ONFOOT) {
  14084. SetPlayerArmedWeapon(playerid, Weapons[playerid][wTertiary]);
  14085. } else if (GetPlayerState(playerid) != PLAYER_STATE_PASSENGER && !IsDrivebyWeapon(Weapons[playerid][wTertiary])) {
  14086. SetPlayerArmedWeapon(playerid, 0);
  14087. }
  14088. }
  14089. }
  14090. }
  14091. ShowMenuForWeapon(playerid, slot)
  14092. {
  14093. new
  14094. weaponid = GetPlayerWeaponID(playerid, slot);
  14095. if (weaponid)
  14096. {
  14097. new type = GetWeaponOffsetType(weaponid);
  14098. if (IsWeaponHideable(weaponid))
  14099. {
  14100. if (WeaponOffsets[playerid][type][wHidden]) {
  14101. Dialog_Show(playerid, AdjustWeapon, DIALOG_STYLE_LIST, "{FFFFFF}Adjust Weapon", "Adjust Bone (%s)\nAdjust Offset\nShow Weapon", "Select", "Cancel", GetBoneName(WeaponOffsets[playerid][type][wBoneID]));
  14102. } else {
  14103. Dialog_Show(playerid, AdjustWeapon, DIALOG_STYLE_LIST, "{FFFFFF}Adjust Weapon", "Adjust Bone (%s)\nAdjust Offset\nHide Weapon", "Select", "Cancel", GetBoneName(WeaponOffsets[playerid][type][wBoneID]));
  14104. }
  14105. }
  14106. else
  14107. {
  14108. Dialog_Show(playerid, AdjustWeapon, DIALOG_STYLE_LIST, "{FFFFFF}Adjust Weapon", "Adjust Bone (%s)\nAdjust Offset", "Select", "Cancel", GetBoneName(WeaponOffsets[playerid][type][wBoneID]));
  14109. }
  14110. }
  14111. }
  14112. SetPlayerWeapon(playerid, slot, weaponid, ammo=0, serial=0)
  14113. {
  14114. Players[playerid][pAnticheat] = 2;
  14115. if (!((22 <= weaponid <= 24) && Players[playerid][pTazer]))
  14116. {
  14117. SetPlayerArmedWeapon(playerid, 0);
  14118. ResetPlayerWeapons(playerid);
  14119. }
  14120. switch (slot)
  14121. {
  14122. case WEAPON_MELEE:
  14123. {
  14124. Weapons[playerid][wMelee] = weaponid;
  14125. }
  14126. case WEAPON_PRIMARY:
  14127. {
  14128. Weapons[playerid][wPrimary] = weaponid;
  14129. Weapons[playerid][wPrimaryAmmo] = ammo;
  14130. Weapons[playerid][wPrimarySerial] = serial;
  14131. }
  14132. case WEAPON_SECONDARY:
  14133. {
  14134. Weapons[playerid][wSecondary] = weaponid;
  14135. Weapons[playerid][wSecondaryAmmo] = ammo;
  14136. Weapons[playerid][wSecondarySerial] = serial;
  14137. }
  14138. case WEAPON_TERTIARY:
  14139. {
  14140. Weapons[playerid][wTertiary] = weaponid;
  14141. Weapons[playerid][wTertiaryAmmo] = ammo;
  14142. Weapons[playerid][wTertiarySerial] = serial;
  14143. }
  14144. }
  14145. if (!weaponid)
  14146. {
  14147. if (slot == WEAPON_MELEE) {
  14148. RemovePlayerAttachedObject(playerid, ATTACHED_SLOT_MELEE);
  14149. } else if (slot == WEAPON_PRIMARY) {
  14150. RemovePlayerAttachedObject(playerid, ATTACHED_SLOT_PRIMARY);
  14151. } else if (slot == WEAPON_SECONDARY) {
  14152. RemovePlayerAttachedObject(playerid, ATTACHED_SLOT_SECONDARY);
  14153. } else if (slot == WEAPON_TERTIARY) {
  14154. RemovePlayerAttachedObject(playerid, ATTACHED_SLOT_TERTIARY);
  14155. }
  14156. }
  14157. if (!((22 <= weaponid <= 24) && Players[playerid][pTazer]))
  14158. {
  14159. SetWeaponsForPlayer(playerid);
  14160. if (IsDrivebyWeapon(weaponid) && IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER) {
  14161. SetPlayerArmedWeapon(playerid, 0);
  14162. }
  14163. }
  14164. }
  14165. SetWeaponsForPlayer(playerid)
  14166. {
  14167. ResetPlayerWeapons(playerid);
  14168. if (Weapons[playerid][wMelee])
  14169. {
  14170. GivePlayerWeapon(playerid, Weapons[playerid][wMelee], 0);
  14171. }
  14172. if (Weapons[playerid][wPrimary] && Weapons[playerid][wPrimaryAmmo])
  14173. {
  14174. GivePlayerWeapon(playerid, Weapons[playerid][wPrimary], Weapons[playerid][wPrimaryAmmo]);
  14175. }
  14176. if (Weapons[playerid][wSecondary] && Weapons[playerid][wSecondaryAmmo])
  14177. {
  14178. GivePlayerWeapon(playerid, Weapons[playerid][wSecondary], Weapons[playerid][wSecondaryAmmo]);
  14179. }
  14180. if (Weapons[playerid][wTertiary] && Weapons[playerid][wTertiaryAmmo])
  14181. {
  14182. GivePlayerWeapon(playerid, Weapons[playerid][wTertiary], Weapons[playerid][wTertiaryAmmo]);
  14183. }
  14184. if (Players[playerid][pCamera] != 0)
  14185. {
  14186. GivePlayerWeapon(playerid, 43, 99999);
  14187. }
  14188. if (GetPlayerState(playerid) != PLAYER_STATE_ONFOOT)
  14189. {
  14190. SetPlayerArmedWeapon(playerid, 0);
  14191. }
  14192. return 1;
  14193. }
  14194. ResetWeapons(playerid)
  14195. {
  14196. Players[playerid][pAnticheat] = 2;
  14197. SetPlayerArmedWeapon(playerid, 0);
  14198. ResetPlayerWeapons(playerid);
  14199. if (Players[playerid][pCamera])
  14200. {
  14201. Players[playerid][pCamera] = 0;
  14202. }
  14203. if (Players[playerid][pTazer])
  14204. {
  14205. Players[playerid][pTazer] = 0;
  14206. }
  14207. Weapons[playerid][wMelee] = 0;
  14208. Weapons[playerid][wPrimary] = 0;
  14209. Weapons[playerid][wPrimaryAmmo] = 0;
  14210. Weapons[playerid][wPrimarySerial] = 0;
  14211. Weapons[playerid][wSecondary] = 0;
  14212. Weapons[playerid][wSecondaryAmmo] = 0;
  14213. Weapons[playerid][wSecondarySerial] = 0;
  14214. Weapons[playerid][wTertiary] = 0;
  14215. Weapons[playerid][wTertiaryAmmo] = 0;
  14216. Weapons[playerid][wTertiarySerial] = 0;
  14217. if (IsPlayerAttachedObjectSlotUsed(playerid, ATTACHED_SLOT_PRIMARY))
  14218. {
  14219. RemovePlayerAttachedObject(playerid, ATTACHED_SLOT_PRIMARY);
  14220. }
  14221. if (IsPlayerAttachedObjectSlotUsed(playerid, ATTACHED_SLOT_SECONDARY))
  14222. {
  14223. RemovePlayerAttachedObject(playerid, ATTACHED_SLOT_SECONDARY);
  14224. }
  14225. if (IsPlayerAttachedObjectSlotUsed(playerid, ATTACHED_SLOT_TERTIARY))
  14226. {
  14227. RemovePlayerAttachedObject(playerid, ATTACHED_SLOT_TERTIARY);
  14228. }
  14229. return 1;
  14230. }
  14231. IsPlayerSpawned(playerid)
  14232. {
  14233. switch (GetPlayerState(playerid))
  14234. {
  14235. case PLAYER_STATE_NONE, PLAYER_STATE_WASTED:
  14236. return 0;
  14237. }
  14238. return 1;
  14239. }
  14240. TeleportToPlayer(playerid, targetid)
  14241. {
  14242. if (!IsPlayerConnected(playerid) || !IsPlayerConnected(targetid))
  14243. {
  14244. return 0;
  14245. }
  14246. else
  14247. {
  14248. new
  14249. Float:x,
  14250. Float:y,
  14251. Float:z,
  14252. Float:a;
  14253. GetPlayerPos(targetid, x, y, z);
  14254. GetPlayerFacingAngle(targetid, a);
  14255. if (GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  14256. {
  14257. SetVehiclePos(GetPlayerVehicleID(playerid), x - (1.0 * floatsin(-a, degrees)), y - (1.0 * floatcos(-a, degrees)), z);
  14258. LinkVehicleToInterior(GetPlayerVehicleID(playerid), GetPlayerInterior(targetid));
  14259. SetVehicleVirtualWorld(GetPlayerVehicleID(playerid), GetPlayerVirtualWorld(targetid));
  14260. }
  14261. else
  14262. {
  14263. SetPlayerPos(playerid, x - (1.0 * floatsin(-a, degrees)), y - (1.0 * floatcos(-a, degrees)), z);
  14264. }
  14265. SetPlayerInterior(playerid, GetPlayerInterior(targetid));
  14266. SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(targetid));
  14267. }
  14268. return 1;
  14269. }
  14270. AddIPToBlacklist(ip[], admin[], reason[])
  14271. {
  14272. format(gExecute, sizeof(gExecute), "INSERT INTO rp_blacklist (Player, IP, BannedBy, Date, Reason) VALUES(NULL, '%s', '%s', NOW(), '%s')", ip, admin, mysql_escaped(reason));
  14273. mysql_tquery(gConnection, gExecute);
  14274. foreach (new i : Player)
  14275. {
  14276. if (!strcmp(ReturnIP(i), ip))
  14277. {
  14278. SendInfoMessage(i, "Your IP '%s' has been banned.", ip);
  14279. KickPlayer(i);
  14280. }
  14281. }
  14282. return 1;
  14283. }
  14284. AddToBlacklist(playerid, admin[], reason[])
  14285. {
  14286. AddPunishment(playerid, admin, "Ban", reason);
  14287. format(gExecute, sizeof(gExecute), "INSERT INTO rp_banlogs (Admin, Player, Reason, Date) VALUES('%s', '%s', '%s', NOW())", admin, ReturnName(playerid), mysql_escaped(reason));
  14288. mysql_tquery(gConnection, gExecute);
  14289. format(gExecute, sizeof(gExecute), "INSERT INTO rp_blacklist (Player, IP, BannedBy, Date, Reason) VALUES('%s', '%s', '%s', NOW(), '%s')", ReturnName(playerid), ReturnIP(playerid), admin, mysql_escaped(reason));
  14290. mysql_tquery(gConnection, gExecute);
  14291. return KickPlayer(playerid);
  14292. }
  14293. AddPunishment(playerid, admin[], type[], reason[])
  14294. {
  14295. if (!IsPlayerNPC(playerid) && Players[playerid][pLoggedIn])
  14296. {
  14297. format(gExecute, sizeof(gExecute), "INSERT INTO rp_punishments (Player, Admin, Type, Date, Reason) VALUES(%i, '%s', '%s', NOW(), '%s')", Players[playerid][pID], admin, type, mysql_escaped(reason));
  14298. mysql_tquery(gConnection, gExecute);
  14299. }
  14300. return 1;
  14301. }
  14302. AddChatLog(playerid, command[], text[])
  14303. {
  14304. if (!IsPlayerNPC(playerid) && Players[playerid][pLoggedIn])
  14305. {
  14306. format(gExecute, sizeof(gExecute), "INSERT INTO rp_chatlogs (Player, Command, Text, Date) VALUES('%s', '%s', '%s', NOW())", ReturnName(playerid), mysql_escaped(command), mysql_escaped(text));
  14307. mysql_tquery(gConnection, gExecute);
  14308. }
  14309. return 1;
  14310. }
  14311. GetNextReportID()
  14312. {
  14313. for (new i = 0; i < MAX_REPORTS; i ++)
  14314. {
  14315. if (!Reports[i][rExists])
  14316. {
  14317. return i;
  14318. }
  14319. }
  14320. return INVALID_ID;
  14321. }
  14322. GetNextEmergencyID()
  14323. {
  14324. for (new i = 0; i < MAX_EMERGENCY; i ++)
  14325. {
  14326. if (!Emergency[i][ecExists])
  14327. {
  14328. return i;
  14329. }
  14330. }
  14331. return INVALID_ID;
  14332. }
  14333. GetNextApbID()
  14334. {
  14335. for (new i = 0; i < MAX_APBS; i ++)
  14336. {
  14337. if(!Apbs[i][apbExists])
  14338. {
  14339. return i;
  14340. }
  14341. }
  14342. return INVALID_ID;
  14343. }
  14344. ReviewReport(playerid, id)
  14345. {
  14346. if (!Players[playerid][pAdmin]) return 0;
  14347. Players[playerid][pSelected] = id;
  14348. return Dialog_Show(playerid, ReportReview, DIALOG_STYLE_MSGBOX, "{FFFFFF}Review Report", "{6688FF}Reported By:{FFFFFF}\n%s (ID: %i)\n\n{6688FF}Time Left:{FFFFFF}\n%i minutes\n\n{6688FF}Report Text:{FFFFFF}\n%s", "Options", "Back", ReturnNameEx(Reports[id][rReporter]), Reports[id][rReporter], Reports[id][rReportTime], Reports[id][rText]);
  14349. }
  14350. ReviewEmergency(playerid, id)
  14351. {
  14352. Players[playerid][pSelected] = id;
  14353. return Dialog_Show(playerid, EmergencyReview, DIALOG_STYLE_MSGBOX, "{FFFFFF}Review Emergency Call", "{6688FF}Service:{FFFFFF}\n%s\n\n{6688FF}Reported By:{FFFFFF}\n%s (%i)\n\n{6688FF}Situation:{FFFFFF}\n%s\n\n{6688FF}Location:{FFFFFF}\n%s", "Handle", "Back", Emergency[id][ecService], Emergency[id][ecName], Emergency[id][ecNumber], Emergency[id][ecSituation], Emergency[id][ecLocation]);
  14354. }
  14355. /*
  14356. {
  14357. ecExists,
  14358. ecTime,
  14359. ecName[128],
  14360. ecService[32],
  14361. ecNumber,
  14362. ecLocation[128],
  14363. ecSituation[128]
  14364. };
  14365. */
  14366. ReviewApb(playerid, id)
  14367. {
  14368. if(GetPlayerFactionType(playerid) != FACTION_LEO) return 0;
  14369. Players[playerid][pSelected] = id;
  14370. return Dialog_Show(playerid, ApbReview, DIALOG_STYLE_MSGBOX, "{FFFFFF}Review APB", "{6688FF}Reported By:{FFFFFF}\n%s (ID: %i)\n\n{6688FF}Description:{FFFFFF}\n%s","Options","Back",ReturnNameEx(Apbs[id][apbReporter]), Apbs[id][apbReporter], Apbs[id][apbDesc1]);
  14371. }
  14372. AddApbToQueue(playerid, const text[])
  14373. {
  14374. new
  14375. id = GetNextApbID();
  14376. if (id != INVALID_ID)
  14377. {
  14378. strcpy(Apbs[id][apbDesc1], text, 128);
  14379. Apbs[id][apbExists] = 1;
  14380. Apbs[id][apbReporter] = playerid;
  14381. foreach (new i : Player) {
  14382. if (GetPlayerFactionType(i) == FACTION_LEO) {
  14383. SendFormatMessage(i, COLOR_FACTION, "[APB] %s reports: \"%s\"",ReturnNameEx(playerid,0),text);
  14384. }
  14385. }
  14386. }
  14387. return id;
  14388. }
  14389. AddReportToQueue(playerid, const text[])
  14390. {
  14391. new
  14392. id = GetNextReportID();
  14393. if (id != INVALID_ID)
  14394. {
  14395. strcpy(Reports[id][rText], text, 128);
  14396. Reports[id][rExists] = 1;
  14397. Reports[id][rReportTime] = REPORT_EXPIRE_TIME;
  14398. Reports[id][rReporter] = playerid;
  14399. foreach (new i : Player) {
  14400. if(CheckAdmin(i, 1) && Players[i][pShowReports]) {
  14401. SendFormatMessage(i, COLOR_YELLOW, "(REPORT) %s (ID: %i) reports: \"%s\"", ReturnNameEx(playerid, 0), playerid, text);
  14402. }
  14403. }
  14404. }
  14405. return id;
  14406. }
  14407. AddEmergency(const name[], const service[], number, const location[], const situation[])
  14408. {
  14409. new
  14410. id = GetNextEmergencyID();
  14411. if (id != INVALID_ID)
  14412. {
  14413. strcpy(Emergency[id][ecName], name, 128);
  14414. strcpy(Emergency[id][ecService], service, 32);
  14415. strcpy(Emergency[id][ecLocation], location, 128);
  14416. strcpy(Emergency[id][ecSituation], situation, 128);
  14417. Emergency[id][ecNumber] = number;
  14418. Emergency[id][ecExists] = 1;
  14419. Emergency[id][ecTime] = EMERGENCY_EXPIRE_TIME;
  14420. }
  14421. return id;
  14422. }
  14423. /*
  14424. enum e_EmergencyCalls
  14425. {
  14426. ecExists,
  14427. ecTime
  14428. ecName[128],
  14429. ecService[32],
  14430. ecNumber,
  14431. ecLocation[128],
  14432. ecSituation[128]
  14433. };
  14434. */
  14435. /*ListEmergency(playerid)
  14436. {
  14437. static
  14438. displayString[2048];
  14439. new
  14440. index = 0;
  14441. displayString = "Service\tLocation\tName\tNumber";
  14442. for (new i = 0; i < MAX_EMERGENCY; i ++)
  14443. {
  14444. if (Emergency[i][ecExists])
  14445. {
  14446. format(displayString, sizeof(displayString), "%s\n%s\t%s\t%s\t%i", Emergency[i][ecService], Emergency[i][ecLocation], Emergency[i][ecName], Emergency[i][ecNumber]);
  14447. gListedItems[playerid][index++] = i;
  14448. }
  14449. }
  14450. Dialog_Show(playerid, SafeItems, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Last Emergency Calls", displayString, "Select", "Back");
  14451. return 1;
  14452. }*/
  14453. ListEmergency(playerid)
  14454. {
  14455. new
  14456. index = 0;
  14457. gListString[0] = 0;
  14458. for (new i = 0; i < MAX_EMERGENCY; i ++)
  14459. {
  14460. if (Emergency[i][ecExists])
  14461. {
  14462. format(gListString, sizeof(gListString), "%s\n%s, %s (%s) -> %.24s...", gListString, Emergency[i][ecService], Emergency[i][ecName], Emergency[i][ecLocation], Emergency[i][ecSituation]);
  14463. gListedItems[playerid][index++] = i;
  14464. }
  14465. }
  14466. if (strlen(gListString))
  14467. {
  14468. return Dialog_Show(playerid, EmergencyList, DIALOG_STYLE_LIST, "{FFFFFF}Last Emergency Calls", gListString, "Review", "Cancel");
  14469. }
  14470. return 0;
  14471. }
  14472. ListReports(playerid)
  14473. {
  14474. new
  14475. index = 0;
  14476. gListString[0] = 0;
  14477. for (new i = 0; i < MAX_REPORTS; i ++)
  14478. {
  14479. if (Reports[i][rExists])
  14480. {
  14481. format(gListString, sizeof(gListString), "%s\n%s (%i) -> %.24s...", gListString, ReturnNameEx(Reports[i][rReporter]), Reports[i][rReporter], Reports[i][rText]);
  14482. gListedItems[playerid][index++] = i;
  14483. }
  14484. }
  14485. if (strlen(gListString))
  14486. {
  14487. return Dialog_Show(playerid, ReportList, DIALOG_STYLE_LIST, "{FFFFFF}Report List", gListString, "Review", "Cancel");
  14488. }
  14489. return 0;
  14490. }
  14491. ListApbs(playerid)
  14492. {
  14493. new
  14494. index = 0;
  14495. gListString[0] = 0;
  14496. for (new i = 0; i < MAX_APBS; i ++)
  14497. {
  14498. if (Apbs[i][apbExists])
  14499. {
  14500. format(gListString, sizeof(gListString), "%s\n%s -> %.24s...",gListString, ReturnNameEx(Apbs[i][apbReporter]),Apbs[i][apbDesc1]);
  14501. gListedItems[playerid][index++] = i;
  14502. }
  14503. }
  14504. if(strlen(gListString))
  14505. {
  14506. return Dialog_Show(playerid, ApbList, DIALOG_STYLE_LIST, "{FFFFFF}APB List", gListString, "Review", "Cancel");
  14507. }
  14508. return 0;
  14509. }
  14510. UpdateSkinSelection(playerid, index)
  14511. {
  14512. new size;
  14513. if (Players[playerid][pGender] == GENDER_MALE) {
  14514. size = sizeof(g_MaleSkins);
  14515. } else if (Players[playerid][pGender] == GENDER_FEMALE) {
  14516. size = sizeof(g_FemaleSkins);
  14517. }
  14518. if (index < 0) {
  14519. index = --size;
  14520. } else if (index >= size) {
  14521. index = 0;
  14522. }
  14523. Players[playerid][pOutfit] = index;
  14524. if (Players[playerid][pGender] == GENDER_MALE) {
  14525. Players[playerid][pSkin] = g_MaleSkins[index];
  14526. } else if (Players[playerid][pGender] == GENDER_FEMALE) {
  14527. Players[playerid][pSkin] = g_FemaleSkins[index];
  14528. }
  14529. SetPlayerSkin(playerid, Players[playerid][pSkin]);
  14530. }
  14531. ResetCharacterSetup(playerid)
  14532. {
  14533. if (!Players[playerid][pSetupInfo])
  14534. {
  14535. Players[playerid][pSkin] = g_MaleSkins[0];
  14536. Players[playerid][pAge] = 13;
  14537. Players[playerid][pGender] = GENDER_MALE;
  14538. Players[playerid][pOutfit] = 0;
  14539. SetPlayerSkin(playerid, Players[playerid][pSkin]);
  14540. UpdateCharacterSetup(playerid);
  14541. }
  14542. }
  14543. UpdateCharacterSetup(playerid)
  14544. {
  14545. new string[64];
  14546. if (Players[playerid][pGender] == GENDER_MALE) {
  14547. PlayerTextDrawSetString(playerid, Players[playerid][pText][89], "Male");
  14548. PlayerTextDrawSetString(playerid, Players[playerid][pText][90], "Female");
  14549. } else if (Players[playerid][pGender] == GENDER_FEMALE) {
  14550. PlayerTextDrawSetString(playerid, Players[playerid][pText][89], "Male");
  14551. PlayerTextDrawSetString(playerid, Players[playerid][pText][90], "Female");
  14552. }
  14553. format(string, sizeof(string), "%i years old", Players[playerid][pAge]);
  14554. PlayerTextDrawSetString(playerid, Players[playerid][pText][92], string);
  14555. format(string, sizeof(string), "Skin: %i/%i", Players[playerid][pOutfit] + 1, (Players[playerid][pGender] == GENDER_MALE ? sizeof(g_MaleSkins) : sizeof(g_FemaleSkins)));
  14556. PlayerTextDrawSetString(playerid, Players[playerid][pText][96], string);
  14557. }
  14558. IsValidOrigin(const str[])
  14559. {
  14560. new
  14561. len = strlen(str);
  14562. for (new i = 0; i < len; i ++)
  14563. {
  14564. if (('A' <= str[i] <= 'Z') || ('a' <= str[i] <= 'z') || ('0' <= str[i] <= '9') || (str[i] == ' '))
  14565. continue;
  14566. else
  14567. return 0;
  14568. }
  14569. return 1;
  14570. }
  14571. IsValidIP(const ip[])
  14572. {
  14573. new
  14574. part[4];
  14575. if (sscanf(ip, "p<.>dddd", part[0], part[1], part[2], part[3]))
  14576. {
  14577. return 0;
  14578. }
  14579. return (0 <= part[0] <= 255) && (0 <= part[1] <= 255) && (0 <= part[2] <= 255) && (0 <= part[3] <= 255);
  14580. }
  14581. IsRoleplayName(const name[])
  14582. {
  14583. if (!('A' <= name[0] <= 'Z') || strfind(name, "_") == -1)
  14584. return 0;
  14585. for (new i = 0, l = strlen(name); i < l; i ++)
  14586. {
  14587. if ('a' <= name[i] <= 'z' || 'A' <= name[i] <= 'Z')
  14588. continue;
  14589. else if (name[i] == '_')
  14590. {
  14591. if (!('A' <= name[i + 1] <= 'Z'))
  14592. return 0;
  14593. else
  14594. continue;
  14595. }
  14596. }
  14597. return 1;
  14598. }
  14599. IsValidName(name[], length_check = 1)
  14600. {
  14601. new i = 0;
  14602. if ((length_check) && !(3 <= strlen(name) <= MAX_PLAYER_NAME))
  14603. return 0;
  14604. while (name[i])
  14605. {
  14606. switch (name[i++])
  14607. {
  14608. case 'A'..'Z', 'a'..'z', '0'..'9', '@', '$', '(', ')', '[', ']', '=', '_':
  14609. continue;
  14610. default:
  14611. return 0;
  14612. }
  14613. }
  14614. return 1;
  14615. }
  14616. SendToDefaultSpawn(playerid)
  14617. {
  14618. SetCameraBehindPlayer(playerid);
  14619. SetPlayerPos(playerid, 1641.8969,-2333.1714,13.5469);
  14620. SetPlayerFacingAngle(playerid, 0.0000);
  14621. SetPlayerInterior(playerid, 0);
  14622. SetPlayerVirtualWorld(playerid, 0);
  14623. }
  14624. SetPlayerSpawn(playerid)
  14625. {
  14626. if (Players[playerid][pJailType] > 0)
  14627. {
  14628. SpawnPlayerInJail(playerid);
  14629. SendInfoMessage(playerid, "You have %i more minutes to serve in jail.", Players[playerid][pJailTime] / 60);
  14630. }
  14631. else
  14632. {
  14633. if (Players[playerid][pDeathState] == DEATH_STATE_INJURED)
  14634. {
  14635. if (IsValidDynamic3DTextLabel(Players[playerid][pInjuredText]))
  14636. {
  14637. DestroyDynamic3DTextLabel(Players[playerid][pInjuredText]);
  14638. }
  14639. Players[playerid][pInjuredText] = CreateDynamic3DTextLabel("Injured Player\n(( /damages ))", COLOR_GREY, 0.0, 0.0, 0.4, 20.0, playerid);
  14640. Players[playerid][pDeathTime] = gettime() + 120;
  14641. SetPlayerPosEx(playerid, Players[playerid][pSpawn][0], Players[playerid][pSpawn][1], Players[playerid][pSpawn][2], Players[playerid][pSpawn][3], Players[playerid][pInterior], Players[playerid][pWorld]);
  14642. //TogglePlayerControllable(playerid, 0);
  14643. ApplyAnimation(playerid, "CRACK", "crckdeth4", 4.1, 0, 0, 0, 1, 0, 1);
  14644. SendInfoMessage(playerid, "{CFCFCF}(Deathmode) You are wounded. You must wait {FF5030}120{CFCFCF} seconds before accepting death. /acceptdeath");
  14645. }
  14646. /*else if (Players[playerid][pDeathState] == DEATH_STATE_MELEE)
  14647. {
  14648. //SetPlayerPosEx(playerid, Players[playerid][pSpawn][0], Players[playerid][pSpawn][1], Players[playerid][pSpawn][2], Players[playerid][pSpawn][3], Players[playerid][pInterior], Players[playerid][pWorld]);
  14649. SetFreezePos(playerid, Players[playerid][pSpawn][0], Players[playerid][pSpawn][1], Players[playerid][pSpawn][2], 5000);
  14650. SetPlayerVirtualWorld(playerid, Players[playerid][pWorld]);
  14651. SetPlayerInterior(playerid, Players[playerid][pInterior]);
  14652. ApplyAnimation(playerid, "SWAT", "gnstwall_injurd", 4.1, 1, 0, 0, 0, 0, 1);
  14653. SendInfoMessage(playerid, "You have been beaten in a melee fight. Please roleplay your injuries.");
  14654. }*/
  14655. else if (Players[playerid][pDeathState] == DEATH_STATE_HOSPITAL)
  14656. {
  14657. SpawnInsideHospital(playerid);
  14658. }
  14659. else if (Players[playerid][pSpawn][0] == 0.0 && Players[playerid][pSpawn][1] == 0.0 && Players[playerid][pSpawn][2] == 0.0)
  14660. {
  14661. SendToDefaultSpawn(playerid);
  14662. }
  14663. else
  14664. {
  14665. if(Players[playerid][pCrashed])
  14666. {
  14667. Players[playerid][pCrashed] = 0;
  14668. SendInfoMessage(playerid, "{CFCFCF}(Crashed) You was sent back to your original position before the crash.");
  14669. SetFreezePos(playerid, Players[playerid][pSpawn][0], Players[playerid][pSpawn][1], Players[playerid][pSpawn][2], 3000);
  14670. SetPlayerFacingAngle(playerid, Players[playerid][pSpawn][3]);
  14671. SetPlayerInterior(playerid, Players[playerid][pInterior]);
  14672. SetPlayerVirtualWorld(playerid, Players[playerid][pWorld]);
  14673. }
  14674. else
  14675. {
  14676. switch(Players[playerid][pSpawnType]) // Spawn types - added by Grime/Emmet (09-27-2017)
  14677. {
  14678. case SPAWN_TYPE_LAST:
  14679. {
  14680. if (Players[playerid][pInterior] > 0 || Players[playerid][pWorld] > 0)
  14681. {
  14682. SetFreezePos(playerid, Players[playerid][pSpawn][0], Players[playerid][pSpawn][1], Players[playerid][pSpawn][2], 3000);
  14683. }
  14684. else
  14685. {
  14686. SetPlayerPos(playerid, Players[playerid][pSpawn][0], Players[playerid][pSpawn][1], Players[playerid][pSpawn][2]);
  14687. }
  14688. SetPlayerFacingAngle(playerid, Players[playerid][pSpawn][3]);
  14689. SetPlayerInterior(playerid, Players[playerid][pInterior]);
  14690. SetPlayerVirtualWorld(playerid, Players[playerid][pWorld]);
  14691. }
  14692. case SPAWN_TYPE_AIRPORT:
  14693. {
  14694. //SendToDefaultSpawn(playerid);
  14695. }
  14696. case SPAWN_TYPE_HOUSE:
  14697. {
  14698. new houseid = -1;
  14699. for(new i = 0; i < MAX_HOUSES; i ++)
  14700. {
  14701. if(IsValidHouseID(i) && IsHouseOwner(playerid, i) && Houses[i][hID] == Players[playerid][pSpawnExtra])
  14702. {
  14703. houseid = i;
  14704. break;
  14705. }
  14706. }
  14707. if(houseid == -1)
  14708. {
  14709. SendToDefaultSpawn(playerid);
  14710. SendClientMessage(playerid, COLOR_RED, "The house you've chosen to spawn at doesn't exist - you spawned at the airport.");
  14711. }
  14712. else
  14713. {
  14714. SetFreezePos(playerid, Houses[houseid][hSpawn][0], Houses[houseid][hSpawn][1], Houses[houseid][hSpawn][2], 3000);
  14715. SetPlayerFacingAngle(playerid, Houses[houseid][hSpawn][3]);
  14716. SetPlayerInterior(playerid, Houses[houseid][hExterior]);
  14717. SetPlayerVirtualWorld(playerid, Houses[houseid][hExteriorWorld]);
  14718. }
  14719. }
  14720. case SPAWN_TYPE_COMPANY:
  14721. {
  14722. new companyid = -1;
  14723. for(new i = 0; i < MAX_COMPANIES; i ++)
  14724. {
  14725. if(IsValidCompanyID(i) && IsCompanyOwner(playerid, i) && Companies[i][cID] == Players[playerid][pSpawnExtra])
  14726. {
  14727. companyid = i;
  14728. break;
  14729. }
  14730. }
  14731. if(companyid == -1)
  14732. {
  14733. SendToDefaultSpawn(playerid);
  14734. SendClientMessage(playerid, COLOR_RED, "The company you've chosen to spawn at doesn't exist - you spawned at the airport.");
  14735. }
  14736. else
  14737. {
  14738. SetFreezePos(playerid, Companies[companyid][cSpawn][0], Companies[companyid][cSpawn][1], Companies[companyid][cSpawn][2], 3000);
  14739. SetPlayerFacingAngle(playerid, Companies[companyid][cInt][3]);
  14740. SetPlayerInterior(playerid, Companies[companyid][cExterior]);
  14741. SetPlayerVirtualWorld(playerid, Companies[companyid][cExteriorWorld]);
  14742. }
  14743. }
  14744. case SPAWN_TYPE_FACTION:
  14745. {
  14746. if(Players[playerid][pFaction] == INVALID_ID)
  14747. {
  14748. SendToDefaultSpawn(playerid);
  14749. SendClientMessage(playerid, COLOR_RED, "You are not apart of the faction you've chosen to spawn at - you spawned at the airport.");
  14750. }
  14751. else if(Factions[Players[playerid][pFaction]][fcSpawnX] == 0.0 && Factions[Players[playerid][pFaction]][fcSpawnY] == 0.0 && Factions[Players[playerid][pFaction]][fcSpawnZ] == 0.0)
  14752. {
  14753. SendToDefaultSpawn(playerid);
  14754. SendErrorMessage(playerid, "Your faction's spawn is not set up currently - you spawned at the airport.");
  14755. }
  14756. else
  14757. {
  14758. SetFreezePos(playerid, Factions[Players[playerid][pFaction]][fcSpawnX], Factions[Players[playerid][pFaction]][fcSpawnY], Factions[Players[playerid][pFaction]][fcSpawnZ], 3000);
  14759. SetPlayerFacingAngle(playerid, Factions[Players[playerid][pFaction]][fcSpawnA]);
  14760. SetPlayerInterior(playerid, Factions[Players[playerid][pFaction]][fcSpawnInt]);
  14761. SetPlayerVirtualWorld(playerid, Factions[Players[playerid][pFaction]][fcSpawnWorld]);
  14762. }
  14763. }
  14764. default:
  14765. {
  14766. SendToDefaultSpawn(playerid);
  14767. SendClientMessage(playerid, COLOR_RED, "Invalid spawn type - you spawned at the airport.");
  14768. }
  14769. }
  14770. }
  14771. SetCameraBehindPlayer(playerid);
  14772. SetPlayerHealth(playerid, Players[playerid][pHealth]);
  14773. SetPlayerValidArmor(playerid, Players[playerid][pArmor]);
  14774. }
  14775. SetWeaponsForPlayer(playerid);
  14776. }
  14777. AttachObjectsToPlayer(playerid);
  14778. ShowTimeForPlayer(playerid, Players[playerid][pShowTime]);
  14779. Players[playerid][pUnfairDeath] = 0;
  14780. return 1;
  14781. }
  14782. SpawnInsideHospital(playerid)
  14783. {
  14784. new
  14785. index = random(sizeof(g_HospitalSpawns));
  14786. DestroyDynamic3DTextLabel(Players[playerid][pInjuredText]);
  14787. if (Players[playerid][pHospital] == HOSPITAL_NONE) {
  14788. SetPlayerVirtualWorld(playerid, HOSPITAL_COUNTY_GENERAL);
  14789. } else {
  14790. SetPlayerVirtualWorld(playerid, Players[playerid][pHospital]);
  14791. }
  14792. Players[playerid][pInjuredText] = INVALID_3DTEXT_ID;
  14793. Players[playerid][pHospital] = HOSPITAL_NONE;
  14794. SetPlayerPosEx(playerid, g_HospitalSpawns[index][0], g_HospitalSpawns[index][1], g_HospitalSpawns[index][2], 180.0000, 8, Players[playerid][pHospital]);
  14795. ResetWeapons(playerid);
  14796. TogglePlayerControllable(playerid, 0);
  14797. ApplyAnimation(playerid, "CRACK", "crckidle4", 4.1, 1, 0, 0, 1, 0, 1);
  14798. SendInfoMessage(playerid, "You must spend some time in the hospital to recover.");
  14799. KillTimer(Timers[playerid][tHospital]);
  14800. Timers[playerid][tHospital] = SetTimerEx("PlayerRecover", 15000, false, "i", playerid);
  14801. return 1;
  14802. }
  14803. ResetSpawnInfo(playerid)
  14804. {
  14805. Players[playerid][pSpawn][0] = 0.0;
  14806. Players[playerid][pSpawn][1] = 0.0;
  14807. Players[playerid][pSpawn][2] = 0.0;
  14808. Players[playerid][pSpawn][3] = 0.0;
  14809. Players[playerid][pInterior] = 0;
  14810. Players[playerid][pWorld] = 0;
  14811. }
  14812. SpawnPlayerInJail(playerid)
  14813. {
  14814. switch (Players[playerid][pJailType])
  14815. {
  14816. case 1: // Admin jail
  14817. {
  14818. SetPlayerPosEx(playerid, 198.6772, 161.8068, 1003.0300, 180.0000, .interior = 3, .world = playerid);
  14819. }
  14820. case 2: // IC prison
  14821. {
  14822. new cell = randomEx(1, 13);
  14823. switch(cell)
  14824. {
  14825. case 1:
  14826. {
  14827. SetFreezePos(playerid, 2592.0857,-1504.0573,-48.9141, 3000);
  14828. SetPlayerInterior(playerid, GetPrisonInterior());
  14829. SetPlayerVirtualWorld(playerid, GetPrisonVirtualWorld());
  14830. }
  14831. case 2:
  14832. {
  14833. SetFreezePos(playerid, 2592.1113,-1506.9465,-48.9141, 3000);
  14834. SetPlayerInterior(playerid, GetPrisonInterior());
  14835. SetPlayerVirtualWorld(playerid, GetPrisonVirtualWorld());
  14836. }
  14837. case 3:
  14838. {
  14839. SetFreezePos(playerid, 2592.0310,-1511.2773,-48.9141, 3000);
  14840. SetPlayerInterior(playerid, GetPrisonInterior());
  14841. SetPlayerVirtualWorld(playerid, GetPrisonVirtualWorld());
  14842. }
  14843. case 4:
  14844. {
  14845. SetFreezePos(playerid, 2591.2156,-1514.5721,-48.9141, 3000);
  14846. SetPlayerInterior(playerid, GetPrisonInterior());
  14847. SetPlayerVirtualWorld(playerid, GetPrisonVirtualWorld());
  14848. }
  14849. case 5:
  14850. {
  14851. SetFreezePos(playerid, 2592.0066,-1518.1298,-48.9141, 3000);
  14852. SetPlayerInterior(playerid, GetPrisonInterior());
  14853. SetPlayerVirtualWorld(playerid, GetPrisonVirtualWorld());
  14854. }
  14855. case 6:
  14856. {
  14857. SetFreezePos(playerid, 2587.5442,-1527.0267,-48.9141, 3000);
  14858. SetPlayerInterior(playerid, GetPrisonInterior());
  14859. SetPlayerVirtualWorld(playerid, GetPrisonVirtualWorld());
  14860. }
  14861. case 7:
  14862. {
  14863. SetFreezePos(playerid, 2583.5703,-1526.7782,-48.9141, 3000);
  14864. SetPlayerInterior(playerid, GetPrisonInterior());
  14865. SetPlayerVirtualWorld(playerid, GetPrisonVirtualWorld());
  14866. }
  14867. case 8:
  14868. {
  14869. SetFreezePos(playerid, 2580.3545,-1526.7935,-48.9141, 3000);
  14870. SetPlayerInterior(playerid, GetPrisonInterior());
  14871. SetPlayerVirtualWorld(playerid, GetPrisonVirtualWorld());
  14872. }
  14873. case 9:
  14874. {
  14875. SetFreezePos(playerid, 2574.7024,-1516.4629,-48.9141, 3000);
  14876. SetPlayerInterior(playerid, GetPrisonInterior());
  14877. SetPlayerVirtualWorld(playerid, GetPrisonVirtualWorld());
  14878. }
  14879. case 10:
  14880. {
  14881. SetFreezePos(playerid, 2573.2253,-1512.4327,-48.9141, 3000);
  14882. SetPlayerInterior(playerid, GetPrisonInterior());
  14883. SetPlayerVirtualWorld(playerid, GetPrisonVirtualWorld());
  14884. }
  14885. case 11:
  14886. {
  14887. SetFreezePos(playerid, 2573.2837,-1509.4783,-48.9141, 3000);
  14888. SetPlayerInterior(playerid, GetPrisonInterior());
  14889. SetPlayerVirtualWorld(playerid, GetPrisonVirtualWorld());
  14890. }
  14891. case 12:
  14892. {
  14893. SetFreezePos(playerid, 2573.1831,-1505.6473,-48.9141, 3000);
  14894. SetPlayerInterior(playerid, GetPrisonInterior());
  14895. SetPlayerVirtualWorld(playerid, GetPrisonVirtualWorld());
  14896. }
  14897. case 13:
  14898. {
  14899. SetFreezePos(playerid, 2573.3062,-1502.3737,-48.9141, 3000);
  14900. SetPlayerInterior(playerid, GetPrisonInterior());
  14901. SetPlayerVirtualWorld(playerid, GetPrisonVirtualWorld());
  14902. }
  14903. }
  14904. }
  14905. }
  14906. ResetWeapons(playerid);
  14907. RemoveAttachedObjects(playerid);
  14908. return 1;
  14909. }
  14910. SpectatePlayer(playerid, targetid)
  14911. {
  14912. if (targetid == INVALID_PLAYER_ID)
  14913. {
  14914. TogglePlayerSpectating(playerid, false);
  14915. SpawnPlayer(playerid);
  14916. }
  14917. else
  14918. {
  14919. TogglePlayerSpectating(playerid, true);
  14920. SetPlayerInterior(playerid, GetPlayerInterior(targetid));
  14921. SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(targetid));
  14922. if (IsPlayerInAnyVehicle(targetid))
  14923. {
  14924. PlayerSpectateVehicle(playerid, GetPlayerVehicleID(targetid));
  14925. }
  14926. else
  14927. {
  14928. PlayerSpectatePlayer(playerid, targetid);
  14929. }
  14930. }
  14931. Players[playerid][pSpectate] = targetid;
  14932. return 1;
  14933. }
  14934. INI_GetInteger(File:file, name[])
  14935. {
  14936. new
  14937. retString[16];
  14938. INI_GetValue(file, name, retString, sizeof(retString));
  14939. return strval(retString);
  14940. }
  14941. INI_WriteInt(File:file, name[], value)
  14942. {
  14943. new
  14944. writeString[64];
  14945. format(writeString, sizeof(writeString), "%s = %i\r\n", name, value);
  14946. return fwrite(file, writeString);
  14947. }
  14948. INI_WriteValue(File:file, name[], value[])
  14949. {
  14950. new
  14951. writeString[128];
  14952. format(writeString, sizeof(writeString), "%s = %s\r\n", name, value);
  14953. return fwrite(file, writeString);
  14954. }
  14955. INI_GetValue(File:file, name[], dest[], size = sizeof(dest))
  14956. {
  14957. if (file)
  14958. {
  14959. new
  14960. str[128],
  14961. pos;
  14962. fseek(file, 0, seek_start);
  14963. while (fread(file, str, sizeof(str)))
  14964. {
  14965. if (strfind(str, name, false) == 0)
  14966. {
  14967. if (str[(pos = strlen(name))] == ' ')
  14968. strmid(dest, str, pos + 3, strlen(str), size);
  14969. else
  14970. strmid(dest, str, pos + 1, strlen(str), size);
  14971. if ((pos = strfind(dest, "\r")) != -1)
  14972. dest[pos] = '\0';
  14973. if ((pos = strfind(dest, "\n")) != -1)
  14974. dest[pos] = '\0';
  14975. }
  14976. }
  14977. }
  14978. return 1;
  14979. }
  14980. FormatNumber(number, money = true)
  14981. {
  14982. new
  14983. value[32],
  14984. length;
  14985. format(value, sizeof(value), "%i", (number < 0) ? (-number) : (number));
  14986. length = strlen(value);
  14987. if (length > 3)
  14988. {
  14989. for (new l = 0, i = length; --i >= 0; l ++)
  14990. {
  14991. if ((l % 3 == 0) && l > 0)
  14992. strins(value, ",", i + 1);
  14993. }
  14994. }
  14995. if (money)
  14996. strins(value, "$", 0);
  14997. if (number < 0)
  14998. strins(value, "-", 0);
  14999. return value;
  15000. }
  15001. GetItemDropOffset(name[], &Float:z, &Float:rx, &Float:ry)
  15002. {
  15003. new
  15004. model = GetItemInformation(name, ITEM_INFO_MODEL);
  15005. if (IsWeaponModel(model))
  15006. {
  15007. z = 1.0;
  15008. rx = 93.0;
  15009. ry = 90.0;
  15010. }
  15011. else
  15012. {
  15013. z = 0.9;
  15014. rx = 0.0;
  15015. ry = 0.0;
  15016. }
  15017. for (new i = 0; i < sizeof(g_GroundOffsets); i ++)
  15018. {
  15019. if (!strcmp(g_GroundOffsets[i][e_Item], name))
  15020. {
  15021. z = g_GroundOffsets[i][e_OffsetZ];
  15022. rx = g_GroundOffsets[i][e_OffsetRX];
  15023. ry = g_GroundOffsets[i][e_OffsetRY];
  15024. }
  15025. }
  15026. return 1;
  15027. }
  15028. RemoveAttachedObjects(playerid)
  15029. {
  15030. for (new i = 0; i < MAX_PLAYER_ATTACHED_OBJECTS; i ++)
  15031. {
  15032. if (IsPlayerAttachedObjectSlotUsed(playerid, i))
  15033. {
  15034. RemovePlayerAttachedObject(playerid, i);
  15035. }
  15036. }
  15037. return 1;
  15038. }
  15039. UpdateAttachedObjects(playerid)
  15040. {
  15041. UpdateWeaponHolster(playerid);
  15042. }
  15043. GetAccessoryListStart(category)
  15044. {
  15045. for (new i = 0; i < sizeof(g_AccessoryList); i ++)
  15046. {
  15047. if (g_AccessoryList[i][e_AccessoryCategory] == category)
  15048. {
  15049. return i;
  15050. }
  15051. }
  15052. return INVALID_ID;
  15053. }
  15054. GetAccessoryListEnd(category)
  15055. {
  15056. new
  15057. start = GetAccessoryListStart(category);
  15058. for (new i = start; i < sizeof(g_AccessoryList); i ++)
  15059. {
  15060. if (i + 1 == sizeof(g_AccessoryList) || g_AccessoryList[i + 1][e_AccessoryCategory] != category)
  15061. {
  15062. return i;
  15063. }
  15064. }
  15065. return INVALID_ID;
  15066. }
  15067. HideAccessoryPreviewer(playerid)
  15068. {
  15069. Players[playerid][pAccessoryMenu] = 0;
  15070. HidePlayerTextDraws(playerid, 63, 69);
  15071. CancelSelectTextDraw(playerid);
  15072. }
  15073. UpdateAccessoryPreviewer(playerid)
  15074. {
  15075. new
  15076. index = Players[playerid][pPreviewIndex];
  15077. PlayerTextDrawSetPreviewModel(playerid, Players[playerid][pText][66], g_AccessoryList[index][e_AccessoryModel]);
  15078. PlayerTextDrawHide(playerid, Players[playerid][pText][66]);
  15079. PlayerTextDrawShow(playerid, Players[playerid][pText][66]);
  15080. }
  15081. PreviewAccessory(playerid, index)
  15082. {
  15083. switch (g_AccessoryList[index][e_AccessoryCategory])
  15084. {
  15085. case ACCESSORY_GLASSES:
  15086. {
  15087. SetPlayerAttachedObject(playerid, ATTACHED_SLOT_MISC, g_AccessoryList[index][e_AccessoryModel], 2, 0.102999, 0.041000, 0.000999, 0.000000, 88.500030, 86.300010);
  15088. }
  15089. case ACCESSORY_BANDANAS:
  15090. {
  15091. /*if (g_AccessoryList[index][e_AccessoryModel] == 19521)
  15092. {
  15093. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  15094. SendErrorMessage(playerid, "You are not allowed to purchase this item.");
  15095. }*/
  15096. SetPlayerAttachedObject(playerid, ATTACHED_SLOT_MISC, g_AccessoryList[index][e_AccessoryModel], 2, 0.078534, 0.041857, -0.001727, 268.970458, 1.533374, 269.223754);
  15097. }
  15098. case ACCESSORY_HATS:
  15099. {
  15100. SetPlayerAttachedObject(playerid, ATTACHED_SLOT_MISC, g_AccessoryList[index][e_AccessoryModel], 2, 0.181000, -0.015000, 0.000000, 0.000000, 0.000000, 0.000000);
  15101. }
  15102. case ACCESSORY_BAGS:
  15103. {
  15104. SetPlayerAttachedObject(playerid, ATTACHED_SLOT_MISC, g_AccessoryList[index][e_AccessoryModel], 6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
  15105. }
  15106. }
  15107. EditAttachedObjectEx(playerid, EDIT_TYPE_PREVIEW, ATTACHED_SLOT_MISC);
  15108. SendInfoMessage(playerid, "Click the disk icon to save changes or press ESC to cancel.");
  15109. }
  15110. ShowAccessoryPreviewer(playerid, category)
  15111. {
  15112. new
  15113. start = GetAccessoryListStart(category);
  15114. Players[playerid][pPreviewIndex] = start;
  15115. Players[playerid][pAccessoryMenu] = 1;
  15116. Players[playerid][pCategory] = category;
  15117. PlayerTextDrawSetString(playerid, Players[playerid][pText][65], "Accessories");
  15118. PlayerTextDrawSetPreviewModel(playerid, Players[playerid][pText][66], g_AccessoryList[start][e_AccessoryModel]);
  15119. switch (category)
  15120. {
  15121. case ACCESSORY_GLASSES:
  15122. {
  15123. PlayerTextDrawSetPreviewRot(playerid, Players[playerid][pText][66], 0.0, 0.0, 90.0);
  15124. }
  15125. case ACCESSORY_BANDANAS:
  15126. {
  15127. PlayerTextDrawSetPreviewRot(playerid, Players[playerid][pText][66], 0.0, 0.0, -90.0);
  15128. }
  15129. case ACCESSORY_HATS:
  15130. {
  15131. PlayerTextDrawSetPreviewRot(playerid, Players[playerid][pText][66], 0.0, -90.0, 0.0);
  15132. }
  15133. case ACCESSORY_BAGS:
  15134. {
  15135. PlayerTextDrawSetPreviewRot(playerid, Players[playerid][pText][66], 0.0, 0.0, 0.0);
  15136. }
  15137. }
  15138. ShowPlayerTextDraws(playerid, 63, 69);
  15139. SelectTextDrawEx(playerid, -1);
  15140. return 1;
  15141. }
  15142. GetAccessoryNameFromModel(modelid)
  15143. {
  15144. new
  15145. name[32] = "Unknown";
  15146. for (new i = 0; i < sizeof(g_AccessoryList); i ++)
  15147. {
  15148. if (g_AccessoryList[i][e_AccessoryModel] == modelid)
  15149. {
  15150. strcpy(name, g_AccessoryList[i][e_AccessoryName]);
  15151. break;
  15152. }
  15153. }
  15154. return name;
  15155. }
  15156. GetAccessoryName(playerid, id)
  15157. {
  15158. new
  15159. name[32] = "Unknown";
  15160. if(isnull(Accessories[playerid][id][aName]) || !strcmp(Accessories[playerid][id][aName], "None", true))
  15161. {
  15162. for (new i = 0; i < sizeof(g_AccessoryList); i ++)
  15163. {
  15164. if (g_AccessoryList[i][e_AccessoryModel] == Accessories[playerid][id][aModel])
  15165. {
  15166. strcpy(name, g_AccessoryList[i][e_AccessoryName]);
  15167. break;
  15168. }
  15169. }
  15170. }
  15171. else
  15172. {
  15173. strcpy(name, Accessories[playerid][id][aName]);
  15174. }
  15175. return name;
  15176. }
  15177. ListAccessories(playerid)
  15178. {
  15179. new
  15180. index = 0;
  15181. gListString[0] = 0;
  15182. for (new i = 0; i < MAX_ACCESSORIES; i ++)
  15183. {
  15184. if (Accessories[playerid][i][aExists])
  15185. {
  15186. if (Accessories[playerid][i][aAttached])
  15187. format(gListString, sizeof(gListString), "%s\n%s (Attached) (model ID: %i)", gListString, GetAccessoryName(playerid, i), Accessories[playerid][i][aModel]);
  15188. else
  15189. format(gListString, sizeof(gListString), "%s\n%s (model ID: %i)", gListString, GetAccessoryName(playerid, i), Accessories[playerid][i][aModel]);
  15190. gListedItems[playerid][index++] = i;
  15191. }
  15192. }
  15193. if (index > 0)
  15194. {
  15195. return Dialog_Show(playerid, Accessories, DIALOG_STYLE_LIST, "{FFFFFF}My accessories", gListString, "Select", "Cancel");
  15196. }
  15197. return 0;
  15198. }
  15199. DeleteAccessory(playerid, id)
  15200. {
  15201. if (Accessories[playerid][id][aExists])
  15202. {
  15203. RemovePlayerAttachedObject(playerid, id);
  15204. format(gExecute, sizeof(gExecute), "DELETE FROM rp_accessories WHERE aID = %i", Accessories[playerid][id][aID]);
  15205. mysql_tquery(gConnection, gExecute);
  15206. Accessories[playerid][id][aExists] = 0;
  15207. Accessories[playerid][id][aID] = 0;
  15208. }
  15209. return 1;
  15210. }
  15211. AddAccessory(playerid, name[], modelid, bone, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, Float:sx, Float:sy, Float:sz)
  15212. {
  15213. new
  15214. id = GetNextAccessoryID(playerid);
  15215. if (id != INVALID_ID)
  15216. {
  15217. strcpy(Accessories[playerid][id][aName], name, 32);
  15218. Accessories[playerid][id][aExists] = 1;
  15219. Accessories[playerid][id][aAttached] = 0;
  15220. Accessories[playerid][id][aModel] = modelid;
  15221. Accessories[playerid][id][aBone] = bone;
  15222. Accessories[playerid][id][aOffset][0] = x;
  15223. Accessories[playerid][id][aOffset][1] = y;
  15224. Accessories[playerid][id][aOffset][2] = z;
  15225. Accessories[playerid][id][aOffset][3] = rx;
  15226. Accessories[playerid][id][aOffset][4] = ry;
  15227. Accessories[playerid][id][aOffset][5] = rz;
  15228. Accessories[playerid][id][aOffset][6] = sx;
  15229. Accessories[playerid][id][aOffset][7] = sy;
  15230. Accessories[playerid][id][aOffset][8] = sz;
  15231. AttachObjectsToPlayer(playerid);
  15232. format(gExecute, sizeof(gExecute), "INSERT INTO rp_accessories (ID) VALUES(%i)", Players[playerid][pID]);
  15233. mysql_tquery(gConnection, gExecute, "OnAccessoryAdded", "ii", playerid, id);
  15234. }
  15235. return id;
  15236. }
  15237. SaveAccessory(playerid, id)
  15238. {
  15239. static
  15240. queryString[512];
  15241. if (!Accessories[playerid][id][aExists]) return 0;
  15242. mysql_format(gConnection, queryString, sizeof(queryString), "UPDATE rp_accessories SET aName = '%e', aModel = %i, aBone = %i, aX = '%f', aY = '%f', aZ = '%f', aRX = '%f', aRY = '%f', aRZ = '%f', aSX = '%f', aSY = '%f', aSZ = '%f' WHERE aID = %i",
  15243. Accessories[playerid][id][aName],
  15244. Accessories[playerid][id][aModel],
  15245. Accessories[playerid][id][aBone],
  15246. Accessories[playerid][id][aOffset][0],
  15247. Accessories[playerid][id][aOffset][1],
  15248. Accessories[playerid][id][aOffset][2],
  15249. Accessories[playerid][id][aOffset][3],
  15250. Accessories[playerid][id][aOffset][4],
  15251. Accessories[playerid][id][aOffset][5],
  15252. Accessories[playerid][id][aOffset][6],
  15253. Accessories[playerid][id][aOffset][7],
  15254. Accessories[playerid][id][aOffset][8],
  15255. Accessories[playerid][id][aID]
  15256. );
  15257. return mysql_tquery(gConnection, queryString);
  15258. }
  15259. AttachObjectsToPlayer(playerid)
  15260. {
  15261. for (new i = 0; i < MAX_ACCESSORIES; i ++)
  15262. {
  15263. if (Accessories[playerid][i][aExists])
  15264. {
  15265. if (!Accessories[playerid][i][aAttached])
  15266. {
  15267. RemovePlayerAttachedObject(playerid, i);
  15268. }
  15269. else
  15270. {
  15271. SetPlayerAttachedObject(playerid, i, Accessories[playerid][i][aModel], Accessories[playerid][i][aBone],
  15272. Accessories[playerid][i][aOffset][0],
  15273. Accessories[playerid][i][aOffset][1],
  15274. Accessories[playerid][i][aOffset][2],
  15275. Accessories[playerid][i][aOffset][3],
  15276. Accessories[playerid][i][aOffset][4],
  15277. Accessories[playerid][i][aOffset][5],
  15278. Accessories[playerid][i][aOffset][6],
  15279. Accessories[playerid][i][aOffset][7],
  15280. Accessories[playerid][i][aOffset][8]
  15281. );
  15282. }
  15283. }
  15284. }
  15285. return 1;
  15286. }
  15287. GetWeaponIDFromModel(model)
  15288. {
  15289. for (new i = 0; i < sizeof(g_WeaponInfo); i ++)
  15290. {
  15291. if (g_WeaponInfo[i][e_WeaponModel] == model)
  15292. {
  15293. return i;
  15294. }
  15295. }
  15296. return 0;
  15297. }
  15298. /*
  15299. {"Steroids", 2891, 1, true, true, true},
  15300. {"Heroin", 2891, 1, true, true, true},
  15301. {"LSD", 2891, 1, true, true, true},
  15302. {"Ecstasy", 2891, 1, true, true, true},
  15303. {"Marijuana", 2891, 1, true, true, true},
  15304. {"Crack", 2891, 1, true, true, true},
  15305. {"Cocaine", 2891, 1, true, true, true},
  15306. {"Methamphetamine", 2891, 1, true, true, true},
  15307. {"PCP", 2891, 1, true, true, true},
  15308. */
  15309. GetPackagePrice(type)
  15310. {
  15311. if (type == PACKAGE_TYPE_MELEE)
  15312. return 3000;
  15313. else if (type == PACKAGE_TYPE_PISTOLS)
  15314. return 22500;
  15315. else if (type == PACKAGE_TYPE_SHOTGUNS)
  15316. return 21000;
  15317. else if (type == PACKAGE_TYPE_SMGS)
  15318. return 10500;
  15319. else if (type == PACKAGE_TYPE_RIFLES)
  15320. return 42000;
  15321. else if (type == PACKAGE_TYPE_EXPLOSIVES)
  15322. return 150000;
  15323. else if (type == PACKAGE_TYPE_STEROIDS)
  15324. return 2000;
  15325. else if (type == PACKAGE_TYPE_HEROIN)
  15326. return 6100;
  15327. else if (type == PACKAGE_TYPE_LSD)
  15328. return 4100;
  15329. else if (type == PACKAGE_TYPE_ECSTASY)
  15330. return 4100;
  15331. else if (type == PACKAGE_TYPE_MARIJUANA)
  15332. return 4100;
  15333. else if (type == PACKAGE_TYPE_CRACK)
  15334. return 4100;
  15335. else if (type == PACKAGE_TYPE_COCAINE)
  15336. return 4100;
  15337. else if (type == PACKAGE_TYPE_METH)
  15338. return 4100;
  15339. else if (type == PACKAGE_TYPE_PCP)
  15340. return 4100;
  15341. else if (type == PACKAGE_TYPE_AMMO_1)
  15342. return 4100;
  15343. else if (type == PACKAGE_TYPE_AMMO_2)
  15344. return 4000;
  15345. else if (type == PACKAGE_TYPE_AMMO_3)
  15346. return 2500;
  15347. else if (type == PACKAGE_TYPE_AMMO_4)
  15348. return 5000;
  15349. else if (type == PACKAGE_TYPE_AMMO_5)
  15350. return 5000;
  15351. else if (type == PACKAGE_TYPE_AMMO_6)
  15352. return 5000;
  15353. return 0;
  15354. }
  15355. IsWeaponPackage(const item[])
  15356. {
  15357. if (!strcmp(item, "Melee Package")) return 1;
  15358. else if (!strcmp(item, "Pistol Package")) return 1;
  15359. else if (!strcmp(item, "Shotgun Package")) return 1;
  15360. else if (!strcmp(item, "SMG Package")) return 1;
  15361. else if (!strcmp(item, "Rifle Package")) return 1;
  15362. return 0;
  15363. }
  15364. GetItemInformation(const item[], type)
  15365. {
  15366. for (new i = 0; i < sizeof(g_ItemList); i ++)
  15367. {
  15368. if (!strcmp(g_ItemList[i][e_ItemName], item))
  15369. {
  15370. if (type == ITEM_INFO_MODEL)
  15371. return g_ItemList[i][e_ItemModel];
  15372. else if (type == ITEM_INFO_WEIGHT)
  15373. return g_ItemList[i][e_ItemWeight];
  15374. else if (type == ITEM_INFO_VALUE)
  15375. return g_ItemList[i][e_ItemValue];
  15376. else if (type == ITEM_INFO_WEAPON_ID)
  15377. {
  15378. new weaponid = GetWeaponIDFromModel(g_ItemList[i][e_ItemModel]);
  15379. if (weaponid == 43 || weaponid == 46) return 0;
  15380. return weaponid;
  15381. }
  15382. else if (type == ITEM_INFO_ILLEGAL)
  15383. return g_ItemList[i][e_ItemIllegal];
  15384. else if (type == ITEM_INFO_STACKABLE)
  15385. return g_ItemList[i][e_ItemStackable];
  15386. else if (type == ITEM_INFO_DRUG)
  15387. return g_ItemList[i][e_ItemModel] == 2891;
  15388. }
  15389. }
  15390. return 0;
  15391. }
  15392. ShowTimeForPlayer(playerid, show)
  15393. {
  15394. if (show)
  15395. {
  15396. TextDrawShowForPlayer(playerid, gGlobalTextdraws[1]);
  15397. }
  15398. else
  15399. {
  15400. TextDrawHideForPlayer(playerid, gGlobalTextdraws[1]);
  15401. }
  15402. }
  15403. ShowSpeedometer(playerid, show)
  15404. {
  15405. if (show)
  15406. {
  15407. PlayerTextDrawShow(playerid, Players[playerid][pText][26]);
  15408. }
  15409. else
  15410. {
  15411. PlayerTextDrawHide(playerid, Players[playerid][pText][26]);
  15412. }
  15413. }
  15414. ShowFuelGauge(playerid, show)
  15415. {
  15416. if (show)
  15417. {
  15418. ShowPlayerTextDraws(playerid, 27, 32);
  15419. if (IsPlayerInAnyVehicle(playerid) && IsPoweredVehicle(GetPlayerVehicleID(playerid)))
  15420. {
  15421. UpdateFuelGauge(GetPlayerVehicleID(playerid));
  15422. }
  15423. }
  15424. else
  15425. {
  15426. HidePlayerTextDraws(playerid, 27, 32);
  15427. }
  15428. return 1;
  15429. }
  15430. GivePlayerHealth(playerid, Float:amount)
  15431. {
  15432. new Float:health;
  15433. GetPlayerHealth(playerid, health);
  15434. health += amount;
  15435. if (health > 100.0) {
  15436. SetPlayerHealth(playerid, 100.0);
  15437. } else {
  15438. SetPlayerHealth(playerid, health);
  15439. }
  15440. }
  15441. AddFitnessForPlayer(playerid)
  15442. {
  15443. if (Players[playerid][pFitness] < 100)
  15444. {
  15445. Players[playerid][pFitness]++;
  15446. }
  15447. }
  15448. Float:GetVehicleKMH(vehicleid)
  15449. {
  15450. new
  15451. Float:fX,
  15452. Float:fY,
  15453. Float:fZ;
  15454. if (GetVehicleVelocity(vehicleid, fX, fY, fZ))
  15455. {
  15456. return floatsqroot((fX * fX) + (fY * fY) + (fZ * fZ)) * 181.5;
  15457. }
  15458. return 0.0;
  15459. }
  15460. Float:GetVehicleMPH(vehicleid)
  15461. {
  15462. new
  15463. Float:fX,
  15464. Float:fY,
  15465. Float:fZ;
  15466. if (GetVehicleVelocity(vehicleid, fX, fY, fZ))
  15467. {
  15468. return floatsqroot( fX*fX + fY*fY + fZ*fZ ) * 180 / 1.609344; // Mph
  15469. }
  15470. return 0.0;
  15471. }
  15472. SetAlarmStatus(vehicleid, enable)
  15473. {
  15474. new engine, lights, alarm, doors, bonnet, boot, objective;
  15475. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  15476. SetVehicleParamsEx(vehicleid, engine, lights, enable, doors, bonnet, boot, objective);
  15477. }
  15478. SetEngineStatus(vehicleid, enable)
  15479. {
  15480. new engine, lights, alarm, doors, bonnet, boot, objective;
  15481. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  15482. SetVehicleParamsEx(vehicleid, enable, lights, alarm, doors, bonnet, boot, objective);
  15483. }
  15484. GetEngineStatus(vehicleid)
  15485. {
  15486. new engine, lights, alarm, doors, bonnet, boot, objective;
  15487. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  15488. return (engine == VEHICLE_PARAMS_ON);
  15489. }
  15490. SetLightsStatus(vehicleid, enable)
  15491. {
  15492. new engine, lights, alarm, doors, bonnet, boot, objective;
  15493. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  15494. SetVehicleParamsEx(vehicleid, engine, enable, alarm, doors, bonnet, boot, objective);
  15495. }
  15496. GetLightsStatus(vehicleid)
  15497. {
  15498. new engine, lights, alarm, doors, bonnet, boot, objective;
  15499. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  15500. return (lights == VEHICLE_PARAMS_ON);
  15501. }
  15502. SetLockStatus(vehicleid, enable)
  15503. {
  15504. new engine, lights, alarm, doors, bonnet, boot, objective;
  15505. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  15506. SetVehicleParamsEx(vehicleid, engine, lights, alarm, enable, bonnet, boot, objective);
  15507. }
  15508. SetHoodStatus(vehicleid, enable)
  15509. {
  15510. new engine, lights, alarm, doors, bonnet, boot, objective;
  15511. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  15512. SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, enable, boot, objective);
  15513. }
  15514. GetHoodStatus(vehicleid)
  15515. {
  15516. new engine, lights, alarm, doors, bonnet, boot, objective;
  15517. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  15518. return (bonnet == VEHICLE_PARAMS_ON);
  15519. }
  15520. SetBootStatus(vehicleid, enable)
  15521. {
  15522. new engine, lights, alarm, doors, bonnet, boot, objective;
  15523. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  15524. SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, enable, objective);
  15525. }
  15526. GetBootStatus(vehicleid)
  15527. {
  15528. new engine, lights, alarm, doors, bonnet, boot, objective;
  15529. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  15530. return (boot == VEHICLE_PARAMS_ON);
  15531. }
  15532. /*GetLockStatus(vehicleid)
  15533. {
  15534. new engine, lights, alarm, doors, bonnet, boot, objective;
  15535. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  15536. return (doors == VEHICLE_PARAMS_ON);
  15537. }*/
  15538. EngineCaller(playerid) // Code for starting the vehicle's engine.
  15539. {
  15540. new vehicleid = GetPlayerVehicleID(playerid);
  15541. if (IsPoweredVehicle(vehicleid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  15542. {
  15543. if (GetEngineStatus(vehicleid))
  15544. {
  15545. SetEngineStatus(vehicleid, 0);
  15546. SendInfoMessage(playerid, "You have turned off the engine.");
  15547. }
  15548. else
  15549. {
  15550. new id = GetVehicleID(vehicleid);
  15551. if (!VehicleInformation[vehicleid][vFuel])
  15552. {
  15553. SendErrorMessage(playerid, "This vehicle cannot start as it has no fuel.");
  15554. }
  15555. else if (GetVehicleHealthEx(vehicleid) <= 300.0)
  15556. {
  15557. SendErrorMessage(playerid, "This vehicle is totalled and can't be started.");
  15558. }
  15559. else if(!GetVehicleKeys(playerid, vehicleid))
  15560. {
  15561. if(IsRentalCar(vehicleid))
  15562. {
  15563. return SendErrorMessage(playerid, "You can't hotwire a rental vehicle.");
  15564. }
  15565. if (Players[playerid][pHotwire] == vehicleid)
  15566. {
  15567. Players[playerid][pHotwire] = INVALID_VEHICLE_ID;
  15568. Players[playerid][pHotwireTime] = 0;
  15569. SendInfoMessage(playerid, "You have stopped hotwiring this vehicle.");
  15570. HideFooterText(playerid);
  15571. }
  15572. else
  15573. {
  15574. ShowActionBubble(playerid, "* %s takes off the ignition cover and begins hotwiring the vehicle.", ReturnNameEx(playerid));
  15575. if (IsValidVehicleID(id) && Vehicles[id][vAlarm])
  15576. {
  15577. SetAlarmStatus(vehicleid, true);
  15578. foreach (new i : Player)
  15579. {
  15580. if (IsVehicleOwner(i, id))
  15581. {
  15582. SendFormatMessage(i, COLOR_YELLOW, "* Text from OnStar: The alarm has been activated on your %s with the license plate '%s'.", GetVehicleModelName(Vehicles[id][vModel]), Vehicles[id][vPlate]);
  15583. }
  15584. if (GetPlayerFactionType(i) == FACTION_LEO)
  15585. {
  15586. new
  15587. Float:x,
  15588. Float:y,
  15589. Float:z;
  15590. GetVehiclePos( Vehicles[id][vVehicle] , x, y, z);
  15591. SendFormatMessage(i, COLOR_GREEN, "* [DISPATCH] Vehicle Alarm has been Activated any available units in the area please respond.");
  15592. SendFormatMessage(i, COLOR_GREEN, "* [DISPATCH] %s located in %s, plate: '%s' *", GetVehicleModelName(Vehicles[id][vModel]), GetZoneName(x, y, z), Vehicles[id][vPlate]);
  15593. //break;
  15594. }
  15595. }
  15596. }
  15597. Players[playerid][pHotwire] = vehicleid;
  15598. Players[playerid][pHotwireTime] = 90;
  15599. ShowFooterText(playerid, "~w~Hotwiring... 90 seconds remaining.", 1500);
  15600. SendInfoMessage(playerid, "You are attempting to hotwire this vehicle...");
  15601. }
  15602. }
  15603. else
  15604. {
  15605. if (!Players[playerid][pStartEngine])
  15606. {
  15607. Players[playerid][pStartEngine] = 1;
  15608. SetTimerEx("StartEngine", 1000, false, "ii", playerid, vehicleid);
  15609. SendInfoMessage(playerid, "You are starting the engine of the vehicle...");
  15610. }
  15611. }
  15612. }
  15613. }
  15614. return 1;
  15615. }
  15616. IsPlayerDrivingVehicle(playerid, vehicleid)
  15617. {
  15618. return (GetPlayerState(playerid) == PLAYER_STATE_DRIVER && GetPlayerVehicleID(playerid) == vehicleid);
  15619. }
  15620. IsPlayerInTaxi(playerid)
  15621. {
  15622. if(!Players[playerid][pTaxiDuty]) return 1;
  15623. new modelid = GetVehicleModel(GetPlayerVehicleID(playerid));
  15624. if(modelid == 420) return true; //Taxi
  15625. if(modelid == 438) return true; //Cabbie
  15626. if(modelid == 426) return true; //Premier
  15627. if(modelid == 418) return true; //Moonbeam
  15628. if(modelid == 445) return true; //Admiral
  15629. return false;
  15630. }
  15631. stock IsSuitableTaxiCar(vehicleid)
  15632. {
  15633. if(vehicleid == 0) return false;
  15634. new modelid = GetVehicleModel(vehicleid);
  15635. if(modelid == 420) return true; //Taxi
  15636. if(modelid == 438) return true; //Cabbie
  15637. if(modelid == 426) return true; //Premier
  15638. if(modelid == 418) return true; //Moonbeam
  15639. if(modelid == 445) return true; //Admiral
  15640. return false;
  15641. }
  15642. stock CreateVehicleObject(objectid, vehicleid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
  15643. {
  15644. new object = CreateDynamicObject(objectid, 0, 0, 0, 0, 0, 0);
  15645. AttachDynamicObjectToVehicle(object, vehicleid, x, y, z, rx, ry, rz);
  15646. return object;
  15647. }
  15648. IsTransportVehicle(vehicleid)
  15649. {
  15650. switch (GetVehicleModel(vehicleid))
  15651. {
  15652. case 413, 414, 418, 422, 440, 459, 478, 482, 498, 499, 543, 554, 609:
  15653. {
  15654. return 1;
  15655. }
  15656. }
  15657. return 0;
  15658. }
  15659. VehicleHasDoors(vehicleid)
  15660. {
  15661. switch (GetVehicleModel(vehicleid))
  15662. {
  15663. case 400..424, 426..429, 431..440, 442..445, 451, 455, 456, 458, 459, 466, 467, 470, 474, 475, 477..480, 482, 483, 486, 489, 490..492, 494..496, 498..500, 502..508, 514..518, 524..529, 533..536, 540..547, 549..552, 554..562, 565..568, 573, 575, 576, 578..580, 582, 585, 587..589, 596..605, 609:
  15664. return 1;
  15665. }
  15666. return 0;
  15667. }
  15668. IsValidNOSVehicle(vehicleid)
  15669. {
  15670. if (!IsValidVehicle(vehicleid) || IsAircraftVehicle(vehicleid))
  15671. return 0;
  15672. switch (GetVehicleModel(vehicleid))
  15673. {
  15674. case 581, 523, 462, 521, 463, 522, 461, 448, 468, 586, 509, 481, 510, 472, 473, 493, 595, 484, 430, 453, 452, 446, 454, 590, 569, 537, 538, 570, 449:
  15675. return 0;
  15676. }
  15677. return 1;
  15678. }
  15679. IsAircraftVehicle(vehicleid)
  15680. {
  15681. switch (GetVehicleModel(vehicleid))
  15682. {
  15683. case 417, 425, 447, 460, 464, 469, 476, 487, 488, 497, 501, 511..513, 519, 520, 548, 553, 563, 577, 592, 593:
  15684. return 1;
  15685. }
  15686. return 0;
  15687. }
  15688. IsWindowedVehicle(vehicleid)
  15689. {
  15690. new
  15691. model = GetVehicleModel(vehicleid);
  15692. if (400 <= model <= 611)
  15693. {
  15694. static const g_WindowInfo[] = {
  15695. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  15696. 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1,
  15697. 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1,
  15698. 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1,
  15699. 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,
  15700. 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  15701. 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0,
  15702. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  15703. 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1,
  15704. 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1,
  15705. 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0
  15706. };
  15707. return g_WindowInfo[model - 400];
  15708. }
  15709. return 0;
  15710. }
  15711. IsPoweredVehicle(vehicleid)
  15712. {
  15713. new
  15714. model = GetVehicleModel(vehicleid);
  15715. if (400 <= model <= 611)
  15716. {
  15717. static const g_EngineInfo[] = {
  15718. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  15719. 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  15720. 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  15721. 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  15722. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  15723. 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,
  15724. 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0
  15725. };
  15726. return g_EngineInfo[model - 400];
  15727. }
  15728. return 0;
  15729. }
  15730. ResetInventoryItem(playerid, itemid)
  15731. {
  15732. Inventory[playerid][itemid][invID] = 0;
  15733. Inventory[playerid][itemid][invExists] = 0;
  15734. Inventory[playerid][itemid][invName] = 0;
  15735. Inventory[playerid][itemid][invValue] = 0;
  15736. Inventory[playerid][itemid][invSerial] = 0;
  15737. for (new i = 0; i < 6; i ++) {
  15738. Inventory[playerid][itemid][invOffset][i] = 0.0;
  15739. }
  15740. }
  15741. OnItemDelete(playerid, item)
  15742. {
  15743. if (!strcmp(Inventory[playerid][item][invName], "Mobile Phone") && Inventory[playerid][item][invValue] > 0 && Inventory[playerid][item][invValue] == Players[playerid][pPhone])
  15744. {
  15745. HangupCall(playerid);
  15746. Players[playerid][pPhone] = 0;
  15747. }
  15748. if (!strcmp(Inventory[playerid][item][invName], "Stereo") && Stereos[playerid][pStereoID] == item)
  15749. {
  15750. ResetStereo(playerid);
  15751. }
  15752. if (!strcmp(Inventory[playerid][item][invName], "Mask") && Players[playerid][pMaskID] == Inventory[playerid][item][invValue])
  15753. {
  15754. Players[playerid][pMaskID] = 0;
  15755. }
  15756. if (!strcmp(Inventory[playerid][item][invName], "Walkie Talkie") && Players[playerid][pChannel] == Inventory[playerid][item][invValue])
  15757. {
  15758. Players[playerid][pChannel] = 0;
  15759. }
  15760. if (!strcmp(Inventory[playerid][item][invName], "Portable Radio") && Players[playerid][pChannel] == Inventory[playerid][item][invValue])
  15761. {
  15762. Players[playerid][pChannel] = 0;
  15763. }
  15764. if (!strcmp(Inventory[playerid][item][invName], "Camera") && Players[playerid][pCamera] == Inventory[playerid][item][invID])
  15765. {
  15766. Players[playerid][pCamera] = 0;
  15767. SetWeaponsForPlayer(playerid);
  15768. }
  15769. }
  15770. RemoveItemFromInventory(playerid, item)
  15771. {
  15772. if (Inventory[playerid][item][invExists])
  15773. {
  15774. OnItemDelete(playerid, item);
  15775. format(gExecute, sizeof(gExecute), "DELETE FROM rp_items WHERE itemID = %i", Inventory[playerid][item][invID]);
  15776. mysql_tquery(gConnection, gExecute);
  15777. Inventory[playerid][item][invExists] = 0;
  15778. Inventory[playerid][item][invValue] = 0;
  15779. Inventory[playerid][item][invSerial] = 0;
  15780. }
  15781. return 1;
  15782. }
  15783. RemoveItemValue(playerid, item, amount)
  15784. {
  15785. if (Inventory[playerid][item][invExists])
  15786. {
  15787. Inventory[playerid][item][invValue] = Inventory[playerid][item][invValue] - amount;
  15788. if (Inventory[playerid][item][invValue] <= 0) {
  15789. RemoveItemFromInventory(playerid, item);
  15790. } else {
  15791. SaveItem(playerid, item);
  15792. }
  15793. }
  15794. }
  15795. SetItemValue(playerid, item, value)
  15796. {
  15797. if (Inventory[playerid][item][invExists])
  15798. {
  15799. Inventory[playerid][item][invValue] = value;
  15800. SaveItem(playerid, item);
  15801. }
  15802. }
  15803. SaveItem(playerid, item)
  15804. {
  15805. if (Inventory[playerid][item][invExists])
  15806. {
  15807. format(gExecute, sizeof(gExecute), "UPDATE rp_items SET itemValue = %i, itemSerial = %i WHERE itemID = %i",
  15808. Inventory[playerid][item][invValue],
  15809. Inventory[playerid][item][invSerial],
  15810. Inventory[playerid][item][invID]
  15811. );
  15812. mysql_tquery(gConnection, gExecute);
  15813. }
  15814. return 1;
  15815. }
  15816. /*GetVehModel(vehicle)
  15817. {
  15818. return GetVehicleModel(Vehicles[vehicle][vModel]);
  15819. }
  15820. GetVehModel2(vehicle)
  15821. {
  15822. return Vehicles[vehicle][vModel];
  15823. }*/
  15824. GetTrunkCapacity(vehicle)
  15825. {
  15826. if (!IsValidVehicleID(vehicle))
  15827. {
  15828. return 0;
  15829. }
  15830. else if (!VehicleHasDoors(Vehicles[vehicle][vVehicle]))
  15831. {
  15832. return 0;
  15833. }
  15834. /*switch (Vehicles[vehicle][vModel])
  15835. {
  15836. case 403, 415, 429, 434, 443, 451, 457, 477, 480, 491, 496, 506:
  15837. return 10;
  15838. case 401, 402, 410, 411, 412, 419, 436, 439, 445, 458, 466, 467, 474, 475, 492, 507:
  15839. return 20;
  15840. case 405, 420, 421, 426, 438, 479:
  15841. return 30;
  15842. case 404, 470:
  15843. return 40;
  15844. case 400, 407, 409, 422, 442, 478, 489:
  15845. return 50;
  15846. case 413, 416, 418, 440, 459, 482, 483, 490, 508:
  15847. return 70;
  15848. case 414, 427, 428, 456:
  15849. return 100;
  15850. case 433, 455, 498, 499:
  15851. return 150;
  15852. case 431, 437, 435, 450:
  15853. return 200;
  15854. default:
  15855. return 5;
  15856. }*/
  15857. switch (Vehicles[vehicle][vModel])
  15858. {
  15859. case 400, 404, 413, 418, 423, 440, 442, 458, 459, 470, 478, 479, 482, 483, 489..491, 495, 505, 543, 552, 554, 561, 579, 580, 582, 599:
  15860. return 30;
  15861. case 406, 407, 408, 414, 427, 428, 433, 455, 456, 498, 499, 508, 544, 573, 578, 609:
  15862. return 50;
  15863. case 435, 450, 591:
  15864. return 100;
  15865. default:
  15866. return 20;
  15867. }
  15868. return 0;
  15869. }
  15870. GetSafeTotalWeight(id)
  15871. {
  15872. new total;
  15873. for (new i = 0; i < MAX_STORED_ITEMS; i ++)
  15874. {
  15875. if (StoredItems[i][stExists] && StoredItems[i][stFurniture] == Furniture[id][fID])
  15876. {
  15877. total = total + GetItemInformation(StoredItems[i][stName], ITEM_INFO_WEIGHT);
  15878. }
  15879. }
  15880. return total;
  15881. }
  15882. GetTrunkTotalWeight(vehicle)
  15883. {
  15884. new total;
  15885. for (new i = 0; i < MAX_STORED_ITEMS; i ++)
  15886. {
  15887. if (StoredItems[i][stExists] && StoredItems[i][stVehicle] == Vehicles[vehicle][vID])
  15888. {
  15889. total = total + GetItemInformation(StoredItems[i][stName], ITEM_INFO_WEIGHT);
  15890. }
  15891. }
  15892. return total;
  15893. }
  15894. GetTrashbinTotalWeight(id)
  15895. {
  15896. new total;
  15897. for (new i = 0; i < MAX_STORED_ITEMS; i ++)
  15898. {
  15899. if (StoredItems[i][stExists] && StoredItems[i][stTrashbin] == Trashbins[id][tID])
  15900. {
  15901. total = total + GetItemInformation(StoredItems[i][stName], ITEM_INFO_WEIGHT);
  15902. }
  15903. }
  15904. return total;
  15905. }
  15906. AddItemToTrunk(playerid, vehicle, itemid)
  15907. {
  15908. if (GetItemInformation(Inventory[playerid][itemid][invName], ITEM_INFO_WEIGHT) + GetTrunkTotalWeight(vehicle) > GetTrunkCapacity(vehicle))
  15909. return INVALID_ID;
  15910. else
  15911. return SetPVarInt(playerid, "tempVehicle", vehicle), TransferItem(playerid, itemid, TRANSFER_TO_TRUNK, Vehicles[vehicle][vID]);
  15912. }
  15913. AddItemToSafe(playerid, safe, itemid)
  15914. {
  15915. if (GetItemInformation(Inventory[playerid][itemid][invName], ITEM_INFO_WEIGHT) + GetSafeTotalWeight(safe) > MAX_SAFE_WEIGHT)
  15916. return INVALID_ID;
  15917. else
  15918. return TransferItem(playerid, itemid, TRANSFER_TO_SAFE, Furniture[safe][fID]);
  15919. }
  15920. AddItemToTrashbin(playerid, trashbin, itemid)
  15921. {
  15922. if (GetItemInformation(Inventory[playerid][itemid][invName], ITEM_INFO_WEIGHT) + GetTrashbinTotalWeight(trashbin) > MAX_TRASHBIN_WEIGHT)
  15923. return INVALID_ID;
  15924. else
  15925. return TransferItem(playerid, itemid, TRANSFER_TO_TRASH, Trashbins[trashbin][tID]);
  15926. }
  15927. TransferItemToPlayer(playerid, targetid, itemid)
  15928. {
  15929. if (GetItemInformation(Inventory[playerid][itemid][invName], ITEM_INFO_WEIGHT) + GetInventoryTotalWeight(targetid) > GetInventoryMaxWeight(targetid))
  15930. return INVALID_ID;
  15931. else
  15932. return TransferItem(playerid, itemid, TRANSFER_TO_PLAYER, targetid);
  15933. }
  15934. AddSerialToRegistry(serial, weapon[], owner[], registrar[])
  15935. {
  15936. format(gExecute, sizeof(gExecute), "INSERT INTO rp_serials (Serial, Weapon, Owner, Registrar, Date) VALUES(%i, '%s', '%s', '%s', NOW())", serial, mysql_escaped(weapon), mysql_escaped(owner), mysql_escaped(registrar));
  15937. mysql_tquery(gConnection, gExecute);
  15938. }
  15939. IsSufficientSpace(playerid, const item[])
  15940. {
  15941. if (GetNextItemID(playerid) == INVALID_ID || GetItemInformation(item, ITEM_INFO_WEIGHT) + GetInventoryTotalWeight(playerid) > GetInventoryMaxWeight(playerid))
  15942. {
  15943. return 0;
  15944. }
  15945. return 1;
  15946. }
  15947. GetInventoryItemID(playerid, const item[], value = -1)
  15948. {
  15949. for (new i = 0; i < MAX_INVENTORY_ITEMS; i ++)
  15950. {
  15951. if (Inventory[playerid][i][invExists] && !strcmp(Inventory[playerid][i][invName], item))
  15952. {
  15953. if (value != -1 && Inventory[playerid][i][invValue] != value)
  15954. continue;
  15955. return i;
  15956. }
  15957. }
  15958. return INVALID_ID;
  15959. }
  15960. stock IsItemInInventory(playerid, const item[])
  15961. {
  15962. new
  15963. item = GetInventoryItemID(playerid, item);
  15964. if (item == INVALID_ID) return 0;
  15965. return 1;
  15966. }
  15967. stock ItemID(playerid, const item[])
  15968. {
  15969. new
  15970. item = GetInventoryItemID(playerid, item);
  15971. if (item == INVALID_ID) return 0;
  15972. return item;
  15973. }
  15974. AddItemToInventory(playerid, const item[], value = 0, serial = 0)
  15975. {
  15976. new
  15977. id = GetNextItemID(playerid);
  15978. if (isnull(item))
  15979. {
  15980. return INVALID_ID;
  15981. }
  15982. else if (id != INVALID_ID && IsSufficientSpace(playerid, item))
  15983. {
  15984. if (GetItemInformation(item, ITEM_INFO_STACKABLE)) {
  15985. new itemid = GetInventoryItemID(playerid, item);
  15986. if (itemid != INVALID_ID) {
  15987. SetItemValue(playerid, itemid, Inventory[playerid][itemid][invValue] + value);
  15988. return itemid;
  15989. }
  15990. }
  15991. if (ispacked(item)) {
  15992. strunpack(Inventory[playerid][id][invName], item, MAX_ITEM_NAME);
  15993. } else {
  15994. strcpy(Inventory[playerid][id][invName], item, MAX_ITEM_NAME);
  15995. }
  15996. Inventory[playerid][id][invExists] = 1;
  15997. Inventory[playerid][id][invValue] = value;
  15998. Inventory[playerid][id][invSerial] = serial;
  15999. format(gExecute, sizeof(gExecute), "INSERT INTO rp_items (itemName, itemValue, itemOwner, itemSerial) VALUES('%s', %i, %i, %i)", Inventory[playerid][id][invName], value, Players[playerid][pID], serial);
  16000. mysql_tquery(gConnection, gExecute, "OnItemInsertion", "ii", playerid, id);
  16001. return id;
  16002. }
  16003. return INVALID_ID;
  16004. }
  16005. GetTotalNearbyItems(playerid)
  16006. {
  16007. new count = 0;
  16008. for (new i = 0; i < MAX_DROPPED_ITEMS; i ++)
  16009. {
  16010. if (DropItems[i][dExists] && IsPlayerNearPoint(playerid, 1.0, DropItems[i][dSpawn][0], DropItems[i][dSpawn][1], DropItems[i][dSpawn][2], DropItems[i][dInterior], DropItems[i][dWorld]))
  16011. {
  16012. count++;
  16013. }
  16014. }
  16015. return count;
  16016. }
  16017. GetClosestDropItem(playerid)
  16018. {
  16019. for (new i = 0; i < MAX_DROPPED_ITEMS; i ++)
  16020. {
  16021. if (DropItems[i][dExists] && IsPlayerNearPoint(playerid, 1.0, DropItems[i][dSpawn][0], DropItems[i][dSpawn][1], DropItems[i][dSpawn][2], DropItems[i][dInterior], DropItems[i][dWorld]))
  16022. {
  16023. return i;
  16024. }
  16025. }
  16026. return INVALID_ID;
  16027. }
  16028. IsWeightsInUse(playerid)
  16029. {
  16030. foreach (new i : Player)
  16031. {
  16032. if (Players[i][pWorkout] == WORKOUT_DUMBELLS && IsPlayerInRangeOfPlayer(i, playerid, 10.0))
  16033. {
  16034. return 1;
  16035. }
  16036. }
  16037. return 0;
  16038. }
  16039. IsTreadmillInUse(playerid)
  16040. {
  16041. foreach (new i : Player)
  16042. {
  16043. if (Players[i][pWorkout] == WORKOUT_TREADMILL && IsPlayerInRangeOfPlayer(i, playerid, 10.0))
  16044. {
  16045. return 1;
  16046. }
  16047. }
  16048. return 0;
  16049. }
  16050. LoadCheck(playerid)
  16051. {
  16052. /*if (Players[playerid][pJob] == JOB_TRANSPORTER && Players[playerid][pWorking] && Players[playerid][pGoods])
  16053. {
  16054. for (new i = 0; i < MAX_VEHICLES; i ++)
  16055. {
  16056. if (IsValidVehicle(i) && IsPlayerInRangeOfVehicle(playerid, i, 5.0))
  16057. {
  16058. if (!IsTransportVehicle(i))
  16059. {
  16060. SendErrorMessage(playerid, "You can't load goods into this vehicle.");
  16061. }
  16062. else if (VehicleInformation[i][vGoods] > 0)
  16063. {
  16064. SendErrorMessage(playerid, "This vehicle is already loaded. Please find another vehicle.");
  16065. }
  16066. else
  16067. {
  16068. VehicleInformation[i][vGoods] = Players[playerid][pGoods];
  16069. VehicleInformation[i][vObject] = CreateDynamicObject(1220, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
  16070. Players[playerid][pWorking] = 0;
  16071. Players[playerid][pGoods] = 0;
  16072. AttachDynamicObjectToVehicle(VehicleInformation[i][vObject], i, 0.0, -1.5, 0.0, 0.0, 0.0, 0.0);
  16073. ApplyAnimation(playerid, "CARRY", "putdwn", 4.1, 0, 0, 0, 0, 0, 1);
  16074. SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE);
  16075. RemovePlayerAttachedObject(playerid, ATTACHED_SLOT_MISC);
  16076. SendInfoMessage(playerid, "You have loaded the goods. Use /deliver at any %s to get paid.", GetCompanyType(VehicleInformation[i][vGoods]));
  16077. return 1;
  16078. }
  16079. }
  16080. }
  16081. }*/
  16082. if (Players[playerid][pWorking])
  16083. {
  16084. switch (Players[playerid][pJob])
  16085. {
  16086. case JOB_TRANSPORTER:
  16087. {
  16088. if (Players[playerid][pGoods])
  16089. {
  16090. for (new i = 0; i < MAX_VEHICLES; i ++)
  16091. {
  16092. if (IsValidVehicle(i) && IsPlayerInRangeOfVehicle(playerid, i, 5.0))
  16093. {
  16094. if (!IsTransportVehicle(i))
  16095. {
  16096. SendErrorMessage(playerid, "You can't load goods into this vehicle.");
  16097. }
  16098. else if (VehicleInformation[i][vGoods] > 0)
  16099. {
  16100. SendErrorMessage(playerid, "This vehicle is already loaded. Please find another vehicle.");
  16101. }
  16102. else
  16103. {
  16104. VehicleInformation[i][vGoods] = Players[playerid][pGoods];
  16105. VehicleInformation[i][vObject] = CreateDynamicObject(1220, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
  16106. Players[playerid][pWorking] = 0;
  16107. Players[playerid][pGoods] = 0;
  16108. AttachDynamicObjectToVehicle(VehicleInformation[i][vObject], i, 0.0, -1.5, 0.0, 0.0, 0.0, 0.0);
  16109. ApplyAnimation(playerid, "CARRY", "putdwn", 4.1, 0, 0, 0, 0, 0, 1);
  16110. SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE);
  16111. RemovePlayerAttachedObject(playerid, ATTACHED_SLOT_MISC);
  16112. SendInfoMessage(playerid, "You have loaded the goods. Use /deliver at any %s to get paid.", GetCompanyType(VehicleInformation[i][vGoods]));
  16113. return 1;
  16114. }
  16115. }
  16116. }
  16117. }
  16118. }
  16119. case JOB_TRASHMAN:
  16120. {
  16121. if (Players[playerid][pTrash])
  16122. {
  16123. for (new i = 0; i < MAX_VEHICLES; i ++)
  16124. {
  16125. if (IsValidVehicle(i) && IsPlayerInRangeOfVehicle(playerid, i, 5.0))
  16126. {
  16127. if (GetVehicleModel(i) != 408)
  16128. {
  16129. SendErrorMessage(playerid, "You can't load trash into this vehicle.");
  16130. }
  16131. else
  16132. {
  16133. Players[playerid][pTrash] = 0;
  16134. ApplyAnimation(playerid, "CARRY", "putdwn", 4.1, 0, 0, 0, 0, 0, 1);
  16135. SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE);
  16136. RemovePlayerAttachedObject(playerid, ATTACHED_SLOT_MISC);
  16137. if (Players[playerid][pTrashPickup] < sizeof(g_TrashPickups))
  16138. {
  16139. //SetCheckpoint(playerid, CHECKPOINT_JOB, g_TrashPickups[Players[playerid][pTrashPickup]][0], g_TrashPickups[Players[playerid][pTrashPickup]][1], g_TrashPickups[Players[playerid][pTrashPickup]][2], 2.0);
  16140. new trash = GetRandomTrash();
  16141. if (trash == INVALID_ID) return SendErrorMessage(playerid, "There are no available trash bins in Los Santos - contact an admin!");
  16142. SetCheckpoint(playerid, CHECKPOINT_JOB, Trashbins[trash][tX], Trashbins[trash][tY], Trashbins[trash][tZ], 3.0);
  16143. //SendInfoMessage(playerid, "Make your way to the trash bin and pick up the garbage.");
  16144. SendInfoMessage(playerid, "You have loaded the trash. You have %i more bags to pickup.", (sizeof(g_TrashPickups) - Players[playerid][pTrashPickup]));
  16145. }
  16146. else
  16147. {
  16148. SetCheckpoint(playerid, CHECKPOINT_JOB, 2179.2222, -1980.5339, 13.5519, 3.0);//hora
  16149. SendInfoMessage(playerid, "You have loaded the trash. Deliver it to the {FF0000}checkpoint{FFFFFF} to complete the job.");
  16150. }
  16151. return 1;
  16152. }
  16153. }
  16154. }
  16155. }
  16156. }
  16157. }
  16158. }
  16159. return 0;
  16160. }
  16161. SitCheck(playerid)
  16162. {
  16163. for (new i = 0; i < sizeof(g_SittingPositions); i ++)
  16164. {
  16165. if (IsPlayerInRangeOfPoint(playerid, 1.0, g_SittingPositions[i][e_SittingX], g_SittingPositions[i][e_SittingY], g_SittingPositions[i][e_SittingZ]))
  16166. {
  16167. Players[playerid][pSitting] = !Players[playerid][pSitting];
  16168. if (Players[playerid][pSitting])
  16169. {
  16170. SetPlayerPos(playerid, g_SittingPositions[i][e_SittingX], g_SittingPositions[i][e_SittingY], g_SittingPositions[i][e_SittingZ]);
  16171. SetPlayerFacingAngle(playerid, g_SittingPositions[i][e_SittingA]);
  16172. ApplyAnimation(playerid, "FOOD", g_SittingPositions[i][e_SittingIn], 4.1, 0, 0, 0, 1, 0, 1);
  16173. SendInfoMessage(playerid, "You must use '/t' to speak otherwise you'll stand up from the table.");
  16174. }
  16175. else
  16176. {
  16177. ApplyAnimation(playerid, "FOOD", g_SittingPositions[i][e_SittingOut], 4.1, 0, 0, 0, 0, 0, 1);
  16178. }
  16179. return 1;
  16180. }
  16181. }
  16182. return 0;
  16183. }
  16184. TrashbinCheck(playerid)
  16185. {
  16186. new
  16187. id = GetClosestTrashbin(playerid);
  16188. if (id != INVALID_ID)
  16189. {
  16190. ShowTrashbinItems(playerid, id);
  16191. ShowActionBubble(playerid, "* %s opens the trashbin and looks inside.", ReturnNameEx(playerid));
  16192. }
  16193. }
  16194. ShellCheck(playerid)
  16195. {
  16196. new
  16197. id = GetClosestShell(playerid);
  16198. if (id != INVALID_ID)
  16199. {
  16200. if (gettime() - ShellCasings[id][scTime] < 86400)
  16201. {
  16202. //Dialog_Show(playerid, ExamineShell, DIALOG_STYLE_MSGBOX, "{FFFFFF}Shell casing", "This shell casing was dropped just recently.\n\nThe ammunition type for this casing is %s (serial: %s).", "Pickup", "Close", GetAmmunitionType(ShellCasings[id][scWeapon]), FormatSerial(ShellCasings[id][scSerial]));
  16203. Dialog_Show(playerid, ExamineShell, DIALOG_STYLE_MSGBOX, "{FFFFFF}Shell Casing", "{6688FF}Type:\n{FFFFFF}%s\n\n{6688FF}Serial:\n{FFFFFF}%s\n\n{6688FF}Time:\n{FFFFFF}Recent", "Pickup", "Close", GetAmmunitionType(ShellCasings[id][scWeapon]), FormatSerial(ShellCasings[id][scSerial]) );
  16204. }
  16205. else
  16206. {
  16207. //Dialog_Show(playerid, ExamineShell, DIALOG_STYLE_MSGBOX, "{FFFFFF}Shell casing", "This shell casing was dropped a while ago.\n\nThe ammunition type for this casing is %s (serial: %s).", "Pickup", "Close", GetAmmunitionType(ShellCasings[id][scWeapon]), FormatSerial(ShellCasings[id][scSerial]));
  16208. Dialog_Show(playerid, ExamineShell, DIALOG_STYLE_MSGBOX, "{FFFFFF}Shell Casing", "{6688FF}Type:\n{FFFFFF}%s\n\n{6688FF}Serial:\n{FFFFFF}%s\n\n{6688FF}Time:\n{FFFFFF}Old", "Pickup", "Close", GetAmmunitionType(ShellCasings[id][scWeapon]), FormatSerial(ShellCasings[id][scSerial]) );
  16209. }
  16210. }
  16211. }
  16212. /*BloodCheck(playerid)
  16213. {
  16214. new
  16215. id = GetClosestBlood(playerid);
  16216. if(id != INVALID_ID)
  16217. {
  16218. if(gettime() - Bloods[id][blTime] < 86400)
  16219. {
  16220. Dialog_Show(playerid, ExamineBlood, DIALOG_STYLE_MSGBOX, "{FFFFFF}Blood", "{6688FF}Owner:\n{FFFFFF}%s\n\n{6688FF}Type:\n{FFFFFF}%i\n\n{6688FF}Time:\n{FFFFFF}Recent","Pickup","Close", Bloods[id][blOwner], Bloods[id][blType] );
  16221. }
  16222. else
  16223. {
  16224. Dialog_Show(playerid, ExamineBlood, DIALOG_STYLE_MSGBOX, "{FFFFFF}Blood", "{6688FF}Owner:\n{FFFFFF}%s\n\n{6688FF}Type:\n{FFFFFF}%i\n\n{6688FF}Time:\n{FFFFFF}Old","Pickup","Close", Bloods[id][blOwner], Bloods[id][blType] );
  16225. }
  16226. }
  16227. }*/
  16228. WeedCheck(playerid)
  16229. {
  16230. new
  16231. id = GetClosestWeedPlant(playerid);
  16232. if (id != INVALID_ID)
  16233. {
  16234. if (0 <= WeedPlants[id][wpTime] <= 899)
  16235. {
  16236. Dialog_Show(playerid, ExamineWeedPlant, DIALOG_STYLE_MSGBOX, "{FFFFFF}Weed Plant", "{6688FF}Stage:\n{FFFFFF}Growing", "Pick up", "Close");
  16237. }
  16238. else
  16239. {
  16240. Dialog_Show(playerid, ExamineWeedPlant, DIALOG_STYLE_MSGBOX, "{FFFFFF}Weed Plant", "{6688FF}Stage:\n{FFFFFF}Ready", "Pick up", "Close");
  16241. }
  16242. }
  16243. }
  16244. ATMCheck(playerid)
  16245. {
  16246. new
  16247. id = GetClosestATM(playerid);
  16248. if (IsValidATMID(id))
  16249. {
  16250. new
  16251. success = ShowBankAccounts(playerid, BANK_ATM_MENU);
  16252. if (!success)
  16253. {
  16254. SendErrorMessage(playerid, "You need a registered bank account to do this.");
  16255. }
  16256. }
  16257. }
  16258. SafeCheck(playerid)
  16259. {
  16260. new
  16261. id = GetClosestFurniture(playerid, 2.0, 2332);
  16262. if (IsValidFurnitureID(id))
  16263. {
  16264. if (!Furniture[id][fSafeOpen])
  16265. {
  16266. if (Furniture[id][fCode] != 0)
  16267. {
  16268. return Dialog_Show(playerid, SafeCode, DIALOG_STYLE_INPUT, "{FFFFFF}Safe code", "Please input the code to unlock this safe:", "Submit", "Cancel");
  16269. }
  16270. else
  16271. {
  16272. Furniture[id][fSafeOpen] = 1;
  16273. ShowActionBubble(playerid, "* %s opens the safe and looks inside.", ReturnNameEx(playerid));
  16274. UpdateDynamic3DTextLabelText(Furniture[id][fText], COLOR_GREY, "Status: {33CC33}Opened{AFAFAF}\nPress Y to use safe");
  16275. SendInfoMessage(playerid, "You have opened the safe.");
  16276. }
  16277. }
  16278. ShowSafeMenu(playerid, id);
  16279. }
  16280. return 1;
  16281. }
  16282. FridgeCheck(playerid)
  16283. {
  16284. new
  16285. id = GetClosestFridge(playerid, 2.0);
  16286. if (IsValidFurnitureID(id))
  16287. {
  16288. SetPlayerHealth(playerid, 100);
  16289. ShowActionBubble(playerid, "* %s grabs something to eat from the fridge.", ReturnNameEx(playerid));
  16290. SendInfoMessage(playerid, "You have healed to full health.");
  16291. }
  16292. return 1;
  16293. }
  16294. DoorCheck(playerid)
  16295. {
  16296. new
  16297. id = GetClosestDoor(playerid, 2.0);
  16298. if (IsValidFurnitureID(id))
  16299. {
  16300. if (Furniture[id][fDoorOpen] == 1)
  16301. {
  16302. Furniture[id][fSpawn][5] = Furniture[id][fSpawn][5] + 90.0;
  16303. Furniture[id][fDoorOpen] = 0;
  16304. UpdateFurniture(id);
  16305. }
  16306. else
  16307. {
  16308. Furniture[id][fSpawn][5] = Furniture[id][fSpawn][5] - 90.0;
  16309. Furniture[id][fDoorOpen] = 1;
  16310. UpdateFurniture(id);
  16311. }
  16312. }
  16313. return 1;
  16314. }
  16315. ShowSafeItems(playerid, id)
  16316. {
  16317. static
  16318. displayString[1024];
  16319. if (!IsValidFurnitureID(id))
  16320. {
  16321. return 0;
  16322. }
  16323. else
  16324. {
  16325. new
  16326. title[64],
  16327. index = 0;
  16328. displayString = "Item\tWeight\nStore Item";
  16329. for (new i = 0; i < MAX_STORED_ITEMS; i ++)
  16330. {
  16331. if (StoredItems[i][stExists] && StoredItems[i][stFurniture] == Furniture[id][fID])
  16332. {
  16333. format(displayString, sizeof(displayString), "%s\n%s\t%i lbs", displayString, GetStoredItemName(i), GetItemInformation(StoredItems[i][stName], ITEM_INFO_WEIGHT));
  16334. gListedItems[playerid][index++] = i;
  16335. }
  16336. }
  16337. format(title, sizeof(title), "{FFFFFF}Safe - Capacity: %i/%i", GetSafeTotalWeight(id), MAX_SAFE_WEIGHT);
  16338. Dialog_Show(playerid, SafeItems, DIALOG_STYLE_TABLIST_HEADERS, title, displayString, "Select", "Back");
  16339. }
  16340. return 1;
  16341. }
  16342. ShowSafeMenu(playerid, id)
  16343. {
  16344. new
  16345. string[128];
  16346. if (!IsValidFurnitureID(id))
  16347. {
  16348. return 0;
  16349. }
  16350. if (!Furniture[id][fCode])
  16351. {
  16352. format(string, sizeof(string), "Stored Money\t\t{00FF00}%s{FFFFFF}\nSecurity Code\t\t{FF5030}Not Setup\nView Items\nClose Safe", FormatNumber(Furniture[id][fMoney]));
  16353. }
  16354. else
  16355. {
  16356. format(string, sizeof(string), "Stored Money\t\t{00FF00}%s{FFFFFF}\nSecurity Code\t\t{00FF00}%i\nView Items\nClose Safe", FormatNumber(Furniture[id][fMoney]), Furniture[id][fCode]);
  16357. }
  16358. Players[playerid][pSafeMenu] = id;
  16359. Dialog_Show(playerid, SafeMenu, DIALOG_STYLE_LIST, "{FFFFFF}Safe menu", string, "Select", "Close");
  16360. return 1;
  16361. }
  16362. IsPlayerNearGymEquipment(playerid)
  16363. {
  16364. return (IsPlayerInRangeOfPoint(playerid, 2.0, 771.7793, 5.4092, 1000.7802) || IsPlayerInRangeOfPoint(playerid, 2.0, 773.5131, -2.1218, 1000.8479));
  16365. }
  16366. GymCheck(playerid)
  16367. {
  16368. new company = GetCurrentCompany(playerid);
  16369. if (company == INVALID_ID || Companies[company][cType] != COMPANY_GYM)
  16370. {
  16371. return 0;
  16372. }
  16373. else if (IsPlayerInRangeOfPoint(playerid, 2.0, 771.7793, 5.4092, 1000.7802))
  16374. {
  16375. if (!Players[playerid][pWorkout])
  16376. {
  16377. if (Players[playerid][pWorkoutTime] > gettime())
  16378. {
  16379. SendErrorMessage(playerid, "You have reached your limit for the day.");
  16380. }
  16381. else if (IsWeightsInUse(playerid))
  16382. {
  16383. SendErrorMessage(playerid, "The weights are already being used.");
  16384. }
  16385. else if (Players[playerid][pWeight])
  16386. {
  16387. SendErrorMessage(playerid, "Please wait before using this command.");
  16388. }
  16389. else
  16390. {
  16391. SetPlayerPos(playerid, 771.7793, 5.4092, 1000.7802);
  16392. SetPlayerFacingAngle(playerid, 270.0000);
  16393. SetPlayerCameraPos(playerid, 775.425048, 5.364191, 1001.295227);
  16394. SetPlayerCameraLookAt(playerid, 772.279235, 5.403525, 1000.780212);
  16395. Dialog_Show(playerid, LiftWeights, DIALOG_STYLE_LIST, "{FFFFFF}Select weight", "20 lbs\n30 lbs\n40 lbs\n50 lbs\n60 lbs\n70 lbs\n80 lbs\n90 lbs\n100 lbs\n110 lbs", "Begin", "Cancel");
  16396. }
  16397. }
  16398. else
  16399. {
  16400. StopWorkout(playerid);
  16401. ApplyAnimation(playerid, "Freeweights", "gym_free_putdown", 4.1, 0, 0, 0, 0, 0, 1);
  16402. }
  16403. return 1;
  16404. }
  16405. else if (IsPlayerInRangeOfPoint(playerid, 2.0, 773.5131, -2.1218, 1000.8479))
  16406. {
  16407. if (!Players[playerid][pWorkout])
  16408. {
  16409. if (Players[playerid][pWorkoutTime] > gettime())
  16410. {
  16411. SendErrorMessage(playerid, "You have reached your limit for the day.");
  16412. }
  16413. else if (IsTreadmillInUse(playerid))
  16414. {
  16415. SendErrorMessage(playerid, "The treadmill is already being used.");
  16416. }
  16417. else if (Players[playerid][pSpeedLevel])
  16418. {
  16419. SendErrorMessage(playerid, "Please wait before using this command.");
  16420. }
  16421. else
  16422. {
  16423. SetPlayerPos(playerid, 773.4777, -1.3239, 1000.7260);
  16424. SetPlayerFacingAngle(playerid, 180.0000);
  16425. SetPlayerCameraPos(playerid, 774.571166, -6.172124, 1001.582763);
  16426. SetPlayerCameraLookAt(playerid, 773.482116, -3.338384, 1000.847900);
  16427. Dialog_Show(playerid, Treadmill, DIALOG_STYLE_LIST, "{FFFFFF}Select level", "Level 1 (slowest)\nLevel 2\nLevel 3\nLevel 4\nLevel 5\nLevel 6\nLevel 7\nLevel 8\nLevel 9\nLevel 10 (fastest)", "Begin", "Cancel");
  16428. }
  16429. }
  16430. else
  16431. {
  16432. StopWorkout(playerid);
  16433. ApplyAnimation(playerid, "GYMNASIUM", "gym_tread_getoff", 4.1, 0, 0, 0, 0, 0, 1);
  16434. }
  16435. return 1;
  16436. }
  16437. return 0;
  16438. }
  16439. /*CompanyCheck(playerid)
  16440. {
  16441. new company = GetCurrentCompany(playerid);
  16442. if (company != INVALID_ID)
  16443. {
  16444. if (Companies[company][cType] == COMPANY_RESTAURANT)
  16445. {
  16446. ShowRestaurantMenu(playerid, company);
  16447. }
  16448. else if (Companies[company][cType] == COMPANY_AMMO && Players[playerid][pHoursOnline] < 4)
  16449. {
  16450. return SendErrorMessage(playerid, "You must play at least 4 hours to buy items here.");
  16451. }
  16452. else if (Companies[company][cType] == COMPANY_AMMO && Players[playerid][pWarrants] > 0)
  16453. {
  16454. return SendErrorMessage(playerid, "You can't purchase items here if you have an active warrant.");
  16455. }
  16456. else
  16457. {
  16458. if (Companies[company][cType] == COMPANY_GYM && IsPlayerNearGymEquipment(playerid))
  16459. {
  16460. GymCheck(playerid);
  16461. }
  16462. else
  16463. {
  16464. ShowProductsForSale(playerid, company);
  16465. }
  16466. }
  16467. return 1;
  16468. }
  16469. return 0;
  16470. }*/
  16471. ShowLockerMenu(playerid)
  16472. {
  16473. if(GetPlayerFactionType(playerid) == FACTION_ILLEGAL)
  16474. {
  16475. Dialog_Show(playerid, LockerUniform, DIALOG_STYLE_MSGBOX, "{FFFFFF}Uniforms", "Would you like to change your uniform?", "Yes", "No");
  16476. }
  16477. else
  16478. {
  16479. if(!Players[playerid][pDuty])
  16480. {
  16481. Dialog_Show(playerid, Locker, DIALOG_STYLE_LIST, "{FFFFFF}Faction Locker", "Clock In\nUniforms\nEquipment\nAccessories\nReturn Equipment", "Select", "Cancel");
  16482. }
  16483. else
  16484. {
  16485. Dialog_Show(playerid, Locker, DIALOG_STYLE_LIST, "{FFFFFF}Faction Locker", "Clock Out\nUniforms\nEquipment\nAccessories\nReturn Equipment", "Select", "<<<");
  16486. }
  16487. }
  16488. return 1;
  16489. }
  16490. ShowLockerEquipmentMenu(playerid)
  16491. {
  16492. /*switch (Factions[Players[playerid][pFaction]][fcType])
  16493. {
  16494. case FACTION_LEO:
  16495. {
  16496. //Dialog_Show(playerid, PoliceEquipment, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Equipment", "Item\tPrice\nTazer\t\t$50\nKevlar Vest\t\t$50\nNightstick\t\t$75\nDesert Eagle\t$150\nShotgun\t\t$200\nMP5\t\t$400\nM16\t\t$800\nSniper\t\t$1,000", "Select", "Cancel");
  16497. Dialog_Show(playerid, PoliceEquipment, DIALOG_STYLE_LIST, "{FFFFFF}Equipment", "Medical Kit\nArmor\nNightstick\nPepper Spray\nDesert Eagle\nShotgun\nMP5\nM4\nSniper Rifle\nPortable Radio\nCuffs\nKeys", "Select", "Cancel");
  16498. }
  16499. case FACTION_MEDICAL:
  16500. {
  16501. //Dialog_Show(playerid, MedicEquipment, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Equipment", "Item\tPrice\nBandages\t\t$20\nMedical Kit\t$40\nFire Extinguisher\t$50\nPainkillers\t\t$60", "Select", "Cancel");
  16502. Dialog_Show(playerid, MedicEquipment, DIALOG_STYLE_LIST, "{FFFFFF}Equipment", "Bandages\nMedical Kit\nKevlar Vest\nFire Extinguisher\nPainkillers\nPepper Spray", "Select", "Cancel");
  16503. }
  16504. }*/
  16505. gListString[0] = 0;
  16506. for(new i = 0; i < MAX_FACTION_EQUIPMENT; i ++)
  16507. {
  16508. if(FactionEquipment[Players[playerid][pFaction]][i][fcItemExists])
  16509. {
  16510. if(FactionEquipment[Players[playerid][pFaction]][i][fcItemValue] > 0)
  16511. format(gListString, sizeof(gListString), "%s\n%s (%i)", gListString, FactionEquipment[Players[playerid][pFaction]][i][fcItemName], FactionEquipment[Players[playerid][pFaction]][i][fcItemValue]);
  16512. else
  16513. format(gListString, sizeof(gListString), "%s\n%s", gListString, FactionEquipment[Players[playerid][pFaction]][i][fcItemName]);
  16514. }
  16515. }
  16516. if(isnull(gListString))
  16517. return SendErrorMessage(playerid, "There is no equipment added for this faction.");
  16518. Dialog_Show(playerid, LockerEquipment, DIALOG_STYLE_LIST, "{FFFFFF}Equipment", gListString, "Equip", "Back");
  16519. return 1;
  16520. }
  16521. ShowLockerAccessoryMenu(playerid)
  16522. {
  16523. gListString[0] = 0;
  16524. for(new i = 0; i < MAX_FACTION_ACCESSORIES; i ++)
  16525. {
  16526. if(FactionAccessories[Players[playerid][pFaction]][i][fcAccessoryExists])
  16527. {
  16528. format(gListString, sizeof(gListString), "%s\n%s", gListString, FactionAccessories[Players[playerid][pFaction]][i][fcAccessoryName]);
  16529. }
  16530. }
  16531. if(isnull(gListString))
  16532. return SendErrorMessage(playerid, "There are no accessories added for this faction.");
  16533. Dialog_Show(playerid, LockerAccessories, DIALOG_STYLE_LIST, "{FFFFFF}Accessories", gListString, "Select", "Back");
  16534. return 1;
  16535. }
  16536. IsPlayerNearSwitch(playerid)
  16537. {
  16538. new
  16539. house = GetCurrentHouse(playerid);
  16540. if (house == INVALID_ID)
  16541. {
  16542. return 0;
  16543. }
  16544. for (new i = 0; i < sizeof(g_LightSwitches); i ++)
  16545. {
  16546. if (IsPlayerInRangeOfPoint(playerid, 1.0, g_LightSwitches[i][0], g_LightSwitches[i][1], g_LightSwitches[i][2]))
  16547. {
  16548. return 1;
  16549. }
  16550. }
  16551. return 0;
  16552. }
  16553. LightSwitch(playerid)
  16554. {
  16555. new
  16556. id = GetCurrentHouse(playerid);
  16557. if (id == INVALID_ID)
  16558. {
  16559. return 0;
  16560. }
  16561. for (new i = 0; i < sizeof(g_LightSwitches); i ++)
  16562. {
  16563. if (IsPlayerInRangeOfPoint(playerid, 1.0, g_LightSwitches[i][0], g_LightSwitches[i][1], g_LightSwitches[i][2]))
  16564. {
  16565. ApplyAnimation(playerid, "HEIST9", "Use_SwipeCard", 4.1, 0, 0, 0, 0, 0, 1);
  16566. SetPlayerFacingAngle(playerid, g_LightSwitches[i][3]);
  16567. PlayerPlaySound(playerid, 1083, 0.0, 0.0, 0.0);
  16568. return Houses[id][hLights] = !Houses[id][hLights];
  16569. }
  16570. }
  16571. return 0;
  16572. }
  16573. PickupNearestItem(playerid)
  16574. {
  16575. new
  16576. count = GetTotalNearbyItems(playerid);
  16577. if (count == 1)
  16578. {
  16579. new id = GetClosestDropItem(playerid);
  16580. if (IsPlayerInAnyVehicle(playerid))
  16581. {
  16582. return SendErrorMessage(playerid, "You can't pickup items in a vehicle.");
  16583. }
  16584. else
  16585. {
  16586. if (!IsSufficientSpace(playerid, DropItems[id][dName]))
  16587. {
  16588. SendErrorMessage(playerid, "There is no more room in your inventory.");
  16589. }
  16590. else
  16591. {
  16592. Statistics[playerid][sItemsPicked]++;
  16593. format(gExecute, sizeof(gExecute), "INSERT INTO rp_itemlogs (Player, Item, Action, Date) VALUES('%s', '%s', 'Picked Up', NOW())", ReturnName(playerid), GetDropItemName(id));
  16594. mysql_tquery(gConnection, gExecute);
  16595. ShowActionBubble(playerid, "* %s reaches down and picks up an item.", ReturnNameEx(playerid));
  16596. SendInfoMessage(playerid, "{CFCFCF}You have picked up an item:{33AA33} %s.", GetDropItemName(id));
  16597. if(DropItems[id][dSerial] != 0 && GetPlayerFactionType(playerid) == FACTION_LEO)
  16598. {
  16599. SendInfoMessage(playerid,"Serial number: %d",DropItems[id][dSerial]);
  16600. }
  16601. ApplyAnimation(playerid, "BOMBER", "BOM_Plant_In", 4.1, 0, 0, 0, 0, 0);
  16602. RetrieveItem(playerid, TRANSFER_FROM_GROUND, id);
  16603. }
  16604. }
  16605. }
  16606. else if (count > 1)
  16607. {
  16608. new
  16609. buffer[1024],
  16610. index
  16611. ;
  16612. for (new i = 0; i < MAX_DROPPED_ITEMS; i ++)
  16613. {
  16614. if (DropItems[i][dExists] && IsPlayerNearPoint(playerid, 1.0, DropItems[i][dSpawn][0], DropItems[i][dSpawn][1], DropItems[i][dSpawn][2], DropItems[i][dInterior], DropItems[i][dWorld]))
  16615. {
  16616. format(buffer, sizeof(buffer), "%s\n%s", buffer, GetDropItemName(i));
  16617. gListedItems[playerid][index++] = i;
  16618. }
  16619. }
  16620. if (index > 0)
  16621. {
  16622. Dialog_Show(playerid, PickupItems, DIALOG_STYLE_LIST, "{FFFFFF}Pickup nearby items", buffer, "Pickup", "Close");
  16623. }
  16624. }
  16625. return count;
  16626. }
  16627. DeleteDropItem(id)
  16628. {
  16629. if (!DropItems[id][dExists]) return 0;
  16630. DestroyDynamicObject(DropItems[id][dObject]);
  16631. //DestroyDynamic3DTextLabel(DropItems[id][dText]);
  16632. format(gExecute, sizeof(gExecute), "DELETE FROM rp_items WHERE itemDropped = 1 AND itemID = %i", DropItems[id][dID]);
  16633. mysql_tquery(gConnection, gExecute);
  16634. DropItems[id][dExists] = 0;
  16635. DropItems[id][dID] = 0;
  16636. DropItems[id][dName] = 0;
  16637. DropItems[id][dValue] = 0;
  16638. DropItems[id][dObject] = INVALID_OBJECT_ID;
  16639. //DropItems[id][dText] = INVALID_3DTEXT_ID;
  16640. return 1;
  16641. }
  16642. UpdateDropItem(id)
  16643. {
  16644. if (!DropItems[id][dExists]) return 0;
  16645. new
  16646. Float:z,
  16647. Float:rx,
  16648. Float:ry,
  16649. string[128];
  16650. GetItemDropOffset(DropItems[id][dName], z, rx, ry);
  16651. DestroyDynamicObject(DropItems[id][dObject]);
  16652. //DestroyDynamic3DTextLabel(DropItems[id][dText]);
  16653. format(string, sizeof(string), "%s\nPress Y to pickup item", GetDropItemName(id));
  16654. DropItems[id][dObject] = CreateDynamicObject(GetItemInformation(DropItems[id][dName], ITEM_INFO_MODEL), DropItems[id][dSpawn][0], DropItems[id][dSpawn][1], DropItems[id][dSpawn][2] - z, rx, ry, 0.0, DropItems[id][dWorld], DropItems[id][dInterior]);
  16655. //DropItems[id][dText] = CreateDynamic3DTextLabel(string, COLOR_GREY, DropItems[id][dSpawn][0], DropItems[id][dSpawn][1], DropItems[id][dSpawn][2] - z, 10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, DropItems[id][dWorld], DropItems[id][dInterior]);
  16656. if (!strcmp(DropItems[id][dName], "Toolbox"))
  16657. SetDynamicObjectMaterial(DropItems[id][dObject], 0, 14796, "genintintgarage2", "tool_store");
  16658. else if (!strcmp(DropItems[id][dName], "Painkillers"))
  16659. SetDynamicObjectMaterial(DropItems[id][dObject], 0, 1950, "kbeer", "bottles_kb2");
  16660. else if (!strcmp(DropItems[id][dName], "Marijuana"))
  16661. SetDynamicObjectMaterial(DropItems[id][dObject], 0, -1, "none", "none", 0xFF33CC33);
  16662. else if (!strcmp(DropItems[id][dName], "Heroin"))
  16663. SetDynamicObjectMaterial(DropItems[id][dObject], 0, -1, "none", "none", 0xFFFFDD00);
  16664. return 1;
  16665. }
  16666. RetrieveItem(playerid, type, itemid)
  16667. {
  16668. new id = GetNextItemID(playerid);
  16669. if (id == INVALID_ID)
  16670. {
  16671. return id;
  16672. }
  16673. switch (type)
  16674. {
  16675. case TRANSFER_FROM_SAFE, TRANSFER_FROM_TRUNK, TRANSFER_FROM_TRASH:
  16676. {
  16677. if (!IsSufficientSpace(playerid, StoredItems[itemid][stName]))
  16678. {
  16679. return INVALID_ID;
  16680. }
  16681. strunpack(Inventory[playerid][id][invName], StoredItems[itemid][stName], MAX_ITEM_NAME);
  16682. Inventory[playerid][id][invExists] = 1;
  16683. Inventory[playerid][id][invID] = StoredItems[itemid][stID];
  16684. Inventory[playerid][id][invValue] = StoredItems[itemid][stValue];
  16685. Inventory[playerid][id][invSerial] = StoredItems[itemid][stSerial];
  16686. for (new i = 0; i < 6; i ++) {
  16687. Inventory[playerid][id][invOffset][i] = StoredItems[itemid][stOffset][i];
  16688. }
  16689. for ( new a = 0; a < 6; a ++)
  16690. {
  16691. StoredItems[itemid][vehicleOffset][a] = 0.0;
  16692. }
  16693. StoredItems[itemid][stID] = 0;
  16694. StoredItems[itemid][stExists] = 0;
  16695. StoredItems[itemid][stValue] = 0;
  16696. StoredItems[itemid][stSerial] = 0;
  16697. if(IsValidDynamicObject(StoredItems[itemid][vehicleItem])) DestroyDynamicObject(StoredItems[itemid][vehicleItem]);
  16698. format(gExecute, sizeof(gExecute), "UPDATE rp_items SET itemOwner = %i, itemFurnitureID = 0, itemVehicleID = 0, itemTrashbinID = 0, vehOffsetX = 0.0, vehOffsetY = 0.0, vehOffsetZ = 0.0, vehRotX = 0.0, vehRotY = 0.0, vehRotZ = 0.0 WHERE itemID = %i", Players[playerid][pID], Inventory[playerid][id][invID]);
  16699. mysql_tquery(gConnection, gExecute);
  16700. }
  16701. case TRANSFER_FROM_GROUND:
  16702. {
  16703. new
  16704. item = GetInventoryItemID(playerid, DropItems[itemid][dName]);
  16705. if (!IsSufficientSpace(playerid, DropItems[itemid][dName]))
  16706. {
  16707. return INVALID_ID;
  16708. }
  16709. if (GetItemInformation(DropItems[itemid][dName], ITEM_INFO_STACKABLE) && item != INVALID_ID)
  16710. {
  16711. SetItemValue(playerid, item, Inventory[playerid][item][invValue] + DropItems[itemid][dValue]);
  16712. return DeleteDropItem(itemid);
  16713. }
  16714. else
  16715. {
  16716. strcpy(Inventory[playerid][id][invName], DropItems[itemid][dName], MAX_ITEM_NAME);
  16717. Inventory[playerid][id][invExists] = 1;
  16718. Inventory[playerid][id][invID] = DropItems[itemid][dID];
  16719. Inventory[playerid][id][invValue] = DropItems[itemid][dValue];
  16720. Inventory[playerid][id][invSerial] = DropItems[itemid][dSerial];
  16721. for (new i = 0; i < 6; i ++) {
  16722. Inventory[playerid][id][invOffset][i] = DropItems[itemid][dOffset][i];
  16723. }
  16724. format(gExecute, sizeof(gExecute), "UPDATE rp_items SET itemOwner = %i, itemDropped = 0, itemX = 0.0, itemY = 0.0, itemZ = 0.0, itemA = 0.0, itemInt = 0, itemWorld = 0 WHERE itemID = %i", Players[playerid][pID], Inventory[playerid][id][invID]);
  16725. mysql_tquery(gConnection, gExecute);
  16726. }
  16727. //DestroyDynamic3DTextLabel(DropItems[itemid][dText]);
  16728. DestroyDynamicObject(DropItems[itemid][dObject]);
  16729. DropItems[itemid][dID] = 0;
  16730. DropItems[itemid][dExists] = 0;
  16731. DropItems[itemid][dValue] = 0;
  16732. DropItems[itemid][dSerial] = 0;
  16733. DropItems[itemid][dObject] = INVALID_OBJECT_ID;
  16734. //DropItems[itemid][dText] = INVALID_3DTEXT_ID;
  16735. }
  16736. }
  16737. return id;
  16738. }
  16739. GetStoredItemID(const name[], type, extraid)
  16740. {
  16741. for (new i = 0; i < MAX_STORED_ITEMS; i ++)
  16742. {
  16743. if (StoredItems[i][stExists] && !strcmp(StoredItems[i][stName], name))
  16744. {
  16745. if ((type == STORED_TYPE_TRUNK && StoredItems[i][stVehicle] == extraid) || (type == STORED_TYPE_SAFE && StoredItems[i][stFurniture] == extraid) || (type == STORED_TYPE_TRASH && StoredItems[i][stTrashbin] == extraid))
  16746. {
  16747. return i;
  16748. }
  16749. }
  16750. }
  16751. return INVALID_ID;
  16752. }
  16753. AddStoredItem(type, extraid, const name[], value = 0, serial = 0)
  16754. {
  16755. new
  16756. id = GetNextStoredItemID();
  16757. if (id != INVALID_ID)
  16758. {
  16759. strpack(StoredItems[id][stName], name, MAX_ITEM_NAME);
  16760. StoredItems[id][stExists] = 1;
  16761. StoredItems[id][stValue] = value;
  16762. StoredItems[id][stSerial] = serial;
  16763. StoredItems[id][stFurniture] = 0;
  16764. StoredItems[id][stVehicle] = 0;
  16765. StoredItems[id][stTrashbin] = 0;
  16766. if (type == TRANSFER_TO_SAFE) {
  16767. StoredItems[id][stFurniture] = extraid;
  16768. }
  16769. else if (type == TRANSFER_TO_TRUNK)
  16770. {
  16771. StoredItems[id][stVehicle] = extraid;
  16772. }
  16773. else if (type == TRANSFER_TO_TRASH)
  16774. {
  16775. StoredItems[id][stTrashbin] = extraid;
  16776. }
  16777. format(gExecute, sizeof(gExecute), "INSERT INTO rp_items (itemName, itemValue, itemSerial, itemVehicleID, itemFurnitureID, itemTrashbinID, vehOffsetX, vehOffsetY, vehOffsetZ, vehRotX, vehRotY, vehRotZ) VALUES('%s', %i, %i, %i, %i, %i, '0.0', '0.0', '0.0', '0.0', '0.0', '0.0')", name, StoredItems[id][stValue], StoredItems[id][stSerial], StoredItems[id][stVehicle], StoredItems[id][stFurniture], StoredItems[id][stTrashbin]);
  16778. mysql_tquery(gConnection, gExecute, "OnStoredItemAdded", "i", id);
  16779. }
  16780. return id;
  16781. }
  16782. TransferItem(playerid, itemid, type, extraid = -1)
  16783. {
  16784. new
  16785. id = INVALID_ID,
  16786. item = INVALID_ID
  16787. ;
  16788. switch (type)
  16789. {
  16790. case TRANSFER_TO_SAFE, TRANSFER_TO_TRUNK, TRANSFER_TO_TRASH:
  16791. {
  16792. id = GetNextStoredItemID();
  16793. if (id != INVALID_ID)
  16794. {
  16795. if (GetItemInformation(Inventory[playerid][itemid][invName], ITEM_INFO_STACKABLE)) {
  16796. if (type == TRANSFER_TO_SAFE) {
  16797. item = GetStoredItemID(Inventory[playerid][itemid][invName], STORED_TYPE_SAFE, extraid);
  16798. } else if (type == TRANSFER_TO_TRUNK) {
  16799. item = GetStoredItemID(Inventory[playerid][itemid][invName], STORED_TYPE_TRUNK, extraid);
  16800. } else if (type == TRANSFER_TO_TRASH) {
  16801. item = GetStoredItemID(Inventory[playerid][itemid][invName], STORED_TYPE_TRASH, extraid);
  16802. }
  16803. }
  16804. if (item != INVALID_ID)
  16805. {
  16806. StoredItems[item][stValue] += Inventory[playerid][itemid][invValue];
  16807. format(gExecute, sizeof(gExecute), "UPDATE rp_items SET itemValue = itemValue + %i WHERE itemID = %i", Inventory[playerid][itemid][invValue], StoredItems[item][stID]);
  16808. mysql_tquery(gConnection, gExecute);
  16809. RemoveItemFromInventory(playerid, itemid);
  16810. return item;
  16811. }
  16812. else
  16813. {
  16814. OnItemDelete(playerid, itemid);
  16815. strpack(StoredItems[id][stName], Inventory[playerid][itemid][invName], MAX_ITEM_NAME);
  16816. StoredItems[id][stExists] = 1;
  16817. StoredItems[id][stID] = Inventory[playerid][itemid][invID];
  16818. StoredItems[id][stValue] = Inventory[playerid][itemid][invValue];
  16819. StoredItems[id][stSerial] = Inventory[playerid][itemid][invSerial];
  16820. StoredItems[id][stFurniture] = 0;
  16821. StoredItems[id][stVehicle] = 0;
  16822. StoredItems[id][stTrashbin] = 0;
  16823. for (new i = 0; i < 6; i ++) {
  16824. StoredItems[id][stOffset][i] = Inventory[playerid][itemid][invOffset][i];
  16825. }
  16826. if (type == TRANSFER_TO_SAFE)
  16827. {
  16828. StoredItems[id][stFurniture] = extraid;
  16829. }
  16830. else if (type == TRANSFER_TO_TRUNK)
  16831. {
  16832. StoredItems[id][stVehicle] = extraid;
  16833. for(new Addr = 0; Addr < 6; Addr ++)
  16834. {
  16835. StoredItems[id][vehicleOffset][Addr] = 0.0; // empty it's value
  16836. }
  16837. new Float: thisSpot[3];
  16838. GetPlayerPos(playerid, thisSpot[0], thisSpot[1], thisSpot[2]);
  16839. StoredItems[id][vehicleItem] = CreateDynamicObject(GetItemInformation(StoredItems[id][stName], ITEM_INFO_MODEL), thisSpot[0], thisSpot[1], thisSpot[2], 0.0, 0.0, 0.0);
  16840. EditDynamicObjectEx(playerid, EDIT_TYPE_TRUNK, StoredItems[id][vehicleItem], id);
  16841. }
  16842. else if (type == TRANSFER_TO_TRASH)
  16843. {
  16844. StoredItems[id][stTrashbin] = extraid;
  16845. }
  16846. ResetInventoryItem(playerid, itemid);
  16847. format(gExecute, sizeof(gExecute), "UPDATE rp_items SET itemOwner = 0, itemFurnitureID = %i, itemVehicleID = %i, itemTrashbinID = %i WHERE itemID = %i",
  16848. StoredItems[id][stFurniture],
  16849. StoredItems[id][stVehicle],
  16850. StoredItems[id][stTrashbin],
  16851. StoredItems[id][stID]);
  16852. mysql_tquery(gConnection, gExecute);
  16853. }
  16854. }
  16855. }
  16856. case TRANSFER_TO_PLAYER:
  16857. {
  16858. if ((id = GetNextItemID(extraid)) != INVALID_ID)
  16859. {
  16860. OnItemDelete(playerid, itemid);
  16861. strcpy(Inventory[extraid][id][invName], Inventory[playerid][itemid][invName], MAX_ITEM_NAME);
  16862. Inventory[extraid][id][invExists] = 1;
  16863. Inventory[extraid][id][invID] = Inventory[playerid][itemid][invID];
  16864. Inventory[extraid][id][invValue] = Inventory[playerid][itemid][invValue];
  16865. Inventory[extraid][id][invSerial] = Inventory[playerid][itemid][invSerial];
  16866. for (new i = 0; i < 6; i ++) {
  16867. Inventory[extraid][id][invOffset][i] = Inventory[playerid][itemid][invOffset][i];
  16868. }
  16869. ResetInventoryItem(playerid, itemid);
  16870. format(gExecute, sizeof(gExecute), "UPDATE rp_items SET itemOwner = %i WHERE itemID = %i", Players[extraid][pID], Inventory[extraid][id][invID]);
  16871. mysql_tquery(gConnection, gExecute);
  16872. }
  16873. }
  16874. case TRANSFER_TO_GROUND:
  16875. {
  16876. id = GetNextDropID();
  16877. if (id != INVALID_ID)
  16878. {
  16879. OnItemDelete(playerid, itemid);
  16880. strcpy(DropItems[id][dName], Inventory[playerid][itemid][invName], MAX_ITEM_NAME);
  16881. GetPlayerPos(playerid, DropItems[id][dSpawn][0], DropItems[id][dSpawn][1], DropItems[id][dSpawn][2]);
  16882. GetPlayerFacingAngle(playerid, DropItems[id][dSpawn][3]);
  16883. DropItems[id][dExists] = 1;
  16884. DropItems[id][dID] = Inventory[playerid][itemid][invID];
  16885. DropItems[id][dValue] = Inventory[playerid][itemid][invValue];
  16886. DropItems[id][dSerial] = Inventory[playerid][itemid][invSerial];
  16887. DropItems[id][dInterior] = GetPlayerInterior(playerid);
  16888. DropItems[id][dWorld] = GetPlayerVirtualWorld(playerid);
  16889. DropItems[id][dObject] = INVALID_OBJECT_ID;
  16890. //DropItems[id][dText] = INVALID_3DTEXT_ID;
  16891. for (new i = 0; i < 6; i ++) {
  16892. DropItems[id][dOffset][i] = Inventory[playerid][itemid][invOffset][i];
  16893. }
  16894. UpdateDropItem(id);
  16895. ResetInventoryItem(playerid, itemid);
  16896. format(gExecute, sizeof(gExecute), "UPDATE rp_items SET itemOwner = 0, itemDropped = 1, itemX = %.4f, itemY = %.4f, itemZ = %.4f, itemA = %.4f, itemInt = %i, itemWorld = %i WHERE itemID = %i", DropItems[id][dSpawn][0], DropItems[id][dSpawn][1], DropItems[id][dSpawn][2], DropItems[id][dSpawn][3], DropItems[id][dInterior], DropItems[id][dWorld], DropItems[id][dID]);
  16897. mysql_tquery(gConnection, gExecute);
  16898. }
  16899. }
  16900. }
  16901. return id;
  16902. }
  16903. AddDropItem(const item[], value, serial, Float:x, Float:y, Float:z, Float:angle, interior, worldid)
  16904. {
  16905. new
  16906. id = GetNextDropID();
  16907. if (isnull(item))
  16908. {
  16909. return INVALID_ID;
  16910. }
  16911. if (id != INVALID_ID)
  16912. {
  16913. strcpy(DropItems[id][dName], item, MAX_ITEM_NAME);
  16914. DropItems[id][dExists] = 1;
  16915. DropItems[id][dValue] = value;
  16916. DropItems[id][dSerial] = serial;
  16917. DropItems[id][dSpawn][0] = x;
  16918. DropItems[id][dSpawn][1] = y;
  16919. DropItems[id][dSpawn][2] = z;
  16920. DropItems[id][dSpawn][3] = angle;
  16921. DropItems[id][dInterior] = interior;
  16922. DropItems[id][dWorld] = worldid;
  16923. format(gExecute, sizeof(gExecute), "INSERT INTO rp_items (itemName, itemValue, itemSerial, itemDropped, itemX, itemY, itemZ, itemA, itemInt, itemWorld) VALUES('%s', %i, %i, 1, %.4f, %.4f, %.4f, %.4f, %i, %i)", DropItems[id][dName], DropItems[id][dValue], DropItems[id][dSerial], DropItems[id][dSpawn][0], DropItems[id][dSpawn][1], DropItems[id][dSpawn][2], DropItems[id][dSpawn][3], DropItems[id][dInterior], DropItems[id][dWorld]);
  16924. mysql_tquery(gConnection, gExecute, "OnDropItemAdded", "i", id);
  16925. UpdateDropItem(id);
  16926. }
  16927. return id;
  16928. }
  16929. DropWeapon(playerid, weaponid, ammo = 0)
  16930. {
  16931. new
  16932. Float:x,
  16933. Float:y,
  16934. Float:z,
  16935. Float:angle,
  16936. serial;
  16937. GetPlayerPos(playerid, x, y, z);
  16938. GetPlayerFacingAngle(playerid, angle);
  16939. if (weaponid == Weapons[playerid][wPrimary]) {
  16940. serial = Weapons[playerid][wPrimarySerial];
  16941. } else if (weaponid == Weapons[playerid][wSecondary]) {
  16942. serial = Weapons[playerid][wSecondarySerial];
  16943. } else if (weaponid == Weapons[playerid][wTertiary]) {
  16944. serial = Weapons[playerid][wTertiarySerial];
  16945. }
  16946. AddDropItem(GetWeaponItemName(weaponid), ammo, serial, x, y, z, angle, GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid));
  16947. if (weaponid == Weapons[playerid][wMelee]) {
  16948. SetPlayerWeapon(playerid, WEAPON_MELEE, 0);
  16949. } else if (weaponid == Weapons[playerid][wPrimary]) {
  16950. SetPlayerWeapon(playerid, WEAPON_PRIMARY, 0);
  16951. } else if (weaponid == Weapons[playerid][wSecondary]) {
  16952. SetPlayerWeapon(playerid, WEAPON_SECONDARY, 0);
  16953. } else if (weaponid == Weapons[playerid][wTertiary]) {
  16954. SetPlayerWeapon(playerid, WEAPON_TERTIARY, 0);
  16955. }
  16956. return 1;
  16957. }
  16958. DiscardItem(playerid, itemid)
  16959. {
  16960. TransferItem(playerid, itemid, TRANSFER_TO_GROUND);
  16961. return 1;
  16962. }
  16963. LoadTextDraws()
  16964. {
  16965. // House lights textdraw
  16966. gGlobalTextdraws[0] = TextDrawCreate(650.000000, -5.000000, "_");
  16967. TextDrawBackgroundColor(gGlobalTextdraws[0], 255);
  16968. TextDrawFont(gGlobalTextdraws[0], 1);
  16969. TextDrawLetterSize(gGlobalTextdraws[0], 0.500000, 55.000000);
  16970. TextDrawColor(gGlobalTextdraws[0], -1);
  16971. TextDrawSetOutline(gGlobalTextdraws[0], 0);
  16972. TextDrawSetProportional(gGlobalTextdraws[0], 1);
  16973. TextDrawSetShadow(gGlobalTextdraws[0], 1);
  16974. TextDrawUseBox(gGlobalTextdraws[0], 1);
  16975. TextDrawBoxColor(gGlobalTextdraws[0], 136);
  16976. TextDrawTextSize(gGlobalTextdraws[0], -10.000000, 0.000000);
  16977. // Time textdraw
  16978. gGlobalTextdraws[1] = TextDrawCreate(576.000000, 21.000000, "00:00");
  16979. TextDrawAlignment(gGlobalTextdraws[1], 2);
  16980. TextDrawBackgroundColor(gGlobalTextdraws[1], 255);
  16981. TextDrawFont(gGlobalTextdraws[1], 3);
  16982. TextDrawLetterSize(gGlobalTextdraws[1], 0.550000, 1.700000);
  16983. TextDrawColor(gGlobalTextdraws[1], -1);
  16984. TextDrawSetOutline(gGlobalTextdraws[1], 1);
  16985. TextDrawSetProportional(gGlobalTextdraws[1], 1);
  16986. // Black screen textdraw
  16987. gGlobalTextdraws[2] = TextDrawCreate(650.000000, -5.000000, "_");
  16988. TextDrawBackgroundColor(gGlobalTextdraws[2], 255);
  16989. TextDrawFont(gGlobalTextdraws[2], 1);
  16990. TextDrawLetterSize(gGlobalTextdraws[2], 0.500000, 55.000000);
  16991. TextDrawColor(gGlobalTextdraws[2], -1);
  16992. TextDrawSetOutline(gGlobalTextdraws[2], 0);
  16993. TextDrawSetProportional(gGlobalTextdraws[2], 1);
  16994. TextDrawSetShadow(gGlobalTextdraws[2], 1);
  16995. TextDrawUseBox(gGlobalTextdraws[2], 1);
  16996. TextDrawBoxColor(gGlobalTextdraws[2], 0x000000ff);
  16997. TextDrawTextSize(gGlobalTextdraws[2], -10.000000, 0.000000);
  16998. }
  16999. LoadStaticBuildings()
  17000. {
  17001. for (new i = 0; i < sizeof(g_StaticBuildings); i ++)
  17002. {
  17003. CreateDynamicPickup(g_StaticBuildings[i][e_IconModel], 23, g_StaticBuildings[i][e_SpawnX], g_StaticBuildings[i][e_SpawnY], g_StaticBuildings[i][e_SpawnZ]);
  17004. CreateDynamic3DTextLabel(g_StaticBuildings[i][e_BuildingName], COLOR_GREY, g_StaticBuildings[i][e_SpawnX], g_StaticBuildings[i][e_SpawnY], g_StaticBuildings[i][e_SpawnZ], 10.0);
  17005. }
  17006. for (new i = 0; i < sizeof(g_HospitalLocations); i ++)
  17007. {
  17008. CreateDynamicPickup(19198, 23, g_HospitalLocations[i][0], g_HospitalLocations[i][1], g_HospitalLocations[i][2] + 0.5);
  17009. CreateDynamic3DTextLabel("Press H to enter hospital", COLOR_GREY, g_HospitalLocations[i][0], g_HospitalLocations[i][1], g_HospitalLocations[i][2], 10.0);
  17010. }
  17011. }
  17012. LoadDynamicObjects()
  17013. {
  17014. // Inglewood Gas Station
  17015. CreateDynamicObject(1257, 1954.156494, -1767.254882, 13.792809, 0.000000, 0.000000, 180.000000);
  17016. CreateDynamicObject(970, 1942.256469, -1767.598266, 13.092811, 0.000000, 0.000000, 90.000000);
  17017. CreateDynamicObject(970, 1942.256469, -1771.718627, 13.092811, 0.000000, 0.000000, 90.000000);
  17018. CreateDynamicObject(970, 1942.256469, -1775.848876, 13.092811, 0.000000, 0.000000, 90.000000);
  17019. CreateDynamicObject(970, 1942.256469, -1777.948974, 13.092811, 0.000000, 0.000000, 90.000000);
  17020. CreateDynamicObject(970, 1941.095825, -1777.948974, 13.092811, 0.000000, 0.000000, 90.000000);
  17021. CreateDynamicObject(970, 1941.096191, -1775.848876, 13.092811, 0.000000, 0.000000, 90.000000);
  17022. CreateDynamicObject(970, 1941.096679, -1771.718627, 13.092811, 0.000000, 0.000000, 90.000000);
  17023. CreateDynamicObject(970, 1941.095703, -1767.598266, 13.092811, 0.000000, 0.000000, 90.000000);
  17024. CreateDynamicObject(1215, 1941.625610, -1780.841918, 13.160593, 0.000000, 0.000000, 95.991020);
  17025. CreateDynamicObject(1215, 1941.636230, -1765.047241, 13.160593, 0.000000, 0.000000, 95.991020);
  17026. CreateDynamicObject(1291, 1928.692382, -1767.511352, 13.032809, 0.000000, 0.000000, 90.000000);
  17027. CreateDynamicObject(1287, 1928.503662, -1768.784423, 13.076869, 0.000000, 0.000000, -90.000000);
  17028. CreateDynamicObject(1289, 1928.507202, -1769.368896, 13.092813, 0.000000, 0.000000, -90.228660);
  17029. //CreateDynamicObject(1216, 1928.558593, -1785.416381, 13.242809, 0.000000, 0.000000, 90.000000);
  17030. CreateDynamicObject(1250, 1908.817138, -1782.609863, 13.582806, 0.000000, 0.000000, 90.000000);
  17031. //lspd interior2
  17032. CreateDynamicObject(19379, 127.86078, 1135.12048, 526.37921, 0.00000, 90.00000, 0.00000);
  17033. CreateDynamicObject(19379, 117.57440, 1135.16626, 526.38123, 0.00000, 90.00000, 0.00000);
  17034. CreateDynamicObject(19379, 128.02011, 1128.01392, 526.37720, 0.00000, 90.00000, 0.00000);
  17035. CreateDynamicObject(19379, 117.61464, 1128.00610, 526.37921, 0.00000, 90.00000, 0.00000);
  17036. CreateDynamicObject(19450, 128.41344, 1139.85852, 528.14587, 0.00000, 0.00000, 90.00000);
  17037. CreateDynamicObject(19450, 133.13857, 1135.13562, 528.14587, 0.00000, 0.00000, 0.00000);
  17038. CreateDynamicObject(19450, 118.96809, 1139.86719, 528.14587, 0.00000, 0.00000, 90.00000);
  17039. CreateDynamicObject(19450, 122.09531, 1135.04700, 528.14587, 0.00000, 0.00000, 0.00000);
  17040. CreateDynamicObject(19458, 133.12823, 1136.35120, 525.85760, 0.00000, 0.00000, 0.00000);
  17041. CreateDynamicObject(19458, 119.86307, 1139.84583, 525.85760, 0.00000, 0.00000, 90.00000);
  17042. CreateDynamicObject(1536, 124.66843, 1139.78503, 526.44818, 0.00000, 0.00000, 0.00000);
  17043. CreateDynamicObject(1536, 127.65437, 1139.81555, 526.44818, 0.00000, 0.00000, 180.00000);
  17044. CreateDynamicObject(19458, 132.41571, 1139.83948, 525.85760, 0.00000, 0.00000, 90.00000);
  17045. CreateDynamicObject(19458, 122.11882, 1135.07520, 525.85760, 0.00000, 0.00000, 0.00000);
  17046. CreateDynamicObject(19358, 133.16109, 1131.60010, 525.92493, 0.00000, 0.00000, 90.00000);
  17047. CreateDynamicObject(19358, 130.39549, 1130.58801, 525.92291, 0.00000, 0.00000, 130.16800);
  17048. CreateDynamicObject(19431, 129.19858, 1128.81836, 525.92493, 0.00000, 0.00000, 0.00000);
  17049. CreateDynamicObject(2169, 132.11578, 1131.13257, 526.46643, 0.00000, 0.00000, 0.00000);
  17050. CreateDynamicObject(2169, 130.84669, 1130.22217, 526.46503, 0.00000, 0.00000, 40.16050);
  17051. CreateDynamicObject(2169, 129.91870, 1129.44458, 526.46442, 0.00000, 0.00000, 40.16050);
  17052. CreateDynamicObject(2169, 129.62215, 1128.10730, 526.46637, 0.00000, 0.00000, 90.00000);
  17053. CreateDynamicObject(19431, 129.20044, 1128.29749, 525.92291, 0.00000, 0.00000, 0.00000);
  17054. CreateDynamicObject(2190, 129.69472, 1129.83899, 527.23822, 0.00000, 0.00000, 40.00000);
  17055. CreateDynamicObject(19388, 133.13324, 1128.82117, 528.14587, 0.00000, 0.00000, 0.00000);
  17056. CreateDynamicObject(19358, 133.13043, 1125.87024, 528.14587, 0.00000, 0.00000, 0.00000);
  17057. CreateDynamicObject(19358, 130.72435, 1126.50049, 528.14587, 0.00000, 0.00000, 90.00000);
  17058. CreateDynamicObject(19431, 129.19862, 1127.22180, 525.92493, 0.00000, 0.00000, 0.00000);
  17059. CreateDynamicObject(19358, 133.35988, 1126.50269, 528.14587, 0.00000, 0.00000, 90.00000);
  17060. CreateDynamicObject(19358, 134.53226, 1131.59460, 528.14587, 0.00000, 0.00000, 90.00000);
  17061. CreateDynamicObject(2169, 129.61507, 1126.94189, 526.46442, 0.00000, 0.00000, 90.00000);
  17062. CreateDynamicObject(2190, 129.26579, 1127.07520, 527.23822, 0.00000, 0.00000, 90.00000);
  17063. CreateDynamicObject(2164, 132.49529, 1126.62976, 526.46252, 0.00000, 0.00000, 180.00000);
  17064. CreateDynamicObject(19513, 129.54300, 1128.15002, 527.25421, 0.00000, 0.00000, 45.00000);
  17065. CreateDynamicObject(2611, 132.98639, 1130.60254, 528.35309, 0.00000, 0.00000, 270.00000);
  17066. CreateDynamicObject(2356, 131.20386, 1128.90100, 526.46552, 0.00000, 0.00000, 37.00000);
  17067. CreateDynamicObject(2612, 122.21997, 1137.31628, 528.43170, 0.00000, 0.00000, 90.00000);
  17068. CreateDynamicObject(2356, 132.63315, 1130.37341, 526.46552, 0.00000, 0.00000, 135.00000);
  17069. CreateDynamicObject(2356, 130.88228, 1127.41321, 526.46552, 0.00000, 0.00000, 90.00000);
  17070. CreateDynamicObject(1721, 129.95886, 1139.60193, 526.46417, 0.00000, 0.00000, 180.00000);
  17071. CreateDynamicObject(1721, 130.64236, 1139.59973, 526.46417, 0.00000, 0.00000, 180.00000);
  17072. CreateDynamicObject(1721, 131.31886, 1139.59790, 526.46417, 0.00000, 0.00000, 180.00000);
  17073. CreateDynamicObject(1721, 131.99246, 1139.59460, 526.46417, 0.00000, 0.00000, 180.00000);
  17074. CreateDynamicObject(1721, 132.89439, 1138.72046, 526.46417, 0.00000, 0.00000, 90.00000);
  17075. CreateDynamicObject(1721, 132.88988, 1138.05505, 526.46417, 0.00000, 0.00000, 90.00000);
  17076. CreateDynamicObject(1721, 132.88197, 1137.37195, 526.46417, 0.00000, 0.00000, 90.00000);
  17077. CreateDynamicObject(2854, 132.66000, 1139.39026, 526.98291, 0.00000, 0.00000, 0.00000);
  17078. CreateDynamicObject(2209, 132.77827, 1139.48816, 526.17407, 0.00000, 0.00000, 0.00000);
  17079. CreateDynamicObject(19358, 133.15997, 1131.60742, 531.34406, 0.00000, 0.00000, 90.00000);
  17080. CreateDynamicObject(19358, 130.38956, 1130.60095, 531.34412, 0.00000, 0.00000, 130.16800);
  17081. CreateDynamicObject(19358, 129.19667, 1128.02588, 531.34412, 0.00000, 0.00000, 0.00000);
  17082. CreateDynamicObject(19466, 132.67456, 1131.59009, 528.87982, 0.00000, 0.00000, 90.00000);
  17083. CreateDynamicObject(19466, 130.73343, 1130.86206, 528.87982, 0.00000, 0.00000, 130.16800);
  17084. CreateDynamicObject(19466, 130.07275, 1130.29126, 528.87982, 0.00000, 0.00000, 130.16800);
  17085. CreateDynamicObject(19466, 129.21117, 1128.45630, 528.87982, 0.00000, 0.00000, 0.00000);
  17086. CreateDynamicObject(19466, 129.20494, 1126.27002, 528.87982, 0.00000, 0.00000, 0.00000);
  17087. CreateDynamicObject(19358, 129.21419, 1124.81445, 528.14587, 0.00000, 0.00000, 0.00000);
  17088. CreateDynamicObject(19358, 129.64127, 1123.28308, 528.14587, 0.00000, 0.00000, 90.00000);
  17089. CreateDynamicObject(19388, 127.26681, 1123.27673, 528.14587, 0.00000, 0.00000, 90.00000);
  17090. CreateDynamicObject(19388, 123.65508, 1123.27258, 528.14587, 0.00000, 0.00000, 90.00000);
  17091. CreateDynamicObject(19450, 122.09448, 1127.87793, 528.14587, 0.00000, 0.00000, 0.00000);
  17092. CreateDynamicObject(19431, 125.38683, 1123.28088, 528.14587, 0.00000, 0.00000, 90.00000);
  17093. CreateDynamicObject(19439, 125.69112, 1123.29248, 525.85760, 0.00000, 0.00000, 90.00000);
  17094. CreateDynamicObject(19439, 128.80530, 1123.29688, 525.85760, 0.00000, 0.00000, 90.00000);
  17095. CreateDynamicObject(19439, 129.20062, 1124.04504, 525.85760, 0.00000, 0.00000, 0.00000);
  17096. CreateDynamicObject(19439, 129.20180, 1125.62695, 525.85760, 0.00000, 0.00000, 0.00000);
  17097. CreateDynamicObject(19439, 125.19050, 1123.28931, 525.85760, 0.00000, 0.00000, 90.00000);
  17098. CreateDynamicObject(19458, 122.11900, 1128.18408, 525.85760, 0.00000, 0.00000, 0.00000);
  17099. CreateDynamicObject(19458, 118.06525, 1123.28918, 525.85760, 0.00000, 0.00000, 90.00000);
  17100. CreateDynamicObject(2886, 128.26689, 1123.35132, 528.10840, 0.00000, 0.00000, 180.00000);
  17101. CreateDynamicObject(2886, 122.54852, 1123.34033, 528.10840, 0.00000, 0.00000, 180.00000);
  17102. CreateDynamicObject(2611, 122.23282, 1135.57751, 528.43170, 0.00000, 0.00000, 90.00000);
  17103. CreateDynamicObject(2011, 122.70470, 1139.35327, 526.42072, 0.00000, 0.00000, 0.00000);
  17104. CreateDynamicObject(1549, 129.22298, 1139.57593, 526.37823, 0.00000, 0.00000, 0.00000);
  17105. CreateDynamicObject(2412, 124.79014, 1139.64636, 526.46570, 0.00000, 0.00000, 0.00000);
  17106. CreateDynamicObject(2412, 128.20688, 1139.63660, 526.46588, 0.00000, 0.00000, 0.00000);
  17107. CreateDynamicObject(2688, 133.06993, 1127.75256, 528.23529, 0.00000, 0.00000, 270.00000);
  17108. CreateDynamicObject(2690, 123.52813, 1139.72498, 527.11108, 0.00000, 0.00000, 0.00000);
  17109. CreateDynamicObject(2961, 124.14986, 1139.77234, 528.08264, 0.00000, 0.00000, 0.00000);
  17110. CreateDynamicObject(2261, 132.48260, 1138.41125, 528.27228, 0.00000, 0.00000, 270.00000);
  17111. CreateDynamicObject(2262, 132.56378, 1135.51196, 528.27228, 0.00000, 0.00000, 270.00000);
  17112. CreateDynamicObject(2264, 132.54478, 1132.67273, 528.27228, 0.00000, 0.00000, 270.00000);
  17113. CreateDynamicObject(19450, 137.88420, 1130.76587, 528.14587, 0.00000, 0.00000, 90.00000);
  17114. CreateDynamicObject(19388, 135.74176, 1126.50525, 528.14587, 0.00000, 0.00000, 90.00000);
  17115. CreateDynamicObject(19450, 137.27266, 1127.41260, 528.14587, 0.00000, 0.00000, 0.00000);
  17116. CreateDynamicObject(19388, 131.19031, 1121.67798, 528.14587, 0.00000, 0.00000, 0.00000);
  17117. CreateDynamicObject(19450, 135.92627, 1120.17273, 528.14587, 0.00000, 0.00000, 90.00000);
  17118. CreateDynamicObject(19450, 137.26620, 1124.91907, 528.14587, 0.00000, 0.00000, 0.00000);
  17119. CreateDynamicObject(19358, 131.59143, 1124.35205, 528.14587, 0.00000, 0.00000, 90.00000);
  17120. CreateDynamicObject(19358, 131.19286, 1124.45386, 528.14587, 0.00000, 0.00000, 0.00000);
  17121. CreateDynamicObject(19379, 136.40410, 1127.89185, 526.37518, 0.00000, 90.00000, 0.00000);
  17122. CreateDynamicObject(19379, 136.35280, 1121.61792, 526.35522, 0.00000, 90.00000, 0.00000);
  17123. CreateDynamicObject(19450, 117.34834, 1123.14880, 528.14587, 0.00000, 0.00000, 90.00000);
  17124. CreateDynamicObject(19450, 120.83286, 1120.00720, 528.14587, 0.00000, 0.00000, 0.00000);
  17125. CreateDynamicObject(19377, 126.00430, 1118.56348, 526.35321, 0.00000, 90.00000, 0.00000);
  17126. CreateDynamicObject(19377, 126.00710, 1114.51001, 526.34918, 0.00000, 90.00000, 0.00000);
  17127. CreateDynamicObject(19358, 131.18378, 1118.60645, 528.14587, 0.00000, 0.00000, 0.00000);
  17128. CreateDynamicObject(19358, 131.18018, 1115.43103, 528.14587, 0.00000, 0.00000, 0.00000);
  17129. CreateDynamicObject(19358, 131.19102, 1113.94202, 528.14587, 0.00000, 0.00000, 0.00000);
  17130. CreateDynamicObject(19366, 125.57810, 1118.22913, 528.14392, 0.00000, 0.00000, 90.00000);
  17131. CreateDynamicObject(19358, 124.04066, 1116.72290, 528.14587, 0.00000, 0.00000, 0.00000);
  17132. CreateDynamicObject(19358, 127.09470, 1116.71899, 528.14587, 0.00000, 0.00000, 0.00000);
  17133. CreateDynamicObject(19358, 127.09979, 1114.06091, 528.14587, 0.00000, 0.00000, 0.00000);
  17134. CreateDynamicObject(19358, 124.04125, 1114.05273, 528.14587, 0.00000, 0.00000, 0.00000);
  17135. CreateDynamicObject(19366, 125.57174, 1112.56445, 528.14392, 0.00000, 0.00000, 90.00000);
  17136. CreateDynamicObject(19358, 120.82690, 1113.90955, 528.14587, 0.00000, 0.00000, 0.00000);
  17137. CreateDynamicObject(2614, 125.58346, 1118.36316, 528.86505, 0.00000, 0.00000, 180.00000);
  17138. CreateDynamicObject(2614, 125.53983, 1112.40186, 528.86511, 0.00000, 0.00000, 0.00000);
  17139. CreateDynamicObject(19388, 132.70236, 1112.39661, 528.14587, 0.00000, 0.00000, 90.00000);
  17140. CreateDynamicObject(19358, 141.42851, 1112.37512, 528.14587, 0.00000, 0.00000, 90.00000);
  17141. CreateDynamicObject(19450, 140.34441, 1108.21594, 528.14587, 0.00000, 0.00000, 0.00000);
  17142. CreateDynamicObject(19450, 116.09457, 1112.37366, 528.14587, 0.00000, 0.00000, 90.00000);
  17143. CreateDynamicObject(19450, 140.03827, 1117.17700, 528.14587, 0.00000, 0.00000, 0.00000);
  17144. CreateDynamicObject(19379, 136.50000, 1117.20544, 526.35321, 0.00000, 90.00000, 0.00000);
  17145. CreateDynamicObject(19377, 116.49130, 1114.53735, 526.35120, 0.00000, 90.00000, 0.00000);
  17146. CreateDynamicObject(19377, 136.47391, 1114.50964, 526.35120, 0.00000, 90.00000, 0.00000);
  17147. CreateDynamicObject(19377, 142.11330, 1105.17847, 526.35321, 0.00000, 90.00000, 0.00000);
  17148. CreateDynamicObject(19444, 125.61120, 1109.78027, 526.69269, 90.00000, 0.00000, 90.00000);
  17149. CreateDynamicObject(19444, 122.12870, 1109.77466, 526.69470, 90.00000, 0.00000, 90.00000);
  17150. CreateDynamicObject(19444, 129.09680, 1109.76733, 526.69470, 90.00000, 0.00000, 90.00000);
  17151. CreateDynamicObject(19444, 132.47932, 1109.75732, 526.69269, 90.00000, 0.00000, 90.00000);
  17152. CreateDynamicObject(19444, 135.13850, 1109.76782, 526.69470, 90.00000, 0.00000, 90.00000);
  17153. CreateDynamicObject(19444, 118.67280, 1109.77686, 526.69269, 90.00000, 0.00000, 90.00000);
  17154. CreateDynamicObject(19444, 115.94530, 1109.78259, 526.69470, 90.00000, 0.00000, 90.00000);
  17155. CreateDynamicObject(19454, 112.46471, 1108.96716, 526.35321, 0.00000, 90.00000, 0.00000);
  17156. CreateDynamicObject(1536, 117.59206, 1112.31213, 526.35492, 0.00000, 0.00000, 0.00000);
  17157. CreateDynamicObject(19454, 138.60808, 1098.81006, 526.35522, 0.00000, 90.00000, 0.00000);
  17158. CreateDynamicObject(14877, 141.86850, 1099.50378, 524.35712, 0.00000, 0.00000, 90.00000);
  17159. CreateDynamicObject(2191, 133.68246, 1125.46155, 526.46252, 0.00000, 0.00000, 90.00000);
  17160. CreateDynamicObject(2204, 137.17787, 1125.03723, 526.46118, 0.00000, 0.00000, 270.00000);
  17161. CreateDynamicObject(2737, 133.89690, 1120.30957, 528.38220, 0.00000, 0.00000, 180.00000);
  17162. CreateDynamicObject(2182, 136.68703, 1121.71301, 526.45947, 0.00000, 0.00000, 180.00000);
  17163. CreateDynamicObject(2190, 137.09000, 1121.60791, 527.25787, 0.00000, 0.00000, 270.00000);
  17164. CreateDynamicObject(1536, 131.11464, 1120.86609, 526.42352, 0.00000, 0.00000, 20.52520);
  17165. CreateDynamicObject(1330, 132.39899, 1120.70972, 526.75928, 0.00000, 0.00000, 0.00000);
  17166. CreateDynamicObject(2011, 131.62309, 1123.81348, 526.45740, 0.00000, 0.00000, 0.00000);
  17167. CreateDynamicObject(1722, 133.34651, 1124.60852, 526.46259, 0.00000, 0.00000, 270.00000);
  17168. CreateDynamicObject(1806, 135.58820, 1121.36292, 526.45648, 0.00000, 0.00000, 307.22849);
  17169. CreateDynamicObject(2010, 136.87805, 1125.93713, 526.46216, 0.00000, 0.00000, 0.00000);
  17170. CreateDynamicObject(1536, 133.15187, 1129.61304, 526.45752, 0.00000, 0.00000, 12.11936);
  17171. CreateDynamicObject(2256, 135.08641, 1130.65771, 528.70770, 0.00000, 0.00000, 0.00000);
  17172. CreateDynamicObject(2258, 137.15707, 1128.67090, 528.65802, 0.00000, 0.00000, 269.69696);
  17173. CreateDynamicObject(2690, 133.26740, 1130.38123, 527.15887, 0.00000, 0.00000, 90.00000);
  17174. CreateDynamicObject(1722, 134.50121, 1126.67163, 526.46228, 0.00000, 0.00000, 0.00000);
  17175. CreateDynamicObject(1722, 133.79807, 1126.65308, 526.46222, 0.00000, 0.00000, 0.00000);
  17176. CreateDynamicObject(2205, 136.08499, 1117.84949, 526.45868, 0.00000, 0.00000, 180.00000);
  17177. CreateDynamicObject(19325, 137.56654, 1112.37195, 527.85474, 0.00000, 0.00000, 90.00000);
  17178. CreateDynamicObject(14455, 139.99011, 1114.04700, 528.09216, 0.00000, 0.00000, 90.00000);
  17179. CreateDynamicObject(1722, 134.87361, 1116.13501, 526.43964, 0.00000, 0.00000, 0.00000);
  17180. CreateDynamicObject(1722, 135.92680, 1116.13586, 526.45947, 0.00000, 0.00000, 0.00000);
  17181. CreateDynamicObject(2611, 133.11266, 1120.04382, 528.52368, 0.00000, 0.00000, 0.00000);
  17182. CreateDynamicObject(2204, 131.35355, 1113.01428, 526.43878, 0.00000, 0.00000, 90.00000);
  17183. CreateDynamicObject(2162, 131.32373, 1116.18311, 528.17126, 0.00000, 0.00000, 90.00000);
  17184. CreateDynamicObject(2612, 135.37790, 1120.04858, 528.52368, 0.00000, 0.00000, 0.00000);
  17185. CreateDynamicObject(2737, 138.35339, 1120.02527, 528.52368, 0.00000, 0.00000, 0.00000);
  17186. CreateDynamicObject(2615, 138.15709, 1120.01147, 528.69427, 0.00000, 0.00000, 0.00000);
  17187. CreateDynamicObject(2894, 134.89040, 1117.84570, 527.39203, 0.00000, 0.00000, 332.81030);
  17188. CreateDynamicObject(2196, 134.66370, 1118.03210, 527.38831, 0.00000, 0.00000, 22.75634);
  17189. CreateDynamicObject(2190, 136.18956, 1117.44397, 527.38831, 0.00000, 0.00000, 220.00000);
  17190. CreateDynamicObject(18870, 135.70641, 1117.98608, 527.39209, 0.00000, 0.00000, 200.00000);
  17191. CreateDynamicObject(2606, 131.41156, 1118.94824, 528.36499, 0.00000, 0.00000, 90.00000);
  17192. CreateDynamicObject(2010, 139.58926, 1119.63770, 526.44238, 0.00000, 0.00000, 0.00000);
  17193. CreateDynamicObject(2011, 139.51135, 1113.02698, 526.43896, 0.00000, 0.00000, 0.00000);
  17194. CreateDynamicObject(1330, 131.64388, 1115.89709, 526.74182, 0.00000, 0.00000, 0.00000);
  17195. CreateDynamicObject(1708, 135.09679, 1112.80481, 526.44012, 0.00000, 0.00000, 90.00000);
  17196. CreateDynamicObject(1708, 138.28033, 1113.82666, 526.44092, 0.00000, 0.00000, 270.00000);
  17197. CreateDynamicObject(1714, 135.60278, 1119.42688, 526.43811, 0.00000, 0.00000, 344.77161);
  17198. CreateDynamicObject(1822, 136.19110, 1112.79016, 526.43884, 0.00000, 0.00000, 0.00000);
  17199. CreateDynamicObject(19454, 112.45860, 1099.36975, 526.35120, 0.00000, 90.00000, 0.00000);
  17200. CreateDynamicObject(19454, 135.50690, 1093.47217, 526.35321, 0.00000, 90.00000, 90.00000);
  17201. CreateDynamicObject(19454, 125.93092, 1093.45447, 526.35522, 0.00000, 90.00000, 90.00000);
  17202. CreateDynamicObject(19454, 116.40486, 1093.46167, 526.35718, 0.00000, 90.00000, 90.00000);
  17203. CreateDynamicObject(19454, 109.46172, 1093.44653, 526.35522, 0.00000, 90.00000, 90.00000);
  17204. CreateDynamicObject(19444, 136.78610, 1108.07617, 526.69269, 90.00000, 0.00000, 0.00000);
  17205. CreateDynamicObject(19444, 136.78461, 1104.66504, 526.69470, 90.00000, 0.00000, 0.00000);
  17206. CreateDynamicObject(19444, 136.78720, 1101.24780, 526.69269, 90.00000, 0.00000, 0.00000);
  17207. CreateDynamicObject(19444, 136.79449, 1097.75964, 526.69470, 90.00000, 0.00000, 0.00000);
  17208. CreateDynamicObject(19444, 136.78951, 1096.97217, 526.69269, 90.00000, 0.00000, 0.00000);
  17209. CreateDynamicObject(19444, 135.11729, 1095.30383, 526.69470, 90.00000, 0.00000, 90.00000);
  17210. CreateDynamicObject(19444, 131.70110, 1095.29980, 526.69269, 90.00000, 0.00000, 90.00000);
  17211. CreateDynamicObject(19444, 128.26730, 1095.29834, 526.69470, 90.00000, 0.00000, 90.00000);
  17212. CreateDynamicObject(19444, 124.84230, 1095.30347, 526.69269, 90.00000, 0.00000, 90.00000);
  17213. CreateDynamicObject(19444, 121.39020, 1095.29907, 526.69470, 90.00000, 0.00000, 90.00000);
  17214. CreateDynamicObject(19444, 117.95600, 1095.28748, 526.69269, 90.00000, 0.00000, 90.00000);
  17215. CreateDynamicObject(19444, 114.28280, 1108.09314, 526.69269, 90.00000, 0.00000, 0.00000);
  17216. CreateDynamicObject(19444, 114.25240, 1104.68054, 526.69470, 90.00000, 0.00000, 0.00000);
  17217. CreateDynamicObject(19444, 114.23370, 1101.21851, 526.69269, 90.00000, 0.00000, 0.00000);
  17218. CreateDynamicObject(19444, 114.22680, 1097.79871, 526.69470, 90.00000, 0.00000, 0.00000);
  17219. CreateDynamicObject(19444, 115.89910, 1095.28357, 526.69470, 90.00000, 0.00000, 90.00000);
  17220. CreateDynamicObject(19444, 114.22220, 1096.95386, 526.69269, 90.00000, 0.00000, 0.00000);
  17221. CreateDynamicObject(19450, 111.37985, 1107.63342, 528.14587, 0.00000, 0.00000, 0.00000);
  17222. CreateDynamicObject(19450, 111.38427, 1098.07153, 528.14587, 0.00000, 0.00000, 0.00000);
  17223. CreateDynamicObject(19450, 111.38670, 1089.84912, 528.14587, 0.00000, 0.00000, 0.00000);
  17224. CreateDynamicObject(18756, 113.27636, 1098.83459, 528.43286, 0.00000, 0.00000, 0.00000);
  17225. CreateDynamicObject(18757, 113.27254, 1098.81433, 528.43292, 0.00000, 0.00000, 0.00000);
  17226. CreateDynamicObject(18756, 113.26991, 1105.07324, 528.43292, 0.00000, 0.00000, 0.00000);
  17227. CreateDynamicObject(18757, 113.25907, 1105.04565, 528.43292, 0.00000, 0.00000, 0.00000);
  17228. CreateDynamicObject(2010, 111.79386, 1111.89648, 526.43835, 0.00000, 0.00000, 345.26868);
  17229. CreateDynamicObject(19450, 140.27351, 1095.55518, 528.14587, 0.00000, 0.00000, 0.00000);
  17230. CreateDynamicObject(19388, 112.93038, 1091.72949, 528.14587, 0.00000, 0.00000, 90.00000);
  17231. CreateDynamicObject(19379, 115.76257, 1086.75574, 526.35321, 0.00000, 90.00000, 0.00000);
  17232. CreateDynamicObject(19325, 117.73980, 1091.73083, 528.19171, 0.00000, 0.00000, 90.00000);
  17233. CreateDynamicObject(2357, 116.70911, 1088.50146, 526.77863, 0.00000, 0.00000, 0.00000);
  17234. CreateDynamicObject(19450, 121.02410, 1086.94360, 528.14587, 0.00000, 0.00000, 0.00000);
  17235. CreateDynamicObject(19450, 116.12797, 1085.07898, 528.14587, 0.00000, 0.00000, 90.00000);
  17236. CreateDynamicObject(1714, 119.77950, 1088.46509, 526.40222, 0.00000, 0.00000, 270.00000);
  17237. CreateDynamicObject(1671, 118.46954, 1089.92505, 526.85437, 0.00000, 0.00000, 0.00000);
  17238. CreateDynamicObject(1671, 117.28407, 1089.92969, 526.85437, 0.00000, 0.00000, 0.00000);
  17239. CreateDynamicObject(1671, 116.15219, 1089.93604, 526.85437, 0.00000, 0.00000, 0.00000);
  17240. CreateDynamicObject(1671, 115.10846, 1089.94739, 526.85437, 0.00000, 0.00000, 0.00000);
  17241. CreateDynamicObject(1671, 118.45634, 1087.13391, 526.85437, 0.00000, 0.00000, 180.00000);
  17242. CreateDynamicObject(1671, 117.36018, 1087.12891, 526.85437, 0.00000, 0.00000, 180.00000);
  17243. CreateDynamicObject(1671, 116.15527, 1087.15271, 526.85437, 0.00000, 0.00000, 180.00000);
  17244. CreateDynamicObject(1671, 115.05414, 1087.15967, 526.85437, 0.00000, 0.00000, 180.00000);
  17245. CreateDynamicObject(2737, 111.52480, 1088.78040, 528.27179, 0.00000, 0.00000, 90.00000);
  17246. CreateDynamicObject(14604, 112.01170, 1085.64783, 527.32050, 0.00000, 0.00000, 311.34229);
  17247. CreateDynamicObject(1455, 118.05880, 1088.92456, 527.25232, 0.00000, 0.00000, 0.00000);
  17248. CreateDynamicObject(1455, 116.17137, 1088.16382, 527.25232, 0.00000, 0.00000, 0.00000);
  17249. CreateDynamicObject(2894, 118.48130, 1088.46375, 527.18390, 0.00000, 0.00000, 90.00000);
  17250. CreateDynamicObject(2161, 120.38039, 1085.16174, 528.04303, 0.00000, 0.00000, 180.00000);
  17251. CreateDynamicObject(2002, 111.98170, 1092.22778, 526.44098, 0.00000, 0.00000, 90.00000);
  17252. CreateDynamicObject(2011, 111.82670, 1091.19421, 526.43658, 0.00000, 0.00000, 0.00000);
  17253. CreateDynamicObject(1330, 120.52814, 1085.52783, 526.74475, 0.00000, 0.00000, 0.00000);
  17254. CreateDynamicObject(2288, 118.26725, 1085.69128, 528.27216, 0.00000, 0.00000, 180.00000);
  17255. CreateDynamicObject(2288, 113.80272, 1085.66016, 528.27222, 0.00000, 0.00000, 180.00000);
  17256. CreateDynamicObject(19450, 139.56389, 1091.73572, 528.14587, 0.00000, 0.00000, 90.00000);
  17257. CreateDynamicObject(19366, 134.82491, 1090.20447, 528.14392, 0.00000, 0.00000, 0.00000);
  17258. CreateDynamicObject(19366, 134.81180, 1087.08533, 528.14789, 0.00000, 0.00000, 0.00000);
  17259. CreateDynamicObject(19366, 133.30695, 1085.41980, 528.14587, 0.00000, 0.00000, 90.00000);
  17260. CreateDynamicObject(19366, 130.14590, 1085.43359, 528.14789, 0.00000, 0.00000, 90.00000);
  17261. CreateDynamicObject(19431, 128.62367, 1084.70020, 528.14587, 0.00000, 0.00000, 0.00000);
  17262. CreateDynamicObject(19377, 129.46500, 1086.96521, 526.35120, 0.00000, 90.00000, 0.00000);
  17263. CreateDynamicObject(19377, 125.91820, 1086.97253, 526.34918, 0.00000, 90.00000, 0.00000);
  17264. CreateDynamicObject(1713, 131.95149, 1086.21045, 526.43347, 0.00000, 0.00000, 180.00000);
  17265. CreateDynamicObject(1713, 132.90269, 1088.75122, 526.43347, 0.00000, 0.00000, 270.00000);
  17266. CreateDynamicObject(2010, 134.30821, 1085.90833, 526.43738, 0.00000, 0.00000, 0.00000);
  17267. CreateDynamicObject(1775, 134.35789, 1091.14221, 527.52203, 0.00000, 0.00000, 270.00000);
  17268. CreateDynamicObject(1776, 134.35620, 1089.94055, 527.51801, 0.00000, 0.00000, 270.00000);
  17269. CreateDynamicObject(2082, 130.69630, 1087.53809, 526.43719, 0.00000, 0.00000, 0.00000);
  17270. CreateDynamicObject(2852, 131.14174, 1088.06909, 526.93237, 0.00000, 0.00000, 0.00000);
  17271. CreateDynamicObject(1549, 129.10576, 1086.14331, 526.43652, 0.00000, 0.00000, 0.00000);
  17272. CreateDynamicObject(19225, 127.12206, 1082.65051, 526.43390, 0.00000, 0.00000, 0.00000);
  17273. CreateDynamicObject(19325, 128.60576, 1082.03406, 528.35968, 0.00000, 0.00000, 0.00000);
  17274. CreateDynamicObject(19388, 128.65894, 1077.93237, 528.14587, 0.00000, 0.00000, 0.00000);
  17275. CreateDynamicObject(19377, 123.37313, 1077.45435, 526.35321, 0.00000, 90.00000, 0.00000);
  17276. CreateDynamicObject(19450, 123.24889, 1073.73486, 528.14587, 0.00000, 0.00000, 45.00000);
  17277. CreateDynamicObject(19450, 125.56961, 1072.72607, 528.14587, 0.00000, 0.00000, 90.00000);
  17278. CreateDynamicObject(19450, 133.39168, 1076.40552, 528.14587, 0.00000, 0.00000, 90.00000);
  17279. CreateDynamicObject(19450, 135.73665, 1081.16174, 528.14587, 0.00000, 0.00000, 0.00000);
  17280. CreateDynamicObject(19450, 133.41606, 1085.22180, 528.14587, 0.00000, 0.00000, 90.00000);
  17281. CreateDynamicObject(19379, 133.84380, 1080.66089, 526.35919, 0.00000, 90.00000, 0.00000);
  17282. CreateDynamicObject(19377, 133.79469, 1071.60303, 526.36121, 0.00000, 90.00000, 0.00000);
  17283. CreateDynamicObject(2165, 133.11618, 1082.18774, 526.43860, 0.00000, 0.00000, 90.00000);
  17284. CreateDynamicObject(1714, 134.51045, 1082.76270, 526.43060, 0.00000, 0.00000, 270.00000);
  17285. CreateDynamicObject(1722, 131.52663, 1083.32080, 526.43988, 0.00000, 0.00000, 270.00000);
  17286. CreateDynamicObject(1722, 131.51898, 1082.16638, 526.43988, 0.00000, 0.00000, 270.00000);
  17287. CreateDynamicObject(2010, 129.19586, 1084.72717, 526.43927, 0.00000, 0.00000, 0.00000);
  17288. CreateDynamicObject(2164, 130.03203, 1076.50342, 526.43958, 0.00000, 0.00000, 180.00000);
  17289. CreateDynamicObject(2167, 130.94780, 1076.48743, 526.44019, 0.00000, 0.00000, 180.00000);
  17290. CreateDynamicObject(1742, 133.52155, 1076.36609, 526.43951, 0.00000, 0.00000, 180.00000);
  17291. CreateDynamicObject(2611, 135.61458, 1079.95618, 528.61853, 0.00000, 0.00000, 270.00000);
  17292. CreateDynamicObject(2612, 135.59764, 1077.76465, 528.61853, 0.00000, 0.00000, 270.00000);
  17293. CreateDynamicObject(1330, 135.27205, 1076.87073, 526.74207, 0.00000, 0.00000, 0.00000);
  17294. CreateDynamicObject(14604, 135.09319, 1084.59290, 527.37329, 0.00000, 0.00000, 131.09131);
  17295. CreateDynamicObject(2260, 131.79678, 1084.62195, 528.47632, 0.00000, 0.00000, 0.00000);
  17296. CreateDynamicObject(2002, 129.20558, 1079.10645, 526.43970, 0.00000, 0.00000, 90.00000);
  17297. CreateDynamicObject(19388, 131.86816, 1072.72595, 528.14587, 0.00000, 0.00000, 90.00000);
  17298. CreateDynamicObject(19450, 130.17386, 1067.83179, 528.14587, 0.00000, 0.00000, 0.00000);
  17299. CreateDynamicObject(19450, 138.23438, 1072.72717, 528.14587, 0.00000, 0.00000, 90.00000);
  17300. CreateDynamicObject(19450, 135.75153, 1077.51001, 528.14587, 0.00000, 0.00000, 0.00000);
  17301. CreateDynamicObject(19450, 134.93445, 1066.40051, 528.14587, 0.00000, 0.00000, 90.00000);
  17302. CreateDynamicObject(19450, 138.87886, 1068.02002, 528.14587, 0.00000, 0.00000, 0.00000);
  17303. CreateDynamicObject(19379, 134.65723, 1067.95557, 526.35718, 0.00000, 90.00000, 0.00000);
  17304. CreateDynamicObject(3077, 138.69243, 1069.44690, 526.13965, 0.00000, 0.00000, 90.00000);
  17305. CreateDynamicObject(14604, 138.19545, 1071.98853, 527.25476, 0.00000, 0.00000, 115.51939);
  17306. CreateDynamicObject(1811, 136.20747, 1072.29272, 527.06049, 0.00000, 0.00000, 180.00000);
  17307. CreateDynamicObject(1811, 136.19643, 1071.29944, 527.06049, 0.00000, 0.00000, 180.00000);
  17308. CreateDynamicObject(1811, 134.75218, 1072.29626, 527.06049, 0.00000, 0.00000, 180.00000);
  17309. CreateDynamicObject(1811, 134.77368, 1071.33752, 527.06049, 0.00000, 0.00000, 180.00000);
  17310. CreateDynamicObject(1811, 133.36150, 1072.35144, 527.06049, 0.00000, 0.00000, 180.00000);
  17311. CreateDynamicObject(1811, 133.31682, 1071.41089, 527.06049, 0.00000, 0.00000, 180.00000);
  17312. CreateDynamicObject(1811, 136.12198, 1066.84167, 527.06049, 0.00000, 0.00000, 180.00000);
  17313. CreateDynamicObject(1811, 136.12402, 1067.77856, 527.06049, 0.00000, 0.00000, 180.00000);
  17314. CreateDynamicObject(1811, 136.13535, 1068.73511, 527.06049, 0.00000, 0.00000, 180.00000);
  17315. CreateDynamicObject(1811, 134.73260, 1068.75024, 527.06049, 0.00000, 0.00000, 180.00000);
  17316. CreateDynamicObject(1811, 134.69025, 1067.75879, 527.06049, 0.00000, 0.00000, 180.00000);
  17317. CreateDynamicObject(1811, 134.70734, 1066.86731, 527.06049, 0.00000, 0.00000, 180.00000);
  17318. CreateDynamicObject(1811, 133.33559, 1068.78430, 527.06049, 0.00000, 0.00000, 180.00000);
  17319. CreateDynamicObject(1811, 133.30193, 1067.76831, 527.06049, 0.00000, 0.00000, 180.00000);
  17320. CreateDynamicObject(1811, 133.32515, 1066.87988, 527.06049, 0.00000, 0.00000, 180.00000);
  17321. CreateDynamicObject(2011, 130.54782, 1066.73120, 526.44244, 0.00000, 0.00000, 0.00000);
  17322. CreateDynamicObject(1330, 130.61829, 1072.21741, 526.74847, 0.00000, 0.00000, 0.00000);
  17323. CreateDynamicObject(2262, 135.15402, 1074.61951, 528.36896, 0.00000, 0.00000, 270.00000);
  17324. CreateDynamicObject(19450, 121.02251, 1077.49500, 528.14587, 0.00000, 0.00000, 0.00000);
  17325. CreateDynamicObject(14877, 141.87305, 1108.05750, 528.16107, 0.00000, 0.00000, 90.00000);
  17326. CreateDynamicObject(19377, 131.63106, 1114.61804, 530.15784, 0.00000, 90.00000, 0.00000);
  17327. CreateDynamicObject(19377, 139.73129, 1114.63342, 530.15979, 0.00000, 90.00000, 0.00000);
  17328. CreateDynamicObject(19454, 138.55641, 1105.10388, 530.16180, 0.00000, 90.00000, 0.00000);
  17329. CreateDynamicObject(19378, 127.24680, 1135.48657, 529.91479, 0.00000, 90.00000, 0.00000);
  17330. CreateDynamicObject(19378, 127.26780, 1127.97620, 529.91882, 0.00000, 90.00000, 0.00000);
  17331. CreateDynamicObject(19378, 137.31441, 1135.49072, 529.91681, 0.00000, 90.00000, 0.00000);
  17332. CreateDynamicObject(19378, 137.50050, 1128.01025, 529.91278, 0.00000, 90.00000, 0.00000);
  17333. CreateDynamicObject(19379, 126.02420, 1118.75073, 529.91479, 0.00000, 90.00000, 0.00000);
  17334. CreateDynamicObject(19378, 136.39461, 1124.86157, 529.91479, 0.00000, 90.00000, 0.00000);
  17335. CreateDynamicObject(19379, 133.77930, 1080.69104, 529.91681, 0.00000, 90.00000, 0.00000);
  17336. CreateDynamicObject(19379, 123.94470, 1080.68713, 529.91278, 0.00000, 90.00000, 0.00000);
  17337. CreateDynamicObject(19379, 135.44540, 1071.05615, 529.91479, 0.00000, 90.00000, 0.00000);
  17338. CreateDynamicObject(19379, 125.79240, 1074.95581, 529.91882, 0.00000, 90.00000, 0.00000);
  17339. CreateDynamicObject(19379, 116.08100, 1087.01868, 529.91882, 0.00000, 90.00000, 0.00000);
  17340. CreateDynamicObject(19379, 136.26430, 1117.10559, 529.91681, 0.00000, 90.00000, 0.00000);
  17341. CreateDynamicObject(19379, 126.48530, 1087.06067, 529.91083, 0.00000, 90.00000, 0.00000);
  17342. CreateDynamicObject(19379, 131.38940, 1087.10059, 529.91479, 0.00000, 90.00000, 0.00000);
  17343. CreateDynamicObject(19379, 125.84450, 1117.11646, 529.91681, 0.00000, 90.00000, 0.00000);
  17344. CreateDynamicObject(19454, 138.53020, 1095.95715, 530.15778, 0.00000, 90.00000, 0.00000);
  17345. CreateDynamicObject(19454, 132.67810, 1093.54395, 530.15979, 0.00000, 90.00000, 90.00000);
  17346. CreateDynamicObject(19454, 123.07740, 1093.54980, 530.16180, 0.00000, 90.00000, 90.00000);
  17347. CreateDynamicObject(19454, 113.53893, 1093.53662, 530.15778, 0.00000, 90.00000, 90.00000);
  17348. CreateDynamicObject(19454, 112.54580, 1098.87085, 530.15582, 0.00000, 90.00000, 0.00000);
  17349. CreateDynamicObject(19454, 112.55270, 1108.42798, 530.15778, 0.00000, 90.00000, 0.00000);
  17350. CreateDynamicObject(19454, 121.63480, 1111.54858, 530.15582, 0.00000, 90.00000, 90.00000);
  17351. CreateDynamicObject(19454, 114.24620, 1111.54163, 530.15979, 0.00000, 90.00000, 90.00000);
  17352. CreateDynamicObject(19444, 134.94830, 1109.84155, 530.61499, 90.00000, 0.00000, 90.00000);
  17353. CreateDynamicObject(19444, 131.51460, 1109.83362, 530.61700, 90.00000, 90.00000, 0.00000);
  17354. CreateDynamicObject(19444, 128.05809, 1109.84094, 530.61499, 90.00000, 90.00000, 0.00000);
  17355. CreateDynamicObject(19444, 124.58686, 1109.82886, 530.61499, 90.00000, 90.00000, 0.00000);
  17356. CreateDynamicObject(19444, 121.11240, 1109.83362, 530.61298, 90.00000, 90.00000, 0.00000);
  17357. CreateDynamicObject(19444, 117.65174, 1109.82898, 530.61499, 90.00000, 90.00000, 0.00000);
  17358. CreateDynamicObject(19444, 116.05900, 1109.82178, 530.61700, 90.00000, 90.00000, 0.00000);
  17359. CreateDynamicObject(19444, 114.36700, 1108.12878, 530.61499, 90.00000, 0.00000, 0.00000);
  17360. CreateDynamicObject(19444, 114.38530, 1104.65454, 530.61700, 90.00000, 0.00000, 0.00000);
  17361. CreateDynamicObject(19444, 114.38590, 1101.19116, 530.61499, 90.00000, 0.00000, 0.00000);
  17362. CreateDynamicObject(19444, 114.38820, 1097.69788, 530.61700, 90.00000, 0.00000, 0.00000);
  17363. CreateDynamicObject(19444, 114.40220, 1096.99829, 530.61902, 90.00000, 0.00000, 0.00000);
  17364. CreateDynamicObject(19454, 141.66440, 1113.54224, 530.15778, 0.00000, 90.00000, 0.00000);
  17365. CreateDynamicObject(19444, 116.08480, 1095.34558, 530.62097, 90.00000, 0.00000, 90.00000);
  17366. CreateDynamicObject(19444, 119.57096, 1095.35339, 530.61902, 90.00000, 0.00000, 90.00000);
  17367. CreateDynamicObject(19444, 123.01680, 1095.35278, 530.62097, 90.00000, 90.00000, 0.00000);
  17368. CreateDynamicObject(19444, 126.46865, 1095.33594, 530.61902, 90.00000, 90.00000, 0.00000);
  17369. CreateDynamicObject(19444, 129.93410, 1095.33057, 530.61700, 90.00000, 90.00000, 0.00000);
  17370. CreateDynamicObject(19444, 133.37680, 1095.32898, 530.61902, 90.00000, 90.00000, 0.00000);
  17371. CreateDynamicObject(19444, 135.18970, 1095.32666, 530.62097, 90.00000, 90.00000, 0.00000);
  17372. CreateDynamicObject(19444, 136.86742, 1097.01819, 530.61902, 90.00000, 0.00000, 0.00000);
  17373. CreateDynamicObject(19444, 136.86099, 1100.41992, 530.62097, 90.00000, 0.00000, 0.00000);
  17374. CreateDynamicObject(19444, 136.86174, 1103.87610, 530.61902, 90.00000, 0.00000, 0.00000);
  17375. CreateDynamicObject(19444, 136.87041, 1107.34583, 530.62097, 90.00000, 0.00000, 0.00000);
  17376. CreateDynamicObject(19444, 135.21918, 1109.83801, 530.61902, 90.00000, 0.00000, 90.00000);
  17377. CreateDynamicObject(19444, 136.88350, 1108.15576, 530.62299, 90.00000, 0.00000, 0.00000);
  17378. CreateDynamicObject(19462, 112.69556, 1096.55469, 529.91479, 0.00000, 90.00000, 0.00000);
  17379. CreateDynamicObject(19462, 112.62840, 1106.10645, 529.91278, 0.00000, 90.00000, 0.00000);
  17380. CreateDynamicObject(19462, 112.33601, 1111.62097, 529.91479, 0.00000, 90.00000, 90.00000);
  17381. CreateDynamicObject(19462, 121.68850, 1111.61267, 529.91278, 0.00000, 90.00000, 90.00000);
  17382. CreateDynamicObject(19462, 130.72701, 1111.54761, 529.91882, 0.00000, 90.00000, 90.00000);
  17383. CreateDynamicObject(19462, 138.96800, 1111.54187, 529.91479, 0.00000, 90.00000, 90.00000);
  17384. CreateDynamicObject(19462, 138.61723, 1105.10620, 529.91278, 0.00000, 90.00000, 0.00000);
  17385. CreateDynamicObject(19462, 138.57025, 1095.76221, 529.91479, 0.00000, 90.00000, 0.00000);
  17386. CreateDynamicObject(19462, 132.49710, 1093.56824, 529.91278, 0.00000, 90.00000, 90.00000);
  17387. CreateDynamicObject(19462, 123.22495, 1093.50879, 529.91479, 0.00000, 90.00000, 90.00000);
  17388. CreateDynamicObject(19462, 114.56200, 1093.60425, 529.91681, 0.00000, 90.00000, 90.00000);
  17389. CreateDynamicObject(19388, 140.34053, 1101.93823, 528.14587, 0.00000, 0.00000, 0.00000);
  17390. CreateDynamicObject(19450, 140.28880, 1103.91687, 531.60571, 0.00000, 0.00000, 0.00000);
  17391. CreateDynamicObject(19450, 140.29112, 1094.44104, 531.97791, 0.00000, 0.00000, 0.00000);
  17392. CreateDynamicObject(19450, 145.02670, 1100.66614, 531.60571, 0.00000, 0.00000, 90.00000);
  17393. CreateDynamicObject(19450, 129.96780, 1087.15955, 531.97791, 0.00000, 0.00000, 0.00000);
  17394. CreateDynamicObject(19450, 111.58964, 1096.60803, 531.97791, 0.00000, 0.00000, 0.00000);
  17395. CreateDynamicObject(19450, 111.58822, 1106.23401, 531.97791, 0.00000, 0.00000, 0.00000);
  17396. CreateDynamicObject(19450, 111.58785, 1115.74939, 531.97791, 0.00000, 0.00000, 0.00000);
  17397. CreateDynamicObject(19450, 116.37499, 1113.31738, 531.97791, 0.00000, 0.00000, 90.00000);
  17398. CreateDynamicObject(19325, 136.24066, 1091.88831, 532.21271, 0.00000, 0.00000, 90.00000);
  17399. CreateDynamicObject(19450, 141.36540, 1116.48499, 531.97791, 0.00000, 0.00000, 90.00000);
  17400. CreateDynamicObject(19450, 143.44580, 1113.48291, 531.97791, 0.00000, 0.00000, 0.00000);
  17401. CreateDynamicObject(18756, 113.47980, 1098.88000, 532.21948, 0.00000, 0.00000, 0.00000);
  17402. CreateDynamicObject(18757, 113.46759, 1098.85889, 532.21948, 0.00000, 0.00000, 0.00000);
  17403. CreateDynamicObject(18756, 113.46564, 1105.14160, 532.21948, 0.00000, 0.00000, 0.00000);
  17404. CreateDynamicObject(18757, 113.46570, 1105.09106, 532.21948, 0.00000, 0.00000, 0.00000);
  17405. CreateDynamicObject(2010, 139.85884, 1092.50354, 530.23560, 0.00000, 0.00000, 0.00000);
  17406. CreateDynamicObject(19377, 125.82520, 1116.18567, 530.15979, 0.00000, 90.00000, 0.00000);
  17407. CreateDynamicObject(19450, 136.62334, 1121.22974, 531.97791, 0.00000, 0.00000, 0.00000);
  17408. CreateDynamicObject(19450, 134.95810, 1115.57117, 531.97791, 0.00000, 0.00000, 298.09003);
  17409. CreateDynamicObject(19450, 125.93468, 1113.31970, 531.97791, 0.00000, 0.00000, 90.00000);
  17410. CreateDynamicObject(19388, 131.48174, 1091.88867, 531.97791, 0.00000, 0.00000, 90.00000);
  17411. CreateDynamicObject(19325, 126.89705, 1091.92029, 532.21271, 0.00000, 0.00000, 90.00000);
  17412. CreateDynamicObject(19388, 122.14970, 1091.87549, 531.97791, 0.00000, 0.00000, 90.00000);
  17413. CreateDynamicObject(19325, 117.70520, 1091.87073, 532.21271, 0.00000, 0.00000, 90.00000);
  17414. CreateDynamicObject(19388, 113.00563, 1091.83191, 531.97791, 0.00000, 0.00000, 90.00000);
  17415. CreateDynamicObject(19450, 134.76254, 1086.60999, 531.97791, 0.00000, 0.00000, 90.00000);
  17416. CreateDynamicObject(19450, 125.27247, 1086.61072, 531.97791, 0.00000, 0.00000, 90.00000);
  17417. CreateDynamicObject(19450, 120.62556, 1087.12634, 531.97791, 0.00000, 0.00000, 0.00000);
  17418. CreateDynamicObject(19450, 115.72308, 1086.61133, 531.97791, 0.00000, 0.00000, 90.00000);
  17419. CreateDynamicObject(19450, 111.54620, 1087.20276, 531.97791, 0.00000, 0.00000, 0.00000);
  17420. CreateDynamicObject(19450, 139.49138, 1087.04407, 531.97791, 0.00000, 0.00000, 0.00000);
  17421. CreateDynamicObject(19379, 124.42427, 1087.07080, 530.16382, 0.00000, 90.00000, 0.00000);
  17422. CreateDynamicObject(19379, 115.33568, 1087.04480, 530.16577, 0.00000, 90.00000, 0.00000);
  17423. CreateDynamicObject(2165, 137.57381, 1088.74829, 530.24573, 0.00000, 0.00000, 90.00000);
  17424. CreateDynamicObject(2165, 127.95204, 1088.84363, 530.24573, 0.00000, 0.00000, 90.00000);
  17425. CreateDynamicObject(2165, 118.61790, 1088.83020, 530.24573, 0.00000, 0.00000, 90.00000);
  17426. CreateDynamicObject(2612, 111.69997, 1089.28882, 532.43109, 0.00000, 0.00000, 90.00000);
  17427. CreateDynamicObject(2204, 114.13966, 1086.77905, 530.25262, 0.00000, 0.00000, 180.00000);
  17428. CreateDynamicObject(1722, 116.92688, 1089.94971, 530.25269, 0.00000, 0.00000, 270.00000);
  17429. CreateDynamicObject(1722, 116.95602, 1088.77759, 530.25262, 0.00000, 0.00000, 270.00000);
  17430. CreateDynamicObject(1806, 120.13129, 1089.28381, 530.25342, 0.00000, 0.00000, 90.00000);
  17431. CreateDynamicObject(2010, 111.95350, 1091.20374, 530.25269, 0.00000, 0.00000, 0.00000);
  17432. CreateDynamicObject(2288, 116.08520, 1087.20911, 532.12488, 0.00000, 0.00000, 180.00000);
  17433. CreateDynamicObject(2288, 119.47620, 1087.23804, 532.12488, 0.00000, 0.00000, 180.00000);
  17434. CreateDynamicObject(2204, 123.21225, 1086.70837, 530.25262, 0.00000, 0.00000, 180.00000);
  17435. CreateDynamicObject(2612, 120.74992, 1089.23096, 532.43109, 0.00000, 0.00000, 90.00000);
  17436. CreateDynamicObject(2010, 121.13047, 1091.35425, 530.25031, 0.00000, 0.00000, 0.00000);
  17437. CreateDynamicObject(2288, 125.32215, 1087.19531, 532.12488, 0.00000, 0.00000, 180.00000);
  17438. CreateDynamicObject(2288, 128.70610, 1087.19165, 532.12488, 0.00000, 0.00000, 180.00000);
  17439. CreateDynamicObject(1722, 126.37733, 1089.83777, 530.25043, 0.00000, 0.00000, 270.00000);
  17440. CreateDynamicObject(1722, 126.38070, 1088.81104, 530.25018, 0.00000, 0.00000, 270.00000);
  17441. CreateDynamicObject(1806, 129.45699, 1089.26892, 530.25128, 0.00000, 0.00000, 90.00000);
  17442. CreateDynamicObject(2162, 129.84070, 1088.24731, 532.02911, 0.00000, 0.00000, 270.00000);
  17443. CreateDynamicObject(2162, 120.51205, 1088.25647, 532.02911, 0.00000, 0.00000, 270.00000);
  17444. CreateDynamicObject(2162, 139.41263, 1088.26233, 532.02911, 0.00000, 0.00000, 270.00000);
  17445. CreateDynamicObject(2288, 138.35809, 1087.20105, 532.12488, 0.00000, 0.00000, 180.00000);
  17446. CreateDynamicObject(2288, 134.09587, 1087.22839, 532.12488, 0.00000, 0.00000, 180.00000);
  17447. CreateDynamicObject(2204, 132.50148, 1086.68408, 530.25262, 0.00000, 0.00000, 180.00000);
  17448. CreateDynamicObject(2612, 130.12473, 1089.21899, 532.43109, 0.00000, 0.00000, 90.00000);
  17449. CreateDynamicObject(2010, 130.54945, 1091.37976, 530.24780, 0.00000, 0.00000, 0.00000);
  17450. CreateDynamicObject(19379, 134.88551, 1087.09924, 530.16180, 0.00000, 90.00000, 0.00000);
  17451. CreateDynamicObject(1722, 135.97946, 1089.82288, 530.24792, 0.00000, 0.00000, 270.00000);
  17452. CreateDynamicObject(1722, 135.97874, 1088.71265, 530.24780, 0.00000, 0.00000, 270.00000);
  17453. CreateDynamicObject(1806, 139.01837, 1089.03369, 530.24902, 0.00000, 0.00000, 90.00000);
  17454. CreateDynamicObject(1330, 139.01315, 1087.08191, 530.55060, 0.00000, 0.00000, 0.00000);
  17455. CreateDynamicObject(1330, 129.52734, 1087.09998, 530.55060, 0.00000, 0.00000, 0.00000);
  17456. CreateDynamicObject(1330, 120.19865, 1087.10083, 530.55060, 0.00000, 0.00000, 0.00000);
  17457. CreateDynamicObject(1536, 113.75910, 1091.90076, 530.20190, 0.00000, 0.00000, 256.70200);
  17458. CreateDynamicObject(1536, 122.90400, 1091.92590, 530.20190, 0.00000, 0.00000, 256.70200);
  17459. CreateDynamicObject(1536, 132.24448, 1091.88440, 530.20190, 0.00000, 0.00000, 256.70200);
  17460. CreateDynamicObject(1775, 137.40103, 1116.03918, 531.36017, 0.00000, 0.00000, 0.00000);
  17461. CreateDynamicObject(1776, 138.67079, 1116.17371, 531.29559, 0.00000, 0.00000, 0.00000);
  17462. CreateDynamicObject(1536, 114.49542, 1113.25586, 530.27441, 0.00000, 0.00000, 0.00000);
  17463. CreateDynamicObject(1536, 127.30031, 1113.21472, 530.27441, 0.00000, 0.00000, 0.00000);
  17464. CreateDynamicObject(19379, 142.08961, 1096.71240, 533.76501, 0.00000, 90.00000, 0.00000);
  17465. CreateDynamicObject(19379, 142.11040, 1106.17957, 533.77100, 0.00000, 90.00000, 0.00000);
  17466. CreateDynamicObject(19379, 142.10101, 1115.62122, 533.77301, 0.00000, 90.00000, 0.00000);
  17467. CreateDynamicObject(19379, 132.30190, 1114.64856, 533.77502, 0.00000, 90.00000, 0.00000);
  17468. CreateDynamicObject(19379, 121.99330, 1114.64441, 533.77301, 0.00000, 90.00000, 0.00000);
  17469. CreateDynamicObject(19379, 111.87560, 1114.64026, 533.77502, 0.00000, 90.00000, 0.00000);
  17470. CreateDynamicObject(19379, 109.17750, 1107.13855, 533.77301, 0.00000, 90.00000, 0.00000);
  17471. CreateDynamicObject(19379, 109.18620, 1097.55298, 533.77502, 0.00000, 90.00000, 0.00000);
  17472. CreateDynamicObject(19379, 117.32070, 1090.59680, 533.77301, 0.00000, 90.00000, 0.00000);
  17473. CreateDynamicObject(19379, 127.82350, 1090.58374, 533.77502, 0.00000, 90.00000, 0.00000);
  17474. CreateDynamicObject(19379, 135.60220, 1090.58838, 533.77100, 0.00000, 90.00000, 0.00000);
  17475. CreateDynamicObject(19454, 115.62560, 1101.58276, 534.97791, 0.00000, 45.00000, 0.00000);
  17476. CreateDynamicObject(19454, 115.62793, 1111.15210, 534.97791, 0.00000, 45.00000, 0.00000);
  17477. CreateDynamicObject(19454, 115.62869, 1092.26245, 534.97791, 0.00000, 45.00000, 0.00000);
  17478. CreateDynamicObject(19454, 119.26988, 1096.59265, 534.97791, 0.00000, 45.00000, 90.00000);
  17479. CreateDynamicObject(19454, 128.86475, 1096.59167, 534.97791, 0.00000, 45.00000, 90.00000);
  17480. CreateDynamicObject(19454, 138.40860, 1096.57214, 534.97791, 0.00000, 45.00000, 90.00000);
  17481. CreateDynamicObject(19454, 135.64600, 1100.10974, 534.97791, 0.00000, 134.00000, 0.00000);
  17482. CreateDynamicObject(19454, 135.63617, 1109.42273, 534.97791, 0.00000, 134.00000, 0.00000);
  17483. CreateDynamicObject(19454, 132.16199, 1108.62390, 534.97791, 0.00000, 134.00000, 90.00000);
  17484. CreateDynamicObject(19454, 122.63538, 1108.62158, 534.97791, 0.00000, 134.00000, 90.00000);
  17485. CreateDynamicObject(19454, 113.23528, 1108.62549, 534.97791, 0.00000, 134.00000, 90.00000);
  17486. CreateDynamicObject(3851, 122.49400, 1099.75952, 536.20520, 0.00000, 90.00000, 90.00000);
  17487. CreateDynamicObject(3851, 122.49060, 1103.74939, 536.20319, 0.00000, 90.00000, 90.00000);
  17488. CreateDynamicObject(3851, 122.46804, 1107.65796, 536.20520, 0.00000, 90.00000, 90.00000);
  17489. CreateDynamicObject(3851, 133.76593, 1099.80408, 536.20923, 0.00000, 90.00000, 270.00000);
  17490. CreateDynamicObject(3851, 133.69357, 1103.72632, 536.20721, 0.00000, 90.00000, 90.00000);
  17491. CreateDynamicObject(3851, 133.77928, 1107.68640, 536.20319, 0.00000, 90.00000, 90.00000);
  17492. CreateDynamicObject(14604, 129.49469, 1091.40381, 531.14410, 0.00000, 0.00000, 90.00000);
  17493. CreateDynamicObject(14604, 139.02293, 1091.41394, 531.14410, 0.00000, 0.00000, 90.00000);
  17494. CreateDynamicObject(14604, 120.19371, 1091.40466, 531.14410, 0.00000, 0.00000, 90.00000);
  17495. CreateDynamicObject(1722, 143.20032, 1113.64319, 530.24573, 0.00000, 0.00000, 90.00000);
  17496. CreateDynamicObject(1722, 143.19011, 1114.44873, 530.24628, 0.00000, 0.00000, 90.00000);
  17497. CreateDynamicObject(1722, 143.20047, 1115.30127, 530.24622, 0.00000, 0.00000, 90.00000);
  17498. CreateDynamicObject(1722, 142.26004, 1116.34290, 530.24579, 0.00000, 0.00000, 180.00000);
  17499. CreateDynamicObject(1722, 141.35948, 1116.30200, 530.24579, 0.00000, 0.00000, 180.00000);
  17500. CreateDynamicObject(2082, 142.62309, 1115.68152, 530.24670, 0.00000, 0.00000, 0.00000);
  17501. CreateDynamicObject(2854, 142.94212, 1116.10400, 530.74310, 0.00000, 0.00000, 341.63055);
  17502. CreateDynamicObject(2011, 139.88695, 1115.98315, 530.24506, 0.00000, 0.00000, 0.00000);
  17503. CreateDynamicObject(1549, 143.02838, 1112.83582, 530.24652, 0.00000, 0.00000, 90.00000);
  17504. CreateDynamicObject(2010, 111.97650, 1112.83801, 530.24548, 0.00000, 0.00000, 0.00000);
  17505. CreateDynamicObject(19450, 140.33904, 1096.14893, 528.14587, 0.00000, 0.00000, 180.00000);
  17506. CreateDynamicObject(19377, 142.11330, 1105.17847, 526.35321, 0.00000, 90.00000, 0.00000);
  17507. CreateDynamicObject(19450, 143.44560, 1103.92468, 531.60571, 0.00000, 0.00000, 0.00000);
  17508. CreateDynamicObject(19450, 143.43307, 1104.31189, 528.14587, 0.00000, 0.00000, 0.00000);
  17509. CreateDynamicObject(19450, 143.43233, 1095.75171, 528.14587, 0.00000, 0.00000, 0.00000);
  17510. CreateDynamicObject(19379, 112.94600, 1087.97253, 533.77698, 0.00000, 90.00000, 0.00000);
  17511. CreateDynamicObject(19377, 145.44911, 1095.91614, 529.95880, 0.00000, 90.00000, 0.00000);
  17512. CreateDynamicObject(19377, 145.25360, 1093.57092, 529.96082, 0.00000, 90.00000, 0.00000);
  17513. CreateDynamicObject(19450, 140.27440, 1103.93079, 531.97791, 0.00000, 0.00000, 0.00000);
  17514. CreateDynamicObject(19450, 140.27980, 1096.92285, 531.97791, 0.00000, 0.00000, 0.00000);
  17515. CreateDynamicObject(19450, 144.21477, 1091.81763, 531.97791, 0.00000, 0.00000, 90.00000);
  17516. CreateDynamicObject(19450, 143.44524, 1104.04932, 531.97791, 0.00000, 0.00000, 0.00000);
  17517. CreateDynamicObject(19450, 145.14032, 1100.67163, 531.97791, 0.00000, 0.00000, 90.00000);
  17518. CreateDynamicObject(19450, 140.29176, 1103.91882, 531.97791, 0.00000, 0.00000, 0.00000);
  17519. CreateDynamicObject(19450, 140.28751, 1099.33887, 524.66052, 0.00000, 0.00000, 0.00000);
  17520. CreateDynamicObject(19388, 142.01030, 1100.68762, 528.14587, 0.00000, 0.00000, 90.00000);
  17521. CreateDynamicObject(2886, 140.85306, 1100.70117, 528.07343, 0.00000, 0.00000, 180.00000);
  17522. CreateDynamicObject(1536, 142.78467, 1100.68640, 526.44043, 0.00000, 0.00000, 75.00000);
  17523. CreateDynamicObject(19388, 140.28903, 1093.00366, 524.66052, 0.00000, 0.00000, 0.00000);
  17524. CreateDynamicObject(19377, 138.24370, 1092.36133, 522.83350, 0.00000, 90.00000, 0.00000);
  17525. CreateDynamicObject(19377, 138.24451, 1101.89868, 522.83148, 0.00000, 90.00000, 0.00000);
  17526. CreateDynamicObject(19377, 138.26080, 1111.43579, 522.83350, 0.00000, 90.00000, 0.00000);
  17527. CreateDynamicObject(19377, 128.06461, 1109.92236, 522.82953, 0.00000, 90.00000, 0.00000);
  17528. CreateDynamicObject(19377, 128.07579, 1100.29578, 522.83551, 0.00000, 90.00000, 0.00000);
  17529. CreateDynamicObject(19377, 128.07312, 1091.23816, 522.83148, 0.00000, 90.00000, 0.00000);
  17530. CreateDynamicObject(19450, 135.54425, 1091.48877, 524.66052, 0.00000, 0.00000, 90.00000);
  17531. CreateDynamicObject(19450, 143.40021, 1088.80066, 524.66052, 0.00000, 0.00000, 90.00000);
  17532. CreateDynamicObject(19450, 125.92052, 1091.49451, 524.66052, 0.00000, 0.00000, 90.00000);
  17533. CreateDynamicObject(19388, 141.97325, 1091.68042, 524.66052, 0.00000, 0.00000, 90.00000);
  17534. CreateDynamicObject(19358, 138.67682, 1087.18726, 524.66052, 0.00000, 0.00000, 0.00000);
  17535. CreateDynamicObject(19388, 138.68344, 1084.03223, 524.66052, 0.00000, 0.00000, 0.00000);
  17536. CreateDynamicObject(19385, 140.28984, 1085.25476, 524.66052, 0.00000, 0.00000, 90.00000);
  17537. CreateDynamicObject(19385, 143.47412, 1085.25293, 524.66052, 0.00000, 0.00000, 90.00000);
  17538. CreateDynamicObject(19385, 146.64734, 1085.24963, 524.66052, 0.00000, 0.00000, 90.00000);
  17539. CreateDynamicObject(19385, 138.69080, 1084.03247, 524.66248, 0.00000, 0.00000, 0.00000);
  17540. CreateDynamicObject(19355, 138.69785, 1087.13940, 524.66052, 0.00000, 0.00000, 0.00000);
  17541. CreateDynamicObject(19447, 143.54721, 1088.74988, 524.66052, 0.00000, 0.00000, 90.00000);
  17542. CreateDynamicObject(19355, 141.68327, 1086.77551, 524.66052, 0.00000, 0.00000, 0.00000);
  17543. CreateDynamicObject(19355, 141.67004, 1087.09839, 524.66052, 0.00000, 0.00000, 0.00000);
  17544. CreateDynamicObject(19447, 143.52057, 1082.50903, 524.66052, 0.00000, 0.00000, 90.00000);
  17545. CreateDynamicObject(19355, 148.16312, 1086.85205, 524.66052, 0.00000, 0.00000, 0.00000);
  17546. CreateDynamicObject(19355, 148.16469, 1088.76746, 524.66052, 0.00000, 0.00000, 0.00000);
  17547. CreateDynamicObject(19355, 144.96552, 1086.84717, 524.66052, 0.00000, 0.00000, 0.00000);
  17548. CreateDynamicObject(19355, 144.95012, 1087.26794, 524.66052, 0.00000, 0.00000, 0.00000);
  17549. CreateDynamicObject(19447, 148.18352, 1087.19287, 524.66052, 0.00000, 0.00000, 0.00000);
  17550. CreateDynamicObject(19302, 140.18980, 1085.21912, 524.15747, 0.00000, 0.00000, 0.00000);
  17551. CreateDynamicObject(19302, 143.38164, 1085.24597, 524.15747, 0.00000, 0.00000, 0.00000);
  17552. CreateDynamicObject(19302, 146.55701, 1085.25659, 524.15747, 0.00000, 0.00000, 0.00000);
  17553. CreateDynamicObject(19377, 143.75160, 1083.44604, 522.83148, 0.00000, 90.00000, 0.00000);
  17554. CreateDynamicObject(19377, 148.67390, 1090.22339, 522.82953, 0.00000, 90.00000, 0.00000);
  17555. CreateDynamicObject(1771, 143.26036, 1087.97412, 523.32465, 0.00000, 0.00000, 90.00000);
  17556. CreateDynamicObject(1771, 140.20673, 1087.95862, 523.32458, 0.00000, 0.00000, 90.00000);
  17557. CreateDynamicObject(1771, 146.60081, 1087.96973, 523.32458, 0.00000, 0.00000, 90.00000);
  17558. CreateDynamicObject(2602, 145.53918, 1085.67456, 523.36853, 0.00000, 0.00000, 180.00000);
  17559. CreateDynamicObject(2602, 142.34212, 1085.69116, 523.36853, 0.00000, 0.00000, 180.00000);
  17560. CreateDynamicObject(2602, 139.24156, 1085.70129, 523.36853, 0.00000, 0.00000, 180.00000);
  17561. CreateDynamicObject(1495, 138.72729, 1083.30469, 522.91858, 0.00000, 0.00000, 90.00000);
  17562. CreateDynamicObject(19377, 133.31830, 1083.48254, 522.82953, 0.00000, 90.00000, 0.00000);
  17563. CreateDynamicObject(19388, 133.77499, 1088.80090, 524.66052, 0.00000, 0.00000, 90.00000);
  17564. CreateDynamicObject(19358, 136.98422, 1088.79785, 524.66052, 0.00000, 0.00000, 90.00000);
  17565. CreateDynamicObject(19359, 133.91905, 1081.94104, 521.99481, 0.00000, 0.00000, 90.00000);
  17566. CreateDynamicObject(19359, 131.98703, 1081.96216, 521.99280, 0.00000, 0.00000, 90.00000);
  17567. CreateDynamicObject(1722, 135.03220, 1082.08691, 522.91711, 0.00000, 0.00000, 0.00000);
  17568. CreateDynamicObject(1722, 134.31194, 1082.10254, 522.91705, 0.00000, 0.00000, 0.00000);
  17569. CreateDynamicObject(1722, 133.63879, 1082.11487, 522.91705, 0.00000, 0.00000, 0.00000);
  17570. CreateDynamicObject(1722, 132.14066, 1082.13123, 522.91693, 0.00000, 0.00000, 0.00000);
  17571. CreateDynamicObject(2010, 132.93507, 1082.44189, 522.91675, 0.00000, 0.00000, 0.00000);
  17572. CreateDynamicObject(1722, 131.43916, 1082.12134, 522.91669, 0.00000, 0.00000, 0.00000);
  17573. CreateDynamicObject(1722, 130.77658, 1082.11987, 522.91687, 0.00000, 0.00000, 0.00000);
  17574. CreateDynamicObject(19358, 130.60133, 1088.80103, 524.66052, 0.00000, 0.00000, 90.00000);
  17575. CreateDynamicObject(19358, 128.77126, 1088.79529, 524.66052, 0.00000, 0.00000, 90.00000);
  17576. CreateDynamicObject(19358, 127.24265, 1087.27637, 524.66052, 0.00000, 0.00000, 0.00000);
  17577. CreateDynamicObject(19388, 127.24377, 1084.09473, 524.66052, 0.00000, 0.00000, 0.00000);
  17578. CreateDynamicObject(19450, 130.63762, 1079.06775, 524.66052, 0.00000, 0.00000, 45.00000);
  17579. CreateDynamicObject(19450, 135.27208, 1078.98413, 524.66052, 0.00000, 0.00000, 135.00000);
  17580. CreateDynamicObject(19450, 132.39598, 1078.92346, 524.66052, 0.00000, 0.00000, 90.00000);
  17581. CreateDynamicObject(19379, 139.86205, 1086.73352, 526.35522, 0.00000, 90.00000, 0.00000);
  17582. CreateDynamicObject(19379, 143.18819, 1083.98682, 526.35498, 0.00000, 90.00000, 0.00000);
  17583. CreateDynamicObject(19379, 129.75432, 1086.60962, 526.34723, 0.00000, 90.00000, 0.00000);
  17584. CreateDynamicObject(2191, 138.09259, 1088.18298, 522.91998, 0.00000, 0.00000, 270.00000);
  17585. CreateDynamicObject(2198, 135.08080, 1086.37158, 522.91553, 0.00000, 0.00000, 90.00000);
  17586. CreateDynamicObject(2198, 136.94574, 1085.53943, 522.91699, 0.00000, 0.00000, 180.00000);
  17587. CreateDynamicObject(2162, 138.59955, 1086.56250, 524.52618, 0.00000, 0.00000, 270.00000);
  17588. CreateDynamicObject(1806, 136.55389, 1087.21790, 522.91748, 0.00000, 0.00000, 90.00000);
  17589. CreateDynamicObject(1806, 136.36046, 1086.26489, 522.91791, 0.00000, 0.00000, 180.00000);
  17590. CreateDynamicObject(1495, 127.22569, 1083.35547, 522.91858, 0.00000, 0.00000, 90.00000);
  17591. CreateDynamicObject(19385, 127.22547, 1084.09802, 524.66052, 0.00000, 0.00000, 0.00000);
  17592. CreateDynamicObject(19447, 122.34933, 1082.73865, 524.66052, 0.00000, 0.00000, 90.00000);
  17593. CreateDynamicObject(19385, 125.62576, 1085.35486, 524.66052, 0.00000, 0.00000, 90.00000);
  17594. CreateDynamicObject(19385, 122.59427, 1085.34717, 524.66052, 0.00000, 0.00000, 90.00000);
  17595. CreateDynamicObject(19385, 119.60833, 1085.33813, 524.66052, 0.00000, 0.00000, 90.00000);
  17596. CreateDynamicObject(19447, 122.36819, 1088.57544, 524.66052, 0.00000, 0.00000, 90.00000);
  17597. CreateDynamicObject(19355, 118.08986, 1087.00342, 524.66052, 0.00000, 0.00000, 0.00000);
  17598. CreateDynamicObject(19355, 121.20937, 1086.87244, 524.66052, 0.00000, 0.00000, 0.00000);
  17599. CreateDynamicObject(19355, 127.17812, 1087.03943, 524.66052, 0.00000, 0.00000, 0.00000);
  17600. CreateDynamicObject(19355, 124.09195, 1086.87817, 524.66052, 0.00000, 0.00000, 0.00000);
  17601. CreateDynamicObject(19355, 118.10075, 1083.70496, 524.66052, 0.00000, 0.00000, 0.00000);
  17602. CreateDynamicObject(19377, 122.89516, 1083.72327, 522.82550, 0.00000, 90.00000, 0.00000);
  17603. CreateDynamicObject(19302, 125.52569, 1085.38574, 524.15747, 0.00000, 0.00000, 0.00000);
  17604. CreateDynamicObject(19302, 122.50881, 1085.33984, 524.15747, 0.00000, 0.00000, 0.00000);
  17605. CreateDynamicObject(19302, 119.50971, 1085.33813, 524.15747, 0.00000, 0.00000, 0.00000);
  17606. CreateDynamicObject(1771, 122.69280, 1087.83594, 523.32458, 0.00000, 0.00000, 90.00000);
  17607. CreateDynamicObject(1771, 125.63544, 1087.78369, 523.32458, 0.00000, 0.00000, 90.00000);
  17608. CreateDynamicObject(1771, 119.58060, 1087.82861, 523.32458, 0.00000, 0.00000, 90.00000);
  17609. CreateDynamicObject(2602, 118.56097, 1085.76880, 523.31781, 0.00000, 0.00000, 180.00000);
  17610. CreateDynamicObject(2602, 118.56097, 1085.76880, 523.31781, 0.00000, 0.00000, 180.00000);
  17611. CreateDynamicObject(2602, 123.66084, 1085.91602, 523.31781, 0.00000, 0.00000, 270.00000);
  17612. CreateDynamicObject(2602, 124.59685, 1085.78748, 523.31781, 0.00000, 0.00000, 180.00000);
  17613. CreateDynamicObject(19379, 122.76500, 1083.81946, 526.34723, 0.00000, 90.00000, 0.00000);
  17614. CreateDynamicObject(2164, 127.83847, 1088.66809, 522.91803, 0.00000, 0.00000, 0.00000);
  17615. CreateDynamicObject(2198, 131.05338, 1085.50879, 522.91669, 0.00000, 0.00000, 180.00000);
  17616. CreateDynamicObject(2198, 131.88240, 1087.34937, 522.91791, 0.00000, 0.00000, 270.00000);
  17617. CreateDynamicObject(1806, 130.38409, 1086.01379, 522.91882, 0.00000, 0.00000, 180.00000);
  17618. CreateDynamicObject(1806, 130.60435, 1086.75427, 522.91901, 0.00000, 0.00000, 270.00000);
  17619. CreateDynamicObject(2162, 129.82295, 1088.66077, 524.44781, 0.00000, 0.00000, 0.00000);
  17620. CreateDynamicObject(1235, 129.51157, 1088.33447, 523.42841, 0.00000, 0.00000, 0.00000);
  17621. CreateDynamicObject(2186, 132.19023, 1079.52148, 522.91211, 0.00000, 0.00000, 180.00000);
  17622. CreateDynamicObject(2611, 134.25023, 1079.12964, 525.20880, 0.00000, 0.00000, 180.00000);
  17623. CreateDynamicObject(2612, 131.57513, 1079.06165, 525.20880, 0.00000, 0.00000, 180.00000);
  17624. CreateDynamicObject(2612, 141.33829, 1088.95300, 525.00580, 0.00000, 0.00000, 180.00000);
  17625. CreateDynamicObject(2002, 133.03841, 1079.39392, 522.91150, 0.00000, 0.00000, 180.00000);
  17626. CreateDynamicObject(19377, 120.45150, 1092.68396, 522.82751, 0.00000, 90.00000, 0.00000);
  17627. CreateDynamicObject(19450, 119.22319, 1091.50220, 524.66052, 0.00000, 0.00000, 90.00000);
  17628. CreateDynamicObject(19450, 122.49615, 1088.80066, 524.66052, 0.00000, 0.00000, 90.00000);
  17629. CreateDynamicObject(19450, 122.38882, 1088.80640, 524.66052, 0.00000, 0.00000, 90.00000);
  17630. CreateDynamicObject(19447, 109.78014, 1088.71851, 524.66052, 0.00000, 0.00000, 90.00000);
  17631. CreateDynamicObject(19447, 107.40337, 1087.01196, 524.66052, 0.00000, 0.00000, 0.00000);
  17632. CreateDynamicObject(19447, 109.78036, 1082.78894, 524.66052, 0.00000, 0.00000, 90.00000);
  17633. CreateDynamicObject(19350, 117.54076, 1086.52673, 523.06812, 0.00000, 0.00000, 0.00000);
  17634. CreateDynamicObject(19385, 114.58030, 1086.91223, 524.66248, 0.00000, 0.00000, 0.00000);
  17635. CreateDynamicObject(19355, 114.57392, 1084.34558, 524.66052, 0.00000, 0.00000, 0.00000);
  17636. CreateDynamicObject(19355, 114.57330, 1089.78906, 524.66052, 0.00000, 0.00000, 0.00000);
  17637. CreateDynamicObject(19377, 113.61063, 1087.70313, 522.82349, 0.00000, 90.00000, 0.00000);
  17638. CreateDynamicObject(19455, 109.76550, 1086.96875, 522.83551, 0.00000, 90.00000, 90.00000);
  17639. CreateDynamicObject(19455, 109.80690, 1083.82361, 522.83752, 0.00000, 90.00000, 90.00000);
  17640. CreateDynamicObject(19379, 106.59776, 1086.73401, 526.35120, 0.00000, 90.00000, 0.00000);
  17641. CreateDynamicObject(2509, 113.90943, 1082.88464, 524.90875, 0.00000, 0.00000, 180.00000);
  17642. CreateDynamicObject(2509, 112.58274, 1082.87439, 524.90881, 0.00000, 0.00000, 180.00000);
  17643. CreateDynamicObject(2509, 111.23864, 1082.88440, 524.90881, 0.00000, 0.00000, 180.00000);
  17644. CreateDynamicObject(2509, 109.89198, 1082.88013, 524.90881, 0.00000, 0.00000, 180.00000);
  17645. CreateDynamicObject(2509, 108.54980, 1082.87830, 524.90881, 0.00000, 0.00000, 180.00000);
  17646. CreateDynamicObject(356, 113.62602, 1082.92297, 525.36688, 0.00000, 0.00000, 0.00000);
  17647. CreateDynamicObject(356, 113.69150, 1082.91870, 524.85394, 0.00000, 0.00000, 0.00000);
  17648. CreateDynamicObject(356, 113.67495, 1082.92761, 524.36243, 0.00000, 0.00000, 0.00000);
  17649. CreateDynamicObject(353, 112.42621, 1082.93323, 525.30804, 0.00000, 0.00000, 0.00000);
  17650. CreateDynamicObject(353, 112.42774, 1082.94812, 524.75189, 0.00000, 0.00000, 0.00000);
  17651. CreateDynamicObject(353, 112.43629, 1082.93494, 524.25012, 0.00000, 0.00000, 0.00000);
  17652. CreateDynamicObject(346, 111.39957, 1082.89844, 525.51910, 0.00000, 0.00000, 0.00000);
  17653. CreateDynamicObject(346, 110.87761, 1082.89294, 525.51910, 0.00000, 0.00000, 0.00000);
  17654. CreateDynamicObject(346, 111.34773, 1082.93823, 524.97650, 0.00000, 0.00000, 0.00000);
  17655. CreateDynamicObject(346, 110.83324, 1082.89844, 524.97650, 0.00000, 0.00000, 0.00000);
  17656. CreateDynamicObject(348, 111.33148, 1082.91931, 524.55145, 0.00000, 0.00000, 0.00000);
  17657. CreateDynamicObject(348, 110.77611, 1082.88245, 524.55151, 0.00000, 0.00000, 0.00000);
  17658. CreateDynamicObject(348, 111.31147, 1082.89697, 524.24365, 0.00000, 0.00000, 0.00000);
  17659. CreateDynamicObject(348, 110.75915, 1082.90479, 524.24371, 0.00000, 0.00000, 0.00000);
  17660. CreateDynamicObject(349, 109.61875, 1082.95581, 525.41864, 0.00000, 0.00000, 0.00000);
  17661. CreateDynamicObject(349, 109.63561, 1082.95593, 524.90588, 0.00000, 0.00000, 0.00000);
  17662. CreateDynamicObject(349, 109.57643, 1082.95569, 524.42761, 0.00000, 0.00000, 0.00000);
  17663. CreateDynamicObject(358, 108.33376, 1082.92090, 525.32642, 0.00000, 0.00000, 0.00000);
  17664. CreateDynamicObject(358, 108.34093, 1082.92822, 524.81311, 0.00000, 0.00000, 0.00000);
  17665. CreateDynamicObject(358, 108.32735, 1082.95239, 524.29095, 0.00000, 0.00000, 0.00000);
  17666. CreateDynamicObject(941, 107.61217, 1083.73694, 523.31549, 0.00000, 0.00000, 90.00000);
  17667. CreateDynamicObject(941, 107.60360, 1086.05933, 523.31348, 0.00000, 0.00000, 90.00000);
  17668. CreateDynamicObject(365, 107.61600, 1083.12244, 523.87091, 0.00000, 90.00000, 180.00000);
  17669. CreateDynamicObject(365, 107.60783, 1083.42773, 523.87091, 0.00000, 90.00000, 180.00000);
  17670. CreateDynamicObject(365, 107.63793, 1083.69971, 523.87091, 0.00000, 90.00000, 180.00000);
  17671. CreateDynamicObject(365, 107.66192, 1083.97290, 523.87091, 0.00000, 90.00000, 180.00000);
  17672. CreateDynamicObject(334, 107.93712, 1084.30762, 523.76257, 90.00000, 90.00000, 180.00000);
  17673. CreateDynamicObject(334, 107.93470, 1084.59167, 523.76257, 90.00000, 90.00000, 180.00000);
  17674. CreateDynamicObject(334, 107.94098, 1084.88391, 523.76257, 90.00000, 90.00000, 180.00000);
  17675. CreateDynamicObject(334, 107.94121, 1085.15076, 523.76257, 90.00000, 90.00000, 180.00000);
  17676. CreateDynamicObject(1672, 107.58466, 1085.35498, 523.88739, 0.00000, 0.00000, 0.00000);
  17677. CreateDynamicObject(1672, 107.61528, 1085.57410, 523.88739, 0.00000, 0.00000, 0.00000);
  17678. CreateDynamicObject(1672, 107.86807, 1085.35779, 523.88739, 0.00000, 0.00000, 0.00000);
  17679. CreateDynamicObject(1672, 107.87142, 1085.58337, 523.88739, 0.00000, 0.00000, 0.00000);
  17680. CreateDynamicObject(1672, 107.61620, 1085.82019, 523.88739, 0.00000, 0.00000, 0.00000);
  17681. CreateDynamicObject(1672, 107.87934, 1085.82117, 523.88739, 0.00000, 0.00000, 0.00000);
  17682. CreateDynamicObject(18673, 108.70865, 1086.39771, 525.41656, 0.00000, 0.00000, 0.00000);
  17683. CreateDynamicObject(18637, 107.47650, 1085.98010, 524.39148, 90.00000, 0.00000, 90.00000);
  17684. CreateDynamicObject(18637, 107.47083, 1086.50732, 524.39148, 90.00000, 0.00000, 90.00000);
  17685. CreateDynamicObject(2949, 114.60330, 1086.18176, 522.91071, 0.00000, 0.00000, 265.00000);
  17686. CreateDynamicObject(2164, 129.76744, 1088.91943, 522.91681, 0.00000, 0.00000, 180.00000);
  17687. CreateDynamicObject(2162, 127.90387, 1088.91638, 524.31885, 0.00000, 0.00000, 180.00000);
  17688. CreateDynamicObject(19379, 132.05751, 1102.08972, 522.83948, 0.00000, 90.00000, 0.00000);
  17689. CreateDynamicObject(19379, 121.96914, 1102.09583, 522.83752, 0.00000, 90.00000, 0.00000);
  17690. CreateDynamicObject(19379, 120.28329, 1102.09827, 522.83948, 0.00000, 90.00000, 0.00000);
  17691. CreateDynamicObject(19377, 120.45150, 1092.68396, 19377.00000, 0.00000, 90.00000, 0.00000);
  17692. CreateDynamicObject(19377, 117.69498, 1111.59216, 522.82751, 0.00000, 90.00000, 0.00000);
  17693. CreateDynamicObject(19450, 140.30443, 1108.88367, 524.66052, 0.00000, 0.00000, 0.00000);
  17694. CreateDynamicObject(19450, 139.04089, 1112.40698, 524.66052, 0.00000, 0.00000, 90.00000);
  17695. CreateDynamicObject(19450, 129.47171, 1112.41052, 524.66052, 0.00000, 0.00000, 90.00000);
  17696. CreateDynamicObject(2183, 131.65504, 1098.90417, 522.92242, 0.00000, 0.00000, 0.00000);
  17697. CreateDynamicObject(2183, 124.81044, 1098.81653, 522.92242, 0.00000, 0.00000, 0.00000);
  17698. CreateDynamicObject(2183, 131.51552, 1103.80627, 522.92242, 0.00000, 0.00000, 0.00000);
  17699. CreateDynamicObject(2183, 124.93020, 1103.76660, 522.92242, 0.00000, 0.00000, 0.00000);
  17700. CreateDynamicObject(2183, 118.27032, 1098.91064, 522.92242, 0.00000, 0.00000, 0.00000);
  17701. CreateDynamicObject(2183, 118.16262, 1103.81274, 522.92242, 0.00000, 0.00000, 0.00000);
  17702. CreateDynamicObject(19450, 119.97842, 1112.41125, 524.66052, 0.00000, 0.00000, 90.00000);
  17703. CreateDynamicObject(19450, 110.36918, 1112.41296, 524.66052, 0.00000, 0.00000, 90.00000);
  17704. CreateDynamicObject(19450, 111.33980, 1097.14661, 524.66052, 0.00000, 0.00000, 0.00000);
  17705. CreateDynamicObject(19450, 111.33373, 1106.62268, 524.66052, 0.00000, 0.00000, 0.00000);
  17706. CreateDynamicObject(19450, 111.32936, 1110.53687, 524.66052, 0.00000, 0.00000, 0.00000);
  17707. CreateDynamicObject(19377, 114.61030, 1097.12939, 522.82550, 0.00000, 90.00000, 0.00000);
  17708. CreateDynamicObject(19377, 115.36610, 1106.18958, 522.82147, 0.00000, 90.00000, 0.00000);
  17709. CreateDynamicObject(19377, 116.35430, 1111.23169, 522.82349, 0.00000, 90.00000, 0.00000);
  17710. CreateDynamicObject(2190, 133.50935, 1104.44312, 523.72797, 0.00000, 0.00000, 0.00000);
  17711. CreateDynamicObject(2190, 132.51724, 1104.48755, 523.72961, 0.00000, 0.00000, 180.00000);
  17712. CreateDynamicObject(2190, 133.01036, 1104.88794, 523.72961, 0.00000, 0.00000, 90.00000);
  17713. CreateDynamicObject(2190, 132.94148, 1103.97461, 523.72961, 0.00000, 0.00000, 270.00000);
  17714. CreateDynamicObject(2190, 133.65422, 1099.54834, 523.72821, 0.00000, 0.00000, 0.00000);
  17715. CreateDynamicObject(2190, 133.12120, 1100.05347, 523.72961, 0.00000, 0.00000, 90.00000);
  17716. CreateDynamicObject(2190, 132.62589, 1099.55652, 523.72968, 0.00000, 0.00000, 180.00000);
  17717. CreateDynamicObject(2190, 133.14821, 1099.00549, 523.72961, 0.00000, 0.00000, 270.00000);
  17718. CreateDynamicObject(2190, 126.89330, 1104.46387, 523.72980, 0.00000, 0.00000, 0.00000);
  17719. CreateDynamicObject(2190, 126.41243, 1104.96570, 523.72980, 0.00000, 0.00000, 90.00000);
  17720. CreateDynamicObject(2190, 125.89957, 1104.39526, 523.72968, 0.00000, 0.00000, 180.00000);
  17721. CreateDynamicObject(2190, 126.45559, 1103.82300, 523.72961, 0.00000, 0.00000, 270.00000);
  17722. CreateDynamicObject(2190, 126.77824, 1099.50549, 523.72888, 0.00000, 0.00000, 0.00000);
  17723. CreateDynamicObject(2190, 126.33763, 1099.97217, 523.72931, 0.00000, 0.00000, 90.00000);
  17724. CreateDynamicObject(2190, 125.79580, 1099.50891, 523.72931, 0.00000, 0.00000, 180.00000);
  17725. CreateDynamicObject(2190, 126.35437, 1098.98938, 523.72961, 0.00000, 0.00000, 270.00000);
  17726. CreateDynamicObject(2190, 120.12819, 1104.46716, 523.72858, 0.00000, 0.00000, 0.00000);
  17727. CreateDynamicObject(2190, 119.61075, 1104.94983, 523.72852, 0.00000, 0.00000, 90.00000);
  17728. CreateDynamicObject(2190, 119.18522, 1104.43079, 523.72858, 0.00000, 0.00000, 180.00000);
  17729. CreateDynamicObject(2190, 119.63222, 1103.97913, 523.72852, 0.00000, 0.00000, 270.00000);
  17730. CreateDynamicObject(2190, 120.29862, 1099.61438, 523.72894, 0.00000, 0.00000, 0.00000);
  17731. CreateDynamicObject(2190, 119.72598, 1100.12378, 523.72882, 0.00000, 0.00000, 90.00000);
  17732. CreateDynamicObject(2190, 119.25583, 1099.55176, 523.72913, 0.00000, 0.00000, 180.00000);
  17733. CreateDynamicObject(2190, 119.75493, 1099.06812, 523.72888, 0.00000, 0.00000, 270.00000);
  17734. CreateDynamicObject(19450, 109.66398, 1091.50818, 524.66052, 0.00000, 0.00000, 90.00000);
  17735. CreateDynamicObject(19450, 111.32271, 1096.33679, 524.66052, 0.00000, 0.00000, 0.00000);
  17736. CreateDynamicObject(19379, 112.34518, 1086.75513, 522.83148, 0.00000, 90.00000, 0.00000);
  17737. CreateDynamicObject(19388, 117.62875, 1089.92566, 524.66052, 0.00000, 0.00000, 0.00000);
  17738. CreateDynamicObject(19461, 117.61053, 1083.55151, 524.66052, 0.00000, 0.00000, 0.00000);
  17739. CreateDynamicObject(19397, 117.60355, 1077.75562, 524.66052, 0.00000, 0.00000, 0.00000);
  17740. CreateDynamicObject(19397, 114.59400, 1086.91138, 524.66052, 0.00000, 0.00000, 0.00000);
  17741. CreateDynamicObject(19461, 114.59531, 1080.87073, 524.66052, 0.00000, 0.00000, 0.00000);
  17742. CreateDynamicObject(19397, 117.61980, 1089.91467, 524.66248, 0.00000, 0.00000, 0.00000);
  17743. CreateDynamicObject(19369, 114.59068, 1089.92932, 524.66052, 0.00000, 0.00000, 0.00000);
  17744. CreateDynamicObject(19369, 115.93106, 1091.49622, 524.66052, 0.00000, 0.00000, 90.00000);
  17745. CreateDynamicObject(19379, 122.78049, 1086.60803, 526.34521, 0.00000, 90.00000, 0.00000);
  17746. CreateDynamicObject(19379, 112.33240, 1081.18127, 522.82953, 0.00000, 90.00000, 0.00000);
  17747. CreateDynamicObject(19461, 119.47045, 1076.34277, 524.66052, 0.00000, 0.00000, 90.00000);
  17748. CreateDynamicObject(19455, 119.29734, 1077.90198, 522.83148, 0.00000, 90.00000, 0.00000);
  17749. CreateDynamicObject(19455, 122.54670, 1077.84192, 522.82751, 0.00000, 90.00000, 0.00000);
  17750. CreateDynamicObject(19455, 125.42399, 1077.89221, 522.82953, 0.00000, 90.00000, 0.00000);
  17751. CreateDynamicObject(19461, 126.05796, 1077.89453, 524.66052, 0.00000, 0.00000, 0.00000);
  17752. CreateDynamicObject(19461, 121.36431, 1076.33752, 524.66052, 0.00000, 0.00000, 90.00000);
  17753. CreateDynamicObject(19461, 122.34753, 1082.18201, 524.66052, 0.00000, 0.00000, 90.00000);
  17754. CreateDynamicObject(14842, 125.07040, 1077.98047, 524.24432, 0.00000, 0.00000, 180.00000);
  17755. CreateDynamicObject(19369, 123.82243, 1077.27954, 523.11548, 0.00000, 0.00000, 0.00000);
  17756. CreateDynamicObject(19369, 123.81551, 1078.30652, 523.11548, 0.00000, 0.00000, 0.00000);
  17757. CreateDynamicObject(14782, 120.76030, 1081.72729, 523.92371, 0.00000, 0.00000, 0.00000);
  17758. CreateDynamicObject(14401, 129.59520, 1062.60181, 522.92242, 0.00000, 0.00000, 0.00000);
  17759. CreateDynamicObject(2844, 118.44782, 1079.69006, 522.91913, 0.00000, 0.00000, 0.00000);
  17760. CreateDynamicObject(19379, 123.37051, 1076.98132, 526.34320, 0.00000, 90.00000, 0.00000);
  17761. CreateDynamicObject(19379, 112.87190, 1078.56494, 526.34918, 0.00000, 90.00000, 0.00000);
  17762. CreateDynamicObject(3109, 116.86426, 1076.45776, 524.03528, 0.00000, 0.00000, 90.00000);
  17763. CreateDynamicObject(640, 134.47305, 1107.18835, 523.92700, 0.00000, 0.00000, 90.00000);
  17764. CreateDynamicObject(640, 129.20180, 1107.18445, 523.92902, 0.00000, 0.00000, 90.00000);
  17765. CreateDynamicObject(640, 123.85225, 1107.18494, 523.92700, 0.00000, 0.00000, 90.00000);
  17766. CreateDynamicObject(640, 118.50583, 1107.18713, 523.92700, 0.00000, 0.00000, 90.00000);
  17767. CreateDynamicObject(640, 137.25410, 1104.83179, 523.92499, 0.00000, 0.00000, 0.00000);
  17768. CreateDynamicObject(640, 137.24770, 1099.99646, 523.92902, 0.00000, 0.00000, 0.00000);
  17769. CreateDynamicObject(640, 115.52139, 1104.82532, 523.92902, 0.00000, 0.00000, 0.00000);
  17770. CreateDynamicObject(640, 115.49360, 1099.91638, 523.92499, 0.00000, 0.00000, 0.00000);
  17771. CreateDynamicObject(19458, 120.60987, 1106.85046, 521.93335, 0.00000, 0.00000, 90.00000);
  17772. CreateDynamicObject(19458, 130.16440, 1106.85352, 521.93530, 0.00000, 0.00000, 90.00000);
  17773. CreateDynamicObject(19458, 136.91629, 1102.13611, 521.93329, 0.00000, 0.00000, 0.00000);
  17774. CreateDynamicObject(19458, 132.17490, 1106.85583, 521.93127, 0.00000, 0.00000, 90.00000);
  17775. CreateDynamicObject(19458, 115.88650, 1102.05762, 521.93127, 0.00000, 0.00000, 0.00000);
  17776. CreateDynamicObject(19458, 132.80293, 1107.50037, 521.93329, 0.00000, 0.00000, 90.00000);
  17777. CreateDynamicObject(19458, 123.22170, 1107.49023, 521.93127, 0.00000, 0.00000, 90.00000);
  17778. CreateDynamicObject(19458, 119.85920, 1107.45935, 521.93329, 0.00000, 0.00000, 90.00000);
  17779. CreateDynamicObject(19458, 115.13110, 1102.73181, 521.93127, 0.00000, 0.00000, 0.00000);
  17780. CreateDynamicObject(19458, 115.13950, 1102.04370, 521.93530, 0.00000, 0.00000, 0.00000);
  17781. CreateDynamicObject(19458, 137.59819, 1102.78137, 521.93127, 0.00000, 0.00000, 0.00000);
  17782. CreateDynamicObject(19458, 137.58470, 1102.13293, 521.93127, 0.00000, 0.00000, 0.00000);
  17783. CreateDynamicObject(19439, 137.24181, 1097.37561, 521.92932, 0.00000, 0.00000, 90.00000);
  17784. CreateDynamicObject(19439, 115.56210, 1097.28723, 521.92932, 0.00000, 0.00000, 90.00000);
  17785. CreateDynamicObject(2010, 139.84850, 1092.20276, 526.44379, 0.00000, 0.00000, 0.00000);
  17786. CreateDynamicObject(2186, 121.58313, 1089.31726, 526.43542, 0.00000, 0.00000, 90.00000);
  17787. CreateDynamicObject(2164, 121.19000, 1087.27039, 526.43542, 0.00000, 0.00000, 90.00000);
  17788. CreateDynamicObject(2161, 121.13370, 1085.92786, 526.92352, 0.00000, 0.00000, 90.00000);
  17789. CreateDynamicObject(2167, 121.12644, 1084.99695, 526.43591, 0.00000, 0.00000, 90.00000);
  17790. CreateDynamicObject(1721, 121.32310, 1082.57239, 526.43561, 0.00000, 0.00000, 270.00000);
  17791. CreateDynamicObject(1721, 121.33524, 1081.85022, 526.43982, 0.00000, 0.00000, 270.00000);
  17792. CreateDynamicObject(1721, 121.32806, 1081.14038, 526.43982, 0.00000, 0.00000, 270.00000);
  17793. CreateDynamicObject(2288, 121.65150, 1076.76404, 528.26093, 0.00000, 0.00000, 90.00000);
  17794. CreateDynamicObject(2288, 121.64648, 1080.19482, 528.26093, 0.00000, 0.00000, 90.00000);
  17795. CreateDynamicObject(2288, 121.62092, 1083.69287, 528.26093, 0.00000, 0.00000, 90.00000);
  17796. CreateDynamicObject(2163, 126.13692, 1088.92883, 524.31708, 0.00000, 0.00000, 180.00000);
  17797. CreateDynamicObject(2611, 139.28130, 1088.93518, 525.00586, 0.00000, 0.00000, 180.00000);
  17798. CreateDynamicObject(1536, 115.02440, 1112.32153, 522.84723, 0.00000, 0.00000, 0.00000);
  17799. CreateDynamicObject(1536, 124.52151, 1112.33472, 522.84723, 0.00000, 0.00000, 0.00000);
  17800. CreateDynamicObject(1536, 135.28743, 1112.30444, 522.84723, 0.00000, 0.00000, 0.00000);
  17801. CreateDynamicObject(1806, 120.46580, 1103.44873, 522.92572, 0.00000, 0.00000, 0.00000);
  17802. CreateDynamicObject(1806, 118.54528, 1102.86108, 522.92633, 0.00000, 0.00000, 0.00000);
  17803. CreateDynamicObject(1806, 125.29755, 1103.42285, 522.92450, 0.00000, 0.00000, 0.00000);
  17804. CreateDynamicObject(1806, 127.17112, 1102.85657, 522.92651, 0.00000, 0.00000, 0.00000);
  17805. CreateDynamicObject(1806, 131.85538, 1102.62451, 522.92645, 0.00000, 0.00000, 0.00000);
  17806. CreateDynamicObject(1806, 134.11975, 1102.70569, 522.92651, 0.00000, 0.00000, 0.00000);
  17807. CreateDynamicObject(1494, 117.61360, 1077.02429, 522.91479, 0.00000, 0.00000, 90.00000);
  17808. CreateDynamicObject(1806, 134.39928, 1098.24060, 522.92682, 0.00000, 0.00000, 0.00000);
  17809. CreateDynamicObject(1806, 132.04057, 1097.80676, 522.92676, 0.00000, 0.00000, 0.00000);
  17810. CreateDynamicObject(1806, 127.34973, 1098.48083, 522.92499, 0.00000, 0.00000, 0.00000);
  17811. CreateDynamicObject(1806, 125.24721, 1098.57507, 522.92694, 0.00000, 0.00000, 0.00000);
  17812. CreateDynamicObject(1806, 120.78054, 1097.81726, 522.92700, 0.00000, 0.00000, 0.00000);
  17813. CreateDynamicObject(1806, 118.61246, 1097.92798, 522.91486, 0.00000, 0.00000, 0.00000);
  17814. CreateDynamicObject(1806, 118.83954, 1100.65100, 522.92670, 0.00000, 0.00000, 180.00000);
  17815. CreateDynamicObject(1806, 120.68443, 1101.28748, 522.92651, 0.00000, 0.00000, 180.00000);
  17816. CreateDynamicObject(1806, 120.53580, 1106.16870, 522.92712, 0.00000, 0.00000, 180.00000);
  17817. CreateDynamicObject(1806, 118.61662, 1105.83459, 522.92719, 0.00000, 0.00000, 180.00000);
  17818. CreateDynamicObject(1806, 127.45905, 1105.63965, 522.92719, 0.00000, 0.00000, 180.00000);
  17819. CreateDynamicObject(1806, 125.43990, 1105.97021, 522.92517, 0.00000, 0.00000, 180.00000);
  17820. CreateDynamicObject(1806, 132.01773, 1105.47009, 522.92657, 0.00000, 0.00000, 180.00000);
  17821. CreateDynamicObject(1806, 133.85490, 1106.18787, 522.92657, 0.00000, 0.00000, 180.00000);
  17822. CreateDynamicObject(1806, 125.46176, 1100.56982, 522.92603, 0.00000, 0.00000, 180.00000);
  17823. CreateDynamicObject(1806, 127.15005, 1100.57532, 522.92603, 0.00000, 0.00000, 180.00000);
  17824. CreateDynamicObject(1806, 132.23492, 1101.26782, 522.92603, 0.00000, 0.00000, 180.00000);
  17825. CreateDynamicObject(1806, 134.19078, 1100.52246, 522.92609, 0.00000, 0.00000, 180.00000);
  17826. CreateDynamicObject(1893, 127.79394, 1122.01599, 530.12433, 0.00000, 0.00000, 0.00000);
  17827. CreateDynamicObject(1893, 121.90017, 1119.07129, 530.12433, 0.00000, 0.00000, 0.00000);
  17828. CreateDynamicObject(1893, 136.46642, 1111.21460, 530.12433, 0.00000, 0.00000, 0.00000);
  17829. CreateDynamicObject(1893, 138.22479, 1094.21094, 530.12433, 0.00000, 0.00000, 0.00000);
  17830. CreateDynamicObject(1893, 112.61430, 1093.88098, 530.12433, 0.00000, 0.00000, 0.00000);
  17831. CreateDynamicObject(1893, 112.33164, 1110.95923, 530.12433, 0.00000, 0.00000, 0.00000);
  17832. CreateDynamicObject(19377, 128.07291, 1091.25818, 522.82953, 0.00000, 90.00000, 0.00000);
  17833. CreateDynamicObject(1893, 115.61887, 1077.37854, 526.35510, 0.00000, 0.00000, 0.00000);
  17834. CreateDynamicObject(1893, 115.54539, 1090.51758, 526.35510, 0.00000, 0.00000, 0.00000);
  17835. CreateDynamicObject(19377, 135.01331, 1087.05396, 526.35718, 0.00000, 90.00000, 0.00000);
  17836. CreateDynamicObject(19377, 115.49480, 1086.95300, 526.36121, 0.00000, 90.00000, 0.00000);
  17837. CreateDynamicObject(19358, 143.49193, 1093.16736, 524.66052, 0.00000, 0.00000, 0.00000);
  17838. CreateDynamicObject(19358, 148.15970, 1090.46484, 524.66052, 0.00000, 0.00000, 0.00000);
  17839. CreateDynamicObject(19358, 149.74225, 1091.98328, 524.66052, 0.00000, 0.00000, 90.00000);
  17840. CreateDynamicObject(19388, 152.30147, 1091.98096, 524.66052, 0.00000, 0.00000, 90.00000);
  17841. CreateDynamicObject(19450, 148.36438, 1087.25635, 524.66052, 0.00000, 0.00000, 0.00000);
  17842. CreateDynamicObject(19450, 153.18039, 1085.63928, 524.66052, 0.00000, 0.00000, 90.00000);
  17843. CreateDynamicObject(19404, 153.81474, 1090.34680, 524.66052, 0.00000, 0.00000, 0.00000);
  17844. CreateDynamicObject(19388, 153.81126, 1087.21033, 524.66052, 0.00000, 0.00000, 0.00000);
  17845. CreateDynamicObject(19358, 155.47127, 1091.98291, 524.66052, 0.00000, 0.00000, 90.00000);
  17846. CreateDynamicObject(19358, 158.63158, 1091.97644, 524.66052, 0.00000, 0.00000, 90.00000);
  17847. CreateDynamicObject(19450, 158.65688, 1087.20190, 524.66052, 0.00000, 0.00000, 0.00000);
  17848. CreateDynamicObject(19358, 157.47470, 1085.63818, 524.66052, 0.00000, 0.00000, 90.00000);
  17849. CreateDynamicObject(19358, 149.55676, 1095.09998, 524.66052, 0.00000, 0.00000, 90.00000);
  17850. CreateDynamicObject(19358, 152.72308, 1095.10168, 524.66052, 0.00000, 0.00000, 90.00000);
  17851. CreateDynamicObject(19358, 154.29224, 1095.10022, 524.66052, 0.00000, 0.00000, 90.00000);
  17852. CreateDynamicObject(19431, 156.39772, 1095.63220, 524.66052, 0.00000, 0.00000, 135.00000);
  17853. CreateDynamicObject(19358, 156.94632, 1097.73291, 524.66052, 0.00000, 0.00000, 0.00000);
  17854. CreateDynamicObject(19450, 160.05165, 1096.58350, 524.66052, 0.00000, 0.00000, 0.00000);
  17855. CreateDynamicObject(19388, 156.94150, 1100.07361, 524.66052, 0.00000, 0.00000, 0.00000);
  17856. CreateDynamicObject(19358, 156.93982, 1102.65613, 524.66052, 0.00000, 0.00000, 0.00000);
  17857. CreateDynamicObject(19431, 156.40536, 1104.76636, 524.66052, 0.00000, 0.00000, 45.00000);
  17858. CreateDynamicObject(19358, 154.30132, 1105.29602, 524.66052, 0.00000, 0.00000, 90.00000);
  17859. CreateDynamicObject(19450, 148.03619, 1099.99170, 524.66052, 0.00000, 0.00000, 0.00000);
  17860. CreateDynamicObject(19358, 151.17171, 1105.28809, 524.66052, 0.00000, 0.00000, 90.00000);
  17861. CreateDynamicObject(19450, 148.03619, 1099.99170, 524.66052, 0.00000, 0.00000, 0.00000);
  17862. CreateDynamicObject(19358, 149.56276, 1105.28821, 524.66052, 0.00000, 0.00000, 90.00000);
  17863. CreateDynamicObject(19358, 148.03302, 1103.76416, 524.66052, 0.00000, 0.00000, 0.00000);
  17864. CreateDynamicObject(19358, 143.45268, 1096.16895, 524.66052, 0.00000, 0.00000, 0.00000);
  17865. CreateDynamicObject(19358, 143.45113, 1099.32642, 524.66052, 0.00000, 0.00000, 0.00000);
  17866. CreateDynamicObject(19379, 153.34775, 1090.41516, 522.83350, 0.00000, 90.00000, 0.00000);
  17867. CreateDynamicObject(19377, 148.67390, 1090.22339, 522.82953, 0.00000, 90.00000, 0.00000);
  17868. CreateDynamicObject(19379, 153.37360, 1100.02271, 522.83148, 0.00000, 90.00000, 0.00000);
  17869. CreateDynamicObject(19379, 153.36803, 1107.65918, 522.83350, 0.00000, 90.00000, 0.00000);
  17870. CreateDynamicObject(19379, 163.74850, 1096.60425, 522.83551, 0.00000, 90.00000, 0.00000);
  17871. CreateDynamicObject(19379, 163.76160, 1106.05566, 522.82953, 0.00000, 90.00000, 0.00000);
  17872. CreateDynamicObject(19377, 142.83791, 1099.51770, 522.82550, 0.00000, 90.00000, 0.00000);
  17873. CreateDynamicObject(19377, 145.50880, 1105.20056, 522.82349, 0.00000, 90.00000, 0.00000);
  17874. CreateDynamicObject(14633, 159.39264, 1092.22693, 522.93939, 0.00000, 0.00000, 0.00000);
  17875. CreateDynamicObject(14633, 156.95302, 1092.24011, 522.93939, 0.00000, 0.00000, 0.00000);
  17876. CreateDynamicObject(14633, 154.77795, 1092.19080, 522.93939, 0.00000, 0.00000, 0.00000);
  17877. CreateDynamicObject(2004, 148.26164, 1105.25488, 524.62860, 0.00000, 0.00000, 0.00000);
  17878. CreateDynamicObject(2004, 149.06619, 1105.26880, 524.62860, 0.00000, 0.00000, 0.00000);
  17879. CreateDynamicObject(2004, 149.87918, 1105.25769, 524.62860, 0.00000, 0.00000, 0.00000);
  17880. CreateDynamicObject(2004, 150.65648, 1105.25610, 524.62860, 0.00000, 0.00000, 0.00000);
  17881. CreateDynamicObject(2162, 153.90099, 1105.20703, 524.39233, 0.00000, 0.00000, 0.00000);
  17882. CreateDynamicObject(2164, 152.11411, 1105.12085, 522.96771, 0.00000, 0.00000, 0.00000);
  17883. CreateDynamicObject(1502, 153.84804, 1086.45325, 522.92029, 0.00000, 0.00000, 90.00000);
  17884. CreateDynamicObject(19466, 153.75325, 1090.38513, 524.86115, 0.00000, 0.00000, 0.00000);
  17885. CreateDynamicObject(941, 156.25655, 1089.56860, 523.22882, 0.00000, 0.00000, 0.00000);
  17886. CreateDynamicObject(1810, 157.42293, 1091.03418, 522.92065, 0.00000, 0.00000, 0.00000);
  17887. CreateDynamicObject(1810, 156.35863, 1091.00659, 522.92078, 0.00000, 0.00000, 0.00000);
  17888. CreateDynamicObject(1810, 157.04457, 1088.21655, 522.92059, 0.00000, 0.00000, 180.00000);
  17889. CreateDynamicObject(1810, 155.84166, 1088.19531, 522.92078, 0.00000, 0.00000, 180.00000);
  17890. CreateDynamicObject(2395, 153.92993, 1089.02515, 525.39313, 0.00000, 90.00000, 90.00000);
  17891. CreateDynamicObject(2616, 153.97124, 1090.58081, 524.64349, 0.00000, 0.00000, 90.00000);
  17892. CreateDynamicObject(1502, 151.49146, 1091.96423, 522.92017, 0.00000, 0.00000, 0.00000);
  17893. CreateDynamicObject(19450, 160.05551, 1106.15039, 524.66052, 0.00000, 0.00000, 0.00000);
  17894. CreateDynamicObject(19450, 155.39815, 1108.15234, 524.66052, 0.00000, 0.00000, 90.00000);
  17895. CreateDynamicObject(19450, 152.97398, 1108.15649, 524.66052, 0.00000, 0.00000, 90.00000);
  17896. CreateDynamicObject(19388, 147.13269, 1108.15125, 524.66052, 0.00000, 0.00000, 90.00000);
  17897. CreateDynamicObject(19450, 143.44354, 1105.62732, 524.66052, 0.00000, 0.00000, 0.00000);
  17898. CreateDynamicObject(19358, 144.06485, 1108.13904, 524.66052, 0.00000, 0.00000, 90.00000);
  17899. CreateDynamicObject(2132, 149.62859, 1108.74207, 522.91803, 0.00000, 0.00000, 180.00000);
  17900. CreateDynamicObject(2339, 150.63507, 1108.75708, 522.91827, 0.00000, 0.00000, 180.00000);
  17901. CreateDynamicObject(2341, 151.63144, 1108.75806, 522.91962, 0.00000, 0.00000, 270.00000);
  17902. CreateDynamicObject(2131, 151.65384, 1110.73352, 522.91870, 0.00000, 0.00000, 270.00000);
  17903. CreateDynamicObject(19379, 148.74100, 1112.94019, 522.83148, 0.00000, 90.00000, 0.00000);
  17904. CreateDynamicObject(19450, 152.17758, 1113.07324, 524.66052, 0.00000, 0.00000, 0.00000);
  17905. CreateDynamicObject(19450, 148.49275, 1114.75769, 524.66052, 0.00000, 0.00000, 90.00000);
  17906. CreateDynamicObject(19450, 143.83797, 1112.95959, 524.66052, 0.00000, 0.00000, 0.00000);
  17907. CreateDynamicObject(2357, 145.82921, 1113.27588, 523.31128, 0.00000, 0.00000, 90.00000);
  17908. CreateDynamicObject(1811, 147.55078, 1112.39380, 523.53900, 0.00000, 0.00000, 0.00000);
  17909. CreateDynamicObject(1811, 147.53619, 1113.27075, 523.53900, 0.00000, 0.00000, 0.00000);
  17910. CreateDynamicObject(1811, 147.54543, 1114.17981, 523.53900, 0.00000, 0.00000, 0.00000);
  17911. CreateDynamicObject(1811, 147.55481, 1111.40552, 523.53900, 0.00000, 0.00000, 0.00000);
  17912. CreateDynamicObject(1811, 144.58090, 1114.25549, 523.53900, 0.00000, 0.00000, 180.00000);
  17913. CreateDynamicObject(1811, 144.60440, 1113.33557, 523.53900, 0.00000, 0.00000, 180.00000);
  17914. CreateDynamicObject(1811, 144.63412, 1112.41809, 523.53900, 0.00000, 0.00000, 180.00000);
  17915. CreateDynamicObject(1811, 144.63850, 1111.50366, 523.53900, 0.00000, 0.00000, 180.00000);
  17916. CreateDynamicObject(2011, 151.59322, 1114.35168, 522.91968, 0.00000, 0.00000, 0.00000);
  17917. CreateDynamicObject(2339, 151.63832, 1111.72083, 522.91827, 0.00000, 0.00000, 270.00000);
  17918. CreateDynamicObject(2339, 151.64465, 1112.72668, 522.91827, 0.00000, 0.00000, 270.00000);
  17919. CreateDynamicObject(2171, 153.24712, 1088.99829, 522.96661, 0.00000, 0.00000, 270.00000);
  17920. CreateDynamicObject(1811, 148.88960, 1090.63098, 523.53900, 0.00000, 0.00000, 180.00000);
  17921. CreateDynamicObject(1811, 148.86800, 1089.62524, 523.53900, 0.00000, 0.00000, 180.00000);
  17922. CreateDynamicObject(1811, 148.86447, 1088.70398, 523.53900, 0.00000, 0.00000, 180.00000);
  17923. CreateDynamicObject(2010, 149.00334, 1091.42139, 522.91956, 0.00000, 0.00000, 0.00000);
  17924. CreateDynamicObject(2164, 148.43547, 1086.90527, 522.91937, 0.00000, 0.00000, 89.00000);
  17925. CreateDynamicObject(1235, 148.80070, 1086.06372, 523.42200, 0.00000, 0.00000, 0.00000);
  17926. CreateDynamicObject(1811, 152.00299, 1088.48083, 523.53900, 0.00000, 0.00000, 180.00000);
  17927. CreateDynamicObject(1841, 153.59280, 1085.98755, 525.61072, 0.00000, 0.00000, 315.29449);
  17928. CreateDynamicObject(1841, 148.71240, 1091.65930, 525.61072, 0.00000, 0.00000, 135.00000);
  17929. CreateDynamicObject(2011, 158.21964, 1086.07996, 522.91998, 0.00000, 0.00000, 0.00000);
  17930. CreateDynamicObject(2010, 144.44936, 1108.62146, 522.91840, 0.00000, 0.00000, 0.00000);
  17931. CreateDynamicObject(2258, 159.91444, 1104.97144, 525.14484, 0.00000, 0.00000, 270.00000);
  17932. CreateDynamicObject(2256, 159.93555, 1099.32312, 525.14478, 0.00000, 0.00000, 270.00000);
  17933. CreateDynamicObject(2254, 159.91310, 1093.68604, 525.14478, 0.00000, 0.00000, 270.00000);
  17934. CreateDynamicObject(2010, 147.72517, 1089.30408, 522.91620, 0.00000, 0.00000, 0.00000);
  17935. CreateDynamicObject(1753, 144.00346, 1096.37036, 522.90839, 0.00000, 0.00000, 90.00000);
  17936. CreateDynamicObject(1753, 143.99747, 1100.11182, 522.91278, 0.00000, 0.00000, 90.00000);
  17937. CreateDynamicObject(2011, 144.06058, 1099.22278, 522.91302, 0.00000, 0.00000, 0.00000);
  17938. CreateDynamicObject(1893, 137.27281, 1093.72888, 533.99402, 0.00000, 0.00000, 0.00000);
  17939. CreateDynamicObject(1893, 112.30385, 1093.55640, 533.99402, 0.00000, 0.00000, 0.00000);
  17940. CreateDynamicObject(1893, 112.73598, 1111.78076, 533.99402, 0.00000, 0.00000, 0.00000);
  17941. CreateDynamicObject(1893, 134.01772, 1113.13757, 533.99402, 0.00000, 0.00000, 0.00000);
  17942. CreateDynamicObject(1893, 138.06387, 1108.88831, 533.99402, 0.00000, 0.00000, 0.00000);
  17943. CreateDynamicObject(2002, 144.06509, 1095.40369, 522.91278, 0.00000, 0.00000, 90.00000);
  17944. CreateDynamicObject(2204, 147.86580, 1101.56238, 522.86481, 0.00000, 0.00000, 270.00000);
  17945. CreateDynamicObject(2011, 143.93982, 1107.59778, 522.90900, 0.00000, 0.00000, 0.00000);
  17946. CreateDynamicObject(2202, 147.45024, 1097.82983, 522.91229, 0.00000, 0.00000, 270.00000);
  17947. CreateDynamicObject(19377, 148.68404, 1096.53174, 526.35120, 0.00000, 90.00000, 0.00000);
  17948. CreateDynamicObject(19377, 153.02440, 1087.25476, 526.36121, 0.00000, 90.00000, 0.00000);
  17949. CreateDynamicObject(19377, 155.11079, 1096.62878, 526.35522, 0.00000, 90.00000, 0.00000);
  17950. CreateDynamicObject(19377, 155.12457, 1106.17920, 526.35120, 0.00000, 90.00000, 0.00000);
  17951. CreateDynamicObject(19377, 147.45889, 1106.17224, 526.34918, 0.00000, 90.00000, 0.00000);
  17952. CreateDynamicObject(19377, 147.98711, 1112.87793, 526.35321, 0.00000, 90.00000, 0.00000);
  17953. CreateDynamicObject(19379, 143.17439, 1086.93591, 526.35999, 0.00000, 90.00000, 0.00000);
  17954. CreateDynamicObject(19377, 163.16487, 1087.24902, 526.35120, 0.00000, 90.00000, 0.00000);
  17955. CreateDynamicObject(1753, 136.20561, 1091.93652, 522.91937, 0.00000, 0.00000, 180.00000);
  17956. CreateDynamicObject(1753, 133.12901, 1091.93201, 522.91699, 0.00000, 0.00000, 180.00000);
  17957. CreateDynamicObject(2164, 130.10321, 1091.59192, 522.91302, 0.00000, 0.00000, 180.00000);
  17958. CreateDynamicObject(2161, 128.35020, 1091.58850, 523.40619, 0.00000, 0.00000, 180.00000);
  17959. CreateDynamicObject(2204, 126.99130, 1091.64771, 522.90680, 0.00000, 0.00000, 180.00000);
  17960. CreateDynamicObject(1753, 123.97480, 1091.99524, 522.91107, 0.00000, 0.00000, 180.00000);
  17961. CreateDynamicObject(1753, 120.39085, 1091.99854, 522.91162, 0.00000, 0.00000, 180.00000);
  17962. CreateDynamicObject(2010, 121.13172, 1092.05566, 522.91211, 0.00000, 0.00000, 0.00000);
  17963. CreateDynamicObject(2011, 137.29774, 1092.03491, 522.91406, 0.00000, 0.00000, 0.00000);
  17964. CreateDynamicObject(1775, 117.32044, 1091.99011, 524.02850, 0.00000, 0.00000, 180.00000);
  17965. CreateDynamicObject(2186, 139.67596, 1096.39502, 522.90942, 0.00000, 0.00000, 270.00000);
  17966. CreateDynamicObject(2961, 140.21208, 1094.22070, 524.51532, 0.00000, 0.00000, 90.00000);
  17967. CreateDynamicObject(2961, 131.99838, 1088.88831, 524.46216, 0.00000, 0.00000, 0.00000);
  17968. CreateDynamicObject(2961, 117.21534, 1076.44763, 524.19275, 0.00000, 0.00000, 0.00000);
  17969. CreateDynamicObject(2961, 158.71095, 1108.06311, 524.59766, 0.00000, 0.00000, 0.00000);
  17970. CreateDynamicObject(2961, 140.18350, 1107.41309, 531.76611, 0.00000, 0.00000, 270.00000);
  17971. CreateDynamicObject(2607, 156.48082, 1102.62085, 523.31061, 0.00000, 0.00000, 90.00000);
  17972. // Unity Station
  17973. CreateDynamicObject(970, 1833.556396, -1852.723266, 13.028117, 0.000000, 0.000000, 90.000000);
  17974. CreateDynamicObject(970, 1833.556396, -1856.843872, 13.028117, 0.000000, 0.000000, 90.000000);
  17975. CreateDynamicObject(1346, 1849.468627, -1865.735839, 13.859744, 0.000000, 0.000000, -180.000000);
  17976. CreateDynamicObject(1256, 1852.849853, -1866.003417, 13.212806, 0.000000, 0.000000, -90.000000);
  17977. CreateDynamicObject(19121, 1847.915161, -1866.747680, 13.129741, 0.000000, 0.000000, 178.599319);
  17978. CreateDynamicObject(1258, 1847.487304, -1860.316406, 13.198123, 0.000000, 0.000000, 0.000000);
  17979. CreateDynamicObject(1288, 1848.786743, -1860.206298, 13.125104, 0.000000, 0.000000, 180.000000);
  17980. CreateDynamicObject(1285, 1849.481201, -1860.200317, 13.135103, 0.000000, 0.000000, 180.000000);
  17981. CreateDynamicObject(19121, 1844.551879, -1874.999511, 13.169745, 0.000000, 0.000000, 178.450714);
  17982. CreateDynamicObject(19121, 1841.112548, -1874.906616, 13.169745, 0.000000, 0.000000, 178.450714);
  17983. CreateDynamicObject(19121, 1837.823486, -1874.817749, 13.169745, 0.000000, 0.000000, 178.450714);
  17984. CreateDynamicObject(19121, 1834.584472, -1874.730346, 13.169745, 0.000000, 0.000000, 178.450714);
  17985. CreateDynamicObject(1256, 1852.848266, -1860.393310, 13.212806, 0.000000, 0.000000, 90.000000);
  17986. //palomino bank
  17987. retexture = CreateDynamicObject(19461, 2304.015380, -13.456198, 14.093700, 0.000000, 0.000000, 0.000000, 65005);
  17988. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  17989. retexture = CreateDynamicObject(19461, 2304.015380, -3.824898, 14.093700, 0.000000, 0.000000, 0.000000, 65005);
  17990. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  17991. retexture = CreateDynamicObject(19461, 2308.761718, -18.217369, 14.093700, 0.000000, 0.000000, 90.000000, 65005);
  17992. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  17993. retexture = CreateDynamicObject(19461, 2318.395019, -18.217399, 14.093700, 0.000000, 0.000000, 90.000000, 65005);
  17994. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  17995. retexture = CreateDynamicObject(19461, 2322.743652, -10.143440, 14.093700, 0.000000, 0.000000, 0.000000, 65005);
  17996. SetDynamicObjectMaterial(retexture, 0, 3820, "boxhses_sfsx", "ws_mixedbrick", 0x00000000);
  17997. retexture = CreateDynamicObject(19461, 2321.097412, -3.824898, 14.093700, 0.000000, 0.000000, 0.000000, 65005);
  17998. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  17999. retexture = CreateDynamicObject(19461, 2309.296386, -7.428558, 14.093700, 0.000000, 0.000000, 90.000000, 65005);
  18000. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18001. retexture = CreateDynamicObject(19461, 2322.203857, -10.283679, 14.093700, 0.000000, 0.000000, 90.000000, 65005);
  18002. SetDynamicObjectMaterial(retexture, 0, 3820, "boxhses_sfsx", "ws_mixedbrick", 0x00000000);
  18003. retexture = CreateDynamicObject(19461, 2325.335693, -14.866700, 14.093700, 0.000000, 0.000000, 90.000000, 65005);
  18004. SetDynamicObjectMaterial(retexture, 0, 3820, "boxhses_sfsx", "ws_mixedbrick", 0x00000000);
  18005. retexture = CreateDynamicObject(19461, 2306.836914, -8.693730, 14.093700, 0.000000, 0.000000, 0.000000, 65005);
  18006. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18007. retexture = CreateDynamicObject(19461, 2302.108154, -13.425000, 14.093700, 0.000000, 0.000000, 90.000000, 65005);
  18008. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18009. retexture = CreateDynamicObject(19368, 2309.261230, -10.110300, 12.311800, 0.000000, 90.000000, 90.000000, 65005);
  18010. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFC8C8C8);
  18011. retexture = CreateDynamicObject(18762, 2307.234863, -14.007300, 11.432498, 0.000000, 0.000000, 0.000000, 65005);
  18012. SetDynamicObjectMaterial(retexture, 0, 12855, "cunte_cop", "sw_brick05", 0x00000000);
  18013. retexture = CreateDynamicObject(18762, 2307.234863, -14.989298, 10.772488, 0.000000, 0.000000, 0.000000, 65005);
  18014. SetDynamicObjectMaterial(retexture, 0, 12855, "cunte_cop", "sw_brick05", 0x00000000);
  18015. retexture = CreateDynamicObject(18762, 2307.232910, -15.748398, 10.770500, 0.000000, 0.000000, 0.000000, 65005);
  18016. SetDynamicObjectMaterial(retexture, 0, 12855, "cunte_cop", "sw_brick05", 0x00000000);
  18017. retexture = CreateDynamicObject(19940, 2307.262695, -16.700099, 13.155798, 90.000000, 0.000000, 0.000000, 65005);
  18018. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18019. retexture = CreateDynamicObject(19940, 2307.262695, -16.698099, 13.674698, 90.000000, 0.000000, 0.000000, 65005);
  18020. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18021. retexture = CreateDynamicObject(19940, 2307.262695, -17.700099, 13.155798, 90.000000, 0.000000, 0.000000, 65005);
  18022. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18023. retexture = CreateDynamicObject(19940, 2307.262695, -17.698099, 13.674698, 90.000000, 0.000000, 0.000000, 65005);
  18024. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18025. retexture = CreateDynamicObject(19939, 2307.260742, -17.191600, 14.659600, 0.000000, 0.000000, 0.000000, 65005);
  18026. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18027. retexture = CreateDynamicObject(19461, 2313.744140, -10.137398, 11.892378, 0.000000, 0.000000, 0.000000, 65005);
  18028. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18029. retexture = CreateDynamicObject(19397, 2313.744140, -16.558300, 14.093850, 0.000000, 0.000000, 0.000000, 65005);
  18030. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18031. retexture = CreateDynamicObject(19442, 2314.460449, -15.039698, 14.093700, 0.000000, 0.000000, 90.000000, 65005);
  18032. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18033. retexture = CreateDynamicObject(19442, 2314.460449, -13.039698, 14.093700, 0.000000, 0.000000, 90.000000, 65005);
  18034. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18035. retexture = CreateDynamicObject(19442, 2314.460449, -11.039698, 14.093700, 0.000000, 0.000000, 90.000000, 65005);
  18036. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18037. retexture = CreateDynamicObject(19461, 2313.742187, -6.310400, 14.093700, 0.000000, 0.000000, 0.000000, 65005);
  18038. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18039. retexture = CreateDynamicObject(19461, 2317.396728, -10.137398, 14.093700, 0.000000, 0.000000, 0.000000, 65005);
  18040. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18041. retexture = CreateDynamicObject(19442, 2316.063232, -11.039698, 14.093700, 0.000000, 0.000000, 90.000000, 65005);
  18042. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18043. retexture = CreateDynamicObject(19442, 2316.583984, -11.041700, 14.093700, 0.000000, 0.000000, 90.000000, 65005);
  18044. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18045. retexture = CreateDynamicObject(19461, 2314.226562, -10.137398, 11.892398, 0.000000, 0.000000, 0.000000, 65005);
  18046. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18047. retexture = CreateDynamicObject(19173, 2314.031250, -12.181400, 13.637100, 90.000000, 0.000000, 90.000000, 65005);
  18048. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18049. SetDynamicObjectMaterial(retexture, 1, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18050. retexture = CreateDynamicObject(19173, 2314.031250, -13.981498, 13.639100, 90.000000, 0.000000, 90.000000, 65005);
  18051. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18052. SetDynamicObjectMaterial(retexture, 1, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18053. retexture = CreateDynamicObject(19461, 2313.744140, -10.137398, 16.960859, 0.000000, 0.000000, 0.000000, 65005);
  18054. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18055. retexture = CreateDynamicObject(19174, 2309.594970, -7.550260, 14.277540, 0.000000, 0.000000, 0.000000, 65005);
  18056. SetDynamicObjectMaterial(retexture, 0, 15041, "bigsfsave", "windo_blinds", 0x00000000);
  18057. retexture = CreateDynamicObject(19174, 2306.932373, -9.973990, 14.277500, 0.000000, 0.000000, 90.000000, 65005);
  18058. SetDynamicObjectMaterial(retexture, 0, 15041, "bigsfsave", "windo_blinds", 0x00000000);
  18059. retexture = CreateDynamicObject(1502, 2313.752929, -17.306100, 12.336000, 0.000000, 0.000000, 90.000000, 65005);
  18060. SetDynamicObjectMaterial(retexture, 1, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18061. retexture = CreateDynamicObject(19461, 2321.995605, -19.693540, 14.093700, 0.000000, 0.000000, 0.000000, 65005);
  18062. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18063. retexture = CreateDynamicObject(19175, 2310.539062, -18.132589, 14.225938, 0.000000, 0.000000, 180.000000, 65005);
  18064. SetDynamicObjectMaterial(retexture, 1, 19297, "matlights", "invisible", 0x00000000);
  18065. SetDynamicObjectMaterialText(retexture, 0, "Bank of Palomino", 40, "Ariel", 15, 1, 0xFF000000, 0x00000000, 1);
  18066. retexture = CreateDynamicObject(19175, 2310.539062, -18.132589, 13.875939, 0.000000, 0.000000, 180.000000, 65005);
  18067. SetDynamicObjectMaterial(retexture, 1, 19297, "matlights", "invisible", 0x00000000);
  18068. SetDynamicObjectMaterialText(retexture, 0, "Serving Los Santos since 1984", 80, "Ariel", 15, 1, 0xFF000000, 0x00000000, 1);
  18069. retexture = CreateDynamicObject(19175, 2310.539062, -18.132589, 14.885942, 0.000000, 0.000000, 180.000000, 65005);
  18070. SetDynamicObjectMaterial(retexture, 1, 19297, "matlights", "invisible", 0x00000000);
  18071. SetDynamicObjectMaterialText(retexture, 0, "____________", 40, "Ariel", 15, 1, 0xFF000000, 0x00000000, 1);
  18072. retexture = CreateDynamicObject(19893, 2307.321777, -15.362000, 13.271288, 0.000000, 0.000000, 64.620010, 65005);
  18073. SetDynamicObjectMaterial(retexture, 1, 3925, "weemap", "skyclouds", 0x00000000);
  18074. retexture = CreateDynamicObject(19893, 2314.061767, -14.599988, 13.645588, 0.000000, 0.000000, 115.499977, 65005);
  18075. SetDynamicObjectMaterial(retexture, 1, 3925, "weemap", "skyclouds", 0x00000000);
  18076. retexture = CreateDynamicObject(19893, 2314.102539, -11.831728, 13.645588, 0.000000, 0.000000, 66.599983, 65005);
  18077. SetDynamicObjectMaterial(retexture, 1, 3925, "weemap", "skyclouds", 0x00000000);
  18078. retexture = CreateDynamicObject(19397, 2318.914306, -14.866700, 14.093898, 0.000000, 0.000000, 90.000000, 65005);
  18079. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18080. retexture = CreateDynamicObject(19461, 2321.072021, -21.123249, 14.093700, 0.000000, 0.000000, 0.000000, 65005);
  18081. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18082. retexture = CreateDynamicObject(19461, 2325.801757, -16.393199, 14.093700, 0.000000, 0.000000, 90.000000, 65005);
  18083. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18084. retexture = CreateDynamicObject(19922, 2321.909179, -14.049817, 12.355939, 0.000000, 0.000000, 360.000000, 65005);
  18085. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18086. retexture = CreateDynamicObject(19940, 2322.849609, -11.427220, 14.826800, 0.000015, 0.000000, -0.000091, 65005);
  18087. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18088. retexture = CreateDynamicObject(19940, 2320.109863, -10.161700, 14.826800, 0.000000, 0.000000, 90.000000, 65005);
  18089. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18090. retexture = CreateDynamicObject(19940, 2322.108398, -10.161700, 14.826800, 0.000000, 0.000000, 90.000000, 65005);
  18091. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18092. retexture = CreateDynamicObject(19940, 2320.109863, -10.161700, 14.524800, 0.000000, 0.000000, 90.000000, 65005);
  18093. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18094. retexture = CreateDynamicObject(19940, 2322.108398, -10.161700, 14.524800, 0.000000, 0.000000, 90.000000, 65005);
  18095. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18096. retexture = CreateDynamicObject(19940, 2322.108398, -10.161700, 14.222800, 0.000000, 0.000000, 90.000000, 65005);
  18097. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18098. retexture = CreateDynamicObject(19940, 2322.108398, -10.161700, 13.920800, 0.000000, 0.000000, 90.000000, 65005);
  18099. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18100. retexture = CreateDynamicObject(19940, 2322.108398, -10.161700, 13.618800, 0.000000, 0.000000, 90.000000, 65005);
  18101. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18102. retexture = CreateDynamicObject(19940, 2322.108398, -10.161700, 13.316800, 0.000000, 0.000000, 90.000000, 65005);
  18103. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18104. retexture = CreateDynamicObject(19940, 2320.109863, -10.161700, 14.222800, 0.000000, 0.000000, 90.000000, 65005);
  18105. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18106. retexture = CreateDynamicObject(19940, 2320.109863, -10.161700, 13.920800, 0.000000, 0.000000, 90.000000, 65005);
  18107. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18108. retexture = CreateDynamicObject(19940, 2320.109863, -10.161700, 13.618800, 0.000000, 0.000000, 90.000000, 65005);
  18109. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18110. retexture = CreateDynamicObject(19940, 2320.109863, -10.161700, 13.316800, 0.000000, 0.000000, 90.000000, 65005);
  18111. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18112. retexture = CreateDynamicObject(19940, 2319.126953, -10.159700, 13.843000, 90.000000, 0.000000, 90.000000, 65005);
  18113. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18114. retexture = CreateDynamicObject(19940, 2322.645507, -10.159700, 13.843000, 90.000000, 0.000000, 90.000000, 65005);
  18115. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18116. retexture = CreateDynamicObject(19461, 2318.071289, -10.137398, 14.093700, 0.000000, 0.000000, 0.000000, 65005);
  18117. SetDynamicObjectMaterial(retexture, 0, 3820, "boxhses_sfsx", "ws_mixedbrick", 0x00000000);
  18118. retexture = CreateDynamicObject(19397, 2318.916259, -14.862700, 14.091898, 0.000000, 0.000000, 90.000000, 65005);
  18119. SetDynamicObjectMaterial(retexture, 0, 3820, "boxhses_sfsx", "ws_mixedbrick", 0x00000000);
  18120. retexture = CreateDynamicObject(19461, 2322.203857, -10.291700, 11.558710, 0.000000, 0.000000, 90.000000, 65005);
  18121. SetDynamicObjectMaterial(retexture, 0, 3820, "boxhses_sfsx", "ws_mixedbrick", 0x00000000);
  18122. retexture = CreateDynamicObject(19940, 2319.641113, -10.159700, 13.843000, 90.000000, 0.000000, 90.000000, 65005);
  18123. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18124. retexture = CreateDynamicObject(19940, 2320.155029, -10.159700, 13.843000, 90.000000, 0.000000, 90.000000, 65005);
  18125. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18126. retexture = CreateDynamicObject(19940, 2320.669189, -10.159700, 13.843000, 90.000000, 0.000000, 90.000000, 65005);
  18127. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18128. retexture = CreateDynamicObject(19940, 2321.183105, -10.159700, 13.843000, 90.000000, 0.000000, 90.000000, 65005);
  18129. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18130. retexture = CreateDynamicObject(19940, 2321.697021, -10.159700, 13.843000, 90.000000, 0.000000, 90.000000, 65005);
  18131. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18132. retexture = CreateDynamicObject(19940, 2322.211181, -10.159700, 13.843000, 90.000000, 0.000000, 90.000000, 65005);
  18133. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18134. retexture = CreateDynamicObject(19448, 2323.946044, -10.289698, 13.087598, 0.000000, 0.000000, 90.000000, 65005);
  18135. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFEEEEEE);
  18136. retexture = CreateDynamicObject(19940, 2322.849609, -13.425755, 14.826800, 0.000015, 0.000000, -0.000091, 65005);
  18137. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18138. retexture = CreateDynamicObject(19940, 2322.849609, -11.427220, 14.524800, 0.000015, 0.000000, -0.000091, 65005);
  18139. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18140. retexture = CreateDynamicObject(19940, 2322.849609, -13.425755, 14.524800, 0.000015, 0.000000, -0.000091, 65005);
  18141. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18142. retexture = CreateDynamicObject(1210, 2319.374267, -10.209368, 13.526000, 90.000000, 0.000000, 0.000000, 65005);
  18143. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18144. retexture = CreateDynamicObject(1210, 2319.901367, -10.209400, 13.526000, 90.000000, 0.000000, 0.000000, 65005);
  18145. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18146. retexture = CreateDynamicObject(1210, 2320.402343, -10.209400, 13.526000, 90.000000, 0.000000, 0.000000, 65005);
  18147. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18148. retexture = CreateDynamicObject(1210, 2320.922363, -10.209400, 13.526000, 90.000000, 0.000000, 0.000000, 65005);
  18149. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18150. retexture = CreateDynamicObject(1210, 2321.441406, -10.209400, 13.526000, 90.000000, 0.000000, 0.000000, 65005);
  18151. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18152. retexture = CreateDynamicObject(1210, 2322.418945, -10.209400, 13.526000, 90.000000, 0.000000, 0.000000, 65005);
  18153. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18154. retexture = CreateDynamicObject(1210, 2322.418945, -10.209400, 13.826998, 90.000000, 0.000000, 0.000000, 65005);
  18155. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18156. retexture = CreateDynamicObject(1210, 2322.418945, -10.209400, 14.128000, 90.000000, 0.000000, 0.000000, 65005);
  18157. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18158. retexture = CreateDynamicObject(1210, 2322.418945, -10.209400, 14.428998, 90.000000, 0.000000, 0.000000, 65005);
  18159. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18160. retexture = CreateDynamicObject(1210, 2322.418945, -10.209400, 14.729998, 90.000000, 0.000000, 0.000000, 65005);
  18161. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18162. retexture = CreateDynamicObject(1210, 2321.959960, -10.209400, 13.826998, 90.000000, 0.000000, 0.000000, 65005);
  18163. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18164. retexture = CreateDynamicObject(1210, 2321.959960, -10.209400, 14.128000, 90.000000, 0.000000, 0.000000, 65005);
  18165. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18166. retexture = CreateDynamicObject(1210, 2321.959960, -10.209400, 14.428998, 90.000000, 0.000000, 0.000000, 65005);
  18167. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18168. retexture = CreateDynamicObject(1210, 2321.959960, -10.209400, 14.729998, 90.000000, 0.000000, 0.000000, 65005);
  18169. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18170. retexture = CreateDynamicObject(1210, 2321.959960, -10.209400, 13.526000, 90.000000, 0.000000, 0.000000, 65005);
  18171. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18172. retexture = CreateDynamicObject(1210, 2319.374267, -10.209400, 13.826998, 90.000000, 0.000000, 0.000000, 65005);
  18173. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18174. retexture = CreateDynamicObject(1210, 2319.374267, -10.209400, 14.128000, 90.000000, 0.000000, 0.000000, 65005);
  18175. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18176. retexture = CreateDynamicObject(1210, 2319.374267, -10.209400, 14.428998, 90.000000, 0.000000, 0.000000, 65005);
  18177. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18178. retexture = CreateDynamicObject(1210, 2319.374267, -10.209400, 14.729998, 90.000000, 0.000000, 0.000000, 65005);
  18179. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18180. retexture = CreateDynamicObject(1210, 2319.901367, -10.209400, 13.826998, 90.000000, 0.000000, 0.000000, 65005);
  18181. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18182. retexture = CreateDynamicObject(1210, 2320.402343, -10.209400, 13.826998, 90.000000, 0.000000, 0.000000, 65005);
  18183. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18184. retexture = CreateDynamicObject(1210, 2320.922363, -10.209400, 13.826998, 90.000000, 0.000000, 0.000000, 65005);
  18185. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18186. retexture = CreateDynamicObject(1210, 2321.441406, -10.209400, 13.826998, 90.000000, 0.000000, 0.000000, 65005);
  18187. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18188. retexture = CreateDynamicObject(1210, 2321.441406, -10.209400, 14.128000, 90.000000, 0.000000, 0.000000, 65005);
  18189. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18190. retexture = CreateDynamicObject(1210, 2321.441406, -10.209400, 14.428998, 90.000000, 0.000000, 0.000000, 65005);
  18191. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18192. retexture = CreateDynamicObject(1210, 2321.441406, -10.209400, 14.729998, 90.000000, 0.000000, 0.000000, 65005);
  18193. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18194. retexture = CreateDynamicObject(1210, 2320.922363, -10.209400, 14.128000, 90.000000, 0.000000, 0.000000, 65005);
  18195. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18196. retexture = CreateDynamicObject(1210, 2320.922363, -10.209400, 14.428998, 90.000000, 0.000000, 0.000000, 65005);
  18197. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18198. retexture = CreateDynamicObject(1210, 2320.922363, -10.209400, 14.729998, 90.000000, 0.000000, 0.000000, 65005);
  18199. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18200. retexture = CreateDynamicObject(1210, 2320.402343, -10.209400, 14.128000, 90.000000, 0.000000, 0.000000, 65005);
  18201. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18202. retexture = CreateDynamicObject(1210, 2320.402343, -10.209400, 14.428998, 90.000000, 0.000000, 0.000000, 65005);
  18203. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18204. retexture = CreateDynamicObject(1210, 2320.402343, -10.209400, 14.729998, 90.000000, 0.000000, 0.000000, 65005);
  18205. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18206. retexture = CreateDynamicObject(1210, 2319.901367, -10.209400, 14.128000, 90.000000, 0.000000, 0.000000, 65005);
  18207. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18208. retexture = CreateDynamicObject(1210, 2319.901367, -10.209400, 14.428998, 90.000000, 0.000000, 0.000000, 65005);
  18209. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18210. retexture = CreateDynamicObject(1210, 2319.901367, -10.209400, 14.729998, 90.000000, 0.000000, 0.000000, 65005);
  18211. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18212. retexture = CreateDynamicObject(19940, 2322.849609, -13.425755, 14.222800, 0.000015, 0.000000, -0.000091, 65005);
  18213. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18214. retexture = CreateDynamicObject(19940, 2322.849609, -13.425755, 13.920800, 0.000015, 0.000000, -0.000091, 65005);
  18215. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18216. retexture = CreateDynamicObject(19940, 2322.849609, -13.425755, 13.618800, 0.000015, 0.000000, -0.000091, 65005);
  18217. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18218. retexture = CreateDynamicObject(18981, 2311.482910, -12.007800, 16.271999, 0.000000, 90.000000, 0.000000, 65005);
  18219. SetDynamicObjectMaterial(retexture, 0, 8396, "sphinx01", "luxorceiling01_128", 0x00000000);
  18220. retexture = CreateDynamicObject(19379, 2322.732666, -10.037758, 12.312000, 0.000000, 90.000000, 0.000000, 65005);
  18221. SetDynamicObjectMaterial(retexture, 0, 16640, "a51", "ws_stationfloor", 0x00000000);
  18222. retexture = CreateDynamicObject(19175, 2310.539062, -18.132589, 13.865940, 0.000000, 0.000000, 180.000000, 65005);
  18223. SetDynamicObjectMaterial(retexture, 1, 19297, "matlights", "invisible", 0x00000000);
  18224. SetDynamicObjectMaterialText(retexture, 0, "____________", 40, "Ariel", 15, 1, 0xFF000000, 0x00000000, 1);
  18225. retexture = CreateDynamicObject(19461, 2325.335693, -14.866700, 14.093700, 0.000000, 0.000000, 90.000000, 65005);
  18226. SetDynamicObjectMaterial(retexture, 0, 3820, "boxhses_sfsx", "ws_mixedbrick", 0x00000000);
  18227. retexture = CreateDynamicObject(19461, 2325.335693, -14.876697, 14.093700, 0.000000, 0.000000, 90.000000, 65005);
  18228. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18229. retexture = CreateDynamicObject(19379, 2322.732666, -10.037758, 15.851999, 0.000000, 90.000000, 0.000000, 65005);
  18230. SetDynamicObjectMaterial(retexture, 0, 16640, "a51", "ws_stationfloor", 0x00000000);
  18231. retexture = CreateDynamicObject(19940, 2322.849609, -13.425755, 13.316800, 0.000015, 0.000000, -0.000091, 65005);
  18232. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18233. retexture = CreateDynamicObject(19940, 2322.849609, -11.427220, 14.222800, 0.000015, 0.000000, -0.000091, 65005);
  18234. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18235. retexture = CreateDynamicObject(19940, 2322.849609, -11.427220, 13.920800, 0.000015, 0.000000, -0.000091, 65005);
  18236. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18237. retexture = CreateDynamicObject(19940, 2322.849609, -11.427220, 13.618800, 0.000015, 0.000000, -0.000091, 65005);
  18238. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18239. retexture = CreateDynamicObject(19940, 2322.849609, -11.427220, 13.316800, 0.000015, 0.000000, -0.000091, 65005);
  18240. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18241. retexture = CreateDynamicObject(19940, 2322.851562, -10.444310, 13.843000, 89.999992, 135.000000, -135.000045, 65005);
  18242. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18243. retexture = CreateDynamicObject(19940, 2322.851562, -13.962864, 13.843000, 89.999992, 135.000000, -135.000045, 65005);
  18244. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18245. retexture = CreateDynamicObject(19940, 2322.851562, -10.958470, 13.843000, 89.999992, 135.000000, -135.000045, 65005);
  18246. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18247. retexture = CreateDynamicObject(19940, 2322.851562, -11.472386, 13.843000, 89.999992, 135.000000, -135.000045, 65005);
  18248. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18249. retexture = CreateDynamicObject(19940, 2322.851562, -11.986546, 13.843000, 89.999992, 135.000000, -135.000045, 65005);
  18250. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18251. retexture = CreateDynamicObject(19940, 2322.851562, -12.500462, 13.843000, 89.999992, 135.000000, -135.000045, 65005);
  18252. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18253. retexture = CreateDynamicObject(19940, 2322.851562, -13.014378, 13.843000, 89.999992, 135.000000, -135.000045, 65005);
  18254. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18255. retexture = CreateDynamicObject(19940, 2322.851562, -13.528538, 13.843000, 89.999992, 135.000000, -135.000045, 65005);
  18256. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18257. retexture = CreateDynamicObject(19448, 2322.721679, -15.263401, 13.087598, 0.000015, 0.000000, -0.000091, 65005);
  18258. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFEEEEEE);
  18259. retexture = CreateDynamicObject(19461, 2322.704345, -10.291700, 11.558710, 0.000000, 0.000000, 180.000000, 65005);
  18260. SetDynamicObjectMaterial(retexture, 0, 3820, "boxhses_sfsx", "ws_mixedbrick", 0x00000000);
  18261. retexture = CreateDynamicObject(19461, 2322.705322, -18.780698, 13.108711, 0.000000, 0.000000, 180.000000, 65005);
  18262. SetDynamicObjectMaterial(retexture, 0, 3820, "boxhses_sfsx", "ws_mixedbrick", 0x00000000);
  18263. retexture = CreateDynamicObject(1210, 2322.796386, -10.691932, 13.526000, 89.999992, 6.774093, -96.773956, 65005);
  18264. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18265. retexture = CreateDynamicObject(1210, 2322.796386, -11.219032, 13.526000, 89.999992, 6.774093, -96.773956, 65005);
  18266. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18267. retexture = CreateDynamicObject(1210, 2322.796386, -11.720008, 13.526000, 89.999992, 6.774093, -96.773956, 65005);
  18268. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18269. retexture = CreateDynamicObject(1210, 2322.796386, -12.240028, 13.526000, 89.999992, 6.774093, -96.773956, 65005);
  18270. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18271. retexture = CreateDynamicObject(1210, 2322.796386, -12.759071, 13.526000, 89.999992, 6.774093, -96.773956, 65005);
  18272. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18273. retexture = CreateDynamicObject(1210, 2322.796386, -13.736610, 13.526000, 89.999992, 6.774093, -96.773956, 65005);
  18274. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18275. retexture = CreateDynamicObject(1210, 2322.796386, -13.736610, 13.826998, 89.999992, 6.774093, -96.773956, 65005);
  18276. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18277. retexture = CreateDynamicObject(1210, 2322.796386, -13.736610, 14.128000, 89.999992, 6.774093, -96.773956, 65005);
  18278. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18279. retexture = CreateDynamicObject(1210, 2322.796386, -13.736610, 14.428998, 89.999992, 6.774093, -96.773956, 65005);
  18280. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18281. retexture = CreateDynamicObject(1210, 2322.796386, -13.736610, 14.729998, 89.999992, 6.774093, -96.773956, 65005);
  18282. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18283. retexture = CreateDynamicObject(1210, 2322.796386, -13.277626, 13.826998, 89.999992, 6.774093, -96.773956, 65005);
  18284. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18285. retexture = CreateDynamicObject(1210, 2322.796386, -13.277626, 14.128000, 89.999992, 6.774093, -96.773956, 65005);
  18286. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18287. retexture = CreateDynamicObject(1210, 2322.796386, -13.277626, 14.428998, 89.999992, 6.774093, -96.773956, 65005);
  18288. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18289. retexture = CreateDynamicObject(1210, 2322.796386, -13.277626, 14.729998, 89.999992, 6.774093, -96.773956, 65005);
  18290. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18291. retexture = CreateDynamicObject(1210, 2322.796386, -13.277626, 13.526000, 89.999992, 6.774093, -96.773956, 65005);
  18292. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18293. retexture = CreateDynamicObject(1210, 2322.796386, -10.691932, 13.826998, 89.999992, 6.774093, -96.773956, 65005);
  18294. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18295. retexture = CreateDynamicObject(1210, 2322.796386, -10.691932, 14.128000, 89.999992, 6.774093, -96.773956, 65005);
  18296. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18297. retexture = CreateDynamicObject(1210, 2322.796386, -10.691932, 14.428998, 89.999992, 6.774093, -96.773956, 65005);
  18298. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18299. retexture = CreateDynamicObject(1210, 2322.796386, -10.691932, 14.729998, 89.999992, 6.774093, -96.773956, 65005);
  18300. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18301. retexture = CreateDynamicObject(1210, 2322.796386, -11.219032, 13.826998, 89.999992, 6.774093, -96.773956, 65005);
  18302. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18303. retexture = CreateDynamicObject(1210, 2322.796386, -11.720008, 13.826998, 89.999992, 6.774093, -96.773956, 65005);
  18304. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18305. retexture = CreateDynamicObject(1210, 2322.796386, -12.240028, 13.826998, 89.999992, 6.774093, -96.773956, 65005);
  18306. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18307. retexture = CreateDynamicObject(1210, 2322.796386, -12.759071, 13.826998, 89.999992, 6.774093, -96.773956, 65005);
  18308. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18309. retexture = CreateDynamicObject(1210, 2322.796386, -12.759071, 14.128000, 89.999992, 6.774093, -96.773956, 65005);
  18310. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18311. retexture = CreateDynamicObject(1210, 2322.796386, -12.759071, 14.428998, 89.999992, 6.774093, -96.773956, 65005);
  18312. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18313. retexture = CreateDynamicObject(1210, 2322.796386, -12.759071, 14.729998, 89.999992, 6.774093, -96.773956, 65005);
  18314. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18315. retexture = CreateDynamicObject(1210, 2322.796386, -12.240028, 14.128000, 89.999992, 6.774093, -96.773956, 65005);
  18316. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18317. retexture = CreateDynamicObject(1210, 2322.796386, -12.240028, 14.428998, 89.999992, 6.774093, -96.773956, 65005);
  18318. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18319. retexture = CreateDynamicObject(1210, 2322.796386, -12.240028, 14.729998, 89.999992, 6.774093, -96.773956, 65005);
  18320. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18321. retexture = CreateDynamicObject(1210, 2322.796386, -11.720008, 14.128000, 89.999992, 6.774093, -96.773956, 65005);
  18322. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18323. retexture = CreateDynamicObject(1210, 2322.796386, -11.720008, 14.428998, 89.999992, 6.774093, -96.773956, 65005);
  18324. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18325. retexture = CreateDynamicObject(1210, 2322.796386, -11.720008, 14.729998, 89.999992, 6.774093, -96.773956, 65005);
  18326. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18327. retexture = CreateDynamicObject(1210, 2322.796386, -11.219032, 14.128000, 89.999992, 6.774093, -96.773956, 65005);
  18328. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18329. retexture = CreateDynamicObject(1210, 2322.796386, -11.219032, 14.428998, 89.999992, 6.774093, -96.773956, 65005);
  18330. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18331. retexture = CreateDynamicObject(1210, 2322.796386, -11.219032, 14.729998, 89.999992, 6.774093, -96.773956, 65005);
  18332. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18333. retexture = CreateDynamicObject(19922, 2323.969726, -14.049817, 12.354939, 0.000000, 0.000000, 360.000000, 65005);
  18334. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18335. CreateDynamicObject(13606, 2310.724365, -19.926231, 11.935937, 0.000000, 0.000000, 0.000000, 65005);
  18336. CreateDynamicObject(19379, 2317.870605, -2.693160, 12.310000, 0.000000, 90.000000, 0.000000, 65005);
  18337. CreateDynamicObject(19379, 2317.870605, -12.324298, 12.310000, 0.000000, 90.000000, 0.000000, 65005);
  18338. CreateDynamicObject(19379, 2317.870605, -21.957300, 12.310000, 0.000000, 90.000000, 0.000000, 65005);
  18339. CreateDynamicObject(19379, 2307.370361, -21.957300, 12.310000, 0.000000, 90.000000, 0.000000, 65005);
  18340. CreateDynamicObject(19379, 2307.370361, -12.324298, 12.310000, 0.000000, 90.000000, 0.000000, 65005);
  18341. CreateDynamicObject(1569, 2304.051025, -17.241100, 12.385298, 0.000000, 0.000000, 90.000000, 65005);
  18342. CreateDynamicObject(1569, 2304.047119, -14.240598, 12.385298, 0.000000, 0.000000, -90.000000, 65005);
  18343. CreateDynamicObject(1726, 2307.623535, -11.034440, 12.395198, 0.000000, 0.000000, 90.000000, 65005);
  18344. CreateDynamicObject(1726, 2308.566894, -8.201950, 12.395198, 0.000000, 0.000000, 0.000000, 65005);
  18345. CreateDynamicObject(1727, 2308.963134, -12.525600, 12.396730, 0.000000, 0.000000, 150.719955, 65005);
  18346. CreateDynamicObject(970, 2307.293212, -18.360799, 11.179100, 0.000000, 90.000000, 90.000000, 65005);
  18347. CreateDynamicObject(970, 2307.293212, -16.061700, 11.179120, 0.000000, 90.000000, -90.000000, 65005);
  18348. CreateDynamicObject(2010, 2307.401855, -13.061030, 12.396068, 0.000000, 0.000000, -25.739999, 65005);
  18349. CreateDynamicObject(2069, 2307.278320, -7.887370, 12.447038, 0.000000, 0.000000, 0.000000, 65005);
  18350. CreateDynamicObject(2069, 2313.256591, -7.887400, 12.446998, 0.000000, 0.000000, 0.000000, 65005);
  18351. CreateDynamicObject(2069, 2320.595458, -17.775049, 12.446998, 0.000000, 0.000000, 0.000000, 65005);
  18352. CreateDynamicObject(2315, 2313.155029, -10.554498, 12.396800, 0.000000, 0.000000, 90.000000, 65005);
  18353. CreateDynamicObject(2257, 2313.626708, -9.788000, 14.419300, 0.000000, 0.000000, -90.000000, 65005);
  18354. CreateDynamicObject(3859, 2313.679931, -12.683818, 16.811540, 0.000000, 0.000000, 17.239999, 65005);
  18355. CreateDynamicObject(2855, 2312.943847, -10.647218, 12.453289, 0.000000, 0.000000, -103.860000, 65005);
  18356. CreateDynamicObject(2854, 2313.014404, -9.262160, 12.891150, 0.000000, 0.000000, -37.619998, 65005);
  18357. CreateDynamicObject(2253, 2313.319824, -10.674360, 13.125280, 0.000000, 0.000000, -44.099990, 65005);
  18358. CreateDynamicObject(11745, 2307.162597, -15.873900, 13.326148, 0.000000, 0.000000, -103.260002, 65005);
  18359. CreateDynamicObject(2253, 2307.050537, -14.793028, 13.521638, 0.000000, 0.000000, -84.839996, 65005);
  18360. CreateDynamicObject(2202, 2319.861572, -17.576759, 12.396400, 0.000000, 0.000000, 180.000000, 65005);
  18361. CreateDynamicObject(2202, 2316.835693, -17.576799, 12.396400, 0.000000, 0.000000, 180.000000, 65005);
  18362. CreateDynamicObject(2007, 2317.843261, -17.663129, 12.366900, 0.000000, 0.000000, 180.000000, 65005);
  18363. CreateDynamicObject(2167, 2317.345947, -12.186658, 12.371560, 0.000000, 0.000000, -90.000000, 65005);
  18364. CreateDynamicObject(2167, 2317.345947, -14.043700, 12.371600, 0.000000, 0.000000, -90.000000, 65005);
  18365. CreateDynamicObject(2069, 2316.930175, -13.091210, 12.446998, 0.000000, 0.000000, 0.000000, 65005);
  18366. CreateDynamicObject(1886, 2316.864013, -11.405098, 15.872598, 10.000000, 0.000000, -76.860000, 65005);
  18367. CreateDynamicObject(1886, 2316.864013, -14.726498, 15.872598, 10.000000, 0.000000, -96.599998, 65005);
  18368. CreateDynamicObject(1886, 2304.690429, -17.776500, 15.955100, 10.000000, 0.000000, 121.379997, 65005);
  18369. CreateDynamicObject(2634, 2320.315917, -15.724633, 13.810798, 0.000000, 0.000000, -59.700019, 65005);
  18370. CreateDynamicObject(11745, 2320.764892, -14.015052, 13.266149, 0.000000, 0.000000, 164.039993, 65005);
  18371. //angel pine bank
  18372. retexture = CreateDynamicObject(19461, 2304.015380, -13.456198, 14.093700, 0.000000, 0.000000, 0.000000, 65003);
  18373. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18374. retexture = CreateDynamicObject(19461, 2304.015380, -3.824898, 14.093700, 0.000000, 0.000000, 0.000000, 65003);
  18375. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18376. retexture = CreateDynamicObject(19461, 2308.761718, -18.217369, 14.093700, 0.000000, 0.000000, 90.000000, 65003);
  18377. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18378. retexture = CreateDynamicObject(19461, 2318.395019, -18.217399, 14.093700, 0.000000, 0.000000, 90.000000, 65003);
  18379. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18380. retexture = CreateDynamicObject(19461, 2322.743652, -10.143440, 14.093700, 0.000000, 0.000000, 0.000000, 65003);
  18381. SetDynamicObjectMaterial(retexture, 0, 3820, "boxhses_sfsx", "ws_mixedbrick", 0x00000000);
  18382. retexture = CreateDynamicObject(19461, 2321.097412, -3.824898, 14.093700, 0.000000, 0.000000, 0.000000, 65003);
  18383. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18384. retexture = CreateDynamicObject(19461, 2309.296386, -7.428558, 14.093700, 0.000000, 0.000000, 90.000000, 65003);
  18385. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18386. retexture = CreateDynamicObject(19461, 2322.203857, -10.283679, 14.093700, 0.000000, 0.000000, 90.000000, 65003);
  18387. SetDynamicObjectMaterial(retexture, 0, 3820, "boxhses_sfsx", "ws_mixedbrick", 0x00000000);
  18388. retexture = CreateDynamicObject(19461, 2325.335693, -14.866700, 14.093700, 0.000000, 0.000000, 90.000000, 65003);
  18389. SetDynamicObjectMaterial(retexture, 0, 3820, "boxhses_sfsx", "ws_mixedbrick", 0x00000000);
  18390. retexture = CreateDynamicObject(19461, 2306.836914, -8.693730, 14.093700, 0.000000, 0.000000, 0.000000, 65003);
  18391. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18392. retexture = CreateDynamicObject(19461, 2302.108154, -13.425000, 14.093700, 0.000000, 0.000000, 90.000000, 65003);
  18393. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18394. retexture = CreateDynamicObject(19368, 2309.261230, -10.110300, 12.311800, 0.000000, 90.000000, 90.000000, 65003);
  18395. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFC8C8C8);
  18396. retexture = CreateDynamicObject(18762, 2307.234863, -14.007300, 11.432498, 0.000000, 0.000000, 0.000000, 65003);
  18397. SetDynamicObjectMaterial(retexture, 0, 12855, "cunte_cop", "sw_brick05", 0x00000000);
  18398. retexture = CreateDynamicObject(18762, 2307.234863, -14.989298, 10.772488, 0.000000, 0.000000, 0.000000, 65003);
  18399. SetDynamicObjectMaterial(retexture, 0, 12855, "cunte_cop", "sw_brick05", 0x00000000);
  18400. retexture = CreateDynamicObject(18762, 2307.232910, -15.748398, 10.770500, 0.000000, 0.000000, 0.000000, 65003);
  18401. SetDynamicObjectMaterial(retexture, 0, 12855, "cunte_cop", "sw_brick05", 0x00000000);
  18402. retexture = CreateDynamicObject(19940, 2307.262695, -16.700099, 13.155798, 90.000000, 0.000000, 0.000000, 65003);
  18403. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18404. retexture = CreateDynamicObject(19940, 2307.262695, -16.698099, 13.674698, 90.000000, 0.000000, 0.000000, 65003);
  18405. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18406. retexture = CreateDynamicObject(19940, 2307.262695, -17.700099, 13.155798, 90.000000, 0.000000, 0.000000, 65003);
  18407. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18408. retexture = CreateDynamicObject(19940, 2307.262695, -17.698099, 13.674698, 90.000000, 0.000000, 0.000000, 65003);
  18409. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18410. retexture = CreateDynamicObject(19939, 2307.260742, -17.191600, 14.659600, 0.000000, 0.000000, 0.000000, 65003);
  18411. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18412. retexture = CreateDynamicObject(19461, 2313.744140, -10.137398, 11.892378, 0.000000, 0.000000, 0.000000, 65003);
  18413. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18414. retexture = CreateDynamicObject(19397, 2313.744140, -16.558300, 14.093850, 0.000000, 0.000000, 0.000000, 65003);
  18415. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18416. retexture = CreateDynamicObject(19442, 2314.460449, -15.039698, 14.093700, 0.000000, 0.000000, 90.000000, 65003);
  18417. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18418. retexture = CreateDynamicObject(19442, 2314.460449, -13.039698, 14.093700, 0.000000, 0.000000, 90.000000, 65003);
  18419. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18420. retexture = CreateDynamicObject(19442, 2314.460449, -11.039698, 14.093700, 0.000000, 0.000000, 90.000000, 65003);
  18421. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18422. retexture = CreateDynamicObject(19461, 2313.742187, -6.310400, 14.093700, 0.000000, 0.000000, 0.000000, 65003);
  18423. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18424. retexture = CreateDynamicObject(19461, 2317.396728, -10.137398, 14.093700, 0.000000, 0.000000, 0.000000, 65003);
  18425. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18426. retexture = CreateDynamicObject(19442, 2316.063232, -11.039698, 14.093700, 0.000000, 0.000000, 90.000000, 65003);
  18427. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18428. retexture = CreateDynamicObject(19442, 2316.583984, -11.041700, 14.093700, 0.000000, 0.000000, 90.000000, 65003);
  18429. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18430. retexture = CreateDynamicObject(19461, 2314.226562, -10.137398, 11.892398, 0.000000, 0.000000, 0.000000, 65003);
  18431. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18432. retexture = CreateDynamicObject(19173, 2314.031250, -12.181400, 13.637100, 90.000000, 0.000000, 90.000000, 65003);
  18433. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18434. SetDynamicObjectMaterial(retexture, 1, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18435. retexture = CreateDynamicObject(19173, 2314.031250, -13.981498, 13.639100, 90.000000, 0.000000, 90.000000, 65003);
  18436. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18437. SetDynamicObjectMaterial(retexture, 1, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18438. retexture = CreateDynamicObject(19461, 2313.744140, -10.137398, 16.960859, 0.000000, 0.000000, 0.000000, 65003);
  18439. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18440. retexture = CreateDynamicObject(19174, 2309.594970, -7.550260, 14.277540, 0.000000, 0.000000, 0.000000, 65003);
  18441. SetDynamicObjectMaterial(retexture, 0, 15041, "bigsfsave", "windo_blinds", 0x00000000);
  18442. retexture = CreateDynamicObject(19174, 2306.932373, -9.973990, 14.277500, 0.000000, 0.000000, 90.000000, 65003);
  18443. SetDynamicObjectMaterial(retexture, 0, 15041, "bigsfsave", "windo_blinds", 0x00000000);
  18444. retexture = CreateDynamicObject(1502, 2313.752929, -17.306100, 12.336000, 0.000000, 0.000000, 90.000000, 65003);
  18445. SetDynamicObjectMaterial(retexture, 1, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18446. retexture = CreateDynamicObject(19461, 2321.995605, -19.693540, 14.093700, 0.000000, 0.000000, 0.000000, 65003);
  18447. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18448. retexture = CreateDynamicObject(19175, 2310.539062, -18.132589, 14.225938, 0.000000, 0.000000, 180.000000, 65003);
  18449. SetDynamicObjectMaterial(retexture, 1, 19297, "matlights", "invisible", 0x00000000);
  18450. SetDynamicObjectMaterialText(retexture, 0, "Bank of Blueberry", 40, "Ariel", 15, 1, 0xFF000000, 0x00000000, 1);
  18451. retexture = CreateDynamicObject(19175, 2310.539062, -18.132589, 13.875939, 0.000000, 0.000000, 180.000000, 65003);
  18452. SetDynamicObjectMaterial(retexture, 1, 19297, "matlights", "invisible", 0x00000000);
  18453. SetDynamicObjectMaterialText(retexture, 0, "Serving Los Santos since 1996", 80, "Ariel", 15, 1, 0xFF000000, 0x00000000, 1);
  18454. retexture = CreateDynamicObject(19175, 2310.539062, -18.132589, 14.885942, 0.000000, 0.000000, 180.000000, 65003);
  18455. SetDynamicObjectMaterial(retexture, 1, 19297, "matlights", "invisible", 0x00000000);
  18456. SetDynamicObjectMaterialText(retexture, 0, "____________", 40, "Ariel", 15, 1, 0xFF000000, 0x00000000, 1);
  18457. retexture = CreateDynamicObject(19893, 2307.321777, -15.362000, 13.271288, 0.000000, 0.000000, 64.620010, 65003);
  18458. SetDynamicObjectMaterial(retexture, 1, 3925, "weemap", "skyclouds", 0x00000000);
  18459. retexture = CreateDynamicObject(19893, 2314.061767, -14.599988, 13.645588, 0.000000, 0.000000, 115.499977, 65003);
  18460. SetDynamicObjectMaterial(retexture, 1, 3925, "weemap", "skyclouds", 0x00000000);
  18461. retexture = CreateDynamicObject(19893, 2314.102539, -11.831728, 13.645588, 0.000000, 0.000000, 66.599983, 65003);
  18462. SetDynamicObjectMaterial(retexture, 1, 3925, "weemap", "skyclouds", 0x00000000);
  18463. retexture = CreateDynamicObject(19397, 2318.914306, -14.866700, 14.093898, 0.000000, 0.000000, 90.000000, 65003);
  18464. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18465. retexture = CreateDynamicObject(19461, 2321.072021, -21.123249, 14.093700, 0.000000, 0.000000, 0.000000, 65003);
  18466. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18467. retexture = CreateDynamicObject(19461, 2325.801757, -16.393199, 14.093700, 0.000000, 0.000000, 90.000000, 65003);
  18468. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18469. retexture = CreateDynamicObject(19922, 2321.909179, -14.049817, 12.355939, 0.000000, 0.000000, 360.000000, 65003);
  18470. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18471. retexture = CreateDynamicObject(19940, 2322.849609, -11.427220, 14.826800, 0.000015, 0.000000, -0.000091, 65003);
  18472. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18473. retexture = CreateDynamicObject(19940, 2320.109863, -10.161700, 14.826800, 0.000000, 0.000000, 90.000000, 65003);
  18474. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18475. retexture = CreateDynamicObject(19940, 2322.108398, -10.161700, 14.826800, 0.000000, 0.000000, 90.000000, 65003);
  18476. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18477. retexture = CreateDynamicObject(19940, 2320.109863, -10.161700, 14.524800, 0.000000, 0.000000, 90.000000, 65003);
  18478. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18479. retexture = CreateDynamicObject(19940, 2322.108398, -10.161700, 14.524800, 0.000000, 0.000000, 90.000000, 65003);
  18480. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18481. retexture = CreateDynamicObject(19940, 2322.108398, -10.161700, 14.222800, 0.000000, 0.000000, 90.000000, 65003);
  18482. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18483. retexture = CreateDynamicObject(19940, 2322.108398, -10.161700, 13.920800, 0.000000, 0.000000, 90.000000, 65003);
  18484. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18485. retexture = CreateDynamicObject(19940, 2322.108398, -10.161700, 13.618800, 0.000000, 0.000000, 90.000000, 65003);
  18486. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18487. retexture = CreateDynamicObject(19940, 2322.108398, -10.161700, 13.316800, 0.000000, 0.000000, 90.000000, 65003);
  18488. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18489. retexture = CreateDynamicObject(19940, 2320.109863, -10.161700, 14.222800, 0.000000, 0.000000, 90.000000, 65003);
  18490. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18491. retexture = CreateDynamicObject(19940, 2320.109863, -10.161700, 13.920800, 0.000000, 0.000000, 90.000000, 65003);
  18492. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18493. retexture = CreateDynamicObject(19940, 2320.109863, -10.161700, 13.618800, 0.000000, 0.000000, 90.000000, 65003);
  18494. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18495. retexture = CreateDynamicObject(19940, 2320.109863, -10.161700, 13.316800, 0.000000, 0.000000, 90.000000, 65003);
  18496. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18497. retexture = CreateDynamicObject(19940, 2319.126953, -10.159700, 13.843000, 90.000000, 0.000000, 90.000000, 65003);
  18498. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18499. retexture = CreateDynamicObject(19940, 2322.645507, -10.159700, 13.843000, 90.000000, 0.000000, 90.000000, 65003);
  18500. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18501. retexture = CreateDynamicObject(19461, 2318.071289, -10.137398, 14.093700, 0.000000, 0.000000, 0.000000, 65003);
  18502. SetDynamicObjectMaterial(retexture, 0, 3820, "boxhses_sfsx", "ws_mixedbrick", 0x00000000);
  18503. retexture = CreateDynamicObject(19397, 2318.916259, -14.862700, 14.091898, 0.000000, 0.000000, 90.000000, 65003);
  18504. SetDynamicObjectMaterial(retexture, 0, 3820, "boxhses_sfsx", "ws_mixedbrick", 0x00000000);
  18505. retexture = CreateDynamicObject(19461, 2322.203857, -10.291700, 11.558710, 0.000000, 0.000000, 90.000000, 65003);
  18506. SetDynamicObjectMaterial(retexture, 0, 3820, "boxhses_sfsx", "ws_mixedbrick", 0x00000000);
  18507. retexture = CreateDynamicObject(19940, 2319.641113, -10.159700, 13.843000, 90.000000, 0.000000, 90.000000, 65003);
  18508. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18509. retexture = CreateDynamicObject(19940, 2320.155029, -10.159700, 13.843000, 90.000000, 0.000000, 90.000000, 65003);
  18510. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18511. retexture = CreateDynamicObject(19940, 2320.669189, -10.159700, 13.843000, 90.000000, 0.000000, 90.000000, 65003);
  18512. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18513. retexture = CreateDynamicObject(19940, 2321.183105, -10.159700, 13.843000, 90.000000, 0.000000, 90.000000, 65003);
  18514. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18515. retexture = CreateDynamicObject(19940, 2321.697021, -10.159700, 13.843000, 90.000000, 0.000000, 90.000000, 65003);
  18516. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18517. retexture = CreateDynamicObject(19940, 2322.211181, -10.159700, 13.843000, 90.000000, 0.000000, 90.000000, 65003);
  18518. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18519. retexture = CreateDynamicObject(19448, 2323.946044, -10.289698, 13.087598, 0.000000, 0.000000, 90.000000, 65003);
  18520. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFEEEEEE);
  18521. retexture = CreateDynamicObject(19940, 2322.849609, -13.425755, 14.826800, 0.000015, 0.000000, -0.000091, 65003);
  18522. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18523. retexture = CreateDynamicObject(19940, 2322.849609, -11.427220, 14.524800, 0.000015, 0.000000, -0.000091, 65003);
  18524. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18525. retexture = CreateDynamicObject(19940, 2322.849609, -13.425755, 14.524800, 0.000015, 0.000000, -0.000091, 65003);
  18526. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18527. retexture = CreateDynamicObject(1210, 2319.374267, -10.209368, 13.526000, 90.000000, 0.000000, 0.000000, 65003);
  18528. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18529. retexture = CreateDynamicObject(1210, 2319.901367, -10.209400, 13.526000, 90.000000, 0.000000, 0.000000, 65003);
  18530. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18531. retexture = CreateDynamicObject(1210, 2320.402343, -10.209400, 13.526000, 90.000000, 0.000000, 0.000000, 65003);
  18532. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18533. retexture = CreateDynamicObject(1210, 2320.922363, -10.209400, 13.526000, 90.000000, 0.000000, 0.000000, 65003);
  18534. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18535. retexture = CreateDynamicObject(1210, 2321.441406, -10.209400, 13.526000, 90.000000, 0.000000, 0.000000, 65003);
  18536. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18537. retexture = CreateDynamicObject(1210, 2322.418945, -10.209400, 13.526000, 90.000000, 0.000000, 0.000000, 65003);
  18538. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18539. retexture = CreateDynamicObject(1210, 2322.418945, -10.209400, 13.826998, 90.000000, 0.000000, 0.000000, 65003);
  18540. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18541. retexture = CreateDynamicObject(1210, 2322.418945, -10.209400, 14.128000, 90.000000, 0.000000, 0.000000, 65003);
  18542. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18543. retexture = CreateDynamicObject(1210, 2322.418945, -10.209400, 14.428998, 90.000000, 0.000000, 0.000000, 65003);
  18544. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18545. retexture = CreateDynamicObject(1210, 2322.418945, -10.209400, 14.729998, 90.000000, 0.000000, 0.000000, 65003);
  18546. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18547. retexture = CreateDynamicObject(1210, 2321.959960, -10.209400, 13.826998, 90.000000, 0.000000, 0.000000, 65003);
  18548. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18549. retexture = CreateDynamicObject(1210, 2321.959960, -10.209400, 14.128000, 90.000000, 0.000000, 0.000000, 65003);
  18550. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18551. retexture = CreateDynamicObject(1210, 2321.959960, -10.209400, 14.428998, 90.000000, 0.000000, 0.000000, 65003);
  18552. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18553. retexture = CreateDynamicObject(1210, 2321.959960, -10.209400, 14.729998, 90.000000, 0.000000, 0.000000, 65003);
  18554. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18555. retexture = CreateDynamicObject(1210, 2321.959960, -10.209400, 13.526000, 90.000000, 0.000000, 0.000000, 65003);
  18556. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18557. retexture = CreateDynamicObject(1210, 2319.374267, -10.209400, 13.826998, 90.000000, 0.000000, 0.000000, 65003);
  18558. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18559. retexture = CreateDynamicObject(1210, 2319.374267, -10.209400, 14.128000, 90.000000, 0.000000, 0.000000, 65003);
  18560. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18561. retexture = CreateDynamicObject(1210, 2319.374267, -10.209400, 14.428998, 90.000000, 0.000000, 0.000000, 65003);
  18562. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18563. retexture = CreateDynamicObject(1210, 2319.374267, -10.209400, 14.729998, 90.000000, 0.000000, 0.000000, 65003);
  18564. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18565. retexture = CreateDynamicObject(1210, 2319.901367, -10.209400, 13.826998, 90.000000, 0.000000, 0.000000, 65003);
  18566. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18567. retexture = CreateDynamicObject(1210, 2320.402343, -10.209400, 13.826998, 90.000000, 0.000000, 0.000000, 65003);
  18568. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18569. retexture = CreateDynamicObject(1210, 2320.922363, -10.209400, 13.826998, 90.000000, 0.000000, 0.000000, 65003);
  18570. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18571. retexture = CreateDynamicObject(1210, 2321.441406, -10.209400, 13.826998, 90.000000, 0.000000, 0.000000, 65003);
  18572. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18573. retexture = CreateDynamicObject(1210, 2321.441406, -10.209400, 14.128000, 90.000000, 0.000000, 0.000000, 65003);
  18574. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18575. retexture = CreateDynamicObject(1210, 2321.441406, -10.209400, 14.428998, 90.000000, 0.000000, 0.000000, 65003);
  18576. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18577. retexture = CreateDynamicObject(1210, 2321.441406, -10.209400, 14.729998, 90.000000, 0.000000, 0.000000, 65003);
  18578. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18579. retexture = CreateDynamicObject(1210, 2320.922363, -10.209400, 14.128000, 90.000000, 0.000000, 0.000000, 65003);
  18580. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18581. retexture = CreateDynamicObject(1210, 2320.922363, -10.209400, 14.428998, 90.000000, 0.000000, 0.000000, 65003);
  18582. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18583. retexture = CreateDynamicObject(1210, 2320.922363, -10.209400, 14.729998, 90.000000, 0.000000, 0.000000, 65003);
  18584. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18585. retexture = CreateDynamicObject(1210, 2320.402343, -10.209400, 14.128000, 90.000000, 0.000000, 0.000000, 65003);
  18586. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18587. retexture = CreateDynamicObject(1210, 2320.402343, -10.209400, 14.428998, 90.000000, 0.000000, 0.000000, 65003);
  18588. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18589. retexture = CreateDynamicObject(1210, 2320.402343, -10.209400, 14.729998, 90.000000, 0.000000, 0.000000, 65003);
  18590. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18591. retexture = CreateDynamicObject(1210, 2319.901367, -10.209400, 14.128000, 90.000000, 0.000000, 0.000000, 65003);
  18592. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18593. retexture = CreateDynamicObject(1210, 2319.901367, -10.209400, 14.428998, 90.000000, 0.000000, 0.000000, 65003);
  18594. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18595. retexture = CreateDynamicObject(1210, 2319.901367, -10.209400, 14.729998, 90.000000, 0.000000, 0.000000, 65003);
  18596. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18597. retexture = CreateDynamicObject(19940, 2322.849609, -13.425755, 14.222800, 0.000015, 0.000000, -0.000091, 65003);
  18598. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18599. retexture = CreateDynamicObject(19940, 2322.849609, -13.425755, 13.920800, 0.000015, 0.000000, -0.000091, 65003);
  18600. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18601. retexture = CreateDynamicObject(19940, 2322.849609, -13.425755, 13.618800, 0.000015, 0.000000, -0.000091, 65003);
  18602. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18603. retexture = CreateDynamicObject(18981, 2311.482910, -12.007800, 16.271999, 0.000000, 90.000000, 0.000000, 65003);
  18604. SetDynamicObjectMaterial(retexture, 0, 8396, "sphinx01", "luxorceiling01_128", 0x00000000);
  18605. retexture = CreateDynamicObject(19379, 2322.732666, -10.037758, 12.312000, 0.000000, 90.000000, 0.000000, 65003);
  18606. SetDynamicObjectMaterial(retexture, 0, 16640, "a51", "ws_stationfloor", 0x00000000);
  18607. retexture = CreateDynamicObject(19175, 2310.539062, -18.132589, 13.865940, 0.000000, 0.000000, 180.000000, 65003);
  18608. SetDynamicObjectMaterial(retexture, 1, 19297, "matlights", "invisible", 0x00000000);
  18609. SetDynamicObjectMaterialText(retexture, 0, "____________", 40, "Ariel", 15, 1, 0xFF000000, 0x00000000, 1);
  18610. retexture = CreateDynamicObject(19461, 2325.335693, -14.866700, 14.093700, 0.000000, 0.000000, 90.000000, 65003);
  18611. SetDynamicObjectMaterial(retexture, 0, 3820, "boxhses_sfsx", "ws_mixedbrick", 0x00000000);
  18612. retexture = CreateDynamicObject(19461, 2325.335693, -14.876697, 14.093700, 0.000000, 0.000000, 90.000000, 65003);
  18613. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0x00000000);
  18614. retexture = CreateDynamicObject(19379, 2322.732666, -10.037758, 15.851999, 0.000000, 90.000000, 0.000000, 65003);
  18615. SetDynamicObjectMaterial(retexture, 0, 16640, "a51", "ws_stationfloor", 0x00000000);
  18616. retexture = CreateDynamicObject(19940, 2322.849609, -13.425755, 13.316800, 0.000015, 0.000000, -0.000091, 65003);
  18617. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18618. retexture = CreateDynamicObject(19940, 2322.849609, -11.427220, 14.222800, 0.000015, 0.000000, -0.000091, 65003);
  18619. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18620. retexture = CreateDynamicObject(19940, 2322.849609, -11.427220, 13.920800, 0.000015, 0.000000, -0.000091, 65003);
  18621. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18622. retexture = CreateDynamicObject(19940, 2322.849609, -11.427220, 13.618800, 0.000015, 0.000000, -0.000091, 65003);
  18623. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18624. retexture = CreateDynamicObject(19940, 2322.849609, -11.427220, 13.316800, 0.000015, 0.000000, -0.000091, 65003);
  18625. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18626. retexture = CreateDynamicObject(19940, 2322.851562, -10.444310, 13.843000, 89.999992, 135.000000, -135.000045, 65003);
  18627. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18628. retexture = CreateDynamicObject(19940, 2322.851562, -13.962864, 13.843000, 89.999992, 135.000000, -135.000045, 65003);
  18629. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18630. retexture = CreateDynamicObject(19940, 2322.851562, -10.958470, 13.843000, 89.999992, 135.000000, -135.000045, 65003);
  18631. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18632. retexture = CreateDynamicObject(19940, 2322.851562, -11.472386, 13.843000, 89.999992, 135.000000, -135.000045, 65003);
  18633. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18634. retexture = CreateDynamicObject(19940, 2322.851562, -11.986546, 13.843000, 89.999992, 135.000000, -135.000045, 65003);
  18635. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18636. retexture = CreateDynamicObject(19940, 2322.851562, -12.500462, 13.843000, 89.999992, 135.000000, -135.000045, 65003);
  18637. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18638. retexture = CreateDynamicObject(19940, 2322.851562, -13.014378, 13.843000, 89.999992, 135.000000, -135.000045, 65003);
  18639. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18640. retexture = CreateDynamicObject(19940, 2322.851562, -13.528538, 13.843000, 89.999992, 135.000000, -135.000045, 65003);
  18641. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFF333333);
  18642. retexture = CreateDynamicObject(19448, 2322.721679, -15.263401, 13.087598, 0.000015, 0.000000, -0.000091, 65003);
  18643. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFEEEEEE);
  18644. retexture = CreateDynamicObject(19461, 2322.704345, -10.291700, 11.558710, 0.000000, 0.000000, 180.000000, 65003);
  18645. SetDynamicObjectMaterial(retexture, 0, 3820, "boxhses_sfsx", "ws_mixedbrick", 0x00000000);
  18646. retexture = CreateDynamicObject(19461, 2322.705322, -18.780698, 13.108711, 0.000000, 0.000000, 180.000000, 65003);
  18647. SetDynamicObjectMaterial(retexture, 0, 3820, "boxhses_sfsx", "ws_mixedbrick", 0x00000000);
  18648. retexture = CreateDynamicObject(1210, 2322.796386, -10.691932, 13.526000, 89.999992, 6.774093, -96.773956, 65003);
  18649. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18650. retexture = CreateDynamicObject(1210, 2322.796386, -11.219032, 13.526000, 89.999992, 6.774093, -96.773956, 65003);
  18651. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18652. retexture = CreateDynamicObject(1210, 2322.796386, -11.720008, 13.526000, 89.999992, 6.774093, -96.773956, 65003);
  18653. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18654. retexture = CreateDynamicObject(1210, 2322.796386, -12.240028, 13.526000, 89.999992, 6.774093, -96.773956, 65003);
  18655. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18656. retexture = CreateDynamicObject(1210, 2322.796386, -12.759071, 13.526000, 89.999992, 6.774093, -96.773956, 65003);
  18657. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18658. retexture = CreateDynamicObject(1210, 2322.796386, -13.736610, 13.526000, 89.999992, 6.774093, -96.773956, 65003);
  18659. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18660. retexture = CreateDynamicObject(1210, 2322.796386, -13.736610, 13.826998, 89.999992, 6.774093, -96.773956, 65003);
  18661. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18662. retexture = CreateDynamicObject(1210, 2322.796386, -13.736610, 14.128000, 89.999992, 6.774093, -96.773956, 65003);
  18663. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18664. retexture = CreateDynamicObject(1210, 2322.796386, -13.736610, 14.428998, 89.999992, 6.774093, -96.773956, 65003);
  18665. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18666. retexture = CreateDynamicObject(1210, 2322.796386, -13.736610, 14.729998, 89.999992, 6.774093, -96.773956, 65003);
  18667. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18668. retexture = CreateDynamicObject(1210, 2322.796386, -13.277626, 13.826998, 89.999992, 6.774093, -96.773956, 65003);
  18669. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18670. retexture = CreateDynamicObject(1210, 2322.796386, -13.277626, 14.128000, 89.999992, 6.774093, -96.773956, 65003);
  18671. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18672. retexture = CreateDynamicObject(1210, 2322.796386, -13.277626, 14.428998, 89.999992, 6.774093, -96.773956, 65003);
  18673. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18674. retexture = CreateDynamicObject(1210, 2322.796386, -13.277626, 14.729998, 89.999992, 6.774093, -96.773956, 65003);
  18675. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18676. retexture = CreateDynamicObject(1210, 2322.796386, -13.277626, 13.526000, 89.999992, 6.774093, -96.773956, 65003);
  18677. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18678. retexture = CreateDynamicObject(1210, 2322.796386, -10.691932, 13.826998, 89.999992, 6.774093, -96.773956, 65003);
  18679. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18680. retexture = CreateDynamicObject(1210, 2322.796386, -10.691932, 14.128000, 89.999992, 6.774093, -96.773956, 65003);
  18681. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18682. retexture = CreateDynamicObject(1210, 2322.796386, -10.691932, 14.428998, 89.999992, 6.774093, -96.773956, 65003);
  18683. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18684. retexture = CreateDynamicObject(1210, 2322.796386, -10.691932, 14.729998, 89.999992, 6.774093, -96.773956, 65003);
  18685. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18686. retexture = CreateDynamicObject(1210, 2322.796386, -11.219032, 13.826998, 89.999992, 6.774093, -96.773956, 65003);
  18687. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18688. retexture = CreateDynamicObject(1210, 2322.796386, -11.720008, 13.826998, 89.999992, 6.774093, -96.773956, 65003);
  18689. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18690. retexture = CreateDynamicObject(1210, 2322.796386, -12.240028, 13.826998, 89.999992, 6.774093, -96.773956, 65003);
  18691. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18692. retexture = CreateDynamicObject(1210, 2322.796386, -12.759071, 13.826998, 89.999992, 6.774093, -96.773956, 65003);
  18693. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18694. retexture = CreateDynamicObject(1210, 2322.796386, -12.759071, 14.128000, 89.999992, 6.774093, -96.773956, 65003);
  18695. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18696. retexture = CreateDynamicObject(1210, 2322.796386, -12.759071, 14.428998, 89.999992, 6.774093, -96.773956, 65003);
  18697. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18698. retexture = CreateDynamicObject(1210, 2322.796386, -12.759071, 14.729998, 89.999992, 6.774093, -96.773956, 65003);
  18699. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18700. retexture = CreateDynamicObject(1210, 2322.796386, -12.240028, 14.128000, 89.999992, 6.774093, -96.773956, 65003);
  18701. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18702. retexture = CreateDynamicObject(1210, 2322.796386, -12.240028, 14.428998, 89.999992, 6.774093, -96.773956, 65003);
  18703. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18704. retexture = CreateDynamicObject(1210, 2322.796386, -12.240028, 14.729998, 89.999992, 6.774093, -96.773956, 65003);
  18705. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18706. retexture = CreateDynamicObject(1210, 2322.796386, -11.720008, 14.128000, 89.999992, 6.774093, -96.773956, 65003);
  18707. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18708. retexture = CreateDynamicObject(1210, 2322.796386, -11.720008, 14.428998, 89.999992, 6.774093, -96.773956, 65003);
  18709. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18710. retexture = CreateDynamicObject(1210, 2322.796386, -11.720008, 14.729998, 89.999992, 6.774093, -96.773956, 65003);
  18711. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18712. retexture = CreateDynamicObject(1210, 2322.796386, -11.219032, 14.128000, 89.999992, 6.774093, -96.773956, 65003);
  18713. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18714. retexture = CreateDynamicObject(1210, 2322.796386, -11.219032, 14.428998, 89.999992, 6.774093, -96.773956, 65003);
  18715. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18716. retexture = CreateDynamicObject(1210, 2322.796386, -11.219032, 14.729998, 89.999992, 6.774093, -96.773956, 65003);
  18717. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18718. retexture = CreateDynamicObject(19922, 2323.969726, -14.049817, 12.354939, 0.000000, 0.000000, 360.000000, 65003);
  18719. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18720. CreateDynamicObject(13606, 2310.724365, -19.926231, 11.935937, 0.000000, 0.000000, 0.000000, 65003);
  18721. CreateDynamicObject(19379, 2317.870605, -2.693160, 12.310000, 0.000000, 90.000000, 0.000000, 65003);
  18722. CreateDynamicObject(19379, 2317.870605, -12.324298, 12.310000, 0.000000, 90.000000, 0.000000, 65003);
  18723. CreateDynamicObject(19379, 2317.870605, -21.957300, 12.310000, 0.000000, 90.000000, 0.000000, 65003);
  18724. CreateDynamicObject(19379, 2307.370361, -21.957300, 12.310000, 0.000000, 90.000000, 0.000000, 65003);
  18725. CreateDynamicObject(19379, 2307.370361, -12.324298, 12.310000, 0.000000, 90.000000, 0.000000, 65003);
  18726. CreateDynamicObject(1569, 2304.051025, -17.241100, 12.385298, 0.000000, 0.000000, 90.000000, 65003);
  18727. CreateDynamicObject(1569, 2304.047119, -14.240598, 12.385298, 0.000000, 0.000000, -90.000000, 65003);
  18728. CreateDynamicObject(1726, 2307.623535, -11.034440, 12.395198, 0.000000, 0.000000, 90.000000, 65003);
  18729. CreateDynamicObject(1726, 2308.566894, -8.201950, 12.395198, 0.000000, 0.000000, 0.000000, 65003);
  18730. CreateDynamicObject(1727, 2308.963134, -12.525600, 12.396730, 0.000000, 0.000000, 150.719955, 65003);
  18731. CreateDynamicObject(970, 2307.293212, -18.360799, 11.179100, 0.000000, 90.000000, 90.000000, 65003);
  18732. CreateDynamicObject(970, 2307.293212, -16.061700, 11.179120, 0.000000, 90.000000, -90.000000, 65003);
  18733. CreateDynamicObject(2010, 2307.401855, -13.061030, 12.396068, 0.000000, 0.000000, -25.739999, 65003);
  18734. CreateDynamicObject(2069, 2307.278320, -7.887370, 12.447038, 0.000000, 0.000000, 0.000000, 65003);
  18735. CreateDynamicObject(2069, 2313.256591, -7.887400, 12.446998, 0.000000, 0.000000, 0.000000, 65003);
  18736. CreateDynamicObject(2069, 2320.595458, -17.775049, 12.446998, 0.000000, 0.000000, 0.000000, 65003);
  18737. CreateDynamicObject(2315, 2313.155029, -10.554498, 12.396800, 0.000000, 0.000000, 90.000000, 65003);
  18738. CreateDynamicObject(2257, 2313.626708, -9.788000, 14.419300, 0.000000, 0.000000, -90.000000, 65003);
  18739. CreateDynamicObject(3859, 2313.679931, -12.683818, 16.811540, 0.000000, 0.000000, 17.239999, 65003);
  18740. CreateDynamicObject(2855, 2312.943847, -10.647218, 12.453289, 0.000000, 0.000000, -103.860000, 65003);
  18741. CreateDynamicObject(2854, 2313.014404, -9.262160, 12.891150, 0.000000, 0.000000, -37.619998, 65003);
  18742. CreateDynamicObject(2253, 2313.319824, -10.674360, 13.125280, 0.000000, 0.000000, -44.099990, 65003);
  18743. CreateDynamicObject(11745, 2307.162597, -15.873900, 13.326148, 0.000000, 0.000000, -103.260002, 65003);
  18744. CreateDynamicObject(2253, 2307.050537, -14.793028, 13.521638, 0.000000, 0.000000, -84.839996, 65003);
  18745. CreateDynamicObject(2202, 2319.861572, -17.576759, 12.396400, 0.000000, 0.000000, 180.000000, 65003);
  18746. CreateDynamicObject(2202, 2316.835693, -17.576799, 12.396400, 0.000000, 0.000000, 180.000000, 65003);
  18747. CreateDynamicObject(2007, 2317.843261, -17.663129, 12.366900, 0.000000, 0.000000, 180.000000, 65003);
  18748. CreateDynamicObject(2167, 2317.345947, -12.186658, 12.371560, 0.000000, 0.000000, -90.000000, 65003);
  18749. CreateDynamicObject(2167, 2317.345947, -14.043700, 12.371600, 0.000000, 0.000000, -90.000000, 65003);
  18750. CreateDynamicObject(2069, 2316.930175, -13.091210, 12.446998, 0.000000, 0.000000, 0.000000, 65003);
  18751. CreateDynamicObject(1886, 2316.864013, -11.405098, 15.872598, 10.000000, 0.000000, -76.860000, 65003);
  18752. CreateDynamicObject(1886, 2316.864013, -14.726498, 15.872598, 10.000000, 0.000000, -96.599998, 65003);
  18753. CreateDynamicObject(1886, 2304.690429, -17.776500, 15.955100, 10.000000, 0.000000, 121.379997, 65003);
  18754. CreateDynamicObject(2634, 2320.315917, -15.724633, 13.810798, 0.000000, 0.000000, -59.700019, 65003);
  18755. CreateDynamicObject(11745, 2320.764892, -14.015052, 13.266149, 0.000000, 0.000000, 164.039993, 65003);
  18756. //SMB COMPLEX
  18757. retexture = CreateDynamicObject(19377, 609.362121, -1528.669677, -1.255939, 0.000000, 90.000000, 0.000000, 85001);
  18758. SetDynamicObjectMaterial(retexture, 0, 16640, "a51", "ws_stationfloor", 0x00000000);
  18759. retexture = CreateDynamicObject(19377, 601.231506, -1528.669677, -1.256899, 0.000000, 90.000000, 0.000000, 85001);
  18760. SetDynamicObjectMaterial(retexture, 0, 16640, "a51", "ws_stationfloor", 0x00000000);
  18761. retexture = CreateDynamicObject(19377, 601.231506, -1538.299560, -1.256899, 0.000000, 90.000000, 0.000000, 85001);
  18762. SetDynamicObjectMaterial(retexture, 0, 16640, "a51", "ws_stationfloor", 0x00000000);
  18763. retexture = CreateDynamicObject(19377, 609.362121, -1538.299560, -1.255900, 0.000000, 90.000000, 0.000000, 85001);
  18764. SetDynamicObjectMaterial(retexture, 0, 16640, "a51", "ws_stationfloor", 0x00000000);
  18765. retexture = CreateDynamicObject(19461, 610.543579, -1523.824096, 0.555100, 0.000000, 0.000000, 90.000000, 85001);
  18766. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18767. retexture = CreateDynamicObject(19461, 609.486083, -1535.462524, 0.550000, 0.000000, 0.000000, 90.000000, 85001);
  18768. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18769. retexture = CreateDynamicObject(19461, 596.228210, -1532.013671, 0.550000, 0.000000, 0.000000, 0.000000, 85001);
  18770. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18771. retexture = CreateDynamicObject(19461, 614.316711, -1530.694335, 0.550000, 0.000000, 0.000000, 180.000000, 85001);
  18772. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18773. retexture = CreateDynamicObject(19461, 614.315673, -1521.060546, 0.550000, 0.000000, 0.000000, 180.000000, 85001);
  18774. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18775. retexture = CreateDynamicObject(19461, 599.871887, -1535.464355, 0.550000, 0.000000, 0.000000, 90.000000, 85001);
  18776. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18777. retexture = CreateDynamicObject(19461, 600.909179, -1523.824096, 0.555100, 0.000000, 0.000000, 90.000000, 85001);
  18778. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18779. retexture = CreateDynamicObject(19461, 596.228271, -1522.383422, 0.550000, 0.000000, 0.000000, 0.000000, 85001);
  18780. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18781. retexture = CreateDynamicObject(19461, 614.315673, -1521.060546, 4.048799, 0.000000, 0.000000, 180.000000, 85001);
  18782. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18783. retexture = CreateDynamicObject(19461, 614.316711, -1530.694335, 4.048799, 0.000000, 0.000000, 180.000000, 85001);
  18784. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18785. retexture = CreateDynamicObject(19461, 609.505981, -1535.464355, 4.048799, 0.000000, 0.000000, 90.000000, 85001);
  18786. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18787. retexture = CreateDynamicObject(19461, 599.871887, -1535.464355, 4.048799, 0.000000, 0.000000, 90.000000, 85001);
  18788. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18789. retexture = CreateDynamicObject(19461, 596.282226, -1532.013671, 4.048799, 0.000000, 0.000000, 0.000000, 85001);
  18790. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18791. retexture = CreateDynamicObject(19461, 596.228271, -1522.383422, 4.048799, 0.000000, 0.000000, 0.000000, 85001);
  18792. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18793. retexture = CreateDynamicObject(19461, 600.909179, -1523.824096, 4.048799, 0.000000, 0.000000, 90.000000, 85001);
  18794. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18795. retexture = CreateDynamicObject(19461, 610.543579, -1523.824096, 4.048799, 0.000000, 0.000000, 90.000000, 85001);
  18796. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18797. retexture = CreateDynamicObject(19461, 610.543579, -1523.824096, 4.048799, 0.000000, 0.000000, 90.000000, 85001);
  18798. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18799. retexture = CreateDynamicObject(19461, 610.543579, -1523.824096, 4.048799, 0.000000, 0.000000, 90.000000, 85001);
  18800. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18801. retexture = CreateDynamicObject(2134, 612.073486, -1533.615600, -1.169999, 0.000000, 0.000000, 0.000000, 85001);
  18802. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18803. SetDynamicObjectMaterial(retexture, 1, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18804. SetDynamicObjectMaterial(retexture, 2, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18805. SetDynamicObjectMaterial(retexture, 3, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18806. SetDynamicObjectMaterial(retexture, 4, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18807. SetDynamicObjectMaterial(retexture, 5, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18808. retexture = CreateDynamicObject(2134, 611.073486, -1533.615600, -1.169999, 0.000000, 0.000000, 0.000000, 85001);
  18809. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18810. SetDynamicObjectMaterial(retexture, 1, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18811. SetDynamicObjectMaterial(retexture, 2, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18812. SetDynamicObjectMaterial(retexture, 3, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18813. SetDynamicObjectMaterial(retexture, 4, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18814. SetDynamicObjectMaterial(retexture, 5, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18815. retexture = CreateDynamicObject(2134, 610.093566, -1533.615600, -1.169999, 0.000000, 0.000000, 0.000000, 85001);
  18816. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18817. SetDynamicObjectMaterial(retexture, 1, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18818. SetDynamicObjectMaterial(retexture, 2, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18819. SetDynamicObjectMaterial(retexture, 3, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18820. SetDynamicObjectMaterial(retexture, 4, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18821. SetDynamicObjectMaterial(retexture, 5, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18822. retexture = CreateDynamicObject(2134, 610.103454, -1533.155273, -1.171000, 0.000000, 0.000000, 180.000000, 85001);
  18823. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18824. SetDynamicObjectMaterial(retexture, 1, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18825. SetDynamicObjectMaterial(retexture, 2, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18826. SetDynamicObjectMaterial(retexture, 3, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18827. SetDynamicObjectMaterial(retexture, 4, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18828. SetDynamicObjectMaterial(retexture, 5, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18829. retexture = CreateDynamicObject(2134, 611.083740, -1533.155273, -1.171000, 0.000000, 0.000000, 180.000000, 85001);
  18830. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18831. SetDynamicObjectMaterial(retexture, 1, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18832. SetDynamicObjectMaterial(retexture, 2, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18833. SetDynamicObjectMaterial(retexture, 3, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18834. SetDynamicObjectMaterial(retexture, 4, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18835. SetDynamicObjectMaterial(retexture, 5, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18836. retexture = CreateDynamicObject(2134, 612.083557, -1533.155273, -1.171000, 0.000000, 0.000000, 180.000000, 85001);
  18837. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18838. SetDynamicObjectMaterial(retexture, 1, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18839. SetDynamicObjectMaterial(retexture, 2, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18840. SetDynamicObjectMaterial(retexture, 3, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18841. SetDynamicObjectMaterial(retexture, 4, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18842. SetDynamicObjectMaterial(retexture, 5, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18843. retexture = CreateDynamicObject(19427, 610.399047, -1532.932739, -2.039999, 0.000000, 0.000000, 90.000000, 85001);
  18844. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18845. retexture = CreateDynamicObject(19427, 611.779296, -1532.931762, -2.039999, 0.000000, 0.000000, 90.000000, 85001);
  18846. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18847. retexture = CreateDynamicObject(19427, 611.779296, -1533.842529, -2.039999, 0.000000, 0.000000, 90.000000, 85001);
  18848. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18849. retexture = CreateDynamicObject(19427, 610.399169, -1533.843505, -2.039999, 0.000000, 0.000000, 90.000000, 85001);
  18850. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18851. retexture = CreateDynamicObject(19427, 610.399169, -1533.843505, -2.039999, 0.000000, 0.000000, 90.000000, 85001);
  18852. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18853. retexture = CreateDynamicObject(19427, 610.399169, -1533.843505, -2.039999, 0.000000, 0.000000, 90.000000, 85001);
  18854. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18855. retexture = CreateDynamicObject(19427, 610.399169, -1533.843505, -2.039999, 0.000000, 0.000000, 90.000000, 85001);
  18856. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18857. retexture = CreateDynamicObject(19427, 610.399169, -1533.843505, -2.039999, 0.000000, 0.000000, 90.000000, 85001);
  18858. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18859. SetDynamicObjectMaterial(retexture, 1, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18860. SetDynamicObjectMaterial(retexture, 2, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18861. SetDynamicObjectMaterial(retexture, 3, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18862. retexture = CreateDynamicObject(19579, 609.942932, -1533.407348, -0.259959, 0.000000, 0.000000, 22.399999, 85001);
  18863. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "white", 0x00000000);
  18864. retexture = CreateDynamicObject(19610, 609.942321, -1533.419921, -0.016279, -81.899978, 0.000000, 0.000000, 85001);
  18865. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "white", 0x00000000);
  18866. retexture = CreateDynamicObject(2269, 610.181213, -1533.877441, 0.115290, -13.500000, 0.000000, 30.299999, 85001);
  18867. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18868. SetDynamicObjectMaterial(retexture, 1, 10765, "airportgnd_sfse", "white", 0x00000000);
  18869. retexture = CreateDynamicObject(2269, 609.739074, -1533.077392, -0.103929, 13.600000, 0.000000, 210.300003, 85001);
  18870. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "white", 0x00000000);
  18871. SetDynamicObjectMaterial(retexture, 1, 10765, "airportgnd_sfse", "white", 0x00000000);
  18872. retexture = CreateDynamicObject(2269, 610.186096, -1533.885742, 0.117619, -13.500000, 0.000000, 30.299999, 85001);
  18873. SetDynamicObjectMaterial(retexture, 1, 19297, "matlights", "invisible", 0x00000000);
  18874. SetDynamicObjectMaterialText(retexture, 0, "Santa Maria Apartments", 90, "Ariel", 20, 1, 0xFFFF0000, 0x00000000, 1);
  18875. retexture = CreateDynamicObject(1761, 613.730224, -1528.623779, -1.169999, 0.000000, 0.000000, 270.000000, 85001);
  18876. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18877. SetDynamicObjectMaterial(retexture, 1, 10765, "airportgnd_sfse", "white", 0x00000000);
  18878. retexture = CreateDynamicObject(19461, 614.285644, -1530.694335, -2.799999, 0.000000, 0.000000, 180.000000, 85001);
  18879. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0xFFF5F5DC);
  18880. retexture = CreateDynamicObject(19461, 604.305725, -1533.014038, 0.550000, 0.000000, 0.000000, 180.000000, 85001);
  18881. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18882. retexture = CreateDynamicObject(19461, 614.285644, -1519.754516, -2.799999, 0.000000, 0.000000, 180.000000, 85001);
  18883. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0xFFF5F5DC);
  18884. retexture = CreateDynamicObject(19461, 614.285644, -1523.855468, -2.799999, 0.000000, 0.000000, 270.000000, 85001);
  18885. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0xFFF5F5DC);
  18886. retexture = CreateDynamicObject(19461, 612.715576, -1535.436157, -2.799999, 0.000000, 0.000000, 270.000000, 85001);
  18887. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0xFFF5F5DC);
  18888. retexture = CreateDynamicObject(19461, 603.124633, -1535.436157, -2.799999, 0.000000, 0.000000, 270.000000, 85001);
  18889. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0xFFF5F5DC);
  18890. retexture = CreateDynamicObject(19461, 593.487487, -1535.436157, -2.799999, 0.000000, 0.000000, 270.000000, 85001);
  18891. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0xFFF5F5DC);
  18892. retexture = CreateDynamicObject(19461, 604.649719, -1523.856201, -2.799999, 0.000000, 0.000000, 270.000000, 85001);
  18893. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0xFFF5F5DC);
  18894. retexture = CreateDynamicObject(19461, 595.016174, -1523.856201, -2.799999, 0.000000, 0.000000, 270.000000, 85001);
  18895. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0xFFF5F5DC);
  18896. retexture = CreateDynamicObject(19461, 596.265808, -1523.856201, -2.801000, 0.000000, 0.000000, 360.000000, 85001);
  18897. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0xFFF5F5DC);
  18898. retexture = CreateDynamicObject(19461, 596.265808, -1533.475952, -2.801000, 0.000000, 0.000000, 360.000000, 85001);
  18899. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0xFFF5F5DC);
  18900. retexture = CreateDynamicObject(19461, 604.292480, -1533.003051, -2.789000, 0.000000, 0.000000, 180.000000, 85001);
  18901. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0xFFF5F5DC);
  18902. retexture = CreateDynamicObject(19355, 596.285217, -1526.604370, -0.021999, 0.000000, 0.000000, 0.000000, 85001);
  18903. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18904. retexture = CreateDynamicObject(19355, 596.284179, -1525.694091, -0.020999, 0.000000, 0.000000, 0.000000, 85001);
  18905. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18906. retexture = CreateDynamicObject(18756, 598.159729, -1526.093994, 0.718999, 0.000000, 0.000000, 0.000000, 85001);
  18907. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18908. retexture = CreateDynamicObject(18756, 594.353515, -1526.170043, 0.718999, 0.000000, 0.000000, 180.000000, 85001);
  18909. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18910. retexture = CreateDynamicObject(19461, 597.741577, -1533.198242, 0.550000, 0.000000, 0.000000, 90.000000, 85001);
  18911. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18912. retexture = CreateDynamicObject(19461, 607.805725, -1533.014038, 0.550000, 0.000000, 0.000000, 180.000000, 85001);
  18913. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18914. retexture = CreateDynamicObject(19461, 607.815673, -1533.004028, -2.789999, 0.000000, 0.000000, 180.000000, 85001);
  18915. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0xFFF5F5DC);
  18916. retexture = CreateDynamicObject(19355, 596.284179, -1530.439086, -0.020999, 0.000000, 0.000000, 0.000000, 85001);
  18917. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18918. retexture = CreateDynamicObject(19355, 596.285217, -1531.349365, -0.021999, 0.000000, 0.000000, 0.000000, 85001);
  18919. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18920. retexture = CreateDynamicObject(18756, 594.353515, -1530.915039, 0.718999, 0.000000, 0.000000, 180.000000, 85001);
  18921. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18922. retexture = CreateDynamicObject(18756, 598.159729, -1530.838989, 0.718999, 0.000000, 0.000000, 0.000000, 85001);
  18923. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18924. retexture = CreateDynamicObject(19461, 597.755615, -1533.178222, -2.801000, 0.000000, 0.000000, 90.000000, 85001);
  18925. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0xFFF5F5DC);
  18926. retexture = CreateDynamicObject(19461, 597.753601, -1533.214233, -2.802999, 0.000000, 0.000000, 90.000000, 85001);
  18927. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0xFFF5F5DC);
  18928. retexture = CreateDynamicObject(19369, 605.826599, -1528.284301, 0.550000, 0.000000, 0.000000, 90.000000, 85001);
  18929. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18930. retexture = CreateDynamicObject(19369, 606.287170, -1528.282348, 0.550000, 0.000000, 0.000000, 90.000000, 85001);
  18931. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18932. retexture = CreateDynamicObject(19369, 605.810607, -1528.274291, -2.790999, 0.000000, 0.000000, 90.000000, 85001);
  18933. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0xFFF5F5DC);
  18934. retexture = CreateDynamicObject(19369, 606.297180, -1528.272338, -2.786999, 0.000000, 0.000000, 90.000000, 85001);
  18935. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0xFFF5F5DC);
  18936. retexture = CreateDynamicObject(19579, 596.358276, -1528.733764, 0.133460, 0.000000, -90.000000, 0.000000, 85001);
  18937. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "white", 0x00000000);
  18938. retexture = CreateDynamicObject(19579, 596.358276, -1528.315795, 0.133499, 0.000000, -90.000000, 0.000000, 85001);
  18939. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "white", 0x00000000);
  18940. retexture = CreateDynamicObject(19579, 596.264282, -1526.166137, 1.773499, 0.000000, 0.000000, 90.000000, 85001);
  18941. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "white", 0x00000000);
  18942. retexture = CreateDynamicObject(19579, 596.264282, -1530.897460, 1.773499, 0.000000, 0.000000, 90.000000, 85001);
  18943. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "white", 0x00000000);
  18944. retexture = CreateDynamicObject(1761, 608.397277, -1530.636474, -1.169999, 0.000000, 0.000000, -270.000000, 85001);
  18945. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "black64", 0x00000000);
  18946. SetDynamicObjectMaterial(retexture, 1, 10765, "airportgnd_sfse", "white", 0x00000000);
  18947. retexture = CreateDynamicObject(19377, 601.254394, -1528.469604, 2.199399, 0.000000, 90.000000, 0.000000, 85001);
  18948. SetDynamicObjectMaterial(retexture, 0, 16640, "a51", "ws_stationfloor", 0x00000000);
  18949. retexture = CreateDynamicObject(19377, 611.755004, -1528.469604, 2.199399, 0.000000, 90.000000, 0.000000, 85001);
  18950. SetDynamicObjectMaterial(retexture, 0, 16640, "a51", "ws_stationfloor", 0x00000000);
  18951. retexture = CreateDynamicObject(19377, 611.755004, -1538.101318, 2.201400, 0.000000, 90.000000, 0.000000, 85001);
  18952. SetDynamicObjectMaterial(retexture, 0, 16640, "a51", "ws_stationfloor", 0x00000000);
  18953. retexture = CreateDynamicObject(19461, 604.302612, -1533.033813, 4.048799, 0.000000, 0.000000, 180.000000, 85001);
  18954. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18955. retexture = CreateDynamicObject(19461, 602.545776, -1533.198242, 4.048799, 0.000000, 0.000000, 90.000000, 85001);
  18956. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18957. retexture = CreateDynamicObject(19461, 607.805725, -1533.014038, 4.048799, 0.000000, 0.000000, 180.000000, 85001);
  18958. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18959. retexture = CreateDynamicObject(19369, 606.287170, -1528.282348, 4.048799, 0.000000, 0.000000, 90.000000, 85001);
  18960. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18961. retexture = CreateDynamicObject(19369, 603.082092, -1528.284301, 4.048799, 0.000000, 0.000000, 90.000000, 85001);
  18962. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18963. retexture = CreateDynamicObject(19369, 601.565307, -1529.801513, 4.048799, 0.000000, 0.000000, 0.000000, 85001);
  18964. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18965. retexture = CreateDynamicObject(19369, 601.563293, -1531.662963, 4.048799, 0.000000, 0.000000, 0.000000, 85001);
  18966. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18967. retexture = CreateDynamicObject(19355, 596.285217, -1531.349365, 3.977999, 0.000000, 0.000000, 0.000000, 85001);
  18968. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18969. retexture = CreateDynamicObject(19355, 596.284179, -1530.439086, 3.979000, 0.000000, 0.000000, 0.000000, 85001);
  18970. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18971. retexture = CreateDynamicObject(19579, 596.348327, -1530.897460, 5.273499, 0.000000, 0.000000, 90.000000, 85001);
  18972. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "white", 0x00000000);
  18973. retexture = CreateDynamicObject(19579, 596.384277, -1528.733764, 3.633500, 0.000000, -90.000000, 0.000000, 85001);
  18974. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "white", 0x00000000);
  18975. retexture = CreateDynamicObject(19579, 596.384277, -1528.315795, 3.633500, 0.000000, -90.000000, 0.000000, 85001);
  18976. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "white", 0x00000000);
  18977. retexture = CreateDynamicObject(18756, 594.353515, -1530.915039, 4.218999, 0.000000, 0.000000, 180.000000, 85001);
  18978. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18979. retexture = CreateDynamicObject(18756, 598.159729, -1530.838989, 4.218999, 0.000000, 0.000000, 0.000000, 85001);
  18980. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18981. retexture = CreateDynamicObject(19355, 596.285217, -1526.604370, 3.977999, 0.000000, 0.000000, 0.000000, 85001);
  18982. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18983. retexture = CreateDynamicObject(18756, 598.159729, -1526.093994, 4.218999, 0.000000, 0.000000, 0.000000, 85001);
  18984. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18985. retexture = CreateDynamicObject(18756, 594.353515, -1526.170043, 4.218999, 0.000000, 0.000000, 180.000000, 85001);
  18986. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18987. retexture = CreateDynamicObject(19355, 596.284179, -1525.694091, 3.979000, 0.000000, 0.000000, 0.000000, 85001);
  18988. SetDynamicObjectMaterial(retexture, 0, 14652, "ab_trukstpa", "CJ_WOOD6", 0x00000000);
  18989. retexture = CreateDynamicObject(19579, 596.348327, -1526.166137, 5.273499, 0.000000, 0.000000, 90.000000, 85001);
  18990. SetDynamicObjectMaterial(retexture, 0, 10765, "airportgnd_sfse", "white", 0x00000000);
  18991. retexture = CreateDynamicObject(19461, 596.288208, -1528.139648, 6.968800, 0.000000, 0.000000, 0.000000, 85001);
  18992. SetDynamicObjectMaterial(retexture, 0, 8130, "vgsschurch", "vgschapelwall01_64", 0xFFF5F5DC);
  18993. retexture = CreateDynamicObject(19175, 614.235229, -1529.649291, 0.711199, 0.000000, 0.000000, -90.000000, 85001);
  18994. SetDynamicObjectMaterial(retexture, 0, 15041, "bigsfsave", "windo_blinds", 0x00000000);
  18995. retexture = CreateDynamicObject(19174, 611.170593, -1535.375854, 0.688799, 0.000000, 0.000000, 180.000000, 85001);
  18996. SetDynamicObjectMaterialText(retexture, 0, "Santa Maria Beach\nApartment Complex", 40, "Ariel", 15, 1, 0xFF000000, 0x00000000, 1);
  18997. CreateDynamicObject(18981, 604.461608, -1534.509155, -1.702280, 0.000000, 90.000000, 0.000000, 85001);
  18998. CreateDynamicObject(1569, 614.253967, -1527.479858, -1.169999, 0.000000, 0.000000, 90.000000, 85001);
  18999. CreateDynamicObject(1569, 614.243957, -1524.478637, -1.169999, 0.000000, 0.000000, 270.000000, 85001);
  19000. CreateDynamicObject(2000, 608.483703, -1535.360229, 0.039999, 0.000000, 0.000000, 180.000000, 85001);
  19001. CreateDynamicObject(2000, 608.953674, -1535.360229, 0.039999, 0.000000, 0.000000, 180.000000, 85001);
  19002. CreateDynamicObject(2000, 609.423645, -1535.360229, 0.039999, 0.000000, 0.000000, 180.000000, 85001);
  19003. CreateDynamicObject(2000, 613.833618, -1535.360229, 0.039999, 0.000000, 0.000000, 180.000000, 85001);
  19004. CreateDynamicObject(2000, 613.373535, -1535.360229, 0.039999, 0.000000, 0.000000, 180.000000, 85001);
  19005. CreateDynamicObject(2000, 612.903442, -1535.360229, 0.039999, 0.000000, 0.000000, 180.000000, 85001);
  19006. CreateDynamicObject(19808, 610.493896, -1533.598632, -0.109959, 0.000000, 0.000000, 14.500000, 85001);
  19007. CreateDynamicObject(2253, 612.330932, -1533.148925, 0.140000, 0.000000, 0.000000, 0.000000, 85001);
  19008. CreateDynamicObject(2894, 611.673522, -1533.333862, -0.119999, 0.000000, 0.000000, -173.799987, 85001);
  19009. CreateDynamicObject(19792, 611.086486, -1533.293823, -0.109959, 0.000000, 0.000000, -23.299999, 85001);
  19010. CreateDynamicObject(19792, 610.810974, -1533.175292, -0.109959, 0.000000, 0.000000, -112.999992, 85001);
  19011. CreateDynamicObject(19378, 610.079711, -1535.509277, -1.169999, 0.000000, 0.000000, 90.000000, 85001);
  19012. CreateDynamicObject(2270, 613.739013, -1531.452514, 0.310000, 0.000000, 0.000000, 270.000000, 85001);
  19013. CreateDynamicObject(14410, 599.558593, -1535.186767, -0.884299, 0.000000, 0.000000, 90.000000, 85001);
  19014. CreateDynamicObject(19379, 601.254394, -1528.467895, 2.213399, 0.000000, 90.000000, 0.000000, 85001);
  19015. CreateDynamicObject(19379, 611.755004, -1528.467895, 2.213399, 0.000000, 90.000000, 0.000000, 85001);
  19016. CreateDynamicObject(19379, 609.468200, -1538.101318, 2.213399, 0.000000, 90.000000, 0.000000, 85001);
  19017. CreateDynamicObject(1504, 601.829956, -1528.244018, 2.269320, 0.000000, 0.000000, 0.000000, 85001);
  19018. CreateDynamicObject(1504, 607.889770, -1529.920410, 2.269299, 0.000000, 0.000000, 90.000000, 85001);
  19019. CreateDynamicObject(1504, 610.292907, -1535.408569, 2.269299, 0.000000, 0.000000, 0.000000, 85001);
  19020. CreateDynamicObject(1504, 614.260620, -1534.509521, 2.269299, 0.000000, 0.000000, 90.000000, 85001);
  19021. CreateDynamicObject(1504, 612.210815, -1523.908935, 2.269299, 0.000000, 0.000000, 0.000000, 85001);
  19022. CreateDynamicObject(1504, 608.272888, -1523.908935, 2.269299, 0.000000, 0.000000, 0.000000, 85001);
  19023. CreateDynamicObject(1504, 614.260620, -1529.920410, 2.269299, 0.000000, 0.000000, 90.000000, 85001);
  19024. CreateDynamicObject(1504, 607.889770, -1534.509521, 2.269299, 0.000000, 0.000000, 90.000000, 85001);
  19025. CreateDynamicObject(1504, 601.830017, -1523.908935, 2.269299, 0.000000, 0.000000, 0.000000, 85001);
  19026. CreateDynamicObject(18981, 604.461608, -1534.509155, 6.229360, 0.000000, 90.000000, 0.000000, 85001);
  19027. CreateDynamicObject(2270, 608.39471, -1531.40259, 0.31000, 0.00000, 0.00000, 90.00000, 85001);
  19028. CreateDynamicObject(19174, 607.88068, -1529.61597, 0.68880, 0.00000, 0.00000, 90.00000, 85001);
  19029. CreateDynamicObject(2257, 601.13458, -1533.04004, 0.65192, 0.00000, 0.00000, 180.00000, 85001);
  19030. CreateDynamicObject(1726, 600.04333, -1532.53369, 2.29980, 0.00000, 0.00000, 180.00000, 85001);
  19031. CreateDynamicObject(1726, 600.80865, -1529.65161, 2.29980, 0.00000, 0.00000, -90.00000, 85001);
  19032. CreateDynamicObject(2010, 600.96014, -1532.60376, 2.29910, 0.00000, 0.00000, 0.00000, 85001);
  19033. CreateDynamicObject(1827, 598.86340, -1530.68237, 2.30008, 0.00000, 0.00000, 0.00000, 85001);
  19034. CreateDynamicObject(2256, 609.1511, -1535.35425, 4.1013, 0.00000, 0.00000, 180.00000, 85001);
  19035. CreateDynamicObject(2254, 612.94708, -1535.35425, 4.10130, 0.00000, 0.00000, 180.00000, 85001);
  19036. CreateDynamicObject(2260, 608.36841, -1531.47961, 4.14680, 0.00000, 0.00000, 90.00000, 85001);
  19037. CreateDynamicObject(2264, 613.73242, -1531.48535, 4.14680, 0.00000, 0.00000, -90.00000, 85001);
  19038. CreateDynamicObject(2010, 608.48383, -1534.80164, 2.29910, 0.00000, 0.00000, 0.00000, 85001);
  19039. CreateDynamicObject(2010, 613.80621, -1534.91443, 2.29910, 0.00000, 0.00000, 53.46000, 85001);
  19040. CreateDynamicObject(2257, 605.82928, -1528.17200, 4.14700, 0.00000, 0.00000, 180.00000, 85001);
  19041. CreateDynamicObject(2835, 610.55408, -1535.08630, 2.30027, 0.00000, 0.00000, 0.00000, 85001);
  19042. CreateDynamicObject(2835, 609.17139, -1534.14648, 2.30030, 0.00000, 0.00000, 90.00000, 85001);
  19043. CreateDynamicObject(2835, 609.19354, -1529.66650, 2.30030, 0.00000, 0.00000, 90.00000, 85001);
  19044. CreateDynamicObject(2835, 613.94513, -1534.28809, 2.30030, 0.00000, 0.00000, 90.00000, 85001);
  19045. CreateDynamicObject(2835, 613.90796, -1529.72852, 2.30030, 0.00000, 0.00000, 90.00000, 85001);
  19046. CreateDynamicObject(2835, 612.55695, -1525.25928, 2.30027, 0.00000, 0.00000, 0.00000, 85001);
  19047. CreateDynamicObject(2835, 608.73480, -1525.28967, 2.30027, 0.00000, 0.00000, 0.00000, 85001);
  19048. CreateDynamicObject(2835, 602.10596, -1525.19360, 2.30027, 0.00000, 0.00000, 0.00000, 85001);
  19049. CreateDynamicObject(2835, 602.15741, -1527.78870, 2.30027, 0.00000, 0.00000, 0.00000, 85001);
  19050. //admin jail
  19051. retexture = CreateDynamicObject(19370, 217.351898, -157.537399, 1001.065185, 0.000000, 0.000000, 0.000000, 99999);
  19052. SetDynamicObjectMaterial(retexture, 0, 6094, "canalsg_law", "sw_brewbrick01", 0x00000000);
  19053. retexture = CreateDynamicObject(19370, 217.337493, -153.480499, 1001.065185, 0.000000, 0.000000, 0.000000, 99999);
  19054. SetDynamicObjectMaterial(retexture, 0, 6094, "canalsg_law", "sw_brewbrick01", 0x00000000);
  19055. retexture = CreateDynamicObject(19370, 217.334503, -155.677505, 998.143188, 0.000000, 0.000000, 0.000000, 99999);
  19056. SetDynamicObjectMaterial(retexture, 0, 6094, "canalsg_law", "sw_brewbrick01", 0x00000000);
  19057. retexture = CreateDynamicObject(19370, 217.334503, -155.677505, 1003.339172, 0.000000, 0.000000, 0.000000, 99999);
  19058. SetDynamicObjectMaterial(retexture, 0, 6094, "canalsg_law", "sw_brewbrick01", 0x00000000);
  19059. retexture = CreateDynamicObject(19370, 215.903823, -157.592285, 1001.065185, 0.000000, 0.000000, 90.000000, 99999);
  19060. SetDynamicObjectMaterial(retexture, 0, 6094, "canalsg_law", "sw_brewbrick01", 0x00000000);
  19061. retexture = CreateDynamicObject(19370, 215.754928, -154.478637, 1001.065185, 0.000000, 0.000000, 90.000000, 99999);
  19062. SetDynamicObjectMaterial(retexture, 0, 6094, "canalsg_law", "sw_brewbrick01", 0x00000000);
  19063. retexture = CreateDynamicObject(19370, 214.442123, -156.057479, 1001.065185, 0.000000, 0.000000, 0.000000, 99999);
  19064. SetDynamicObjectMaterial(retexture, 0, 6094, "canalsg_law", "sw_brewbrick01", 0x00000000);
  19065. retexture = CreateDynamicObject(19370, 215.558242, -156.146926, 999.455444, 0.000000, 90.000000, 0.000000, 99999);
  19066. SetDynamicObjectMaterial(retexture, 0, 6094, "canalsg_law", "sw_brewbrick01", 0x00000000);
  19067. retexture = CreateDynamicObject(19370, 215.558242, -156.146926, 1002.631713, 0.000000, 90.000000, 0.000000, 99999);
  19068. SetDynamicObjectMaterial(retexture, 0, 6094, "canalsg_law", "sw_brewbrick01", 0x00000000);
  19069. retexture = CreateDynamicObject(19372, 217.420059, -156.136169, 1000.266662, 0.000000, 0.000000, 0.000000, 99999);
  19070. SetDynamicObjectMaterial(retexture, 0, 19297, "matlights", "invisible", 0x00000000);
  19071. // NEW FIRE DEPARTMENT
  19072. CreateDynamicObject(19791, 2328.77686, -1515.69995, 13.91983, 0.00000, 10.00000, 0.00000);
  19073. CreateDynamicObject(19791, 2328.77686, -1525.69995, 13.91980, 0.00000, 10.00000, 0.00000);
  19074. CreateDynamicObject(19791, 2328.77686, -1535.69995, 13.91980, 0.00000, 10.00000, 0.00000);
  19075. CreateDynamicObject(19791, 2328.77686, -1545.69995, 13.91980, 0.00000, 10.00000, 0.00000);
  19076. CreateDynamicObject(19791, 2320.58667, -1515.69995, 14.63260, 0.00000, 0.00000, 0.20100);
  19077. CreateDynamicObject(19791, 2320.58667, -1525.69995, 14.63260, 0.00000, 0.00000, 0.20100);
  19078. CreateDynamicObject(19791, 2320.58667, -1535.69995, 14.63260, 0.00000, 0.00000, 0.20100);
  19079. CreateDynamicObject(19791, 2320.58667, -1545.69995, 14.63260, 0.00000, 0.00000, 0.20100);
  19080. CreateDynamicObject(19791, 2310.58667, -1515.69995, 14.63260, 0.00000, 0.00000, 0.20100);
  19081. CreateDynamicObject(19791, 2310.56665, -1525.70129, 14.63260, 0.00000, 0.00000, 0.20100);
  19082. CreateDynamicObject(19791, 2310.58667, -1535.69995, 14.63260, 0.00000, 0.00000, 0.20100);
  19083. CreateDynamicObject(19791, 2310.58667, -1545.69995, 14.63260, 0.00000, 0.00000, 0.20100);
  19084. CreateDynamicObject(8581, 2294.63599, -1528.11401, 30.95190, 0.00000, 0.00000, -90.00000);
  19085. CreateDynamicObject(8581, 2294.65967, -1528.10889, 30.93190, 0.00000, 0.00000, 90.00000);
  19086. CreateDynamicObject(8581, 2283.95581, -1530.46667, 30.97190, 0.00000, 0.00000, -90.00000);
  19087. CreateDynamicObject(8581, 2283.99023, -1530.45947, 30.93190, 0.00000, 0.00000, 90.00000);
  19088. CreateDynamicObject(621, 2295.69116, -1549.05127, 22.58316, 0.00000, 0.00000, 0.00000);
  19089. CreateDynamicObject(621, 2303.25464, -1546.98718, 20.38125, 0.00000, 0.00000, 0.00000);
  19090. CreateDynamicObject(2948, 2297.01294, -1510.59912, 25.85350, 0.00000, 0.00000, 90.00000);
  19091. CreateDynamicObject(2948, 2298.92529, -1510.58911, 25.85350, 0.00000, 0.00000, -90.00000);
  19092. CreateDynamicObject(14469, 2282.78760, -1511.90234, 26.44890, 0.00000, 0.00000, 0.00000);
  19093. CreateDynamicObject(14469, 2277.68579, -1511.59106, 26.44890, 0.00000, 0.00000, 0.00000);
  19094. CreateDynamicObject(3034, 2300.63574, -1510.56189, 31.77940, 0.00000, 0.00000, 180.00000);
  19095. CreateDynamicObject(3034, 2288.03564, -1510.56189, 31.77940, 0.00000, 0.00000, 180.00000);
  19096. CreateDynamicObject(3034, 2294.23560, -1510.56189, 31.77940, 0.00000, 0.00000, 180.00000);
  19097. CreateDynamicObject(11245, 2297.49170, -1509.08801, 32.12990, 0.00000, -14.00000, 90.00000);
  19098. CreateDynamicObject(3034, 2280.22168, -1512.91675, 31.77940, 0.00000, 0.00000, 180.00000);
  19099. CreateDynamicObject(14469, 2329.98071, -1496.44055, 23.34250, 0.00000, 0.00000, 45.18060);
  19100. CreateDynamicObject(19791, 2298.07788, -1540.33923, 26.05730, 0.00000, 0.00000, 0.20100);
  19101. CreateDynamicObject(19791, 2288.07788, -1540.33923, 26.05730, 0.00000, 0.00000, 0.20100);
  19102. CreateDynamicObject(19791, 2280.17798, -1540.33923, 26.04730, 0.00000, 0.00000, 0.20100);
  19103. CreateDynamicObject(19791, 2298.07788, -1530.33923, 26.05730, 0.00000, 0.00000, 0.20100);
  19104. CreateDynamicObject(19791, 2298.07788, -1520.33923, 26.05730, 0.00000, 0.00000, 0.20100);
  19105. CreateDynamicObject(19791, 2288.07788, -1530.33923, 26.05730, 0.00000, 0.00000, 0.20100);
  19106. CreateDynamicObject(19791, 2288.07788, -1520.33923, 26.05730, 0.00000, 0.00000, 0.20100);
  19107. CreateDynamicObject(19791, 2280.17798, -1530.33923, 26.04730, 0.00000, 0.00000, 0.20100);
  19108. CreateDynamicObject(19791, 2280.17798, -1520.33923, 26.04730, 0.00000, 0.00000, 0.20100);
  19109. CreateDynamicObject(19791, 2290.70435, -1515.67468, 26.06730, 0.00000, 0.00000, 0.20100);
  19110. CreateDynamicObject(1635, 2298.39600, -1546.23438, 32.79228, 0.00000, 0.00000, 90.00000);
  19111. CreateDynamicObject(1687, 2301.00879, -1513.10242, 35.72760, 0.00000, 0.00000, 90.00000);
  19112. CreateDynamicObject(1687, 2297.74756, -1513.13660, 35.72760, 0.00000, 0.00000, 90.00000);
  19113. CreateDynamicObject(1232, 2319.98535, -1507.09509, 28.30576, 0.00000, 0.00000, 0.00000);
  19114. CreateDynamicObject(1232, 2309.39136, -1507.09314, 28.30576, 0.00000, 0.00000, 0.00000);
  19115. CreateDynamicObject(1232, 2286.28760, -1507.06726, 28.30576, 0.00000, 0.00000, 0.00000);
  19116. CreateDynamicObject(1232, 2276.57129, -1507.26489, 28.30576, 0.00000, 0.00000, 0.00000);
  19117. fd_wall[36] = CreateDynamicObject(19428, 2321.45898, -1548.51868, 23.16800, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19118. fd_wall[37] = CreateDynamicObject(19428, 2321.45898, -1548.51868, 26.66840, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19119. fd_wall[38] = CreateDynamicObject(19447, 2316.72412, -1549.23633, 26.66840, 0.00000, 0.00000, 90.00000, -1, -1, -1, 250.00, 250.00);
  19120. fd_wall[39] = CreateDynamicObject(19428, 2321.45898, -1542.38269, 26.66840, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19121. fd_wall[40] = CreateDynamicObject(19428, 2321.45898, -1542.38269, 23.16800, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19122. fd_wall[41] = CreateDynamicObject(19447, 2316.72412, -1549.23633, 23.16800, 0.00000, 0.00000, 90.00000, -1, -1, -1, 250.00, 250.00);
  19123. fd_wall[42] = CreateDynamicObject(19355, 2323.14160, -1541.67249, 26.66840, 0.00000, 0.00000, 90.00000, -1, -1, -1, 250.00, 250.00);
  19124. fd_wall[43] = CreateDynamicObject(19355, 2323.14160, -1541.67249, 23.16800, 0.00000, 0.00000, 90.00000, -1, -1, -1, 250.00, 250.00);
  19125. fd_wall[44] = CreateDynamicObject(19428, 2324.66064, -1540.78320, 26.66840, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19126. fd_wall[45] = CreateDynamicObject(19428, 2324.66064, -1540.78320, 23.16800, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19127. fd_wall[46] = CreateDynamicObject(19428, 2324.66064, -1534.64917, 26.66840, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19128. fd_wall[47] = CreateDynamicObject(19428, 2324.66064, -1534.64917, 23.16800, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19129. fd_wall[48] = CreateDynamicObject(19428, 2324.66064, -1528.51917, 26.66840, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19130. fd_wall[49] = CreateDynamicObject(19428, 2324.66064, -1528.51917, 23.16800, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19131. fd_wall[50] = CreateDynamicObject(19447, 2319.92700, -1519.89856, 26.66840, 0.00000, 0.00000, 90.00000, -1, -1, -1, 250.00, 250.00);
  19132. fd_wall[51] = CreateDynamicObject(19355, 2324.66064, -1521.58447, 26.66840, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19133. fd_wall[1] = CreateDynamicObject(19355, 2324.66064, -1521.58447, 23.16800, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19134. fd_wall[2] = CreateDynamicObject(19447, 2319.92700, -1519.89856, 23.16800, 0.00000, 0.00000, 90.00000, -1, -1, -1, 250.00, 250.00);
  19135. fd_wall[3] = CreateDynamicObject(19447, 2310.29688, -1549.23804, 26.66840, 0.00000, 0.00000, 90.00000, -1, -1, -1, 250.00, 250.00);
  19136. fd_wall[4] = CreateDynamicObject(19447, 2310.29688, -1549.23804, 23.16800, 0.00000, 0.00000, 90.00000, -1, -1, -1, 250.00, 250.00);
  19137. fd_wall[5] = CreateDynamicObject(19447, 2310.29688, -1519.89856, 26.66840, 0.00000, 0.00000, 90.00000, -1, -1, -1, 250.00, 250.00);
  19138. fd_wall[6] = CreateDynamicObject(19447, 2310.29688, -1519.89856, 23.16800, 0.00000, 0.00000, 90.00000, -1, -1, -1, 250.00, 250.00);
  19139. fd_wall[7] = CreateDynamicObject(19447, 2305.57520, -1544.34424, 26.66840, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19140. fd_wall[8] = CreateDynamicObject(19447, 2305.57520, -1544.34424, 23.16800, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19141. fd_wall[9] = CreateDynamicObject(19447, 2305.57593, -1534.71423, 26.66840, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19142. fd_wall[10] = CreateDynamicObject(19447, 2305.57520, -1534.71423, 23.16800, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19143. fd_wall[11] = CreateDynamicObject(19447, 2305.57593, -1525.08423, 26.66840, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19144. fd_wall[12] = CreateDynamicObject(19447, 2305.57520, -1525.08423, 23.16800, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19145. fd_wall[13] = CreateDynamicObject(19428, 2305.57690, -1520.67566, 23.16800, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19146. fd_wall[14] = CreateDynamicObject(19428, 2305.57690, -1520.67566, 26.66840, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19147. fd_wall[15] = CreateDynamicObject(19447, 2300.66699, -1519.89856, 30.16760, 0.00000, 0.00000, 90.00000, -1, -1, -1, 250.00, 250.00);
  19148. fd_wall[16] = CreateDynamicObject(19447, 2300.66699, -1519.89856, 23.16800, 0.00000, 0.00000, 90.00000, -1, -1, -1, 250.00, 250.00);
  19149. fd_wall[17] = CreateDynamicObject(19447, 2300.66699, -1519.89856, 26.66840, 0.00000, 0.00000, 90.00000, -1, -1, -1, 250.00, 250.00);
  19150. fd_wall[18] = CreateDynamicObject(19447, 2305.57593, -1525.08423, 30.16760, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19151. fd_wall[19] = CreateDynamicObject(19428, 2305.57690, -1520.67566, 30.16760, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19152. fd_wall[20] = CreateDynamicObject(19447, 2305.57593, -1534.71423, 30.16760, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19153. fd_wall[21] = CreateDynamicObject(19447, 2305.57520, -1544.34424, 30.16760, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19154. fd_wall[22] = CreateDynamicObject(19447, 2310.29688, -1549.23804, 30.16760, 0.00000, 0.00000, 90.00000, -1, -1, -1, 250.00, 250.00);
  19155. fd_wall[23] = CreateDynamicObject(19447, 2316.72412, -1549.23633, 30.16760, 0.00000, 0.00000, 90.00000, -1, -1, -1, 250.00, 250.00);
  19156. fd_wall[24] = CreateDynamicObject(19447, 2310.29688, -1519.89856, 30.16760, 0.00000, 0.00000, 90.00000, -1, -1, -1, 250.00, 250.00);
  19157. fd_wall[25] = CreateDynamicObject(19447, 2319.92700, -1519.89856, 30.16760, 0.00000, 0.00000, 90.00000, -1, -1, -1, 250.00, 250.00);
  19158. fd_wall[26] = CreateDynamicObject(19447, 2324.66064, -1524.63086, 30.16760, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19159. fd_wall[27] = CreateDynamicObject(19447, 2324.66064, -1534.26086, 30.16760, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19160. fd_wall[28] = CreateDynamicObject(19355, 2324.67065, -1540.14746, 30.16760, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19161. fd_wall[29] = CreateDynamicObject(19355, 2323.14160, -1541.67249, 30.16760, 0.00000, 0.00000, 90.00000, -1, -1, -1, 250.00, 250.00);
  19162. fd_wall[30] = CreateDynamicObject(19355, 2321.45898, -1546.11389, 30.16760, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19163. fd_wall[31] = CreateDynamicObject(19428, 2321.45898, -1548.51868, 30.16760, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19164. fd_wall[32] = CreateDynamicObject(19355, 2321.46899, -1543.19385, 30.16760, 0.00000, 0.00000, 0.00000, -1, -1, -1, 250.00, 250.00);
  19165. fd_wall[33] = CreateDynamicObject(19447, 2300.72168, -1545.56250, 26.66840, 0.00000, 0.00000, 90.00000, -1, -1, -1, 250.00, 250.00);
  19166. fd_wall[34] = CreateDynamicObject(19447, 2300.72168, -1545.56250, 23.16800, 0.00000, 0.00000, 90.00000, -1, -1, -1, 250.00, 250.00);
  19167. fd_wall[35] = CreateDynamicObject(19447, 2300.72168, -1545.56250, 30.16760, 0.00000, 0.00000, 90.00000, -1, -1, -1, 250.00, 250.00);
  19168. CreateDynamicObject(1635, 2313.83496, -1549.91479, 29.24914, 0.00000, 0.00000, 90.00000);
  19169. CreateDynamicObject(1635, 2308.19507, -1549.91479, 29.24910, 0.00000, 0.00000, 90.00000);
  19170. CreateDynamicObject(19377, 2319.34521, -1524.79724, 31.83230, 0.00000, 90.00000, 0.00000);
  19171. CreateDynamicObject(19377, 2319.34521, -1536.78870, 31.83230, 0.00000, 90.00000, 0.00000);
  19172. CreateDynamicObject(19377, 2308.84521, -1524.79724, 31.83230, 0.00000, 90.00000, 0.00000);
  19173. CreateDynamicObject(19377, 2308.84521, -1536.78870, 31.83230, 0.00000, 90.00000, 0.00000);
  19174. CreateDynamicObject(19377, 2308.84521, -1530.85376, 31.85230, 0.00000, 90.00000, 0.00000);
  19175. CreateDynamicObject(19377, 2319.34521, -1530.85376, 31.85230, 0.00000, 90.00000, 0.00000);
  19176. CreateDynamicObject(19377, 2316.20996, -1544.38257, 31.85230, 0.00000, 90.00000, 0.00000);
  19177. CreateDynamicObject(19377, 2310.74683, -1544.39502, 31.84230, 0.00000, 90.00000, 0.00000);
  19178. CreateDynamicObject(19377, 2300.26099, -1540.75269, 31.84230, 0.00000, 90.00000, 0.00000);
  19179. CreateDynamicObject(1687, 2313.67969, -1539.58594, 32.63800, 0.00000, 0.00000, 0.00000);
  19180. CreateDynamicObject(1687, 2313.67969, -1528.29187, 32.63803, 0.00000, 0.00000, 0.00000);
  19181. CreateDynamicObject(2653, 2313.88916, -1523.94604, 31.07910, 0.00000, 180.00000, 0.00000);
  19182. CreateDynamicObject(2653, 2309.58057, -1534.14294, 31.07910, 0.00000, 180.00000, 90.00000);
  19183. CreateDynamicObject(2653, 2313.89111, -1531.83008, 31.07910, 0.00000, 180.00000, 0.00000);
  19184. CreateDynamicObject(2653, 2313.89111, -1539.69897, 31.07910, 0.00000, 180.00000, 0.00000);
  19185. CreateDynamicObject(2653, 2313.88110, -1545.38000, 31.07910, 0.00000, 180.00000, 0.00000);
  19186. CreateDynamicObject(2986, 2314.22070, -1534.18335, 30.35590, 0.00000, 0.00000, 0.00000);
  19187. CreateDynamicObject(1498, 2306.27686, -1519.97217, 24.62630, 0.00000, 0.00000, 0.00000);
  19188. CreateDynamicObject(1498, 2306.27686, -1519.87219, 24.62630, 0.00000, 0.00000, 0.00000);
  19189. CreateDynamicObject(1535, 2305.67065, -1534.95227, 24.62750, 0.00000, 0.00000, 90.00000);
  19190. CreateDynamicObject(2567, 2306.75439, -1546.52576, 26.49260, 0.00000, 0.00000, 90.00000);
  19191. CreateDynamicObject(2567, 2306.75439, -1541.18579, 26.49260, 0.00000, 0.00000, 90.00000);
  19192. CreateDynamicObject(1348, 2306.81421, -1538.14966, 25.30640, 0.00000, 0.00000, 0.00000);
  19193. CreateDynamicObject(19815, 2305.67407, -1530.04773, 26.35043, 0.00000, 0.00000, 90.00000);
  19194. CreateDynamicObject(19816, 2305.83667, -1532.14099, 24.88290, 0.00000, 0.00000, 0.00000);
  19195. CreateDynamicObject(19816, 2305.83667, -1532.32104, 24.88290, 0.00000, 0.00000, 0.00000);
  19196. CreateDynamicObject(19816, 2305.83667, -1532.50098, 24.88290, 0.00000, 0.00000, 0.00000);
  19197. CreateDynamicObject(19816, 2305.83667, -1532.68103, 24.88290, 0.00000, 0.00000, 0.00000);
  19198. CreateDynamicObject(19816, 2305.99658, -1532.60095, 24.88290, 0.00000, 0.00000, 0.00000);
  19199. CreateDynamicObject(19816, 2305.99658, -1532.40100, 24.88290, 0.00000, 0.00000, 0.00000);
  19200. CreateDynamicObject(19816, 2305.99658, -1532.22095, 24.88290, 0.00000, 0.00000, 0.00000);
  19201. CreateDynamicObject(19810, 2308.11328, -1519.80835, 25.96690, 0.00000, 0.00000, 0.00000);
  19202. CreateDynamicObject(1211, 2334.97778, -1506.10352, 23.49794, 0.00000, 0.00000, 0.00000);
  19203. CreateDynamicObject(1211, 2334.96191, -1552.42346, 23.49794, 0.00000, 0.00000, 0.00000);
  19204. CreateDynamicObject(1211, 2320.79199, -1491.60645, 23.29790, 0.00000, 0.00000, 90.00000);
  19205. CreateDynamicObject(1211, 2287.17798, -1491.61401, 22.48780, 0.00000, 0.00000, 90.00000);
  19206. CreateDynamicObject(1297, 2335.71387, -1518.95435, 26.26371, 0.00000, 0.00000, 180.00000);
  19207. CreateDynamicObject(1297, 2335.69067, -1534.75537, 26.26371, 0.00000, 0.00000, 180.00000);
  19208. CreateDynamicObject(1297, 2335.62891, -1550.61890, 26.26371, 0.00000, 0.00000, 180.00000);
  19209. CreateDynamicObject(19430, 2312.20679, -1518.43408, 23.84390, 90.00000, 90.00000, 55.91340);
  19210. CreateDynamicObject(19430, 2308.65869, -1518.46179, 23.84390, 90.00000, 90.00000, 55.91340);
  19211. CreateDynamicObject(19430, 2315.57837, -1518.44092, 23.84390, 90.00000, 90.00000, 55.91340);
  19212. CreateDynamicObject(19430, 2319.10620, -1518.41028, 23.84390, 90.00000, 90.00000, 55.91340);
  19213. CreateDynamicObject(19430, 2322.70239, -1518.41040, 23.84390, 90.00000, 90.00000, 55.91340);
  19214. CreateDynamicObject(19430, 2309.79956, -1516.78125, 23.83390, 90.00000, 90.00000, 55.91340);
  19215. CreateDynamicObject(19430, 2313.28467, -1516.84106, 23.83390, 90.00000, 90.00000, 55.91340);
  19216. CreateDynamicObject(19430, 2316.67578, -1516.82520, 23.83390, 90.00000, 90.00000, 55.91340);
  19217. CreateDynamicObject(19430, 2320.18359, -1516.81641, 23.83390, 90.00000, 90.00000, 55.91340);
  19218. CreateDynamicObject(19430, 2323.71069, -1516.92285, 23.83390, 90.00000, 90.00000, 55.91340);
  19219. CreateDynamicObject(19865, 2329.81226, -1550.73352, 22.58390, 6.00000, 0.00000, 90.00000);
  19220. CreateDynamicObject(19865, 2324.97241, -1550.73645, 22.90490, 2.00000, 0.00000, 90.00000);
  19221. CreateDynamicObject(19865, 2320.03223, -1550.73450, 22.98490, 0.00000, 0.00000, 90.00000);
  19222. CreateDynamicObject(19865, 2315.03223, -1550.73450, 22.98490, 0.00000, 0.00000, 90.00000);
  19223. CreateDynamicObject(19865, 2310.03223, -1550.73450, 22.98490, 0.00000, 0.00000, 90.00000);
  19224. CreateDynamicObject(19865, 2305.03223, -1550.73450, 22.98490, 0.00000, 0.00000, 90.00000);
  19225. CreateDynamicObject(19865, 2300.06909, -1550.27942, 22.98490, 0.00000, 0.00000, 79.53068);
  19226. //CreateDynamicObject(11453, 2330.52515, -1496.05225, 24.93609, 0.00000, 0.00000, 42.91982);
  19227. CreateDynamicObject(8990, 2305.16675, -1511.45337, 25.22185, 0.00000, 0.00000, 0.00000);
  19228. CreateDynamicObject(8990, 2304.09375, -1518.61133, 25.22190, 0.00000, 0.00000, 90.00000);
  19229. CreateDynamicObject(8990, 2304.77881, -1518.87524, 24.91490, 0.00000, 0.00000, -90.00000);
  19230. new fdst9sign = CreateDynamicObject(11453, 2330.52515, -1496.05225, 24.93609, 0.00000, 0.00000, 42.91982);
  19231. SetDynamicObjectMaterialText(fdst9sign, 1, "{FFFFFF}LOS SANTOS\nFIRE DEPARTMENT\n\n{8F6B00}- STATION 9 -\n\n\n\n\n\n\n", 140, "Arial", 48, 1, 0xFF800000, 0xFF800000, 1);
  19232. for(new i=0; i < sizeof(fd_wall); i++) {
  19233. SetDynamicObjectMaterial(fd_wall[i], 0, 8581, "vgsebuild02", "newall11-1");
  19234. }
  19235. // Fire Department
  19236. /*
  19237. CreateDynamicObject(1649, 1737.09998, -1102.50000, 24.00000, 0.00000, 0.00000, 270.00000);
  19238. CreateDynamicObject(942, 1721.09998, -1114.80005, 25.50000, 0.00000, 0.25000, 91.25000);
  19239. CreateDynamicObject(930, 1721.19995, -1111.19995, 23.54000, 0.00000, 0.00000, 0.00000);
  19240. CreateDynamicObject(931, 1720.90002, -1121.00000, 24.10000, 0.00000, 0.00000, 92.00000);
  19241. CreateDynamicObject(2567, 1707.80005, -1130.19995, 25.00000, 0.00000, 0.00000, 0.00000);
  19242. CreateDynamicObject(3800, 1712.69995, -1130.00000, 23.10000, 0.00000, 0.00000, 0.00000);
  19243. CreateDynamicObject(3800, 1711.09998, -1130.19995, 23.10000, 0.00000, 0.00000, 0.00000);
  19244. CreateDynamicObject(1649, 1736.42004, -1094.81995, 28.18000, 0.00000, 0.00000, 0.24000);
  19245. CreateDynamicObject(2165, 1752.69995, -1104.59998, 23.12000, 0.00000, 0.00000, 0.00000);
  19246. CreateDynamicObject(2165, 1750.80005, -1104.59998, 23.12000, 0.00000, 0.00000, 0.00000);
  19247. CreateDynamicObject(1671, 1751.50000, -1105.90002, 23.52000, 0.00000, 0.00000, 180.00000);
  19248. CreateDynamicObject(1671, 1753.40002, -1105.90002, 23.52000, 0.00000, 0.00000, 179.99001);
  19249. CreateDynamicObject(1723, 1740.30005, -1095.59998, 23.12000, 0.00000, 0.00000, 0.00000);
  19250. CreateDynamicObject(1723, 1744.59998, -1095.59998, 23.12000, 0.00000, 0.00000, 0.00000);
  19251. CreateDynamicObject(2315, 1740.50000, -1097.40002, 23.12000, 0.00000, 0.00000, 0.00000);
  19252. CreateDynamicObject(2315, 1744.90002, -1097.40002, 23.12000, 0.00000, 0.00000, 0.00000);
  19253. CreateDynamicObject(1723, 1742.30005, -1099.40002, 23.12000, 0.00000, 0.00000, 180.00000);
  19254. CreateDynamicObject(1723, 1746.59998, -1099.40002, 23.12000, 0.00000, 0.00000, 179.99001);
  19255. CreateDynamicObject(1649, 1714.78003, -1142.39001, 28.10000, 0.00000, 0.00000, 0.00000);
  19256. CreateDynamicObject(1649, 1722.90002, -1142.40002, 28.10000, 0.00000, 0.00000, 180.24001);
  19257. CreateDynamicObject(925, 1720.90002, -1123.59998, 24.10000, 0.00000, 0.00000, 90.00000);
  19258. CreateDynamicObject(2700, 1743.19995, -1108.00000, 26.50000, 0.00000, 0.00000, 89.75000);
  19259. CreateDynamicObject(2700, 1755.93994, -1101.44995, 26.30000, 0.00000, 0.00000, 179.99001);
  19260. CreateDynamicObject(2631, 1735.40002, -1113.90002, 23.10000, 0.00000, 0.00000, 0.00000);
  19261. CreateDynamicObject(2632, 1735.40002, -1115.90002, 23.10000, 0.00000, 0.00000, 0.00000);
  19262. CreateDynamicObject(2631, 1735.40002, -1117.90002, 23.10000, 0.00000, 0.00000, 0.00000);
  19263. CreateDynamicObject(2632, 1735.40002, -1119.90002, 23.10000, 0.00000, 0.00000, 0.00000);
  19264. CreateDynamicObject(2631, 1735.40002, -1121.90002, 23.10000, 0.00000, 0.00000, 0.00000);
  19265. CreateDynamicObject(2632, 1735.40002, -1123.90002, 23.10000, 0.00000, 0.00000, 0.00000);
  19266. CreateDynamicObject(1211, 1729.69995, -1140.59998, 23.50000, 0.00000, 0.00000, 0.00000);
  19267. CreateDynamicObject(1211, 1712.50000, -1140.59998, 23.50000, 0.00000, 0.00000, 0.00000);
  19268. CreateDynamicObject(1211, 1746.80005, -1140.59998, 23.50000, 0.00000, 0.00000, 0.00000);
  19269. CreateDynamicObject(1211, 1729.57996, -1096.68005, 23.50000, 0.00000, 0.00000, 0.00000);
  19270. CreateDynamicObject(1211, 1712.40002, -1096.80005, 23.50000, 0.00000, 0.00000, 0.00000);
  19271. CreateDynamicObject(1238, 1713.80005, -1129.69995, 23.40000, 0.00000, 0.00000, 0.00000);
  19272. CreateDynamicObject(1238, 1713.80005, -1129.69995, 23.60000, 0.00000, 0.00000, 0.00000);
  19273. CreateDynamicObject(1238, 1714.50000, -1129.69995, 23.40000, 0.00000, 0.00000, 0.00000);
  19274. CreateDynamicObject(1238, 1714.50000, -1129.69995, 23.60000, 0.00000, 0.00000, 0.00000);
  19275. CreateDynamicObject(7090, 1728.40002, -1095.50000, 35.30000, 0.00000, 0.00000, 92.00000);
  19276. CreateDynamicObject(1502, 1737.14001, -1106.19995, 23.06000, 0.00000, 0.00000, 90.00000);
  19277. CreateDynamicObject(3578, 1729.69995, -1137.30005, 22.30000, 0.00000, 0.00000, 90.00000);
  19278. CreateDynamicObject(3578, 1729.69995, -1134.30005, 22.30000, 0.00000, 0.00000, 90.00000);
  19279. CreateDynamicObject(3578, 1712.50000, -1137.30005, 22.30000, 0.00000, 0.00000, 90.00000);
  19280. CreateDynamicObject(3578, 1704.82996, -1137.38000, 22.30000, 0.00000, 0.00000, 90.00000);
  19281. CreateDynamicObject(3578, 1738.29004, -1135.20996, 22.30000, 0.00000, 0.00000, 90.00000);
  19282. CreateDynamicObject(3578, 1746.80005, -1136.90002, 22.30000, 0.00000, 0.00000, 90.00000);
  19283. CreateDynamicObject(3578, 1746.80005, -1127.19995, 22.30000, 0.00000, 0.00000, 90.00000);
  19284. CreateDynamicObject(1238, 1740.53003, -1130.07996, 24.60000, 0.00000, 0.00000, 0.00000);
  19285. CreateDynamicObject(1238, 1740.54004, -1130.06995, 24.68000, 0.00000, 0.00000, 0.00000);
  19286. CreateDynamicObject(1238, 1741.40002, -1129.95996, 24.60000, 0.00000, 0.00000, 0.00000);
  19287. CreateDynamicObject(2627, 1735.57996, -1113.58997, 23.15000, 0.00000, 0.00000, 270.00000);
  19288. CreateDynamicObject(2627, 1735.58997, -1114.73999, 23.15000, 0.00000, 0.00000, 270.00000);
  19289. CreateDynamicObject(2630, 1735.69995, -1116.56006, 23.15000, 0.00000, 0.00000, 90.00000);
  19290. CreateDynamicObject(2630, 1735.68005, -1117.78003, 23.15000, 0.00000, 0.00000, 90.00000);
  19291. CreateDynamicObject(2628, 1736.14001, -1119.76001, 23.15000, 0.00000, 0.00000, 270.00000);
  19292. CreateDynamicObject(2628, 1736.14001, -1121.45996, 23.15000, 0.00000, 0.00000, 270.00000);
  19293. CreateDynamicObject(1808, 1736.88000, -1125.26001, 23.09000, 0.00000, 0.00000, 270.00000);
  19294. CreateDynamicObject(2223, 1744.93994, -1097.45996, 23.68000, 0.00000, 0.00000, 0.00000);
  19295. CreateDynamicObject(2342, 1746.51001, -1097.40002, 23.72000, 0.00000, 0.00000, 0.00000);
  19296. CreateDynamicObject(3578, 1712.40002, -1101.00000, 22.30000, 0.00000, 0.00000, 90.00000);
  19297. CreateDynamicObject(3578, 1704.77002, -1101.10999, 22.30000, 0.00000, 0.00000, 90.00000);
  19298. CreateDynamicObject(3578, 1736.80005, -1099.97998, 22.30000, 0.00000, 0.00000, 90.00000);
  19299. CreateDynamicObject(3578, 1736.80005, -1101.19995, 22.30000, 0.00000, 0.00000, 90.00000);
  19300. CreateDynamicObject(3578, 1729.59998, -1101.00000, 22.30000, 0.00000, 0.00000, 90.00000);
  19301. CreateDynamicObject(3578, 1721.09998, -1100.90002, 22.30000, 0.00000, 0.00000, 90.00000);
  19302. CreateDynamicObject(1649, 1737.08997, -1102.53003, 27.30000, 0.00000, 0.00000, 90.00000);
  19303. CreateDynamicObject(1649, 1737.09998, -1106.83997, 27.22000, 0.00000, 0.00000, 270.00000);
  19304. CreateDynamicObject(1649, 1737.09998, -1098.09998, 27.30000, 0.00000, 0.00000, 90.00000);
  19305. CreateDynamicObject(1649, 1737.09998, -1098.16003, 24.00000, 0.00000, 0.00000, 90.00000);
  19306. CreateDynamicObject(1615, 1754.19995, -1095.80005, 28.00000, 0.00000, 0.00000, 0.00000);
  19307. CreateDynamicObject(1615, 1754.19995, -1130.00000, 28.00000, 0.00000, 0.00000, 0.00000);
  19308. CreateDynamicObject(1615, 1705.09998, -1107.50000, 27.90000, 0.00000, 0.00000, 184.50000);
  19309. CreateDynamicObject(1615, 1705.09998, -1130.09998, 27.90000, 0.00000, 0.00000, 180.00000);
  19310. CreateDynamicObject(638, 1701.50000, -1096.50000, 23.80000, 0.00000, 0.00000, 90.00000);
  19311. CreateDynamicObject(638, 1701.59998, -1100.30005, 23.80000, 0.00000, 0.00000, 90.00000);
  19312. CreateDynamicObject(2774, 1730.19995, -1095.57996, 20.50000, 0.00000, 0.00000, 0.00000);
  19313. CreateDynamicObject(2774, 1729.09998, -1095.57996, 20.50000, 0.00000, 0.00000, 0.00000);
  19314. CreateDynamicObject(2774, 1713.19995, -1095.57996, 20.50000, 0.00000, 0.00000, 0.00000);
  19315. CreateDynamicObject(1649, 1752.40002, -1094.80005, 27.90000, 0.00000, 0.00000, 0.25000);
  19316. CreateDynamicObject(1649, 1748.00000, -1094.80005, 27.90000, 0.00000, 0.00000, 0.00000);
  19317. CreateDynamicObject(1649, 1743.59998, -1094.80005, 27.90000, 0.00000, 0.00000, 180.24001);
  19318. CreateDynamicObject(1649, 1739.30005, -1094.80005, 27.90000, 0.00000, 0.00000, 0.00000);
  19319. CreateDynamicObject(1649, 1732.09998, -1094.83984, 28.20000, 0.00000, 0.00000, 0.00000);
  19320. CreateDynamicObject(1649, 1739.30005, -1094.81995, 24.70000, 0.00000, 0.00000, 0.00000);
  19321. CreateDynamicObject(2774, 1712.00000, -1095.57996, 20.50000, 0.00000, 0.00000, 0.00000);
  19322. CreateDynamicObject(1649, 1702.97009, -1097.71997, 27.22000, 0.00000, 0.00000, 90.00000);
  19323. CreateDynamicObject(1649, 1702.96997, -1097.68005, 30.48000, 0.00000, 0.00000, 90.00000);
  19324. CreateDynamicObject(3578, 1712.51294, -1127.09998, 22.30000, 0.00000, 0.00000, 90.00000);
  19325. CreateDynamicObject(3578, 1704.84399, -1127.19995, 22.30000, 0.00000, 0.00000, 90.00000);
  19326. CreateDynamicObject(3578, 1754.50000, -1136.00000, 22.30000, 0.00000, 0.00000, 90.00000);
  19327. CreateDynamicObject(1649, 1727.50000, -1094.80005, 28.20000, 0.18000, 0.00000, 0.00000);
  19328. CreateDynamicObject(1649, 1723.19995, -1094.80005, 28.20000, 0.00000, 0.00000, 0.00000);
  19329. CreateDynamicObject(1649, 1719.40002, -1094.80005, 28.20000, 0.00000, 0.00000, 0.00000);
  19330. CreateDynamicObject(1649, 1715.09998, -1094.80005, 28.20000, 0.00000, 0.00000, 0.00000);
  19331. CreateDynamicObject(1649, 1710.30005, -1094.80005, 28.20000, 0.00000, 0.00000, 0.00000);
  19332. CreateDynamicObject(1649, 1706.00000, -1094.83997, 28.20000, 0.00000, 0.00000, 0.99000);
  19333. CreateDynamicObject(2774, 1747.27002, -1141.64001, 20.38000, 0.00000, 0.00000, 0.00000);
  19334. CreateDynamicObject(2774, 1746.23999, -1141.69995, 20.00000, 0.00000, 0.00000, 0.00000);
  19335. CreateDynamicObject(2774, 1730.18005, -1141.69995, 18.70000, 0.00000, 0.00000, 0.00000);
  19336. CreateDynamicObject(2774, 1728.88000, -1141.69995, 18.70000, 0.00000, 0.00000, 0.00000);
  19337. CreateDynamicObject(2774, 1711.97998, -1141.69995, 19.20000, 0.00000, 0.00000, 0.00000);
  19338. CreateDynamicObject(2774, 1713.12000, -1141.69995, 19.20000, 0.00000, 0.00000, 0.00000);
  19339. CreateDynamicObject(1649, 1740.19995, -1142.40002, 28.20000, 0.00000, 0.00000, 180.50000);
  19340. CreateDynamicObject(1649, 1744.50000, -1142.38000, 28.20000, 0.00000, 0.00000, 0.00000);
  19341. CreateDynamicObject(1649, 1749.09998, -1142.38000, 28.10000, 0.00000, 0.00000, 0.00000);
  19342. CreateDynamicObject(1649, 1753.40002, -1142.38000, 28.10000, 0.00000, 0.00000, 180.00000);
  19343. CreateDynamicObject(1649, 1736.30005, -1142.40002, 28.20000, 0.00000, 0.00000, 180.00000);
  19344. CreateDynamicObject(1649, 1731.90002, -1142.42004, 28.20000, 0.00000, 0.00000, 180.24001);
  19345. CreateDynamicObject(1649, 1727.19995, -1142.40002, 28.10000, 0.00000, 0.00000, 180.00000);
  19346. CreateDynamicObject(1649, 1719.18005, -1142.40002, 28.10000, 0.00000, 0.00000, 0.00000);
  19347. CreateDynamicObject(1649, 1710.30005, -1142.40002, 28.20000, 0.00000, 0.00000, 0.00000);
  19348. CreateDynamicObject(1649, 1705.95996, -1142.39001, 28.20000, 0.00000, 0.00000, 180.00000);
  19349. CreateDynamicObject(19461, 1703.01001, -1104.71997, 24.82000, 0.00000, 0.00000, 0.00000);
  19350. CreateDynamicObject(19461, 1756.32996, -1135.59998, 28.28000, 0.00000, 0.00000, 0.00000);
  19351. CreateDynamicObject(19461, 1702.98999, -1135.85999, 24.80000, 0.00000, 0.00000, 0.00000);
  19352. CreateDynamicObject(19461, 1703.00000, -1135.82996, 28.28000, 0.00000, 0.00000, 0.00000);
  19353. CreateDynamicObject(19461, 1756.32996, -1135.62000, 24.82000, 0.00000, 0.00000, 0.00000);
  19354. CreateDynamicObject(19461, 1756.31006, -1101.70996, 28.34000, 0.00000, 0.00000, 0.00000);
  19355. CreateDynamicObject(1649, 1737.12000, -1102.46997, 24.00000, 0.00000, 0.00000, 90.00000);
  19356. CreateDynamicObject(1649, 1752.38000, -1094.81995, 24.68000, 0.00000, 0.00000, 0.25000);
  19357. CreateDynamicObject(1649, 1736.39001, -1094.81995, 28.18000, 0.00000, 0.00000, 180.36000);
  19358. CreateDynamicObject(1649, 1714.81995, -1142.39001, 28.10000, 0.00000, 0.00000, 180.00000);
  19359. CreateDynamicObject(3578, 1712.50000, -1137.30005, 22.30000, 0.00000, 0.00000, 90.00000);
  19360. CreateDynamicObject(3578, 1746.80005, -1127.19995, 22.30000, 0.00000, 0.00000, 90.00000);
  19361. CreateDynamicObject(931, 1741.21997, -1130.07996, 24.14000, 0.00000, 0.00000, 0.00000);
  19362. CreateDynamicObject(1428, 1742.60999, -1130.43005, 24.65000, 0.00000, 0.00000, 90.00000);
  19363. CreateDynamicObject(1428, 1742.60999, -1129.76001, 24.65000, 0.00000, 0.00000, 90.00000);
  19364. CreateDynamicObject(1502, 1756.29004, -1099.26001, 23.06000, 0.00000, 0.00000, 90.00000);
  19365. CreateDynamicObject(3578, 1712.50000, -1137.30005, 22.30000, 0.00000, 0.00000, 90.00000);
  19366. CreateDynamicObject(3578, 1746.80005, -1127.19995, 22.30000, 0.00000, 0.00000, 90.00000);
  19367. CreateDynamicObject(1238, 1740.54004, -1130.06995, 24.68000, 0.00000, 0.00000, 0.00000);
  19368. CreateDynamicObject(1649, 1737.10999, -1102.45996, 27.30000, 0.00000, 0.00000, 270.00000);
  19369. CreateDynamicObject(1649, 1737.10999, -1106.75000, 27.22000, 0.00000, 0.00000, 90.00000);
  19370. CreateDynamicObject(1649, 1737.09998, -1098.14001, 27.30000, 0.00000, 0.00000, 270.00000);
  19371. CreateDynamicObject(1649, 1737.10999, -1098.14001, 24.00000, 0.00000, 0.00000, 270.00000);
  19372. CreateDynamicObject(1649, 1752.40002, -1094.81006, 27.90000, 0.00000, 0.00000, 180.25000);
  19373. CreateDynamicObject(1649, 1748.00000, -1094.77002, 27.90000, 0.00000, 0.00000, 180.00000);
  19374. CreateDynamicObject(1649, 1743.59998, -1094.81995, 27.90000, 0.00000, 0.00000, 0.02000);
  19375. CreateDynamicObject(1649, 1739.30005, -1094.80005, 27.90000, 0.00000, 0.00000, 179.74001);
  19376. CreateDynamicObject(1649, 1732.07996, -1094.81995, 28.20000, 0.00000, 0.00000, 179.99001);
  19377. CreateDynamicObject(1649, 1739.26001, -1094.81995, 24.70000, 0.00000, 0.00000, 180.00000);
  19378. CreateDynamicObject(1649, 1702.97986, -1098.45996, 27.22000, 0.00000, 0.00000, -90.00000);
  19379. CreateDynamicObject(1649, 1702.97009, -1098.31006, 30.42000, 0.00000, 0.00000, -90.00000);
  19380. CreateDynamicObject(1649, 1727.47998, -1094.80005, 28.20000, 0.00000, 0.00000, 179.99001);
  19381. CreateDynamicObject(1649, 1723.19995, -1094.80005, 28.20000, 0.00000, 0.06000, 179.99001);
  19382. CreateDynamicObject(1649, 1719.38000, -1094.80005, 28.20000, 0.00000, 0.00000, 180.00000);
  19383. CreateDynamicObject(1649, 1715.00000, -1094.80005, 28.20000, 0.00000, 0.00000, 180.00000);
  19384. CreateDynamicObject(1649, 1710.30005, -1094.80005, 28.20000, 0.00000, 0.00000, 180.00000);
  19385. CreateDynamicObject(1649, 1705.95996, -1094.80005, 28.20000, 0.00000, 0.00000, 180.00000);
  19386. CreateDynamicObject(2774, 1747.27002, -1141.64001, 20.00000, 0.00000, 0.00000, 0.00000);
  19387. CreateDynamicObject(1649, 1740.28003, -1142.40002, 28.20000, 0.00000, 0.00000, 0.50000);
  19388. CreateDynamicObject(1649, 1753.45996, -1142.38000, 28.10000, 0.00000, 0.00000, 0.00000);
  19389. CreateDynamicObject(1649, 1736.26001, -1142.40002, 28.20000, 0.00000, 0.00000, 0.00000);
  19390. CreateDynamicObject(1649, 1727.18005, -1142.40002, 28.10000, 0.00000, 0.00000, 0.00000);
  19391. CreateDynamicObject(1649, 1719.19995, -1142.40002, 28.10000, 0.00000, 0.00000, 180.00000);
  19392. CreateDynamicObject(1649, 1710.33997, -1142.35999, 28.20000, 0.00000, 0.00000, 180.00000);
  19393. CreateDynamicObject(1649, 1705.97998, -1142.39001, 28.20000, 0.00000, 0.00000, 0.00000);
  19394. CreateDynamicObject(19461, 1756.30005, -1104.88000, 24.83000, 0.00000, 0.00000, 0.00000);
  19395. CreateDynamicObject(1649, 1765.79004, -1094.87000, 24.68000, 0.00000, 0.00000, 0.00000);
  19396. CreateDynamicObject(7090, 1728.57996, -1142.33997, 35.40000, 0.00000, 0.00000, 272.00000);
  19397. CreateDynamicObject(3578, 1712.50000, -1137.30005, 22.30000, 0.00000, 0.00000, 90.00000);
  19398. CreateDynamicObject(3578, 1746.80005, -1127.19995, 22.30000, 0.00000, 0.00000, 90.00000);
  19399. CreateDynamicObject(1428, 1742.60999, -1129.76001, 24.65000, 0.00000, 0.00000, 90.00000);
  19400. CreateDynamicObject(1649, 1743.65002, -1094.81006, 24.68000, 0.00000, 0.00000, 179.95000);
  19401. CreateDynamicObject(1649, 1743.63000, -1094.81995, 24.70000, 0.00000, 0.00000, 0.00000);
  19402. CreateDynamicObject(19461, 1703.01001, -1104.69995, 28.32000, 0.00000, 0.00000, 0.00000);
  19403. CreateDynamicObject(19461, 1790.56006, -1099.70996, 28.30000, 0.00000, 0.00000, 0.00000);
  19404. CreateDynamicObject(616, 840.28003, -923.78003, 52.09000, 0.00000, 0.00000, 0.00000);
  19405. CreateDynamicObject(1536, 1737.10999, -1108.27002, 23.02000, 0.00000, 0.00000, 269.98001);
  19406. CreateDynamicObject(2737, 1751.96997, -1108.23999, 24.51000, 0.00000, 0.00000, 540.32001);
  19407. CreateDynamicObject(6973, 1742.70996, -1113.82996, 43.62000, 0.00000, 0.00000, 90.54000);
  19408. CreateDynamicObject(1649, 1748.06006, -1094.81995, 24.70000, 0.00000, 0.00000, 0.00000);
  19409. CreateDynamicObject(1649, 1752.37000, -1094.81006, 24.68000, 0.00000, 0.00000, 179.95000);
  19410. CreateDynamicObject(1649, 1748.04004, -1094.80005, 24.68000, 0.00000, 0.00000, 179.95000);
  19411. CreateDynamicObject(1536, 1752.80005, -1122.04004, 45.53000, 0.00000, 0.00000, 269.98001);
  19412. CreateDynamicObject(19486, -755.09998, 1637.62000, 28.51000, 0.00000, 0.00000, -179.52000);
  19413. CreateDynamicObject(19330, 1773.79797, -1114.10522, 25.07000, -4.00000, -91.00000, -76.00000);
  19414. CreateDynamicObject(19171, 1748.63000, -1108.31006, 25.71000, -90.00000, 0.00000, 0.00000);
  19415. CreateDynamicObject(19169, 1748.63000, -1108.31006, 24.22000, -90.00000, 0.00000, 0.00000);
  19416. CreateDynamicObject(19170, 1747.14001, -1108.31006, 25.71000, -90.00000, 0.00000, 0.00000);
  19417. CreateDynamicObject(19168, 1747.13000, -1108.31006, 24.22000, -90.00000, 0.00000, 0.00000);
  19418. CreateDynamicObject(19172, 1756.23999, -1101.45996, 25.05000, 0.00000, 0.00000, -90.00000);
  19419. CreateDynamicObject(18870, 1740.82996, -1097.39001, 23.61000, 0.00000, 0.00000, 23.40000);
  19420. CreateDynamicObject(2690, 1742.15002, -1130.68994, 23.57000, 0.00000, 0.00000, 0.00000);
  19421. CreateDynamicObject(2690, 1740.47998, -1130.18005, 23.57000, 0.00000, 0.00000, 0.00000);
  19422. CreateDynamicObject(2690, 1741.50000, -1130.60999, 23.57000, 0.00000, 0.00000, 0.00000);
  19423. CreateDynamicObject(2690, 1740.96997, -1130.64001, 23.57000, 0.00000, 0.00000, 0.00000);
  19424. CreateDynamicObject(2690, 1736.84998, -1125.85999, 23.41000, 0.00000, 0.00000, 0.00000);
  19425. CreateDynamicObject(1368, 1702.41003, -1102.06995, 23.78000, 0.00000, 0.00000, -89.88000);
  19426. CreateDynamicObject(1368, 1702.41003, -1104.59998, 23.78000, 0.00000, 0.00000, -89.88000);
  19427. CreateDynamicObject(18075, 1728.70996, -1117.10999, 29.08000, 0.00000, 0.00000, 0.00000);
  19428. CreateDynamicObject(18075, 1716.81006, -1135.50000, 29.08000, 0.00000, 0.00000, -90.18000);
  19429. CreateDynamicObject(18075, 1742.42004, -1135.51001, 29.08000, 0.00000, 0.00000, -90.18000);
  19430. CreateDynamicObject(18075, 1716.77002, -1103.60999, 29.08000, 0.00000, 0.00000, -90.18000);
  19431. CreateDynamicObject(18075, 1742.64001, -1102.77002, 29.08000, 0.00000, 0.00000, -90.18000);
  19432. CreateDynamicObject(1215, 1752.56995, -1141.26001, 45.87000, 0.00000, 0.00000, 0.00000);
  19433. CreateDynamicObject(1215, 1704.16003, -1141.27002, 45.87000, 0.00000, 0.00000, 0.00000);
  19434. CreateDynamicObject(1215, 1704.18005, -1096.01001, 45.87000, 0.00000, 0.00000, 0.00000);
  19435. CreateDynamicObject(1215, 1752.56006, -1096.07996, 45.87000, 0.00000, 0.00000, 0.00000);
  19436. CreateDynamicObject(1432, 819.85999, -946.59998, 49.75000, 0.00000, 0.00000, 0.00000);
  19437. CreateDynamicObject(19461, 1790.56006, -1111.21997, 24.81000, 0.00000, 0.00000, 0.00000);
  19438. CreateDynamicObject(19415, 1779.42004, -1094.87000, 24.82000, 0.00000, 0.00000, -90.12000);
  19439. CreateDynamicObject(19461, 1783.62000, -1094.87000, 28.32000, 0.00000, 0.00000, -90.06000);
  19440. CreateDynamicObject(19461, 1773.00000, -1094.87000, 24.83000, 0.00000, 0.00000, -90.06000);
  19441. CreateDynamicObject(19461, 1764.38000, -1094.87000, 28.32000, 0.00000, 0.00000, -90.06000);
  19442. CreateDynamicObject(19415, 1766.66003, -1094.87000, 24.82000, 0.00000, 0.00000, -90.12000);
  19443. CreateDynamicObject(19461, 1760.23999, -1094.87000, 28.33000, 0.00000, 0.00000, -90.06000);
  19444. CreateDynamicObject(19397, 1756.29004, -1098.51001, 24.83000, 0.00000, 0.00000, 0.00000);
  19445. CreateDynamicObject(19461, 1790.56006, -1099.60010, 24.81000, 0.00000, 0.00000, 0.00000);
  19446. CreateDynamicObject(19461, 1790.52002, -1111.19995, 28.30000, 0.00000, 0.00000, 0.00000);
  19447. CreateDynamicObject(19461, 1787.89001, -1117.12000, 28.31000, 0.00000, 0.00000, -90.06000);
  19448. CreateDynamicObject(19461, 1778.28003, -1116.10999, 28.31000, 0.00000, 0.00000, -90.06000);
  19449. CreateDynamicObject(19461, 1787.89001, -1117.12000, 24.83000, 0.00000, 0.00000, -90.06000);
  19450. CreateDynamicObject(19461, 1778.28015, -1116.10999, 24.83000, 0.00000, 0.00000, -90.06000);
  19451. CreateDynamicObject(19331, 1782.14478, -1115.72253, 25.07000, 0.00000, 265.00000, -25.00000);
  19452. CreateDynamicObject(19461, 1774.00000, -1094.87000, 28.32000, 0.00000, 0.00000, -90.06000);
  19453. CreateDynamicObject(19461, 1760.23999, -1094.87000, 24.83000, 0.00000, 0.00000, -90.06000);
  19454. CreateDynamicObject(19461, 1785.79004, -1094.87000, 24.83000, 0.00000, 0.00000, -90.06000);
  19455. CreateDynamicObject(19461, 1785.63000, -1108.41003, 24.81000, 0.00000, 0.00000, -90.06000);
  19456. CreateDynamicObject(19461, 1773.12000, -1108.41003, 28.31000, 0.00000, 0.00000, -90.06000);
  19457. CreateDynamicObject(19397, 1779.20996, -1108.41003, 24.81000, 0.00000, 0.00000, 90.00000);
  19458. CreateDynamicObject(1502, 1778.43005, -1108.41003, 23.06000, 0.00000, 0.00000, 0.00000);
  19459. CreateDynamicObject(19461, 1773.12000, -1108.41003, 24.81000, 0.00000, 0.00000, -90.06000);
  19460. CreateDynamicObject(19461, 1782.75000, -1108.41003, 28.31000, 0.00000, 0.00000, -90.06000);
  19461. CreateDynamicObject(19461, 1792.39001, -1108.41003, 28.31000, 0.00000, 0.00000, -90.06000);
  19462. CreateDynamicObject(941, 1774.47998, -1107.72998, 23.53000, 0.00000, 0.00000, 0.00000);
  19463. CreateDynamicObject(937, 1776.84998, -1107.75000, 23.53000, 0.00000, 0.00000, 0.00000);
  19464. CreateDynamicObject(936, 1780.97998, -1107.70996, 23.55000, 0.00000, 0.00000, 180.00000);
  19465. CreateDynamicObject(2135, 1787.87000, -1095.43994, 23.07000, 0.00000, 0.00000, 0.00000);
  19466. CreateDynamicObject(2136, 1785.93994, -1095.43994, 23.07000, 0.00000, 0.00000, 0.00000);
  19467. CreateDynamicObject(2139, 1784.96997, -1095.44995, 23.06000, 0.00000, 0.00000, 0.00000);
  19468. CreateDynamicObject(2149, 1785.10999, -1095.28003, 24.28000, 0.00000, 0.00000, 0.00000);
  19469. CreateDynamicObject(2529, 1783.96997, -1095.43994, 23.07000, 0.00000, 0.00000, 0.00000);
  19470. CreateDynamicObject(2139, 1782.96997, -1095.44995, 23.06000, 0.00000, 0.00000, 0.00000);
  19471. CreateDynamicObject(2140, 1788.56995, -1096.38000, 22.93000, 0.00000, 0.00000, 270.00000);
  19472. CreateDynamicObject(2139, 1781.98999, -1095.44995, 23.06000, 0.00000, 0.00000, 0.00000);
  19473. CreateDynamicObject(2867, 1782.64001, -1095.27002, 24.12000, 0.00000, 0.00000, -32.46000);
  19474. CreateDynamicObject(2219, 1786.15002, -1095.43005, 24.18000, -25.00000, 25.00000, 47.00000);
  19475. CreateDynamicObject(18075, 1766.96997, -1101.21997, 29.08000, 0.00000, 0.00000, -90.18000);
  19476. CreateDynamicObject(18075, 1782.82996, -1107.08997, 29.08000, 0.00000, 0.00000, 0.00000);
  19477. CreateDynamicObject(1968, 1786.25000, -1098.68005, 23.59000, 0.00000, 0.00000, 0.00000);
  19478. CreateDynamicObject(1968, 1786.25000, -1100.67004, 23.59000, 0.00000, 0.00000, 0.00000);
  19479. CreateDynamicObject(1968, 1786.25000, -1102.64001, 23.59000, 0.00000, 0.00000, 0.00000);
  19480. CreateDynamicObject(1968, 1783.16003, -1102.64001, 23.59000, 0.00000, 0.00000, 0.00000);
  19481. CreateDynamicObject(1968, 1783.16003, -1100.67004, 23.59000, 0.00000, 0.00000, 0.00000);
  19482. CreateDynamicObject(1968, 1783.16003, -1098.68005, 23.59000, 0.00000, 0.00000, 0.00000);
  19483. CreateDynamicObject(1969, 1783.16003, -1104.00000, 23.59000, 0.00000, 0.00000, 0.00000);
  19484. CreateDynamicObject(1969, 1786.25000, -1104.00000, 23.59000, 0.00000, 0.00000, 0.00000);
  19485. CreateDynamicObject(19461, 1764.50000, -1107.96997, 24.81000, 0.00000, 0.00000, 0.00000);
  19486. CreateDynamicObject(19461, 1764.50000, -1107.96997, 28.30000, 0.00000, 0.00000, 0.00000);
  19487. CreateDynamicObject(1671, 1758.31006, -1107.78003, 23.52000, 0.00000, 0.00000, 180.00000);
  19488. CreateDynamicObject(1671, 1768.80005, -1105.14001, 23.52000, 0.00000, 0.00000, 180.00000);
  19489. CreateDynamicObject(1649, 1766.44995, -1094.80005, 24.68000, 0.00000, 0.00000, 180.00000);
  19490. CreateDynamicObject(1649, 1779.47998, -1094.85999, 24.68000, 0.00000, 0.00000, 0.00000);
  19491. CreateDynamicObject(1649, 1779.60999, -1094.82996, 24.68000, 0.00000, 0.00000, 180.00000);
  19492. CreateDynamicObject(3578, 1729.60999, -1101.35999, 22.30000, 0.00000, 0.00000, 90.00000);
  19493. CreateDynamicObject(1255, 816.98999, -943.64001, 50.30000, 0.00000, 0.00000, -85.74000);
  19494. CreateDynamicObject(19461, 1764.27002, -1103.18994, 24.83000, 0.00000, 0.00000, -90.06000);
  19495. CreateDynamicObject(19397, 1757.84998, -1103.18005, 24.83000, 0.00000, 0.00000, 90.00000);
  19496. CreateDynamicObject(19397, 1770.68994, -1103.18994, 24.83000, 0.00000, 0.00000, 90.00000);
  19497. CreateDynamicObject(19461, 1772.20996, -1108.04004, 24.83000, 0.00000, 0.00000, 0.00000);
  19498. CreateDynamicObject(19461, 1772.20996, -1108.04004, 28.33000, 0.00000, 0.00000, 0.00000);
  19499. CreateDynamicObject(19461, 1767.48999, -1103.20996, 28.33000, 0.00000, 0.00000, -90.06000);
  19500. CreateDynamicObject(19461, 1761.19995, -1103.19995, 28.33000, 0.00000, 0.00000, -90.06000);
  19501. CreateDynamicObject(19461, 1764.29004, -1103.18994, 28.33000, 0.00000, 0.00000, -90.06000);
  19502. CreateDynamicObject(1502, 1769.92004, -1103.19995, 23.06000, 0.00000, 0.00000, 0.00000);
  19503. CreateDynamicObject(1502, 1757.06006, -1103.18994, 23.06000, 0.00000, 0.00000, 0.00000);
  19504. CreateDynamicObject(1546, 1787.18994, -1095.23999, 24.21000, 0.00000, 0.00000, 0.00000);
  19505. CreateDynamicObject(2342, 1783.16003, -1100.62000, 23.98000, 0.00000, 0.00000, 0.00000);
  19506. CreateDynamicObject(2342, 1786.27002, -1104.04004, 23.98000, 0.00000, 0.00000, 0.00000);
  19507. CreateDynamicObject(2223, 1786.21997, -1098.59998, 23.92000, 0.00000, 0.00000, 0.00000);
  19508. CreateDynamicObject(2223, 1783.06006, -1102.64001, 23.92000, 0.00000, 0.00000, 0.00000);
  19509. CreateDynamicObject(1459, 1744.47998, -1130.51001, 23.69000, 0.00000, 0.00000, 0.00000);
  19510. CreateDynamicObject(1423, 1744.47998, -1129.46997, 23.77000, 0.00000, 0.00000, 0.00000);
  19511. CreateDynamicObject(1424, 1748.28003, -1130.15002, 23.60000, 0.00000, 0.00000, 0.00000);
  19512. CreateDynamicObject(1425, 1746.46997, -1129.51001, 23.49000, 0.00000, 0.00000, 0.00000);
  19513. CreateDynamicObject(1422, 1748.42004, -1129.47998, 23.47000, 0.00000, 0.00000, 0.00000);
  19514. CreateDynamicObject(1282, 1746.40002, -1130.34998, 23.58000, 0.00000, 0.00000, -89.94000);
  19515. CreateDynamicObject(2605, 1758.29004, -1106.38000, 23.46000, 0.00000, 0.00000, 0.00000);
  19516. CreateDynamicObject(1794, 1763.89001, -1104.80005, 23.07000, 0.00000, 0.00000, 180.00000);
  19517. CreateDynamicObject(1794, 1766.04004, -1104.80005, 23.07000, 0.00000, 0.00000, 180.00000);
  19518. CreateDynamicObject(2605, 1768.78003, -1103.82996, 23.46000, 0.00000, 0.00000, 0.00000);
  19519. CreateDynamicObject(1235, 1781.09998, -1095.32996, 23.58000, 0.00000, 0.00000, 0.00000);
  19520. CreateDynamicObject(1742, 1763.44995, -1103.16003, 23.07000, 0.00000, 0.00000, 0.00000);
  19521. CreateDynamicObject(1742, 1765.08997, -1103.15002, 23.07000, 0.00000, 0.00000, 0.00000);
  19522. CreateDynamicObject(1997, 1720.56995, -1126.44995, 23.06000, 0.00000, 0.00000, 0.00000);
  19523. CreateDynamicObject(2007, 1756.94995, -1107.78003, 23.06000, 0.00000, 0.00000, 90.00000);
  19524. CreateDynamicObject(2007, 1771.59998, -1105.64001, 23.06000, 0.00000, 0.00000, -90.90000);
  19525. CreateDynamicObject(2425, 1782.05005, -1095.04004, 24.12000, 0.00000, 0.00000, 0.00000);
  19526. CreateDynamicObject(1649, 1722.87000, -1142.39001, 28.10000, 0.00000, 0.00000, 0.00000);
  19527. CreateDynamicObject(1649, 1731.90002, -1142.40002, 28.20000, 0.00000, 0.00000, 0.00000);
  19528. CreateDynamicObject(1649, 1749.12000, -1142.38000, 28.10000, 0.00000, 0.00000, 180.00000);
  19529. CreateDynamicObject(1649, 1744.57996, -1142.38000, 28.20000, 0.00000, 0.00000, 180.00000);
  19530. CreateDynamicObject(7092, 1752.81006, -1134.68994, 81.86000, 0.00000, 0.00000, 0.00000);
  19531. CreateDynamicObject(1663, 1753.37000, -1103.12000, 23.54000, 0.00000, 0.00000, 0.00000);
  19532. CreateDynamicObject(1663, 1751.51001, -1103.12000, 23.54000, 0.00000, 0.00000, 0.00000);
  19533. CreateDynamicObject(11665, 1775.58997, -1096.62000, 23.76000, 0.00000, 0.00000, 90.00000);
  19534. CreateDynamicObject(1704, 1777.53003, -1097.71997, 23.07000, 0.00000, 0.00000, 180.00000);
  19535. CreateDynamicObject(1704, 1774.69995, -1097.69995, 23.07000, 0.00000, 0.00000, 180.00000);
  19536. CreateDynamicObject(2700, 1775.56995, -1095.23999, 25.03000, 0.00000, 0.00000, 270.00000);
  19537. CreateDynamicObject(2108, 1762.59998, -1103.52002, 23.06000, 0.00000, 0.00000, 0.00000);
  19538. CreateDynamicObject(2108, 1766.37000, -1103.56995, 23.06000, 0.00000, 0.00000, 0.00000);
  19539. CreateDynamicObject(19379, 1742.34998, -1099.65002, 23.01000, 0.00000, 90.00000, 0.00000);
  19540. CreateDynamicObject(19379, 1742.34998, -1109.26001, 23.01000, 0.00000, 90.00000, 0.00000);
  19541. CreateDynamicObject(19379, 1752.84998, -1109.26001, 23.01000, 0.00000, 90.00000, 0.00000);
  19542. CreateDynamicObject(19379, 1752.84998, -1099.65002, 23.03000, 0.00000, 90.00000, 0.00000);
  19543. CreateDynamicObject(19379, 1763.34998, -1099.65002, 23.01000, 0.00000, 90.00000, 0.00000);
  19544. CreateDynamicObject(19379, 1773.82996, -1099.65002, 23.01000, 0.00000, 90.00000, 0.00000);
  19545. CreateDynamicObject(19379, 1784.30005, -1099.65002, 23.01000, 0.00000, 90.00000, 0.00000);
  19546. CreateDynamicObject(19379, 1784.30005, -1109.25000, 23.01000, 0.00000, 90.00000, 0.00000);
  19547. CreateDynamicObject(19379, 1773.82996, -1109.25000, 23.01000, 0.00000, 90.00000, 0.00000);
  19548. CreateDynamicObject(19379, 1763.34998, -1109.25000, 22.99000, 0.00000, 90.00000, 0.00000);
  19549. CreateDynamicObject(19370, 1788.68005, -1106.73999, 22.99000, 0.00000, 90.00000, 0.00000);
  19550. CreateDynamicObject(19370, 1788.69995, -1103.55005, 22.99000, 0.00000, 90.00000, 0.00000);
  19551. CreateDynamicObject(19370, 1788.70996, -1100.37000, 23.01000, 0.00000, 90.00000, 0.00000);
  19552. CreateDynamicObject(19370, 1788.68005, -1097.22998, 23.01000, 0.00000, 90.00000, 0.00000);
  19553. CreateDynamicObject(19370, 1791.21997, -1110.05005, 23.01000, 0.00000, 90.00000, 0.00000);
  19554. CreateDynamicObject(19370, 1791.20996, -1113.19995, 23.01000, 0.00000, 90.00000, 0.00000);
  19555. CreateDynamicObject(19370, 1789.25000, -1115.56995, 23.01000, 0.00000, 90.00000, 0.00000);
  19556. CreateDynamicObject(19370, 1785.76001, -1115.54004, 23.01000, 0.00000, 90.00000, 0.00000);
  19557. CreateDynamicObject(19370, 1782.29004, -1115.56006, 23.01000, 0.00000, 90.00000, 0.00000);
  19558. CreateDynamicObject(19370, 1778.81006, -1114.57996, 23.01000, 0.00000, 90.00000, 0.00000);
  19559. CreateDynamicObject(19370, 1775.32996, -1114.57996, 23.01000, 0.00000, 90.00000, 0.00000);
  19560. CreateDynamicObject(19370, 1771.84998, -1114.57996, 22.99000, 0.00000, 90.00000, 0.00000);
  19561. CreateDynamicObject(2835, 1765.06995, -1105.68994, 23.08000, 0.00000, 0.00000, 0.00000);
  19562. CreateDynamicObject(2836, 1757.30005, -1104.31995, 23.08000, 0.00000, 0.00000, 0.00000);
  19563. CreateDynamicObject(19461, 1807.62122, -1099.60059, 24.81000, 0.00000, 0.00000, 0.00000);
  19564. CreateDynamicObject(19415, 1807.62122, -1105.47998, 24.81000, 0.00000, 0.00000, 0.00000);
  19565. CreateDynamicObject(19461, 1807.62122, -1111.21997, 24.81000, 0.00000, 0.00000, 0.00000);
  19566. CreateDynamicObject(1649, 1807.62122, -1105.76001, 24.68000, 0.00000, 0.00000, 90.00000);
  19567. CreateDynamicObject(19461, 1807.62122, -1101.58997, 28.30000, 0.00000, 0.00000, 0.00000);
  19568. CreateDynamicObject(19461, 1807.62122, -1111.19995, 28.30000, 0.00000, 0.00000, 0.00000);
  19569. CreateDynamicObject(19461, 1795.09143, -1094.87000, 28.32000, 0.00000, 0.00000, -90.06000);
  19570. CreateDynamicObject(19461, 1760.23999, -1094.87000, 28.33000, 0.00000, 0.00000, -90.06000);
  19571. CreateDynamicObject(19415, 1803.93176, -1094.87000, 24.82000, 0.00000, 0.00000, -90.12000);
  19572. CreateDynamicObject(19461, 1798.12207, -1094.87000, 24.83000, 0.00000, 0.00000, -90.06000);
  19573. CreateDynamicObject(19461, 1801.95825, -1094.87000, 28.32000, 0.00000, 0.00000, -90.06000);
  19574. CreateDynamicObject(1649, 1803.07300, -1094.87000, 24.68000, 0.00000, 0.00000, 180.00000);
  19575. CreateDynamicObject(1649, 1803.07300, -1094.87000, 24.68000, 0.00000, 0.00000, 0.00000);
  19576. CreateDynamicObject(1649, 1807.62122, -1105.76001, 24.68000, 0.00000, 0.00000, -90.00000);
  19577. CreateDynamicObject(19397, 1790.56006, -1105.46411, 24.81000, 0.00000, 0.00000, 0.00000);
  19578. CreateDynamicObject(19379, 1795.51477, -1104.55017, 23.01000, 0.00000, 90.00000, 0.00000);
  19579. CreateDynamicObject(19379, 1795.51477, -1099.67505, 23.01000, 0.00000, 90.00000, 0.00000);
  19580. CreateDynamicObject(19379, 1802.34436, -1104.48071, 23.01000, 0.00000, 90.00000, 0.00000);
  19581. CreateDynamicObject(19379, 1802.39673, -1099.67505, 23.01000, 0.00000, 90.00000, 0.00000);
  19582. CreateDynamicObject(1502, 1790.53430, -1106.21399, 23.06000, 0.00000, 0.00000, 90.00000);
  19583. CreateDynamicObject(19369, 1792.19299, -1103.87488, 22.50000, 0.00000, 0.00000, 90.00000);
  19584. CreateDynamicObject(1796, 1794.13123, -1103.24817, 23.07000, 0.00000, 0.00000, 90.00000);
  19585. CreateDynamicObject(1796, 1794.13123, -1099.53174, 23.07000, 0.00000, 0.00000, 90.00000);
  19586. CreateDynamicObject(2087, 1790.83545, -1101.83203, 23.07000, 0.00000, 0.00000, 90.00000);
  19587. CreateDynamicObject(2087, 1790.83545, -1098.07202, 23.07000, 0.00000, 0.00000, 90.00000);
  19588. CreateDynamicObject(1796, 1794.13123, -1095.70630, 23.07000, 0.00000, 0.00000, 90.00000);
  19589. CreateDynamicObject(19461, 1790.56006, -1108.24719, 28.30000, 0.00000, 0.00000, 0.00000);
  19590. CreateDynamicObject(19369, 1797.53296, -1103.87488, 22.50000, 0.00000, 0.00000, 90.00000);
  19591. CreateDynamicObject(19369, 1799.13416, -1102.34753, 22.76000, 0.00000, 0.00000, 0.00000);
  19592. CreateDynamicObject(19369, 1800.73315, -1103.87488, 22.50000, 0.00000, 0.00000, 90.00000);
  19593. CreateDynamicObject(19369, 1805.95313, -1103.87488, 22.50000, 0.00000, 0.00000, 90.00000);
  19594. CreateDynamicObject(19369, 1799.13416, -1099.17432, 22.76000, 0.00000, 0.00000, 0.00000);
  19595. CreateDynamicObject(19369, 1799.13416, -1096.54956, 22.76000, 0.00000, 0.00000, 0.00000);
  19596. CreateDynamicObject(1796, 1802.69116, -1103.24817, 23.07000, 0.00000, 0.00000, 90.00000);
  19597. CreateDynamicObject(1796, 1802.69116, -1099.53174, 23.07000, 0.00000, 0.00000, 90.00000);
  19598. CreateDynamicObject(1796, 1802.69116, -1095.70630, 23.07000, 0.00000, 0.00000, 90.00000);
  19599. CreateDynamicObject(2087, 1799.39539, -1101.83203, 23.07000, 0.00000, 0.00000, 90.00000);
  19600. CreateDynamicObject(2087, 1799.39539, -1098.07202, 23.07000, 0.00000, 0.00000, 90.00000);
  19601. CreateDynamicObject(1796, 1795.57117, -1103.02820, 23.07000, 0.00000, 0.00000, -90.00000);
  19602. CreateDynamicObject(1796, 1795.57117, -1099.31165, 23.07000, 0.00000, 0.00000, -90.00000);
  19603. CreateDynamicObject(1796, 1795.57190, -1095.48389, 23.07000, 0.00000, 0.00000, -90.00000);
  19604. CreateDynamicObject(2087, 1798.87354, -1100.77197, 23.07000, 0.00000, 0.00000, -90.00000);
  19605. CreateDynamicObject(2087, 1798.87756, -1097.01599, 23.07000, 0.00000, 0.00000, -90.00000);
  19606. CreateDynamicObject(1796, 1804.05115, -1103.02820, 23.07000, 0.00000, 0.00000, -90.00000);
  19607. CreateDynamicObject(1796, 1804.05115, -1099.31165, 23.07000, 0.00000, 0.00000, -90.00000);
  19608. CreateDynamicObject(2087, 1807.37354, -1100.77197, 23.07000, 0.00000, 0.00000, -90.00000);
  19609. CreateDynamicObject(18075, 1798.90942, -1101.48120, 29.08000, 0.00000, 0.00000, 0.00000);
  19610. CreateDynamicObject(3578, 1721.18005, -1135.05005, 22.30000, 0.00000, 0.00000, 90.00000);
  19611. CreateDynamicObject(19415, 1791.93530, -1094.87000, 24.82000, 0.00000, 0.00000, -90.12000);
  19612. CreateDynamicObject(1649, 1792.76953, -1094.87000, 24.68000, 0.00000, 0.00000, 0.00000);
  19613. CreateDynamicObject(1649, 1792.76953, -1094.87000, 24.68000, 0.00000, 0.00000, 180.00000);
  19614. CreateDynamicObject(1498, 1703.01855, -1099.90955, 23.05900, 0.00000, 0.00000, 90.00000);
  19615. CreateDynamicObject(1498, 1702.99060, -1096.89185, 23.05900, 0.00000, 0.00000, -90.00000);
  19616. CreateDynamicObject(1498, 1750.65540, -1094.84595, 23.04510, 0.00000, 0.00000, 0.00000);
  19617. CreateDynamicObject(1498, 1753.67786, -1094.81897, 23.04510, 0.00000, 0.00000, 180.00000);
  19618. CreateDynamicObject(2200, 1775.28821, -1115.87366, 23.07780, 0.00000, 0.00000, 180.00000);
  19619. CreateDynamicObject(2200, 1777.51404, -1115.87366, 23.07780, 0.00000, 0.00000, 180.00000);
  19620. CreateDynamicObject(2200, 1779.73682, -1115.87366, 23.07780, 0.00000, 0.00000, 180.00000);
  19621. CreateDynamicObject(2200, 1781.96082, -1115.87366, 23.07780, 0.00000, 0.00000, 180.00000);
  19622. CreateDynamicObject(2200, 1781.25183, -1112.36035, 23.07780, 0.00000, 0.00000, 0.00000);
  19623. CreateDynamicObject(2200, 1779.02954, -1112.36035, 23.07780, 0.00000, 0.00000, 0.00000);
  19624. CreateDynamicObject(2200, 1776.80957, -1112.36035, 23.07780, 0.00000, 0.00000, 0.00000);
  19625. CreateDynamicObject(2200, 1782.51294, -1112.05347, 23.07780, 0.00000, 0.00000, 180.00000);
  19626. CreateDynamicObject(2200, 1780.28796, -1112.05347, 23.07780, 0.00000, 0.00000, 180.00000);
  19627. CreateDynamicObject(2200, 1778.07104, -1112.05347, 23.07780, 0.00000, 0.00000, 180.00000);
  19628. CreateDynamicObject(2200, 1773.64246, -1113.97485, 23.07780, 0.00000, 0.00000, 90.00000);
  19629. CreateDynamicObject(2200, 1773.64246, -1111.74939, 23.07780, 0.00000, 0.00000, 90.00000);
  19630. CreateDynamicObject(1208, 1777.53979, -1108.78809, 23.08890, 0.00000, 0.00000, 180.00000);
  19631. CreateDynamicObject(1208, 1776.83984, -1108.78809, 23.08890, 0.00000, 0.00000, 180.00000);
  19632. CreateDynamicObject(1208, 1776.13977, -1108.78809, 23.08890, 0.00000, 0.00000, 180.00000);
  19633. CreateDynamicObject(1208, 1775.41980, -1108.78809, 23.08890, 0.00000, 0.00000, 180.00000);
  19634. CreateDynamicObject(1208, 1774.71985, -1108.78809, 23.08890, 0.00000, 0.00000, 180.00000);
  19635. CreateDynamicObject(19331, 1781.52966, -1115.71790, 25.07000, 0.00000, 265.00000, -4.00000);
  19636. CreateDynamicObject(19331, 1781.00073, -1115.69910, 25.07000, 0.00000, 265.00000, -33.00000);
  19637. CreateDynamicObject(19331, 1780.49707, -1115.77954, 25.07000, 0.00000, 265.00000, -4.00000);
  19638. CreateDynamicObject(19331, 1779.88684, -1115.64880, 25.07000, 0.00000, 265.00000, -40.00000);
  19639. CreateDynamicObject(19331, 1779.37720, -1115.62659, 25.07000, 0.00000, 265.00000, 40.00000);
  19640. CreateDynamicObject(19331, 1778.76819, -1115.71338, 25.07000, 0.00000, 265.00000, -6.00000);
  19641. CreateDynamicObject(19331, 1778.26331, -1115.70239, 25.07000, 0.00000, 265.00000, 4.00000);
  19642. CreateDynamicObject(19331, 1777.65649, -1115.68921, 25.07000, 0.00000, 265.00000, -25.00000);
  19643. CreateDynamicObject(19331, 1777.14661, -1115.70398, 25.07000, 0.00000, 265.00000, 47.00000);
  19644. CreateDynamicObject(19331, 1776.52551, -1115.72192, 25.07000, 0.00000, 265.00000, -11.00000);
  19645. CreateDynamicObject(19331, 1776.01550, -1115.72620, 25.07000, 0.00000, 265.00000, 4.00000);
  19646. CreateDynamicObject(19331, 1775.50549, -1115.73047, 25.07000, 0.00000, 265.00000, -55.00000);
  19647. CreateDynamicObject(19331, 1774.97852, -1115.63733, 25.07000, 0.00000, 265.00000, -25.00000);
  19648. CreateDynamicObject(19331, 1774.36487, -1115.74731, 25.07000, 0.00000, 265.00000, -55.00000);
  19649. CreateDynamicObject(19330, 1773.77942, -1113.69958, 25.07000, -4.00000, -91.00000, -113.00000);
  19650. CreateDynamicObject(19330, 1773.85120, -1113.08044, 25.07000, -4.00000, -91.00000, -55.00000);
  19651. CreateDynamicObject(19330, 1773.80261, -1112.64807, 25.07000, -4.00000, -91.00000, -85.00000);
  19652. CreateDynamicObject(19330, 1773.81299, -1111.98816, 25.07000, -4.00000, -91.00000, -53.00000);
  19653. CreateDynamicObject(19330, 1773.81091, -1111.32727, 25.07000, -4.00000, -91.00000, -127.00000);
  19654. CreateDynamicObject(19330, 1773.87378, -1110.18103, 25.07000, -4.00000, -91.00000, -62.00000);
  19655. CreateDynamicObject(19330, 1773.91455, -1110.68677, 25.07000, -4.00000, -91.00000, -125.00000);
  19656. CreateDynamicObject(19331, 1773.86304, -1115.73877, 25.07000, 0.00000, 265.00000, 11.00000);
  19657. CreateDynamicObject(19330, 1782.68787, -1111.86804, 25.07000, -4.00000, -91.00000, 10.00000);
  19658. CreateDynamicObject(19330, 1782.23010, -1111.83459, 25.07000, -4.00000, -91.00000, 18.00000);
  19659. CreateDynamicObject(19330, 1781.61719, -1111.82056, 25.07000, -4.00000, -91.00000, -40.00000);
  19660. CreateDynamicObject(19330, 1781.08679, -1111.93933, 25.07000, -4.00000, -91.00000, -16.00000);
  19661. CreateDynamicObject(19330, 1780.49768, -1111.90503, 25.07000, -4.00000, -91.00000, 25.00000);
  19662. CreateDynamicObject(19330, 1779.99109, -1111.83813, 25.07000, -4.00000, -91.00000, -40.00000);
  19663. CreateDynamicObject(19330, 1779.38184, -1111.77942, 25.07000, -4.00000, -91.00000, 47.00000);
  19664. CreateDynamicObject(19330, 1778.78003, -1111.78455, 25.07000, -4.00000, -91.00000, -40.00000);
  19665. CreateDynamicObject(19330, 1778.15027, -1111.89075, 25.07000, -4.00000, -91.00000, -12.00000);
  19666. CreateDynamicObject(19330, 1777.64539, -1111.88013, 25.07000, -4.00000, -91.00000, -25.00000);
  19667. CreateDynamicObject(19330, 1777.14551, -1111.87158, 25.07000, -4.00000, -91.00000, 9.00000);
  19668. CreateDynamicObject(19330, 1776.63965, -1111.85986, 25.07000, -4.00000, -91.00000, 47.00000);
  19669. CreateDynamicObject(19330, 1776.53137, -1112.47644, 25.07000, -4.00000, -91.00000, 178.00000);
  19670. CreateDynamicObject(19330, 1777.14514, -1112.58252, 25.07000, -4.00000, -91.00000, 149.00000);
  19671. CreateDynamicObject(19330, 1777.56812, -1112.50891, 25.07000, -4.00000, -91.00000, -178.00000);
  19672. CreateDynamicObject(19330, 1778.16846, -1112.60168, 25.07000, -4.00000, -91.00000, -193.00000);
  19673. CreateDynamicObject(19369, 1783.08862, -1113.25757, 24.81000, 0.00000, 0.00000, 0.00000);
  19674. CreateDynamicObject(19397, 1783.08862, -1110.05676, 24.81000, 0.00000, 0.00000, 0.00000);
  19675. CreateDynamicObject(19369, 1783.08862, -1116.44299, 24.81000, 0.00000, 0.00000, 0.00000);
  19676. CreateDynamicObject(19369, 1783.08862, -1116.44495, 28.31000, 0.00000, 0.00000, 0.00000);
  19677. CreateDynamicObject(19369, 1783.08862, -1113.25757, 28.31000, 0.00000, 0.00000, 0.00000);
  19678. CreateDynamicObject(19369, 1783.08862, -1110.05676, 28.31000, 0.00000, 0.00000, 0.00000);
  19679. CreateDynamicObject(1502, 1783.10864, -1110.81006, 23.04000, 0.00000, 0.00000, 90.00000);
  19680. CreateDynamicObject(19461, 1786.61902, -1119.57288, 24.83000, 0.00000, 0.00000, -90.06000);
  19681. CreateDynamicObject(19461, 1777.52209, -1119.56335, 24.83000, 0.00000, 0.00000, -90.06000);
  19682. CreateDynamicObject(19461, 1777.52209, -1119.56335, 28.31000, 0.00000, 0.00000, -90.06000);
  19683. CreateDynamicObject(19461, 1786.61902, -1119.57288, 28.31000, 0.00000, 0.00000, -90.06000);
  19684. CreateDynamicObject(19369, 1786.79395, -1111.62354, 24.81000, 0.00000, 0.00000, 90.00000);
  19685. CreateDynamicObject(2527, 1784.63379, -1113.18726, 23.08350, 0.00000, 0.00000, 0.00000);
  19686. CreateDynamicObject(2527, 1785.65552, -1113.18616, 23.08350, 0.00000, 0.00000, 0.00000);
  19687. CreateDynamicObject(2527, 1786.68213, -1113.18616, 23.08350, 0.00000, 0.00000, 0.00000);
  19688. CreateDynamicObject(2523, 1788.06995, -1108.98718, 23.10110, 0.00000, 0.00000, 0.00000);
  19689. CreateDynamicObject(2523, 1787.06995, -1108.98718, 23.10110, 0.00000, 0.00000, 0.00000);
  19690. CreateDynamicObject(2523, 1786.06995, -1108.98718, 23.10110, 0.00000, 0.00000, 0.00000);
  19691. CreateDynamicObject(2523, 1785.06995, -1108.98718, 23.10110, 0.00000, 0.00000, 0.00000);
  19692. CreateDynamicObject(2523, 1789.06995, -1108.98718, 23.10110, 0.00000, 0.00000, 0.00000);
  19693. CreateDynamicObject(19369, 1784.76855, -1115.98303, 24.07000, 0.00000, 0.00000, 0.00000);
  19694. CreateDynamicObject(1502, 1783.15796, -1114.48438, 23.04000, 0.00000, 0.00000, 0.00000);
  19695. CreateDynamicObject(1502, 1784.83777, -1114.48438, 23.04000, 0.00000, 0.00000, 0.00000);
  19696. CreateDynamicObject(19369, 1786.44861, -1115.98303, 24.07000, 0.00000, 0.00000, 0.00000);
  19697. CreateDynamicObject(1502, 1786.51782, -1114.48438, 23.04000, 0.00000, 0.00000, 0.00000);
  19698. CreateDynamicObject(19369, 1788.10864, -1115.98303, 24.07000, 0.00000, 0.00000, 0.00000);
  19699. CreateDynamicObject(19369, 1791.33118, -1114.46082, 24.83000, 0.00000, 0.00000, 90.00000);
  19700. CreateDynamicObject(19369, 1791.33118, -1114.46082, 28.31000, 0.00000, 0.00000, 90.00000);
  19701. CreateDynamicObject(2525, 1787.29626, -1116.51965, 23.09340, 0.00000, 0.00000, 180.00000);
  19702. CreateDynamicObject(2525, 1785.65625, -1116.51965, 23.09340, 0.00000, 0.00000, 180.00000);
  19703. CreateDynamicObject(2525, 1783.95630, -1116.51965, 23.09340, 0.00000, 0.00000, 180.00000);
  19704. CreateDynamicObject(2523, 1784.06995, -1108.98718, 23.10110, 0.00000, 0.00000, 0.00000);
  19705. CreateDynamicObject(19369, 1784.75403, -1111.62354, 24.81000, 0.00000, 0.00000, 90.00000);
  19706. CreateDynamicObject(2527, 1783.61401, -1113.18726, 23.08350, 0.00000, 0.00000, 0.00000);
  19707. CreateDynamicObject(2527, 1787.70215, -1113.18616, 23.08350, 0.00000, 0.00000, 0.00000);
  19708. CreateDynamicObject(1502, 1788.17786, -1114.48438, 23.04000, 0.00000, 0.00000, 0.00000);
  19709. CreateDynamicObject(19369, 1789.80859, -1115.98303, 24.83000, 0.00000, 0.00000, 0.00000);
  19710. CreateDynamicObject(19369, 1789.80859, -1115.98303, 28.31000, 0.00000, 0.00000, 0.00000);
  19711. CreateDynamicObject(2525, 1788.95630, -1116.51965, 23.09340, 0.00000, 0.00000, 180.00000);
  19712. CreateDynamicObject(19330, 1778.75940, -1112.54224, 25.07000, -4.00000, -91.00000, -156.00000);
  19713. CreateDynamicObject(19330, 1779.34583, -1112.48743, 25.07000, -4.00000, -91.00000, -193.00000);
  19714. CreateDynamicObject(19330, 1779.88721, -1112.52405, 25.07000, -4.00000, -91.00000, -178.00000);
  19715. CreateDynamicObject(19330, 1780.56470, -1112.51501, 25.07000, -4.00000, -91.00000, -229.00000);
  19716. CreateDynamicObject(19330, 1781.07898, -1112.59021, 25.07000, -4.00000, -91.00000, -120.00000);
  19717. CreateDynamicObject(19330, 1781.59680, -1112.56604, 25.07000, -4.00000, -91.00000, -185.00000);
  19718. CreateDynamicObject(19330, 1782.11133, -1112.54016, 25.07000, -4.00000, -91.00000, -135.00000);
  19719. CreateDynamicObject(19330, 1782.72241, -1112.61157, 25.07000, -4.00000, -91.00000, -200.00000);*/
  19720. // Inglewood Stacks
  19721. CreateDynamicObject(19121, 2124.371093, -1765.267456, 13.145559, 0.000000, 0.000000, 267.547332);
  19722. CreateDynamicObject(19121, 2124.381347, -1769.873168, 13.145559, 0.000000, 0.000000, 267.547332);
  19723. CreateDynamicObject(19121, 2124.396484, -1774.649047, 13.145559, 0.000000, 0.000000, 267.547332);
  19724. CreateDynamicObject(19121, 2124.419677, -1779.435668, 13.145559, 0.000000, 0.000000, 267.547332);
  19725. CreateDynamicObject(19121, 2124.382568, -1784.029174, 13.145559, 0.000000, 0.000000, 267.547332);
  19726. CreateDynamicObject(1257, 2080.262207, -1769.403686, 13.800909, 0.000000, 0.000000, 165.000000);
  19727. CreateDynamicObject(1346, 2122.608886, -1790.332153, 13.887385, 0.000000, 0.000000, 180.000000);
  19728. CreateDynamicObject(1256, 2119.659667, -1790.556152, 13.200844, 0.000000, 0.000000, -90.000000);
  19729. CreateDynamicObject(1285, 2106.148193, -1790.754638, 13.098064, 0.000000, 0.000000, 0.000000);
  19730. CreateDynamicObject(1287, 2106.840820, -1790.747070, 13.090840, 0.000000, 0.000000, 359.374725);
  19731. CreateDynamicObject(970, 2098.605224, -1784.011840, 13.037828, 0.000000, 0.000000, 80.976753);
  19732. CreateDynamicObject(970, 2099.258789, -1779.893310, 13.037828, 0.000000, 0.000000, 80.976753);
  19733. CreateDynamicObject(970, 2099.906738, -1775.825195, 13.037828, 0.000000, 0.000000, 80.976753);
  19734. CreateDynamicObject(970, 2100.548583, -1771.775146, 13.037828, 0.000000, 0.000000, 80.976753);
  19735. CreateDynamicObject(970, 2101.199462, -1767.676147, 13.037828, 0.000000, 0.000000, 80.976753);
  19736. CreateDynamicObject(970, 2100.351318, -1786.065185, 13.037828, 0.000000, 0.000000, 180.000000);
  19737. CreateDynamicObject(970, 2104.491455, -1786.065185, 13.037828, 0.000000, 0.000000, 180.000000);
  19738. CreateDynamicObject(970, 2108.612792, -1786.065185, 13.037828, 0.000000, 0.000000, 180.000000);
  19739. CreateDynamicObject(970, 2112.732666, -1786.065185, 13.037828, 0.000000, 0.000000, 180.000000);
  19740. CreateDynamicObject(970, 2116.863769, -1786.065185, 13.037828, 0.000000, 0.000000, 180.000000);
  19741. CreateDynamicObject(970, 2120.975830, -1786.065185, 13.037828, 0.000000, 0.000000, 180.000000);
  19742. // Police Station
  19743. CreateDynamicObject(1257, 1522.465332, -1681.823730, 13.770749, 0.000000, 0.000000, 180.000000);
  19744. CreateDynamicObject(970, 1551.633422, -1617.501953, 12.936862, 0.000000, 0.000000, 0.000000);
  19745. CreateDynamicObject(970, 1555.783447, -1617.501953, 12.936862, 0.000000, 0.000000, 0.000000);
  19746. CreateDynamicObject(970, 1559.933471, -1617.501953, 12.936862, 0.000000, 0.000000, 0.000000);
  19747. CreateDynamicObject(970, 1564.074096, -1617.501953, 12.936862, 0.000000, 0.000000, 0.000000);
  19748. CreateDynamicObject(970, 1568.224609, -1617.501953, 12.936862, 0.000000, 0.000000, 0.000000);
  19749. CreateDynamicObject(970, 1572.365112, -1617.501953, 12.936862, 0.000000, 0.000000, 0.000000);
  19750. CreateDynamicObject(970, 1576.505249, -1617.501953, 12.936862, 0.000000, 0.000000, 0.000000);
  19751. CreateDynamicObject(970, 1580.645019, -1617.501953, 12.936862, 0.000000, 0.000000, 0.000000);
  19752. CreateDynamicObject(970, 1582.715698, -1615.421997, 12.936862, 0.000000, 0.000000, 90.000000);
  19753. CreateDynamicObject(970, 1582.715698, -1604.718017, 12.936862, 0.000000, 0.000000, 90.000000);
  19754. CreateDynamicObject(997, 1544.565063, -1617.910156, 12.636869, 0.000000, 0.000000, 269.882934);
  19755. CreateDynamicObject(997, 1544.561523, -1619.519531, 12.636869, 0.000000, 0.000000, 269.882934);
  19756. CreateDynamicObject(19121, 1541.145751, -1616.433227, 12.972808, 0.000000, 0.000000, 86.229026);
  19757. CreateDynamicObject(19121, 1541.965332, -1604.001220, 12.972808, 0.000000, 0.000000, 86.229026);
  19758. // Gym objects
  19759. CreateDynamicObject(2916, 772.496765, 5.770771, 999.879760, 0.000000, 0.000000, -90.000000);
  19760. CreateDynamicObject(2916, 772.527404, 5.051626, 999.879760, 0.000000, 0.000000, -90.000000);
  19761. }
  19762. LoadJobs()
  19763. {
  19764. // Transporter
  19765. JobVehicles[Transporter][0] = SpawnVehicle(554, 2182.5713, -2322.6948, 13.6338, 45.0000, 43, 32, 600); // truck 1
  19766. JobVehicles[Transporter][1] = SpawnVehicle(554, 2185.3015, -2320.1089, 13.6460, 45.0000, 12, 32, 600); // truck 2
  19767. JobVehicles[Transporter][2] = SpawnVehicle(554, 2187.9258, -2317.3552, 13.6310, 45.0000, 14, 32, 600); // truck 3
  19768. JobVehicles[Transporter][3] = SpawnVehicle(554, 2156.8408, -2297.3008, 13.5454, 225.0000, 53, 32, 600); // truck 4
  19769. JobVehicles[Transporter][4] = SpawnVehicle(554, 2159.5317, -2294.3271, 13.5573, 225.0000, 15, 32, 600); // truck 5
  19770. JobVehicles[Transporter][5] = SpawnVehicle(554, 2162.3831, -2291.3997, 13.5747, 225.0000, 45, 32, 600); // truck 6
  19771. JobVehicles[Transporter][6] = SpawnVehicle(554, 2189.1882, -2298.8201, 13.6304, 44.6955, 45, 32, 600);
  19772. JobVehicles[Transporter][7] = SpawnVehicle(554, 2185.9622, -2301.6887, 13.6331, 44.8988, 45, 32, 600);
  19773. JobVehicles[Transporter][8] = SpawnVehicle(554, 2182.6394, -2305.4114, 13.6295, 45.4527, 45, 32, 600);
  19774. JobVehicles[Transporter][9] = SpawnVehicle(554, 2165.9766, -2308.4241, 13.6300, 314.1117, 45, 32, 600);
  19775. JobVehicles[Transporter][10] = SpawnVehicle(554, 2163.0237, -2305.6199, 13.6351, 313.9506, 45, 32, 600);
  19776. CreateDynamicPickup(1318, 23, 2175.3335, -2266.9937, 13.3891);
  19777. CreateDynamic3DTextLabel("Use /load to begin delivery", COLOR_GREY, 2175.3335, -2266.9937, 13.3891, 15.0);
  19778. // Forklifter
  19779. JobVehicles[Forklifter][0] = SpawnVehicle(530, 2778.5310, -2425.0867, 13.3935, 0.0000, 6, 6, 600); // forklift 1
  19780. JobVehicles[Forklifter][1] = SpawnVehicle(530, 2778.6404, -2410.1257, 13.4024, 180.0000, 6, 6, 600); // forklift 2
  19781. JobVehicles[Forklifter][2] = SpawnVehicle(530, 2787.8252, -2425.3438, 13.3990, 0.0000, 6, 6, 600); // forklift 3
  19782. JobVehicles[Forklifter][3] = SpawnVehicle(530, 2788.1560, -2410.3755, 13.3962, 180.0000, 6, 6, 600); // forklift 4
  19783. JobVehicles[Forklifter][4] = SpawnVehicle(530, 2795.1589, -2425.3408, 13.3954, 0.0000, 6, 6, 600); // forklift 5
  19784. JobVehicles[Forklifter][5] = SpawnVehicle(530, 2795.1826, -2409.9617, 13.3972, 180.0000, 6, 6, 600); // forklift 6
  19785. // Miner
  19786. CreateDynamic3DTextLabel("Use /work to begin mining", COLOR_GREY, -1858.5516, -1651.3812, 26.0788, 15.0);
  19787. CreateDynamic3DTextLabel("Use /work to begin mining", COLOR_GREY, -1790.7683, -1649.2581, 32.86813, 15.0);
  19788. CreateDynamic3DTextLabel("Use /work to begin mining", COLOR_GREY, -1775.1649, -1643.3854, 29.5218, 15.0);
  19789. CreateDynamic3DTextLabel("Use /work to begin mining", COLOR_GREY, -1801.5831, -1649.7592, 26.5446, 15.0);
  19790. // Taxi Driver
  19791. /*JobVehicles[TaxiDriver][0] = SpawnVehicle(420, 1777.6617, -1886.1866, 13.1629, 270.0000, 6, 6, 600); // taxi 1
  19792. JobVehicles[TaxiDriver][1] = SpawnVehicle(420, 1777.6617, -1890.7469, 13.1629, 270.0000, 6, 6, 600); // taxi 2
  19793. JobVehicles[TaxiDriver][2] = SpawnVehicle(420, 1777.6617, -1895.3072, 13.1629, 270.0000, 6, 6, 600); // taxi 3
  19794. JobVehicles[TaxiDriver][3] = SpawnVehicle(420, 1777.6617, -1899.8675, 13.1629, 270.0000, 6, 6, 600); // taxi 4
  19795. JobVehicles[TaxiDriver][4] = SpawnVehicle(420, 1777.6617, -1904.4278, 13.1629, 270.0000, 6, 6, 600); // taxi 5
  19796. JobVehicles[TaxiDriver][5] = SpawnVehicle(420, 1777.6617, -1908.9881, 13.1629, 270.0000, 6, 6, 600); // taxi 6*/
  19797. // Pizzaboy
  19798. JobVehicles[Pizzaboy][0] = SpawnVehicle(448, 2097.8745, -1800.4648, 12.9810, 90.0000, 3, 6, 600); // pizza 1
  19799. JobVehicles[Pizzaboy][1] = SpawnVehicle(448, 2097.8745, -1798.5289, 12.9810, 90.0000, 3, 6, 600); // pizza 2
  19800. JobVehicles[Pizzaboy][2] = SpawnVehicle(448, 2097.8745, -1796.5930, 12.9810, 90.0000, 3, 6, 600); // pizza 3
  19801. JobVehicles[Pizzaboy][3] = SpawnVehicle(448, 2097.8745, -1794.6535, 12.9810, 90.0000, 3, 6, 600); // pizza 4
  19802. JobVehicles[Pizzaboy][4] = SpawnVehicle(448, 2097.8745, -1792.7140, 12.9810, 90.0000, 3, 6, 600); // pizza 5
  19803. //2092.8154,-1796.5688,13.3828
  19804. CreateDynamicPickup(1582, 23, 2092.8154,-1796.5688,13.3828);
  19805. CreateDynamic3DTextLabel("Use /work to begin delivering", COLOR_GREY, 2092.8154,-1796.5688,13.3828, 10.0);
  19806. /*CreateDynamicPickup(1582, 23, 2103.0977, -1804.2975, 13.5547);
  19807. CreateDynamic3DTextLabel("Use /work to begin delivering", COLOR_GREY, 2103.0977, -1804.2975, 13.5547, 10.0);*/
  19808. // Trashman
  19809. JobVehicles[Trashman][0] = SpawnVehicle(408, 2189.9836, -1991.2726, 14.0007, 90.0000, 26, 26, 600); // trash 1
  19810. JobVehicles[Trashman][1] = SpawnVehicle(408, 2189.9897, -1986.3273, 14.1235, 90.0000, 26, 26, 600); // trash 2
  19811. JobVehicles[Trashman][2] = SpawnVehicle(408, 2157.7324, -1970.5673, 14.0034, 270.0000, 26, 26, 600); // trash 3
  19812. JobVehicles[Trashman][3] = SpawnVehicle(408, 2146.7019, -1970.3008, 14.1220, 270.0000, 26, 26, 600); // trash 4
  19813. JobVehicles[Trashman][4] = SpawnVehicle(408, 2134.6724, -1969.9525, 14.1239, 270.0000, 26, 26, 600); // trash 5
  19814. /*// Transportation Airline pilot
  19815. JobVehicles[Tairline][0] = SpawnVehicle(553, 1975.0724, -2382.0010, 14.8804, 0.0000, 6, 6, 600); // Airline 1
  19816. JobVehicles[Tairline][1] = SpawnVehicle(553, 1972.8947, -2316.1907, 14.8827, 180.0000, 6, 6, 600); // Airline 2
  19817. JobVehicles[Tairline][2] = SpawnVehicle(553, 1921.6256, -2250.4507, 14.8808, 0.0000, 6, 6, 600); // Airline 3*/
  19818. CreateDynamicPickup(1265, 23, 2184.9795, -1976.9451, 13.5528);
  19819. CreateDynamic3DTextLabel("Use /work to begin trash job", COLOR_GREY, 2184.9795, -1976.9451, 13.5528, 10.0);
  19820. }
  19821. LoadActors()
  19822. {
  19823. new act1;
  19824. // City Hall
  19825. act1 = CreateActor(147, 359.7125, 173.5390, 1008.3828, 270.0000);
  19826. SetActorVirtualWorld(act1, g_StaticBuildings[BUILDING_CITYHALL][e_VirtualWorld]);
  19827. }
  19828. LoadElements() // Pickups, labels and checkpoints
  19829. {
  19830. // Deliver points
  19831. for (new i = 0; i < sizeof(g_HospitalDeliverPoints); i ++) {
  19832. CreateDynamicPickup(1240, 23, g_HospitalDeliverPoints[i][0], g_HospitalDeliverPoints[i][1], g_HospitalDeliverPoints[i][2]);
  19833. CreateDynamic3DTextLabel("Use /deliverpatients to deliver patients.", COLOR_GREY, g_HospitalDeliverPoints[i][0], g_HospitalDeliverPoints[i][1], g_HospitalDeliverPoints[i][2], 15.0);
  19834. }
  19835. //IllegalOrder
  19836. CreateDynamic3DTextLabel("Black Market", COLOR_GREY, 2525.4495,-2221.1128,13.5469, 5.0);
  19837. // Gym Labels
  19838. CreateDynamic3DTextLabel("Press Y to use weights", COLOR_GREY, 772.4859, 5.3462, 999.9802, 10.0);
  19839. CreateDynamic3DTextLabel("Press Y to use treadmill", COLOR_GREY, 773.5106, -2.8392, 1000.1479, 10.0);
  19840. // Impounding
  19841. CreateDynamic3DTextLabel("Impound Yard", COLOR_GREY, 1624.3313,-1819.2130,13.5258, 20.0);
  19842. // City Hall
  19843. CreateDynamic3DTextLabel("Job Employment", COLOR_GREY, 362.2840, 173.6001, 1008.3828, 10.0);
  19844. Checkpoints[cpEmployment] = CreateDynamicCP(363.4342, 173.5729, 1008.3828, 2.0, g_StaticBuildings[BUILDING_CITYHALL][e_VirtualWorld], -1, -1, 10.0);
  19845. // Release impounded vehicles
  19846. CreateDynamic3DTextLabel("Front Desk", -1, 130.0626, 1130.8778, 527.4651, 5.0);
  19847. Checkpoints[cpPolice] = CreateDynamicCP(130.0626, 1130.8778, 527.4651, 1.5, g_StaticBuildings[BUILDING_POLICE][e_VirtualWorld], -1, -1, 10.0);
  19848. //mdc
  19849. CreateDynamic3DTextLabel("MDC",COLOR_GREY,132.1223,1129.2015,527.2257,1.0);
  19850. CreateDynamicCP(132.1223, 1129.2015, 527.2257, 1.5,g_StaticBuildings[BUILDING_POLICE][e_VirtualWorld],-1,-1,1.0);
  19851. // Bank label
  19852. CreateDynamic3DTextLabel("Use /bank to open menu", COLOR_GREY, 196.8612, 1723.2732, 1231.4624, 20.0);
  19853. // Hospital
  19854. CreateDynamic3DTextLabel("Press H to exit hospital", COLOR_GREY, 2501.6003, -1706.2878, 2104.7358, 10.0);
  19855. // Restaurant labels
  19856. CreateDynamic3DTextLabel("Press H to sit down", COLOR_GREY, 373.0000, -181.9000, 1000.5688, 10.0);
  19857. CreateDynamic3DTextLabel("Press H to sit down", COLOR_GREY, 373.0000, -184.9000, 1000.5688, 10.0);
  19858. CreateDynamic3DTextLabel("Press H to sit down", COLOR_GREY, 373.0000, -187.9000, 1000.5688, 10.0);
  19859. CreateDynamic3DTextLabel("Press H to sit down", COLOR_GREY, 373.0000, -190.9000, 1000.5688, 10.0);
  19860. CreateDynamic3DTextLabel("Press H to sit down", COLOR_GREY, 376.1000, -189.1153, 1000.5688, 10.0);
  19861. CreateDynamic3DTextLabel("Press H to sit down", COLOR_GREY, 376.1000, -186.6022, 1000.5688, 10.0);
  19862. CreateDynamic3DTextLabel("Press H to sit down", COLOR_GREY, 376.1000, -184.1463, 1000.5688, 10.0);
  19863. CreateDynamic3DTextLabel("Press H to sit down", COLOR_GREY, 376.1000, -181.7247, 1000.5688, 10.0);
  19864. }
  19865. #undef MAX_OBJECTS
  19866. #define MAX_OBJECTS (80000)
  19867. LoadObjects()
  19868. {
  19869. new
  19870. tmpobjid,
  19871. objects = 0;
  19872. // Destroy the other objects first.
  19873. for (new i = 0; i < MAX_OBJECTS; i ++) {
  19874. if (IsValidObject(i)) DestroyObject(i);
  19875. }
  19876. #include "maps/school.map"
  19877. #include "maps/court.map"
  19878. #include "maps/bahamas.map"
  19879. //WillowField
  19880. tmpobjid = CreateDynamicObjectEx(19544,2451.455,-1886.743,12.543,0.000,0.000,90.900,300.000,300.000);
  19881. SetDynamicObjectMaterial(tmpobjid, 0, 5404, "stormdra1_lae", "lasrmd4_sjm", 0);
  19882. tmpobjid = CreateDynamicObjectEx(19544,2451.695,-1901.739,12.543,0.000,0.000,90.889,300.000,300.000);
  19883. SetDynamicObjectMaterial(tmpobjid, 0, 5404, "stormdra1_lae", "lasrmd4_sjm", 0);
  19884. tmpobjid = CreateDynamicObjectEx(19544,2451.935,-1916.735,12.543,0.000,0.000,90.900,300.000,300.000);
  19885. SetDynamicObjectMaterial(tmpobjid, 0, 5404, "stormdra1_lae", "lasrmd4_sjm", 0);
  19886. tmpobjid = CreateDynamicObjectEx(19544,2431.378,-1970.649,12.543,0.000,0.000,0.000,300.000,300.000);
  19887. SetDynamicObjectMaterial(tmpobjid, 0, 5404, "stormdra1_lae", "lasrmd4_sjm", 0);
  19888. tmpobjid = CreateDynamicObjectEx(19544,2446.378,-1970.648,12.543,0.000,0.000,0.000,300.000,300.000);
  19889. SetDynamicObjectMaterial(tmpobjid, 0, 5404, "stormdra1_lae", "lasrmd4_sjm", 0);
  19890. tmpobjid = CreateDynamicObjectEx(19544,2461.378,-1970.648,12.543,0.000,0.000,0.000,300.000,300.000);
  19891. SetDynamicObjectMaterial(tmpobjid, 0, 5404, "stormdra1_lae", "lasrmd4_sjm", 0);
  19892. tmpobjid = CreateDynamicObjectEx(3661,2460.362,-1905.423,16.016,0.000,0.000,0.000,300.000,300.000);
  19893. tmpobjid = CreateDynamicObjectEx(3651,2433.995,-1888.527,15.300,0.000,0.000,310.000,300.000,300.000);
  19894. tmpobjid = CreateDynamicObjectEx(3651,2446.164,-1915.273,15.300,0.000,0.000,90.000,300.000,300.000);
  19895. tmpobjid = CreateDynamicObjectEx(3651,2428.749,-1915.265,15.300,0.000,0.000,90.000,300.000,300.000);
  19896. tmpobjid = CreateDynamicObjectEx(1412,2423.733,-1875.399,13.821,0.000,0.000,90.000,300.000,300.000);
  19897. tmpobjid = CreateDynamicObjectEx(1412,2423.736,-1880.677,13.821,0.000,0.000,90.000,300.000,300.000);
  19898. tmpobjid = CreateDynamicObjectEx(1412,2423.743,-1885.999,13.821,0.000,0.000,90.000,300.000,300.000);
  19899. tmpobjid = CreateDynamicObjectEx(1412,2423.747,-1891.295,13.821,0.000,0.000,90.000,300.000,300.000);
  19900. tmpobjid = CreateDynamicObjectEx(1412,2423.826,-1900.877,13.817,0.000,0.000,90.000,300.000,300.000);
  19901. tmpobjid = CreateDynamicObjectEx(1412,2434.070,-1922.069,13.817,0.000,0.000,0.000,300.000,300.000);
  19902. tmpobjid = CreateDynamicObjectEx(1412,2439.259,-1922.046,13.817,0.000,0.000,0.000,300.000,300.000);
  19903. tmpobjid = CreateDynamicObjectEx(1412,2452.729,-1922.305,13.817,0.000,0.000,0.000,300.000,300.000);
  19904. tmpobjid = CreateDynamicObjectEx(1422,2425.087,-1879.756,12.954,0.000,0.000,0.000,300.000,300.000);
  19905. tmpobjid = CreateDynamicObjectEx(1422,2427.785,-1879.754,12.954,0.000,0.000,0.000,300.000,300.000);
  19906. tmpobjid = CreateDynamicObjectEx(1422,2430.483,-1879.756,12.954,0.000,0.000,0.000,300.000,300.000);
  19907. tmpobjid = CreateDynamicObjectEx(655,2457.426,-1880.687,12.543,0.000,0.000,0.000,300.000,300.000);
  19908. tmpobjid = CreateDynamicObjectEx(655,2436.995,-1918.267,12.543,0.000,0.000,0.000,300.000,300.000);
  19909. tmpobjid = CreateDynamicObjectEx(655,2424.336,-1880.338,12.543,0.000,0.000,0.000,300.000,300.000);
  19910. tmpobjid = CreateDynamicObjectEx(672,2471.572,-1888.925,14.270,0.000,0.000,0.000,300.000,300.000);
  19911. tmpobjid = CreateDynamicObjectEx(688,2450.304,-1881.215,12.543,0.000,0.000,0.000,300.000,300.000);
  19912. tmpobjid = CreateDynamicObjectEx(727,2446.353,-1892.524,12.543,0.000,0.000,0.000,300.000,300.000);
  19913. tmpobjid = CreateDynamicObjectEx(770,2424.857,-1900.607,12.543,0.000,0.000,0.000,300.000,300.000);
  19914. tmpobjid = CreateDynamicObjectEx(770,2464.594,-1882.541,12.543,0.000,0.000,0.000,300.000,300.000);
  19915. tmpobjid = CreateDynamicObjectEx(631,2440.685,-1892.931,13.442,0.000,0.000,0.000,300.000,300.000);
  19916. tmpobjid = CreateDynamicObjectEx(1712,2436.830,-1895.993,12.543,0.000,0.000,40.000,300.000,300.000);
  19917. tmpobjid = CreateDynamicObjectEx(1712,2450.694,-1912.875,12.543,0.000,0.000,90.000,300.000,300.000);
  19918. tmpobjid = CreateDynamicObjectEx(1712,2451.281,-1910.301,12.543,0.000,0.000,40.000,300.000,300.000);
  19919. tmpobjid = CreateDynamicObjectEx(2821,2452.304,-1915.391,12.543,0.000,0.000,0.000,300.000,300.000);
  19920. tmpobjid = CreateDynamicObjectEx(2840,2454.464,-1914.855,12.543,0.000,0.000,0.000,300.000,300.000);
  19921. tmpobjid = CreateDynamicObjectEx(926,2454.791,-1919.250,12.791,0.000,0.000,0.000,300.000,300.000);
  19922. tmpobjid = CreateDynamicObjectEx(849,2439.883,-1921.037,12.843,0.000,0.000,0.000,300.000,300.000);
  19923. tmpobjid = CreateDynamicObjectEx(1440,2429.037,-1923.233,13.065,0.000,0.000,0.000,300.000,300.000);
  19924. tmpobjid = CreateDynamicObjectEx(1439,2423.314,-1911.681,12.546,0.000,0.000,270.000,300.000,300.000);
  19925. tmpobjid = CreateDynamicObjectEx(1369,2454.288,-1896.446,13.164,0.000,0.000,0.000,300.000,300.000);
  19926. tmpobjid = CreateDynamicObjectEx(2675,2453.497,-1918.357,12.607,0.000,0.000,0.000,300.000,300.000);
  19927. tmpobjid = CreateDynamicObjectEx(2675,2441.690,-1885.826,12.607,0.000,0.000,0.000,300.000,300.000);
  19928. tmpobjid = CreateDynamicObjectEx(2675,2439.747,-1917.211,12.607,0.000,0.000,0.000,300.000,300.000);
  19929. tmpobjid = CreateDynamicObjectEx(947,2447.366,-1907.248,14.746,0.000,0.000,0.000,300.000,300.000);
  19930. tmpobjid = CreateDynamicObjectEx(1433,2452.222,-1912.177,12.722,0.000,0.000,0.000,300.000,300.000);
  19931. tmpobjid = CreateDynamicObjectEx(1670,2452.145,-1912.144,13.230,0.000,0.000,0.000,300.000,300.000);
  19932. tmpobjid = CreateDynamicObjectEx(1429,2454.208,-1913.202,13.746,0.000,0.000,230.000,300.000,300.000);
  19933. tmpobjid = CreateDynamicObjectEx(941,2454.027,-1913.826,13.017,0.000,0.000,56.000,300.000,300.000);
  19934. tmpobjid = CreateDynamicObjectEx(1647,2454.941,-1890.692,12.784,0.000,0.000,0.000,300.000,300.000);
  19935. tmpobjid = CreateDynamicObjectEx(1741,2440.377,-1885.131,12.543,350.000,0.000,0.000,300.000,300.000);
  19936. tmpobjid = CreateDynamicObjectEx(1820,2440.643,-1883.598,12.609,350.000,0.000,0.000,300.000,300.000);
  19937. tmpobjid = CreateDynamicObjectEx(1765,2436.966,-1882.478,12.543,0.000,0.000,45.000,300.000,300.000);
  19938. tmpobjid = CreateDynamicObjectEx(1712,2438.312,-1885.292,12.543,0.000,0.000,130.000,300.000,300.000);
  19939. tmpobjid = CreateDynamicObjectEx(18691,2440.944,-1883.432,10.142,0.000,0.000,0.000,300.000,300.000);
  19940. tmpobjid = CreateDynamicObjectEx(18689,2440.606,-1883.272,10.977,0.000,0.000,0.000,300.000,300.000);
  19941. tmpobjid = CreateDynamicObjectEx(1946,2448.097,-1907.780,12.748,0.000,0.000,0.000,300.000,300.000);
  19942. tmpobjid = CreateDynamicObjectEx(1946,2452.089,-1919.083,12.748,0.000,0.000,0.000,300.000,300.000);
  19943. tmpobjid = CreateDynamicObjectEx(1946,2438.293,-1894.656,12.748,0.000,0.000,0.000,300.000,300.000);
  19944. tmpobjid = CreateDynamicObjectEx(3588,2437.725,-1964.106,15.217,0.000,0.000,270.000,300.000,300.000);
  19945. tmpobjid = CreateDynamicObjectEx(3651,2455.408,-1959.230,15.199,0.000,0.000,90.000,300.000,300.000);
  19946. tmpobjid = CreateDynamicObjectEx(1412,2453.264,-1942.376,13.817,0.000,0.000,0.000,300.000,300.000);
  19947. tmpobjid = CreateDynamicObjectEx(1412,2423.903,-1950.362,13.817,0.000,0.000,90.000,300.000,300.000);
  19948. tmpobjid = CreateDynamicObjectEx(1412,2423.931,-1964.076,13.817,0.000,0.000,90.000,300.000,300.000);
  19949. tmpobjid = CreateDynamicObjectEx(1412,2423.912,-1975.567,13.817,0.000,0.000,90.000,300.000,300.000);
  19950. tmpobjid = CreateDynamicObjectEx(1412,2423.912,-1980.857,13.817,0.000,0.000,90.000,300.000,300.000);
  19951. tmpobjid = CreateDynamicObjectEx(1412,2423.899,-1986.157,13.817,0.000,0.000,90.000,300.000,300.000);
  19952. tmpobjid = CreateDynamicObjectEx(1412,2423.865,-1997.016,13.826,0.000,0.000,90.000,300.000,300.000);
  19953. tmpobjid = CreateDynamicObjectEx(1412,2426.483,-1999.682,13.821,0.000,0.000,0.000,300.000,300.000);
  19954. tmpobjid = CreateDynamicObjectEx(1412,2431.690,-1999.645,13.821,0.000,0.000,0.000,300.000,300.000);
  19955. tmpobjid = CreateDynamicObjectEx(1412,2469.058,-1978.692,13.722,0.000,0.000,90.000,300.000,300.000);
  19956. tmpobjid = CreateDynamicObjectEx(1412,2458.415,-1999.665,13.821,0.000,0.000,0.000,300.000,300.000);
  19957. tmpobjid = CreateDynamicObjectEx(1412,2453.850,-1981.270,13.817,0.000,0.000,0.000,300.000,300.000);
  19958. tmpobjid = CreateDynamicObjectEx(3655,2445.280,-1992.708,15.145,0.000,0.000,90.000,300.000,300.000);
  19959. tmpobjid = CreateDynamicObjectEx(12957,2453.153,-1985.020,13.432,0.000,0.000,0.000,300.000,300.000);
  19960. tmpobjid = CreateDynamicObjectEx(12957,2444.229,-1882.291,13.420,0.000,0.000,0.000,300.000,300.000);
  19961. tmpobjid = CreateDynamicObjectEx(1358,2456.635,-1967.371,13.746,0.000,0.000,0.000,300.000,300.000);
  19962. tmpobjid = CreateDynamicObjectEx(703,2455.746,-1976.293,12.543,0.000,0.000,0.000,300.000,300.000);
  19963. tmpobjid = CreateDynamicObjectEx(729,2425.461,-1996.676,12.543,0.000,0.000,0.000,300.000,300.000);
  19964. tmpobjid = CreateDynamicObjectEx(770,2444.539,-1943.457,12.543,0.000,0.000,0.000,300.000,300.000);
  19965. tmpobjid = CreateDynamicObjectEx(647,2426.565,-1944.443,13.975,0.000,0.000,0.000,300.000,300.000);
  19966. tmpobjid = CreateDynamicObjectEx(698,2433.614,-1992.828,12.543,0.000,0.000,0.000,300.000,300.000);
  19967. tmpobjid = CreateDynamicObjectEx(669,2453.215,-1943.494,12.543,0.000,0.000,0.000,300.000,300.000);
  19968. tmpobjid = CreateDynamicObjectEx(1712,2448.949,-1966.838,12.543,0.000,0.000,0.000,300.000,300.000);
  19969. tmpobjid = CreateDynamicObjectEx(1712,2451.657,-1969.112,12.543,0.000,0.000,240.000,300.000,300.000);
  19970. tmpobjid = CreateDynamicObjectEx(2031,2449.295,-1968.713,12.442,0.000,0.000,0.000,300.000,300.000);
  19971. tmpobjid = CreateDynamicObjectEx(2821,2445.509,-1966.418,12.543,0.000,0.000,0.000,300.000,300.000);
  19972. tmpobjid = CreateDynamicObjectEx(928,2445.445,-1972.142,12.802,0.000,0.000,0.000,300.000,300.000);
  19973. tmpobjid = CreateDynamicObjectEx(928,2444.783,-1972.275,12.802,0.000,0.000,0.000,300.000,300.000);
  19974. tmpobjid = CreateDynamicObjectEx(928,2445.017,-1971.663,12.802,0.000,0.000,0.000,300.000,300.000);
  19975. tmpobjid = CreateDynamicObjectEx(851,2451.382,-1973.362,12.855,0.000,0.000,0.000,300.000,300.000);
  19976. tmpobjid = CreateDynamicObjectEx(851,2449.212,-1973.756,12.855,0.000,0.000,0.000,300.000,300.000);
  19977. tmpobjid = CreateDynamicObjectEx(851,2450.468,-1972.761,12.855,0.000,0.000,0.000,300.000,300.000);
  19978. tmpobjid = CreateDynamicObjectEx(3005,2442.060,-1949.951,12.543,0.000,0.000,0.000,300.000,300.000);
  19979. tmpobjid = CreateDynamicObjectEx(1355,2450.371,-1973.392,12.739,0.000,0.000,0.000,300.000,300.000);
  19980. tmpobjid = CreateDynamicObjectEx(18689,2451.188,-1974.332,11.192,0.000,0.000,0.000,300.000,300.000);
  19981. tmpobjid = CreateDynamicObjectEx(2843,2450.043,-1971.779,12.543,0.000,0.000,0.000,300.000,300.000);
  19982. tmpobjid = CreateDynamicObjectEx(1412,2423.889,-1945.113,13.817,0.000,0.000,90.000,300.000,300.000);
  19983. tmpobjid = CreateDynamicObjectEx(1412,2447.957,-1942.395,13.817,0.000,0.000,0.000,300.000,300.000);
  19984. tmpobjid = CreateDynamicObjectEx(1412,2442.698,-1942.391,13.821,0.000,0.000,0.000,300.000,300.000);
  19985. tmpobjid = CreateDynamicObjectEx(1412,2430.990,-1942.345,13.821,0.000,0.000,0.000,300.000,300.000);
  19986. tmpobjid = CreateDynamicObjectEx(1412,2426.436,-1942.338,13.821,0.000,0.000,0.000,300.000,300.000);
  19987. tmpobjid = CreateDynamicObjectEx(2856,2428.429,-1975.350,12.543,0.000,0.000,0.000,300.000,300.000);
  19988. tmpobjid = CreateDynamicObjectEx(2859,2429.224,-1967.760,12.543,0.000,0.000,0.000,300.000,300.000);
  19989. tmpobjid = CreateDynamicObjectEx(2859,2428.520,-1968.489,12.543,0.000,0.000,0.000,300.000,300.000);
  19990. tmpobjid = CreateDynamicObjectEx(2859,2427.545,-1968.166,12.543,0.000,0.000,0.000,300.000,300.000);
  19991. tmpobjid = CreateDynamicObjectEx(2859,2428.375,-1967.541,12.543,0.000,0.000,0.000,300.000,300.000);
  19992. tmpobjid = CreateDynamicObjectEx(2859,2450.145,-1968.761,13.241,0.000,0.000,0.000,300.000,300.000);
  19993. tmpobjid = CreateDynamicObjectEx(2859,2442.457,-1949.905,12.543,0.000,0.000,0.000,300.000,300.000);
  19994. tmpobjid = CreateDynamicObjectEx(2859,2442.180,-1948.855,12.543,0.000,0.000,0.000,300.000,300.000);
  19995. tmpobjid = CreateDynamicObjectEx(3860,2441.641,-1943.937,13.715,0.000,0.000,0.000,300.000,300.000);
  19996. tmpobjid = CreateDynamicObjectEx(1526,2443.415,-1951.246,15.715,0.000,0.000,0.000,300.000,300.000);
  19997. tmpobjid = CreateDynamicObjectEx(1528,2443.415,-1951.284,15.727,0.000,0.000,0.000,300.000,300.000);
  19998. tmpobjid = CreateDynamicObjectEx(874,2479.928,-1892.337,14.140,0.000,0.000,0.000,300.000,300.000);
  19999. tmpobjid = CreateDynamicObjectEx(1712,2442.815,-1953.172,12.543,0.000,0.000,270.000,300.000,300.000);
  20000. // Pay 'n' Spray Custom Map
  20001. CreateDynamicObject(5532, 1779.065795, -2305.489501, 910.238525, 0.000000, 0.000000, 0.000000);
  20002. CreateDynamicObject(3055, 1793.636230, -2306.422119, 903.954589, 0.000000, 0.000000, 270.000000);
  20003. // Blocks for Pay 'n' Sprays, Bomb Shops and Tuning Shops
  20004. CreateDynamicObject(3055,2071.4614250,-1831.1199950,13.6828150,0.0000000,0.0000000,90.0000000); //
  20005. CreateDynamicObject(3055,1843.3538810,-1855.8150630,13.0935230,0.0000000,0.0000000,90.0000000); //
  20006. CreateDynamicObject(3055,1025.1224360,-1029.3433830,32.2767100,0.0000000,0.0000000,0.0000000); //
  20007. CreateDynamicObject(3055,719.8192130,-462.4778740,16.3437040,0.0000000,0.0000000,0.0000000); //
  20008. CreateDynamicObject(3055,-99.9452740,1111.4724120,16.6241970,0.0000000,0.0000000,0.0000000); //
  20009. CreateDynamicObject(3055,-99.9452740,1111.4724120,21.6441910,0.0000000,0.0000000,0.0000000); //
  20010. CreateDynamicObject(3055,-1420.7982170,2591.2302240,52.7928000,0.0000000,0.0000000,0.0000000); //
  20011. CreateDynamicObject(3055,-1420.7982170,2591.2302240,57.7727810,0.0000000,0.0000000,0.0000000); //
  20012. CreateDynamicObject(3055,-2425.9394530,1028.2551260,47.4976840,0.0000000,0.0000000,0.0000000); //
  20013. CreateDynamicObject(3055,-2425.9394530,1028.2551260,52.4776870,0.0000000,0.0000000,0.0000000); //
  20014. CreateDynamicObject(3055,-1904.7259520,277.8039850,38.0199620,0.0000000,0.0000000,0.0000000); //
  20015. CreateDynamicObject(3055,-1904.7259520,277.8039850,43.0199500,0.0000000,0.0000000,0.0000000); //
  20016. CreateDynamicObject(3055,1968.2154540,2162.3403320,11.3503170,0.0000000,0.0000000,90.0000000); //
  20017. CreateDynamicObject(3055,2386.8173820,1043.4774160,10.5473860,0.0000000,0.0000000,0.0000000); //
  20018. CreateDynamicObject(3055,488.7078240,-1735.2413330,11.6313780,0.0000000,0.0000000,170.0000000); //
  20019. CreateDynamicObject(3055,2004.6600340,2303.5166010,10.8203120,0.0000000,0.0000000,0.0000000); //
  20020. CreateDynamicObject(3055,2004.6600340,2317.9389640,10.8203120,0.0000000,0.0000000,0.0000000); //
  20021. // Housing maps
  20022. CreateDynamicObject(14748,1365.3616940,-2141.6516110,1051.5886230,0.0000000,0.0000000,270.0000000); // 1
  20023. CreateDynamicObject(1506,1364.5468750,-2146.7316890,1049.6186520,0.0000000,0.0000000,180.0000000); // 1
  20024. CreateDynamicObject(14750,1752.9875480,-1814.0000000,1005.8405150,0.0000000,0.0000000,0.0000000); // 2
  20025. CreateDynamicObject(1506,1750.4439690,-1823.3640130,999.3404540,0.0000000,0.0000000,180.0000000); // 2
  20026. CreateDynamicObject(14754,1284.7003170,-1132.0966790,982.9908440,0.0000000,0.0000000,0.0000000); // 3
  20027. CreateDynamicObject(1506,1282.7630610,-1141.2866210,979.0519400,0.0000000,0.0000000,180.0000000); // 3
  20028. CreateDynamicObject(14718,2005.2022700,-1701.8310540,1164.6922600,0.0000000,0.0000000,90.0000000); // 4
  20029. CreateDynamicObject(1506,2010.1152340,-1698.0543210,1164.7016600,0.0000000,0.0000000,-90.0000000); // 4
  20030. CreateDynamicObject(14713,1183.4338370,-422.9811400,1235.5091550,0.0000000,0.0000000,180.0000000); // 5
  20031. CreateDynamicObject(1506,1177.5120840,-418.1002500,1233.7343750,0.0000000,0.0000000,0.0000000); // 5
  20032. CreateDynamicObject(14712,2190.7031250,-1127.3596190,1129.3358150,0.0000000,0.0000000,270.0000000); // 6
  20033. CreateDynamicObject(1506,2183.2023920,-1131.0895990,1127.7854000,0.0000000,0.0000000,90.0000000); // 6
  20034. CreateDynamicObject(14700,1437.1691890,-1832.8457030,1314.0572500,0.0000000,0.0000000,270.0000000); // 7
  20035. CreateDynamicObject(1506,1433.0982660,-1833.5679930,1312.5968010,0.0000000,0.0000000,90.0000000); // 7
  20036. CreateDynamicObject(14707,911.3341060,-484.4251700,847.4813840,0.0000000,0.0000000,90.0000000); // 8
  20037. CreateDynamicObject(14710,836.9762570,-1017.0670770,800.4819940,0.0000000,0.0000000,180.0000000); // 9
  20038. CreateDynamicObject(1506,827.4833370,-1014.6065060,798.9961540,0.0000000,0.0000000,90.0000000); // 9
  20039. CreateDynamicObject(14711,1312.1368400,-175.0750730,1088.6756590,0.0000000,0.0000000,0.0000000); // 10
  20040. CreateDynamicObject(1506,1321.4031980,-166.8761740,1087.1315910,0.0000000,0.0000000,270.0000000); // 10
  20041. CreateDynamicObject(14706,1834.5144040,-1290.1430660,834.3630370,0.0000000,0.0000000,180.0000000); // 11
  20042. CreateDynamicObject(14701,2654.0761710,-1032.9993890,930.9969480,0.0000000,0.0000000,180.0000000); // 12
  20043. CreateDynamicObject(1506,2653.6835930,-1022.5356440,928.9262690,0.0000000,0.0000000,0.0000000); // 12
  20044. // Prison Interior
  20045. CreateDynamicObject(19377,2604.6955600,-1479.2165500,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20046. CreateDynamicObject(19377,2594.2417000,-1479.1915300,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20047. CreateDynamicObject(19377,2583.7534200,-1479.2049600,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20048. CreateDynamicObject(19377,2573.2517100,-1479.2049600,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20049. CreateDynamicObject(19377,2604.7365700,-1488.8303200,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20050. CreateDynamicObject(19377,2604.7365700,-1498.4482400,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20051. CreateDynamicObject(19377,2604.7341300,-1508.0662800,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20052. CreateDynamicObject(19377,2604.7365700,-1517.6828600,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20053. CreateDynamicObject(19377,2604.7165500,-1527.3006600,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20054. CreateDynamicObject(19377,2594.2375500,-1488.8303200,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20055. CreateDynamicObject(19377,2594.2375500,-1498.4482400,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20056. CreateDynamicObject(19377,2594.2375500,-1508.0759300,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20057. CreateDynamicObject(19377,2594.2375500,-1517.7028800,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20058. CreateDynamicObject(19377,2594.2214400,-1527.3326400,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20059. CreateDynamicObject(19377,2583.7534200,-1488.8303200,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20060. CreateDynamicObject(19377,2583.7534200,-1498.4482400,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20061. CreateDynamicObject(19377,2583.7534200,-1508.0759300,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20062. CreateDynamicObject(19377,2583.7534200,-1517.7028800,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20063. CreateDynamicObject(19377,2583.7534200,-1527.3187300,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20064. CreateDynamicObject(19377,2573.2517100,-1488.8303200,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20065. CreateDynamicObject(19377,2573.2517100,-1498.4482400,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20066. CreateDynamicObject(19377,2573.2517100,-1508.0759300,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20067. CreateDynamicObject(19377,2573.2517100,-1517.7028800,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20068. CreateDynamicObject(19377,2573.2517100,-1527.3206800,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20069. CreateDynamicObject(19457,2567.9824200,-1488.8475300,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20070. CreateDynamicObject(19457,2567.9824200,-1498.4682600,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20071. CreateDynamicObject(19457,2567.9824200,-1508.0865500,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20072. CreateDynamicObject(19457,2567.9824200,-1517.7161900,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20073. CreateDynamicObject(19457,2567.9824200,-1527.3437500,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20074. CreateDynamicObject(19377,2573.2382800,-1536.9274900,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20075. CreateDynamicObject(19377,2583.7534200,-1536.9422600,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20076. CreateDynamicObject(19377,2594.2375500,-1536.9422600,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20077. CreateDynamicObject(19377,2604.7365700,-1536.9222400,-50.0000000,0.0000000,90.0000000,0.0000000); //
  20078. CreateDynamicObject(19457,2567.9824200,-1536.9768100,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20079. CreateDynamicObject(19457,2572.7351100,-1541.6134000,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20080. CreateDynamicObject(19457,2582.3513200,-1541.6134000,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20081. CreateDynamicObject(19457,2591.9802200,-1541.6134000,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20082. CreateDynamicObject(19457,2601.5991200,-1541.6134000,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20083. CreateDynamicObject(19457,2611.2236300,-1541.6134000,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20084. CreateDynamicObject(19457,2609.6467300,-1536.9768100,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20085. CreateDynamicObject(19457,2609.6467300,-1527.3437500,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20086. CreateDynamicObject(19457,2609.6467300,-1517.7161900,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20087. CreateDynamicObject(19457,2609.6467300,-1508.0865500,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20088. CreateDynamicObject(19457,2609.6467300,-1498.4682600,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20089. CreateDynamicObject(19457,2609.6467300,-1488.8475300,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20090. CreateDynamicObject(19394,2577.5341800,-1485.6203600,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20091. CreateDynamicObject(19438,2578.3332500,-1491.9337200,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20092. CreateDynamicObject(19411,2580.7294900,-1491.9337200,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20093. CreateDynamicObject(19394,2582.3925800,-1487.1534400,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20094. CreateDynamicObject(19457,2588.8015100,-1487.1534400,-48.1570000,0.0000000,0.0000000,-90.0000000); //
  20095. CreateDynamicObject(19365,2579.2011700,-1487.1534400,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20096. CreateDynamicObject(19394,2595.2063000,-1487.1534400,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20097. CreateDynamicObject(19457,2601.6276900,-1487.1534400,-48.1570000,0.0000000,0.0000000,-90.0000000); //
  20098. CreateDynamicObject(19457,2585.5222200,-1491.9006300,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20099. CreateDynamicObject(19457,2596.7343800,-1491.9605700,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20100. CreateDynamicObject(19457,2585.5361300,-1483.9497100,-48.1570000,0.0000000,0.0000000,-90.0000000); //
  20101. CreateDynamicObject(19394,2579.1298800,-1483.9497100,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20102. CreateDynamicObject(19394,2591.9558100,-1483.9497100,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20103. CreateDynamicObject(19457,2598.3610800,-1483.9497100,-48.1570000,0.0000000,0.0000000,-90.0000000); //
  20104. CreateDynamicObject(19394,2607.9790000,-1483.9497100,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20105. CreateDynamicObject(19365,2604.7751500,-1483.9497100,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20106. CreateDynamicObject(19457,2606.3679200,-1491.8909900,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20107. CreateDynamicObject(19457,2596.7343800,-1501.5871600,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20108. CreateDynamicObject(19365,2583.9421400,-1491.9337200,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20109. CreateDynamicObject(19411,2575.9389600,-1491.9337200,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20110. CreateDynamicObject(19438,2573.5485800,-1491.9337200,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20111. CreateDynamicObject(19411,2571.1586900,-1491.9337200,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20112. CreateDynamicObject(19438,2568.7641600,-1491.9337200,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20113. CreateDynamicObject(19394,2588.7111800,-1496.6490500,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20114. CreateDynamicObject(19394,2606.3679200,-1498.3006600,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20115. CreateDynamicObject(19365,2595.1235400,-1496.6490500,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20116. CreateDynamicObject(19394,2593.5007300,-1498.2564700,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20117. CreateDynamicObject(19365,2591.9223600,-1496.6490500,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20118. CreateDynamicObject(19394,2579.1084000,-1496.6490500,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20119. CreateDynamicObject(19457,2572.6975100,-1496.6490500,-48.1570000,0.0000000,0.0000000,-90.0000000); //
  20120. CreateDynamicObject(19457,2593.5007300,-1504.6635700,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20121. CreateDynamicObject(19457,2606.3679200,-1504.7165500,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20122. CreateDynamicObject(19457,2596.7343800,-1536.8515600,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20123. CreateDynamicObject(19394,2596.7343800,-1511.1977500,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20124. CreateDynamicObject(19457,2579.1049800,-1532.1666300,-48.1570000,0.0000000,0.0000000,-90.0000000); //
  20125. CreateDynamicObject(19394,2572.6879900,-1532.1666300,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20126. CreateDynamicObject(19457,2593.5007300,-1514.2963900,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20127. CreateDynamicObject(19457,2593.5007300,-1523.9256600,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20128. CreateDynamicObject(19457,2580.1787100,-1537.0216100,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20129. CreateDynamicObject(19394,2592.8403300,-1533.5225800,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20130. CreateDynamicObject(19457,2588.7324200,-1532.1666300,-48.1570000,0.0000000,0.0000000,-90.0000000); //
  20131. CreateDynamicObject(19365,2569.4929200,-1532.1666300,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20132. CreateDynamicObject(19365,2593.5007300,-1530.3308100,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20133. CreateDynamicObject(19365,2592.8405800,-1536.7275400,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20134. CreateDynamicObject(19365,2592.8405800,-1539.9294400,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20135. CreateDynamicObject(19457,2606.3679200,-1514.3342300,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20136. CreateDynamicObject(19394,2581.7158200,-1535.0980200,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20137. CreateDynamicObject(19394,2588.1276900,-1535.0980200,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20138. CreateDynamicObject(19365,2591.3181200,-1535.1016800,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20139. CreateDynamicObject(19457,2586.5991200,-1539.9289600,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20140. CreateDynamicObject(19457,2596.7343800,-1527.2297400,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20141. CreateDynamicObject(19457,2596.7343800,-1517.6079100,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20142. CreateDynamicObject(19365,2596.7343800,-1508.0009800,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20143. CreateDynamicObject(19457,2601.6232900,-1538.2376700,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20144. CreateDynamicObject(19394,2606.3679200,-1523.9216300,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20145. CreateDynamicObject(14410,2603.1806600,-1540.2266800,-49.4211000,0.0000000,0.0000000,90.0000000); //
  20146. CreateDynamicObject(19457,2606.3679200,-1533.5040300,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20147. CreateDynamicObject(19457,2601.4643600,-1522.8201900,-48.1570000,0.0000000,0.0000000,-90.0000000); //
  20148. CreateDynamicObject(19365,2606.3679200,-1527.1081500,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20149. CreateDynamicObject(19365,2606.3679200,-1520.7421900,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20150. CreateDynamicObject(19377,2580.9077100,-1537.0592000,-46.3228000,0.0000000,90.0000000,0.0000000); //
  20151. CreateDynamicObject(19457,2567.9824200,-1527.3437500,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20152. CreateDynamicObject(19457,2567.9824200,-1517.7161900,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20153. CreateDynamicObject(19457,2567.9824200,-1508.0865500,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20154. CreateDynamicObject(19457,2567.9824200,-1498.4682600,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20155. CreateDynamicObject(19457,2579.1049800,-1532.1666300,-44.6656000,0.0000000,0.0000000,-90.0000000); //
  20156. CreateDynamicObject(19457,2588.7324200,-1532.1666300,-44.6656000,0.0000000,0.0000000,-90.0000000); //
  20157. CreateDynamicObject(19365,2569.4929200,-1532.1666300,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20158. CreateDynamicObject(19457,2569.5012200,-1496.6490500,-44.6656000,0.0000000,0.0000000,-90.0000000); //
  20159. CreateDynamicObject(19365,2591.9223600,-1496.6490500,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20160. CreateDynamicObject(19365,2588.7211900,-1496.6490500,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20161. CreateDynamicObject(19365,2575.8852500,-1496.6490500,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20162. CreateDynamicObject(19365,2572.6774900,-1532.1666300,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20163. CreateDynamicObject(19457,2611.2236300,-1541.6134000,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20164. CreateDynamicObject(19457,2601.5991200,-1541.6134000,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20165. CreateDynamicObject(19457,2591.9802200,-1541.6134000,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20166. CreateDynamicObject(19457,2609.6467300,-1536.9768100,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20167. CreateDynamicObject(19457,2601.4633800,-1538.2376700,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20168. CreateDynamicObject(19457,2593.4606900,-1536.8286100,-44.6456000,0.0000000,0.0000000,0.0000000); //
  20169. CreateDynamicObject(19303,2588.8239700,-1518.8553500,-48.6639000,0.0000000,0.0000000,-90.0000000); //
  20170. CreateDynamicObject(14410,2574.2595200,-1498.6186500,-49.4211000,0.0000000,0.0000000,90.0000000); //
  20171. CreateDynamicObject(19457,2572.7238800,-1504.1412400,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20172. CreateDynamicObject(19365,2585.5117200,-1496.6490500,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20173. CreateDynamicObject(19365,2582.3090800,-1496.6490500,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20174. CreateDynamicObject(14410,2591.6364700,-1525.8955100,-49.4211000,0.0000000,0.0000000,180.0000000); //
  20175. CreateDynamicObject(19457,2589.6608900,-1527.4282200,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20176. CreateDynamicObject(19365,2590.3869600,-1519.8120100,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20177. CreateDynamicObject(19438,2592.7836900,-1519.8120100,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20178. CreateDynamicObject(19365,2590.3869600,-1516.1462400,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20179. CreateDynamicObject(19303,2588.8239700,-1515.1954300,-48.6639000,0.0000000,0.0000000,-90.0000000); //
  20180. CreateDynamicObject(19365,2590.3869600,-1512.4995100,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20181. CreateDynamicObject(19303,2588.8239700,-1511.5518800,-48.6639000,0.0000000,0.0000000,-90.0000000); //
  20182. CreateDynamicObject(19365,2590.3869600,-1508.8383800,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20183. CreateDynamicObject(19303,2588.8239700,-1507.8676800,-48.6639000,0.0000000,0.0000000,-90.0000000); //
  20184. CreateDynamicObject(19365,2590.3869600,-1505.1771200,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20185. CreateDynamicObject(19303,2588.8239700,-1504.2251000,-48.6639000,0.0000000,0.0000000,-90.0000000); //
  20186. CreateDynamicObject(19365,2590.3869600,-1501.5087900,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20187. CreateDynamicObject(19438,2592.7836900,-1516.1462400,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20188. CreateDynamicObject(19438,2592.7836900,-1508.8383800,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20189. CreateDynamicObject(19438,2592.7836900,-1512.4995100,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20190. CreateDynamicObject(19438,2592.7836900,-1505.1771200,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20191. CreateDynamicObject(19438,2592.7836900,-1501.5087900,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20192. CreateDynamicObject(19438,2592.7836900,-1501.5087900,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20193. CreateDynamicObject(19365,2590.3869600,-1501.5087900,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20194. CreateDynamicObject(19365,2590.3869600,-1519.8120100,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20195. CreateDynamicObject(19438,2592.7836900,-1519.8120100,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20196. CreateDynamicObject(19303,2577.4909700,-1501.4527600,-48.6639000,0.0000000,0.0000000,90.0000000); //
  20197. CreateDynamicObject(19457,2572.7238800,-1500.4847400,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20198. CreateDynamicObject(19303,2577.4909700,-1505.0980200,-48.6639000,0.0000000,0.0000000,90.0000000); //
  20199. CreateDynamicObject(19457,2572.7238800,-1507.7819800,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20200. CreateDynamicObject(19303,2577.4909700,-1508.7457300,-48.6639000,0.0000000,0.0000000,90.0000000); //
  20201. CreateDynamicObject(19457,2572.7238800,-1511.4622800,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20202. CreateDynamicObject(19303,2577.4909700,-1512.4062500,-48.6639000,0.0000000,0.0000000,90.0000000); //
  20203. CreateDynamicObject(19457,2572.7238800,-1515.1044900,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20204. CreateDynamicObject(19303,2577.4909700,-1516.0721400,-48.6639000,0.0000000,0.0000000,90.0000000); //
  20205. CreateDynamicObject(19457,2572.7238800,-1518.7784400,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20206. CreateDynamicObject(19303,2586.9597200,-1522.6436800,-48.6639000,0.0000000,0.0000000,180.0000000); //
  20207. CreateDynamicObject(19457,2585.9934100,-1527.4282200,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20208. CreateDynamicObject(19303,2583.2768600,-1522.6436800,-48.6639000,0.0000000,0.0000000,180.0000000); //
  20209. CreateDynamicObject(19457,2582.3120100,-1527.4282200,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20210. CreateDynamicObject(19303,2579.6264600,-1522.6436800,-48.6639000,0.0000000,0.0000000,180.0000000); //
  20211. CreateDynamicObject(19365,2584.9216300,-1535.0980200,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20212. CreateDynamicObject(19457,2578.6672400,-1527.4282200,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20213. CreateDynamicObject(19457,2583.4438500,-1529.0803200,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20214. CreateDynamicObject(19365,2589.8520500,-1529.0803200,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20215. CreateDynamicObject(19457,2571.3576700,-1513.9243200,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20216. CreateDynamicObject(19457,2571.3576700,-1504.3065200,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20217. CreateDynamicObject(1533,2596.3134800,-1541.4964600,-49.9154000,0.0000000,0.0000000,180.0000000); //
  20218. CreateDynamicObject(1537,2593.3034700,-1541.5025600,-49.9152000,0.0000000,0.0000000,180.0000000); //
  20219. CreateDynamicObject(19365,2593.4990200,-1530.6500200,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20220. CreateDynamicObject(19273,2587.6838400,-1496.7015400,-48.5737000,0.0000000,0.0000000,0.0000000); //
  20221. CreateDynamicObject(2635,2591.5705600,-1500.7053200,-49.5159000,0.0000000,0.0000000,0.0000000); //
  20222. CreateDynamicObject(1810,2592.6901900,-1500.9884000,-49.9166000,0.0000000,0.0000000,-120.0000000); //
  20223. CreateDynamicObject(2202,2568.6152300,-1485.0954600,-49.9186000,0.0000000,0.0000000,90.0000000); //
  20224. CreateDynamicObject(2602,2572.8051800,-1503.6680900,-49.3503000,0.0000000,0.0000000,180.0000000); //
  20225. CreateDynamicObject(2718,2583.2966300,-1496.8648700,-47.3391000,0.0000000,0.0000000,0.0000000); //
  20226. CreateDynamicObject(2713,2586.6293900,-1496.7429200,-47.0757900,0.0000000,0.0000000,0.0000000); //
  20227. CreateDynamicObject(19394,2604.7678200,-1530.6458700,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20228. CreateDynamicObject(19457,2596.7329100,-1501.5073200,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20229. CreateDynamicObject(19438,2593.5007300,-1500.7863800,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20230. CreateDynamicObject(19438,2593.5007300,-1496.6726100,-44.6456000,0.0000000,0.0000000,0.0000000); //
  20231. CreateDynamicObject(19438,2588.8679200,-1503.1925000,-46.6081000,90.0000000,0.0000000,0.0000000); //
  20232. CreateDynamicObject(3278,-1502.8717000,-44.7334000,-44.7334000,0.0000000,0.0000000,90.0000000); //
  20233. CreateDynamicObject(19457,2578.6672400,-1527.4278600,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20234. CreateDynamicObject(19457,2572.7238800,-1518.7784400,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20235. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20236. CreateDynamicObject(1649,2580.8847700,-1491.9346900,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20237. CreateDynamicObject(1649,2575.9939000,-1491.9556900,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20238. CreateDynamicObject(1649,2571.2666000,-1491.9328600,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20239. CreateDynamicObject(1649,2571.2666000,-1491.9328600,-48.0739000,0.0000000,0.0000000,180.0000000); //
  20240. CreateDynamicObject(1649,2575.9939000,-1491.9556900,-48.0739000,0.0000000,0.0000000,180.0000000); //
  20241. CreateDynamicObject(1649,2580.8847700,-1491.9346900,-48.0739000,0.0000000,0.0000000,180.0000000); //
  20242. CreateDynamicObject(19438,2578.3186000,-1492.6512500,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20243. CreateDynamicObject(19438,2573.6147500,-1492.6512500,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20244. CreateDynamicObject(19438,2597.5397900,-1530.6458700,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20245. CreateDynamicObject(19438,2602.3591300,-1530.6450200,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20246. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,180.0000000); //
  20247. CreateDynamicObject(19365,2599.9484900,-1530.6450200,-50.7967000,0.0000000,180.0000000,90.0000000); //
  20248. CreateDynamicObject(19450,2572.7417000,-1487.1138900,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20249. CreateDynamicObject(19388,2577.5210000,-1485.6270800,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20250. CreateDynamicObject(19450,2577.5210000,-1479.2235100,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20251. CreateDynamicObject(19450,2568.0485800,-1482.2811300,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20252. CreateDynamicObject(19450,2568.0485800,-1472.6855500,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20253. CreateDynamicObject(19450,2572.7021500,-1474.3736600,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20254. CreateDynamicObject(19376,2572.3090800,-1482.2480500,-49.9854000,0.0000000,90.0000000,0.0000000); //
  20255. CreateDynamicObject(19376,2572.2968800,-1472.6307400,-49.9854000,0.0000000,90.0000000,0.0000000); //
  20256. CreateDynamicObject(19376,2585.4975600,-1479.1419700,-49.9854000,0.0000000,90.0000000,0.0000000); //
  20257. CreateDynamicObject(19376,2582.8513200,-1479.1435500,-49.9860000,0.0000000,90.0000000,0.0000000); //
  20258. CreateDynamicObject(1491,2581.6093800,-1487.1654100,-49.9291500,0.0000000,0.0000000,0.0000000); //
  20259. CreateDynamicObject(1491,2578.3442400,-1483.9614300,-49.9291500,0.0000000,0.0000000,0.0000000); //
  20260. CreateDynamicObject(1491,2591.1740700,-1483.9705800,-49.9291500,0.0000000,0.0000000,0.0000000); //
  20261. CreateDynamicObject(1491,2607.1940900,-1483.9592300,-49.9291500,0.0000000,0.0000000,0.0000000); //
  20262. CreateDynamicObject(1491,2606.3859900,-1499.0465100,-49.9291000,0.0000000,0.0000000,90.0000000); //
  20263. CreateDynamicObject(1491,2606.3671900,-1524.6527100,-49.9291000,0.0000000,0.0000000,90.0000000); //
  20264. CreateDynamicObject(1491,2596.7407200,-1511.9392100,-49.9291000,0.0000000,0.0000000,90.0000000); //
  20265. CreateDynamicObject(19394,2596.7343800,-1535.1143800,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20266. CreateDynamicObject(19438,2596.7343800,-1537.5069600,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20267. CreateDynamicObject(19457,2596.7150900,-1528.7030000,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20268. CreateDynamicObject(19394,2596.7343800,-1522.2900400,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20269. CreateDynamicObject(19457,2596.7343800,-1515.8817100,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20270. CreateDynamicObject(19394,2596.7343800,-1507.9480000,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20271. CreateDynamicObject(19438,2596.7363300,-1510.2811300,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20272. CreateDynamicObject(1491,2596.7463400,-1508.7010500,-46.4122000,0.0000000,0.0000000,90.0000000); //
  20273. CreateDynamicObject(1491,2596.7426800,-1523.0285600,-46.3922000,0.0000000,0.0000000,90.0000000); //
  20274. CreateDynamicObject(1491,2596.7385300,-1535.8548600,-46.4122000,0.0000000,0.0000000,90.0000000); //
  20275. CreateDynamicObject(19383,2596.7424300,-1511.1893300,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20276. CreateDynamicObject(19389,2607.9851100,-1483.9314000,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20277. CreateDynamicObject(19451,2600.0488300,-1479.1715100,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20278. CreateDynamicObject(19459,2568.0004900,-1487.0660400,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20279. CreateDynamicObject(19413,2580.7287600,-1491.9178500,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20280. CreateDynamicObject(19395,2582.3989300,-1487.1638200,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20281. CreateDynamicObject(19440,2578.3371600,-1491.9178500,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20282. CreateDynamicObject(19445,2601.6257300,-1519.3200700,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20283. CreateDynamicObject(19390,2596.7451200,-1522.2963900,-44.6456000,0.0000000,0.0000000,0.0000000); //
  20284. CreateDynamicObject(19453,2596.7451200,-1515.8820800,-44.6456000,0.0000000,0.0000000,0.0000000); //
  20285. CreateDynamicObject(19446,2601.5786100,-1503.6179200,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20286. CreateDynamicObject(19384,2606.3642600,-1498.3037100,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20287. CreateDynamicObject(19453,2577.6452600,-1479.1212200,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20288. CreateDynamicObject(19390,2579.1315900,-1483.9487300,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20289. CreateDynamicObject(19453,2590.3767100,-1479.1684600,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20290. CreateDynamicObject(19451,2590.7097200,-1479.0387000,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20291. CreateDynamicObject(19451,2595.5939900,-1474.4404300,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20292. CreateDynamicObject(19451,2604.8786600,-1476.2733200,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20293. CreateDynamicObject(19451,2609.6379400,-1479.1217000,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20294. CreateDynamicObject(19453,2585.5358900,-1483.9487300,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20295. CreateDynamicObject(19453,2586.3601100,-1474.3365500,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20296. CreateDynamicObject(19453,2576.7392600,-1474.3365500,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20297. CreateDynamicObject(19445,2606.3122600,-1514.4314000,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20298. CreateDynamicObject(19445,2601.5261200,-1509.5289300,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20299. CreateDynamicObject(19445,2596.7424300,-1517.6065700,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20300. CreateDynamicObject(19451,2601.5695800,-1483.9314000,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20301. CreateDynamicObject(19446,2606.3642600,-1491.8995400,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20302. CreateDynamicObject(19446,2601.5065900,-1487.1972700,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20303. CreateDynamicObject(19446,2596.8144500,-1492.0570100,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20304. CreateDynamicObject(19446,2596.8139600,-1501.6905500,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20305. CreateDynamicObject(19446,2606.3642600,-1504.7126500,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20306. CreateDynamicObject(19460,2605.1777300,-1523.8084700,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20307. CreateDynamicObject(19396,2596.7424300,-1507.9394500,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20308. CreateDynamicObject(19441,2596.7522000,-1537.4886500,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20309. CreateDynamicObject(19459,2575.9934100,-1487.1638200,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20310. CreateDynamicObject(19459,2566.3720700,-1487.1638200,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20311. CreateDynamicObject(19367,2585.5217300,-1490.3896500,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20312. CreateDynamicObject(19440,2584.7812500,-1487.1698000,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20313. CreateDynamicObject(19440,2585.5217300,-1488.0059800,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20314. CreateDynamicObject(19367,2583.9301800,-1491.9178500,-48.1570000,0.0000000,0.0000000,990.0000000); //
  20315. CreateDynamicObject(19413,2575.9465300,-1491.9178500,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20316. CreateDynamicObject(19440,2573.5397900,-1491.9178500,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20317. CreateDynamicObject(19413,2571.1557600,-1491.9178500,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20318. CreateDynamicObject(19440,2568.7524400,-1491.9178500,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20319. CreateDynamicObject(19440,2573.6147500,-1491.2341300,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20320. CreateDynamicObject(19440,2578.3186000,-1491.2341300,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20321. CreateDynamicObject(19453,2601.4990200,-1523.9281000,-44.6456000,0.0000000,0.0000000,90.0000000); //
  20322. CreateDynamicObject(19453,2604.4018600,-1519.2180200,-44.6456000,0.0000000,0.0000000,0.0000000); //
  20323. CreateDynamicObject(19453,2604.4072300,-1514.3641400,-44.6456000,0.0000000,0.0000000,0.0000000); //
  20324. CreateDynamicObject(19453,2601.5288100,-1509.5534700,-44.6456000,0.0000000,0.0000000,90.0000000); //
  20325. CreateDynamicObject(19460,2605.1835900,-1533.4110100,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20326. CreateDynamicObject(19460,2601.5468800,-1538.2264400,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20327. CreateDynamicObject(19460,2606.3493700,-1504.7169200,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20328. CreateDynamicObject(19460,2601.6123000,-1499.8158000,-44.6456000,0.0000000,0.0000000,90.0000000); //
  20329. CreateDynamicObject(19460,2601.5661600,-1509.5328400,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20330. CreateDynamicObject(19460,2596.7424300,-1501.5295400,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20331. CreateDynamicObject(19460,2596.7522000,-1528.6767600,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20332. CreateDynamicObject(19396,2596.7522000,-1535.0933800,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20333. CreateDynamicObject(19460,2601.5805700,-1524.0114700,-44.6456000,0.0000000,0.0000000,90.0000000); //
  20334. CreateDynamicObject(19434,2596.7451200,-1510.2794200,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20335. CreateDynamicObject(19389,2591.9553200,-1483.9314000,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20336. CreateDynamicObject(19359,2595.1445300,-1483.9314000,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20337. CreateDynamicObject(19457,2583.4099100,-1522.6989700,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20338. CreateDynamicObject(19438,2588.9470200,-1522.6994600,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20339. CreateDynamicObject(19457,2577.4726600,-1505.2242400,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20340. CreateDynamicObject(19365,2589.6608900,-1527.4061300,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20341. CreateDynamicObject(19365,2589.6608900,-1524.2182600,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20342. CreateDynamicObject(19365,2585.9934100,-1527.4061300,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20343. CreateDynamicObject(19365,2585.9934100,-1524.2182600,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20344. CreateDynamicObject(19365,2582.3120100,-1524.2182600,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20345. CreateDynamicObject(19365,2582.3120100,-1527.4061300,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20346. CreateDynamicObject(19365,2575.9494600,-1500.4847400,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20347. CreateDynamicObject(19365,2572.7597700,-1500.4847400,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20348. CreateDynamicObject(19365,2572.7597700,-1504.1412400,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20349. CreateDynamicObject(19365,2575.9494600,-1504.1412400,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20350. CreateDynamicObject(19365,2572.7597700,-1507.7819800,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20351. CreateDynamicObject(19365,2575.9494600,-1507.7819800,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20352. CreateDynamicObject(19365,2572.7597700,-1511.4622800,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20353. CreateDynamicObject(19365,2575.9494600,-1511.4622800,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20354. CreateDynamicObject(19365,2572.7597700,-1515.1044900,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20355. CreateDynamicObject(19365,2575.9494600,-1515.1044900,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20356. CreateDynamicObject(19457,2583.4099100,-1522.6999500,-45.6656000,0.0000000,0.0000000,90.0000000); //
  20357. CreateDynamicObject(19438,2588.9470200,-1522.7002000,-45.6656000,0.0000000,0.0000000,90.0000000); //
  20358. CreateDynamicObject(19457,2577.4668000,-1514.0482200,-45.6656000,0.0000000,0.0000000,0.0000000); //
  20359. CreateDynamicObject(19457,2577.4628900,-1505.2241200,-45.6656000,0.0000000,0.0000000,0.0000000); //
  20360. CreateDynamicObject(19377,2584.4929200,-1527.4469000,-46.3228000,0.0000000,90.0000000,0.0000000); //
  20361. CreateDynamicObject(19377,2583.9729000,-1527.4469000,-46.3232000,0.0000000,90.0000000,0.0000000); //
  20362. CreateDynamicObject(19377,2604.3952600,-1533.4248000,-46.3432000,0.0000000,90.0000000,0.0000000); //
  20363. CreateDynamicObject(19377,2604.3762200,-1523.7962600,-46.3432000,0.0000000,90.0000000,0.0000000); //
  20364. CreateDynamicObject(19377,2604.3762200,-1514.2016600,-46.3232000,0.0000000,90.0000000,0.0000000); //
  20365. CreateDynamicObject(19377,2604.3762200,-1504.5864300,-46.3232000,0.0000000,90.0000000,0.0000000); //
  20366. CreateDynamicObject(19377,2591.3874500,-1536.8941700,-46.3232000,0.0000000,90.0000000,0.0000000); //
  20367. CreateDynamicObject(19457,2611.0893600,-1538.2376700,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20368. CreateDynamicObject(19377,2572.1840800,-1513.9453100,-46.3232000,0.0000000,90.0000000,0.0000000); //
  20369. CreateDynamicObject(19377,2572.1840800,-1505.2279100,-46.3228000,0.0000000,90.0000000,0.0000000); //
  20370. CreateDynamicObject(19303,2571.1882300,-1503.1977500,-44.9858000,0.0000000,0.0000000,-90.0000000); //
  20371. CreateDynamicObject(19303,2571.1882300,-1506.8543700,-44.9858000,0.0000000,0.0000000,-90.0000000); //
  20372. CreateDynamicObject(19303,2571.1882300,-1510.4953600,-44.9858000,0.0000000,0.0000000,-90.0000000); //
  20373. CreateDynamicObject(19303,2571.1882300,-1514.1390400,-44.9858000,0.0000000,0.0000000,-90.0000000); //
  20374. CreateDynamicObject(19303,2571.1882300,-1517.8060300,-44.9858000,0.0000000,0.0000000,-90.0000000); //
  20375. CreateDynamicObject(19457,2571.2272900,-1505.2242400,-41.9868000,0.0000000,0.0000000,0.0000000); //
  20376. CreateDynamicObject(19457,2571.2275400,-1514.0482200,-41.9868000,0.0000000,0.0000000,0.0000000); //
  20377. CreateDynamicObject(19303,2581.3505900,-1528.9715600,-44.9858000,0.0000000,0.0000000,0.0000000); //
  20378. CreateDynamicObject(19457,2583.4099100,-1528.9423800,-41.9868000,0.0000000,0.0000000,90.0000000); //
  20379. CreateDynamicObject(19303,2585.0329600,-1528.9715600,-44.9858000,0.0000000,0.0000000,0.0000000); //
  20380. CreateDynamicObject(19303,2588.6933600,-1528.9715600,-44.9858000,0.0000000,0.0000000,0.0000000); //
  20381. CreateDynamicObject(19438,2588.9470200,-1528.9420200,-41.9868000,0.0000000,0.0000000,90.0000000); //
  20382. CreateDynamicObject(19438,2588.8664600,-1506.4571500,-46.6081000,90.0000000,0.0000000,0.0000000); //
  20383. CreateDynamicObject(19438,2588.8659700,-1509.7370600,-46.6081000,90.0000000,0.0000000,0.0000000); //
  20384. CreateDynamicObject(19438,2588.8654800,-1513.0338100,-46.6081000,90.0000000,0.0000000,0.0000000); //
  20385. CreateDynamicObject(19438,2588.8649900,-1516.3359400,-46.6081000,90.0000000,0.0000000,0.0000000); //
  20386. CreateDynamicObject(19438,2588.8654800,-1518.1480700,-46.6081000,90.0000000,0.0000000,180.0000000); //
  20387. CreateDynamicObject(19438,2588.8664600,-1516.4140600,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20388. CreateDynamicObject(19438,2588.8813500,-1504.9034400,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20389. CreateDynamicObject(19438,2588.8664600,-1508.9973100,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20390. CreateDynamicObject(19438,2588.8701200,-1512.3344700,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20391. CreateDynamicObject(1810,2590.4292000,-1500.5133100,-49.9166000,0.0000000,0.0000000,90.0000000); //
  20392. CreateDynamicObject(1810,2586.6823700,-1497.3075000,-49.9166000,0.0000000,0.0000000,0.0000000); //
  20393. CreateDynamicObject(2602,2572.1464800,-1504.5993700,-49.3503000,0.0000000,0.0000000,0.0000000); //
  20394. CreateDynamicObject(2602,2573.2241200,-1511.0128200,-49.3503000,0.0000000,0.0000000,180.0000000); //
  20395. CreateDynamicObject(2602,2573.2226600,-1511.9268800,-49.3503000,0.0000000,0.0000000,0.0000000); //
  20396. CreateDynamicObject(2602,2572.7985800,-1515.5651900,-49.3503000,0.0000000,0.0000000,0.0000000); //
  20397. CreateDynamicObject(2602,2591.2797900,-1516.6300000,-49.3503000,0.0000000,0.0000000,0.0000000); //
  20398. CreateDynamicObject(2602,2591.7448700,-1512.9747300,-49.3503000,0.0000000,0.0000000,0.0000000); //
  20399. CreateDynamicObject(2602,2592.3857400,-1512.0372300,-49.3503000,0.0000000,0.0000000,180.0000000); //
  20400. CreateDynamicObject(2602,2591.8483900,-1505.6694300,-49.3503000,0.0000000,0.0000000,0.0000000); //
  20401. CreateDynamicObject(2602,2591.3774400,-1504.7100800,-49.3503000,0.0000000,0.0000000,180.0000000); //
  20402. CreateDynamicObject(2602,2582.7678200,-1527.4909700,-49.3503000,0.0000000,0.0000000,90.0000000); //
  20403. CreateDynamicObject(2602,2589.1862800,-1526.1425800,-49.3503000,0.0000000,0.0000000,-90.0000000); //
  20404. CreateDynamicObject(2602,2581.8627900,-1526.6735800,-49.3503000,0.0000000,0.0000000,-90.0000000); //
  20405. CreateDynamicObject(2602,2581.8606000,-1523.8981900,-45.6161000,0.0000000,0.0000000,-90.0000000); //
  20406. CreateDynamicObject(2602,2585.5263700,-1524.7492700,-45.6161000,0.0000000,0.0000000,-90.0000000); //
  20407. CreateDynamicObject(2602,2586.4472700,-1524.8424100,-45.6161000,0.0000000,0.0000000,90.0000000); //
  20408. CreateDynamicObject(2602,2576.5747100,-1518.3262900,-45.6161000,0.0000000,0.0000000,180.0000000); //
  20409. CreateDynamicObject(2602,2576.4353000,-1514.6389200,-45.6161000,0.0000000,0.0000000,180.0000000); //
  20410. CreateDynamicObject(2602,2575.4777800,-1508.2396200,-45.6161000,0.0000000,0.0000000,0.0000000); //
  20411. CreateDynamicObject(2602,2576.3315400,-1507.3170200,-45.6161000,0.0000000,0.0000000,180.0000000); //
  20412. CreateDynamicObject(2602,2576.1120600,-1503.6669900,-45.6161000,0.0000000,0.0000000,180.0000000); //
  20413. CreateDynamicObject(2718,2568.1943400,-1527.0000000,-47.3391000,0.0000000,0.0000000,90.0000000); //
  20414. CreateDynamicObject(2635,2569.7751500,-1530.2347400,-49.5159000,0.0000000,0.0000000,0.0000000); //
  20415. CreateDynamicObject(1810,2569.9243200,-1529.1588100,-49.9166000,0.0000000,0.0000000,0.0000000); //
  20416. CreateDynamicObject(1810,2569.3713400,-1531.2939500,-49.9166000,0.0000000,0.0000000,180.0000000); //
  20417. CreateDynamicObject(1810,2568.6267100,-1530.0194100,-49.9166000,0.0000000,0.0000000,90.0000000); //
  20418. CreateDynamicObject(1810,2570.7819800,-1530.4863300,-49.9166000,0.0000000,0.0000000,-90.0000000); //
  20419. CreateDynamicObject(19273,2594.0835000,-1487.1978800,-48.5737000,0.0000000,0.0000000,0.0000000); //
  20420. CreateDynamicObject(19273,2594.1801800,-1487.1099900,-48.5737000,0.0000000,0.0000000,180.0000000); //
  20421. CreateDynamicObject(19273,2589.6960400,-1496.6012000,-48.5737000,0.0000000,0.0000000,180.0000000); //
  20422. CreateDynamicObject(19273,2573.7114300,-1532.0683600,-48.5737000,0.0000000,0.0000000,180.0000000); //
  20423. CreateDynamicObject(19273,2571.6086400,-1532.2152100,-48.5737000,0.0000000,0.0000000,0.0000000); //
  20424. CreateDynamicObject(19273,2593.4191900,-1497.2303500,-48.5737000,0.0000000,0.0000000,-90.0000000); //
  20425. CreateDynamicObject(19273,2593.5554200,-1499.2341300,-48.5737000,0.0000000,0.0000000,90.0000000); //
  20426. CreateDynamicObject(19273,2577.5898400,-1486.5747100,-48.5737000,0.0000000,0.0000000,90.0000000); //
  20427. CreateDynamicObject(19273,2577.4421400,-1484.6507600,-48.5737000,0.0000000,0.0000000,-90.0000000); //
  20428. CreateDynamicObject(2602,2587.0730000,-1539.9328600,-49.3503000,0.0000000,0.0000000,90.0000000); //
  20429. CreateDynamicObject(2602,2580.6462400,-1539.8723100,-49.3503000,0.0000000,0.0000000,90.0000000); //
  20430. CreateDynamicObject(19377,2598.6626000,-1533.3522900,-46.3227000,0.0000000,90.0000000,0.0000000); //
  20431. CreateDynamicObject(19377,2598.6626000,-1523.7504900,-46.3227000,0.0000000,90.0000000,0.0000000); //
  20432. CreateDynamicObject(19377,2598.6626000,-1514.1256100,-46.3227000,0.0000000,90.0000000,0.0000000); //
  20433. CreateDynamicObject(19377,2598.6626000,-1504.5008500,-46.3227000,0.0000000,90.0000000,0.0000000); //
  20434. CreateDynamicObject(19377,2598.6626000,-1494.8833000,-46.3227000,0.0000000,90.0000000,0.0000000); //
  20435. CreateDynamicObject(19377,2593.6318400,-1506.6837200,-46.3232000,0.0000000,90.0000000,90.0000000); //
  20436. CreateDynamicObject(19377,2593.6318400,-1514.6474600,-46.3223000,0.0000000,90.0000000,90.0000000); //
  20437. CreateDynamicObject(638,2568.4836400,-1477.8515600,-49.1983000,0.0000000,0.0000000,0.0000000); //
  20438. CreateDynamicObject(2245,2572.4194300,-1481.8790300,-48.6835000,0.0000000,0.0000000,0.0000000); //
  20439. CreateDynamicObject(2252,2572.4213900,-1485.1136500,-48.6835000,0.0000000,0.0000000,0.0000000); //
  20440. CreateDynamicObject(2253,2568.6240200,-1481.6076700,-48.7235000,0.0000000,0.0000000,0.0000000); //
  20441. CreateDynamicObject(19175,2585.8527800,-1474.4294400,-47.3535000,0.0000000,0.0000000,0.0000000); //
  20442. CreateDynamicObject(19174,2574.5610400,-1487.0332000,-47.6135000,0.0000000,0.0000000,180.0000000); //
  20443. CreateDynamicObject(19173,2570.7285200,-1474.4753400,-47.6028000,0.0000000,0.0000000,0.0000000); //
  20444. CreateDynamicObject(19172,2568.1372100,-1479.8991700,-47.6135000,0.0000000,0.0000000,90.0000000); //
  20445. CreateDynamicObject(18070,2569.5061000,-1483.4416500,-49.4718600,0.0000000,0.0000000,180.0000000); //
  20446. CreateDynamicObject(1806,2586.9096700,-1488.7535400,-49.9170400,0.0000000,0.0000000,0.0000000); //
  20447. CreateDynamicObject(2161,2596.9821800,-1492.3110400,-49.9170000,0.0000000,0.0000000,90.0000000); //
  20448. CreateDynamicObject(2162,2596.8776900,-1490.8690200,-48.7218000,0.0000000,0.0000000,90.0000000); //
  20449. CreateDynamicObject(2163,2606.3737800,-1499.9134500,-48.5220300,0.0000000,0.0000000,-90.0000000); //
  20450. CreateDynamicObject(2164,2602.2189900,-1487.3179900,-49.9170400,0.0000000,0.0000000,0.0000000); //
  20451. CreateDynamicObject(2165,2605.7746600,-1496.2883300,-49.9170000,0.0000000,0.0000000,180.0000000); //
  20452. CreateDynamicObject(2167,2596.9567900,-1493.4010000,-49.9170000,0.0000000,0.0000000,90.0000000); //
  20453. CreateDynamicObject(2169,2597.3354500,-1490.9279800,-49.9170000,0.0000000,0.0000000,90.0000000); //
  20454. CreateDynamicObject(2172,2597.4206500,-1500.9627700,-49.9170000,0.0000000,0.0000000,90.0000000); //
  20455. CreateDynamicObject(2174,2599.3772000,-1487.7653800,-49.9170400,0.0000000,0.0000000,0.0000000); //
  20456. CreateDynamicObject(2181,2603.7265600,-1502.9697300,-49.9170000,0.0000000,0.0000000,180.0000000); //
  20457. CreateDynamicObject(2182,2605.7280300,-1502.0267300,-49.9170000,0.0000000,0.0000000,180.0000000); //
  20458. CreateDynamicObject(2183,2601.3540000,-1497.8933100,-49.9170000,0.0000000,0.0000000,90.0000000); //
  20459. CreateDynamicObject(2184,2599.8276400,-1527.0439500,-46.2566000,0.0000000,0.0000000,0.0000000); //
  20460. CreateDynamicObject(2185,2602.9746100,-1531.8485100,-46.2366000,0.0000000,0.0000000,180.0000000); //
  20461. CreateDynamicObject(2193,2598.4145500,-1503.0168500,-49.9170000,0.0000000,0.0000000,90.0000000); //
  20462. CreateDynamicObject(2198,2601.6931200,-1503.0426000,-49.9170000,0.0000000,0.0000000,180.0000000); //
  20463. CreateDynamicObject(2199,2597.5620100,-1524.1832300,-46.2566000,0.0000000,0.0000000,0.0000000); //
  20464. CreateDynamicObject(2200,2604.1384300,-1487.3872100,-49.9170400,0.0000000,0.0000000,0.0000000); //
  20465. CreateDynamicObject(2204,2604.6284200,-1509.3776900,-46.2566000,0.0000000,0.0000000,180.0000000); //
  20466. CreateDynamicObject(2205,2597.3642600,-1502.9668000,-46.2566000,0.0000000,0.0000000,90.0000000); //
  20467. CreateDynamicObject(2206,2603.7165500,-1505.1082800,-46.2566000,0.0000000,0.0000000,90.0000000); //
  20468. CreateDynamicObject(2308,2597.3955100,-1488.7730700,-49.9170400,0.0000000,0.0000000,0.0000000); //
  20469. CreateDynamicObject(1714,2605.2094700,-1504.2469500,-46.2165000,0.0000000,0.0000000,-90.0000000); //
  20470. CreateDynamicObject(1721,2569.6325700,-1474.6068100,-49.9059000,0.0000000,0.0000000,180.0000000); //
  20471. CreateDynamicObject(2611,2591.4240700,-1487.2963900,-48.2687000,0.0000000,0.0000000,0.0000000); //
  20472. CreateDynamicObject(2606,2591.7890600,-1496.3067600,-47.6941000,0.0000000,0.0000000,180.0000000); //
  20473. CreateDynamicObject(2604,2596.1335400,-1494.6384300,-49.1135000,0.0000000,0.0000000,-90.0000000); //
  20474. CreateDynamicObject(2616,2574.7910200,-1518.9211400,-48.6063500,0.0000000,0.0000000,0.0000000); //
  20475. CreateDynamicObject(1742,2598.4848600,-1538.2462200,-46.2566000,0.0000000,0.0000000,180.0000000); //
  20476. CreateDynamicObject(1671,2600.9877900,-1524.8969700,-45.7923500,0.0000000,0.0000000,0.0000000); //
  20477. CreateDynamicObject(2894,2591.6357400,-1500.6967800,-49.0887000,0.0000000,0.0000000,90.0000000); //
  20478. CreateDynamicObject(1998,2586.0878900,-1488.7437700,-49.9187500,0.0000000,0.0000000,0.0000000); //
  20479. CreateDynamicObject(1523,2600.1047400,-1479.1350100,-49.9295200,0.0000000,0.0000000,0.0000000); //
  20480. CreateDynamicObject(2742,2600.3142100,-1482.1848100,-48.6037000,0.0000000,0.0000000,90.0000000); //
  20481. CreateDynamicObject(2741,2605.6401400,-1483.7628200,-48.4637000,0.0000000,0.0000000,180.0000000); //
  20482. CreateDynamicObject(1775,2579.5859400,-1474.8783000,-48.8251300,0.0000000,0.0000000,0.0000000); //
  20483. CreateDynamicObject(956,2580.9555700,-1474.8044400,-49.4968500,0.0000000,0.0000000,0.0000000); //
  20484. CreateDynamicObject(1789,2588.8095700,-1486.7639200,-49.3512000,0.0000000,0.0000000,180.0000000); //
  20485. CreateDynamicObject(1363,2583.8710900,-1493.3021200,-49.0842100,0.0000000,0.0000000,0.0000000); //
  20486. CreateDynamicObject(2596,2568.3549800,-1525.7310800,-47.3702000,0.0000000,0.0000000,90.0000000); //
  20487. CreateDynamicObject(1713,2584.9064900,-1481.5022000,-49.9045800,0.0000000,0.0000000,0.0000000); //
  20488. CreateDynamicObject(2000,2586.1176800,-1494.9056400,-49.9142000,0.0000000,0.0000000,90.0000000); //
  20489. CreateDynamicObject(2523,2601.5485800,-1483.3241000,-49.8146000,0.0000000,0.0000000,180.0000000); //
  20490. CreateDynamicObject(2525,2607.5393100,-1476.8806200,-49.9146000,0.0000000,0.0000000,0.0000000); //
  20491. CreateDynamicObject(14401,2587.7666000,-1469.1503900,-49.6243000,0.0000000,0.0000000,180.0000000); //
  20492. CreateDynamicObject(1363,2582.2939500,-1495.1070600,-49.0842100,0.0000000,0.0000000,0.0000000); //
  20493. CreateDynamicObject(14455,2577.3176300,-1481.9769300,-48.3849900,0.0000000,0.0000000,90.0000000); //
  20494. CreateDynamicObject(14455,2590.1669900,-1481.4779100,-48.3849900,0.0000000,0.0000000,90.0000000); //
  20495. CreateDynamicObject(2611,2603.2045900,-1524.1508800,-44.8705900,0.0000000,0.0000000,0.0000000); //
  20496. CreateDynamicObject(14455,2604.0329600,-1509.7628200,-48.2850000,0.0000000,0.0000000,180.0000000); //
  20497. CreateDynamicObject(2165,2569.6740700,-1481.6840800,-49.7570000,0.0000000,0.0000000,0.0000000); //
  20498. CreateDynamicObject(14455,2598.9716800,-1535.7523200,-48.2850000,0.0000000,0.0000000,0.0000000); //
  20499. CreateDynamicObject(14455,2598.6355000,-1523.7868700,-44.6818000,0.0000000,0.0000000,0.0000000); //
  20500. CreateDynamicObject(14455,2603.7163100,-1500.0107400,-44.7018000,0.0000000,0.0000000,180.0000000); //
  20501. CreateDynamicObject(1806,2600.4116200,-1488.7002000,-49.9170400,0.0000000,0.0000000,0.0000000); //
  20502. CreateDynamicObject(2010,2568.5241700,-1486.6673600,-49.9010000,0.0000000,0.0000000,0.0000000); //
  20503. CreateDynamicObject(2010,2577.0793500,-1474.7706300,-49.9010000,0.0000000,0.0000000,0.0000000); //
  20504. CreateDynamicObject(2946,2576.4492200,-1474.4408000,-49.9004000,0.0000000,0.0000000,90.0000000); //
  20505. CreateDynamicObject(2946,2573.2705100,-1474.4172400,-49.9004000,0.0000000,0.0000000,-90.0000000); //
  20506. CreateDynamicObject(2614,2570.6667500,-1486.9841300,-47.6304000,0.0000000,0.0000000,180.0000000); //
  20507. CreateDynamicObject(2010,2568.4746100,-1474.8962400,-49.9010000,0.0000000,0.0000000,0.0000000); //
  20508. CreateDynamicObject(1721,2570.2485400,-1474.6068100,-49.9059000,0.0000000,0.0000000,180.0000000); //
  20509. CreateDynamicObject(1721,2570.8606000,-1474.6068100,-49.9059000,0.0000000,0.0000000,180.0000000); //
  20510. CreateDynamicObject(1721,2571.4729000,-1474.6068100,-49.9059000,0.0000000,0.0000000,180.0000000); //
  20511. CreateDynamicObject(1721,2583.8786600,-1474.5422400,-49.9059000,0.0000000,0.0000000,180.0000000); //
  20512. CreateDynamicObject(1721,2585.2509800,-1488.8809800,-49.9059000,0.0000000,0.0000000,90.0000000); //
  20513. CreateDynamicObject(1806,2570.8227500,-1490.8732900,-49.9170000,0.0000000,0.0000000,200.0000000); //
  20514. CreateDynamicObject(14455,2596.4338400,-1517.4725300,-44.7218000,0.0000000,0.0000000,90.0000000); //
  20515. CreateDynamicObject(2606,2578.6794400,-1490.7675800,-43.6139000,0.0000000,0.0000000,0.0000000); //
  20516. CreateDynamicObject(2606,2597.1027800,-1505.0880100,-44.0526000,0.0000000,0.0000000,90.0000000); //
  20517. CreateDynamicObject(2819,2599.0327100,-1480.3831800,-49.2967000,0.0000000,0.0000000,-90.0000000); //
  20518. CreateDynamicObject(2596,2585.7766100,-1483.5604200,-47.8843000,0.0000000,0.0000000,180.0000000); //
  20519. CreateDynamicObject(1806,2594.9531300,-1495.6949500,-49.9170000,0.0000000,0.0000000,-90.0000000); //
  20520. CreateDynamicObject(1806,2580.7763700,-1490.7659900,-49.9170000,0.0000000,0.0000000,180.0000000); //
  20521. CreateDynamicObject(1806,2576.0896000,-1490.7462200,-49.9170000,0.0000000,0.0000000,170.0000000); //
  20522. CreateDynamicObject(14401,2613.7136200,-1470.6944600,-49.6243000,0.0000000,0.0000000,90.0000000); //
  20523. CreateDynamicObject(14401,2596.1933600,-1474.9610600,-49.6243000,0.0000000,0.0000000,-90.0000000); //
  20524. CreateDynamicObject(14782,2591.1206100,-1478.6848100,-48.9104000,0.0000000,0.0000000,90.0000000); //
  20525. CreateDynamicObject(19359,2601.7041000,-1477.5789800,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20526. CreateDynamicObject(1523,2601.7658700,-1479.1350100,-49.9295000,0.0000000,0.0000000,0.0000000); //
  20527. CreateDynamicObject(19359,2603.3667000,-1477.5789800,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20528. CreateDynamicObject(1523,2603.4340800,-1479.1350100,-49.9295000,0.0000000,0.0000000,0.0000000); //
  20529. CreateDynamicObject(19359,2605.0510300,-1477.5789800,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20530. CreateDynamicObject(1523,2605.1118200,-1479.1350100,-49.9295000,0.0000000,0.0000000,0.0000000); //
  20531. CreateDynamicObject(19359,2606.7207000,-1477.5789800,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20532. CreateDynamicObject(1523,2606.7800300,-1479.1350100,-49.9295000,0.0000000,0.0000000,0.0000000); //
  20533. CreateDynamicObject(19359,2608.3811000,-1477.5789800,-48.1570000,0.0000000,0.0000000,0.0000000); //
  20534. CreateDynamicObject(19359,2609.9060100,-1479.1053500,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20535. CreateDynamicObject(19379,2605.3469200,-1479.1879900,-49.9138000,0.0000000,90.0000000,0.0000000); //
  20536. CreateDynamicObject(2525,2605.9138200,-1476.8806200,-49.9146000,0.0000000,0.0000000,0.0000000); //
  20537. CreateDynamicObject(2525,2604.1682100,-1476.8806200,-49.9146000,0.0000000,0.0000000,0.0000000); //
  20538. CreateDynamicObject(2525,2602.5439500,-1476.8806200,-49.9146000,0.0000000,0.0000000,0.0000000); //
  20539. CreateDynamicObject(2525,2600.8977100,-1476.8806200,-49.9146000,0.0000000,0.0000000,0.0000000); //
  20540. CreateDynamicObject(2523,2603.1684600,-1483.3241000,-49.8146000,0.0000000,0.0000000,180.0000000); //
  20541. CreateDynamicObject(2523,2606.6323200,-1483.3241000,-49.8146000,0.0000000,0.0000000,180.0000000); //
  20542. CreateDynamicObject(2523,2604.8488800,-1483.3241000,-49.8146000,0.0000000,0.0000000,180.0000000); //
  20543. CreateDynamicObject(2741,2603.8586400,-1483.7628200,-48.4637000,0.0000000,0.0000000,180.0000000); //
  20544. CreateDynamicObject(2741,2600.6052200,-1483.7628200,-48.4637000,0.0000000,0.0000000,180.0000000); //
  20545. CreateDynamicObject(2741,2602.2099600,-1483.7628200,-48.4637000,0.0000000,0.0000000,180.0000000); //
  20546. CreateDynamicObject(2742,2600.3142100,-1480.6223100,-48.6037000,0.0000000,0.0000000,90.0000000); //
  20547. CreateDynamicObject(2742,2609.4304200,-1480.5280800,-48.6037000,0.0000000,0.0000000,-90.0000000); //
  20548. CreateDynamicObject(2742,2609.4304200,-1482.3486300,-48.6037000,0.0000000,0.0000000,-90.0000000); //
  20549. CreateDynamicObject(1789,2609.2482900,-1492.5957000,-49.3512000,0.0000000,0.0000000,-90.0000000); //
  20550. CreateDynamicObject(1789,2609.2446300,-1510.8991700,-49.3512000,0.0000000,0.0000000,-90.0000000); //
  20551. CreateDynamicObject(2185,2598.7150900,-1529.3413100,-46.2366000,0.0000000,0.0000000,180.0000000); //
  20552. CreateDynamicObject(2185,2598.6997100,-1531.7718500,-46.2366000,0.0000000,0.0000000,180.0000000); //
  20553. CreateDynamicObject(2185,2604.9284700,-1529.3912400,-46.2366000,0.0000000,0.0000000,180.0000000); //
  20554. CreateDynamicObject(2185,2604.9284700,-1534.4104000,-46.2366000,0.0000000,0.0000000,180.0000000); //
  20555. CreateDynamicObject(2180,2604.5805700,-1526.7252200,-46.2366000,0.0000000,0.0000000,90.0000000); //
  20556. CreateDynamicObject(2185,2604.9284700,-1531.8485100,-46.2366000,0.0000000,0.0000000,180.0000000); //
  20557. CreateDynamicObject(2185,2602.9746100,-1534.4104000,-46.2366000,0.0000000,0.0000000,180.0000000); //
  20558. CreateDynamicObject(2185,2602.9746100,-1529.3929400,-46.2366000,0.0000000,0.0000000,180.0000000); //
  20559. CreateDynamicObject(2844,2594.8034700,-1475.4740000,-49.2963000,0.0000000,0.0000000,90.0000000); //
  20560. CreateDynamicObject(2843,2593.6518600,-1483.9461700,-49.2765000,0.0000000,0.0000000,0.0000000); //
  20561. CreateDynamicObject(2852,2599.4382300,-1483.1309800,-49.9160000,0.0000000,0.0000000,0.0000000); //
  20562. CreateDynamicObject(2855,2593.1616200,-1474.9517800,-49.9158000,0.0000000,0.0000000,0.0000000); //
  20563. CreateDynamicObject(1789,2593.9035600,-1529.3818400,-49.3512000,0.0000000,0.0000000,90.0000000); //
  20564. CreateDynamicObject(2635,2590.4077100,-1535.8212900,-49.5159000,0.0000000,0.0000000,0.0000000); //
  20565. CreateDynamicObject(1810,2580.6840800,-1536.7833300,-49.9166000,0.0000000,0.0000000,90.0000000); //
  20566. CreateDynamicObject(1810,2588.7021500,-1541.0133100,-49.9166000,0.0000000,0.0000000,180.0000000); //
  20567. CreateDynamicObject(1810,2591.7172900,-1536.1645500,-49.9166000,0.0000000,0.0000000,-100.0000000); //
  20568. CreateDynamicObject(1713,2600.7138700,-1508.9155300,-46.2867000,0.0000000,0.0000000,180.0000000); //
  20569. CreateDynamicObject(2010,2578.3303200,-1475.0185500,-49.9010000,0.0000000,0.0000000,0.0000000); //
  20570. CreateDynamicObject(2010,2589.8076200,-1475.0542000,-49.9010000,0.0000000,0.0000000,0.0000000); //
  20571. CreateDynamicObject(2010,2589.8147000,-1483.4173600,-49.9010000,0.0000000,0.0000000,0.0000000); //
  20572. CreateDynamicObject(2010,2580.6652800,-1483.3403300,-49.9010000,0.0000000,0.0000000,0.0000000); //
  20573. CreateDynamicObject(1721,2584.4821800,-1474.5422400,-49.9059000,0.0000000,0.0000000,180.0000000); //
  20574. CreateDynamicObject(1721,2585.0856900,-1474.5422400,-49.9059000,0.0000000,0.0000000,180.0000000); //
  20575. CreateDynamicObject(1721,2585.7009300,-1474.5422400,-49.9059000,0.0000000,0.0000000,180.0000000); //
  20576. CreateDynamicObject(1721,2586.3110400,-1474.5422400,-49.9059000,0.0000000,0.0000000,180.0000000); //
  20577. CreateDynamicObject(1721,2586.9326200,-1474.5422400,-49.9059000,0.0000000,0.0000000,180.0000000); //
  20578. CreateDynamicObject(1721,2587.5380900,-1474.5422400,-49.9059000,0.0000000,0.0000000,180.0000000); //
  20579. CreateDynamicObject(1721,2587.5380900,-1478.0679900,-49.9059000,0.0000000,0.0000000,180.0000000); //
  20580. CreateDynamicObject(1721,2586.9326200,-1478.0679900,-49.9059000,0.0000000,0.0000000,180.0000000); //
  20581. CreateDynamicObject(1721,2586.3110400,-1478.0679900,-49.9059000,0.0000000,0.0000000,180.0000000); //
  20582. CreateDynamicObject(1721,2585.7009300,-1478.0679900,-49.9059000,0.0000000,0.0000000,180.0000000); //
  20583. CreateDynamicObject(1721,2585.0856900,-1478.0679900,-49.9059000,0.0000000,0.0000000,180.0000000); //
  20584. CreateDynamicObject(1721,2584.4821800,-1478.0679900,-49.9059000,0.0000000,0.0000000,180.0000000); //
  20585. CreateDynamicObject(1721,2583.8786600,-1478.0679900,-49.9059000,0.0000000,0.0000000,180.0000000); //
  20586. CreateDynamicObject(1721,2587.5380900,-1477.8079800,-49.9059000,0.0000000,0.0000000,0.0000000); //
  20587. CreateDynamicObject(1721,2586.9326200,-1477.8079800,-49.9059000,0.0000000,0.0000000,0.0000000); //
  20588. CreateDynamicObject(1721,2586.3110400,-1477.8079800,-49.9059000,0.0000000,0.0000000,0.0000000); //
  20589. CreateDynamicObject(1721,2585.7009300,-1477.8079800,-49.9059000,0.0000000,0.0000000,0.0000000); //
  20590. CreateDynamicObject(1721,2585.0856900,-1477.8079800,-49.9059000,0.0000000,0.0000000,0.0000000); //
  20591. CreateDynamicObject(1721,2584.4821800,-1477.8079800,-49.9059000,0.0000000,0.0000000,0.0000000); //
  20592. CreateDynamicObject(1721,2583.8786600,-1477.8079800,-49.9059000,0.0000000,0.0000000,0.0000000); //
  20593. CreateDynamicObject(1721,2577.8586400,-1477.0039100,-49.9059000,0.0000000,0.0000000,-90.0000000); //
  20594. CreateDynamicObject(1721,2577.8586400,-1477.6159700,-49.9059000,0.0000000,0.0000000,-90.0000000); //
  20595. CreateDynamicObject(1721,2577.8586400,-1478.2240000,-49.9059000,0.0000000,0.0000000,-90.0000000); //
  20596. CreateDynamicObject(1721,2577.8586400,-1478.8396000,-49.9059000,0.0000000,0.0000000,-90.0000000); //
  20597. CreateDynamicObject(1721,2577.8586400,-1479.4498300,-49.9059000,0.0000000,0.0000000,-90.0000000); //
  20598. CreateDynamicObject(1721,2577.8586400,-1480.0535900,-49.9059000,0.0000000,0.0000000,-90.0000000); //
  20599. CreateDynamicObject(1721,2577.8586400,-1480.6656500,-49.9059000,0.0000000,0.0000000,-90.0000000); //
  20600. CreateDynamicObject(19173,2577.7417000,-1478.7891800,-47.3428000,0.0000000,0.0000000,90.0000000); //
  20601. CreateDynamicObject(1721,2568.2429200,-1488.4895000,-49.9059000,0.0000000,0.0000000,-90.0000000); //
  20602. CreateDynamicObject(1721,2568.2580600,-1489.1009500,-49.9059000,0.0000000,0.0000000,-90.0000000); //
  20603. CreateDynamicObject(1721,2572.5534700,-1487.3387500,-49.9059000,0.0000000,0.0000000,180.0000000); //
  20604. CreateDynamicObject(1721,2573.1618700,-1487.3460700,-49.9059000,0.0000000,0.0000000,180.0000000); //
  20605. CreateDynamicObject(1721,2573.7697800,-1487.3536400,-49.9059000,0.0000000,0.0000000,180.0000000); //
  20606. CreateDynamicObject(1721,2577.8925800,-1487.3885500,-49.9059000,0.0000000,0.0000000,180.0000000); //
  20607. CreateDynamicObject(1721,2578.4934100,-1487.3758500,-49.9059000,0.0000000,0.0000000,180.0000000); //
  20608. CreateDynamicObject(1721,2579.0942400,-1487.3631600,-49.9059000,0.0000000,0.0000000,180.0000000); //
  20609. CreateDynamicObject(1721,2585.2509800,-1489.4814500,-49.9059000,0.0000000,0.0000000,90.0000000); //
  20610. CreateDynamicObject(1721,2585.2509800,-1490.0819100,-49.9059000,0.0000000,0.0000000,90.0000000); //
  20611. CreateDynamicObject(1810,2580.5219700,-1492.9643600,-49.9166000,0.0000000,0.0000000,190.0000000); //
  20612. CreateDynamicObject(1810,2575.7763700,-1492.7585400,-49.9166000,0.0000000,0.0000000,180.0000000); //
  20613. CreateDynamicObject(1810,2570.6904300,-1492.8303200,-49.9166000,0.0000000,0.0000000,160.0000000); //
  20614. CreateDynamicObject(1363,2569.6970200,-1494.9207800,-49.0842100,0.0000000,0.0000000,0.0000000); //
  20615. CreateDynamicObject(2000,2586.1176800,-1494.3918500,-49.9142000,0.0000000,0.0000000,90.0000000); //
  20616. CreateDynamicObject(2000,2586.1176800,-1493.8665800,-49.9142000,0.0000000,0.0000000,90.0000000); //
  20617. CreateDynamicObject(2000,2605.4843800,-1518.7618400,-49.9142000,0.0000000,0.0000000,180.0000000); //
  20618. CreateDynamicObject(2000,2605.0043900,-1518.7506100,-49.9142000,0.0000000,0.0000000,180.0000000); //
  20619. CreateDynamicObject(2615,2588.2688000,-1487.2829600,-48.5264000,0.0000000,0.0000000,0.0000000); //
  20620. CreateDynamicObject(2615,2574.3835400,-1518.9327400,-48.4471000,0.0000000,0.0000000,0.0000000); //
  20621. CreateDynamicObject(2615,2601.3872100,-1538.0926500,-44.9337000,0.0000000,0.0000000,180.0000000); //
  20622. CreateDynamicObject(2184,2599.5585900,-1512.5191700,-46.2566000,0.0000000,0.0000000,0.0000000); //
  20623. CreateDynamicObject(1810,2573.2365700,-1503.4947500,-46.2409000,0.0000000,0.0000000,180.0000000); //
  20624. CreateDynamicObject(1810,2585.3693800,-1526.9633800,-46.2409000,0.0000000,0.0000000,-90.0000000); //
  20625. CreateDynamicObject(2165,2605.7790500,-1493.6700400,-49.9170000,0.0000000,0.0000000,180.0000000); //
  20626. CreateDynamicObject(2165,2605.8168900,-1491.1554000,-49.9170000,0.0000000,0.0000000,180.0000000); //
  20627. CreateDynamicObject(2183,2601.3535200,-1493.9669200,-49.9170000,0.0000000,0.0000000,90.0000000); //
  20628. CreateDynamicObject(1806,2598.3850100,-1488.6002200,-49.9170400,0.0000000,0.0000000,0.0000000); //
  20629. CreateDynamicObject(1806,2600.8967300,-1502.0003700,-49.9170000,0.0000000,0.0000000,180.0000000); //
  20630. CreateDynamicObject(1806,2603.2055700,-1502.2303500,-49.9170000,0.0000000,0.0000000,180.0000000); //
  20631. CreateDynamicObject(1806,2598.5227100,-1502.0858200,-49.9170000,0.0000000,0.0000000,90.0000000); //
  20632. CreateDynamicObject(1806,2598.1582000,-1500.1571000,-49.9170000,0.0000000,0.0000000,90.0000000); //
  20633. CreateDynamicObject(1806,2605.0200200,-1502.1398900,-49.9170000,0.0000000,0.0000000,-90.0000000); //
  20634. CreateDynamicObject(1806,2604.9179700,-1495.1814000,-49.9170000,0.0000000,0.0000000,190.0000000); //
  20635. CreateDynamicObject(1806,2605.1430700,-1492.2131300,-49.9170000,0.0000000,0.0000000,180.0000000); //
  20636. CreateDynamicObject(1806,2605.4191900,-1490.0889900,-49.9170000,0.0000000,0.0000000,160.0000000); //
  20637. CreateDynamicObject(1806,2601.6726100,-1497.3433800,-49.9170000,0.0000000,0.0000000,90.0000000); //
  20638. CreateDynamicObject(1806,2602.0322300,-1491.7270500,-49.9170000,0.0000000,0.0000000,100.0000000); //
  20639. CreateDynamicObject(1806,2601.8017600,-1495.7104500,-49.9170000,0.0000000,0.0000000,100.0000000); //
  20640. CreateDynamicObject(1806,2601.7348600,-1493.2697800,-49.9170000,0.0000000,0.0000000,80.0000000); //
  20641. CreateDynamicObject(1806,2599.1750500,-1491.6322000,-49.9170000,0.0000000,0.0000000,-90.0000000); //
  20642. CreateDynamicObject(1806,2599.1113300,-1497.3595000,-49.9170000,0.0000000,0.0000000,-90.0000000); //
  20643. CreateDynamicObject(1806,2599.2121600,-1493.3472900,-49.9170000,0.0000000,0.0000000,-80.0000000); //
  20644. CreateDynamicObject(1806,2599.1191400,-1494.9537400,-49.9170000,0.0000000,0.0000000,-860.0000000); //
  20645. CreateDynamicObject(2202,2597.3864700,-1497.2932100,-49.9186000,0.0000000,0.0000000,90.0000000); //
  20646. CreateDynamicObject(2202,2605.8469200,-1501.2639200,-46.2566000,0.0000000,0.0000000,-90.0000000); //
  20647. CreateDynamicObject(2202,2604.2683100,-1537.7445100,-46.2566000,0.0000000,0.0000000,180.0000000); //
  20648. CreateDynamicObject(2635,2601.4875500,-1515.6564900,-45.8177000,0.0000000,0.0000000,0.0000000); //
  20649. CreateDynamicObject(2199,2599.0681200,-1509.6723600,-46.2566000,0.0000000,0.0000000,0.0000000); //
  20650. CreateDynamicObject(1742,2597.6015600,-1509.6586900,-46.2566000,0.0000000,0.0000000,0.0000000); //
  20651. CreateDynamicObject(2611,2602.5202600,-1509.7048300,-44.8705900,0.0000000,0.0000000,0.0000000); //
  20652. CreateDynamicObject(1714,2600.6855500,-1510.3908700,-46.2165000,0.0000000,0.0000000,0.0000000); //
  20653. CreateDynamicObject(2635,2600.5988800,-1515.6569800,-45.8177000,0.0000000,0.0000000,0.0000000); //
  20654. CreateDynamicObject(2635,2599.7106900,-1515.6579600,-45.8177000,0.0000000,0.0000000,0.0000000); //
  20655. CreateDynamicObject(2635,2599.7124000,-1516.5822800,-45.8177000,0.0000000,0.0000000,0.0000000); //
  20656. CreateDynamicObject(2635,2599.7180200,-1517.5152600,-45.8177000,0.0000000,0.0000000,0.0000000); //
  20657. CreateDynamicObject(2635,2599.7138700,-1518.4399400,-45.8177000,0.0000000,0.0000000,0.0000000); //
  20658. CreateDynamicObject(2635,2599.7111800,-1519.3651100,-45.8177000,0.0000000,0.0000000,0.0000000); //
  20659. CreateDynamicObject(2635,2599.7085000,-1520.2902800,-45.8177000,0.0000000,0.0000000,0.0000000); //
  20660. CreateDynamicObject(2635,2600.5883800,-1520.2825900,-45.8177000,0.0000000,0.0000000,0.0000000); //
  20661. CreateDynamicObject(2635,2601.4772900,-1520.2891800,-45.8177000,0.0000000,0.0000000,0.0000000); //
  20662. CreateDynamicObject(2635,2601.4797400,-1519.3676800,-45.8177000,0.0000000,0.0000000,0.0000000); //
  20663. CreateDynamicObject(2635,2601.4755900,-1518.4410400,-45.8177000,0.0000000,0.0000000,0.0000000); //
  20664. CreateDynamicObject(2635,2601.4755900,-1517.5152600,-45.8177000,0.0000000,0.0000000,0.0000000); //
  20665. CreateDynamicObject(2635,2601.4755900,-1516.5822800,-45.8177000,0.0000000,0.0000000,0.0000000); //
  20666. CreateDynamicObject(2635,2600.5988800,-1516.5822800,-45.8177000,0.0000000,0.0000000,0.0000000); //
  20667. CreateDynamicObject(2635,2600.5988800,-1517.5152600,-45.8177000,0.0000000,0.0000000,0.0000000); //
  20668. CreateDynamicObject(2635,2600.5988800,-1518.4399400,-45.8177000,0.0000000,0.0000000,0.0000000); //
  20669. CreateDynamicObject(2635,2600.5988800,-1519.3651100,-45.8177000,0.0000000,0.0000000,0.0000000); //
  20670. CreateDynamicObject(1806,2601.1892100,-1521.7436500,-46.2379000,0.0000000,0.0000000,10.0000000); //
  20671. CreateDynamicObject(1806,2604.1508800,-1530.7949200,-46.2379000,0.0000000,0.0000000,15.0000000); //
  20672. CreateDynamicObject(1806,2604.0944800,-1535.7404800,-46.2379000,0.0000000,0.0000000,15.0000000); //
  20673. CreateDynamicObject(1806,2603.9375000,-1533.2757600,-46.2379000,0.0000000,0.0000000,0.0000000); //
  20674. CreateDynamicObject(1806,2602.1814000,-1530.7065400,-46.2379000,0.0000000,0.0000000,0.0000000); //
  20675. CreateDynamicObject(1806,2601.8159200,-1535.8094500,-46.2379000,0.0000000,0.0000000,0.0000000); //
  20676. CreateDynamicObject(1806,2602.2214400,-1533.1846900,-46.2379000,0.0000000,0.0000000,0.0000000); //
  20677. CreateDynamicObject(1806,2598.3608400,-1530.7644000,-46.2379000,0.0000000,0.0000000,15.0000000); //
  20678. CreateDynamicObject(1806,2597.8642600,-1533.2653800,-46.2379000,0.0000000,0.0000000,0.0000000); //
  20679. CreateDynamicObject(1806,2599.8586400,-1521.5395500,-46.2379000,0.0000000,0.0000000,0.0000000); //
  20680. CreateDynamicObject(1806,2602.9240700,-1518.6063200,-46.2379000,0.0000000,0.0000000,90.0000000); //
  20681. CreateDynamicObject(1806,2602.8144500,-1516.0059800,-46.2379000,0.0000000,0.0000000,90.0000000); //
  20682. CreateDynamicObject(1806,2602.8195800,-1517.3098100,-46.2379000,0.0000000,0.0000000,100.0000000); //
  20683. CreateDynamicObject(1806,2602.7719700,-1520.1145000,-46.2379000,0.0000000,0.0000000,80.0000000); //
  20684. CreateDynamicObject(1806,2598.4768100,-1517.2092300,-46.2379000,0.0000000,0.0000000,270.0000000); //
  20685. CreateDynamicObject(1806,2598.5957000,-1520.4061300,-46.2379000,0.0000000,0.0000000,290.0000000); //
  20686. CreateDynamicObject(1806,2598.3249500,-1515.8558300,-46.2379000,0.0000000,0.0000000,260.0000000); //
  20687. CreateDynamicObject(1806,2598.4614300,-1518.5614000,-46.2379000,0.0000000,0.0000000,270.0000000); //
  20688. CreateDynamicObject(2894,2600.3703600,-1512.1228000,-45.4858000,0.0000000,0.0000000,-10.0000000); //
  20689. CreateDynamicObject(2894,2603.7981000,-1504.2194800,-45.3255000,0.0000000,0.0000000,90.0000000); //
  20690. CreateDynamicObject(2894,2598.1040000,-1529.4681400,-45.4278100,0.0000000,0.0000000,0.0000000); //
  20691. CreateDynamicObject(2894,2604.3789100,-1531.9533700,-45.4307300,0.0000000,0.0000000,0.0000000); //
  20692. CreateDynamicObject(2894,2602.4685100,-1534.5537100,-45.4303300,0.0000000,0.0000000,0.0000000); //
  20693. CreateDynamicObject(2001,2597.2937000,-1500.3668200,-46.2361300,0.0000000,0.0000000,0.0000000); //
  20694. CreateDynamicObject(2001,2605.6723600,-1500.4362800,-46.2371300,0.0000000,0.0000000,0.0000000); //
  20695. CreateDynamicObject(2001,2605.8635300,-1509.0075700,-46.2371900,0.0000000,0.0000000,0.0000000); //
  20696. CreateDynamicObject(2001,2597.5178200,-1509.2005600,-46.2385300,0.0000000,0.0000000,0.0000000); //
  20697. CreateDynamicObject(2245,2597.2915000,-1501.5553000,-45.1054000,0.0000000,0.0000000,0.0000000); //
  20698. CreateDynamicObject(2252,2600.5856900,-1519.0944800,-45.1054000,0.0000000,0.0000000,0.0000000); //
  20699. CreateDynamicObject(2252,2600.6355000,-1516.6296400,-45.1054000,0.0000000,0.0000000,0.0000000); //
  20700. CreateDynamicObject(2253,2601.6511200,-1512.4017300,-45.1254000,0.0000000,0.0000000,0.0000000); //
  20701. CreateDynamicObject(2894,2600.8615700,-1526.7185100,-45.4858000,0.0000000,0.0000000,0.0000000); //
  20702. CreateDynamicObject(2008,2605.7390100,-1512.5202600,-49.9147000,0.0000000,0.0000000,-90.0000000); //
  20703. CreateDynamicObject(2009,2598.3503400,-1518.6682100,-49.9138000,0.0000000,0.0000000,18090.0000000); //
  20704. CreateDynamicObject(1806,2598.5595700,-1517.7027600,-49.9133000,0.0000000,0.0000000,90.0000000); //
  20705. CreateDynamicObject(1806,2604.5385700,-1513.0424800,-49.9133000,0.0000000,0.0000000,-120.0000000); //
  20706. CreateDynamicObject(1999,2597.3371600,-1516.6875000,-49.9133000,0.0000000,0.0000000,90.0000000); //
  20707. CreateDynamicObject(1806,2598.6662600,-1515.9505600,-49.9133000,0.0000000,0.0000000,80.0000000); //
  20708. CreateDynamicObject(1806,2601.0986300,-1529.5788600,-49.9133000,0.0000000,0.0000000,170.0000000); //
  20709. CreateDynamicObject(1806,2599.1257300,-1529.5543200,-49.9133000,0.0000000,0.0000000,210.0000000); //
  20710. CreateDynamicObject(2635,2599.4648400,-1532.5314900,-49.5330000,0.0000000,0.0000000,0.0000000); //
  20711. CreateDynamicObject(2635,2600.3393600,-1532.5319800,-49.5330000,0.0000000,0.0000000,0.0000000); //
  20712. CreateDynamicObject(2635,2599.4626500,-1533.4585000,-49.5330000,0.0000000,0.0000000,0.0000000); //
  20713. CreateDynamicObject(2635,2600.3471700,-1533.4628900,-49.5330000,0.0000000,0.0000000,0.0000000); //
  20714. CreateDynamicObject(2635,2601.2180200,-1533.4627700,-49.5330000,0.0000000,0.0000000,0.0000000); //
  20715. CreateDynamicObject(2635,2601.2282700,-1532.5290500,-49.5330000,0.0000000,0.0000000,0.0000000); //
  20716. CreateDynamicObject(19457,2601.5039100,-1535.9614300,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20717. CreateDynamicObject(1806,2602.6416000,-1532.9386000,-49.9133000,0.0000000,0.0000000,90.0000000); //
  20718. CreateDynamicObject(1806,2597.9692400,-1532.9288300,-49.9133000,0.0000000,0.0000000,-90.0000000); //
  20719. CreateDynamicObject(1808,2606.1430700,-1532.0273400,-49.9139000,0.0000000,0.0000000,-90.0000000); //
  20720. CreateDynamicObject(2611,2606.2165500,-1534.0605500,-48.5011000,0.0000000,0.0000000,-90.0000000); //
  20721. CreateDynamicObject(2615,2596.8742700,-1534.1274400,-48.2696900,0.0000000,0.0000000,90.0000000); //
  20722. CreateDynamicObject(2604,2598.7758800,-1523.3715800,-49.1603900,0.0000000,0.0000000,0.0000000); //
  20723. CreateDynamicObject(1742,2606.3889200,-1527.5459000,-49.9140000,0.0000000,0.0000000,-90.0000000); //
  20724. CreateDynamicObject(2894,2601.3823200,-1533.0022000,-49.0992000,0.0000000,0.0000000,90.0000000); //
  20725. CreateDynamicObject(2245,2600.2897900,-1532.9880400,-48.9283000,0.0000000,0.0000000,0.0000000); //
  20726. CreateDynamicObject(1806,2599.8776900,-1524.6007100,-49.9133000,0.0000000,0.0000000,0.0000000); //
  20727. CreateDynamicObject(2008,2601.1918900,-1523.5106200,-49.9136900,0.0000000,0.0000000,0.0000000); //
  20728. CreateDynamicObject(1806,2602.0930200,-1524.6508800,-49.9133000,0.0000000,0.0000000,0.0000000); //
  20729. CreateDynamicObject(2289,2602.7368200,-1530.5147700,-48.1921800,0.0000000,0.0000000,180.0000000); //
  20730. CreateDynamicObject(2287,2597.3271500,-1528.7041000,-48.4945000,0.0000000,0.0000000,90.0000000); //
  20731. CreateDynamicObject(19173,2606.2644000,-1505.4093000,-44.3331000,0.0000000,0.0000000,90.0000000); //
  20732. CreateDynamicObject(19174,2604.3193400,-1516.8465600,-44.2091000,0.0000000,0.0000000,-90.0000000); //
  20733. CreateDynamicObject(19377,2570.4843800,-1536.9881600,-46.3228000,0.0000000,90.0000000,0.0000000); //
  20734. CreateDynamicObject(19377,2609.0515100,-1495.0102500,-46.3228000,0.0000000,90.0000000,0.0000000); //
  20735. CreateDynamicObject(19377,2588.2619600,-1491.9165000,-46.3228000,0.0000000,90.0000000,0.0000000); //
  20736. CreateDynamicObject(19377,2577.7651400,-1491.9165000,-46.3228000,0.0000000,90.0000000,0.0000000); //
  20737. CreateDynamicObject(19377,2567.3024900,-1491.8570600,-46.3228000,0.0000000,90.0000000,0.0000000); //
  20738. CreateDynamicObject(19377,2609.0488300,-1485.3820800,-46.3228000,0.0000000,90.0000000,0.0000000); //
  20739. CreateDynamicObject(19377,2609.0537100,-1475.8142100,-46.3228000,0.0000000,90.0000000,0.0000000); //
  20740. CreateDynamicObject(19377,2598.5903300,-1485.2595200,-46.3228000,0.0000000,90.0000000,0.0000000); //
  20741. CreateDynamicObject(19377,2598.6052200,-1475.7821000,-46.3228000,0.0000000,90.0000000,0.0000000); //
  20742. CreateDynamicObject(19377,2588.2255900,-1482.3092000,-46.3228000,0.0000000,90.0000000,0.0000000); //
  20743. CreateDynamicObject(19377,2577.7500000,-1482.2838100,-46.3228000,0.0000000,90.0000000,0.0000000); //
  20744. CreateDynamicObject(19377,2567.3049300,-1482.2768600,-46.3228000,0.0000000,90.0000000,0.0000000); //
  20745. CreateDynamicObject(19377,2588.3283700,-1472.8222700,-46.3228000,0.0000000,90.0000000,0.0000000); //
  20746. CreateDynamicObject(19377,2577.9736300,-1472.7617200,-46.3228000,0.0000000,90.0000000,0.0000000); //
  20747. CreateDynamicObject(19377,2567.4975600,-1472.7314500,-46.3228000,0.0000000,90.0000000,0.0000000); //
  20748. CreateDynamicObject(19377,2573.0664100,-1501.3026100,-43.1414000,0.0000000,90.0000000,0.0000000); //
  20749. CreateDynamicObject(19377,2583.5532200,-1501.2769800,-43.1414000,0.0000000,90.0000000,0.0000000); //
  20750. CreateDynamicObject(19377,2593.9868200,-1501.2622100,-43.1414000,0.0000000,90.0000000,0.0000000); //
  20751. CreateDynamicObject(19377,2604.4689900,-1501.2351100,-43.1414000,0.0000000,90.0000000,0.0000000); //
  20752. CreateDynamicObject(19377,2573.2128900,-1510.9345700,-43.1414000,0.0000000,90.0000000,0.0000000); //
  20753. CreateDynamicObject(19377,2573.1948200,-1520.4831500,-43.1414000,0.0000000,90.0000000,0.0000000); //
  20754. CreateDynamicObject(19377,2573.1726100,-1530.0907000,-43.1414000,0.0000000,90.0000000,0.0000000); //
  20755. CreateDynamicObject(19377,2604.7856400,-1539.1341600,-43.1414000,0.0000000,90.0000000,0.0000000); //
  20756. CreateDynamicObject(19377,2594.3378900,-1539.1627200,-43.1414000,0.0000000,90.0000000,0.0000000); //
  20757. CreateDynamicObject(19377,2583.6110800,-1527.3887900,-43.1414000,0.0000000,90.0000000,0.0000000); //
  20758. CreateDynamicObject(19377,2583.5959500,-1517.8198200,-43.1414000,0.0000000,90.0000000,0.0000000); //
  20759. CreateDynamicObject(19377,2583.5747100,-1508.3823200,-43.1410000,0.0000000,90.0000000,0.0000000); //
  20760. CreateDynamicObject(19377,2594.0112300,-1510.6833500,-43.1410000,0.0000000,90.0000000,0.0000000); //
  20761. CreateDynamicObject(19377,2604.4348100,-1510.6649200,-43.1410000,0.0000000,90.0000000,0.0000000); //
  20762. CreateDynamicObject(19377,2593.8420400,-1520.2587900,-43.1410000,0.0000000,90.0000000,0.0000000); //
  20763. CreateDynamicObject(19377,2593.9189500,-1529.7855200,-43.1410000,0.0000000,90.0000000,0.0000000); //
  20764. CreateDynamicObject(19377,2604.2793000,-1520.2287600,-43.1410000,0.0000000,90.0000000,0.0000000); //
  20765. CreateDynamicObject(19377,2604.2434100,-1529.5528600,-43.1410000,0.0000000,90.0000000,0.0000000); //
  20766. CreateDynamicObject(16779,2573.0314900,-1480.8862300,-46.4124700,0.0000000,0.0000000,0.0000000); //
  20767. CreateDynamicObject(16779,2583.5673800,-1479.2124000,-46.4126600,0.0000000,0.0000000,0.0000000); //
  20768. CreateDynamicObject(16779,2602.0376000,-1504.9757100,-43.2316100,0.0000000,0.0000000,0.0000000); //
  20769. CreateDynamicObject(16779,2600.7199700,-1519.1566200,-43.2310900,0.0000000,0.0000000,0.0000000); //
  20770. CreateDynamicObject(16779,2600.7434100,-1513.9146700,-43.2324000,0.0000000,0.0000000,0.0000000); //
  20771. CreateDynamicObject(14680,2597.8898900,-1481.6718800,-48.0116200,0.0000000,0.0000000,0.0000000); //
  20772. CreateDynamicObject(14680,2607.0622600,-1479.5544400,-48.0116000,0.0000000,0.0000000,90.0000000); //
  20773. CreateDynamicObject(14680,2587.0349100,-1483.6640600,-48.0116000,0.0000000,0.0000000,90.0000000); //
  20774. CreateDynamicObject(14680,2606.7116700,-1483.4869400,-48.0116000,0.0000000,0.0000000,90.0000000); //
  20775. CreateDynamicObject(14680,2594.3361800,-1494.3674300,-48.0116000,0.0000000,0.0000000,0.0000000); //
  20776. CreateDynamicObject(14680,2590.1740700,-1494.0651900,-48.0116000,0.0000000,0.0000000,0.0000000); //
  20777. CreateDynamicObject(14680,2602.6525900,-1530.0367400,-44.7783900,0.0000000,0.0000000,0.0000000); //
  20778. CreateDynamicObject(14680,2602.6538100,-1536.2995600,-44.7784000,0.0000000,0.0000000,0.0000000); //
  20779. CreateDynamicObject(14680,2594.7836900,-1517.2777100,-44.7784000,0.0000000,0.0000000,0.0000000); //
  20780. CreateDynamicObject(14680,2594.7326700,-1510.1825000,-44.7784000,0.0000000,0.0000000,0.0000000); //
  20781. CreateDynamicObject(14680,2576.1723600,-1487.5322300,-48.0116000,0.0000000,0.0000000,90.0000000); //
  20782. CreateDynamicObject(14680,2580.8786600,-1487.4672900,-48.0116000,0.0000000,0.0000000,90.0000000); //
  20783. CreateDynamicObject(14680,2580.8437500,-1492.3625500,-48.0116000,0.0000000,0.0000000,90.0000000); //
  20784. CreateDynamicObject(14680,2576.2780800,-1492.7199700,-48.0116000,0.0000000,0.0000000,90.0000000); //
  20785. CreateDynamicObject(14680,2578.0752000,-1539.4305400,-48.0116000,0.0000000,0.0000000,0.0000000); //
  20786. CreateDynamicObject(14680,2585.7050800,-1536.4309100,-48.0116000,0.0000000,0.0000000,90.0000000); //
  20787. CreateDynamicObject(14680,2591.8112800,-1536.1340300,-48.0116000,0.0000000,0.0000000,90.0000000); //
  20788. CreateDynamicObject(14680,2587.9064900,-1531.5764200,-48.0116000,0.0000000,0.0000000,90.0000000); //
  20789. CreateDynamicObject(14680,2596.6257300,-1538.7545200,-48.0116000,0.0000000,0.0000000,0.0000000); //
  20790. CreateDynamicObject(14680,2596.8950200,-1525.8818400,-48.0116000,0.0000000,0.0000000,0.0000000); //
  20791. CreateDynamicObject(14680,2596.8776900,-1517.5083000,-48.0116000,0.0000000,0.0000000,0.0000000); //
  20792. CreateDynamicObject(14680,2596.8820800,-1508.7966300,-48.0116000,0.0000000,0.0000000,0.0000000); //
  20793. CreateDynamicObject(14680,2602.6577100,-1516.5947300,-48.0116000,0.0000000,0.0000000,0.0000000); //
  20794. CreateDynamicObject(14680,2603.0200200,-1529.1019300,-48.0116000,0.0000000,0.0000000,0.0000000); //
  20795. CreateDynamicObject(14680,2603.2465800,-1535.4953600,-48.0116000,0.0000000,0.0000000,0.0000000); //
  20796. CreateDynamicObject(14680,2602.7775900,-1501.3593800,-48.0116000,0.0000000,0.0000000,0.0000000); //
  20797. CreateDynamicObject(14680,2602.9150400,-1494.9841300,-48.0116000,0.0000000,0.0000000,0.0000000); //
  20798. CreateDynamicObject(14680,2609.9011200,-1492.4538600,-48.0116000,0.0000000,0.0000000,0.0000000); //
  20799. CreateDynamicObject(14680,2597.3073700,-1483.5406500,-48.0116000,0.0000000,0.0000000,90.0000000); //
  20800. CreateDynamicObject(14680,2597.3073700,-1483.5406500,-48.0116000,0.0000000,0.0000000,90.0000000); //
  20801. CreateDynamicObject(14680,2610.0634800,-1504.1438000,-48.0116000,0.0000000,0.0000000,0.0000000); //
  20802. CreateDynamicObject(14680,2609.7841800,-1530.5344200,-48.0116000,0.0000000,0.0000000,0.0000000); //
  20803. CreateDynamicObject(14680,2609.7812500,-1516.3975800,-48.0116000,0.0000000,0.0000000,0.0000000); //
  20804. CreateDynamicObject(14680,2603.1699200,-1542.3142100,-44.7784000,0.0000000,0.0000000,0.0000000); //
  20805. CreateDynamicObject(14680,2596.6804200,-1535.3389900,-44.7784000,0.0000000,0.0000000,0.0000000); //
  20806. CreateDynamicObject(14438,2582.8979500,-1509.6868900,-41.5591400,0.0000000,0.0000000,90.0000000); //
  20807. CreateDynamicObject(14680,2574.8679200,-1527.9997600,-44.8502000,0.0000000,0.0000000,0.0000000); //
  20808. CreateDynamicObject(2615,2591.4856000,-1501.6391600,-44.8764000,0.0000000,0.0000000,0.0000000); //
  20809. CreateDynamicObject(2604,2596.1655300,-1503.9307900,-45.4877000,0.0000000,0.0000000,-90.0000000); //
  20810. CreateDynamicObject(19394,2595.0214800,-1495.9495800,-44.6456000,0.0000000,0.0000000,90.0000000); //
  20811. CreateDynamicObject(19365,2596.7329100,-1495.0878900,-44.6456000,0.0000000,0.0000000,0.0000000); //
  20812. CreateDynamicObject(19365,2579.0932600,-1496.6490500,-44.6656000,0.0000000,0.0000000,90.0000000); //
  20813. CreateDynamicObject(19365,2595.2004400,-1493.5389400,-44.6456000,0.0000000,0.0000000,90.0000000); //
  20814. CreateDynamicObject(19457,2588.9255400,-1490.4744900,-44.6456000,0.0000000,0.0000000,90.0000000); //
  20815. CreateDynamicObject(19365,2593.6689500,-1492.0153800,-44.6456000,0.0000000,0.0000000,0.0000000); //
  20816. CreateDynamicObject(19457,2579.2919900,-1490.4744900,-44.6456000,0.0000000,0.0000000,90.0000000); //
  20817. CreateDynamicObject(19457,2574.5461400,-1491.7663600,-44.6456000,0.0000000,0.0000000,0.0000000); //
  20818. CreateDynamicObject(3394,2591.6040000,-1491.1533200,-46.2364000,0.0000000,0.0000000,90.0000000); //
  20819. CreateDynamicObject(3395,2578.1774900,-1496.0119600,-46.2363000,0.0000000,0.0000000,-90.0000000); //
  20820. CreateDynamicObject(3389,2575.1106000,-1492.3238500,-46.2384000,0.0000000,0.0000000,180.0000000); //
  20821. CreateDynamicObject(3388,2575.1106000,-1491.2801500,-46.2384000,0.0000000,0.0000000,180.0000000); //
  20822. CreateDynamicObject(3387,2575.1106000,-1493.3591300,-46.2384000,0.0000000,0.0000000,180.0000000); //
  20823. CreateDynamicObject(3386,2575.1106000,-1494.4021000,-46.2384000,0.0000000,0.0000000,180.0000000); //
  20824. CreateDynamicObject(2606,2578.6794400,-1490.7675800,-44.0636000,0.0000000,0.0000000,0.0000000); //
  20825. CreateDynamicObject(2606,2578.6794400,-1490.7675800,-44.5139000,0.0000000,0.0000000,0.0000000); //
  20826. CreateDynamicObject(14391,2583.9582500,-1491.3961200,-45.2827000,0.0000000,0.0000000,-90.0000000); //
  20827. CreateDynamicObject(1671,2585.7983400,-1493.3293500,-45.7924000,0.0000000,0.0000000,200.0000000); //
  20828. CreateDynamicObject(1671,2583.0380900,-1493.3790300,-45.7924000,0.0000000,0.0000000,170.0000000); //
  20829. CreateDynamicObject(1671,2591.2573200,-1491.8951400,-45.7924000,0.0000000,0.0000000,180.0000000); //
  20830. CreateDynamicObject(1671,2578.3745100,-1495.5946000,-45.7924000,0.0000000,0.0000000,0.0000000); //
  20831. CreateDynamicObject(2606,2589.8054200,-1496.3299600,-43.8191000,0.0000000,0.0000000,180.0000000); //
  20832. CreateDynamicObject(2606,2589.8054200,-1496.3299600,-44.2591000,0.0000000,0.0000000,180.0000000); //
  20833. CreateDynamicObject(19377,2592.1425800,-1491.7126500,-43.1414000,0.0000000,90.0000000,0.0000000); //
  20834. CreateDynamicObject(19377,2581.7634300,-1491.6795700,-43.1414000,0.0000000,90.0000000,0.0000000); //
  20835. CreateDynamicObject(19377,2571.3378900,-1491.6276900,-43.1414000,0.0000000,90.0000000,0.0000000); //
  20836. CreateDynamicObject(14680,2590.6557600,-1496.5316200,-44.7784000,0.0000000,0.0000000,0.0000000); //
  20837. CreateDynamicObject(14680,2583.7631800,-1496.5090300,-44.7784000,0.0000000,0.0000000,0.0000000); //
  20838. CreateDynamicObject(19438,2593.4606900,-1523.8531500,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20839. CreateDynamicObject(19438,2593.4606900,-1528.1684600,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20840. CreateDynamicObject(19438,2593.4606900,-1526.5645800,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20841. CreateDynamicObject(19438,2593.4599600,-1525.1040000,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20842. CreateDynamicObject(19325,2583.9807100,-1496.6344000,-44.2213000,0.0000000,0.0000000,90.0000000); //
  20843. CreateDynamicObject(19325,2593.4733900,-1521.8675500,-43.0151300,90.0000000,0.0000000,0.0000000); //
  20844. CreateDynamicObject(19325,2593.5068400,-1530.3964800,-42.9704400,90.0000000,0.0000000,0.0000000); //
  20845. CreateDynamicObject(19325,2588.8864700,-1517.6917700,-42.5072000,90.0000000,0.0000000,0.0000000); //
  20846. CreateDynamicObject(19325,2588.8864700,-1514.4276100,-42.5072000,90.0000000,0.0000000,0.0000000); //
  20847. CreateDynamicObject(19325,2588.8864700,-1510.7181400,-42.5072000,90.0000000,0.0000000,0.0000000); //
  20848. CreateDynamicObject(19325,2588.8864700,-1506.7559800,-42.5072000,90.0000000,0.0000000,0.0000000); //
  20849. CreateDynamicObject(19325,2588.8864700,-1503.5051300,-42.5072000,90.0000000,0.0000000,0.0000000); //
  20850. CreateDynamicObject(19325,2593.4528800,-1499.0168500,-43.1128800,90.0000000,0.0000000,0.0000000); //
  20851. CreateDynamicObject(19457,2577.4826700,-1514.0682400,-44.6656000,0.0000000,0.0000000,0.0000000); //
  20852. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20853. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20854. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20855. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20856. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20857. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20858. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20859. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20860. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20861. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20862. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20863. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20864. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20865. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20866. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20867. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20868. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20869. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20870. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20871. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20872. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20873. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20874. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20875. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20876. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20877. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20878. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20879. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20880. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20881. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20882. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20883. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20884. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20885. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20886. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20887. CreateDynamicObject(1649,2600.2255900,-1530.6411100,-48.0739000,0.0000000,0.0000000,0.0000000); //
  20888. CreateDynamicObject(2886,2593.9692400,-1495.8798800,-44.9318000,0.0000000,0.0000000,180.0000000); //
  20889. CreateDynamicObject(2886,2596.1491700,-1496.0199000,-44.9318000,0.0000000,0.0000000,0.0000000); //
  20890. CreateDynamicObject(2603,2576.2270500,-1515.7629400,-45.7963000,0.0000000,0.0000000,90.0000000); //
  20891. CreateDynamicObject(2603,2576.2270500,-1515.7629400,-44.8963000,0.0000000,0.0000000,90.0000000); //
  20892. CreateDynamicObject(2603,2576.2270500,-1512.1229200,-45.7963000,0.0000000,0.0000000,90.0000000); //
  20893. CreateDynamicObject(2603,2576.2270500,-1510.8228800,-45.7963000,0.0000000,0.0000000,90.0000000); //
  20894. CreateDynamicObject(2603,2576.2270500,-1504.8028600,-45.7963000,0.0000000,0.0000000,90.0000000); //
  20895. CreateDynamicObject(2603,2576.2270500,-1501.1429400,-45.7963000,0.0000000,0.0000000,90.0000000); //
  20896. CreateDynamicObject(2603,2576.2270500,-1512.1229200,-44.8963000,0.0000000,0.0000000,90.0000000); //
  20897. CreateDynamicObject(2603,2576.2270500,-1510.8228800,-44.8963000,0.0000000,0.0000000,90.0000000); //
  20898. CreateDynamicObject(2603,2576.2270500,-1504.8028600,-44.8963000,0.0000000,0.0000000,90.0000000); //
  20899. CreateDynamicObject(2603,2576.2270500,-1501.1429400,-44.8963000,0.0000000,0.0000000,90.0000000); //
  20900. CreateDynamicObject(19623,2590.8703600,-1491.5803200,-48.5721000,0.0000000,0.0000000,270.0000000); //
  20901. CreateDynamicObject(19611,2590.8898900,-1491.5876500,-50.2325000,0.0000000,0.0000000,0.0000000); //
  20902. CreateDynamicObject(19805,2585.5915500,-1491.6254900,-48.2970000,0.0000000,90.0000000,90.0000000); //
  20903. CreateDynamicObject(2603,2572.6291500,-1501.1352500,-49.4719000,0.0000000,0.0000000,90.0000000); //
  20904. CreateDynamicObject(2603,2572.6291500,-1501.1352500,-48.5719000,0.0000000,0.0000000,90.0000000); //
  20905. CreateDynamicObject(2603,2572.6291500,-1507.1552700,-49.4719000,0.0000000,0.0000000,90.0000000); //
  20906. CreateDynamicObject(2603,2572.6291500,-1508.4553200,-49.4719000,0.0000000,0.0000000,90.0000000); //
  20907. CreateDynamicObject(2603,2572.6291500,-1514.4753400,-49.4719000,0.0000000,0.0000000,90.0000000); //
  20908. CreateDynamicObject(2603,2572.6291500,-1518.1352500,-49.4719000,0.0000000,0.0000000,90.0000000); //
  20909. CreateDynamicObject(2603,2572.6291500,-1507.1552700,-48.5719000,0.0000000,0.0000000,90.0000000); //
  20910. CreateDynamicObject(2603,2572.6291500,-1508.4553200,-48.5719000,0.0000000,0.0000000,90.0000000); //
  20911. CreateDynamicObject(2603,2572.6291500,-1514.4753400,-48.5719000,0.0000000,0.0000000,90.0000000); //
  20912. CreateDynamicObject(2603,2572.6291500,-1518.1352500,-48.5719000,0.0000000,0.0000000,90.0000000); //
  20913. CreateDynamicObject(2603,2579.3000500,-1527.8254400,-49.4719000,0.0000000,0.0000000,0.0000000); //
  20914. CreateDynamicObject(2603,2585.3400900,-1527.8254400,-49.4719000,0.0000000,0.0000000,0.0000000); //
  20915. CreateDynamicObject(2603,2586.6401400,-1527.8254400,-49.4719000,0.0000000,0.0000000,0.0000000); //
  20916. CreateDynamicObject(2603,2579.3000500,-1527.8254400,-48.5719000,0.0000000,0.0000000,0.0000000); //
  20917. CreateDynamicObject(2603,2585.3400900,-1527.8254400,-48.5719000,0.0000000,0.0000000,0.0000000); //
  20918. CreateDynamicObject(2603,2586.6401400,-1527.8254400,-48.5719000,0.0000000,0.0000000,0.0000000); //
  20919. CreateDynamicObject(2603,2592.2568400,-1519.1870100,-49.4720000,0.0000000,0.0000000,90.0000000); //
  20920. CreateDynamicObject(2603,2592.2568400,-1515.5069600,-49.4720000,0.0000000,0.0000000,90.0000000); //
  20921. CreateDynamicObject(2603,2592.2568400,-1509.5069600,-49.4720000,0.0000000,0.0000000,90.0000000); //
  20922. CreateDynamicObject(2603,2592.2568400,-1508.2070300,-49.4720000,0.0000000,0.0000000,90.0000000); //
  20923. CreateDynamicObject(2603,2592.2568400,-1502.1669900,-49.4720000,0.0000000,0.0000000,90.0000000); //
  20924. CreateDynamicObject(2603,2592.2568400,-1519.1870100,-48.5720000,0.0000000,0.0000000,90.0000000); //
  20925. CreateDynamicObject(2603,2592.2568400,-1515.5069600,-48.5720000,0.0000000,0.0000000,90.0000000); //
  20926. CreateDynamicObject(2603,2592.2568400,-1509.5069600,-48.5720000,0.0000000,0.0000000,90.0000000); //
  20927. CreateDynamicObject(2603,2592.2568400,-1508.2070300,-48.5720000,0.0000000,0.0000000,90.0000000); //
  20928. CreateDynamicObject(2603,2592.2568400,-1502.1669900,-48.5720000,0.0000000,0.0000000,90.0000000); //
  20929. CreateDynamicObject(2603,2589.0036600,-1523.9759500,-45.7953000,0.0000000,0.0000000,0.0000000); //
  20930. CreateDynamicObject(2603,2582.9436000,-1523.9759500,-45.7953000,0.0000000,0.0000000,0.0000000); //
  20931. CreateDynamicObject(2603,2579.3037100,-1523.9759500,-45.7953000,0.0000000,0.0000000,0.0000000); //
  20932. CreateDynamicObject(2603,2589.0036600,-1523.9759500,-44.8953000,0.0000000,0.0000000,0.0000000); //
  20933. CreateDynamicObject(2603,2582.9436000,-1523.9759500,-44.8953000,0.0000000,0.0000000,0.0000000); //
  20934. CreateDynamicObject(2603,2579.3037100,-1523.9759500,-44.8953000,0.0000000,0.0000000,0.0000000); //
  20935. CreateDynamicObject(2603,2592.1731000,-1540.3665800,-49.4725000,0.0000000,0.0000000,0.0000000); //
  20936. CreateDynamicObject(2603,2585.9340800,-1540.3540000,-49.4720000,0.0000000,0.0000000,0.0000000); //
  20937. CreateDynamicObject(2603,2600.5983900,-1518.0709200,-49.4730000,0.0000000,0.0000000,0.0000000); //
  20938. CreateDynamicObject(2603,2603.5983900,-1518.0709200,-49.4730000,0.0000000,0.0000000,0.0000000); //
  20939. CreateDynamicObject(19903,2602.3610800,-1518.9064900,-49.9127000,0.0000000,0.0000000,90.0000000); //
  20940. CreateDynamicObject(19903,2599.4411600,-1518.9064900,-49.9127000,0.0000000,0.0000000,90.0000000); //
  20941. CreateDynamicObject(2635,2574.9751000,-1530.2347400,-49.5159000,0.0000000,0.0000000,0.0000000); //
  20942. CreateDynamicObject(2424,2574.1289100,-1522.0684800,-50.0126000,0.0000000,0.0000000,0.0000000); //
  20943. CreateDynamicObject(2423,2575.0581100,-1522.0683600,-50.0125000,0.0000000,0.0000000,0.0000000); //
  20944. CreateDynamicObject(2424,2573.1977500,-1522.0684800,-50.0126000,0.0000000,0.0000000,0.0000000); //
  20945. CreateDynamicObject(2424,2572.2678200,-1522.0684800,-50.0126000,0.0000000,0.0000000,0.0000000); //
  20946. CreateDynamicObject(2424,2571.3378900,-1522.0684800,-50.0126000,0.0000000,0.0000000,0.0000000); //
  20947. CreateDynamicObject(2424,2570.4082000,-1522.0684800,-50.0126000,0.0000000,0.0000000,0.0000000); //
  20948. CreateDynamicObject(2424,2569.4780300,-1522.0684800,-50.0126000,0.0000000,0.0000000,0.0000000); //
  20949. CreateDynamicObject(2424,2568.5481000,-1522.0684800,-50.0126000,0.0000000,0.0000000,0.0000000); //
  20950. CreateDynamicObject(2424,2575.1394000,-1521.0246600,-50.0126000,0.0000000,0.0000000,90.0000000); //
  20951. CreateDynamicObject(19916,2572.4670400,-1519.2710000,-49.9330000,0.0000000,0.0000000,0.0000000); //
  20952. CreateDynamicObject(19927,2570.9765600,-1519.2983400,-49.9120000,0.0000000,0.0000000,90.0000000); //
  20953. CreateDynamicObject(19923,2569.0290500,-1519.4265100,-49.9707000,0.0000000,0.0000000,0.0000000); //
  20954. CreateDynamicObject(19924,2569.0524900,-1519.4639900,-46.6631000,0.0000000,0.0000000,0.0000000); //
  20955. CreateDynamicObject(19584,2569.3942900,-1519.5428500,-48.8379000,0.0000000,0.0000000,270.0000000); //
  20956. CreateDynamicObject(1810,2573.9121100,-1530.0063500,-49.9166000,0.0000000,0.0000000,90.0000000); //
  20957. CreateDynamicObject(1810,2574.7519500,-1531.4062500,-49.9166000,0.0000000,0.0000000,180.0000000); //
  20958. CreateDynamicObject(1810,2575.2319300,-1529.1263400,-49.9166000,0.0000000,0.0000000,0.0000000); //
  20959. CreateDynamicObject(1810,2576.0319800,-1530.4863300,-49.9166000,0.0000000,0.0000000,-90.0000000); //
  20960. CreateDynamicObject(2635,2569.7751500,-1526.2827100,-49.5159000,0.0000000,0.0000000,0.0000000); //
  20961. CreateDynamicObject(1810,2569.3713400,-1527.4459200,-49.9166000,0.0000000,0.0000000,180.0000000); //
  20962. CreateDynamicObject(1810,2570.7819800,-1526.4303000,-49.9166000,0.0000000,0.0000000,-90.0000000); //
  20963. CreateDynamicObject(1810,2569.9243200,-1525.1027800,-49.9166000,0.0000000,0.0000000,0.0000000); //
  20964. CreateDynamicObject(1810,2568.6267100,-1525.9633800,-49.9166000,0.0000000,0.0000000,90.0000000); //
  20965. CreateDynamicObject(2635,2574.9751000,-1526.2827100,-49.5159000,0.0000000,0.0000000,0.0000000); //
  20966. CreateDynamicObject(1810,2575.2319300,-1525.1743200,-49.9166000,0.0000000,0.0000000,0.0000000); //
  20967. CreateDynamicObject(1810,2574.7519500,-1527.4543500,-49.9166000,0.0000000,0.0000000,180.0000000); //
  20968. CreateDynamicObject(1810,2573.9121100,-1526.0543200,-49.9166000,0.0000000,0.0000000,90.0000000); //
  20969. CreateDynamicObject(1810,2576.0319800,-1526.4303000,-49.9166000,0.0000000,0.0000000,-90.0000000); //
  20970. CreateDynamicObject(1997,2605.2043500,-1515.3354500,-49.9202000,0.0000000,0.0000000,-90.0000000); //
  20971. CreateDynamicObject(1997,2596.1901900,-1508.9066200,-49.9137000,0.0000000,0.0000000,0.0000000); //
  20972. CreateDynamicObject(14842,2578.5271000,-1533.1315900,-48.2976000,0.0000000,0.0000000,270.0000000); //
  20973. CreateDynamicObject(19365,2578.4846200,-1535.1501500,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20974. CreateDynamicObject(14842,2578.5271000,-1536.1125500,-48.2976000,0.0000000,0.0000000,270.0000000); //
  20975. CreateDynamicObject(19365,2578.4846200,-1538.5042700,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20976. CreateDynamicObject(14842,2578.5271000,-1539.4676500,-48.2976000,0.0000000,0.0000000,270.0000000); //
  20977. CreateDynamicObject(14680,2573.2351100,-1539.4305400,-48.0116000,0.0000000,0.0000000,0.0000000); //
  20978. CreateDynamicObject(19365,2569.6765100,-1538.5042700,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20979. CreateDynamicObject(19365,2569.6765100,-1535.1501500,-48.1570000,0.0000000,0.0000000,90.0000000); //
  20980. CreateDynamicObject(14842,2569.6191400,-1537.5405300,-48.2976000,0.0000000,0.0000000,90.0000000); //
  20981. CreateDynamicObject(14842,2569.6191400,-1540.6505100,-48.2976000,0.0000000,0.0000000,90.0000000); //
  20982. CreateDynamicObject(14842,2569.6191400,-1534.1865200,-48.2976000,0.0000000,0.0000000,90.0000000); //
  20983. // Prison Exterior
  20984. CreateDynamicObject(8409,1051.6384300,-305.1238100,75.6597000,0.0000000,0.0000000,0.0000000); //
  20985. CreateDynamicObject(987,1006.7338300,-281.1673000,72.0763000,0.0000000,0.0000000,-90.0000000); //
  20986. CreateDynamicObject(987,1006.7509200,-293.1014100,72.0763000,0.0000000,0.0000000,-90.0000000); //
  20987. CreateDynamicObject(987,1006.7512800,-305.0224900,72.0763000,0.0000000,0.0000000,-90.0000000); //
  20988. CreateDynamicObject(987,1006.7883900,-316.9641100,72.0763000,0.0000000,0.0000000,-90.0000000); //
  20989. CreateDynamicObject(987,1006.7653800,-328.9065900,72.0763000,0.0000000,0.0000000,-90.0000000); //
  20990. CreateDynamicObject(987,1006.7589700,-340.8125900,72.0763000,0.0000000,0.0000000,-90.0000000); //
  20991. CreateDynamicObject(987,1006.7280900,-351.4917900,72.0763000,0.0000000,0.0000000,-90.0000000); //
  20992. CreateDynamicObject(987,1018.6674200,-281.2257100,72.0763000,0.0000000,0.0000000,180.0000000); //
  20993. CreateDynamicObject(987,1030.6190200,-281.2063900,72.0763000,0.0000000,0.0000000,180.0000000); //
  20994. CreateDynamicObject(987,1042.5738500,-281.2612900,72.0763000,0.0000000,0.0000000,180.0000000); //
  20995. CreateDynamicObject(987,1054.5336900,-281.2466100,72.0763000,0.0000000,0.0000000,180.0000000); //
  20996. CreateDynamicObject(987,1066.4863300,-281.2507000,72.0763000,0.0000000,0.0000000,180.0000000); //
  20997. CreateDynamicObject(987,1078.4506800,-281.2804900,72.0763000,0.0000000,0.0000000,180.0000000); //
  20998. CreateDynamicObject(987,1090.3525400,-281.2598000,72.0763000,0.0000000,0.0000000,180.0000000); //
  20999. CreateDynamicObject(987,1102.2935800,-281.2839100,72.0763000,0.0000000,0.0000000,180.0000000); //
  21000. CreateDynamicObject(987,1114.2308300,-281.2777100,72.0763000,0.0000000,0.0000000,180.0000000); //
  21001. CreateDynamicObject(987,1126.1154800,-281.2632100,72.0763000,0.0000000,0.0000000,180.0000000); //
  21002. CreateDynamicObject(987,1126.0527300,-293.1776100,72.0763000,0.0000000,0.0000000,90.0000000); //
  21003. CreateDynamicObject(987,1126.0731200,-305.0831000,72.0763000,0.0000000,0.0000000,90.0000000); //
  21004. CreateDynamicObject(987,1114.1897000,-324.9497100,72.0763000,0.0000000,0.0000000,0.0000000); //
  21005. CreateDynamicObject(987,1126.0559100,-328.9296000,72.0763000,0.0000000,0.0000000,90.0000000); //
  21006. CreateDynamicObject(987,1126.0184300,-340.8891900,72.0763000,0.0000000,0.0000000,90.0000000); //
  21007. CreateDynamicObject(987,1125.9973100,-352.8109100,72.0763000,0.0000000,0.0000000,90.0000000); //
  21008. CreateDynamicObject(987,1125.9708300,-364.7377000,72.0763000,0.0000000,0.0000000,90.0000000); //
  21009. CreateDynamicObject(987,1117.5273400,-373.1181900,72.0763000,0.0000000,0.0000000,45.0000000); //
  21010. CreateDynamicObject(987,1105.6164600,-373.1328100,72.0763000,0.0000000,0.0000000,0.0000000); //
  21011. CreateDynamicObject(987,1093.6861600,-373.1198100,72.0763000,0.0000000,0.0000000,0.0000000); //
  21012. CreateDynamicObject(987,1081.7950400,-373.0947000,72.0763000,0.0000000,0.0000000,0.0000000); //
  21013. CreateDynamicObject(987,1070.0300300,-371.0546000,72.0763000,0.0000000,0.0000000,-10.0000000); //
  21014. CreateDynamicObject(987,1058.2489000,-369.0120800,72.0763000,0.0000000,0.0000000,-10.0000000); //
  21015. CreateDynamicObject(987,1046.5335700,-366.9283100,72.0763000,0.0000000,0.0000000,-10.0000000); //
  21016. CreateDynamicObject(987,1034.6412400,-365.8577900,72.0763000,0.0000000,0.0000000,-5.0000000); //
  21017. CreateDynamicObject(987,1006.4794900,-363.3366100,72.0763000,0.0000000,0.0000000,-5.0000000); //
  21018. CreateDynamicObject(3279,1051.5618900,-359.9487900,72.7722000,0.0000000,0.0000000,0.0000000); //
  21019. CreateDynamicObject(3279,1011.7888800,-358.8762200,72.7298100,0.0000000,0.0000000,87.1200000); //
  21020. CreateDynamicObject(3279,1118.2645300,-365.7728600,72.7722000,0.0000000,0.0000000,-136.2002100); //
  21021. CreateDynamicObject(3279,1011.4205300,-285.6388200,72.7124400,0.0000000,0.0000000,0.0000000); //
  21022. CreateDynamicObject(16093,1039.5813000,-359.9994500,72.8645100,0.0000000,0.0000000,-361.6197500); //
  21023. CreateDynamicObject(19355,1043.5573700,-320.0099800,74.3098000,0.0000000,0.0000000,90.0000000); //
  21024. CreateDynamicObject(19355,1046.7154500,-320.0057700,74.3098000,0.0000000,0.0000000,90.0000000); //
  21025. CreateDynamicObject(19355,1049.8767100,-319.9982000,74.3098000,0.0000000,0.0000000,90.0000000); //
  21026. CreateDynamicObject(19355,1053.0660400,-319.9687800,74.3098000,0.0000000,0.0000000,90.0000000); //
  21027. CreateDynamicObject(19355,1056.2421900,-319.9711000,74.3098000,0.0000000,0.0000000,90.0000000); //
  21028. CreateDynamicObject(19355,1059.4404300,-319.9816900,74.3098000,0.0000000,0.0000000,90.0000000); //
  21029. CreateDynamicObject(19355,1062.6545400,-320.0116300,74.3098000,0.0000000,0.0000000,90.0000000); //
  21030. CreateDynamicObject(19355,1060.0958300,-290.2352000,74.3098000,0.0000000,0.0000000,90.0000000); //
  21031. CreateDynamicObject(19355,1056.9331100,-290.2487800,74.3098000,0.0000000,0.0000000,90.0000000); //
  21032. CreateDynamicObject(19355,1053.7752700,-290.2612900,74.3098000,0.0000000,0.0000000,90.0000000); //
  21033. CreateDynamicObject(19355,1050.1574700,-290.2242400,74.3098000,0.0000000,0.0000000,90.0000000); //
  21034. CreateDynamicObject(19355,1046.9608200,-290.2124000,74.3098000,0.0000000,0.0000000,90.0000000); //
  21035. CreateDynamicObject(19355,1043.7858900,-290.2101700,74.3098000,0.0000000,0.0000000,90.0000000); //
  21036. CreateDynamicObject(1622,1019.8917800,-320.5111400,78.6747000,0.0000000,0.0000000,90.0000000); //
  21037. CreateDynamicObject(1622,1038.0201400,-321.6866500,78.6747000,0.0000000,0.0000000,90.0000000); //
  21038. CreateDynamicObject(1622,1036.8071300,-321.4718600,78.6747000,0.0000000,0.0000000,30.0000000); //
  21039. CreateDynamicObject(16101,1037.0231900,-321.1698300,72.9906800,0.0000000,0.0000000,0.0000000); //
  21040. CreateDynamicObject(16101,1037.9133300,-321.2878400,72.9906800,0.0000000,0.0000000,0.0000000); //
  21041. CreateDynamicObject(16101,1056.1444100,-321.2292200,72.9906800,0.0000000,0.0000000,0.0000000); //
  21042. CreateDynamicObject(16101,1057.2806400,-321.1459400,72.9906800,0.0000000,0.0000000,0.0000000); //
  21043. CreateDynamicObject(1622,1055.9282200,-321.4786400,78.6747000,0.0000000,0.0000000,30.0000000); //
  21044. CreateDynamicObject(1622,1057.4071000,-321.4988700,78.6747000,0.0000000,0.0000000,90.0000000); //
  21045. CreateDynamicObject(16101,1074.4205300,-324.6236600,72.9906800,0.0000000,0.0000000,0.0000000); //
  21046. CreateDynamicObject(16101,1083.7751500,-324.7861900,72.9906800,0.0000000,0.0000000,0.0000000); //
  21047. CreateDynamicObject(1622,1074.1602800,-324.8924900,78.6747000,0.0000000,0.0000000,30.0000000); //
  21048. CreateDynamicObject(1622,1083.9221200,-325.0259100,78.6547000,0.0000000,0.0000000,90.0000000); //
  21049. CreateDynamicObject(16101,1075.0775100,-324.6909200,72.9906800,0.0000000,0.0000000,0.0000000); //
  21050. CreateDynamicObject(1622,1075.1510000,-325.0651900,78.6547000,0.0000000,0.0000000,90.0000000); //
  21051. CreateDynamicObject(16101,1088.1776100,-321.3161000,72.9906800,0.0000000,0.0000000,0.0000000); //
  21052. CreateDynamicObject(16101,1088.2324200,-320.5411100,72.9906800,0.0000000,0.0000000,0.0000000); //
  21053. CreateDynamicObject(1622,1088.4893800,-321.4796100,78.6547000,0.0000000,0.0000000,135.0000000); //
  21054. CreateDynamicObject(1622,1088.6467300,-320.3887300,78.6547000,0.0000000,0.0000000,180.0000000); //
  21055. CreateDynamicObject(16101,1084.7561000,-309.4369200,72.9906800,0.0000000,0.0000000,0.0000000); //
  21056. CreateDynamicObject(16101,1084.6909200,-301.2693800,72.9906800,0.0000000,0.0000000,0.0000000); //
  21057. CreateDynamicObject(1622,1085.1862800,-309.2865300,78.6547000,0.0000000,0.0000000,180.0000000); //
  21058. CreateDynamicObject(1622,1085.0564000,-301.4556900,78.6547000,0.0000000,0.0000000,135.0000000); //
  21059. CreateDynamicObject(16093,1045.8453400,-323.8139300,72.9379500,0.0000000,0.0000000,0.0000000); //
  21060. CreateDynamicObject(16638,1045.9252900,-324.7939100,71.1780000,0.0000000,0.0000000,0.0000000); //
  21061. CreateDynamicObject(1671,1045.8418000,-321.6994000,73.5106000,0.0000000,0.0000000,180.0000000); //
  21062. CreateDynamicObject(1999,1047.3835400,-324.9479100,73.0670000,0.0000000,0.0000000,180.0000000); //
  21063. CreateDynamicObject(1999,1045.2065400,-324.9479100,73.0670000,0.0000000,0.0000000,180.0000000); //
  21064. CreateDynamicObject(1714,1046.5422400,-323.9178800,73.0669300,0.0000000,0.0000000,0.0000000); //
  21065. CreateDynamicObject(1714,1044.4267600,-323.7554600,73.0669300,0.0000000,0.0000000,0.0000000); //
  21066. CreateDynamicObject(19513,1045.2143600,-324.7684600,73.8791000,0.0000000,0.0000000,180.0000000); //
  21067. CreateDynamicObject(19513,1047.0964400,-324.7039800,73.8791000,0.0000000,0.0000000,180.0000000); //
  21068. CreateDynamicObject(2606,1045.8776900,-320.1041900,75.0676000,0.0000000,0.0000000,0.0000000); //
  21069. CreateDynamicObject(2606,1045.8728000,-320.1041900,74.6076000,0.0000000,0.0000000,0.0000000); //
  21070. CreateDynamicObject(987,1126.0813000,-317.0194100,72.0763000,0.0000000,0.0000000,90.0000000); //
  21071. CreateDynamicObject(987,1082.4907200,-281.2186900,72.0763000,0.0000000,0.0000000,270.0000000); //
  21072. CreateDynamicObject(1508,1084.1590600,-306.0553600,74.4104000,0.0000000,0.0000000,0.0000000); //
  21073. CreateDynamicObject(19355,1085.2603800,-310.6680900,74.7081000,0.0000000,0.0000000,0.0000000); //
  21074. CreateDynamicObject(19355,1083.7463400,-309.1201200,74.7081000,0.0000000,0.0000000,90.0000000); //
  21075. CreateDynamicObject(19355,1085.2489000,-313.8921500,74.7081000,0.0000000,0.0000000,0.0000000); //
  21076. CreateDynamicObject(19355,1085.0794700,-301.4071400,74.7081000,0.0000000,0.0000000,0.0000000); //
  21077. CreateDynamicObject(19355,1083.5406500,-302.9167500,74.7081000,0.0000000,0.0000000,90.0000000); //
  21078. CreateDynamicObject(19355,1083.5673800,-299.8870500,74.7081000,0.0000000,0.0000000,90.0000000); //
  21079. CreateDynamicObject(2181,1039.7152100,-361.1472800,72.9334800,0.0000000,0.0000000,180.0000000); //
  21080. CreateDynamicObject(18868,1039.8808600,-360.9388100,73.7275000,0.0000000,0.0000000,180.0000000); //
  21081. CreateDynamicObject(1714,1039.1252400,-359.7112400,73.0676700,0.0000000,0.0000000,0.0000000); //
  21082. CreateDynamicObject(2961,1038.4023400,-361.5658900,73.9285000,180.0000000,0.0000000,0.0000000); //
  21083. CreateDynamicObject(2961,1038.6230500,-361.5685100,73.9285000,180.0000000,0.0000000,0.0000000); //
  21084. CreateDynamicObject(2629,1106.2559800,-321.0431800,72.9843000,0.0000000,0.0000000,180.0000000); //
  21085. CreateDynamicObject(2629,1097.1146200,-320.8481800,72.9843000,0.0000000,0.0000000,180.0000000); //
  21086. CreateDynamicObject(2628,1101.4129600,-321.0011600,72.9845000,0.0000000,0.0000000,180.0000000); //
  21087. CreateDynamicObject(2628,1093.1590600,-321.0201700,72.9845000,0.0000000,0.0000000,180.0000000); //
  21088. CreateDynamicObject(2627,1088.3604700,-318.7762100,72.9858000,0.0000000,0.0000000,90.0000000); //
  21089. CreateDynamicObject(2627,1088.3114000,-316.6084600,72.9858000,0.0000000,0.0000000,90.0000000); //
  21090. CreateDynamicObject(2627,1088.3093300,-314.2240600,72.9858000,0.0000000,0.0000000,90.0000000); //
  21091. CreateDynamicObject(946,1119.5811800,-301.8781400,75.1646000,0.0000000,0.0000000,90.0000000); //
  21092. CreateDynamicObject(1946,1117.3304400,-301.8545200,73.1657000,0.0000000,0.0000000,0.0000000); //
  21093. CreateDynamicObject(8417,1101.5238000,-305.1337300,73.0240900,0.0000000,0.0000000,0.0000000); //
  21094. CreateDynamicObject(987,1102.2214400,-324.9497100,72.0763000,0.0000000,0.0000000,0.0000000); //
  21095. CreateDynamicObject(987,1090.2802700,-324.9497100,72.0763000,0.0000000,0.0000000,0.0000000); //
  21096. CreateDynamicObject(987,1078.3151900,-324.9497100,72.0763000,0.0000000,0.0000000,0.0000000); //
  21097. CreateDynamicObject(987,1066.3739000,-324.9497100,72.0763000,0.0000000,0.0000000,0.0000000); //
  21098. CreateDynamicObject(987,1066.4185800,-313.0105900,72.0763000,0.0000000,0.0000000,-90.0000000); //
  21099. CreateDynamicObject(946,1119.7354700,-310.8417100,75.1646000,0.0000000,0.0000000,90.0000000); //
  21100. CreateDynamicObject(946,1119.5004900,-321.8526900,75.1646000,0.0000000,0.0000000,90.0000000); //
  21101. CreateDynamicObject(1946,1117.5816700,-310.8921500,73.1657000,0.0000000,0.0000000,0.0000000); //
  21102. CreateDynamicObject(1946,1117.3553500,-321.8556500,73.1657000,0.0000000,0.0000000,0.0000000); //
  21103. CreateDynamicObject(16638,1039.6213400,-360.9595000,71.1045000,0.0000000,0.0000000,-361.6198100); //
  21104. CreateDynamicObject(987,1028.6655300,-365.3374900,72.0763000,0.0000000,0.0000000,-5.0000000); //
  21105. CreateDynamicObject(19444,1084.2685500,-282.0979900,77.0468000,0.0000000,90.0000000,0.0000000); //
  21106. CreateDynamicObject(19444,1087.7685500,-282.0979900,77.0468000,0.0000000,90.0000000,0.0000000); //
  21107. CreateDynamicObject(19444,1091.2685500,-282.0979900,77.0468000,0.0000000,90.0000000,0.0000000); //
  21108. CreateDynamicObject(19444,1094.7685500,-282.0979900,77.0468000,0.0000000,90.0000000,0.0000000); //
  21109. CreateDynamicObject(19444,1098.2685500,-282.0979900,77.0468000,0.0000000,90.0000000,0.0000000); //
  21110. CreateDynamicObject(19444,1101.7685500,-282.0979900,77.0468000,0.0000000,90.0000000,0.0000000); //
  21111. CreateDynamicObject(19444,1105.2685500,-282.0979900,77.0468000,0.0000000,90.0000000,0.0000000); //
  21112. CreateDynamicObject(19444,1108.7685500,-282.0979900,77.0468000,0.0000000,90.0000000,0.0000000); //
  21113. CreateDynamicObject(19444,1112.2685500,-282.0979900,77.0468000,0.0000000,90.0000000,0.0000000); //
  21114. CreateDynamicObject(19444,1115.7685500,-282.0979900,77.0468000,0.0000000,90.0000000,0.0000000); //
  21115. CreateDynamicObject(19444,1119.2685500,-282.0979900,77.0468000,0.0000000,90.0000000,0.0000000); //
  21116. CreateDynamicObject(19444,1122.7685500,-282.0979900,77.0468000,0.0000000,90.0000000,0.0000000); //
  21117. CreateDynamicObject(19444,1125.3226300,-283.0463900,77.0468000,0.0000000,90.0000000,90.0000000); //
  21118. CreateDynamicObject(19444,1125.3226300,-286.5463900,77.0468000,0.0000000,90.0000000,90.0000000); //
  21119. CreateDynamicObject(19444,1125.3226300,-290.0454100,77.0468000,0.0000000,90.0000000,90.0000000); //
  21120. CreateDynamicObject(19444,1125.3226300,-293.5404100,77.0468000,0.0000000,90.0000000,90.0000000); //
  21121. CreateDynamicObject(19444,1125.3226300,-297.0354000,77.0468000,0.0000000,90.0000000,90.0000000); //
  21122. CreateDynamicObject(19444,1125.3226300,-300.5304000,77.0468000,0.0000000,90.0000000,90.0000000); //
  21123. CreateDynamicObject(19444,1125.3226300,-304.0253900,77.0468000,0.0000000,90.0000000,90.0000000); //
  21124. CreateDynamicObject(19444,1125.3226300,-307.5203900,77.0468000,0.0000000,90.0000000,90.0000000); //
  21125. CreateDynamicObject(19444,1125.3226300,-311.0154100,77.0468000,0.0000000,90.0000000,90.0000000); //
  21126. CreateDynamicObject(19444,1125.3226300,-314.5104100,77.0468000,0.0000000,90.0000000,90.0000000); //
  21127. CreateDynamicObject(19444,1125.3226300,-318.0054000,77.0468000,0.0000000,90.0000000,90.0000000); //
  21128. CreateDynamicObject(19444,1125.3226300,-321.5004000,77.0468000,0.0000000,90.0000000,90.0000000); //
  21129. CreateDynamicObject(19444,1124.3736600,-324.0541100,77.0468000,0.0000000,90.0000000,0.0000000); //
  21130. CreateDynamicObject(19444,1120.8786600,-324.0541100,77.0468000,0.0000000,90.0000000,0.0000000); //
  21131. CreateDynamicObject(19444,1117.3836700,-324.0541100,77.0468000,0.0000000,90.0000000,0.0000000); //
  21132. CreateDynamicObject(19444,1113.8886700,-324.0541100,77.0468000,0.0000000,90.0000000,0.0000000); //
  21133. CreateDynamicObject(19444,1110.3936800,-324.0541100,77.0468000,0.0000000,90.0000000,0.0000000); //
  21134. CreateDynamicObject(19444,1106.8986800,-324.0541100,77.0468000,0.0000000,90.0000000,0.0000000); //
  21135. CreateDynamicObject(19444,1103.4036900,-324.0541100,77.0468000,0.0000000,90.0000000,0.0000000); //
  21136. CreateDynamicObject(19444,1099.9086900,-324.0541100,77.0468000,0.0000000,90.0000000,0.0000000); //
  21137. CreateDynamicObject(19444,1096.4137000,-324.0541100,77.0468000,0.0000000,90.0000000,0.0000000); //
  21138. CreateDynamicObject(19444,1092.9187000,-324.0541100,77.0468000,0.0000000,90.0000000,0.0000000); //
  21139. CreateDynamicObject(19444,1089.4237100,-324.0541100,77.0468000,0.0000000,90.0000000,0.0000000); //
  21140. CreateDynamicObject(19444,1085.9287100,-324.0541100,77.0468000,0.0000000,90.0000000,0.0000000); //
  21141. CreateDynamicObject(19444,1084.9783900,-321.5020100,77.0468000,0.0000000,90.0000000,90.0000000); //
  21142. CreateDynamicObject(19444,1086.2164300,-321.5020100,77.0468000,0.0000000,90.0000000,90.0000000); //
  21143. CreateDynamicObject(970,1084.7116700,-282.8826900,77.5987000,0.0000000,0.0000000,0.0000000); //
  21144. CreateDynamicObject(970,1088.8817100,-282.8826900,77.5987000,0.0000000,0.0000000,0.0000000); //
  21145. CreateDynamicObject(970,1093.0517600,-282.8826900,77.5987000,0.0000000,0.0000000,0.0000000); //
  21146. CreateDynamicObject(970,1097.2218000,-282.8826900,77.5987000,0.0000000,0.0000000,0.0000000); //
  21147. CreateDynamicObject(970,1101.3918500,-282.8826900,77.5987000,0.0000000,0.0000000,0.0000000); //
  21148. CreateDynamicObject(970,1105.5617700,-282.8826900,77.5987000,0.0000000,0.0000000,0.0000000); //
  21149. CreateDynamicObject(970,1109.7318100,-282.8826900,77.5987000,0.0000000,0.0000000,0.0000000); //
  21150. CreateDynamicObject(970,1113.9018600,-282.8826900,77.5987000,0.0000000,0.0000000,0.0000000); //
  21151. CreateDynamicObject(970,1118.0719000,-282.8826900,77.5987000,0.0000000,0.0000000,0.0000000); //
  21152. CreateDynamicObject(970,1122.2419400,-282.8826900,77.5987000,0.0000000,0.0000000,0.0000000); //
  21153. CreateDynamicObject(1214,1124.6804200,-282.7643100,76.9547000,0.0000000,0.0000000,43.2600000); //
  21154. CreateDynamicObject(970,1124.5468800,-285.1465100,77.5987000,0.0000000,0.0000000,90.0000000); //
  21155. CreateDynamicObject(970,1124.5468800,-289.3165000,77.5987000,0.0000000,0.0000000,90.0000000); //
  21156. CreateDynamicObject(970,1124.5468800,-293.4865100,77.5987000,0.0000000,0.0000000,90.0000000); //
  21157. CreateDynamicObject(970,1124.5468800,-297.6564900,77.5987000,0.0000000,0.0000000,90.0000000); //
  21158. CreateDynamicObject(970,1124.5468800,-301.8265100,77.5987000,0.0000000,0.0000000,90.0000000); //
  21159. CreateDynamicObject(970,1124.5468800,-305.9964900,77.5987000,0.0000000,0.0000000,90.0000000); //
  21160. CreateDynamicObject(970,1124.5468800,-310.1665000,77.5987000,0.0000000,0.0000000,90.0000000); //
  21161. CreateDynamicObject(970,1124.5468800,-314.3364900,77.5987000,0.0000000,0.0000000,90.0000000); //
  21162. CreateDynamicObject(970,1124.5468800,-318.5065000,77.5987000,0.0000000,0.0000000,90.0000000); //
  21163. CreateDynamicObject(970,1124.5468800,-321.0795000,77.5987000,0.0000000,0.0000000,90.0000000); //
  21164. CreateDynamicObject(970,1122.3023700,-323.2746000,77.5987000,0.0000000,0.0000000,0.0000000); //
  21165. CreateDynamicObject(1214,1124.6374500,-323.4166600,76.9547000,0.0000000,0.0000000,43.2600000); //
  21166. CreateDynamicObject(970,1118.1324500,-323.2746000,77.5987000,0.0000000,0.0000000,0.0000000); //
  21167. CreateDynamicObject(970,1113.9624000,-323.2746000,77.5987000,0.0000000,0.0000000,0.0000000); //
  21168. CreateDynamicObject(970,1109.7923600,-323.2746000,77.5987000,0.0000000,0.0000000,0.0000000); //
  21169. CreateDynamicObject(970,1105.6224400,-323.2746000,77.5987000,0.0000000,0.0000000,0.0000000); //
  21170. CreateDynamicObject(970,1101.4523900,-323.2746000,77.5987000,0.0000000,0.0000000,0.0000000); //
  21171. CreateDynamicObject(970,1097.2823500,-323.2746000,77.5987000,0.0000000,0.0000000,0.0000000); //
  21172. CreateDynamicObject(970,1093.1123000,-323.2746000,77.5987000,0.0000000,0.0000000,0.0000000); //
  21173. CreateDynamicObject(970,1089.0323500,-323.2746000,77.5987000,0.0000000,0.0000000,0.0000000); //
  21174. CreateDynamicObject(970,1086.9610600,-321.1805100,77.5987000,0.0000000,0.0000000,90.0000000); //
  21175. CreateDynamicObject(19859,1084.1761500,-320.1037900,78.3887000,0.0000000,0.0000000,0.0000000); //
  21176. CreateDynamicObject(19859,1087.0178200,-320.1012000,78.3887000,0.0000000,0.0000000,180.0600000); //
  21177. // Bank map
  21178. CreateDynamicObject(19379,201.5671380,1722.7216790,1230.3764640,0.0000000,90.0000000,90.0000000); //
  21179. CreateDynamicObject(19379,201.5671380,1712.2412100,1230.3764640,0.0000000,90.0000000,90.0000000); //
  21180. CreateDynamicObject(19379,191.9769890,1712.2412100,1230.3764640,0.0000000,90.0000000,90.0000000); //
  21181. CreateDynamicObject(19379,191.9769890,1722.7235100,1230.3764640,0.0000000,90.0000000,90.0000000); //
  21182. CreateDynamicObject(19367,206.2837060,1726.3665770,1232.2023920,0.0000000,0.0000000,-180.0000000); //
  21183. CreateDynamicObject(19367,206.2837060,1723.1772460,1232.2023920,0.0000000,0.0000000,-180.0000000); //
  21184. CreateDynamicObject(19367,206.2837060,1719.9880370,1232.2023920,0.0000000,0.0000000,-180.0000000); //
  21185. CreateDynamicObject(19367,206.2837060,1716.7983390,1232.2023920,0.0000000,0.0000000,-180.0000000); //
  21186. CreateDynamicObject(19367,206.2837060,1713.6093750,1232.2023920,0.0000000,0.0000000,-180.0000000); //
  21187. CreateDynamicObject(19379,201.5671380,1701.8016350,1230.3764640,0.0000000,90.0000000,90.0000000); //
  21188. CreateDynamicObject(19367,198.2953940,1711.9692380,1232.2023920,0.0000000,0.0000000,90.0000000); //
  21189. CreateDynamicObject(19379,182.3769370,1722.7235100,1230.3764640,0.0000000,90.0000000,90.0000000); //
  21190. CreateDynamicObject(19379,182.3772580,1712.2412100,1230.3764640,0.0000000,90.0000000,90.0000000); //
  21191. CreateDynamicObject(19367,204.6253810,1727.8085930,1232.2023920,0.0000000,0.0000000,90.0000000); //
  21192. CreateDynamicObject(19367,201.4453120,1727.8085930,1232.2023920,0.0000000,0.0000000,90.0000000); //
  21193. CreateDynamicObject(19367,198.2652740,1727.8085930,1232.2023920,0.0000000,0.0000000,90.0000000); //
  21194. CreateDynamicObject(14877,195.4231260,1728.8912350,1228.2916250,0.0000000,0.0000000,-90.0000000); //
  21195. CreateDynamicObject(19367,191.8951720,1727.8085930,1232.2023920,0.0000000,0.0000000,90.0000000); //
  21196. CreateDynamicObject(19367,188.7351220,1727.8085930,1232.2023920,0.0000000,0.0000000,90.0000000); //
  21197. CreateDynamicObject(19367,185.5650930,1727.8085930,1232.2023920,0.0000000,0.0000000,90.0000000); //
  21198. CreateDynamicObject(19367,186.5137320,1723.1080320,1232.2023920,0.0000000,0.0000000,-180.0000000); //
  21199. CreateDynamicObject(19367,186.5137320,1719.9381100,1232.2023920,0.0000000,0.0000000,-180.0000000); //
  21200. CreateDynamicObject(19367,186.5137320,1716.8582760,1232.2023920,0.0000000,0.0000000,-180.0000000); //
  21201. CreateDynamicObject(19367,186.5137320,1713.7176510,1232.2023920,0.0000000,0.0000000,-180.0000000); //
  21202. CreateDynamicObject(19367,191.4236600,1710.4572750,1232.2023920,0.0000000,0.0000000,-180.0000000); //
  21203. CreateDynamicObject(19367,191.4236600,1707.2773430,1232.2023920,0.0000000,0.0000000,-180.0000000); //
  21204. CreateDynamicObject(19367,195.1654050,1711.9692380,1232.2023920,0.0000000,0.0000000,90.0000000); //
  21205. CreateDynamicObject(19367,189.1352690,1711.9692380,1232.2023920,0.0000000,0.0000000,90.0000000); //
  21206. CreateDynamicObject(19367,186.5137320,1726.2784420,1232.2023920,0.0000000,0.0000000,-180.0000000); //
  21207. CreateDynamicObject(19367,204.6253810,1711.9692380,1232.2023920,0.0000000,0.0000000,90.0000000); //
  21208. CreateDynamicObject(19367,193.0653990,1705.7086180,1232.2023920,0.0000000,0.0000000,90.0000000); //
  21209. CreateDynamicObject(19367,185.9752960,1711.9692380,1232.2023920,0.0000000,0.0000000,90.0000000); //
  21210. CreateDynamicObject(19395,201.4829550,1711.9741210,1232.2232660,0.0000000,0.0000000,90.0000000); //
  21211. CreateDynamicObject(19379,191.9769890,1701.7900390,1230.3764640,0.0000000,90.0000000,90.0000000); //
  21212. CreateDynamicObject(19367,206.2836910,1710.3790280,1232.2023920,0.0000000,0.0000000,-180.0000000); //
  21213. CreateDynamicObject(19367,196.2054290,1705.7086180,1232.2023920,0.0000000,0.0000000,90.0000000); //
  21214. CreateDynamicObject(19367,206.2837060,1707.2091060,1232.2023920,0.0000000,0.0000000,-180.0000000); //
  21215. CreateDynamicObject(19367,204.6253810,1705.7086180,1232.2023920,0.0000000,0.0000000,90.0000000); //
  21216. CreateDynamicObject(19367,201.4453430,1705.7086180,1232.2023920,0.0000000,0.0000000,90.0000000); //
  21217. CreateDynamicObject(19379,201.5671380,1712.2412100,1233.7687980,0.0000000,90.0000000,90.0000000); //
  21218. CreateDynamicObject(19379,192.0170280,1712.2412100,1233.7687980,0.0000000,90.0000000,90.0000000); //
  21219. CreateDynamicObject(19379,182.4767600,1712.2412100,1233.7687980,0.0000000,90.0000000,90.0000000); //
  21220. CreateDynamicObject(19379,182.4767600,1722.6208490,1233.7687980,0.0000000,90.0000000,90.0000000); //
  21221. CreateDynamicObject(19379,191.8568720,1722.6208490,1233.7687980,0.0000000,90.0000000,90.0000000); //
  21222. CreateDynamicObject(19379,201.4269400,1722.6208490,1233.7687980,0.0000000,90.0000000,90.0000000); //
  21223. CreateDynamicObject(1569,206.2316580,1720.7021480,1230.4020990,0.0000000,0.0000000,270.0000000); //
  21224. CreateDynamicObject(1569,206.2316580,1717.7319330,1230.4020990,0.0000000,0.0000000,90.0000000); //
  21225. CreateDynamicObject(2435,200.9705200,1724.1082760,1230.4215080,0.0000000,0.0000000,0.0000000); //
  21226. CreateDynamicObject(2434,201.8877250,1724.1008300,1230.4222410,0.0000000,0.0000000,0.0000000); //
  21227. CreateDynamicObject(2435,202.0570980,1725.2229000,1230.4221190,0.0000000,0.0000000,90.0000000); //
  21228. CreateDynamicObject(2435,202.0570980,1726.1228020,1230.4221190,0.0000000,0.0000000,90.0000000); //
  21229. CreateDynamicObject(2435,200.0505370,1724.1082760,1230.4215080,0.0000000,0.0000000,0.0000000); //
  21230. CreateDynamicObject(19325,199.0018610,1724.3676750,1234.2432860,0.0000000,0.0000000,90.0000000); //
  21231. CreateDynamicObject(2435,199.1504970,1724.1082760,1230.4215080,0.0000000,0.0000000,0.0000000); //
  21232. CreateDynamicObject(2435,198.2404630,1724.1082760,1230.4215080,0.0000000,0.0000000,0.0000000); //
  21233. CreateDynamicObject(2435,197.3404380,1724.1082760,1230.4215080,0.0000000,0.0000000,0.0000000); //
  21234. CreateDynamicObject(2435,196.4403530,1724.1082760,1230.4215080,0.0000000,0.0000000,0.0000000); //
  21235. CreateDynamicObject(2435,195.5403280,1724.1082760,1230.4215080,0.0000000,0.0000000,0.0000000); //
  21236. CreateDynamicObject(19325,192.3717650,1724.3676750,1234.2432860,0.0000000,0.0000000,90.0000000); //
  21237. CreateDynamicObject(2435,194.6203000,1724.1082760,1230.4215080,0.0000000,0.0000000,0.0000000); //
  21238. CreateDynamicObject(2435,193.7102810,1724.1082760,1230.4215080,0.0000000,0.0000000,0.0000000); //
  21239. CreateDynamicObject(2435,192.7902670,1724.1082760,1230.4215080,0.0000000,0.0000000,0.0000000); //
  21240. CreateDynamicObject(2435,191.8702230,1724.1082760,1230.4215080,0.0000000,0.0000000,0.0000000); //
  21241. CreateDynamicObject(2435,190.9701840,1724.1082760,1230.4215080,0.0000000,0.0000000,0.0000000); //
  21242. CreateDynamicObject(2435,190.0701590,1724.1082760,1230.4215080,0.0000000,0.0000000,0.0000000); //
  21243. CreateDynamicObject(2434,188.9477080,1724.2709960,1230.4222410,0.0000000,0.0000000,270.0000000); //
  21244. CreateDynamicObject(2435,188.9472350,1725.2020260,1230.4221190,0.0000000,0.0000000,-90.0000000); //
  21245. CreateDynamicObject(2435,188.9472350,1726.1018060,1230.4221190,0.0000000,0.0000000,-90.0000000); //
  21246. CreateDynamicObject(2198,200.7633360,1725.2581780,1230.5422360,0.0000000,0.0000000,-180.0000000); //
  21247. CreateDynamicObject(2198,197.7233120,1725.2581780,1230.5422360,0.0000000,0.0000000,-180.0000000); //
  21248. CreateDynamicObject(2198,194.8033290,1725.2581780,1230.5422360,0.0000000,0.0000000,-180.0000000); //
  21249. CreateDynamicObject(2198,191.9735260,1725.2581780,1230.5422360,0.0000000,0.0000000,-180.0000000); //
  21250. CreateDynamicObject(1671,200.1740570,1726.2779540,1230.9121090,0.0000000,0.0000000,1.0178450); //
  21251. CreateDynamicObject(1671,197.1845390,1726.2244870,1230.9121090,0.0000000,0.0000000,1.0178450); //
  21252. CreateDynamicObject(1671,194.2648920,1726.1738280,1230.9121090,0.0000000,0.0000000,1.0178450); //
  21253. CreateDynamicObject(1671,191.3053740,1726.1213370,1230.9121090,0.0000000,0.0000000,1.0178450); //
  21254. CreateDynamicObject(2773,201.2277670,1722.4520260,1230.9719230,0.0000000,0.0000000,0.0000000); //
  21255. CreateDynamicObject(2773,199.6277610,1722.4520260,1230.9719230,0.0000000,0.0000000,0.0000000); //
  21256. CreateDynamicObject(2773,197.7978210,1722.4520260,1230.9719230,0.0000000,0.0000000,0.0000000); //
  21257. CreateDynamicObject(2773,195.9278710,1722.4520260,1230.9719230,0.0000000,0.0000000,0.0000000); //
  21258. CreateDynamicObject(2773,193.8578640,1722.4520260,1230.9719230,0.0000000,0.0000000,0.0000000); //
  21259. CreateDynamicObject(2773,191.8778990,1722.4520260,1230.9719230,0.0000000,0.0000000,0.0000000); //
  21260. CreateDynamicObject(2773,189.8679650,1722.4520260,1230.9719230,0.0000000,0.0000000,0.0000000); //
  21261. CreateDynamicObject(1704,205.6363370,1715.8189690,1230.4421380,0.0000000,0.0000000,-90.0000000); //
  21262. CreateDynamicObject(1704,205.6363370,1714.0794670,1230.4421380,0.0000000,0.0000000,-90.0000000); //
  21263. CreateDynamicObject(2346,204.1364130,1714.8452140,1230.4616690,0.0000000,0.0000000,270.0000000); //
  21264. CreateDynamicObject(2852,204.1497340,1714.3817130,1230.9722900,0.0000000,0.0000000,-5.3020940); //
  21265. CreateDynamicObject(19466,189.0863490,1725.4837640,1233.1520990,0.0000000,0.0000000,178.4300680); //
  21266. CreateDynamicObject(19466,202.3514090,1725.4803460,1233.1520990,0.0000000,0.0000000,178.4300680); //
  21267. CreateDynamicObject(19367,196.7736960,1732.6473380,1225.9726560,0.0000000,0.0000000,-180.0000000); //
  21268. CreateDynamicObject(19367,196.7437280,1729.4769280,1232.2023920,0.0000000,0.0000000,-180.0000000); //
  21269. CreateDynamicObject(19367,196.7637320,1729.4769280,1229.0927730,0.0000000,0.0000000,-180.0000000); //
  21270. CreateDynamicObject(19367,196.7637320,1732.6473380,1228.9826660,0.0000000,0.0000000,-180.0000000); //
  21271. CreateDynamicObject(19367,196.7437280,1732.6470940,1232.2023920,0.0000000,0.0000000,-180.0000000); //
  21272. CreateDynamicObject(19367,193.8237450,1732.6473380,1226.5524900,0.0000000,0.0000000,-180.0000000); //
  21273. CreateDynamicObject(19367,193.8337860,1732.6473380,1228.9826660,0.0000000,0.0000000,180.0000000); //
  21274. CreateDynamicObject(19367,193.8436730,1732.6470940,1232.2023920,0.0000000,0.0000000,-180.0000000); //
  21275. CreateDynamicObject(19367,193.8636770,1729.4769280,1232.2023920,0.0000000,0.0000000,-180.0000000); //
  21276. CreateDynamicObject(19367,193.8537750,1729.4769280,1229.0927730,0.0000000,0.0000000,-180.0000000); //
  21277. CreateDynamicObject(19367,192.3452600,1727.8286130,1232.2023920,0.0000000,0.0000000,90.0000000); //
  21278. CreateDynamicObject(2634,194.9219360,1734.8510740,1227.8919670,0.0000000,0.0000000,-122.2431560); //
  21279. CreateDynamicObject(19379,191.8568720,1733.0714110,1233.7686760,0.0000000,90.0000000,90.0000000); //
  21280. CreateDynamicObject(19367,195.2351680,1734.1983640,1231.1102290,0.0000000,0.0000000,90.0000000); //
  21281. CreateDynamicObject(19379,194.0768890,1737.5737300,1226.3156730,0.0000000,90.0000000,90.0000000); //
  21282. CreateDynamicObject(19367,196.7537380,1735.8372800,1228.1414790,0.0000000,0.0000000,-180.0000000); //
  21283. CreateDynamicObject(19367,198.2437890,1739.0070800,1228.1414790,0.0000000,0.0000000,-180.0000000); //
  21284. CreateDynamicObject(19367,198.2438500,1742.1669920,1228.1414790,0.0000000,0.0000000,-180.0000000); //
  21285. CreateDynamicObject(19367,193.7637020,1735.8372800,1228.1414790,0.0000000,0.0000000,-180.0000000); //
  21286. CreateDynamicObject(19367,192.2252500,1737.3492430,1228.1414790,0.0000000,0.0000000,90.0000000); //
  21287. CreateDynamicObject(19379,194.0768890,1747.9835200,1226.3156730,0.0000000,90.0000000,90.0000000); //
  21288. CreateDynamicObject(19379,194.0768890,1749.4938960,1229.8155510,0.0000000,90.0000000,90.0000000); //
  21289. CreateDynamicObject(19379,194.0768890,1739.5352780,1229.8155510,0.0000000,90.0000000,90.0000000); //
  21290. CreateDynamicObject(19367,195.2351680,1734.1978750,1232.2523190,0.0000000,0.0000000,90.0000000); //
  21291. CreateDynamicObject(19367,192.7851400,1734.2684320,1228.1414790,0.0000000,0.0000000,90.0000000); //
  21292. CreateDynamicObject(19367,197.9752340,1734.2684320,1228.1414790,0.0000000,0.0000000,90.0000000); //
  21293. CreateDynamicObject(19367,198.4252310,1737.3492430,1228.1414790,0.0000000,0.0000000,90.0000000); //
  21294. CreateDynamicObject(19367,192.2637480,1739.0070800,1228.1414790,0.0000000,0.0000000,-180.0000000); //
  21295. CreateDynamicObject(19367,192.2637480,1742.1866450,1228.1414790,0.0000000,0.0000000,-180.0000000); //
  21296. CreateDynamicObject(19367,192.2637480,1745.3469230,1228.1414790,0.0000000,0.0000000,-180.0000000); //
  21297. CreateDynamicObject(19367,198.2438500,1745.2769770,1228.1414790,0.0000000,0.0000000,-180.0000000); //
  21298. CreateDynamicObject(19367,196.7151480,1746.7908930,1228.1414790,0.0000000,0.0000000,90.0000000); //
  21299. CreateDynamicObject(19367,193.5450430,1746.7908930,1228.1414790,0.0000000,0.0000000,90.0000000); //
  21300. CreateDynamicObject(2007,197.7419580,1738.3524160,1226.4010000,0.0000000,0.0000000,270.0000000); //
  21301. CreateDynamicObject(2007,197.7419890,1738.3524160,1227.7905270,0.0000000,0.0000000,270.0000000); //
  21302. CreateDynamicObject(2007,197.7523650,1739.3117670,1227.7905270,0.0000000,0.0000000,270.0000000); //
  21303. CreateDynamicObject(2007,197.7523040,1739.3123770,1226.3909910,0.0000000,0.0000000,270.0000000); //
  21304. CreateDynamicObject(2007,197.7524870,1740.2917480,1227.7905270,0.0000000,0.0000000,270.0000000); //
  21305. CreateDynamicObject(2007,197.7626340,1740.2924800,1226.4010000,0.0000000,0.0000000,270.0000000); //
  21306. CreateDynamicObject(2007,197.7527310,1741.2718500,1227.7905270,0.0000000,0.0000000,270.0000000); //
  21307. CreateDynamicObject(2007,197.7629390,1741.2717280,1226.4003900,0.0000000,0.0000000,270.0000000); //
  21308. CreateDynamicObject(2007,197.7731930,1742.2617180,1226.3903800,0.0000000,0.0000000,270.0000000); //
  21309. CreateDynamicObject(2007,197.7732840,1743.2514640,1226.3903800,0.0000000,0.0000000,270.0000000); //
  21310. CreateDynamicObject(2007,197.7734830,1744.2216790,1226.3903800,0.0000000,0.0000000,270.0000000); //
  21311. CreateDynamicObject(2007,197.7738340,1745.2022700,1226.3903800,0.0000000,0.0000000,270.0000000); //
  21312. CreateDynamicObject(2007,197.7630310,1742.2618400,1227.7902830,0.0000000,0.0000000,270.0000000); //
  21313. CreateDynamicObject(2007,197.7633660,1743.2514640,1227.7902830,0.0000000,0.0000000,270.0000000); //
  21314. CreateDynamicObject(2007,197.7634880,1744.2218010,1227.7905270,0.0000000,0.0000000,270.0000000); //
  21315. CreateDynamicObject(2007,197.7638850,1745.1922600,1227.7904050,0.0000000,0.0000000,270.0000000); //
  21316. CreateDynamicObject(2007,192.8427120,1738.3803710,1226.4010000,0.0000000,0.0000000,90.0000000); //
  21317. CreateDynamicObject(2007,192.8427120,1739.3707270,1226.4010000,0.0000000,0.0000000,90.0000000); //
  21318. CreateDynamicObject(2007,192.8427120,1740.3509520,1226.4010000,0.0000000,0.0000000,90.0000000); //
  21319. CreateDynamicObject(2007,192.8427120,1741.3306880,1226.4010000,0.0000000,0.0000000,90.0000000); //
  21320. CreateDynamicObject(2007,192.8427120,1742.3107910,1226.4010000,0.0000000,0.0000000,90.0000000); //
  21321. CreateDynamicObject(2007,192.8427120,1743.2810050,1226.4010000,0.0000000,0.0000000,90.0000000); //
  21322. CreateDynamicObject(2007,192.8427120,1744.2506100,1226.4010000,0.0000000,0.0000000,90.0000000); //
  21323. CreateDynamicObject(2007,192.8427120,1745.2006830,1226.4010000,0.0000000,0.0000000,90.0000000); //
  21324. CreateDynamicObject(2007,192.8427120,1738.3803710,1227.8017570,0.0000000,0.0000000,90.0000000); //
  21325. CreateDynamicObject(2007,192.8427120,1739.3702390,1227.8017570,0.0000000,0.0000000,90.0000000); //
  21326. CreateDynamicObject(2007,192.8427120,1740.3503410,1227.8017570,0.0000000,0.0000000,90.0000000); //
  21327. CreateDynamicObject(2007,192.8427120,1741.3303220,1227.8017570,0.0000000,0.0000000,90.0000000); //
  21328. CreateDynamicObject(2007,192.8427120,1742.3101800,1227.8017570,0.0000000,0.0000000,90.0000000); //
  21329. CreateDynamicObject(2007,192.8427120,1743.2902830,1227.8017570,0.0000000,0.0000000,90.0000000); //
  21330. CreateDynamicObject(2007,192.8427120,1744.2401120,1227.8017570,0.0000000,0.0000000,90.0000000); //
  21331. CreateDynamicObject(2007,192.8427120,1745.2005610,1227.8017570,0.0000000,0.0000000,90.0000000); //
  21332. CreateDynamicObject(2007,193.3572080,1745.6674800,1226.4010000,0.0000000,0.0000000,0.0000000); //
  21333. CreateDynamicObject(2007,194.3371580,1745.6774900,1226.4010000,0.0000000,0.0000000,0.0000000); //
  21334. CreateDynamicObject(2007,195.3271020,1745.6676020,1226.4010000,0.0000000,0.0000000,0.0000000); //
  21335. CreateDynamicObject(2007,196.2971030,1745.6674800,1226.4010000,0.0000000,0.0000000,0.0000000); //
  21336. CreateDynamicObject(2007,197.2871550,1745.6574700,1226.4010000,0.0000000,0.0000000,0.0000000); //
  21337. CreateDynamicObject(2007,197.2871550,1745.6574700,1227.7912590,0.0000000,0.0000000,0.0000000); //
  21338. CreateDynamicObject(2007,196.2971640,1745.6574700,1227.7912590,0.0000000,0.0000000,0.0000000); //
  21339. CreateDynamicObject(2007,195.3271630,1745.6574700,1227.7912590,0.0000000,0.0000000,0.0000000); //
  21340. CreateDynamicObject(2007,194.3472130,1745.6574700,1227.7912590,0.0000000,0.0000000,0.0000000); //
  21341. CreateDynamicObject(2007,193.3671720,1745.6574700,1227.7912590,0.0000000,0.0000000,0.0000000); //
  21342. CreateDynamicObject(2007,192.3772270,1745.6674800,1226.4010000,0.0000000,0.0000000,0.0000000); //
  21343. CreateDynamicObject(2007,192.3871300,1745.6574700,1227.7912590,0.0000000,0.0000000,0.0000000); //
  21344. CreateDynamicObject(1550,193.2837820,1745.2631830,1226.7711180,0.0000000,0.0000000,1.4982850); //
  21345. CreateDynamicObject(1550,193.9535060,1745.2802730,1226.7711180,0.0000000,0.0000000,1.4982850); //
  21346. CreateDynamicObject(1550,193.3020470,1744.5629880,1226.7711180,0.0000000,0.0000000,1.4982850); //
  21347. CreateDynamicObject(1550,193.9696040,1744.6596670,1226.7711180,0.0000000,0.0000000,1.4982850); //
  21348. CreateDynamicObject(1550,194.6631770,1745.2980950,1226.7711180,0.0000000,0.0000000,1.4982850); //
  21349. CreateDynamicObject(1550,194.6593620,1744.6776120,1226.7711180,0.0000000,0.0000000,1.4982850); //
  21350. CreateDynamicObject(1550,195.3812250,1744.6164550,1226.7711180,0.0000000,0.0000000,1.4982850); //
  21351. CreateDynamicObject(1550,195.3630060,1745.3171380,1226.7711180,-23.0999940,0.5000000,1.4982850); //
  21352. CreateDynamicObject(19379,201.5671380,1701.8817130,1233.7687980,0.0000000,90.0000000,90.0000000); //
  21353. CreateDynamicObject(19379,191.9868160,1701.8803710,1233.7687980,0.0000000,90.0000000,90.0000000); //
  21354. CreateDynamicObject(19367,197.7936850,1707.2773430,1232.2023920,0.0000000,0.0000000,-180.0000000); //
  21355. CreateDynamicObject(19367,200.6237790,1710.4472650,1232.2023920,0.0000000,0.0000000,-180.0000000); //
  21356. CreateDynamicObject(19367,200.6237790,1707.3071280,1232.2023920,0.0000000,0.0000000,-180.0000000); //
  21357. CreateDynamicObject(2165,204.4668120,1708.0975340,1230.4715570,0.0000000,0.0000000,90.0000000); //
  21358. CreateDynamicObject(1671,205.4828180,1708.5615230,1230.9018550,0.0000000,0.0000000,-90.0000000); //
  21359. CreateDynamicObject(1811,203.1873320,1708.6151120,1230.9218750,0.0000000,0.0000000,179.6782070); //
  21360. CreateDynamicObject(1502,202.2334440,1711.9927970,1230.4715570,0.0000000,0.0000000,179.2057340); //
  21361. CreateDynamicObject(2007,205.8848410,1710.1146240,1230.4616690,0.0000000,0.0000000,270.0000000); //
  21362. CreateDynamicObject(2007,205.8848410,1709.1243890,1230.4616690,0.0000000,0.0000000,270.0000000); //
  21363. CreateDynamicObject(2007,205.8848410,1708.1436760,1230.4616690,0.0000000,0.0000000,270.0000000); //
  21364. CreateDynamicObject(2007,205.8848410,1707.1638180,1230.4616690,0.0000000,0.0000000,270.0000000); //
  21365. CreateDynamicObject(2608,202.3477020,1705.9230950,1231.9626460,0.0000000,0.0000000,180.0000000); //
  21366. CreateDynamicObject(2608,204.7976530,1705.9230950,1231.9626460,0.0000000,0.0000000,180.0000000); //
  21367. CreateDynamicObject(1742,200.6117850,1707.8582760,1230.4420160,0.0000000,0.0000000,90.0000000); //
  21368. CreateDynamicObject(1886,205.7757720,1712.4664300,1233.9833980,0.0000000,0.0000000,235.3553310); //
  21369. CreateDynamicObject(1742,200.6117850,1709.2985830,1230.4420160,0.0000000,0.0000000,90.0000000); //
  21370. CreateDynamicObject(1886,205.8392790,1727.3499750,1234.0135490,0.0000000,0.0000000,-28.9344120); //
  21371. CreateDynamicObject(2961,206.1583090,1717.3371580,1232.1329340,0.0000000,0.0000000,-90.0000000); //
  21372. CreateDynamicObject(2690,200.2171630,1712.1156000,1231.7927240,0.0000000,0.0000000,178.7670890); //
  21373. CreateDynamicObject(1713,199.2151940,1712.5573730,1230.4720450,0.0000000,0.0000000,180.0000000); //
  21374. CreateDynamicObject(19395,192.2829430,1711.9741210,1232.2232660,0.0000000,0.0000000,90.0000000); //
  21375. CreateDynamicObject(19367,197.7936850,1710.4378660,1232.2023920,0.0000000,0.0000000,-180.0000000); //
  21376. CreateDynamicObject(1742,191.4119110,1709.2985830,1230.4420160,0.0000000,0.0000000,90.0000000); //
  21377. CreateDynamicObject(1742,191.4018240,1707.8582760,1230.4420160,0.0000000,0.0000000,90.0000000); //
  21378. CreateDynamicObject(2608,193.3277430,1705.9230950,1231.9626460,0.0000000,0.0000000,180.0000000); //
  21379. CreateDynamicObject(2608,195.8977500,1705.9230950,1231.9626460,0.0000000,0.0000000,180.0000000); //
  21380. CreateDynamicObject(2165,195.6570890,1708.0975340,1230.4715570,0.0000000,0.0000000,90.0000000); //
  21381. CreateDynamicObject(2007,197.3048850,1710.1146240,1230.4616690,0.0000000,0.0000000,270.0000000); //
  21382. CreateDynamicObject(2007,197.3048850,1709.1243890,1230.4616690,0.0000000,0.0000000,270.0000000); //
  21383. CreateDynamicObject(2007,197.3048850,1708.1241450,1230.4616690,0.0000000,0.0000000,270.0000000); //
  21384. CreateDynamicObject(2007,197.3048850,1707.1439200,1230.4616690,0.0000000,0.0000000,270.0000000); //
  21385. CreateDynamicObject(1671,196.6629180,1708.5615230,1230.9018550,0.0000000,0.0000000,-90.0000000); //
  21386. CreateDynamicObject(1811,194.5475460,1708.6640620,1230.9218750,0.0000000,0.0000000,179.6782070); //
  21387. CreateDynamicObject(1502,193.0331260,1712.0292960,1230.4715570,0.0000000,0.0000000,179.2057340); //
  21388. CreateDynamicObject(1704,196.2358850,1712.4985350,1230.4313960,0.0000000,0.0000000,180.0000000); //
  21389. CreateDynamicObject(1704,194.6858060,1712.4985350,1230.4313960,0.0000000,0.0000000,180.0000000); //
  21390. CreateDynamicObject(1742,204.1006310,1711.9713130,1230.4420160,0.0000000,0.0000000,180.0000000); //
  21391. CreateDynamicObject(1704,190.4158320,1712.4985350,1230.4313960,0.0000000,0.0000000,180.0000000); //
  21392. CreateDynamicObject(1704,188.5358120,1712.4985350,1230.4313960,0.0000000,0.0000000,180.0000000); //
  21393. CreateDynamicObject(1713,187.0903470,1717.4448240,1230.4720450,0.0000000,0.0000000,90.0000000); //
  21394. CreateDynamicObject(963,186.5992430,1720.8250730,1231.4919430,90.0000000,0.0000000,90.0000000); //
  21395. // Hospital map
  21396. CreateDynamicObject(19379,2516.6882320,-1711.1119380,2103.6499020,0.0000000,90.0000000,0.0000000); //
  21397. CreateDynamicObject(19379,2516.6882320,-1701.5023190,2103.6499020,0.0000000,90.0000000,0.0000000); //
  21398. CreateDynamicObject(19379,2506.2287590,-1711.1119380,2103.6499020,0.0000000,90.0000000,0.0000000); //
  21399. CreateDynamicObject(19379,2506.2341300,-1701.5023190,2103.6499020,0.0000000,90.0000000,0.0000000); //
  21400. CreateDynamicObject(19358,2501.1433100,-1698.3096920,2105.4165030,0.0000000,0.0000000,0.0000000); //
  21401. CreateDynamicObject(19358,2501.1433100,-1701.4598380,2105.4165030,0.0000000,0.0000000,0.0000000); //
  21402. CreateDynamicObject(19358,2501.1433100,-1707.7290030,2105.4165030,0.0000000,0.0000000,0.0000000); //
  21403. CreateDynamicObject(19358,2501.1433100,-1704.5781250,2105.4165030,0.0000000,0.0000000,0.0000000); //
  21404. CreateDynamicObject(19358,2501.1433100,-1710.8990470,2105.4165030,0.0000000,0.0000000,0.0000000); //
  21405. CreateDynamicObject(19358,2501.1433100,-1714.0694580,2105.4165030,0.0000000,0.0000000,0.0000000); //
  21406. CreateDynamicObject(1569,2501.1892080,-1707.7211910,2103.7248530,0.0000000,0.0000000,90.0000000); //
  21407. CreateDynamicObject(1569,2501.1892080,-1704.7503660,2103.7248530,0.0000000,0.0000000,-90.0000000); //
  21408. CreateDynamicObject(19379,2506.2341300,-1701.5023190,2107.1826170,0.0000000,90.0000000,0.0000000); //
  21409. CreateDynamicObject(19379,2506.2341300,-1711.0618890,2107.1826170,0.0000000,90.0000000,0.0000000); //
  21410. CreateDynamicObject(19379,2516.6469720,-1711.0618890,2107.1826170,0.0000000,90.0000000,0.0000000); //
  21411. CreateDynamicObject(19379,2516.6469720,-1701.4824210,2107.1826170,0.0000000,90.0000000,0.0000000); //
  21412. CreateDynamicObject(19358,2506.6308590,-1699.0745840,2105.4160150,0.0000000,0.0000000,90.0000000); //
  21413. CreateDynamicObject(19358,2503.4597160,-1699.0745840,2105.4160150,0.0000000,0.0000000,90.0000000); //
  21414. CreateDynamicObject(19450,2503.4250480,-1713.4067380,2105.4165030,0.0000000,0.0000000,90.0000000); //
  21415. CreateDynamicObject(19388,2509.8281250,-1713.3765860,2105.4169920,0.0000000,0.0000000,90.0000000); //
  21416. CreateDynamicObject(19450,2517.7238760,-1720.6984860,2105.4165030,0.0000000,0.0000000,0.0000000); //
  21417. CreateDynamicObject(19450,2512.0747070,-1718.2618400,2105.4165030,0.0000000,0.0000000,0.0000000); //
  21418. CreateDynamicObject(19450,2517.7224120,-1701.4890130,2105.4165030,0.0000000,0.0000000,0.0000000); //
  21419. CreateDynamicObject(19450,2517.7238760,-1711.1087640,2105.4165030,0.0000000,0.0000000,0.0000000); //
  21420. CreateDynamicObject(1704,2501.7597650,-1703.8385000,2103.6748040,0.0000000,0.0000000,90.0000000); //
  21421. CreateDynamicObject(1704,2501.7597650,-1701.5883780,2103.6748040,0.0000000,0.0000000,90.0000000); //
  21422. CreateDynamicObject(1704,2501.7597650,-1709.5299070,2103.6748040,0.0000000,0.0000000,90.0000000); //
  21423. CreateDynamicObject(1704,2501.7597650,-1711.8608390,2103.6748040,0.0000000,0.0000000,90.0000000); //
  21424. CreateDynamicObject(19388,2508.1528320,-1711.7366940,2105.4165030,0.0000000,0.0000000,0.0000000); //
  21425. CreateDynamicObject(19388,2508.1628410,-1700.7659910,2105.4165030,0.0000000,0.0000000,0.0000000); //
  21426. CreateDynamicObject(19358,2509.8408200,-1702.2832030,2105.4160150,0.0000000,0.0000000,90.0000000); //
  21427. CreateDynamicObject(19358,2509.8408200,-1710.2252190,2105.4160150,0.0000000,0.0000000,90.0000000); //
  21428. CreateDynamicObject(19388,2516.0520010,-1702.2851560,2105.4169920,0.0000000,0.0000000,90.0000000); //
  21429. CreateDynamicObject(19358,2513.0317380,-1702.2832030,2105.4160150,0.0000000,0.0000000,90.0000000); //
  21430. CreateDynamicObject(19358,2513.0317380,-1710.2226560,2105.4160150,0.0000000,0.0000000,90.0000000); //
  21431. CreateDynamicObject(19388,2516.0520010,-1710.2246090,2105.4169920,0.0000000,0.0000000,90.0000000); //
  21432. CreateDynamicObject(1671,2510.4946280,-1707.6137690,2104.1655270,0.0000000,0.0000000,-90.4175560); //
  21433. CreateDynamicObject(1671,2510.4946280,-1706.2337640,2104.1655270,0.0000000,0.0000000,-90.4175560); //
  21434. CreateDynamicObject(1671,2510.5239250,-1704.9739990,2104.1655270,0.0000000,0.0000000,-90.4175560); //
  21435. CreateDynamicObject(2190,2508.8859860,-1704.7230220,2104.7358390,0.0000000,0.0000000,90.0000000); //
  21436. CreateDynamicObject(2190,2508.8859860,-1705.9930410,2104.7358390,0.0000000,0.0000000,90.0000000); //
  21437. CreateDynamicObject(18070,2510.9077140,-1706.2512200,2104.2355950,0.0000000,0.0000000,270.0000000); //
  21438. CreateDynamicObject(2190,2508.8859860,-1707.4334710,2104.7358390,0.0000000,0.0000000,90.0000000); //
  21439. CreateDynamicObject(2066,2517.0820310,-1703.4481200,2103.7231440,0.0000000,0.0000000,-90.0000000); //
  21440. CreateDynamicObject(2066,2517.0820310,-1702.8876950,2103.7231440,0.0000000,0.0000000,-90.0000000); //
  21441. CreateDynamicObject(2066,2517.0820310,-1704.0086660,2103.7231440,0.0000000,0.0000000,-90.0000000); //
  21442. CreateDynamicObject(2066,2517.0820310,-1704.5487060,2103.7231440,0.0000000,0.0000000,-90.0000000); //
  21443. CreateDynamicObject(2066,2517.0820310,-1709.7690420,2103.7231440,0.0000000,0.0000000,-90.0000000); //
  21444. CreateDynamicObject(2066,2517.0820310,-1709.2186270,2103.7231440,0.0000000,0.0000000,-90.0000000); //
  21445. CreateDynamicObject(2066,2517.0820310,-1708.6585690,2103.7231440,0.0000000,0.0000000,-90.0000000); //
  21446. CreateDynamicObject(2066,2517.0820310,-1708.0994870,2103.7231440,0.0000000,0.0000000,-90.0000000); //
  21447. CreateDynamicObject(2199,2517.3588860,-1706.1834710,2103.7451170,0.0000000,0.0000000,270.0000000); //
  21448. CreateDynamicObject(19388,2509.8281250,-1699.0742180,2105.4169920,0.0000000,0.0000000,90.0000000); //
  21449. CreateDynamicObject(19358,2500.2807610,-1699.0745840,2105.4160150,0.0000000,0.0000000,90.0000000); //
  21450. CreateDynamicObject(19358,2513.0202630,-1699.0745840,2105.4160150,0.0000000,0.0000000,90.0000000); //
  21451. CreateDynamicObject(19388,2516.0476070,-1699.0742180,2105.4169920,0.0000000,0.0000000,90.0000000); //
  21452. CreateDynamicObject(19379,2506.2341300,-1691.9427490,2103.6499020,0.0000000,90.0000000,0.0000000); //
  21453. CreateDynamicObject(19379,2516.6882320,-1691.9420160,2103.6499020,0.0000000,90.0000000,0.0000000); //
  21454. CreateDynamicObject(19450,2517.7224120,-1691.9107660,2105.4165030,0.0000000,0.0000000,0.0000000); //
  21455. CreateDynamicObject(19450,2501.1418450,-1691.9107660,2105.4165030,0.0000000,0.0000000,0.0000000); //
  21456. CreateDynamicObject(19379,2506.2341300,-1691.9223630,2107.1826170,0.0000000,90.0000000,0.0000000); //
  21457. CreateDynamicObject(19379,2516.6469720,-1691.9200430,2107.1826170,0.0000000,90.0000000,0.0000000); //
  21458. CreateDynamicObject(19450,2505.9541010,-1687.1076660,2105.4165030,0.0000000,0.0000000,90.0000000); //
  21459. CreateDynamicObject(19450,2515.5532220,-1687.1075430,2105.4165030,0.0000000,0.0000000,90.0000000); //
  21460. CreateDynamicObject(19450,2512.0747070,-1694.2009270,2105.4165030,0.0000000,0.0000000,0.0000000); //
  21461. CreateDynamicObject(19450,2506.2338860,-1694.2009270,2105.4165030,0.0000000,0.0000000,0.0000000); //
  21462. CreateDynamicObject(1800,2505.4172360,-1690.1856680,2103.6447750,0.0000000,0.0000000,-90.0000000); //
  21463. CreateDynamicObject(1800,2505.3771970,-1692.6860350,2103.6447750,0.0000000,0.0000000,-90.0000000); //
  21464. CreateDynamicObject(1800,2505.3471670,-1695.2764890,2103.6447750,0.0000000,0.0000000,-90.0000000); //
  21465. CreateDynamicObject(1800,2505.3571770,-1698.0367430,2103.6447750,0.0000000,0.0000000,-90.0000000); //
  21466. CreateDynamicObject(2845,2508.1633300,-1697.2145990,2103.7348630,0.0000000,0.0000000,97.2192760); //
  21467. CreateDynamicObject(2846,2508.0500480,-1694.8189690,2103.7648920,0.0000000,0.0000000,89.7618780); //
  21468. CreateDynamicObject(2843,2508.0983880,-1692.1384270,2103.7448730,0.0000000,0.0000000,89.7618780); //
  21469. CreateDynamicObject(2132,2509.2404780,-1687.6722410,2103.7248530,0.0000000,0.0000000,0.0000000); //
  21470. CreateDynamicObject(19450,2512.0747070,-1684.6018060,2105.4165030,0.0000000,0.0000000,0.0000000); //
  21471. CreateDynamicObject(19450,2506.2338860,-1684.5908200,2105.4165030,0.0000000,0.0000000,0.0000000); //
  21472. CreateDynamicObject(1417,2509.7429190,-1687.4229730,2105.4062500,0.0000000,0.0000000,0.2321950); //
  21473. CreateDynamicObject(2131,2507.0119620,-1687.5440670,2103.6647940,0.0000000,0.0000000,0.0000000); //
  21474. CreateDynamicObject(1337,2511.3764640,-1687.7445060,2104.3754880,0.0000000,0.0000000,-0.2307840); //
  21475. CreateDynamicObject(1800,2511.3286130,-1698.0367430,2103.6447750,0.0000000,0.0000000,-90.0000000); //
  21476. CreateDynamicObject(1800,2511.2888180,-1695.2764890,2103.6447750,0.0000000,0.0000000,-90.0000000); //
  21477. CreateDynamicObject(1800,2511.2783200,-1692.6860350,2103.6447750,0.0000000,0.0000000,-90.0000000); //
  21478. CreateDynamicObject(1800,2511.2880850,-1690.1856680,2103.6447750,0.0000000,0.0000000,-90.0000000); //
  21479. CreateDynamicObject(2131,2512.8122550,-1687.5440670,2103.6647940,0.0000000,0.0000000,0.0000000); //
  21480. CreateDynamicObject(2132,2515.0815420,-1687.6722410,2103.7248530,0.0000000,0.0000000,0.0000000); //
  21481. CreateDynamicObject(1417,2515.5742180,-1687.3999020,2105.4062500,0.0000000,0.0000000,0.2321950); //
  21482. CreateDynamicObject(1337,2517.2189940,-1687.7680660,2104.3754880,0.0000000,0.0000000,-0.2307840); //
  21483. CreateDynamicObject(2845,2514.1508780,-1697.1512450,2103.7348630,0.0000000,0.0000000,97.2192760); //
  21484. CreateDynamicObject(2846,2514.0202630,-1694.6436760,2103.7648920,0.0000000,0.0000000,89.7618780); //
  21485. CreateDynamicObject(2843,2514.0402830,-1692.1029050,2103.7448730,0.0000000,0.0000000,89.7618780); //
  21486. CreateDynamicObject(19358,2513.0317380,-1713.3729240,2105.4160150,0.0000000,0.0000000,90.0000000); //
  21487. CreateDynamicObject(19388,2516.1013180,-1713.3762200,2105.4169920,0.0000000,0.0000000,90.0000000); //
  21488. CreateDynamicObject(19379,2506.2287590,-1720.7119140,2103.6499020,0.0000000,90.0000000,0.0000000); //
  21489. CreateDynamicObject(19379,2516.6469720,-1720.6434320,2107.1826170,0.0000000,90.0000000,0.0000000); //
  21490. CreateDynamicObject(19379,2506.2553710,-1720.6434320,2107.1826170,0.0000000,90.0000000,0.0000000); //
  21491. CreateDynamicObject(19379,2516.6882320,-1720.7131340,2103.6499020,0.0000000,90.0000000,0.0000000); //
  21492. CreateDynamicObject(19450,2512.0725090,-1727.8636470,2105.4165030,0.0000000,0.0000000,0.0000000); //
  21493. CreateDynamicObject(19450,2501.1428220,-1720.4716790,2105.4165030,0.0000000,0.0000000,0.0000000); //
  21494. CreateDynamicObject(1800,2511.2084960,-1714.4691160,2103.6447750,0.0000000,0.0000000,-90.0000000); //
  21495. CreateDynamicObject(1800,2511.2084960,-1717.0183100,2103.6447750,0.0000000,0.0000000,-90.0000000); //
  21496. CreateDynamicObject(1800,2511.2084960,-1719.6589350,2103.6447750,0.0000000,0.0000000,-90.0000000); //
  21497. CreateDynamicObject(1800,2511.2084960,-1722.2691650,2103.6447750,0.0000000,0.0000000,-90.0000000); //
  21498. CreateDynamicObject(19450,2515.5532220,-1725.5183100,2105.4165030,0.0000000,0.0000000,90.0000000); //
  21499. CreateDynamicObject(1337,2517.0710440,-1724.9570310,2104.3754880,0.0000000,0.0000000,-180.0000000); //
  21500. CreateDynamicObject(2132,2515.9624020,-1724.9178460,2103.7248530,0.0000000,0.0000000,-180.0000000); //
  21501. CreateDynamicObject(1417,2515.5300290,-1725.3859860,2105.4062500,0.0000000,0.0000000,180.0000000); //
  21502. CreateDynamicObject(2131,2513.8022460,-1724.9726560,2103.6647940,0.0000000,0.0000000,180.0000000); //
  21503. CreateDynamicObject(19450,2505.9526360,-1725.5183100,2105.4165030,0.0000000,0.0000000,90.0000000); //
  21504. CreateDynamicObject(19450,2506.0388180,-1718.2618400,2105.4165030,0.0000000,0.0000000,0.0000000); //
  21505. CreateDynamicObject(19450,2506.0388180,-1727.8914790,2105.4165030,0.0000000,0.0000000,0.0000000); //
  21506. CreateDynamicObject(1800,2505.1352530,-1714.4691160,2103.6447750,0.0000000,0.0000000,-90.0000000); //
  21507. CreateDynamicObject(1800,2505.1650390,-1717.0183100,2103.6447750,0.0000000,0.0000000,-90.0000000); //
  21508. CreateDynamicObject(1800,2505.1860350,-1719.6589350,2103.6447750,0.0000000,0.0000000,-90.0000000); //
  21509. CreateDynamicObject(1800,2505.1965330,-1722.2691650,2103.6447750,0.0000000,0.0000000,-90.0000000); //
  21510. CreateDynamicObject(2131,2508.1398920,-1724.9726560,2103.6647940,0.0000000,0.0000000,180.0000000); //
  21511. CreateDynamicObject(2132,2510.3410640,-1724.9178460,2103.7248530,0.0000000,0.0000000,-180.0000000); //
  21512. CreateDynamicObject(1337,2511.4008780,-1724.9570310,2104.3754880,0.0000000,0.0000000,-180.0000000); //
  21513. CreateDynamicObject(1417,2509.8701170,-1725.3859860,2105.4062500,0.0000000,0.0000000,180.0000000); //
  21514. CreateDynamicObject(1523,2510.5837400,-1713.3168940,2103.6347650,0.0000000,0.0000000,180.0000000); //
  21515. CreateDynamicObject(1523,2516.8366690,-1713.3669430,2103.6347650,0.0000000,0.0000000,180.0000000); //
  21516. CreateDynamicObject(1523,2515.2414550,-1699.0969230,2103.6347650,0.0000000,0.0000000,0.0000000); //
  21517. CreateDynamicObject(1523,2509.0278320,-1699.0969230,2103.6347650,0.0000000,0.0000000,0.0000000); //
  21518. CreateDynamicObject(1523,2508.0637200,-1710.9403070,2103.6848140,0.0000000,0.0000000,-90.0000000); //
  21519. CreateDynamicObject(1523,2508.0732420,-1699.9881590,2103.6848140,0.0000000,0.0000000,-90.0000000); //
  21520. CreateDynamicObject(1704,2503.3427730,-1699.7674560,2103.6748040,0.0000000,0.0000000,0.0000000); //
  21521. CreateDynamicObject(1704,2505.3842770,-1699.7705070,2103.6748040,0.0000000,0.0000000,0.0000000); //
  21522. CreateDynamicObject(1704,2505.9648430,-1712.8300780,2103.6748040,0.0000000,0.0000000,180.0000000); //
  21523. CreateDynamicObject(1704,2504.0146480,-1712.8300780,2103.6748040,0.0000000,0.0000000,180.0000000); //
  21524. CreateDynamicObject(2961,2501.2487790,-1704.4854730,2105.2763670,0.0000000,0.0000000,90.0000000); //
  21525. CreateDynamicObject(2690,2504.8154290,-1699.2531730,2105.3662100,0.0000000,0.0000000,0.0000000); //
  21526. CreateDynamicObject(1997,2511.5332030,-1721.0379630,2103.6948240,0.0000000,0.0000000,180.0000000); //
  21527. CreateDynamicObject(1997,2511.5332030,-1718.0487060,2103.6948240,0.0000000,0.0000000,180.0000000); //
  21528. CreateDynamicObject(1997,2517.1733390,-1695.1639400,2103.6948240,0.0000000,0.0000000,180.0000000); //
  21529. CreateDynamicObject(1997,2517.1833490,-1691.7325430,2103.6948240,0.0000000,0.0000000,180.0000000); //
  21530. CreateDynamicObject(1997,2511.4997550,-1695.1639400,2103.6948240,0.0000000,0.0000000,180.0000000); //
  21531. CreateDynamicObject(1997,2511.4685050,-1691.7325430,2103.6948240,0.0000000,0.0000000,180.0000000); //
  21532. CreateDynamicObject(1997,2517.1564940,-1718.0487060,2103.6948240,0.0000000,0.0000000,180.0000000); //
  21533. CreateDynamicObject(1997,2517.0854490,-1721.0379630,2103.6948240,0.0000000,0.0000000,180.0000000); //
  21534. //lannister LSPD interior
  21535. //Objects////////////////////////////////////////////////////////////////////////////////////////////////////////
  21536. tmpobjid = CreateDynamicObject(19448,1625.552,1596.649,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21537. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21538. tmpobjid = CreateDynamicObject(19448,1624.012,1587.018,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21539. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21540. tmpobjid = CreateDynamicObject(19448,1620.512,1587.018,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21541. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21542. tmpobjid = CreateDynamicObject(19448,1617.013,1587.018,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21543. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21544. tmpobjid = CreateDynamicObject(19448,1627.503,1587.018,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21545. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21546. tmpobjid = CreateDynamicObject(19448,1622.052,1596.649,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21547. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21548. tmpobjid = CreateDynamicObject(19448,1618.553,1596.649,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21549. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21550. tmpobjid = CreateDynamicObject(19448,1625.552,1577.385,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21551. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21552. tmpobjid = CreateDynamicObject(19448,1622.052,1577.399,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21553. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21554. tmpobjid = CreateDynamicObject(19448,1618.553,1577.390,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21555. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21556. tmpobjid = CreateDynamicObject(19459,1629.311,1587.010,11.546,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21557. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21558. tmpobjid = CreateDynamicObject(948,1628.776,1589.037,9.816,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21559. SetDynamicObjectMaterial(tmpobjid, 1, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21560. SetDynamicObjectMaterial(tmpobjid, 3, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21561. tmpobjid = CreateDynamicObject(948,1628.776,1584.995,9.816,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21562. SetDynamicObjectMaterial(tmpobjid, 0, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21563. SetDynamicObjectMaterial(tmpobjid, 1, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21564. SetDynamicObjectMaterial(tmpobjid, 3, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21565. tmpobjid = CreateDynamicObject(2818,1628.014,1587.561,9.826,0.000,0.000,-90.199,-1,-1,-1,300.000,300.000);
  21566. SetDynamicObjectMaterial(tmpobjid, 0, 19352, "classy", "moustache01", 0x00000000);
  21567. tmpobjid = CreateDynamicObject(19482,1629.309,1589.078,9.849,0.000,-90.199,0.000,-1,-1,-1,300.000,300.000);
  21568. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21569. SetDynamicObjectMaterialText(tmpobjid, 0, "WELCOME", 90, "Calibri", 20, 0, 0xFFFFFFFF, 0x00000000, 0);
  21570. tmpobjid = CreateDynamicObject(19482,1629.537,1589.359,9.838,0.000,-89.400,0.000,-1,-1,-1,300.000,300.000);
  21571. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21572. SetDynamicObjectMaterialText(tmpobjid, 0, "L.S.P.D", 80, "Calibri", 20, 0, 0xFFFFFFFF, 0x00000000, 0);
  21573. tmpobjid = CreateDynamicObject(19459,1627.371,1596.651,11.546,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21574. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21575. tmpobjid = CreateDynamicObject(19459,1632.100,1591.890,11.546,0.000,0.000,-90.299,-1,-1,-1,300.000,300.000);
  21576. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21577. tmpobjid = CreateDynamicObject(19459,1632.100,1582.118,11.546,0.000,0.000,-90.099,-1,-1,-1,300.000,300.000);
  21578. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21579. tmpobjid = CreateDynamicObject(19459,1627.371,1577.380,11.546,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21580. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21581. tmpobjid = CreateDynamicObject(19459,1616.729,1577.380,11.546,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21582. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21583. tmpobjid = CreateDynamicObject(19459,1616.729,1596.651,11.546,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21584. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21585. tmpobjid = CreateDynamicObject(19459,1612.776,1591.872,11.546,0.000,0.000,-89.899,-1,-1,-1,300.000,300.000);
  21586. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21587. tmpobjid = CreateDynamicObject(19459,1612.794,1582.270,11.546,0.000,0.000,-89.899,-1,-1,-1,300.000,300.000);
  21588. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21589. tmpobjid = CreateDynamicObject(19459,1615.538,1586.981,11.546,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21590. SetDynamicObjectMaterial(tmpobjid, 0, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21591. tmpobjid = CreateDynamicObject(19930,1617.362,1582.634,9.836,0.000,0.000,-89.799,-1,-1,-1,300.000,300.000);
  21592. SetDynamicObjectMaterial(tmpobjid, 1, 18641, "flashlight1", "metalblack1-2", 0x00000000);
  21593. tmpobjid = CreateDynamicObject(19930,1619.369,1582.551,9.836,0.000,0.000,90.099,-1,-1,-1,300.000,300.000);
  21594. SetDynamicObjectMaterial(tmpobjid, 1, 18641, "flashlight1", "metalblack1-2", 0x00000000);
  21595. tmpobjid = CreateDynamicObject(19930,1616.181,1582.630,9.836,0.000,0.000,-89.799,-1,-1,-1,300.000,300.000);
  21596. SetDynamicObjectMaterial(tmpobjid, 1, 18641, "flashlight1", "metalblack1-2", 0x00000000);
  21597. tmpobjid = CreateDynamicObject(19925,1620.389,1582.559,9.836,0.000,0.000,90.200,-1,-1,-1,300.000,300.000);
  21598. SetDynamicObjectMaterial(tmpobjid, 1, 18641, "flashlight1", "metalblack1-2", 0x00000000);
  21599. tmpobjid = CreateDynamicObject(19929,1620.384,1584.419,9.836,0.000,0.000,179.999,-1,-1,-1,300.000,300.000);
  21600. SetDynamicObjectMaterial(tmpobjid, 1, 18641, "flashlight1", "metalblack1-2", 0x00000000);
  21601. tmpobjid = CreateDynamicObject(19929,1620.384,1587.269,9.836,0.000,0.000,179.999,-1,-1,-1,300.000,300.000);
  21602. SetDynamicObjectMaterial(tmpobjid, 1, 18641, "flashlight1", "metalblack1-2", 0x00000000);
  21603. tmpobjid = CreateDynamicObject(19930,1620.391,1590.468,9.836,0.000,0.000,179.699,-1,-1,-1,300.000,300.000);
  21604. SetDynamicObjectMaterial(tmpobjid, 1, 18641, "flashlight1", "metalblack1-2", 0x00000000);
  21605. tmpobjid = CreateDynamicObject(19930,1617.343,1591.526,9.836,0.000,0.000,89.600,-1,-1,-1,300.000,300.000);
  21606. SetDynamicObjectMaterial(tmpobjid, 1, 18641, "flashlight1", "metalblack1-2", 0x00000000);
  21607. tmpobjid = CreateDynamicObject(19925,1620.394,1591.488,9.836,0.000,0.000,179.799,-1,-1,-1,300.000,300.000);
  21608. SetDynamicObjectMaterial(tmpobjid, 1, 18641, "flashlight1", "metalblack1-2", 0x00000000);
  21609. tmpobjid = CreateDynamicObject(19930,1619.375,1591.493,9.836,0.000,0.000,-90.399,-1,-1,-1,300.000,300.000);
  21610. SetDynamicObjectMaterial(tmpobjid, 1, 18641, "flashlight1", "metalblack1-2", 0x00000000);
  21611. tmpobjid = CreateDynamicObject(19930,1620.386,1589.287,9.836,0.000,0.000,179.699,-1,-1,-1,300.000,300.000);
  21612. SetDynamicObjectMaterial(tmpobjid, 1, 18641, "flashlight1", "metalblack1-2", 0x00000000);
  21613. tmpobjid = CreateDynamicObject(19930,1616.172,1591.536,9.836,0.000,0.000,89.600,-1,-1,-1,300.000,300.000);
  21614. SetDynamicObjectMaterial(tmpobjid, 1, 18641, "flashlight1", "metalblack1-2", 0x00000000);
  21615. tmpobjid = CreateDynamicObject(19482,1620.748,1587.221,10.276,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21616. SetDynamicObjectMaterial(tmpobjid, 0, 12853, "cunte_gas01", "postcards_law", 0x00000000);
  21617. SetDynamicObjectMaterialText(tmpobjid, 0, "RECEPTION", 80, "Calibri", 20, 0, 0xFFFFFFFF, 0x00000000, 1);
  21618. tmpobjid = CreateDynamicObject(2048,1615.631,1585.605,11.836,0.000,0.000,90.000,-1,-1,-1,300.000,300.000);
  21619. SetDynamicObjectMaterial(tmpobjid, 0, 12853, "cunte_gas01", "starspangban1_256", 0x00000000);
  21620. tmpobjid = CreateDynamicObject(19482,1615.638,1587.467,11.686,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21621. SetDynamicObjectMaterialText(tmpobjid, 0, "Los Santos", 50, "Calibri", 20, 0, 0xFFFFFFFF, 0x00000000, 0);
  21622. tmpobjid = CreateDynamicObject(19482,1615.636,1589.422,11.166,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21623. SetDynamicObjectMaterialText(tmpobjid, 0, "Police Department", 80, "Calibri", 20, 0, 0xFFFFFFFF, 0x00000000, 0);
  21624. tmpobjid = CreateDynamicObject(2190,1620.731,1589.372,10.756,0.000,0.000,-89.199,-1,-1,-1,300.000,300.000);
  21625. SetDynamicObjectMaterial(tmpobjid, 0, 19627, "wrench1", "wrench1", 0x00000000);
  21626. tmpobjid = CreateDynamicObject(2190,1620.678,1585.991,10.756,0.000,0.000,-90.699,-1,-1,-1,300.000,300.000);
  21627. SetDynamicObjectMaterial(tmpobjid, 0, 19627, "wrench1", "wrench1", 0x00000000);
  21628. tmpobjid = CreateDynamicObject(19807,1620.348,1589.997,10.816,0.000,0.000,-80.299,-1,-1,-1,300.000,300.000);
  21629. SetDynamicObjectMaterial(tmpobjid, 0, 19627, "wrench1", "wrench1", 0x00000000);
  21630. SetDynamicObjectMaterial(tmpobjid, 1, 19627, "wrench1", "wrench1", 0x00000000);
  21631. tmpobjid = CreateDynamicObject(19807,1620.230,1586.650,10.816,0.000,0.000,-62.999,-1,-1,-1,300.000,300.000);
  21632. SetDynamicObjectMaterial(tmpobjid, 0, 19627, "wrench1", "wrench1", 0x00000000);
  21633. SetDynamicObjectMaterial(tmpobjid, 1, 19627, "wrench1", "wrench1", 0x00000000);
  21634. tmpobjid = CreateDynamicObject(19386,1618.416,1594.695,11.536,0.000,0.000,-90.099,-1,-1,-1,300.000,300.000);
  21635. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21636. tmpobjid = CreateDynamicObject(19459,1624.802,1594.694,11.536,0.000,0.000,-89.899,-1,-1,-1,300.000,300.000);
  21637. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21638. tmpobjid = CreateDynamicObject(2605,1625.155,1595.835,10.226,0.000,0.000,90.399,-1,-1,-1,300.000,300.000);
  21639. SetDynamicObjectMaterial(tmpobjid, 2, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21640. SetDynamicObjectMaterial(tmpobjid, 4, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21641. SetDynamicObjectMaterial(tmpobjid, 5, 19627, "wrench1", "wrench1", 0x00000000);
  21642. tmpobjid = CreateDynamicObject(2356,1626.651,1595.634,9.836,0.000,0.000,73.300,-1,-1,-1,300.000,300.000);
  21643. SetDynamicObjectMaterial(tmpobjid, 0, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21644. tmpobjid = CreateDynamicObject(1722,1624.368,1596.795,9.836,0.000,0.000,-179.499,-1,-1,-1,300.000,300.000);
  21645. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21646. tmpobjid = CreateDynamicObject(2605,1625.123,1600.368,10.226,0.000,0.000,90.399,-1,-1,-1,300.000,300.000);
  21647. SetDynamicObjectMaterial(tmpobjid, 2, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21648. SetDynamicObjectMaterial(tmpobjid, 4, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21649. SetDynamicObjectMaterial(tmpobjid, 5, 19627, "wrench1", "wrench1", 0x00000000);
  21650. tmpobjid = CreateDynamicObject(2356,1626.619,1600.417,9.836,0.000,0.000,98.200,-1,-1,-1,300.000,300.000);
  21651. SetDynamicObjectMaterial(tmpobjid, 0, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21652. tmpobjid = CreateDynamicObject(1722,1624.312,1599.463,9.836,0.000,0.000,0.500,-1,-1,-1,300.000,300.000);
  21653. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21654. tmpobjid = CreateDynamicObject(19459,1624.789,1601.515,11.536,0.000,0.000,-89.899,-1,-1,-1,300.000,300.000);
  21655. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21656. tmpobjid = CreateDynamicObject(2610,1626.910,1598.290,10.666,0.000,0.000,-90.299,-1,-1,-1,300.000,300.000);
  21657. SetDynamicObjectMaterial(tmpobjid, 0, 19627, "wrench1", "wrench1", 0x00000000);
  21658. SetDynamicObjectMaterial(tmpobjid, 1, 19627, "wrench1", "wrench1", 0x00000000);
  21659. SetDynamicObjectMaterial(tmpobjid, 2, 19513, "whitephone", "whitephone", 0x00000000);
  21660. tmpobjid = CreateDynamicObject(2610,1626.907,1597.770,10.666,0.000,0.000,-90.299,-1,-1,-1,300.000,300.000);
  21661. SetDynamicObjectMaterial(tmpobjid, 0, 19627, "wrench1", "wrench1", 0x00000000);
  21662. SetDynamicObjectMaterial(tmpobjid, 1, 19627, "wrench1", "wrench1", 0x00000000);
  21663. SetDynamicObjectMaterial(tmpobjid, 2, 19513, "whitephone", "whitephone", 0x00000000);
  21664. tmpobjid = CreateDynamicObject(2192,1626.505,1597.619,11.496,0.000,0.000,149.800,-1,-1,-1,300.000,300.000);
  21665. SetDynamicObjectMaterial(tmpobjid, 0, 19627, "wrench1", "wrench1", 0x00000000);
  21666. tmpobjid = CreateDynamicObject(2191,1621.650,1600.496,9.816,0.000,0.000,90.000,-1,-1,-1,300.000,300.000);
  21667. SetDynamicObjectMaterial(tmpobjid, 2, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21668. tmpobjid = CreateDynamicObject(2191,1621.650,1595.235,9.816,0.000,0.000,90.000,-1,-1,-1,300.000,300.000);
  21669. SetDynamicObjectMaterial(tmpobjid, 2, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21670. tmpobjid = CreateDynamicObject(2191,1621.650,1597.865,9.816,0.000,0.000,90.000,-1,-1,-1,300.000,300.000);
  21671. SetDynamicObjectMaterial(tmpobjid, 2, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21672. tmpobjid = CreateDynamicObject(19386,1618.429,1601.506,11.536,0.000,0.000,-90.099,-1,-1,-1,300.000,300.000);
  21673. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21674. tmpobjid = CreateDynamicObject(19448,1618.553,1606.274,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21675. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21676. tmpobjid = CreateDynamicObject(19448,1615.052,1606.274,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21677. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21678. tmpobjid = CreateDynamicObject(19448,1611.560,1606.274,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21679. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21680. tmpobjid = CreateDynamicObject(19459,1619.514,1604.335,11.536,0.000,0.000,-89.899,-1,-1,-1,300.000,300.000);
  21681. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21682. tmpobjid = CreateDynamicObject(19459,1612.017,1601.500,11.536,0.000,0.000,-89.899,-1,-1,-1,300.000,300.000);
  21683. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21684. tmpobjid = CreateDynamicObject(19459,1620.080,1606.412,11.546,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21685. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21686. tmpobjid = CreateDynamicObject(19386,1614.806,1602.809,11.536,0.000,0.000,0.499,-1,-1,-1,300.000,300.000);
  21687. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21688. tmpobjid = CreateDynamicObject(19459,1611.336,1599.464,11.546,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21689. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21690. tmpobjid = CreateDynamicObject(19448,1618.553,1615.906,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21691. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21692. tmpobjid = CreateDynamicObject(19448,1615.071,1615.906,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21693. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21694. tmpobjid = CreateDynamicObject(19448,1611.571,1615.906,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21695. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21696. tmpobjid = CreateDynamicObject(19459,1614.788,1609.212,11.566,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21697. SetDynamicObjectMaterial(tmpobjid, 0, 14842, "genintintpolicea", "copcell_bars", 0x00000000);
  21698. tmpobjid = CreateDynamicObject(19459,1614.668,1609.222,14.016,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21699. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21700. tmpobjid = CreateDynamicObject(19459,1614.839,1609.222,14.016,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21701. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21702. tmpobjid = CreateDynamicObject(19459,1620.080,1616.041,11.546,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21703. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21704. tmpobjid = CreateDynamicObject(19459,1610.066,1613.957,11.536,0.000,0.000,-89.899,-1,-1,-1,300.000,300.000);
  21705. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21706. tmpobjid = CreateDynamicObject(19459,1611.336,1609.084,11.546,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21707. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21708. tmpobjid = CreateDynamicObject(19459,1615.721,1617.686,11.536,0.000,0.000,-89.899,-1,-1,-1,300.000,300.000);
  21709. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21710. tmpobjid = CreateDynamicObject(19459,1614.796,1618.712,11.546,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21711. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21712. tmpobjid = CreateDynamicObject(19459,1613.545,1614.371,9.186,0.000,0.000,-89.899,-1,-1,-1,300.000,300.000);
  21713. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21714. tmpobjid = CreateDynamicObject(19459,1617.368,1619.272,8.136,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21715. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21716. tmpobjid = CreateDynamicObject(19448,1608.068,1606.274,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21717. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21718. tmpobjid = CreateDynamicObject(948,1617.204,1593.346,9.816,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21719. SetDynamicObjectMaterial(tmpobjid, 0, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21720. SetDynamicObjectMaterial(tmpobjid, 1, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21721. SetDynamicObjectMaterial(tmpobjid, 3, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21722. tmpobjid = CreateDynamicObject(948,1617.204,1580.754,9.816,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21723. SetDynamicObjectMaterial(tmpobjid, 0, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21724. SetDynamicObjectMaterial(tmpobjid, 1, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21725. SetDynamicObjectMaterial(tmpobjid, 3, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21726. tmpobjid = CreateDynamicObject(948,1626.864,1594.157,9.766,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21727. SetDynamicObjectMaterial(tmpobjid, 0, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21728. SetDynamicObjectMaterial(tmpobjid, 1, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21729. SetDynamicObjectMaterial(tmpobjid, 3, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21730. tmpobjid = CreateDynamicObject(1722,1626.040,1594.430,9.836,0.000,0.000,-179.499,-1,-1,-1,300.000,300.000);
  21731. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21732. tmpobjid = CreateDynamicObject(1722,1625.159,1594.452,9.836,0.000,0.000,-179.499,-1,-1,-1,300.000,300.000);
  21733. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21734. tmpobjid = CreateDynamicObject(1722,1624.278,1594.474,9.836,0.000,0.000,-179.499,-1,-1,-1,300.000,300.000);
  21735. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21736. tmpobjid = CreateDynamicObject(1722,1623.396,1594.526,9.836,0.000,0.000,-179.499,-1,-1,-1,300.000,300.000);
  21737. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21738. tmpobjid = CreateDynamicObject(1722,1622.526,1594.519,9.836,0.000,0.000,-179.499,-1,-1,-1,300.000,300.000);
  21739. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21740. tmpobjid = CreateDynamicObject(1722,1627.152,1593.118,9.836,0.000,0.000,90.500,-1,-1,-1,300.000,300.000);
  21741. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21742. tmpobjid = CreateDynamicObject(1722,1627.160,1592.208,9.836,0.000,0.000,88.000,-1,-1,-1,300.000,300.000);
  21743. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21744. tmpobjid = CreateDynamicObject(19386,1622.492,1565.924,11.536,0.000,0.000,-90.099,-1,-1,-1,300.000,300.000);
  21745. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21746. tmpobjid = CreateDynamicObject(19459,1624.787,1579.303,11.536,0.000,0.000,-89.899,-1,-1,-1,300.000,300.000);
  21747. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21748. tmpobjid = CreateDynamicObject(948,1626.864,1579.776,9.786,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21749. SetDynamicObjectMaterial(tmpobjid, 0, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21750. SetDynamicObjectMaterial(tmpobjid, 1, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21751. SetDynamicObjectMaterial(tmpobjid, 3, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21752. tmpobjid = CreateDynamicObject(1722,1627.152,1580.510,9.836,0.000,0.000,91.600,-1,-1,-1,300.000,300.000);
  21753. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21754. tmpobjid = CreateDynamicObject(1722,1627.135,1581.480,9.836,0.000,0.000,88.900,-1,-1,-1,300.000,300.000);
  21755. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21756. tmpobjid = CreateDynamicObject(1722,1625.909,1579.486,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21757. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21758. tmpobjid = CreateDynamicObject(1722,1624.918,1579.491,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21759. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21760. tmpobjid = CreateDynamicObject(1722,1623.968,1579.495,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21761. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21762. tmpobjid = CreateDynamicObject(1722,1623.007,1579.500,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21763. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21764. tmpobjid = CreateDynamicObject(1722,1622.077,1579.504,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21765. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21766. tmpobjid = CreateDynamicObject(19329,1618.468,1594.598,12.816,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21767. SetDynamicObjectMaterialText(tmpobjid, 0, "PROCESSING", 40, "Calibri", 20, 0, 0xFFFFFFFF, 0x00000500, 1);
  21768. tmpobjid = CreateDynamicObject(19329,1618.468,1579.384,12.816,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21769. SetDynamicObjectMaterialText(tmpobjid, 0, "ADMINISTRATION", 40, "Calibri", 20, 0, 0xFFFFFFFF, 0x00000500, 1);
  21770. tmpobjid = CreateDynamicObject(19448,1625.552,1567.752,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21771. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21772. tmpobjid = CreateDynamicObject(19448,1622.062,1567.772,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21773. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21774. tmpobjid = CreateDynamicObject(19448,1618.571,1567.772,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21775. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21776. tmpobjid = CreateDynamicObject(19459,1627.371,1567.751,11.546,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21777. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21778. tmpobjid = CreateDynamicObject(2198,1626.772,1572.945,9.836,0.000,0.000,179.599,-1,-1,-1,300.000,300.000);
  21779. SetDynamicObjectMaterial(tmpobjid, 2, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21780. SetDynamicObjectMaterial(tmpobjid, 4, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21781. tmpobjid = CreateDynamicObject(2193,1620.447,1577.689,9.826,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21782. SetDynamicObjectMaterial(tmpobjid, 3, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21783. SetDynamicObjectMaterial(tmpobjid, 5, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21784. tmpobjid = CreateDynamicObject(2172,1622.437,1578.680,9.836,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21785. SetDynamicObjectMaterial(tmpobjid, 6, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21786. tmpobjid = CreateDynamicObject(2172,1624.438,1578.680,9.836,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21787. SetDynamicObjectMaterial(tmpobjid, 6, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21788. tmpobjid = CreateDynamicObject(2172,1626.756,1577.541,9.836,0.000,0.000,-89.499,-1,-1,-1,300.000,300.000);
  21789. SetDynamicObjectMaterial(tmpobjid, 6, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21790. tmpobjid = CreateDynamicObject(2193,1621.461,1574.490,9.826,0.000,0.000,89.499,-1,-1,-1,300.000,300.000);
  21791. SetDynamicObjectMaterial(tmpobjid, 3, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21792. SetDynamicObjectMaterial(tmpobjid, 5, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21793. tmpobjid = CreateDynamicObject(2198,1622.459,1573.452,9.836,0.000,0.000,-0.200,-1,-1,-1,300.000,300.000);
  21794. SetDynamicObjectMaterial(tmpobjid, 2, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21795. SetDynamicObjectMaterial(tmpobjid, 4, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21796. tmpobjid = CreateDynamicObject(2193,1620.428,1572.498,9.826,0.000,0.000,-1.000,-1,-1,-1,300.000,300.000);
  21797. SetDynamicObjectMaterial(tmpobjid, 3, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21798. SetDynamicObjectMaterial(tmpobjid, 5, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21799. tmpobjid = CreateDynamicObject(2193,1621.414,1569.099,9.826,0.000,0.000,89.499,-1,-1,-1,300.000,300.000);
  21800. SetDynamicObjectMaterial(tmpobjid, 3, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21801. SetDynamicObjectMaterial(tmpobjid, 5, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21802. tmpobjid = CreateDynamicObject(2172,1623.402,1569.076,9.836,0.000,0.000,179.600,-1,-1,-1,300.000,300.000);
  21803. SetDynamicObjectMaterial(tmpobjid, 6, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21804. tmpobjid = CreateDynamicObject(2172,1626.734,1569.051,9.836,0.000,0.000,179.600,-1,-1,-1,300.000,300.000);
  21805. SetDynamicObjectMaterial(tmpobjid, 6, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21806. tmpobjid = CreateDynamicObject(2198,1625.745,1571.911,9.836,0.000,0.000,-0.200,-1,-1,-1,300.000,300.000);
  21807. SetDynamicObjectMaterial(tmpobjid, 2, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21808. SetDynamicObjectMaterial(tmpobjid, 4, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21809. tmpobjid = CreateDynamicObject(2198,1623.472,1574.499,9.836,0.000,0.000,179.599,-1,-1,-1,300.000,300.000);
  21810. SetDynamicObjectMaterial(tmpobjid, 2, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21811. SetDynamicObjectMaterial(tmpobjid, 4, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21812. tmpobjid = CreateDynamicObject(2610,1626.398,1578.479,10.666,0.000,0.000,-40.899,-1,-1,-1,300.000,300.000);
  21813. SetDynamicObjectMaterial(tmpobjid, 0, 19627, "wrench1", "wrench1", 0x00000000);
  21814. SetDynamicObjectMaterial(tmpobjid, 1, 19627, "wrench1", "wrench1", 0x00000000);
  21815. SetDynamicObjectMaterial(tmpobjid, 2, 19513, "whitephone", "whitephone", 0x00000000);
  21816. tmpobjid = CreateDynamicObject(2356,1620.902,1575.061,9.836,0.000,0.000,73.300,-1,-1,-1,300.000,300.000);
  21817. SetDynamicObjectMaterial(tmpobjid, 0, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21818. tmpobjid = CreateDynamicObject(2356,1620.963,1578.285,9.836,0.000,0.000,-5.999,-1,-1,-1,300.000,300.000);
  21819. SetDynamicObjectMaterial(tmpobjid, 0, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21820. tmpobjid = CreateDynamicObject(2356,1622.887,1578.163,9.836,0.000,0.000,22.300,-1,-1,-1,300.000,300.000);
  21821. SetDynamicObjectMaterial(tmpobjid, 0, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21822. tmpobjid = CreateDynamicObject(2356,1624.977,1578.283,9.836,0.000,0.000,-4.799,-1,-1,-1,300.000,300.000);
  21823. SetDynamicObjectMaterial(tmpobjid, 0, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21824. tmpobjid = CreateDynamicObject(2356,1626.401,1577.069,9.836,0.000,0.000,-89.199,-1,-1,-1,300.000,300.000);
  21825. SetDynamicObjectMaterial(tmpobjid, 0, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21826. tmpobjid = CreateDynamicObject(2356,1625.794,1573.754,9.836,0.000,0.000,-132.800,-1,-1,-1,300.000,300.000);
  21827. SetDynamicObjectMaterial(tmpobjid, 0, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21828. tmpobjid = CreateDynamicObject(2356,1622.285,1575.149,9.836,0.000,0.000,-64.399,-1,-1,-1,300.000,300.000);
  21829. SetDynamicObjectMaterial(tmpobjid, 0, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21830. tmpobjid = CreateDynamicObject(2356,1622.875,1572.973,9.836,0.000,0.000,-7.799,-1,-1,-1,300.000,300.000);
  21831. SetDynamicObjectMaterial(tmpobjid, 0, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21832. tmpobjid = CreateDynamicObject(2356,1620.917,1572.658,9.836,0.000,0.000,-26.299,-1,-1,-1,300.000,300.000);
  21833. SetDynamicObjectMaterial(tmpobjid, 0, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21834. tmpobjid = CreateDynamicObject(2356,1622.391,1569.541,9.836,0.000,0.000,-157.600,-1,-1,-1,300.000,300.000);
  21835. SetDynamicObjectMaterial(tmpobjid, 0, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21836. tmpobjid = CreateDynamicObject(2356,1620.937,1569.509,9.836,0.000,0.000,84.400,-1,-1,-1,300.000,300.000);
  21837. SetDynamicObjectMaterial(tmpobjid, 0, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21838. tmpobjid = CreateDynamicObject(2356,1626.176,1569.490,9.836,0.000,0.000,-157.600,-1,-1,-1,300.000,300.000);
  21839. SetDynamicObjectMaterial(tmpobjid, 0, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21840. tmpobjid = CreateDynamicObject(2356,1627.028,1571.150,9.836,0.000,0.000,87.199,-1,-1,-1,300.000,300.000);
  21841. SetDynamicObjectMaterial(tmpobjid, 0, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21842. tmpobjid = CreateDynamicObject(19329,1622.387,1574.422,10.706,0.000,0.000,79.499,-1,-1,-1,300.000,300.000);
  21843. SetDynamicObjectMaterialText(tmpobjid, 0, "Sgt. McDuffy", 120, "Ariel", 15, 1, 0xFFF70000, 0x00000000, 1);
  21844. tmpobjid = CreateDynamicObject(19386,1616.734,1570.971,11.536,0.000,0.000,0.499,-1,-1,-1,300.000,300.000);
  21845. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21846. tmpobjid = CreateDynamicObject(19448,1615.078,1567.772,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21847. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21848. tmpobjid = CreateDynamicObject(19448,1611.578,1567.772,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21849. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21850. tmpobjid = CreateDynamicObject(19459,1616.080,1565.915,11.536,0.000,0.000,-89.899,-1,-1,-1,300.000,300.000);
  21851. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21852. tmpobjid = CreateDynamicObject(19411,1625.694,1565.912,11.536,0.000,0.000,89.999,-1,-1,-1,300.000,300.000);
  21853. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21854. tmpobjid = CreateDynamicObject(19448,1625.552,1558.119,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21855. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21856. tmpobjid = CreateDynamicObject(19448,1622.069,1558.150,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21857. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21858. tmpobjid = CreateDynamicObject(19459,1620.389,1561.019,11.546,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21859. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21860. tmpobjid = CreateDynamicObject(19459,1625.274,1558.970,11.536,0.000,0.000,-89.899,-1,-1,-1,300.000,300.000);
  21861. SetDynamicObjectMaterial(tmpobjid, 0, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21862. tmpobjid = CreateDynamicObject(19459,1627.371,1558.140,11.546,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21863. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21864. tmpobjid = CreateDynamicObject(19482,1622.308,1559.071,11.536,0.000,0.000,90.099,-1,-1,-1,300.000,300.000);
  21865. SetDynamicObjectMaterialText(tmpobjid, 0, "To serve and protect.", 120, "Calibri", 30, 1, 0xFFFFFFFF, 0x00000000, 0);
  21866. tmpobjid = CreateDynamicObject(19386,1618.390,1579.294,11.536,0.000,0.000,-90.099,-1,-1,-1,300.000,300.000);
  21867. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21868. tmpobjid = CreateDynamicObject(19459,1616.749,1564.550,11.546,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21869. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21870. tmpobjid = CreateDynamicObject(19448,1611.578,1577.403,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21871. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21872. tmpobjid = CreateDynamicObject(19448,1615.078,1577.392,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21873. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21874. tmpobjid = CreateDynamicObject(19448,1608.097,1577.403,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21875. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21876. tmpobjid = CreateDynamicObject(19448,1608.085,1567.772,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21877. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21878. tmpobjid = CreateDynamicObject(19459,1611.844,1582.150,11.546,0.000,0.000,-89.899,-1,-1,-1,300.000,300.000);
  21879. SetDynamicObjectMaterial(tmpobjid, 0, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21880. tmpobjid = CreateDynamicObject(19386,1615.046,1572.649,11.536,0.000,0.000,-90.099,-1,-1,-1,300.000,300.000);
  21881. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21882. tmpobjid = CreateDynamicObject(19411,1611.861,1572.653,11.536,0.000,0.000,89.999,-1,-1,-1,300.000,300.000);
  21883. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21884. tmpobjid = CreateDynamicObject(19459,1610.217,1577.380,11.546,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21885. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21886. tmpobjid = CreateDynamicObject(2491,1613.896,1580.439,9.336,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21887. SetDynamicObjectMaterial(tmpobjid, 0, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21888. SetDynamicObjectMaterial(tmpobjid, 1, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21889. tmpobjid = CreateDynamicObject(1722,1610.680,1572.844,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21890. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21891. tmpobjid = CreateDynamicObject(1722,1611.381,1572.841,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21892. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21893. tmpobjid = CreateDynamicObject(1722,1612.072,1572.838,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21894. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21895. tmpobjid = CreateDynamicObject(1722,1612.802,1572.835,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21896. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21897. tmpobjid = CreateDynamicObject(1722,1613.523,1572.832,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21898. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21899. tmpobjid = CreateDynamicObject(1722,1613.532,1574.583,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21900. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21901. tmpobjid = CreateDynamicObject(1722,1613.539,1576.234,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21902. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21903. tmpobjid = CreateDynamicObject(1722,1613.546,1577.985,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21904. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21905. tmpobjid = CreateDynamicObject(1722,1612.906,1577.988,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21906. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21907. tmpobjid = CreateDynamicObject(1722,1612.897,1576.237,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21908. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21909. tmpobjid = CreateDynamicObject(1722,1612.889,1574.576,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21910. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21911. tmpobjid = CreateDynamicObject(1722,1610.628,1574.585,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21912. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21913. tmpobjid = CreateDynamicObject(1722,1610.635,1576.287,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21914. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21915. tmpobjid = CreateDynamicObject(1722,1610.614,1578.058,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21916. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21917. tmpobjid = CreateDynamicObject(1722,1611.245,1578.055,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21918. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21919. tmpobjid = CreateDynamicObject(1722,1611.236,1576.285,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21920. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21921. tmpobjid = CreateDynamicObject(1722,1611.227,1574.594,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21922. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21923. tmpobjid = CreateDynamicObject(1722,1616.248,1577.972,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21924. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21925. tmpobjid = CreateDynamicObject(1722,1616.241,1576.160,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21926. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21927. tmpobjid = CreateDynamicObject(1722,1616.233,1574.529,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21928. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21929. tmpobjid = CreateDynamicObject(1722,1616.225,1572.839,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21930. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21931. tmpobjid = CreateDynamicObject(19482,1614.074,1582.040,11.726,0.000,0.000,-90.100,-1,-1,-1,300.000,300.000);
  21932. SetDynamicObjectMaterialText(tmpobjid, 0, "The Los Santos", 80, "Ariel", 20, 1, 0xFFFFFFFF, 0x00000000, 0);
  21933. tmpobjid = CreateDynamicObject(19482,1615.134,1582.038,11.226,0.000,0.000,-90.100,-1,-1,-1,300.000,300.000);
  21934. SetDynamicObjectMaterialText(tmpobjid, 0, "Police Department", 80, "Ariel", 15, 1, 0xFFFFFFFF, 0x00000000, 0);
  21935. tmpobjid = CreateDynamicObject(19482,1616.966,1582.055,11.506,0.000,0.000,-90.100,-1,-1,-1,300.000,300.000);
  21936. SetDynamicObjectMaterialText(tmpobjid, 0, "To serve and protect.", 90, "Calibri", 15, 1, 0xFFFFFFFF, 0x00000000, 0);
  21937. tmpobjid = CreateDynamicObject(19448,1608.085,1558.152,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21938. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21939. tmpobjid = CreateDynamicObject(19448,1611.566,1558.152,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21940. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21941. tmpobjid = CreateDynamicObject(19386,1609.664,1565.898,11.536,0.000,0.000,-90.099,-1,-1,-1,300.000,300.000);
  21942. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21943. tmpobjid = CreateDynamicObject(19459,1613.378,1561.030,11.546,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21944. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21945. tmpobjid = CreateDynamicObject(19411,1608.140,1564.228,11.536,0.000,0.000,179.699,-1,-1,-1,300.000,300.000);
  21946. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21947. tmpobjid = CreateDynamicObject(19459,1612.732,1557.728,11.536,0.000,0.000,-89.899,-1,-1,-1,300.000,300.000);
  21948. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21949. tmpobjid = CreateDynamicObject(19411,1608.123,1561.017,11.536,0.000,0.000,179.699,-1,-1,-1,300.000,300.000);
  21950. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21951. tmpobjid = CreateDynamicObject(19459,1608.116,1554.601,11.546,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21952. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21953. tmpobjid = CreateDynamicObject(19386,1606.464,1565.904,11.536,0.000,0.000,-90.099,-1,-1,-1,300.000,300.000);
  21954. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21955. tmpobjid = CreateDynamicObject(19448,1604.584,1562.434,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21956. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21957. tmpobjid = CreateDynamicObject(19459,1604.765,1561.023,11.546,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21958. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21959. tmpobjid = CreateDynamicObject(19459,1603.123,1557.711,11.536,0.000,0.000,-89.899,-1,-1,-1,300.000,300.000);
  21960. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21961. tmpobjid = CreateDynamicObject(1722,1610.667,1559.954,9.836,0.000,0.000,-0.299,-1,-1,-1,300.000,300.000);
  21962. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21963. tmpobjid = CreateDynamicObject(1722,1610.714,1563.517,9.836,0.000,0.000,179.200,-1,-1,-1,300.000,300.000);
  21964. SetDynamicObjectMaterial(tmpobjid, 1, 19598, "sfbuilding1", "darkwood1", 0x00000000);
  21965. tmpobjid = CreateDynamicObject(19366,1615.212,1568.892,11.536,0.000,0.000,-72.500,-1,-1,-1,300.000,300.000);
  21966. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21967. tmpobjid = CreateDynamicObject(19366,1612.780,1567.158,11.536,0.000,0.000,-36.400,-1,-1,-1,300.000,300.000);
  21968. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21969. tmpobjid = CreateDynamicObject(19448,1604.604,1572.045,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21970. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21971. tmpobjid = CreateDynamicObject(19366,1604.830,1567.293,11.536,0.000,0.000,-0.800,-1,-1,-1,300.000,300.000);
  21972. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21973. tmpobjid = CreateDynamicObject(19386,1608.535,1572.660,11.536,0.000,0.000,-90.099,-1,-1,-1,300.000,300.000);
  21974. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21975. tmpobjid = CreateDynamicObject(19366,1606.158,1573.982,11.536,0.000,0.000,31.899,-1,-1,-1,300.000,300.000);
  21976. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21977. tmpobjid = CreateDynamicObject(19459,1605.315,1580.111,11.546,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21978. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21979. tmpobjid = CreateDynamicObject(19448,1604.596,1581.674,9.750,0.000,90.000,0.000,-1,-1,-1,300.000,300.000);
  21980. SetDynamicObjectMaterial(tmpobjid, 0, 7555, "bballcpark1", "ws_carparknew2", 0x00000000);
  21981. tmpobjid = CreateDynamicObject(19366,1606.981,1582.113,11.536,0.000,0.000,90.199,-1,-1,-1,300.000,300.000);
  21982. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21983. tmpobjid = CreateDynamicObject(19366,1608.561,1582.138,11.536,0.000,0.000,90.199,-1,-1,-1,300.000,300.000);
  21984. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21985. tmpobjid = CreateDynamicObject(2319,1609.808,1580.955,9.666,0.000,0.000,-89.899,-1,-1,-1,300.000,300.000);
  21986. SetDynamicObjectMaterial(tmpobjid, 0, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21987. tmpobjid = CreateDynamicObject(2319,1609.812,1578.495,9.666,0.000,0.000,-90.599,-1,-1,-1,300.000,300.000);
  21988. SetDynamicObjectMaterial(tmpobjid, 0, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21989. tmpobjid = CreateDynamicObject(2319,1609.786,1576.065,9.666,0.000,0.000,-90.599,-1,-1,-1,300.000,300.000);
  21990. SetDynamicObjectMaterial(tmpobjid, 0, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21991. tmpobjid = CreateDynamicObject(19366,1606.107,1571.332,11.536,0.000,0.000,-30.500,-1,-1,-1,300.000,300.000);
  21992. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21993. tmpobjid = CreateDynamicObject(19366,1605.127,1569.215,11.536,0.000,0.000,-16.900,-1,-1,-1,300.000,300.000);
  21994. SetDynamicObjectMaterial(tmpobjid, 0, 4552, "ammu_lan2", "sl_lavicdtwall1", 0x00000000);
  21995. tmpobjid = CreateDynamicObject(1502,1607.785,1572.616,9.776,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21996. SetDynamicObjectMaterial(tmpobjid, 1, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21997. tmpobjid = CreateDynamicObject(1502,1614.296,1572.616,9.776,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  21998. SetDynamicObjectMaterial(tmpobjid, 1, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  21999. tmpobjid = CreateDynamicObject(1502,1605.714,1565.895,9.776,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  22000. SetDynamicObjectMaterial(tmpobjid, 1, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  22001. tmpobjid = CreateDynamicObject(1502,1610.458,1565.929,9.776,0.000,0.000,179.400,-1,-1,-1,300.000,300.000);
  22002. SetDynamicObjectMaterial(tmpobjid, 1, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  22003. tmpobjid = CreateDynamicObject(1502,1623.281,1565.954,9.776,0.000,0.000,179.400,-1,-1,-1,300.000,300.000);
  22004. SetDynamicObjectMaterial(tmpobjid, 1, 14581, "ab_mafiasuitea", "cof_wood2", 0x00000000);
  22005. ///////////////////////////////////////////////////////////////////////////////////////////////////////////xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  22006. ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  22007. tmpobjid = CreateDynamicObject(1495,1617.676,1594.660,9.776,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  22008. SetDynamicObjectMaterial(tmpobjid, 0, 1560, "7_11_door", "cj_sheetmetal2", 0x00000000);
  22009. SetDynamicObjectMaterial(tmpobjid, 2, 1560, "7_11_door", "cj_sheetmetal2", 0x00000000);
  22010. ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  22011. ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  22012. tmpobjid = CreateDynamicObject(1495,1617.656,1579.298,9.776,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  22013. SetDynamicObjectMaterial(tmpobjid, 0, 1560, "7_11_door", "cj_sheetmetal2", 0x00000000);
  22014. SetDynamicObjectMaterial(tmpobjid, 2, 1560, "7_11_door", "cj_sheetmetal2", 0x00000000);
  22015. ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  22016. tmpobjid = CreateDynamicObject(18981,1615.890,1569.804,13.777,0.000,90.000,-0.499,-1,-1,-1,300.000,300.000);
  22017. SetDynamicObjectMaterial(tmpobjid, 0, 16639, "a51_labs", "dam_terazzo", 0x00000000);
  22018. tmpobjid = CreateDynamicObject(18981,1617.100,1594.782,13.777,0.000,90.000,-0.499,-1,-1,-1,300.000,300.000);
  22019. SetDynamicObjectMaterial(tmpobjid, 0, 16639, "a51_labs", "dam_terazzo", 0x00000000);
  22020. tmpobjid = CreateDynamicObject(18981,1617.318,1619.781,13.777,0.000,90.000,-0.499,-1,-1,-1,300.000,300.000);
  22021. SetDynamicObjectMaterial(tmpobjid, 0, 16639, "a51_labs", "dam_terazzo", 0x00000000);
  22022. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  22023. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  22024. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  22025. tmpobjid = CreateDynamicObject(1569,1629.274,1588.549,9.836,0.000,0.000,-90.199,-1,-1,-1,300.000,300.000);
  22026. tmpobjid = CreateDynamicObject(1569,1629.269,1585.548,9.836,0.000,0.000,89.900,-1,-1,-1,300.000,300.000);
  22027. tmpobjid = CreateDynamicObject(19808,1620.127,1585.654,10.776,0.000,0.000,-80.699,-1,-1,-1,300.000,300.000);
  22028. tmpobjid = CreateDynamicObject(19808,1620.117,1589.260,10.776,0.000,0.000,-80.699,-1,-1,-1,300.000,300.000);
  22029. tmpobjid = CreateDynamicObject(2604,1616.074,1584.160,10.406,0.000,0.000,90.400,-1,-1,-1,300.000,300.000);
  22030. tmpobjid = CreateDynamicObject(2186,1616.153,1589.718,9.806,0.000,0.000,90.600,-1,-1,-1,300.000,300.000);
  22031. tmpobjid = CreateDynamicObject(2616,1623.136,1594.826,11.336,0.000,0.000,-179.900,-1,-1,-1,300.000,300.000);
  22032. tmpobjid = CreateDynamicObject(2616,1623.365,1601.377,11.336,0.000,0.000,0.299,-1,-1,-1,300.000,300.000);
  22033. tmpobjid = CreateDynamicObject(14842,1615.765,1616.525,11.686,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  22034. tmpobjid = CreateDynamicObject(1800,1621.080,1604.883,9.616,0.000,0.000,89.199,-1,-1,-1,300.000,300.000);
  22035. tmpobjid = CreateDynamicObject(10444,1610.187,1629.515,9.866,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  22036. tmpobjid = CreateDynamicObject(1800,1621.080,1604.883,10.626,0.000,0.000,89.199,-1,-1,-1,300.000,300.000);
  22037. tmpobjid = CreateDynamicObject(1800,1621.077,1607.655,9.616,0.000,0.000,89.199,-1,-1,-1,300.000,300.000);
  22038. tmpobjid = CreateDynamicObject(1800,1621.076,1610.507,9.616,0.000,0.000,89.199,-1,-1,-1,300.000,300.000);
  22039. tmpobjid = CreateDynamicObject(1800,1621.078,1607.653,10.626,0.000,0.000,89.199,-1,-1,-1,300.000,300.000);
  22040. tmpobjid = CreateDynamicObject(1800,1621.076,1610.505,10.626,0.000,0.000,89.199,-1,-1,-1,300.000,300.000);
  22041. tmpobjid = CreateDynamicObject(1808,1627.009,1575.532,9.836,0.000,0.000,-88.699,-1,-1,-1,300.000,300.000);
  22042. tmpobjid = CreateDynamicObject(2737,1627.242,1573.973,11.466,0.000,0.000,-90.099,-1,-1,-1,300.000,300.000);
  22043. tmpobjid = CreateDynamicObject(2611,1627.243,1570.377,11.256,0.000,0.000,-89.899,-1,-1,-1,300.000,300.000);
  22044. tmpobjid = CreateDynamicObject(19780,1627.265,1574.931,12.034,89.500,0.299,-89.599,-1,-1,-1,300.000,300.000);
  22045. tmpobjid = CreateDynamicObject(2186,1625.729,1567.991,9.836,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  22046. tmpobjid = CreateDynamicObject(19521,1623.054,1574.356,10.674,-4.300,-87.300,22.300,-1,-1,-1,300.000,300.000);
  22047. tmpobjid = CreateDynamicObject(19942,1626.667,1572.056,10.726,0.000,0.000,-33.699,-1,-1,-1,300.000,300.000);
  22048. tmpobjid = CreateDynamicObject(11749,1626.506,1572.018,10.626,0.000,0.000,-28.400,-1,-1,-1,300.000,300.000);
  22049. tmpobjid = CreateDynamicObject(2342,1622.811,1574.601,10.736,0.000,0.000,-7.799,-1,-1,-1,300.000,300.000);
  22050. tmpobjid = CreateDynamicObject(2769,1623.455,1574.631,10.636,0.000,0.000,-35.199,-1,-1,-1,300.000,300.000);
  22051. tmpobjid = CreateDynamicObject(2206,1622.749,1561.922,9.796,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  22052. tmpobjid = CreateDynamicObject(19999,1623.584,1560.328,9.816,0.000,0.000,176.800,-1,-1,-1,300.000,300.000);
  22053. tmpobjid = CreateDynamicObject(19893,1624.466,1561.958,10.716,0.000,0.000,-23.299,-1,-1,-1,300.000,300.000);
  22054. tmpobjid = CreateDynamicObject(2161,1626.761,1559.028,9.826,0.000,0.000,179.799,-1,-1,-1,300.000,300.000);
  22055. tmpobjid = CreateDynamicObject(14532,1626.660,1565.211,10.806,0.000,0.000,132.900,-1,-1,-1,300.000,300.000);
  22056. tmpobjid = CreateDynamicObject(19466,1625.616,1565.983,11.786,0.000,0.000,-90.099,-1,-1,-1,300.000,300.000);
  22057. tmpobjid = CreateDynamicObject(19466,1625.616,1565.833,11.786,0.000,0.000,-90.099,-1,-1,-1,300.000,300.000);
  22058. tmpobjid = CreateDynamicObject(19942,1622.924,1562.068,10.826,0.000,0.000,26.399,-1,-1,-1,300.000,300.000);
  22059. tmpobjid = CreateDynamicObject(19807,1622.862,1561.863,10.776,0.000,0.000,30.500,-1,-1,-1,300.000,300.000);
  22060. tmpobjid = CreateDynamicObject(2267,1623.834,1559.088,11.746,0.000,0.000,179.800,-1,-1,-1,300.000,300.000);
  22061. tmpobjid = CreateDynamicObject(2258,1620.486,1561.208,11.926,0.000,0.000,89.799,-1,-1,-1,300.000,300.000);
  22062. tmpobjid = CreateDynamicObject(2259,1620.947,1563.758,11.106,0.000,0.000,90.500,-1,-1,-1,300.000,300.000);
  22063. tmpobjid = CreateDynamicObject(19167,1623.443,1561.771,10.736,0.000,0.000,-28.100,-1,-1,-1,300.000,300.000);
  22064. tmpobjid = CreateDynamicObject(1727,1624.956,1565.217,9.796,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  22065. tmpobjid = CreateDynamicObject(1727,1623.745,1565.217,9.796,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  22066. tmpobjid = CreateDynamicObject(19466,1611.762,1572.605,11.596,0.000,0.000,-90.599,-1,-1,-1,300.000,300.000);
  22067. tmpobjid = CreateDynamicObject(19466,1611.764,1572.725,11.596,0.000,0.000,-90.599,-1,-1,-1,300.000,300.000);
  22068. tmpobjid = CreateDynamicObject(19466,1608.036,1561.041,11.596,0.000,0.000,179.600,-1,-1,-1,300.000,300.000);
  22069. tmpobjid = CreateDynamicObject(19466,1608.059,1564.281,11.596,0.000,0.000,179.600,-1,-1,-1,300.000,300.000);
  22070. tmpobjid = CreateDynamicObject(2616,1608.253,1561.232,11.476,0.000,0.000,89.900,-1,-1,-1,300.000,300.000);
  22071. tmpobjid = CreateDynamicObject(2616,1608.279,1564.444,11.476,0.000,0.000,89.800,-1,-1,-1,300.000,300.000);
  22072. tmpobjid = CreateDynamicObject(1963,1610.729,1561.718,10.216,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  22073. tmpobjid = CreateDynamicObject(2607,1606.352,1558.243,10.196,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  22074. tmpobjid = CreateDynamicObject(19805,1604.819,1559.942,11.556,0.000,0.000,90.000,-1,-1,-1,300.000,300.000);
  22075. tmpobjid = CreateDynamicObject(19805,1604.819,1563.511,11.556,0.000,0.000,90.000,-1,-1,-1,300.000,300.000);
  22076. tmpobjid = CreateDynamicObject(11729,1606.303,1581.710,9.836,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  22077. tmpobjid = CreateDynamicObject(11729,1605.737,1580.427,9.836,0.000,0.000,90.199,-1,-1,-1,300.000,300.000);
  22078. tmpobjid = CreateDynamicObject(11729,1606.974,1581.710,9.836,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  22079. tmpobjid = CreateDynamicObject(11729,1607.654,1581.710,9.836,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  22080. tmpobjid = CreateDynamicObject(11729,1608.335,1581.710,9.836,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  22081. tmpobjid = CreateDynamicObject(11729,1608.995,1581.710,9.836,0.000,0.000,0.000,-1,-1,-1,300.000,300.000);
  22082. tmpobjid = CreateDynamicObject(11729,1605.735,1581.107,9.836,0.000,0.000,90.199,-1,-1,-1,300.000,300.000);
  22083. tmpobjid = CreateDynamicObject(11729,1605.739,1579.756,9.836,0.000,0.000,90.199,-1,-1,-1,300.000,300.000);
  22084. tmpobjid = CreateDynamicObject(11729,1605.741,1579.095,9.836,0.000,0.000,90.199,-1,-1,-1,300.000,300.000);
  22085. tmpobjid = CreateDynamicObject(11729,1605.744,1578.425,9.836,0.000,0.000,90.199,-1,-1,-1,300.000,300.000);
  22086. tmpobjid = CreateDynamicObject(11729,1605.746,1577.744,9.836,0.000,0.000,90.199,-1,-1,-1,300.000,300.000);
  22087. tmpobjid = CreateDynamicObject(11729,1605.748,1577.064,9.836,0.000,0.000,90.199,-1,-1,-1,300.000,300.000);
  22088. tmpobjid = CreateDynamicObject(11729,1605.751,1576.393,9.836,0.000,0.000,90.199,-1,-1,-1,300.000,300.000);
  22089. tmpobjid = CreateDynamicObject(11729,1605.753,1575.713,9.836,0.000,0.000,90.199,-1,-1,-1,300.000,300.000);
  22090. tmpobjid = CreateDynamicObject(18757,1607.008,1569.159,11.736,0.000,0.000,-30.600,-1,-1,-1,300.000,300.000);
  22091. tmpobjid = CreateDynamicObject(18756,1607.218,1569.644,11.736,0.000,0.000,-16.799,-1,-1,-1,300.000,300.000);
  22092. // quvin's shitty LSPD map
  22093. CreateDynamicObject(19375,-55.4991000,-859.6187700,1034.8949000,0.0000000,90.0000000,0.0000000); //
  22094. CreateDynamicObject(19375,-55.4991000,-869.2407800,1034.8949000,0.0000000,90.0000000,0.0000000); //
  22095. CreateDynamicObject(19375,-65.9854000,-869.2407800,1034.8949000,0.0000000,90.0000000,0.0000000); //
  22096. CreateDynamicObject(19375,-65.9854000,-859.6187700,1034.8949000,0.0000000,90.0000000,0.0000000); //
  22097. CreateDynamicObject(19375,-65.9854000,-850.0120800,1034.8949000,0.0000000,90.0000000,0.0000000); //
  22098. CreateDynamicObject(19375,-55.4991000,-850.0120800,1034.8949000,0.0000000,90.0000000,0.0000000); //
  22099. CreateDynamicObject(19358,-50.4067000,-862.6350700,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22100. CreateDynamicObject(19388,-50.4067000,-859.4309100,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22101. CreateDynamicObject(19358,-50.4067000,-856.2363300,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22102. CreateDynamicObject(19358,-52.0865000,-854.7153900,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22103. CreateDynamicObject(19358,-52.0865000,-864.1629000,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22104. CreateDynamicObject(19388,-53.7159000,-859.4309100,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22105. CreateDynamicObject(19404,-53.7159000,-862.6350700,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22106. CreateDynamicObject(19404,-53.7159000,-856.2363300,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22107. CreateDynamicObject(19358,-53.7159000,-853.0357100,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22108. CreateDynamicObject(19358,-53.7159000,-865.8270900,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22109. CreateDynamicObject(19404,-55.3771400,-867.3451500,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22110. CreateDynamicObject(19358,-55.3795000,-851.5246000,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22111. CreateDynamicObject(19358,-58.5742000,-851.5246000,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22112. CreateDynamicObject(19358,-58.5748000,-867.3452100,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22113. CreateDynamicObject(19358,-61.7580000,-851.5246000,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22114. CreateDynamicObject(19358,-60.1388700,-853.1887800,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22115. CreateDynamicObject(19404,-60.1389000,-856.3840900,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22116. CreateDynamicObject(19404,-60.1389000,-859.5734300,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22117. CreateDynamicObject(19404,-60.1389000,-862.7564100,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22118. CreateDynamicObject(19358,-61.7793000,-867.3452100,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22119. CreateDynamicObject(19358,-61.7783400,-864.2678800,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22120. CreateDynamicObject(19388,-61.6251000,-865.8040200,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22121. CreateDynamicObject(19375,-55.4991000,-840.3895300,1034.8949000,0.0000000,90.0000000,0.0000000); //
  22122. CreateDynamicObject(19375,-65.9854000,-840.3895300,1034.8949000,0.0000000,90.0000000,0.0000000); //
  22123. CreateDynamicObject(19358,-55.5029000,-845.1937900,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22124. CreateDynamicObject(19358,-61.8013000,-845.1937900,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22125. CreateDynamicObject(19358,-53.7154800,-849.8743900,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22126. CreateDynamicObject(19358,-53.7155000,-846.7511000,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22127. CreateDynamicObject(19388,-63.4032000,-849.8555900,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22128. CreateDynamicObject(19358,-63.4032000,-846.7036100,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22129. CreateDynamicObject(19388,-64.9464000,-851.5246000,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22130. CreateDynamicObject(19388,-64.9464000,-845.1937900,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22131. CreateDynamicObject(19358,-58.6595000,-845.1937900,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22132. CreateDynamicObject(19358,-66.5758000,-846.7036100,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22133. CreateDynamicObject(19358,-66.5758000,-849.9157100,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22134. CreateDynamicObject(19358,-66.5758000,-853.1630900,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22135. CreateDynamicObject(19388,-64.8959000,-854.6749300,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22136. CreateDynamicObject(19358,-61.7742000,-854.6749300,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22137. CreateDynamicObject(19358,-66.5758000,-856.3463700,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22138. CreateDynamicObject(19358,-66.5758000,-862.7531100,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22139. CreateDynamicObject(19358,-64.9721000,-864.2678800,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22140. CreateDynamicObject(19358,-68.1711000,-851.5246000,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22141. CreateDynamicObject(19358,-71.3646000,-851.5246000,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22142. CreateDynamicObject(19358,-72.8805000,-853.1472200,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22143. CreateDynamicObject(19375,-76.4492000,-850.0120800,1034.8949000,0.0000000,90.0000000,0.0000000); //
  22144. CreateDynamicObject(19358,-64.9721000,-867.3452100,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22145. CreateDynamicObject(19388,-66.5758000,-868.8665200,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22146. CreateDynamicObject(19358,-66.5758000,-872.0509000,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22147. CreateDynamicObject(19358,-65.0581000,-873.7241200,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22148. CreateDynamicObject(19358,-61.8742000,-873.7241200,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22149. CreateDynamicObject(19358,-58.6941000,-873.7241200,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22150. CreateDynamicObject(19358,-55.4891000,-873.7241200,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22151. CreateDynamicObject(19358,-52.3060000,-873.7241200,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22152. CreateDynamicObject(19358,-53.7159000,-868.9809000,1036.7172900,0.0000000,0.0000000,0.0600000); //
  22153. CreateDynamicObject(19358,-53.7159000,-872.1502100,1036.7172900,0.0000000,0.0000000,0.0600000); //
  22154. CreateDynamicObject(19358,-53.7155000,-843.6253100,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22155. CreateDynamicObject(19358,-53.7155000,-840.4467200,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22156. CreateDynamicObject(19358,-55.3590000,-838.9138200,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22157. CreateDynamicObject(19358,-58.5471000,-838.9138200,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22158. CreateDynamicObject(19388,-66.5758000,-843.6428200,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22159. CreateDynamicObject(19358,-66.5758000,-840.4404300,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22160. CreateDynamicObject(19358,-61.7472000,-838.9138200,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22161. CreateDynamicObject(19358,-64.9317000,-838.9138200,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22162. CreateDynamicObject(19388,-68.2264000,-845.1937900,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22163. CreateDynamicObject(19388,-68.2264000,-838.9138200,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22164. CreateDynamicObject(19358,-69.8834000,-840.5034200,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22165. CreateDynamicObject(19358,-69.8834000,-843.6851200,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22166. CreateDynamicObject(19375,-76.4492000,-869.2407800,1034.8949000,0.0000000,90.0000000,0.0000000); //
  22167. CreateDynamicObject(19375,-76.4492000,-859.6187700,1034.8949000,0.0000000,90.0000000,0.0000000); //
  22168. CreateDynamicObject(19388,-70.0828000,-867.3452100,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22169. CreateDynamicObject(19388,-68.5665000,-870.6110800,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22170. CreateDynamicObject(19431,-68.5665000,-868.2218000,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22171. CreateDynamicObject(19358,-70.1980100,-872.1177400,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22172. CreateDynamicObject(19375,-65.9854000,-878.8668200,1034.8949000,0.0000000,90.0000000,0.0000000); //
  22173. CreateDynamicObject(19375,-76.4492000,-878.8668200,1034.8949000,0.0000000,90.0000000,0.0000000); //
  22174. CreateDynamicObject(19375,-55.4991000,-878.8668200,1034.8949000,0.0000000,90.0000000,0.0000000); //
  22175. CreateDynamicObject(19388,-68.2204000,-864.2678800,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22176. CreateDynamicObject(19358,-72.8805000,-856.3516800,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22177. CreateDynamicObject(19388,-72.8805000,-859.5463900,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22178. CreateDynamicObject(19358,-72.8805000,-862.7338900,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22179. CreateDynamicObject(19358,-71.3661000,-864.2678800,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22180. CreateDynamicObject(19388,-76.3091700,-853.1917100,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22181. CreateDynamicObject(19358,-77.8276000,-851.5246000,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22182. CreateDynamicObject(19388,-80.9757000,-851.5246000,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22183. CreateDynamicObject(19375,-86.9047000,-850.0120800,1034.8949000,0.0000000,90.0000000,0.0000000); //
  22184. CreateDynamicObject(19375,-86.9047000,-859.6187700,1034.8949000,0.0000000,90.0000000,0.0000000); //
  22185. CreateDynamicObject(19358,-82.4969000,-853.1989100,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22186. CreateDynamicObject(19358,-82.4969000,-856.3911100,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22187. CreateDynamicObject(19358,-82.4969000,-859.5875200,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22188. CreateDynamicObject(19358,-76.3092000,-856.3828700,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22189. CreateDynamicObject(19358,-76.3092000,-859.5571900,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22190. CreateDynamicObject(19358,-78.4213600,-849.8753700,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22191. CreateDynamicObject(19358,-82.4969000,-849.8900800,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22192. CreateDynamicObject(19358,-81.1198000,-848.2882100,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22193. CreateDynamicObject(19358,-76.3092000,-862.7381000,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22194. CreateDynamicObject(19358,-82.4969000,-862.7334000,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22195. CreateDynamicObject(19358,-77.9849000,-864.2548800,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22196. CreateDynamicObject(19358,-81.1514000,-864.2548800,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22197. CreateDynamicObject(19388,-77.8952900,-860.7139900,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22198. CreateDynamicObject(19358,-81.0266000,-860.7139900,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22199. CreateDynamicObject(19358,-73.2722000,-867.3452100,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22200. CreateDynamicObject(19358,-74.7944900,-868.9923700,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22201. CreateDynamicObject(19388,-76.4556000,-867.3452100,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22202. CreateDynamicObject(19358,-74.7945000,-872.1652800,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22203. CreateDynamicObject(19358,-76.4403500,-873.6803600,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22204. CreateDynamicObject(19358,-79.6019000,-873.6804200,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22205. CreateDynamicObject(19388,-82.7388000,-865.7885700,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22206. CreateDynamicObject(19358,-82.7388000,-868.9622800,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22207. CreateDynamicObject(19375,-86.9047000,-869.2407800,1034.8949000,0.0000000,90.0000000,0.0000000); //
  22208. CreateDynamicObject(19358,-81.9922900,-871.9318200,1036.7172900,0.0000000,0.0000000,28.1999200); //
  22209. CreateDynamicObject(19358,-80.4896900,-874.7400500,1036.7172900,0.0000000,0.0000000,28.1999200); //
  22210. CreateDynamicObject(19358,-73.1990000,-872.1176800,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22211. CreateDynamicObject(19358,-79.6219000,-867.3452100,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22212. CreateDynamicObject(19431,-68.5665000,-873.0000000,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22213. CreateDynamicObject(19388,-67.5522000,-873.8595000,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22214. CreateDynamicObject(19358,-70.6959000,-873.8595000,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22215. CreateDynamicObject(19358,-73.8556000,-873.8595000,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22216. CreateDynamicObject(19358,-65.8972000,-875.4549000,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22217. CreateDynamicObject(19358,-75.5093000,-875.4549000,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22218. CreateDynamicObject(19358,-75.5052000,-878.6154800,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22219. CreateDynamicObject(19358,-65.8972000,-878.6143800,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22220. CreateDynamicObject(19358,-67.5091000,-880.2332800,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22221. CreateDynamicObject(19358,-70.6868000,-880.2332800,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22222. CreateDynamicObject(19358,-73.8646200,-880.2333400,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22223. CreateDynamicObject(19358,-52.3525000,-845.1937900,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22224. CreateDynamicObject(19358,-71.5768000,-848.2882100,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22225. CreateDynamicObject(19358,-69.8834000,-846.7659300,1036.7172900,0.0000000,0.0000000,0.0000000); //
  22226. CreateDynamicObject(19358,-74.7497000,-848.2882100,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22227. CreateDynamicObject(19358,-77.9523000,-848.2882100,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22228. CreateDynamicObject(19358,-82.8037000,-867.3452100,1036.7172900,0.0000000,0.0000000,90.0000000); //
  22229. CreateDynamicObject(1566,-50.3711700,-860.2108800,1036.1434300,0.0000000,0.0000000,90.0000000); //
  22230. CreateDynamicObject(19375,-55.4991000,-840.3895300,1038.4967000,0.0000000,90.0000000,0.0000000); //
  22231. CreateDynamicObject(19375,-55.4991000,-850.0120800,1038.4967000,0.0000000,90.0000000,0.0000000); //
  22232. CreateDynamicObject(19375,-55.4991000,-859.6187700,1038.4967000,0.0000000,90.0000000,0.0000000); //
  22233. CreateDynamicObject(19375,-55.4991000,-869.2407800,1038.4967000,0.0000000,90.0000000,0.0000000); //
  22234. CreateDynamicObject(19375,-65.9854000,-869.2407800,1038.4967000,0.0000000,90.0000000,0.0000000); //
  22235. CreateDynamicObject(19375,-65.9854000,-878.8668200,1038.4967000,0.0000000,90.0000000,0.0000000); //
  22236. CreateDynamicObject(19375,-76.4492000,-878.8668200,1038.4967000,0.0000000,90.0000000,0.0000000); //
  22237. CreateDynamicObject(19375,-76.4492000,-869.2407800,1038.4967000,0.0000000,90.0000000,0.0000000); //
  22238. CreateDynamicObject(19375,-76.4492000,-859.6187700,1038.4967000,0.0000000,90.0000000,0.0000000); //
  22239. CreateDynamicObject(19375,-65.9854000,-859.6187700,1038.4967000,0.0000000,90.0000000,0.0000000); //
  22240. CreateDynamicObject(19375,-86.9047000,-859.6187700,1038.4967000,0.0000000,90.0000000,0.0000000); //
  22241. CreateDynamicObject(19375,-86.9047000,-869.2407800,1038.4967000,0.0000000,90.0000000,0.0000000); //
  22242. CreateDynamicObject(19375,-65.9854000,-850.0120800,1038.4967000,0.0000000,90.0000000,0.0000000); //
  22243. CreateDynamicObject(19375,-76.4492000,-850.0120800,1038.4967000,0.0000000,90.0000000,0.0000000); //
  22244. CreateDynamicObject(19375,-65.9854000,-840.3895300,1038.4967000,0.0000000,90.0000000,0.0000000); //
  22245. CreateDynamicObject(19375,-86.9047000,-850.0120800,1038.4967000,0.0000000,90.0000000,0.0000000); //
  22246. // Apartment complexes
  22247. CreateDynamicObject(19456,1286.8387450,-1970.9818110,1858.3143310,0.0000000,0.0000000,0.0000000); //
  22248. CreateDynamicObject(19456,1286.8387450,-1961.3817130,1858.3143310,0.0000000,0.0000000,0.0000000); //
  22249. CreateDynamicObject(19378,1291.5527340,-1961.8082270,1856.5080560,0.0000000,90.0000000,90.0000000); //
  22250. CreateDynamicObject(19378,1291.5527340,-1972.3103020,1856.5080560,0.0000000,90.0000000,90.0000000); //
  22251. CreateDynamicObject(19456,1296.2694090,-1955.4439690,1858.3243400,0.0000000,0.0000000,0.0000000); //
  22252. CreateDynamicObject(19456,1296.2694090,-1965.0627440,1858.3243400,0.0000000,0.0000000,0.0000000); //
  22253. CreateDynamicObject(19456,1291.4799800,-1956.6035150,1858.3143310,0.0000000,0.0000000,90.0000000); //
  22254. CreateDynamicObject(19456,1281.8898920,-1956.6035150,1858.3143310,0.0000000,0.0000000,90.0000000); //
  22255. CreateDynamicObject(19377,1291.3582760,-1955.4737540,1859.7727050,0.0000000,90.0000000,180.1341700); //
  22256. CreateDynamicObject(19377,1291.3815910,-1965.0534660,1859.7727050,0.0000000,90.0000000,180.1341700); //
  22257. CreateDynamicObject(1569,1290.0749510,-1956.6640620,1856.5233150,0.0000000,0.0000000,0.0000000); //
  22258. CreateDynamicObject(1569,1293.0756830,-1956.6530760,1856.5233150,0.0000000,0.0000000,180.0000000); //
  22259. CreateDynamicObject(14596,1293.5512690,-1970.9888910,1867.2731930,0.0000000,0.0000000,0.0000000); //
  22260. CreateDynamicObject(19456,1285.1213370,-1969.8734130,1858.3143310,0.0000000,0.0000000,90.0000000); //
  22261. CreateDynamicObject(19456,1297.7989500,-1969.8446040,1858.3143310,0.0000000,0.0000000,90.0000000); //
  22262. CreateDynamicObject(1300,1287.7456050,-1957.3218990,1856.9833980,0.0000000,0.0000000,-1.8891780); //
  22263. CreateDynamicObject(2000,1286.9505610,-1959.9287100,1857.5635980,0.0000000,0.0000000,90.0000000); //
  22264. CreateDynamicObject(2000,1286.9505610,-1960.4095450,1857.5635980,0.0000000,0.0000000,90.0000000); //
  22265. CreateDynamicObject(2000,1286.9505610,-1960.8896480,1857.5635980,0.0000000,0.0000000,90.0000000); //
  22266. CreateDynamicObject(2000,1286.9505610,-1961.3704830,1857.5635980,0.0000000,0.0000000,90.0000000); //
  22267. CreateDynamicObject(2000,1286.9505610,-1961.8511960,1857.5635980,0.0000000,0.0000000,90.0000000); //
  22268. CreateDynamicObject(2000,1286.9505610,-1962.3305660,1857.5635980,0.0000000,0.0000000,90.0000000); //
  22269. CreateDynamicObject(2000,1286.9505610,-1962.8105460,1857.5635980,0.0000000,0.0000000,90.0000000); //
  22270. CreateDynamicObject(2000,1286.9505610,-1963.2911370,1857.5635980,0.0000000,0.0000000,90.0000000); //
  22271. CreateDynamicObject(2000,1286.9505610,-1963.7708740,1857.5635980,0.0000000,0.0000000,90.0000000); //
  22272. CreateDynamicObject(2000,1286.9505610,-1964.2510980,1857.5635980,0.0000000,0.0000000,90.0000000); //
  22273. CreateDynamicObject(1756,1295.7011710,-1958.6499020,1856.5433340,0.0000000,0.0000000,-90.0000000); //
  22274. CreateDynamicObject(1756,1295.7011710,-1962.0902090,1856.5433340,0.0000000,0.0000000,-90.0000000); //
  22275. CreateDynamicObject(2289,1296.1312250,-1961.2714840,1858.6140130,0.0000000,0.0000000,270.0000000); //
  22276. CreateDynamicObject(1738,1296.0211180,-1965.7048330,1857.1837150,0.0000000,0.0000000,90.0000000); //
  22277. CreateDynamicObject(1767,1287.3675530,-1968.8149410,1856.6032710,0.0000000,0.0000000,90.0000000); //
  22278. CreateDynamicObject(1767,1287.3675530,-1967.0848380,1856.6032710,0.0000000,0.0000000,90.0000000); //
  22279. CreateDynamicObject(1209,1295.8861080,-1967.5371090,1856.5839840,0.0000000,0.0000000,270.0000000); //
  22280. CreateDynamicObject(1775,1296.0007320,-1968.8223870,1857.6740720,0.0000000,0.0000000,271.9678340); //
  22281. CreateDynamicObject(19456,1275.0395500,-1964.4108880,1864.0137930,0.0000000,0.0000000,90.0000000); //
  22282. CreateDynamicObject(19378,1282.3737790,-1968.8480220,1862.3002920,0.0000000,90.0000000,90.0000000); //
  22283. CreateDynamicObject(19456,1284.6390380,-1970.1315910,1864.0137930,0.0000000,0.0000000,90.0000000); //
  22284. CreateDynamicObject(19456,1287.1677240,-1973.1013180,1864.0137930,0.0000000,0.0000000,179.9999840); //
  22285. CreateDynamicObject(19456,1287.1677240,-1961.4114990,1864.0137930,0.0000000,0.0000000,179.9999840); //
  22286. CreateDynamicObject(19378,1272.7440180,-1968.8480220,1862.3002920,0.0000000,90.0000000,90.0000000); //
  22287. CreateDynamicObject(19456,1284.6290280,-1964.4108880,1864.0137930,0.0000000,0.0000000,90.0000000); //
  22288. CreateDynamicObject(19377,1283.0627440,-1966.0638420,1865.7432860,0.0000000,90.0000000,180.1341700); //
  22289. CreateDynamicObject(19377,1272.5823970,-1966.0887450,1865.7432860,0.0000000,90.0000000,180.1341700); //
  22290. CreateDynamicObject(19456,1275.0781250,-1970.1315910,1864.0137930,0.0000000,0.0000000,90.0000000); //
  22291. CreateDynamicObject(19456,1265.4680170,-1970.1315910,1864.0137930,0.0000000,0.0000000,90.0000000); //
  22292. CreateDynamicObject(19456,1265.4298090,-1964.4108880,1864.0137930,0.0000000,0.0000000,90.0000000); //
  22293. CreateDynamicObject(19378,1263.1448970,-1968.8480220,1862.3002920,0.0000000,90.0000000,90.0000000); //
  22294. CreateDynamicObject(19377,1262.1016840,-1966.1123040,1865.7432860,0.0000000,90.0000000,180.1341700); //
  22295. CreateDynamicObject(1555,1283.5422360,-1970.1070550,1862.3760980,0.0000000,0.0000000,0.0000000); //
  22296. CreateDynamicObject(1555,1278.7216790,-1970.1070550,1862.3760980,0.0000000,0.0000000,0.0000000); //
  22297. CreateDynamicObject(1555,1274.6210930,-1970.1070550,1862.3760980,0.0000000,0.0000000,0.0000000); //
  22298. CreateDynamicObject(1555,1270.0102530,-1970.1070550,1862.3760980,0.0000000,0.0000000,0.0000000); //
  22299. CreateDynamicObject(1555,1265.3599850,-1970.1070550,1862.3760980,0.0000000,0.0000000,0.0000000); //
  22300. CreateDynamicObject(1555,1261.6092520,-1970.1070550,1862.3760980,0.0000000,0.0000000,0.0000000); //
  22301. CreateDynamicObject(1555,1285.1723630,-1964.4666740,1862.3760980,0.0000000,0.0000000,180.0000000); //
  22302. CreateDynamicObject(1555,1280.1916500,-1964.4666740,1862.3760980,0.0000000,0.0000000,180.0000000); //
  22303. CreateDynamicObject(1555,1276.0716550,-1964.4666740,1862.3760980,0.0000000,0.0000000,180.0000000); //
  22304. CreateDynamicObject(1555,1271.6309810,-1964.4666740,1862.3760980,0.0000000,0.0000000,180.0000000); //
  22305. CreateDynamicObject(1555,1266.9803460,-1964.4666740,1862.3760980,0.0000000,0.0000000,180.0000000); //
  22306. CreateDynamicObject(1555,1263.1999510,-1964.4666740,1862.3760980,0.0000000,0.0000000,180.0000000); //
  22307. CreateDynamicObject(19456,1255.8470450,-1970.1315910,1864.0137930,0.0000000,0.0000000,90.0000000); //
  22308. CreateDynamicObject(19456,1255.8470450,-1964.4204100,1864.0137930,0.0000000,0.0000000,90.0000000); //
  22309. CreateDynamicObject(19456,1259.6102290,-1968.6601560,1864.0137930,0.0000000,0.0000000,179.9999840); //
  22310. CreateDynamicObject(2949,1259.7264400,-1967.9449460,1862.3663330,0.0000000,0.0000000,-180.0000000); //
  22311. CreateDynamicObject(19456,1287.1677240,-1973.1013180,1869.8757320,0.0000000,0.0000000,179.9999840); //
  22312. CreateDynamicObject(19378,1282.3737790,-1968.8480220,1868.1317130,0.0000000,90.0000000,90.0000000); //
  22313. CreateDynamicObject(19456,1287.1677240,-1961.3811030,1869.8757320,0.0000000,0.0000000,179.9999840); //
  22314. CreateDynamicObject(19377,1283.0142820,-1966.0660400,1871.4656980,0.0000000,90.0000000,180.1341700); //
  22315. CreateDynamicObject(19456,1284.1285400,-1964.4108880,1869.9355460,0.0000000,0.0000000,90.0000000); //
  22316. CreateDynamicObject(19456,1274.5085440,-1964.4108880,1869.9355460,0.0000000,0.0000000,90.0000000); //
  22317. CreateDynamicObject(19456,1259.6102290,-1968.6601560,1869.9051510,0.0000000,0.0000000,179.9999840); //
  22318. CreateDynamicObject(19378,1272.7752680,-1968.8480220,1868.1417230,0.0000000,90.0000000,90.0000000); //
  22319. CreateDynamicObject(19378,1263.2152090,-1968.8480220,1868.1417230,0.0000000,90.0000000,90.0000000); //
  22320. CreateDynamicObject(19456,1264.8972160,-1964.4108880,1869.9355460,0.0000000,0.0000000,90.0000000); //
  22321. CreateDynamicObject(19456,1255.2874750,-1964.4108880,1869.9355460,0.0000000,0.0000000,90.0000000); //
  22322. CreateDynamicObject(19456,1284.6390380,-1970.1315910,1869.9257810,0.0000000,0.0000000,90.0000000); //
  22323. CreateDynamicObject(19456,1275.0290520,-1970.1315910,1869.9257810,0.0000000,0.0000000,90.0000000); //
  22324. CreateDynamicObject(19456,1265.4396970,-1970.1315910,1869.9257810,0.0000000,0.0000000,90.0000000); //
  22325. CreateDynamicObject(19456,1255.8597410,-1970.1315910,1869.9257810,0.0000000,0.0000000,90.0000000); //
  22326. CreateDynamicObject(19377,1272.5142820,-1966.0913080,1871.4656980,0.0000000,90.0000000,180.1341700); //
  22327. CreateDynamicObject(19377,1262.0538330,-1966.1158440,1871.4656980,0.0000000,90.0000000,180.1341700); //
  22328. CreateDynamicObject(1555,1285.1723630,-1964.4666740,1868.1966550,0.0000000,0.0000000,180.0000000); //
  22329. CreateDynamicObject(1555,1280.1916500,-1964.4666740,1868.2158200,0.0000000,0.0000000,180.0000000); //
  22330. CreateDynamicObject(1555,1276.0716550,-1964.4666740,1868.2263180,0.0000000,0.0000000,180.0000000); //
  22331. CreateDynamicObject(1555,1271.6309810,-1964.4666740,1868.2257080,0.0000000,0.0000000,180.0000000); //
  22332. CreateDynamicObject(1555,1266.9803460,-1964.4666740,1868.2265620,0.0000000,0.0000000,180.0000000); //
  22333. CreateDynamicObject(1555,1263.1999510,-1964.4666740,1868.2261960,0.0000000,0.0000000,180.0000000); //
  22334. CreateDynamicObject(1555,1261.6092520,-1970.1070550,1868.2260740,0.0000000,0.0000000,0.0000000); //
  22335. CreateDynamicObject(1555,1265.3599850,-1970.1070550,1868.2161860,0.0000000,0.0000000,0.0000000); //
  22336. CreateDynamicObject(1555,1270.0102530,-1970.1070550,1868.2264400,0.0000000,0.0000000,0.0000000); //
  22337. CreateDynamicObject(1555,1274.6210930,-1970.1070550,1868.2166740,0.0000000,0.0000000,0.0000000); //
  22338. CreateDynamicObject(1555,1278.7216790,-1970.1070550,1868.2058100,0.0000000,0.0000000,0.0000000); //
  22339. CreateDynamicObject(1555,1283.5422360,-1970.1070550,1868.1956780,0.0000000,0.0000000,0.0000000); //
  22340. CreateDynamicObject(2949,1259.7264400,-1967.9449460,1868.2369380,0.0000000,0.0000000,-180.0000000); //
  22341. CreateDynamicObject(18756,1290.4686270,-1967.3747550,1875.9339590,0.0000000,0.0000000,0.0000000); //
  22342. CreateDynamicObject(18757,1290.4708250,-1967.4128410,1875.9340820,0.0000000,0.0000000,0.0000000); //
  22343. for (new i = 0; i < MAX_OBJECTS; i ++) {
  22344. if (IsValidObject(i)) objects++;
  22345. }
  22346. printf("(INFO) %i objects loaded.", objects);
  22347. }
  22348. IsVehicleInRangeOfPoint(vehicleid, Float:range, Float:x, Float:y, Float:z)
  22349. {
  22350. new
  22351. Float:fX,
  22352. Float:fY,
  22353. Float:fZ;
  22354. GetVehiclePos(vehicleid, fX, fY, fZ);
  22355. return IsPointInRangeOfPoint(range, fX, fY, fZ, x, y, z);
  22356. }
  22357. IsPointInRangeOfPoint(Float:range, Float:fX, Float:fY, Float:fZ, Float:x, Float:y, Float:z)
  22358. {
  22359. fX -= x;
  22360. fY -= y;
  22361. fZ -= z;
  22362. return ((fX * fX) + (fY * fY) + (fZ * fZ)) < (range * range);
  22363. }
  22364. SetPlayerRecord(amount)
  22365. {
  22366. new
  22367. date[3];
  22368. getdate(date[2], date[1], date[0]);
  22369. Server[PlayerRecord] = amount;
  22370. format(Server[RecordDate], 24, "%02d/%02d/%i", date[0], date[1], date[2]);
  22371. SaveInformation();
  22372. }
  22373. stock CreateLog(file[], string[])
  22374. {
  22375. new time[6];
  22376. gettime(time[0], time[1], time[2]);
  22377. getdate(time[3], time[4], time[5]);
  22378. new timestr[32], data[512];
  22379. format(timestr, 32, "[%02d.%02d|%02d:%02d] ", time[5], time[4], time[0], time[1]);
  22380. format(data, sizeof(data), "%s%s\r\n", timestr, string);
  22381. new File:hFile, thefile[32];
  22382. format(thefile, sizeof(thefile), "/Server/log_%s.log", file);
  22383. hFile = fopen(thefile, io_append);
  22384. fwrite(hFile, data);
  22385. fclose(hFile);
  22386. return 1;
  22387. }
  22388. SaveInformation()
  22389. {
  22390. new File:file = fopen("Server/info.ini", io_write);
  22391. if (file)
  22392. {
  22393. INI_WriteInt(file, "Accounts", Server[Accounts]);
  22394. INI_WriteInt(file, "PlayerRecord", Server[PlayerRecord]);
  22395. INI_WriteValue(file, "RecordDate", Server[RecordDate]);
  22396. INI_WriteInt(file, "TaxRate", Server[TaxRate]);
  22397. INI_WriteInt(file, "TaxVault", Server[TaxVault]);
  22398. INI_WriteValue(file, "Motd", Server[Motd]);
  22399. fclose(file);
  22400. }
  22401. }
  22402. LoadInformation()
  22403. {
  22404. new File:file = fopen("Server/info.ini", io_read);
  22405. if (file)
  22406. {
  22407. INI_GetValue(file, "RecordDate", Server[RecordDate], 24);
  22408. Server[Accounts] = INI_GetInteger(file, "Accounts");
  22409. Server[PlayerRecord] = INI_GetInteger(file, "PlayerRecord");
  22410. Server[TaxRate] = INI_GetInteger(file, "TaxRate");
  22411. Server[TaxVault] = INI_GetInteger(file, "TaxVault");
  22412. INI_GetValue(file, "Motd", Server[Motd], 128);
  22413. if (!Server[TaxRate])
  22414. {
  22415. Server[TaxRate] = 5;
  22416. }
  22417. fclose(file);
  22418. }
  22419. }
  22420. /*strcpy(dest[], const src[], maxlength = sizeof(dest))
  22421. {
  22422. dest[0] = 0;
  22423. return strcat(dest, src, maxlength);
  22424. }*/
  22425. cache_fetch_string(row, field_name[])
  22426. {
  22427. new
  22428. retString[128];
  22429. cache_get_field_content(row, field_name, retString, gConnection, sizeof(retString));
  22430. return retString;
  22431. }
  22432. GetSkinGender(skin)
  22433. {
  22434. switch (skin)
  22435. {
  22436. case 0..8, 14..30, 32..37, 42..52, 57..62, 66..68, 70..74, 78..84, 86, 94..128, 132..137, 142..144, 146, 147, 149, 153..156, 158..168, 170, 171, 173..177, 179..189, 200, 202..204, 206, 208..210, 212, 213, 217, 220..223, 227..230, 234..236, 239..242, 247..250, 252..255, 258..262, 264..297, 299:
  22437. return 1;
  22438. default:
  22439. return 2;
  22440. }
  22441. return 0;
  22442. }
  22443. ClearProducts(company)
  22444. {
  22445. switch (Companies[company][cType])
  22446. {
  22447. case COMPANY_RESTAURANT:
  22448. {
  22449. for (new i = 0; i < MAX_RESTAURANT_ITEMS; i ++)
  22450. {
  22451. if (RestaurantItems[company][i][rtExists])
  22452. {
  22453. RestaurantItems[company][i][rtExists] = 0;
  22454. }
  22455. }
  22456. format(gExecute, sizeof(gExecute), "DELETE FROM rp_fooditems WHERE cID = %i", Companies[company][cID]);
  22457. mysql_tquery(gConnection, gExecute);
  22458. }
  22459. case COMPANY_RENTALS:
  22460. {
  22461. for (new i = 0; i < MAX_CARS; i ++)
  22462. {
  22463. if (Vehicles[i][vExists] && Vehicles[i][vRentable] && Vehicles[i][vCompany] == Companies[company][cID])
  22464. {
  22465. DestroyVehicleEx(Vehicles[i][vVehicle]);
  22466. DestroyDynamic3DTextLabel(Vehicles[i][vText]);
  22467. Vehicles[i][vExists] = 0;
  22468. Vehicles[i][vCompany] = 0;
  22469. Vehicles[i][vRentable] = 0;
  22470. Vehicles[i][vRenter] = INVALID_PLAYER_ID;
  22471. Vehicles[i][vVehicle] = INVALID_VEHICLE_ID;
  22472. }
  22473. }
  22474. format(gExecute, sizeof(gExecute), "DELETE FROM rp_vehicles WHERE vCompany = %i", Companies[company][cID]);
  22475. mysql_tquery(gConnection, gExecute);
  22476. }
  22477. case COMPANY_DEALERSHIP:
  22478. {
  22479. for (new i = 0; i < MAX_DEALERSHIP_CARS; i ++)
  22480. {
  22481. if (DealershipCars[i][dcExists] && DealershipCars[i][dcCompany] == Companies[company][cID])
  22482. {
  22483. DealershipCars[i][dcExists] = 0;
  22484. }
  22485. }
  22486. format(gExecute, sizeof(gExecute), "DELETE FROM rp_dealercars WHERE Company = %i", Companies[company][cID]);
  22487. mysql_tquery(gConnection, gExecute);
  22488. }
  22489. }
  22490. }
  22491. ClearListedItems(playerid)
  22492. {
  22493. for (new i = 0; i < sizeof(gListedItems[]); i ++)
  22494. {
  22495. gListedItems[playerid][i] = INVALID_ID;
  22496. }
  22497. }
  22498. ClearReports(playerid)
  22499. {
  22500. for (new i = 0; i < MAX_REPORTS; i ++)
  22501. {
  22502. if (Reports[i][rExists] && Reports[i][rReporter] == playerid)
  22503. {
  22504. Reports[i][rExists] = 0;
  22505. }
  22506. }
  22507. }
  22508. ResetNameChange(playerid)
  22509. {
  22510. strcpy(Players[playerid][pNameChange], "Not Specified", MAX_PLAYER_NAME);
  22511. }
  22512. ClearData(playerid)
  22513. {
  22514. for(new i = 0; i < MAX_PLAYERS; i ++)
  22515. {
  22516. BlockedPM[playerid][i] = false;
  22517. }
  22518. currentQuestion[playerid] = 0;
  22519. gPlayerKicked[playerid] = 0;
  22520. pSpecLimit[playerid] = 0;
  22521. ClearListedItems(playerid);
  22522. for (new i = 0; i < MAX_BANK_ACCOUNTS; i ++)
  22523. {
  22524. BankAccounts[playerid][i][bankExists] = 0;
  22525. BankAccounts[playerid][i][bankID] = 0;
  22526. BankAccounts[playerid][i][bankBalance] = 0;
  22527. }
  22528. for (new i = 0; i < MAX_ACCESSORIES; i ++)
  22529. {
  22530. Accessories[playerid][i][aExists] = 0;
  22531. Accessories[playerid][i][aModel] = 0;
  22532. Accessories[playerid][i][aBone] = 0;
  22533. Accessories[playerid][i][aAttached] = 0;
  22534. }
  22535. for (new i = 0; i < MAX_INVENTORY_ITEMS; i ++)
  22536. {
  22537. Inventory[playerid][i][invExists] = 0;
  22538. Inventory[playerid][i][invID] = 0;
  22539. }
  22540. for (new i = 0; i < sizeof(g_TrashPickups); i ++)
  22541. {
  22542. gTrashObjects[playerid][i] = INVALID_OBJECT_ID;
  22543. }
  22544. strcpy(Players[playerid][pCallsign], "None", 128);
  22545. strcpy(Players[playerid][pGPCI], "None", 41);
  22546. Players[playerid][pID] = INVALID_ID;
  22547. Players[playerid][pIgnoreTD] = 0;
  22548. Players[playerid][pLoggedIn] = 0;
  22549. Players[playerid][pSetupInfo] = 0;
  22550. Players[playerid][pOrigin] = 0;
  22551. Players[playerid][pGender] = 0;
  22552. Players[playerid][pAge] = 18;
  22553. Players[playerid][pSkin] = 1;
  22554. Players[playerid][pUniform] = INVALID_ID;
  22555. Players[playerid][pOutfitIndex] = INVALID_ID;
  22556. Players[playerid][pHealth] = 100.0;
  22557. Players[playerid][pArmor] = 0.0;
  22558. Players[playerid][pTraveled] = 0.0;
  22559. Players[playerid][pPocketMoney] = 3000;
  22560. Players[playerid][pSendText] = 0;
  22561. Players[playerid][pSelected] = INVALID_ID;
  22562. Players[playerid][pEditUniform] = INVALID_ID;
  22563. Players[playerid][pProduct] = INVALID_ID;
  22564. Players[playerid][pAdmin] = 0;
  22565. Players[playerid][pMapper] = 0;
  22566. Players[playerid][pJailType] = 0;
  22567. Players[playerid][pJailTime] = 0;
  22568. Players[playerid][pMuted] = 0;
  22569. Players[playerid][pFitness] = 0;
  22570. Players[playerid][pMinutes] = 0;
  22571. Players[playerid][pHoursOnline] = 0;
  22572. Players[playerid][pJob] = JOB_NONE;
  22573. Players[playerid][pJobPaycheck] = 0;
  22574. Players[playerid][pPaycheck] = 0;
  22575. Players[playerid][pWorkoutTime] = 0;
  22576. Players[playerid][pGymMembership] = 0;
  22577. Players[playerid][pPhone] = 0;
  22578. Players[playerid][pPhoneOff] = 0;
  22579. Players[playerid][pDeathState] = DEATH_STATE_NONE;
  22580. Players[playerid][pDeathTime] = 0;
  22581. Players[playerid][pHospital] = HOSPITAL_NONE;
  22582. Players[playerid][pShowPM] = 1;
  22583. Players[playerid][pShowSpeed] = 1;
  22584. Players[playerid][pShowFuel] = 1;
  22585. Players[playerid][pShowTime] = 1;
  22586. Players[playerid][pShowOOC] = 1;
  22587. Players[playerid][pShowReports] = 1;
  22588. Players[playerid][pShowAdmin] = 1;
  22589. Players[playerid][pShowSupporter] = 1;
  22590. Players[playerid][pBleeding] = 0;
  22591. Players[playerid][pBleedingTime] = 0;
  22592. Players[playerid][pPaymentType] = PAYMENT_TYPE_CASH;
  22593. Players[playerid][pBankAccount] = 0;
  22594. Players[playerid][pSupporter] = 0;
  22595. Players[playerid][pVeteran] = 0;
  22596. Players[playerid][pFactionMod] = 0;
  22597. Players[playerid][pAdminName] = 0;
  22598. Players[playerid][pHideAdmin] = 0;
  22599. Players[playerid][pBrokenLeg] = 0;
  22600. Players[playerid][pChatStyle] = 1;
  22601. Players[playerid][pChannel] = 0;
  22602. Players[playerid][pDonator] = 0;
  22603. Players[playerid][pExpiryDate] = 0;
  22604. Players[playerid][pNameChanges] = 0;
  22605. Players[playerid][pSpawnType] = SPAWN_TYPE_LAST;
  22606. Players[playerid][pBadge] = 0;
  22607. Players[playerid][pModPreview] = 0;
  22608. Players[playerid][pActivated] = 0;
  22609. Players[playerid][pBeingReported] = 0;
  22610. strcpy(Players[playerid][pReportReason], "None", 64);
  22611. Players[playerid][pBankMoney] = 0;
  22612. Players[playerid][pSavingsMoney] = 0;
  22613. Players[playerid][pFurnitureMenu] = 0;
  22614. Players[playerid][pAccessoryMenu] = 0;
  22615. Players[playerid][pHotwireTime] = 0;
  22616. Players[playerid][pStartEngine] = 0;
  22617. Players[playerid][pLastReport] = 0;
  22618. Players[playerid][pSupportTime] = 0;
  22619. Players[playerid][pBanPage] = 0;
  22620. Players[playerid][pLights] = 0;
  22621. Players[playerid][pPaused] = 0;
  22622. Players[playerid][pLastUpdate] = 0;
  22623. Players[playerid][pFireTime] = 0;
  22624. Players[playerid][pWeight] = 0;
  22625. Players[playerid][pReps] = 0;
  22626. Players[playerid][pSpeedLevel] = 0;
  22627. Players[playerid][pDistanceRan] = 0;
  22628. Players[playerid][pJobStage] = 0;
  22629. Players[playerid][pMining] = 0;
  22630. Players[playerid][pWorking] = 0;
  22631. Players[playerid][pGoods] = 0;
  22632. Players[playerid][pSetPosition] = 0;
  22633. Players[playerid][pFlashOn] = 0;
  22634. Players[playerid][pSitting] = 0;
  22635. Players[playerid][pStatsPage] = 0;
  22636. Players[playerid][pParkTime] = 0;
  22637. Players[playerid][pCalling] = 0;
  22638. Players[playerid][pTaxiTime] = 0;
  22639. Players[playerid][pTaxiFare] = 0;
  22640. Players[playerid][pTaxiDuty] = false;
  22641. Players[playerid][pTaxiMeter] = 0;
  22642. Players[playerid][pPassenger] = 0;
  22643. Players[playerid][pGasPrice] = 0;
  22644. Players[playerid][pMedicKit] = 0;
  22645. Players[playerid][pPainkillers] = 0;
  22646. Players[playerid][pPickTime] = 0;
  22647. Players[playerid][pFainted] = 0;
  22648. Players[playerid][pUnfairDeath] = 0;
  22649. Players[playerid][pAdminDuty] = 0;
  22650. Players[playerid][pSupporterDuty] = 0;
  22651. Players[playerid][pMapperDuty] = 0;
  22652. Players[playerid][pCheatFlags] = 0;
  22653. Players[playerid][pTazer] = 0;
  22654. Players[playerid][pTazed] = 0;
  22655. Players[playerid][pHandcuffed] = 0;
  22656. Players[playerid][pWarrants] = 0;
  22657. Players[playerid][pCharges] = 0;
  22658. Players[playerid][pAnticheat] = 0;
  22659. Players[playerid][pDuty] = 0;
  22660. Players[playerid][pAnimation] = 0;
  22661. Players[playerid][pSelectUniform] = 0;
  22662. Players[playerid][pUniformIndex] = 0;
  22663. Players[playerid][pDispatch] = 0;
  22664. Players[playerid][pVehicleColor] = INVALID_ID;
  22665. Players[playerid][pEmergency] = 0;
  22666. Players[playerid][pCallTaxi] = 0;
  22667. Players[playerid][pStoned] = STONED_TYPE_NONE;
  22668. Players[playerid][pStonedTime] = 0;
  22669. Players[playerid][pPackageGrams] = 0;
  22670. Players[playerid][pPackageTime] = 0;
  22671. Players[playerid][pCarLicense] = 0;
  22672. Players[playerid][pGunLicense] = 0;
  22673. Players[playerid][pAdTime] = 0;
  22674. Players[playerid][pDrivingTest] = 0;
  22675. Players[playerid][pDrivingCP] = 0;
  22676. Players[playerid][pTestTime] = 0;
  22677. Players[playerid][pRentHouse] = 0;
  22678. Players[playerid][pMaskID] = 0;
  22679. Players[playerid][pRepairCar] = 0;
  22680. Players[playerid][pRepairShop] = -1;
  22681. Players[playerid][pRepairTime] = 0;
  22682. Players[playerid][pTrashPickup] = 0;
  22683. Players[playerid][pTrash] = 0;
  22684. Players[playerid][pModShop] = 0;
  22685. Players[playerid][pChatting] = 0;
  22686. Players[playerid][pEnterTime] = 0;
  22687. Players[playerid][pCommandSpam] = 0;
  22688. Players[playerid][pCommandMuted] = 0;
  22689. Players[playerid][pBackdoorType] = 0;
  22690. Players[playerid][pPausedText] = INVALID_3DTEXT_ID;
  22691. Players[playerid][pInjuredText] = INVALID_3DTEXT_ID;
  22692. Players[playerid][pCheckpoint] = CHECKPOINT_NONE;
  22693. Players[playerid][pWorkout] = WORKOUT_NONE;
  22694. Players[playerid][pBuyOutfit] = INVALID_ID;
  22695. Players[playerid][pHouseInfo] = INVALID_ID;
  22696. Players[playerid][pCompanyInfo] = INVALID_ID;
  22697. Players[playerid][pBuildingInfo] = INVALID_ID;
  22698. Players[playerid][pCompany] = INVALID_ID;
  22699. Players[playerid][pHouse] = INVALID_ID;
  22700. Players[playerid][pSpectate] = INVALID_PLAYER_ID;
  22701. Players[playerid][pHotwire] = INVALID_VEHICLE_ID;
  22702. Players[playerid][pTarget] = INVALID_PLAYER_ID;
  22703. Players[playerid][pSetStaff] = INVALID_PLAYER_ID;
  22704. Players[playerid][pObject] = INVALID_OBJECT_ID;
  22705. Players[playerid][pCarConfirm] = INVALID_ID;
  22706. Players[playerid][pAdjustSpawn] = INVALID_ID;
  22707. Players[playerid][pRental] = INVALID_ID;
  22708. Players[playerid][pViewStats] = INVALID_PLAYER_ID;
  22709. Players[playerid][pEdit] = EDIT_TYPE_NONE;
  22710. Players[playerid][pEditID] = INVALID_ID;
  22711. Players[playerid][pHouseEdit] = INVALID_ID;
  22712. Players[playerid][pCaller] = INVALID_PLAYER_ID;
  22713. Players[playerid][pPayphone] = INVALID_ID;
  22714. Players[playerid][pInsideTaxi] = INVALID_PLAYER_ID;
  22715. Players[playerid][pSafeMenu] = INVALID_ID;
  22716. Players[playerid][pTrashbin] = INVALID_ID;
  22717. Players[playerid][pChoose] = CHOOSE_TYPE_NONE;
  22718. Players[playerid][pRefuel] = INVALID_ID;
  22719. Players[playerid][pPicking] = PICK_LOCK_NONE;
  22720. Players[playerid][pPickID] = INVALID_ID;
  22721. Players[playerid][pHelpRequest] = INVALID_PLAYER_ID;
  22722. Players[playerid][pCuffedBy] = INVALID_PLAYER_ID;
  22723. Players[playerid][pFactionOffer] = INVALID_PLAYER_ID;
  22724. Players[playerid][pFriskOffer] = INVALID_PLAYER_ID;
  22725. Players[playerid][pDealershipMenu] = INVALID_ID;
  22726. Players[playerid][pPackageOrder] = PACKAGE_TYPE_NONE;
  22727. Players[playerid][pPackageType] = PACKAGE_TYPE_NONE;
  22728. Players[playerid][pPackage] = INVALID_OBJECT_ID;
  22729. Players[playerid][pSetBank] = INVALID_PLAYER_ID;
  22730. Players[playerid][pGiveDrugs] = INVALID_PLAYER_ID;
  22731. Players[playerid][pWorkVehicle] = INVALID_VEHICLE_ID;
  22732. Players[playerid][pHouseOffer] = INVALID_PLAYER_ID;
  22733. Players[playerid][pCompanyOffer] = INVALID_PLAYER_ID;
  22734. Players[playerid][pCarOffer] = INVALID_PLAYER_ID;
  22735. Players[playerid][pShakeOffer] = INVALID_PLAYER_ID;
  22736. Players[playerid][pBigEars] = 0;
  22737. Players[playerid][pSprayTag] = INVALID_ID;
  22738. Players[playerid][pStereoPlayerID] = INVALID_PLAYER_ID;
  22739. Players[playerid][pVehicleStream] = INVALID_VEHICLE_ID;
  22740. Players[playerid][pAddVehicle] = INVALID_VEHICLE_ID;
  22741. Players[playerid][pAutoShop] = INVALID_ID;
  22742. Players[playerid][pConfirmBackdoor] = INVALID_ID;
  22743. Players[playerid][pFurniturePerms] = INVALID_ID;
  22744. g_Callsigns[ Players[playerid][pFactionCallsign] ][e_CallsignTakenBy] = INVALID_ID;
  22745. Players[playerid][pFactionCallsign] = 0;
  22746. Players[playerid][pWarnTimer] = 0;
  22747. Players[playerid][pWarnWeapon] = 0;
  22748. Players[playerid][pWarnHealth] = 0;
  22749. Players[playerid][pWarnArmor] = 0;
  22750. Players[playerid][pWarnAirbreak] = 0;
  22751. Players[playerid][pWarnSpeedhack] = 0;
  22752. Players[playerid][pWarnMoneyHack] = 0;
  22753. Players[playerid][pWarnAmmoHack] = 0;
  22754. Players[playerid][pWarnFlyHack] = 0;
  22755. Players[playerid][pWarnDialogHack] = 0;
  22756. Players[playerid][pWarnGodMode] = 0;
  22757. Players[playerid][pWarnRapidFire] = 0;
  22758. Players[playerid][pWarnTeleport] = 0;
  22759. /*
  22760. pWarnTimer,
  22761. pWarnWeapon,
  22762. pWarnHealth,
  22763. pWarnArmor,
  22764. pWarnAirbreak,
  22765. pWarnSpeedhack,
  22766. pWarnMoneyHack,
  22767. pWarnAmmoHack,
  22768. pWarnFlyHack,
  22769. pWarnDialogHack,
  22770. pWarnGodMode,
  22771. pWarnRapidFire,
  22772. pWarnTeleport
  22773. */
  22774. Statistics[playerid][sHotwired] = 0;
  22775. Statistics[playerid][sRentals] = 0;
  22776. Statistics[playerid][sHospitalFees] = 0;
  22777. Statistics[playerid][sItemsUsed] = 0;
  22778. Statistics[playerid][sItemsDropped] = 0;
  22779. Statistics[playerid][sItemsPicked] = 0;
  22780. Statistics[playerid][sDistanceRan] = 0;
  22781. Statistics[playerid][sTotalReps] = 0;
  22782. Statistics[playerid][sHouses] = 0;
  22783. Statistics[playerid][sCompanies] = 0;
  22784. Statistics[playerid][sVehicles] = 0;
  22785. Statistics[playerid][sFurnitureFees] = 0;
  22786. Statistics[playerid][sTotalWarrants] = 0;
  22787. Statistics[playerid][sReports] = 0;
  22788. Statistics[playerid][sHelpRequests] = 0;
  22789. ResetSpawnInfo(playerid);
  22790. ResetWeapons(playerid);
  22791. ResetTaxi(playerid);
  22792. ResetHelpRequest(playerid);
  22793. ResetFactionInfo(playerid);
  22794. ResetLastShots(playerid);
  22795. ResetAdvertisement(playerid);
  22796. ResetStereo(playerid);
  22797. ResetNameChange(playerid);
  22798. }
  22799. /*
  22800. pWarnSpeed,
  22801. pWarnWeapon,
  22802. pWarnHealth,
  22803. pWarnArmor,
  22804. pWarnAirbreak,
  22805. pWarnSpeedhack,
  22806. pWarnMoneyHack,
  22807. pWarnAmmoHack,
  22808. pWarnFlyHack
  22809. */
  22810. SavePositionAndHealth(playerid)
  22811. {
  22812. if (Players[playerid][pAutoShop] != INVALID_ID || IsPlayerInRangeOfPoint(playerid, 20.0, 1903.4791, 1353.9811, 24.5537))
  22813. {
  22814. Players[playerid][pSpawn][0] = Players[playerid][pAutoX];
  22815. Players[playerid][pSpawn][1] = Players[playerid][pAutoY];
  22816. Players[playerid][pSpawn][2] = Players[playerid][pAutoZ];
  22817. Players[playerid][pSpawn][3] = Players[playerid][pAutoA];
  22818. Players[playerid][pInterior] = 0;
  22819. Players[playerid][pWorld] = 0;
  22820. }
  22821. else
  22822. {
  22823. GetPlayerPos(playerid, Players[playerid][pSpawn][0], Players[playerid][pSpawn][1], Players[playerid][pSpawn][2]);
  22824. GetPlayerFacingAngle(playerid, Players[playerid][pSpawn][3]);
  22825. if (Players[playerid][pBuyOutfit] != INVALID_ID)
  22826. {
  22827. Players[playerid][pInterior] = Companies[Players[playerid][pBuyOutfit]][cInterior];
  22828. Players[playerid][pWorld] = Companies[Players[playerid][pBuyOutfit]][cWorld];
  22829. }
  22830. else
  22831. {
  22832. Players[playerid][pInterior] = GetPlayerInterior(playerid);
  22833. Players[playerid][pWorld] = GetPlayerVirtualWorld(playerid);
  22834. }
  22835. }
  22836. GetPlayerHealth(playerid, Players[playerid][pHealth]);
  22837. GetPlayerArmour(playerid, Players[playerid][pArmor]);
  22838. }
  22839. SaveStatistics(playerid)
  22840. {
  22841. new
  22842. queryString[512];
  22843. format(queryString, sizeof(queryString), "UPDATE rp_accounts SET `TotalHotwired` = %i, `TotalRentals` = %i, `HospitalFees` = %i, `ItemsUsed` = %i, `ItemsDropped` = %i, `ItemsPicked` = %i, `DistanceRan` = %i, `TotalReps` = %i, `TotalHouses` = %i, `TotalCompanies` = %i, `TotalVehicles` = %i, `FurnitureFees` = %i, `TotalWarrants` = %i, `Reports` = %i, `HelpRequests` = %i WHERE `ID` = %i",
  22844. Statistics[playerid][sHotwired],
  22845. Statistics[playerid][sRentals],
  22846. Statistics[playerid][sHospitalFees],
  22847. Statistics[playerid][sItemsUsed],
  22848. Statistics[playerid][sItemsDropped],
  22849. Statistics[playerid][sItemsPicked],
  22850. Statistics[playerid][sDistanceRan],
  22851. Statistics[playerid][sTotalReps],
  22852. Statistics[playerid][sHouses],
  22853. Statistics[playerid][sCompanies],
  22854. Statistics[playerid][sVehicles],
  22855. Statistics[playerid][sFurnitureFees],
  22856. Statistics[playerid][sTotalWarrants],
  22857. Statistics[playerid][sReports],
  22858. Statistics[playerid][sHelpRequests],
  22859. Players[playerid][pID]
  22860. );
  22861. return mysql_tquery(gConnection, queryString);
  22862. }
  22863. SaveAccount(playerid)
  22864. {
  22865. if (Players[playerid][pLoggedIn] && !IsPlayerNPC(playerid))
  22866. {
  22867. new
  22868. queryString[2048];
  22869. if (!IsPlayerSpectating(playerid) && !IsPlayerBugged(playerid) && Players[playerid][pBuyOutfit] == INVALID_ID)
  22870. {
  22871. SavePositionAndHealth(playerid);
  22872. }
  22873. format(queryString, sizeof(queryString), "UPDATE rp_accounts SET `SetupInfo` = %i, `Origin` = '%s', `Gender` = %i, `Age` = %i, `Skin` = %i, `Uniform` = %i, `SpawnX` = %.4f, `SpawnY` = %.4f, `SpawnZ` = %.4f, `SpawnA` = %.4f, `Health` = %.4f, `Armor` = %.4f, `Interior` = %i, `World` = %i, `Traveled` = %.4f, `PocketMoney` = %i, `Admin` = %i",
  22874. Players[playerid][pSetupInfo],
  22875. Players[playerid][pOrigin],
  22876. Players[playerid][pGender],
  22877. Players[playerid][pAge],
  22878. Players[playerid][pSkin],
  22879. Players[playerid][pUniform],
  22880. Players[playerid][pSpawn][0],
  22881. Players[playerid][pSpawn][1],
  22882. Players[playerid][pSpawn][2],
  22883. Players[playerid][pSpawn][3],
  22884. Players[playerid][pHealth],
  22885. Players[playerid][pArmor],
  22886. Players[playerid][pInterior],
  22887. Players[playerid][pWorld],
  22888. Players[playerid][pTraveled],
  22889. Players[playerid][pPocketMoney],
  22890. Players[playerid][pAdmin]
  22891. );
  22892. format(queryString, sizeof(queryString), "%s, `JailType` = %i, `JailTime` = %i, `Muted` = %i, `Fitness` = %i, `Minutes` = %i, `HoursOnline` = %i, `Melee` = %i, `PrimaryGun` = %i, `PrimaryAmmo` = %i, `PrimarySerial` = %i, `SecondaryGun` = %i, `SecondaryAmmo` = %i, `SecondarySerial` = %i",
  22893. queryString,
  22894. Players[playerid][pJailType],
  22895. Players[playerid][pJailTime],
  22896. Players[playerid][pMuted],
  22897. Players[playerid][pFitness],
  22898. Players[playerid][pMinutes],
  22899. Players[playerid][pHoursOnline],
  22900. Weapons[playerid][wMelee],
  22901. Weapons[playerid][wPrimary],
  22902. Weapons[playerid][wPrimaryAmmo],
  22903. Weapons[playerid][wPrimarySerial],
  22904. Weapons[playerid][wSecondary],
  22905. Weapons[playerid][wSecondaryAmmo],
  22906. Weapons[playerid][wSecondarySerial]
  22907. );
  22908. format(queryString, sizeof(queryString), "%s, `Job` = %i, `JobPaycheck` = %i, `Paycheck` = %i, `WorkoutTime` = %i, `GymMembership` = %i, `Phone` = %i, `PhoneOff` = %i, `DeathState` = %i, `Hospital` = %i, `ShowPM` = %i, `ShowSpeed` = %i, `ShowFuel` = %i, `ShowTime` = %i, `ShowOOC` = %i, `ShowReports` = %i, `ShowAdmin` = %i, `ShowSupporter` = %i",
  22909. queryString,
  22910. Players[playerid][pJob],
  22911. Players[playerid][pJobPaycheck],
  22912. Players[playerid][pPaycheck],
  22913. Players[playerid][pWorkoutTime],
  22914. Players[playerid][pGymMembership],
  22915. Players[playerid][pPhone],
  22916. Players[playerid][pPhoneOff],
  22917. Players[playerid][pDeathState],
  22918. Players[playerid][pHospital],
  22919. Players[playerid][pShowPM],
  22920. Players[playerid][pShowSpeed],
  22921. Players[playerid][pShowFuel],
  22922. Players[playerid][pShowTime],
  22923. Players[playerid][pShowOOC],
  22924. Players[playerid][pShowReports],
  22925. Players[playerid][pShowAdmin],
  22926. Players[playerid][pShowSupporter]
  22927. );
  22928. format(queryString, sizeof(queryString), "%s, `Bleeding` = %i, `PaymentType` = %i, `BankAccount` = %i, `Supporter` = %i, `Veteran` = %i, `FactionMod` = %i, `FactionID` = %i, `FactionRank` = %i, `FactionLeader` = %i, `Warrants` = %i, `AdminName` = '%s', `PackageOrder` = %i, `PackageType` = %i, `PackageGrams` = %i, `PackageTime` = %i, `CarLicense` = %i, `GunLicense` = %i, `AdTime` = %i",
  22929. queryString,
  22930. Players[playerid][pBleeding],
  22931. Players[playerid][pPaymentType],
  22932. Players[playerid][pBankAccount],
  22933. Players[playerid][pSupporter],
  22934. Players[playerid][pVeteran],
  22935. Players[playerid][pFactionMod],
  22936. Players[playerid][pFactionID],
  22937. Players[playerid][pFactionRank],
  22938. Players[playerid][pFactionLeader],
  22939. Players[playerid][pWarrants],
  22940. Players[playerid][pAdminName],
  22941. Players[playerid][pPackageOrder],
  22942. Players[playerid][pPackageType],
  22943. Players[playerid][pPackageGrams],
  22944. Players[playerid][pPackageTime],
  22945. Players[playerid][pCarLicense],
  22946. Players[playerid][pGunLicense],
  22947. Players[playerid][pAdTime]
  22948. );
  22949. format(queryString, sizeof(queryString), "%s, `RentHouse` = %i, `MaskID` = %i, `HideAdmin` = %i, `BrokenLeg` = %i, `ChatStyle` = %i, `WalkStyle` = %i, `Channel` = %i, `Donator` = %i, `ExpiryDate` = %i, `NameChanges` = %i, `Badge` = %i, `BankMoney` = %i, `SavingsMoney` = %i, `Mapper` = %i, `Charges` = %i, `PhoneLastKnown` = %i, `AdminTitle` = '%s', `GPCI` = '%s', `pActivated`='%i', `BeingReported`='%i', `ReportReason`='%s'",
  22950. queryString,
  22951. Players[playerid][pRentHouse],
  22952. Players[playerid][pMaskID],
  22953. Players[playerid][pHideAdmin],
  22954. Players[playerid][pBrokenLeg],
  22955. Players[playerid][pChatStyle],
  22956. Players[playerid][pWalkStyle],
  22957. Players[playerid][pChannel],
  22958. Players[playerid][pDonator],
  22959. Players[playerid][pExpiryDate],
  22960. Players[playerid][pNameChanges],
  22961. Players[playerid][pBadge],
  22962. Players[playerid][pBankMoney],
  22963. Players[playerid][pSavingsMoney],
  22964. Players[playerid][pMapper],
  22965. Players[playerid][pCharges],
  22966. Players[playerid][pPhoneLastKnown],
  22967. Players[playerid][pAdminTitle],
  22968. Players[playerid][pGPCI],
  22969. Players[playerid][pActivated],
  22970. Players[playerid][pBeingReported],
  22971. Players[playerid][pReportReason]
  22972. );
  22973. format(queryString, sizeof(queryString), "%s, SpawnType = %i, SpawnExtra = %i, Crashed = %i, Duty = %i WHERE ID = %i",
  22974. queryString,
  22975. Players[playerid][pSpawnType],
  22976. Players[playerid][pSpawnExtra],
  22977. Players[playerid][pCrashed],
  22978. Players[playerid][pDuty],
  22979. Players[playerid][pID]
  22980. );
  22981. mysql_tquery(gConnection, queryString);
  22982. SaveStatistics(playerid);
  22983. }
  22984. }
  22985. GetInventoryMaxWeight(playerid)
  22986. {
  22987. new extra;
  22988. if (Players[playerid][pFitness] > 0) {
  22989. extra += (Players[playerid][pFitness] / 10);
  22990. }
  22991. switch (Players[playerid][pDonator]) {
  22992. case DONATOR_BASIC:
  22993. extra = extra + 10;
  22994. case DONATOR_STANDARD:
  22995. extra = extra + 20;
  22996. case DONATOR_INVESTOR:
  22997. extra = extra + 30;
  22998. case DONATOR_PREMIUM:
  22999. extra = extra + 40;
  23000. }
  23001. return MAX_POCKET_WEIGHT + extra;
  23002. }
  23003. GetInventoryTotalWeight(playerid)
  23004. {
  23005. new total;
  23006. for (new i = 0; i < MAX_INVENTORY_ITEMS; i ++)
  23007. {
  23008. if (Inventory[playerid][i][invExists])
  23009. {
  23010. total = total + GetItemInformation(Inventory[playerid][i][invName], ITEM_INFO_WEIGHT);
  23011. }
  23012. }
  23013. return total;
  23014. }
  23015. SelectTextDrawEx(playerid, hovercolor)
  23016. {
  23017. Players[playerid][pIgnoreTD] = 1;
  23018. SetTimerEx("ResetIgnoreTD", 300, false, "i", playerid);
  23019. return SelectTextDraw(playerid, hovercolor);
  23020. }
  23021. ShowItemsForPlayer(playerid, targetid)
  23022. {
  23023. gListString[0] = 0;
  23024. if (Players[playerid][pPocketMoney] > 0) {
  23025. format(gListString, sizeof(gListString), "Wallet (%s)", FormatNumber(Players[targetid][pPocketMoney]));
  23026. } else {
  23027. format(gListString, sizeof(gListString), "Wallet (Empty)");
  23028. }
  23029. if (1 <= Weapons[targetid][wMelee] <= 15) {
  23030. format(gListString, sizeof(gListString), "%s\n%s", gListString, GetWeapon(Weapons[targetid][wMelee]));
  23031. }
  23032. if (Weapons[targetid][wPrimary] > 0) {
  23033. format(gListString, sizeof(gListString), "%s\n%s (%i ammo)", gListString, GetWeapon(Weapons[targetid][wPrimary]), Weapons[targetid][wPrimaryAmmo]);
  23034. }
  23035. if (Weapons[targetid][wSecondary] > 0) {
  23036. format(gListString, sizeof(gListString), "%s\n%s (%i ammo)", gListString, GetWeapon(Weapons[targetid][wSecondary]), Weapons[targetid][wSecondaryAmmo]);
  23037. }
  23038. if (Weapons[targetid][wTertiary] > 0) {
  23039. format(gListString, sizeof(gListString), "%s\n%s (%i ammo)", gListString, GetWeapon(Weapons[targetid][wTertiary]), Weapons[targetid][wTertiaryAmmo]);
  23040. }
  23041. for (new i = 0; i < MAX_INVENTORY_ITEMS; i ++)
  23042. {
  23043. if (Inventory[targetid][i][invExists])
  23044. {
  23045. format(gListString, sizeof(gListString), "%s\n%s", gListString, GetFullItemName(targetid, i));
  23046. }
  23047. }
  23048. if (!isnull(gListString))
  23049. {
  23050. return Dialog_Show(playerid, Frisk, DIALOG_STYLE_LIST, "{FFFFFF}Frisk Menu", gListString, "Close", "");
  23051. }
  23052. return 0;
  23053. }
  23054. DisplayInventory(playerid)
  23055. {
  23056. static
  23057. displayString[MAX_ITEM_NAME * MAX_INVENTORY_ITEMS],
  23058. titleString[128]
  23059. ;
  23060. new
  23061. index = 0
  23062. ;
  23063. displayString = "{33AA33}Item\t{33AA33}lbs";
  23064. if (Weapons[playerid][wMelee] > 0 || Weapons[playerid][wPrimary] > 0 || Weapons[playerid][wSecondary] > 0)
  23065. {
  23066. strcat(displayString, "\nWeapon Menu");
  23067. }
  23068. for (new i = 0; i < MAX_INVENTORY_ITEMS; i ++)
  23069. {
  23070. if (Inventory[playerid][i][invExists])
  23071. {
  23072. format(displayString, sizeof(displayString), "%s\n%s\t%i lbs", displayString, GetFullItemName(playerid, i), GetItemInformation(Inventory[playerid][i][invName], ITEM_INFO_WEIGHT));
  23073. gListedItems[playerid][index++] = i;
  23074. }
  23075. }
  23076. if ((index) || (strlen(displayString) > 15))
  23077. {
  23078. format(titleString, sizeof(titleString), "{33AA33}Capacity: [%i/%i]", GetInventoryTotalWeight(playerid), GetInventoryMaxWeight(playerid));
  23079. return Dialog_Show(playerid, MyInventory, DIALOG_STYLE_TABLIST_HEADERS, titleString, displayString, "Select", "Cancel");
  23080. }
  23081. return 0;
  23082. }
  23083. GetStoredItemName(id)
  23084. {
  23085. new string[MAX_ITEM_NAME + 12];
  23086. if (StoredItems[id][stExists])
  23087. {
  23088. strunpack(string, StoredItems[id][stName]);
  23089. if (GetItemInformation(StoredItems[id][stName], ITEM_INFO_VALUE) && StoredItems[id][stValue] > 0)
  23090. {
  23091. format(string, sizeof(string), "{33AA33}%s (%i)", string, StoredItems[id][stValue]);
  23092. }
  23093. }
  23094. return string;
  23095. }
  23096. GetDropItemName(id)
  23097. {
  23098. new string[MAX_ITEM_NAME + 12];
  23099. if (DropItems[id][dExists])
  23100. {
  23101. if (GetItemInformation(DropItems[id][dName], ITEM_INFO_VALUE) && DropItems[id][dValue] > 0)
  23102. {
  23103. format(string, sizeof(string), "%s (%i)", DropItems[id][dName], DropItems[id][dValue]);
  23104. }
  23105. else
  23106. {
  23107. strcpy(string, DropItems[id][dName]);
  23108. }
  23109. }
  23110. return string;
  23111. }
  23112. GetFullItemName(playerid, itemid)
  23113. {
  23114. new string[MAX_ITEM_NAME + 12];
  23115. if (Inventory[playerid][itemid][invExists])
  23116. {
  23117. if (GetItemInformation(Inventory[playerid][itemid][invName], ITEM_INFO_VALUE) && Inventory[playerid][itemid][invValue] > 0)
  23118. {
  23119. format(string, sizeof(string), "%s (%i)", Inventory[playerid][itemid][invName], Inventory[playerid][itemid][invValue]);
  23120. if(Inventory[playerid][itemid][invSerial] != 0)
  23121. {
  23122. format(string,sizeof(string),"%s (%i) (#%i)", Inventory[playerid][itemid][invName], Inventory[playerid][itemid][invValue], Inventory[playerid][itemid][invSerial]);
  23123. }
  23124. }
  23125. else
  23126. {
  23127. strcpy(string, Inventory[playerid][itemid][invName]);
  23128. }
  23129. }
  23130. return string;
  23131. }
  23132. IsValidInput(const text[])
  23133. {
  23134. /*
  23135. Checks if an input string is valid. Invalid inputs include:
  23136. - Empty or null string.
  23137. - Text consisting of only spaces.
  23138. */
  23139. new
  23140. length = 0,
  23141. spaces = 0
  23142. ;
  23143. if ((length = strlen(text)) == 0 || isnull(text))
  23144. {
  23145. return 0;
  23146. }
  23147. else
  23148. {
  23149. for (new i = 0; i < length; i ++)
  23150. {
  23151. if (text[i] == ' ' || text[i] == 255)
  23152. {
  23153. spaces++;
  23154. }
  23155. }
  23156. if (length == spaces)
  23157. {
  23158. return 0;
  23159. }
  23160. }
  23161. return 1;
  23162. }
  23163. IsPlayerInRangeOfVehicle(playerid, vehicleid, Float:range = 4.0)
  23164. {
  23165. new
  23166. Float:x,
  23167. Float:y,
  23168. Float:z;
  23169. GetVehiclePos(vehicleid, x, y, z);
  23170. if (GetPlayerVirtualWorld(playerid) == GetVehicleVirtualWorld(vehicleid) && IsPlayerInRangeOfPoint(playerid, range, x, y, z))
  23171. return 1;
  23172. else
  23173. return 0;
  23174. }
  23175. IsPlayerInRangeOfPlayer(playerid, targetid, Float:range = 4.0)
  23176. {
  23177. new
  23178. Float:x,
  23179. Float:y,
  23180. Float:z;
  23181. GetPlayerPos(targetid, x, y, z);
  23182. if (GetPlayerInterior(playerid) == GetPlayerInterior(targetid) && GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(targetid) && IsPlayerInRangeOfPoint(playerid, range, x, y, z))
  23183. return 1;
  23184. else
  23185. return 0;
  23186. }
  23187. PlayNearbySound(playerid, soundid)
  23188. {
  23189. new
  23190. Float:x,
  23191. Float:y,
  23192. Float:z;
  23193. GetPlayerPos(playerid, x, y, z);
  23194. foreach (new i : Player)
  23195. {
  23196. if (i == playerid || IsPlayerStreamedIn(playerid, i))
  23197. {
  23198. PlayerPlaySound(i, soundid, x, y, z);
  23199. }
  23200. }
  23201. }
  23202. SetupTextdraws(playerid)
  23203. {
  23204. Players[playerid][pText][0] = CreatePlayerTextDraw(playerid, 330.000000, 398.000000, "1 ~<~ ~g~~h~2~w~ ~>~ 3");
  23205. PlayerTextDrawAlignment(playerid, Players[playerid][pText][0], 2);
  23206. PlayerTextDrawFont(playerid, Players[playerid][pText][0], 2);
  23207. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][0], 0.470000, 1.600000);
  23208. PlayerTextDrawColor(playerid, Players[playerid][pText][0], -1);
  23209. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][0], 1);
  23210. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][0], 1);
  23211. Players[playerid][pText][5] = CreatePlayerTextDraw(playerid, 359.000000, 370.000000, "Text");
  23212. PlayerTextDrawAlignment(playerid, Players[playerid][pText][5], 2);
  23213. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][5], 255);
  23214. PlayerTextDrawFont(playerid, Players[playerid][pText][5], 1);
  23215. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][5], 0.339999, 1.300000);
  23216. PlayerTextDrawColor(playerid, Players[playerid][pText][5], -1);
  23217. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][5], 1);
  23218. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][5], 1);
  23219. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][5], 0);
  23220. Players[playerid][pText][6] = CreatePlayerTextDraw(playerid, 439.000000, 147.000000, "_");
  23221. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][6], 255);
  23222. PlayerTextDrawFont(playerid, Players[playerid][pText][6], 1);
  23223. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][6], 0.500000, 1.000000);
  23224. PlayerTextDrawColor(playerid, Players[playerid][pText][6], -1);
  23225. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][6], 0);
  23226. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][6], 1);
  23227. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][6], 1);
  23228. PlayerTextDrawUseBox(playerid, Players[playerid][pText][6], 1);
  23229. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][6], 85);
  23230. PlayerTextDrawTextSize(playerid, Players[playerid][pText][6], 210.000000, 0.000000);
  23231. Players[playerid][pText][7] = CreatePlayerTextDraw(playerid, 439.000000, 147.000000, "_");
  23232. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][7], 255);
  23233. PlayerTextDrawFont(playerid, Players[playerid][pText][7], 1);
  23234. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][7], 0.500000, 17.600006);
  23235. PlayerTextDrawColor(playerid, Players[playerid][pText][7], -1);
  23236. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][7], 0);
  23237. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][7], 1);
  23238. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][7], 1);
  23239. PlayerTextDrawUseBox(playerid, Players[playerid][pText][7], 1);
  23240. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][7], 85);
  23241. PlayerTextDrawTextSize(playerid, Players[playerid][pText][7], 210.000000, 0.000000);
  23242. Players[playerid][pText][8] = CreatePlayerTextDraw(playerid, 216.000000, 145.000000, "My Items");
  23243. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][8], 255);
  23244. PlayerTextDrawFont(playerid, Players[playerid][pText][8], 2);
  23245. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][8], 0.319999, 1.200000);
  23246. PlayerTextDrawColor(playerid, Players[playerid][pText][8], -1);
  23247. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][8], 1);
  23248. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][8], 1);
  23249. Players[playerid][pText][9] = CreatePlayerTextDraw(playerid, 217.000000, 162.000000, "_");
  23250. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][9], 85);
  23251. PlayerTextDrawFont(playerid, Players[playerid][pText][9], 5);
  23252. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][9], 0.500000, 6.299999);
  23253. PlayerTextDrawColor(playerid, Players[playerid][pText][9], -1);
  23254. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][9], 0);
  23255. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][9], 1);
  23256. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][9], 1);
  23257. PlayerTextDrawUseBox(playerid, Players[playerid][pText][9], 1);
  23258. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][9], 0);
  23259. PlayerTextDrawTextSize(playerid, Players[playerid][pText][9], 61.000000, 49.000000);
  23260. PlayerTextDrawSetPreviewModel(playerid, Players[playerid][pText][9], 3026);
  23261. PlayerTextDrawSetPreviewRot(playerid, Players[playerid][pText][9], 0.0000, 0.0000, 0.0000, 1.0000);
  23262. Players[playerid][pText][10] = CreatePlayerTextDraw(playerid, 248.000000, 212.000000, "Backpack");
  23263. PlayerTextDrawAlignment(playerid, Players[playerid][pText][10], 2);
  23264. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][10], 255);
  23265. PlayerTextDrawFont(playerid, Players[playerid][pText][10], 2);
  23266. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][10], 0.209999, 0.899999);
  23267. PlayerTextDrawColor(playerid, Players[playerid][pText][10], -1);
  23268. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][10], 1);
  23269. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][10], 1);
  23270. Players[playerid][pText][11] = CreatePlayerTextDraw(playerid, 217.000000, 232.000000, "_");
  23271. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][11], 85);
  23272. PlayerTextDrawFont(playerid, Players[playerid][pText][11], 5);
  23273. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][11], 0.500000, 6.199998);
  23274. PlayerTextDrawColor(playerid, Players[playerid][pText][11], -1);
  23275. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][11], 0);
  23276. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][11], 1);
  23277. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][11], 1);
  23278. PlayerTextDrawUseBox(playerid, Players[playerid][pText][11], 1);
  23279. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][11], 0);
  23280. PlayerTextDrawTextSize(playerid, Players[playerid][pText][11], 61.000000, 49.000000);
  23281. PlayerTextDrawSetPreviewModel(playerid, Players[playerid][pText][11], 2916);
  23282. PlayerTextDrawSetPreviewRot(playerid, Players[playerid][pText][11], 0.0000, 0.0000, 0.0000, 1.0000);
  23283. Players[playerid][pText][12] = CreatePlayerTextDraw(playerid, 247.000000, 283.000000, "Weight: 0/10");
  23284. PlayerTextDrawAlignment(playerid, Players[playerid][pText][12], 2);
  23285. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][12], 255);
  23286. PlayerTextDrawFont(playerid, Players[playerid][pText][12], 2);
  23287. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][12], 0.200000, 0.899999);
  23288. PlayerTextDrawColor(playerid, Players[playerid][pText][12], -1);
  23289. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][12], 1);
  23290. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][12], 1);
  23291. Players[playerid][pText][13] = CreatePlayerTextDraw(playerid, 288.000000, 164.000000, "_");
  23292. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][13], 255);
  23293. PlayerTextDrawFont(playerid, Players[playerid][pText][13], 2);
  23294. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][13], 0.209998, 13.599993);
  23295. PlayerTextDrawColor(playerid, Players[playerid][pText][13], -1);
  23296. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][13], 1);
  23297. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][13], 1);
  23298. PlayerTextDrawUseBox(playerid, Players[playerid][pText][13], 1);
  23299. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][13], 68);
  23300. PlayerTextDrawTextSize(playerid, Players[playerid][pText][13], 430.000000, 40.000000);
  23301. Players[playerid][pText][14] = CreatePlayerTextDraw(playerid, 290.000000, 165.000000, "Empty Slot");
  23302. PlayerTextDrawTextSize(playerid, Players[playerid][pText][14], 428.000000, 10.000000);
  23303. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][14], 255);
  23304. PlayerTextDrawFont(playerid, Players[playerid][pText][14], 2);
  23305. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][14], 0.209999, 1.000000);
  23306. PlayerTextDrawColor(playerid, Players[playerid][pText][14], -1);
  23307. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][14], 1);
  23308. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][14], 1);
  23309. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][14], 1);
  23310. Players[playerid][pText][15] = CreatePlayerTextDraw(playerid, 290.000000, 177.000000, "Empty Slot");
  23311. PlayerTextDrawTextSize(playerid, Players[playerid][pText][15], 428.000000, 10.000000);
  23312. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][15], 255);
  23313. PlayerTextDrawFont(playerid, Players[playerid][pText][15], 2);
  23314. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][15], 0.209999, 1.000000);
  23315. PlayerTextDrawColor(playerid, Players[playerid][pText][15], -1);
  23316. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][15], 1);
  23317. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][15], 1);
  23318. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][15], 1);
  23319. Players[playerid][pText][16] = CreatePlayerTextDraw(playerid, 290.000000, 189.000000, "Empty Slot");
  23320. PlayerTextDrawTextSize(playerid, Players[playerid][pText][16], 428.000000, 10.000000);
  23321. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][16], 255);
  23322. PlayerTextDrawFont(playerid, Players[playerid][pText][16], 2);
  23323. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][16], 0.209999, 1.000000);
  23324. PlayerTextDrawColor(playerid, Players[playerid][pText][16], -1);
  23325. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][16], 1);
  23326. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][16], 1);
  23327. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][16], 1);
  23328. Players[playerid][pText][17] = CreatePlayerTextDraw(playerid, 290.000000, 201.000000, "Empty Slot");
  23329. PlayerTextDrawTextSize(playerid, Players[playerid][pText][17], 428.000000, 10.000000);
  23330. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][17], 255);
  23331. PlayerTextDrawFont(playerid, Players[playerid][pText][17], 2);
  23332. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][17], 0.209999, 1.000000);
  23333. PlayerTextDrawColor(playerid, Players[playerid][pText][17], -1);
  23334. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][17], 1);
  23335. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][17], 1);
  23336. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][17], 1);
  23337. Players[playerid][pText][18] = CreatePlayerTextDraw(playerid, 290.000000, 213.000000, "Empty Slot");
  23338. PlayerTextDrawTextSize(playerid, Players[playerid][pText][18], 428.000000, 10.000000);
  23339. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][18], 255);
  23340. PlayerTextDrawFont(playerid, Players[playerid][pText][18], 2);
  23341. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][18], 0.209999, 1.000000);
  23342. PlayerTextDrawColor(playerid, Players[playerid][pText][18], -1);
  23343. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][18], 1);
  23344. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][18], 1);
  23345. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][18], 1);
  23346. Players[playerid][pText][19] = CreatePlayerTextDraw(playerid, 290.000000, 225.000000, "Empty Slot");
  23347. PlayerTextDrawTextSize(playerid, Players[playerid][pText][19], 428.000000, 10.000000);
  23348. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][19], 255);
  23349. PlayerTextDrawFont(playerid, Players[playerid][pText][19], 2);
  23350. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][19], 0.209999, 1.000000);
  23351. PlayerTextDrawColor(playerid, Players[playerid][pText][19], -1);
  23352. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][19], 1);
  23353. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][19], 1);
  23354. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][19], 1);
  23355. Players[playerid][pText][20] = CreatePlayerTextDraw(playerid, 290.000000, 237.000000, "Empty Slot");
  23356. PlayerTextDrawTextSize(playerid, Players[playerid][pText][20], 428.000000, 10.000000);
  23357. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][20], 255);
  23358. PlayerTextDrawFont(playerid, Players[playerid][pText][20], 2);
  23359. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][20], 0.209999, 1.000000);
  23360. PlayerTextDrawColor(playerid, Players[playerid][pText][20], -1);
  23361. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][20], 1);
  23362. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][20], 1);
  23363. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][20], 1);
  23364. Players[playerid][pText][21] = CreatePlayerTextDraw(playerid, 290.000000, 249.000000, "Empty Slot");
  23365. PlayerTextDrawTextSize(playerid, Players[playerid][pText][21], 428.000000, 10.000000);
  23366. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][21], 255);
  23367. PlayerTextDrawFont(playerid, Players[playerid][pText][21], 2);
  23368. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][21], 0.209999, 1.000000);
  23369. PlayerTextDrawColor(playerid, Players[playerid][pText][21], -1);
  23370. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][21], 1);
  23371. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][21], 1);
  23372. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][21], 1);
  23373. Players[playerid][pText][22] = CreatePlayerTextDraw(playerid, 290.000000, 261.000000, "Empty Slot");
  23374. PlayerTextDrawTextSize(playerid, Players[playerid][pText][22], 428.000000, 10.000000);
  23375. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][22], 255);
  23376. PlayerTextDrawFont(playerid, Players[playerid][pText][22], 2);
  23377. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][22], 0.209999, 1.000000);
  23378. PlayerTextDrawColor(playerid, Players[playerid][pText][22], -1);
  23379. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][22], 1);
  23380. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][22], 1);
  23381. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][22], 1);
  23382. Players[playerid][pText][23] = CreatePlayerTextDraw(playerid, 290.000000, 273.000000, "Empty Slot");
  23383. PlayerTextDrawTextSize(playerid, Players[playerid][pText][23], 428.000000, 10.000000);
  23384. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][23], 255);
  23385. PlayerTextDrawFont(playerid, Players[playerid][pText][23], 2);
  23386. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][23], 0.209999, 1.000000);
  23387. PlayerTextDrawColor(playerid, Players[playerid][pText][23], -1);
  23388. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][23], 1);
  23389. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][23], 1);
  23390. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][23], 1);
  23391. Players[playerid][pText][24] = CreatePlayerTextDraw(playerid, 392.000000, 292.000000, "<<");
  23392. PlayerTextDrawAlignment(playerid, Players[playerid][pText][24], 2);
  23393. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][24], 255);
  23394. PlayerTextDrawFont(playerid, Players[playerid][pText][24], 2);
  23395. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][24], 0.230000, 1.299998);
  23396. PlayerTextDrawColor(playerid, Players[playerid][pText][24], -1);
  23397. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][24], 1);
  23398. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][24], 1);
  23399. PlayerTextDrawUseBox(playerid, Players[playerid][pText][24], 1);
  23400. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][24], 85);
  23401. PlayerTextDrawTextSize(playerid, Players[playerid][pText][24], 15.000000, 21.000000);
  23402. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][24], 1);
  23403. Players[playerid][pText][25] = CreatePlayerTextDraw(playerid, 419.000000, 292.000000, ">>");
  23404. PlayerTextDrawAlignment(playerid, Players[playerid][pText][25], 2);
  23405. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][25], 255);
  23406. PlayerTextDrawFont(playerid, Players[playerid][pText][25], 2);
  23407. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][25], 0.230000, 1.299998);
  23408. PlayerTextDrawColor(playerid, Players[playerid][pText][25], -1);
  23409. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][25], 1);
  23410. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][25], 1);
  23411. PlayerTextDrawUseBox(playerid, Players[playerid][pText][25], 1);
  23412. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][25], 85);
  23413. PlayerTextDrawTextSize(playerid, Players[playerid][pText][25], 15.000000, 21.000000);
  23414. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][25], 1);
  23415. Players[playerid][pText][26] = CreatePlayerTextDraw(playerid, 323.0, 412.0, "0 KMH");
  23416. PlayerTextDrawAlignment(playerid, Players[playerid][pText][26], 2);
  23417. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][26], 255);
  23418. PlayerTextDrawFont(playerid, Players[playerid][pText][26], 2);
  23419. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][26], 0.559998, 2.099999);
  23420. PlayerTextDrawColor(playerid, Players[playerid][pText][26], -1);
  23421. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][26], 1);
  23422. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][26], 1);
  23423. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][26], 0);
  23424. Players[playerid][pText][27] = CreatePlayerTextDraw(playerid, 509.000000, 103.000000, "_");
  23425. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][27], 255);
  23426. PlayerTextDrawFont(playerid, Players[playerid][pText][27], 1);
  23427. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][27], 0.500000, 3.099999);
  23428. PlayerTextDrawColor(playerid, Players[playerid][pText][27], -1);
  23429. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][27], 0);
  23430. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][27], 1);
  23431. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][27], 1);
  23432. PlayerTextDrawUseBox(playerid, Players[playerid][pText][27], 1);
  23433. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][27], 102);
  23434. PlayerTextDrawTextSize(playerid, Players[playerid][pText][27], 606.000000, 10.000000);
  23435. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][27], 0);
  23436. Players[playerid][pText][28] = CreatePlayerTextDraw(playerid, 522.000000, 106.000000, "E");
  23437. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][28], 255);
  23438. PlayerTextDrawFont(playerid, Players[playerid][pText][28], 1);
  23439. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][28], 0.509999, 1.200000);
  23440. PlayerTextDrawColor(playerid, Players[playerid][pText][28], -16776961);
  23441. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][28], 1);
  23442. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][28], 1);
  23443. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][28], 0);
  23444. Players[playerid][pText][29] = CreatePlayerTextDraw(playerid, 579.000000, 106.000000, "F");
  23445. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][29], 255);
  23446. PlayerTextDrawFont(playerid, Players[playerid][pText][29], 1);
  23447. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][29], 0.509999, 1.200000);
  23448. PlayerTextDrawColor(playerid, Players[playerid][pText][29], 16711935);
  23449. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][29], 1);
  23450. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][29], 1);
  23451. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][29], 0);
  23452. Players[playerid][pText][30] = CreatePlayerTextDraw(playerid, 531.000000, 106.000000, "-");
  23453. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][30], 255);
  23454. PlayerTextDrawFont(playerid, Players[playerid][pText][30], 1);
  23455. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][30], 3.419998, 1.000000);
  23456. PlayerTextDrawColor(playerid, Players[playerid][pText][30], -1);
  23457. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][30], 0);
  23458. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][30], 1);
  23459. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][30], 1);
  23460. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][30], 0);
  23461. Players[playerid][pText][31] = CreatePlayerTextDraw(playerid, 572.000000, 102.000000, ".");
  23462. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][31], 255);
  23463. PlayerTextDrawFont(playerid, Players[playerid][pText][31], 1);
  23464. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][31], 0.470000, 1.400000);
  23465. PlayerTextDrawColor(playerid, Players[playerid][pText][31], -1);
  23466. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][31], 1);
  23467. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][31], 1);
  23468. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][31], 0);
  23469. Players[playerid][pText][32] = CreatePlayerTextDraw(playerid, 558.000000, 118.000000, "100%");
  23470. PlayerTextDrawAlignment(playerid, Players[playerid][pText][32], 2);
  23471. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][32], 255);
  23472. PlayerTextDrawFont(playerid, Players[playerid][pText][32], 2);
  23473. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][32], 0.319999, 1.100000);
  23474. PlayerTextDrawColor(playerid, Players[playerid][pText][32], -1);
  23475. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][32], 1);
  23476. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][32], 1);
  23477. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][32], 0);
  23478. Players[playerid][pText][33] = CreatePlayerTextDraw(playerid, 34.500000, 277.000000, "hud:radar_burgershot");
  23479. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][33], 255);
  23480. PlayerTextDrawFont(playerid, Players[playerid][pText][33], 4);
  23481. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][33], 0.500000, 0.899999);
  23482. PlayerTextDrawColor(playerid, Players[playerid][pText][33], -1);
  23483. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][33], 0);
  23484. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][33], 1);
  23485. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][33], 1);
  23486. PlayerTextDrawUseBox(playerid, Players[playerid][pText][33], 1);
  23487. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][33], 255);
  23488. PlayerTextDrawTextSize(playerid, Players[playerid][pText][33], 21.000000, 17.000000);
  23489. Players[playerid][pText][34] = CreatePlayerTextDraw(playerid, 35.500000, 298.000000, "hud:radar_datedrink");
  23490. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][34], 255);
  23491. PlayerTextDrawFont(playerid, Players[playerid][pText][34], 4);
  23492. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][34], 0.500000, 0.899999);
  23493. PlayerTextDrawColor(playerid, Players[playerid][pText][34], -1);
  23494. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][34], 0);
  23495. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][34], 1);
  23496. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][34], 1);
  23497. PlayerTextDrawUseBox(playerid, Players[playerid][pText][34], 1);
  23498. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][34], 255);
  23499. PlayerTextDrawTextSize(playerid, Players[playerid][pText][34], 20.000000, 17.000000);
  23500. Players[playerid][pText][37] = CreatePlayerTextDraw(playerid, -10.000000, 435.000000, "_");
  23501. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][37], 255);
  23502. PlayerTextDrawFont(playerid, Players[playerid][pText][37], 1);
  23503. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][37], 0.500000, 1.399999);
  23504. PlayerTextDrawColor(playerid, Players[playerid][pText][37], -1);
  23505. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][37], 0);
  23506. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][37], 1);
  23507. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][37], 1);
  23508. PlayerTextDrawUseBox(playerid, Players[playerid][pText][37], 1);
  23509. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][37], 286331221);
  23510. PlayerTextDrawTextSize(playerid, Players[playerid][pText][37], 650.000000, 10.000000);
  23511. Players[playerid][pText][38] = CreatePlayerTextDraw(playerid, 320.000000, 435.000000, "Accounts: ~y~0~w~ - Player Record: ~y~N/A");
  23512. PlayerTextDrawAlignment(playerid, Players[playerid][pText][38], 2);
  23513. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][38], 255);
  23514. PlayerTextDrawFont(playerid, Players[playerid][pText][38], 2);
  23515. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][38], 0.259999, 1.100000);
  23516. PlayerTextDrawColor(playerid, Players[playerid][pText][38], -1);
  23517. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][38], 1);
  23518. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][38], 1);
  23519. Players[playerid][pText][39] = CreatePlayerTextDraw(playerid, 426.000000, 171.000000, "_");
  23520. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][39], 255);
  23521. PlayerTextDrawFont(playerid, Players[playerid][pText][39], 1);
  23522. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][39], 0.500000, 1.000000);
  23523. PlayerTextDrawColor(playerid, Players[playerid][pText][39], -1);
  23524. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][39], 0);
  23525. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][39], 1);
  23526. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][39], 1);
  23527. PlayerTextDrawUseBox(playerid, Players[playerid][pText][39], 1);
  23528. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][39], 119);
  23529. PlayerTextDrawTextSize(playerid, Players[playerid][pText][39], 217.000000, 0.000000);
  23530. Players[playerid][pText][40] = CreatePlayerTextDraw(playerid, 426.000000, 171.000000, "_");
  23531. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][40], 255);
  23532. PlayerTextDrawFont(playerid, Players[playerid][pText][40], 1);
  23533. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][40], 0.509998, 14.399996);
  23534. PlayerTextDrawColor(playerid, Players[playerid][pText][40], -1);
  23535. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][40], 0);
  23536. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][40], 1);
  23537. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][40], 1);
  23538. PlayerTextDrawUseBox(playerid, Players[playerid][pText][40], 1);
  23539. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][40], 85);
  23540. PlayerTextDrawTextSize(playerid, Players[playerid][pText][40], 217.000000, 0.000000);
  23541. Players[playerid][pText][41] = CreatePlayerTextDraw(playerid, 222.000000, 170.000000, "My Weapons");
  23542. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][41], 255);
  23543. PlayerTextDrawFont(playerid, Players[playerid][pText][41], 2);
  23544. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][41], 0.280000, 1.100000);
  23545. PlayerTextDrawColor(playerid, Players[playerid][pText][41], -1);
  23546. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][41], 1);
  23547. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][41], 1);
  23548. Players[playerid][pText][42] = CreatePlayerTextDraw(playerid, 229.000000, 188.000000, "_");
  23549. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][42], 255);
  23550. PlayerTextDrawFont(playerid, Players[playerid][pText][42], 1);
  23551. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][42], 0.500000, 3.299998);
  23552. PlayerTextDrawColor(playerid, Players[playerid][pText][42], -1);
  23553. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][42], 0);
  23554. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][42], 1);
  23555. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][42], 1);
  23556. PlayerTextDrawUseBox(playerid, Players[playerid][pText][42], 1);
  23557. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][42], 34);
  23558. PlayerTextDrawTextSize(playerid, Players[playerid][pText][42], 413.000000, 0.000000);
  23559. Players[playerid][pText][43] = CreatePlayerTextDraw(playerid, 232.000000, 191.000000, "~y~Melee~w~~n~No Weapon");
  23560. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][43], 255);
  23561. PlayerTextDrawFont(playerid, Players[playerid][pText][43], 2);
  23562. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][43], 0.250000, 1.100000);
  23563. PlayerTextDrawColor(playerid, Players[playerid][pText][43], -1);
  23564. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][43], 1);
  23565. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][43], 1);
  23566. Players[playerid][pText][44] = CreatePlayerTextDraw(playerid, 386.000000, 190.000000, "Unequip");
  23567. PlayerTextDrawAlignment(playerid, Players[playerid][pText][44], 2);
  23568. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][44], 255);
  23569. PlayerTextDrawFont(playerid, Players[playerid][pText][44], 2);
  23570. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][44], 0.230000, 1.099998);
  23571. PlayerTextDrawColor(playerid, Players[playerid][pText][44], -1);
  23572. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][44], 1);
  23573. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][44], 1);
  23574. PlayerTextDrawUseBox(playerid, Players[playerid][pText][44], 1);
  23575. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][44], -205);
  23576. PlayerTextDrawTextSize(playerid, Players[playerid][pText][44], 18.000000, 48.000000);
  23577. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][44], 1);
  23578. Players[playerid][pText][45] = CreatePlayerTextDraw(playerid, 386.000000, 205.000000, "Discard");
  23579. PlayerTextDrawAlignment(playerid, Players[playerid][pText][45], 2);
  23580. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][45], 255);
  23581. PlayerTextDrawFont(playerid, Players[playerid][pText][45], 2);
  23582. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][45], 0.230000, 1.099998);
  23583. PlayerTextDrawColor(playerid, Players[playerid][pText][45], -1);
  23584. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][45], 1);
  23585. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][45], 1);
  23586. PlayerTextDrawUseBox(playerid, Players[playerid][pText][45], 1);
  23587. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][45], -205);
  23588. PlayerTextDrawTextSize(playerid, Players[playerid][pText][45], 18.000000, 48.000000);
  23589. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][45], 1);
  23590. Players[playerid][pText][46] = CreatePlayerTextDraw(playerid, 229.000000, 226.000000, "_");
  23591. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][46], 255);
  23592. PlayerTextDrawFont(playerid, Players[playerid][pText][46], 1);
  23593. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][46], 0.500000, 3.299998);
  23594. PlayerTextDrawColor(playerid, Players[playerid][pText][46], -1);
  23595. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][46], 0);
  23596. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][46], 1);
  23597. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][46], 1);
  23598. PlayerTextDrawUseBox(playerid, Players[playerid][pText][46], 1);
  23599. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][46], 51);
  23600. PlayerTextDrawTextSize(playerid, Players[playerid][pText][46], 413.000000, 0.000000);
  23601. Players[playerid][pText][47] = CreatePlayerTextDraw(playerid, 232.000000, 229.000000, "~y~Primary~w~~n~No Weapon");
  23602. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][47], 255);
  23603. PlayerTextDrawFont(playerid, Players[playerid][pText][47], 2);
  23604. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][47], 0.250000, 1.100000);
  23605. PlayerTextDrawColor(playerid, Players[playerid][pText][47], -1);
  23606. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][47], 1);
  23607. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][47], 1);
  23608. Players[playerid][pText][48] = CreatePlayerTextDraw(playerid, 386.000000, 228.000000, "Unequip");
  23609. PlayerTextDrawAlignment(playerid, Players[playerid][pText][48], 2);
  23610. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][48], 255);
  23611. PlayerTextDrawFont(playerid, Players[playerid][pText][48], 2);
  23612. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][48], 0.230000, 1.099998);
  23613. PlayerTextDrawColor(playerid, Players[playerid][pText][48], -1);
  23614. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][48], 1);
  23615. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][48], 1);
  23616. PlayerTextDrawUseBox(playerid, Players[playerid][pText][48], 1);
  23617. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][48], -205);
  23618. PlayerTextDrawTextSize(playerid, Players[playerid][pText][48], 18.000000, 48.000000);
  23619. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][48], 1);
  23620. Players[playerid][pText][49] = CreatePlayerTextDraw(playerid, 386.000000, 243.000000, "Discard");
  23621. PlayerTextDrawAlignment(playerid, Players[playerid][pText][49], 2);
  23622. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][49], 255);
  23623. PlayerTextDrawFont(playerid, Players[playerid][pText][49], 2);
  23624. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][49], 0.230000, 1.099998);
  23625. PlayerTextDrawColor(playerid, Players[playerid][pText][49], -1);
  23626. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][49], 1);
  23627. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][49], 1);
  23628. PlayerTextDrawUseBox(playerid, Players[playerid][pText][49], 1);
  23629. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][49], -205);
  23630. PlayerTextDrawTextSize(playerid, Players[playerid][pText][49], 18.000000, 48.000000);
  23631. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][49], 1);
  23632. Players[playerid][pText][50] = CreatePlayerTextDraw(playerid, 229.000000, 264.000000, "_");
  23633. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][50], 255);
  23634. PlayerTextDrawFont(playerid, Players[playerid][pText][50], 1);
  23635. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][50], 0.500000, 3.299998);
  23636. PlayerTextDrawColor(playerid, Players[playerid][pText][50], -1);
  23637. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][50], 0);
  23638. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][50], 1);
  23639. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][50], 1);
  23640. PlayerTextDrawUseBox(playerid, Players[playerid][pText][50], 1);
  23641. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][50], 51);
  23642. PlayerTextDrawTextSize(playerid, Players[playerid][pText][50], 413.000000, 0.000000);
  23643. Players[playerid][pText][51] = CreatePlayerTextDraw(playerid, 232.000000, 267.000000, "~y~Secondary~w~~n~No Weapon");
  23644. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][51], 255);
  23645. PlayerTextDrawFont(playerid, Players[playerid][pText][51], 2);
  23646. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][51], 0.250000, 1.100000);
  23647. PlayerTextDrawColor(playerid, Players[playerid][pText][51], -1);
  23648. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][51], 1);
  23649. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][51], 1);
  23650. Players[playerid][pText][52] = CreatePlayerTextDraw(playerid, 386.000000, 266.000000, "Unequip");
  23651. PlayerTextDrawAlignment(playerid, Players[playerid][pText][52], 2);
  23652. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][52], 255);
  23653. PlayerTextDrawFont(playerid, Players[playerid][pText][52], 2);
  23654. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][52], 0.230000, 1.099998);
  23655. PlayerTextDrawColor(playerid, Players[playerid][pText][52], -1);
  23656. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][52], 1);
  23657. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][52], 1);
  23658. PlayerTextDrawUseBox(playerid, Players[playerid][pText][52], 1);
  23659. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][52], -205);
  23660. PlayerTextDrawTextSize(playerid, Players[playerid][pText][52], 18.000000, 48.000000);
  23661. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][52], 1);
  23662. Players[playerid][pText][53] = CreatePlayerTextDraw(playerid, 386.000000, 281.000000, "Discard");
  23663. PlayerTextDrawAlignment(playerid, Players[playerid][pText][53], 2);
  23664. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][53], 255);
  23665. PlayerTextDrawFont(playerid, Players[playerid][pText][53], 2);
  23666. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][53], 0.230000, 1.099998);
  23667. PlayerTextDrawColor(playerid, Players[playerid][pText][53], -1);
  23668. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][53], 1);
  23669. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][53], 1);
  23670. PlayerTextDrawUseBox(playerid, Players[playerid][pText][53], 1);
  23671. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][53], -205);
  23672. PlayerTextDrawTextSize(playerid, Players[playerid][pText][53], 18.000000, 48.000000);
  23673. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][53], 1);
  23674. Players[playerid][pText][54] = CreatePlayerTextDraw(playerid, 34.000000, 319.000000, "hud:radar_gym");
  23675. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][54], 255);
  23676. PlayerTextDrawFont(playerid, Players[playerid][pText][54], 4);
  23677. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][54], 0.500000, 0.899999);
  23678. PlayerTextDrawColor(playerid, Players[playerid][pText][54], -1);
  23679. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][54], 0);
  23680. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][54], 1);
  23681. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][54], 1);
  23682. PlayerTextDrawUseBox(playerid, Players[playerid][pText][54], 1);
  23683. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][54], 255);
  23684. PlayerTextDrawTextSize(playerid, Players[playerid][pText][54], 22.000000, 17.000000);
  23685. Players[playerid][pText][55] = CreatePlayerTextDraw(playerid, 630.000000, 182.000000, "_");
  23686. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][55], 255);
  23687. PlayerTextDrawFont(playerid, Players[playerid][pText][55], 1);
  23688. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][55], 0.500000, 12.800000);
  23689. PlayerTextDrawColor(playerid, Players[playerid][pText][55], -1);
  23690. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][55], 0);
  23691. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][55], 1);
  23692. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][55], 1);
  23693. PlayerTextDrawUseBox(playerid, Players[playerid][pText][55], 1);
  23694. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][55], 102);
  23695. PlayerTextDrawTextSize(playerid, Players[playerid][pText][55], 492.000000, 0.000000);
  23696. Players[playerid][pText][56] = CreatePlayerTextDraw(playerid, 492.000000, 171.000000, "Property");
  23697. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][56], 255);
  23698. PlayerTextDrawFont(playerid, Players[playerid][pText][56], 0);
  23699. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][56], 0.659999, 1.899999);
  23700. PlayerTextDrawColor(playerid, Players[playerid][pText][56], -1);
  23701. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][56], 1);
  23702. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][56], 1);
  23703. Players[playerid][pText][57] = CreatePlayerTextDraw(playerid, 499.000000, 193.000000, "~g~Price~w~~n~$10,000~n~~n~~g~Address:~w~~n~32 Ganton Street~n~~n~~g~Location:~w~~n~Mulholland");
  23704. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][57], 255);
  23705. PlayerTextDrawFont(playerid, Players[playerid][pText][57], 2);
  23706. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][57], 0.210000, 1.000000);
  23707. PlayerTextDrawColor(playerid, Players[playerid][pText][57], -1);
  23708. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][57], 1);
  23709. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][57], 1);
  23710. Players[playerid][pText][58] = CreatePlayerTextDraw(playerid, 484.000000, 123.000000, "Power");
  23711. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][58], 255);
  23712. PlayerTextDrawFont(playerid, Players[playerid][pText][58], 2);
  23713. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][58], 0.360000, 1.700000);
  23714. PlayerTextDrawColor(playerid, Players[playerid][pText][58], -1429936641);
  23715. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][58], 1);
  23716. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][58], 1);
  23717. Players[playerid][pText][59] = CreatePlayerTextDraw(playerid, 497.000000, 139.000000, "Reps");
  23718. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][59], 255);
  23719. PlayerTextDrawFont(playerid, Players[playerid][pText][59], 2);
  23720. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][59], 0.360000, 1.700000);
  23721. PlayerTextDrawColor(playerid, Players[playerid][pText][59], -1429936641);
  23722. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][59], 1);
  23723. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][59], 1);
  23724. Players[playerid][pText][60] = CreatePlayerTextDraw(playerid, 608.000000, 139.000000, "0");
  23725. PlayerTextDrawAlignment(playerid, Players[playerid][pText][60], 3);
  23726. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][60], 255);
  23727. PlayerTextDrawFont(playerid, Players[playerid][pText][60], 2);
  23728. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][60], 0.360000, 1.700000);
  23729. PlayerTextDrawColor(playerid, Players[playerid][pText][60], -1429936641);
  23730. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][60], 1);
  23731. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][60], 1);
  23732. Players[playerid][pText][61] = CreatePlayerTextDraw(playerid, 469.000000, 156.000000, "Distance");
  23733. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][61], 255);
  23734. PlayerTextDrawFont(playerid, Players[playerid][pText][61], 2);
  23735. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][61], 0.360000, 1.700000);
  23736. PlayerTextDrawColor(playerid, Players[playerid][pText][61], -1429936641);
  23737. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][61], 1);
  23738. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][61], 1);
  23739. Players[playerid][pText][62] = CreatePlayerTextDraw(playerid, 608.000000, 156.000000, "0");
  23740. PlayerTextDrawAlignment(playerid, Players[playerid][pText][62], 3);
  23741. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][62], 255);
  23742. PlayerTextDrawFont(playerid, Players[playerid][pText][62], 2);
  23743. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][62], 0.360000, 1.700000);
  23744. PlayerTextDrawColor(playerid, Players[playerid][pText][62], -1429936641);
  23745. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][62], 1);
  23746. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][62], 1);
  23747. Players[playerid][pText][63] = CreatePlayerTextDraw(playerid, 629.000000, 183.000000, "_");
  23748. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][63], 255);
  23749. PlayerTextDrawFont(playerid, Players[playerid][pText][63], 1);
  23750. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][63], 0.500000, 1.000000);
  23751. PlayerTextDrawColor(playerid, Players[playerid][pText][63], -1);
  23752. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][63], 0);
  23753. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][63], 1);
  23754. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][63], 1);
  23755. PlayerTextDrawUseBox(playerid, Players[playerid][pText][63], 1);
  23756. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][63], 102);
  23757. PlayerTextDrawTextSize(playerid, Players[playerid][pText][63], 487.000000, 1.000000);
  23758. Players[playerid][pText][64] = CreatePlayerTextDraw(playerid, 629.000000, 183.000000, "_");
  23759. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][64], 255);
  23760. PlayerTextDrawFont(playerid, Players[playerid][pText][64], 1);
  23761. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][64], 0.500000, 9.799998);
  23762. PlayerTextDrawColor(playerid, Players[playerid][pText][64], -1);
  23763. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][64], 0);
  23764. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][64], 1);
  23765. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][64], 1);
  23766. PlayerTextDrawUseBox(playerid, Players[playerid][pText][64], 1);
  23767. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][64], 68);
  23768. PlayerTextDrawTextSize(playerid, Players[playerid][pText][64], 487.000000, 1.000000);
  23769. Players[playerid][pText][65] = CreatePlayerTextDraw(playerid, 492.000000, 182.000000, "Glasses");
  23770. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][65], 255);
  23771. PlayerTextDrawFont(playerid, Players[playerid][pText][65], 2);
  23772. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][65], 0.270000, 1.100000);
  23773. PlayerTextDrawColor(playerid, Players[playerid][pText][65], -1);
  23774. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][65], 1);
  23775. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][65], 1);
  23776. Players[playerid][pText][66] = CreatePlayerTextDraw(playerid, 526.000000, 198.000000, "Preview");
  23777. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][66], 85);
  23778. PlayerTextDrawFont(playerid, Players[playerid][pText][66], 5);
  23779. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][66], 0.500000, 1.000000);
  23780. PlayerTextDrawColor(playerid, Players[playerid][pText][66], -1);
  23781. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][66], 0);
  23782. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][66], 1);
  23783. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][66], 1);
  23784. PlayerTextDrawUseBox(playerid, Players[playerid][pText][66], 1);
  23785. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][66], 0);
  23786. PlayerTextDrawTextSize(playerid, Players[playerid][pText][66], 60.000000, 50.000000);
  23787. PlayerTextDrawSetPreviewModel(playerid, Players[playerid][pText][66], 19006);
  23788. PlayerTextDrawSetPreviewRot(playerid, Players[playerid][pText][66], 0.0000, 0.0000, 90.0000, 1.0000);
  23789. Players[playerid][pText][67] = CreatePlayerTextDraw(playerid, 513.000000, 255.000000, "<<");
  23790. PlayerTextDrawAlignment(playerid, Players[playerid][pText][67], 2);
  23791. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][67], 102);
  23792. PlayerTextDrawFont(playerid, Players[playerid][pText][67], 2);
  23793. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][67], 0.230000, 1.200000);
  23794. PlayerTextDrawColor(playerid, Players[playerid][pText][67], -1);
  23795. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][67], 1);
  23796. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][67], 1);
  23797. PlayerTextDrawUseBox(playerid, Players[playerid][pText][67], 1);
  23798. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][67], 119);
  23799. PlayerTextDrawTextSize(playerid, Players[playerid][pText][67], 18.000000, 22.000000);
  23800. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][67], 1);
  23801. Players[playerid][pText][68] = CreatePlayerTextDraw(playerid, 604.000000, 255.000000, ">>");
  23802. PlayerTextDrawAlignment(playerid, Players[playerid][pText][68], 2);
  23803. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][68], 102);
  23804. PlayerTextDrawFont(playerid, Players[playerid][pText][68], 2);
  23805. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][68], 0.230000, 1.200000);
  23806. PlayerTextDrawColor(playerid, Players[playerid][pText][68], -1);
  23807. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][68], 1);
  23808. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][68], 1);
  23809. PlayerTextDrawUseBox(playerid, Players[playerid][pText][68], 1);
  23810. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][68], 119);
  23811. PlayerTextDrawTextSize(playerid, Players[playerid][pText][68], 18.000000, 22.000000);
  23812. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][68], 1);
  23813. Players[playerid][pText][69] = CreatePlayerTextDraw(playerid, 558.000000, 255.000000, "Preview");
  23814. PlayerTextDrawAlignment(playerid, Players[playerid][pText][69], 2);
  23815. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][69], 102);
  23816. PlayerTextDrawFont(playerid, Players[playerid][pText][69], 2);
  23817. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][69], 0.209999, 1.200000);
  23818. PlayerTextDrawColor(playerid, Players[playerid][pText][69], -1);
  23819. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][69], 1);
  23820. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][69], 1);
  23821. PlayerTextDrawUseBox(playerid, Players[playerid][pText][69], 1);
  23822. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][69], 119);
  23823. PlayerTextDrawTextSize(playerid, Players[playerid][pText][69], 18.000000, 54.000000);
  23824. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][69], 1);
  23825. Players[playerid][pText][70] = CreatePlayerTextDraw(playerid, 630.000000, 170.000000, "_");
  23826. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][70], 255);
  23827. PlayerTextDrawFont(playerid, Players[playerid][pText][70], 1);
  23828. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][70], 0.500000, 1.000000);
  23829. PlayerTextDrawColor(playerid, Players[playerid][pText][70], -1);
  23830. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][70], 0);
  23831. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][70], 1);
  23832. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][70], 1);
  23833. PlayerTextDrawUseBox(playerid, Players[playerid][pText][70], 1);
  23834. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][70], 85);
  23835. PlayerTextDrawTextSize(playerid, Players[playerid][pText][70], 447.000000, 0.000000);
  23836. Players[playerid][pText][71] = CreatePlayerTextDraw(playerid, 630.000000, 170.000000, "_");
  23837. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][71], 255);
  23838. PlayerTextDrawFont(playerid, Players[playerid][pText][71], 1);
  23839. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][71], 0.509999, 11.000000);
  23840. PlayerTextDrawColor(playerid, Players[playerid][pText][71], -1);
  23841. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][71], 0);
  23842. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][71], 1);
  23843. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][71], 1);
  23844. PlayerTextDrawUseBox(playerid, Players[playerid][pText][71], 1);
  23845. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][71], 51);
  23846. PlayerTextDrawTextSize(playerid, Players[playerid][pText][71], 447.000000, 0.000000);
  23847. Players[playerid][pText][72] = CreatePlayerTextDraw(playerid, 452.000000, 168.000000, "Kitchen - 1/12");
  23848. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][72], 255);
  23849. PlayerTextDrawFont(playerid, Players[playerid][pText][72], 2);
  23850. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][72], 0.280000, 1.300000);
  23851. PlayerTextDrawColor(playerid, Players[playerid][pText][72], -1);
  23852. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][72], 1);
  23853. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][72], 1);
  23854. Players[playerid][pText][73] = CreatePlayerTextDraw(playerid, 518.000000, 253.000000, "<<");
  23855. PlayerTextDrawAlignment(playerid, Players[playerid][pText][73], 2);
  23856. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][73], 255);
  23857. PlayerTextDrawFont(playerid, Players[playerid][pText][73], 2);
  23858. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][73], 0.260000, 1.400000);
  23859. PlayerTextDrawColor(playerid, Players[playerid][pText][73], -1);
  23860. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][73], 1);
  23861. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][73], 1);
  23862. PlayerTextDrawUseBox(playerid, Players[playerid][pText][73], 1);
  23863. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][73], 85);
  23864. PlayerTextDrawTextSize(playerid, Players[playerid][pText][73], 18.000000, 25.000000);
  23865. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][73], 1);
  23866. Players[playerid][pText][74] = CreatePlayerTextDraw(playerid, 564.000000, 253.000000, "Preview");
  23867. PlayerTextDrawAlignment(playerid, Players[playerid][pText][74], 2);
  23868. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][74], 255);
  23869. PlayerTextDrawFont(playerid, Players[playerid][pText][74], 2);
  23870. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][74], 0.260000, 1.400000);
  23871. PlayerTextDrawColor(playerid, Players[playerid][pText][74], -1);
  23872. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][74], 1);
  23873. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][74], 1);
  23874. PlayerTextDrawUseBox(playerid, Players[playerid][pText][74], 1);
  23875. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][74], 85);
  23876. PlayerTextDrawTextSize(playerid, Players[playerid][pText][74], 18.000000, 54.000000);
  23877. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][74], 1);
  23878. Players[playerid][pText][75] = CreatePlayerTextDraw(playerid, 610.000000, 253.000000, ">>");
  23879. PlayerTextDrawAlignment(playerid, Players[playerid][pText][75], 2);
  23880. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][75], 255);
  23881. PlayerTextDrawFont(playerid, Players[playerid][pText][75], 2);
  23882. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][75], 0.260000, 1.400000);
  23883. PlayerTextDrawColor(playerid, Players[playerid][pText][75], -1);
  23884. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][75], 1);
  23885. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][75], 1);
  23886. PlayerTextDrawUseBox(playerid, Players[playerid][pText][75], 1);
  23887. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][75], 85);
  23888. PlayerTextDrawTextSize(playerid, Players[playerid][pText][75], 18.000000, 25.000000);
  23889. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][75], 1);
  23890. Players[playerid][pText][76] = CreatePlayerTextDraw(playerid, 455.000000, 184.000000, "_");
  23891. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][76], 119);
  23892. PlayerTextDrawFont(playerid, Players[playerid][pText][76], 5);
  23893. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][76], 0.800000, 5.000000);
  23894. PlayerTextDrawColor(playerid, Players[playerid][pText][76], -1);
  23895. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][76], 0);
  23896. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][76], 1);
  23897. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][76], 1);
  23898. PlayerTextDrawUseBox(playerid, Players[playerid][pText][76], 1);
  23899. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][76], 0);
  23900. PlayerTextDrawTextSize(playerid, Players[playerid][pText][76], 70.000000, 59.000000);
  23901. PlayerTextDrawSetPreviewModel(playerid, Players[playerid][pText][76], 2131);
  23902. PlayerTextDrawSetPreviewRot(playerid, Players[playerid][pText][76], 0.0000, 0.0000, 0.0000, 1.0000);
  23903. Players[playerid][pText][77] = CreatePlayerTextDraw(playerid, 532.000000, 184.000000, "~g~Model:~w~~n~CJ_KITCH2_MID~n~~n~~g~Price:~w~~n~$25");
  23904. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][77], 255);
  23905. PlayerTextDrawFont(playerid, Players[playerid][pText][77], 2);
  23906. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][77], 0.230000, 1.200000);
  23907. PlayerTextDrawColor(playerid, Players[playerid][pText][77], -1);
  23908. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][77], 1);
  23909. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][77], 1);
  23910. Players[playerid][pText][78] = CreatePlayerTextDraw(playerid, 633.000000, 168.000000, "_");
  23911. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][78], 255);
  23912. PlayerTextDrawFont(playerid, Players[playerid][pText][78], 1);
  23913. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][78], 0.500000, 1.000000);
  23914. PlayerTextDrawColor(playerid, Players[playerid][pText][78], -1);
  23915. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][78], 0);
  23916. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][78], 1);
  23917. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][78], 1);
  23918. PlayerTextDrawUseBox(playerid, Players[playerid][pText][78], 1);
  23919. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][78], 85);
  23920. PlayerTextDrawTextSize(playerid, Players[playerid][pText][78], 492.000000, 40.000000);
  23921. Players[playerid][pText][79] = CreatePlayerTextDraw(playerid, 633.000000, 168.000000, "_");
  23922. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][79], 255);
  23923. PlayerTextDrawFont(playerid, Players[playerid][pText][79], 1);
  23924. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][79], 0.500000, 16.200000);
  23925. PlayerTextDrawColor(playerid, Players[playerid][pText][79], -1);
  23926. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][79], 0);
  23927. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][79], 1);
  23928. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][79], 1);
  23929. PlayerTextDrawUseBox(playerid, Players[playerid][pText][79], 1);
  23930. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][79], 85);
  23931. PlayerTextDrawTextSize(playerid, Players[playerid][pText][79], 492.000000, 40.000000);
  23932. Players[playerid][pText][80] = CreatePlayerTextDraw(playerid, 496.000000, 167.000000, "Dealership");
  23933. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][80], 255);
  23934. PlayerTextDrawFont(playerid, Players[playerid][pText][80], 2);
  23935. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][80], 0.290000, 1.100000);
  23936. PlayerTextDrawColor(playerid, Players[playerid][pText][80], -1);
  23937. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][80], 1);
  23938. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][80], 1);
  23939. Players[playerid][pText][81] = CreatePlayerTextDraw(playerid, 507.000000, 151.000000, "_");
  23940. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][81], 0);
  23941. PlayerTextDrawFont(playerid, Players[playerid][pText][81], 5);
  23942. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][81], 0.500000, 1.000000);
  23943. PlayerTextDrawColor(playerid, Players[playerid][pText][81], -1);
  23944. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][81], 0);
  23945. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][81], 1);
  23946. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][81], 1);
  23947. PlayerTextDrawUseBox(playerid, Players[playerid][pText][81], 1);
  23948. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][81], 0);
  23949. PlayerTextDrawTextSize(playerid, Players[playerid][pText][81], 106.000000, 101.000000);
  23950. PlayerTextDrawSetPreviewModel(playerid, Players[playerid][pText][81], 400);
  23951. PlayerTextDrawSetPreviewRot(playerid, Players[playerid][pText][81], -16.0000, 0.0000, -55.0000, 1.0000);
  23952. Players[playerid][pText][82] = CreatePlayerTextDraw(playerid, 500.000000, 234.000000, "~g~Vehicle:~n~~w~Bravura~n~~n~~g~Price:~n~~w~$15,000");
  23953. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][82], 255);
  23954. PlayerTextDrawFont(playerid, Players[playerid][pText][82], 2);
  23955. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][82], 0.230000, 1.100000);
  23956. PlayerTextDrawColor(playerid, Players[playerid][pText][82], -1);
  23957. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][82], 1);
  23958. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][82], 1);
  23959. Players[playerid][pText][83] = CreatePlayerTextDraw(playerid, 514.000000, 297.000000, "<<");
  23960. PlayerTextDrawAlignment(playerid, Players[playerid][pText][83], 2);
  23961. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][83], 255);
  23962. PlayerTextDrawFont(playerid, Players[playerid][pText][83], 2);
  23963. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][83], 0.280000, 1.400000);
  23964. PlayerTextDrawColor(playerid, Players[playerid][pText][83], -1);
  23965. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][83], 1);
  23966. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][83], 1);
  23967. PlayerTextDrawUseBox(playerid, Players[playerid][pText][83], 1);
  23968. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][83], 85);
  23969. PlayerTextDrawTextSize(playerid, Players[playerid][pText][83], 60.000000, 22.000000);
  23970. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][83], 1);
  23971. Players[playerid][pText][84] = CreatePlayerTextDraw(playerid, 562.000000, 297.000000, "Confirm");
  23972. PlayerTextDrawAlignment(playerid, Players[playerid][pText][84], 2);
  23973. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][84], 255);
  23974. PlayerTextDrawFont(playerid, Players[playerid][pText][84], 2);
  23975. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][84], 0.290000, 1.400000);
  23976. PlayerTextDrawColor(playerid, Players[playerid][pText][84], -1);
  23977. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][84], 1);
  23978. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][84], 1);
  23979. PlayerTextDrawUseBox(playerid, Players[playerid][pText][84], 1);
  23980. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][84], 85);
  23981. PlayerTextDrawTextSize(playerid, Players[playerid][pText][84], 60.000000, 60.000000);
  23982. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][84], 1);
  23983. Players[playerid][pText][85] = CreatePlayerTextDraw(playerid, 610.000000, 297.000000, ">>");
  23984. PlayerTextDrawAlignment(playerid, Players[playerid][pText][85], 2);
  23985. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][85], 255);
  23986. PlayerTextDrawFont(playerid, Players[playerid][pText][85], 2);
  23987. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][85], 0.280000, 1.400000);
  23988. PlayerTextDrawColor(playerid, Players[playerid][pText][85], -1);
  23989. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][85], 1);
  23990. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][85], 1);
  23991. PlayerTextDrawUseBox(playerid, Players[playerid][pText][85], 1);
  23992. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][85], 85);
  23993. PlayerTextDrawTextSize(playerid, Players[playerid][pText][85], 60.000000, 22.000000);
  23994. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][85], 1);
  23995. Players[playerid][pText][86] = CreatePlayerTextDraw(playerid, 160.000000, 173.000000, "_");
  23996. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][86], 255);
  23997. PlayerTextDrawFont(playerid, Players[playerid][pText][86], 1);
  23998. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][86], 0.500000, 14.599998);
  23999. PlayerTextDrawColor(playerid, Players[playerid][pText][86], -1);
  24000. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][86], 0);
  24001. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][86], 1);
  24002. PlayerTextDrawSetShadow(playerid, Players[playerid][pText][86], 1);
  24003. PlayerTextDrawUseBox(playerid, Players[playerid][pText][86], 1);
  24004. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][86], 119);
  24005. PlayerTextDrawTextSize(playerid, Players[playerid][pText][86], 10.000000, 20.000000);
  24006. Players[playerid][pText][87] = CreatePlayerTextDraw(playerid, 9.000000, 162.000000, "Character Setup");
  24007. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][87], 255);
  24008. PlayerTextDrawFont(playerid, Players[playerid][pText][87], 0);
  24009. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][87], 0.569999, 1.799998);
  24010. PlayerTextDrawColor(playerid, Players[playerid][pText][87], -1);
  24011. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][87], 1);
  24012. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][87], 1);
  24013. Players[playerid][pText][88] = CreatePlayerTextDraw(playerid, 18.000000, 184.000000, "~g~~h~Gender:");
  24014. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][88], 255);
  24015. PlayerTextDrawFont(playerid, Players[playerid][pText][88], 2);
  24016. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][88], 0.239999, 1.200000);
  24017. PlayerTextDrawColor(playerid, Players[playerid][pText][88], -1);
  24018. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][88], 1);
  24019. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][88], 1);
  24020. Players[playerid][pText][89] = CreatePlayerTextDraw(playerid, 19.000000, 195.000000, "Male");
  24021. PlayerTextDrawTextSize(playerid, Players[playerid][pText][89], 100.000000, 10.000000);
  24022. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][89], 255);
  24023. PlayerTextDrawFont(playerid, Players[playerid][pText][89], 2);
  24024. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][89], 0.239999, 1.100000);
  24025. PlayerTextDrawColor(playerid, Players[playerid][pText][89], -1);
  24026. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][89], 1);
  24027. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][89], 1);
  24028. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][89], true);
  24029. Players[playerid][pText][90] = CreatePlayerTextDraw(playerid, 19.000000, 205.000000, "Female");
  24030. PlayerTextDrawTextSize(playerid, Players[playerid][pText][90], 100.000000, 10.000000);
  24031. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][90], 255);
  24032. PlayerTextDrawFont(playerid, Players[playerid][pText][90], 2);
  24033. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][90], 0.240000, 1.100000);
  24034. PlayerTextDrawColor(playerid, Players[playerid][pText][90], -1);
  24035. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][90], 1);
  24036. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][90], 1);
  24037. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][90], true);
  24038. Players[playerid][pText][91] = CreatePlayerTextDraw(playerid, 18.000000, 225.000000, "~g~~h~Age:");
  24039. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][91], 255);
  24040. PlayerTextDrawFont(playerid, Players[playerid][pText][91], 2);
  24041. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][91], 0.239999, 1.100000);
  24042. PlayerTextDrawColor(playerid, Players[playerid][pText][91], -1);
  24043. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][91], 1);
  24044. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][91], 1);
  24045. Players[playerid][pText][92] = CreatePlayerTextDraw(playerid, 19.000000, 235.000000, "13 years old");
  24046. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][92], 255);
  24047. PlayerTextDrawFont(playerid, Players[playerid][pText][92], 2);
  24048. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][92], 0.230000, 1.100000);
  24049. PlayerTextDrawColor(playerid, Players[playerid][pText][92], -1);
  24050. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][92], 1);
  24051. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][92], 1);
  24052. Players[playerid][pText][93] = CreatePlayerTextDraw(playerid, 123.000000, 235.000000, "-");
  24053. PlayerTextDrawAlignment(playerid, Players[playerid][pText][93], 2);
  24054. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][93], 255);
  24055. PlayerTextDrawFont(playerid, Players[playerid][pText][93], 0);
  24056. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][93], 0.589999, 1.200000);
  24057. PlayerTextDrawColor(playerid, Players[playerid][pText][93], -1);
  24058. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][93], 1);
  24059. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][93], 1);
  24060. PlayerTextDrawUseBox(playerid, Players[playerid][pText][93], 1);
  24061. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][93], 68);
  24062. PlayerTextDrawTextSize(playerid, Players[playerid][pText][93], 20.000000, 15.000000);
  24063. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][93], true);
  24064. Players[playerid][pText][94] = CreatePlayerTextDraw(playerid, 143.000000, 235.000000, "+");
  24065. PlayerTextDrawAlignment(playerid, Players[playerid][pText][94], 2);
  24066. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][94], 255);
  24067. PlayerTextDrawFont(playerid, Players[playerid][pText][94], 0);
  24068. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][94], 0.389999, 1.200000);
  24069. PlayerTextDrawColor(playerid, Players[playerid][pText][94], -1);
  24070. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][94], 1);
  24071. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][94], 1);
  24072. PlayerTextDrawUseBox(playerid, Players[playerid][pText][94], 1);
  24073. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][94], 68);
  24074. PlayerTextDrawTextSize(playerid, Players[playerid][pText][94], 20.000000, 15.000000);
  24075. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][94], true);
  24076. Players[playerid][pText][95] = CreatePlayerTextDraw(playerid, 18.000000, 256.000000, "~g~~h~Outfit:");
  24077. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][95], 255);
  24078. PlayerTextDrawFont(playerid, Players[playerid][pText][95], 2);
  24079. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][95], 0.239999, 1.100000);
  24080. PlayerTextDrawColor(playerid, Players[playerid][pText][95], -1);
  24081. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][95], 1);
  24082. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][95], 1);
  24083. Players[playerid][pText][96] = CreatePlayerTextDraw(playerid, 19.000000, 266.000000, "Skin: 299");
  24084. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][96], 255);
  24085. PlayerTextDrawFont(playerid, Players[playerid][pText][96], 2);
  24086. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][96], 0.230000, 1.100000);
  24087. PlayerTextDrawColor(playerid, Players[playerid][pText][96], -1);
  24088. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][96], 1);
  24089. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][96], 1);
  24090. Players[playerid][pText][97] = CreatePlayerTextDraw(playerid, 123.000000, 267.000000, "<<");
  24091. PlayerTextDrawAlignment(playerid, Players[playerid][pText][97], 2);
  24092. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][97], 255);
  24093. PlayerTextDrawFont(playerid, Players[playerid][pText][97], 0);
  24094. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][97], 0.219999, 1.200000);
  24095. PlayerTextDrawColor(playerid, Players[playerid][pText][97], -1);
  24096. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][97], 1);
  24097. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][97], 1);
  24098. PlayerTextDrawUseBox(playerid, Players[playerid][pText][97], 1);
  24099. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][97], 68);
  24100. PlayerTextDrawTextSize(playerid, Players[playerid][pText][97], 20.000000, 15.000000);
  24101. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][97], true);
  24102. Players[playerid][pText][98] = CreatePlayerTextDraw(playerid, 143.000000, 267.000000, ">>");
  24103. PlayerTextDrawAlignment(playerid, Players[playerid][pText][98], 2);
  24104. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][98], 255);
  24105. PlayerTextDrawFont(playerid, Players[playerid][pText][98], 0);
  24106. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][98], 0.219999, 1.200000);
  24107. PlayerTextDrawColor(playerid, Players[playerid][pText][98], -1);
  24108. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][98], 1);
  24109. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][98], 1);
  24110. PlayerTextDrawUseBox(playerid, Players[playerid][pText][98], 1);
  24111. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][98], 68);
  24112. PlayerTextDrawTextSize(playerid, Players[playerid][pText][98], 20.000000, 15.000000);
  24113. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][98], true);
  24114. Players[playerid][pText][99] = CreatePlayerTextDraw(playerid, 37.000000, 290.000000, "Reset");
  24115. PlayerTextDrawAlignment(playerid, Players[playerid][pText][99], 2);
  24116. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][99], 255);
  24117. PlayerTextDrawFont(playerid, Players[playerid][pText][99], 2);
  24118. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][99], 0.230000, 1.200000);
  24119. PlayerTextDrawColor(playerid, Players[playerid][pText][99], -1);
  24120. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][99], 1);
  24121. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][99], 1);
  24122. PlayerTextDrawUseBox(playerid, Players[playerid][pText][99], 1);
  24123. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][99], 68);
  24124. PlayerTextDrawTextSize(playerid, Players[playerid][pText][99], 20.000000, 37.000000);
  24125. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][99], true);
  24126. Players[playerid][pText][100] = CreatePlayerTextDraw(playerid, 85.000000, 290.000000, "Confirm");
  24127. PlayerTextDrawAlignment(playerid, Players[playerid][pText][100], 2);
  24128. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][100], 255);
  24129. PlayerTextDrawFont(playerid, Players[playerid][pText][100], 2);
  24130. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][100], 0.230000, 1.200000);
  24131. PlayerTextDrawColor(playerid, Players[playerid][pText][100], -1);
  24132. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][100], 1);
  24133. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][100], 1);
  24134. PlayerTextDrawUseBox(playerid, Players[playerid][pText][100], 1);
  24135. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][100], 68);
  24136. PlayerTextDrawTextSize(playerid, Players[playerid][pText][100], 20.000000, 46.000000);
  24137. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][100], true);
  24138. Players[playerid][pText][101] = CreatePlayerTextDraw(playerid, 133.000000, 290.000000, "Help");
  24139. PlayerTextDrawAlignment(playerid, Players[playerid][pText][101], 2);
  24140. PlayerTextDrawBackgroundColor(playerid, Players[playerid][pText][101], 255);
  24141. PlayerTextDrawFont(playerid, Players[playerid][pText][101], 2);
  24142. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][101], 0.230000, 1.200000);
  24143. PlayerTextDrawColor(playerid, Players[playerid][pText][101], -1);
  24144. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][101], 1);
  24145. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][101], 1);
  24146. PlayerTextDrawUseBox(playerid, Players[playerid][pText][101], 1);
  24147. PlayerTextDrawBoxColor(playerid, Players[playerid][pText][101], 68);
  24148. PlayerTextDrawTextSize(playerid, Players[playerid][pText][101], 20.000000, 37.000000);
  24149. PlayerTextDrawSetSelectable(playerid, Players[playerid][pText][101], true);
  24150. }
  24151. GetNextDealershipCar(company, index)
  24152. {
  24153. index++;
  24154. if (index >= MAX_DEALERSHIP_CARS) {
  24155. index = 0;
  24156. }
  24157. for (new i = index; i < MAX_DEALERSHIP_CARS; i ++)
  24158. {
  24159. if (DealershipCars[i][dcCompany] == Companies[company][cID] && DealershipCars[i][dcModel] > 0) {
  24160. return i;
  24161. }
  24162. }
  24163. return GetFirstDealershipCar(company);
  24164. }
  24165. GetPreviousDealershipCar(company, index)
  24166. {
  24167. if (index - 1 < 0) {
  24168. index = MAX_DEALERSHIP_CARS;
  24169. }
  24170. for (new i = index; --i >= 0; )
  24171. {
  24172. if (DealershipCars[i][dcCompany] == Companies[company][cID] && DealershipCars[i][dcModel] > 0) {
  24173. return i;
  24174. }
  24175. }
  24176. return GetLastDealershipCar(company);
  24177. }
  24178. GetFirstDealershipCar(company)
  24179. {
  24180. for (new i = 0; i < MAX_DEALERSHIP_CARS; i ++)
  24181. {
  24182. if (DealershipCars[i][dcCompany] == Companies[company][cID] && DealershipCars[i][dcModel] > 0)
  24183. {
  24184. return i;
  24185. }
  24186. }
  24187. return INVALID_ID;
  24188. }
  24189. GetLastDealershipCar(company)
  24190. {
  24191. for (new i = MAX_DEALERSHIP_CARS; --i >= 0; )
  24192. {
  24193. if (DealershipCars[i][dcCompany] == Companies[company][cID] && DealershipCars[i][dcModel] > 0)
  24194. {
  24195. return i;
  24196. }
  24197. }
  24198. return INVALID_ID;
  24199. }
  24200. ShowDealershipPreviewMenu(playerid, company)
  24201. {
  24202. if (IsValidCompanyID(company) && Companies[company][cType] == COMPANY_DEALERSHIP)
  24203. {
  24204. new index = GetFirstDealershipCar(company);
  24205. if (index == INVALID_ID)
  24206. {
  24207. return 0;
  24208. }
  24209. else
  24210. {
  24211. Players[playerid][pDealershipMenu] = company;
  24212. Players[playerid][pDealershipIndex] = index;
  24213. ShowPlayerTextDraws(playerid, 78, 85);
  24214. UpdateDealershipPreview(playerid);
  24215. SelectTextDrawEx(playerid, -1);
  24216. }
  24217. }
  24218. return 1;
  24219. }
  24220. HideDealershipPreview(playerid)
  24221. {
  24222. HidePlayerTextDraws(playerid, 78, 85);
  24223. CancelSelectTextDraw(playerid);
  24224. Players[playerid][pDealershipMenu] = INVALID_ID;
  24225. Players[playerid][pDealershipIndex] = INVALID_ID;
  24226. }
  24227. UpdateDealershipPreview(playerid)
  24228. {
  24229. new index = Players[playerid][pDealershipIndex];
  24230. PlayerTextDrawSetPreviewModel(playerid, Players[playerid][pText][81], DealershipCars[index][dcModel]);
  24231. PlayerTextDrawSetPreviewVehCol(playerid, Players[playerid][pText][81], 11, 11);
  24232. PlayerTextDrawHide(playerid, Players[playerid][pText][81]);
  24233. PlayerTextDrawShow(playerid, Players[playerid][pText][81]);
  24234. PlayerTextDrawFormatString(playerid, Players[playerid][pText][82], "~g~Vehicle:~w~~n~%s~n~~n~~g~Price:~w~~n~%s", GetVehicleModelName(DealershipCars[index][dcModel]), FormatNumber(DealershipCars[index][dcPrice]));
  24235. }
  24236. ShowInfoForHouse(playerid, house)
  24237. {
  24238. if (Players[playerid][pFurnitureMenu])
  24239. {
  24240. return 0;
  24241. }
  24242. if (IsValidHouseID(house))
  24243. {
  24244. new string[128];
  24245. new string2[128];
  24246. if (!Houses[house][hOwner])
  24247. {
  24248. format(string2, sizeof(string2), "~g~ /house buy ~n~ ~g~Price:~w~~n~%s~n~~n~~g~Address:~w~~n~%s~n~~n~~g~Location:~w~~n~%s", FormatNumber(Houses[house][hValue]), Houses[house][hAddress], GetZoneName(Houses[house][hSpawn][0], Houses[house][hSpawn][1], Houses[house][hSpawn][2]));
  24249. ShowFooterText(playerid, string2, 10000);
  24250. }
  24251. else
  24252. {
  24253. if (Houses[house][hRentPrice] > 0)
  24254. {
  24255. format(string, sizeof(string), "~g~For Rent:~w~~n~%s~n~~n~~g~Address:~w~~n~%s~n~~n~~g~Location:~w~~n~%s", FormatNumber(Houses[house][hRentPrice]), Houses[house][hAddress], GetZoneName(Houses[house][hSpawn][0], Houses[house][hSpawn][1], Houses[house][hSpawn][2]));
  24256. }
  24257. else
  24258. {
  24259. format(string, sizeof(string), "~g~For Rent:~w~~n~No~n~~n~~g~Address:~w~~n~%s~n~~n~~g~Location:~w~~n~%s", Houses[house][hAddress], GetZoneName(Houses[house][hSpawn][0], Houses[house][hSpawn][1], Houses[house][hSpawn][2]));
  24260. }
  24261. if (!IsFooterTextShown(playerid) && !Players[playerid][pPicking])
  24262. {
  24263. ShowFooterText(playerid, "Press ~g~H~w~ to enter this property.", 10000);
  24264. }
  24265. }
  24266. Players[playerid][pHouseInfo] = house;
  24267. PlayerTextDrawSetString(playerid, Players[playerid][pText][57], string);
  24268. //ShowPlayerTextDraws(playerid, 55, 57);
  24269. }
  24270. return 1;
  24271. }
  24272. ShowInfoForCompany(playerid, company)
  24273. {
  24274. if (Players[playerid][pFurnitureMenu])
  24275. {
  24276. return 0;
  24277. }
  24278. if (IsValidCompanyID(company))
  24279. {
  24280. new string[128];
  24281. new string2[128];
  24282. if (!Companies[company][cOwner])
  24283. {
  24284. format(string2, sizeof(string2), "Use ~g~'/company buy'~w~ to purchase ~n~ ~g~Price:~w~ %s~n~~n~~g~Name:~w~ %s~n~~n~~g~Fee:~w~ %s", FormatNumber(Companies[company][cValue]), Companies[company][cName], FormatNumber(Companies[company][cFee]));
  24285. ShowFooterText(playerid, string2, 10000);
  24286. }
  24287. else
  24288. {
  24289. format(string, sizeof(string), "~g~Name:~w~~n~%s~n~~n~~g~Location:~w~~n~%s~n~~n~~g~Status:~w~~n~%s~n~~n~~g~Fee:~w~~n~%s", Companies[company][cName], GetZoneName(Companies[company][cSpawn][0], Companies[company][cSpawn][1], Companies[company][cSpawn][2]), (Companies[company][cLocked]) ? ("Closed") : ("Opened"), FormatNumber(Companies[company][cFee]));
  24290. if (!IsFooterTextShown(playerid) && !Players[playerid][pPicking])
  24291. {
  24292. ShowFooterText(playerid, "Press ~g~H~w~ to enter this property.", 10000);
  24293. }
  24294. }
  24295. Players[playerid][pCompanyInfo] = company;
  24296. PlayerTextDrawSetString(playerid, Players[playerid][pText][57], string);
  24297. //ShowPlayerTextDraws(playerid, 55, 57);
  24298. }
  24299. return 1;
  24300. }
  24301. ShowWeaponMenu(playerid)
  24302. {
  24303. new
  24304. string[200];
  24305. if (Weapons[playerid][wMelee] > 0)
  24306. format(string, sizeof(string), "%s", GetWeapon(Weapons[playerid][wMelee]));
  24307. else
  24308. format(string, sizeof(string), "Empty Slot");
  24309. if (Weapons[playerid][wPrimary] > 0)
  24310. format(string, sizeof(string), "%s\n%s (%i) (#%i)", string, GetWeapon(Weapons[playerid][wPrimary]), Weapons[playerid][wPrimaryAmmo], Weapons[playerid][wPrimarySerial]);
  24311. else
  24312. format(string, sizeof(string), "%s\nEmpty Slot", string);
  24313. if (Weapons[playerid][wSecondary] > 0)
  24314. format(string, sizeof(string), "%s\n%s (%i) (#%i)", string, GetWeapon(Weapons[playerid][wSecondary]), Weapons[playerid][wSecondaryAmmo], Weapons[playerid][wSecondarySerial]);
  24315. else
  24316. format(string, sizeof(string), "%s\nEmpty Slot", string);
  24317. if (Players[playerid][pDonator] >= DONATOR_STANDARD)
  24318. {
  24319. if (Weapons[playerid][wTertiary] > 0)
  24320. format(string, sizeof(string), "%s\n%s (%i) (#%i)", string, GetWeapon(Weapons[playerid][wTertiary]), Weapons[playerid][wTertiaryAmmo], Weapons[playerid][wTertiarySerial]);
  24321. else
  24322. format(string, sizeof(string), "%s\nEmpty Slot", string);
  24323. }
  24324. Dialog_Show(playerid, WeaponList, DIALOG_STYLE_LIST, "{FFFFFF}My Weapons", string, "Select", "Cancel");
  24325. return 1;
  24326. }
  24327. /*UpdateLoginTextDraws(playerid)
  24328. {
  24329. new
  24330. string[128];
  24331. if (Server[PlayerRecord] > 0)
  24332. {
  24333. format(string, sizeof(string), "Accounts: ~y~%i~w~ - Player Record: ~y~%i (%s)~w~", Server[Accounts], Server[PlayerRecord], Server[RecordDate]);
  24334. }
  24335. else
  24336. {
  24337. format(string, sizeof(string), "Accounts: ~y~%i~w~ - Player Record: ~y~0", Server[Accounts]);
  24338. }
  24339. PlayerTextDrawSetString(playerid, Players[playerid][pText][38], string);
  24340. }
  24341. ShowLoginTextDraws(playerid, show)
  24342. {
  24343. if (show)
  24344. {
  24345. UpdateLoginTextDraws(playerid);
  24346. ShowPlayerTextDraws(playerid, 37, 38);
  24347. }
  24348. else
  24349. {
  24350. HidePlayerTextDraws(playerid, 37, 38);
  24351. }
  24352. return 1;
  24353. }*/
  24354. IsFooterTextShown(playerid)
  24355. {
  24356. return Players[playerid][pFooter];
  24357. }
  24358. ShowFooterText(playerid, text[], time = 5000)
  24359. {
  24360. if (Players[playerid][pFooter])
  24361. {
  24362. KillTimer(Timers[playerid][tFooter]);
  24363. }
  24364. Players[playerid][pFooter] = 1;
  24365. Timers[playerid][tFooter] = SetTimerEx("HideFooterText", time, false, "i", playerid);
  24366. PlayerTextDrawSetString(playerid, Players[playerid][pText][5], text);
  24367. return PlayerTextDrawShow(playerid, Players[playerid][pText][5]);
  24368. }
  24369. SendPlayerSplitMessage(playerid, color, const text[])
  24370. {
  24371. new
  24372. string[192],
  24373. parse[12],
  24374. length
  24375. ;
  24376. length = strlen(text);
  24377. if (length < 100)
  24378. {
  24379. SendClientMessage(playerid, color, text);
  24380. }
  24381. else
  24382. {
  24383. for (new i = 0; i < 100; i ++)
  24384. {
  24385. if ((i + 7 < length) && (text[i] == '{' && text[i + 7] == '}'))
  24386. {
  24387. strmid(parse, text, i, i + 8);
  24388. }
  24389. }
  24390. strmid(string, text, 0, 100);
  24391. SendClientMessage(playerid, color, string);
  24392. strmid(string, text, 100, length);
  24393. strins(string, "...", 0);
  24394. if (strlen(parse) > 0)
  24395. {
  24396. strins(string, parse, 0);
  24397. }
  24398. SendClientMessage(playerid, color, string);
  24399. }
  24400. }
  24401. SendSplitMessage(playerid, color, const text[], {Float, _}:...)
  24402. {
  24403. static
  24404. args,
  24405. str[192];
  24406. /*
  24407. * Custom function that uses #emit to format variables into a string.
  24408. * This code is very fragile; touching any code here will cause crashing!
  24409. */
  24410. if ((args = numargs()) <= 3)
  24411. {
  24412. SendPlayerSplitMessage(playerid, color, text);
  24413. }
  24414. else
  24415. {
  24416. while (--args >= 3)
  24417. {
  24418. #emit LCTRL 5
  24419. #emit LOAD.alt args
  24420. #emit SHL.C.alt 2
  24421. #emit ADD.C 12
  24422. #emit ADD
  24423. #emit LOAD.I
  24424. #emit PUSH.pri
  24425. }
  24426. #emit PUSH.S text
  24427. #emit PUSH.C 192
  24428. #emit PUSH.C str
  24429. #emit PUSH.S 8
  24430. #emit SYSREQ.C format
  24431. #emit LCTRL 5
  24432. #emit SCTRL 4
  24433. SendPlayerSplitMessage(playerid, color, str);
  24434. #emit RETN
  24435. }
  24436. return 1;
  24437. }
  24438. SendVehicleMessage(vehicleid, color, text[], {Float, _}:...)
  24439. {
  24440. static
  24441. args,
  24442. str[192];
  24443. /*
  24444. * Custom function that uses #emit to format variables into a string.
  24445. * This code is very fragile; touching any code here will cause crashing!
  24446. */
  24447. if ((args = numargs()) <= 3)
  24448. {
  24449. foreach (new i : Player) {
  24450. if (IsPlayerInVehicle(i, vehicleid)) SendSplitMessage(i, color, text);
  24451. }
  24452. }
  24453. else
  24454. {
  24455. while (--args >= 3)
  24456. {
  24457. #emit LCTRL 5
  24458. #emit LOAD.alt args
  24459. #emit SHL.C.alt 2
  24460. #emit ADD.C 12
  24461. #emit ADD
  24462. #emit LOAD.I
  24463. #emit PUSH.pri
  24464. }
  24465. #emit PUSH.S text
  24466. #emit PUSH.C 192
  24467. #emit PUSH.C str
  24468. #emit PUSH.S 8
  24469. #emit SYSREQ.C format
  24470. #emit LCTRL 5
  24471. #emit SCTRL 4
  24472. foreach (new i : Player) {
  24473. if (IsPlayerInVehicle(i, vehicleid)) SendSplitMessage(i, color, str);
  24474. }
  24475. #emit RETN
  24476. }
  24477. return 1;
  24478. }
  24479. ShowActionBubble(playerid, text[], {Float, _}:...)
  24480. {
  24481. static
  24482. args,
  24483. str[192];
  24484. /*
  24485. * Custom function that uses #emit to format variables into a string.
  24486. * This code is very fragile; touching any code here will cause crashing!
  24487. */
  24488. if ((args = numargs()) <= 2)
  24489. {
  24490. SetPlayerChatBubble(playerid, text, COLOR_PURPLE, 25.0, 6000);
  24491. }
  24492. else
  24493. {
  24494. while (--args >= 2)
  24495. {
  24496. #emit LCTRL 5
  24497. #emit LOAD.alt args
  24498. #emit SHL.C.alt 2
  24499. #emit ADD.C 12
  24500. #emit ADD
  24501. #emit LOAD.I
  24502. #emit PUSH.pri
  24503. }
  24504. #emit PUSH.S text
  24505. #emit PUSH.C 192
  24506. #emit PUSH.C str
  24507. #emit LOAD.S.pri 8
  24508. #emit ADD.C 4
  24509. #emit PUSH.pri
  24510. #emit SYSREQ.C format
  24511. #emit LCTRL 5
  24512. #emit SCTRL 4
  24513. SetPlayerChatBubble(playerid, str, COLOR_PURPLE, 25.0, 6000);
  24514. #emit RETN
  24515. }
  24516. return 1;
  24517. }
  24518. /*ShowFormatBubble(playerid, color, text[], {Float, _}:...)
  24519. {
  24520. static
  24521. args,
  24522. str[192];*/
  24523. /*
  24524. * Custom function that uses #emit to format variables into a string.
  24525. * This code is very fragile; touching any code here will cause crashing!
  24526. */
  24527. /*if ((args = numargs()) <= 3)
  24528. {
  24529. SetPlayerChatBubble(playerid, text, color, 25.0, 6000);
  24530. }
  24531. else
  24532. {
  24533. while (--args >= 3)
  24534. {
  24535. #emit LCTRL 5
  24536. #emit LOAD.alt args
  24537. #emit SHL.C.alt 2
  24538. #emit ADD.C 12
  24539. #emit ADD
  24540. #emit LOAD.I
  24541. #emit PUSH.pri
  24542. }
  24543. #emit PUSH.S text
  24544. #emit PUSH.C 192
  24545. #emit PUSH.C str
  24546. #emit PUSH.S 8
  24547. #emit SYSREQ.C format
  24548. #emit LCTRL 5
  24549. #emit SCTRL 4
  24550. SetPlayerChatBubble(playerid, str, color, 25.0, 6000);
  24551. #emit RETN
  24552. }
  24553. return 1;
  24554. }*/
  24555. SendDistanceMessage(playerid, Float:distance, color, const text[], {Float, _}:...)
  24556. {
  24557. static
  24558. args,
  24559. str[192];
  24560. /*
  24561. * Custom function that uses #emit to format variables into a string.
  24562. * This code is very fragile; touching any code here will cause crashing!
  24563. */
  24564. if ((args = numargs()) <= 4)
  24565. {
  24566. foreach (new i : Player)
  24567. {
  24568. if (IsPlayerInRangeOfPlayer(i, playerid, distance))
  24569. {
  24570. SendSplitMessage(i, color, text);
  24571. }
  24572. }
  24573. }
  24574. else
  24575. {
  24576. while (--args >= 4)
  24577. {
  24578. #emit LCTRL 5
  24579. #emit LOAD.alt args
  24580. #emit SHL.C.alt 2
  24581. #emit ADD.C 12
  24582. #emit ADD
  24583. #emit LOAD.I
  24584. #emit PUSH.pri
  24585. }
  24586. #emit PUSH.S text
  24587. #emit PUSH.C 192
  24588. #emit PUSH.C str
  24589. #emit LOAD.S.pri 8
  24590. #emit CONST.alt 4
  24591. #emit SUB
  24592. #emit PUSH.pri
  24593. #emit SYSREQ.C format
  24594. #emit LCTRL 5
  24595. #emit SCTRL 4
  24596. foreach (new i : Player)
  24597. {
  24598. if (IsPlayerInRangeOfPlayer(i, playerid, distance))
  24599. {
  24600. SendSplitMessage(i, color, str);
  24601. }
  24602. }
  24603. #emit RETN
  24604. }
  24605. return 1;
  24606. }
  24607. ShowErrorToPlayer(playerid, text[], {Float, _}:...)
  24608. {
  24609. static
  24610. args,
  24611. str[192];
  24612. /*
  24613. * Custom function that uses #emit to format variables into a string.
  24614. * This code is very fragile; touching any code here will cause crashing!
  24615. */
  24616. if (Players[playerid][pFooter])
  24617. {
  24618. HideFooterText(playerid);
  24619. }
  24620. if ((args = numargs()) <= 2)
  24621. {
  24622. PlayerPlaySound(playerid, 1084, 0.0, 0.0, 0.0);
  24623. ShowFooterText(playerid, text, 5000);
  24624. }
  24625. else
  24626. {
  24627. while (--args >= 2)
  24628. {
  24629. #emit LCTRL 5
  24630. #emit LOAD.alt args
  24631. #emit SHL.C.alt 2
  24632. #emit ADD.C 12
  24633. #emit ADD
  24634. #emit LOAD.I
  24635. #emit PUSH.pri
  24636. }
  24637. #emit PUSH.S text
  24638. #emit PUSH.C 192
  24639. #emit PUSH.C str
  24640. #emit LOAD.S.pri 8
  24641. #emit CONST.alt 4
  24642. #emit ADD
  24643. #emit PUSH.pri
  24644. #emit SYSREQ.C format
  24645. #emit LCTRL 5
  24646. #emit SCTRL 4
  24647. PlayerPlaySound(playerid, 1084, 0.0, 0.0, 0.0);
  24648. ShowFooterText(playerid, str, 5000);
  24649. #emit RETN
  24650. }
  24651. return 1;
  24652. }
  24653. SendFormatMessage(playerid, color, const text[], {Float, _}:...)//neger
  24654. {
  24655. static
  24656. args,
  24657. str[192];
  24658. /*
  24659. * Custom function that uses #emit to format variables into a string.
  24660. * This code is very fragile; touching any code here will cause crashing!
  24661. */
  24662. if ((args = numargs()) <= 3)
  24663. {
  24664. SendClientMessage(playerid, color, text);
  24665. }
  24666. else
  24667. {
  24668. while (--args >= 3)
  24669. {
  24670. #emit LCTRL 5
  24671. #emit LOAD.alt args
  24672. #emit SHL.C.alt 2
  24673. #emit ADD.C 12
  24674. #emit ADD
  24675. #emit LOAD.I
  24676. #emit PUSH.pri
  24677. }
  24678. #emit PUSH.S text
  24679. #emit PUSH.C 192
  24680. #emit PUSH.C str
  24681. #emit PUSH.S 8
  24682. #emit SYSREQ.C format
  24683. #emit LCTRL 5
  24684. #emit SCTRL 4
  24685. SendClientMessage(playerid, color, str);
  24686. #emit RETN
  24687. }
  24688. return 1;
  24689. }
  24690. SendFormatMessageToAll(color, const text[], {Float, _}:...)
  24691. {
  24692. static
  24693. args,
  24694. str[192];
  24695. /*
  24696. * Custom function that uses #emit to format variables into a string.
  24697. * This code is very fragile; touching any code here will cause crashing!
  24698. */
  24699. if ((args = numargs()) <= 2)
  24700. {
  24701. SendClientMessageToAll(color, text);
  24702. }
  24703. else
  24704. {
  24705. while (--args >= 2)
  24706. {
  24707. #emit LCTRL 5
  24708. #emit LOAD.alt args
  24709. #emit SHL.C.alt 2
  24710. #emit ADD.C 12
  24711. #emit ADD
  24712. #emit LOAD.I
  24713. #emit PUSH.pri
  24714. }
  24715. #emit PUSH.S text
  24716. #emit PUSH.C 192
  24717. #emit PUSH.C str
  24718. #emit LOAD.S.pri 8
  24719. #emit CONST.alt 4
  24720. #emit ADD
  24721. #emit PUSH.pri
  24722. #emit SYSREQ.C format
  24723. #emit LCTRL 5
  24724. #emit SCTRL 4
  24725. SendClientMessageToAll(color, str);
  24726. #emit RETN
  24727. }
  24728. return 1;
  24729. }
  24730. AdminDutyMessage(color, const text[], {Float, _}:...)
  24731. {
  24732. static
  24733. args,
  24734. str[192];
  24735. /*
  24736. * Custom function that uses #emit to format variables into a string.
  24737. * This code is very fragile; touching any code here will cause crashing!
  24738. */
  24739. if ((args = numargs()) <= 2)
  24740. {
  24741. foreach (new i : Player) {
  24742. if(CheckAdmin(i, 1)) SendClientMessage(i, color, text);
  24743. }
  24744. print(text);
  24745. }
  24746. else
  24747. {
  24748. while (--args >= 2)
  24749. {
  24750. #emit LCTRL 5
  24751. #emit LOAD.alt args
  24752. #emit SHL.C.alt 2
  24753. #emit ADD.C 12
  24754. #emit ADD
  24755. #emit LOAD.I
  24756. #emit PUSH.pri
  24757. }
  24758. #emit PUSH.S text
  24759. #emit PUSH.C 192
  24760. #emit PUSH.C str
  24761. #emit LOAD.S.pri 8
  24762. #emit CONST.alt 4
  24763. #emit ADD
  24764. #emit PUSH.pri
  24765. #emit SYSREQ.C format
  24766. #emit LCTRL 5
  24767. #emit SCTRL 4
  24768. foreach (new i : Player) {
  24769. if(CheckAdmin(i, 1) && Players[i][pAdminDuty]) SendClientMessage(i, color, str);
  24770. }
  24771. print(str);
  24772. #emit RETN
  24773. }
  24774. return 1;
  24775. }
  24776. SendAdminMessage(color, const text[], {Float, _}:...)
  24777. {
  24778. static
  24779. args,
  24780. str[192];
  24781. /*
  24782. * Custom function that uses #emit to format variables into a string.
  24783. * This code is very fragile; touching any code here will cause crashing!
  24784. */
  24785. if ((args = numargs()) <= 2)
  24786. {
  24787. foreach (new i : Player) {
  24788. if(CheckAdmin(i, 1)) SendClientMessage(i, color, text);
  24789. }
  24790. print(text);
  24791. }
  24792. else
  24793. {
  24794. while (--args >= 2)
  24795. {
  24796. #emit LCTRL 5
  24797. #emit LOAD.alt args
  24798. #emit SHL.C.alt 2
  24799. #emit ADD.C 12
  24800. #emit ADD
  24801. #emit LOAD.I
  24802. #emit PUSH.pri
  24803. }
  24804. #emit PUSH.S text
  24805. #emit PUSH.C 192
  24806. #emit PUSH.C str
  24807. #emit LOAD.S.pri 8
  24808. #emit CONST.alt 4
  24809. #emit ADD
  24810. #emit PUSH.pri
  24811. #emit SYSREQ.C format
  24812. #emit LCTRL 5
  24813. #emit SCTRL 4
  24814. foreach (new i : Player) {
  24815. if(CheckAdmin(i, 1)) SendClientMessage(i, color, str);
  24816. }
  24817. print(str);
  24818. #emit RETN
  24819. }
  24820. return 1;
  24821. }
  24822. SendVeteranMessage(color, const text[], {Float, _}:...)
  24823. {
  24824. static
  24825. args,
  24826. str[192];
  24827. /*
  24828. * Custom function that uses #emit to format variables into a string.
  24829. * This code is very fragile; touching any code here will cause crashing!
  24830. */
  24831. if ((args = numargs()) <= 2)
  24832. {
  24833. foreach (new i : Player) {
  24834. if(Players[i][pVeteran]) SendClientMessage(i, color, text);
  24835. }
  24836. print(text);
  24837. }
  24838. else
  24839. {
  24840. while (--args >= 2)
  24841. {
  24842. #emit LCTRL 5
  24843. #emit LOAD.alt args
  24844. #emit SHL.C.alt 2
  24845. #emit ADD.C 12
  24846. #emit ADD
  24847. #emit LOAD.I
  24848. #emit PUSH.pri
  24849. }
  24850. #emit PUSH.S text
  24851. #emit PUSH.C 192
  24852. #emit PUSH.C str
  24853. #emit LOAD.S.pri 8
  24854. #emit CONST.alt 4
  24855. #emit ADD
  24856. #emit PUSH.pri
  24857. #emit SYSREQ.C format
  24858. #emit LCTRL 5
  24859. #emit SCTRL 4
  24860. foreach (new i : Player) {
  24861. if(Players[i][pVeteran]) SendClientMessage(i, color, str);
  24862. }
  24863. print(str);
  24864. #emit RETN
  24865. }
  24866. return 1;
  24867. }
  24868. SendFactionMessage(faction, color, const text[], {Float, _}:...)
  24869. {
  24870. static
  24871. args,
  24872. str[192];
  24873. /*
  24874. * Custom function that uses #emit to format variables into a string.
  24875. * This code is very fragile; touching any code here will cause crashing!
  24876. */
  24877. if ((args = numargs()) <= 3)
  24878. {
  24879. foreach (new i : Player) {
  24880. if (Players[i][pFaction] == faction) SendSplitMessage(i, color, text);
  24881. }
  24882. }
  24883. else
  24884. {
  24885. while (--args >= 3)
  24886. {
  24887. #emit LCTRL 5
  24888. #emit LOAD.alt args
  24889. #emit SHL.C.alt 2
  24890. #emit ADD.C 12
  24891. #emit ADD
  24892. #emit LOAD.I
  24893. #emit PUSH.pri
  24894. }
  24895. #emit PUSH.S text
  24896. #emit PUSH.C 192
  24897. #emit PUSH.C str
  24898. #emit PUSH.S 8
  24899. #emit SYSREQ.C format
  24900. #emit LCTRL 5
  24901. #emit SCTRL 4
  24902. foreach (new i : Player) {
  24903. if (Players[i][pFaction] == faction) SendSplitMessage(i, color, str);
  24904. }
  24905. #emit RETN
  24906. }
  24907. return 1;
  24908. }
  24909. SendSupporterMessage(color, const text[], {Float, _}:...)
  24910. {
  24911. static
  24912. args,
  24913. str[192];
  24914. /*
  24915. * Custom function that uses #emit to format variables into a string.
  24916. * This code is very fragile; touching any code here will cause crashing!
  24917. */
  24918. if ((args = numargs()) <= 2)
  24919. {
  24920. foreach (new i : Player) {
  24921. if (Players[i][pSupporter] > 0) SendSplitMessage(i, color, text);
  24922. }
  24923. print(text);
  24924. }
  24925. else
  24926. {
  24927. while (--args >= 2)
  24928. {
  24929. #emit LCTRL 5
  24930. #emit LOAD.alt args
  24931. #emit SHL.C.alt 2
  24932. #emit ADD.C 12
  24933. #emit ADD
  24934. #emit LOAD.I
  24935. #emit PUSH.pri
  24936. }
  24937. #emit PUSH.S text
  24938. #emit PUSH.C 192
  24939. #emit PUSH.C str
  24940. #emit LOAD.S.pri 8
  24941. #emit CONST.alt 4
  24942. #emit ADD
  24943. #emit PUSH.pri
  24944. #emit SYSREQ.C format
  24945. #emit LCTRL 5
  24946. #emit SCTRL 4
  24947. foreach (new i : Player) {
  24948. if (Players[i][pSupporter] > 0) SendSplitMessage(i, color, str);
  24949. }
  24950. print(str);
  24951. #emit RETN
  24952. }
  24953. return 1;
  24954. }
  24955. SendDepartmentMessage(color, const text[], {Float, _}:...)
  24956. {
  24957. static
  24958. args,
  24959. str[192];
  24960. /*
  24961. * Custom function that uses #emit to format variables into a string.
  24962. * This code is very fragile; touching any code here will cause crashing!
  24963. */
  24964. if ((args = numargs()) <= 2)
  24965. {
  24966. foreach (new i : Player) {
  24967. if (FACTION_LEO <= GetPlayerFactionType(i) <= FACTION_GOVERNMENT) SendSplitMessage(i, color, text);
  24968. }
  24969. }
  24970. else
  24971. {
  24972. while (--args >= 2)
  24973. {
  24974. #emit LCTRL 5
  24975. #emit LOAD.alt args
  24976. #emit SHL.C.alt 2
  24977. #emit ADD.C 12
  24978. #emit ADD
  24979. #emit LOAD.I
  24980. #emit PUSH.pri
  24981. }
  24982. #emit PUSH.S text
  24983. #emit PUSH.C 192
  24984. #emit PUSH.C str
  24985. #emit LOAD.S.pri 8
  24986. #emit CONST.alt 4
  24987. #emit ADD
  24988. #emit PUSH.pri
  24989. #emit SYSREQ.C format
  24990. #emit LCTRL 5
  24991. #emit SCTRL 4
  24992. foreach (new i : Player) {
  24993. if (FACTION_LEO <= GetPlayerFactionType(i) <= FACTION_GOVERNMENT) SendSplitMessage(i, color, str);
  24994. }
  24995. #emit RETN
  24996. }
  24997. return 1;
  24998. }
  24999. PlayerTextDrawFormatString(playerid, PlayerText:playertextid, text[], {Float, _}:...)
  25000. {
  25001. static
  25002. args,
  25003. str[192];
  25004. /*
  25005. * Custom function that uses #emit to format variables into a string.
  25006. * This code is very fragile; touching any code here will cause crashing!
  25007. */
  25008. if ((args = numargs()) <= 3)
  25009. {
  25010. PlayerTextDrawSetString(playerid, playertextid, text);
  25011. }
  25012. else
  25013. {
  25014. while (--args >= 3)
  25015. {
  25016. #emit LCTRL 5
  25017. #emit LOAD.alt args
  25018. #emit SHL.C.alt 2
  25019. #emit ADD.C 12
  25020. #emit ADD
  25021. #emit LOAD.I
  25022. #emit PUSH.pri
  25023. }
  25024. #emit PUSH.S text
  25025. #emit PUSH.C 192
  25026. #emit PUSH.C str
  25027. #emit PUSH.S 8
  25028. #emit SYSREQ.C format
  25029. #emit LCTRL 5
  25030. #emit SCTRL 4
  25031. PlayerTextDrawSetString(playerid, playertextid, str);
  25032. #emit RETN
  25033. }
  25034. return 1;
  25035. }
  25036. PlayerAttemptLogin(playerid, pass[])
  25037. {
  25038. new
  25039. queryString[255];
  25040. WP_Hash(queryString, sizeof(queryString), pass);
  25041. format(queryString, sizeof(queryString), "SELECT * FROM rp_accounts WHERE Username = '%s' AND Pass = '%s'", ReturnName(playerid), queryString);
  25042. mysql_tquery(gConnection, queryString, "OnPlayerAttemptLogin", "i", playerid);
  25043. }
  25044. CreatePlayerAccount(playerid, pass[])
  25045. {
  25046. new
  25047. queryString[255];
  25048. WP_Hash(queryString, sizeof(queryString), pass);
  25049. format(queryString, sizeof(queryString), "INSERT INTO rp_accounts (Username, Pass, Registered) VALUES('%s', '%s', NOW())", ReturnName(playerid), queryString);
  25050. mysql_tquery(gConnection, queryString, "OnPlayerRegister", "i", playerid);
  25051. }
  25052. FlushChatForPlayer(playerid)
  25053. {
  25054. for (new i = 0; i < 30; i ++)
  25055. {
  25056. SendClientMessage(playerid, COLOR_GREY, " ");
  25057. }
  25058. }
  25059. ReturnIP(playerid)
  25060. {
  25061. new
  25062. playerIP[16];
  25063. GetPlayerIp(playerid, playerIP,sizeof(playerIP));
  25064. return playerIP;
  25065. }
  25066. ReturnName(playerid) // Returns the player's name (underscore included).
  25067. {
  25068. new
  25069. playerName[MAX_PLAYER_NAME];
  25070. GetPlayerName(playerid, playerName, sizeof(playerName));
  25071. return playerName;
  25072. }
  25073. ReturnAdminRank(playerid)
  25074. {
  25075. new
  25076. adminRank[16];
  25077. if (Players[playerid][pAdmin] == 0 && Players[playerid][pVeteran] > 0) {
  25078. adminRank = "Veteran";
  25079. } else if (Players[playerid][pAdmin] == 1) {
  25080. adminRank = "Moderator";
  25081. } else if (Players[playerid][pAdmin] == 2) {
  25082. adminRank = "Game Admin";
  25083. } else if (Players[playerid][pAdmin] == 3) {
  25084. adminRank = "Game Admin";
  25085. } else if (Players[playerid][pAdmin] == 4) {
  25086. adminRank = "Senior Admin";
  25087. } else if (Players[playerid][pAdmin] == 5) {
  25088. adminRank = "Lead Admin";
  25089. } else if (Players[playerid][pAdmin] >= 6) {
  25090. adminRank = "Management";
  25091. }
  25092. return adminRank;
  25093. }
  25094. ReturnAdminName(playerid)
  25095. {
  25096. new
  25097. playerName[MAX_PLAYER_NAME];
  25098. if(CheckAdmin(playerid, 1) && IsAdminNameSetup(playerid)) {
  25099. strcpy(playerName, Players[playerid][pAdminName]);
  25100. } else {
  25101. strcpy(playerName, ReturnNameEx(playerid, 0));
  25102. }
  25103. return playerName;
  25104. }
  25105. ReturnAdminTitle(playerid)
  25106. {
  25107. new
  25108. playerName[MAX_PLAYER_NAME];
  25109. if(CheckAdmin(playerid, 1) && IsAdminTitleSetup(playerid)) {
  25110. strcpy(playerName, Players[playerid][pAdminTitle]);
  25111. } else {
  25112. strcpy(playerName, ReturnNameEx(playerid, 0));
  25113. }
  25114. return playerName;
  25115. }
  25116. ReturnNameEx(playerid, maskcheck=1) // Returns the player's name (underscore removed).
  25117. {
  25118. new
  25119. playerName[MAX_PLAYER_NAME];
  25120. if (maskcheck > 0 && Players[playerid][pMaskID] > 0)
  25121. {
  25122. format(playerName, sizeof(playerName), "[Mask_%d_%d]", Players[playerid][pMaskID], Players[playerid][pAge]);
  25123. }
  25124. else
  25125. {
  25126. GetPlayerName(playerid, playerName, sizeof(playerName));
  25127. for (new i = 0, l = strlen(playerName); i < l; i ++)
  25128. {
  25129. if (playerName[i] == '_')
  25130. {
  25131. playerName[i] = ' ';
  25132. }
  25133. }
  25134. }
  25135. return playerName;
  25136. }
  25137. AdjustMenuCamera(playerid)
  25138. {
  25139. /*
  25140. * Spectating must be enabled to hide class selection controls.
  25141. * Due to a bug in SA-MP, a timer is required to apply the camera settings after spectating.
  25142. */
  25143. TogglePlayerSpectating(playerid, true);
  25144. SetTimerEx("DelayMenuCamera", 300, false, "i", playerid);
  25145. }
  25146. GetNextArrayValue(array[], index, size = sizeof(array))
  25147. {
  25148. if (index + 1 >= size)
  25149. return array[0];
  25150. else
  25151. return array[++index];
  25152. }
  25153. GetPreviousArrayValue(array[], index, size = sizeof(array))
  25154. {
  25155. if (index == 0)
  25156. return array[size - 1];
  25157. else
  25158. return array[--index];
  25159. }
  25160. CancelOutfitSelection(playerid)
  25161. {
  25162. Players[playerid][pOutfitIndex] = INVALID_ID;
  25163. SetPlayerPos(playerid, Players[playerid][pSpawn][0], Players[playerid][pSpawn][1], Players[playerid][pSpawn][2]);
  25164. SetPlayerFacingAngle(playerid, Players[playerid][pSpawn][3]);
  25165. SetPlayerInterior(playerid, Players[playerid][pInterior]);
  25166. SetPlayerVirtualWorld(playerid, Players[playerid][pWorld]);
  25167. SetPlayerSkin(playerid, Players[playerid][pSkin]);
  25168. SetCameraBehindPlayer(playerid);
  25169. PlayerTextDrawHide(playerid, Players[playerid][pText][0]);
  25170. TogglePlayerControllable(playerid, 1);
  25171. AttachObjectsToPlayer(playerid);
  25172. }
  25173. SetupOutfitSelection(playerid)
  25174. {
  25175. Players[playerid][pOutfitIndex] = 1;
  25176. Players[playerid][pOutfitTick] = 0;
  25177. SetPlayerSkin(playerid, g_ValidSkinModels[Players[playerid][pOutfitIndex]]);
  25178. UpdateOutfitSelection(playerid);
  25179. SetPlayerInterior(playerid, 18);
  25180. SetPlayerPos(playerid, 176.1029, -72.3869, 1001.8047);
  25181. SetPlayerFacingAngle(playerid, 90.0000);
  25182. SetPlayerCameraPos(playerid, 172.684814, -72.349136, 1002.249450);
  25183. SetPlayerCameraLookAt(playerid, 175.603042, -72.376945, 1002.004699);
  25184. SetPlayerVirtualWorld(playerid, (playerid + 2000));
  25185. PlayerTextDrawShow(playerid, Players[playerid][pText][0]);
  25186. TogglePlayerControllable(playerid, 0);
  25187. }
  25188. UpdateOutfitSelection(playerid)
  25189. {
  25190. new
  25191. string[48];
  25192. SetPlayerSkin(playerid, g_ValidSkinModels[Players[playerid][pOutfitIndex]]);
  25193. format(string, sizeof(string), "%i ~<~ ~g~~h~%i~w~ ~>~ %i", GetPreviousArrayValue(g_ValidSkinModels, Players[playerid][pOutfitIndex]), g_ValidSkinModels[Players[playerid][pOutfitIndex]], GetNextArrayValue(g_ValidSkinModels, Players[playerid][pOutfitIndex]));
  25194. PlayerTextDrawSetString(playerid, Players[playerid][pText][0], string);
  25195. }
  25196. SetFreezePos(playerid, Float:x, Float:y, Float:z, delay)
  25197. {
  25198. SetPlayerPos(playerid, x, y, z);
  25199. TogglePlayerControllable(playerid, 0);
  25200. SetTimerEx("UnfreezePlayer", delay, false, "i", playerid);
  25201. }
  25202. SetTeleportPos(playerid, Float:x, Float:y, Float:z, Float:angle, interior, world)
  25203. {
  25204. new vehicleid = GetPlayerVehicleID(playerid);
  25205. if (GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  25206. {
  25207. SetVehiclePos(vehicleid, x, y, z);
  25208. SetVehicleZAngle(vehicleid, angle);
  25209. LinkVehicleToInterior(vehicleid, interior);
  25210. SetVehicleVirtualWorld(vehicleid, world);
  25211. }
  25212. else
  25213. {
  25214. SetPlayerPos(playerid, x, y, z);
  25215. SetPlayerFacingAngle(playerid, angle);
  25216. }
  25217. SetPlayerInterior(playerid, interior);
  25218. SetPlayerVirtualWorld(playerid, world);
  25219. SetCameraBehindPlayer(playerid);
  25220. }
  25221. SetPlayerFadePos(playerid, Float:x, Float:y, Float:z, Float:angle, interior, world, bool:freeze = true)
  25222. {
  25223. FadeScreenForPlayer(playerid, FADE_SET_POSITION);
  25224. TogglePlayerControllable(playerid, 0);
  25225. Players[playerid][pSetPosition] = 1;
  25226. SetTimerEx("SetPosition", 1000, false, "iffffiii", playerid, x, y, z, angle, interior, world, freeze);
  25227. return 1;
  25228. }
  25229. SetPlayerPosEx(playerid, Float:x, Float:y, Float:z, Float:angle = -1.0, interior = -1, world = -1)
  25230. {
  25231. SetPlayerPos(playerid, x, y, z);
  25232. if (angle != -1.0)
  25233. SetPlayerFacingAngle(playerid, angle);
  25234. if (interior >= 0)
  25235. SetPlayerInterior(playerid, interior);
  25236. if (world >= 0)
  25237. SetPlayerVirtualWorld(playerid, world);
  25238. Players[playerid][pDistance][0] = x;
  25239. Players[playerid][pDistance][1] = y;
  25240. Players[playerid][pDistance][2] = z;
  25241. return SetCameraBehindPlayer(playerid);
  25242. }
  25243. SyncTimeForPlayer(playerid)
  25244. {
  25245. new hour, minute;
  25246. gettime(hour, minute);
  25247. if (GetPlayerInterior(playerid) > 0 || Players[playerid][pStoned] == STONED_TYPE_HEROIN) {
  25248. SetPlayerTime(playerid, 12, 12);
  25249. } else if (!IsPlayerLoggedIn(playerid)) {
  25250. SetPlayerTime(playerid, 0, 0);
  25251. } else {
  25252. SetPlayerTime(playerid, hour, minute);
  25253. }
  25254. }
  25255. GetDateAndTime()
  25256. {
  25257. // Returns the date as exactly as it appears in MySQL DATETIME.
  25258. new
  25259. string[32],
  25260. date[6];
  25261. getdate(date[2], date[1], date[0]);
  25262. gettime(date[3], date[4], date[5]);
  25263. format(string, sizeof(string), "%i-%02d-%02d %02d:%02d:%02d", date[2], date[1], date[0], date[3], date[4], date[5]);
  25264. return string;
  25265. }
  25266. GetVehicleDriver(vehicleid)
  25267. {
  25268. foreach (new i : Player)
  25269. {
  25270. if (GetPlayerVehicleID(i) == vehicleid && GetPlayerState(i) == PLAYER_STATE_DRIVER)
  25271. {
  25272. return i;
  25273. }
  25274. }
  25275. return INVALID_PLAYER_ID;
  25276. }
  25277. UpdateFuelGauge(vehicleid)
  25278. {
  25279. new
  25280. playerid = INVALID_PLAYER_ID,
  25281. string[12];
  25282. if (IsPoweredVehicle(vehicleid))
  25283. {
  25284. if ((playerid = GetVehicleDriver(vehicleid)) != INVALID_PLAYER_ID && Players[playerid][pShowFuel])
  25285. {
  25286. new
  25287. fuel = VehicleInformation[vehicleid][vFuel];
  25288. format(string, sizeof(string), "%i%%", fuel);
  25289. PlayerTextDrawSetString(playerid, Players[playerid][pText][32], string);
  25290. PlayerTextDrawDestroy(playerid, Players[playerid][pText][31]);
  25291. Players[playerid][pText][31] = CreatePlayerTextDraw(playerid, (fuel / 2.56) + 534.0, 102.000000, ".");
  25292. PlayerTextDrawFont(playerid, Players[playerid][pText][31], 1);
  25293. PlayerTextDrawLetterSize(playerid, Players[playerid][pText][31], 0.470000, 1.400000);
  25294. PlayerTextDrawColor(playerid, Players[playerid][pText][31], -1);
  25295. PlayerTextDrawSetOutline(playerid, Players[playerid][pText][31], 1);
  25296. PlayerTextDrawSetProportional(playerid, Players[playerid][pText][31], 1);
  25297. PlayerTextDrawShow(playerid, Players[playerid][pText][31]);
  25298. }
  25299. }
  25300. return 1;
  25301. }
  25302. ShowBanList(playerid, page = 1)
  25303. {
  25304. Players[playerid][pBanPage] = page;
  25305. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_blacklist ORDER BY ID DESC LIMIT %i, %i", (page - 1) * MAX_LISTED_BANS, MAX_LISTED_BANS);
  25306. mysql_tquery(gConnection, gExecute, "OnViewBanList", "i", playerid);
  25307. }
  25308. ChangeName(playerid, name[])
  25309. {
  25310. new
  25311. oldname[MAX_PLAYER_NAME];
  25312. GetPlayerName(playerid, oldname, MAX_PLAYER_NAME);
  25313. SetPlayerName(playerid, name);
  25314. for (new i = 0; i < MAX_HOUSES; i ++)
  25315. {
  25316. if (IsValidHouseID(i) && IsHouseOwner(playerid, i))
  25317. {
  25318. SetHouseOwner(i, playerid);
  25319. }
  25320. }
  25321. for (new i = 0; i < MAX_COMPANIES; i ++)
  25322. {
  25323. if (IsValidCompanyID(i) && IsCompanyOwner(playerid, i))
  25324. {
  25325. SetCompanyOwner(i, playerid);
  25326. }
  25327. }
  25328. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET Username = '%s' WHERE Username = '%s'", name, oldname);
  25329. mysql_tquery(gConnection, gExecute);
  25330. format(gExecute, sizeof(gExecute), "INSERT INTO rp_namechanges (Player, OldName, NewName, Date) VALUES(%i, '%s', '%s', NOW())", Players[playerid][pID], oldname, name);
  25331. mysql_tquery(gConnection, gExecute);
  25332. }
  25333. GetClosestCompanyID(playerid, type)
  25334. {
  25335. new
  25336. index = INVALID_ID,
  25337. Float:fX,
  25338. Float:fY,
  25339. Float:fZ,
  25340. Float:fDist = 0.0,
  25341. Float:fCurrent = 6000.0
  25342. ;
  25343. GetPlayerPos(playerid, fX, fY, fZ);
  25344. for (new i = 0; i < MAX_COMPANIES; i ++)
  25345. {
  25346. if (IsValidCompanyID(i) && Companies[i][cType] == type && (fDist = GetPlayerDistanceFromPoint(playerid, Companies[i][cSpawn][0], Companies[i][cSpawn][1], Companies[i][cSpawn][2])) < fCurrent)
  25347. {
  25348. fCurrent = fDist;
  25349. index = i;
  25350. }
  25351. }
  25352. return index;
  25353. }
  25354. GetClosestAutoShopID(playerid)
  25355. {
  25356. new
  25357. index = INVALID_ID,
  25358. Float:fX,
  25359. Float:fY,
  25360. Float:fZ,
  25361. Float:fDist = 0.0,
  25362. Float:fCurrent = 6000.0
  25363. ;
  25364. GetPlayerPos(playerid, fX, fY, fZ);
  25365. for (new i = 0; i < MAX_AUTO_SHOPS; i ++)
  25366. {
  25367. if (IsValidAutoShopID(i) && (fDist = GetPlayerDistanceFromPoint(playerid, AutoShops[i][asX], AutoShops[i][asY], AutoShops[i][asZ])) < fCurrent)
  25368. {
  25369. fCurrent = fDist;
  25370. index = i;
  25371. }
  25372. }
  25373. return index;
  25374. }
  25375. GetClosestHospital(playerid)
  25376. {
  25377. /*
  25378. Determines the closest hospital from the player's position.
  25379. Example: If the player died near Angel Pine, they will spawn at Angel Pine hospital.
  25380. */
  25381. new
  25382. index,
  25383. Float:fX,
  25384. Float:fY,
  25385. Float:fZ,
  25386. Float:fDist = 0.0,
  25387. Float:fCurrent = 6000.0
  25388. ;
  25389. GetPlayerPosEx(playerid, fX, fY, fZ);
  25390. for (new i = 0; i < sizeof(g_HospitalLocations); i ++)
  25391. {
  25392. if ((fDist = GetPlayerDistanceFromPoint(playerid, g_HospitalLocations[i][0], g_HospitalLocations[i][1], g_HospitalLocations[i][2])) < fCurrent)
  25393. {
  25394. fCurrent = fDist;
  25395. index = i;
  25396. }
  25397. }
  25398. return index;
  25399. }
  25400. GetFurnitureListStart(category)
  25401. {
  25402. for (new i = 0; i < sizeof(g_FurnitureList); i ++)
  25403. {
  25404. if (g_FurnitureList[i][e_ModelCategory] == category)
  25405. {
  25406. return i;
  25407. }
  25408. }
  25409. return INVALID_ID;
  25410. }
  25411. GetFurnitureListEnd(category)
  25412. {
  25413. new
  25414. start = GetFurnitureListStart(category);
  25415. for (new i = start; i < sizeof(g_FurnitureList); i ++)
  25416. {
  25417. if (i + 1 == sizeof(g_FurnitureList) || g_FurnitureList[i + 1][e_ModelCategory] != category)
  25418. {
  25419. return i;
  25420. }
  25421. }
  25422. return INVALID_ID;
  25423. }
  25424. IsValidModelID(modelid)
  25425. {
  25426. for (new i = 0; i < sizeof(g_ValidObjectModels); i ++)
  25427. {
  25428. if (g_ValidObjectModels[i] == modelid)
  25429. {
  25430. return 1;
  25431. }
  25432. }
  25433. return 0;
  25434. }
  25435. PreviewFurniture(playerid, index)
  25436. {
  25437. if(!IsPlayerInside(playerid)) return SendErrorMessage(playerid, "You can not place the furniture outside.");
  25438. new
  25439. Float:x,
  25440. Float:y,
  25441. Float:z,
  25442. Float:angle;
  25443. GetPlayerPos(playerid, x, y, z);
  25444. GetPlayerFacingAngle(playerid, angle);
  25445. x += 2.0 * floatsin(-angle, degrees);
  25446. y += 2.0 * floatcos(-angle, degrees);
  25447. if (IsValidDynamicObject(gPreviewFurniture[playerid]))
  25448. {
  25449. DestroyDynamicObject(gPreviewFurniture[playerid]);
  25450. }
  25451. gPreviewFurniture[playerid] = CreateDynamicObject(g_FurnitureList[index][e_ModelID], x, y, z, 0.0, 0.0, angle, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid));
  25452. EditDynamicObjectEx(playerid, EDIT_TYPE_PREVIEW, gPreviewFurniture[playerid]);
  25453. //EditDynamicObjectEx(playerid, EDIT_TYPE_FURNITURE, Furniture[furniture][fObject], furniture);
  25454. SendInfoMessage(playerid, "Press ESC to cancel. Click the disk icon to save changes.");
  25455. return 1;
  25456. }
  25457. UpdateFurniturePreviewer(playerid)
  25458. {
  25459. new
  25460. index = Players[playerid][pPreviewIndex];
  25461. PlayerTextDrawFormatString(playerid, Players[playerid][pText][77], "~g~Model:~w~~n~%s~n~~n~~g~Price:~w~~n~%s", g_FurnitureList[index][e_ModelName], FormatNumber(g_FurnitureList[index][e_ModelPrice]));
  25462. PlayerTextDrawSetPreviewModel(playerid, Players[playerid][pText][76], g_FurnitureList[index][e_ModelID]);
  25463. PlayerTextDrawHide(playerid, Players[playerid][pText][76]);
  25464. PlayerTextDrawShow(playerid, Players[playerid][pText][76]);
  25465. }
  25466. ShowFurniturePreviewer(playerid, category)
  25467. {
  25468. for (new i = 0; i < sizeof(g_FurnitureList); i ++)
  25469. {
  25470. if (g_FurnitureList[i][e_ModelCategory] == category)
  25471. {
  25472. Players[playerid][pFurnitureMenu] = 1;
  25473. Players[playerid][pCategory] = category;
  25474. Players[playerid][pPreviewIndex] = i;
  25475. PlayerTextDrawSetString(playerid, Players[playerid][pText][72], g_FurnitureTypes[category]);
  25476. PlayerTextDrawFormatString(playerid, Players[playerid][pText][77], "~g~Model:~w~~n~%s~n~~n~~g~Price:~w~~n~%s", g_FurnitureList[i][e_ModelName], FormatNumber(g_FurnitureList[i][e_ModelPrice]));
  25477. PlayerTextDrawSetPreviewModel(playerid, Players[playerid][pText][76], g_FurnitureList[i][e_ModelID]);
  25478. if (category == FURNITURE_KITCHEN)
  25479. {
  25480. PlayerTextDrawSetPreviewRot(playerid, Players[playerid][pText][76], 0.0, 0.0, 180.0, 1.0);
  25481. }
  25482. HidePlayerTextDraws(playerid, 55, 57);
  25483. ShowPlayerTextDraws(playerid, 70, 77);
  25484. SelectTextDrawEx(playerid, -1);
  25485. return 1;
  25486. }
  25487. }
  25488. return 0;
  25489. }
  25490. HideFurniturePreviewer(playerid)
  25491. {
  25492. Players[playerid][pFurnitureMenu] = 0;
  25493. HidePlayerTextDraws(playerid, 70, 77);
  25494. CancelSelectTextDraw(playerid);
  25495. }
  25496. GetHouseOwner(house)
  25497. {
  25498. new playername[MAX_PLAYER_NAME];
  25499. if (Houses[house][hOwner])
  25500. strcpy(playername, Houses[house][hOwnerName]);
  25501. else
  25502. playername = "Nobody";
  25503. return playername;
  25504. }
  25505. SetHouseOwner(house, playerid)
  25506. {
  25507. if (playerid == INVALID_PLAYER_ID)
  25508. {
  25509. strcpy(Houses[house][hOwnerName], "Nobody", MAX_PLAYER_NAME);
  25510. Houses[house][hOwner] = 0;
  25511. }
  25512. else if (IsPlayerLoggedIn(playerid))
  25513. {
  25514. GetPlayerName(playerid, Houses[house][hOwnerName], MAX_PLAYER_NAME);
  25515. Houses[house][hOwner] = Players[playerid][pID];
  25516. }
  25517. UpdateHouse(house);
  25518. SaveHouse(house);
  25519. }
  25520. IsBackdoorSetup(house)
  25521. {
  25522. return (IsValidHouseID(house) && Houses[house][hBackdoor][0] != 0.0 && Houses[house][hBackdoor][1] != 0.0 && Houses[house][hBackdoor][2] != 0.0);
  25523. }
  25524. IsBackdoorExitSetup(house)
  25525. {
  25526. return (IsValidHouseID(house) && Houses[house][hBackdoorInt][0] != 0.0 && Houses[house][hBackdoorInt][1] != 0.0 && Houses[house][hBackdoorInt][2] != 0.0);
  25527. }
  25528. UpdateHouse(house)
  25529. {
  25530. new
  25531. string[128];
  25532. if (!Houses[house][hExists]) return 0;
  25533. DestroyDynamicCP(Houses[house][hCheckpoint]);
  25534. //DestroyDynamic3DTextLabel(Houses[house][hText]);
  25535. DestroyDynamic3DTextLabel(Houses[house][hBackdoorText][0]);
  25536. DestroyDynamic3DTextLabel(Houses[house][hBackdoorText][1]);
  25537. if (Houses[house][hOwner])
  25538. {
  25539. if (Houses[house][hRentPrice] > 0)
  25540. format(string, sizeof(string), "Rent: {33CC33}%s{AFAFAF}\n%s\n(( /rent ))", FormatNumber(Houses[house][hRentPrice]), Houses[house][hAddress]);
  25541. else
  25542. format(string, sizeof(string), "%s", Houses[house][hAddress]);
  25543. }
  25544. else
  25545. {
  25546. format(string, sizeof(string), "Price: {33CC33}%s{AFAFAF}\n%s", FormatNumber(Houses[house][hValue]), Houses[house][hAddress]);
  25547. }
  25548. Houses[house][hCheckpoint] = CreateDynamicCP(Houses[house][hSpawn][0], Houses[house][hSpawn][1], Houses[house][hSpawn][2], 2.0, Houses[house][hExteriorWorld], Houses[house][hExterior], .streamdistance = 15.0);
  25549. //Houses[house][hText] = CreateDynamic3DTextLabel(string, COLOR_GREY, Houses[house][hSpawn][0], Houses[house][hSpawn][1], Houses[house][hSpawn][2], 10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, Houses[house][hExteriorWorld], Houses[house][hExterior]);
  25550. if (IsBackdoorSetup(house))
  25551. {
  25552. Houses[house][hBackdoorText][0] = CreateDynamic3DTextLabel("House Backdoor\nEntrance Point", -1, Houses[house][hBackdoor][0], Houses[house][hBackdoor][1], Houses[house][hBackdoor][2], 10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, Houses[house][hExteriorWorld], Houses[house][hExterior]);
  25553. Houses[house][hBackdoorText][1] = CreateDynamic3DTextLabel("House Backdoor\nExit Point", -1, Houses[house][hBackdoorInt][0], Houses[house][hBackdoorInt][1], Houses[house][hBackdoorInt][2], 10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, Houses[house][hWorld], Houses[house][hInterior]);
  25554. }
  25555. return 1;
  25556. }
  25557. SaveHouse(house)
  25558. {
  25559. static
  25560. queryString[1024];
  25561. if (!Houses[house][hExists]) return 0;
  25562. format(queryString, sizeof(queryString), "UPDATE rp_houses SET `hOwner` = %i, `hOwnerName` = '%s', `hValue` = %i, `hAddress` = '%s', `hSpawnX` = %.4f, `hSpawnY` = %.4f, `hSpawnZ` = %.4f, `hSpawnA` = %.4f, `hIntX` = %.4f, `hIntY` = %.4f, `hIntZ` = %.4f, `hIntA` = %.4f, `hBackdoorX` = %.4f, `hBackdoorY` = %.4f, `hBackdoorZ` = %.4f",
  25563. Houses[house][hOwner],
  25564. Houses[house][hOwnerName],
  25565. Houses[house][hValue],
  25566. mysql_escaped(Houses[house][hAddress]),
  25567. Houses[house][hSpawn][0],
  25568. Houses[house][hSpawn][1],
  25569. Houses[house][hSpawn][2],
  25570. Houses[house][hSpawn][3],
  25571. Houses[house][hInt][0],
  25572. Houses[house][hInt][1],
  25573. Houses[house][hInt][2],
  25574. Houses[house][hInt][3],
  25575. Houses[house][hBackdoor][0],
  25576. Houses[house][hBackdoor][1],
  25577. Houses[house][hBackdoor][2]
  25578. );
  25579. format(queryString, sizeof(queryString), "%s, `hBackdoorIntX` = %.4f, `hBackdoorIntY` = %.4f, `hBackdoorIntZ` = %.4f, `hExterior` = %i, `hExteriorWorld` = %i, `hInterior` = %i, `hWorld` = %i, `hLocked` = %i, `hAlarm` = %i, `hRentPrice` = %i WHERE `hID` = %i",
  25580. queryString,
  25581. Houses[house][hBackdoorInt][0],
  25582. Houses[house][hBackdoorInt][1],
  25583. Houses[house][hBackdoorInt][2],
  25584. Houses[house][hExterior],
  25585. Houses[house][hExteriorWorld],
  25586. Houses[house][hInterior],
  25587. Houses[house][hWorld],
  25588. Houses[house][hLocked],
  25589. Houses[house][hAlarm],
  25590. Houses[house][hRentPrice],
  25591. Houses[house][hID]
  25592. );
  25593. return mysql_tquery(gConnection, queryString);
  25594. }
  25595. UpdateTimeTextDraw()
  25596. {
  25597. new
  25598. string[8],
  25599. hour,
  25600. minute;
  25601. gettime(hour, minute);
  25602. format(string, sizeof(string), "%02d:%02d", hour, minute);
  25603. TextDrawSetString(gGlobalTextdraws[1], string);
  25604. }
  25605. /*---------------------------------------------------------------------------
  25606. Callbacks
  25607. These are the callbacks called by the SA-MP server.
  25608. Make sure you add checks for NPCs also!
  25609. ---------------------------------------------------------------------------*/
  25610. /*
  25611. pWarnWeapon,
  25612. pWarnHealth,
  25613. pWarnArmor,
  25614. pWarnAirbreak,
  25615. pWarnSpeedhack,
  25616. pWarnMoneyHack,
  25617. pWarnAmmoHack,
  25618. pWarnFlyHack
  25619. */
  25620. forward IsAPlane(vehicle);
  25621. public IsAPlane(vehicle)
  25622. {
  25623. new model = GetVehicleModel(vehicle);
  25624. if(model == 592 || model == 577 || model == 511 || model == 512 || model == 593 || model == 520 || model == 553 ||
  25625. model == 476 || model == 519 || model == 460 || model == 513 || model == 548 || model == 417 || model == 487 ||
  25626. model == 488 || model == 497 || model == 563 || model == 447 || model == 469 )
  25627. {
  25628. return 1;
  25629. }
  25630. return 0;
  25631. }
  25632. forward IsAHelicopter(vehicle);
  25633. public IsAHelicopter(vehicle)
  25634. {
  25635. new model = GetVehicleModel(vehicle);
  25636. if(model == 548 || model == 425 || model == 417 || model == 487 || model == 488 || model == 497 || model == 563 || model == 447 || model == 469)
  25637. {
  25638. return 1;
  25639. }
  25640. return 0;
  25641. }
  25642. forward UnFreezePlayer(playerid);
  25643. public UnFreezePlayer(playerid)
  25644. {
  25645. TogglePlayerControllable(playerid, 1);
  25646. return 1;
  25647. }
  25648. forward OnCheatDetected(playerid, ip_address[], type, code);
  25649. public OnCheatDetected(playerid, ip_address[], type, code)
  25650. {
  25651. switch (code)
  25652. {
  25653. case 0 .. 1:
  25654. {
  25655. if(CheckAdmin(playerid, 5))
  25656. return 1;
  25657. Players[playerid][pWarnAirbreak]++;
  25658. if (Players[playerid][pWarnAirbreak] > 2)
  25659. {
  25660. SendAdminMessage(COLOR_RED, "Admin: %s might be airbreaking.", ReturnNameEx(playerid, 0));
  25661. Players[playerid][pWarnAirbreak] = 0;
  25662. }
  25663. }
  25664. case 2 .. 6:
  25665. {
  25666. if(CheckAdmin(playerid, 5))
  25667. return 1;
  25668. Players[playerid][pWarnTeleport]++;
  25669. if (Players[playerid][pWarnTeleport] > 2)
  25670. {
  25671. SendAdminMessage(COLOR_RED, "Admin: %s might be teleport hacking.", ReturnNameEx(playerid, 0));
  25672. Players[playerid][pWarnTeleport] = 0;
  25673. }
  25674. }
  25675. case 7 .. 8:
  25676. {
  25677. if(CheckAdmin(playerid, 5))
  25678. return 1;
  25679. Players[playerid][pWarnFlyHack]++;
  25680. if (Players[playerid][pWarnFlyHack] > 2)
  25681. {
  25682. SendAdminMessage(COLOR_RED, "Admin: %s might be flying.", ReturnNameEx(playerid, 0));
  25683. Players[playerid][pWarnFlyHack] = 0;
  25684. }
  25685. }
  25686. case 9 .. 10:
  25687. {
  25688. if(CheckAdmin(playerid, 5))
  25689. return 1;
  25690. Players[playerid][pWarnSpeedhack]++;
  25691. if (Players[playerid][pWarnSpeedhack] > 3)
  25692. {
  25693. SendAdminMessage(COLOR_RED, "Admin: %s might be speed hacking.", ReturnNameEx(playerid, 0));
  25694. Players[playerid][pWarnSpeedhack] = 0;
  25695. }
  25696. }
  25697. case 11 .. 12:
  25698. {
  25699. if(CheckAdmin(playerid, 5))
  25700. return 1;
  25701. Players[playerid][pWarnHealth]++;
  25702. if (Players[playerid][pWarnHealth] > 2)
  25703. {
  25704. SendAdminMessage(COLOR_RED, "Admin: %s might be health hacking.", ReturnNameEx(playerid, 0));
  25705. Players[playerid][pWarnHealth] = 0;
  25706. }
  25707. }
  25708. case 13:
  25709. {
  25710. if(CheckAdmin(playerid, 5))
  25711. return 1;
  25712. Players[playerid][pWarnArmor]++;
  25713. if (Players[playerid][pWarnArmor] > 2)
  25714. {
  25715. SendAdminMessage(COLOR_RED, "Admin: %s might be armor hacking.", ReturnNameEx(playerid, 0));
  25716. Players[playerid][pWarnArmor] = 0;
  25717. }
  25718. }
  25719. case 14:
  25720. {
  25721. if(CheckAdmin(playerid, 5))
  25722. return 1;
  25723. Players[playerid][pWarnMoneyHack]++;
  25724. if (Players[playerid][pWarnMoneyHack] > 3)
  25725. {
  25726. SendAdminMessage(COLOR_RED, "Admin: %s might be money hacking.", ReturnNameEx(playerid, 0));
  25727. Players[playerid][pWarnMoneyHack] = 0;
  25728. }
  25729. }
  25730. case 15:
  25731. {
  25732. if(CheckAdmin(playerid, 5))
  25733. return 1;
  25734. Players[playerid][pWarnWeapon]++;
  25735. if (Players[playerid][pWarnWeapon] > 2)
  25736. {
  25737. SendAdminMessage(COLOR_RED, "Admin: %s might be weapon hacking.", ReturnNameEx(playerid, 0));
  25738. Players[playerid][pWarnWeapon] = 0;
  25739. }
  25740. }
  25741. case 16 .. 17:
  25742. {
  25743. if(CheckAdmin(playerid, 5))
  25744. return 1;
  25745. Players[playerid][pWarnAmmoHack]++;
  25746. if (Players[playerid][pWarnAmmoHack] > 2)
  25747. {
  25748. SendAdminMessage(COLOR_RED, "Admin: %s might be ammo hacking.", ReturnNameEx(playerid, 0));
  25749. Players[playerid][pWarnAmmoHack] = 0;
  25750. }
  25751. }
  25752. case 19 .. 20:
  25753. {
  25754. if(CheckAdmin(playerid, 5))
  25755. return 1;
  25756. Players[playerid][pWarnGodMode]++;
  25757. if (Players[playerid][pWarnGodMode] > 1)
  25758. {
  25759. SendAdminMessage(COLOR_RED, "Admin: %s might be godmode hacking.", ReturnNameEx(playerid, 0));
  25760. Players[playerid][pWarnGodMode] = 0;
  25761. }
  25762. }
  25763. case 26:
  25764. {
  25765. if(CheckAdmin(playerid, 5))
  25766. return 1;
  25767. Players[playerid][pWarnRapidFire]++;
  25768. if (Players[playerid][pWarnRapidFire] > 2)
  25769. {
  25770. SendAdminMessage(COLOR_RED, "Admin: %s might be rapidfiring.", ReturnNameEx(playerid, 0));
  25771. Players[playerid][pWarnRapidFire] = 0;
  25772. }
  25773. }
  25774. /*case 39:
  25775. {
  25776. Players[playerid][pWarnDialogHack]++;
  25777. if (Players[playerid][pWarnDialogHack] > 10)
  25778. {
  25779. SendAdminMessage(COLOR_RED, "Admin: %s might be dialog hacking.", ReturnNameEx(playerid, 0));
  25780. Players[playerid][pWarnDialogHack] = 0;
  25781. }
  25782. }
  25783. default:
  25784. {
  25785. SendAdminMessage(COLOR_RED, "Admin: %s is hacking (code: %i).", ReturnNameEx(playerid, 0), code);
  25786. }*/
  25787. }
  25788. return 1;
  25789. }
  25790. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  25791. {
  25792. new
  25793. vehicle = GetVehicleID(vehicleid);
  25794. if (IsValidVehicleID(vehicle) && !Vehicles[vehicle][vRentable])
  25795. {
  25796. Vehicles[vehicle][vColor1] = color1;
  25797. Vehicles[vehicle][vColor2] = color2;
  25798. SaveVehicle(vehicle);
  25799. }
  25800. return 1;
  25801. }
  25802. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  25803. {
  25804. new
  25805. vehicle = GetVehicleID(vehicleid);
  25806. if (IsValidVehicleID(vehicle) && !Vehicles[vehicle][vRentable])
  25807. {
  25808. Vehicles[vehicle][vPaintjob] = paintjobid;
  25809. SaveVehicle(vehicle);
  25810. }
  25811. return 1;
  25812. }
  25813. public OnVehicleMod(playerid, vehicleid, componentid)
  25814. {
  25815. //new slot = GetVehicleComponentType(componentid);
  25816. if (!Players[playerid][pModShop])
  25817. {
  25818. SendAdminMessage(COLOR_RED, "Admin: %s tried to tune a vehicle without being in a mod shop.", ReturnNameEx(playerid));
  25819. return 0;
  25820. }
  25821. /*else
  25822. {
  25823. new
  25824. vehicle = GetVehicleID(vehicleid);
  25825. if (IsValidVehicleID(vehicle) && !Vehicles[vehicle][vRentable])
  25826. {
  25827. Vehicles[vehicle][vMods][slot] = componentid;
  25828. SaveComponent(vehicle, slot);
  25829. }
  25830. }*/
  25831. return 1;
  25832. }
  25833. public OnVehicleDeath(vehicleid, killerid)
  25834. {
  25835. ClearVehicleObjects(vehicleid);
  25836. if (VehicleInformation[vehicleid][vAdmin])
  25837. {
  25838. VehicleInformation[vehicleid][vAdmin] = 0;
  25839. DestroyVehicleEx(vehicleid);
  25840. }
  25841. return 1;
  25842. }
  25843. public OnVehicleSpawn(vehicleid)
  25844. {
  25845. new id;
  25846. ClearVehicleObjects(vehicleid);
  25847. ResetVehicleStream(vehicleid);
  25848. if (!IsPoweredVehicle(vehicleid))
  25849. {
  25850. SetVehicleParamsEx(vehicleid, 1, 1, 0, 0, 0, 0, 0);
  25851. }
  25852. switch (GetVehicleModel(vehicleid))
  25853. {
  25854. case 407, 416, 427, 428, 432, 433, 528, 544, 601:
  25855. {
  25856. SetVehicleHealth(vehicleid, 4000.0);
  25857. }
  25858. }
  25859. VehicleInformation[vehicleid][vFuel] = 100;
  25860. if ((id = GetVehicleID(vehicleid)) != INVALID_ID)
  25861. {
  25862. if (Vehicles[id][vRenter] != INVALID_PLAYER_ID)
  25863. {
  25864. Players[Vehicles[id][vRenter]][pRental] = INVALID_ID;
  25865. Vehicles[id][vRenter] = INVALID_PLAYER_ID;
  25866. UpdateVehicle(id);
  25867. }
  25868. else
  25869. {
  25870. ApplyModifications(id);
  25871. }
  25872. }
  25873. return 1;
  25874. }
  25875. /*public OnPlayerAirbreak(playerid)
  25876. {
  25877. if (!Players[playerid][pAdmin])
  25878. {
  25879. SendAdminMessage(COLOR_RED, "Admin: %s may be using airbreak hacks.", ReturnNameEx(playerid));
  25880. }
  25881. return 1;
  25882. }*/
  25883. public OnPlayerStreamIn(playerid, forplayerid)
  25884. {
  25885. UpdateNameTag(playerid, 2);
  25886. /*if (Players[forplayerid][pMaskID] > 0)
  25887. ShowPlayerNameTagForPlayer(playerid, forplayerid, 0);
  25888. else
  25889. ShowPlayerNameTagForPlayer(playerid, forplayerid, 1);*/
  25890. return 1;
  25891. }
  25892. public OnVehicleStreamIn(vehicleid, forplayerid)
  25893. {
  25894. return 1;
  25895. }
  25896. public OnVehicleStreamOut(vehicleid, forplayerid)
  25897. {
  25898. return 1;
  25899. }
  25900. public OnRconLoginAttempt(ip[], password[], success)
  25901. {
  25902. foreach (new i : Player)
  25903. {
  25904. if (!strcmp(ReturnIP(i), ip))
  25905. {
  25906. if (!success)
  25907. {
  25908. SendAdminMessage(COLOR_RED, "AdmCmd: %s has attempted to log into RCON.", ReturnNameEx(i, 0));
  25909. }
  25910. else
  25911. {
  25912. if (Players[i][pAdmin] < 6)
  25913. {
  25914. SendAdminMessage(COLOR_RED, "Admin: %s has been banned for an unauthorized RCON login.", ReturnNameEx(i, 0));
  25915. AddToBlacklist(i, "Anticheat", "Unauthorized RCON login");
  25916. }
  25917. }
  25918. }
  25919. }
  25920. return 1;
  25921. }
  25922. public OnPlayerDeath(playerid, killerid, reason)
  25923. {
  25924. UpdateNameTag(playerid, 2);
  25925. if (killerid != INVALID_PLAYER_ID)
  25926. {
  25927. if (IsWeaponCheater(killerid))
  25928. {
  25929. Players[playerid][pUnfairDeath] = 1;
  25930. SavePositionAndHealth(playerid);
  25931. SendInfoMessage(playerid, "You have been killed by a cheater. Your items will be restored.");
  25932. }
  25933. format(gExecute, sizeof(gExecute), "INSERT INTO rp_deathlogs (Killer, Target, Reason, Date) VALUES('%s', '%s', '%s', NOW())", ReturnName(killerid), ReturnName(playerid), GetDeathReason(reason));
  25934. mysql_tquery(gConnection, gExecute);
  25935. AdminDutyMessage(COLOR_RED, "Admin: %s (%i) has killed %s (%s).", ReturnNameEx(killerid, 0), killerid, ReturnNameEx(playerid, 0), GetDeathReason(reason));
  25936. }
  25937. if (!Players[playerid][pUnfairDeath])
  25938. {
  25939. SetPlayerValidArmor(playerid, 0.0);
  25940. /*if (Players[playerid][pDeathState] == DEATH_STATE_NONE)
  25941. {
  25942. if ( (0 <= reason <= 3) && (5 <= reason <= 7) )
  25943. {
  25944. SavePositionAndHealth(playerid);
  25945. Players[playerid][pDeathState] = DEATH_STATE_MELEE;
  25946. }
  25947. else
  25948. {
  25949. SavePositionAndHealth(playerid);
  25950. Players[playerid][pDeathState] = DEATH_STATE_INJURED;
  25951. Players[playerid][pHospital] = HOSPITAL_ALL_SAINTS;
  25952. }
  25953. }
  25954. else if (Players[playerid][pDeathState] == DEATH_STATE_MELEE)
  25955. {
  25956. SavePositionAndHealth(playerid);
  25957. Players[playerid][pDeathState] = DEATH_STATE_INJURED;
  25958. Players[playerid][pHospital] = HOSPITAL_ALL_SAINTS;
  25959. }
  25960. else if (Players[playerid][pDeathState] == DEATH_STATE_INJURED)
  25961. {
  25962. Players[playerid][pDeathState] = DEATH_STATE_HOSPITAL;
  25963. ResetLastShots(playerid);
  25964. }*/
  25965. /*if ( (0 <= reason <= 3) && (5 <= reason <= 7) )
  25966. {
  25967. }*/
  25968. if (Players[playerid][pDeathState] == DEATH_STATE_NONE)
  25969. {
  25970. SavePositionAndHealth(playerid);
  25971. Players[playerid][pDeathState] = DEATH_STATE_INJURED;
  25972. //Players[playerid][pHospital] = GetClosestHospital(playerid);
  25973. Players[playerid][pHospital] = HOSPITAL_ALL_SAINTS;
  25974. }
  25975. else if (Players[playerid][pDeathState] == DEATH_STATE_INJURED)
  25976. {
  25977. DestroyDynamic3DTextLabel(Players[playerid][pInjuredText]);
  25978. Players[playerid][pInjuredText] = INVALID_3DTEXT_ID;
  25979. Players[playerid][pDeathState] = DEATH_STATE_HOSPITAL;
  25980. //Players[playerid][pDeathState] = DEATH_STATE_NONE;
  25981. SendToDefaultSpawn(playerid);
  25982. ResetPlayer(playerid);
  25983. ResetLastShots(playerid);
  25984. }
  25985. }
  25986. return 1;
  25987. }
  25988. public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
  25989. {
  25990. newAmmo[playerid] = GetPlayerAmmo(playerid);
  25991. /*if (!(22 <= weaponid <= 38))
  25992. {
  25993. SendAdminMessage(COLOR_RED, "Admin: %s may be using a weapon CLEO (invalid weapon ID).", ReturnNameEx(playerid));
  25994. return 0;
  25995. }*/
  25996. if (IsPlayerInAnyVehicle(playerid) && !IsDrivebyWeapon(weaponid))
  25997. {
  25998. return 0;
  25999. }
  26000. if (IsWeaponCheater(playerid) && (hittype == BULLET_HIT_TYPE_PLAYER && hitid != INVALID_PLAYER_ID))
  26001. {
  26002. // Prevent hackers from damaging other players.
  26003. return 0;
  26004. }
  26005. if(newAmmo[playerid] < oldAmmo[playerid])
  26006. {
  26007. oldAmmo[playerid] = GetPlayerAmmo(playerid);
  26008. return 1;
  26009. }
  26010. else if(newAmmo[playerid] > oldAmmo[playerid]) //Was a simple mistake. xD
  26011. {
  26012. SendAdminMessage(COLOR_RED, "Admin: %s might be ammo-hacking.", ReturnNameEx(playerid, 0));
  26013. }
  26014. new rand = Random(0,10);
  26015. foreach (new i : Player)
  26016. {
  26017. if (rand == 0 && !Players[playerid][pAdminDuty] && i != playerid && IsPlayerInRangeOfPlayer(i, playerid, 200.0) && !IsPlayerInRangeOfPlayer(i, playerid, 70.0))
  26018. {
  26019. SendFormatMessage(i, COLOR_PURPLE, "* You hear a gun shot go off in the distance.");
  26020. }
  26021. }
  26022. if (GetPlayerWeaponState(playerid) == WEAPONSTATE_LAST_BULLET && GetPlayerAmmo(playerid) == 1 && !IsPlayerHoldingTazer(playerid))
  26023. {
  26024. if (Weapons[playerid][wPrimary] == weaponid)
  26025. {
  26026. Weapons[playerid][wPrimaryAmmo] = 0;
  26027. }
  26028. if (Weapons[playerid][wSecondary] == weaponid)
  26029. {
  26030. Weapons[playerid][wSecondaryAmmo] = 0;
  26031. }
  26032. }
  26033. if (22 <= weaponid <= 34)
  26034. {
  26035. if (weaponid == 23 && Players[playerid][pTazer])
  26036. {
  26037. PlayNearbySound(playerid, 6003);
  26038. SetPlayerAttachedObject(playerid, ATTACHED_SLOT_MISC, 347, 6);
  26039. SetTimerEx("RechargeTazer", 2000, false, "i", playerid);
  26040. ShowFooterText(playerid, "Recharging tazer, please wait...", 2000);
  26041. }
  26042. else
  26043. {
  26044. // We don't want on-duty admins to drop shells, do we?
  26045. if (!Players[playerid][pAdminDuty] && !IsPlayerInAnyVehicle(playerid))
  26046. {
  26047. if ((gettime() - Players[playerid][pFireTime]) > 3)
  26048. {
  26049. new
  26050. Float:x,
  26051. Float:y,
  26052. Float:z,
  26053. Float:angle;
  26054. GetPlayerPos(playerid, x, y, z);
  26055. GetPlayerFacingAngle(playerid, angle);
  26056. x += (0.6 * floatsin(-angle, degrees)) + random(2);
  26057. y += (0.6 * floatcos(-angle, degrees)) - random(2);
  26058. //AddShellCasing(GetCurrentWeaponSerial(playerid), weaponid, x, y, z, GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid));
  26059. Players[playerid][pFireTime] = gettime();
  26060. }
  26061. }
  26062. }
  26063. }
  26064. return 1;
  26065. }
  26066. /*public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid, bodypart)
  26067. {
  26068. if ((22 <= weaponid <= 38) && (amount <= 3.0)) { // Most damage scripts don't check for pistol whips... discard any script calls.
  26069. return 1;
  26070. }
  26071. return 1;
  26072. }*/
  26073. public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart)
  26074. {
  26075. if(Players[playerid][pDeathState] != DEATH_STATE_INJURED)
  26076. {
  26077. new hpp = floatround(amount, floatround_round), formatHP[128];
  26078. format(formatHP, sizeof(formatHP), "{f70000}-%d", hpp);
  26079. SetPlayerChatBubble(playerid, formatHP, -1, 10.0, 1000);
  26080. UpdateNameTag(playerid, 2);
  26081. }
  26082. if (Players[playerid][pAdminDuty] > 0)
  26083. {
  26084. SetPlayerHealth(playerid, 100);
  26085. return 1;
  26086. }
  26087. if ((22 <= weaponid <= 38) && (amount <= 3.0)) { // Most damage scripts don't check for pistol whips... discard any script calls.
  26088. return 1;
  26089. }
  26090. if ((0 <= weaponid <= 34) && (BODY_PART_TORSO <= bodypart <= BODY_PART_HEAD))
  26091. {
  26092. LastShots[playerid][bodypart][lWeaponID] = weaponid;
  26093. LastShots[playerid][bodypart][lWeaponShots]++;
  26094. }
  26095. if (IsValidDamageWeapon(weaponid) && WeaponDamages[weaponid] != 0.0 && !IsPlayerHoldingTazer(playerid)) {
  26096. ProcessDamage(playerid, weaponid);
  26097. }
  26098. if ((22 <= weaponid <= 38) && (!Players[playerid][pBrokenLeg]) && (bodypart == BODY_PART_LEFT_LEG || bodypart == BODY_PART_RIGHT_LEG))
  26099. {
  26100. SendInfoMessage(playerid, "You have been shot in your leg. You will be unable to jump or sprint.");
  26101. Players[playerid][pBrokenLeg] = 1;
  26102. }
  26103. if (issuerid != INVALID_PLAYER_ID && weaponid <= 1) // Fitness damage.
  26104. {
  26105. new
  26106. Float:health,
  26107. Float:armor,
  26108. Float:damage;
  26109. GetPlayerHealth(playerid, health);
  26110. GetPlayerArmour(playerid, armor);
  26111. damage = amount + (0.02 * Players[issuerid][pFitness]);
  26112. if (armor > 0.0)
  26113. {
  26114. armor -= damage;
  26115. if (armor <= 0.0)
  26116. SetPlayerValidArmor(playerid, 0.0);
  26117. else
  26118. SetPlayerValidArmor(playerid, armor);
  26119. }
  26120. else
  26121. {
  26122. SetPlayerHealth(playerid, health - damage);
  26123. }
  26124. }
  26125. if (issuerid != INVALID_PLAYER_ID && Players[issuerid][pTazer] && weaponid == 23)
  26126. {
  26127. if (!Players[playerid][pTazed] && !Players[playerid][pAdminDuty])
  26128. {
  26129. Players[playerid][pTazed] = 10;
  26130. TogglePlayerControllable(playerid, false);
  26131. ApplyAnimation(playerid, "CRACK", "crckdeth4", 4.1, 0, 0, 0, 1, 0, 1);
  26132. ShowActionBubble(issuerid, "* %s charges his stungun at %s.", ReturnNameEx(issuerid), ReturnNameEx(playerid));
  26133. ShowActionBubble(playerid, "* %s falls down after being stunned.", ReturnNameEx(playerid));
  26134. SendInfoMessage(issuerid, "You have stunned %s with your taser.", ReturnNameEx(playerid));
  26135. GameTextForPlayer(playerid, "~r~Stunned", 10000, 3);
  26136. }
  26137. }
  26138. if (issuerid != INVALID_PLAYER_ID && weaponid == 41)
  26139. {
  26140. SetPlayerDrunkLevel(playerid, 4000);
  26141. ShowActionBubble(issuerid, "* %s hits %s with their pepper spray.", ReturnNameEx(issuerid), ReturnNameEx(playerid));
  26142. ShowActionBubble(playerid, "* %s gets hit by %s's pepper spray.", ReturnNameEx(playerid), ReturnNameEx(issuerid));
  26143. }
  26144. if (!Players[playerid][pBleeding])
  26145. {
  26146. switch (weaponid)
  26147. {
  26148. case 4, 8, 9, 22..34, 38:
  26149. {
  26150. if (!IsPlayerLoggedIn(playerid) || IsPlayerJailed(playerid) || !Players[playerid][pSetupInfo] || GetPlayerArmourEx(playerid) > 0.0)
  26151. {
  26152. return 1;
  26153. }
  26154. if (weaponid == 23 && Players[issuerid][pTazer])
  26155. {
  26156. return 1;
  26157. }
  26158. Players[playerid][pBleeding] = 1;
  26159. Players[playerid][pBleedingTime] = 0;
  26160. new
  26161. Float:x,
  26162. Float:y,
  26163. Float:z,
  26164. Float:angle;
  26165. GetPlayerPos(playerid, x, y, z);
  26166. GetPlayerFacingAngle(playerid, angle);
  26167. //SpawnBloodObject(playerid);
  26168. //AddBlood(playerid, x, y, z, GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid));
  26169. }
  26170. }
  26171. }
  26172. return 1;
  26173. }
  26174. Float:DistanceBP(Float:x, Float:y, Float:z, Float:tx, Float:ty, Float:tz)
  26175. {
  26176. new Float:temp1, Float:temp2 , Float:temp3;
  26177. temp1 = x-tx;temp2 = y-ty;
  26178. temp3 = z-tz;
  26179. return floatsqroot(temp1*temp1+temp2*temp2+temp3*temp3);
  26180. }
  26181. public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
  26182. {
  26183. if (response == EDIT_RESPONSE_CANCEL)
  26184. {
  26185. switch (Players[playerid][pEdit])
  26186. {
  26187. case EDIT_TYPE_PREVIEW:
  26188. {
  26189. DestroyDynamicObject(gPreviewFurniture[playerid]);
  26190. gPreviewFurniture[playerid] = INVALID_OBJECT_ID;
  26191. }
  26192. case EDIT_TYPE_FURNITURE:
  26193. {
  26194. UpdateFurniture(Players[playerid][pEditID]);
  26195. }
  26196. case EDIT_TYPE_PUMP:
  26197. {
  26198. UpdateGasPump(Players[playerid][pEditID]);
  26199. }
  26200. case EDIT_TYPE_ATM:
  26201. {
  26202. UpdateATM(Players[playerid][pEditID]);
  26203. }
  26204. case EDIT_TYPE_GATE, EDIT_TYPE_GATE_MOVE:
  26205. {
  26206. UpdateGate(Players[playerid][pEditID]);
  26207. }
  26208. case EDIT_TYPE_OBJECT:
  26209. {
  26210. UpdateObject(Players[playerid][pEditID]);
  26211. }
  26212. case EDIT_TYPE_TRASHBIN:
  26213. {
  26214. UpdateTrashbin(Players[playerid][pEditID]);
  26215. }
  26216. case EDIT_TYPE_TAG:
  26217. {
  26218. UpdateTag(Players[playerid][pEditID]);
  26219. }
  26220. case EDIT_TYPE_SPRAY:
  26221. {
  26222. UpdateSprayTag(Players[playerid][pEditID]);
  26223. }
  26224. case EDIT_TYPE_PAYPHONE:
  26225. {
  26226. UpdatePayphone(Players[playerid][pEditID]);
  26227. }
  26228. case EDIT_TYPE_DEPLOY:
  26229. {
  26230. SendInfoMessage(playerid, "Cancelled.");
  26231. DestroyDynamicObject( gPreviewDeploy[playerid] );
  26232. }
  26233. case EDIT_TYPE_TRUNK:
  26234. {
  26235. new dataid = Players[playerid][pEditID];
  26236. AttachDynamicObjectToVehicle(StoredItems[ dataid ][vehicleItem], GetPVarInt(playerid, "tempVehicle"), 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
  26237. StoredItems[ dataid ][vehicleOffset][0] = 0.0;
  26238. StoredItems[ dataid ][vehicleOffset][1] = 0.0;
  26239. StoredItems[ dataid ][vehicleOffset][2] = 0.0;
  26240. StoredItems[ dataid ][vehicleOffset][3] = 0.0;
  26241. StoredItems[ dataid ][vehicleOffset][4] = 0.0;
  26242. StoredItems[ dataid ][vehicleOffset][5] = 0.0;
  26243. format(gExecute, sizeof(gExecute), "UPDATE rp_items SET vehOffsetX = 0.0, vehOffsetY = 0.0, vehOffsetZ = 0.0, vehRotX = 0.0, vehRotY = 0.0, vehRotZ = 0.0 WHERE itemID = %i", StoredItems[ dataid ][stID]);
  26244. mysql_tquery(gConnection, gExecute);
  26245. DeletePVar(playerid, "tempVehicle");
  26246. }
  26247. }
  26248. Players[playerid][pEdit] = EDIT_TYPE_NONE;
  26249. }
  26250. else if (response == EDIT_RESPONSE_FINAL)
  26251. {
  26252. switch (Players[playerid][pEdit])
  26253. {
  26254. case EDIT_TYPE_DEPLOY:
  26255. {
  26256. SendInfoMessage(playerid, "Saved.");
  26257. DeployedItems[ gPreviewDeployID[playerid] ][dpX] = x;
  26258. DeployedItems[ gPreviewDeployID[playerid] ][dpY] = y;
  26259. DeployedItems[ gPreviewDeployID[playerid] ][dpZ] = z;
  26260. DeployedItems[ gPreviewDeployID[playerid] ][dpA] = rz;
  26261. SetDynamicObjectPos(objectid, x, y, z);
  26262. SetDynamicObjectRot(objectid, rx, ry, rz);
  26263. }
  26264. case EDIT_TYPE_PREVIEW: // Furniture preview
  26265. {
  26266. //if (!IsPointInRangeOfPoint(20.0, x, y, z, Houses[Players[playerid][pHouse]][hSpawn][0], Houses[Players[playerid][pHouse]][hSpawn][1], Houses[Players[playerid][pHouse]][hSpawn][2]) && !IsPointInRangeOfPoint(100.0, x, y, z, Houses[Players[playerid][pHouse]][hInt][0], Houses[Players[playerid][pHouse]][hInt][1], Houses[Players[playerid][pHouse]][hInt][2]))
  26267. if (GetCurrentHouse(playerid) != Players[playerid][pHouse] && !IsPlayerNearPoint(playerid, 30.0, Houses[Players[playerid][pHouse]][hSpawn][0], Houses[Players[playerid][pHouse]][hSpawn][1], Houses[Players[playerid][pHouse]][hSpawn][2]))
  26268. {
  26269. SendErrorMessage(playerid, "The object is out of range from your house.");
  26270. }
  26271. else if (!PlayerCanAfford(playerid, g_FurnitureList[Players[playerid][pPreviewIndex]][e_ModelPrice]))
  26272. {
  26273. SendErrorMessage(playerid, "You don't have enough money.");
  26274. }
  26275. else
  26276. {
  26277. new id = AddFurniture(Players[playerid][pHouse], g_FurnitureList[Players[playerid][pPreviewIndex]][e_ModelID], x, y, z, rx, ry, rz, GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid));
  26278. if (id == INVALID_ID)
  26279. {
  26280. SendErrorMessage(playerid, "There are no available furniture slots.");
  26281. SendAdminMessage(COLOR_RED, "Admin: %s has failed to add furniture! \"MAX_FURNITURE\" needs to be adjusted.", ReturnNameEx(playerid, 0));
  26282. }
  26283. else
  26284. {
  26285. RemoveMoney(playerid, g_FurnitureList[Players[playerid][pPreviewIndex]][e_ModelPrice]);
  26286. Statistics[playerid][sFurnitureFees] += g_FurnitureList[Players[playerid][pPreviewIndex]][e_ModelPrice];
  26287. ShowFurnitureCategories(playerid);
  26288. SendInfoMessage(playerid, "Furniture purchased for {33CC33}%s{FFFFFF}. Use /house to manage your furniture.", FormatNumber(g_FurnitureList[Players[playerid][pPreviewIndex]][e_ModelPrice]));
  26289. }
  26290. }
  26291. DestroyDynamicObject(gPreviewFurniture[playerid]);
  26292. gPreviewFurniture[playerid] = INVALID_OBJECT_ID;
  26293. }
  26294. case EDIT_TYPE_FURNITURE: // House furniture
  26295. {
  26296. Furniture[Players[playerid][pEditID]][fSpawn][0] = x;
  26297. Furniture[Players[playerid][pEditID]][fSpawn][1] = y;
  26298. Furniture[Players[playerid][pEditID]][fSpawn][2] = z;
  26299. Furniture[Players[playerid][pEditID]][fSpawn][3] = rx;
  26300. Furniture[Players[playerid][pEditID]][fSpawn][4] = ry;
  26301. Furniture[Players[playerid][pEditID]][fSpawn][5] = rz;
  26302. UpdateFurniture(Players[playerid][pEditID]);
  26303. SaveFurniture(Players[playerid][pEditID]);
  26304. SendInfoMessage(playerid, "You have edited furniture ID: %i.", Players[playerid][pEditID]);
  26305. }
  26306. case EDIT_TYPE_PUMP: // Gas pumps
  26307. {
  26308. GasPumps[Players[playerid][pEditID]][gpSpawn][0] = x;
  26309. GasPumps[Players[playerid][pEditID]][gpSpawn][1] = y;
  26310. GasPumps[Players[playerid][pEditID]][gpSpawn][2] = z;
  26311. GasPumps[Players[playerid][pEditID]][gpSpawn][3] = rz;
  26312. UpdateGasPump(Players[playerid][pEditID]);
  26313. SaveGasPump(Players[playerid][pEditID]);
  26314. SendInfoMessage(playerid, "You have edited gas pump ID: %i.", Players[playerid][pEditID]);
  26315. }
  26316. case EDIT_TYPE_ATM: // ATM machines
  26317. {
  26318. ATM[Players[playerid][pEditID]][atmSpawn][0] = x;
  26319. ATM[Players[playerid][pEditID]][atmSpawn][1] = y;
  26320. ATM[Players[playerid][pEditID]][atmSpawn][2] = z;
  26321. ATM[Players[playerid][pEditID]][atmSpawn][3] = rz;
  26322. UpdateATM(Players[playerid][pEditID]);
  26323. SaveATM(Players[playerid][pEditID]);
  26324. SendInfoMessage(playerid, "You have edited ATM machine ID: %i.", Players[playerid][pEditID]);
  26325. }
  26326. case EDIT_TYPE_GATE: // Gates
  26327. {
  26328. Gates[Players[playerid][pEditID]][gSpawn][0] = x;
  26329. Gates[Players[playerid][pEditID]][gSpawn][1] = y;
  26330. Gates[Players[playerid][pEditID]][gSpawn][2] = z;
  26331. Gates[Players[playerid][pEditID]][gSpawn][3] = rx;
  26332. Gates[Players[playerid][pEditID]][gSpawn][4] = ry;
  26333. Gates[Players[playerid][pEditID]][gSpawn][5] = rz;
  26334. UpdateGate(Players[playerid][pEditID]);
  26335. SaveGate(Players[playerid][pEditID]);
  26336. SendInfoMessage(playerid, "You have edited gate ID: %i.", Players[playerid][pEditID]);
  26337. }
  26338. case EDIT_TYPE_GATE_MOVE: // Gate destination
  26339. {
  26340. Gates[Players[playerid][pEditID]][gMove][0] = x;
  26341. Gates[Players[playerid][pEditID]][gMove][1] = y;
  26342. Gates[Players[playerid][pEditID]][gMove][2] = z;
  26343. Gates[Players[playerid][pEditID]][gMove][3] = rx;
  26344. Gates[Players[playerid][pEditID]][gMove][4] = ry;
  26345. Gates[Players[playerid][pEditID]][gMove][5] = rz;
  26346. UpdateGate(Players[playerid][pEditID]);
  26347. SaveGate(Players[playerid][pEditID]);
  26348. SendInfoMessage(playerid, "You have edited the moving destination for gate ID: %i.", Players[playerid][pEditID]);
  26349. }
  26350. case EDIT_TYPE_OBJECT: // Script objects
  26351. {
  26352. Objects[Players[playerid][pEditID]][oX] = x;
  26353. Objects[Players[playerid][pEditID]][oY] = y;
  26354. Objects[Players[playerid][pEditID]][oZ] = z;
  26355. Objects[Players[playerid][pEditID]][oRX] = rx;
  26356. Objects[Players[playerid][pEditID]][oRY] = ry;
  26357. Objects[Players[playerid][pEditID]][oRZ] = rz;
  26358. UpdateObject(Players[playerid][pEditID]);
  26359. SaveObject(Players[playerid][pEditID]);
  26360. SendInfoMessage(playerid, "You have edited object ID: %i.", Players[playerid][pEditID]);
  26361. }
  26362. case EDIT_TYPE_TRASHBIN: // Trashbins
  26363. {
  26364. Trashbins[Players[playerid][pEditID]][tX] = x;
  26365. Trashbins[Players[playerid][pEditID]][tY] = y;
  26366. Trashbins[Players[playerid][pEditID]][tZ] = z;
  26367. Trashbins[Players[playerid][pEditID]][tA] = rz;
  26368. UpdateTrashbin(Players[playerid][pEditID]);
  26369. SaveTrashbin(Players[playerid][pEditID]);
  26370. SendInfoMessage(playerid, "You have edited trashbin ID: %i.", Players[playerid][pEditID]);
  26371. }
  26372. case EDIT_TYPE_TAG: // Spray tags
  26373. {
  26374. Tags[Players[playerid][pEditID]][tagX] = x;
  26375. Tags[Players[playerid][pEditID]][tagY] = y;
  26376. Tags[Players[playerid][pEditID]][tagZ] = z;
  26377. Tags[Players[playerid][pEditID]][tagA] = rz;
  26378. UpdateTag(Players[playerid][pEditID]);
  26379. SaveTag(Players[playerid][pEditID]);
  26380. SendInfoMessage(playerid, "You have edited tag ID: %i.", Players[playerid][pEditID]);
  26381. }
  26382. case EDIT_TYPE_SPRAY: // Spray tags
  26383. {
  26384. SprayTags[Players[playerid][pEditID]][sX] = x;
  26385. SprayTags[Players[playerid][pEditID]][sY] = y;
  26386. SprayTags[Players[playerid][pEditID]][sZ] = z;
  26387. SprayTags[Players[playerid][pEditID]][sA] = rz;
  26388. UpdateSprayTag(Players[playerid][pEditID]);
  26389. SaveSprayTag(Players[playerid][pEditID]);
  26390. SendInfoMessage(playerid, "You have edited spray tag ID: %i.", Players[playerid][pEditID]);
  26391. }
  26392. case EDIT_TYPE_PAYPHONE: // Payphones
  26393. {
  26394. Payphones[Players[playerid][pEditID]][phX] = x;
  26395. Payphones[Players[playerid][pEditID]][phY] = y;
  26396. Payphones[Players[playerid][pEditID]][phZ] = z;
  26397. Payphones[Players[playerid][pEditID]][phA] = rz;
  26398. UpdatePayphone(Players[playerid][pEditID]);
  26399. SavePayphone(Players[playerid][pEditID]);
  26400. SendInfoMessage(playerid, "You have edited payphone ID: %i.", Players[playerid][pEditID]);
  26401. }
  26402. case EDIT_TYPE_TRUNK:
  26403. {
  26404. new
  26405. vehicle = GetPVarInt(playerid, "tempVehicle"),
  26406. dataid = Players[playerid][pEditID],
  26407. Float:ofx, Float:ofy,
  26408. Float:ofz, Float:ofaz,
  26409. Float:finalx, Float:finaly,
  26410. Float:px, Float:py,
  26411. Float:pz, Float:roz;
  26412. new Float: oldPos[3];
  26413. GetXYZOfVehiclePart(vehicle, VEHICLE_PART_HOOD, oldPos[0], oldPos[1], oldPos[2]);
  26414. new Float: limit = DistanceBP(x, y, z, oldPos[0], oldPos[1], oldPos[2]);
  26415. GetVehiclePos(vehicle, px, py, pz);
  26416. GetVehicleZAngle(vehicle, roz);
  26417. ofx = x-px;
  26418. ofy = y-py;
  26419. ofz = z-pz;
  26420. ofaz = rz-roz;
  26421. finalx = ofx*floatcos(roz, degrees)+ofy*floatsin(roz, degrees);
  26422. finaly = -ofx*floatsin(roz, degrees)+ofy*floatcos(roz, degrees);
  26423. if(limit > 1.8) // over the limit
  26424. {
  26425. AttachDynamicObjectToVehicle(StoredItems[ dataid ][vehicleItem], vehicle, 0, 0, 0, 0, 0, 0);
  26426. StoredItems[ dataid ][vehicleOffset][0] = 0.0;
  26427. StoredItems[ dataid ][vehicleOffset][1] = 0.0;
  26428. StoredItems[ dataid ][vehicleOffset][2] = 0.0;
  26429. StoredItems[ dataid ][vehicleOffset][3] = 0.0;
  26430. StoredItems[ dataid ][vehicleOffset][4] = 0.0;
  26431. StoredItems[ dataid ][vehicleOffset][5] = 0.0;
  26432. format(gExecute, sizeof(gExecute), "UPDATE rp_items SET vehOffsetX = 0.0, vehOffsetY = 0.0, vehOffsetZ = 0.0, vehRotX = 0.0, vehRotY = 0.0, vehRotZ = 0.0 WHERE itemID = %i", StoredItems[ dataid ][stID]);
  26433. mysql_tquery(gConnection, gExecute);
  26434. DeletePVar(playerid, "tempVehicle");
  26435. }
  26436. else
  26437. {
  26438. AttachDynamicObjectToVehicle(StoredItems[ dataid ][vehicleItem], vehicle, finalx, finaly, ofz, rx, ry, ofaz);
  26439. StoredItems[ dataid ][vehicleOffset][0] = finalx;
  26440. StoredItems[ dataid ][vehicleOffset][1] = finaly;
  26441. StoredItems[ dataid ][vehicleOffset][2] = ofz;
  26442. StoredItems[ dataid ][vehicleOffset][3] = rx;
  26443. StoredItems[ dataid ][vehicleOffset][4] = ry;
  26444. StoredItems[ dataid ][vehicleOffset][5] = ofaz;
  26445. format(gExecute, sizeof(gExecute), "UPDATE rp_items SET vehOffsetX = %f, vehOffsetY = %f, vehOffsetZ = %f, vehRotX = %f, vehRotY = %f, vehRotZ = %f WHERE itemID = %i",
  26446. finalx,
  26447. finaly,
  26448. ofz,
  26449. rx,
  26450. ry,
  26451. ofaz,
  26452. StoredItems[ dataid ][stID]);
  26453. mysql_tquery(gConnection, gExecute);
  26454. DeletePVar(playerid, "tempVehicle");
  26455. }
  26456. }
  26457. }
  26458. if(response == EDIT_RESPONSE_UPDATE)
  26459. {
  26460. switch (Players[playerid][pEdit])
  26461. {
  26462. case EDIT_TYPE_TRUNK:
  26463. {
  26464. new Float: oldPos[3];
  26465. GetXYZOfVehiclePart(GetPVarInt(playerid, "tempVehicle"), VEHICLE_PART_HOOD, oldPos[0], oldPos[1], oldPos[2]);
  26466. new Float: limit = DistanceBP(x, y, z, oldPos[0], oldPos[1], oldPos[2]);
  26467. if(limit > 1.8) // over the limit
  26468. {
  26469. SendClientMessage(playerid, COLOR_LIGHTRED, "Please adjust your position it's over the vehicle size!");
  26470. }
  26471. }
  26472. }
  26473. }
  26474. Players[playerid][pEdit] = EDIT_TYPE_NONE;
  26475. Players[playerid][pEditID] = INVALID_ID;
  26476. }
  26477. return 1;
  26478. }
  26479. public OnPlayerEditAttachedObject(playerid, response, index, modelid, boneid, Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ, Float:fRotX, Float:fRotY, Float:fRotZ, Float:fScaleX, Float:fScaleY, Float:fScaleZ)
  26480. {
  26481. if (fScaleX > 3.0000) fScaleX = 3.0;
  26482. if (fScaleY > 3.0000) fScaleY = 3.0;
  26483. if (fScaleZ > 3.0000) fScaleZ = 3.0;
  26484. if (!response)
  26485. {
  26486. switch (Players[playerid][pEdit])
  26487. {
  26488. case EDIT_TYPE_PREVIEW:
  26489. {
  26490. RemovePlayerAttachedObject(playerid, ATTACHED_SLOT_MISC);
  26491. }
  26492. case EDIT_TYPE_ACCESSORY:
  26493. {
  26494. AttachObjectsToPlayer(playerid);
  26495. }
  26496. case EDIT_TYPE_WEAPON:
  26497. {
  26498. UpdateWeaponOffset(playerid, Players[playerid][pSelected]);
  26499. }
  26500. }
  26501. Players[playerid][pEdit] = EDIT_TYPE_NONE;
  26502. }
  26503. else
  26504. {
  26505. switch (Players[playerid][pEdit])
  26506. {
  26507. case EDIT_TYPE_PREVIEW:
  26508. {
  26509. new
  26510. company = GetCurrentCompany(playerid);
  26511. if (IsValidCompanyID(company) && Companies[company][cType] == COMPANY_CLOTHES)
  26512. {
  26513. if (!PlayerCanAfford(playerid, Products[company][Players[playerid][pSelected]][prPrice]))
  26514. {
  26515. SendErrorMessage(playerid, "You don't have enough money.");
  26516. }
  26517. else
  26518. {
  26519. new
  26520. id = AddAccessory(playerid, GetAccessoryNameFromModel(modelid), modelid, boneid, fOffsetX, fOffsetY, fOffsetZ, fRotX, fRotY, fRotZ, fScaleX, fScaleY, fScaleZ);
  26521. if (id == INVALID_ID)
  26522. {
  26523. return SendErrorMessage(playerid, "You can't have more than %i accessories.", MAX_ACCESSORIES);
  26524. }
  26525. else
  26526. {
  26527. RemovePlayerAttachedObject(playerid, ATTACHED_SLOT_MISC);
  26528. AttachObjectsToPlayer(playerid);
  26529. //RemoveMoney(playerid, Products[company][Players[playerid][pSelected]][prPrice]);
  26530. PurchaseProduct(playerid, company, Players[playerid][pSelected]);
  26531. SendInfoMessage(playerid, "Accessory purchased for {33CC33}%s{FFFFFF}. Use /accessories to edit it.", FormatNumber(Products[company][Players[playerid][pSelected]][prPrice]));
  26532. SaveAccessory(playerid);
  26533. }
  26534. }
  26535. }
  26536. }
  26537. case EDIT_TYPE_ACCESSORY:
  26538. {
  26539. Accessories[playerid][Players[playerid][pEditID]][aOffset][0] = fOffsetX;
  26540. Accessories[playerid][Players[playerid][pEditID]][aOffset][1] = fOffsetY;
  26541. Accessories[playerid][Players[playerid][pEditID]][aOffset][2] = fOffsetZ;
  26542. Accessories[playerid][Players[playerid][pEditID]][aOffset][3] = fRotX;
  26543. Accessories[playerid][Players[playerid][pEditID]][aOffset][4] = fRotY;
  26544. Accessories[playerid][Players[playerid][pEditID]][aOffset][5] = fRotZ;
  26545. Accessories[playerid][Players[playerid][pEditID]][aOffset][6] = fScaleX;
  26546. Accessories[playerid][Players[playerid][pEditID]][aOffset][7] = fScaleY;
  26547. Accessories[playerid][Players[playerid][pEditID]][aOffset][8] = fScaleZ;
  26548. SaveAccessory(playerid, Players[playerid][pEditID]);
  26549. SendInfoMessage(playerid, "Your changes have been saved.");
  26550. }
  26551. case EDIT_TYPE_WEAPON:
  26552. {
  26553. if (index == ATTACHED_SLOT_MELEE) {
  26554. SetWeaponOffset(playerid, GetWeaponOffsetType(Weapons[playerid][wMelee]), boneid, fOffsetX, fOffsetY, fOffsetZ, fRotX, fRotY, fRotZ);
  26555. UpdateWeaponOffset(playerid, WEAPON_MELEE);
  26556. } else if (index == ATTACHED_SLOT_PRIMARY) {
  26557. SetWeaponOffset(playerid, GetWeaponOffsetType(Weapons[playerid][wPrimary]), boneid, fOffsetX, fOffsetY, fOffsetZ, fRotX, fRotY, fRotZ);
  26558. UpdateWeaponOffset(playerid, WEAPON_PRIMARY);
  26559. } else if (index == ATTACHED_SLOT_SECONDARY) {
  26560. SetWeaponOffset(playerid, GetWeaponOffsetType(Weapons[playerid][wSecondary]), boneid, fOffsetX, fOffsetY, fOffsetZ, fRotX, fRotY, fRotZ);
  26561. UpdateWeaponOffset(playerid, WEAPON_SECONDARY);
  26562. } else if (index == ATTACHED_SLOT_TERTIARY) {
  26563. SetWeaponOffset(playerid, GetWeaponOffsetType(Weapons[playerid][wTertiary]), boneid, fOffsetX, fOffsetY, fOffsetZ, fRotX, fRotY, fRotZ);
  26564. UpdateWeaponOffset(playerid, WEAPON_TERTIARY);
  26565. }
  26566. SendInfoMessage(playerid, "Your changes have been saved.");
  26567. }
  26568. }
  26569. Players[playerid][pEdit] = EDIT_TYPE_NONE;
  26570. }
  26571. return 1;
  26572. }
  26573. public OnPlayerEnterDynamicCP(playerid, checkpointid)
  26574. {
  26575. if (IsPlayerSpectating(playerid)) return 1;
  26576. if (checkpointid == Checkpoints[cpEmployment])
  26577. {
  26578. if (Players[playerid][pWorking])
  26579. {
  26580. return SendErrorMessage(playerid, "You must stop working first - use /stop to do this.");
  26581. }
  26582. else
  26583. {
  26584. Dialog_Show(playerid, Employment, DIALOG_STYLE_LIST, "{FFFFFF}Select Employment", "Transporter\nForklifter\nMiner\nTaxi Driver\nPizzaboy\nTrashman\nMechanic", "Choose", "Cancel");
  26585. }
  26586. }
  26587. else if (checkpointid == Checkpoints[cpPolice])
  26588. {
  26589. Dialog_Show(playerid, VehicleMenu, DIALOG_STYLE_LIST, "{FFFFFF}Tickets/Impounding", "Pay Tickets\nRelease Vehicle", "Select", "Cancel");
  26590. }
  26591. for (new i = 0; i < MAX_HOUSES; i ++)
  26592. {
  26593. if (Houses[i][hExists] && Houses[i][hCheckpoint] == checkpointid && Players[playerid][pHouseInfo] != i)
  26594. {
  26595. ShowInfoForHouse(playerid, i);
  26596. if(CheckAdmin(playerid, 5))
  26597. {
  26598. SendInfoMessage(playerid, "The house ID is: %i. Use /edithouse to edit it.", i);
  26599. }
  26600. else if (IsHouseOwner(playerid, i))
  26601. {
  26602. SendInfoMessage(playerid, "Use /house to access the house menu.");
  26603. }
  26604. }
  26605. }
  26606. for (new i = 0; i < MAX_COMPANIES; i ++)
  26607. {
  26608. if ((Companies[i][cExists] && Companies[i][cCheckpoint] == checkpointid) && Players[playerid][pCompanyInfo] != i)
  26609. {
  26610. ShowInfoForCompany(playerid, i);
  26611. if(CheckAdmin(playerid, 5))
  26612. {
  26613. SendInfoMessage(playerid, "The company ID is: %i. Use /editcompany to edit it.", i);
  26614. }
  26615. else if (IsCompanyOwner(playerid, i))
  26616. {
  26617. SendInfoMessage(playerid, "Use /company to access the company menu.");
  26618. }
  26619. }
  26620. }
  26621. return 1;
  26622. }
  26623. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  26624. {
  26625. if (Players[playerid][pTazed] || (Players[playerid][pHandcuffed] && !ispassenger) || GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_CARRY)
  26626. {
  26627. ClearAnimations(playerid);
  26628. return 0;
  26629. }
  26630. if(ispassenger == 0) {
  26631. EnteringVehicle[playerid] = 1;
  26632. EnteringVeh_Timer[playerid] = SetTimerEx("EnteringVehicleTim", 3000, false, "ii", playerid, vehicleid);
  26633. }
  26634. return 1;
  26635. }
  26636. forward EnteringVehicleTim(playerid, vehicleid);
  26637. public EnteringVehicleTim(playerid, vehicleid)
  26638. {
  26639. EnteringVehicle[playerid] = 0;
  26640. GetVehicleHealth(vehicleid, vehicleStartingHealth[playerid]);
  26641. return 1;
  26642. }
  26643. public OnPlayerEnterCheckpoint(playerid)
  26644. {
  26645. new
  26646. vehicleid = GetPlayerVehicleID(playerid);
  26647. if (IsPlayerSpectating(playerid)) return 1;
  26648. if (Players[playerid][pDrivingTest])
  26649. {
  26650. Players[playerid][pDrivingCP]++;
  26651. if (Players[playerid][pDrivingCP] >= sizeof(g_TestCheckpoints))
  26652. {
  26653. SetVehicleToRespawn(vehicleid);
  26654. DisablePlayerCheckpoint(playerid);
  26655. if (GetVehicleHealthEx(vehicleid) < 980.0)
  26656. {
  26657. SendErrorMessage(playerid, "The vehicle has been damaged too much.");
  26658. }
  26659. else
  26660. {
  26661. Players[playerid][pCarLicense] = 1;
  26662. SendInfoMessage(playerid, "You have passed the driving test and received your license (time: %s).", ReturnElapsed(Players[playerid][pTestTime]));
  26663. }
  26664. Players[playerid][pDrivingTest] = 0;
  26665. Players[playerid][pDrivingCP] = 0;
  26666. Players[playerid][pTestTime] = 0;
  26667. }
  26668. else
  26669. {
  26670. SetPlayerCheckpoint(playerid, g_TestCheckpoints[Players[playerid][pDrivingCP]][0], g_TestCheckpoints[Players[playerid][pDrivingCP]][1], g_TestCheckpoints[Players[playerid][pDrivingCP]][2], 3.0);
  26671. }
  26672. }
  26673. else
  26674. {
  26675. switch (Players[playerid][pCheckpoint])
  26676. {
  26677. case CHECKPOINT_GPS:
  26678. {
  26679. ResetCheckpoint(playerid);
  26680. }
  26681. case CHECKPOINT_PACKAGE:
  26682. {
  26683. switch (Players[playerid][pPackageType])
  26684. {
  26685. case PACKAGE_TYPE_MELEE:
  26686. {
  26687. if (!IsSufficientSpace(playerid, "Melee Package"))
  26688. {
  26689. return SendErrorMessage(playerid, "You need to clear some room in your inventory.");
  26690. }
  26691. else
  26692. {
  26693. AddItemToInventory(playerid, "Melee Package");
  26694. }
  26695. }
  26696. case PACKAGE_TYPE_PISTOLS:
  26697. {
  26698. if (!IsSufficientSpace(playerid, "Pistol Package"))
  26699. {
  26700. return SendErrorMessage(playerid, "You need to clear some room in your inventory.");
  26701. }
  26702. else
  26703. {
  26704. AddItemToInventory(playerid, "Pistol Package");
  26705. }
  26706. }
  26707. case PACKAGE_TYPE_SHOTGUNS:
  26708. {
  26709. if (!IsSufficientSpace(playerid, "Shotgun Package"))
  26710. {
  26711. return SendErrorMessage(playerid, "You need to clear some room in your inventory.");
  26712. }
  26713. else
  26714. {
  26715. AddItemToInventory(playerid, "Shotgun Package");
  26716. }
  26717. }
  26718. case PACKAGE_TYPE_SMGS:
  26719. {
  26720. if (!IsSufficientSpace(playerid, "SMG Package"))
  26721. {
  26722. return SendErrorMessage(playerid, "You need to clear some room in your inventory.");
  26723. }
  26724. else
  26725. {
  26726. AddItemToInventory(playerid, "SMG Package");
  26727. }
  26728. }
  26729. case PACKAGE_TYPE_RIFLES:
  26730. {
  26731. if (!IsSufficientSpace(playerid, "Rifle Package"))
  26732. {
  26733. return SendErrorMessage(playerid, "You need to clear some room in your inventory.");
  26734. }
  26735. else
  26736. {
  26737. AddItemToInventory(playerid, "Rifle Package");
  26738. }
  26739. }
  26740. case PACKAGE_TYPE_STEROIDS:
  26741. {
  26742. if (!IsSufficientSpace(playerid, "Steroids"))
  26743. {
  26744. return SendErrorMessage(playerid, "You need to clear some room in your inventory.");
  26745. }
  26746. else
  26747. {
  26748. AddItemToInventory(playerid, "Steroids", Players[playerid][pPackageGrams]);
  26749. }
  26750. }
  26751. case PACKAGE_TYPE_HEROIN:
  26752. {
  26753. if (!IsSufficientSpace(playerid, "Heroin"))
  26754. {
  26755. return SendErrorMessage(playerid, "You need to clear some room in your inventory.");
  26756. }
  26757. else
  26758. {
  26759. AddItemToInventory(playerid, "Opium Poppies", Players[playerid][pPackageGrams]);
  26760. }
  26761. }
  26762. case PACKAGE_TYPE_LSD:
  26763. {
  26764. if (!IsSufficientSpace(playerid, "LSD"))
  26765. {
  26766. return SendErrorMessage(playerid, "You need to clear some room in your inventory.");
  26767. }
  26768. else
  26769. {
  26770. AddItemToInventory(playerid, "LSD", Players[playerid][pPackageGrams]);
  26771. }
  26772. }
  26773. case PACKAGE_TYPE_ECSTASY:
  26774. {
  26775. if (!IsSufficientSpace(playerid, "Ecstasy"))
  26776. {
  26777. return SendErrorMessage(playerid, "You need to clear some room in your inventory.");
  26778. }
  26779. else
  26780. {
  26781. AddItemToInventory(playerid, "Ecstasy", Players[playerid][pPackageGrams]);
  26782. }
  26783. }
  26784. case PACKAGE_TYPE_MARIJUANA:
  26785. {
  26786. if (!IsSufficientSpace(playerid, "Marijuana"))
  26787. {
  26788. return SendErrorMessage(playerid, "You need to clear some room in your inventory.");
  26789. }
  26790. else
  26791. {
  26792. AddItemToInventory(playerid, "Marijuana Seeds", Players[playerid][pPackageGrams]);
  26793. }
  26794. }
  26795. case PACKAGE_TYPE_CRACK:
  26796. {
  26797. if (!IsSufficientSpace(playerid, "Crack"))
  26798. {
  26799. return SendErrorMessage(playerid, "You need to clear some room in your inventory.");
  26800. }
  26801. else
  26802. {
  26803. AddItemToInventory(playerid, "Crack", Players[playerid][pPackageGrams]);
  26804. }
  26805. }
  26806. case PACKAGE_TYPE_COCAINE:
  26807. {
  26808. if (!IsSufficientSpace(playerid, "Cocaine"))
  26809. {
  26810. return SendErrorMessage(playerid, "You need to clear some room in your inventory.");
  26811. }
  26812. else
  26813. {
  26814. AddItemToInventory(playerid, "Cocaine", Players[playerid][pPackageGrams]);
  26815. AddItemToInventory(playerid, "Baking Soda", Players[playerid][pPackageGrams]);
  26816. }
  26817. }
  26818. case PACKAGE_TYPE_METH:
  26819. {
  26820. if (!IsSufficientSpace(playerid, "Methamphetamine"))
  26821. {
  26822. return SendErrorMessage(playerid, "You need to clear some room in your inventory.");
  26823. }
  26824. else
  26825. {
  26826. AddItemToInventory(playerid, "Methamphetamine", Players[playerid][pPackageGrams]);
  26827. }
  26828. }
  26829. case PACKAGE_TYPE_PCP:
  26830. {
  26831. if (!IsSufficientSpace(playerid, "PCP"))
  26832. {
  26833. return SendErrorMessage(playerid, "You need to clear some room in your inventory.");
  26834. }
  26835. else
  26836. {
  26837. AddItemToInventory(playerid, "PCP", Players[playerid][pPackageGrams]);
  26838. }
  26839. }
  26840. case PACKAGE_TYPE_AMMO_1:
  26841. {
  26842. if ( !IsSufficientSpace(playerid, "9x19mm Ammo") )
  26843. {
  26844. return SendErrorMessage(playerid, "You need to clear some room in your inventory.");
  26845. }
  26846. else
  26847. {
  26848. AddItemToInventory(playerid, "9x19mm Ammo", 500);
  26849. }
  26850. }
  26851. case PACKAGE_TYPE_AMMO_2:
  26852. {
  26853. if ( !IsSufficientSpace(playerid, ".50cal Ammo") )
  26854. {
  26855. return SendErrorMessage(playerid, "You need to clear some room in your inventory.");
  26856. }
  26857. else
  26858. {
  26859. AddItemToInventory(playerid, ".50cal Ammo", 500);
  26860. }
  26861. }
  26862. case PACKAGE_TYPE_AMMO_3:
  26863. {
  26864. if ( !IsSufficientSpace(playerid, "12 Gauge Ammo") )
  26865. {
  26866. return SendErrorMessage(playerid, "You need to clear some room in your inventory.");
  26867. }
  26868. else
  26869. {
  26870. AddItemToInventory(playerid, "12 Gauge Ammo", 500);
  26871. }
  26872. }
  26873. case PACKAGE_TYPE_AMMO_4:
  26874. {
  26875. if ( !IsSufficientSpace(playerid, "5.56x45mm Ammo") )
  26876. {
  26877. return SendErrorMessage(playerid, "You need to clear some room in your inventory.");
  26878. }
  26879. else
  26880. {
  26881. AddItemToInventory(playerid, "5.56x45mm Ammo", 500);
  26882. }
  26883. }
  26884. case PACKAGE_TYPE_AMMO_5:
  26885. {
  26886. if ( !IsSufficientSpace(playerid, "7.62x39mm Ammo") )
  26887. {
  26888. return SendErrorMessage(playerid, "You need to clear some room in your inventory.");
  26889. }
  26890. else
  26891. {
  26892. AddItemToInventory(playerid, "7.62x39mm Ammo", 500);
  26893. }
  26894. }
  26895. case PACKAGE_TYPE_AMMO_6:
  26896. {
  26897. if ( !IsSufficientSpace(playerid, "7.62x51mm Ammo") )
  26898. {
  26899. return SendErrorMessage(playerid, "You need to clear some room in your inventory.");
  26900. }
  26901. else
  26902. {
  26903. AddItemToInventory(playerid, "7.62x51mm Ammo", 500);
  26904. }
  26905. }
  26906. }
  26907. Players[playerid][pPackageOrder] = PACKAGE_TYPE_NONE;
  26908. Players[playerid][pPackageType] = PACKAGE_TYPE_NONE;
  26909. DestroyPlayerObject(playerid, Players[playerid][pPackage]);
  26910. ResetCheckpoint(playerid);
  26911. SendInfoMessage(playerid, "The package has been added to your inventory.");
  26912. ApplyAnimation(playerid, "BOMBER", "BOM_Plant_In", 4.1, 0, 0, 0, 0, 0);
  26913. }
  26914. case CHECKPOINT_JOB:
  26915. {
  26916. if (!Players[playerid][pWorking])
  26917. {
  26918. return 0;
  26919. }
  26920. if (Players[playerid][pJob] == JOB_FORKLIFTER)
  26921. {
  26922. switch (Players[playerid][pJobStage])
  26923. {
  26924. case 0:
  26925. {
  26926. if (GetVehicleModel(vehicleid) == 530 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  26927. {
  26928. Players[playerid][pJobStage] = 1;
  26929. SendInfoMessage(playerid, "You have picked up the crate. Drive to the {FF0000}checkpoint{FFFFFF} for further instructions.");
  26930. SetCheckpoint(playerid, CHECKPOINT_JOB, 2783.6682, -2417.8679, 13.6347, 3.0);
  26931. VehicleInformation[vehicleid][vObject] = CreateDynamicObject(1220, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
  26932. AttachDynamicObjectToVehicle(VehicleInformation[vehicleid][vObject], vehicleid, 0.0, 0.6, 0.28, 0.0, 0.0, 0.0);
  26933. }
  26934. }
  26935. case 1:
  26936. {
  26937. if (GetVehicleModel(vehicleid) == 530 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  26938. {
  26939. switch (random(2))
  26940. {
  26941. case 0: SetCheckpoint(playerid, CHECKPOINT_JOB, 2790.8264, -2410.4639, 13.6329, 3.0);
  26942. case 1: SetCheckpoint(playerid, CHECKPOINT_JOB, 2790.8264, -2410.4639, 13.6329, 3.0);
  26943. }
  26944. Players[playerid][pJobStage] = 2;
  26945. SendInfoMessage(playerid, "Stack the cargo on the shelf.");
  26946. RemovePlayerFromVehicle(playerid);
  26947. DestroyDynamicObject(VehicleInformation[vehicleid][vObject]);
  26948. VehicleInformation[vehicleid][vObject] = INVALID_OBJECT_ID;
  26949. SetPlayerSpecialAction(playerid, SPECIAL_ACTION_CARRY);
  26950. SetPlayerAttachedObject(playerid, ATTACHED_SLOT_MISC, 1220, 5, 0.184000, 0.330999, 0.112999, -84.099983, -9.500001, 20.700000);
  26951. }
  26952. }
  26953. case 2:
  26954. {
  26955. new price = Random(90, 150);
  26956. Players[playerid][pJobPaycheck] += price;
  26957. SendInfoMessage(playerid, "You have received {33CC33}$%i{FFFFFF} on your paycheck. You can continue working or use /stop to quit.", price);
  26958. SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE);
  26959. RemovePlayerAttachedObject(playerid, ATTACHED_SLOT_MISC);
  26960. ApplyAnimation(playerid, "CARRY", "putdwn", 4.1, 0, 0, 0, 0, 0, 1);
  26961. StartWorking(playerid);
  26962. }
  26963. }
  26964. }
  26965. else if (Players[playerid][pJob] == JOB_MINER)
  26966. {
  26967. if (GetPlayerState(playerid) != PLAYER_STATE_ONFOOT)
  26968. {
  26969. return SendErrorMessage(playerid, "You need to be onfoot to enter the checkpoint.");
  26970. }
  26971. else
  26972. {
  26973. new price = Random(100, 200);
  26974. Players[playerid][pJobPaycheck] += price;
  26975. Players[playerid][pWorking] = 0;
  26976. SendInfoMessage(playerid, "You have received {33CC33}$%i{FFFFFF} on your paycheck.", price);
  26977. ApplyAnimation(playerid, "CARRY", "putdwn", 4.1, 0, 0, 0, 0, 0, 1);
  26978. SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE);
  26979. RemovePlayerAttachedObject(playerid, ATTACHED_SLOT_MISC);
  26980. ResetCheckpoint(playerid);
  26981. }
  26982. }
  26983. else if (Players[playerid][pJob] == JOB_PIZZA)
  26984. {
  26985. new price = floatround(GetPlayerDistanceFromPoint(playerid, 2097.8745, -1800.4648, 12.9810)) / 2;
  26986. Players[playerid][pJobPaycheck] += price;
  26987. Players[playerid][pWorking] = 0;
  26988. SendInfoMessage(playerid, "You have received $%i on your paycheck.", price);
  26989. ApplyAnimation(playerid, "CARRY", "putdwn", 4.1, 0, 0, 0, 0, 0, 1);
  26990. ResetCheckpoint(playerid);
  26991. }
  26992. else if (Players[playerid][pJob] == JOB_TRASHMAN)
  26993. {
  26994. if (Players[playerid][pTrashPickup] + 1 <= sizeof(g_TrashPickups) && GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
  26995. {
  26996. DestroyPlayerObject(playerid, gTrashObjects[playerid][Players[playerid][pTrashPickup]]);
  26997. gTrashObjects[playerid][Players[playerid][pTrashPickup]] = INVALID_OBJECT_ID;
  26998. Players[playerid][pTrash] = 1;
  26999. Players[playerid][pTrashPickup]++;
  27000. SetPlayerSpecialAction(playerid, SPECIAL_ACTION_CARRY);
  27001. SetPlayerAttachedObject(playerid, ATTACHED_SLOT_MISC, 1265, 1, 0.344999, 0.557000, 0.032999, 0.000000, 83.599990, -81.899963);
  27002. ApplyAnimation(playerid, "CARRY", "liftup", 4.1, 0, 0, 0, 0, 0, 1);
  27003. SendInfoMessage(playerid, "Press Y to load the trash bag in the truck.");
  27004. ResetCheckpoint(playerid);
  27005. new trash = GetClosestTrashbin(playerid);
  27006. ClearTrashbinItems(trash);
  27007. }
  27008. else if (Players[playerid][pTrashPickup] >= sizeof(g_TrashPickups) && GetVehicleModel(GetPlayerVehicleID(playerid)) == 408)
  27009. {
  27010. StopWorking(playerid);
  27011. Players[playerid][pJobPaycheck] += 250;
  27012. Players[playerid][pWorking] = 0;
  27013. SendInfoMessage(playerid, "You have received $250 on your paycheck.");
  27014. ResetCheckpoint(playerid);
  27015. }
  27016. }
  27017. }
  27018. }
  27019. }
  27020. return 1;
  27021. }
  27022. public OnPlayerExitVehicle(playerid, vehicleid)
  27023. {
  27024. if (IsTestVehicle(vehicleid) && Players[playerid][pDrivingTest])
  27025. {
  27026. Players[playerid][pDrivingTest] = 0;
  27027. DisablePlayerCheckpoint(playerid);
  27028. SetVehicleToRespawn(vehicleid);
  27029. SendInfoMessage(playerid, "You have failed the driving test for leaving the car.");
  27030. }
  27031. ResetHotwiring(playerid);
  27032. return 1;
  27033. }
  27034. public OnQueryError(errorid, error[], callback[], query[], connectionHandle)
  27035. {
  27036. printf("\a(SQL) %s", error);
  27037. SendAdminMessage(COLOR_RED, "Admin: A MySQL error has occurred, please check the error logs (error: %i).", errorid);
  27038. return 1;
  27039. }
  27040. #if defined CHEMICAL_SYSTEM
  27041. #include "script/drug_def.pwn"
  27042. #include "script/drugs_stock.pwn"
  27043. #include "script/chemical_stock.pwn"
  27044. #include "script/interface.pwn"
  27045. #include "script/chemical_part.pwn"
  27046. #pragma unused AddChemical
  27047. #pragma unused GetDistanceBetweenPoints
  27048. #pragma unused MulStringHandler
  27049. #pragma unused RemoveDrugs
  27050. #pragma unused SaveChemical
  27051. #pragma unused SaveDrugs
  27052. #endif
  27053. public OnGameModeInit()
  27054. {
  27055. //MapAndreas_Init(MAP_ANDREAS_MODE_MINIMAL);
  27056. /*EnableAntiCheat(039, 0);
  27057. EnableAntiCheat(010, 0);
  27058. EnableAntiCheat(012, 0);*/
  27059. AddPlayerClass(105,2475.4915,-1694.9734,13.5183,22.2914,0,0,0,0,0,0); // GSFPos1
  27060. AddPlayerClass(270,2475.4915,-1694.9734,13.5183,22.2914,0,0,0,0,0,0); // Sweet
  27061. AddPlayerClass(269,2475.4915,-1694.9734,13.5183,22.2914,0,0,0,0,0,0); // Ryder
  27062. AddPlayerClass(271,2475.4915,-1694.9734,13.5183,22.2914,0,0,0,0,0,0); // Big_Smoke
  27063. AddPlayerClass(0,2475.4915,-1694.9734,13.5183,22.2914,0,0,0,0,0,0); // CJ
  27064. AddPlayerClass(106,2766.4897,-2011.0477,13.5620,227.6935,0,0,0,0,0,0); // camSBF
  27065. AddPlayerClass(107,915.2412,-1104.8180,24.2969,180.8262,0,0,0,0,0,0); // camTDF1
  27066. //
  27067. AddPlayerClass(102,2175.5786,-1732.3136,13.5339,271.4185,0,0,0,0,0,0); // camFYB2
  27068. AddPlayerClass(103,2136.1011,-1391.1796,23.9992,39.3045,0,0,0,0,0,0); // CamRHB2
  27069. AddPlayerClass(104,1979.7319,-1157.1125,20.9351,269.4461,0,0,0,0,0,0); // CamKTB2
  27070. AddPlayerClass(103,1183.7802,-1258.4663,18.8984,181.0539,0,0,0,0,0,0); // TDB2
  27071. AddPlayerClass(272,2686.6853,-2126.4114,13.5597,267.6120,0,0,0,0,0,0); // GDSpawn
  27072. AddPlayerClass(29,2383.7700,-1467.6337,24.0026,270.6843,0,0,0,0,0,0); // HoodRatSpawn1
  27073. AddPlayerClass(23,2383.7700,-1467.6337,24.0026,270.6843,0,0,0,0,0,0); // HoodRatSpawn1
  27074. AddPlayerClass(25,2383.7700,-1467.6337,24.0026,270.6843,0,0,0,0,0,0); // HoodRatSpawn1
  27075. AddPlayerClass(114,1879.4531,-2038.6274,13.3906,44.1390,0,0,0,0,0,0); // VLAPOS2
  27076. AddPlayerClass(108,2434.3467,-1325.1730,25.0269,267.8017,0,0,0,0,0,0); // vagospos1
  27077. AddPlayerClass(48,276.4123,-1160.3118,80.9141,131.4480,0,0,0,0,0,0); // ddspawn
  27078. AddPlayerClass(300,1580.5890,-1634.8744,13.5610,91.8254,0,0,0,0,0,0); // lsspdspawn
  27079. if (!fexist("Server/"))
  27080. {
  27081. print("\aWarning! The \"Server\" folder doesn't exist in scriptfiles.");
  27082. return GameModeExit();
  27083. }
  27084. gConnection = mysql_connect(SQL_HOSTNAME, SQL_USERNAME, SQL_DATABASE, SQL_PASSWORD, 3306);
  27085. if (!mysql_errno(gConnection))
  27086. {
  27087. printf("(SQL) Successfully connected to \"%s\".", SQL_HOSTNAME);
  27088. // Gamemode setup
  27089. SetWeather(gWeatherID);
  27090. SetGameModeText("A:RP "#SERVER_REVISION"");
  27091. ShowNameTags(0);
  27092. //SetNameTagDrawDistance(15.0);
  27093. LimitGlobalChatRadius(0.0);
  27094. DisableInteriorEnterExits();
  27095. ManualVehicleEngineAndLights();
  27096. EnableStuntBonusForAll(0);
  27097. ShowPlayerMarkers(PLAYER_MARKERS_MODE_OFF);
  27098. LoadInformation();
  27099. for(new i = 0; i < sizeof(g_RepairShops); i ++)
  27100. {
  27101. CreateDynamicPickup(1239, 1, g_RepairShops[i][0], g_RepairShops[i][1], g_RepairShops[i][2]);
  27102. CreateDynamic3DTextLabel("Repair Shop\nCost: $500\n/enter to repair your vehicle.", COLOR_GREY, g_RepairShops[i][0], g_RepairShops[i][1], g_RepairShops[i][2], 10.0);
  27103. }
  27104. CreateDynamicPickup(1239, 2, 1041.2220, -1028.3320, 32.1016);
  27105. CreateDynamic3DTextLabel("{6DB4F1}[Tune Shop]\n/tune to mod your vehicle.", -1, 1041.2220, -1028.3320, 32.1016, 10.0);
  27106. Create3DTextLabel("{6DB4F1}[DMV]\nUse /start to get your Driver Licenses", -1, 1490.2839, 1305.6837, 1093.2964, 10.0, 3, 0);
  27107. CreateDynamicPickup(1239, 23, 1490.2839, 1305.6837, 1093.2964, 3);
  27108. gTestVehicles[0] = SpawnVehicle(405, 1245.0278, -1834.5586, 13.1675, 0.0000, 1, 1, 20); // car 1
  27109. gTestVehicles[1] = SpawnVehicle(405, 1248.8597, -1834.4784, 13.1672, 0.0000, 1, 1, 20); // car 2
  27110. gTestVehicles[2] = SpawnVehicle(405, 1252.6323, -1834.2869, 13.1675, 0.0000, 1, 1, 20); // car 3
  27111. gTestVehicles[3] = SpawnVehicle(405, 1257.0115, -1834.2378, 13.1673, 0.0000, 1, 1, 20); // car 4
  27112. mysql_tquery(gConnection, "UPDATE rp_accounts SET Online = 0");
  27113. mysql_tquery(gConnection, "SELECT * FROM rp_items WHERE itemDropped = 1", "OnLoadDropItems");
  27114. mysql_tquery(gConnection, "SELECT * FROM rp_items WHERE itemOwner = 0 AND itemDropped = 0", "OnLoadStoredItems");
  27115. mysql_tquery(gConnection, "SELECT * FROM rp_gundamages", "OnLoadGunDamages");
  27116. mysql_tquery(gConnection, "SELECT * FROM rp_carblacklist", "OnLoadCarBlacklist");
  27117. mysql_tquery(gConnection, "SELECT * FROM rp_vehicles", "OnLoadVehicles");
  27118. mysql_tquery(gConnection, "SELECT * FROM rp_houses", "OnLoadHouses");
  27119. mysql_tquery(gConnection, "SELECT * FROM rp_companies", "OnLoadCompanies");
  27120. mysql_tquery(gConnection, "SELECT * FROM rp_buildings", "OnLoadBuildings");
  27121. mysql_tquery(gConnection, "SELECT * FROM rp_furniture", "OnLoadFurniture");
  27122. mysql_tquery(gConnection, "SELECT * FROM rp_gaspumps", "OnLoadGasPumps");
  27123. mysql_tquery(gConnection, "SELECT * FROM rp_atms", "OnLoadATMMachines");
  27124. mysql_tquery(gConnection, "SELECT * FROM rp_dealercars", "OnLoadDealershipCars");
  27125. mysql_tquery(gConnection, "SELECT * FROM rp_casings", "OnLoadShellCasings");
  27126. mysql_tquery(gConnection, "SELECT * FROM rp_weedplants", "OnLoadWeedPlants");
  27127. mysql_tquery(gConnection, "SELECT * FROM rp_factions", "OnLoadFactions");
  27128. mysql_tquery(gConnection, "SELECT * FROM rp_arrestpoints", "OnLoadArrestPoints");
  27129. mysql_tquery(gConnection, "SELECT * FROM rp_teleports", "OnLoadTeleports");
  27130. mysql_tquery(gConnection, "SELECT * FROM rp_dynamiclabels", "OnLoadLabels");
  27131. mysql_tquery(gConnection, "SELECT * FROM rp_gates", "OnLoadGates");
  27132. //mysql_tquery(gConnection, "SELECT * FROM rp_autoshops", "OnLoadAutoShops");
  27133. mysql_tquery(gConnection, "SELECT * FROM rp_objects", "OnLoadObjects");
  27134. mysql_tquery(gConnection, "SELECT * FROM rp_trashbins", "OnLoadTrashbins");
  27135. mysql_tquery(gConnection, "SELECT * FROM rp_spraytags", "OnLoadSprayTags");
  27136. mysql_tquery(gConnection, "SELECT * FROM rp_tags", "OnLoadTags");
  27137. mysql_tquery(gConnection, "SELECT * FROM rp_payphones", "OnLoadPayphones");
  27138. //SetTimer("PublishAds", 20000, true);
  27139. SetTimer("MinuteSync", 60000, true);
  27140. SetTimer("SecondSync", 1000, true);
  27141. SetTimer("DistanceCycle", 2000, true);
  27142. SetTimer("FuelCycle", (FUEL_TIME_INTERVAL * 1000), true);
  27143. //PayNSpray
  27144. CreateDynamicObject(11315,1903.277,1354.053,26.909,0.000,0.000,0.000,-1,-1,-1,1000.000,1000.000);
  27145. CreateDynamicObject(11319,1903.246,1360.305,26.659,0.000,0.000,90.799,-1,-1,-1,1000.000,1000.000);
  27146. CreateDynamicObject(19380,1907.744,1356.175,23.718,0.000,0.000,0.000,-1,-1,-1,1000.000,1000.000);
  27147. CreateDynamicObject(19380,1907.744,1348.125,23.718,0.000,0.000,0.000,-1,-1,-1,1000.000,1000.000);
  27148. CreateDynamicObject(19380,1898.804,1348.125,23.718,0.000,0.000,0.000,-1,-1,-1,1000.000,1000.000);
  27149. CreateDynamicObject(19380,1898.804,1356.796,23.718,0.000,0.000,0.000,-1,-1,-1,1000.000,1000.000);
  27150. CreateDynamicObject(19380,1897.689,1360.572,23.718,0.000,0.000,-91.200,-1,-1,-1,1000.000,1000.000);
  27151. CreateDynamicObject(19380,1911.347,1360.286,23.718,0.000,0.000,-91.599,-1,-1,-1,1000.000,1000.000);
  27152. //EndPayNSpray
  27153. LoadObjects();
  27154. LoadActors();
  27155. LoadElements();
  27156. LoadJobs();
  27157. LoadDynamicObjects();
  27158. LoadTextDraws();
  27159. LoadStaticBuildings();
  27160. UpdateTimeTextDraw();
  27161. }
  27162. else
  27163. {
  27164. printf("\a(SQL) Failed to connect to \"%s\"!", SQL_HOSTNAME);
  27165. GameModeExit();
  27166. }
  27167. return 1;
  27168. }
  27169. public OnGameModeExit()
  27170. {
  27171. return 1;
  27172. }
  27173. forward StopChatting(playerid);
  27174. public StopChatting(playerid)
  27175. {
  27176. if (IsPlayerLoggedIn(playerid) && Players[playerid][pChatting] && !Players[playerid][pAnimation])
  27177. {
  27178. ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.0, 0, 0, 0, 0, 0, 1);
  27179. ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.0, 0, 0, 0, 0, 0, 1);
  27180. }
  27181. Players[playerid][pChatting] = 0;
  27182. }
  27183. forward HandlePhoneRing(playerid);
  27184. public HandlePhoneRing(playerid)
  27185. {
  27186. if (Players[playerid][pCalling] != 1)
  27187. {
  27188. return 0;
  27189. }
  27190. PlayNearbySound(playerid, 20600);
  27191. SetTimerEx("HandlePhoneRing", 4000, false, "i", playerid);
  27192. return 1;
  27193. }
  27194. forward HandlePhoneDial(playerid);
  27195. public HandlePhoneDial(playerid)
  27196. {
  27197. if (Players[playerid][pCalling] != 1)
  27198. {
  27199. return 0;
  27200. }
  27201. PlayerPlaySound(playerid, 16001, 0.0, 0.0, 0.0);
  27202. SetTimerEx("HandlePhoneDial", 4000, false, "i", playerid);
  27203. return 1;
  27204. }
  27205. forward OnPhoneResponse(playerid, number);
  27206. public OnPhoneResponse(playerid, number)
  27207. {
  27208. if ((Players[playerid][pPayphone] != INVALID_ID && GetClosestPayphone(playerid) != Players[playerid][pPayphone]) || Players[playerid][pPhoneOff] || !Players[playerid][pCalling])
  27209. {
  27210. return 0;
  27211. }
  27212. switch (number)
  27213. {
  27214. case 444:
  27215. {
  27216. if (Players[playerid][pAdTime] > gettime())
  27217. {
  27218. SendFormatMessage(playerid, COLOR_YELLOW, "(Phone) Agency: You may publish another advertisement in %i seconds.", Players[playerid][pAdTime] - gettime());
  27219. HangupCall(playerid);
  27220. }
  27221. else if (IsAdvertisementActive(playerid))
  27222. {
  27223. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Agency: You already have an advertisement queued in our system.");
  27224. HangupCall(playerid);
  27225. }
  27226. else
  27227. {
  27228. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Agency: An advertisement costs $200. Please say what you wish to advertise.");
  27229. Players[playerid][pCalling] = number;
  27230. }
  27231. }
  27232. case 555:
  27233. {
  27234. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Taxi: Would you like to request a taxi? Say 'yes' or 'no'.");
  27235. Players[playerid][pCalling] = number;
  27236. }
  27237. case 911:
  27238. {
  27239. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Dispatch: Which service do you require?");
  27240. Players[playerid][pCalling] = number;
  27241. }
  27242. case 991:
  27243. {
  27244. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Dispatch: This is the police non-emergency line, what can we help you with?");
  27245. Players[playerid][pCalling] = number;
  27246. }
  27247. /*case 991:
  27248. {
  27249. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) John Doe: This is the police non-emergency line, what can we help you with?");
  27250. Players[playerid][pCalling] = number;
  27251. }
  27252. case 992:
  27253. {
  27254. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) John Doe: This is the medical non-emergency line, what can we help you with?");
  27255. Players[playerid][pCalling] = number;
  27256. }
  27257. case 993:
  27258. {
  27259. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) John Doe: This is the government landline, what can we help you with?");
  27260. Players[playerid][pCalling] = number;
  27261. }*/
  27262. default:
  27263. {
  27264. new targetid = GetPhonePlayerID(number);
  27265. if (targetid == INVALID_PLAYER_ID)
  27266. {
  27267. SendClientMessage(playerid, COLOR_LIGHTGREY, "** This cellphone number is currently not in service. **");
  27268. HangupCall(playerid);
  27269. }
  27270. else if (IsPhoneBusy(number))
  27271. {
  27272. SendClientMessage(playerid, COLOR_LIGHTGREY, "** You would hear a busy tone. **");
  27273. HangupCall(playerid);
  27274. }
  27275. }
  27276. }
  27277. return 1;
  27278. }
  27279. forward TagSprayed(playerid, spray);
  27280. public TagSprayed(playerid, spray)
  27281. {
  27282. if (Players[playerid][pSprayTag] == spray && IsValidSprayTagID(spray) && GetPlayerFactionType(playerid) == FACTION_ILLEGAL)
  27283. {
  27284. strunpack(SprayTags[spray][sText], gTemporaryText[playerid], 64);
  27285. //SprayTags[spray][sColor] = RGBAToARGB(Factions[Players[playerid][pFaction]][fcColor]);
  27286. SprayTags[spray][sColor] = Factions[Players[playerid][pFaction]][fcColor];
  27287. UpdateSprayTag(spray);
  27288. SaveSprayTag(spray);
  27289. PlayAnimation(playerid, "GANGS", "Invite_Yes", 4.1, 0, 0, 0, 0, 0, 1);
  27290. ShowActionBubble(playerid, "* %s puts the spraycan down and looks at their work.", ReturnNameEx(playerid));
  27291. SendInfoMessage(playerid, "You have sprayed the tag! Leave the area before a rival gang shows up.");
  27292. }
  27293. ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.0, 0, 0, 0, 0, 0);
  27294. Players[playerid][pSprayTag] = INVALID_ID;
  27295. }
  27296. forward MiningFinished(playerid);
  27297. public MiningFinished(playerid)
  27298. {
  27299. if (Players[playerid][pJob] == JOB_MINER && Players[playerid][pWorking] && Players[playerid][pMining])
  27300. {
  27301. if (GetPlayerState(playerid) != PLAYER_STATE_ONFOOT)
  27302. {
  27303. Players[playerid][pWorking] = 0;
  27304. Players[playerid][pMining] = 0;
  27305. ClearAnimations(playerid);
  27306. SendInfoMessage(playerid, "Mining job failed. You entered a vehicle during the process.");
  27307. }
  27308. else if (!IsPlayerInRangeOfPoint(playerid, 3.0, -1858.5516, -1651.3812, 26.5788) && !IsPlayerInRangeOfPoint(playerid, 3.0, -1790.7683, -1649.2581, 33.3813) && !IsPlayerInRangeOfPoint(playerid, 3.0, -1775.1649, -1643.3854, 29.5218) && !IsPlayerInRangeOfPoint(playerid, 3.0, -1801.5831, -1649.7592, 26.5446))
  27309. {
  27310. Players[playerid][pWorking] = 0;
  27311. Players[playerid][pMining] = 0;
  27312. ClearAnimations(playerid);
  27313. SendInfoMessage(playerid, "Mining job failed. You are not in range of the rocks.");
  27314. }
  27315. else
  27316. {
  27317. Players[playerid][pMining] = 0;
  27318. ApplyAnimation(playerid, "CARRY", "liftup", 4.1, 0, 0, 0, 0, 0, 1);
  27319. SetCheckpoint(playerid, CHECKPOINT_JOB, -1853.7217, -1606.2709, 21.7578, 2.0);
  27320. SendInfoMessage(playerid, "Deliver this rock to the {FF0000}checkpoint{FFFFFF}.");
  27321. SetPlayerSpecialAction(playerid, SPECIAL_ACTION_CARRY);
  27322. SetPlayerAttachedObject(playerid, ATTACHED_SLOT_MISC, 3930, 6, 0.154000, 0.189999, -0.284999, -86.200103, 165.400009, -15.999998);
  27323. }
  27324. }
  27325. TogglePlayerControllable(playerid, true);
  27326. }
  27327. forward SetupConfirmed(playerid);
  27328. public SetupConfirmed(playerid)
  27329. {
  27330. if (Players[playerid][pSetupInfo])
  27331. {
  27332. for (new i = 86; i < 102; i ++) {
  27333. PlayerTextDrawHide(playerid, Players[playerid][pText][i]);
  27334. }
  27335. SendToDefaultSpawn(playerid);
  27336. TogglePlayerControllable(playerid, 1);
  27337. CancelSelectTextDraw(playerid);
  27338. SendInfoMessage(playerid, " You have spawned at the default starter spawn. Please type {33AA33}'/spawntype'{FFFFFF} to adjust your spawn location.");
  27339. SendInfoMessage(playerid, " If you wish to spawn the your desired faction, please re-log after used {33AA33}'/spawntype'");
  27340. SendInfoMessage(playerid, " There is rental vehicles nearby you if it's needed.");
  27341. }
  27342. }
  27343. forward RepairEngine(playerid, vehicleid);
  27344. public RepairEngine(playerid, vehicleid)
  27345. {
  27346. new Float:health;
  27347. if (GetClosestVehicle(playerid) != vehicleid)
  27348. {
  27349. StopRepairing(playerid);
  27350. }
  27351. else
  27352. {
  27353. GetVehicleHealth(vehicleid, health);
  27354. health += 50.0;
  27355. if (health >= 1000.0)
  27356. {
  27357. StopRepairing(playerid);
  27358. SetVehicleHealth(vehicleid, 1000.0);
  27359. SendInfoMessage(playerid, "The engine has been fully repaired.");
  27360. }
  27361. else
  27362. {
  27363. SetVehicleHealth(vehicleid, health);
  27364. ShowFooterText(playerid, "Repairing the engine, please wait...");
  27365. }
  27366. }
  27367. return 1;
  27368. }
  27369. forward OnPlayerRequestNameChange(playerid, name[]);
  27370. public OnPlayerRequestNameChange(playerid, name[])
  27371. {
  27372. if (cache_get_row_count(gConnection))
  27373. {
  27374. SendErrorMessage(playerid, "The specified name is already in use.");
  27375. }
  27376. else
  27377. {
  27378. strcpy(Players[playerid][pNameChange], name, MAX_PLAYER_NAME);
  27379. SendAdminMessage(COLOR_RED, "Admin: %s has requested a name change to %s (/approvename %i or /denyname %i).", ReturnNameEx(playerid), name, playerid, playerid);
  27380. SendInfoMessage(playerid, "You have requested a name change to %s. It will be accepted shortly.", name);
  27381. }
  27382. }
  27383. forward OnPlayerFactionKick(playerid, player[]);
  27384. public OnPlayerFactionKick(playerid, player[])
  27385. {
  27386. if (!cache_get_row_count(gConnection))
  27387. {
  27388. SendErrorMessage(playerid, "That player doesn't exist or has a higher rank.");
  27389. }
  27390. else
  27391. {
  27392. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET FactionID = 0, FactionRank = 0 WHERE Username = '%s'", player);
  27393. mysql_tquery(gConnection, gExecute);
  27394. SendInfoMessage(playerid, "You have removed %s from the faction.", player);
  27395. }
  27396. }
  27397. forward OnPlayerPayTicket(playerid, ticket);
  27398. public OnPlayerPayTicket(playerid, ticket)
  27399. {
  27400. if (!cache_get_row_count(gConnection))
  27401. {
  27402. SendErrorMessage(playerid, "There was an error processing this ticket.");
  27403. }
  27404. else
  27405. {
  27406. new amount, date[32], reason[128];
  27407. amount = cache_get_field_content_int(0, "Amount");
  27408. cache_get_field_content(0, "Date", date);
  27409. cache_get_field_content(0, "Reason", reason);
  27410. if (!PlayerCanAfford(playerid, amount))
  27411. {
  27412. SendErrorMessage(playerid, "You don't have enough money to pay this ticket.");
  27413. }
  27414. else
  27415. {
  27416. format(gExecute, sizeof(gExecute), "DELETE FROM rp_tickets WHERE ID = %i", ticket);
  27417. mysql_tquery(gConnection, gExecute);
  27418. SendInfoMessage(playerid, "You have paid a ticket costing %s for \"%s\" (issued on %s).", FormatNumber(amount), reason, date);
  27419. RemoveMoney(playerid, amount);
  27420. Server[TaxVault] += amount;
  27421. SaveInformation();
  27422. ShowTicketList(playerid);
  27423. }
  27424. }
  27425. }
  27426. forward OnPlayerRemoveAnote(playerid, anote);
  27427. public OnPlayerRemoveAnote(playerid, anote)
  27428. {
  27429. if (!cache_get_row_count(gConnection))
  27430. {
  27431. SendErrorMessage(playerid, "There was an error processing this anote.");
  27432. }
  27433. else
  27434. {
  27435. new issuer[32], date[32], reason[128];
  27436. cache_get_field_content(0, "Issuer", issuer);
  27437. cache_get_field_content(0, "Date", date);
  27438. cache_get_field_content(0, "Reason", reason);
  27439. format(gExecute, sizeof(gExecute), "DELETE FROM rp_anotes WHERE ID = %i", anote);
  27440. mysql_tquery(gConnection, gExecute);
  27441. SendInfoMessage(playerid, "You have removed anote ID: %i (issued on %s).", anote, date);
  27442. SendInfoMessage(playerid, "Anote: \"%s\"", reason);
  27443. }
  27444. }
  27445. forward OnPlayerShowTickets(playerid);
  27446. public OnPlayerShowTickets(playerid)
  27447. {
  27448. new
  27449. rows = cache_get_row_count(gConnection);
  27450. if (!rows)
  27451. {
  27452. SendErrorMessage(playerid, "You don't have any tickets to pay.");
  27453. }
  27454. else
  27455. {
  27456. static
  27457. reason[128],
  27458. date[32];
  27459. gListString = "Amount\tReason\tDate";
  27460. for (new i = 0; i < rows; i ++)
  27461. {
  27462. cache_get_field_content(i, "Date", date);
  27463. cache_get_field_content(i, "Reason", reason);
  27464. format(gListString, sizeof(gListString), "%s\n%s\t%s\t%s", gListString, FormatNumber(cache_get_field_content_int(i, "Amount")), reason, date);
  27465. gListedItems[playerid][i] = cache_get_field_content_int(i, "ID");
  27466. }
  27467. Dialog_Show(playerid, PayTickets, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Tickets to Pay", gListString, "Pay", "Cancel");
  27468. }
  27469. }
  27470. forward OnPlayerShowFines(playerid);
  27471. public OnPlayerShowFines(playerid)
  27472. {
  27473. new rows = cache_get_row_count(gConnection);
  27474. if (!rows)
  27475. {
  27476. SendErrorMessage(playerid, "You don't have any tickets.");
  27477. }
  27478. else
  27479. {
  27480. static
  27481. reason[128],
  27482. date[32];
  27483. gListString = "Amount\tReason\tDate";
  27484. for (new i = 0; i < rows; i ++)
  27485. {
  27486. cache_get_field_content(i, "Date", date);
  27487. cache_get_field_content(i, "Reason", reason);
  27488. format(gListString, sizeof(gListString), "%s\n%s\t%s\t%s", gListString, FormatNumber(cache_get_field_content_int(i, "Amount")), reason, date);
  27489. gListedItems[playerid][i] = cache_get_field_content_int(i, "ID");
  27490. }
  27491. Dialog_Show(playerid, ShowFines, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Tickets", gListString, "Select", "Cancel");
  27492. }
  27493. }
  27494. forward OnPlayerShowANotes(playerid, targetid);
  27495. public OnPlayerShowANotes(playerid, targetid)
  27496. {
  27497. new
  27498. rows = cache_get_row_count(gConnection);
  27499. if (!rows)
  27500. {
  27501. SendErrorMessage(targetid, "That player does not have any admin notes.");
  27502. }
  27503. else
  27504. {
  27505. static
  27506. reason[128],
  27507. date[32],
  27508. issuer[32];
  27509. gListString = "Issuer\tReason\tDate";
  27510. for (new i = 0; i < rows; i ++)
  27511. {
  27512. cache_get_field_content(i, "Date", date);
  27513. cache_get_field_content(i, "Reason", reason);
  27514. cache_get_field_content(i, "Issuer", issuer);
  27515. format(gListString, sizeof(gListString), "%s\n%s\t%s\t%s", gListString, issuer, reason, date);
  27516. gListedItems[playerid][i] = cache_get_field_content_int(i, "ID");
  27517. }
  27518. Dialog_Show(targetid, RemoveAnote, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Admin Notes", gListString, "Remove", "Exit");
  27519. }
  27520. }
  27521. forward OnPlayerShowDeathLogs(playerid);
  27522. public OnPlayerShowDeathLogs(playerid)
  27523. {
  27524. new
  27525. rows = cache_get_row_count(gConnection);
  27526. if (!rows)
  27527. {
  27528. SendErrorMessage(playerid, "There are no death logs to show.");
  27529. }
  27530. else
  27531. {
  27532. static
  27533. killer[24],
  27534. target[24],
  27535. reason[24],
  27536. date[32];
  27537. gListString = "Killer\tTarget\tReason\tDate";
  27538. for (new i = 0; i < rows; i ++)
  27539. {
  27540. cache_get_field_content(i, "Killer", killer);
  27541. cache_get_field_content(i, "Target", target);
  27542. cache_get_field_content(i, "Reason", reason);
  27543. cache_get_field_content(i, "Date", date);
  27544. format(gListString, sizeof(gListString), "%s\n%s\t%s\t%s\t%s", gListString, killer, target, reason, date);
  27545. gListedItems[playerid][i] = cache_get_field_content_int(i, "ID");
  27546. }
  27547. Dialog_Show(playerid, DeathLogs, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Death Logs", gListString, "Select", "Exit");
  27548. }
  27549. }
  27550. forward OnPlayerShowBanLogs(playerid);
  27551. public OnPlayerShowBanLogs(playerid)
  27552. {
  27553. new
  27554. rows = cache_get_row_count(gConnection);
  27555. if (!rows)
  27556. {
  27557. SendErrorMessage(playerid, "There are no ban logs to be shown.");
  27558. }
  27559. else
  27560. {
  27561. static
  27562. admin[24],
  27563. player[24],
  27564. reason[128],
  27565. date[32];
  27566. gListString = "Admin\tPlayer\tReason\tDate";
  27567. for (new i = 0; i < rows; i ++)
  27568. {
  27569. cache_get_field_content(i, "Admin", admin);
  27570. cache_get_field_content(i, "Player", player);
  27571. cache_get_field_content(i, "Reason", reason);
  27572. cache_get_field_content(i, "Date", date);
  27573. format(gListString, sizeof(gListString), "%s\n%s\t%s\t%s\t%s", gListString, admin, player, reason, date);
  27574. gListedItems[playerid][i] = cache_get_field_content_int(i, "ID");
  27575. }
  27576. Dialog_Show(playerid, BanLogs, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Ban Logs", gListString, "Select", "Exit");
  27577. }
  27578. }
  27579. forward OnPlayerListAliases(playerid, ip[]);
  27580. public OnPlayerListAliases(playerid, ip[])
  27581. {
  27582. new rows = cache_get_row_count(gConnection);
  27583. if (!rows)
  27584. {
  27585. SendErrorMessage(playerid, "There are no accounts listed under this IP.");
  27586. }
  27587. else
  27588. {
  27589. new username[MAX_PLAYER_NAME], date[32];
  27590. SendClientMessage(playerid, COLOR_WHITE, "-----------------------------------------------");
  27591. SendFormatMessage(playerid, COLOR_YELLOW, "Accounts (%s):", ip);
  27592. for (new i = 0; i < rows; i ++)
  27593. {
  27594. cache_get_field_content(i, "Username", username);
  27595. cache_get_field_content(i, "LoginDate", date);
  27596. SendInfoMessage(playerid, " * %s (last login: %s)", username, date);
  27597. }
  27598. SendClientMessage(playerid, COLOR_WHITE, "-----------------------------------------------");
  27599. }
  27600. }
  27601. forward OnPlayerListGPCI(playerid, gpci[]);
  27602. public OnPlayerListGPCI(playerid, gpci[])
  27603. {
  27604. new rows = cache_get_row_count(gConnection);
  27605. if (!rows)
  27606. {
  27607. SendErrorMessage(playerid, "There are no accounts listed under this GPCI.");
  27608. }
  27609. else
  27610. {
  27611. new username[MAX_PLAYER_NAME], date[32];
  27612. SendClientMessage(playerid, COLOR_WHITE, "-----------------------------------------------");
  27613. SendFormatMessage(playerid, COLOR_YELLOW, "Accounts (%s):", gpci);
  27614. for (new i = 0; i < rows; i ++)
  27615. {
  27616. cache_get_field_content(i, "Username", username);
  27617. cache_get_field_content(i, "LoginDate", date);
  27618. SendInfoMessage(playerid, " * %s (last login: %s)", username, date);
  27619. }
  27620. SendClientMessage(playerid, COLOR_WHITE, "-----------------------------------------------");
  27621. }
  27622. }
  27623. forward OnPlayerSetSupporter(playerid, player[], level);
  27624. public OnPlayerSetSupporter(playerid, player[], level)
  27625. {
  27626. if (!cache_get_row_count(gConnection))
  27627. {
  27628. SendErrorMessage(playerid, "The specified player doesn't exist.");
  27629. }
  27630. else
  27631. {
  27632. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET Supporter = %i WHERE Username = '%s'", level, mysql_escaped(player));
  27633. mysql_tquery(gConnection, gExecute);
  27634. SendSupporterMessage(COLOR_SAMP, "(Supporter) %s has offline set %s's Supporter level to %s.", ReturnNameEx(playerid, 0), player, GetSupporterLevel(level));
  27635. SendAdminMessage(COLOR_RED, "Admin: %s has offline set %s's Supporter level to %s.", ReturnNameEx(playerid, 0), player, GetSupporterLevel(level));
  27636. }
  27637. }
  27638. forward OnPlayerSetAdmin(playerid, player[], level);
  27639. public OnPlayerSetAdmin(playerid, player[], level)
  27640. {
  27641. if (!cache_get_row_count(gConnection))
  27642. {
  27643. SendErrorMessage(playerid, "The specified player doesn't exist.");
  27644. }
  27645. else
  27646. {
  27647. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET Admin = %i WHERE Username = '%s'", level, mysql_escaped(player));
  27648. mysql_tquery(gConnection, gExecute);
  27649. SendAdminMessage(COLOR_RED, "Admin: %s has offline set %s's admin level to %i.", ReturnNameEx(playerid, 0), player, level);
  27650. }
  27651. }
  27652. forward OnPlayerVehicleInfo(playerid, id);
  27653. public OnPlayerVehicleInfo(playerid, id)
  27654. {
  27655. new
  27656. owner[MAX_PLAYER_NAME];
  27657. if (!cache_get_row_count(gConnection))
  27658. {
  27659. owner = "Nobody";
  27660. }
  27661. else
  27662. {
  27663. cache_get_field_content(0, "Username", owner);
  27664. }
  27665. SendClientMessage(playerid, COLOR_WHITE, "----------------------------------------------------------------------------------------------");
  27666. SendFormatMessage(playerid, COLOR_YELLOW, "%s (ID: %i)", GetVehicleModelName(Vehicles[id][vModel]), Vehicles[id][vVehicle]);
  27667. SendFormatMessage(playerid, COLOR_WHITE, "Model: %s - Owner: %s - Faction: %s - Color 1: %i - Color 2: %i", GetVehicleModelName(Vehicles[id][vModel]), owner, GetFactionIDName(Vehicles[id][vFaction]), Vehicles[id][vColor1], Vehicles[id][vColor2]);
  27668. SendFormatMessage(playerid, COLOR_WHITE, "Plate: %s - Registered: %s - Rental: %s - Siren: %s - Alarm: %s", Vehicles[id][vPlate], Vehicles[id][vRegistered], (Vehicles[id][vRentable]) ? ("Yes") : ("No"), (Vehicles[id][vSiren]) ? ("Yes") : ("No"), (Vehicles[id][vAlarm]) ? ("Yes") : ("No"));
  27669. SendClientMessage(playerid, COLOR_WHITE, "----------------------------------------------------------------------------------------------");
  27670. }
  27671. forward OnPlayerGetOfflineIP(playerid, player[]);
  27672. public OnPlayerGetOfflineIP(playerid, player[])
  27673. {
  27674. new ip[16];
  27675. if (!cache_get_row_count(gConnection))
  27676. {
  27677. SendErrorMessage(playerid, "That specified account doesn't exist.");
  27678. }
  27679. else
  27680. {
  27681. cache_get_field_content(0, "IP", ip);
  27682. SendInfoMessage(playerid, "%s's IP address is: %s.", player, ip);
  27683. }
  27684. }
  27685. forward OnPlayerJailCheck(playerid, player[], reason[], minutes);
  27686. public OnPlayerJailCheck(playerid, player[], reason[], minutes)
  27687. {
  27688. if (!cache_get_row_count(gConnection))
  27689. {
  27690. SendErrorMessage(playerid, "That player doesn't exist or has a higher admin level.");
  27691. }
  27692. else
  27693. {
  27694. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET JailType = 1, JailTime = %i WHERE Username = '%s'", minutes * 60, player);
  27695. mysql_tquery(gConnection, gExecute);
  27696. SendAdminMessage(COLOR_RED, "Admin: %s has offline jailed %s for %i minutes, reason: %s", ReturnNameEx(playerid, 0), player, minutes, reason);
  27697. }
  27698. }
  27699. forward OnPlayerBanCheck(playerid, player[], reason[]);
  27700. public OnPlayerBanCheck(playerid, player[], reason[])
  27701. {
  27702. new ip[16];
  27703. if (!cache_get_row_count(gConnection))
  27704. {
  27705. SendErrorMessage(playerid, "That player doesn't exist or has a higher admin level.");
  27706. }
  27707. else
  27708. {
  27709. cache_get_field_content(0, "IP", ip);
  27710. format(gExecute, sizeof(gExecute), "INSERT INTO rp_banlogs (Admin, Player, Reason, Date) VALUES('%s', '%s', '%s', NOW())", ReturnName(playerid), player, mysql_escaped(reason));
  27711. mysql_tquery(gConnection, gExecute);
  27712. format(gExecute, sizeof(gExecute), "INSERT INTO rp_blacklist (Player, IP, BannedBy, Date, Reason) VALUES('%s', '%s', '%s', NOW(), '%s')", player, ip, ReturnName(playerid), mysql_escaped(reason));
  27713. mysql_tquery(gConnection, gExecute);
  27714. SendAdminMessage(COLOR_RED, "Admin: %s has offline banned %s, reason: %s", ReturnNameEx(playerid, 0), player, reason);
  27715. }
  27716. }
  27717. forward OnFadeSetPosition(playerid);
  27718. public OnFadeSetPosition(playerid)
  27719. {
  27720. if (GetCurrentCompany(playerid) != INVALID_ID)
  27721. {
  27722. SendInfoMessage(playerid, "{CFCFCF}Use {33AA33}/buy{CFCFCF} for a list of products for sale.");
  27723. }
  27724. }
  27725. forward PackageReady(playerid, faction, type, price);
  27726. public PackageReady(playerid, faction, type, price)
  27727. {
  27728. if (Players[playerid][pFaction] == INVALID_ID || Players[playerid][pFaction] != faction || Factions[faction][fcType] != FACTION_ILLEGAL)
  27729. {
  27730. return 0;
  27731. }
  27732. else
  27733. {
  27734. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Unknown says: The package is ready. We have sent you more details.");
  27735. SendInfoMessage(playerid, "{33AA33}Hint: Use /locatepackage to find the location of your package.");
  27736. Players[playerid][pPackageType] = type;
  27737. Players[playerid][pPackageOrder] = PACKAGE_TYPE_NONE;
  27738. }
  27739. return 1;
  27740. }
  27741. forward RechargeTazer(playerid);
  27742. public RechargeTazer(playerid)
  27743. {
  27744. if (Players[playerid][pTazer])
  27745. {
  27746. GivePlayerWeapon(playerid, 23, 1);
  27747. }
  27748. RemovePlayerAttachedObject(playerid, ATTACHED_SLOT_MISC);
  27749. }
  27750. forward ResetFaint(playerid);
  27751. public ResetFaint(playerid)
  27752. {
  27753. if (Players[playerid][pFainted])
  27754. {
  27755. Players[playerid][pFainted] = 0;
  27756. TogglePlayerControllable(playerid, 1);
  27757. ApplyAnimation(playerid, "PED", "getup_front", 4.1, 0, 0, 0, 0, 0, 1);
  27758. }
  27759. }
  27760. forward DeleteObject(objectid);
  27761. public DeleteObject(objectid)
  27762. {
  27763. DestroyDynamicObject(objectid);
  27764. }
  27765. forward UnfreezePlayer(playerid);
  27766. public UnfreezePlayer(playerid)
  27767. {
  27768. TogglePlayerControllable(playerid, 1);
  27769. }
  27770. forward RefuelCycle(playerid, vehicleid, pump);
  27771. public RefuelCycle(playerid, vehicleid, pump)
  27772. {
  27773. new
  27774. string[64];
  27775. if (!IsPlayerLoggedIn(playerid))
  27776. {
  27777. return 0;
  27778. }
  27779. else if (!IsValidVehicle(vehicleid))
  27780. {
  27781. return 0;
  27782. }
  27783. else if (!IsValidPumpID(pump) || !IsVehicleInRangeOfPoint(vehicleid, 10.0, GasPumps[pump][gpSpawn][0], GasPumps[pump][gpSpawn][1], GasPumps[pump][gpSpawn][2]))
  27784. {
  27785. return StopRefuel(playerid);
  27786. }
  27787. else
  27788. {
  27789. Players[playerid][pGasPrice] += 5;
  27790. GasPumps[pump][gpFuel] -= 0.2;
  27791. VehicleInformation[vehicleid][vFuel]++;
  27792. UpdateFuelGauge(vehicleid);
  27793. format(string, sizeof(string), "ID: %i\nGasoline: %.1f gallons\nUse /refuel to refill vehicle", pump, GasPumps[pump][gpFuel]);
  27794. UpdateDynamic3DTextLabelText(GasPumps[pump][gpText], COLOR_GREY, string);
  27795. if (VehicleInformation[vehicleid][vFuel] > 99 || GasPumps[pump][gpFuel] < 1.0)
  27796. {
  27797. StopRefuel(playerid);
  27798. }
  27799. }
  27800. return 1;
  27801. }
  27802. forward PlayerRecover(playerid);
  27803. public PlayerRecover(playerid)
  27804. {
  27805. if (Players[playerid][pDeathState] != DEATH_STATE_NONE)
  27806. {
  27807. if (IsValidDynamic3DTextLabel(Players[playerid][pInjuredText]))
  27808. {
  27809. DestroyDynamic3DTextLabel(Players[playerid][pInjuredText]);
  27810. Players[playerid][pInjuredText] = INVALID_3DTEXT_ID;
  27811. }
  27812. Players[playerid][pDeathState] = DEATH_STATE_NONE;
  27813. RemoveMoney(playerid, 500);//Players[playerid][pPocketMoney] -= 500;
  27814. SetPlayerPos(playerid, 2507.2341, -1706.3156, 2104.7358);
  27815. SetPlayerFacingAngle(playerid, 90.0000);
  27816. SetCameraBehindPlayer(playerid);
  27817. TogglePlayerControllable(playerid, 1);
  27818. ClearAnimations(playerid, 1);
  27819. ResetLastShots(playerid);
  27820. PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
  27821. SendInfoMessage(playerid, "You have recovered at the hospital for $500.");
  27822. Statistics[playerid][sHospitalFees] += 500;
  27823. }
  27824. return 1;
  27825. }
  27826. forward SelectTD(playerid);
  27827. public SelectTD(playerid)
  27828. {
  27829. SelectTextDraw(playerid, -1);
  27830. }
  27831. forward BeginWorkout(playerid, type);
  27832. public BeginWorkout(playerid, type)
  27833. {
  27834. PlayerTextDrawSetString(playerid, Players[playerid][pText][60], "0");
  27835. PlayerTextDrawSetString(playerid, Players[playerid][pText][62], "0");
  27836. switch (type)
  27837. {
  27838. case WORKOUT_DUMBELLS:
  27839. {
  27840. PlayerTextDrawSetString(playerid, Players[playerid][pText][59], "Reps");
  27841. ShowPlayerTextDraws(playerid, 58, 60);
  27842. gWeights[playerid][0] = SetAttachedObject(playerid, 3072, 5, 0.0, 0.0, 0.0);
  27843. gWeights[playerid][1] = SetAttachedObject(playerid, 3071, 6, 0.0, 0.0, 0.0);
  27844. ShowPlayerProgressBar(playerid, Players[playerid][pBars][0]);
  27845. SetPlayerProgressBarValue(playerid, Players[playerid][pBars][0], 0.0);
  27846. }
  27847. case WORKOUT_TREADMILL:
  27848. {
  27849. PlayerTextDrawSetString(playerid, Players[playerid][pText][59], "Level");
  27850. PlayerTextDrawFormatString(playerid, Players[playerid][pText][60], "%i", Players[playerid][pSpeedLevel]);
  27851. ShowPlayerProgressBar(playerid, Players[playerid][pBars][0]);
  27852. SetPlayerProgressBarValue(playerid, Players[playerid][pBars][0], 50.0);
  27853. PlayerPlaySound(playerid, 17801, 0.0, 0.0, 0.0);
  27854. ShowPlayerTextDraws(playerid, 58, 62);
  27855. }
  27856. }
  27857. Players[playerid][pWorkout] = type;
  27858. Players[playerid][pDistanceRan] = 0;
  27859. Players[playerid][pReps] = 0;
  27860. return TogglePlayerControllable(playerid, 0);
  27861. }
  27862. forward DecreasePower(playerid);
  27863. public DecreasePower(playerid)
  27864. {
  27865. new
  27866. Float:value = GetPlayerProgressBarValue(playerid, Players[playerid][pBars][0]);
  27867. switch (Players[playerid][pWorkout])
  27868. {
  27869. case WORKOUT_DUMBELLS:
  27870. {
  27871. if (value > 0.0)
  27872. {
  27873. SetPlayerProgressBarValue(playerid, Players[playerid][pBars][0], value - 3.0);
  27874. }
  27875. }
  27876. case WORKOUT_TREADMILL:
  27877. {
  27878. if (value > 0.0)
  27879. {
  27880. SetPlayerProgressBarValue(playerid, Players[playerid][pBars][0], value - (Players[playerid][pSpeedLevel] + 8));
  27881. }
  27882. else
  27883. {
  27884. StopWorkout(playerid);
  27885. ApplyAnimation(playerid, "GYMNASIUM", "gym_tread_falloff", 4.1, 0, 0, 0, 0, 0, 1);
  27886. }
  27887. }
  27888. }
  27889. }
  27890. forward SetPosition(playerid, Float:x, Float:y, Float:z, Float:angle, interior, world, freeze);
  27891. public SetPosition(playerid, Float:x, Float:y, Float:z, Float:angle, interior, world, freeze)
  27892. {
  27893. if (Players[playerid][pSetPosition])
  27894. {
  27895. SetPlayerPosEx(playerid, x, y, z, angle, interior, world);
  27896. SetCameraBehindPlayer(playerid);
  27897. Players[playerid][pSetPosition] = 0;
  27898. if (!freeze)
  27899. {
  27900. TogglePlayerControllable(playerid, true);
  27901. }
  27902. else
  27903. {
  27904. SetFreezePos(playerid, x, y, z, 4500);
  27905. }
  27906. }
  27907. }
  27908. forward OnTagAdded(tag);
  27909. public OnTagAdded(tag)
  27910. {
  27911. Tags[tag][tagID] = cache_insert_id(gConnection);
  27912. SaveTag(tag);
  27913. }
  27914. forward OnSprayTagAdded(spray);
  27915. public OnSprayTagAdded(spray)
  27916. {
  27917. SprayTags[spray][sID] = cache_insert_id(gConnection);
  27918. SaveSprayTag(spray);
  27919. }
  27920. forward OnObjectAdded(object);
  27921. public OnObjectAdded(object)
  27922. {
  27923. Objects[object][oID] = cache_insert_id(gConnection);
  27924. SaveObject(object);
  27925. }
  27926. forward OnAutoShopAdded(id);
  27927. public OnAutoShopAdded(id)
  27928. {
  27929. AutoShops[id][asID] = cache_insert_id(gConnection);
  27930. }
  27931. forward OnGateAdded(gate);
  27932. public OnGateAdded(gate)
  27933. {
  27934. Gates[gate][gID] = cache_insert_id(gConnection);
  27935. SaveGate(gate);
  27936. }
  27937. forward OnLabelAdded(label);
  27938. public OnLabelAdded(label)
  27939. {
  27940. Labels[label][lID] = cache_insert_id(gConnection);
  27941. UpdateLabel(label);
  27942. SaveLabel(label);
  27943. }
  27944. forward OnTeleportAdded(teleport);
  27945. public OnTeleportAdded(teleport)
  27946. {
  27947. Teleports[teleport][tpID] = cache_insert_id(gConnection);
  27948. }
  27949. forward OnArrestPointAdded(point);
  27950. public OnArrestPointAdded(point)
  27951. {
  27952. ArrestPoints[point][apID] = cache_insert_id(gConnection);
  27953. }
  27954. forward OnPlayerTakeGun(playerid, id);
  27955. public OnPlayerTakeGun(playerid, id)
  27956. {
  27957. if (cache_get_row_count(gConnection))
  27958. {
  27959. new weapon = cache_get_field_content_int(0, "gunType");
  27960. new quantity = cache_get_field_content_int(0, "gunQuantity");
  27961. if (!IsSufficientSpace(playerid, GetWeaponItemName(weapon)))
  27962. {
  27963. SendErrorMessage(playerid, "{CFCFCF}There is no more room in your inventory.");
  27964. }
  27965. else
  27966. {
  27967. quantity--;
  27968. AddItemToInventory(playerid, GetWeaponItemName(weapon), 100);
  27969. if (quantity) {
  27970. format(gExecute, sizeof(gExecute), "UPDATE rp_crateguns SET gunQuantity = gunQuantity - 1 WHERE gunID = %i", id);
  27971. } else {
  27972. format(gExecute, sizeof(gExecute), "DELETE FROM rp_crateguns WHERE gunID = %i", id);
  27973. }
  27974. mysql_tquery(gConnection, gExecute);
  27975. SendInfoMessage(playerid, "{CFCFCF}You have taken a {33AA33}%s{CFCFCF} from the weapon crate.", GetWeaponItemName(weapon));
  27976. }
  27977. }
  27978. }
  27979. /*
  27980. GetAmmunitionType(weaponid)
  27981. {
  27982. new
  27983. type[16];
  27984. switch (weaponid)
  27985. {
  27986. case 22, 23, 28, 29, 32:
  27987. type = "9x19mm";
  27988. case 24:
  27989. type = ".50cal";
  27990. case 25, 26, 27:
  27991. type = "12 Gauge";
  27992. case 30:
  27993. type = "7.62x39mm";
  27994. case 31:
  27995. type = "5.56x45mm";
  27996. case 33, 34:
  27997. type = "7.62x51mm";
  27998. default:
  27999. type = "Unknown";
  28000. }
  28001. return type;
  28002. }
  28003. */
  28004. /*
  28005. {".50cal", 2061, 2, true, true},
  28006. {"9x19mm", 2061, 2, true, true},
  28007. {"5.56x45mm", 2061, 2, true, true},
  28008. {"7.62x39mm", 2061, 2, true, true},
  28009. {"7.62x51mm", 2061, 2, true, true},
  28010. {"12 Gauge", 2061, 2, true, true}
  28011. */
  28012. forward OnPlayerOpenCrate(playerid, itemid);
  28013. public OnPlayerOpenCrate(playerid, itemid)
  28014. {
  28015. new
  28016. rows = cache_get_row_count(gConnection);
  28017. if (!rows)
  28018. {
  28019. SendErrorMessage(playerid, "This weapon crate is empty.");
  28020. }
  28021. else
  28022. {
  28023. new string[512];
  28024. for (new i = 0; i < rows; i ++) {
  28025. new weapon = cache_get_field_content_int(i, "gunType");
  28026. new quantity = cache_get_field_content_int(i, "gunQuantity");
  28027. format(string, sizeof(string), "%s\n%s (%i left)", string, GetWeapon(weapon), quantity);
  28028. gListedItems[playerid][i] = cache_get_field_content_int(i, "gunID");
  28029. }
  28030. Players[playerid][pSelected] = itemid;
  28031. Dialog_Show(playerid, ShowGuns, DIALOG_STYLE_LIST, "{FFFFFF}Select Gun", string, "Take", "Cancel");
  28032. }
  28033. }
  28034. forward OnPlayerCheckPlate(playerid, plate[]);
  28035. public OnPlayerCheckPlate(playerid, plate[])
  28036. {
  28037. new id = GetVehicleID(GetPlayerVehicleID(playerid));
  28038. if (id == INVALID_ID)
  28039. {
  28040. return 0;
  28041. }
  28042. else if (cache_get_row_count(gConnection))
  28043. {
  28044. SendErrorMessage(playerid, "The specified license plate is already in use.");
  28045. }
  28046. else
  28047. {
  28048. new engine, lights, alarm, doors, bonnet, boot, objective;
  28049. GetVehicleParamsEx(Vehicles[id][vVehicle], engine, lights, alarm, doors, bonnet, boot, objective);
  28050. strcpy(Vehicles[id][vPlate], plate, 32);
  28051. SaveVehicle(id);
  28052. ResyncVehicle(Vehicles[id][vVehicle]);
  28053. PutPlayerInVehicle(playerid, Vehicles[id][vVehicle], 0);
  28054. SetVehicleParamsEx(Vehicles[id][vVehicle], engine, lights, alarm, doors, bonnet, boot, objective);
  28055. SendInfoMessage(playerid, "You have changed your license plate to '%s' for {33CC33}$400{FFFFFF}.", plate);
  28056. RemoveMoney(playerid, 400);
  28057. }
  28058. return 1;
  28059. }
  28060. ShowCallsigns(playerid)
  28061. {
  28062. gListString = "Callsign\tName";
  28063. foreach (new i : Player)
  28064. {
  28065. if (Players[playerid][pFaction] == Players[i][pFaction])
  28066. {
  28067. if (Players[i][pDuty])
  28068. {
  28069. format(gListString, sizeof(gListString), "%s\n%s\t%s", gListString, Players[i][pCallsign], ReturnNameEx(i, 0));
  28070. }
  28071. }
  28072. }
  28073. Dialog_Show(playerid, CallsignRoster, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Onduty", gListString, "Close", "");
  28074. }
  28075. forward OnPlayerViewRoster(playerid);
  28076. public OnPlayerViewRoster(playerid)
  28077. {
  28078. static
  28079. username[24],
  28080. date[32],
  28081. rows,
  28082. rank;
  28083. gListString = "Name\tRank\tLast Seen";
  28084. rows = cache_get_row_count(gConnection);
  28085. for (new i = 0; i < rows; i ++)
  28086. {
  28087. rank = cache_get_field_content_int(i, "FactionRank");
  28088. cache_get_field_content(i, "Username", username);
  28089. cache_get_field_content(i, "LoginDate", date);
  28090. if (GetPlayerID(username) != INVALID_PLAYER_ID) {
  28091. format(gListString, sizeof(gListString), "%s\n%s\t%s\t{33CC33}Online{FFFFFF}", gListString, username, GetFactionRank(Players[playerid][pFaction], cache_get_field_content_int(i, "FactionRank")), date);
  28092. } else {
  28093. format(gListString, sizeof(gListString), "%s\n%s\t%s\t%s", gListString, username, GetFactionRank(Players[playerid][pFaction], rank), date);
  28094. }
  28095. }
  28096. Dialog_Show(playerid, Roster, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Faction Roster", gListString, "Close", "");
  28097. }
  28098. forward OnPlayerViewAdminRoster(playerid);
  28099. public OnPlayerViewAdminRoster(playerid)
  28100. {
  28101. static
  28102. username[24],
  28103. date[32],
  28104. rows,
  28105. level;
  28106. gListString = "Name\tLevel\tLast Seen";
  28107. rows = cache_get_row_count(gConnection);
  28108. for (new i = 0; i < rows; i ++)
  28109. {
  28110. level = cache_get_field_content_int(i, "Admin");
  28111. cache_get_field_content(i, "Username", username);
  28112. cache_get_field_content(i, "LoginDate", date);
  28113. if (GetPlayerID(username) != INVALID_PLAYER_ID) {
  28114. format(gListString, sizeof(gListString), "%s\n%s\t%i\t{33CC33}Online{FFFFFF}", gListString, username, level, date);
  28115. } else {
  28116. format(gListString, sizeof(gListString), "%s\n%s\t%i\t%s", gListString, username, level, date);
  28117. }
  28118. }
  28119. Dialog_Show(playerid, ARoster, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Admin Roster", gListString, "Close", "");
  28120. }
  28121. forward OnPlayerSelectNote(playerid);
  28122. public OnPlayerSelectNote(playerid)
  28123. {
  28124. if (cache_get_row_count(gConnection))
  28125. {
  28126. new subject[72], text[128];
  28127. Players[playerid][pSelected] = cache_get_field_content_int(0, "ID");
  28128. cache_get_field_content(0, "noteSubject", subject);
  28129. cache_get_field_content(0, "noteText", text);
  28130. format(subject, sizeof(subject), "{FFFFFF}%s", subject);
  28131. Dialog_Show(playerid, ViewNote, DIALOG_STYLE_MSGBOX, subject, text, "Delete", "Back");
  28132. }
  28133. }
  28134. forward OnPlayerViewNotes(playerid);
  28135. public OnPlayerViewNotes(playerid)
  28136. {
  28137. static
  28138. subject[64],
  28139. rows;
  28140. rows = cache_get_row_count(gConnection);
  28141. gListString = "Add Note";
  28142. for (new i = 0; i < rows; i ++)
  28143. {
  28144. cache_get_field_content(i, "noteSubject", subject);
  28145. format(gListString, sizeof(gListString), "%s\n%s", gListString, subject);
  28146. gListedItems[playerid][i] = cache_get_field_content_int(i, "ID");
  28147. }
  28148. Dialog_Show(playerid, Notebook, DIALOG_STYLE_LIST, "{FFFFFF}My Notebook", gListString, "Select", "Cancel");
  28149. }
  28150. forward OnPlayerCheckAdminName(playerid, name[]);
  28151. public OnPlayerCheckAdminName(playerid, name[])
  28152. {
  28153. if (cache_get_row_count(gConnection))
  28154. {
  28155. Dialog_Show(playerid, AdminName, DIALOG_STYLE_INPUT, "{FFFFFF}Admin Name", "That name is already in use, please choose another.\n\nPlease input the admin name that you wish to use:", "Submit", "Cancel");
  28156. }
  28157. else
  28158. {
  28159. strcpy(Players[playerid][pAdminName], name, 24);
  28160. SaveAccount(playerid);
  28161. SendInfoMessage(playerid, "You have set your admin name to: %s.", name);
  28162. }
  28163. return 1;
  28164. }
  28165. forward OnPlayerCheckPassword(playerid);
  28166. public OnPlayerCheckPassword(playerid)
  28167. {
  28168. if (!cache_get_row_count(gConnection))
  28169. {
  28170. SendErrorMessage(playerid, "The password you have specified is not correct.");
  28171. }
  28172. else
  28173. {
  28174. Dialog_Show(playerid, NewPassword, DIALOG_STYLE_INPUT, "{FFFFFF}New Password", "Please input your new password below:", "Submit", "Cancel");
  28175. }
  28176. }
  28177. forward OnPlayerTraceAddress(playerid, address);
  28178. public OnPlayerTraceAddress(playerid, address)
  28179. {
  28180. if (!cache_get_row_count(gConnection))
  28181. {
  28182. Dialog_Show(playerid, MDC_AddressSearch, DIALOG_STYLE_INPUT, "{FFFFFF}Mobile Data Computer - Address Search", "Please enter the full address:", "Submit", "Cancel");
  28183. }
  28184. else
  28185. {
  28186. new
  28187. owner,
  28188. ownername[MAX_PLAYER_NAME],
  28189. value,
  28190. forsale,
  28191. Float:x,
  28192. Float:y,
  28193. Float:z,
  28194. string[512];
  28195. new adr[32];
  28196. owner = cache_get_field_content_int(0, "hOwner");
  28197. value = cache_get_field_content_int(0, "hValue");
  28198. forsale = cache_get_field_content_int(0, "hForSale");
  28199. x = cache_get_field_content_float(0, "hSpawnX");
  28200. y = cache_get_field_content_float(0, "hSpawnY");
  28201. z = cache_get_field_content_float(0, "hSpawnZ");
  28202. cache_get_field_content(0, "hOwnerName", ownername);
  28203. cache_get_field_content(0, "hAddress", adr);
  28204. if (!owner)
  28205. {
  28206. format(string, sizeof(string), "Information on %s:\n\nOwner: Nobody\nValue: %i\nFor sale: %s\n Location: %s", adr, value, (forsale) ? ("Yes") : ("No"), GetZoneName(x,y,z));
  28207. }
  28208. else
  28209. {
  28210. format(string, sizeof(string), "Information on %s:\n\nOwner: %s\nValue: %i\nFor sale: %s\n Location: %s", adr, ownername, value, (forsale) ? ("Yes") : ("No"), GetZoneName(x,y,z));
  28211. }
  28212. for (new i = 0; i < MAX_HOUSES; i ++)
  28213. {
  28214. if (IsValidHouseID(i) && !strcmp(Houses[i][hAddress], adr, true))
  28215. {
  28216. Players[playerid][pSelected] = i;
  28217. }
  28218. }
  28219. Dialog_Show(playerid, HouseInfo, DIALOG_STYLE_MSGBOX, "{FFFFFF}House Information", string, "Trace", "Cancel");
  28220. }
  28221. return 1;
  28222. }
  28223. forward OnPlayerTraceSerial(playerid, serial);
  28224. public OnPlayerTraceSerial(playerid, serial)
  28225. {
  28226. if (!cache_get_row_count(gConnection))
  28227. {
  28228. Dialog_Show(playerid, MDC_SerialSearch, DIALOG_STYLE_INPUT, "{FFFFFF}Mobile Data Computer - Serial Search", "Please enter the full serial number:", "Submit", "Cancel");
  28229. }
  28230. else
  28231. {
  28232. new
  28233. owner[MAX_PLAYER_NAME],
  28234. registrar[32],
  28235. weapon[32],
  28236. date[32],
  28237. string[512]
  28238. ;
  28239. cache_get_field_content(0, "Weapon", weapon);
  28240. cache_get_field_content(0, "Owner", owner);
  28241. cache_get_field_content(0, "Registrar", registrar);
  28242. cache_get_field_content(0, "Date", date);
  28243. format(string, sizeof(string), "Serial #%i matches a record in the database:\n\nWeapon: %s\nOwner: %s\nRegistrar: %s\nDate: %s", serial, weapon, owner, registrar, date);
  28244. Dialog_Show(playerid, SerialInfo, DIALOG_STYLE_MSGBOX, "{FFFFFF}Serial Information", string, "Back", "");
  28245. }
  28246. return 1;
  28247. }
  28248. forward OnPlayerTracePlate(playerid, vehicle, plate[]);
  28249. public OnPlayerTracePlate(playerid, vehicle, plate[])
  28250. {
  28251. new
  28252. owner[MAX_PLAYER_NAME],
  28253. string[512];
  28254. Players[playerid][pSelected] = vehicle;
  28255. if (cache_get_row_count(gConnection))
  28256. {
  28257. cache_get_field_content(0, "Username", owner);
  28258. format(string, sizeof(string), "'%s' is registered to the following vehicle:\n\nVehicle: %s\nRegistered By: %s\nLicense Plate: %s\nRegistered On: %s", plate, GetVehicleModelName(Vehicles[vehicle][vModel]), owner, Vehicles[vehicle][vPlate], Vehicles[vehicle][vRegistered]);
  28259. Dialog_Show(playerid, PlateInfo, DIALOG_STYLE_MSGBOX, "{FFFFFF}Result Found", string, "Cancel", "Cancel");
  28260. }
  28261. else
  28262. {
  28263. new company = GetVehicleCompany(vehicle);
  28264. if (IsValidCompanyID(company))
  28265. {
  28266. format(string, sizeof(string), "'%s' is registered to the following vehicle:\n\nVehicle: %s\nRegistered By: %s\nLicense Plate: %s\nRegistered On: %s", plate, GetVehicleModelName(Vehicles[vehicle][vModel]), Companies[company][cName], Vehicles[vehicle][vPlate], Vehicles[vehicle][vRegistered]);
  28267. Dialog_Show(playerid, PlateInfo, DIALOG_STYLE_MSGBOX, "{FFFFFF}Result Found", string, "Cancel", "Cancel");
  28268. }
  28269. else
  28270. {
  28271. format(string, sizeof(string), "'%s' is registered to the following vehicle:\n\nVehicle: %s\nRegistered By: N/A\nLicense Plate: %s\nRegistered On: %s", plate, GetVehicleModelName(Vehicles[vehicle][vModel]), Vehicles[vehicle][vPlate], Vehicles[vehicle][vRegistered]);
  28272. Dialog_Show(playerid, PlateInfo, DIALOG_STYLE_MSGBOX, "{FFFFFF}Result Found", string, "Cancel", "Cancel");
  28273. }
  28274. }
  28275. return 1;
  28276. }
  28277. forward OnMDCViewInformationNewPrint(playerid);
  28278. public OnMDCViewInformationNewPrint(playerid)
  28279. {
  28280. if (cache_get_row_count(gConnection))
  28281. {
  28282. new origin[24], id, active, houses, cars, carlic, gunlic;
  28283. cache_get_field_content(0, "Origin", origin);
  28284. id = cache_get_field_content_int(0, "ID");
  28285. //age = cache_get_field_content_int(0, "Age");
  28286. active = cache_get_field_content_int(0, "Warrants");//conejo
  28287. //charges = cache_get_field_content_int(0, "Charges");
  28288. carlic = cache_get_field_content_int(0, "CarLicense");
  28289. gunlic = cache_get_field_content_int(0, "GunLicense");
  28290. //total = cache_get_field_content_int(0, "TotalWarrants");
  28291. //phone = cache_get_field_content_int(0, "Phone");
  28292. //format(string, sizeof(string), "{6688FF}NAME:{FFFFFF} %s\n{6688FF}ADDRESS:{FFFFFF}", gTargetName[playerid]);
  28293. SendFormatMessage(playerid, COLOR_WHITE, "{6688FF}NAME:{FFFFFF} %s", gTargetName[playerid]);
  28294. SendFormatMessage(playerid, COLOR_WHITE, " ");
  28295. SendFormatMessage(playerid, COLOR_WHITE, "{6688FF}ADDRESS:{FFFFFF}");
  28296. for (new i = 0; i < MAX_HOUSES; i ++)
  28297. {
  28298. if (IsValidHouseID(i) && Houses[i][hOwner] == id)
  28299. {
  28300. if (houses > 5)
  28301. {
  28302. //strcat(string, "\n- Too many addresses. See 'options'.");
  28303. SendFormatMessage(playerid, COLOR_WHITE, "- Too many addresses to list.");
  28304. }
  28305. else
  28306. {
  28307. //format(string, sizeof(string), "%s\n%i. %s (%s)", string, ++houses, Houses[i][hAddress], GetZoneName(Houses[i][hSpawn][0], Houses[i][hSpawn][1], Houses[i][hSpawn][2]));
  28308. SendFormatMessage(playerid, COLOR_WHITE, "%i. %s (%s)", ++houses, Houses[i][hAddress], GetZoneName(Houses[i][hSpawn][0], Houses[i][hSpawn][1], Houses[i][hSpawn][2]));
  28309. }
  28310. }
  28311. }
  28312. if (!houses)
  28313. {
  28314. //strcat(string, "\n- None found.");
  28315. SendFormatMessage(playerid, COLOR_WHITE, "- None found");
  28316. }
  28317. //strcat(string, "\n\n{6688FF}VEHICLES:{FFFFFF}");
  28318. SendFormatMessage(playerid, COLOR_WHITE, " ");
  28319. SendFormatMessage(playerid, COLOR_WHITE, "{6688FF}VEHICLES:{FFFFFF}");
  28320. for (new i = 0; i < MAX_CARS; i ++)
  28321. {
  28322. if (IsValidVehicleID(i) && Vehicles[i][vOwner] == id)
  28323. {
  28324. if (cars > 5)
  28325. {
  28326. SendFormatMessage(playerid, COLOR_WHITE, "- Too many vehicles to list.");
  28327. }
  28328. else
  28329. {
  28330. //format(string, sizeof(string), "%s\n%i. %s (%s)", string, ++cars, GetVehicleModelName(Vehicles[i][vModel]), Vehicles[i][vPlate]);
  28331. SendFormatMessage(playerid, COLOR_WHITE, "%i. %s (%s)", ++cars, GetVehicleModelName(Vehicles[i][vModel]), Vehicles[i][vPlate]);
  28332. }
  28333. }
  28334. }
  28335. if (!cars)
  28336. {
  28337. //strcat(string, "\n- No vehicles available.");
  28338. SendFormatMessage(playerid, COLOR_WHITE, "- None found.");
  28339. }
  28340. //format(string, sizeof(string), "%s\n\n{6688FF}LICENSES:{FFFFFF} Drivers: %s, Weapons: %s\n", string, (carlic) ? ("Yes") : ("No"), (gunlic) ? ("Yes") : ("No"));
  28341. SendFormatMessage(playerid, COLOR_WHITE, " ");
  28342. SendFormatMessage(playerid, COLOR_WHITE, "{6688FF}LICENSES:{FFFFFF} Drivers: %s, Weapons: %s", (carlic) ? ("Yes") : ("No"), (gunlic) ? ("Yes") : ("No"));
  28343. if (active > 2)
  28344. {
  28345. //format(string, sizeof(string), "%s\n{6688FF}This person is linked to %i warrants, see 'options'.", string, active);
  28346. SendFormatMessage(playerid, COLOR_WHITE, "{6688FF}This person is linked to %i warrants.", active);
  28347. }
  28348. if (active == 1)
  28349. {
  28350. //strcat(string, "\n{6688FF}This person is linked to a warrant, see 'options'.");
  28351. SendFormatMessage(playerid, COLOR_WHITE, "{6688FF}This person is linked to a warrant.");
  28352. }
  28353. //strcat(string, "\n\n{6688FF}CHARGES:{FFFFFF}\nThis person have no charges.");
  28354. SendFormatMessage(playerid, COLOR_WHITE, " ");
  28355. SendFormatMessage(playerid, COLOR_WHITE, "{6688FF}CHARGES:{FFFFFF}");
  28356. SendFormatMessage(playerid, COLOR_WHITE, "This person have no charges.");
  28357. //Dialog_Show(playerid, MDC_Info, DIALOG_STYLE_MSGBOX, "{FFFFFF}More Information", string, "Options", "Back");
  28358. }
  28359. return 1;
  28360. }
  28361. forward OnMDCViewInformationNew(playerid);
  28362. public OnMDCViewInformationNew(playerid)
  28363. {
  28364. if (cache_get_row_count(gConnection))
  28365. {
  28366. new origin[24], string[1024], id, age, active, houses, cars, carlic, gunlic, phone, charges;
  28367. cache_get_field_content(0, "Origin", origin);
  28368. id = cache_get_field_content_int(0, "ID");
  28369. age = cache_get_field_content_int(0, "Age");
  28370. active = cache_get_field_content_int(0, "Warrants");
  28371. charges = cache_get_field_content_int(0, "Charges");
  28372. carlic = cache_get_field_content_int(0, "CarLicense");
  28373. gunlic = cache_get_field_content_int(0, "GunLicense");
  28374. // total = cache_get_field_content_int(0, "TotalWarrants");
  28375. phone = cache_get_field_content_int(0, "PhoneLastKnown");
  28376. format(string, sizeof(string), "{6688FF}NAME:{FFFFFF} %s\n{6688FF}AGE:{FFFFFF} %i\n{6688FF}ORIGIN:{FFFFFF} %s\n{6688FF}PHONE:{FFFFFF} %i\n\n{6688FF}ADDRESS:{FFFFFF}", gTargetName[playerid], age, origin, phone);
  28377. for (new i = 0; i < MAX_HOUSES; i ++)
  28378. {
  28379. if (IsValidHouseID(i) && Houses[i][hOwner] == id)
  28380. {
  28381. if (houses > 5)
  28382. {
  28383. strcat(string, "\n- Too many addresses. See 'options'.");
  28384. }
  28385. else
  28386. {
  28387. format(string, sizeof(string), "%s\n%i. %s (%s)", string, ++houses, Houses[i][hAddress], GetZoneName(Houses[i][hSpawn][0], Houses[i][hSpawn][1], Houses[i][hSpawn][2]));
  28388. }
  28389. }
  28390. }
  28391. if (!houses)
  28392. {
  28393. strcat(string, "\n- None found.");
  28394. }
  28395. strcat(string, "\n\n{6688FF}VEHICLES:{FFFFFF}");
  28396. for (new i = 0; i < MAX_CARS; i ++)
  28397. {
  28398. if (IsValidVehicleID(i) && Vehicles[i][vOwner] == id)
  28399. {
  28400. if (cars > 5)
  28401. {
  28402. strcat(string, "\n- Too many vehicles. See 'options'.");
  28403. }
  28404. else
  28405. {
  28406. format(string, sizeof(string), "%s\n%i. %s (%s)", string, ++cars, GetVehicleModelName(Vehicles[i][vModel]), Vehicles[i][vPlate]);
  28407. }
  28408. }
  28409. }
  28410. if (!cars)
  28411. {
  28412. strcat(string, "\n- No vehicles available.");
  28413. }
  28414. format(string, sizeof(string), "%s\n\n{6688FF}LICENSES:{FFFFFF} Drivers: %s, Weapons: %s\n", string, (carlic) ? ("Yes") : ("No"), (gunlic) ? ("Yes") : ("No"));
  28415. if (active > 2)
  28416. {
  28417. format(string, sizeof(string), "%s\n{6688FF}This person is linked to %i warrants, see 'options'.", string, active);
  28418. }
  28419. if (active == 1)
  28420. {
  28421. strcat(string, "\n{6688FF}This person is linked to a warrant, see 'options'.");
  28422. }
  28423. strcat(string, "\n\n{6688FF}CHARGES:{FFFFFF}");
  28424. if (charges < 1)
  28425. {
  28426. strcat(string, "\nThis person has no charges.");
  28427. }
  28428. else if (charges >= 1)
  28429. {
  28430. format(string, sizeof(string), "%s\n{6688FF}This person has %i charges. 'options'.", string, charges);
  28431. }
  28432. Dialog_Show(playerid, MDC_Info, DIALOG_STYLE_MSGBOX, "{FFFFFF}More Information", string, "Options", "Back");
  28433. }
  28434. return 1;
  28435. }
  28436. CMD:charges(playerid, params[])
  28437. {
  28438. SendInfoMessage(playerid, "%i charges", Players[playerid][pCharges]);
  28439. return 1;
  28440. }
  28441. forward OnMDCViewInformation(playerid);
  28442. public OnMDCViewInformation(playerid)
  28443. {
  28444. if (cache_get_row_count(gConnection))
  28445. {
  28446. new origin[24], string[512], id, age, active, total, houses, cars, carlic, gunlic;
  28447. cache_get_field_content(0, "Origin", origin);
  28448. id = cache_get_field_content_int(0, "ID");
  28449. age = cache_get_field_content_int(0, "Age");
  28450. active = cache_get_field_content_int(0, "Warrants");
  28451. carlic = cache_get_field_content_int(0, "CarLicense");
  28452. gunlic = cache_get_field_content_int(0, "GunLicense");
  28453. total = cache_get_field_content_int(0, "TotalWarrants");
  28454. format(string, sizeof(string), "{6688FF}Information:{FFFFFF}\nName: %s\nAge: %i years old\nOrigin: %s\nActive Warrants: %i\nTotal Warrants: %i\nCar License: %s\nGun License: %s\n\n{6688FF}Houses:{FFFFFF}", gTargetName[playerid], age, origin, active, total, (carlic) ? ("Yes") : ("No"), (gunlic) ? ("Yes") : ("No"));
  28455. for (new i = 0; i < MAX_HOUSES; i ++)
  28456. {
  28457. if (IsValidHouseID(i) && Houses[i][hOwner] == id)
  28458. {
  28459. format(string, sizeof(string), "%s\n%i. %s (%s)", string, ++houses, Houses[i][hAddress], GetZoneName(Houses[i][hSpawn][0], Houses[i][hSpawn][1], Houses[i][hSpawn][2]));
  28460. }
  28461. }
  28462. if (!houses)
  28463. {
  28464. strcat(string, "\n- No houses available.");
  28465. }
  28466. strcat(string, "\n\n{6688FF}Vehicles:{FFFFFF}");
  28467. for (new i = 0; i < MAX_CARS; i ++)
  28468. {
  28469. if (IsValidVehicleID(i) && Vehicles[i][vOwner] == id)
  28470. {
  28471. format(string, sizeof(string), "%s\n%i. %s (%s)", string, ++cars, GetVehicleModelName(Vehicles[i][vModel]), Vehicles[i][vPlate]);
  28472. }
  28473. }
  28474. if (!cars)
  28475. {
  28476. strcat(string, "\n- No vehicles available.");
  28477. }
  28478. Dialog_Show(playerid, MDCInfo, DIALOG_STYLE_MSGBOX, "{FFFFFF}More Information", string, "Back", "");
  28479. }
  28480. return 1;
  28481. }
  28482. CMD:arrest(playerid, params[])
  28483. {
  28484. new targetid, time;
  28485. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  28486. {
  28487. return SendErrorMessage(playerid, "You are not part of the law enforcement.");
  28488. }
  28489. else if (sscanf(params, "ui", targetid, time))
  28490. {
  28491. return SendSyntaxMessage(playerid, "/arrest [playerid/name] (minutes)");
  28492. }
  28493. else if (!IsPlayerConnected(targetid))
  28494. {
  28495. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  28496. }
  28497. else if (IsPlayerNPC(targetid))
  28498. {
  28499. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  28500. }
  28501. else if (!IsPlayerLoggedIn(targetid))
  28502. {
  28503. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  28504. }
  28505. else if (!IsPlayerInRangeOfPlayer(playerid, targetid))
  28506. {
  28507. return SendErrorMessage(playerid, "The specified target is not near you.");
  28508. }
  28509. else if (Players[targetid][pJailType] > 0)
  28510. {
  28511. return SendErrorMessage(playerid, "The specified target is already in jail.");
  28512. }
  28513. else if (time < 1 || time > 120)
  28514. {
  28515. return SendErrorMessage(playerid, "The specified time must be between 1 and 120 minutes.");
  28516. }
  28517. else if (GetClosestArrestPoint(playerid) == INVALID_ID)
  28518. {
  28519. return SendErrorMessage(playerid, "You are not near any arrest point.");
  28520. }
  28521. else
  28522. {
  28523. format(gExecute, sizeof(gExecute), "SELECT Charges FROM rp_accounts WHERE Username = '%s'", ReturnName(targetid));
  28524. mysql_tquery(gConnection, gExecute, "OnPlayerArrest_GetCharges", "ii", playerid, targetid);//h�r
  28525. }
  28526. return 1;
  28527. }
  28528. forward OnPlayerArrest_GetCharges(playerid, targetid);
  28529. public OnPlayerArrest_GetCharges(playerid, targetid)
  28530. {
  28531. if (cache_get_row_count(gConnection))
  28532. {
  28533. new charges = cache_get_field_content_int(0, "Charges");
  28534. if(charges == 0)
  28535. {
  28536. SendErrorMessage(playerid, "This player doesn't have any charges.");
  28537. }
  28538. else
  28539. {
  28540. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_charges WHERE Suspect = '%s' ORDER BY `ChargeID` DESC LIMIT %i", ReturnName(targetid), charges);
  28541. mysql_tquery(gConnection, gExecute, "OnPlayerArrest_ListCharges", "ii", playerid, targetid);
  28542. }
  28543. }
  28544. return 1;
  28545. }
  28546. forward OnPlayerArrest_ListCharges(playerid, targetid);
  28547. public OnPlayerArrest_ListCharges(playerid, targetid)
  28548. {
  28549. new
  28550. rows = cache_get_row_count(gConnection);
  28551. if (!rows)
  28552. {
  28553. SendErrorMessage(playerid, "This player doesn't have any active charges.");
  28554. ShowMDCPlayerMenuNew(playerid);
  28555. }
  28556. else
  28557. {
  28558. //new reason[128], string[1024];
  28559. new reason[128];
  28560. new time = 0;
  28561. for (new i = 0; i < rows; i ++)
  28562. {
  28563. cache_get_field_content(i, "Reason", reason);
  28564. new chargeid = cache_get_field_content_int(i, "ChargeID");
  28565. new chargecat = cache_get_field_content_int(i, "ChargeCat");
  28566. time += GetArrestTime(chargecat, chargeid);
  28567. }
  28568. SendFactionMessage(Players[playerid][pFaction], COLOR_RADIO, "** %s has arrested %s at the prison for %i minutes. **", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0), time);
  28569. SendInfoMessage(targetid, "You have been imprisoned at the prison for %i minutes.", time);
  28570. Players[targetid][pJailType] = 2;
  28571. Players[targetid][pJailTime] = time * 60;
  28572. //SendInfoMessage(playerid, "You have cleared %s of all charges.", gTargetName[playerid]);
  28573. //new targetid = GetPlayerID(gTargetName[playerid]);
  28574. //ShowMDCPlayerMenu(playerid);
  28575. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET Charges = 0 WHERE Username = '%s'", gTargetName[playerid]);
  28576. mysql_tquery(gConnection, gExecute);
  28577. if (IsPlayerConnected(targetid))
  28578. {
  28579. Players[targetid][pCharges] = 0;
  28580. }
  28581. Players[playerid][pPaycheck] += Random(500,1000);
  28582. ResetPlayer(targetid);
  28583. SpawnPlayerInJail(targetid);
  28584. new notereason[128];
  28585. format(notereason, sizeof(notereason), "Arrested: %i minutes", time );
  28586. format(gExecute, sizeof(gExecute), "INSERT INTO rp_anotes (Player, PlayerName, Reason, Date, IssuerID, Issuer) VALUES(%i, '%s', '%s', NOW(), %i, '%s')", Players[targetid][pID], ReturnName(targetid), mysql_escaped(notereason), Players[playerid][pID], ReturnName(playerid));
  28587. mysql_tquery(gConnection, gExecute);
  28588. format(gExecute, sizeof(gExecute), "INSERT INTO rp_arrestlogs (Officer, Player, Date, Time) VALUES('%s', '%s', NOW(), %i)", ReturnName(playerid), ReturnName(targetid), time);
  28589. mysql_tquery(gConnection, gExecute);
  28590. new log[128];
  28591. format(log, sizeof(log), "%s arrested %s for %i minutes", ReturnName(playerid), gTargetName[playerid], time);
  28592. CreateLog("arrests", log);
  28593. gArrestsHour++;
  28594. }
  28595. return 1;
  28596. }
  28597. forward OnPlayerGetWarrants(playerid);
  28598. public OnPlayerGetWarrants(playerid)
  28599. {
  28600. if (cache_get_row_count(gConnection))
  28601. {
  28602. new
  28603. warrants = cache_get_field_content_int(0, "Warrants");
  28604. if (!warrants)
  28605. {
  28606. SendErrorMessage(playerid, "This player doesn't have any active warrants.");
  28607. ShowMDCPlayerMenuNew(playerid);
  28608. }
  28609. else
  28610. {
  28611. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_warrantlogs WHERE Suspect = '%s' ORDER BY `ID` DESC LIMIT %i", gTargetName[playerid], warrants);
  28612. mysql_tquery(gConnection, gExecute, "OnPlayerViewWarrants", "i", playerid);
  28613. }
  28614. }
  28615. return 1;
  28616. }
  28617. forward OnPlayerGetCharges(playerid);
  28618. public OnPlayerGetCharges(playerid)
  28619. {
  28620. if (cache_get_row_count(gConnection))
  28621. {
  28622. new
  28623. charges = cache_get_field_content_int(0, "Charges");
  28624. if (!charges)
  28625. {
  28626. SendErrorMessage(playerid, "This player doesn't have any active charges.");
  28627. ShowMDCPlayerMenuNew(playerid);
  28628. }
  28629. else
  28630. {
  28631. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_charges WHERE Suspect = '%s' ORDER BY `ChargeID` DESC LIMIT %i", gTargetName[playerid], charges);
  28632. mysql_tquery(gConnection, gExecute, "OnPlayerViewCharges", "i", playerid);
  28633. }
  28634. }
  28635. return 1;
  28636. }
  28637. forward OnPlayerViewCharges(playerid);
  28638. public OnPlayerViewCharges(playerid)
  28639. {
  28640. new
  28641. rows = cache_get_row_count(gConnection);
  28642. if (!rows)
  28643. {
  28644. SendErrorMessage(playerid, "This player doesn't have any active charges.");
  28645. ShowMDCPlayerMenuNew(playerid);
  28646. }
  28647. else
  28648. {
  28649. new reason[128], string[1024];
  28650. format(string, sizeof(string), "%s has the following active charges:\n", gTargetName[playerid]);
  28651. for (new i = 0; i < rows; i ++)
  28652. {
  28653. cache_get_field_content(i, "Reason", reason);
  28654. new chargecat = cache_get_field_content_int(i, "ChargeCat");
  28655. new chargeid = cache_get_field_content_int(i, "ChargeID");
  28656. format(string, sizeof(string), "%s\n%s (%i minutes)", string, reason, GetArrestTime(chargecat, chargeid));
  28657. }
  28658. Dialog_Show(playerid, Charges, DIALOG_STYLE_MSGBOX, "{FFFFFF}List Charges", string, "Back", "");
  28659. }
  28660. }
  28661. forward OnPlayerGetArrestLogs(playerid);
  28662. public OnPlayerGetArrestLogs(playerid)
  28663. {
  28664. new rows = cache_get_row_count(gConnection);
  28665. if (!rows)
  28666. {
  28667. SendErrorMessage(playerid, "This player doesn't have any arrests.");
  28668. ShowMDCPlayerMenuNew(playerid);
  28669. }
  28670. else
  28671. {
  28672. new officer[128], date[32], time, string[2048];
  28673. format(string, sizeof(string), "Officer\tDate\tTime");
  28674. for (new i = 0; i < rows; i ++)
  28675. {
  28676. cache_get_field_content(i, "Officer", officer);
  28677. cache_get_field_content(i, "Date", date);
  28678. time = cache_get_field_content_int(i, "Time");
  28679. format(string, sizeof(string), "%s\n%s\t%s\t%i", string, officer, date, time);
  28680. }
  28681. Dialog_Show(playerid, ArrestRecord, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Arrest Record", string, "Back", "");
  28682. }
  28683. }
  28684. forward OnPlayerViewWarrants(playerid);
  28685. public OnPlayerViewWarrants(playerid)
  28686. {
  28687. new
  28688. rows = cache_get_row_count(gConnection);
  28689. if (!rows)
  28690. {
  28691. SendErrorMessage(playerid, "This player doesn't have any active warrants.");
  28692. ShowMDCPlayerMenuNew(playerid);
  28693. }
  28694. else
  28695. {
  28696. new date[32], reason[128], string[1024];
  28697. format(string, sizeof(string), "%s has the following active warrants:\n", gTargetName[playerid]);
  28698. for (new i = 0; i < rows; i ++)
  28699. {
  28700. cache_get_field_content(i, "Date", date);
  28701. cache_get_field_content(i, "Reason", reason);
  28702. format(string, sizeof(string), "%s\n%s (%s)", string, reason, date);
  28703. }
  28704. Dialog_Show(playerid, Warrants, DIALOG_STYLE_MSGBOX, "{FFFFFF}List Warrants", string, "Back", "");
  28705. }
  28706. }
  28707. forward OnMdcSearchPlayer(playerid, search[]);
  28708. public OnMdcSearchPlayer(playerid, search[])
  28709. {
  28710. if (!cache_get_row_count(gConnection))
  28711. {
  28712. Dialog_Show(playerid, MDC_LookUp, DIALOG_STYLE_INPUT, "{FFFFFF}Search Player", "That player was not found.\n\nPlease input the full name of the player:", "Submit", "Cancel");
  28713. }
  28714. else
  28715. {
  28716. strcpy(gTargetName[playerid], search, MAX_PLAYER_NAME);
  28717. Players[playerid][pSelected] = cache_get_field_content_int(0, "ID");
  28718. ShowMDCLookupPlayer(playerid);
  28719. }
  28720. }
  28721. /*{
  28722. if (!cache_get_row_count(gConnection))
  28723. {
  28724. Dialog_Show(playerid, MDC_SearchName, DIALOG_STYLE_INPUT, "{FFFFFF}Mobile Data Computer - Name Search", "Error: Name wasn't found.\n\nPlease enter the full name of the person:", "Submit", "Cancel");
  28725. }
  28726. else
  28727. {
  28728. strcpy(gTargetName[playerid], search, MAX_PLAYER_NAME);
  28729. Players[playerid][pSelected] = cache_get_field_content_int(0, "ID");
  28730. format(gExecute, sizeof(gExecute), "SELECT ID, Age, Origin, Warrants, CarLicense, GunLicense, Phone, TotalWarrants FROM rp_accounts WHERE Username = '%s'", gTargetName[playerid]);
  28731. mysql_tquery(gConnection, gExecute, "OnMDCViewInformation", "i", playerid);
  28732. }
  28733. }*/
  28734. forward OnPlayerSearchPlayer(playerid, search[]);
  28735. public OnPlayerSearchPlayer(playerid, search[])
  28736. {
  28737. if (!cache_get_row_count(gConnection))
  28738. {
  28739. Dialog_Show(playerid, SearchPlayer, DIALOG_STYLE_INPUT, "{FFFFFF}Search Player", "That player was not found.\n\nPlease input the full name of the player:", "Submit", "Cancel");
  28740. }
  28741. else
  28742. {
  28743. strcpy(gTargetName[playerid], search, MAX_PLAYER_NAME);
  28744. Players[playerid][pSelected] = cache_get_field_content_int(0, "ID");
  28745. ShowMDCPlayerMenu(playerid);
  28746. }
  28747. }
  28748. forward OnPlayerCheckActivity(playerid, name[]);
  28749. public OnPlayerCheckActivity(playerid, name[])
  28750. {
  28751. if (!cache_get_row_count(gConnection))
  28752. {
  28753. SendErrorMessage(playerid, "You have specified an invalid user.");
  28754. }
  28755. else
  28756. {
  28757. new date[32];
  28758. cache_get_field_content(0, "LoginDate", date);
  28759. SendInfoMessage(playerid, "%s was last active on %s.", name, date);
  28760. }
  28761. }
  28762. forward OnFactionSkinAdded(playerid, faction);
  28763. public OnFactionSkinAdded(playerid, faction)
  28764. {
  28765. ShowUniformEditMenu(playerid, faction);
  28766. }
  28767. forward OnPlayerUnbanPlayer(playerid);
  28768. public OnPlayerUnbanPlayer(playerid)
  28769. {
  28770. if (!cache_get_row_count(gConnection))
  28771. {
  28772. SendErrorMessage(playerid, "There was an error unbanning the player.");
  28773. }
  28774. else
  28775. {
  28776. new player[MAX_PLAYER_NAME], ip[16];
  28777. cache_get_field_content(0, "Player", player);
  28778. cache_get_field_content(0, "IP", ip);
  28779. format(gExecute, sizeof(gExecute), "DELETE FROM rp_blacklist WHERE ID = %i", Players[playerid][pSelected]);
  28780. mysql_tquery(gConnection, gExecute);
  28781. if (mysql_isnull(player))
  28782. {
  28783. SendAdminMessage(COLOR_RED, "Admin: %s has unbanned IP: %s.", ReturnNameEx(playerid, 0), ip);
  28784. }
  28785. else
  28786. {
  28787. SendAdminMessage(COLOR_RED, "Admin: %s has unbanned %s.", ReturnNameEx(playerid, 0), player);
  28788. }
  28789. }
  28790. return 1;
  28791. }
  28792. forward OnPlayerCallContact(playerid);
  28793. public OnPlayerCallContact(playerid)
  28794. {
  28795. new
  28796. contact[MAX_PLAYER_NAME];
  28797. if (!cache_get_row_count(gConnection))
  28798. {
  28799. return 0;
  28800. }
  28801. else
  28802. {
  28803. new
  28804. number = cache_get_field_content_int(0, "Number");
  28805. cache_get_field_content(0, "Contact", contact, gConnection);
  28806. CallNumber(playerid, number);
  28807. }
  28808. return 1;
  28809. }//Dialog_Show(playerid, PhoneSMStext, DIALOG_STYLE_INPUT, strHead, "Please type your message:", "Send", "Cancel");
  28810. forward OnPlayerTextContact(playerid);
  28811. public OnPlayerTextContact(playerid)
  28812. {
  28813. new
  28814. contact[MAX_PLAYER_NAME];
  28815. if (!cache_get_row_count(gConnection))
  28816. {
  28817. return 0;
  28818. }
  28819. else
  28820. {
  28821. new
  28822. number = cache_get_field_content_int(0, "Number");
  28823. cache_get_field_content(0, "Contact", contact, gConnection);
  28824. Players[playerid][pPhoneSMS] = number;
  28825. new strHead[64];
  28826. format(strHead, sizeof(strHead), "{FFFFFF}SMS to %i", number);
  28827. Dialog_Show(playerid, PhoneSMStext, DIALOG_STYLE_INPUT, strHead, "Please type your message:", "Send", "Cancel");
  28828. }
  28829. return 1;
  28830. }
  28831. forward OnPlayerListContacts(playerid);
  28832. public OnPlayerListContacts(playerid)
  28833. {
  28834. new
  28835. rows = cache_get_row_count(gConnection),
  28836. contact[MAX_PLAYER_NAME],
  28837. string[1024];
  28838. strcat(string, "Add Contact");
  28839. for (new i = 0; i < rows; i ++)
  28840. {
  28841. cache_get_field_content(i, "Contact", contact, gConnection);
  28842. format(string, sizeof(string), "%s\n%s (%i)", string, contact, cache_get_field_content_int(i, "Number"));
  28843. gListedItems[playerid][i] = cache_get_field_content_int(i, "ID");
  28844. }
  28845. Dialog_Show(playerid, Contacts, DIALOG_STYLE_LIST, "{FFFFFF}My contacts", string, "Select", "Cancel");
  28846. }
  28847. forward OnPlayerCollectTransfer(playerid, id, transferid);
  28848. public OnPlayerCollectTransfer(playerid, id, transferid)
  28849. {
  28850. new
  28851. sender[MAX_PLAYER_NAME];
  28852. if (!cache_get_row_count(gConnection))
  28853. {
  28854. return 0;
  28855. }
  28856. else
  28857. {
  28858. new
  28859. amount = cache_get_field_content_int(0, "Amount");
  28860. cache_get_field_content(0, "Sender", sender, gConnection);
  28861. BankAccounts[playerid][id][bankBalance] += amount;
  28862. SendInfoMessage(playerid, "You have collected a transfer of {33CC33}%s{FFFFFF} from %s.", FormatNumber(amount), sender);
  28863. format(gExecute, sizeof(gExecute), "DELETE FROM rp_transfers WHERE ID = %i", transferid);
  28864. mysql_tquery(gConnection, gExecute);
  28865. SaveBankAccount(playerid, id);
  28866. ShowBankAccountMenu(playerid, id);
  28867. }
  28868. return 1;
  28869. }
  28870. forward OnPlayerViewTransfers(playerid);
  28871. public OnPlayerViewTransfers(playerid)
  28872. {
  28873. new
  28874. rows = cache_get_row_count(gConnection),
  28875. displayString[1024];
  28876. if (!rows)
  28877. {
  28878. ShowBankAccountMenu(playerid, Players[playerid][pBank]);
  28879. SendErrorMessage(playerid, "You don't have any pending bank transfers to collect.");
  28880. }
  28881. else
  28882. {
  28883. new
  28884. sender[MAX_PLAYER_NAME],
  28885. amount = 0;
  28886. for (new i = 0; i < rows; i ++)
  28887. {
  28888. cache_get_field_content(i, "Sender", sender, gConnection);
  28889. amount = cache_get_field_content_int(i, "Amount");
  28890. format(displayString, sizeof(displayString), "%s\n%s (sender: %s)", displayString, FormatNumber(amount), sender);
  28891. gListedItems[playerid][i] = cache_get_field_content_int(i, "ID");
  28892. }
  28893. Dialog_Show(playerid, CollectTransfer, DIALOG_STYLE_LIST, "{FFFFFF}Collect transfer", displayString, "Collect", "Back");
  28894. }
  28895. }
  28896. forward OnTransferCheck(playerid, name[]);
  28897. public OnTransferCheck(playerid, name[])
  28898. {
  28899. new
  28900. id = Players[playerid][pBank];
  28901. if (!cache_get_row_count(gConnection))
  28902. {
  28903. return Dialog_Show(playerid, BankTransfer, DIALOG_STYLE_INPUT, "{FFFFFF}Transfer money", "The specified player doesn't exist.\n\nPlease input the full name of the player to transfer money to:", "Submit", "Back");
  28904. }
  28905. else
  28906. {
  28907. strcpy(gTargetName[playerid], name, MAX_PLAYER_NAME);
  28908. Players[playerid][pTransfer] = cache_get_field_content_int(0, "ID");
  28909. Dialog_Show(playerid, TransferAmount, DIALOG_STYLE_INPUT, "{FFFFFF}Transfer money", "'%s' contains a balance of %s.\n\nPlease input the amount of money to transfer to '%s'.", "Submit", "Back", BankAccounts[playerid][id][bankName], FormatNumber(BankAccounts[playerid][id][bankBalance]), gTargetName[playerid]);
  28910. }
  28911. return 1;
  28912. }
  28913. forward OnFactionAdded(id);
  28914. public OnFactionAdded(id)
  28915. {
  28916. Factions[id][fcID] = cache_insert_id(gConnection);
  28917. SaveFaction(id);
  28918. }
  28919. forward OnShellCasingAdded(id);
  28920. public OnShellCasingAdded(id)
  28921. {
  28922. ShellCasings[id][scID] = cache_insert_id(gConnection);
  28923. }
  28924. forward OnBloodAdded(id);
  28925. public OnBloodAdded(id)
  28926. {
  28927. Bloods[id][blID] = cache_insert_id(gConnection);
  28928. }
  28929. forward OnWeedPlantAdded(id);
  28930. public OnWeedPlantAdded(id)
  28931. {
  28932. WeedPlants[id][wpID] = cache_insert_id(gConnection);
  28933. }
  28934. forward OnDealershipCarAdded(id);
  28935. public OnDealershipCarAdded(id)
  28936. {
  28937. DealershipCars[id][dcID] = cache_insert_id(gConnection);
  28938. SaveDealershipCar(id);
  28939. }
  28940. forward OnTrashbinAdded(id);
  28941. public OnTrashbinAdded(id)
  28942. {
  28943. Trashbins[id][tID] = cache_insert_id(gConnection);
  28944. SaveTrashbin(id);
  28945. }
  28946. forward OnPayphoneAdded(id);
  28947. public OnPayphoneAdded(id)
  28948. {
  28949. Payphones[id][phID] = cache_insert_id(gConnection);
  28950. SavePayphone(id);
  28951. }
  28952. forward OnATMAdded(id);
  28953. public OnATMAdded(id)
  28954. {
  28955. ATM[id][atmID] = cache_insert_id(gConnection);
  28956. SaveATM(id);
  28957. }
  28958. forward OnGasPumpAdded(id);
  28959. public OnGasPumpAdded(id)
  28960. {
  28961. GasPumps[id][gpID] = cache_insert_id(gConnection);
  28962. SaveGasPump(id);
  28963. }
  28964. forward OnAccessoryAdded(playerid, id);
  28965. public OnAccessoryAdded(playerid, id)
  28966. {
  28967. Accessories[playerid][id][aID] = cache_insert_id(gConnection);
  28968. SaveAccessory(playerid, id);
  28969. }
  28970. forward OnBankAccountAdded(playerid, id);
  28971. public OnBankAccountAdded(playerid, id)
  28972. {
  28973. BankAccounts[playerid][id][bankID] = cache_insert_id(gConnection);
  28974. SaveBankAccount(playerid, id);
  28975. }
  28976. forward OnFurnitureAdded(furniture);
  28977. public OnFurnitureAdded(furniture)
  28978. {
  28979. Furniture[furniture][fID] = cache_insert_id(gConnection);
  28980. SaveFurniture(furniture);
  28981. }
  28982. forward OnVehicleAdded(vehicle);
  28983. public OnVehicleAdded(vehicle)
  28984. {
  28985. Vehicles[vehicle][vID] = cache_insert_id(gConnection);
  28986. SaveVehicle(vehicle);
  28987. }
  28988. forward OnDropItemAdded(item);
  28989. public OnDropItemAdded(item)
  28990. {
  28991. DropItems[item][dID] = cache_insert_id(gConnection);
  28992. }
  28993. forward OnStoredItemAdded(item);
  28994. public OnStoredItemAdded(item)
  28995. {
  28996. StoredItems[item][stID] = cache_insert_id(gConnection);
  28997. }
  28998. forward OnRestaurantItemAdded(company, id);
  28999. public OnRestaurantItemAdded(company, id)
  29000. {
  29001. RestaurantItems[company][id][rtID] = cache_insert_id(gConnection);
  29002. SaveRestaurantItem(company, id);
  29003. }
  29004. forward OnCompanyAdded(company);
  29005. public OnCompanyAdded(company)
  29006. {
  29007. Companies[company][cID] = cache_insert_id(gConnection);
  29008. Companies[company][cWorld] = Companies[company][cID] + 25000;
  29009. UpdateCompany(company);
  29010. SaveCompany(company);
  29011. for (new i = 0, index = 0; i < sizeof(g_CompanyItems); i ++)
  29012. {
  29013. if (Companies[company][cType] == g_CompanyItems[i][e_CompanyType])
  29014. {
  29015. Products[company][index][prPrice] = g_CompanyItems[i][e_DefaultPrice];
  29016. if (g_CompanyItems[i][e_IsStockable])
  29017. Products[company][index][prStock] = 200;
  29018. else
  29019. Products[company][index][prStock] = -1;
  29020. SaveProduct(company, index++);
  29021. }
  29022. }
  29023. }
  29024. forward OnHouseAdded(house);
  29025. public OnHouseAdded(house)
  29026. {
  29027. Houses[house][hID] = cache_insert_id(gConnection);
  29028. Houses[house][hWorld] = Houses[house][hID] + 10000;
  29029. UpdateHouse(house);
  29030. SaveHouse(house);
  29031. }
  29032. forward OnBuildingAdded(building);
  29033. public OnBuildingAdded(building)
  29034. {
  29035. Buildings[building][bID] = cache_insert_id(gConnection);
  29036. Buildings[building][bWorld] = Buildings[building][bID] + 50000;
  29037. UpdateBuilding(building);
  29038. SaveBuilding(building);
  29039. }
  29040. forward OnChangeName(playerid, targetid, name[]);
  29041. public OnChangeName(playerid, targetid, name[])
  29042. {
  29043. new
  29044. rows = cache_get_row_count(gConnection);
  29045. if (rows)
  29046. {
  29047. SendErrorMessage(playerid, "Sorry, that name is already in use!");
  29048. }
  29049. else
  29050. {
  29051. SendInfoMessage(playerid, "You have changed %s's name to %s.", ReturnNameEx(targetid, 0), name);
  29052. SendInfoMessage(targetid, "%s has changed your name to %s.", ReturnNameEx(playerid, 0), name);
  29053. new log[128];
  29054. format(log, sizeof(log), "%s has changed %s's name to %s", ReturnName(playerid), ReturnName(targetid), name);
  29055. CreateLog("admin", log);
  29056. ChangeName(targetid, name);
  29057. }
  29058. return 1;
  29059. }
  29060. forward OnSelectBan(playerid);
  29061. public OnSelectBan(playerid)
  29062. {
  29063. new
  29064. rows = cache_get_row_count(gConnection);
  29065. if (rows)
  29066. {
  29067. new
  29068. banPlayer[MAX_PLAYER_NAME];
  29069. cache_get_field_content(0, "Player", banPlayer, gConnection);
  29070. if (mysql_isnull(banPlayer))
  29071. {
  29072. Dialog_Show(playerid, UnbanPlayer, DIALOG_STYLE_MSGBOX, "{FFFFFF}Unban player", "{6688FF}IP:{FFFFFF}\n%s\n\n{6688FF}Banned By:{FFFFFF}\n%s\n\n{6688FF}Date:{FFFFFF}\n%s\n\n{6688FF}Reason:{FFFFFF}\n%s\n\nClick 'Unban' to unban this IP.", "Unban", "Back", cache_fetch_string(0, "IP"), cache_fetch_string(0, "BannedBy"), cache_fetch_string(0, "Date"), cache_fetch_string(0, "Reason"));
  29073. }
  29074. else
  29075. {
  29076. Dialog_Show(playerid, UnbanPlayer, DIALOG_STYLE_MSGBOX, "{FFFFFF}Unban player", "{6688FF}Player:{FFFFFF}\n%s\n\n{6688FF}IP:{FFFFFF}\n%s\n\n{6688FF}Banned By:{FFFFFF}\n%s\n\n{6688FF}Date:{FFFFFF}\n%s\n\n{6688FF}Reason:{FFFFFF}\n%s\n\nClick 'Unban' to unban this player.", "Unban", "Back", banPlayer, cache_fetch_string(0, "IP"), cache_fetch_string(0, "BannedBy"), cache_fetch_string(0, "Date"), cache_fetch_string(0, "Reason"));
  29077. }
  29078. }
  29079. else
  29080. {
  29081. SendErrorMessage(playerid, "The selected player is no longer in the ban list.");
  29082. }
  29083. }
  29084. forward OnViewBanList(playerid);
  29085. public OnViewBanList(playerid)
  29086. {
  29087. new
  29088. rows = cache_get_row_count(gConnection),
  29089. player[MAX_PLAYER_NAME],
  29090. buffer[MAX_LISTED_BANS * 64];
  29091. for (new i = 0; i < rows; i ++)
  29092. {
  29093. gListedItems[playerid][i] = cache_get_field_content_int(i, "ID");
  29094. cache_get_field_content(i, "Player", player, gConnection);
  29095. if (mysql_isnull(player))
  29096. {
  29097. format(buffer, sizeof(buffer), "%s\n* %s (%s)", buffer, cache_fetch_string(i, "IP"), cache_fetch_string(i, "Reason"));
  29098. }
  29099. else
  29100. {
  29101. format(buffer, sizeof(buffer), "%s\n* %s (%s)", buffer, player, cache_fetch_string(i, "Reason"));
  29102. }
  29103. }
  29104. if (Players[playerid][pBanPage] > 1)
  29105. {
  29106. strcat(buffer, "\n<< Go Back");
  29107. }
  29108. if (rows == MAX_LISTED_BANS)
  29109. {
  29110. strcat(buffer, "\n>> Next Page");
  29111. }
  29112. if (!strlen(buffer))
  29113. {
  29114. SendErrorMessage(playerid, "There are no banned players to display.");
  29115. }
  29116. else
  29117. {
  29118. Dialog_Show(playerid, BanList, DIALOG_STYLE_LIST, "{FFFFFF}Select player to unban", buffer, "Select", "Cancel");
  29119. }
  29120. return 1;
  29121. }
  29122. forward StartEngine(playerid, vehicleid);
  29123. public StartEngine(playerid, vehicleid)
  29124. {
  29125. if (Players[playerid][pStartEngine] && IsPlayerInVehicle(playerid, vehicleid) && Players[playerid][pAutoShop] == INVALID_ID)
  29126. {
  29127. if (Players[playerid][pRefuel] != INVALID_ID)
  29128. {
  29129. StopRefuel(playerid);
  29130. }
  29131. SetEngineStatus(vehicleid, 1);
  29132. //SendInfoMessage(playerid, "The engine has started successfully.");
  29133. ShowActionBubble(playerid, "* %s starts the engine of the vehicle.", ReturnNameEx(playerid));
  29134. SendDistanceMessage(playerid, 20.0, COLOR_PURPLE, "** The vehicle's engine starts. (( %s ))", ReturnNameEx(playerid));
  29135. }
  29136. Players[playerid][pStartEngine] = 0;
  29137. }
  29138. forward FuelCycle();
  29139. public FuelCycle()
  29140. {
  29141. for (new i = 1; i < MAX_VEHICLES; i ++)
  29142. {
  29143. if (IsValidVehicle(i) && IsPoweredVehicle(i) && GetEngineStatus(i) > 0)
  29144. {
  29145. if (VehicleInformation[i][vFuel] > 0)
  29146. {
  29147. VehicleInformation[i][vFuel]--;
  29148. if (!VehicleInformation[i][vFuel])
  29149. {
  29150. SetEngineStatus(i, 0);
  29151. }
  29152. UpdateFuelGauge(i);
  29153. }
  29154. }
  29155. }
  29156. }
  29157. forward DistanceCycle();
  29158. public DistanceCycle()
  29159. {
  29160. new
  29161. Float:distance;
  29162. foreach (new playerid : Player)
  29163. {
  29164. if (Players[playerid][pLoggedIn] && Players[playerid][pSetupInfo])
  29165. {
  29166. distance = GetPlayerDistanceFromPoint(playerid, Players[playerid][pDistance][0], Players[playerid][pDistance][1], Players[playerid][pDistance][2]);
  29167. if (distance <= 150.0)
  29168. {
  29169. Players[playerid][pTraveled] += distance * 0.001;
  29170. }
  29171. GetPlayerPos(playerid, Players[playerid][pDistance][0], Players[playerid][pDistance][1], Players[playerid][pDistance][2]);
  29172. }
  29173. }
  29174. return 1;
  29175. }
  29176. forward SecondSync();
  29177. public SecondSync()
  29178. {
  29179. new Float:health, Float:armour, string[128];
  29180. if (Iter_Count(Player) > Server[PlayerRecord])
  29181. {
  29182. SetPlayerRecord(Iter_Count(Player));
  29183. }
  29184. for (new i = 0; i < MAX_BLOOD; i ++)
  29185. {
  29186. if (Bloods[i][blExists])
  29187. {
  29188. if(gettime() - Bloods[i][blTime] > 5000)
  29189. {
  29190. DestroyDynamicObject(Bloods[i][blObject]);
  29191. Bloods[i][blExists] = 0;
  29192. Bloods[i][blObject] = INVALID_OBJECT_ID;
  29193. }
  29194. }
  29195. }
  29196. for (new i = 0; i < MAX_WEEDPLANTS; i ++)
  29197. {
  29198. if (WeedPlants[i][wpExists])
  29199. {
  29200. WeedPlants[i][wpTime] ++;
  29201. }
  29202. }
  29203. foreach (new playerid : Player)
  29204. {
  29205. if (IsPlayerNPC(playerid)) continue;
  29206. if (!IsPlayerLoggedIn(playerid))
  29207. {
  29208. //UpdateLoginTextDraws(playerid);
  29209. }
  29210. else
  29211. {
  29212. new vehicleid = GetPlayerVehicleID(playerid);
  29213. if ((gettime() - Players[playerid][pLastUpdate]) > 4 && !IsPlayerPaused(playerid))
  29214. {
  29215. Players[playerid][pPaused] = 1;
  29216. Players[playerid][pPausedText] = CreateDynamic3DTextLabel("Paused\n{FFFFFF}1 second", COLOR_BLUE, 0.0, 0.0, 0.4, 20.0, playerid);
  29217. }
  29218. if (IsPlayerPaused(playerid))
  29219. {
  29220. format(string, sizeof(string), "Paused\n{FFFFFF}%i seconds", (gettime() - Players[playerid][pLastUpdate]));
  29221. UpdateDynamic3DTextLabelText(Players[playerid][pPausedText], COLOR_BLUE, string);
  29222. }
  29223. if (Players[playerid][pDonator] > 0 && gettime() >= Players[playerid][pExpiryDate])
  29224. {
  29225. Players[playerid][pDonator] = 0;
  29226. SendInfoMessage(playerid, "Your donator subscription has expired.");
  29227. }
  29228. if (Players[playerid][pPayphone] != INVALID_ID && GetClosestPayphone(playerid) != Players[playerid][pPayphone])
  29229. {
  29230. HangupCall(playerid);
  29231. }
  29232. if (Players[playerid][pInsideTaxi] != INVALID_PLAYER_ID)
  29233. {
  29234. if(Players[Players[playerid][pInsideTaxi]][pTaxiDuty])
  29235. {
  29236. Players[playerid][pTaxiTime]++;
  29237. if (Players[playerid][pTaxiTime] > 9)
  29238. {
  29239. Players[playerid][pTaxiTime] = 0;
  29240. Players[playerid][pTaxiMeter]++;
  29241. }
  29242. format(string, sizeof(string), "~g~~h~Taxi Meter:~w~ %s / %i seconds", FormatNumber(Players[playerid][pTaxiMeter]*Players[Players[playerid][pInsideTaxi]][pTaxiFare]), Players[playerid][pTaxiTime]);
  29243. ShowFooterText(playerid, string, 1500);
  29244. ShowFooterText(Players[playerid][pInsideTaxi], string, 1500);
  29245. }
  29246. }
  29247. if (Players[playerid][pTazed] > 0)
  29248. {
  29249. Players[playerid][pTazed]--;
  29250. if (!Players[playerid][pTazed])
  29251. {
  29252. TogglePlayerControllable(playerid, true);
  29253. ClearAnimations(playerid, 1);
  29254. }
  29255. }
  29256. if (Players[playerid][pCommandSpam] > 0)
  29257. {
  29258. Players[playerid][pCommandSpam]--;
  29259. }
  29260. if(Players[playerid][pRepairTime] > 0)
  29261. {
  29262. Players[playerid][pRepairTime]--;
  29263. if(Players[playerid][pRepairTime] <= 0)
  29264. {
  29265. if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  29266. {
  29267. vehicleid = GetPlayerVehicleID(playerid);
  29268. new vehicle = GetVehicleID(vehicleid);
  29269. if(vehicle >= 0)
  29270. {
  29271. ChangeVehicleColor(vehicleid, Vehicles[vehicleid][vColor1], Vehicles[vehicleid][vColor2]);
  29272. }
  29273. foreach(new i : Player)
  29274. {
  29275. if(IsPlayerInVehicle(i, vehicleid))
  29276. {
  29277. SetCameraBehindPlayer(i);
  29278. }
  29279. }
  29280. SetVehiclePos(vehicleid, g_RepairShops[Players[playerid][pRepairShop]][7], g_RepairShops[Players[playerid][pRepairShop]][8], g_RepairShops[Players[playerid][pRepairShop]][9]);
  29281. SetVehicleZAngle(vehicleid, g_RepairShops[Players[playerid][pRepairShop]][10]);
  29282. SetCameraBehindPlayer(playerid);
  29283. RepairVehicle(vehicleid);
  29284. GameTextForPlayer(playerid, "~g~Vehicle Repaired", 5000, 1);
  29285. TogglePlayerControllable(playerid, 1);
  29286. }
  29287. Players[playerid][pRepairShop] = -1;
  29288. }
  29289. }
  29290. Players[playerid][pWarnTimer]++;
  29291. if (Players[playerid][pWarnTimer] > 5)
  29292. {
  29293. Players[playerid][pWarnWeapon] = 0;
  29294. Players[playerid][pWarnHealth] = 0;
  29295. Players[playerid][pWarnArmor] = 0;
  29296. Players[playerid][pWarnAirbreak] = 0;
  29297. Players[playerid][pWarnSpeedhack] = 0;
  29298. Players[playerid][pWarnMoneyHack] = 0;
  29299. Players[playerid][pWarnAmmoHack] = 0;
  29300. Players[playerid][pWarnFlyHack] = 0;
  29301. Players[playerid][pWarnDialogHack] = 0;
  29302. Players[playerid][pWarnGodMode] = 0;
  29303. Players[playerid][pWarnRapidFire] = 0;
  29304. Players[playerid][pWarnTeleport] = 0;
  29305. }
  29306. /*
  29307. pWarnTimer,
  29308. pWarnWeapon,
  29309. pWarnHealth,
  29310. pWarnArmor,
  29311. pWarnAirbreak,
  29312. pWarnSpeedhack,
  29313. pWarnMoneyHack,
  29314. pWarnAmmoHack,
  29315. pWarnFlyHack,
  29316. pWarnDialogHack,
  29317. pWarnGodMode,
  29318. pWarnRapidFire,
  29319. pWarnTeleport
  29320. */
  29321. if (Players[playerid][pCommandMuted] > 0)
  29322. {
  29323. Players[playerid][pCommandMuted]--;
  29324. }
  29325. if (Players[playerid][pAutoShop] != INVALID_ID && Players[playerid][pAutoTime] > 0)
  29326. {
  29327. if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
  29328. {
  29329. Players[playerid][pAutoShop] = INVALID_ID;
  29330. Players[playerid][pAutoTime] = 0;
  29331. }
  29332. else
  29333. {
  29334. Players[playerid][pAutoTime]--;
  29335. if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER && !IsPlayerInRangeOfPoint(playerid, 20.0, 1903.4791, 1353.9811, 24.5537))
  29336. {
  29337. Players[playerid][pAutoShop] = INVALID_ID;
  29338. Players[playerid][pAutoTime] = 0;
  29339. SetPlayerPos(playerid, Players[playerid][pAutoX], Players[playerid][pAutoY], Players[playerid][pAutoZ]);
  29340. SetPlayerFacingAngle(playerid, Players[playerid][pAutoA]);
  29341. SetPlayerVirtualWorld(playerid, 0);
  29342. TogglePlayerControllable(playerid, true);
  29343. SendInfoMessage(playerid, "You have been removed from the auto shop.");
  29344. }
  29345. else if (!Players[playerid][pAutoTime])
  29346. {
  29347. SendInfoMessage(playerid, "Your vehicle has been fully repaired for {33CC33}%s{FFFFFF}.", FormatNumber(GetRepairCost(vehicleid)));
  29348. PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
  29349. RemoveMoney(playerid, GetRepairCost(vehicleid));
  29350. RepairVehicle(vehicleid);
  29351. SetVehiclePos(vehicleid, Players[playerid][pAutoX], Players[playerid][pAutoY], Players[playerid][pAutoZ]);
  29352. SetVehicleZAngle(vehicleid, Players[playerid][pAutoA]);
  29353. SetVehicleVirtualWorld(vehicleid, 0);
  29354. foreach (new i : Player)
  29355. {
  29356. if (IsPlayerInVehicle(i, vehicleid))
  29357. {
  29358. SetPlayerVirtualWorld(i, 0);
  29359. TogglePlayerControllable(i, true);
  29360. SetCameraBehindPlayer(i);
  29361. }
  29362. }
  29363. if (VehicleInformation[vehicleid][vFuel] > 0)
  29364. {
  29365. SetEngineStatus(vehicleid, true);
  29366. }
  29367. Players[playerid][pAutoShop] = INVALID_ID;
  29368. Players[playerid][pAutoTime] = 0;
  29369. }
  29370. else
  29371. {
  29372. format(string, sizeof(string), "~g~~h~Repairing... %i seconds remaining.", Players[playerid][pAutoTime]);
  29373. ShowFooterText(playerid, string, 1500);
  29374. }
  29375. }
  29376. }
  29377. if (Players[playerid][pSprayTag] != INVALID_ID && GetClosestSprayTag(playerid) != Players[playerid][pSprayTag])
  29378. {
  29379. Players[playerid][pSprayTag] = INVALID_ID;
  29380. }
  29381. if (Players[playerid][pDrivingTest] && IsPlayerInAnyVehicle(playerid))
  29382. {
  29383. Players[playerid][pTestTime]++;
  29384. }
  29385. if (Players[playerid][pStoned])
  29386. {
  29387. Players[playerid][pStonedTime]--;
  29388. if (!Players[playerid][pStonedTime])
  29389. {
  29390. Players[playerid][pStoned] = STONED_TYPE_NONE;
  29391. SyncTimeForPlayer(playerid);
  29392. SetPlayerWeather(playerid, gWeatherID);
  29393. SetPlayerDrunkLevel(playerid, 2500);
  29394. SendInfoMessage(playerid, "The effects from the drugs have faded away.");
  29395. Players[playerid][pSeconds] = 0;
  29396. }
  29397. else
  29398. {
  29399. Players[playerid][pSeconds]++;
  29400. GetPlayerHealth(playerid, health);
  29401. GetPlayerArmour(playerid, armour);
  29402. switch (Players[playerid][pStoned])
  29403. {
  29404. case STONED_TYPE_STEROIDS:
  29405. {
  29406. if (health >= 100.0)
  29407. {
  29408. Players[playerid][pStoned] = STONED_TYPE_NONE;
  29409. Players[playerid][pStonedTime] = 0;
  29410. Players[playerid][pSeconds] = 0;
  29411. SendInfoMessage(playerid, "The effects from the drugs have faded away.");
  29412. }
  29413. else if (Players[playerid][pSeconds] == 20)
  29414. {
  29415. SetPlayerHealth(playerid, (health + 10.0 > 100.0) ? (100.0) : (health + 10.0));
  29416. Players[playerid][pSeconds] = 0;
  29417. }
  29418. }
  29419. case STONED_TYPE_HEROIN:
  29420. {
  29421. if (health >= 100.0)
  29422. {
  29423. Players[playerid][pStoned] = STONED_TYPE_NONE;
  29424. Players[playerid][pStonedTime] = 0;
  29425. Players[playerid][pSeconds] = 0;
  29426. SendInfoMessage(playerid, "The effects from the drugs have faded away.");
  29427. }
  29428. else if (Players[playerid][pSeconds] == 12)
  29429. {
  29430. SetPlayerHealth(playerid, (health + 5.0 > 100.0) ? (100.0) : (health + 5.0));
  29431. Players[playerid][pSeconds] = 0;
  29432. }
  29433. }
  29434. case STONED_TYPE_LSD:
  29435. {
  29436. if (health >= 100.0)
  29437. {
  29438. Players[playerid][pStoned] = STONED_TYPE_NONE;
  29439. Players[playerid][pStonedTime] = 0;
  29440. Players[playerid][pSeconds] = 0;
  29441. SendInfoMessage(playerid, "The effects from the drugs have faded away.");
  29442. }
  29443. else if (Players[playerid][pSeconds] == 4)
  29444. {
  29445. SetPlayerHealth(playerid, (health + 2.0 > 100.0) ? (100.0) : (health + 2.0));
  29446. Players[playerid][pSeconds] = 0;
  29447. }
  29448. }
  29449. case STONED_TYPE_ECSTASY:
  29450. {
  29451. if (health >= 100.0)
  29452. {
  29453. Players[playerid][pStoned] = STONED_TYPE_NONE;
  29454. Players[playerid][pStonedTime] = 0;
  29455. Players[playerid][pSeconds] = 0;
  29456. SendInfoMessage(playerid, "The effects from the drugs have faded away.");
  29457. }
  29458. else if (Players[playerid][pSeconds] == 8)
  29459. {
  29460. SetPlayerHealth(playerid, (health + 5.0 > 100.0) ? (100.0) : (health + 5.0));
  29461. Players[playerid][pSeconds] = 0;
  29462. }
  29463. }
  29464. case STONED_TYPE_MARIJUANA:
  29465. {
  29466. if (health >= 100.0)
  29467. {
  29468. Players[playerid][pStoned] = STONED_TYPE_NONE;
  29469. Players[playerid][pStonedTime] = 0;
  29470. Players[playerid][pSeconds] = 0;
  29471. SendInfoMessage(playerid, "The effects from the drugs have faded away.");
  29472. }
  29473. else if (Players[playerid][pSeconds] == 15)
  29474. {
  29475. SetPlayerHealth(playerid, (health + 3.0 > 100.0) ? (100.0) : (health + 3.0));
  29476. Players[playerid][pSeconds] = 0;
  29477. }
  29478. }
  29479. case STONED_TYPE_CRACK:
  29480. {
  29481. if (health >= 100.0)
  29482. {
  29483. Players[playerid][pStoned] = STONED_TYPE_NONE;
  29484. Players[playerid][pStonedTime] = 0;
  29485. Players[playerid][pSeconds] = 0;
  29486. SendInfoMessage(playerid, "The effects from the drugs have faded away.");
  29487. }
  29488. else if (Players[playerid][pSeconds] == 5)
  29489. {
  29490. SetPlayerHealth(playerid, (health + 15.0 > 100.0) ? (100.0) : (health + 15.0));
  29491. Players[playerid][pSeconds] = 0;
  29492. }
  29493. }
  29494. case STONED_TYPE_COCAINE:
  29495. {
  29496. if (health >= 100.0)
  29497. {
  29498. Players[playerid][pStoned] = STONED_TYPE_NONE;
  29499. Players[playerid][pStonedTime] = 0;
  29500. Players[playerid][pSeconds] = 0;
  29501. SendInfoMessage(playerid, "The effects from the drugs have faded away.");
  29502. }
  29503. else if (Players[playerid][pSeconds] == 10)
  29504. {
  29505. SetPlayerHealth(playerid, (health + 7.0 > 100.0) ? (100.0) : (health + 7.0));
  29506. Players[playerid][pSeconds] = 0;
  29507. }
  29508. }
  29509. case STONED_TYPE_METH:
  29510. {
  29511. if (health >= 100.0)
  29512. {
  29513. Players[playerid][pStoned] = STONED_TYPE_NONE;
  29514. Players[playerid][pStonedTime] = 0;
  29515. Players[playerid][pSeconds] = 0;
  29516. SendInfoMessage(playerid, "The effects from the drugs have faded away.");
  29517. }
  29518. else if (Players[playerid][pSeconds] == 13)
  29519. {
  29520. SetPlayerHealth(playerid, (health + 10.0 > 100.0) ? (100.0) : (health + 10.0));
  29521. Players[playerid][pSeconds] = 0;
  29522. }
  29523. }
  29524. case STONED_TYPE_PCP:
  29525. {
  29526. if (health >= 100.0)
  29527. {
  29528. Players[playerid][pStoned] = STONED_TYPE_NONE;
  29529. Players[playerid][pStonedTime] = 0;
  29530. Players[playerid][pSeconds] = 0;
  29531. SendInfoMessage(playerid, "The effects from the drugs have faded away.");
  29532. }
  29533. else if (Players[playerid][pSeconds] == 20)
  29534. {
  29535. SetPlayerHealth(playerid, (health + 10.0 > 100.0) ? (100.0) : (health + 10.0));
  29536. Players[playerid][pSeconds] = 0;
  29537. }
  29538. }
  29539. }
  29540. }
  29541. }
  29542. if (Players[playerid][pPainkillers] > 0)
  29543. {
  29544. GetPlayerHealth(playerid, health);
  29545. Players[playerid][pPainkillers]--;
  29546. if (health + 3.0 > 100.0) {
  29547. SetPlayerHealth(playerid, 100.0);
  29548. } else {
  29549. SetPlayerHealth(playerid, health + 3.0);
  29550. }
  29551. }
  29552. if (Players[playerid][pAnticheat] > 0)
  29553. {
  29554. Players[playerid][pAnticheat]--;
  29555. }
  29556. if (Players[playerid][pJailType] > 0)
  29557. {
  29558. Players[playerid][pJailTime]--;
  29559. if (Players[playerid][pJailTime] < 1)
  29560. {
  29561. Players[playerid][pJailType] = 0;
  29562. Players[playerid][pJailTime] = 0;
  29563. ResetSpawnInfo(playerid);
  29564. SetPlayerSpawn(playerid);
  29565. SendInfoMessage(playerid, "You have been released from jail!");
  29566. }
  29567. }
  29568. if (Players[playerid][pHotwire] != INVALID_VEHICLE_ID)
  29569. {
  29570. Players[playerid][pHotwireTime]--;
  29571. if (!Players[playerid][pHotwireTime])
  29572. {
  29573. Statistics[playerid][sHotwired]++;
  29574. SetEngineStatus(Players[playerid][pHotwire], 1);
  29575. SetAlarmStatus(Players[playerid][pHotwire], 0);
  29576. SendInfoMessage(playerid, "You have hotwired this vehicle.");
  29577. Players[playerid][pHotwire] = INVALID_VEHICLE_ID;
  29578. Players[playerid][pHotwireTime] = 0;
  29579. }
  29580. else
  29581. {
  29582. format(string, sizeof(string), "~w~Hotwiring... %i seconds remaining.", Players[playerid][pHotwireTime]);
  29583. ShowFooterText(playerid, string, 1500);
  29584. }
  29585. }
  29586. if (GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  29587. {
  29588. vehicleid = GetPlayerVehicleID(playerid);
  29589. if (IsPoweredVehicle(vehicleid) && GetVehicleHealthEx(vehicleid) <= 299.0)
  29590. {
  29591. SetVehicleHealth(vehicleid, 300.0);
  29592. SetEngineStatus(vehicleid, 0);
  29593. SendInfoMessage(playerid, "This vehicle is totalled!");
  29594. }
  29595. }
  29596. if (Players[playerid][pBleeding])
  29597. {
  29598. Players[playerid][pBleedingTime]++;
  29599. if ((Players[playerid][pBleedingTime] % 5) == 0) // Every 5 seconds
  29600. {
  29601. //SpawnBloodObject(playerid);
  29602. new
  29603. Float:x,
  29604. Float:y,
  29605. Float:z,
  29606. Float:angle;
  29607. GetPlayerPos(playerid, x, y, z);
  29608. GetPlayerFacingAngle(playerid, angle);
  29609. //SpawnBloodObject(playerid);
  29610. //AddBlood(playerid, x, y, z, GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid));
  29611. if (!Players[playerid][pMedicKit] && Players[playerid][pStoned] != STONED_TYPE_COCAINE)
  29612. {
  29613. GetPlayerHealth(playerid, health);
  29614. SetPlayerHealth(playerid, health - 1.0);
  29615. }
  29616. }
  29617. if (Players[playerid][pBleedingTime] >= 40)
  29618. {
  29619. Players[playerid][pBleeding] = 0;
  29620. }
  29621. }
  29622. if (Players[playerid][pMedicKit])
  29623. {
  29624. GetPlayerHealth(playerid, health);
  29625. health = health + 3.0;
  29626. if (health > 100.0)
  29627. {
  29628. Players[playerid][pMedicKit] = 0;
  29629. SetPlayerHealth(playerid, 100.0);
  29630. SendInfoMessage(playerid, "Your health has regenerated.");
  29631. }
  29632. else
  29633. {
  29634. SetPlayerHealth(playerid, health);
  29635. }
  29636. }
  29637. if (Players[playerid][pPicking] != PICK_LOCK_NONE)
  29638. {
  29639. Players[playerid][pPickTime]--;
  29640. format(string, sizeof(string), "Picking lock... %i seconds.", Players[playerid][pPickTime]);
  29641. ShowFooterText(playerid, string, 1500);
  29642. switch (Players[playerid][pPicking])
  29643. {
  29644. case PICK_LOCK_HOUSE:
  29645. {
  29646. if (GetClosestHouse(playerid) != Players[playerid][pPickID] || !Houses[Players[playerid][pPickID]][hLocked])
  29647. {
  29648. StopPicking(playerid);
  29649. }
  29650. else if (Players[playerid][pPickTime] <= 0)
  29651. {
  29652. Houses[Players[playerid][pPickID]][hLocked] = 0;
  29653. SaveHouse(Players[playerid][pPickID]);
  29654. StopPicking(playerid);
  29655. SendInfoMessage(playerid, "You have picked open the lock. %i", Players[playerid][pPickID]);
  29656. }
  29657. }
  29658. case PICK_LOCK_SAFE:
  29659. {
  29660. //else if ((id = GetClosestFurniture(playerid, 2.0, 2332)) != INVALID_ID)
  29661. if (GetClosestFurniture(playerid, 2.0, 2332) != Players[playerid][pPickID])
  29662. {
  29663. StopPicking(playerid);
  29664. }
  29665. else if (Players[playerid][pPickTime] <= 0)
  29666. {
  29667. new
  29668. safe = GetClosestFurniture(playerid, 2.0, 2332);
  29669. Furniture[safe][fSafeOpen] = 1;
  29670. SendInfoMessage(playerid, "You have picked open the lock.");
  29671. UpdateDynamic3DTextLabelText(Furniture[safe][fText], COLOR_GREY, "Status: {D4993B}Broken{AFAFAF}\nPress Y to use safe");
  29672. StopPicking(playerid);
  29673. }
  29674. }
  29675. case PICK_LOCK_COMPANY:
  29676. {
  29677. if (GetClosestCompany(playerid) != Players[playerid][pPickID] || !Companies[Players[playerid][pPickID]][cLocked])
  29678. {
  29679. StopPicking(playerid);
  29680. }
  29681. else if (Players[playerid][pPickTime] <= 0)
  29682. {
  29683. Companies[Players[playerid][pPickID]][cLocked] = 0;
  29684. SaveCompany(Players[playerid][pPickID]);
  29685. StopPicking(playerid);
  29686. SendInfoMessage(playerid, "You have picked open the lock.");
  29687. }
  29688. }
  29689. case PICK_LOCK_VEHICLE:
  29690. {
  29691. if (GetVehicleID(GetClosestVehicle(playerid)) != Players[playerid][pPickID] || !Vehicles[Players[playerid][pPickID]][vLocked])
  29692. {
  29693. StopPicking(playerid);
  29694. }
  29695. else if (Players[playerid][pPickTime] <= 0)
  29696. {
  29697. Vehicles[Players[playerid][pPickID]][vLocked] = 0;
  29698. SetLockStatus(Vehicles[Players[playerid][pPickID]][vVehicle], false);
  29699. SaveVehicle(Players[playerid][pPickID]);
  29700. StopPicking(playerid);
  29701. SendInfoMessage(playerid, "You have picked open the lock on this vehicle.");
  29702. }
  29703. }
  29704. }
  29705. }
  29706. if (Players[playerid][pDonator] == 0 && Weapons[playerid][wTertiary])
  29707. {
  29708. SetPlayerWeapon(playerid, WEAPON_TERTIARY, 0);
  29709. }
  29710. if (IsPlayerSpawned(playerid) && Players[playerid][pAnticheat] <= 0)
  29711. {
  29712. new Float:armor;
  29713. GetPlayerArmour(playerid, armor);
  29714. if (armor >= 100.0 && Players[playerid][pArmor] < 100.0)
  29715. {
  29716. Players[playerid][pCheatFlags]++;
  29717. if (Players[playerid][pCheatFlags] < 3)
  29718. {
  29719. SendAdminMessage(COLOR_RED, "Admin: %s may be using hacked armor.", ReturnNameEx(playerid, 0));
  29720. }
  29721. else
  29722. {
  29723. SendAdminMessage(COLOR_RED, "Admin: %s was banned for spawning armor.", ReturnNameEx(playerid, 0));
  29724. AddToBlacklist(playerid, "Anticheat", "Armor hacks");
  29725. }
  29726. }
  29727. if (IsWeaponCheater(playerid))
  29728. {
  29729. Players[playerid][pCheatFlags]++;
  29730. if (Players[playerid][pCheatFlags] < 3)
  29731. {
  29732. SendAdminMessage(COLOR_RED, "Admin: %s may be weapon hacking a %s.", ReturnNameEx(playerid, 0), GetWeapon(GetPlayerWeapon(playerid)));
  29733. }
  29734. else
  29735. {
  29736. format(string, sizeof(string), "Weapon cheats (%s)", GetWeapon(GetPlayerWeapon(playerid)));
  29737. SendAdminMessage(COLOR_RED, "Admin: %s was banned for weapon cheats (%s).", ReturnNameEx(playerid, 0), GetWeapon(GetPlayerWeapon(playerid)));
  29738. AddToBlacklist(playerid, "Anticheat", string);
  29739. }
  29740. }
  29741. }
  29742. /*if (GetPlayerState(playerid) == PLAYER_STATE_DRIVER && GetVehicleKMH(GetPlayerVehicleID(playerid)) > 350.0)
  29743. {
  29744. SendAdminMessage(COLOR_RED, "Admin: %s may be speed hacking as their speed is over 350 km/h.", ReturnNameEx(playerid, 0));
  29745. }*/
  29746. if (IsPlayerHoldingTazer(playerid) && GetPlayerAmmo(playerid) > 2 && !IsPlayerInAnyVehicle(playerid))
  29747. {
  29748. SendAdminMessage(COLOR_RED, "Admin: %s is holding a taser with more than 2 ammo.", ReturnNameEx(playerid, 0));
  29749. }
  29750. /*if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_USEJETPACK && Players[playerid][pAdmin] < 2)
  29751. {
  29752. SendAdminMessage(COLOR_RED, "Admin: %s may be using a hacked jetpack.", ReturnNameEx(playerid, 0));
  29753. }*/
  29754. /*if (GetPlayerCameraMode(playerid) == 55 && !PlayerHasWeapon(playerid, GetPlayerWeapon(playerid)))
  29755. {
  29756. SendAdminMessage(COLOR_RED, "Admin: %s was kicked for using a desynced weapon in a drive-by.", ReturnNameEx(playerid));
  29757. KickPlayer(playerid);
  29758. }*/
  29759. //UpdateColorForPlayer(playerid);
  29760. UpdateMaskForPlayer(playerid);
  29761. SetCheckpointsForPlayer(playerid);
  29762. if (GetPlayerState(playerid) == PLAYER_STATE_ONFOOT || !IsPoweredVehicle(GetPlayerVehicleID(playerid))) {
  29763. StereoUpdate(playerid);
  29764. } else if (IsPlayerInAnyVehicle(playerid) && IsPoweredVehicle(GetPlayerVehicleID(playerid))) {
  29765. VehicleStereoUpdate(playerid);
  29766. }
  29767. if (Players[playerid][pVehicleStream] != INVALID_PLAYER_ID && !IsPlayerInVehicle(playerid, Players[playerid][pVehicleStream])) {
  29768. Players[playerid][pVehicleStream] = INVALID_VEHICLE_ID;
  29769. StopAudioStreamForPlayer(playerid);
  29770. }
  29771. else if (Players[playerid][pStereoPlayerID] != INVALID_PLAYER_ID && Players[playerid][pStereoPlayerID] != GetNearbyStereoPlayerID(playerid)) {
  29772. Players[playerid][pStereoPlayerID] = INVALID_PLAYER_ID;
  29773. StopAudioStreamForPlayer(playerid);
  29774. }
  29775. }
  29776. }
  29777. }
  29778. /*forward PublishAds();
  29779. public PublishAds()
  29780. {
  29781. foreach (new i : Player)
  29782. {
  29783. if (IsAdvertisementActive(i))
  29784. {
  29785. SendFormatMessageToAll(COLOR_GREEN, "(Advertisement) %s - number: %i", GetPackedString(gAdvertisement[i]), Players[i][pPhone]);
  29786. ResetAdvertisement(i);
  29787. break;
  29788. }
  29789. }
  29790. }*/
  29791. forward MinuteSync();
  29792. public MinuteSync()
  29793. {
  29794. new minute;
  29795. static message[128];
  29796. gMinutes++;
  29797. if (gMinutes >= 60)
  29798. {
  29799. gCallsHour = 0;
  29800. gArrestsHour = 0;
  29801. }
  29802. gettime(.minute = minute);
  29803. UpdateTimeTextDraw();
  29804. new pendingApps=0;
  29805. new pendingRequests=0;
  29806. new pendingReports=0;
  29807. for(new i = 0; i < MAX_REPORTS; i ++)
  29808. if(Reports[i][rExists])
  29809. pendingReports++;
  29810. foreach(new i : Player)
  29811. if(IsHelpRequestActive(i))
  29812. pendingRequests++;
  29813. if(pendingReports)
  29814. {
  29815. SendAdminMessage(COLOR_LIGHTRED, "[REPORTS] There are %d pending reports. (/reports)", pendingReports);
  29816. }
  29817. if(pendingRequests)
  29818. {
  29819. SendSupporterMessage(COLOR_YELLOW, "[REQUEST] There are %d pending help requests. (/listhelp)", pendingRequests);
  29820. }
  29821. foreach (new i : Player)
  29822. {
  29823. if (!IsPlayerPaused(i))
  29824. {
  29825. SyncTimeForPlayer(i);
  29826. UpdateNameTag(i, 2);
  29827. Players[i][pMinutes]++;
  29828. if ((Players[i][pMinutes] % 10) == 0)
  29829. {
  29830. SaveAccount(i);
  29831. }
  29832. if (Players[i][pMinutes] >= 60)
  29833. {
  29834. Players[i][pHoursOnline] = Players[i][pHoursOnline] + 1;
  29835. Players[i][pMinutes] = 0;
  29836. SendFormatMessage(i, COLOR_YELLOW, "-------------------------------------------");
  29837. SendFormatMessage(i, COLOR_YELLOW, " LOS SANTOS BANK ");
  29838. SendFormatMessage(i, COLOR_WHITE, "Paycheck:");
  29839. if (GetTotalPaycheckAmount(i) > 0)
  29840. {
  29841. if (Players[i][pJobPaycheck] > 0)
  29842. {
  29843. Players[i][pPaycheck] += Players[i][pJobPaycheck];
  29844. SendFormatMessage(i, COLOR_LIGHTGREY, "Job Paycheck: {33CC33}%s", FormatNumber(Players[i][pJobPaycheck]));
  29845. }
  29846. if (Players[i][pFaction] != INVALID_ID && Factions[Players[i][pFaction]][fcType] != FACTION_ILLEGAL)
  29847. {
  29848. new
  29849. amount = GetFactionRankPay(Players[i][pFaction], Players[i][pFactionRank]);
  29850. if (amount)
  29851. {
  29852. Players[i][pPaycheck] += amount;
  29853. SendFormatMessage(i, COLOR_WHITE, "Faction Pay: {33CC33}%s", FormatNumber(amount));
  29854. }
  29855. }
  29856. }
  29857. if (Players[i][pJob] == JOB_MECHANIC)
  29858. {
  29859. Players[i][pPaycheck] += 1500;
  29860. SendFormatMessage(i, COLOR_WHITE, "Mechanic Paycheck: {33CC33}%s", FormatNumber(1500));
  29861. }
  29862. if (Players[i][pHoursOnline] < 10)
  29863. {
  29864. Players[i][pPaycheck] += 2000;
  29865. SendFormatMessage(i, COLOR_WHITE, "Paycheck: {33CC33}%s", FormatNumber(2000));
  29866. }
  29867. if (Players[i][pSavingsMoney] != 0)
  29868. {
  29869. if (Players[i][pSavingsMoney] >= 50000000)
  29870. {
  29871. SendFormatMessage(i, COLOR_WHITE, "You have reached maximum savings of: {33CC33}%s", FormatNumber(Players[i][pSavingsMoney]));
  29872. }
  29873. else
  29874. {
  29875. new oldsavings = Players[i][pSavingsMoney];
  29876. SendFormatMessage(i, COLOR_WHITE, "Old Savings: {33CC33}%s", FormatNumber(oldsavings));
  29877. new newsavings = oldsavings / 100 * 1;
  29878. SendFormatMessage(i, COLOR_WHITE, "New Savings: {33CC33}%s {FFFFFF}(+{33CC33}%s{FFFFFF})", FormatNumber(oldsavings + newsavings), FormatNumber(newsavings));
  29879. Players[i][pSavingsMoney] += newsavings;
  29880. }
  29881. }
  29882. switch (Players[i][pDonator])
  29883. {
  29884. case DONATOR_BASIC:
  29885. {
  29886. Players[i][pPaycheck] += 2500;
  29887. SendFormatMessage(i, COLOR_WHITE, "Donator Bonus: {33CC33}$2,500");
  29888. }
  29889. case DONATOR_STANDARD:
  29890. {
  29891. Players[i][pPaycheck] += 3500;
  29892. SendFormatMessage(i, COLOR_WHITE, "Donator Bonus: {33CC33}$3,500");
  29893. }
  29894. case DONATOR_INVESTOR:
  29895. {
  29896. Players[i][pPaycheck] += 5500;
  29897. SendFormatMessage(i, COLOR_WHITE, "Donator Bonus: {33CC33}$5,500");
  29898. }
  29899. case DONATOR_PREMIUM:
  29900. {
  29901. Players[i][pPaycheck] += 7500;
  29902. SendFormatMessage(i, COLOR_WHITE, "Donator Bonus: {33CC33}$7,500");
  29903. }
  29904. }
  29905. Players[i][pJobPaycheck] = 0;
  29906. SendFormatMessage(i, COLOR_GREY, "-------------------------------------------");
  29907. GameTextForPlayer(i, "~g~~h~Paycheck", 3000, 1);
  29908. }
  29909. }
  29910. if(currentQuestion[i] == 10 && Players[i][pActivated] == 0)
  29911. {
  29912. pendingApps++;
  29913. }
  29914. }
  29915. if (pendingApps > 0) {
  29916. format(message, sizeof(message), "[QUIZ] There are %d pending applications. (/quizes)", pendingApps);
  29917. SendSupporterMessage(COLOR_LIGHTRED, message);
  29918. SendAdminMessage(COLOR_LIGHTRED, message);
  29919. SendVeteranMessage(COLOR_LIGHTRED, message);
  29920. }
  29921. for (new i = 0; i < MAX_REPORTS; i ++)
  29922. {
  29923. if (Reports[i][rExists])
  29924. {
  29925. Reports[i][rReportTime]--;
  29926. if (Reports[i][rReportTime] <= 0)
  29927. {
  29928. Reports[i][rExists] = 0;
  29929. SendInfoMessage(Reports[i][rReporter], "Your report has expired. You can try reporting again later.");
  29930. }
  29931. }
  29932. }
  29933. for (new i = 0; i < MAX_EMERGENCY; i ++)
  29934. {
  29935. if (Emergency[i][ecExists])
  29936. {
  29937. Emergency[i][ecTime]--;
  29938. if (Emergency[i][ecTime] <= 0)
  29939. {
  29940. Emergency[i][ecExists] = 0;
  29941. }
  29942. }
  29943. }
  29944. return 1;
  29945. }
  29946. forward OnLoadCarBlacklist();
  29947. public OnLoadCarBlacklist()
  29948. {
  29949. new
  29950. rows = cache_get_row_count(gConnection),
  29951. modelid
  29952. ;
  29953. for (new i = 0; i < rows; i ++)
  29954. {
  29955. modelid = cache_get_field_content_int(i, "Model");
  29956. if (400 <= modelid <= 611) {
  29957. modelid -= 400;
  29958. gVehicleBlacklist[modelid] = true;
  29959. }
  29960. }
  29961. }
  29962. forward OnLoadGunDamages();
  29963. public OnLoadGunDamages()
  29964. {
  29965. new
  29966. rows = cache_get_row_count(gConnection),
  29967. weaponid
  29968. ;
  29969. for (new i = 0; i < rows; i ++)
  29970. {
  29971. weaponid = cache_get_field_content_int(i, "Weapon");
  29972. if (IsValidDamageWeapon(weaponid))
  29973. {
  29974. WeaponDamages[weaponid] = cache_get_field_content_float(i, "Damage");
  29975. }
  29976. }
  29977. }
  29978. forward OnLoadPayphones();
  29979. public OnLoadPayphones()
  29980. {
  29981. new
  29982. rows = cache_get_row_count(gConnection);
  29983. for (new i = 0; i < rows; i ++)
  29984. {
  29985. Payphones[i][phExists] = 1;
  29986. Payphones[i][phID] = cache_get_field_content_int(i, "phID");
  29987. Payphones[i][phNumber] = cache_get_field_content_int(i, "phNumber");
  29988. Payphones[i][phX] = cache_get_field_content_float(i, "phX");
  29989. Payphones[i][phY] = cache_get_field_content_float(i, "phY");
  29990. Payphones[i][phZ] = cache_get_field_content_float(i, "phZ");
  29991. Payphones[i][phA] = cache_get_field_content_float(i, "phA");
  29992. Payphones[i][phInterior] = cache_get_field_content_int(i, "phInterior");
  29993. Payphones[i][phWorld] = cache_get_field_content_int(i, "phWorld");
  29994. Payphones[i][phCaller] = INVALID_PLAYER_ID;
  29995. Payphones[i][phObject] = INVALID_OBJECT_ID;
  29996. Payphones[i][phText] = INVALID_3DTEXT_ID;
  29997. UpdatePayphone(i);
  29998. }
  29999. }
  30000. forward OnLoadSprayTags();
  30001. public OnLoadSprayTags()
  30002. {
  30003. new
  30004. rows = cache_get_row_count(gConnection);
  30005. for (new i = 0; i < rows; i ++)
  30006. {
  30007. cache_get_field_content(i, "stText", SprayTags[i][sText], gConnection, 64);
  30008. SprayTags[i][sExists] = 1;
  30009. SprayTags[i][sID] = cache_get_field_content_int(i, "stID");
  30010. SprayTags[i][sColor] = cache_get_field_content_int(i, "stColor");
  30011. SprayTags[i][sX] = cache_get_field_content_float(i, "stX");
  30012. SprayTags[i][sY] = cache_get_field_content_float(i, "stY");
  30013. SprayTags[i][sZ] = cache_get_field_content_float(i, "stZ");
  30014. SprayTags[i][sA] = cache_get_field_content_float(i, "stA");
  30015. SprayTags[i][sObject] = INVALID_OBJECT_ID;
  30016. UpdateSprayTag(i);
  30017. }
  30018. }
  30019. forward OnLoadTags();
  30020. public OnLoadTags()
  30021. {
  30022. new
  30023. rows = cache_get_row_count(gConnection);
  30024. for (new i = 0; i < rows; i ++)
  30025. {
  30026. cache_get_field_content(i, "stText", Tags[i][tagText], gConnection, 64);
  30027. Tags[i][tagExists] = 1;
  30028. Tags[i][tagID] = cache_get_field_content_int(i, "stID");
  30029. Tags[i][tagColor] = cache_get_field_content_int(i, "stColor");
  30030. Tags[i][tagX] = cache_get_field_content_float(i, "stX");
  30031. Tags[i][tagY] = cache_get_field_content_float(i, "stY");
  30032. Tags[i][tagZ] = cache_get_field_content_float(i, "stZ");
  30033. Tags[i][tagA] = cache_get_field_content_float(i, "stA");
  30034. Tags[i][tagObject] = INVALID_OBJECT_ID;
  30035. Tags[i][tagFontSize] = cache_get_field_content_int(i, "stFontSize");
  30036. Tags[i][tagBold] = cache_get_field_content_int(i, "stBold");
  30037. UpdateTag(i);
  30038. }
  30039. }
  30040. forward OnLoadTrashbins();
  30041. public OnLoadTrashbins()
  30042. {
  30043. new
  30044. rows = cache_get_row_count(gConnection);
  30045. for (new i = 0; i < rows; i ++)
  30046. {
  30047. Trashbins[i][tExists] = 1;
  30048. Trashbins[i][tID] = cache_get_field_content_int(i, "tID");
  30049. Trashbins[i][tX] = cache_get_field_content_float(i, "tX");
  30050. Trashbins[i][tY] = cache_get_field_content_float(i, "tY");
  30051. Trashbins[i][tZ] = cache_get_field_content_float(i, "tZ");
  30052. Trashbins[i][tA] = cache_get_field_content_float(i, "tA");
  30053. Trashbins[i][tInterior] = cache_get_field_content_int(i, "tInterior");
  30054. Trashbins[i][tWorld] = cache_get_field_content_int(i, "tWorld");
  30055. Trashbins[i][tText] = INVALID_3DTEXT_ID;
  30056. Trashbins[i][tObject] = INVALID_OBJECT_ID;
  30057. UpdateTrashbin(i);
  30058. }
  30059. }
  30060. forward OnLoadObjects();
  30061. public OnLoadObjects()
  30062. {
  30063. new
  30064. rows = cache_get_row_count(gConnection);
  30065. for (new i = 0; i < rows; i ++)
  30066. {
  30067. Objects[i][oExists] = 1;
  30068. Objects[i][oID] = cache_get_field_content_int(i, "oID");
  30069. Objects[i][oModel] = cache_get_field_content_int(i, "oModel");
  30070. Objects[i][oX] = cache_get_field_content_float(i, "oX");
  30071. Objects[i][oY] = cache_get_field_content_float(i, "oY");
  30072. Objects[i][oZ] = cache_get_field_content_float(i, "oZ");
  30073. Objects[i][oRX] = cache_get_field_content_float(i, "oRX");
  30074. Objects[i][oRY] = cache_get_field_content_float(i, "oRY");
  30075. Objects[i][oRZ] = cache_get_field_content_float(i, "oRZ");
  30076. Objects[i][oDistance] = cache_get_field_content_float(i, "oDistance");
  30077. Objects[i][oInterior] = cache_get_field_content_int(i, "oInterior");
  30078. Objects[i][oWorld] = cache_get_field_content_int(i, "oWorld");
  30079. Objects[i][oObjectID] = INVALID_OBJECT_ID;
  30080. Objects[i][oText] = INVALID_3DTEXT_ID;
  30081. UpdateObject(i);
  30082. }
  30083. }
  30084. forward OnLoadAutoShops();
  30085. public OnLoadAutoShops()
  30086. {
  30087. new
  30088. rows = cache_get_row_count(gConnection);
  30089. for (new i = 0; i < rows; i ++)
  30090. {
  30091. AutoShops[i][asExists] = 1;
  30092. AutoShops[i][asID] = cache_get_field_content_int(i, "asID");
  30093. AutoShops[i][asX] = cache_get_field_content_float(i, "asX");
  30094. AutoShops[i][asY] = cache_get_field_content_float(i, "asY");
  30095. AutoShops[i][asZ] = cache_get_field_content_float(i, "asZ");
  30096. AutoShops[i][asText] = INVALID_3DTEXT_ID;
  30097. AutoShops[i][asPickup] = INVALID_ID;
  30098. AutoShops[i][asIcon] = INVALID_ID;
  30099. UpdateAutoShop(i);
  30100. }
  30101. }
  30102. forward OnLoadGates();
  30103. public OnLoadGates()
  30104. {
  30105. new
  30106. rows = cache_get_row_count(gConnection);
  30107. for (new i = 0; i < rows; i ++)
  30108. {
  30109. cache_get_field_content(i, "gPassword", Gates[i][gPassword], gConnection, 64);
  30110. Gates[i][gExists] = 1;
  30111. Gates[i][gID] = cache_get_field_content_int(i, "gID");
  30112. Gates[i][gModel] = cache_get_field_content_int(i, "gModel");
  30113. Gates[i][gSpeed] = cache_get_field_content_float(i, "gSpeed");
  30114. Gates[i][gRadius] = cache_get_field_content_float(i, "gRadius");
  30115. Gates[i][gFactionID] = cache_get_field_content_int(i, "gFactionID");
  30116. Gates[i][gLinkID] = cache_get_field_content_int(i, "gLinkID");
  30117. Gates[i][gSpawn][0] = cache_get_field_content_float(i, "gX");
  30118. Gates[i][gSpawn][1] = cache_get_field_content_float(i, "gY");
  30119. Gates[i][gSpawn][2] = cache_get_field_content_float(i, "gZ");
  30120. Gates[i][gSpawn][3] = cache_get_field_content_float(i, "gRX");
  30121. Gates[i][gSpawn][4] = cache_get_field_content_float(i, "gRY");
  30122. Gates[i][gSpawn][5] = cache_get_field_content_float(i, "gRZ");
  30123. Gates[i][gMove][0] = cache_get_field_content_float(i, "gMoveX");
  30124. Gates[i][gMove][1] = cache_get_field_content_float(i, "gMoveY");
  30125. Gates[i][gMove][2] = cache_get_field_content_float(i, "gMoveZ");
  30126. Gates[i][gMove][3] = cache_get_field_content_float(i, "gMoveRX");
  30127. Gates[i][gMove][4] = cache_get_field_content_float(i, "gMoveRY");
  30128. Gates[i][gMove][5] = cache_get_field_content_float(i, "gMoveRZ");
  30129. Gates[i][gInterior] = cache_get_field_content_int(i, "gInterior");
  30130. Gates[i][gWorld] = cache_get_field_content_int(i, "gWorld");
  30131. Gates[i][gObject] = INVALID_OBJECT_ID;
  30132. Gates[i][gOpened] = 0;
  30133. UpdateGate(i);
  30134. }
  30135. }
  30136. forward OnLoadLabels();
  30137. public OnLoadLabels()
  30138. {
  30139. new
  30140. rows = cache_get_row_count(gConnection);
  30141. for (new i = 0; i < rows; i ++)
  30142. {
  30143. cache_get_field_content(i, "lText", Labels[i][lText], gConnection, 144);
  30144. Labels[i][lExists] = 1;
  30145. Labels[i][lID] = cache_get_field_content_int(i, "lID");
  30146. Labels[i][lColor] = cache_get_field_content_int(i, "lColor");
  30147. Labels[i][lX] = cache_get_field_content_float(i, "lX");
  30148. Labels[i][lY] = cache_get_field_content_float(i, "lY");
  30149. Labels[i][lZ] = cache_get_field_content_float(i, "lZ");
  30150. Labels[i][lDistance] = cache_get_field_content_float(i, "lDistance");
  30151. Labels[i][lInterior] = cache_get_field_content_int(i, "lInterior");
  30152. Labels[i][lWorld] = cache_get_field_content_int(i, "lWorld");
  30153. Labels[i][lText3D] = INVALID_3DTEXT_ID;
  30154. UpdateLabel(i);
  30155. }
  30156. printf("(SQL) %i labels loaded.", rows);
  30157. }
  30158. forward OnLoadTeleports();
  30159. public OnLoadTeleports()
  30160. {
  30161. new
  30162. rows = cache_get_row_count(gConnection);
  30163. for (new i = 0; i < rows; i ++)
  30164. {
  30165. cache_get_field_content(i, "tpName", Teleports[i][tpName], gConnection, 32);
  30166. Teleports[i][tpExists] = 1;
  30167. Teleports[i][tpID] = cache_get_field_content_int(i, "tpID");
  30168. Teleports[i][tpX] = cache_get_field_content_float(i, "tpX");
  30169. Teleports[i][tpY] = cache_get_field_content_float(i, "tpY");
  30170. Teleports[i][tpZ] = cache_get_field_content_float(i, "tpZ");
  30171. Teleports[i][tpA] = cache_get_field_content_float(i, "tpA");
  30172. Teleports[i][tpInterior] = cache_get_field_content_int(i, "tpInterior");
  30173. Teleports[i][tpWorld] = cache_get_field_content_int(i, "tpWorld");
  30174. }
  30175. printf("(SQL) %i teleports loaded.", rows);
  30176. }
  30177. forward OnLoadArrestPoints();
  30178. public OnLoadArrestPoints()
  30179. {
  30180. new
  30181. rows = cache_get_row_count(gConnection);
  30182. for (new i = 0; i < rows; i ++)
  30183. {
  30184. ArrestPoints[i][apExists] = 1;
  30185. ArrestPoints[i][apID] = cache_get_field_content_int(i, "apID");
  30186. ArrestPoints[i][apX] = cache_get_field_content_float(i, "apX");
  30187. ArrestPoints[i][apY] = cache_get_field_content_float(i, "apY");
  30188. ArrestPoints[i][apZ] = cache_get_field_content_float(i, "apZ");
  30189. ArrestPoints[i][apInterior] = cache_get_field_content_int(i, "apInterior");
  30190. ArrestPoints[i][apWorld] = cache_get_field_content_int(i, "apWorld");
  30191. ArrestPoints[i][apText] = INVALID_3DTEXT_ID;
  30192. ArrestPoints[i][apPickup] = INVALID_ID;
  30193. UpdateArrestPoint(i);
  30194. }
  30195. printf("(SQL) %i arrest points loaded.", rows);
  30196. }
  30197. forward OnLoadFactionUniforms(faction);
  30198. public OnLoadFactionUniforms(faction)
  30199. {
  30200. new
  30201. rows = cache_get_row_count(gConnection);
  30202. for (new i = 0; i < rows; i ++)
  30203. {
  30204. Factions[faction][fcUniforms][i] = cache_get_field_content_int(i, "uniformSkin");
  30205. }
  30206. }
  30207. forward OnLoadFactionAccessories(faction);
  30208. public OnLoadFactionAccessories(faction)
  30209. {
  30210. new
  30211. rows = cache_get_row_count(gConnection);
  30212. for(new i = 0; i < rows; i ++)
  30213. {
  30214. cache_get_field_content(i, "accessoryName", FactionAccessories[faction][i][fcAccessoryName], gConnection, 32);
  30215. FactionAccessories[faction][i][fcAccessoryModel] = cache_get_field_content_int(i, "accessoryModel");
  30216. FactionAccessories[faction][i][fcAccessoryBone] = cache_get_field_content_int(i, "accessoryBone");
  30217. FactionAccessories[faction][i][fcAccessoryExists] = 1;
  30218. }
  30219. }
  30220. forward OnLoadFactionEquipment(faction);
  30221. public OnLoadFactionEquipment(faction)
  30222. {
  30223. new
  30224. rows = cache_get_row_count(gConnection);
  30225. for(new i = 0; i < rows; i ++)
  30226. {
  30227. cache_get_field_content(i, "itemName", FactionEquipment[faction][i][fcItemName], gConnection, MAX_ITEM_NAME);
  30228. FactionEquipment[faction][i][fcItemValue] = cache_get_field_content_int(i, "itemValue");
  30229. FactionEquipment[faction][i][fcItemExists] = 1;
  30230. }
  30231. }
  30232. forward OnLoadFactionRanks(faction);
  30233. public OnLoadFactionRanks(faction)
  30234. {
  30235. new
  30236. rows = cache_get_row_count(gConnection);
  30237. for (new i = 0; i < rows; i ++)
  30238. {
  30239. cache_get_field_content(i, "rankName", Ranks[faction][i], gConnection, MAX_RANK_NAME);
  30240. Factions[faction][fcPaycheck][i] = cache_get_field_content_int(i, "rankPaycheck");
  30241. }
  30242. }
  30243. forward OnLoadFactions();
  30244. public OnLoadFactions()
  30245. {
  30246. new
  30247. rows = cache_get_row_count(gConnection);
  30248. for (new i = 0; i < rows; i ++)
  30249. {
  30250. cache_get_field_content(i, "fcName", Factions[i][fcName], gConnection, 32);
  30251. Factions[i][fcExists] = 1;
  30252. Factions[i][fcID] = cache_get_field_content_int(i, "fcID");
  30253. Factions[i][fcType] = cache_get_field_content_int(i, "fcType");
  30254. Factions[i][fcColor] = cache_get_field_content_int(i, "fcColor");
  30255. Factions[i][fcMaxRanks] = cache_get_field_content_int(i, "fcMaxRanks");
  30256. Factions[i][fcLockerX] = cache_get_field_content_float(i, "fcLockerX");
  30257. Factions[i][fcLockerY] = cache_get_field_content_float(i, "fcLockerY");
  30258. Factions[i][fcLockerZ] = cache_get_field_content_float(i, "fcLockerZ");
  30259. Factions[i][fcLockerInt] = cache_get_field_content_int(i, "fcLockerInt");
  30260. Factions[i][fcLockerWorld] = cache_get_field_content_int(i, "fcLockerWorld");
  30261. Factions[i][fcWeaponRights][0] = cache_get_field_content_int(i, "fcMeleeRights");
  30262. Factions[i][fcWeaponRights][1] = cache_get_field_content_int(i, "fcPistolRights");
  30263. Factions[i][fcWeaponRights][2] = cache_get_field_content_int(i, "fcShotgunRights");
  30264. Factions[i][fcWeaponRights][3] = cache_get_field_content_int(i, "fcSMGRights");
  30265. Factions[i][fcWeaponRights][4] = cache_get_field_content_int(i, "fcRifleRights");
  30266. Factions[i][fcDrugRights] = cache_get_field_content_int(i, "fcDrugRights");
  30267. Factions[i][fcSprayRights] = cache_get_field_content_int(i, "fcSprayRights");
  30268. Factions[i][fcSpawnX] = cache_get_field_content_float(i, "fcSpawnX");
  30269. Factions[i][fcSpawnY] = cache_get_field_content_float(i, "fcSpawnY");
  30270. Factions[i][fcSpawnZ] = cache_get_field_content_float(i, "fcSpawnZ");
  30271. Factions[i][fcSpawnA] = cache_get_field_content_float(i, "fcSpawnA");
  30272. Factions[i][fcSpawnInt] = cache_get_field_content_int(i, "fcSpawnInt");
  30273. Factions[i][fcSpawnWorld] = cache_get_field_content_int(i, "fcSpawnWorld");
  30274. Factions[i][fcPickup] = INVALID_ID;
  30275. Factions[i][fcText] = INVALID_3DTEXT_ID;
  30276. UpdateFaction(i);
  30277. }
  30278. for (new i = 0; i < rows; i ++)
  30279. {
  30280. if (Factions[i][fcExists])
  30281. {
  30282. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_factionranks WHERE rankFactionID = %i", Factions[i][fcID]);
  30283. mysql_tquery(gConnection, gExecute, "OnLoadFactionRanks", "i", i);
  30284. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_factionskins WHERE uniformFactionID = %i", Factions[i][fcID]);
  30285. mysql_tquery(gConnection, gExecute, "OnLoadFactionUniforms", "i", i);
  30286. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_factionequipment WHERE itemFactionID = %i", Factions[i][fcID]);
  30287. mysql_tquery(gConnection, gExecute, "OnLoadFactionEquipment", "i", i);
  30288. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_factionaccessories WHERE accessoryFactionID = %i", Factions[i][fcID]);
  30289. mysql_tquery(gConnection, gExecute, "OnLoadFactionAccessories", "i", i);
  30290. }
  30291. }
  30292. printf("(SQL) %i factions loaded.", rows);
  30293. }
  30294. forward OnLoadFoodItems(company);
  30295. public OnLoadFoodItems(company)
  30296. {
  30297. new
  30298. rows = cache_get_row_count(gConnection);
  30299. for (new i = 0; i < rows; i ++)
  30300. {
  30301. cache_get_field_content(i, "Name", RestaurantItems[company][i][rtName], gConnection, 24);
  30302. RestaurantItems[company][i][rtExists] = 1;
  30303. RestaurantItems[company][i][rtID] = cache_get_field_content_int(i, "ID");
  30304. RestaurantItems[company][i][rtStock] = cache_get_field_content_int(i, "Stock");
  30305. RestaurantItems[company][i][rtPrice] = cache_get_field_content_int(i, "Price");
  30306. RestaurantItems[company][i][rtType] = cache_get_field_content_int(i, "Type");
  30307. RestaurantItems[company][i][rtHealth] = cache_get_field_content_int(i, "Health");
  30308. }
  30309. }
  30310. forward OnLoadProducts(company);
  30311. public OnLoadProducts(company)
  30312. {
  30313. new
  30314. rows = cache_get_row_count(gConnection);
  30315. for (new i = 0; i < rows; i ++)
  30316. {
  30317. Products[company][i][prPrice] = cache_get_field_content_int(i, "Price");
  30318. Products[company][i][prStock] = cache_get_field_content_int(i, "Stock");
  30319. }
  30320. }
  30321. forward OnLoadBuildings();
  30322. public OnLoadBuildings()
  30323. {
  30324. new
  30325. rows = cache_get_row_count(gConnection);
  30326. for (new i = 0; i < rows; i ++)
  30327. {
  30328. cache_get_field_content(i, "bName", Buildings[i][bName], gConnection, 32);
  30329. Buildings[i][bExists] = 1;
  30330. Buildings[i][bID] = cache_get_field_content_int(i, "bID");
  30331. Buildings[i][bIconType] = cache_get_field_content_int(i, "bIconType");
  30332. Buildings[i][bLocked] = cache_get_field_content_int(i, "bLocked");
  30333. Buildings[i][bSpawn][0] = cache_get_field_content_float(i, "bSpawnX");
  30334. Buildings[i][bSpawn][1] = cache_get_field_content_float(i, "bSpawnY");
  30335. Buildings[i][bSpawn][2] = cache_get_field_content_float(i, "bSpawnZ");
  30336. Buildings[i][bSpawn][3] = cache_get_field_content_float(i, "bSpawnA");
  30337. Buildings[i][bInt][0] = cache_get_field_content_float(i, "bIntX");
  30338. Buildings[i][bInt][1] = cache_get_field_content_float(i, "bIntY");
  30339. Buildings[i][bInt][2] = cache_get_field_content_float(i, "bIntZ");
  30340. Buildings[i][bInt][3] = cache_get_field_content_float(i, "bIntA");
  30341. Buildings[i][bExterior] = cache_get_field_content_int(i, "bExterior");
  30342. Buildings[i][bExteriorWorld] = cache_get_field_content_int(i, "bExteriorWorld");
  30343. Buildings[i][bInterior] = cache_get_field_content_int(i, "bInterior");
  30344. Buildings[i][bWorld] = cache_get_field_content_int(i, "bWorld");
  30345. Buildings[i][bPickup] = INVALID_ID;
  30346. Buildings[i][bIcon] = INVALID_ID;
  30347. Buildings[i][bText] = INVALID_3DTEXT_ID;
  30348. UpdateBuilding(i);
  30349. }
  30350. printf("(SQL) %i buildings loaded.", rows);
  30351. }
  30352. forward OnLoadVehicleMods(vehicle);
  30353. public OnLoadVehicleMods(vehicle)
  30354. {
  30355. new
  30356. rows = cache_get_row_count(gConnection),
  30357. slot;
  30358. for (new i = 0; i < rows; i ++)
  30359. {
  30360. slot = cache_get_field_content_int(i, "vSlot");
  30361. Vehicles[vehicle][vMods][slot] = cache_get_field_content_int(i, "vComponent");
  30362. }
  30363. ApplyModifications(vehicle);
  30364. }
  30365. forward OnLoadVehicles();
  30366. public OnLoadVehicles()
  30367. {
  30368. new
  30369. rows = cache_get_row_count(gConnection);
  30370. for (new i = 0; i < rows; i ++)
  30371. {
  30372. cache_get_field_content(i, "vRegistered", Vehicles[i][vRegistered], gConnection, 32);
  30373. cache_get_field_content(i, "vPlate", Vehicles[i][vPlate], gConnection, 32);
  30374. Vehicles[i][vExists] = 1;
  30375. Vehicles[i][vID] = cache_get_field_content_int(i, "vID");
  30376. Vehicles[i][vCompany] = cache_get_field_content_int(i, "vCompany");
  30377. Vehicles[i][vOwner] = cache_get_field_content_int(i, "vOwner");
  30378. Vehicles[i][vModel] = cache_get_field_content_int(i, "vModel");
  30379. Vehicles[i][vPrice] = cache_get_field_content_int(i, "vPrice");
  30380. Vehicles[i][vRentable] = cache_get_field_content_int(i, "vRentable");
  30381. Vehicles[i][vSpawn][0] = cache_get_field_content_float(i, "vX");
  30382. Vehicles[i][vSpawn][1] = cache_get_field_content_float(i, "vY");
  30383. Vehicles[i][vSpawn][2] = cache_get_field_content_float(i, "vZ");
  30384. Vehicles[i][vSpawn][3] = cache_get_field_content_float(i, "vA");
  30385. Vehicles[i][vColor1] = cache_get_field_content_int(i, "vColor1");
  30386. Vehicles[i][vColor2] = cache_get_field_content_int(i, "vColor2");
  30387. Vehicles[i][vPaintjob] = cache_get_field_content_int(i, "vPaintjob");
  30388. Vehicles[i][vLocked] = cache_get_field_content_int(i, "vLocked");
  30389. Vehicles[i][vTrunkMoney] = cache_get_field_content_int(i, "vTrunkMoney");
  30390. Vehicles[i][vFaction] = cache_get_field_content_int(i, "vFaction");
  30391. Vehicles[i][vSiren] = cache_get_field_content_int(i, "vSiren");
  30392. Vehicles[i][vAlarm] = cache_get_field_content_int(i, "vAlarm");
  30393. Vehicles[i][vImpound] = cache_get_field_content_int(i, "vImpound");
  30394. Vehicles[i][vDespawned] = cache_get_field_content_int(i, "vDespawned");
  30395. Vehicles[i][vText] = INVALID_3DTEXT_ID;
  30396. Vehicles[i][vVehicle] = INVALID_VEHICLE_ID;
  30397. Vehicles[i][vRenter] = INVALID_PLAYER_ID;
  30398. if (Vehicles[i][vRentable] && Vehicles[i][vLocked])
  30399. {
  30400. Vehicles[i][vLocked] = 0;
  30401. }
  30402. UpdateVehicle(i);
  30403. }
  30404. for (new i = 0; i < rows; i ++)
  30405. {
  30406. if (Vehicles[i][vID])
  30407. {
  30408. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_vehiclemods WHERE vID = %i AND vComponent > 0", Vehicles[i][vID]);
  30409. mysql_tquery(gConnection, gExecute, "OnLoadVehicleMods", "i", i);
  30410. }
  30411. }
  30412. printf("(SQL) %i vehicles loaded.", rows);
  30413. }
  30414. forward OnLoadCompanies();
  30415. public OnLoadCompanies()
  30416. {
  30417. new
  30418. rows = cache_get_row_count(gConnection);
  30419. for (new i = 0; i < rows; i ++)
  30420. {
  30421. cache_get_field_content(i, "cName", Companies[i][cName], gConnection, 32);
  30422. cache_get_field_content(i, "cOwnerName", Companies[i][cOwnerName], gConnection, MAX_PLAYER_NAME);
  30423. Companies[i][cExists] = 1;
  30424. Companies[i][cID] = cache_get_field_content_int(i, "cID");
  30425. Companies[i][cOwner] = cache_get_field_content_int(i, "cOwner");
  30426. Companies[i][cValue] = cache_get_field_content_int(i, "cValue");
  30427. Companies[i][cType] = cache_get_field_content_int(i, "cType");
  30428. Companies[i][cSpawn][0] = cache_get_field_content_float(i, "cSpawnX");
  30429. Companies[i][cSpawn][1] = cache_get_field_content_float(i, "cSpawnY");
  30430. Companies[i][cSpawn][2] = cache_get_field_content_float(i, "cSpawnZ");
  30431. Companies[i][cSpawn][3] = cache_get_field_content_float(i, "cSpawnA");
  30432. Companies[i][cVehicle][0] = cache_get_field_content_float(i, "cVehicleX");
  30433. Companies[i][cVehicle][1] = cache_get_field_content_float(i, "cVehicleY");
  30434. Companies[i][cVehicle][2] = cache_get_field_content_float(i, "cVehicleZ");
  30435. Companies[i][cVehicle][3] = cache_get_field_content_float(i, "cVehicleA");
  30436. Companies[i][cInt][0] = cache_get_field_content_float(i, "cIntX");
  30437. Companies[i][cInt][1] = cache_get_field_content_float(i, "cIntY");
  30438. Companies[i][cInt][2] = cache_get_field_content_float(i, "cIntZ");
  30439. Companies[i][cInt][3] = cache_get_field_content_float(i, "cIntA");
  30440. Companies[i][cExterior] = cache_get_field_content_int(i, "cExterior");
  30441. Companies[i][cExteriorWorld] = cache_get_field_content_int(i, "cExteriorWorld");
  30442. Companies[i][cInterior] = cache_get_field_content_int(i, "cInterior");
  30443. Companies[i][cWorld] = cache_get_field_content_int(i, "cWorld");
  30444. Companies[i][cSafe] = cache_get_field_content_int(i, "cSafe");
  30445. Companies[i][cStock] = cache_get_field_content_int(i, "cStock");
  30446. Companies[i][cLocked] = cache_get_field_content_int(i, "cLocked");
  30447. Companies[i][cCheckpoint] = INVALID_ID;
  30448. //Companies[i][cText] = INVALID_3DTEXT_ID;
  30449. Companies[i][cDeliverText] = INVALID_3DTEXT_ID;
  30450. CheckCompanyItems(i);
  30451. UpdateCompany(i);
  30452. }
  30453. for (new i = 0; i < rows; i ++)
  30454. {
  30455. if (Companies[i][cType] == COMPANY_RESTAURANT)
  30456. {
  30457. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_fooditems WHERE cID = %i", Companies[i][cID]);
  30458. mysql_tquery(gConnection, gExecute, "OnLoadFoodItems", "i", i);
  30459. }
  30460. else
  30461. {
  30462. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_products WHERE cID = %i", Companies[i][cID]);
  30463. mysql_tquery(gConnection, gExecute, "OnLoadProducts", "i", i);
  30464. }
  30465. }
  30466. printf("(SQL) %i companies loaded.", rows);
  30467. }
  30468. forward OnLoadFurniture();
  30469. public OnLoadFurniture()
  30470. {
  30471. new
  30472. rows = cache_get_row_count(gConnection);
  30473. for (new i = 0; i < rows; i ++)
  30474. {
  30475. Furniture[i][fExists] = 1;
  30476. Furniture[i][fID] = cache_get_field_content_int(i, "fID");
  30477. Furniture[i][fHouseID] = cache_get_field_content_int(i, "fHouseID");
  30478. Furniture[i][fModel] = cache_get_field_content_int(i, "fModel");
  30479. Furniture[i][fSpawn][0] = cache_get_field_content_float(i, "fX");
  30480. Furniture[i][fSpawn][1] = cache_get_field_content_float(i, "fY");
  30481. Furniture[i][fSpawn][2] = cache_get_field_content_float(i, "fZ");
  30482. Furniture[i][fSpawn][3] = cache_get_field_content_float(i, "fRX");
  30483. Furniture[i][fSpawn][4] = cache_get_field_content_float(i, "fRY");
  30484. Furniture[i][fSpawn][5] = cache_get_field_content_float(i, "fRZ");
  30485. Furniture[i][fInterior] = cache_get_field_content_int(i, "fInterior");
  30486. Furniture[i][fWorld] = cache_get_field_content_int(i, "fWorld");
  30487. Furniture[i][fCode] = cache_get_field_content_int(i, "fCode");
  30488. Furniture[i][fMoney] = cache_get_field_content_int(i, "fMoney");
  30489. Furniture[i][fMaterial][0] = cache_get_field_content_int(i, "Mat1");
  30490. Furniture[i][fMaterial][1] = cache_get_field_content_int(i, "Mat2");
  30491. Furniture[i][fMaterial][2] = cache_get_field_content_int(i, "Mat3");
  30492. Furniture[i][fMatColour][0] = cache_get_field_content_int(i, "MatColor1");
  30493. Furniture[i][fMatColour][1] = cache_get_field_content_int(i, "MatColor2");
  30494. Furniture[i][fMatColour][2] = cache_get_field_content_int(i, "MatColor3");
  30495. Furniture[i][fObject] = INVALID_OBJECT_ID;
  30496. Furniture[i][fText] = INVALID_3DTEXT_ID;
  30497. UpdateFurniture(i);
  30498. }
  30499. printf("(SQL) %i furniture loaded.", rows);
  30500. }
  30501. forward OnLoadHouses();
  30502. public OnLoadHouses()
  30503. {
  30504. new
  30505. rows = cache_get_row_count(gConnection);
  30506. for (new i = 0; i < rows; i ++)
  30507. {
  30508. cache_get_field_content(i, "hAddress", Houses[i][hAddress], gConnection, 32);
  30509. cache_get_field_content(i, "hOwnerName", Houses[i][hOwnerName], gConnection, MAX_PLAYER_NAME);
  30510. Houses[i][hExists] = 1;
  30511. Houses[i][hID] = cache_get_field_content_int(i, "hID");
  30512. Houses[i][hOwner] = cache_get_field_content_int(i, "hOwner");
  30513. Houses[i][hValue] = cache_get_field_content_int(i, "hValue");
  30514. Houses[i][hSpawn][0] = cache_get_field_content_float(i, "hSpawnX");
  30515. Houses[i][hSpawn][1] = cache_get_field_content_float(i, "hSpawnY");
  30516. Houses[i][hSpawn][2] = cache_get_field_content_float(i, "hSpawnZ");
  30517. Houses[i][hSpawn][3] = cache_get_field_content_float(i, "hSpawnA");
  30518. Houses[i][hInt][0] = cache_get_field_content_float(i, "hIntX");
  30519. Houses[i][hInt][1] = cache_get_field_content_float(i, "hIntY");
  30520. Houses[i][hInt][2] = cache_get_field_content_float(i, "hIntZ");
  30521. Houses[i][hInt][3] = cache_get_field_content_float(i, "hIntA");
  30522. Houses[i][hBackdoor][0] = cache_get_field_content_float(i, "hBackdoorX");
  30523. Houses[i][hBackdoor][1] = cache_get_field_content_float(i, "hBackdoorY");
  30524. Houses[i][hBackdoor][2] = cache_get_field_content_float(i, "hBackdoorZ");
  30525. Houses[i][hBackdoorInt][0] = cache_get_field_content_float(i, "hBackdoorIntX");
  30526. Houses[i][hBackdoorInt][1] = cache_get_field_content_float(i, "hBackdoorIntY");
  30527. Houses[i][hBackdoorInt][2] = cache_get_field_content_float(i, "hBackdoorIntZ");
  30528. Houses[i][hExterior] = cache_get_field_content_int(i, "hExterior");
  30529. Houses[i][hExteriorWorld] = cache_get_field_content_int(i, "hExteriorWorld");
  30530. Houses[i][hInterior] = cache_get_field_content_int(i, "hInterior");
  30531. Houses[i][hWorld] = cache_get_field_content_int(i, "hWorld");
  30532. Houses[i][hLocked] = cache_get_field_content_int(i, "hLocked");
  30533. Houses[i][hAlarm] = cache_get_field_content_int(i, "hAlarm");
  30534. Houses[i][hRentPrice] = cache_get_field_content_int(i, "hRentPrice");
  30535. Houses[i][hCheckpoint] = INVALID_ID;
  30536. //Houses[i][hText] = INVALID_3DTEXT_ID;
  30537. Houses[i][hBackdoorText][0] = INVALID_3DTEXT_ID;
  30538. Houses[i][hBackdoorText][1] = INVALID_3DTEXT_ID;
  30539. UpdateHouse(i);
  30540. }
  30541. printf("(SQL) %i houses loaded.", rows);
  30542. }
  30543. forward OnLoadStoredItems();
  30544. public OnLoadStoredItems()
  30545. {
  30546. new
  30547. rows = cache_get_row_count(gConnection),
  30548. string[MAX_ITEM_NAME];
  30549. for (new i = 0; i < rows; i ++)
  30550. {
  30551. cache_get_field_content(i, "itemName", string, gConnection, MAX_ITEM_NAME);
  30552. strpack(StoredItems[i][stName], string, MAX_ITEM_NAME);
  30553. StoredItems[i][stExists] = 1;
  30554. StoredItems[i][stID] = cache_get_field_content_int(i, "itemID");
  30555. StoredItems[i][stValue] = cache_get_field_content_int(i, "itemValue");
  30556. StoredItems[i][stSerial] = cache_get_field_content_int(i, "itemSerial");
  30557. StoredItems[i][stVehicle] = cache_get_field_content_int(i, "itemVehicleID");
  30558. StoredItems[i][stFurniture] = cache_get_field_content_int(i, "itemFurnitureID");
  30559. StoredItems[i][stTrashbin] = cache_get_field_content_int(i, "itemTrashbinID");
  30560. StoredItems[i][stOffset][0] = cache_get_field_content_float(i, "itemOffsetX");
  30561. StoredItems[i][stOffset][1] = cache_get_field_content_float(i, "itemOffsetY");
  30562. StoredItems[i][stOffset][2] = cache_get_field_content_float(i, "itemOffsetZ");
  30563. StoredItems[i][stOffset][3] = cache_get_field_content_float(i, "itemOffsetRX");
  30564. StoredItems[i][stOffset][4] = cache_get_field_content_float(i, "itemOffsetRY");
  30565. StoredItems[i][stOffset][5] = cache_get_field_content_float(i, "itemOffsetRZ");
  30566. }
  30567. return 1;
  30568. }
  30569. forward OnLoadShellCasings();
  30570. public OnLoadShellCasings()
  30571. {
  30572. new
  30573. rows = cache_get_row_count(gConnection);
  30574. for (new i = 0; i < rows; i ++)
  30575. {
  30576. ShellCasings[i][scExists] = 1;
  30577. ShellCasings[i][scID] = cache_get_field_content_int(i, "scID");
  30578. ShellCasings[i][scSerial] = cache_get_field_content_int(i, "scSerial");
  30579. ShellCasings[i][scWeapon] = cache_get_field_content_int(i, "scWeapon");
  30580. ShellCasings[i][scTime] = cache_get_field_content_int(i, "scTime");
  30581. ShellCasings[i][scSpawn][0] = cache_get_field_content_float(i, "scX");
  30582. ShellCasings[i][scSpawn][1] = cache_get_field_content_float(i, "scY");
  30583. ShellCasings[i][scSpawn][2] = cache_get_field_content_float(i, "scZ");
  30584. ShellCasings[i][scInterior] = cache_get_field_content_int(i, "scInterior");
  30585. ShellCasings[i][scWorld] = cache_get_field_content_int(i, "scWorld");
  30586. ShellCasings[i][scObject] = INVALID_OBJECT_ID;
  30587. UpdateShellCasing(i);
  30588. }
  30589. printf("(SQL) %i shell casings loaded.", rows);
  30590. }
  30591. forward OnLoadWeedPlants();
  30592. public OnLoadWeedPlants()
  30593. {
  30594. new
  30595. rows = cache_get_row_count(gConnection);
  30596. for (new i = 0; i < rows; i ++)
  30597. {
  30598. WeedPlants[i][wpExists] = 1;
  30599. WeedPlants[i][wpID] = cache_get_field_content_int(i, "wpID");
  30600. cache_get_field_content(i, "wpOwner", WeedPlants[i][wpOwner], gConnection, 24);
  30601. //cache_get_field_content(i, "Name", RestaurantItems[company][i][rtName], gConnection, 24);
  30602. WeedPlants[i][wpSpawn][0] = cache_get_field_content_float(i, "wpX");
  30603. WeedPlants[i][wpSpawn][1] = cache_get_field_content_float(i, "wpY");
  30604. WeedPlants[i][wpSpawn][2] = cache_get_field_content_float(i, "wpZ");
  30605. WeedPlants[i][wpInterior] = cache_get_field_content_int(i, "wpInterior");
  30606. WeedPlants[i][wpWorld] = cache_get_field_content_int(i, "wpWorld");
  30607. WeedPlants[i][wpTime] = cache_get_field_content_int(i, "wpTime");
  30608. WeedPlants[i][wpObject] = INVALID_OBJECT_ID;
  30609. UpdateWeedPlant(i);
  30610. }
  30611. printf("(SQL) %i weed plants loaded.", rows);
  30612. }
  30613. /*
  30614. enum e_WeedPlants
  30615. {
  30616. wpID,
  30617. wpExists,
  30618. wpOwner[24],
  30619. Float:wpSpawn[3],
  30620. wpInterior,
  30621. wpWorld,
  30622. wpObject,
  30623. wpTime
  30624. };
  30625. */
  30626. forward OnLoadDealershipCars();
  30627. public OnLoadDealershipCars()
  30628. {
  30629. new
  30630. rows = cache_get_row_count(gConnection);
  30631. for (new i = 0; i < rows; i ++)
  30632. {
  30633. DealershipCars[i][dcExists] = 1;
  30634. DealershipCars[i][dcID] = cache_get_field_content_int(i, "ID");
  30635. DealershipCars[i][dcCompany] = cache_get_field_content_int(i, "Company");
  30636. DealershipCars[i][dcModel] = cache_get_field_content_int(i, "Model");
  30637. DealershipCars[i][dcPrice] = cache_get_field_content_int(i, "Price");
  30638. }
  30639. }
  30640. forward OnLoadATMMachines();
  30641. public OnLoadATMMachines()
  30642. {
  30643. new
  30644. rows = cache_get_row_count(gConnection);
  30645. for (new i = 0; i < rows; i ++)
  30646. {
  30647. ATM[i][atmExists] = 1;
  30648. ATM[i][atmID] = cache_get_field_content_int(i, "atmID");
  30649. ATM[i][atmSpawn][0] = cache_get_field_content_float(i, "atmX");
  30650. ATM[i][atmSpawn][1] = cache_get_field_content_float(i, "atmY");
  30651. ATM[i][atmSpawn][2] = cache_get_field_content_float(i, "atmZ");
  30652. ATM[i][atmSpawn][3] = cache_get_field_content_float(i, "atmA");
  30653. ATM[i][atmInterior] = cache_get_field_content_int(i, "atmInterior");
  30654. ATM[i][atmWorld] = cache_get_field_content_int(i, "atmWorld");
  30655. ATM[i][atmObject] = INVALID_OBJECT_ID;
  30656. ATM[i][atmText] = INVALID_3DTEXT_ID;
  30657. UpdateATM(i);
  30658. }
  30659. printf("(SQL) %i ATM machines loaded.", rows);
  30660. }
  30661. forward OnLoadGasPumps();
  30662. public OnLoadGasPumps()
  30663. {
  30664. new
  30665. rows = cache_get_row_count(gConnection);
  30666. for (new i = 0; i < rows; i ++)
  30667. {
  30668. GasPumps[i][gpExists] = 1;
  30669. GasPumps[i][gpID] = cache_get_field_content_int(i, "gpID");
  30670. GasPumps[i][gpCompany] = cache_get_field_content_int(i, "gpCompany");
  30671. GasPumps[i][gpSpawn][0] = cache_get_field_content_float(i, "gpX");
  30672. GasPumps[i][gpSpawn][1] = cache_get_field_content_float(i, "gpY");
  30673. GasPumps[i][gpSpawn][2] = cache_get_field_content_float(i, "gpZ");
  30674. GasPumps[i][gpSpawn][3] = cache_get_field_content_float(i, "gpA");
  30675. GasPumps[i][gpFuel] = cache_get_field_content_float(i, "gpFuel");
  30676. GasPumps[i][gpObject] = INVALID_OBJECT_ID;
  30677. GasPumps[i][gpText] = INVALID_3DTEXT_ID;
  30678. UpdateGasPump(i);
  30679. }
  30680. printf("(SQL) %i gas pumps loaded.", rows);
  30681. }
  30682. forward OnLoadDropItems();
  30683. public OnLoadDropItems()
  30684. {
  30685. new
  30686. rows = cache_get_row_count(gConnection);
  30687. for (new i = 0; i < rows; i ++)
  30688. {
  30689. cache_get_field_content(i, "itemName", DropItems[i][dName], gConnection, MAX_ITEM_NAME);
  30690. DropItems[i][dExists] = 1;
  30691. DropItems[i][dObject] = INVALID_OBJECT_ID;
  30692. //DropItems[i][dText] = INVALID_3DTEXT_ID;
  30693. DropItems[i][dID] = cache_get_field_content_int(i, "itemID");
  30694. DropItems[i][dValue] = cache_get_field_content_int(i, "itemValue");
  30695. DropItems[i][dSerial] = cache_get_field_content_int(i, "itemSerial");
  30696. DropItems[i][dSpawn][0] = cache_get_field_content_float(i, "itemX");
  30697. DropItems[i][dSpawn][1] = cache_get_field_content_float(i, "itemY");
  30698. DropItems[i][dSpawn][2] = cache_get_field_content_float(i, "itemZ");
  30699. DropItems[i][dSpawn][3] = cache_get_field_content_float(i, "itemA");
  30700. DropItems[i][dInterior] = cache_get_field_content_int(i, "itemInt");
  30701. DropItems[i][dWorld] = cache_get_field_content_int(i, "itemWorld");
  30702. DropItems[i][dOffset][0] = cache_get_field_content_float(i, "itemOffsetX");
  30703. DropItems[i][dOffset][1] = cache_get_field_content_float(i, "itemOffsetY");
  30704. DropItems[i][dOffset][2] = cache_get_field_content_float(i, "itemOffsetZ");
  30705. DropItems[i][dOffset][3] = cache_get_field_content_float(i, "itemOffsetRX");
  30706. DropItems[i][dOffset][4] = cache_get_field_content_float(i, "itemOffsetRY");
  30707. DropItems[i][dOffset][5] = cache_get_field_content_float(i, "itemOffsetRZ");
  30708. UpdateDropItem(i);
  30709. }
  30710. }
  30711. forward OnItemInsertion(playerid, id);
  30712. public OnItemInsertion(playerid, id)
  30713. {
  30714. Inventory[playerid][id][invID] = cache_insert_id(gConnection);
  30715. if (!strcmp(Inventory[playerid][id][invName], "Melee Package"))
  30716. {
  30717. //format(gExecute, sizeof(gExecute), "INSERT INTO rp_crateguns(itemID, gunType, gunQuantity) VALUES(%i, 4, 3), (%i, 5, 3), (%i, 8, 3)", Inventory[playerid][id][invID], Inventory[playerid][id][invID], Inventory[playerid][id][invID]);
  30718. format(gExecute, sizeof(gExecute), "INSERT INTO rp_crateguns(itemID, gunType, gunQuantity) VALUES(%i, 4, 10)", Inventory[playerid][id][invID], Inventory[playerid][id][invID]);
  30719. mysql_tquery(gConnection, gExecute);
  30720. }
  30721. else if (!strcmp(Inventory[playerid][id][invName], "Pistol Package"))
  30722. {
  30723. //format(gExecute, sizeof(gExecute), "INSERT INTO rp_crateguns(itemID, gunType, gunQuantity) VALUES(%i, 22, 3), (%i, 23, 3), (%i, 24, 3)", Inventory[playerid][id][invID], Inventory[playerid][id][invID], Inventory[playerid][id][invID]);
  30724. format(gExecute, sizeof(gExecute), "INSERT INTO rp_crateguns(itemID, gunType, gunQuantity) VALUES(%i, 24, 6), (%i, 22, 6)", Inventory[playerid][id][invID], Inventory[playerid][id][invID]);
  30725. mysql_tquery(gConnection, gExecute);
  30726. }
  30727. else if (!strcmp(Inventory[playerid][id][invName], "Shotgun Package"))
  30728. {
  30729. //format(gExecute, sizeof(gExecute), "INSERT INTO rp_crateguns(itemID, gunType, gunQuantity) VALUES(%i, 25, 3), (%i, 27, 3)", Inventory[playerid][id][invID], Inventory[playerid][id][invID]);
  30730. format(gExecute, sizeof(gExecute), "INSERT INTO rp_crateguns(itemID, gunType, gunQuantity) VALUES(%i, 25, 5)", Inventory[playerid][id][invID]);
  30731. mysql_tquery(gConnection, gExecute);
  30732. }
  30733. else if (!strcmp(Inventory[playerid][id][invName], "SMG Package"))
  30734. {
  30735. //format(gExecute, sizeof(gExecute), "INSERT INTO rp_crateguns(itemID, gunType, gunQuantity) VALUES(%i, 28, 3), (%i, 29, 3), (%i, 32, 3)", Inventory[playerid][id][invID], Inventory[playerid][id][invID], Inventory[playerid][id][invID]);
  30736. format(gExecute, sizeof(gExecute), "INSERT INTO rp_crateguns(itemID, gunType, gunQuantity) VALUES(%i, 28, 5), (%i, 32, 5)", Inventory[playerid][id][invID], Inventory[playerid][id][invID]);
  30737. mysql_tquery(gConnection, gExecute);
  30738. }
  30739. else if (!strcmp(Inventory[playerid][id][invName], "Rifle Package"))
  30740. {
  30741. format(gExecute, sizeof(gExecute), "INSERT INTO rp_crateguns(itemID, gunType, gunQuantity) VALUES(%i, 30, 6), (%i, 31, 2)", Inventory[playerid][id][invID], Inventory[playerid][id][invID]);
  30742. mysql_tquery(gConnection, gExecute);
  30743. }
  30744. }
  30745. forward HideFooterText(playerid);
  30746. public HideFooterText(playerid)
  30747. {
  30748. if (Players[playerid][pFooter])
  30749. {
  30750. Players[playerid][pFooter] = 0;
  30751. KillTimer(Timers[playerid][tFooter]);
  30752. PlayerTextDrawHide(playerid, Players[playerid][pText][5]);
  30753. }
  30754. return 1;
  30755. }
  30756. forward ResetIgnoreTD(playerid);
  30757. public ResetIgnoreTD(playerid)
  30758. {
  30759. Players[playerid][pIgnoreTD] = 0;
  30760. }
  30761. forward OutfitSelected(playerid);
  30762. public OutfitSelected(playerid)
  30763. {
  30764. FadeScreenForPlayer(playerid, FADE_SELECTED_OUTFIT);
  30765. }
  30766. forward DelayKick(playerid);
  30767. public DelayKick(playerid)
  30768. {
  30769. if (gPlayerKicked[playerid])
  30770. {
  30771. Kick(playerid);
  30772. }
  30773. gPlayerKicked[playerid] = 0;
  30774. }
  30775. forward DelayPizzaCP(playerid, house);
  30776. public DelayPizzaCP(playerid, house)
  30777. {
  30778. SetCheckpoint(playerid, CHECKPOINT_JOB, Houses[house][hSpawn][0], Houses[house][hSpawn][1], Houses[house][hSpawn][2], 3.0);
  30779. }
  30780. forward DelayMenuCamera(playerid);
  30781. public DelayMenuCamera(playerid)
  30782. {
  30783. /*SetPlayerPos(playerid, -2354.936279, 140.997024, 39.962245);
  30784. SetPlayerCameraPos(playerid, -2354.936279, 140.997024, 59.962245);
  30785. SetPlayerCameraLookAt(playerid, -2354.436523, 140.980346, 59.866298);*/
  30786. /*SetPlayerPos(playerid, 325.083801, -1651.243774, 82.438415);
  30787. SetPlayerCameraPos(playerid, 325.083801, -1651.243774, 62.438415);
  30788. SetPlayerCameraLookAt(playerid, 325.086883, -1650.751708, 62.368453);*/
  30789. /*SetPlayerPos(playerid, 865.988891, -1446.194458, 89.558654);
  30790. SetPlayerCameraPos(playerid, 865.988891, -1446.194458, 109.558654);
  30791. SetPlayerCameraLookAt(playerid, 866.006225, -1445.694702, 109.517868);*/
  30792. /*SetPlayerPos(playerid, 1658.507080, -1331.544311, 138.326507);
  30793. SetPlayerCameraPos(playerid, 1658.507080, -1331.544311, 158.326507);
  30794. SetPlayerCameraLookAt(playerid, 1657.958374, -1331.390991, 158.264190);*/
  30795. // New camera, bitches! Grime 10/03/2017
  30796. InterpolateCameraPos(playerid, 2267.293212, -1749.706787, 85.525733, 227.958419, -1991.920410, 31.250833, 60000, CAMERA_MOVE);
  30797. InterpolateCameraLookAt(playerid, 2266.793212, -1749.701049, 85.525733, 227.473052, -1991.833496, 31.203359, 60000, CAMERA_MOVE);
  30798. SetPlayerTime(playerid, 0, 0);
  30799. }
  30800. forward OnPlayerLoadWeaponOffsets(playerid);
  30801. public OnPlayerLoadWeaponOffsets(playerid)
  30802. {
  30803. new
  30804. rows = cache_get_row_count(gConnection),
  30805. slot;
  30806. for (new i = 0; i < rows; i ++)
  30807. {
  30808. slot = cache_get_field_content_int(i, "Slot");
  30809. WeaponOffsets[playerid][slot][wBoneID] = cache_get_field_content_int(i, "Bone");
  30810. WeaponOffsets[playerid][slot][wHidden] = cache_get_field_content_int(i, "Hidden");
  30811. WeaponOffsets[playerid][slot][wOffsetX] = cache_get_field_content_float(i, "OffsetX");
  30812. WeaponOffsets[playerid][slot][wOffsetY] = cache_get_field_content_float(i, "OffsetY");
  30813. WeaponOffsets[playerid][slot][wOffsetZ] = cache_get_field_content_float(i, "OffsetZ");
  30814. WeaponOffsets[playerid][slot][wOffsetRX] = cache_get_field_content_float(i, "OffsetRX");
  30815. WeaponOffsets[playerid][slot][wOffsetRY] = cache_get_field_content_float(i, "OffsetRY");
  30816. WeaponOffsets[playerid][slot][wOffsetRZ] = cache_get_field_content_float(i, "OffsetRZ");
  30817. }
  30818. UpdateWeaponHolster(playerid);
  30819. }
  30820. forward OnPlayerLoadAccessories(playerid);
  30821. public OnPlayerLoadAccessories(playerid)
  30822. {
  30823. new
  30824. rows = cache_get_row_count(gConnection);
  30825. for (new i = 0; i < rows; i ++)
  30826. {
  30827. cache_get_field_content(i, "aName", Accessories[playerid][i][aName], gConnection, 32);
  30828. Accessories[playerid][i][aExists] = 1;
  30829. Accessories[playerid][i][aID] = cache_get_field_content_int(i, "aID");
  30830. Accessories[playerid][i][aModel] = cache_get_field_content_int(i, "aModel");
  30831. Accessories[playerid][i][aBone] = cache_get_field_content_int(i, "aBone");
  30832. Accessories[playerid][i][aOffset][0] = cache_get_field_content_float(i, "aX");
  30833. Accessories[playerid][i][aOffset][1] = cache_get_field_content_float(i, "aY");
  30834. Accessories[playerid][i][aOffset][2] = cache_get_field_content_float(i, "aZ");
  30835. Accessories[playerid][i][aOffset][3] = cache_get_field_content_float(i, "aRX");
  30836. Accessories[playerid][i][aOffset][4] = cache_get_field_content_float(i, "aRY");
  30837. Accessories[playerid][i][aOffset][5] = cache_get_field_content_float(i, "aRZ");
  30838. Accessories[playerid][i][aOffset][6] = cache_get_field_content_float(i, "aSX");
  30839. Accessories[playerid][i][aOffset][7] = cache_get_field_content_float(i, "aSY");
  30840. Accessories[playerid][i][aOffset][8] = cache_get_field_content_float(i, "aSZ");
  30841. if(!strcmp(Accessories[playerid][i][aName], "None", true))
  30842. {
  30843. strcpy(Accessories[playerid][i][aName], GetAccessoryName(playerid, i), 32);
  30844. mysql_format(gConnection, gExecute, sizeof(gExecute), "UPDATE rp_accessories SET aName = '%e' WHERE aID = %i", Accessories[playerid][i][aName], Accessories[playerid][i][aID]);
  30845. mysql_tquery(gConnection, gExecute);
  30846. }
  30847. }
  30848. }
  30849. forward OnPlayerLoadBank(playerid);
  30850. public OnPlayerLoadBank(playerid)
  30851. {
  30852. new
  30853. rows = cache_get_row_count(gConnection);
  30854. for (new i = 0; i < rows; i ++)
  30855. {
  30856. cache_get_field_content(i, "bankName", BankAccounts[playerid][i][bankName], gConnection, 32);
  30857. BankAccounts[playerid][i][bankExists] = 1;
  30858. BankAccounts[playerid][i][bankID] = cache_get_field_content_int(i, "bankID");
  30859. BankAccounts[playerid][i][bankBalance] = cache_get_field_content_int(i, "bankBalance");
  30860. }
  30861. }
  30862. forward OnPlayerLoadItems(playerid);
  30863. public OnPlayerLoadItems(playerid)
  30864. {
  30865. new
  30866. rows = cache_get_row_count(gConnection);
  30867. for (new i = 0; i < rows; i ++)
  30868. {
  30869. cache_get_field_content(i, "itemName", Inventory[playerid][i][invName], gConnection, MAX_ITEM_NAME);
  30870. Inventory[playerid][i][invExists] = 1;
  30871. Inventory[playerid][i][invID] = cache_get_field_content_int(i, "itemID");
  30872. Inventory[playerid][i][invValue] = cache_get_field_content_int(i, "itemValue");
  30873. Inventory[playerid][i][invSerial] = cache_get_field_content_int(i, "itemSerial");
  30874. Inventory[playerid][i][invOffset][0] = cache_get_field_content_float(i, "itemOffsetX");
  30875. Inventory[playerid][i][invOffset][1] = cache_get_field_content_float(i, "itemOffsetY");
  30876. Inventory[playerid][i][invOffset][2] = cache_get_field_content_float(i, "itemOffsetZ");
  30877. Inventory[playerid][i][invOffset][3] = cache_get_field_content_float(i, "itemOffsetRX");
  30878. Inventory[playerid][i][invOffset][4] = cache_get_field_content_float(i, "itemOffsetRY");
  30879. Inventory[playerid][i][invOffset][5] = cache_get_field_content_float(i, "itemOffsetRZ");
  30880. }
  30881. }
  30882. forward OnPlayerAttemptLogin(playerid);
  30883. public OnPlayerAttemptLogin(playerid)
  30884. {
  30885. new
  30886. rows = cache_get_row_count(gConnection);
  30887. if (rows > 0)
  30888. {
  30889. //ShowLoginTextDraws(playerid, false);
  30890. cache_get_field_content(0, "Registered", Players[playerid][pRegistered], gConnection, 32);
  30891. cache_get_field_content(0, "Origin", Players[playerid][pOrigin], gConnection, 24);
  30892. cache_get_field_content(0, "AdminName", Players[playerid][pAdminName], gConnection, 24);
  30893. cache_get_field_content(0, "AdminTitle", Players[playerid][pAdminTitle], gConnection, 24);
  30894. cache_get_field_content(0, "GPCI", Players[playerid][pGPCI], gConnection, 24);
  30895. cache_get_field_content(0, "ReportReason", Players[playerid][pReportReason], gConnection, 64);
  30896. Players[playerid][pID] = cache_get_field_content_int(0, "ID");
  30897. Players[playerid][pSetupInfo] = cache_get_field_content_int(0, "SetupInfo");
  30898. Players[playerid][pGender] = cache_get_field_content_int(0, "Gender");
  30899. Players[playerid][pAge] = cache_get_field_content_int(0, "Age");
  30900. Players[playerid][pSkin] = cache_get_field_content_int(0, "Skin");
  30901. Players[playerid][pUniform] = cache_get_field_content_int(0, "Uniform");
  30902. Players[playerid][pSpawn][0] = cache_get_field_content_float(0, "SpawnX");
  30903. Players[playerid][pSpawn][1] = cache_get_field_content_float(0, "SpawnY");
  30904. Players[playerid][pSpawn][2] = cache_get_field_content_float(0, "SpawnZ");
  30905. Players[playerid][pSpawn][3] = cache_get_field_content_float(0, "SpawnA");
  30906. Players[playerid][pHealth] = cache_get_field_content_float(0, "Health");
  30907. Players[playerid][pArmor] = cache_get_field_content_float(0, "Armor");
  30908. Players[playerid][pInterior] = cache_get_field_content_int(0, "Interior");
  30909. Players[playerid][pWorld] = cache_get_field_content_int(0, "World");
  30910. Players[playerid][pTraveled] = cache_get_field_content_float(0, "Traveled");
  30911. Players[playerid][pPocketMoney] = cache_get_field_content_int(0, "PocketMoney");
  30912. Players[playerid][pBankMoney] = cache_get_field_content_int(0, "BankMoney");
  30913. Players[playerid][pSavingsMoney] = cache_get_field_content_int(0, "SavingsMoney");
  30914. Players[playerid][pAdmin] = cache_get_field_content_int(0, "Admin");
  30915. Players[playerid][pMapper] = cache_get_field_content_int(0, "Mapper");
  30916. Players[playerid][pJailType] = cache_get_field_content_int(0, "JailType");
  30917. Players[playerid][pJailTime] = cache_get_field_content_int(0, "JailTime");
  30918. Players[playerid][pMuted] = cache_get_field_content_int(0, "Muted");
  30919. Players[playerid][pFitness] = cache_get_field_content_int(0, "Fitness");
  30920. Players[playerid][pMinutes] = cache_get_field_content_int(0, "Minutes");
  30921. Players[playerid][pHoursOnline] = cache_get_field_content_int(0, "HoursOnline");
  30922. Players[playerid][pJob] = cache_get_field_content_int(0, "Job");
  30923. Players[playerid][pJobPaycheck] = cache_get_field_content_int(0, "JobPaycheck");
  30924. Players[playerid][pPaycheck] = cache_get_field_content_int(0, "Paycheck");
  30925. Players[playerid][pWorkoutTime] = cache_get_field_content_int(0, "WorkoutTime");
  30926. Players[playerid][pGymMembership] = cache_get_field_content_int(0, "GymMembership");
  30927. Players[playerid][pPhone] = cache_get_field_content_int(0, "Phone");
  30928. Players[playerid][pPhoneLastKnown] = cache_get_field_content_int(0, "PhoneLastKnown");
  30929. Players[playerid][pPhoneOff] = cache_get_field_content_int(0, "PhoneOff");
  30930. Players[playerid][pDeathState] = cache_get_field_content_int(0, "DeathState");
  30931. Players[playerid][pHospital] = cache_get_field_content_int(0, "Hospital");
  30932. Players[playerid][pShowPM] = cache_get_field_content_int(0, "ShowPM");
  30933. Players[playerid][pShowSpeed] = cache_get_field_content_int(0, "ShowSpeed");
  30934. Players[playerid][pShowFuel] = cache_get_field_content_int(0, "ShowFuel");
  30935. Players[playerid][pShowTime] = cache_get_field_content_int(0, "ShowTime");
  30936. Players[playerid][pShowOOC] = cache_get_field_content_int(0, "ShowOOC");
  30937. Players[playerid][pShowReports] = cache_get_field_content_int(0, "ShowReports");
  30938. Players[playerid][pShowAdmin] = cache_get_field_content_int(0, "ShowAdmin");
  30939. Players[playerid][pShowSupporter] = cache_get_field_content_int(0, "ShowSupporter");
  30940. Players[playerid][pBleeding] = cache_get_field_content_int(0, "Bleeding");
  30941. Players[playerid][pPaymentType] = cache_get_field_content_int(0, "PaymentType");
  30942. Players[playerid][pBankAccount] = cache_get_field_content_int(0, "BankAccount");
  30943. Players[playerid][pSupporter] = cache_get_field_content_int(0, "Supporter");
  30944. Players[playerid][pVeteran] = cache_get_field_content_int(0, "Veteran");
  30945. Players[playerid][pFactionMod] = cache_get_field_content_int(0, "FactionMod");
  30946. Players[playerid][pFactionID] = cache_get_field_content_int(0, "FactionID");
  30947. Players[playerid][pFactionRank] = cache_get_field_content_int(0, "FactionRank");
  30948. Players[playerid][pFactionLeader] = cache_get_field_content_int(0, "FactionLeader");
  30949. Players[playerid][pWarrants] = cache_get_field_content_int(0, "Warrants");
  30950. Players[playerid][pCharges] = cache_get_field_content_int(0, "Charges");
  30951. Players[playerid][pPackageOrder] = cache_get_field_content_int(0, "PackageOrder");
  30952. Players[playerid][pPackageType] = cache_get_field_content_int(0, "PackageType");
  30953. Players[playerid][pPackageGrams] = cache_get_field_content_int(0, "PackageGrams");
  30954. Players[playerid][pPackageTime] = cache_get_field_content_int(0, "PackageTime");
  30955. Players[playerid][pCarLicense] = cache_get_field_content_int(0, "CarLicense");
  30956. Players[playerid][pGunLicense] = cache_get_field_content_int(0, "GunLicense");
  30957. Players[playerid][pAdTime] = cache_get_field_content_int(0, "AdTime");
  30958. Players[playerid][pRentHouse] = cache_get_field_content_int(0, "RentHouse");
  30959. Players[playerid][pMaskID] = cache_get_field_content_int(0, "MaskID");
  30960. Players[playerid][pHideAdmin] = cache_get_field_content_int(0, "HideAdmin");
  30961. Players[playerid][pBrokenLeg] = cache_get_field_content_int(0, "BrokenLeg");
  30962. Players[playerid][pChatStyle] = cache_get_field_content_int(0, "ChatStyle");
  30963. Players[playerid][pWalkStyle] = cache_get_field_content_int(0, "WalkStyle");
  30964. Players[playerid][pChannel] = cache_get_field_content_int(0, "Channel");
  30965. Players[playerid][pDonator] = cache_get_field_content_int(0, "Donator");
  30966. Players[playerid][pExpiryDate] = cache_get_field_content_int(0, "ExpiryDate");
  30967. Players[playerid][pNameChanges] = cache_get_field_content_int(0, "NameChanges");
  30968. Players[playerid][pBadge] = cache_get_field_content_int(0, "Badge");
  30969. Players[playerid][pSpawnType] = cache_get_field_content_int(0, "SpawnType");
  30970. Players[playerid][pSpawnExtra] = cache_get_field_content_int(0, "SpawnExtra");
  30971. Players[playerid][pCrashed] = cache_get_field_content_int(0, "Crashed");
  30972. Players[playerid][pDuty] = cache_get_field_content_int(0, "Duty");
  30973. Players[playerid][pActivated] = cache_get_field_content_int(0, "pActivated");
  30974. Players[playerid][pBeingReported] = cache_get_field_content_int(0, "BeingReported");
  30975. Weapons[playerid][wMelee] = cache_get_field_content_int(0, "Melee");
  30976. Weapons[playerid][wPrimary] = cache_get_field_content_int(0, "PrimaryGun");
  30977. Weapons[playerid][wPrimaryAmmo] = cache_get_field_content_int(0, "PrimaryAmmo");
  30978. Weapons[playerid][wPrimarySerial] = cache_get_field_content_int(0, "PrimarySerial");
  30979. Weapons[playerid][wSecondary] = cache_get_field_content_int(0, "SecondaryGun");
  30980. Weapons[playerid][wSecondaryAmmo] = cache_get_field_content_int(0, "SecondaryAmmo");
  30981. Weapons[playerid][wSecondarySerial] = cache_get_field_content_int(0, "SecondarySerial");
  30982. Statistics[playerid][sHotwired] = cache_get_field_content_int(0, "TotalHotwired");
  30983. Statistics[playerid][sRentals] = cache_get_field_content_int(0, "TotalRentals");
  30984. Statistics[playerid][sHospitalFees] = cache_get_field_content_int(0, "HospitalFees");
  30985. Statistics[playerid][sItemsUsed] = cache_get_field_content_int(0, "ItemsUsed");
  30986. Statistics[playerid][sItemsDropped] = cache_get_field_content_int(0, "ItemsDropped");
  30987. Statistics[playerid][sItemsPicked] = cache_get_field_content_int(0, "ItemsPicked");
  30988. Statistics[playerid][sDistanceRan] = cache_get_field_content_int(0, "DistanceRan");
  30989. Statistics[playerid][sTotalReps] = cache_get_field_content_int(0, "TotalReps");
  30990. Statistics[playerid][sHouses] = cache_get_field_content_int(0, "TotalHouses");
  30991. Statistics[playerid][sCompanies] = cache_get_field_content_int(0, "TotalCompanies");
  30992. Statistics[playerid][sVehicles] = cache_get_field_content_int(0, "TotalVehicles");
  30993. Statistics[playerid][sFurnitureFees] = cache_get_field_content_int(0, "FurnitureFees");
  30994. Statistics[playerid][sTotalWarrants] = cache_get_field_content_int(0, "TotalWarrants");
  30995. Statistics[playerid][sFurnitureFees] = cache_get_field_content_int(0, "FurnitureFees");
  30996. Statistics[playerid][sTotalWarrants] = cache_get_field_content_int(0, "TotalWarrants");
  30997. Statistics[playerid][sReports] = cache_get_field_content_int(0, "Reports");
  30998. Statistics[playerid][sHelpRequests] = cache_get_field_content_int(0, "HelpRequests");
  30999. Players[playerid][pLoggedIn] = 1;
  31000. Players[playerid][pActivated] = 1;
  31001. Players[playerid][pSetupInfo] = 1;
  31002. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET Online = 1, LoginDate = NOW(), IP = '%s' WHERE ID = %i", ReturnIP(playerid), Players[playerid][pID]);
  31003. mysql_tquery(gConnection, gExecute);
  31004. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_items WHERE itemOwner = %i LIMIT %i", Players[playerid][pID], MAX_INVENTORY_ITEMS);
  31005. mysql_tquery(gConnection, gExecute, "OnPlayerLoadItems", "i", playerid);
  31006. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_bankaccounts WHERE ID = %i LIMIT %i", Players[playerid][pID], MAX_BANK_ACCOUNTS);
  31007. mysql_tquery(gConnection, gExecute, "OnPlayerLoadBank", "i", playerid);
  31008. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_accessories WHERE ID = %i LIMIT %i", Players[playerid][pID], MAX_ACCESSORIES);
  31009. mysql_tquery(gConnection, gExecute, "OnPlayerLoadAccessories", "i", playerid);
  31010. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_weaponoffsets WHERE ID = %i", Players[playerid][pID]);
  31011. mysql_tquery(gConnection, gExecute, "OnPlayerLoadWeaponOffsets", "i", playerid);
  31012. #if defined CHEMICAL_SYSTEM
  31013. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_chemical WHERE Owner = %i LIMIT %i", Players[playerid][pID], MAX_CHEMICAL);
  31014. mysql_tquery(gConnection, gExecute, "Chemical_Load", "i", playerid);
  31015. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_drugs WHERE Owner = %i LIMIT %i", Players[playerid][pID], MAX_DRUGS);
  31016. mysql_tquery(gConnection, gExecute, "Drugs_Load", "i", playerid);
  31017. #endif
  31018. SyncTimeForPlayer(playerid);
  31019. if (!Players[playerid][pActivated])
  31020. {
  31021. }
  31022. else
  31023. {
  31024. if(CheckAdmin(playerid, 1))
  31025. {
  31026. SendInfoMessage(playerid, "{CFCFCF}You have logged in as a level %i administrator!", Players[playerid][pAdmin]);
  31027. if (!IsAdminNameSetup(playerid))
  31028. {
  31029. SendInfoMessage(playerid, "It is recommended that you set your admin name now (/adminname).");
  31030. }
  31031. }
  31032. if (Players[playerid][pFactionID] > 0 && (Players[playerid][pFaction] = GetPlayerFactionID(playerid)) == INVALID_ID)
  31033. {
  31034. SendInfoMessage(playerid, "The faction you were a member of has been deleted.");
  31035. ResetFactionInfo(playerid);
  31036. }
  31037. if (Players[playerid][pFaction] != INVALID_ID && Players[playerid][pFactionRank] > Factions[Players[playerid][pFaction]][fcMaxRanks])
  31038. {
  31039. Players[playerid][pFactionRank] = Factions[Players[playerid][pFaction]][fcMaxRanks];
  31040. }
  31041. if (Players[playerid][pPackageOrder] != PACKAGE_TYPE_NONE)
  31042. {
  31043. SetTimerEx("PackageReady", 300000, false, "iiii", playerid, Players[playerid][pFaction], Players[playerid][pPackageOrder], GetPackagePrice(Players[playerid][pPackageOrder]));
  31044. }
  31045. else if (Players[playerid][pPackageType] != PACKAGE_TYPE_NONE)
  31046. {
  31047. SendInfoMessage(playerid, "Hint: Use /locatepackage to find the location of your package.");
  31048. }
  31049. SetSpawnInfo(playerid, NO_TEAM, Players[playerid][pSkin], Players[playerid][pSpawn][0], Players[playerid][pSpawn][1], Players[playerid][pSpawn][2], Players[playerid][pSpawn][3], 0, 0, 0, 0, 0, 0);
  31050. TogglePlayerSpectating(playerid, 0);
  31051. if(Players[playerid][pBeingReported] == 1)
  31052. {
  31053. new sendReportInfo[128];
  31054. format(sendReportInfo, sizeof(sendReportInfo), "Hello, you are being reported on the forums, the following reason(s) below:\n%s", Players[playerid][pReportReason]);
  31055. Dialog_Show(playerid, BEINGREPORTED, DIALOG_STYLE_MSGBOX, "You are being reported.", sendReportInfo, "Close", "");
  31056. Players[playerid][pBeingReported] = 0; // set it to 0 since he saw this dialog.
  31057. }
  31058. new Float:x, Float:y, Float:z;
  31059. GetPlayerPos(playerid, x, y, z);
  31060. //gpci(playerid, Players[playerid][pGPCI], sizeof(Players[playerid][pGPCI]));
  31061. strcpy(Players[playerid][pGPCI], ReturnGPCI(playerid), 41);
  31062. //strcpy(Players[playerid][pOrigin], inputtext, 24);
  31063. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET GPCI = '%s' WHERE Username = '%s'", ReturnGPCI(playerid), ReturnName(playerid));
  31064. mysql_tquery(gConnection, gExecute);
  31065. new log[128];
  31066. format(log, sizeof(log), "%s (%s) has joined the server (%.2f, %.2f, %.2f)", ReturnName(playerid), Players[playerid][pIP], x, y, z);
  31067. CreateLog("logging", log);
  31068. if(Players[playerid][pDuty] && Players[playerid][pCrashed])
  31069. {
  31070. switch(GetPlayerFactionType(playerid))
  31071. {
  31072. case FACTION_LEO, FACTION_MEDICAL, FACTION_GOVERNMENT, FACTION_NEWS:
  31073. {
  31074. SendFactionMessage(Players[playerid][pFaction], COLOR_RADIO, "** HQ: %s %s is now back on duty. (Crashed)", GetPlayerFactionRank(playerid), ReturnNameEx(playerid));
  31075. }
  31076. default:
  31077. {
  31078. Players[playerid][pDuty] = 0;
  31079. }
  31080. }
  31081. }
  31082. else
  31083. {
  31084. Players[playerid][pDuty] = 0;
  31085. }
  31086. }
  31087. }
  31088. else
  31089. {
  31090. printf("(SQL) Failed login attempt from %s (IP: %s).", ReturnName(playerid), ReturnIP(playerid));
  31091. Dialog_Show(playerid, AccountLogin, DIALOG_STYLE_PASSWORD, "WCRPG", "Incorrect password!\n\n{FFFFFF}This account is {33AA33}registered.\n{FFFFFF}Please enter your password below in order to authenticate:", "Submit", "Quit");
  31092. }
  31093. }
  31094. ReturnGPCI(playerid)
  31095. {
  31096. new
  31097. szSerial[41];
  31098. gpci(playerid, szSerial, sizeof(szSerial));
  31099. return szSerial;
  31100. }
  31101. forward OnPlayerRegister(playerid);
  31102. public OnPlayerRegister(playerid)
  31103. {
  31104. new
  31105. iInsertID = cache_insert_id(gConnection);
  31106. Server[Accounts]++;
  31107. if (iInsertID)
  31108. {
  31109. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_accounts WHERE ID = %i", iInsertID);
  31110. mysql_tquery(gConnection, gExecute, "OnPlayerAttemptLogin", "i", playerid);
  31111. }
  31112. SaveInformation();
  31113. }
  31114. forward OnBlacklistCheck(playerid);
  31115. public OnBlacklistCheck(playerid)
  31116. {
  31117. new
  31118. rows = cache_get_row_count(gConnection);
  31119. if (rows)
  31120. {
  31121. new
  31122. bannedBy[MAX_PLAYER_NAME],
  31123. banDate[32],
  31124. banReason[128];
  31125. cache_get_field_content(0, "BannedBy", bannedBy, gConnection);
  31126. cache_get_field_content(0, "Date", banDate, gConnection);
  31127. cache_get_field_content(0, "Reason", banReason, gConnection);
  31128. Dialog_Show(playerid, Banned, DIALOG_STYLE_MSGBOX, "{FFFFFF}You are banned!", "You are banned from this server.\n\nAdmin: %s\nDate: %s\nReason: %s\n\nYou can appeal this ban on our website at %s.", "Close", "", bannedBy, banDate, banReason, SERVER_WEBSITE);
  31129. KickPlayer(playerid);
  31130. }
  31131. else
  31132. {
  31133. format(gExecute, sizeof(gExecute), "SELECT ID FROM rp_accounts WHERE Username = '%s'", ReturnName(playerid));
  31134. mysql_tquery(gConnection, gExecute, "OnAccountSearch", "i", playerid);
  31135. }
  31136. }
  31137. forward OnAccountSearch(playerid);
  31138. public OnAccountSearch(playerid)
  31139. {
  31140. new
  31141. rows = cache_get_row_count(gConnection);
  31142. Players[playerid][pID] = 0;
  31143. if (rows)
  31144. {
  31145. Dialog_Show(playerid, AccountLogin, DIALOG_STYLE_PASSWORD, "WCRPG", "{FFFFFF}This account is {33AA33}registered.\n{FFFFFF}Please enter your password below in order to authenticate:", "Submit", "Quit");
  31146. }
  31147. else
  31148. {
  31149. Dialog_Show(playerid, AccountCreate, DIALOG_STYLE_PASSWORD, "WCRPG Registration", "{FFFFFF}Your name is currently not registered!\nPlease enter a safe and secure password below to register with your master account:.", "Submit", "Quit");
  31150. }
  31151. }
  31152. //ShowLoginTextDraws(playerid, true);
  31153. public OnPlayerFadeComplete(playerid, extraid)
  31154. {
  31155. // Added to fix that annoying "H" bug -> 06/01/2015
  31156. StopScreenFade(playerid);
  31157. if (extraid == FADE_CHOOSE_SKIN)
  31158. {
  31159. TogglePlayerSpectating(playerid, 0);
  31160. SetSpawnInfo(playerid, NO_TEAM, Players[playerid][pSkin], 0.0, 0.0, 1000.0, 0.0, 0, 0, 0, 0, 0, 0);
  31161. }
  31162. else if (extraid == FADE_SELECTED_OUTFIT)
  31163. {
  31164. Players[playerid][pGender] = GetSkinGender(Players[playerid][pSkin]);
  31165. FlushChatForPlayer(playerid);
  31166. SetCameraBehindPlayer(playerid);
  31167. PlayerTextDrawHide(playerid, Players[playerid][pText][0]);
  31168. SpawnPlayer(playerid);
  31169. }
  31170. else if(extraid == FADE_START_QUIZ) //tobefinished
  31171. {
  31172. SetPVarInt(playerid, "Muted", 1);
  31173. currentQuestion[playerid] = 0;
  31174. SCM(playerid, COLOR_LIGHTRED, "To be allowed access to WCRPG Roleplay, you must complete a simple and easy quiz.");
  31175. SCM(playerid, COLOR_LIGHTRED, "This quiz combines basic roleplay terms, and a few basic server rules.");
  31176. Dialog_Show(playerid, QuizQuestion, DIALOG_STYLE_INPUT, "{FFFFFF}Server Quiz (Question: 1)", "{FFFFFF}In your own words, how would you define the term roleplay?\n\nYou can make this question as simple, or complex as you'd like.\n\n{FF0000}WARNING: {FFFFFF}Hitting 'Cancel' will disconnect you from the server.", "Enter", "Cancel");
  31177. }
  31178. else if (extraid == FADE_SET_POSITION)
  31179. {
  31180. SetTimerEx("OnFadeSetPosition", 200, false, "i", playerid);
  31181. }
  31182. else if (extraid == FADE_BUY_OUTFIT)
  31183. {
  31184. SetupOutfitSelection(playerid);
  31185. SendInfoMessage(playerid, "Use the arrow keys to browse between outfits. Press N to cancel and ENTER to purchase.");
  31186. }
  31187. return 1;
  31188. }
  31189. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  31190. {
  31191. foreach (new i : Player)
  31192. {
  31193. if (GetPlayerState(i) == PLAYER_STATE_SPECTATING && Players[i][pSpectate] == playerid)
  31194. {
  31195. SetPlayerInterior(i, newinteriorid);
  31196. SetPlayerVirtualWorld(i, GetPlayerVirtualWorld(playerid));
  31197. }
  31198. }
  31199. if (newinteriorid != 0) {
  31200. SetPlayerTime(playerid, 12, 12);
  31201. }
  31202. else if (newinteriorid == 0) {
  31203. SyncTimeForPlayer(playerid);
  31204. }
  31205. return 1;
  31206. }
  31207. public OnUnoccupiedVehicleUpdate(vehicleid, playerid, passenger_seat, Float:new_x, Float:new_y, Float:new_z, Float:vel_x, Float:vel_y, Float:vel_z)
  31208. {
  31209. if (GetVehicleDistanceFromPoint(vehicleid, new_x, new_y, new_z) > 50)
  31210. {
  31211. return 0;
  31212. }
  31213. return 1;
  31214. }
  31215. public OnPlayerStateChange(playerid, newstate, oldstate)
  31216. {
  31217. if (IsPlayerNPC(playerid)) return 1;
  31218. if (newstate == PLAYER_STATE_DRIVER)
  31219. {
  31220. new
  31221. vehicleid = GetPlayerVehicleID(playerid),
  31222. id = GetVehicleID(vehicleid);
  31223. SetPlayerArmedWeapon(playerid, 0);
  31224. if (!VehicleInformation[vehicleid][vInit])
  31225. {
  31226. SetupVehicle(vehicleid);
  31227. }
  31228. if (id != INVALID_ID)
  31229. {
  31230. if (Vehicles[id][vRentable] && Vehicles[id][vRenter] == INVALID_PLAYER_ID)
  31231. {
  31232. Dialog_Show(playerid, RentVehicle, DIALOG_STYLE_MSGBOX, "{FFFFFF}Rent vehicle", "Would you like to rent this vehicle for {00FF00}%s{AAC4E5}.\nClick on the buttons below to make your decision.", "Yes", "No", FormatNumber(Vehicles[id][vPrice]));
  31233. }
  31234. if (Vehicles[id][vFaction] != 0 && Players[playerid][pFactionID] != Vehicles[id][vFaction])
  31235. {
  31236. RemovePlayerFromVehicle(playerid);
  31237. SendInfoMessage(playerid, "{CFCFCF} This vehicle belongs to an official faction.");
  31238. return 1;
  31239. }
  31240. }
  31241. if (!IsPoweredVehicle(vehicleid))
  31242. {
  31243. SetEngineStatus(vehicleid, 1);
  31244. }
  31245. else
  31246. {
  31247. if (IsTestVehicle(vehicleid) && !Players[playerid][pDrivingTest])
  31248. {
  31249. RemovePlayerFromVehicle(playerid);
  31250. SendInfoMessage(playerid, "You need to be taking the driving test to use this vehicle.");
  31251. return 1;
  31252. }
  31253. if (GetVehicleJobType(vehicleid) != JOB_NONE && Players[playerid][pJob] != GetVehicleJobType(vehicleid))
  31254. {
  31255. RemovePlayerFromVehicle(playerid);
  31256. SendInfoMessage(playerid, "You need to have the correct job to use this vehicle.");
  31257. return 1;
  31258. }
  31259. if (!GetEngineStatus(vehicleid))
  31260. {
  31261. SendInfoMessage(playerid, "{CFCFCF}The engine is not running. Use {33AA33}/engine{CFCFCF} to turn on the engine.");
  31262. }
  31263. if (!Players[playerid][pCarLicense] && !Players[playerid][pDrivingTest])
  31264. {
  31265. SendInfoMessage(playerid, "{CFCFCF}(Warning) You are driving without a license!");
  31266. }
  31267. if (!Players[playerid][pWorking] && ( (Players[playerid][pJob] == JOB_FORKLIFTER && GetVehicleModel(GetPlayerVehicleID(playerid)) == 530) || (Players[playerid][pJob] == JOB_PIZZA && GetVehicleModel(GetPlayerVehicleID(playerid)) == 448) ))
  31268. {
  31269. SendInfoMessage(playerid, "Use /work if you wish to begin working.");
  31270. Players[playerid][pWorkVehicle] = vehicleid;
  31271. }
  31272. if (Players[playerid][pShowFuel])
  31273. {
  31274. ShowFuelGauge(playerid, true);
  31275. }
  31276. if (Players[playerid][pShowSpeed])
  31277. {
  31278. ShowSpeedometer(playerid, true);
  31279. }
  31280. if (Players[playerid][pDrivingTest] && IsTestVehicle(vehicleid))
  31281. {
  31282. SetPlayerCheckpoint(playerid, g_TestCheckpoints[0][0], g_TestCheckpoints[0][1], g_TestCheckpoints[0][2], 3.0);
  31283. SendInfoMessage(playerid, "Drive through the markers to proceed with the test.");
  31284. }
  31285. }
  31286. SetPlayerArmedWeapon(playerid, 0);
  31287. }
  31288. else if (oldstate == PLAYER_STATE_DRIVER)
  31289. {
  31290. if (IsValidVehicle(Players[playerid][pAddVehicle]))
  31291. {
  31292. DestroyVehicleEx(Players[playerid][pAddVehicle]);
  31293. Players[playerid][pAddVehicle] = INVALID_VEHICLE_ID;
  31294. }
  31295. ResetHotwiring(playerid);
  31296. ShowFuelGauge(playerid, false);
  31297. ShowSpeedometer(playerid, false);
  31298. }
  31299. else if (newstate == PLAYER_STATE_PASSENGER)
  31300. {
  31301. new
  31302. driverid = GetVehicleDriver(GetPlayerVehicleID(playerid));
  31303. if (driverid != INVALID_PLAYER_ID)
  31304. {
  31305. if (Players[driverid][pJob] == JOB_TAXI && IsPlayerInTaxi(driverid) && !Players[driverid][pPassenger])
  31306. {
  31307. SendInfoMessage(playerid, "You have entered %s's taxi. Please state your destination.", ReturnNameEx(driverid));
  31308. SendInfoMessage(driverid, "%s has entered your taxi.", ReturnNameEx(playerid));
  31309. Players[driverid][pPassenger] = 1;
  31310. Players[playerid][pInsideTaxi] = driverid;
  31311. Players[playerid][pTaxiMeter] = 1;
  31312. }
  31313. }
  31314. switch (GetPlayerWeapon(playerid))
  31315. {
  31316. case 22, 25, 28, 29, 30, 31, 32:
  31317. SetPlayerArmedWeapon(playerid, GetPlayerWeapon(playerid));
  31318. default:
  31319. SetPlayerArmedWeapon(playerid, 0);
  31320. }
  31321. }
  31322. else if (oldstate == PLAYER_STATE_PASSENGER)
  31323. {
  31324. if (Players[playerid][pInsideTaxi] != INVALID_PLAYER_ID)
  31325. {
  31326. OnPlayerExitTaxi(playerid);
  31327. }
  31328. }
  31329. if (newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
  31330. {
  31331. new tick = NetStats_GetConnectedTime(playerid);
  31332. if ((GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_CARRY) || Players[playerid][pDeathState] == DEATH_STATE_INJURED && GetVehicleModel(GetPlayerVehicleID(playerid)) != 416)
  31333. {
  31334. new Float:x, Float:y, Float:z;
  31335. GetPlayerPos(playerid, x, y, z);
  31336. SetPlayerPos(playerid, x, y, z + 1.0);
  31337. }
  31338. foreach (new i : Player)
  31339. {
  31340. if (GetPlayerState(i) == PLAYER_STATE_SPECTATING && Players[i][pSpectate] == playerid)
  31341. {
  31342. PlayerSpectateVehicle(i, GetPlayerVehicleID(playerid));
  31343. }
  31344. }
  31345. if (Players[playerid][pEnterTime] > 0 && (tick - Players[playerid][pEnterTime]) < 1000)
  31346. {
  31347. SendAdminMessage(COLOR_RED, "Admin: %s was kicked for possible vehicle warping.", ReturnNameEx(playerid));
  31348. KickPlayer(playerid);
  31349. }
  31350. Players[playerid][pEnterTime] = tick;
  31351. gLastVehicleID[playerid] = GetPlayerVehicleID(playerid);
  31352. }
  31353. else if (oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER)
  31354. {
  31355. new vehicle = GetVehicleID(gLastVehicleID[playerid]);
  31356. if (vehicle != INVALID_ID && Vehicles[vehicle][vRentable] && Vehicles[vehicle][vRenter] == INVALID_PLAYER_ID)
  31357. {
  31358. SetVehicleToRespawn(Vehicles[vehicle][vVehicle]);
  31359. }
  31360. if (Players[playerid][pHandcuffed])
  31361. {
  31362. SetPlayerSpecialAction(playerid, SPECIAL_ACTION_CUFFED);
  31363. }
  31364. foreach (new i : Player)
  31365. {
  31366. if (GetPlayerState(i) == PLAYER_STATE_SPECTATING && Players[i][pSpectate] == playerid)
  31367. {
  31368. PlayerSpectatePlayer(i, playerid);
  31369. }
  31370. }
  31371. if (Players[playerid][pVehicleColor] != INVALID_ID)
  31372. {
  31373. ChangeVehicleColor(Vehicles[Players[playerid][pVehicleColor]][vID], Vehicles[Players[playerid][pVehicleColor]][vColor1], Vehicles[Players[playerid][pVehicleColor]][vColor2]);
  31374. Players[playerid][pVehicleColor] = INVALID_ID;
  31375. }
  31376. }
  31377. return 1;
  31378. }
  31379. public OnPlayerText(playerid, text[])
  31380. {
  31381. new vehicleid = GetPlayerVehicleID(playerid);
  31382. new string[128];
  31383. if (!IsValidInput(text) || !IsPlayerLoggedIn(playerid) || Players[playerid][pMuted] || Players[playerid][pFainted] || !Players[playerid][pSetupInfo] || Players[playerid][pDeathState] == DEATH_STATE_HOSPITAL)
  31384. {
  31385. return 0;
  31386. }
  31387. else if (Players[playerid][pSpectate] != INVALID_PLAYER_ID)
  31388. {
  31389. return 0;
  31390. }
  31391. else
  31392. {
  31393. if (!Players[playerid][pCalling] && !Players[playerid][pAnimation] && Players[playerid][pDeathState] == DEATH_STATE_NONE && !Players[playerid][pTazed])
  31394. {
  31395. PlayChatStyle(playerid, text);
  31396. }
  31397. if (IsPlayerInAnyVehicle(playerid) && IsWindowedVehicle(vehicleid) && !VehicleInformation[vehicleid][vWindows])
  31398. {
  31399. if (Players[playerid][pCalling] > 1)
  31400. {
  31401. //SendVehicleMessage(vehicleid, COLOR_LIGHTGREY, "[Phone] %s says: %s", ReturnNameEx(playerid), text);
  31402. SendDistanceMessage(playerid, 20.0, COLOR_WHITE, "(Phone) %s says: %s", ReturnNameEx(playerid), text);
  31403. foreach (new i : Player)
  31404. {
  31405. if (Players[i][pBigEars])
  31406. {
  31407. SendSplitMessage(i, COLOR_WHITE, "(Phone) %s says: %s", ReturnNameEx(playerid), text);
  31408. }
  31409. }
  31410. }
  31411. else
  31412. {
  31413. //SendVehicleMessage(vehicleid, COLOR_LIGHTGREY, "[Windows Up] %s says: %s", ReturnNameEx(playerid), text);
  31414. SendDistanceMessage(playerid, 20.0, COLOR_WHITE, "{%06x}%s{FFFFFF} says: %s",(GetPlayerColor(playerid) >>> 8), ReturnNameEx(playerid), text);
  31415. foreach (new i : Player)
  31416. {
  31417. if (Players[i][pBigEars])
  31418. {
  31419. SendSplitMessage(i, COLOR_WHITE, "{%06x}%s{FFFFFF} says: %s",(GetPlayerColor(playerid) >>> 8), ReturnNameEx(playerid), text);
  31420. }
  31421. }
  31422. }
  31423. }
  31424. else if (Players[playerid][pCalling] != 0 && Players[playerid][pCalling] != 1)
  31425. {
  31426. SendDistanceMessage(playerid, 20.0, COLOR_WHITE, "(Phone) %s says: %s", ReturnNameEx(playerid), text);
  31427. foreach (new i : Player)
  31428. {
  31429. if (Players[i][pBigEars])
  31430. {
  31431. SendSplitMessage(i, COLOR_WHITE, "(Phone) %s says: %s", ReturnNameEx(playerid), text);
  31432. }
  31433. }
  31434. }
  31435. else
  31436. {
  31437. SendDistanceMessage(playerid, 20.0, COLOR_WHITE, "{%06x}%s{FFFFFF} says: %s",(GetPlayerColor(playerid) >>> 8), ReturnNameEx(playerid), text);
  31438. foreach (new i : Player)
  31439. {
  31440. if (Players[i][pBigEars])
  31441. {
  31442. SendSplitMessage(i, COLOR_WHITE, "{%06x}%s{FFFFFF} says: %s",(GetPlayerColor(playerid) >>> 8), ReturnNameEx(playerid), text);
  31443. }
  31444. }
  31445. }
  31446. if (Players[playerid][pCalling] > 1)
  31447. {
  31448. if (Players[playerid][pCaller] != INVALID_PLAYER_ID)
  31449. {
  31450. if (Players[playerid][pPayphone] == INVALID_ID)
  31451. {
  31452. SendSplitMessage(Players[playerid][pCaller], COLOR_YELLOW, "(Phone) %s says: %s", ReturnNameEx(playerid), text);
  31453. }
  31454. else
  31455. {
  31456. SendSplitMessage(Players[playerid][pCaller], COLOR_YELLOW, "(Phone) Unknown says: %s", text);
  31457. }
  31458. }
  31459. else
  31460. {
  31461. switch (Players[playerid][pCalling])
  31462. {
  31463. case 444:
  31464. {
  31465. if (!PlayerCanAfford(playerid, 200))
  31466. {
  31467. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Agency: You must have at least $200 to complete the transaction.");
  31468. }
  31469. else if (Players[playerid][pAdTime] > gettime())
  31470. {
  31471. SendFormatMessage(playerid, COLOR_YELLOW, "(Phone) Agency: You may publish another advertisement in %i seconds.", Players[playerid][pAdTime] - gettime());
  31472. }
  31473. else
  31474. {
  31475. RemoveMoney(playerid, 200);
  31476. Players[playerid][pAdTime] = gettime() + 120;
  31477. strpack(gAdvertisement[playerid], text, 128);
  31478. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Agency: Your advertisement has been sent in for review.");
  31479. SendClientMessage(playerid, COLOR_YELLOW, "(( You will need to wait for an administrator to accept your advertisement. ))");
  31480. foreach(new i : Player)
  31481. {
  31482. if(Players[i][pAdmin] > 0 || Players[i][pSupporter] > 0)
  31483. {
  31484. SendFormatMessage(i, COLOR_RED, "[AD] %s posted: %s", ReturnNameEx(playerid, 0), text);
  31485. SendFormatMessage(i, COLOR_RED, "[AD] Use /acceptad %i or /denyad %i to handle this advertisement.", playerid, playerid);
  31486. }
  31487. }
  31488. Players[playerid][pPhoneLastKnown] = Players[playerid][pPhone];
  31489. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET PhoneLastKnown = %i WHERE Username = '%s'", Players[playerid][pPhone], ReturnName(playerid));
  31490. mysql_tquery(gConnection, gExecute);
  31491. }
  31492. HangupCall(playerid);
  31493. }
  31494. case 991:
  31495. {
  31496. foreach (new i : Player)
  31497. {
  31498. if (GetPlayerFactionType(i) == FACTION_LEO)
  31499. {
  31500. /*SendFormatMessage(i, COLOR_RADIO, "** Dispatch: All units, a call came in from %s. **", GetPlayerZoneNameEx(playerid));
  31501. SendFormatMessage(i, COLOR_RADIO, "** %s - %s **", text, ReturnNameEx(playerid));*/
  31502. SendFormatMessage(i, COLOR_RADIO, "________________[ Non-Emergency ]________________");
  31503. if (Players[playerid][pPayphone] != INVALID_ID)
  31504. {
  31505. SendFormatMessage(i, COLOR_RADIO, "* Name: Payphone (ID: %i)", playerid);
  31506. SendFormatMessage(i, COLOR_RADIO, "* Number: %i", Payphones[Players[playerid][pPayphone]][phNumber]);
  31507. AddEmergency(ReturnNameEx(playerid), "Police Non-Emergency", Payphones[Players[playerid][pPayphone]][phNumber], GetPlayerZoneNameEx(playerid), text);
  31508. }
  31509. else
  31510. {
  31511. SendFormatMessage(i, COLOR_RADIO, "* Name: %s (ID: %i)", ReturnNameEx(playerid), playerid);
  31512. SendFormatMessage(i, COLOR_RADIO, "* Number: %i", Players[playerid][pPhone]);
  31513. AddEmergency(ReturnNameEx(playerid), "Police Non-Emergency", Players[playerid][pPhone], GetPlayerZoneNameEx(playerid), text);
  31514. }
  31515. //SendFormatMessage(i, COLOR_RADIO, "* Location: %s", GetPlayerZoneNameEx(playerid));
  31516. SendFormatMessage(i, COLOR_RADIO, "* Situation: %s", text);
  31517. //SendFormatMessage(i, COLOR_RADIO, "(( Use '/acceptcall %i' to accept this call. ))",playerid);
  31518. }
  31519. }
  31520. HangupCall(playerid);
  31521. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) John Doe: Thank you, a representative will call you as soon as possible.");
  31522. Players[playerid][pPhoneLastKnown] = Players[playerid][pPhone];
  31523. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET PhoneLastKnown = %i WHERE Username = '%s'", Players[playerid][pPhone], ReturnName(playerid));
  31524. mysql_tquery(gConnection, gExecute);
  31525. }
  31526. case 992:
  31527. {
  31528. foreach (new i : Player)
  31529. {
  31530. if (GetPlayerFactionType(i) == FACTION_MEDICAL)
  31531. {
  31532. /*SendFormatMessage(i, COLOR_RADIO, "** Dispatch: All units, a call came in from %s. **", GetPlayerZoneNameEx(playerid));
  31533. SendFormatMessage(i, COLOR_RADIO, "** %s - %s **", text, ReturnNameEx(playerid));*/
  31534. SendFormatMessage(i, COLOR_RADIO, "________________[ Non-Emergency ]________________");
  31535. if (Players[playerid][pPayphone] != INVALID_ID)
  31536. {
  31537. SendFormatMessage(i, COLOR_RADIO, "* Name: Payphone (ID: %i)", playerid);
  31538. SendFormatMessage(i, COLOR_RADIO, "* Number: %i", Payphones[Players[playerid][pPayphone]][phNumber]);
  31539. }
  31540. else
  31541. {
  31542. SendFormatMessage(i, COLOR_RADIO, "* Name: %s (ID: %i)", ReturnNameEx(playerid), playerid);
  31543. SendFormatMessage(i, COLOR_RADIO, "* Number: %i", Players[playerid][pPhone]);
  31544. }
  31545. //SendFormatMessage(i, COLOR_RADIO, "* Location: %s", GetPlayerZoneNameEx(playerid));
  31546. SendFormatMessage(i, COLOR_RADIO, "* Situation: %s", text);
  31547. //SendFormatMessage(i, COLOR_RADIO, "(( Use '/acceptcall %i' to accept this call. ))",playerid);
  31548. }
  31549. }
  31550. HangupCall(playerid);
  31551. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) John Doe: Thank you, a representative will call you as soon as possible.");
  31552. Players[playerid][pPhoneLastKnown] = Players[playerid][pPhone];
  31553. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET PhoneLastKnown = %i WHERE Username = '%s'", Players[playerid][pPhone], ReturnName(playerid));
  31554. mysql_tquery(gConnection, gExecute);
  31555. }
  31556. case 993:
  31557. {
  31558. foreach (new i : Player)
  31559. {
  31560. if (GetPlayerFactionType(i) == FACTION_GOVERNMENT)
  31561. {
  31562. /*SendFormatMessage(i, COLOR_RADIO, "** Dispatch: All units, a call came in from %s. **", GetPlayerZoneNameEx(playerid));
  31563. SendFormatMessage(i, COLOR_RADIO, "** %s - %s **", text, ReturnNameEx(playerid));*/
  31564. SendFormatMessage(i, COLOR_RADIO, "_______________[ Government Call ]_______________");
  31565. if (Players[playerid][pPayphone] != INVALID_ID)
  31566. {
  31567. SendFormatMessage(i, COLOR_RADIO, "* Name: Payphone (ID: %i)", playerid);
  31568. SendFormatMessage(i, COLOR_RADIO, "* Number: %i", Payphones[Players[playerid][pPayphone]][phNumber]);
  31569. }
  31570. else
  31571. {
  31572. SendFormatMessage(i, COLOR_RADIO, "* Name: %s (ID: %i)", ReturnNameEx(playerid), playerid);
  31573. SendFormatMessage(i, COLOR_RADIO, "* Number: %i", Players[playerid][pPhone]);
  31574. }
  31575. //SendFormatMessage(i, COLOR_RADIO, "* Location: %s", GetPlayerZoneNameEx(playerid));
  31576. SendFormatMessage(i, COLOR_RADIO, "* Situation: %s", text);
  31577. //SendFormatMessage(i, COLOR_RADIO, "(( Use '/acceptcall %i' to accept this call. ))",playerid);
  31578. }
  31579. }
  31580. HangupCall(playerid);
  31581. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) John Doe: Thank you, a representative will call you as soon as possible.");
  31582. Players[playerid][pPhoneLastKnown] = Players[playerid][pPhone];
  31583. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET PhoneLastKnown = %i WHERE Username = '%s'", Players[playerid][pPhone], ReturnName(playerid));
  31584. mysql_tquery(gConnection, gExecute);
  31585. }
  31586. case 555:
  31587. {
  31588. if (!strcmp(text, "yes", true))
  31589. {
  31590. Players[playerid][pCallTaxi] = 1;
  31591. foreach (new i : Player)
  31592. {
  31593. if (Players[i][pJob] == JOB_TAXI && IsPlayerInTaxi(i))
  31594. {
  31595. SendFormatMessage(i, COLOR_YELLOW, "(Taxi) %s (%i) has requested a taxi (use /accepttaxi to accept).", ReturnNameEx(playerid), playerid);
  31596. }
  31597. }
  31598. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Taxi: All taxi drivers have been notified of your request.");
  31599. Players[playerid][pPhoneLastKnown] = Players[playerid][pPhone];
  31600. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET PhoneLastKnown = %i WHERE Username = '%s'", Players[playerid][pPhone], ReturnName(playerid));
  31601. mysql_tquery(gConnection, gExecute);
  31602. }
  31603. else if (!strcmp(text, "no", true))
  31604. {
  31605. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Taxi: Call back if you would like to request a taxi.");
  31606. }
  31607. else
  31608. {
  31609. return SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Taxi: Would you like to request a taxi? Say 'yes' or 'no'.");
  31610. }
  31611. HangupCall(playerid);
  31612. }
  31613. case 911:
  31614. {
  31615. switch (Players[playerid][pDispatch])
  31616. {
  31617. case 0:
  31618. {
  31619. if (strfind(text, "both", true) != -1)
  31620. {
  31621. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Dispatch: You've been dispatched to both services. Please tell us the problem.");
  31622. Players[playerid][pDispatch] = 3;
  31623. }
  31624. else if (strfind(text, "police", true) != -1)
  31625. {
  31626. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Dispatch: You've been dispatched with the police. Please tell us the problem.");
  31627. Players[playerid][pDispatch] = 1;
  31628. }
  31629. else if (strfind(text, "officer", true) != -1)
  31630. {
  31631. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Dispatch: You've been dispatched with the police. Please tell us the problem.");
  31632. Players[playerid][pDispatch] = 1;
  31633. }
  31634. else if (strfind(text, "cop", true) != -1)
  31635. {
  31636. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Dispatch: You've been dispatched with the police. Please tell us the problem.");
  31637. Players[playerid][pDispatch] = 1;
  31638. }
  31639. else if (strfind(text, "ems", true) != -1)
  31640. {
  31641. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Dispatch: You've been dispatched with the paramedics. Please tell us the problem.");
  31642. Players[playerid][pDispatch] = 2;
  31643. }
  31644. else if (strfind(text, "ambulance", true) != -1)
  31645. {
  31646. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Dispatch: You've been dispatched with the paramedics. Please tell us the problem.");
  31647. Players[playerid][pDispatch] = 2;
  31648. }
  31649. else if (strfind(text, "fire", true) != -1)
  31650. {
  31651. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Dispatch: You've been dispatched with the paramedics. Please tell us the problem.");
  31652. Players[playerid][pDispatch] = 2;
  31653. }
  31654. else
  31655. {
  31656. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Dispatch: Which service do you require?");
  31657. }
  31658. }
  31659. case 1:
  31660. {
  31661. foreach (new i : Player)
  31662. {
  31663. if (GetPlayerFactionType(i) == FACTION_LEO)
  31664. {
  31665. new location[MAX_ZONE_NAME];
  31666. GetPlayer2DZone(i, location, MAX_ZONE_NAME);
  31667. SendFormatMessage(i, COLOR_RADIO, "_________________[Emergency Call]_________________");
  31668. if (Players[playerid][pPayphone] != INVALID_ID)
  31669. {
  31670. SendFormatMessage(i, COLOR_RADIO, "* Name: Payphone (ID: %i)", playerid);
  31671. SendFormatMessage(i, COLOR_RADIO, "* Number: %i", Payphones[Players[playerid][pPayphone]][phNumber]);
  31672. //AddEmergency(ReturnNameEx(playerid), "Police", Payphones[Players[playerid][pPayphone]][phNumber], GetPlayerZoneNameEx(playerid), text);
  31673. }
  31674. else
  31675. {
  31676. SendFormatMessage(i, COLOR_RADIO, "* Name: %s (ID: %i)", ReturnNameEx(playerid), playerid);
  31677. SendFormatMessage(i, COLOR_RADIO, "* Number: %i", Players[playerid][pPhone]);
  31678. //AddEmergency(ReturnNameEx(playerid), "Police", Players[playerid][pPhone], GetPlayerZoneNameEx(playerid), text);
  31679. }
  31680. SendFormatMessage(i, COLOR_RADIO, "* Location: %s", location);
  31681. SendFormatMessage(i, COLOR_RADIO, "* Situation: %s", text);
  31682. SendFormatMessage(i, COLOR_RADIO, "* Service: Police");
  31683. //SendFormatMessage(i, COLOR_RADIO, "(( Use '/acceptcall %i' to accept this call. ))",playerid);
  31684. }
  31685. }
  31686. if (Players[playerid][pPayphone] != INVALID_ID)
  31687. AddEmergency(ReturnNameEx(playerid), "Police", Payphones[Players[playerid][pPayphone]][phNumber], GetPlayerZoneNameEx(playerid), text);
  31688. else
  31689. AddEmergency(ReturnNameEx(playerid), "Police", Players[playerid][pPhone], GetPlayerZoneNameEx(playerid), text);
  31690. HangupCall(playerid);
  31691. gCallsHour++;
  31692. Players[playerid][pEmergency] = 1;
  31693. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Dispatch: Thank you for reporting the crime. The authorities have been informed.");
  31694. Players[playerid][pPhoneLastKnown] = Players[playerid][pPhone];
  31695. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET PhoneLastKnown = %i WHERE Username = '%s'", Players[playerid][pPhone], ReturnName(playerid));
  31696. mysql_tquery(gConnection, gExecute);
  31697. }
  31698. case 2:
  31699. {
  31700. foreach (new i : Player)
  31701. {
  31702. if (GetPlayerFactionType(i) == FACTION_MEDICAL)
  31703. {
  31704. /*SendFormatMessage(i, COLOR_MEDICRADIO, "** Dispatch: All units, a call came in from %s. **", GetPlayerZoneNameEx(playerid));
  31705. SendFormatMessage(i, COLOR_MEDICRADIO, "** %s - %s **", text, ReturnNameEx(playerid));*/
  31706. SendFormatMessage(i, COLOR_RADIO, "_________________[Emergency Call]_________________");
  31707. if (Players[playerid][pPayphone] != INVALID_ID)
  31708. {
  31709. SendFormatMessage(i, COLOR_RADIO, "* Name: Payphone (ID: %i)", playerid);
  31710. SendFormatMessage(i, COLOR_RADIO, "* Number: %i", Payphones[Players[playerid][pPayphone]][phNumber]);
  31711. //AddEmergency(ReturnNameEx(playerid), "Paramedics", Payphones[Players[playerid][pPayphone]][phNumber], GetPlayerZoneNameEx(playerid), text);
  31712. }
  31713. else
  31714. {
  31715. SendFormatMessage(i, COLOR_RADIO, "* Name: %s (ID: %i)", ReturnNameEx(playerid), playerid);
  31716. SendFormatMessage(i, COLOR_RADIO, "* Number: %i", Players[playerid][pPhone]);
  31717. //AddEmergency(ReturnNameEx(playerid), "Paramedics", Players[playerid][pPhone], GetPlayerZoneNameEx(playerid), text);
  31718. }
  31719. SendFormatMessage(i, COLOR_RADIO, "* Location: %s", GetPlayerZoneNameEx(playerid));
  31720. SendFormatMessage(i, COLOR_RADIO, "* Situation: %s", text);
  31721. SendFormatMessage(i, COLOR_RADIO, "* Service: Paramedics");
  31722. //SendFormatMessage(i, COLOR_RADIO, "(( Use '/acceptcall %i' to accept this call. ))",playerid);
  31723. }
  31724. }
  31725. if (Players[playerid][pPayphone] != INVALID_ID)
  31726. AddEmergency(ReturnNameEx(playerid), "Paramedics", Payphones[Players[playerid][pPayphone]][phNumber], GetPlayerZoneNameEx(playerid), text);
  31727. else
  31728. AddEmergency(ReturnNameEx(playerid), "Paramedics", Players[playerid][pPhone], GetPlayerZoneNameEx(playerid), text);
  31729. HangupCall(playerid);
  31730. gCallsHour++;
  31731. Players[playerid][pEmergency] = 1;
  31732. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Dispatch: Thank you for reporting the crime. The paramedics have been informed.");
  31733. Players[playerid][pPhoneLastKnown] = Players[playerid][pPhone];
  31734. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET PhoneLastKnown = %i WHERE Username = '%s'", Players[playerid][pPhone], ReturnName(playerid));
  31735. mysql_tquery(gConnection, gExecute);
  31736. }
  31737. case 3:
  31738. {
  31739. foreach (new i : Player)
  31740. {
  31741. if (GetPlayerFactionType(i) == FACTION_LEO || GetPlayerFactionType(i) == FACTION_MEDICAL)
  31742. {
  31743. /*SendFormatMessage(i, COLOR_MEDICRADIO, "** Dispatch: All units, a call came in from %s. **", GetPlayerZoneNameEx(playerid));
  31744. SendFormatMessage(i, COLOR_MEDICRADIO, "** %s - %s **", text, ReturnNameEx(playerid));*/
  31745. SendFormatMessage(i, COLOR_RADIO, "_________________[Emergency Call]_________________");
  31746. if (Players[playerid][pPayphone] != INVALID_ID)
  31747. {
  31748. SendFormatMessage(i, COLOR_RADIO, "* Name: Payphone (ID: %i)", playerid);
  31749. SendFormatMessage(i, COLOR_RADIO, "* Number: %i", Payphones[Players[playerid][pPayphone]][phNumber]);
  31750. //AddEmergency(ReturnNameEx(playerid), "Both", Payphones[Players[playerid][pPayphone]][phNumber], GetPlayerZoneNameEx(playerid), text);
  31751. }
  31752. else
  31753. {
  31754. SendFormatMessage(i, COLOR_RADIO, "* Name: %s (ID: %i)", ReturnNameEx(playerid), playerid);
  31755. SendFormatMessage(i, COLOR_RADIO, "* Number: %i", Players[playerid][pPhone]);
  31756. //AddEmergency(ReturnNameEx(playerid), "Both", Players[playerid][pPhone], GetPlayerZoneNameEx(playerid), text);
  31757. }
  31758. SendFormatMessage(i, COLOR_RADIO, "* Location: %s", GetPlayerZoneNameEx(playerid));
  31759. SendFormatMessage(i, COLOR_RADIO, "* Situation: %s", text);
  31760. SendFormatMessage(i, COLOR_RADIO, "* Service: Both");
  31761. //SendFormatMessage(i, COLOR_RADIO, "(( Use '/acceptcall %i' to accept this call. ))",playerid);
  31762. }
  31763. }
  31764. if (Players[playerid][pPayphone] != INVALID_ID)
  31765. AddEmergency(ReturnNameEx(playerid), "Both", Payphones[Players[playerid][pPayphone]][phNumber], GetPlayerZoneNameEx(playerid), text);
  31766. else
  31767. AddEmergency(ReturnNameEx(playerid), "Both", Players[playerid][pPhone], GetPlayerZoneNameEx(playerid), text);
  31768. HangupCall(playerid);
  31769. gCallsHour++;
  31770. Players[playerid][pEmergency] = 1;
  31771. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Dispatch: Thank you for reporting the crime. The police and paramedics have been informed.");
  31772. Players[playerid][pPhoneLastKnown] = Players[playerid][pPhone];
  31773. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET PhoneLastKnown = %i WHERE Username = '%s'", Players[playerid][pPhone], ReturnName(playerid));
  31774. mysql_tquery(gConnection, gExecute);
  31775. }
  31776. }
  31777. }
  31778. }
  31779. }
  31780. }
  31781. }
  31782. return 0;
  31783. }
  31784. public OnPlayerCommandPerformed(playerid, cmdtext[], success)
  31785. {
  31786. if (!success) SendErrorMessage(playerid, "You have entered an invalid command.");
  31787. return 1;
  31788. }
  31789. public OnPlayerCommandReceived(playerid, cmdtext[])
  31790. {
  31791. if (!IsPlayerLoggedIn(playerid) || !IsPlayerSpawned(playerid) || !Players[playerid][pSetupInfo] || Players[playerid][pDeathState] == DEATH_STATE_HOSPITAL || Players[playerid][pCommandMuted] > 0)
  31792. {
  31793. return 0;
  31794. }
  31795. if (!Players[playerid][pAdmin] && Players[playerid][pCommandSpam] < 5 && ++ Players[playerid][pCommandSpam] >= 5)
  31796. {
  31797. Players[playerid][pCommandSpam] = 0;
  31798. Players[playerid][pCommandMuted] = 10;
  31799. SendClientMessage(playerid, COLOR_WHITE, "You have been muted 10 seconds for command spamming.");
  31800. SendAdminMessage(COLOR_RED, "Admin: %s has been muted for command spamming.", ReturnNameEx(playerid));
  31801. return 0;
  31802. }
  31803. printf("(CMD) %s (%i): %s", ReturnNameEx(playerid, 0), playerid, cmdtext);
  31804. return 1;
  31805. }
  31806. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  31807. {
  31808. if (IsPlayerInjured(playerid) || Players[playerid][pFainted] || Players[playerid][pTazed])
  31809. {
  31810. return 1;
  31811. }
  31812. if (IsPlayerSelectingOutfit(playerid))
  31813. {
  31814. if (newkeys & KEY_NO && Players[playerid][pSetupInfo])
  31815. {
  31816. CancelOutfitSelection(playerid);
  31817. Players[playerid][pBuyOutfit] = INVALID_ID;
  31818. }
  31819. else if (newkeys & KEY_SECONDARY_ATTACK)
  31820. {
  31821. if (!Players[playerid][pSetupInfo])
  31822. {
  31823. Players[playerid][pSkin] = g_ValidSkinModels[Players[playerid][pOutfitIndex]];
  31824. Players[playerid][pOutfitIndex] = INVALID_ID;
  31825. ApplyAnimation(playerid, "FREEWEIGHTS", "gym_free_celebrate", 4.0, 0, 0, 0, 0, 0, 1);
  31826. SetTimerEx("OutfitSelected", 2000, false, "i", playerid);
  31827. PlayerPlaySound(playerid, 1058, 0.0, 0.0, 0.0);
  31828. SendInfoMessage(playerid, "You have selected your outfit.");
  31829. }
  31830. else
  31831. {
  31832. if (Companies[Players[playerid][pBuyOutfit]][cType] == COMPANY_CLOTHES)
  31833. {
  31834. Players[playerid][pSkin] = g_ValidSkinModels[Players[playerid][pOutfitIndex]];
  31835. CancelOutfitSelection(playerid);
  31836. PurchaseProduct(playerid, Players[playerid][pBuyOutfit], 0);
  31837. SendInfoMessage(playerid, "You have purchased a new outfit for {33CC33}%s{FFFFFF}.", FormatNumber(Products[Players[playerid][pBuyOutfit]][0][prPrice]));
  31838. Players[playerid][pBuyOutfit] = INVALID_ID;
  31839. }
  31840. }
  31841. }
  31842. }
  31843. else
  31844. {
  31845. if(newkeys & KEY_FIRE && IsPlayerInModdingShop(playerid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER && Players[playerid][pModPreview] >= 1000)
  31846. {
  31847. Dialog_Show(playerid, ModdingPurchase, DIALOG_STYLE_MSGBOX, "{33AA33}Modding - Choose Option", "{FFFFFF}Do you want to purchase this {33AA33}%s{FFFFFF} for {33AA33}$%i{FFFFFF}?", "Yes", "No", GetVehicleComponentName(Players[playerid][pModPreview]), GetVehicleComponentPriceEx(Players[playerid][pModPreview]));
  31848. }
  31849. if (newkeys & KEY_CTRL_BACK && !IsPlayerSpectating(playerid))
  31850. {
  31851. if (!EnterCaller(playerid)) ExitCaller(playerid);
  31852. SitCheck(playerid);
  31853. }
  31854. if (Players[playerid][pSetupInfo])
  31855. {
  31856. if (newkeys & KEY_NO)
  31857. {
  31858. if (Players[playerid][pSelectUniform])
  31859. {
  31860. Players[playerid][pSelectUniform] = 0;
  31861. TogglePlayerControllable(playerid, true);
  31862. SetPlayerSkin(playerid, Players[playerid][pSkin]);
  31863. SendInfoMessage(playerid, "You have cancelled uniform selection.");
  31864. ShowLockerMenu(playerid);
  31865. }
  31866. else if (Players[playerid][pVehicleColor] != INVALID_ID)
  31867. {
  31868. ChangeVehicleColor(Vehicles[Players[playerid][pVehicleColor]][vVehicle], Vehicles[Players[playerid][pVehicleColor]][vColor1], Vehicles[Players[playerid][pVehicleColor]][vColor2]);
  31869. Players[playerid][pVehicleColor] = INVALID_ID;
  31870. TogglePlayerControllable(playerid, true);
  31871. SendInfoMessage(playerid, "You have cancelled the color selection.");
  31872. }
  31873. else if (IsPlayerJailed(playerid))
  31874. {
  31875. SendErrorMessage(playerid, "You can't access your inventory in jail.");
  31876. }
  31877. else if (Players[playerid][pHandcuffed])
  31878. {
  31879. SendErrorMessage(playerid, "You can't access your inventory while cuffed.");
  31880. }
  31881. else
  31882. {
  31883. /*if (!Players[playerid][pInventory])
  31884. {
  31885. DisplayInventory(playerid);
  31886. SendInfoMessage(playerid, "Press ESC to close your inventory.");
  31887. }
  31888. else
  31889. {
  31890. HideInventory(playerid);
  31891. }*/
  31892. new success = DisplayInventory(playerid);
  31893. if (!success)
  31894. {
  31895. SendErrorMessage(playerid, "You don't have any items in your inventory.");
  31896. }
  31897. }
  31898. }
  31899. if (newkeys & KEY_CROUCH && IsPlayerInAnyVehicle(playerid))
  31900. {
  31901. GateCheck(playerid);
  31902. }
  31903. if (newkeys & KEY_YES)
  31904. {
  31905. if (Players[playerid][pVehicleColor] != INVALID_ID)
  31906. {
  31907. new vehicle = Players[playerid][pVehicleColor];
  31908. Vehicles[vehicle][vColor1] = Players[playerid][pColorID];
  31909. Vehicles[vehicle][vColor2] = Players[playerid][pColorID];
  31910. SaveVehicle(vehicle);
  31911. RemoveMoney(playerid, 100);
  31912. TogglePlayerControllable(playerid, true);
  31913. SendInfoMessage(playerid, "You have changed your vehicle's color for {33CC33}$100{FFFFFF}.");
  31914. Players[playerid][pVehicleColor] = INVALID_ID;
  31915. PlayerPlaySound(playerid, 1134, 0.0, 0.0, 0.0);
  31916. }
  31917. else if (Players[playerid][pOutfitIndex] == INVALID_ID)
  31918. {
  31919. if (GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
  31920. {
  31921. LoadCheck(playerid);
  31922. GateCheck(playerid);
  31923. if (GetClosestShell(playerid) != INVALID_ID) ShellCheck(playerid);
  31924. else if (GetClosestDropItem(playerid) != INVALID_ID) PickupNearestItem(playerid);
  31925. else if (GetClosestWeedPlant(playerid) != INVALID_ID) WeedCheck(playerid);
  31926. //else if (GetClosestBlood(playerid) != INVALID_ID) BloodCheck(playerid);
  31927. else if (IsPlayerNearSwitch(playerid)) LightSwitch(playerid);
  31928. else if (IsPlayerInRangeOfLocker(playerid)) ShowLockerMenu(playerid);
  31929. else if (GetClosestFurniture(playerid, 2.0, 2332) != INVALID_ID) SafeCheck(playerid);
  31930. else if (GetClosestFridge(playerid, 2.0) != INVALID_ID) FridgeCheck(playerid);
  31931. else if (GetClosestATM(playerid) != INVALID_ID) ATMCheck(playerid);
  31932. else if (GetClosestTrashbin(playerid) != INVALID_ID) TrashbinCheck(playerid);
  31933. else if (IsPlayerNearGymEquipment(playerid)) GymCheck(playerid);
  31934. }
  31935. }
  31936. }
  31937. if (newkeys & KEY_SPRINT)
  31938. {
  31939. if (Players[playerid][pAnimation])
  31940. {
  31941. Players[playerid][pAnimation] = 0;
  31942. ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.0, 0, 0, 0, 0, 0);
  31943. HideFooterText(playerid);
  31944. }
  31945. WorkoutUpdate(playerid);
  31946. }
  31947. if (newkeys & KEY_SECONDARY_ATTACK)
  31948. {
  31949. if (Players[playerid][pSelectUniform] && Players[playerid][pFaction] != INVALID_ID)
  31950. {
  31951. Players[playerid][pUniform] = Players[playerid][pSkin];
  31952. Players[playerid][pSkin] = Factions[Players[playerid][pFaction]][fcUniforms][Players[playerid][pUniformIndex]];
  31953. Players[playerid][pSelectUniform] = 0;
  31954. SendInfoMessage(playerid, "You have selected your uniform.");
  31955. TogglePlayerControllable(playerid, true);
  31956. //ShowLockerMenu(playerid);
  31957. }
  31958. }
  31959. if (Players[playerid][pVehicleColor] != INVALID_ID)
  31960. {
  31961. if (newkeys & KEY_LOOK_LEFT)
  31962. {
  31963. if (--Players[playerid][pColorID] < 0)
  31964. {
  31965. Players[playerid][pColorID] = 255;
  31966. }
  31967. ChangeVehicleColor(GetPlayerVehicleID(playerid), Players[playerid][pColorID], Players[playerid][pColorID]);
  31968. PlayerPlaySound(playerid, 1053, 0.0, 0.0, 0.0);
  31969. }
  31970. else if (newkeys & KEY_LOOK_RIGHT)
  31971. {
  31972. if (++Players[playerid][pColorID] > 255)
  31973. {
  31974. Players[playerid][pColorID] = 0;
  31975. }
  31976. ChangeVehicleColor(GetPlayerVehicleID(playerid), Players[playerid][pColorID], Players[playerid][pColorID]);
  31977. PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
  31978. }
  31979. }
  31980. }
  31981. }
  31982. return 1;
  31983. }
  31984. public OnPlayerClickTextDraw(playerid, Text:clickedid)
  31985. {
  31986. if (Dialog_Opened(playerid))
  31987. return 0;
  31988. if (Players[playerid][pIgnoreTD])
  31989. {
  31990. Players[playerid][pIgnoreTD] = 0;
  31991. return 0;
  31992. }
  31993. if (clickedid == INVALID_TEXT_DRAW)
  31994. {
  31995. /*if (!Players[playerid][pSetupInfo])
  31996. {
  31997. SetTimerEx("SelectTD", 200, false, "i", playerid);
  31998. return 1;
  31999. }*/
  32000. if (!Players[playerid][pSetupInfo])
  32001. {
  32002. return 1;
  32003. }
  32004. if (Players[playerid][pFurnitureMenu])
  32005. {
  32006. HideFurniturePreviewer(playerid);
  32007. }
  32008. if (Players[playerid][pAccessoryMenu])
  32009. {
  32010. HideAccessoryPreviewer(playerid);
  32011. }
  32012. if (Players[playerid][pDealershipMenu] != INVALID_ID)
  32013. {
  32014. HideDealershipPreview(playerid);
  32015. }
  32016. }
  32017. return 1;
  32018. }
  32019. public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
  32020. {
  32021. if (Dialog_Opened(playerid) || Players[playerid][pIgnoreTD])
  32022. return 0;
  32023. /*if (Players[playerid][pOutfitIndex] != INVALID_ID)
  32024. {
  32025. if (playertextid == Players[playerid][pText][1])
  32026. {
  32027. if (Players[playerid][pOutfitIndex] == 0)
  32028. Players[playerid][pOutfitIndex] = sizeof(g_ValidSkinModels) - 1;
  32029. else
  32030. Players[playerid][pOutfitIndex]--;
  32031. UpdateOutfitSelection(playerid);
  32032. PlayerPlaySound(playerid, 1053, 0.0, 0.0, 0.0);
  32033. }
  32034. else if (playertextid == Players[playerid][pText][2])
  32035. {
  32036. if (Players[playerid][pOutfitIndex] == sizeof(g_ValidSkinModels) - 1)
  32037. Players[playerid][pOutfitIndex] = 0;
  32038. else
  32039. Players[playerid][pOutfitIndex]++;
  32040. UpdateOutfitSelection(playerid);
  32041. PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
  32042. }
  32043. else if (playertextid == Players[playerid][pText][3])
  32044. {
  32045. if (!Players[playerid][pSetupInfo])
  32046. {
  32047. Players[playerid][pSkin] = g_ValidSkinModels[Players[playerid][pOutfitIndex]];
  32048. Players[playerid][pOutfitIndex] = INVALID_ID;
  32049. ApplyAnimation(playerid, "FREEWEIGHTS", "gym_free_celebrate", 4.0, 0, 0, 0, 0, 0, 1);
  32050. SetTimerEx("OutfitSelected", 2000, false, "i", playerid);
  32051. PlayerPlaySound(playerid, 1058, 0.0, 0.0, 0.0);
  32052. SendInfoMessage(playerid, "You have selected your outfit.");
  32053. }
  32054. else
  32055. {
  32056. if (Companies[Players[playerid][pBuyOutfit]][cType] == COMPANY_CLOTHES)
  32057. {
  32058. Players[playerid][pSkin] = g_ValidSkinModels[Players[playerid][pOutfitIndex]];
  32059. CancelOutfitSelection(playerid);
  32060. PurchaseProduct(playerid, Players[playerid][pBuyOutfit], 0);
  32061. SendInfoMessage(playerid, "You have purchased a new outfit for {33CC33}%s{FFFFFF}.", FormatNumber(Products[Players[playerid][pBuyOutfit]][0][prPrice]));
  32062. Players[playerid][pBuyOutfit] = INVALID_ID;
  32063. }
  32064. }
  32065. }
  32066. }*/
  32067. if (!Players[playerid][pSetupInfo])
  32068. {
  32069. if (playertextid == Players[playerid][pText][89]) {
  32070. Players[playerid][pGender] = GENDER_MALE;
  32071. UpdateSkinSelection(playerid, 0);
  32072. PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
  32073. } else if (playertextid == Players[playerid][pText][90]) {
  32074. Players[playerid][pGender] = GENDER_FEMALE;
  32075. UpdateSkinSelection(playerid, 0);
  32076. PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
  32077. } else if (playertextid == Players[playerid][pText][93] && Players[playerid][pAge] > 13) {
  32078. Players[playerid][pAge]--;
  32079. PlayerPlaySound(playerid, 1053, 0.0, 0.0, 0.0);
  32080. } else if (playertextid == Players[playerid][pText][94] && Players[playerid][pAge] < 99) {
  32081. Players[playerid][pAge]++;
  32082. PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
  32083. } else if (playertextid == Players[playerid][pText][97]) {
  32084. UpdateSkinSelection(playerid, Players[playerid][pOutfit] - 1);
  32085. PlayerPlaySound(playerid, 1053, 0.0, 0.0, 0.0);
  32086. } else if (playertextid == Players[playerid][pText][98]) {
  32087. UpdateSkinSelection(playerid, Players[playerid][pOutfit] + 1);
  32088. PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
  32089. } else if (playertextid == Players[playerid][pText][99]) {
  32090. ResetCharacterSetup(playerid);
  32091. } else if (playertextid == Players[playerid][pText][100]) {
  32092. Dialog_Show(playerid, SetupConfirm, DIALOG_STYLE_MSGBOX, "Confirmation", "Are you sure you would like to save your character?", "Yes", "No");
  32093. } else if (playertextid == Players[playerid][pText][101]) {
  32094. Dialog_Show(playerid, SetupHelp, DIALOG_STYLE_MSGBOX, "More Help", "You can easily setup your character using this simple interface.\n\n- To change your gender, click on {88AA62}Male{A9C4E4} or {88AA62}Female{A9C4E4}.\n- To change your age, click on the minus (-) and plus (+) buttons.\n- To change your outfit, click on the arrows to browse between outfits.\n\nOnce you are ready, just click {88AA62}Confirm{A9C4E4} to save your character!", "Close", "");
  32095. }
  32096. UpdateCharacterSetup(playerid);
  32097. }
  32098. if (Players[playerid][pFurnitureMenu])
  32099. {
  32100. if (playertextid == Players[playerid][pText][73])
  32101. {
  32102. if (Players[playerid][pPreviewIndex] > GetFurnitureListStart(Players[playerid][pCategory]))
  32103. {
  32104. Players[playerid][pPreviewIndex]--;
  32105. }
  32106. UpdateFurniturePreviewer(playerid);
  32107. PlayerPlaySound(playerid, 1053, 0.0, 0.0, 0.0);
  32108. }
  32109. else if (playertextid == Players[playerid][pText][74])
  32110. {
  32111. HideFurniturePreviewer(playerid);
  32112. PreviewFurniture(playerid, Players[playerid][pPreviewIndex]);
  32113. }
  32114. else if (playertextid == Players[playerid][pText][75])
  32115. {
  32116. if (Players[playerid][pPreviewIndex] < GetFurnitureListEnd(Players[playerid][pCategory]))
  32117. {
  32118. Players[playerid][pPreviewIndex]++;
  32119. }
  32120. UpdateFurniturePreviewer(playerid);
  32121. PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
  32122. }
  32123. }
  32124. if (Players[playerid][pAccessoryMenu])
  32125. {
  32126. if (playertextid == Players[playerid][pText][67])
  32127. {
  32128. if (Players[playerid][pPreviewIndex] > GetAccessoryListStart(Players[playerid][pCategory]))
  32129. {
  32130. Players[playerid][pPreviewIndex]--;
  32131. }
  32132. UpdateAccessoryPreviewer(playerid);
  32133. PlayerPlaySound(playerid, 1053, 0.0, 0.0, 0.0);
  32134. }
  32135. else if (playertextid == Players[playerid][pText][68])
  32136. {
  32137. if (Players[playerid][pPreviewIndex] < GetAccessoryListEnd(Players[playerid][pCategory]))
  32138. {
  32139. Players[playerid][pPreviewIndex]++;
  32140. }
  32141. UpdateAccessoryPreviewer(playerid);
  32142. PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
  32143. }
  32144. else if (playertextid == Players[playerid][pText][69])
  32145. {
  32146. HideAccessoryPreviewer(playerid);
  32147. PreviewAccessory(playerid, Players[playerid][pPreviewIndex]);
  32148. }
  32149. }
  32150. if (Players[playerid][pDealershipMenu] != INVALID_ID)
  32151. {
  32152. if (playertextid == Players[playerid][pText][83])
  32153. {
  32154. Players[playerid][pDealershipIndex] = GetPreviousDealershipCar(Players[playerid][pDealershipMenu], Players[playerid][pDealershipIndex]);
  32155. PlayerPlaySound(playerid, 1053, 0.0, 0.0, 0.0);
  32156. UpdateDealershipPreview(playerid);
  32157. }
  32158. else if (playertextid == Players[playerid][pText][85])
  32159. {
  32160. Players[playerid][pDealershipIndex] = GetNextDealershipCar(Players[playerid][pDealershipMenu], Players[playerid][pDealershipIndex]);
  32161. PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
  32162. UpdateDealershipPreview(playerid);
  32163. }
  32164. else if (playertextid == Players[playerid][pText][84])
  32165. {
  32166. new
  32167. index = Players[playerid][pDealershipIndex];
  32168. if (!PlayerCanAfford(playerid, DealershipCars[index][dcPrice]))
  32169. {
  32170. return SendErrorMessage(playerid, "You can't afford to buy this vehicle.");
  32171. }
  32172. else if (!IsVehicleSpawnSetup(Players[playerid][pDealershipMenu]))
  32173. {
  32174. return SendErrorMessage(playerid, "The vehicle spawn point is not setup.");
  32175. }
  32176. else
  32177. {
  32178. if (GetVehicleLimit(playerid) != 0 && GetOwnedVehicles(playerid) >= GetVehicleLimit(playerid))
  32179. {
  32180. HideDealershipPreview(playerid);
  32181. return SendErrorMessage(playerid, "You have reached the limit of owned vehicles.");
  32182. }
  32183. new
  32184. vehicle = AddVehicle(INVALID_ID, DealershipCars[index][dcModel], 0, Companies[Players[playerid][pDealershipMenu]][cVehicle][0], Companies[Players[playerid][pDealershipMenu]][cVehicle][1], Companies[Players[playerid][pDealershipMenu]][cVehicle][2], Companies[Players[playerid][pDealershipMenu]][cVehicle][3], 11, 11, playerid, .despawned = true);
  32185. if (vehicle == INVALID_ID)
  32186. {
  32187. return SendErrorMessage(playerid, "There are no available vehicle slots.");
  32188. }
  32189. else
  32190. {
  32191. new count = 1;
  32192. for (new i = 0; i < MAX_CARS; i ++)
  32193. {
  32194. if (IsValidVehicleID(i) && IsVehicleOwner(playerid, i) && !Vehicles[i][vDespawned])
  32195. {
  32196. count++;
  32197. }
  32198. }
  32199. if (count > GetVehicleSpawnLimit(playerid))
  32200. {
  32201. return SendErrorMessage(playerid, "You can only have two vehicles spawned at one time.");
  32202. }
  32203. Statistics[playerid][sVehicles]++;
  32204. RemoveMoney(playerid, DealershipCars[index][dcPrice]);
  32205. if (!IsCompanyOwner(playerid, Players[playerid][pDealershipMenu]))
  32206. {
  32207. GiveCompanyMoney(Players[playerid][pDealershipMenu], DealershipCars[index][dcPrice]);
  32208. }
  32209. format(gExecute, sizeof(gExecute), "INSERT INTO rp_purchases (Player, Type, Price, Date) VALUES(%i, '%s', %i, NOW())", Players[playerid][pID], GetVehicleModelName(DealershipCars[index][dcModel]), DealershipCars[index][dcPrice]);
  32210. mysql_tquery(gConnection, gExecute);
  32211. SendInfoMessage(playerid, "You have purchased a %s for {33CC33}%s{FFFFFF}. Use '/v spawn' to spawn it.", GetVehicleModelName(DealershipCars[index][dcModel]), FormatNumber(DealershipCars[index][dcPrice]));
  32212. HideDealershipPreview(playerid);
  32213. }
  32214. }
  32215. }
  32216. }
  32217. return 1;
  32218. }
  32219. public OnPlayerPickUpDynamicPickup(playerid, pickupid)
  32220. {
  32221. for (new i = 0; i < MAX_BUILDINGS; i ++)
  32222. {
  32223. if ((Buildings[i][bExists] && Buildings[i][bPickup] == pickupid) && Players[playerid][pBuildingInfo] != i)
  32224. {
  32225. if (Players[playerid][pAdmin] > 4)
  32226. {
  32227. SendInfoMessage(playerid, "The building ID is: %i. Use /editbuilding to edit it.", i);
  32228. }
  32229. else
  32230. {
  32231. SendInfoMessage(playerid, "Press H to enter this building.");
  32232. }
  32233. Players[playerid][pBuildingInfo] = i;
  32234. }
  32235. }
  32236. return 1;
  32237. }
  32238. /*forward CheckAmmo(playerid);
  32239. public CheckAmmo(playerid)
  32240. {
  32241. if(oldAmmo[playerid] > newAmmo[playerid])
  32242. {
  32243. return 1;
  32244. }
  32245. return 1;
  32246. }
  32247. forward CheckWeapons(playerid);
  32248. public CheckWeapons(playerid)
  32249. {
  32250. if(GetPlayerWeapon(playerid) == 0)
  32251. {
  32252. return 1;
  32253. }
  32254. else if(GetPlayerWeapon(playerid) != 0)
  32255. {
  32256. SetTimer("CheckAmmo", 750, true);
  32257. }
  32258. return 1;
  32259. }*/
  32260. forward OnPlayerChangeWeapon(playerid, oldweapon, newweapon);
  32261. public OnPlayerChangeWeapon(playerid, oldweapon, newweapon)
  32262. {
  32263. if(GetPlayerWeapon(playerid) == oldWeapon[playerid] && oldWeapon[playerid] == 0)
  32264. {
  32265. return 1;
  32266. }
  32267. if(GetPlayerWeapon(playerid) != oldWeapon[playerid])
  32268. {
  32269. oldWeapon[playerid] = GetPlayerWeapon(playerid);
  32270. oldAmmo[playerid] = GetPlayerAmmo(playerid);
  32271. return 1;
  32272. }
  32273. if(GetPlayerWeapon(playerid) == oldWeapon[playerid] && oldWeapon[playerid] != 0)
  32274. {
  32275. oldAmmo[playerid] = GetPlayerAmmo(playerid);
  32276. newWeapon[playerid] = GetPlayerWeapon(playerid);
  32277. return 1;
  32278. }
  32279. if(GetPlayerWeapon(playerid) != oldWeapon[playerid] && GetPlayerWeapon(playerid) == 0)
  32280. {
  32281. oldWeapon[playerid] = GetPlayerWeapon(playerid);
  32282. return 1;
  32283. }
  32284. return 1;
  32285. }
  32286. public OnPlayerUpdate(playerid)
  32287. {
  32288. //SetTimer("CheckWeapons", 1000, true);
  32289. /*if(GetPlayerWeapon(playerid) == oldWeapon[playerid] && oldWeapon[playerid] == 0)
  32290. {
  32291. oldAmmo[playerid] = GetPlayerAmmo(playerid);
  32292. return 1;
  32293. }
  32294. if(GetPlayerWeapon(playerid) != oldWeapon[playerid])
  32295. {
  32296. oldWeapon[playerid] = GetPlayerWeapon(playerid);
  32297. newAmmo[playerid] = GetPlayerAmmo(playerid);
  32298. return 1;
  32299. }
  32300. if(GetPlayerWeapon(playerid) == oldWeapon[playerid] && oldWeapon[playerid] != 0)
  32301. {
  32302. newWeapon[playerid] = GetPlayerWeapon(playerid);
  32303. return 1;
  32304. }*/
  32305. new packetkeys, updown, leftright;
  32306. GetPlayerKeys(playerid, packetkeys, updown, leftright);
  32307. if(Players[playerid][pSpectate] != INVALID_PLAYER_ID)
  32308. {
  32309. if(leftright != 0)
  32310. {
  32311. if(GetTickCount()-pSpecLimit[playerid] > 666 || GetTickCount()-pSpecLimit[playerid] < 0)
  32312. {
  32313. pSpecLimit[playerid] = GetTickCount();
  32314. new i = Players[playerid][pSpectate];
  32315. if(leftright == KEY_RIGHT)
  32316. {
  32317. i++;
  32318. if(i == MAX_PLAYERS) i = 0;
  32319. while(!IsPlayerConnected(i) || Players[i][pSpectate] != INVALID_PLAYER_ID)
  32320. {
  32321. i++;
  32322. if(i == MAX_PLAYERS) i = 0;
  32323. }
  32324. }
  32325. else if(leftright == KEY_LEFT)
  32326. {
  32327. i--;
  32328. if(i == -1) i = MAX_PLAYERS-1;
  32329. while(!IsPlayerConnected(i) || Players[i][pSpectate] != INVALID_PLAYER_ID)
  32330. {
  32331. i--;
  32332. if(i == -1) i = MAX_PLAYERS-1;
  32333. }
  32334. }
  32335. new val[12];
  32336. format(val, 12, "%i", i);
  32337. cmd_spec(playerid, val);
  32338. }
  32339. }
  32340. else pSpecLimit[playerid] = 0;
  32341. }
  32342. new iCurWeap = GetPlayerWeapon(playerid);
  32343. if(iCurWeap != GetPVarInt(playerid, "iCurrentWeapon"))
  32344. {
  32345. OnPlayerChangeWeapon(playerid, GetPVarInt(playerid, "iCurrentWeapon"), iCurWeap);
  32346. SetPVarInt(playerid, "iCurrentWeapon", iCurWeap);
  32347. }
  32348. if (IsPlayerNPC(playerid) || !IsPlayerSpawned(playerid))
  32349. return 1;
  32350. else if (gPlayerKicked[playerid])
  32351. return 0;
  32352. f_OnPlayerUpdate(playerid);
  32353. new
  32354. vehicleid = GetPlayerVehicleID(playerid),
  32355. index = GetPlayerAnimationIndex(playerid),
  32356. string[32],
  32357. keys,
  32358. ud,
  32359. lr;
  32360. GetPlayerKeys(playerid, keys, ud, lr);
  32361. if (Players[playerid][pOutfitIndex] != INVALID_ID && (NetStats_GetConnectedTime(playerid) - Players[playerid][pOutfitTick]) > 100)
  32362. {
  32363. if (lr == KEY_LEFT || lr == KEY_RIGHT)
  32364. {
  32365. HandleOutfitNavigation(playerid, lr);
  32366. Players[playerid][pOutfitTick] = NetStats_GetConnectedTime(playerid);
  32367. }
  32368. }
  32369. else if (Players[playerid][pSelectUniform] && (NetStats_GetConnectedTime(playerid) - Players[playerid][pUniformTick]) > 100)
  32370. {
  32371. if (lr == KEY_LEFT || lr == KEY_RIGHT)
  32372. {
  32373. HandleUniformNavigation(playerid, lr);
  32374. Players[playerid][pUniformTick] = NetStats_GetConnectedTime(playerid);
  32375. }
  32376. }
  32377. if (Players[playerid][pBrokenLeg] && !Players[playerid][pFainted])
  32378. {
  32379. if (1196 <= GetPlayerAnimationIndex(playerid) <= 1198 || IsPlayerSprinting(playerid))
  32380. {
  32381. ApplyAnimation(playerid, "PED","FALL_collapse", 4.1, 0, 1, 1, 0, 0, 1);
  32382. ApplyAnimation(playerid, "PED","FALL_collapse", 4.1, 0, 1, 1, 0, 0, 1);
  32383. ShowActionBubble(playerid, "* %s trips and falls on the ground from a broken leg.", ReturnNameEx(playerid));
  32384. }
  32385. }
  32386. if (GetPlayerMoney(playerid) != Players[playerid][pPocketMoney])
  32387. {
  32388. ResetPlayerMoney(playerid);
  32389. GivePlayerMoney(playerid, Players[playerid][pPocketMoney]);
  32390. }
  32391. if (GetPlayerScore(playerid) != Players[playerid][pHoursOnline])
  32392. {
  32393. SetPlayerScore(playerid, Players[playerid][pHoursOnline]);
  32394. }
  32395. if (GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
  32396. {
  32397. if (index != 1508 && ((Players[playerid][pDeathState] == DEATH_STATE_INJURED && GetVehicleModel(GetPlayerVehicleID(playerid)) != 416)))
  32398. {
  32399. ApplyAnimation(playerid, "CRACK", "crckdeth4", 4.1, 0, 0, 0, 1, 0, 1);
  32400. }
  32401. /*if (index != 1508 && ((Players[playerid][pDeathState] == DEATH_STATE_MELEE && GetVehicleModel(GetPlayerVehicleID(playerid)) != 416)))
  32402. {
  32403. ApplyAnimation(playerid, "SWAT", "gnstwall_injurd", 4.1, 1, 0, 0, 0, 0, 1);
  32404. }*/
  32405. if (index != 388 && Players[playerid][pTazed] > 0)
  32406. {
  32407. ApplyAnimation(playerid, "CRACK", "crckdeth4", 4.1, 0, 0, 0, 1, 0, 1);
  32408. }
  32409. }
  32410. if (IsPlayerDrivingVehicle(playerid, vehicleid))
  32411. {
  32412. if (Players[playerid][pShowSpeed])
  32413. {
  32414. format(string, sizeof(string), "Speed: %.0f", GetVehicleMPH(vehicleid));
  32415. PlayerTextDrawSetString(playerid, Players[playerid][pText][26], string);
  32416. }
  32417. }
  32418. if (GetPlayerWeapon(playerid) == Weapons[playerid][wPrimary] && GetPlayerAmmo(playerid) > 0 && !IsPlayerHoldingTazer(playerid))
  32419. {
  32420. Weapons[playerid][wPrimaryAmmo] = GetPlayerAmmo(playerid);
  32421. }
  32422. if (GetPlayerWeapon(playerid) == Weapons[playerid][wSecondary] && GetPlayerAmmo(playerid) > 0 && !IsPlayerHoldingTazer(playerid))
  32423. {
  32424. Weapons[playerid][wSecondaryAmmo] = GetPlayerAmmo(playerid);
  32425. }
  32426. if (GetPlayerWeapon(playerid) == Weapons[playerid][wTertiary] && GetPlayerAmmo(playerid) > 0 && !IsPlayerHoldingTazer(playerid))
  32427. {
  32428. Weapons[playerid][wTertiaryAmmo] = GetPlayerAmmo(playerid);
  32429. }
  32430. if (Players[playerid][pHouseInfo] != INVALID_ID && !IsPlayerInRangeOfPoint(playerid, 2.0, Houses[Players[playerid][pHouseInfo]][hSpawn][0], Houses[Players[playerid][pHouseInfo]][hSpawn][1], Houses[Players[playerid][pHouseInfo]][hSpawn][2]))
  32431. {
  32432. Players[playerid][pHouseInfo] = INVALID_ID;
  32433. HidePlayerTextDraws(playerid, 55, 57);
  32434. HideFooterText(playerid);
  32435. }
  32436. if (Players[playerid][pCompanyInfo] != INVALID_ID && !IsPlayerInRangeOfPoint(playerid, 2.0, Companies[Players[playerid][pCompanyInfo]][cSpawn][0], Companies[Players[playerid][pCompanyInfo]][cSpawn][1], Companies[Players[playerid][pCompanyInfo]][cSpawn][2]))
  32437. {
  32438. Players[playerid][pCompanyInfo] = INVALID_ID;
  32439. HidePlayerTextDraws(playerid, 55, 57);
  32440. HideFooterText(playerid);
  32441. }
  32442. if (Players[playerid][pBuildingInfo] != INVALID_ID && !IsPlayerInRangeOfPoint(playerid, 2.0, Buildings[Players[playerid][pBuildingInfo]][bSpawn][0], Buildings[Players[playerid][pBuildingInfo]][bSpawn][1], Buildings[Players[playerid][pBuildingInfo]][bSpawn][2]))
  32443. {
  32444. Players[playerid][pBuildingInfo] = INVALID_ID;
  32445. }
  32446. if (Players[playerid][pPaused])
  32447. {
  32448. Players[playerid][pPaused] = 0;
  32449. SendInfoMessage(playerid, "{CFCFCF}You have been paused for %i seconds.", (gettime() - Players[playerid][pLastUpdate]));
  32450. DestroyDynamic3DTextLabel(Players[playerid][pPausedText]);
  32451. }
  32452. switch (Players[playerid][pWorkout])
  32453. {
  32454. case WORKOUT_DUMBELLS:
  32455. {
  32456. if (index < 570 || index > 577)
  32457. {
  32458. ApplyAnimation(playerid, "Freeweights", "gym_free_loop", 4.1, 1, 0, 0, 0, 0, 1);
  32459. }
  32460. }
  32461. case WORKOUT_TREADMILL:
  32462. {
  32463. if (index < 662 || index > 665)
  32464. {
  32465. switch (Players[playerid][pSpeedLevel])
  32466. {
  32467. case 1..3:
  32468. {
  32469. ApplyAnimation(playerid, "GYMNASIUM", "gym_tread_walk", 4.1, 1, 0, 0, 0, 0, 1);
  32470. }
  32471. case 4..6:
  32472. {
  32473. ApplyAnimation(playerid, "GYMNASIUM", "gym_tread_jog", 4.1, 1, 0, 0, 0, 0, 1);
  32474. }
  32475. case 7..10:
  32476. {
  32477. ApplyAnimation(playerid, "GYMNASIUM", "gym_tread_sprint", 4.1, 1, 0, 0, 0, 0, 1);
  32478. }
  32479. }
  32480. }
  32481. }
  32482. }
  32483. Players[playerid][pLastUpdate] = gettime();
  32484. UpdateAttachedObjects(playerid);
  32485. UpdateLightsForPlayer(playerid);
  32486. return 1;
  32487. }
  32488. public OnPlayerSpawn(playerid)
  32489. {
  32490. oldWeapon[playerid] = GetPlayerWeapon(playerid);
  32491. if (IsPlayerNPC(playerid)) return 1;
  32492. // Added so players can see objects updating if they drop items.
  32493. Streamer_ToggleIdleUpdate(playerid, 1);
  32494. StopAudioStreamForPlayer(playerid);
  32495. // Preload animations
  32496. for (new i = 0; i < sizeof(g_AnimationLibraries); i ++) {
  32497. ApplyAnimation(playerid, g_AnimationLibraries[i], "null", 0.0, 0, 0, 0, 0, 0, 1);
  32498. }
  32499. /*ApplyAnimation(playerid, "FREEWEIGHTS", "null", 0.0, 0, 0, 0, 0, 0);
  32500. ApplyAnimation(playerid, "MUSCULAR", "null", 0.0, 0, 0, 0, 0, 0);
  32501. ApplyAnimation(playerid, "CRACK", "null", 0.0, 0, 0, 0, 0, 0);
  32502. ApplyAnimation(playerid, "PED", "null", 0.0, 0, 0, 0, 0, 0);
  32503. ApplyAnimation(playerid, "FAT", "null", 0.0, 0, 0, 0, 0, 0);
  32504. ApplyAnimation(playerid, "BASEBALL", "null", 0.0, 0, 0, 0, 0, 0);
  32505. ApplyAnimation(playerid, "GRENADE", "null", 0.0, 0, 0, 0, 0, 0);
  32506. ApplyAnimation(playerid, "BOMBER", "null", 0.0, 0, 0, 0, 0, 0);
  32507. ApplyAnimation(playerid, "FOOD", "null", 0.0, 0, 0, 0, 0, 0);
  32508. ApplyAnimation(playerid, "CARRY", "null", 0.0, 0, 0, 0, 0, 0);
  32509. ApplyAnimation(playerid, "CRACK", "null", 0.0, 0, 0, 0, 0, 0);
  32510. ApplyAnimation(playerid, "BD_FIRE", "null", 0.0, 0, 0, 0, 0, 0);
  32511. ApplyAnimation(playerid, "INT_SHOP", "null", 0.0, 0, 0, 0, 0, 0);
  32512. ApplyAnimation(playerid, "VENDING", "null", 0.0, 0, 0, 0, 0, 0);
  32513. ApplyAnimation(playerid, "BAR", "null", 0.0, 0, 0, 0, 0, 0);
  32514. ApplyAnimation(playerid, "GYMNASIUM", "null", 0.0, 0, 0, 0, 0, 0);
  32515. ApplyAnimation(playerid, "HEIST9", "null", 0.0, 0, 0, 0, 0, 0);
  32516. ApplyAnimation(playerid, "COLT45", "null", 0.0, 0, 0, 0, 0, 0);
  32517. ApplyAnimation(playerid, "SILENCED", "null", 0.0, 0, 0, 0, 0, 0);
  32518. ApplyAnimation(playerid, "BUDDY", "null", 0.0, 0, 0, 0, 0, 0);
  32519. ApplyAnimation(playerid, "UZI", "null", 0.0, 0, 0, 0, 0, 0);
  32520. ApplyAnimation(playerid, "TEC", "null", 0.0, 0, 0, 0, 0, 0);
  32521. ApplyAnimation(playerid, "RIFLE", "null", 0.0, 0, 0, 0, 0, 0);
  32522. ApplyAnimation(playerid, "SMOKING", "null", 0.0, 0, 0, 0, 0, 0);*/
  32523. UpdateNameTag(playerid, 1);
  32524. // Weapon skills
  32525. SetPlayerSkillLevel(playerid, WEAPONSKILL_PISTOL, 990);
  32526. SetPlayerSkillLevel(playerid, WEAPONSKILL_MICRO_UZI, 990);
  32527. SetPlayerSkillLevel(playerid, WEAPONSKILL_SAWNOFF_SHOTGUN, 990);
  32528. SetPlayerSkillLevel(playerid, WEAPONSKILL_SPAS12_SHOTGUN, 0);
  32529. if (!Players[playerid][pSetupInfo])
  32530. {
  32531. /*SetPlayerInterior(playerid, 14);
  32532. SetPlayerPos(playerid, 208.3268, -154.9872, 1000.5234);
  32533. SetPlayerFacingAngle(playerid, 180.0000);
  32534. SetPlayerCameraPos(playerid, 208.276733, -158.160308, 1001.734130);
  32535. SetPlayerCameraLookAt(playerid, 208.316360, -155.487106, 1001.023437);
  32536. SetPlayerVirtualWorld(playerid, playerid);
  32537. TogglePlayerControllable(playerid, 0);
  32538. ResetCharacterSetup(playerid);
  32539. SelectTextDraw(playerid, -1);*/
  32540. for (new i = 86; i < 102; i ++) {
  32541. PlayerTextDrawShow(playerid, Players[playerid][pText][i]);
  32542. }
  32543. }
  32544. else
  32545. {
  32546. SetPlayerSpawn(playerid);
  32547. //SetPlayerSkin(playerid, Players[playerid][pSkin]);
  32548. }
  32549. GetPlayerPos(playerid, Players[playerid][pDistance][0], Players[playerid][pDistance][1], Players[playerid][pDistance][2]);
  32550. return 1;
  32551. }
  32552. public OnPlayerConnect(playerid)
  32553. {
  32554. ReviewQuiz[playerid] = -1;
  32555. EnteringVehicle[playerid] = 0;
  32556. if (IsPlayerNPC(playerid))
  32557. {
  32558. Players[playerid][pLoggedIn] = 1;
  32559. }
  32560. else
  32561. {
  32562. RemoveBuildings(playerid);
  32563. ClearData(playerid);
  32564. SetupTextdraws(playerid);
  32565. Streamer_VisibleItems(STREAMER_TYPE_OBJECT, 999);
  32566. FlushChatForPlayer(playerid);
  32567. //SendInfoMessage(playerid, "Welcome to Core Roleplay! The server will now fetch your details.");
  32568. PlayAudioStreamForPlayer(playerid, "http://tinyurl.com/9g6yger");
  32569. SendClientMessage(playerid, COLOR_WHITE, "Type{FF9900} /help{FFFFFF} for more information regarding the server.");
  32570. SendClientMessage(playerid, COLOR_WHITE, "Make sure you're up to date with the{FF9900} server rules{FFFFFF}. ");
  32571. SendClientMessage(playerid, COLOR_WHITE, "Make sure you're registered on our forums!{FF9900} www.westcoastrpg.com{FFFFFF}.");
  32572. //SetPlayerColor(playerid, COLOR_PLAYER);
  32573. }
  32574. return 1;
  32575. }
  32576. public OnPlayerDisconnect(playerid, reason)
  32577. {
  32578. ReviewQuiz[playerid] = -1;
  32579. if(EnteringVehicle[playerid] == 1) {
  32580. EnteringVehicle[playerid] = 0;
  32581. KillTimer(EnteringVeh_Timer[playerid]);
  32582. }
  32583. if (Players[playerid][pLoggedIn] > 0)
  32584. {
  32585. if(reason == 0) {
  32586. Players[playerid][pCrashed] = true;
  32587. } else {
  32588. Players[playerid][pCrashed] = false;
  32589. }
  32590. SaveAccount(playerid);
  32591. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET Online = 0 WHERE ID = %i", Players[playerid][pID]);
  32592. mysql_tquery(gConnection, gExecute);
  32593. }
  32594. if (Players[playerid][pPaused])
  32595. {
  32596. DestroyDynamic3DTextLabel(Players[playerid][pPausedText]);
  32597. }
  32598. if (Players[playerid][pDeathState] == DEATH_STATE_INJURED)
  32599. {
  32600. DestroyDynamic3DTextLabel(Players[playerid][pInjuredText]);
  32601. }
  32602. if (Players[playerid][pWorkout])
  32603. {
  32604. KillTimer(Timers[playerid][tWorkout]);
  32605. }
  32606. if (Players[playerid][pDeathState] == DEATH_STATE_HOSPITAL)
  32607. {
  32608. KillTimer(Timers[playerid][tHospital]);
  32609. }
  32610. if (Players[playerid][pRepairCar])
  32611. {
  32612. KillTimer(Timers[playerid][tRepair]);
  32613. }
  32614. if (Players[playerid][pCalling] > 0)
  32615. {
  32616. HangupCall(playerid);
  32617. }
  32618. if (Players[playerid][pHouseEdit] != INVALID_ID)
  32619. {
  32620. SetFurnitureEditMode(Players[playerid][pHouseEdit], false);
  32621. }
  32622. if (Players[playerid][pInsideTaxi] != INVALID_PLAYER_ID)
  32623. {
  32624. OnPlayerExitTaxi(playerid);
  32625. }
  32626. if (Players[playerid][pPayphone] != INVALID_ID)
  32627. {
  32628. HangupCall(playerid);
  32629. }
  32630. if (Players[playerid][pRefuel] != INVALID_ID)
  32631. {
  32632. StopRefuel(playerid);
  32633. }
  32634. if (Players[playerid][pWorking])
  32635. {
  32636. StopWorking(playerid);
  32637. }
  32638. if (Stereos[playerid][pStereoID] != INVALID_ID)
  32639. {
  32640. ResetStereo(playerid);
  32641. }
  32642. if (IsValidVehicle(Players[playerid][pAddVehicle]))
  32643. {
  32644. DestroyVehicleEx(Players[playerid][pAddVehicle]);
  32645. }
  32646. if (Players[playerid][pHandcuffed])
  32647. {
  32648. SendAdminMessage(COLOR_RED, "Admin: %s has left the server while handcuffed.", ReturnNameEx(playerid, 0));
  32649. }
  32650. switch (reason)
  32651. {
  32652. case 0:
  32653. {
  32654. SendDistanceMessage(playerid, 20.0, COLOR_GREY, "** %s has left the server (Timeout).", ReturnNameEx(playerid, 0));
  32655. g_Callsigns[ Players[playerid][pFactionCallsign] ][e_CallsignTakenBy] = INVALID_ID;
  32656. Players[playerid][pFactionCallsign] = 0;
  32657. new Float:x, Float:y, Float:z;
  32658. GetPlayerPos(playerid, x, y, z);
  32659. new log[128];
  32660. format(log, sizeof(log), "%s (%s) has left the server (Timeout) (%.2f, %.2f, %.2f)", ReturnName(playerid), Players[playerid][pIP], x, y, z);
  32661. CreateLog("logging", log);
  32662. }
  32663. case 1:
  32664. {
  32665. SendDistanceMessage(playerid, 20.0, COLOR_GREY, "** %s has left the server (Quit).", ReturnNameEx(playerid, 0));
  32666. //RemoveEquipment(playerid);
  32667. g_Callsigns[ Players[playerid][pFactionCallsign] ][e_CallsignTakenBy] = INVALID_ID;
  32668. Players[playerid][pFactionCallsign] = 0;
  32669. new Float:x, Float:y, Float:z;
  32670. GetPlayerPos(playerid, x, y, z);
  32671. new log[128];
  32672. format(log, sizeof(log), "%s (%s) has left the server (Quit) (%.2f, %.2f, %.2f)", ReturnName(playerid), Players[playerid][pIP], x, y, z);
  32673. CreateLog("logging", log);
  32674. }
  32675. case 2:
  32676. {
  32677. SendDistanceMessage(playerid, 20.0, COLOR_GREY, "** %s has left the server (Kicked).", ReturnNameEx(playerid, 0));
  32678. //RemoveEquipment(playerid);
  32679. g_Callsigns[ Players[playerid][pFactionCallsign] ][e_CallsignTakenBy] = INVALID_ID;
  32680. Players[playerid][pFactionCallsign] = 0;
  32681. new Float:x, Float:y, Float:z;
  32682. GetPlayerPos(playerid, x, y, z);
  32683. new log[128];
  32684. format(log, sizeof(log), "%s (%s) has left the server (Kicked) (%.2f, %.2f, %.2f)", ReturnName(playerid), Players[playerid][pIP], x, y, z);
  32685. CreateLog("logging", log);
  32686. }
  32687. }
  32688. foreach (new i : Player)
  32689. {
  32690. if(ReviewQuiz[i] == playerid)
  32691. {
  32692. SendClientMessage(i, COLOR_RED, "The player you were reviewing the quiz for has disconnected.");
  32693. ReviewQuiz[i] = -1;
  32694. Dialog_Close(i);
  32695. }
  32696. if (Players[i][pSpectate] == playerid)
  32697. {
  32698. SpectatePlayer(i, INVALID_PLAYER_ID);
  32699. SendInfoMessage(i, "%s has logged off. Spectator mode has been disabled.", ReturnNameEx(playerid, 0));
  32700. }
  32701. if (Players[i][pCuffedBy] == playerid)
  32702. {
  32703. Players[i][pHandcuffed] = 0;
  32704. Players[i][pCuffedBy] = INVALID_PLAYER_ID;
  32705. SetPlayerSpecialAction(i, SPECIAL_ACTION_NONE);
  32706. SendInfoMessage(i, "The handcuffs were removed as the player left the server.");
  32707. }
  32708. if (Players[i][pFactionOffer] == playerid)
  32709. {
  32710. Players[i][pFactionOffer] = INVALID_PLAYER_ID;
  32711. SendInfoMessage(i, "The faction invite has expired.");
  32712. }
  32713. if (Players[i][pFriskOffer] == playerid)
  32714. {
  32715. Players[i][pFriskOffer] = INVALID_PLAYER_ID;
  32716. SendInfoMessage(i, "The frisk invite has expired.");
  32717. }
  32718. if (Players[i][pHouseOffer] == playerid)
  32719. {
  32720. Players[i][pHouseOffer] = INVALID_PLAYER_ID;
  32721. SendInfoMessage(i, "The house offer has expired.");
  32722. }
  32723. if (Players[i][pCompanyOffer] == playerid)
  32724. {
  32725. Players[i][pCompanyOffer] = INVALID_PLAYER_ID;
  32726. SendInfoMessage(i, "The company offer has expired.");
  32727. }
  32728. if (Players[i][pCarOffer] == playerid)
  32729. {
  32730. Players[i][pCarOffer] = INVALID_PLAYER_ID;
  32731. SendInfoMessage(i, "The vehicle offer has expired.");
  32732. }
  32733. if (Players[i][pShakeOffer] == playerid)
  32734. {
  32735. Players[i][pShakeOffer] = INVALID_PLAYER_ID;
  32736. SendInfoMessage(i, "The handshake offer has expired.");
  32737. }
  32738. if (Players[i][pSetStaff] == playerid)
  32739. {
  32740. Players[i][pSetStaff] = INVALID_PLAYER_ID;
  32741. Dialog_Close(i);
  32742. }
  32743. }
  32744. RemoveAttachedObjects(playerid);
  32745. RespawnRentalCar(playerid);
  32746. ClearData(playerid);
  32747. ClearReports(playerid);
  32748. return 1;
  32749. }
  32750. public OnPlayerRequestClass(playerid, classid)
  32751. {
  32752. if (IsPlayerNPC(playerid)) return 1;
  32753. if (Players[playerid][pID] == INVALID_ID)
  32754. {
  32755. new
  32756. queryString[160];
  32757. format(queryString, sizeof(queryString), "SELECT BannedBy, Date, Reason FROM rp_blacklist WHERE Player = '%s' OR IP = '%s'", ReturnName(playerid), ReturnIP(playerid));
  32758. mysql_tquery(gConnection, queryString, "OnBlacklistCheck", "i", playerid);
  32759. }
  32760. /*AdjustMenuCamera(playerid);
  32761. SyncTimeForPlayer(playerid);
  32762. SetPlayerColor(playerid, COLOR_PLAYER);*/
  32763. switch(classid)
  32764. {
  32765. case 0:
  32766. {
  32767. SetPlayerPos(playerid, 2527.9763,-1666.6794,15.1682);
  32768. SetPlayerFacingAngle(playerid, 100.0);
  32769. SetPlayerCameraPos(playerid, 2522.4639,-1667.2499,15.0358);
  32770. SetPlayerCameraLookAt(playerid, 2527.9763,-1666.6794,15.1682);
  32771. PlayAnimation(playerid, "GHANDS", "GSIGN1", 4.1, 0, 0, 0, 0, 0, 1);
  32772. GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~~G~(GSF)~n~ ~w~Grove Street Families", 2000, 3);
  32773. SetPlayerColor(playerid, COLOR_GREEN);
  32774. }
  32775. case 1:
  32776. {
  32777. SetPlayerPos(playerid, 2527.9763,-1666.6794,15.1682);
  32778. SetPlayerFacingAngle(playerid, 100.0);
  32779. SetPlayerCameraPos(playerid, 2522.4639,-1667.2499,15.0358);
  32780. PlayAnimation(playerid, "GHANDS", "GSIGN1", 4.1, 0, 0, 0, 0, 0, 1);
  32781. SetPlayerCameraLookAt(playerid, 2527.9763,-1666.6794,15.1682);
  32782. GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~~G~(Sweet)~n~ ~w~Locked for~n~~r~N/A", 2000, 3);
  32783. SetPlayerColor(playerid, COLOR_GREEN);
  32784. }
  32785. case 2:
  32786. {
  32787. SetPlayerPos(playerid, 2527.9763,-1666.6794,15.1682);
  32788. SetPlayerFacingAngle(playerid, 100.0);
  32789. SetPlayerCameraPos(playerid, 2522.4639,-1667.2499,15.0358);
  32790. PlayAnimation(playerid, "GHANDS", "GSIGN1", 4.1, 0, 0, 0, 0, 0, 1);
  32791. SetPlayerCameraLookAt(playerid, 2527.9763,-1666.6794,15.1682);
  32792. GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~~G~(Big Smoke)~n~ ~w~Locked for~n~~r~N/A", 2000, 3);
  32793. SetPlayerColor(playerid, COLOR_GREEN);
  32794. }
  32795. case 3:
  32796. {
  32797. SetPlayerPos(playerid, 2527.9763,-1666.6794,15.1682);
  32798. SetPlayerFacingAngle(playerid, 100.0);
  32799. SetPlayerCameraPos(playerid, 2522.4639,-1667.2499,15.0358);
  32800. PlayAnimation(playerid, "GHANDS", "GSIGN1", 4.1, 0, 0, 0, 0, 0, 1);
  32801. SetPlayerCameraLookAt(playerid, 2527.9763,-1666.6794,15.1682);
  32802. GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~~G~(Ryder)~n~ ~w~Locked for~n~~r~N/A", 2000, 3);
  32803. SetPlayerColor(playerid, COLOR_GREEN);
  32804. }
  32805. case 4:
  32806. {
  32807. SetPlayerPos(playerid, 2527.9763,-1666.6794,15.1682);
  32808. SetPlayerFacingAngle(playerid, 100.0);
  32809. SetPlayerCameraPos(playerid, 2522.4639,-1667.2499,15.0358);
  32810. PlayAnimation(playerid, "GHANDS", "GSIGN1", 4.1, 0, 0, 0, 0, 0, 1);
  32811. SetPlayerCameraLookAt(playerid, 2527.9763,-1666.6794,15.1682);
  32812. GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~~G~(CJ)~n~ ~w~Locked for~n~~r~N/A", 2000, 3);
  32813. SetPlayerColor(playerid, COLOR_GREEN);
  32814. }
  32815. case 5:
  32816. {
  32817. SetPlayerPos(playerid, 2770.4014,-2015.1353,13.5547);
  32818. SetPlayerFacingAngle(playerid, 46.7000);
  32819. SetPlayerCameraPos(playerid, 2766.4897,-2011.0477,13.5620);
  32820. SetPlayerCameraLookAt(playerid, 2770.4014,-2015.1353,13.5547);
  32821. PlayAnimation(playerid, "GHANDS", "GSIGN2", 4.1, 0, 0, 0, 0, 0, 1);
  32822. GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~~h~~G~(SBF)~n~ ~w~Seville Boulevard Families", 2000, 3);
  32823. SetPlayerColor(playerid, 0x9DFFB6FF);
  32824. }
  32825. case 6:
  32826. {
  32827. SetPlayerPos(playerid, 915.0075,-1108.0718,24.2722);
  32828. SetPlayerFacingAngle(playerid, 359.5310);
  32829. SetPlayerCameraPos(playerid, 915.2412,-1104.8180,24.2969);
  32830. SetPlayerCameraLookAt(playerid, 915.0075,-1108.0718,24.2722);
  32831. PlayAnimation(playerid, "GHANDS", "GSIGN3", 4.1, 0, 0, 0, 0, 0, 1);
  32832. GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~ ~G~(TDF)~n~ ~w~Temple Drive Families", 2000, 3);
  32833. SetPlayerColor(playerid, COLOR_DARKGREEN);
  32834. }
  32835. case 7:
  32836. {
  32837. SetPlayerPos(playerid, 2175.5786,-1732.3136,13.5339);
  32838. SetPlayerFacingAngle(playerid, 271.4185);
  32839. SetPlayerCameraPos(playerid, 2179.8755,-1732.6957,13.5469);
  32840. SetPlayerCameraLookAt(playerid, 2175.5786,-1732.3136,13.5339);
  32841. PlayAnimation(playerid, "GHANDS", "GSIGN5", 4.1, 0, 0, 0, 0, 0, 1);
  32842. GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~ ~P~(FYB)~n~ ~w~Front Yard Ballas", 2000, 3);
  32843. SetPlayerColor(playerid, 0xAA00AAFF);
  32844. }
  32845. case 8:
  32846. {
  32847. SetPlayerPos(playerid, 2136.1011,-1391.1796,23.9992);
  32848. SetPlayerFacingAngle(playerid, 39.3045);
  32849. SetPlayerCameraPos(playerid, 2133.7769,-1387.9919,23.8281);
  32850. SetPlayerCameraLookAt(playerid, 2136.1011,-1391.1796,23.9992);
  32851. PlayAnimation(playerid, "GHANDS", "GSIGN4", 4.1, 0, 0, 0, 0, 0, 1);
  32852. GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~ ~P~(RHB)~n~ ~w~Rollin' Heightz' Ballas", 2000, 3);
  32853. SetPlayerColor(playerid, 0xAA00AAFF);
  32854. }
  32855. case 9:
  32856. {
  32857. SetPlayerPos(playerid, 1983.5040,-1157.2803,20.9567);
  32858. SetPlayerFacingAngle(playerid, 90.4397);
  32859. SetPlayerCameraPos(playerid, 1979.7319,-1157.1125,20.9351);
  32860. SetPlayerCameraLookAt(playerid, 1983.5040,-1157.2803,20.9567);
  32861. PlayAnimation(playerid, "GANGS", "INVITE_YES", 4.1, 0, 0, 0, 0, 0, 1);
  32862. GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~ ~P~(KTB)~n~ ~w~Kilo Tray Ballas", 2000, 3);
  32863. SetPlayerColor(playerid, 0xAA00AAFF);
  32864. }
  32865. case 10:
  32866. {
  32867. SetPlayerPos(playerid, 1183.7802,-1258.4663,18.8984);
  32868. SetPlayerFacingAngle(playerid, 181.0539);
  32869. SetPlayerCameraPos(playerid, 1183.9564,-1261.6102,18.8984);
  32870. SetPlayerCameraLookAt(playerid, 1183.7802,-1258.4663,18.8984);
  32871. PlayAnimation(playerid, "GANGS", "INVITE_NO", 4.1, 0, 0, 0, 0, 0, 1);
  32872. GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~ ~P~(TDB)~n~ ~w~Temple Drive Ballas", 2000, 3);
  32873. SetPlayerColor(playerid, 0xFF93FFFF);
  32874. }
  32875. case 11:
  32876. {
  32877. SetPlayerPos(playerid, 2838.1475,-2355.1714,42.7344);
  32878. SetPlayerFacingAngle(playerid, 180.6836);
  32879. SetPlayerCameraPos(playerid, 2838.2375,-2362.5527,42.7344);
  32880. SetPlayerCameraLookAt(playerid, 2838.1475,-2355.1714,42.7344);
  32881. PlayAnimation(playerid, "PYTHON", "PYTHON_RELOAD", 4.1, 0, 0, 0, 0, 0, 3);
  32882. GameTextForPlayer(playerid, " ~n~~n~~n~~n~~n~~n~~n~ ~y~(GD)~n~ ~w~Gun Dealers", 2000, 3);
  32883. SetPlayerColor(playerid, 0xFF7837FF);
  32884. }
  32885. case 12..14:
  32886. {
  32887. SetPlayerPos(playerid, 2352.2102,-1539.5930,33.7365);
  32888. SetPlayerFacingAngle(playerid, 130.4650);
  32889. SetPlayerCameraPos(playerid, 2349.5562,-1542.0067,33.7365);
  32890. SetPlayerCameraLookAt(playerid, 2352.2102,-1539.5930,33.7365);
  32891. PlayAnimation(playerid, "RAPPING", "RAP_A_LOOP", 4.1, 1, 0, 0, 1, 0, 1);
  32892. GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~ ~h~~w~(Non affiliated faction)~n~~w~HOODRATS", 2000, 3);
  32893. SetPlayerColor(playerid, COLOR_GREY);
  32894. }
  32895. case 15:
  32896. {
  32897. SetPlayerPos(playerid, 1876.9720,-2036.1689,13.5391);
  32898. SetPlayerFacingAngle(playerid, 224.9041);
  32899. SetPlayerCameraPos(playerid, 1879.4531,-2038.6274,13.3906);
  32900. SetPlayerCameraLookAt(playerid, 1876.9720,-2036.1689,13.5391);
  32901. PlayAnimation(playerid, "RIOT", "RIOT_FUKU", 4.1, 0, 0, 0, 0, 0, 1);
  32902. GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~ ~h~~b~(VLA)~n~~w~Varrios Los Aztecas", 2000, 3);
  32903. SetPlayerColor(playerid, 0x00ECECFF);
  32904. }
  32905. case 16:
  32906. {
  32907. SetPlayerPos(playerid, 2434.3467,-1325.1730,25.0269);
  32908. SetPlayerFacingAngle(playerid, 267.8017);
  32909. SetPlayerCameraPos(playerid, 2437.7539,-1325.1948,24.9492);
  32910. SetPlayerCameraLookAt(playerid, 2434.3467,-1325.1730,25.0269);
  32911. PlayAnimation(playerid, "RIOT", "RIOT_FUKU", 4.1, 0, 0, 0, 0, 0, 1);
  32912. GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~ ~h~~y~(V)~n~~w~Vagos", 2000, 3);
  32913. SetPlayerColor(playerid, COLOR_YELLOW);
  32914. }
  32915. case 17:
  32916. {
  32917. SetPlayerPos(playerid, 300.0962,-1154.6696,81.2754);
  32918. SetPlayerFacingAngle(playerid, 136.5688);
  32919. SetPlayerCameraPos(playerid, 297.2060,-1157.5317,81.2754);
  32920. SetPlayerCameraLookAt(playerid, 300.0962,-1154.6696,81.2754);
  32921. PlayAnimation(playerid, "GANGS", "INVITE_YES", 4.1, 0, 0, 0, 0, 0, 1);
  32922. GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~ ~h~~r~(LS)~n~~w~Loco Syndicate", 2000, 3);
  32923. SetPlayerColor(playerid, COLOR_RED);
  32924. }
  32925. case 18:
  32926. {
  32927. SetPlayerPos(playerid, 1543.8267,-1632.0171,13.3828);
  32928. SetPlayerFacingAngle(playerid, 89.7918);
  32929. SetPlayerCameraPos(playerid, 1539.7317,-1631.9980,13.3828);
  32930. SetPlayerCameraLookAt(playerid, 1543.8267,-1632.0171,13.3828);
  32931. GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~n~ ~h~~b~(LSPD)~n~~w~Los Santos Police Department", 2000, 3);
  32932. SetPlayerColor(playerid, COLOR_BLUE);
  32933. }
  32934. }
  32935. return 1;
  32936. }
  32937. public OnPlayerRequestSpawn(playerid)
  32938. {
  32939. /*if (IsPlayerNPC(playerid)) return 1;
  32940. return Players[playerid][pLoggedIn];*/
  32941. if(GetPlayerSkin(playerid) == 270) //SWEET
  32942. {
  32943. new name[MAX_PLAYER_NAME];
  32944. GetPlayerName(playerid, name, MAX_PLAYER_NAME);
  32945. if(strcmp(name, "[FYB]DoubleMac", false) == 0)
  32946. {
  32947. SetPlayerPos(playerid, 2527.9763,-1666.6794,15.1682);
  32948. }
  32949. else {
  32950. SendClientMessage(playerid, COLOR_LIGHTGREY, " Sorry, only the user role-playing Sweet can use this skin.");
  32951. return 0;
  32952. }
  32953. }
  32954. if(GetPlayerSkin(playerid) == 269) //SWEET
  32955. {
  32956. new name[MAX_PLAYER_NAME];
  32957. GetPlayerName(playerid, name, MAX_PLAYER_NAME);
  32958. if(strcmp(name, "[FYB]DoubleMac", false) == 0)
  32959. {
  32960. SetPlayerPos(playerid, 2527.9763,-1666.6794,15.1682);
  32961. }
  32962. else {
  32963. SendClientMessage(playerid, COLOR_LIGHTGREY, " Sorry, only the user role-playing Big Smoke can use this skin.");
  32964. return 0;
  32965. }
  32966. }
  32967. if(GetPlayerSkin(playerid) == 271) //SWEET
  32968. {
  32969. new name[MAX_PLAYER_NAME];
  32970. GetPlayerName(playerid, name, MAX_PLAYER_NAME);
  32971. if(strcmp(name, "[FYB]DoubleMac", false) == 0)
  32972. {
  32973. SetPlayerPos(playerid, 2527.9763,-1666.6794,15.1682);
  32974. }
  32975. else {
  32976. SendClientMessage(playerid, COLOR_LIGHTGREY, " Sorry, only the user role-playing Ryder can use this skin.");
  32977. return 0;
  32978. }
  32979. }
  32980. if(GetPlayerSkin(playerid) == 0) //SWEET
  32981. {
  32982. new name[MAX_PLAYER_NAME];
  32983. GetPlayerName(playerid, name, MAX_PLAYER_NAME);
  32984. if(strcmp(name, "[FYB]DoubleMac", false) == 0)
  32985. {
  32986. SetPlayerPos(playerid, 2527.9763,-1666.6794,15.1682);
  32987. }
  32988. else {
  32989. SendClientMessage(playerid, COLOR_LIGHTGREY, " Sorry, only the user role-playing CJ can use this skin.");
  32990. return 0;
  32991. }
  32992. }
  32993. return 1;
  32994. }
  32995. public OnEnterExitModShop(playerid, enterexit, interiorid)
  32996. {
  32997. Players[playerid][pModShop] = enterexit;
  32998. return 1;
  32999. }
  33000. /*---------------------------------------------------------------------------
  33001. Dialogs
  33002. These are the dialog functions used by easyDialog.
  33003. Use the Dialog: syntax to create new dialogs.
  33004. ---------------------------------------------------------------------------*/
  33005. #include "core/player/dialog_phone.pwn"
  33006. //Dialog_Show(playerid, TagEditMenu, DIALOG_STYLE_LIST, "{FFFFFF}Edit Tag", "Position\nText\nColor\nFont Size\nBold\nTag Resolution", "Select", "Cancel");
  33007. Dialog:ModdingMenu(playerid, response, listitem, inputtext[])
  33008. {
  33009. if((response) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  33010. {
  33011. for(new i = 0; i < sizeof(componentSlotNames); i ++)
  33012. {
  33013. if(!strcmp(componentSlotNames[i], inputtext) && GetVehicleComponentTypeCount(GetPlayerVehicleID(playerid), i) > 0)
  33014. {
  33015. Players[playerid][pSelected] = i;
  33016. ShowModBrowseMenu(playerid);
  33017. return 1;
  33018. }
  33019. }
  33020. }
  33021. else
  33022. {
  33023. ExitModdingShop(playerid);
  33024. }
  33025. return 1;
  33026. }
  33027. Dialog:ModdingBrowse(playerid, response, listitem, inputtext[])
  33028. {
  33029. if((response) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  33030. {
  33031. new count, vehicleid = GetPlayerVehicleID(playerid);
  33032. for(new i = MIN_COMPONENT_ID; i <= MAX_COMPONENT_ID; i ++)
  33033. {
  33034. if(GetVehicleComponentType(i) == Players[playerid][pSelected] && IsValidComponentForVehicle(vehicleid, i) && count++ == listitem)
  33035. {
  33036. Players[playerid][pModPreview] = i;
  33037. Players[playerid][pOldComponent] = GetVehicleComponentInSlot(vehicleid, GetVehicleComponentType(i));
  33038. SetVehicleParamsEx(vehicleid, 0, 0, 0, 0, 0, 0, 0);
  33039. AddVehicleComponent(vehicleid, Players[playerid][pModPreview]);
  33040. SendFormatMessage(playerid, COLOR_LIGHTGREY, "You are previewing {33AA33}%s{CFCFCF}. Move your camera with your mouse in order to preview.", GetVehicleComponentName(i));
  33041. SendFormatMessage(playerid, COLOR_LIGHTGREY, "Press {33AA33}~k~~VEHICLE_FIREWEAPON~{CFCFCF} if you wish to confirm your purchase, or go back to the previous menu.");
  33042. return 1;
  33043. }
  33044. }
  33045. ShowModMainMenu(playerid);
  33046. }
  33047. else
  33048. {
  33049. ExitModdingShop(playerid);
  33050. }
  33051. return 1;
  33052. }
  33053. Dialog:ModdingPurchase(playerid, response, listitem, inputtext[])
  33054. {
  33055. if((response) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  33056. {
  33057. new price = GetVehicleComponentPriceEx(Players[playerid][pModPreview]);
  33058. if(PlayerCanAfford(playerid, price))
  33059. {
  33060. new vehicle = GetVehicleID(GetPlayerVehicleID(playerid));
  33061. if(vehicle >= 0)
  33062. {
  33063. new
  33064. slot = GetVehicleComponentType(Players[playerid][pModPreview]);
  33065. Vehicles[vehicle][vMods][slot] = Players[playerid][pModPreview];
  33066. SaveComponent(vehicle, slot);
  33067. }
  33068. RemoveMoney(playerid, price);
  33069. SendFormatMessage(playerid, COLOR_WHITE, "You have purchased %s for $%i.", GetVehicleComponentName(Players[playerid][pModPreview]), price);
  33070. ShowModMainMenu(playerid);
  33071. Players[playerid][pModPreview] = 0;
  33072. }
  33073. else
  33074. {
  33075. CancelComponentPreview(playerid);
  33076. ShowModBrowseMenu(playerid);
  33077. SendErrorMessage(playerid, "You can't afford to purchase this mod.");
  33078. }
  33079. }
  33080. else
  33081. {
  33082. CancelComponentPreview(playerid);
  33083. ShowModBrowseMenu(playerid);
  33084. }
  33085. return 1;
  33086. }
  33087. Dialog:TagEditMenu(playerid, response, listitem, inputtext[])
  33088. {
  33089. new
  33090. id = Players[playerid][pEditID];
  33091. if (response)
  33092. {
  33093. switch (listitem)
  33094. {
  33095. case 0:
  33096. {
  33097. EditDynamicObjectEx(playerid, EDIT_TYPE_TAG, Tags[id][tagObject], id);
  33098. SendInfoMessage(playerid, "Click on the disk icon to save changes.");
  33099. }
  33100. case 1:
  33101. {
  33102. Dialog_Show(playerid, TagText, DIALOG_STYLE_INPUT, "{FFFFFF}Edit Tag Text", "Please enter the text you'd like to set the tag to:", "Select", "Cancel");
  33103. }
  33104. case 2:
  33105. {
  33106. Dialog_Show(playerid, TagColor, DIALOG_STYLE_LIST, "{FFFFFF}Edit Tag Color", "White\nBlack\nGrey\nBlue\nYellow\nRed\nGreen\nPurple\nOrange", "Select", "Cancel");
  33107. }
  33108. case 3:
  33109. {
  33110. Dialog_Show(playerid, TagFontSize, DIALOG_STYLE_LIST, "{FFFFFF}Edit Tag Color", "8\n12\n14\n16\n18\n20\n22\n24\n26\n28\n30\n32\n34\n36\n38\n40", "Select", "Cancel");
  33111. }
  33112. case 4:
  33113. {
  33114. if (!Tags[id][tagBold])
  33115. Tags[id][tagBold] = 1;
  33116. else
  33117. Tags[id][tagBold] = 0;
  33118. UpdateTag(id);
  33119. SaveTag(id);
  33120. Dialog_Show(playerid, TagEditMenu, DIALOG_STYLE_LIST, "{FFFFFF}Edit Tag", "Position\nText\nColor\nFont Size\nBold: %s\nTag Resolution", "Select", "Cancel", (Tags[id][tagBold]) ? ("Yes") : ("No"));
  33121. }
  33122. }
  33123. }
  33124. return 1;
  33125. }
  33126. Dialog:QuizQuestion(playerid, response, listitem, inputtext[]) //tobefinished
  33127. {
  33128. if(response)
  33129. {
  33130. if(isnull(inputtext)) // Added cause of cunts spamming through quiz questions. -Grime 10/03/2017
  33131. {
  33132. switch(currentQuestion[playerid])
  33133. {
  33134. case 0: Dialog_Show(playerid, QuizQuestion, DIALOG_STYLE_INPUT, "{FFFFFF}Server Quiz (Question: 1)", "{FFFFFF}In your own words, how would you define the term roleplay?\n\nYou can make this question as simple, or complex as you'd like.\n\n{FF0000}WARNING: {FFFFFF}Hitting 'Cancel' will disconnect you from the server.", "Enter", "Cancel");
  33135. case 1: Dialog_Show(playerid, QuizQuestion, DIALOG_STYLE_INPUT, "{FFFFFF}Server Quiz (Question: 2)", "{FFFFFF}How would you define the term 'Metagaming'?\n\nYou can make this question as simple, or complex as you'd like.\n{FF0000}WARNING: {FFFFFF}Hitting 'Cancel' will disconnect you from the server.", "Enter", "Cancel");
  33136. case 2: Dialog_Show(playerid, QuizQuestion, DIALOG_STYLE_INPUT, "{FFFFFF}Server Quiz (Question: 3)", "{FFFFFF}How would you define the term 'Powergaming'?\n\n{FF0000}WARNING: {FFFFFF}Hitting 'Cancel' will disconnect you from the server.", "Enter", "Cancel");
  33137. case 3: Dialog_Show(playerid, QuizQuestion, DIALOG_STYLE_INPUT, "{FFFFFF}Server Quiz (Question: 4)", "{FFFFFF}What is the difference, between IC and OOC?\n\n{FF0000}WARNING: {FFFFFF}Hitting 'Cancel' will disconnect you from the server.", "Enter", "Cancel");
  33138. case 4: Dialog_Show(playerid, QuizQuestion, DIALOG_STYLE_INPUT, "{FFFFFF}Server Quiz (Question: 5)", "{FFFFFF}You spot a hacker in-game. What do you do?\n\n{FF0000}WARNING: {FFFFFF}Hitting 'Cancel' will disconnect you from the server.", "Enter", "Cancel");
  33139. case 5: Dialog_Show(playerid, QuizQuestion, DIALOG_STYLE_INPUT, "{FFFFFF}Server Quiz (Question: 6)", "{FFFFFF}What would be an appropriate '/me' for a heavy weapon? (Shotgun, UMP, etc)\n\n{FF0000}WARNING: {FFFFFF}Hitting 'Cancel' will disconnect you from the server.", "Enter", "Cancel");
  33140. case 6: Dialog_Show(playerid, QuizQuestion, DIALOG_STYLE_INPUT, "{FFFFFF}Server Quiz (Question: 7)", "{FFFFFF}What do you do if you get DMed and no admins are online?\n\n{FF0000}WARNING: {FFFFFF}Hitting 'Cancel' will disconnect you from the server.", "Enter", "Cancel");
  33141. case 7: Dialog_Show(playerid, QuizQuestion, DIALOG_STYLE_INPUT, "{FFFFFF}Server Quiz (Question: 8)", "{FFFFFF}What are the commands /report and /helpme used for?\n\n{FF0000}WARNING: {FFFFFF}Hitting 'Cancel' will disconnect you from the server.", "Enter", "Cancel");
  33142. case 8: Dialog_Show(playerid, QuizQuestion, DIALOG_STYLE_INPUT, "{FFFFFF}Server Quiz (Question: 9)", "{FFFFFF}How do you roleplay a car crash scene that you get into?\n\n{FF0000}WARNING: {FFFFFF}Hitting 'Cancel' will disconnect you from the server.", "Enter", "Cancel");
  33143. case 9: Dialog_Show(playerid, QuizQuestion, DIALOG_STYLE_INPUT, "{FFFFFF}Server Quiz (Question: 10)", "{FFFFFF}Do you understand that this is a Roleplay server?\n\n{FF0000}WARNING: {FFFFFF}Hitting 'Cancel' will disconnect you from the server.", "I Understand", "Cancel");
  33144. }
  33145. return 1;
  33146. }
  33147. switch(currentQuestion[playerid])
  33148. {
  33149. case 0:
  33150. {
  33151. format(questionResponse[playerid][0], 500, "%s", inputtext);
  33152. currentQuestion[playerid] = 1;
  33153. Dialog_Show(playerid, QuizQuestion, DIALOG_STYLE_INPUT, "{FFFFFF}Server Quiz (Question: 2)", "{FFFFFF}How would you define the term 'Metagaming'?\n\nYou can make this question as simple, or complex as you'd like.\n{FF0000}WARNING: {FFFFFF}Hitting 'Cancel' will disconnect you from the server.", "Enter", "Cancel");
  33154. }
  33155. case 1:
  33156. {
  33157. format(questionResponse[playerid][1], 500, "%s", inputtext);
  33158. currentQuestion[playerid] = 2;
  33159. Dialog_Show(playerid, QuizQuestion, DIALOG_STYLE_INPUT, "{FFFFFF}Server Quiz (Question: 3)", "{FFFFFF}How would you define the term 'Powergaming'?\n\n{FF0000}WARNING: {FFFFFF}Hitting 'Cancel' will disconnect you from the server.", "Enter", "Cancel");
  33160. }
  33161. case 2:
  33162. {
  33163. format(questionResponse[playerid][2], 500, "%s", inputtext);
  33164. currentQuestion[playerid] = 3;
  33165. Dialog_Show(playerid, QuizQuestion, DIALOG_STYLE_INPUT, "{FFFFFF}Server Quiz (Question: 4)", "{FFFFFF}What is the difference, between IC and OOC?\n\n{FF0000}WARNING: {FFFFFF}Hitting 'Cancel' will disconnect you from the server.", "Enter", "Cancel");
  33166. }
  33167. case 3:
  33168. {
  33169. format(questionResponse[playerid][3], 500, "%s", inputtext);
  33170. currentQuestion[playerid] = 4;
  33171. Dialog_Show(playerid, QuizQuestion, DIALOG_STYLE_INPUT, "{FFFFFF}Server Quiz (Question: 5)", "{FFFFFF}You spot a hacker in-game. What do you do?\n\n{FF0000}WARNING: {FFFFFF}Hitting 'Cancel' will disconnect you from the server.", "Enter", "Cancel");
  33172. }
  33173. case 4:
  33174. {
  33175. format(questionResponse[playerid][4], 500, "%s", inputtext);
  33176. currentQuestion[playerid] = 5;
  33177. Dialog_Show(playerid, QuizQuestion, DIALOG_STYLE_INPUT, "{FFFFFF}Server Quiz (Question: 6)", "{FFFFFF}What would be an appropriate '/me' for a heavy weapon? (Shotgun, UMP, etc)\n\n{FF0000}WARNING: {FFFFFF}Hitting 'Cancel' will disconnect you from the server.", "Enter", "Cancel");
  33178. }
  33179. case 5:
  33180. {
  33181. format(questionResponse[playerid][5], 500, "%s", inputtext);
  33182. currentQuestion[playerid] = 6;
  33183. Dialog_Show(playerid, QuizQuestion, DIALOG_STYLE_INPUT, "{FFFFFF}Server Quiz (Question: 7)", "{FFFFFF}What do you do if you get DMed and no admins are online?\n\n{FF0000}WARNING: {FFFFFF}Hitting 'Cancel' will disconnect you from the server.", "Enter", "Cancel");
  33184. }
  33185. case 6:
  33186. {
  33187. format(questionResponse[playerid][6], 500, "%s", inputtext);
  33188. currentQuestion[playerid] = 7;
  33189. Dialog_Show(playerid, QuizQuestion, DIALOG_STYLE_INPUT, "{FFFFFF}Server Quiz (Question: 8)", "{FFFFFF}What are the commands /report and /helpme used for?\n\n{FF0000}WARNING: {FFFFFF}Hitting 'Cancel' will disconnect you from the server.", "Enter", "Cancel");
  33190. }
  33191. case 7:
  33192. {
  33193. format(questionResponse[playerid][7], 500, "%s", inputtext);
  33194. currentQuestion[playerid] = 8;
  33195. Dialog_Show(playerid, QuizQuestion, DIALOG_STYLE_INPUT, "{FFFFFF}Server Quiz (Question: 9)", "{FFFFFF}How do you roleplay a car crash scene that you get into?\n\n{FF0000}WARNING: {FFFFFF}Hitting 'Cancel' will disconnect you from the server.", "Enter", "Cancel");
  33196. }
  33197. case 8:
  33198. {
  33199. format(questionResponse[playerid][8], 500, "%s", inputtext);
  33200. currentQuestion[playerid] = 9;
  33201. Dialog_Show(playerid, QuizQuestion, DIALOG_STYLE_INPUT, "{FFFFFF}Server Quiz (Question: 10)", "{FFFFFF}Do you understand that this is a Roleplay server?\n\n{FF0000}WARNING: {FFFFFF}Hitting 'Cancel' will disconnect you from the server.", "I Understand", "Cancel");
  33202. }
  33203. case 9:
  33204. {
  33205. for(new i = 0; i != 21; i++) {
  33206. SCM(playerid, COLOR_GREY, " ");
  33207. }
  33208. format(questionResponse[playerid][9], 500, "%s", inputtext);
  33209. SCM(playerid, COLOR_LIGHTRED, "Your answers was saved. If an admin reviews them and sees you haven't answered correctly, you'll be punished.");
  33210. SCM(playerid, COLOR_LIGHTRED, "You will now be spawned. Good luck!");
  33211. new targetid = -1;
  33212. currentQuestion[targetid] = 0;
  33213. Players[targetid][pActivated] = 1; //tobefinished
  33214. ReviewQuiz[playerid] = -1;
  33215. SaveAccount(targetid);
  33216. currentQuestion[playerid] = 10;
  33217. TogglePlayerControllable(playerid, true);
  33218. format(msg, sizeof(msg), "{E09C1D}[QUIZ] %s has submitted a server quiz response (/reviewquiz %d to review it).", ReturnName(playerid), playerid);
  33219. foreach (new i : Player)
  33220. {
  33221. if (Players[i][pSupporter] > 0 || Players[i][pAdmin] > 0 || Players[i][pVeteran] > 0)
  33222. {
  33223. SendClientMessage(i, -1, msg);
  33224. }
  33225. }
  33226. }
  33227. default: {
  33228. }
  33229. }
  33230. }
  33231. else
  33232. {
  33233. SCM(playerid, COLOR_LIGHTRED, "You've been kicked for hitting cancel.");
  33234. }
  33235. return 1;
  33236. }
  33237. CMD:quizes(playerid, params[])
  33238. {
  33239. if(Players[playerid][pAdmin] > 0 || Players[playerid][pSupporter] > 0 || Players[playerid][pVeteran] > 0)
  33240. {
  33241. new gString[2000], tmpString[128], idIndex = 0;
  33242. strcat(gString, "Index\tPlayer ID\tPlayer Name\n", sizeof gString);
  33243. foreach(new i : Player)
  33244. {
  33245. if(currentQuestion[i] == 10)
  33246. {
  33247. format(tmpString, sizeof tmpString, "%i)\t[ID: %i - /reviewquiz %i]\t%s\n", idIndex, i, i, ReturnName(i));
  33248. quizIndexes[playerid][idIndex] = i;
  33249. idIndex++;
  33250. strcat(gString, tmpString, sizeof gString);
  33251. }
  33252. }
  33253. if(idIndex != 0) {
  33254. Dialog_Show(playerid, PlayerQuizes, DIALOG_STYLE_TABLIST_HEADERS, "Quizes", gString, "Respond", "Close");
  33255. }
  33256. else SendErrorMessage(playerid, "There are no quizes left unanswered.");
  33257. }
  33258. return 1;
  33259. }
  33260. CMD:reviewquiz(playerid, params[])
  33261. {
  33262. if(Players[playerid][pAdmin] > 0 || Players[playerid][pSupporter] > 0 || Players[playerid][pVeteran] > 0)
  33263. {
  33264. new targetid = -1;
  33265. if(sscanf(params, "i", targetid)) return SendSyntaxMessage(playerid, "/reviewquiz [playerid]");
  33266. if(currentQuestion[targetid] != 10) return SendErrorMessage(playerid, "Player has not finished any quiz yet or is not working on one.");
  33267. if(Players[targetid][pActivated] == 1) return SendErrorMessage(playerid, "Player already passed the quiz.");
  33268. ReviewQuiz[playerid] = targetid;
  33269. new regString[2000];
  33270. format(regString, sizeof regString, "{FFFFFF}Reviewing registration quiz of: %s (ID:%i)\n\n", ReturnName(targetid), targetid);
  33271. for(new i=0; i < 10; i++)
  33272. {
  33273. new tmpString[300];
  33274. format(tmpString, sizeof tmpString, "\n{E09C1D}Question %i answer: \n\t{FFFFFF}%s", i+1, questionResponse[targetid][i]);
  33275. strcat(regString, tmpString, sizeof regString);
  33276. }
  33277. Dialog_Show(playerid, QuizReview, DIALOG_STYLE_MSGBOX, "{FFFFFF}Quiz", regString, "Approve", "Deny");
  33278. SendAdminMessage(COLOR_RED, "Admin: %s is now reviewing %s's starter quiz.", ReturnNameEx(playerid), ReturnNameEx(targetid));
  33279. }
  33280. return 1;
  33281. }
  33282. CMD:inform(playerid, params[])
  33283. {
  33284. if(Players[playerid][pAdmin] <= 0 || Players[playerid][pSupporter] <= 0) return SendErrorMessage(playerid,"NO PERMISSION!");
  33285. new pname[MAX_PLAYER_NAME], playa = -1, amount[64], sqlid = -1;
  33286. if(sscanf(params, "s[24]s[64]", pname, amount)) return SendSyntaxMessage(playerid, "/inform [playerid OR Full_Name ONLY] [Reason]");
  33287. if(IsNumeric(pname))
  33288. {
  33289. if(!IsPlayerConnected(strval(pname))) return SendErrorMessage(playerid, "Player ID was not connected and logged in.");
  33290. playa = strval(pname);
  33291. sqlid = Players[playa][pID];
  33292. }
  33293. else
  33294. {
  33295. sqlid = IsAccountExist(pname, playerid);
  33296. if(sqlid <= 0) return SendErrorMessage(playerid, "Name was not found. Please include first name, last name and an underscore OR use there current ingame ID.");
  33297. }
  33298. if(sqlid == -1) return SendErrorMessage(playerid, "Name was not found. Please include first name, last name and an underscore OR use there current ingame ID.");
  33299. if(sqlid == Players[playa][pID] && !IsPlayerAdmin(playerid)) return SendErrorMessage(playerid, "Cannot be yourself.");
  33300. if(playa >= 0)
  33301. {
  33302. new reportreason[128];
  33303. format(reportreason, sizeof(reportreason), "Hello, you are being reported on the forums, the following reason(s) below:\n%s", amount);
  33304. Dialog_Show(playerid, BEINGREPORTED, DIALOG_STYLE_MSGBOX, "You are being reported.", reportreason, "Close", "");
  33305. SendClientMessage(playerid, COLOR_LIGHTRED, "You have informed him/her. (Online)");
  33306. }
  33307. else
  33308. {
  33309. foreach(new i: Player) if(sqlid == Players[playa][pID]) return SendErrorMessage(playerid, "Full_Name cannot be an online player, use the player ID instead.");
  33310. static queryString[512];
  33311. format(queryString, sizeof(queryString), "UPDATE `rp_accounts` SET `BeingReported` = '1', `ReportReason` = '%s' WHERE `Username` = '%s'", amount, pname);
  33312. mysql_tquery(gConnection, queryString);
  33313. SendClientMessage(playerid, COLOR_LIGHTRED, "You have informed him/her. (Offline)");
  33314. }
  33315. return true;
  33316. }
  33317. GetNameWithSpace(playerid)
  33318. {
  33319. new p_Name[MAX_PLAYER_NAME];
  33320. GetPlayerName(playerid, p_Name, MAX_PLAYER_NAME);
  33321. return p_Name;
  33322. }
  33323. Dialog:PlayerQuizes(playerid, response, listitem, inputtext[])
  33324. {
  33325. new targetid = quizIndexes[playerid][listitem];
  33326. if(response)
  33327. {
  33328. if(currentQuestion[targetid] != 10) return SendErrorMessage(playerid, "Player has not finished any quiz yet or is not working on one.");
  33329. if(Players[targetid][pActivated] == 1) return SendErrorMessage(playerid, "Player already passed the quiz.");
  33330. ReviewQuiz[playerid] = targetid;
  33331. new regString[2000];
  33332. format(regString, sizeof regString, "{FFFFFF}Reviewing registration quiz of: %s (ID:%i)\n\n", ReturnName(targetid), targetid);
  33333. for(new i=0; i < 10; i++)
  33334. {
  33335. new tmpString[300];
  33336. format(tmpString, sizeof tmpString, "\n{E09C1D}Question %i answer: \n\t{FFFFFF}%s", i+1, questionResponse[targetid][i]);
  33337. strcat(regString, tmpString, sizeof regString);
  33338. }
  33339. Dialog_Show(playerid, QuizReview, DIALOG_STYLE_MSGBOX, "{FFFFFF}Quiz", regString, "Approve", "Deny");
  33340. }
  33341. else
  33342. {
  33343. return 1;
  33344. }
  33345. return 1;
  33346. }
  33347. Dialog:QuizReview(playerid, response, listitem, inputtext[])
  33348. {
  33349. new targetid = ReviewQuiz[playerid];
  33350. if(response)
  33351. {
  33352. if(currentQuestion[targetid] == 10)
  33353. {
  33354. currentQuestion[targetid] = 0;
  33355. Players[targetid][pActivated] = 1; //tobefinished
  33356. ReviewQuiz[playerid] = -1;
  33357. SaveAccount(targetid);
  33358. format(msg, sizeof(msg), "{E09C1D}[QUIZ] %s has accepted %s's starter quiz.",GetNameWithSpace(playerid),GetNameWithSpace(targetid));
  33359. if(Players[playerid][pSupporter] > 0)
  33360. {
  33361. SendSupporterMessage(-1, msg);
  33362. }
  33363. else if(Players[playerid][pAdmin] > 0)
  33364. {
  33365. SendAdminMessage(-1, msg);
  33366. }
  33367. else if(Players[playerid][pVeteran] > 0)
  33368. {
  33369. SendVeteranMessage(-1, msg);
  33370. }
  33371. format(msg, sizeof(msg), "Staff member %s has accepted your starter quiz, you will now be spawned.",GetNameWithSpace(playerid));
  33372. SCM(targetid, COLOR_LIGHTRED, msg);
  33373. SCM(targetid, COLOR_WHITE, " ");
  33374. SCM(targetid, COLOR_GREEN, "Use /helpme to recieve help from any of our online moderators/admins.");
  33375. SCM(targetid, COLOR_GREEN, "If you see a rules breaker, do not hesitate to /report them so an admin can deal with them.");
  33376. SCM(targetid, COLOR_GREEN, "Lost? Use /showlocations to find basic locations throughout the server.");
  33377. SCM(targetid, COLOR_GREEN, "Teamspeak: {FFFFFF}ts.NA.com");
  33378. SCM(targetid, COLOR_GREEN, "Website: {FFFFFF}http://www.NA.com");
  33379. SetSpawnInfo(targetid, 0, 0, 208.3268, -154.9872, 1000.5234, 180.0000, 0, 0, 0, 0, 0, 0);
  33380. TogglePlayerSpectating(targetid, false);
  33381. }
  33382. else SendErrorMessage(playerid, "Quiz has already been answered by another staff member.");
  33383. }
  33384. else
  33385. {
  33386. Dialog_Show(playerid, QuizDeny, DIALOG_STYLE_INPUT, "{FFFFFF}Deny Quiz", "{FFFFFF}Please enter the reason to deny %s (ID: %i)'s quiz:", "Deny", "Back", GetNameWithSpace(targetid), targetid);
  33387. }
  33388. return 1;
  33389. }
  33390. Dialog:QuizDeny(playerid, response, listitem, inputtext[])
  33391. {
  33392. new targetid = ReviewQuiz[playerid];
  33393. if(response && currentQuestion[targetid] == 10)
  33394. {
  33395. if(isnull(inputtext))
  33396. {
  33397. return Dialog_Show(playerid, QuizDeny, DIALOG_STYLE_INPUT, "{FFFFFF}Deny Quiz", "{FFFFFF}Please enter the reason to deny %s (ID: %i)'s quiz:", "Deny", "Back", GetNameWithSpace(targetid), targetid);
  33398. }
  33399. ReviewQuiz[playerid] = -1;
  33400. SendFormatMessage(targetid, COLOR_LIGHTRED, "A staff member has denied your quiz. Reason: %s", inputtext);
  33401. SendFormatMessage(targetid, COLOR_LIGHTRED, "You may relog and attempt the quiz again if you wish.");
  33402. format(msg, sizeof(msg), "{E09C1D}[QUIZ] %s has denied %s's starter quiz, reason: %s",GetNameWithSpace(playerid), GetNameWithSpace(targetid), inputtext);
  33403. if(Players[playerid][pSupporter] > 0)
  33404. {
  33405. SendSupporterMessage(-1, msg);
  33406. }
  33407. else if(Players[playerid][pAdmin] > 0)
  33408. {
  33409. SendAdminMessage(-1, msg);
  33410. }
  33411. else if(Players[playerid][pVeteran] > 0)
  33412. {
  33413. SendVeteranMessage(-1, msg);
  33414. }
  33415. currentQuestion[targetid] = -1;
  33416. // Send an admin message //tobefinished
  33417. KickPlayer(targetid);
  33418. }
  33419. else
  33420. {
  33421. new
  33422. str[8];
  33423. format(str, sizeof(str), "%i", targetid);
  33424. cmd_reviewquiz(playerid, str);
  33425. }
  33426. return 1;
  33427. }
  33428. // Start of matical's setstation (QA TEST)
  33429. Dialog:ChangeGenre(playerid, response, listitem, inputtext[])
  33430. {
  33431. new vehicle = GetPlayerVehicleID(playerid);
  33432. if(response)
  33433. {
  33434. switch(listitem)
  33435. {
  33436. case 0:
  33437. {
  33438. Dialog_Show(playerid, Urban, DIALOG_STYLE_LIST, "SubGenres:", "Hip Hop\nRap\nRaggae", "Select", "<<<");
  33439. }
  33440. case 1:
  33441. {
  33442. Dialog_Show(playerid, Rock, DIALOG_STYLE_LIST, "SubGenres:", "Classic Rock\nPunk\nMetal", "Select", "<<<");
  33443. }
  33444. case 2:
  33445. {
  33446. Dialog_Show(playerid, Other, DIALOG_STYLE_LIST, "SubGenres:", "C-RP\nDance\nTalk", "Select", "<<<");
  33447. }
  33448. case 3:
  33449. {
  33450. Dialog_Show(playerid, PopGenre, DIALOG_STYLE_LIST, "SubGenres:", "Top Hits", "Select", "<<<");
  33451. }
  33452. case 4:
  33453. {
  33454. Dialog_Show(playerid, CustomLink, DIALOG_STYLE_INPUT, "Enter Stream Link:", "Please enter the stream you wish to play:", "Submit", "<<<");
  33455. }
  33456. case 5:
  33457. {
  33458. StopCarBoomBox(vehicle);
  33459. }
  33460. }
  33461. }
  33462. return 1;
  33463. }
  33464. Dialog:CustomLink(playerid, response, listitem, inputtext[])
  33465. {
  33466. if(response)
  33467. {
  33468. PlayPlayerBoomBoxURL(playerid, "Custom Stream", inputtext);
  33469. } else {
  33470. ShowBoomBoxStations(playerid);
  33471. }
  33472. return 1;
  33473. }
  33474. Dialog:Urban(playerid, response, listitem, inputtext[])
  33475. {
  33476. if(response)
  33477. {
  33478. switch(listitem)
  33479. {
  33480. case 0:
  33481. {
  33482. new str[2000];
  33483. for(new x; x < sizeof(HHStations); x++)
  33484. {
  33485. format(str, sizeof(str), "%s"EMBED_WHITE"%s\n", str, HHStations[x][boomboxUrlName]);
  33486. }
  33487. Dialog_Show(playerid, HipHop, DIALOG_STYLE_LIST, "Stations:", str, "Select", "<<<");
  33488. return 1;
  33489. }
  33490. case 1:
  33491. {
  33492. new str[2000];
  33493. for(new x; x < sizeof(RapStations); x++)
  33494. {
  33495. format(str, sizeof(str), "%s"EMBED_WHITE"%s\n", str, RapStations[x][boomboxUrlName]);
  33496. }
  33497. Dialog_Show(playerid, Rap, DIALOG_STYLE_LIST, "Stations:", str, "Select", "<<<");
  33498. return 1;
  33499. }
  33500. case 2:
  33501. {
  33502. new str[2000];
  33503. for(new x; x < sizeof(RaggaeStations); x++)
  33504. {
  33505. format(str, sizeof(str), "%s"EMBED_WHITE"%s\n", str, RaggaeStations[x][boomboxUrlName]);
  33506. }
  33507. Dialog_Show(playerid, Raggae, DIALOG_STYLE_LIST, "Stations:", str, "Select", "<<<");
  33508. return 1;
  33509. }
  33510. }
  33511. }
  33512. else
  33513. {
  33514. Dialog_Show(playerid, ChangeGenre, DIALOG_STYLE_LIST, "Genres:", "URBAN\nROCK\nOTHER\nPOP\n{F2E146}CUSTOM LINK\n{F2E146}OFF - To turn off.", "Select", "<<<");
  33515. }
  33516. return 1;
  33517. }
  33518. Dialog:Rap(playerid, response, listitem, inputtext[])
  33519. {
  33520. if(response)
  33521. {
  33522. PlayPlayerBoomBoxURL(playerid, RapStations[listitem][boomboxUrlName], RapStations[listitem][boomboxURL]);
  33523. }
  33524. else
  33525. {
  33526. Dialog_Show(playerid, Urban, DIALOG_STYLE_LIST, "SubGenres:", "Hip Hop\nRap\nRaggae", "Select", "<<<");
  33527. }
  33528. return 1;
  33529. }
  33530. Dialog:Raggae(playerid, response, listitem, inputtext[])
  33531. {
  33532. if(response)
  33533. {
  33534. PlayPlayerBoomBoxURL(playerid, RaggaeStations[listitem][boomboxUrlName], RaggaeStations[listitem][boomboxURL]);
  33535. }
  33536. else
  33537. {
  33538. Dialog_Show(playerid, Urban, DIALOG_STYLE_LIST, "SubGenres:", "Hip Hop\nRap\nRaggae", "Select", "<<<");
  33539. }
  33540. return 1;
  33541. }
  33542. Dialog:HipHop(playerid, response, listitem, inputtext[])
  33543. {
  33544. if(response)
  33545. {
  33546. PlayPlayerBoomBoxURL(playerid, HHStations[listitem][boomboxUrlName], HHStations[listitem][boomboxURL]);
  33547. }
  33548. else
  33549. {
  33550. Dialog_Show(playerid, Urban, DIALOG_STYLE_LIST, "SubGenres:", "Hip Hop\nRap\nRaggae", "Select", "<<<");
  33551. }
  33552. return 1;
  33553. }
  33554. Dialog:Rock(playerid, response, listitem, inputtext[])
  33555. {
  33556. if(response)
  33557. {
  33558. switch(listitem)
  33559. {
  33560. case 0:
  33561. {
  33562. new str[2000];
  33563. for(new x; x < sizeof(ClassicStations); x++)
  33564. {
  33565. format(str, sizeof(str), "%s"EMBED_WHITE"%s\n", str, ClassicStations[x][boomboxUrlName]);
  33566. }
  33567. Dialog_Show(playerid, Classic, DIALOG_STYLE_LIST, "Stations:", str, "Select", "<<<");
  33568. }
  33569. case 1:
  33570. {
  33571. new str[2000];
  33572. for(new x; x < sizeof(PunkStations); x++)
  33573. {
  33574. format(str, sizeof(str), "%s"EMBED_WHITE"%s\n", str, PunkStations[x][boomboxUrlName]);
  33575. }
  33576. Dialog_Show(playerid, Punk, DIALOG_STYLE_LIST, "Stations:", str, "Select", "<<<");
  33577. }
  33578. case 2:
  33579. {
  33580. new str[2000];
  33581. for(new x; x < sizeof(MetalStations); x++)
  33582. {
  33583. format(str, sizeof(str), "%s"EMBED_WHITE"%s\n", str, MetalStations[x][boomboxUrlName]);
  33584. }
  33585. Dialog_Show(playerid, Metal, DIALOG_STYLE_LIST, "Stations:", str, "Select", "<<<");
  33586. }
  33587. }
  33588. }
  33589. else
  33590. {
  33591. Dialog_Show(playerid, ChangeGenre, DIALOG_STYLE_LIST, "Genres:", "URBAN\nROCK\nOTHER\nPOP\n{F2E146}CUSTOM LINK\n{F2E146}OFF - To turn off.", "Select", "<<<");
  33592. }
  33593. return 1;
  33594. }
  33595. Dialog:Classic(playerid, response, listitem, inputtext[])
  33596. {
  33597. if(response)
  33598. {
  33599. PlayPlayerBoomBoxURL(playerid, ClassicStations[listitem][boomboxUrlName], ClassicStations[listitem][boomboxURL]);
  33600. }
  33601. else
  33602. {
  33603. Dialog_Show(playerid, Rock, DIALOG_STYLE_LIST, "SubGenres:", "Classic Rock\nPunk\nMetal", "Select", "<<<");
  33604. }
  33605. return 1;
  33606. }
  33607. Dialog:Punk(playerid, response, listitem, inputtext[])
  33608. {
  33609. if(response)
  33610. {
  33611. PlayPlayerBoomBoxURL(playerid, PunkStations[listitem][boomboxUrlName], PunkStations[listitem][boomboxURL]);
  33612. }
  33613. else
  33614. {
  33615. Dialog_Show(playerid, Rock, DIALOG_STYLE_LIST, "SubGenres:", "Classic Rock\nPunk\nMetal", "Select", "<<<");
  33616. }
  33617. return 1;
  33618. }
  33619. Dialog:Metal(playerid, response, listitem, inputtext[])
  33620. {
  33621. if(response)
  33622. {
  33623. PlayPlayerBoomBoxURL(playerid, MetalStations[listitem][boomboxUrlName], MetalStations[listitem][boomboxURL]);
  33624. }
  33625. else
  33626. {
  33627. Dialog_Show(playerid, Rock, DIALOG_STYLE_LIST, "SubGenres:", "Classic Rock\nPunk\nMetal", "Select", "<<<");
  33628. }
  33629. return 1;
  33630. }
  33631. Dialog:Other(playerid, response, listitem, inputtext[])
  33632. {
  33633. if(response)
  33634. {
  33635. switch(listitem)
  33636. {
  33637. case 0:
  33638. {
  33639. new str[2000];
  33640. for(new x; x < sizeof(DRPStations); x++)
  33641. {
  33642. format(str, sizeof(str), "%s"EMBED_WHITE"%s\n", str, DRPStations[x][boomboxUrlName]);
  33643. }
  33644. Dialog_Show(playerid, DRP, DIALOG_STYLE_LIST, "Stations:", str, "Select", "<<<");
  33645. }
  33646. case 1:
  33647. {
  33648. new str[2000];
  33649. for(new x; x < sizeof(DanceStations); x++)
  33650. {
  33651. format(str, sizeof(str), "%s"EMBED_WHITE"%s\n", str, DanceStations[x][boomboxUrlName]);
  33652. }
  33653. Dialog_Show(playerid, Dance, DIALOG_STYLE_LIST, "Stations:", str, "Select", "<<<");
  33654. }
  33655. case 2:
  33656. {
  33657. new str[2000];
  33658. for(new x; x < sizeof(TalkStations); x++)
  33659. {
  33660. format(str, sizeof(str), "%s"EMBED_WHITE"%s\n", str, TalkStations[x][boomboxUrlName]);
  33661. }
  33662. Dialog_Show(playerid, Talk, DIALOG_STYLE_LIST, "Stations:", str, "Select", "<<<");
  33663. }
  33664. }
  33665. }
  33666. else
  33667. {
  33668. Dialog_Show(playerid, ChangeGenre, DIALOG_STYLE_LIST, "Genres:", "URBAN\nROCK\nOTHER\nPOP\n{F2E146}CUSTOM LINK\n{F2E146}OFF - To turn off.", "Select", "<<<");
  33669. }
  33670. return 1;
  33671. }
  33672. Dialog:DRP(playerid, response, listitem, inputtext[])
  33673. {
  33674. if(response)
  33675. {
  33676. PlayPlayerBoomBoxURL(playerid, DRPStations[listitem][boomboxUrlName], DRPStations[listitem][boomboxURL]);
  33677. }
  33678. else
  33679. {
  33680. Dialog_Show(playerid, Other, DIALOG_STYLE_LIST, "SubGenres:", "C-RP\nDance\nTalk", "Select", "<<<");
  33681. }
  33682. return 1;
  33683. }
  33684. Dialog:Dance(playerid, response, listitem, inputtext[])
  33685. {
  33686. if(response)
  33687. {
  33688. PlayPlayerBoomBoxURL(playerid, DanceStations[listitem][boomboxUrlName], DanceStations[listitem][boomboxURL]);
  33689. }
  33690. else
  33691. {
  33692. Dialog_Show(playerid, Other, DIALOG_STYLE_LIST, "SubGenres:", "C-RP\nDance\nTalk", "Select", "<<<");
  33693. }
  33694. return 1;
  33695. }
  33696. Dialog:Talk(playerid, response, listitem, inputtext[])
  33697. {
  33698. if(response)
  33699. {
  33700. PlayPlayerBoomBoxURL(playerid, TalkStations[listitem][boomboxUrlName], TalkStations[listitem][boomboxURL]);
  33701. }
  33702. else
  33703. {
  33704. Dialog_Show(playerid, Other, DIALOG_STYLE_LIST, "SubGenres:", "C-RP\nDance\nTalk", "Select", "<<<");
  33705. }
  33706. return 1;
  33707. }
  33708. Dialog:PopGenre(playerid, response, listitem, inputtext[])
  33709. {
  33710. if(response)
  33711. {
  33712. switch(listitem)
  33713. {
  33714. case 0:
  33715. {
  33716. new str[2000];
  33717. for(new x; x < sizeof(Top40Stations); x++)
  33718. {
  33719. format(str, sizeof(str), "%s"EMBED_WHITE"%s\n", str, Top40Stations[x][boomboxUrlName]);
  33720. }
  33721. Dialog_Show(playerid, TopHits, DIALOG_STYLE_LIST, "Stations:", str, "Select", "<<<");
  33722. }
  33723. }
  33724. }
  33725. else
  33726. {
  33727. Dialog_Show(playerid, ChangeGenre, DIALOG_STYLE_LIST, "Genres:", "URBAN\nROCK\nOTHER\nPOP\n{F2E146}CUSTOM LINK\n{F2E146}OFF - To turn off.", "Select", "<<<");
  33728. }
  33729. return 1;
  33730. }
  33731. Dialog:TopHits(playerid, response, listitem, inputtext[])
  33732. {
  33733. if(response)
  33734. {
  33735. PlayPlayerBoomBoxURL(playerid, Top40Stations[listitem][boomboxUrlName], Top40Stations[listitem][boomboxURL]);
  33736. }
  33737. else
  33738. {
  33739. Dialog_Show(playerid, PopGenre, DIALOG_STYLE_LIST, "SubGenres:", "Top Hits", "Select", "<<<");
  33740. }
  33741. return 1;
  33742. }
  33743. // end of matical's setstation (QA TEST)
  33744. Dialog:TagFontSize(playerid, response, listitem, inputtext[])
  33745. {
  33746. new
  33747. id = Players[playerid][pEditID];
  33748. if (response)
  33749. {
  33750. switch (listitem)
  33751. {
  33752. case 0:
  33753. {
  33754. Tags[id][tagFontSize] = 8;
  33755. UpdateTag(id);
  33756. SaveTag(id);
  33757. }
  33758. case 1:
  33759. {
  33760. Tags[id][tagFontSize] = 12;
  33761. UpdateTag(id);
  33762. SaveTag(id);
  33763. }
  33764. case 2:
  33765. {
  33766. Tags[id][tagFontSize] = 14;
  33767. UpdateTag(id);
  33768. SaveTag(id);
  33769. }
  33770. case 3:
  33771. {
  33772. Tags[id][tagFontSize] = 16;
  33773. UpdateTag(id);
  33774. SaveTag(id);
  33775. }
  33776. case 4:
  33777. {
  33778. Tags[id][tagFontSize] = 18;
  33779. UpdateTag(id);
  33780. SaveTag(id);
  33781. }
  33782. case 5:
  33783. {
  33784. Tags[id][tagFontSize] = 20;
  33785. UpdateTag(id);
  33786. SaveTag(id);
  33787. }
  33788. case 6:
  33789. {
  33790. Tags[id][tagFontSize] = 22;
  33791. UpdateTag(id);
  33792. SaveTag(id);
  33793. }
  33794. case 7:
  33795. {
  33796. Tags[id][tagFontSize] = 24;
  33797. UpdateTag(id);
  33798. SaveTag(id);
  33799. }
  33800. case 8:
  33801. {
  33802. Tags[id][tagFontSize] = 26;
  33803. UpdateTag(id);
  33804. SaveTag(id);
  33805. }
  33806. case 9:
  33807. {
  33808. Tags[id][tagFontSize] = 28;
  33809. UpdateTag(id);
  33810. SaveTag(id);
  33811. }
  33812. case 10:
  33813. {
  33814. Tags[id][tagFontSize] = 30;
  33815. UpdateTag(id);
  33816. SaveTag(id);
  33817. }
  33818. case 11:
  33819. {
  33820. Tags[id][tagFontSize] = 32;
  33821. UpdateTag(id);
  33822. SaveTag(id);
  33823. }
  33824. case 12:
  33825. {
  33826. Tags[id][tagFontSize] = 34;
  33827. UpdateTag(id);
  33828. SaveTag(id);
  33829. }
  33830. case 13:
  33831. {
  33832. Tags[id][tagFontSize] = 36;
  33833. UpdateTag(id);
  33834. SaveTag(id);
  33835. }
  33836. case 14:
  33837. {
  33838. Tags[id][tagFontSize] = 38;
  33839. UpdateTag(id);
  33840. SaveTag(id);
  33841. }
  33842. case 15:
  33843. {
  33844. Tags[id][tagFontSize] = 40;
  33845. UpdateTag(id);
  33846. SaveTag(id);
  33847. }
  33848. }
  33849. }
  33850. else
  33851. {
  33852. Dialog_Show(playerid, TagEditMenu, DIALOG_STYLE_LIST, "{FFFFFF}Edit Tag", "Position\nText\nColor\nFont Size\nBold: %s\nTag Resolution", "Select", "Cancel", (Tags[id][tagBold]) ? ("Yes") : ("No"));
  33853. }
  33854. return 1;
  33855. }
  33856. Dialog:TagColor(playerid, response, listitem, inputtext[])
  33857. {
  33858. new
  33859. id = Players[playerid][pEditID];
  33860. if (response)
  33861. {
  33862. switch (listitem)
  33863. {
  33864. case 0://white
  33865. {
  33866. Tags[id][tagColor] = RGBAToARGB(COLOR_WHITE);
  33867. UpdateTag(id);
  33868. SaveTag(id);
  33869. }
  33870. case 1://black
  33871. {
  33872. Tags[id][tagColor] = RGBAToARGB(0x000000FF);
  33873. UpdateTag(id);
  33874. SaveTag(id);
  33875. }
  33876. case 2://grey
  33877. {
  33878. Tags[id][tagColor] = RGBAToARGB(COLOR_GREY);
  33879. UpdateTag(id);
  33880. SaveTag(id);
  33881. }
  33882. case 3://blue
  33883. {
  33884. Tags[id][tagColor] = RGBAToARGB(0x6688FFFF);
  33885. UpdateTag(id);
  33886. SaveTag(id);
  33887. }
  33888. case 4://yeloe
  33889. {
  33890. Tags[id][tagColor] = RGBAToARGB(0xFFDD00FF);
  33891. UpdateTag(id);
  33892. SaveTag(id);
  33893. }
  33894. case 5://red
  33895. {
  33896. Tags[id][tagColor] = RGBAToARGB(0xFF5030FF);
  33897. UpdateTag(id);
  33898. SaveTag(id);
  33899. }
  33900. case 6://COLOR_GREEN
  33901. {
  33902. Tags[id][tagColor] = RGBAToARGB(0x33CC33FF);
  33903. UpdateTag(id);
  33904. SaveTag(id);
  33905. }
  33906. case 7://COLOR_PURPLE
  33907. {
  33908. Tags[id][tagColor] = RGBAToARGB(0xD7B6F0FF);
  33909. UpdateTag(id);
  33910. SaveTag(id);
  33911. }
  33912. case 8://COLOR_ORANGE
  33913. {
  33914. Tags[id][tagColor] = RGBAToARGB(0xFFC00CFF);
  33915. UpdateTag(id);
  33916. SaveTag(id);
  33917. }
  33918. }//Dialog_Show(playerid, TagColor, DIALOG_STYLE_LIST, "{FFFFFF}Edit Tag Color", "White\nBlack\nGrey\nBlue\nYellow\nRed\nGreen\nPurple\nOrange", "Select", "Cancel");
  33919. }
  33920. else
  33921. {
  33922. Dialog_Show(playerid, TagEditMenu, DIALOG_STYLE_LIST, "{FFFFFF}Edit Tag", "Position\nText\nColor\nFont Size\nBold: %s\nTag Resolution", "Select", "Cancel", (Tags[id][tagBold]) ? ("Yes") : ("No"));
  33923. }
  33924. return 1;
  33925. }
  33926. Dialog:TagText(playerid, response, listitem, inputtext[])
  33927. {
  33928. new
  33929. id = Players[playerid][pEditID];
  33930. if (response)
  33931. {
  33932. if (isnull(inputtext))
  33933. {
  33934. return Dialog_Show(playerid, NoteSubject, DIALOG_STYLE_INPUT, "{FFFFFF}Note Subject", "Please input the subject for the note:", "Submit", "Back");
  33935. }
  33936. else if (strlen(inputtext) > 64)
  33937. {
  33938. return Dialog_Show(playerid, NoteSubject, DIALOG_STYLE_INPUT, "{FFFFFF}Note Subject", "Please input the subject for the note:", "Submit", "Back");
  33939. }
  33940. else
  33941. {
  33942. new text[64];
  33943. format(text, sizeof(text), "%s", inputtext);
  33944. Tags[id][tagText] = text;
  33945. UpdateTag(id);
  33946. SaveTag(id);
  33947. //strunpack(SprayTags[spray][sText], gTemporaryText[playerid], 64);
  33948. //SprayTags[spray][sColor] = RGBAToARGB(Factions[Players[playerid][pFaction]][fcColor]);
  33949. //strpack(gTemporaryText[playerid], inputtext, 64);
  33950. //Dialog_Show(playerid, NoteText, DIALOG_STYLE_INPUT, "{FFFFFF}Note Text", "Subject:\n%s\n\nPlease input the text for this note. Use \\n for a new line and \\t for tab.", "Submit", "Cancel", inputtext);
  33951. }
  33952. }
  33953. else
  33954. {
  33955. Dialog_Show(playerid, TagEditMenu, DIALOG_STYLE_LIST, "{FFFFFF}Edit Tag", "Position\nText\nColor\nFont Size\nBold: %s\nTag Resolution", "Select", "Cancel", (Tags[id][tagBold]) ? ("Yes") : ("No"));
  33956. }
  33957. return 1;
  33958. }
  33959. Dialog:SetSupporter(playerid, response, listitem, inputtext[])
  33960. {
  33961. new
  33962. targetid = Players[playerid][pSetStaff];
  33963. Players[playerid][pSetStaff] = INVALID_PLAYER_ID;
  33964. if (response)
  33965. {
  33966. switch (listitem)
  33967. {
  33968. case 0:
  33969. {
  33970. Players[targetid][pSupporter] = 1;
  33971. SendAdminMessage(COLOR_RED, "Admin: %s has set %s's Supporter level to Supporter.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0));
  33972. SendInfoMessage(playerid, "You have set %s's Supporter level to Supporter.", ReturnNameEx(targetid));
  33973. SendInfoMessage(targetid, "%s has set your Supporter level to Supporter.", ReturnNameEx(playerid));
  33974. }
  33975. case 1:
  33976. {
  33977. Players[targetid][pSupporter] = 2;
  33978. SendAdminMessage(COLOR_RED, "Admin: %s has set %s's Supporter level to Head Supporter.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0));
  33979. SendInfoMessage(playerid, "You have set %s's Supporter level to Head Supporter.", ReturnNameEx(targetid));
  33980. SendInfoMessage(targetid, "%s has set your Supporter level to Head Supporter.", ReturnNameEx(playerid));
  33981. }
  33982. case 2:
  33983. {
  33984. Players[targetid][pSupporter] = 0;
  33985. SendAdminMessage(COLOR_RED, "Admin: %s has removed %s's Supporter status.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0));
  33986. SendInfoMessage(playerid, "You have removed %s's Supporter status.", ReturnNameEx(targetid));
  33987. SendInfoMessage(targetid, "%s has removed your Supporter status.", ReturnNameEx(playerid));
  33988. }
  33989. }
  33990. }
  33991. return 1;
  33992. }
  33993. Dialog:SetFactionMod(playerid, response, listitem, inputtext[])
  33994. {
  33995. new
  33996. targetid = Players[playerid][pSetStaff];
  33997. Players[playerid][pSetStaff] = INVALID_PLAYER_ID;
  33998. if (response)
  33999. {
  34000. switch (listitem)
  34001. {
  34002. case 0:
  34003. {
  34004. Players[targetid][pFactionMod] = 1;
  34005. SendAdminMessage(COLOR_RED, "Admin: %s has granted %s faction management status.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0));
  34006. SendInfoMessage(playerid, "You have granted faction management status to %s.", ReturnNameEx(targetid));
  34007. SendInfoMessage(targetid, "%s has granted you faction management status.", ReturnNameEx(playerid));
  34008. }
  34009. case 1:
  34010. {
  34011. Players[targetid][pFactionMod] = 2;
  34012. SendAdminMessage(COLOR_RED, "Admin: %s has granted %s head of factions status.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0));
  34013. SendInfoMessage(playerid, "You have granted head of factions status to %s.", ReturnNameEx(targetid));
  34014. SendInfoMessage(targetid, "%s has granted you head of factions status.", ReturnNameEx(playerid));
  34015. }
  34016. case 2:
  34017. {
  34018. Players[targetid][pFactionMod] = 0;
  34019. SendAdminMessage(COLOR_RED, "Admin: %s has revoked %s's faction management status.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0));
  34020. SendInfoMessage(playerid, "You have revoked %s's faction management status.", ReturnNameEx(targetid));
  34021. SendInfoMessage(targetid, "%s has revoked your faction management status.", ReturnNameEx(playerid));
  34022. }
  34023. }
  34024. }
  34025. return 1;
  34026. }
  34027. Dialog:SetStaff(playerid, response, listitem, inputtext[])
  34028. {
  34029. if (response)
  34030. {
  34031. switch (listitem)
  34032. {
  34033. case 0:
  34034. {
  34035. Dialog_Show(playerid, SetSupporter, DIALOG_STYLE_LIST, "{FFFFFF}Set Supporter", "Supporter\nHead Supporter\nRevoke Status", "Change", "Cancel");
  34036. }
  34037. case 1:
  34038. {
  34039. Dialog_Show(playerid, SetFactionMod, DIALOG_STYLE_LIST, "{FFFFFF}Set Faction Mod", "Faction Mod\nHead of Factions\nRevoke Status", "Change", "Cancel");
  34040. }
  34041. }
  34042. }
  34043. else
  34044. {
  34045. Players[playerid][pSetStaff] = INVALID_PLAYER_ID;
  34046. }
  34047. return 1;
  34048. }
  34049. Dialog:WalkieTalkie(playerid, response, listitem, inputtext[])
  34050. {
  34051. new item = Players[playerid][pSelected];
  34052. if (response)
  34053. {
  34054. switch (listitem)
  34055. {
  34056. case 0:
  34057. {
  34058. if (!Inventory[playerid][item][invValue])
  34059. {
  34060. return Dialog_Show(playerid, WTChannel, DIALOG_STYLE_INPUT, "{FFFFFF}Set Channel", "Please enter the channel to set for this walkie talkie:", "Submit", "Cancel");
  34061. }
  34062. else if (Inventory[playerid][item][invValue] > 0 && Players[playerid][pChannel] == Inventory[playerid][item][invValue])
  34063. {
  34064. Players[playerid][pChannel] = 0;
  34065. SendInfoMessage(playerid, "This walkie talkie is no longer set as your primary one.");
  34066. }
  34067. else
  34068. {
  34069. Players[playerid][pChannel] = Inventory[playerid][item][invValue];
  34070. SendInfoMessage(playerid, "You have set this walkie talkie as your primary. Use /wt to communicate.");
  34071. }
  34072. }
  34073. case 1:
  34074. {
  34075. Dialog_Show(playerid, WTChannel, DIALOG_STYLE_INPUT, "{FFFFFF}Set Channel", "Please enter the channel to set for this walkie talkie:", "Submit", "Cancel");
  34076. }
  34077. }
  34078. }
  34079. return 1;
  34080. }
  34081. Dialog:WTChannel(playerid, response, listitem, inputtext[])
  34082. {
  34083. new item = Players[playerid][pSelected];
  34084. if (response)
  34085. {
  34086. new channel;
  34087. if (sscanf(inputtext, "i", channel))
  34088. {
  34089. return Dialog_Show(playerid, WTChannel, DIALOG_STYLE_INPUT, "{FFFFFF}Set Channel", "Please enter the channel to set for this walkie talkie:", "Submit", "Cancel");
  34090. }
  34091. else if( channel == 911 && GetPlayerFactionType(playerid) != FACTION_LEO)
  34092. {
  34093. return SendErrorMessage(playerid, "This is a government only frequency.");
  34094. }
  34095. else if (channel < 0 || channel > 9999999)
  34096. {
  34097. return Dialog_Show(playerid, WTChannel, DIALOG_STYLE_INPUT, "{FFFFFF}Set Channel", "The channel must be between 0 and 9,999,999.\n\nPlease enter the channel to set for this walkie talkie:", "Submit", "Cancel");
  34098. }
  34099. else
  34100. {
  34101. if (Inventory[playerid][item][invValue] > 0 && Players[playerid][pChannel] == Inventory[playerid][item][invValue])
  34102. {
  34103. Players[playerid][pChannel] = channel;
  34104. }
  34105. Inventory[playerid][item][invValue] = channel;
  34106. SendInfoMessage(playerid, "You have changed the channel of this walkie talkie to %i.", channel);
  34107. }
  34108. }
  34109. return 1;
  34110. }
  34111. Dialog:PortableRadio(playerid, response, listitem, inputtext[])
  34112. {
  34113. new item = Players[playerid][pSelected];
  34114. if (response)
  34115. {
  34116. switch (listitem)
  34117. {
  34118. case 0:
  34119. {
  34120. if (!Inventory[playerid][item][invValue])
  34121. {
  34122. return Dialog_Show(playerid, PRChannel, DIALOG_STYLE_INPUT, "{FFFFFF}Set Channel", "Please enter the channel to set for this portable radio:", "Submit", "Cancel");
  34123. }
  34124. else if (Inventory[playerid][item][invValue] > 0 && Players[playerid][pChannel] == Inventory[playerid][item][invValue])
  34125. {
  34126. Players[playerid][pChannel] = 0;
  34127. SendInfoMessage(playerid, "This portable radio is no longer set as your primary one.");
  34128. }
  34129. else
  34130. {
  34131. Players[playerid][pChannel] = Inventory[playerid][item][invValue];
  34132. SendInfoMessage(playerid, "You have set this portable radio as your primary. Use /r to communicate.");
  34133. }
  34134. }
  34135. case 1:
  34136. {
  34137. Dialog_Show(playerid, PRChannel, DIALOG_STYLE_INPUT, "{FFFFFF}Set Channel", "Please enter the channel to set for this portable radio:", "Submit", "Cancel");
  34138. }
  34139. }
  34140. }
  34141. return 1;
  34142. }
  34143. Dialog:PRChannel(playerid, response, listitem, inputtext[])
  34144. {
  34145. new item = Players[playerid][pSelected];
  34146. if (response)
  34147. {
  34148. new channel;
  34149. if (sscanf(inputtext, "i", channel))
  34150. {
  34151. return Dialog_Show(playerid, PRChannel, DIALOG_STYLE_INPUT, "{FFFFFF}Set Channel", "Please enter the channel to set for this portable radio:", "Submit", "Cancel");
  34152. }
  34153. else if( channel == 911 && GetPlayerFactionType(playerid) != FACTION_LEO)
  34154. {
  34155. return SendErrorMessage(playerid, "This is a government only frequency.");
  34156. }
  34157. else if (channel < 0 || channel > 9999999)
  34158. {
  34159. return Dialog_Show(playerid, PRChannel, DIALOG_STYLE_INPUT, "{FFFFFF}Set Channel", "The channel must be between 0 and 9,999,999.\n\nPlease enter the channel to set for this portable radio:", "Submit", "Cancel");
  34160. }
  34161. else
  34162. {
  34163. if (Inventory[playerid][item][invValue] > 0 && Players[playerid][pChannel] == Inventory[playerid][item][invValue])
  34164. {
  34165. Players[playerid][pChannel] = channel;
  34166. }
  34167. //Inventory[playerid][item][invValue] = channel;
  34168. SetItemValue(playerid, item, channel);
  34169. SendInfoMessage(playerid, "You have changed the channel of this portable radio to %i.", channel);
  34170. }
  34171. }
  34172. return 1;
  34173. }
  34174. Dialog:RentalPrice(playerid, response, listitem, inputtext[])
  34175. {
  34176. new company = Players[playerid][pCompany];
  34177. if (!IsValidCompanyID(company) || !IsCompanyOwner(playerid, company))
  34178. {
  34179. return 0;
  34180. }
  34181. if (response)
  34182. {
  34183. new amount;
  34184. if (sscanf(inputtext, "i", amount))
  34185. {
  34186. return Dialog_Show(playerid, RentalPrice, DIALOG_STYLE_INPUT, "{FFFFFF}Rental Price", "Please enter the price to set for vehicle %s below:", "Submit", "Back", GetVehicleModelName(Vehicles[Players[playerid][pSelected]][vModel]));
  34187. }
  34188. else if (amount < 1)
  34189. {
  34190. return Dialog_Show(playerid, RentalPrice, DIALOG_STYLE_INPUT, "{FFFFFF}Rental Price", "The specified price can't be below $1.\n\nPlease enter the price to set for vehicle %s below:", "Submit", "Back", GetVehicleModelName(Vehicles[Players[playerid][pSelected]][vModel]));
  34191. }
  34192. else
  34193. {
  34194. Vehicles[Players[playerid][pSelected]][vPrice] = amount;
  34195. if (Vehicles[Players[playerid][pSelected]][vRenter] == INVALID_PLAYER_ID)
  34196. {
  34197. UpdateVehicle(Players[playerid][pSelected]);
  34198. }
  34199. SaveVehicle(Players[playerid][pSelected]);
  34200. SendInfoMessage(playerid, "You have changed the price of %s to: %s.", GetVehicleModelName(Vehicles[Players[playerid][pSelected]][vModel]), FormatNumber(amount));
  34201. ShowRentalEditMenu(playerid, company);
  34202. }
  34203. }
  34204. else
  34205. {
  34206. ShowRentalEditMenu(playerid, company);
  34207. }
  34208. return 1;
  34209. }
  34210. Dialog:RentalEdit(playerid, response, listitem, inputtext[])
  34211. {
  34212. new company = Players[playerid][pCompany];
  34213. if (!IsValidCompanyID(company) || !IsCompanyOwner(playerid, company))
  34214. {
  34215. return 0;
  34216. }
  34217. if (response)
  34218. {
  34219. Players[playerid][pSelected] = gListedItems[playerid][listitem];
  34220. Dialog_Show(playerid, RentalPrice, DIALOG_STYLE_INPUT, "{FFFFFF}Rental Price", "Please enter the price to set for vehicle %s below:", "Submit", "Back", GetVehicleModelName(Vehicles[Players[playerid][pSelected]][vModel]));
  34221. }
  34222. return 1;
  34223. }
  34224. Dialog:RemoveItems(playerid, response, listitem, inputtext[])
  34225. {
  34226. new item = gListedItems[playerid][listitem];
  34227. if (response)
  34228. {
  34229. new targetid = Players[playerid][pTarget];
  34230. if (Inventory[targetid][item][invExists])
  34231. {
  34232. SendAdminMessage(COLOR_RED, "Admin: %s has removed a %s from %s's inventory.", ReturnNameEx(playerid, 0), GetFullItemName(targetid, item), ReturnNameEx(targetid, 0));
  34233. RemoveItemFromInventory(targetid, item);
  34234. }
  34235. }
  34236. return 1;
  34237. }
  34238. Dialog:WeaponBone(playerid, response, listitem, inputtext[])
  34239. {
  34240. if (response)
  34241. {
  34242. new slot = GetWeaponOffsetType(GetPlayerWeaponID(playerid, Players[playerid][pSelected]));
  34243. listitem++;
  34244. SendInfoMessage(playerid, "You have changed the bone of this weapon to %s (%i).", GetBoneName(listitem), listitem);
  34245. SetWeaponOffset(playerid, slot, listitem, WeaponOffsets[playerid][slot][wOffsetX], WeaponOffsets[playerid][slot][wOffsetY], WeaponOffsets[playerid][slot][wOffsetZ], WeaponOffsets[playerid][slot][wOffsetRX], WeaponOffsets[playerid][slot][wOffsetRY], WeaponOffsets[playerid][slot][wOffsetRZ]);
  34246. UpdateWeaponOffset(playerid, Players[playerid][pSelected]);
  34247. ShowMenuForWeapon(playerid, Players[playerid][pSelected]);
  34248. }
  34249. return 1;
  34250. }
  34251. Dialog:AdjustWeapon(playerid, response, listitem, inputtext[])
  34252. {
  34253. new weaponid = GetPlayerWeaponID(playerid, Players[playerid][pSelected]);
  34254. if (!weaponid)
  34255. {
  34256. return 0;
  34257. }
  34258. if (response)
  34259. {
  34260. if (listitem == 0)
  34261. {
  34262. new string[200];
  34263. for (new i = 1; i <= 18; i ++) {
  34264. strcat(string, GetBoneName(i));
  34265. strcat(string, "\n");
  34266. }
  34267. Dialog_Show(playerid, WeaponBone, DIALOG_STYLE_LIST, "{FFFFFF}Select Bone", string, "Confirm", "Cancel");
  34268. }
  34269. else if (listitem == 1)
  34270. {
  34271. if (GetPlayerWeapon(playerid) > 1)
  34272. {
  34273. return SendErrorMessage(playerid, "You must put the weapon away before editing it.");
  34274. }
  34275. else
  34276. {
  34277. if (Players[playerid][pSelected] == WEAPON_MELEE) {
  34278. EditAttachedObjectEx(playerid, EDIT_TYPE_WEAPON, ATTACHED_SLOT_MELEE);
  34279. } else if (Players[playerid][pSelected] == WEAPON_PRIMARY) {
  34280. EditAttachedObjectEx(playerid, EDIT_TYPE_WEAPON, ATTACHED_SLOT_PRIMARY);
  34281. } else if (Players[playerid][pSelected] == WEAPON_SECONDARY) {
  34282. EditAttachedObjectEx(playerid, EDIT_TYPE_WEAPON, ATTACHED_SLOT_SECONDARY);
  34283. } else if (Players[playerid][pSelected] == WEAPON_TERTIARY) {
  34284. EditAttachedObjectEx(playerid, EDIT_TYPE_WEAPON, ATTACHED_SLOT_TERTIARY);
  34285. }
  34286. SendInfoMessage(playerid, "Click on the disk icon to save changes. Press ESC to cancel.");
  34287. }
  34288. }
  34289. else if (listitem == 2)
  34290. {
  34291. new slot = GetWeaponOffsetType(weaponid);
  34292. if (!IsWeaponHideable(weaponid)) {
  34293. return SendErrorMessage(playerid, "You can only hide small weapons only.");
  34294. }
  34295. else
  34296. {
  34297. if (!WeaponOffsets[playerid][slot][wHidden])
  34298. {
  34299. SetWeaponHidden(playerid, slot, true);
  34300. SendInfoMessage(playerid, "You have hidden your %s. It is now hidden from view.", GetWeapon(weaponid));
  34301. }
  34302. else
  34303. {
  34304. SetWeaponHidden(playerid, slot, false);
  34305. SendInfoMessage(playerid, "You have shown your %s. It is no longer hidden from view.", GetWeapon(weaponid));
  34306. }
  34307. UpdateWeaponOffset(playerid, Players[playerid][pSelected]);
  34308. ShowMenuForWeapon(playerid, Players[playerid][pSelected]);
  34309. }
  34310. }
  34311. }
  34312. return 1;
  34313. }
  34314. Dialog:VehicleColor(playerid, response, listitem, inputtext[])
  34315. {
  34316. new
  34317. vehicle = GetVehicleID(GetPlayerVehicleID(playerid));
  34318. if (!IsValidVehicleID(vehicle) || !GetVehicleKeys(playerid, Vehicles[vehicle][vVehicle]))
  34319. {
  34320. return 0;
  34321. }
  34322. if (response)
  34323. {
  34324. new color1, color2;
  34325. if (sscanf(inputtext, "p<,>ii", color1, color2))
  34326. {
  34327. return Dialog_Show(playerid, VehicleColor, DIALOG_STYLE_INPUT, "{FFFFFF}Vehicle Colors", "Please enter the colors to apply for this vehicle below (color1, color2).\n\nExample: If you want to set your car's color to black, use '0, 0'.", "Submit", "Cancel");
  34328. }
  34329. else if (!(0 <= color1 <= 255))
  34330. {
  34331. return Dialog_Show(playerid, VehicleColor, DIALOG_STYLE_INPUT, "{FFFFFF}Vehicle Colors", "The first color must be between 0 and 255.\n\nPlease enter the colors to apply for this vehicle below (color1, color2).\n\nExample: If you want to set your car's color to black, use '0, 0'.", "Submit", "Cancel");
  34332. }
  34333. else if (!(0 <= color2 <= 255))
  34334. {
  34335. return Dialog_Show(playerid, VehicleColor, DIALOG_STYLE_INPUT, "{FFFFFF}Vehicle Colors", "The second color must be between 0 and 255.\n\nPlease enter the colors to apply for this vehicle below (color1, color2).\n\nExample: If you want to set your car's color to black, use '0, 0'.", "Submit", "Cancel");
  34336. }
  34337. else
  34338. {
  34339. Vehicles[vehicle][vColor1] = color1;
  34340. Vehicles[vehicle][vColor2] = color2;
  34341. ChangeVehicleColor(Vehicles[vehicle][vVehicle], color1, color2);
  34342. SaveVehicle(vehicle);
  34343. RemoveItemValue(playerid, Players[playerid][pSelected], 1);
  34344. SendInfoMessage(playerid, "You have changed the colors of this %s to %i, %i.", GetVehicleModelName(Vehicles[vehicle][vModel]), color1, color2);
  34345. }
  34346. }
  34347. return 1;
  34348. }
  34349. Dialog:StereoURL(playerid, response, listitem, inputtext[])
  34350. {
  34351. if (response)
  34352. {
  34353. if (isnull(inputtext) || strlen(inputtext) < 10)
  34354. {
  34355. return Dialog_Show(playerid, StereoURL, DIALOG_STYLE_INPUT, "{FFFFFF}Change URL", "Please enter the URL address of the stream you wish to play.\n\nNote: You cannot directly play .mp3 links. It must be a .pls or a .m3u link.", "Submit", "Cancel");
  34356. }
  34357. else
  34358. {
  34359. strpack(Stereos[playerid][pStereoURL], inputtext, 255);
  34360. SendInfoMessage(playerid, "You have changed the URL that this stereo will play.");
  34361. ShowActionBubble(playerid, "* %s changes the radio station.", ReturnNameEx(playerid));
  34362. foreach (new i : Player)
  34363. {
  34364. if (Players[i][pStereoPlayerID] == playerid)
  34365. {
  34366. PlayAudioStreamForPlayer(i, inputtext, Stereos[playerid][pStereoX], Stereos[playerid][pStereoY], Stereos[playerid][pStereoZ], 50.0, true);
  34367. }
  34368. }
  34369. }
  34370. }
  34371. return 1;
  34372. }
  34373. Dialog:Stereo(playerid, response, listitem, inputtext[])
  34374. {
  34375. if (response)
  34376. {
  34377. switch (listitem)
  34378. {
  34379. case 0:
  34380. {
  34381. Dialog_Show(playerid, StereoURL, DIALOG_STYLE_INPUT, "{FFFFFF}Change URL", "Please enter the URL address of the stream you wish to play.\n\nNote: You cannot directly play .mp3 links. It must be a .pls or a .m3u link.", "Submit", "Cancel");
  34382. }
  34383. case 1:
  34384. {
  34385. PickupStereo(playerid);
  34386. }
  34387. }
  34388. }
  34389. return 1;
  34390. }
  34391. Dialog:PayTickets(playerid, response, listitem, inputtext[])
  34392. {
  34393. if (response)
  34394. {
  34395. new ticket = gListedItems[playerid][listitem];
  34396. format(gExecute, sizeof(gExecute), "SELECT Amount, Date, Reason FROM rp_tickets WHERE ID = %i", ticket);
  34397. mysql_tquery(gConnection, gExecute, "OnPlayerPayTicket", "ii", playerid, ticket);
  34398. }
  34399. return 1;
  34400. }
  34401. Dialog:RemoveAnote(playerid, response, listitem, inputtext[])
  34402. {
  34403. if (response)
  34404. {
  34405. new anote = gListedItems[playerid][listitem];
  34406. format(gExecute, sizeof(gExecute), "SELECT `Issuer`, `Date`, `Reason` FROM rp_anotes WHERE ID = %i", anote);
  34407. mysql_tquery(gConnection, gExecute, "OnPlayerRemoveAnote", "ii", playerid, anote);
  34408. }
  34409. }
  34410. Dialog:VehicleMenu(playerid, response, listitem, inputtext[])
  34411. {
  34412. if (response)
  34413. {
  34414. switch (listitem)
  34415. {
  34416. case 0:
  34417. {
  34418. ShowTicketList(playerid);
  34419. }
  34420. case 1:
  34421. {
  34422. new success = ShowImpoundList(playerid);
  34423. if (!success)
  34424. {
  34425. SendErrorMessage(playerid, "You don't have any impounded vehicles to release.");
  34426. }
  34427. }
  34428. }
  34429. }
  34430. return 1;
  34431. }
  34432. Dialog:RemoveMod(playerid, response, listitem, inputtext[])
  34433. {
  34434. new vehicle = GetVehicleID(GetPlayerVehicleID(playerid));
  34435. if (!IsValidVehicleID(vehicle) || !IsVehicleOwner(playerid, vehicle))
  34436. {
  34437. return 0;
  34438. }
  34439. if (response)
  34440. {
  34441. if (!strcmp(inputtext, "Reset Color"))
  34442. {
  34443. Vehicles[vehicle][vColor1] = 1;
  34444. Vehicles[vehicle][vColor2] = 1;
  34445. SaveVehicle(vehicle);
  34446. ChangeVehicleColor(Vehicles[vehicle][vVehicle], Vehicles[vehicle][vColor1], Vehicles[vehicle][vColor2]);
  34447. SendInfoMessage(playerid, "{CFCFCF}You have reset the color of this vehicle to default.");
  34448. }
  34449. else if (!strcmp(inputtext, "Reset Paintjob"))
  34450. {
  34451. Vehicles[vehicle][vPaintjob] = 10;
  34452. ChangeVehiclePaintjob(Vehicles[vehicle][vVehicle], Vehicles[vehicle][vPaintjob]);
  34453. SaveVehicle(vehicle);
  34454. SendInfoMessage(playerid, "{CFCFCF}You have reset the paintjob of this vehicle to default.");
  34455. }
  34456. else
  34457. {
  34458. new slot = gListedItems[playerid][listitem];
  34459. RemoveVehicleComponent(Vehicles[vehicle][vVehicle], Vehicles[vehicle][vMods][slot]);
  34460. SendInfoMessage(playerid, "{CFCFCF}You have removed a modification from this vehicle:{33AA33} %s.", GetVehicleComponentName(Vehicles[vehicle][vMods][slot]));
  34461. Vehicles[vehicle][vMods][slot] = 0;
  34462. SaveComponent(vehicle, slot);
  34463. }
  34464. }
  34465. return 1;
  34466. }
  34467. Dialog:Origin(playerid, response, listitem, inputtext[])
  34468. {
  34469. if (response)
  34470. {
  34471. if (isnull(inputtext))
  34472. {
  34473. return Dialog_Show(playerid, Origin, DIALOG_STYLE_INPUT, "{FFFFFF}Character Origin", "Enter the place of origin your character is from:", "Submit", "");
  34474. }
  34475. else if (strlen(inputtext) > 24)
  34476. {
  34477. return Dialog_Show(playerid, Origin, DIALOG_STYLE_INPUT, "{FFFFFF}Character Origin", "The origin needs to contain less than 24 characters.\n\nEnter the place of origin your character is from:", "Submit", "");
  34478. }
  34479. else if (!IsValidOrigin(inputtext))
  34480. {
  34481. return Dialog_Show(playerid, Origin, DIALOG_STYLE_INPUT, "{FFFFFF}Character Origin", "Enter the place of origin your character is from:", "Submit", "");
  34482. }
  34483. else
  34484. {
  34485. strcpy(Players[playerid][pOrigin], inputtext, 24);
  34486. if(!Players[playerid][pActivated]) {
  34487. FadeScreenForPlayer(playerid, FADE_START_QUIZ);
  34488. }
  34489. }
  34490. }
  34491. return 1;
  34492. }
  34493. Dialog:Quiz1(playerid, response, listitem, inputtext[])
  34494. {
  34495. if (response)
  34496. {
  34497. switch (listitem)
  34498. {
  34499. case 0:
  34500. {
  34501. Dialog_Show(playerid, Quiz1, DIALOG_STYLE_INPUT, "{FFFFFF}What does RP stand for?", "Real Play\nRole Play\nReal Person", "Submit", "");
  34502. }
  34503. case 1:
  34504. {
  34505. Dialog_Show(playerid, Quiz2, DIALOG_STYLE_INPUT, "{FFFFFF}What is the correct definition for IC?", "In Character\nIdeal Character\nIndependand Character", "Submit", "");
  34506. }
  34507. case 2:
  34508. {
  34509. Dialog_Show(playerid, Quiz1, DIALOG_STYLE_INPUT, "{FFFFFF}What does RP stand for?", "Real Play\nRole Play\nReal Person", "Submit", "");
  34510. }
  34511. }
  34512. }
  34513. return 1;
  34514. }
  34515. Dialog:Quiz2(playerid, response, listitem, inputtext[])
  34516. {
  34517. if (response)
  34518. {
  34519. switch (listitem)
  34520. {
  34521. case 0:
  34522. {
  34523. Dialog_Show(playerid, Quiz3, DIALOG_STYLE_INPUT, "{FFFFFF}What does metagaming mean?", "Forcing actions onto another player\nShooting alot\nUsing OOC information in IC situations", "Submit", "");
  34524. }
  34525. case 1:
  34526. {
  34527. Dialog_Show(playerid, Quiz1, DIALOG_STYLE_INPUT, "{FFFFFF}What does RP stand for?", "Real Play\nRole Play\nReal Person", "Submit", "");
  34528. }
  34529. case 2:
  34530. {
  34531. Dialog_Show(playerid, Quiz1, DIALOG_STYLE_INPUT, "{FFFFFF}What does RP stand for?", "Real Play\nRole Play\nReal Person", "Submit", "");
  34532. }
  34533. }
  34534. }
  34535. return 1;
  34536. }
  34537. Dialog:Quiz3(playerid, response, listitem, inputtext[])
  34538. {
  34539. if (response)
  34540. {
  34541. switch (listitem)
  34542. {
  34543. case 0:
  34544. {
  34545. Dialog_Show(playerid, Quiz1, DIALOG_STYLE_INPUT, "{FFFFFF}What does RP stand for?", "Real Play\nRole Play\nReal Person", "Submit", "");
  34546. }
  34547. case 1:
  34548. {
  34549. Dialog_Show(playerid, Quiz1, DIALOG_STYLE_INPUT, "{FFFFFF}What does RP stand for?", "Real Play\nRole Play\nReal Person", "Submit", "");
  34550. }
  34551. case 2:
  34552. {
  34553. //strcpy(Players[playerid][pOrigin], inputtext, 24);
  34554. SetSpawnInfo(playerid, 0, 0, 208.3268, -154.9872, 1000.5234, 180.0000, 0, 0, 0, 0, 0, 0);
  34555. TogglePlayerSpectating(playerid, false);
  34556. }
  34557. }
  34558. }
  34559. return 1;
  34560. }
  34561. Dialog:WeaponDamages(playerid, response, listitem, inputtext[])
  34562. {
  34563. if (response)
  34564. {
  34565. new count;
  34566. for(new i = 0; i < sizeof(WeaponDamages); i ++)
  34567. {
  34568. if(IsValidDamageWeapon(i))
  34569. {
  34570. if(count++ == listitem)
  34571. {
  34572. Players[playerid][pSelected] = i;
  34573. return Dialog_Show(playerid, SetDamage, DIALOG_STYLE_INPUT, "{FFFFFF}Set Damage", "Please enter the weapon damage to set for %s (use 0 for default).", "Submit", "Back", GetWeapon(Players[playerid][pSelected]));
  34574. }
  34575. }
  34576. }
  34577. }
  34578. return 1;
  34579. }
  34580. Dialog:SetDamage(playerid, response, listitem, inputtext[])
  34581. {
  34582. if (response)
  34583. {
  34584. new Float:damage;
  34585. if (sscanf(inputtext, "f", damage))
  34586. {
  34587. return Dialog_Show(playerid, SetDamage, DIALOG_STYLE_INPUT, "{FFFFFF}Set Damage", "Please enter the weapon damage to set for %s (use 0 for default).", "Submit", "Back", GetWeapon(Players[playerid][pSelected]));
  34588. }
  34589. else if (damage < 0.0 || damage > 100.0)
  34590. {
  34591. return Dialog_Show(playerid, SetDamage, DIALOG_STYLE_INPUT, "{FFFFFF}Set Damage", "The specified damage can't be below 0 or above 100.\n\nPlease enter the weapon damage to set for %s (use 0 for default).", "Submit", "Back", GetWeapon(Players[playerid][pSelected]));
  34592. }
  34593. else
  34594. {
  34595. new weaponid = Players[playerid][pSelected];
  34596. SetWeaponDamage(weaponid, damage);
  34597. if (damage == 0.0)
  34598. {
  34599. SendAdminMessage(COLOR_RED, "Admin: %s has set the damage for %s to default.", ReturnNameEx(playerid, 0), GetWeapon(weaponid));
  34600. }
  34601. else
  34602. {
  34603. SendAdminMessage(COLOR_RED, "Admin: %s has set the damage for %s to %.1f.", ReturnNameEx(playerid, 0), GetWeapon(weaponid), damage);
  34604. }
  34605. }
  34606. }
  34607. else
  34608. {
  34609. ShowWeaponDamageEditMenu(playerid);
  34610. }
  34611. return 1;
  34612. }
  34613. Dialog:FindLocation(playerid, response, listitem, inputtext[])
  34614. {
  34615. if (response)
  34616. {
  34617. cmd_guide(playerid, "\1");
  34618. }
  34619. return 1;
  34620. }
  34621. Dialog:Guide(playerid, response, listitem, inputtext[])
  34622. {
  34623. if (response)
  34624. {
  34625. switch (listitem)
  34626. {
  34627. case 0:
  34628. {
  34629. SetCheckpoint(playerid, CHECKPOINT_GPS, g_StaticBuildings[BUILDING_CITYHALL][e_SpawnX], g_StaticBuildings[BUILDING_CITYHALL][e_SpawnY], g_StaticBuildings[BUILDING_CITYHALL][e_SpawnZ], 3.0);
  34630. SendInfoMessage(playerid, "A waypoint has been placed at City Hall. You can acquire a job there.");
  34631. }
  34632. case 1:
  34633. {
  34634. SetCheckpoint(playerid, CHECKPOINT_GPS, g_StaticBuildings[BUILDING_DMV][e_SpawnX], g_StaticBuildings[BUILDING_DMV][e_SpawnY], g_StaticBuildings[BUILDING_DMV][e_SpawnZ], 3.0);
  34635. SendInfoMessage(playerid, "A waypoint has been set to the department of motor vehicles.");
  34636. }
  34637. case 2:
  34638. {
  34639. Dialog_Show(playerid, GPS, DIALOG_STYLE_LIST, "{FFFFFF}GPS Menu", "Locate Company\nLocate House\nLocate Auto Shop\nLocate DMV\nLocate Mod Shop", "Select", "Cancel");
  34640. }
  34641. case 3:
  34642. {
  34643. ShowFAQMenu(playerid);
  34644. }
  34645. }
  34646. }
  34647. return 1;
  34648. }
  34649. Dialog:Objective(playerid, response, listitem, inputtext[])
  34650. {
  34651. if (response)
  34652. {
  34653. cmd_jobhelp(playerid, "\1");
  34654. }
  34655. return 1;
  34656. }
  34657. Dialog:JobHelp(playerid, response, listitem, inputtext[])
  34658. {
  34659. if (response)
  34660. {
  34661. switch (Players[playerid][pJob])
  34662. {
  34663. case JOB_TRANSPORTER:
  34664. {
  34665. if (listitem == 0)
  34666. {
  34667. Dialog_Show(playerid, Objective, DIALOG_STYLE_MSGBOX, "{FFFFFF}Objective", "You are a transporter. Your objective is to deliver stock to various\ncompanies around the city.\n\nUse {88AA62}/load{A9C4E4} at the work location to start delivering goods. To deliver\nthe stock, use {88AA62}/deliver{A9C4E4} at the deliver point.", "Back", "Close");
  34668. }
  34669. else if (listitem == 1)
  34670. {
  34671. SetCheckpoint(playerid, CHECKPOINT_GPS, 2175.3335, -2266.9937, 13.3891, 3.0);
  34672. SendInfoMessage(playerid, "A waypoint has been placed at the work location.");
  34673. }
  34674. }
  34675. case JOB_FORKLIFTER:
  34676. {
  34677. if (listitem == 0)
  34678. {
  34679. Dialog_Show(playerid, Objective, DIALOG_STYLE_MSGBOX, "{FFFFFF}Objective", "You are a forklifter. Your objective is to pickup goods and stack\nthem in the warehouse.\n\nUse {88AA62}/jobhelp{A9C4E4} and select {88AA62}Work Location{A9C4E4} to locate the warehouse.\nUse {88AA62}/work{A9C4E4} inside the forklift to begin the job.", "Back", "Close");
  34680. }
  34681. else if (listitem == 1)
  34682. {
  34683. SetCheckpoint(playerid, CHECKPOINT_GPS, 2783.6682, -2417.8679, 13.6347, 3.0);
  34684. SendInfoMessage(playerid, "A waypoint has been placed at the work location.");
  34685. }
  34686. }
  34687. case JOB_MINER:
  34688. {
  34689. if (listitem == 0)
  34690. {
  34691. Dialog_Show(playerid, Objective, DIALOG_STYLE_MSGBOX, "{FFFFFF}Objective", "You are a miner. Your objective is to mine for several different\ntypes of rocks.\n\nUse {88AA62}/jobhelp{A9C4E4} and select {88AA62}Work Location{A9C4E4} to locate the mining place.\nUse {88AA62}/work{A9C4E4} at the rocks to begin the job.", "Back", "Close");
  34692. }
  34693. else if (listitem == 1)
  34694. {
  34695. SetCheckpoint(playerid, CHECKPOINT_GPS, -1858.5516, -1651.3812, 26.0788, 3.0);
  34696. SendInfoMessage(playerid, "A waypoint has been placed at the work location.");
  34697. }
  34698. }
  34699. case JOB_TAXI:
  34700. {
  34701. if (listitem == 0)
  34702. {
  34703. Dialog_Show(playerid, Objective, DIALOG_STYLE_MSGBOX, "{FFFFFF}Objective", "You are a taxi driver. Your objective is to offer transportation to\npeople around the city.\n\nAll you need to do is enter a taxi and wait for passengers to\nenter your cab. The meter will turn on automatically.\nAvailable Commands: /taxiduty, /setfare, /acceptcall", "Back", "Close");
  34704. }
  34705. else if (listitem == 1)
  34706. {
  34707. //SetCheckpoint(playerid, CHECKPOINT_GPS, 1790.9644, -1890.2183, 13.3973, 3.0);
  34708. SendInfoMessage(playerid, "This job does not have a specific job location, all you need is a taxi.");
  34709. }
  34710. }
  34711. /*case JOB_MECHANIC:
  34712. {
  34713. if (listitem == 0)
  34714. {
  34715. Dialog_Show(playerid, Objective, DIALOG_STYLE_MSGBOX, "{FFFFFF}Objective", "As a mechanic your job is to service vehicles around the city.\nEnter a tow truck and wait for somebody to call. Use {88AA62}/acceptcall{A9C4E4}\nto accept the call, and {88AA62}/service{A9C4E4} to service a vehicle.", "Back", "Close");
  34716. //Dialog_Show(playerid, Objective, DIALOG_STYLE_MSGBOX, "{FFFFFF}Objective", "You are a mechanic. Your objective is to service vehicles to\nfor people around the city.\n\nAll you need to do is enter a taxi and wait for passengers to\nenter your cab. The meter will turn on automatically.", "Back", "Close");
  34717. }
  34718. else if (listitem == 1)
  34719. {
  34720. //SetCheckpoint(playerid, CHECKPOINT_GPS, 1790.9644, -1890.2183, 13.3973, 3.0);
  34721. SendInfoMessage(playerid, "This job does not have a specific location, all you need is a tow truck.");
  34722. }
  34723. }*/
  34724. case JOB_PIZZA:
  34725. {
  34726. if (listitem == 0)
  34727. {
  34728. Dialog_Show(playerid, Objective, DIALOG_STYLE_MSGBOX, "{FFFFFF}Objective", "You are a pizzaboy. Your objective is to deliver pizzas to residents\nto earn some quick money.\n\nUse {88AA62}/jobhelp{A9C4E4} and select {88AA62}Work Location{A9C4E4} to locate the pizza stacks.\nUse {88AA62}/work{A9C4E4} inside the pizza scooter to begin the job.", "Back", "Close");
  34729. }
  34730. else if (listitem == 1)
  34731. {
  34732. SetCheckpoint(playerid, CHECKPOINT_GPS, 2097.8745, -1800.4648, 12.9810, 3.0);
  34733. SendInfoMessage(playerid, "A waypoint has been placed at the work location.");
  34734. }
  34735. }
  34736. case JOB_TRASHMAN:
  34737. {
  34738. if (listitem == 0)
  34739. {
  34740. Dialog_Show(playerid, Objective, DIALOG_STYLE_MSGBOX, "{FFFFFF}Objective", "You are a trashman. Your objective is to pickup trash around the\ncity and drop it off at the landfill.\n\nUse {88AA62}/jobhelp{A9C4E4} and select {88AA62}Work Location{A9C4E4} to locate the landfill.\nUse {88AA62}/work{A9C4E4} inside a garbage truck to begin the job.", "Back", "Close");
  34741. }
  34742. else if (listitem == 1)
  34743. {
  34744. SetCheckpoint(playerid, CHECKPOINT_GPS, 2184.9795, -1976.9451, 13.5528, 3.0);
  34745. SendInfoMessage(playerid, "A waypoint has been placed at the work location.");
  34746. }
  34747. }
  34748. case JOB_MECHANIC:
  34749. {
  34750. if (listitem == 0)
  34751. {
  34752. Dialog_Show(playerid, Objective, DIALOG_STYLE_MSGBOX, "{FFFFFF}Objective", "You are a mechanic. Your objective is to respond to mechanic calls\naround the city. You use a toolbox to repair vehicles, and a\nspraycan to respray vehicles.", "Back", "Close");
  34753. }
  34754. else if (listitem == 1)
  34755. {
  34756. SendInfoMessage(playerid, "Mechanics don't have a work location.");
  34757. }
  34758. }
  34759. }
  34760. }
  34761. return 1;
  34762. }
  34763. Dialog:Employment(playerid, response, listitem, inputtext[])
  34764. {
  34765. if (response)
  34766. {
  34767. switch (listitem)
  34768. {
  34769. case 0:
  34770. {
  34771. Players[playerid][pJob] = JOB_TRANSPORTER;
  34772. SendInfoMessage(playerid, "You are now employed as a transporter. Use /jobhelp for more information.");
  34773. }
  34774. case 1:
  34775. {
  34776. Players[playerid][pJob] = JOB_FORKLIFTER;
  34777. SendInfoMessage(playerid, "You are now employed as a forklifter. Use /jobhelp for more information.");
  34778. }
  34779. case 2:
  34780. {
  34781. Players[playerid][pJob] = JOB_MINER;
  34782. SendInfoMessage(playerid, "You are now employed as a miner. Use /jobhelp for more information.");
  34783. }
  34784. case 3:
  34785. {
  34786. Players[playerid][pJob] = JOB_TAXI;
  34787. SendInfoMessage(playerid, "You are now employed as a taxi driver. Use /jobhelp for more information.");
  34788. }
  34789. case 4:
  34790. {
  34791. Players[playerid][pJob] = JOB_PIZZA;
  34792. SendInfoMessage(playerid, "You are now employed as a pizzaboy. Use /jobhelp for more information.");
  34793. }
  34794. case 5:
  34795. {
  34796. Players[playerid][pJob] = JOB_TRASHMAN;
  34797. SendInfoMessage(playerid, "You are now employed as a trashman. Use /jobhelp for more information.");
  34798. }
  34799. case 6:
  34800. {
  34801. Players[playerid][pJob] = JOB_MECHANIC;
  34802. SendInfoMessage(playerid, "You are now employed as a mechanic. Use /jobhelp for more information.");
  34803. }
  34804. }
  34805. }
  34806. return 1;
  34807. }
  34808. /*
  34809. format(string, sizeof(string), "Melee Packages\t%s", (Factions[faction][fcWeaponRights][0]) ? ("Yes") : ("No"));
  34810. format(string, sizeof(string), "%s\nPistol Packages\t%s", string, (Factions[faction][fcWeaponRights][1]) ? ("Yes") : ("No"));
  34811. format(string, sizeof(string), "%s\nShotgun Packages\t%s", string, (Factions[faction][fcWeaponRights][2]) ? ("Yes") : ("No"));
  34812. format(string, sizeof(string), "%s\nSMG Packages\t\t%s", string, (Factions[faction][fcWeaponRights][3]) ? ("Yes") : ("No"));
  34813. format(string, sizeof(string), "%s\nRifle Packages\t\t%s", string, (Factions[faction][fcWeaponRights][4]) ? ("Yes") : ("No"));
  34814. if(GetPlayerArmourEx(playerid) > 0.0)
  34815. {
  34816. return SendErrorMessage(playerid, "You have armor already.");
  34817. }
  34818. else
  34819. {
  34820. new Float:Farmor;
  34821. new armor = Inventory[playerid][item][invValue];
  34822. Farmor = float(armor);
  34823. SetPlayerValidArmor(playerid, Farmor);
  34824. ShowActionBubble(playerid, "* %s straps on a kevlar vest.", ReturnNameEx(playerid));
  34825. RemoveItemFromInventory(playerid, item);
  34826. SendInfoMessage(playerid, "You have put armor on.");
  34827. }
  34828. Dialog_Show(playerid, CraftWeapon, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Craft Weapon", "Weapon\tMat. Cost\nDesert Eagle\t200\nShotgun\t350\nUZI\t600\nAK-47\t1500\nRifle\t2500\nKnife\t150", "Select", "Cancel");
  34829. if (Factions[Players[playerid][pFaction]][fcWeaponRights][0])
  34830. {
  34831. //format(string, sizeof(string), "Melee Weapons\n", string);
  34832. strcat(string, "Melee Weapons\n");
  34833. }
  34834. if (Factions[Players[playerid][pFaction]][fcWeaponRights][1])
  34835. {
  34836. //format(string, sizeof(string), "Pistols\n", string);
  34837. strcat(string, "Pistols\n");
  34838. }
  34839. if (Factions[Players[playerid][pFaction]][fcWeaponRights][2])
  34840. {
  34841. //format(string, sizeof(string), "Shotguns\n", string);
  34842. strcat(string, "Shotguns\n");
  34843. }
  34844. if (Factions[Players[playerid][pFaction]][fcWeaponRights][3])
  34845. {
  34846. //format(string, sizeof(string), "Sub Machine Guns\n", string);
  34847. strcat(string, "Sub Machine Guns\n");
  34848. }
  34849. if (Factions[Players[playerid][pFaction]][fcWeaponRights][4])
  34850. {
  34851. //format(string, sizeof(string), "Rifles\n", string);
  34852. strcat(string, "Rifles\n");
  34853. }
  34854. */
  34855. /*
  34856. if (Factions[Players[playerid][pFaction]][fcWeaponRights][0])
  34857. {
  34858. //format(string, sizeof(string), "Melee Weapons\n", string);
  34859. strcat(string, "Melee Weapons\n");
  34860. }
  34861. if (Factions[Players[playerid][pFaction]][fcWeaponRights][1])
  34862. {
  34863. //format(string, sizeof(string), "Pistols\n", string);
  34864. strcat(string, "Pistols\n");
  34865. }
  34866. if (Factions[Players[playerid][pFaction]][fcWeaponRights][2])
  34867. {
  34868. //format(string, sizeof(string), "Shotguns\n", string);
  34869. strcat(string, "Shotguns\n");
  34870. }
  34871. if (Factions[Players[playerid][pFaction]][fcWeaponRights][3])
  34872. {
  34873. //format(string, sizeof(string), "Sub Machine Guns\n", string);
  34874. strcat(string, "Sub Machine Guns\n");
  34875. }
  34876. if (Factions[Players[playerid][pFaction]][fcWeaponRights][4])
  34877. {
  34878. //format(string, sizeof(string), "Rifles\n", string);
  34879. strcat(string, "Rifles\n");
  34880. }
  34881. if (Factions[Players[playerid][pFaction]][fcWeaponRights][5])
  34882. {
  34883. //format(string, sizeof(string), "Rifles\n", string);
  34884. strcat(string, "Explosives\n");
  34885. }
  34886. */
  34887. Dialog:OrderIllegal(playerid, response, listitem, inputtext[])
  34888. {
  34889. if (response)
  34890. {
  34891. new fac = Players[playerid][pFaction];
  34892. new facr[6];
  34893. facr[0] = Factions[fac][fcWeaponRights][0];
  34894. facr[1] = Factions[fac][fcWeaponRights][1];
  34895. facr[2] = Factions[fac][fcWeaponRights][2];
  34896. facr[3] = Factions[fac][fcWeaponRights][3];
  34897. facr[4] = Factions[fac][fcWeaponRights][4];
  34898. facr[5] = Factions[fac][fcWeaponRights][5];
  34899. switch (listitem)
  34900. {
  34901. /*case 0:
  34902. {
  34903. if (!facr[0] && !facr[1] && !facr[2] && !facr[3] && !facr[4] && !facr[5])
  34904. {
  34905. return SendErrorMessage(playerid, "Your faction is not allowed to order this.");
  34906. }
  34907. else
  34908. {
  34909. //SendInfoMessage(playerid, "mats");
  34910. Dialog_Show(playerid, OrderIllegal_Mats, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Order Materials", "Package\tAmount\tPrice\nSmall Package\t500 Mats\t$500\nMedium Package\t1000\t$1000\nLarge Package\t2000\t$2000", "Select", "Cancel");
  34911. }
  34912. }*/
  34913. case 0:
  34914. {
  34915. Dialog_Show(playerid, OrderIllegal_Weps, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Order Weapons", "Package Type\tPrice\nMelee Package\t$%i\nPistol Package\t$%i\nShotgun Package\t$%i\nSMG Package\t$%i\nRifle Package\t$%i", "Submit", "Cancel", GetPackagePrice(PACKAGE_TYPE_MELEE), GetPackagePrice(PACKAGE_TYPE_PISTOLS), GetPackagePrice(PACKAGE_TYPE_SHOTGUNS), GetPackagePrice(PACKAGE_TYPE_SMGS), GetPackagePrice(PACKAGE_TYPE_RIFLES));
  34916. }
  34917. case 1:
  34918. {
  34919. if (!Factions[fac][fcDrugRights])
  34920. {
  34921. return SendErrorMessage(playerid, "Your factions is not allowed to order this.");
  34922. }
  34923. else
  34924. {
  34925. Dialog_Show(playerid, OrderIllegal_Drugs_Amt, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Order Drugs",
  34926. "Type\t$/gram\nSteroids\t$200\nHeroin\t$150\nLSD\t$225\nEcstasy\t$350\nMarijuana\t$100\nCrack\t$80\nCocaine\t$500\nMethamphetamine\t$250\nPCP\t$235",
  34927. "Select", "Cancel");
  34928. }
  34929. }
  34930. }
  34931. }
  34932. return 1;
  34933. }
  34934. Dialog:OrderIllegal_Weps(playerid, response, listitem, inputtext[])
  34935. {
  34936. if (response)
  34937. {
  34938. new fac = Players[playerid][pFaction];
  34939. new facr[5];
  34940. facr[0] = Factions[fac][fcWeaponRights][0];
  34941. facr[1] = Factions[fac][fcWeaponRights][1];
  34942. facr[2] = Factions[fac][fcWeaponRights][2];
  34943. facr[3] = Factions[fac][fcWeaponRights][3];
  34944. facr[4] = Factions[fac][fcWeaponRights][4];
  34945. switch (listitem)
  34946. {
  34947. case 0:
  34948. {
  34949. if (!facr[0])
  34950. return SendErrorMessage(playerid, "Your faction is not privileged to order this package.");
  34951. if (!PlayerCanAfford(playerid, GetPackagePrice(PACKAGE_TYPE_MELEE)))
  34952. return SendErrorMessage(playerid, "You can't afford this package.");
  34953. if (!IsSufficientSpace(playerid, "Melee Package"))
  34954. return SendErrorMessage(playerid, "There is no more room in your inventory.");
  34955. AddItemToInventory(playerid, "Melee Package");
  34956. SendInfoMessage(playerid, "You have received a Melee Package.");
  34957. RemoveMoney(playerid, GetPackagePrice(PACKAGE_TYPE_MELEE));
  34958. }
  34959. case 1:
  34960. {
  34961. if (!facr[1])
  34962. return SendErrorMessage(playerid, "Your faction is not privileged to order this package.");
  34963. if (!PlayerCanAfford(playerid, GetPackagePrice(PACKAGE_TYPE_PISTOLS)))
  34964. return SendErrorMessage(playerid, "You can't afford this package.");
  34965. if (!IsSufficientSpace(playerid, "Pistol Package"))
  34966. return SendErrorMessage(playerid, "There is no more room in your inventory.");
  34967. AddItemToInventory(playerid, "Pistol Package");
  34968. SendInfoMessage(playerid, "You have received a Pistol Package.");
  34969. RemoveMoney(playerid, GetPackagePrice(PACKAGE_TYPE_PISTOLS));
  34970. }
  34971. case 2:
  34972. {
  34973. if (!facr[2])
  34974. return SendErrorMessage(playerid, "Your faction is not privileged to order this package.");
  34975. if (!PlayerCanAfford(playerid, GetPackagePrice(PACKAGE_TYPE_SHOTGUNS)))
  34976. return SendErrorMessage(playerid, "You can't afford this package.");
  34977. if (!IsSufficientSpace(playerid, "Shotgun Package"))
  34978. return SendErrorMessage(playerid, "There is no more room in your inventory.");
  34979. AddItemToInventory(playerid, "Shotgun Package");
  34980. SendInfoMessage(playerid, "You have received a Shotgun Package.");
  34981. RemoveMoney(playerid, GetPackagePrice(PACKAGE_TYPE_SHOTGUNS));
  34982. }
  34983. case 3:
  34984. {
  34985. if (!facr[3])
  34986. return SendErrorMessage(playerid, "Your faction is not privileged to order this package.");
  34987. if (!PlayerCanAfford(playerid, GetPackagePrice(PACKAGE_TYPE_SMGS)))
  34988. return SendErrorMessage(playerid, "You can't afford this package.");
  34989. if (!IsSufficientSpace(playerid, "SMG Package"))
  34990. return SendErrorMessage(playerid, "There is no more room in your inventory.");
  34991. AddItemToInventory(playerid, "SMG Package");
  34992. SendInfoMessage(playerid, "You have received a SMG Package.");
  34993. RemoveMoney(playerid, GetPackagePrice(PACKAGE_TYPE_SMGS));
  34994. }
  34995. case 4:
  34996. {
  34997. if (!facr[4])
  34998. return SendErrorMessage(playerid, "Your faction is not privileged to order this package.");
  34999. if (!PlayerCanAfford(playerid, GetPackagePrice(PACKAGE_TYPE_RIFLES)))
  35000. return SendErrorMessage(playerid, "You can't afford this package.");
  35001. if (!IsSufficientSpace(playerid, "Rifle Package"))
  35002. return SendErrorMessage(playerid, "There is no more room in your inventory.");
  35003. AddItemToInventory(playerid, "Rifle Package");
  35004. SendInfoMessage(playerid, "You have received a Rifle Package.");
  35005. RemoveMoney(playerid, GetPackagePrice(PACKAGE_TYPE_RIFLES));
  35006. }
  35007. }
  35008. }
  35009. return 1;
  35010. }
  35011. /*
  35012. {"Melee Package", 3014, 2, false, true},
  35013. {"Pistol Package", 3014, 3, false, true},
  35014. {"Shotgun Package", 3014, 3, false, true},
  35015. {"SMG Package", 3014, 3, false, true},6500
  35016. {"Rifle Package", 3014, 3, false, true},12500
  35017. */
  35018. Dialog:Crafting(playerid, response, listitem, inputtext[])
  35019. {
  35020. if (response)
  35021. {
  35022. if (!strcmp(inputtext, "Melee Weapons", true))
  35023. {
  35024. Dialog_Show(playerid, CraftMelee, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Crafting - Melee", "Weapon\tMaterial Cost\nNightstick\t75\nKnife\t50\nKatana\t80\nChainsaw\t320", "Select", "Cancel");
  35025. }
  35026. else if (!strcmp(inputtext, "Pistols", true))
  35027. {
  35028. Dialog_Show(playerid, CraftPistol, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Crafting - Pistols", "Weapon\tMaterial Cost\nColt 45\t250\nSilenced 45\t350\nDesert Eagle\t500", "Select", "Cancel");
  35029. }
  35030. else if (!strcmp(inputtext, "Shotguns", true))
  35031. {
  35032. Dialog_Show(playerid, CraftShotgun, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Crafting - Shotguns", "Weapon\tMaterial Cost\nShotgun\t750\nCombat Shotgun\t1200", "Select", "Cancel");
  35033. }
  35034. else if (!strcmp(inputtext, "Sub Machine Guns", true))
  35035. {
  35036. Dialog_Show(playerid, CraftSMG, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Crafting - Sub Machine Guns", "Weapon\tMaterial Cost\nUZI\t800\nTEC-9\t850\nMP5\t1000", "Select", "Cancel");
  35037. }
  35038. else if (!strcmp(inputtext, "Rifles", true))
  35039. {
  35040. Dialog_Show(playerid, CraftRifle, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Crafting - Rifles", "Weapon\tMaterial Cost\nAK-47\t1250\nM4\t1500\nCountry Rifle\t1000", "Select", "Cancel");
  35041. }
  35042. else if (!strcmp(inputtext, "Explosives", true))
  35043. {
  35044. Dialog_Show(playerid, CraftExplosive, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Crafting - Explosives", "Weapon\tMaterial Cost\nGrenade\t500\nMolotov\t750", "Select", "Cancel");
  35045. }
  35046. }
  35047. return 1;
  35048. }
  35049. Dialog:CraftExplosive(playerid, response, listitem, inputtext[])
  35050. {
  35051. if (response)
  35052. {
  35053. if (!strcmp(inputtext, "Grenade", true))
  35054. {
  35055. new itemname[24] = "Grenade";
  35056. new item = GetInventoryItemID(playerid, "Materials");
  35057. new amt = Inventory[playerid][item][invValue];
  35058. new cost = 500;
  35059. if (item == INVALID_ID)
  35060. {
  35061. return SendErrorMessage(playerid, "You don't have any materials.");
  35062. }
  35063. else if (amt < cost)
  35064. {
  35065. return SendErrorMessage(playerid, "You don't have %i materials.", cost);
  35066. }
  35067. else if (!IsSufficientSpace(playerid, itemname))
  35068. {
  35069. SendErrorMessage(playerid, "There is no more room in your inventory.");
  35070. }
  35071. else
  35072. {
  35073. AddItemToInventory(playerid, itemname);
  35074. SendInfoMessage(playerid, "You have received a %s.", itemname);
  35075. RemoveItemValue(playerid, item, cost);
  35076. SetReloadAnimation(playerid, 24);
  35077. }
  35078. }
  35079. else if (!strcmp(inputtext, "Molotov", true))
  35080. {
  35081. new itemname[24] = "Molotov";
  35082. new item = GetInventoryItemID(playerid, "Materials");
  35083. new amt = Inventory[playerid][item][invValue];
  35084. new cost = 750;
  35085. if (item == INVALID_ID)
  35086. {
  35087. return SendErrorMessage(playerid, "You don't have any materials.");
  35088. }
  35089. else if (amt < cost)
  35090. {
  35091. return SendErrorMessage(playerid, "You don't have %i materials.", cost);
  35092. }
  35093. else if (!IsSufficientSpace(playerid, itemname))
  35094. {
  35095. SendErrorMessage(playerid, "There is no more room in your inventory.");
  35096. }
  35097. else
  35098. {
  35099. AddItemToInventory(playerid, itemname);
  35100. SendInfoMessage(playerid, "You have received a %s.", itemname);
  35101. RemoveItemValue(playerid, item, cost);
  35102. SetReloadAnimation(playerid, 24);
  35103. }
  35104. }
  35105. }
  35106. return 1;
  35107. }
  35108. Dialog:CraftRifle(playerid, response, listitem, inputtext[])
  35109. {
  35110. if (response)
  35111. {
  35112. if (!strcmp(inputtext, "AK-47", true))
  35113. {
  35114. new itemname[24] = "AK-47";
  35115. new item = GetInventoryItemID(playerid, "Materials");
  35116. new amt = Inventory[playerid][item][invValue];
  35117. new cost = 1250;
  35118. if (item == INVALID_ID)
  35119. {
  35120. return SendErrorMessage(playerid, "You don't have any materials.");
  35121. }
  35122. else if (amt < cost)
  35123. {
  35124. return SendErrorMessage(playerid, "You don't have %i materials.", cost);
  35125. }
  35126. else if (!IsSufficientSpace(playerid, itemname))
  35127. {
  35128. SendErrorMessage(playerid, "There is no more room in your inventory.");
  35129. }
  35130. else
  35131. {
  35132. AddItemToInventory(playerid, itemname);
  35133. SendInfoMessage(playerid, "You have received a %s.", itemname);
  35134. RemoveItemValue(playerid, item, cost);
  35135. SetReloadAnimation(playerid, 24);
  35136. }
  35137. }
  35138. else if (!strcmp(inputtext, "M4", true))
  35139. {
  35140. new itemname[24] = "M4";
  35141. new item = GetInventoryItemID(playerid, "Materials");
  35142. new amt = Inventory[playerid][item][invValue];
  35143. new cost = 1500;
  35144. if (item == INVALID_ID)
  35145. {
  35146. return SendErrorMessage(playerid, "You don't have any materials.");
  35147. }
  35148. else if (amt < cost)
  35149. {
  35150. return SendErrorMessage(playerid, "You don't have %i materials.", cost);
  35151. }
  35152. else if (!IsSufficientSpace(playerid, itemname))
  35153. {
  35154. SendErrorMessage(playerid, "There is no more room in your inventory.");
  35155. }
  35156. else
  35157. {
  35158. AddItemToInventory(playerid, itemname);
  35159. SendInfoMessage(playerid, "You have received a %s.", itemname);
  35160. RemoveItemValue(playerid, item, cost);
  35161. SetReloadAnimation(playerid, 24);
  35162. }
  35163. }
  35164. else if (!strcmp(inputtext, "Country Rifle", true))
  35165. {
  35166. new itemname[24] = "Country Rifle";
  35167. new item = GetInventoryItemID(playerid, "Materials");
  35168. new amt = Inventory[playerid][item][invValue];
  35169. new cost = 1000;
  35170. if (item == INVALID_ID)
  35171. {
  35172. return SendErrorMessage(playerid, "You don't have any materials.");
  35173. }
  35174. else if (amt < cost)
  35175. {
  35176. return SendErrorMessage(playerid, "You don't have %i materials.", cost);
  35177. }
  35178. else if (!IsSufficientSpace(playerid, itemname))
  35179. {
  35180. SendErrorMessage(playerid, "There is no more room in your inventory.");
  35181. }
  35182. else
  35183. {
  35184. AddItemToInventory(playerid, itemname);
  35185. SendInfoMessage(playerid, "You have received a %s.", itemname);
  35186. RemoveItemValue(playerid, item, cost);
  35187. SetReloadAnimation(playerid, 24);
  35188. }
  35189. }
  35190. }
  35191. return 1;
  35192. }
  35193. Dialog:CraftSMG(playerid, response, listitem, inputtext[])
  35194. {
  35195. if (response)
  35196. {
  35197. if (!strcmp(inputtext, "UZI", true))
  35198. {
  35199. new itemname[24] = "UZI";
  35200. new item = GetInventoryItemID(playerid, "Materials");
  35201. new amt = Inventory[playerid][item][invValue];
  35202. new cost = 800;
  35203. if (item == INVALID_ID)
  35204. {
  35205. return SendErrorMessage(playerid, "You don't have any materials.");
  35206. }
  35207. else if (amt < cost)
  35208. {
  35209. return SendErrorMessage(playerid, "You don't have %i materials.", cost);
  35210. }
  35211. else if (!IsSufficientSpace(playerid, itemname))
  35212. {
  35213. SendErrorMessage(playerid, "There is no more room in your inventory.");
  35214. }
  35215. else
  35216. {
  35217. AddItemToInventory(playerid, itemname);
  35218. SendInfoMessage(playerid, "You have received a %s.", itemname);
  35219. RemoveItemValue(playerid, item, cost);
  35220. SetReloadAnimation(playerid, 24);
  35221. }
  35222. }
  35223. else if (!strcmp(inputtext, "TEC-9", true))
  35224. {
  35225. new itemname[24] = "TEC-9";
  35226. new item = GetInventoryItemID(playerid, "Materials");
  35227. new amt = Inventory[playerid][item][invValue];
  35228. new cost = 850;
  35229. if (item == INVALID_ID)
  35230. {
  35231. return SendErrorMessage(playerid, "You don't have any materials.");
  35232. }
  35233. else if (amt < cost)
  35234. {
  35235. return SendErrorMessage(playerid, "You don't have %i materials.", cost);
  35236. }
  35237. else if (!IsSufficientSpace(playerid, itemname))
  35238. {
  35239. SendErrorMessage(playerid, "There is no more room in your inventory.");
  35240. }
  35241. else
  35242. {
  35243. AddItemToInventory(playerid, itemname);
  35244. SendInfoMessage(playerid, "You have received a %s.", itemname);
  35245. RemoveItemValue(playerid, item, cost);
  35246. SetReloadAnimation(playerid, 24);
  35247. }
  35248. }
  35249. else if (!strcmp(inputtext, "MP5", true))
  35250. {
  35251. new itemname[24] = "MP5";
  35252. new item = GetInventoryItemID(playerid, "Materials");
  35253. new amt = Inventory[playerid][item][invValue];
  35254. new cost = 1000;
  35255. if (item == INVALID_ID)
  35256. {
  35257. return SendErrorMessage(playerid, "You don't have any materials.");
  35258. }
  35259. else if (amt < cost)
  35260. {
  35261. return SendErrorMessage(playerid, "You don't have %i materials.", cost);
  35262. }
  35263. else if (!IsSufficientSpace(playerid, itemname))
  35264. {
  35265. SendErrorMessage(playerid, "There is no more room in your inventory.");
  35266. }
  35267. else
  35268. {
  35269. AddItemToInventory(playerid, itemname);
  35270. SendInfoMessage(playerid, "You have received a %s.", itemname);
  35271. RemoveItemValue(playerid, item, cost);
  35272. SetReloadAnimation(playerid, 24);
  35273. }
  35274. }
  35275. }
  35276. return 1;
  35277. }
  35278. Dialog:CraftShotgun(playerid, response, listitem, inputtext[])
  35279. {
  35280. if (response)
  35281. {
  35282. if (!strcmp(inputtext, "Shotgun", true))
  35283. {
  35284. new itemname[24] = "Shotgun";
  35285. new item = GetInventoryItemID(playerid, "Materials");
  35286. new amt = Inventory[playerid][item][invValue];
  35287. new cost = 750;
  35288. if (item == INVALID_ID)
  35289. {
  35290. return SendErrorMessage(playerid, "You don't have any materials.");
  35291. }
  35292. else if (amt < cost)
  35293. {
  35294. return SendErrorMessage(playerid, "You don't have %i materials.", cost);
  35295. }
  35296. else if (!IsSufficientSpace(playerid, itemname))
  35297. {
  35298. SendErrorMessage(playerid, "There is no more room in your inventory.");
  35299. }
  35300. else
  35301. {
  35302. AddItemToInventory(playerid, itemname);
  35303. SendInfoMessage(playerid, "You have received a %s.", itemname);
  35304. RemoveItemValue(playerid, item, cost);
  35305. SetReloadAnimation(playerid, 24);
  35306. }
  35307. }
  35308. else if (!strcmp(inputtext, "SPAS-12", true))
  35309. {
  35310. new itemname[24] = "SPAS-12";
  35311. new item = GetInventoryItemID(playerid, "Materials");
  35312. new amt = Inventory[playerid][item][invValue];
  35313. new cost = 1200;
  35314. if (item == INVALID_ID)
  35315. {
  35316. return SendErrorMessage(playerid, "You don't have any materials.");
  35317. }
  35318. else if (amt < cost)
  35319. {
  35320. return SendErrorMessage(playerid, "You don't have %i materials.", cost);
  35321. }
  35322. else if (!IsSufficientSpace(playerid, itemname))
  35323. {
  35324. SendErrorMessage(playerid, "There is no more room in your inventory.");
  35325. }
  35326. else
  35327. {
  35328. AddItemToInventory(playerid, itemname);
  35329. SendInfoMessage(playerid, "You have received a %s.", itemname);
  35330. RemoveItemValue(playerid, item, cost);
  35331. SetReloadAnimation(playerid, 24);
  35332. }
  35333. }
  35334. }
  35335. return 1;
  35336. }
  35337. Dialog:CraftPistol(playerid, response, listitem, inputtext[])
  35338. {
  35339. if (response)
  35340. {
  35341. if (!strcmp(inputtext, "Colt 45", true))
  35342. {
  35343. new itemname[24] = "Colt 45";
  35344. new item = GetInventoryItemID(playerid, "Materials");
  35345. new amt = Inventory[playerid][item][invValue];
  35346. new cost = 250;
  35347. if (item == INVALID_ID)
  35348. {
  35349. return SendErrorMessage(playerid, "You don't have any materials.");
  35350. }
  35351. else if (amt < cost)
  35352. {
  35353. return SendErrorMessage(playerid, "You don't have %i materials.", cost);
  35354. }
  35355. else if (!IsSufficientSpace(playerid, itemname))
  35356. {
  35357. SendErrorMessage(playerid, "There is no more room in your inventory.");
  35358. }
  35359. else
  35360. {
  35361. AddItemToInventory(playerid, itemname);
  35362. SendInfoMessage(playerid, "You have received a %s.", itemname);
  35363. RemoveItemValue(playerid, item, cost);
  35364. SetReloadAnimation(playerid, 24);
  35365. }
  35366. }
  35367. else if (!strcmp(inputtext, "Silenced 45", true))
  35368. {
  35369. new itemname[24] = "Silenced 45";
  35370. new item = GetInventoryItemID(playerid, "Materials");
  35371. new amt = Inventory[playerid][item][invValue];
  35372. new cost = 350;
  35373. if (item == INVALID_ID)
  35374. {
  35375. return SendErrorMessage(playerid, "You don't have any materials.");
  35376. }
  35377. else if (amt < cost)
  35378. {
  35379. return SendErrorMessage(playerid, "You don't have %i materials.", cost);
  35380. }
  35381. else if (!IsSufficientSpace(playerid, itemname))
  35382. {
  35383. SendErrorMessage(playerid, "There is no more room in your inventory.");
  35384. }
  35385. else
  35386. {
  35387. AddItemToInventory(playerid, itemname);
  35388. SendInfoMessage(playerid, "You have received a %s.", itemname);
  35389. RemoveItemValue(playerid, item, cost);
  35390. SetReloadAnimation(playerid, 24);
  35391. }
  35392. }
  35393. else if (!strcmp(inputtext, "Desert Eagle", true))
  35394. {
  35395. new itemname[24] = "Desert Eagle";
  35396. new item = GetInventoryItemID(playerid, "Materials");
  35397. new amt = Inventory[playerid][item][invValue];
  35398. new cost = 500;
  35399. if (item == INVALID_ID)
  35400. {
  35401. return SendErrorMessage(playerid, "You don't have any materials.");
  35402. }
  35403. else if (amt < cost)
  35404. {
  35405. return SendErrorMessage(playerid, "You don't have %i materials.", cost);
  35406. }
  35407. else if (!IsSufficientSpace(playerid, itemname))
  35408. {
  35409. SendErrorMessage(playerid, "There is no more room in your inventory.");
  35410. }
  35411. else
  35412. {
  35413. AddItemToInventory(playerid, itemname);
  35414. SendInfoMessage(playerid, "You have received a %s.", itemname);
  35415. RemoveItemValue(playerid, item, cost);
  35416. SetReloadAnimation(playerid, 24);
  35417. }
  35418. }
  35419. }
  35420. return 1;
  35421. }
  35422. Dialog:CraftMelee(playerid, response, listitem, inputtext[])
  35423. {
  35424. if (response)
  35425. {
  35426. if (!strcmp(inputtext, "Nightstick", true))
  35427. {
  35428. new itemname[24] = "Nightstick";
  35429. new item = GetInventoryItemID(playerid, "Materials");
  35430. new amt = Inventory[playerid][item][invValue];
  35431. new cost = 75;
  35432. if (item == INVALID_ID)
  35433. {
  35434. return SendErrorMessage(playerid, "You don't have any materials.");
  35435. }
  35436. else if (amt < cost)
  35437. {
  35438. return SendErrorMessage(playerid, "You don't have %i materials.", cost);
  35439. }
  35440. else if (!IsSufficientSpace(playerid, itemname))
  35441. {
  35442. SendErrorMessage(playerid, "There is no more room in your inventory.");
  35443. }
  35444. else
  35445. {
  35446. AddItemToInventory(playerid, itemname);
  35447. SendInfoMessage(playerid, "You have received a %s.", itemname);
  35448. RemoveItemValue(playerid, item, cost);
  35449. SetReloadAnimation(playerid, 24);
  35450. }
  35451. }
  35452. else if (!strcmp(inputtext, "Knife", true))
  35453. {
  35454. new itemname[24] = "Knife";
  35455. new item = GetInventoryItemID(playerid, "Materials");
  35456. new amt = Inventory[playerid][item][invValue];
  35457. new cost = 50;
  35458. if (item == INVALID_ID)
  35459. {
  35460. return SendErrorMessage(playerid, "You don't have any materials.");
  35461. }
  35462. else if (amt < cost)
  35463. {
  35464. return SendErrorMessage(playerid, "You don't have %i materials.", cost);
  35465. }
  35466. else if (!IsSufficientSpace(playerid, itemname))
  35467. {
  35468. SendErrorMessage(playerid, "There is no more room in your inventory.");
  35469. }
  35470. else
  35471. {
  35472. AddItemToInventory(playerid, itemname);
  35473. SendInfoMessage(playerid, "You have received a %s.", itemname);
  35474. RemoveItemValue(playerid, item, cost);
  35475. SetReloadAnimation(playerid, 24);
  35476. }
  35477. }
  35478. else if (!strcmp(inputtext, "Katana", true))
  35479. {
  35480. new itemname[24] = "Katana";
  35481. new item = GetInventoryItemID(playerid, "Materials");
  35482. new amt = Inventory[playerid][item][invValue];
  35483. new cost = 80;
  35484. if (item == INVALID_ID)
  35485. {
  35486. return SendErrorMessage(playerid, "You don't have any materials.");
  35487. }
  35488. else if (amt < cost)
  35489. {
  35490. return SendErrorMessage(playerid, "You don't have %i materials.", cost);
  35491. }
  35492. else if (!IsSufficientSpace(playerid, itemname))
  35493. {
  35494. SendErrorMessage(playerid, "There is no more room in your inventory.");
  35495. }
  35496. else
  35497. {
  35498. AddItemToInventory(playerid, itemname);
  35499. SendInfoMessage(playerid, "You have received a %s.", itemname);
  35500. RemoveItemValue(playerid, item, cost);
  35501. SetReloadAnimation(playerid, 24);
  35502. }
  35503. }
  35504. else if (!strcmp(inputtext, "Chainsaw", true))
  35505. {
  35506. new itemname[24] = "Chainsaw";
  35507. new item = GetInventoryItemID(playerid, "Materials");
  35508. new amt = Inventory[playerid][item][invValue];
  35509. new cost = 320;
  35510. if (item == INVALID_ID)
  35511. {
  35512. return SendErrorMessage(playerid, "You don't have any materials.");
  35513. }
  35514. else if (amt < cost)
  35515. {
  35516. return SendErrorMessage(playerid, "You don't have %i materials.", cost);
  35517. }
  35518. else if (!IsSufficientSpace(playerid, itemname))
  35519. {
  35520. SendErrorMessage(playerid, "There is no more room in your inventory.");
  35521. }
  35522. else
  35523. {
  35524. AddItemToInventory(playerid, itemname);
  35525. SendInfoMessage(playerid, "You have received a %s.", itemname);
  35526. RemoveItemValue(playerid, item, cost);
  35527. SetReloadAnimation(playerid, 24);
  35528. }
  35529. }
  35530. }
  35531. return 1;
  35532. }
  35533. Dialog:CraftWeapon(playerid, response, listitem, inputtext[])
  35534. {
  35535. if (response)
  35536. {
  35537. switch (listitem)
  35538. {
  35539. case 0:
  35540. {
  35541. new item = GetInventoryItemID(playerid, "Materials");
  35542. new amt = Inventory[playerid][item][invValue];
  35543. if (item == INVALID_ID)
  35544. {
  35545. return SendErrorMessage(playerid, "You don't have any materials.");
  35546. }
  35547. else if (amt < 200)
  35548. {
  35549. return SendErrorMessage(playerid, "You don't have enough materials for this.");
  35550. }
  35551. else if (!Factions[Players[playerid][pFaction]][fcWeaponRights][1])
  35552. {
  35553. return SendErrorMessage(playerid, "Your faction is not allowed to craft these.");
  35554. }
  35555. else if (!IsSufficientSpace(playerid, "Desert Eagle"))
  35556. {
  35557. SendErrorMessage(playerid, "There is no more room in your inventory.");
  35558. }
  35559. else
  35560. {
  35561. AddItemToInventory(playerid, "Desert Eagle", 70);
  35562. SendInfoMessage(playerid, "You have received a Desert Eagle with 70 ammo for 200 materials.");
  35563. RemoveItemValue(playerid, item, 200);
  35564. SetReloadAnimation(playerid, 24);
  35565. }
  35566. }
  35567. case 1:
  35568. {
  35569. new item = GetInventoryItemID(playerid, "Materials");
  35570. new amt = Inventory[playerid][item][invValue];
  35571. if (item == INVALID_ID)
  35572. {
  35573. return SendErrorMessage(playerid, "You don't have any materials.");
  35574. }
  35575. else if (amt < 350)
  35576. {
  35577. return SendErrorMessage(playerid, "You don't have enough materials for this.");
  35578. }
  35579. else if (!Factions[Players[playerid][pFaction]][fcWeaponRights][2])
  35580. {
  35581. return SendErrorMessage(playerid, "Your faction is not allowed to craft these.");
  35582. }
  35583. else if (!IsSufficientSpace(playerid, "Shotgun"))
  35584. {
  35585. SendErrorMessage(playerid, "There is no more room in your inventory.");
  35586. }
  35587. else
  35588. {
  35589. AddItemToInventory(playerid, "Shotgun", 50);
  35590. SendInfoMessage(playerid, "You have received a Shotgun with 50 ammo for 350 materials.");
  35591. RemoveItemValue(playerid, item, 350);
  35592. SetReloadAnimation(playerid, 24);
  35593. }
  35594. }
  35595. case 2:
  35596. {
  35597. new item = GetInventoryItemID(playerid, "Materials");
  35598. new amt = Inventory[playerid][item][invValue];
  35599. if (item == INVALID_ID)
  35600. {
  35601. return SendErrorMessage(playerid, "You don't have any materials.");
  35602. }
  35603. else if (amt < 600)
  35604. {
  35605. return SendErrorMessage(playerid, "You don't have enough materials for this.");
  35606. }
  35607. else if (!Factions[Players[playerid][pFaction]][fcWeaponRights][3])
  35608. {
  35609. return SendErrorMessage(playerid, "Your faction is not allowed to craft these.");
  35610. }
  35611. else if (!IsSufficientSpace(playerid, "UZI"))
  35612. {
  35613. SendErrorMessage(playerid, "There is no more room in your inventory.");
  35614. }
  35615. else
  35616. {
  35617. AddItemToInventory(playerid, "UZI", 100);
  35618. SendInfoMessage(playerid, "You have received a UZI with 100 ammo for 600 materials.");
  35619. RemoveItemValue(playerid, item, 600);
  35620. SetReloadAnimation(playerid, 24);
  35621. }
  35622. }
  35623. case 3:
  35624. {
  35625. new item = GetInventoryItemID(playerid, "Materials");
  35626. new amt = Inventory[playerid][item][invValue];
  35627. if (item == INVALID_ID)
  35628. {
  35629. return SendErrorMessage(playerid, "You don't have any materials.");
  35630. }
  35631. else if (amt < 1500)
  35632. {
  35633. return SendErrorMessage(playerid, "You don't have enough materials for this.");
  35634. }
  35635. else if (!Factions[Players[playerid][pFaction]][fcWeaponRights][4])
  35636. {
  35637. return SendErrorMessage(playerid, "Your faction is not allowed to craft these.");
  35638. }
  35639. else if (!IsSufficientSpace(playerid, "AK-47"))
  35640. {
  35641. SendErrorMessage(playerid, "There is no more room in your inventory.");
  35642. }
  35643. else
  35644. {
  35645. AddItemToInventory(playerid, "AK-47", 60);
  35646. SendInfoMessage(playerid, "You have received a AK-47 with 60 ammo for 1500 materials.");
  35647. RemoveItemValue(playerid, item, 1500);
  35648. SetReloadAnimation(playerid, 24);
  35649. }
  35650. }
  35651. case 4:
  35652. {
  35653. new item = GetInventoryItemID(playerid, "Materials");
  35654. new amt = Inventory[playerid][item][invValue];
  35655. if (item == INVALID_ID)
  35656. {
  35657. return SendErrorMessage(playerid, "You don't have any materials.");
  35658. }
  35659. else if (amt < 2500)
  35660. {
  35661. return SendErrorMessage(playerid, "You don't have enough materials for this.");
  35662. }
  35663. else if (!Factions[Players[playerid][pFaction]][fcWeaponRights][4])
  35664. {
  35665. return SendErrorMessage(playerid, "Your faction is not allowed to craft these.");
  35666. }
  35667. else if (!IsSufficientSpace(playerid, "Rifle"))
  35668. {
  35669. SendErrorMessage(playerid, "There is no more room in your inventory.");
  35670. }
  35671. else
  35672. {
  35673. AddItemToInventory(playerid, "Rifle", 50);
  35674. SendInfoMessage(playerid, "You have received a Rifle with 50 ammo for 2500 materials.");
  35675. RemoveItemValue(playerid, item, 2500);
  35676. SetReloadAnimation(playerid, 24);
  35677. }
  35678. }
  35679. case 5:
  35680. {
  35681. new item = GetInventoryItemID(playerid, "Materials");
  35682. new amt = Inventory[playerid][item][invValue];
  35683. if (item == INVALID_ID)
  35684. {
  35685. return SendErrorMessage(playerid, "You don't have any materials.");
  35686. }
  35687. else if (amt < 150)
  35688. {
  35689. return SendErrorMessage(playerid, "You don't have enough materials for this.");
  35690. }
  35691. else if (!Factions[Players[playerid][pFaction]][fcWeaponRights][0])
  35692. {
  35693. return SendErrorMessage(playerid, "Your faction is not allowed to craft these.");
  35694. }
  35695. else if (!IsSufficientSpace(playerid, "Knife"))
  35696. {
  35697. SendErrorMessage(playerid, "There is no more room in your inventory.");
  35698. }
  35699. else
  35700. {
  35701. AddItemToInventory(playerid, "Knife");
  35702. SendInfoMessage(playerid, "You have received a Knife for 150 materials.");
  35703. RemoveItemValue(playerid, item, 150);
  35704. SetReloadAnimation(playerid, 24);
  35705. }
  35706. }
  35707. }
  35708. }
  35709. return 1;
  35710. }
  35711. Dialog:GoodsType(playerid, response, listitem, inputtext[])
  35712. {
  35713. if (response)
  35714. {
  35715. if (listitem == 0) {
  35716. Players[playerid][pGoods] = COMPANY_STORE;
  35717. } else if (listitem == 1) {
  35718. Players[playerid][pGoods] = COMPANY_CLOTHES;
  35719. } else if (listitem == 2) {
  35720. Players[playerid][pGoods] = COMPANY_RESTAURANT;
  35721. } else if (listitem == 3) {
  35722. Players[playerid][pGoods] = COMPANY_PHONE;
  35723. } else if (listitem == 4) {
  35724. Players[playerid][pGoods] = COMPANY_GYM;
  35725. } else if (listitem == 5) {
  35726. Players[playerid][pGoods] = COMPANY_AMMO;
  35727. } else if (listitem == 6) {
  35728. Players[playerid][pGoods] = COMPANY_BAR;
  35729. }
  35730. ApplyAnimation(playerid, "CARRY", "liftup", 4.1, 0, 0, 0, 0, 0, 1);
  35731. SetPlayerSpecialAction(playerid, SPECIAL_ACTION_CARRY);
  35732. SetPlayerAttachedObject(playerid, ATTACHED_SLOT_MISC, 1220, 5, 0.184000, 0.330999, 0.112999, -84.099983, -9.500001, 20.700000);
  35733. SendInfoMessage(playerid, "You have selected '%s'. Press Y near the truck to load the box.", inputtext);
  35734. Players[playerid][pWorking] = 1;
  35735. }
  35736. return 1;
  35737. }
  35738. Dialog:SetupConfirm(playerid, response, listitem, inputtext[])
  35739. {
  35740. if (response)
  35741. {
  35742. Players[playerid][pSetupInfo] = 1;
  35743. ApplyAnimation(playerid, "FREEWEIGHTS", "gym_free_celebrate", 4.0, 0, 0, 0, 0, 0, 1);
  35744. PlayerPlaySound(playerid, 1058, 0.0, 0.0, 0.0);
  35745. SendInfoMessage(playerid, "You have completed character setup! Your character will spawn in a moment.");
  35746. SetTimerEx("SetupConfirmed", 3000, false, "i", playerid);
  35747. }
  35748. return 1;
  35749. }
  35750. Dialog:TrashbinMenu(playerid, response, listitem, inputtext[])
  35751. {
  35752. new
  35753. trashbin = Players[playerid][pTrashbin];
  35754. if (!IsValidTrashbinID(trashbin))
  35755. {
  35756. return 0;
  35757. }
  35758. if (response)
  35759. {
  35760. if (listitem == 0)
  35761. {
  35762. new success = DisplayInventory(playerid);
  35763. if (!success)
  35764. {
  35765. SendErrorMessage(playerid, "You don't have any items in your inventory.");
  35766. }
  35767. else
  35768. {
  35769. Players[playerid][pChoose] = CHOOSE_TYPE_TRASH;
  35770. SendInfoMessage(playerid, "Choose an item to add to the trashbin.");
  35771. }
  35772. }
  35773. else
  35774. {
  35775. new
  35776. item = gListedItems[playerid][--listitem];
  35777. if (StoredItems[item][stExists])
  35778. {
  35779. Players[playerid][pSelected] = item;
  35780. if (GetItemInformation(StoredItems[item][stName], ITEM_INFO_STACKABLE))
  35781. {
  35782. Dialog_Show(playerid, TrashAmount, DIALOG_STYLE_INPUT, "{FFFFFF}Take Amount", "Item: %s\nAmount: %i\n\nPlease input the amount you want to withdraw:", "Submit", "Back", GetStoredItemName(item), StoredItems[item][stValue]);
  35783. }
  35784. else
  35785. {
  35786. Dialog_Show(playerid, TrashTake, DIALOG_STYLE_MSGBOX, "{FFFFFF}Item information", "Item: %s\nWeight: %i\n\nAre you sure you want to take this item?", "Yes", "No", GetStoredItemName(item), GetItemInformation(StoredItems[item][stName], ITEM_INFO_WEIGHT));
  35787. }
  35788. }
  35789. else
  35790. {
  35791. SendErrorMessage(playerid, "Sorry! Someone else has taken this item.");
  35792. }
  35793. }
  35794. }
  35795. return 1;
  35796. }
  35797. Dialog:TrashAmount(playerid, response, listitem, inputtext[])
  35798. {
  35799. new
  35800. trashbin = Players[playerid][pTrashbin];
  35801. if (!IsValidTrashbinID(trashbin))
  35802. {
  35803. return 0;
  35804. }
  35805. if (response)
  35806. {
  35807. new
  35808. item = Players[playerid][pSelected];
  35809. if (StoredItems[item][stExists])
  35810. {
  35811. new amount, name[MAX_ITEM_NAME];
  35812. strunpack(name, StoredItems[item][stName]);
  35813. if (sscanf(inputtext, "i", amount))
  35814. {
  35815. return Dialog_Show(playerid, TrashAmount, DIALOG_STYLE_INPUT, "{FFFFFF}Take Amount", "Item: %s\nAmount: %i\n\nPlease input the amount you want to withdraw:", "Submit", "Back", GetStoredItemName(item), StoredItems[item][stValue]);
  35816. }
  35817. else if (amount < 1 || amount > StoredItems[item][stValue])
  35818. {
  35819. return Dialog_Show(playerid, TrashAmount, DIALOG_STYLE_INPUT, "{FFFFFF}Take Amount", "There isn't that much of this item.\n\nItem: %s\nAmount: %i\n\nPlease input the amount you want to withdraw:", "Submit", "Back", GetStoredItemName(item), StoredItems[item][stValue]);
  35820. }
  35821. else
  35822. {
  35823. new id = AddItemToInventory(playerid, name, amount);
  35824. if (id == INVALID_ID)
  35825. {
  35826. SendErrorMessage(playerid, "There is no more room in the trashbin.");
  35827. }
  35828. else
  35829. {
  35830. if (amount < StoredItems[item][stValue])
  35831. {
  35832. format(gExecute, sizeof(gExecute), "UPDATE rp_items SET itemValue = itemValue - %i WHERE itemID = %i", amount, StoredItems[item][stID]);
  35833. StoredItems[item][stValue] -= amount;
  35834. }
  35835. else
  35836. {
  35837. format(gExecute, sizeof(gExecute), "DELETE FROM rp_items WHERE itemID = %i", StoredItems[item][stID]);
  35838. StoredItems[item][stExists] = 0;
  35839. }
  35840. mysql_tquery(gConnection, gExecute);
  35841. ShowTrashbinItems(playerid, trashbin);
  35842. SendInfoMessage(playerid, "You have withdrawn %s (%i) from the trashbin.", name, amount);
  35843. }
  35844. }
  35845. }
  35846. }
  35847. else
  35848. {
  35849. ShowTrashbinItems(playerid, trashbin);
  35850. }
  35851. return 1;
  35852. }
  35853. Dialog:TrashTake(playerid, response, listitem, inputtext[])
  35854. {
  35855. new
  35856. trashbin = Players[playerid][pTrashbin];
  35857. if (!IsValidTrashbinID(trashbin))
  35858. {
  35859. return 0;
  35860. }
  35861. if (response)
  35862. {
  35863. new
  35864. item = Players[playerid][pSelected];
  35865. if (StoredItems[item][stExists])
  35866. {
  35867. new
  35868. id = RetrieveItem(playerid, TRANSFER_FROM_TRASH, item);
  35869. if (id == INVALID_ID)
  35870. {
  35871. return SendErrorMessage(playerid, "There is no more room in your inventory.");
  35872. }
  35873. else
  35874. {
  35875. format(gExecute, sizeof(gExecute), "INSERT INTO rp_itemlogs (Player, Item, Action, Date) VALUES('%s', '%s', 'Taken from Trashbin', NOW())", ReturnName(playerid), GetFullItemName(playerid, id));
  35876. mysql_tquery(gConnection, gExecute);
  35877. StoredItems[item][stExists] = 0;
  35878. ShowActionBubble(playerid, "* %s takes an item from the trashbin.", ReturnNameEx(playerid));
  35879. SendInfoMessage(playerid, "You have taken an item: %s.", GetFullItemName(playerid, id));
  35880. ShowTrashbinItems(playerid, trashbin);
  35881. /*format(gExecute, sizeof(gExecute), "DELETE FROM rp_items WHERE itemID = %i", StoredItems[item][stID]);
  35882. mysql_tquery(gConnection, gExecute);*/
  35883. }
  35884. }
  35885. }
  35886. else
  35887. {
  35888. ShowTrashbinItems(playerid, trashbin);
  35889. }
  35890. return 1;
  35891. }
  35892. Dialog:DespawnVehicle(playerid, response, listitem, inputtext[])
  35893. {
  35894. if (response)
  35895. {
  35896. listitem = gListedItems[playerid][listitem];
  35897. if (!IsValidVehicleID(listitem) || !IsVehicleOwner(playerid, listitem) || Vehicles[listitem][vDespawned]) {
  35898. return 0;
  35899. }
  35900. if (Vehicles[listitem][vImpound] > 0) {
  35901. return SendErrorMessage(playerid, "You cannot despawn an impounded vehicle.");
  35902. }
  35903. if (GetVehicleDriver(Vehicles[listitem][vVehicle]) != INVALID_PLAYER_ID) {
  35904. return SendErrorMessage(playerid, "The vehicle is occupied and you may not despawn it.");
  35905. }
  35906. if (GetVehicleHealthEx(Vehicles[listitem][vVehicle]) < 800.0) {
  35907. return SendErrorMessage(playerid, "The vehicle needs to be repaired before it can be despawned.");
  35908. }
  35909. for (new i = 1; i < MAX_VEHICLES; i ++) {
  35910. if (GetVehicleModel(i) == 525 && GetVehicleTrailer(i) == Vehicles[listitem][vVehicle]) {
  35911. return SendErrorMessage(playerid, "The vehicle is currently being towed.");
  35912. }
  35913. }
  35914. ClearVehicleObjects(Vehicles[listitem][vVehicle]);
  35915. DestroyVehicleEx(Vehicles[listitem][vVehicle]);
  35916. SendInfoMessage(playerid, "{CFCFCF}You have despawned your {33AA33}%s (%s).{CFCFCF} Use {33AA33}'/v spawn'{CFCFCF} to spawn it.", GetVehicleModelName(Vehicles[listitem][vModel]), Vehicles[listitem][vPlate]);
  35917. Vehicles[listitem][vVehicle] = INVALID_VEHICLE_ID;
  35918. Vehicles[listitem][vDespawned] = 1;
  35919. SaveVehicle(listitem);
  35920. }
  35921. return 1;
  35922. }
  35923. Dialog:SpawnVehicle(playerid, response, listitem, inputtext[])
  35924. {
  35925. if (response)
  35926. {
  35927. listitem = gListedItems[playerid][listitem];
  35928. if (!IsValidVehicleID(listitem) || !IsVehicleOwner(playerid, listitem) || !Vehicles[listitem][vDespawned]) {
  35929. return 0;
  35930. }
  35931. if (Vehicles[listitem][vImpound] > 0) {
  35932. return SendErrorMessage(playerid, "You cannot spawn an impounded vehicle.");
  35933. }
  35934. new count = 0;
  35935. for (new i = 0; i < MAX_CARS; i ++)
  35936. {
  35937. if (IsValidVehicleID(i) && IsVehicleOwner(playerid, i) && !Vehicles[i][vDespawned])
  35938. {
  35939. count++;
  35940. }
  35941. }
  35942. if (count > GetVehicleSpawnLimit(playerid))
  35943. {
  35944. return SendErrorMessage(playerid, "You can only have two vehicles spawned at one time.");
  35945. }
  35946. Vehicles[listitem][vDespawned] = 0;
  35947. SaveVehicle(listitem);
  35948. UpdateVehicle(listitem);
  35949. SendInfoMessage(playerid, "{CFCFCF}You have spawned your {33AA33}%s (%s).{CFCFCF} You can find it at the place you parked it.", GetVehicleModelName(Vehicles[listitem][vModel]), Vehicles[listitem][vPlate]);
  35950. }
  35951. return 1;
  35952. }
  35953. Dialog:FindVehicle(playerid, response, listitem, inputtext[])
  35954. {
  35955. if (response)
  35956. {
  35957. listitem = gListedItems[playerid][listitem];
  35958. if (!IsValidVehicleID(listitem) || !IsVehicleOwner(playerid, listitem)) {
  35959. return 0;
  35960. }
  35961. if (Vehicles[listitem][vImpound] > 0)
  35962. {
  35963. return SendErrorMessage(playerid, "You can't track an impounded vehicle.");
  35964. }
  35965. else if (Vehicles[listitem][vDespawned])
  35966. {
  35967. return SendErrorMessage(playerid, "You can't track a despawned vehicle.");
  35968. }
  35969. else
  35970. {
  35971. new Float:x, Float:y, Float:z;
  35972. GetVehiclePos(Vehicles[listitem][vVehicle], x, y, z);
  35973. SetCheckpoint(playerid, CHECKPOINT_GPS, x, y, z, 3.0);
  35974. SendInfoMessage(playerid, "GPS: A waypoint has been set to the vehicle's last known location.");
  35975. }
  35976. }
  35977. return 1;
  35978. }
  35979. Dialog:ReleaseCar(playerid, response, listitem, inputtext[])
  35980. {
  35981. if (response)
  35982. {
  35983. listitem = gListedItems[playerid][listitem];
  35984. if (!IsValidVehicleID(listitem) || !IsVehicleOwner(playerid, listitem) || !Vehicles[listitem][vImpound]) {
  35985. return 0;
  35986. }
  35987. if (!PlayerCanAfford(playerid, Vehicles[listitem][vImpound]))
  35988. {
  35989. return SendErrorMessage(playerid, "You can't afford to release this vehicle.");
  35990. }
  35991. else
  35992. {
  35993. RemoveMoney(playerid, Vehicles[listitem][vImpound]);
  35994. SendInfoMessage(playerid, "You have paid {33CC33}%s{FFFFFF} to release your %s (%s).", FormatNumber(Vehicles[listitem][vImpound]), GetVehicleModelName(Vehicles[listitem][vModel]), Vehicles[listitem][vPlate]);
  35995. Vehicles[listitem][vImpound] = 0;
  35996. UpdateVehicle(listitem);
  35997. SaveVehicle(listitem);
  35998. }
  35999. }
  36000. return 1;
  36001. }
  36002. Dialog:SetBank(playerid, response, listitem, inputtext[])
  36003. {
  36004. new
  36005. targetid = Players[playerid][pSetBank];
  36006. if (response)
  36007. {
  36008. listitem = gListedItems[playerid][listitem];
  36009. if (!IsPlayerConnected(Players[playerid][pSetBank]) || !BankAccounts[Players[playerid][pSetBank]][listitem][bankExists])
  36010. {
  36011. return 0;
  36012. }
  36013. else
  36014. {
  36015. Players[playerid][pSelected] = listitem;
  36016. Dialog_Show(playerid, BankAmount, DIALOG_STYLE_INPUT, "{FFFFFF}Set Bank Balance", "The current balance for '%s' is %s.\n\nPlease input the amount of money to set as the balance:", "Submit", "Cancel", BankAccounts[targetid][listitem][bankName], FormatNumber(BankAccounts[targetid][listitem][bankBalance]));
  36017. }
  36018. }
  36019. return 1;
  36020. }
  36021. Dialog:BankAmount(playerid, response, listitem, inputtext[])
  36022. {
  36023. new
  36024. targetid = Players[playerid][pSetBank];
  36025. listitem = Players[playerid][pSelected];
  36026. if (!IsPlayerConnected(targetid) || !BankAccounts[targetid][listitem][bankExists])
  36027. {
  36028. return 0;
  36029. }
  36030. if (response)
  36031. {
  36032. new amount;
  36033. if (sscanf(inputtext, "i", amount))
  36034. {
  36035. return Dialog_Show(playerid, BankAmount, DIALOG_STYLE_INPUT, "{FFFFFF}Set Bank Balance", "The current balance for '%s' is %s.\n\nPlease input the amount of money to set as the balance:", "Submit", "Cancel", BankAccounts[targetid][listitem][bankName], FormatNumber(BankAccounts[targetid][listitem][bankBalance]));
  36036. }
  36037. else
  36038. {
  36039. BankAccounts[targetid][listitem][bankBalance] = amount;
  36040. SaveBankAccount(targetid, listitem);
  36041. SendInfoMessage(playerid, "You have set the balance of %s's bank account (%s) to %s.", ReturnNameEx(targetid, 0), BankAccounts[targetid][listitem][bankName], FormatNumber(amount));
  36042. SendAdminMessage(COLOR_RED, "Admin: %s has set %s's bank account (%s) balance to %s.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0), BankAccounts[targetid][listitem][bankName], FormatNumber(amount));
  36043. }
  36044. }
  36045. return 1;
  36046. }
  36047. Dialog:ShowGuns(playerid, response, listitem, inputtext[])
  36048. {
  36049. if (response)
  36050. {
  36051. format(gExecute, sizeof(gExecute), "SELECT gunType, gunQuantity FROM rp_crateguns WHERE gunID = %i", gListedItems[playerid][listitem]);
  36052. mysql_tquery(gConnection, gExecute, "OnPlayerTakeGun", "ii", playerid, gListedItems[playerid][listitem]);
  36053. }
  36054. return 1;
  36055. }
  36056. Dialog:OrderWeapons(playerid, response, listitem, inputtext[])
  36057. {
  36058. if (response)
  36059. {
  36060. switch (listitem)
  36061. {
  36062. case 0:
  36063. {
  36064. if (!PlayerCanAfford(playerid, 2500))
  36065. {
  36066. return SendErrorMessage(playerid, "You have insufficient funds for the purchase.");
  36067. }
  36068. else if (!Factions[Players[playerid][pFaction]][fcWeaponRights][0])
  36069. {
  36070. return SendErrorMessage(playerid, "This package is not available for your faction.");
  36071. }
  36072. else
  36073. {
  36074. RemoveMoney(playerid, 2500);
  36075. Players[playerid][pPackageOrder] = PACKAGE_TYPE_MELEE;
  36076. Players[playerid][pPackageType] = PACKAGE_TYPE_NONE;
  36077. Players[playerid][pPackageTime] = gettime() + 5;
  36078. SetTimerEx("PackageReady", 5000, false, "iiii", playerid, Players[playerid][pFaction], Players[playerid][pPackageOrder], GetPackagePrice(Players[playerid][pPackageOrder]));
  36079. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Unknown says: Alright, I'll gather up the stuff. We'll keep in touch.");
  36080. SendAdminMessage(COLOR_RED, "Admin: %s has ordered a package (Melee Package).", ReturnNameEx(playerid, 0));
  36081. }
  36082. }
  36083. case 1:
  36084. {
  36085. if (!PlayerCanAfford(playerid, 3700))
  36086. {
  36087. return SendErrorMessage(playerid, "You have insufficient funds for the purchase.");
  36088. }
  36089. else if (!Factions[Players[playerid][pFaction]][fcWeaponRights][1])
  36090. {
  36091. return SendErrorMessage(playerid, "This package is not available for your faction.");
  36092. }
  36093. else
  36094. {
  36095. RemoveMoney(playerid, 3700);
  36096. Players[playerid][pPackageOrder] = PACKAGE_TYPE_PISTOLS;
  36097. Players[playerid][pPackageType] = PACKAGE_TYPE_NONE;
  36098. Players[playerid][pPackageTime] = gettime() + 5;
  36099. SetTimerEx("PackageReady", 5000, false, "iiii", playerid, Players[playerid][pFaction], Players[playerid][pPackageOrder], GetPackagePrice(Players[playerid][pPackageOrder]));
  36100. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Unknown says: Alright, I'll gather up the stuff. We'll keep in touch.");
  36101. SendAdminMessage(COLOR_RED, "Admin: %s has ordered a package (Pistol Package).", ReturnNameEx(playerid, 0));
  36102. }
  36103. }
  36104. case 2:
  36105. {
  36106. if (!PlayerCanAfford(playerid, 8450))
  36107. {
  36108. return SendErrorMessage(playerid, "You have insufficient funds for the purchase.");
  36109. }
  36110. else if (!Factions[Players[playerid][pFaction]][fcWeaponRights][2])
  36111. {
  36112. return SendErrorMessage(playerid, "This package is not available for your faction.");
  36113. }
  36114. else
  36115. {
  36116. RemoveMoney(playerid, 8450);
  36117. Players[playerid][pPackageOrder] = PACKAGE_TYPE_SHOTGUNS;
  36118. Players[playerid][pPackageType] = PACKAGE_TYPE_NONE;
  36119. Players[playerid][pPackageTime] = gettime() + 5;
  36120. SetTimerEx("PackageReady", 5000, false, "iiii", playerid, Players[playerid][pFaction], Players[playerid][pPackageOrder], GetPackagePrice(Players[playerid][pPackageOrder]));
  36121. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Unknown says: Alright, I'll gather up the stuff. We'll keep in touch.");
  36122. SendAdminMessage(COLOR_RED, "Admin: %s has ordered a package (Shotgun Package).", ReturnNameEx(playerid, 0));
  36123. }
  36124. }
  36125. case 3:
  36126. {
  36127. if (!PlayerCanAfford(playerid, 12300))
  36128. {
  36129. return SendErrorMessage(playerid, "You have insufficient funds for the purchase.");
  36130. }
  36131. else if (!Factions[Players[playerid][pFaction]][fcWeaponRights][3])
  36132. {
  36133. return SendErrorMessage(playerid, "This package is not available for your faction.");
  36134. }
  36135. else
  36136. {
  36137. RemoveMoney(playerid, 12300);
  36138. Players[playerid][pPackageOrder] = PACKAGE_TYPE_SMGS;
  36139. Players[playerid][pPackageType] = PACKAGE_TYPE_NONE;
  36140. Players[playerid][pPackageTime] = gettime() + 5;
  36141. SetTimerEx("PackageReady", 5000, false, "iiii", playerid, Players[playerid][pFaction], Players[playerid][pPackageOrder], GetPackagePrice(Players[playerid][pPackageOrder]));
  36142. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Unknown says: Alright, I'll gather up the stuff. We'll keep in touch.");
  36143. SendAdminMessage(COLOR_RED, "Admin: %s has ordered a package (SMG Package).", ReturnNameEx(playerid, 0));
  36144. }
  36145. }
  36146. case 4:
  36147. {
  36148. if (!PlayerCanAfford(playerid, 15750))
  36149. {
  36150. return SendErrorMessage(playerid, "You have insufficient funds for the purchase.");
  36151. }
  36152. else if (!Factions[Players[playerid][pFaction]][fcWeaponRights][4])
  36153. {
  36154. return SendErrorMessage(playerid, "This package is not available for your faction.");
  36155. }
  36156. else
  36157. {
  36158. RemoveMoney(playerid, 15750);
  36159. Players[playerid][pPackageOrder] = PACKAGE_TYPE_RIFLES;
  36160. Players[playerid][pPackageType] = PACKAGE_TYPE_NONE;
  36161. Players[playerid][pPackageTime] = gettime() + 5;
  36162. SetTimerEx("PackageReady", 5000, false, "iiii", playerid, Players[playerid][pFaction], Players[playerid][pPackageOrder], GetPackagePrice(Players[playerid][pPackageOrder]));
  36163. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Unknown says: Alright, I'll gather up the stuff. We'll keep in touch.");
  36164. SendAdminMessage(COLOR_RED, "Admin: %s has ordered a package (Rifle Package).", ReturnNameEx(playerid, 0));
  36165. }
  36166. }
  36167. }
  36168. }
  36169. else
  36170. {
  36171. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Unknown says: Call back if you want to order something.");
  36172. }
  36173. return 1;
  36174. }
  36175. Dialog:OrderDrugs(playerid, response, listitem, inputtext[])
  36176. {
  36177. if (response)
  36178. {
  36179. switch (listitem)
  36180. {
  36181. case 0:
  36182. {
  36183. if (!PlayerCanAfford(playerid, 4530))
  36184. {
  36185. return SendErrorMessage(playerid, "You have insufficient funds for the purchase.");
  36186. }
  36187. else
  36188. {
  36189. RemoveMoney(playerid, 4530);
  36190. Players[playerid][pPackageOrder] = PACKAGE_TYPE_MARIJUANA;
  36191. Players[playerid][pPackageGrams] = 20;
  36192. Players[playerid][pPackageTime] = gettime() + 5;
  36193. SetTimerEx("PackageReady", 5000, false, "iiii", playerid, Players[playerid][pFaction], Players[playerid][pPackageOrder], GetPackagePrice(Players[playerid][pPackageOrder]));
  36194. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Unknown says: Alright, I'll gather up the stuff. We'll keep in touch.");
  36195. SendAdminMessage(COLOR_RED, "Admin: %s has ordered a package (Marijuana Package).", ReturnNameEx(playerid, 0));
  36196. }
  36197. }
  36198. case 1:
  36199. {
  36200. if (!PlayerCanAfford(playerid, 8500))
  36201. {
  36202. return SendErrorMessage(playerid, "You have insufficient funds for the purchase.");
  36203. }
  36204. else
  36205. {
  36206. RemoveMoney(playerid, 8500);
  36207. Players[playerid][pPackageOrder] = PACKAGE_TYPE_COCAINE;
  36208. Players[playerid][pPackageGrams] = 20;
  36209. Players[playerid][pPackageTime] = gettime() + 5;
  36210. SetTimerEx("PackageReady", 5000, false, "iiii", playerid, Players[playerid][pFaction], Players[playerid][pPackageOrder], GetPackagePrice(Players[playerid][pPackageOrder]));
  36211. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Unknown says: Alright, I'll gather up the stuff. We'll keep in touch.");
  36212. SendAdminMessage(COLOR_RED, "Admin: %s has ordered a package (Cocaine Package).", ReturnNameEx(playerid, 0));
  36213. }
  36214. }
  36215. case 2:
  36216. {
  36217. if (!PlayerCanAfford(playerid, 8300))
  36218. {
  36219. return SendErrorMessage(playerid, "You have insufficient funds for the purchase.");
  36220. }
  36221. else
  36222. {
  36223. RemoveMoney(playerid, 8300);
  36224. Players[playerid][pPackageOrder] = PACKAGE_TYPE_HEROIN;
  36225. Players[playerid][pPackageGrams] = 20;
  36226. Players[playerid][pPackageTime] = gettime() + 5;
  36227. SetTimerEx("PackageReady", 5000, false, "iiii", playerid, Players[playerid][pFaction], Players[playerid][pPackageOrder], GetPackagePrice(Players[playerid][pPackageOrder]));
  36228. SendAdminMessage(COLOR_RED, "Admin: %s has ordered a package (Heroin Package).", ReturnNameEx(playerid, 0));
  36229. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Unknown says: Alright, I'll gather up the stuff. We'll keep in touch.");
  36230. }
  36231. }
  36232. }
  36233. }
  36234. else
  36235. {
  36236. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Unknown says: Call back if you want to order something.");
  36237. }
  36238. return 1;
  36239. }
  36240. Dialog:OrderPackage(playerid, response, listitem, inputtext[])
  36241. {
  36242. if (response)
  36243. {
  36244. switch (listitem)
  36245. {
  36246. case 0:
  36247. {
  36248. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Unknown says: What type of weapon package would you like to order?");
  36249. Dialog_Show(playerid, OrderWeapons, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Order Weapons", "Type\tPrice\nMelee Package\t%s\nPistol Package\t%s\nShotgun Package\t%s\nSMG Package\t%s\nRifle Package\t%s", "Order", "Cancel", GetFactionWeaponRights(Players[playerid][pFaction], 0), GetFactionWeaponRights(Players[playerid][pFaction], 1), GetFactionWeaponRights(Players[playerid][pFaction], 2), GetFactionWeaponRights(Players[playerid][pFaction], 3), GetFactionWeaponRights(Players[playerid][pFaction], 4));
  36250. }
  36251. case 1:
  36252. {
  36253. if (!Factions[Players[playerid][pFaction]][fcDrugRights])
  36254. {
  36255. SendErrorMessage(playerid, "Your faction is not authorized to do this.");
  36256. }
  36257. else
  36258. {
  36259. SendClientMessage(playerid, COLOR_YELLOW, "(Phone) Unknown says: What type of drugs would you like to order?");
  36260. Dialog_Show(playerid, OrderDrugs, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Order Drugs", "Type\tGrams\tPrice\nMarijuana\t200g\t$2,000\nCocaine\t200g\t$4,000\nHeroin\t200g\t$6,000", "Order", "Cancel");
  36261. }
  36262. }
  36263. }
  36264. }
  36265. return 1;
  36266. }
  36267. Dialog:ShowFAQ(playerid, response, listitem, inputtext[])
  36268. {
  36269. if (response)
  36270. {
  36271. ShowFAQMenu(playerid);
  36272. }
  36273. return 1;
  36274. }
  36275. Dialog:OpenGate(playerid, response, listitem, inputtext[])
  36276. {
  36277. new gate = GetClosestGate(playerid);
  36278. if (!IsValidGateID(gate))
  36279. {
  36280. return 0;
  36281. }
  36282. if (response)
  36283. {
  36284. if (isnull(inputtext))
  36285. {
  36286. return Dialog_Show(playerid, OpenGate, DIALOG_STYLE_INPUT, "{FFFFFF}Gate Password", "Please input the password of this gate:", "Submit", "Cancel");
  36287. }
  36288. else if (strcmp(Gates[gate][gPassword], inputtext) != 0)
  36289. {
  36290. return Dialog_Show(playerid, OpenGate, DIALOG_STYLE_INPUT, "{FFFFFF}Gate Password", "You have specified the incorrect password.\n\nPlease input the password of this gate:", "Submit", "Cancel");
  36291. }
  36292. else
  36293. {
  36294. OpenGate(playerid, gate);
  36295. }
  36296. }
  36297. return 1;
  36298. }
  36299. Dialog:ChangePlate(playerid, response, listitem, inputtext[])
  36300. {
  36301. new id = GetVehicleID(GetPlayerVehicleID(playerid));
  36302. if (id == INVALID_ID)
  36303. {
  36304. return 0;
  36305. }
  36306. if (response)
  36307. {
  36308. if (isnull(inputtext))
  36309. {
  36310. return Dialog_Show(playerid, ChangePlate, DIALOG_STYLE_INPUT, "{FFFFFF}Change Plate", "Please input the plate text below. The text must not exceed 12 characters.", "Submit", "Cancel");
  36311. }
  36312. else if (strlen(inputtext) > 12)
  36313. {
  36314. return Dialog_Show(playerid, ChangePlate, DIALOG_STYLE_INPUT, "{FFFFFF}Change Plate", "The text can't contain more than 12 characters.\n\nPlease input the plate text below. The text must not exceed 12 characters.", "Submit", "Cancel");
  36315. }
  36316. else
  36317. {
  36318. format(gExecute, sizeof(gExecute), "SELECT vPlate FROM rp_vehicles WHERE vPlate = '%s'", mysql_escaped(inputtext));
  36319. mysql_tquery(gConnection, gExecute, "OnPlayerCheckPlate", "is", playerid, inputtext);
  36320. }
  36321. }
  36322. return 1;
  36323. }
  36324. Dialog:AdminName(playerid, response, listitem, inputtext[])
  36325. {
  36326. if (!Players[playerid][pAdmin])
  36327. {
  36328. return 0;
  36329. }
  36330. if (response)
  36331. {
  36332. if (isnull(inputtext))
  36333. {
  36334. return Dialog_Show(playerid, AdminName, DIALOG_STYLE_INPUT, "{FFFFFF}Admin Name", "Please input the admin name that you wish to use:", "Submit", "Cancel");
  36335. }
  36336. else if (strlen(inputtext) > 24)
  36337. {
  36338. return Dialog_Show(playerid, AdminName, DIALOG_STYLE_INPUT, "{FFFFFF}Admin Name", "Your admin name can't be above 24 characters.\n\nPlease input the admin name that you wish to use:", "Submit", "Cancel");
  36339. }
  36340. else if (!IsValidName(inputtext, false))
  36341. {
  36342. return Dialog_Show(playerid, AdminName, DIALOG_STYLE_INPUT, "{FFFFFF}Admin Name", "There are invalid characters in your name.\n\nPlease input the admin name that you wish to use:", "Submit", "Cancel");
  36343. }
  36344. else
  36345. {
  36346. if (!strcmp(inputtext, "none", true))
  36347. {
  36348. strcpy(Players[playerid][pAdminName], "None", 24);
  36349. SaveAccount(playerid);
  36350. SendInfoMessage(playerid, "You have reset your admin name.");
  36351. }
  36352. else
  36353. {
  36354. format(gExecute, sizeof(gExecute), "SELECT AdminName FROM rp_accounts WHERE Admin > 0 AND AdminName = '%s'", mysql_escaped(inputtext));
  36355. mysql_tquery(gConnection, gExecute, "OnPlayerCheckAdminName", "is", playerid, inputtext);
  36356. }
  36357. }
  36358. }
  36359. return 1;
  36360. }
  36361. Dialog:WeaponRights(playerid, response, listitem, inputtext[])
  36362. {
  36363. new
  36364. faction = Players[playerid][pSelected];
  36365. if (!IsValidFactionID(faction))
  36366. {
  36367. return 0;
  36368. }
  36369. if (response)
  36370. {
  36371. Factions[faction][fcWeaponRights][listitem] = !Factions[faction][fcWeaponRights][listitem];
  36372. SaveFaction(faction);
  36373. ShowWeaponRights(playerid, faction);
  36374. if (Factions[faction][fcWeaponRights][listitem])
  36375. {
  36376. switch (listitem)
  36377. {
  36378. case 0:
  36379. {
  36380. SendInfoMessage(playerid, "You have granted this faction permission to order melee packages.");
  36381. }
  36382. case 1:
  36383. {
  36384. SendInfoMessage(playerid, "You have granted this faction permission to order pistol packages.");
  36385. }
  36386. case 2:
  36387. {
  36388. SendInfoMessage(playerid, "You have granted this faction permission to order shotgun packages.");
  36389. }
  36390. case 3:
  36391. {
  36392. SendInfoMessage(playerid, "You have granted this faction permission to order SMG packages.");
  36393. }
  36394. case 4:
  36395. {
  36396. SendInfoMessage(playerid, "You have granted this faction permission to order rifle packages.");
  36397. }
  36398. }
  36399. }
  36400. else
  36401. {
  36402. switch (listitem)
  36403. {
  36404. case 0:
  36405. {
  36406. SendInfoMessage(playerid, "You have revoked this faction's permission to order melee packages.");
  36407. }
  36408. case 1:
  36409. {
  36410. SendInfoMessage(playerid, "You have revoked this faction's permission to order pistol packages.");
  36411. }
  36412. case 2:
  36413. {
  36414. SendInfoMessage(playerid, "You have revoked this faction's permission to order shotgun packages.");
  36415. }
  36416. case 3:
  36417. {
  36418. SendInfoMessage(playerid, "You have revoked this faction's permission to order SMG packages.");
  36419. }
  36420. case 4:
  36421. {
  36422. SendInfoMessage(playerid, "You have revoked this faction's permission to order rifle packages.");
  36423. }
  36424. }
  36425. }
  36426. }
  36427. else
  36428. {
  36429. ShowFactionRights(playerid, faction);
  36430. }
  36431. return 1;
  36432. }
  36433. Dialog:FactionRights(playerid, response, listitem, inputtext[])
  36434. {
  36435. new
  36436. faction = Players[playerid][pSelected];
  36437. if (!IsValidFactionID(faction))
  36438. {
  36439. return 0;
  36440. }
  36441. if (response)
  36442. {
  36443. switch (listitem)
  36444. {
  36445. case 0:
  36446. {
  36447. ShowWeaponRights(playerid, faction);
  36448. }
  36449. case 1:
  36450. {
  36451. Factions[faction][fcDrugRights] = !Factions[faction][fcDrugRights];
  36452. SaveFaction(faction);
  36453. ShowFactionRights(playerid, faction);
  36454. if (Factions[faction][fcDrugRights])
  36455. {
  36456. SendInfoMessage(playerid, "You have granted drug rights for this faction. This faction can now order drugs.");
  36457. }
  36458. else
  36459. {
  36460. SendInfoMessage(playerid, "You have revoked the drug rights for this faction.");
  36461. }
  36462. }
  36463. case 2:
  36464. {
  36465. Factions[faction][fcSprayRights] = !Factions[faction][fcSprayRights];
  36466. SaveFaction(faction);
  36467. ShowFactionRights(playerid, faction);
  36468. if (Factions[faction][fcSprayRights])
  36469. {
  36470. SendInfoMessage(playerid, "You have granted spray rights for this faction. This faction can now spray tags.");
  36471. }
  36472. else
  36473. {
  36474. SendInfoMessage(playerid, "You have revoked the spray rights for this faction.");
  36475. }
  36476. }
  36477. }
  36478. }
  36479. else
  36480. {
  36481. ShowFactionEditMenu(playerid, faction);
  36482. }
  36483. return 1;
  36484. }
  36485. Dialog:LockerEquipment(playerid, response, listitem, inputtext[])
  36486. {
  36487. if(Players[playerid][pFaction] == INVALID_ID || !IsPlayerInRangeOfPoint(playerid, 5.0, Factions[Players[playerid][pFaction]][fcLockerX], Factions[Players[playerid][pFaction]][fcLockerY], Factions[Players[playerid][pFaction]][fcLockerZ]))
  36488. {
  36489. return 0;
  36490. }
  36491. if(response)
  36492. {
  36493. new count;
  36494. for(new i = 0; i < MAX_FACTION_EQUIPMENT; i ++)
  36495. {
  36496. if(FactionEquipment[Players[playerid][pFaction]][i][fcItemExists] && count++ == listitem)
  36497. {
  36498. if(!IsSufficientSpace(playerid, FactionEquipment[Players[playerid][pFaction]][i][fcItemName]))
  36499. {
  36500. SendErrorMessage(playerid, "There is no more room in your inventory.");
  36501. }
  36502. else
  36503. {
  36504. if(IsItemWeapon(FactionEquipment[Players[playerid][pFaction]][i][fcItemName]))
  36505. {
  36506. new serial = Random(10000, 99999);
  36507. new fac[32];
  36508. format(fac, sizeof(fac), "%s Armory", GetInitials(GetPlayerFactionName(playerid)));
  36509. AddSerialToRegistry(serial, FactionEquipment[Players[playerid][pFaction]][i][fcItemName], ReturnName(playerid), fac);
  36510. AddItemToInventory(playerid, FactionEquipment[Players[playerid][pFaction]][i][fcItemName], FactionEquipment[Players[playerid][pFaction]][i][fcItemValue], serial);
  36511. }
  36512. else
  36513. {
  36514. AddItemToInventory(playerid, FactionEquipment[Players[playerid][pFaction]][i][fcItemName], FactionEquipment[Players[playerid][pFaction]][i][fcItemValue]);
  36515. }
  36516. ShowLockerEquipmentMenu(playerid);
  36517. if(FactionEquipment[Players[playerid][pFaction]][i][fcItemValue] > 0)
  36518. SendInfoMessage(playerid, "You have received a %s (%i) from the armory.", FactionEquipment[Players[playerid][pFaction]][i][fcItemName], FactionEquipment[Players[playerid][pFaction]][i][fcItemValue]);
  36519. else
  36520. SendInfoMessage(playerid, "You have received a %s from the armory.", FactionEquipment[Players[playerid][pFaction]][i][fcItemName]);
  36521. break;
  36522. }
  36523. }
  36524. }
  36525. }
  36526. else
  36527. {
  36528. ShowLockerMenu(playerid);
  36529. }
  36530. return 1;
  36531. }
  36532. Dialog:LockerAccessories(playerid, response, listitem, inputtext[])
  36533. {
  36534. if(Players[playerid][pFaction] == INVALID_ID || !IsPlayerInRangeOfPoint(playerid, 5.0, Factions[Players[playerid][pFaction]][fcLockerX], Factions[Players[playerid][pFaction]][fcLockerY], Factions[Players[playerid][pFaction]][fcLockerZ]))
  36535. {
  36536. return 0;
  36537. }
  36538. if(response)
  36539. {
  36540. new count;
  36541. for(new i = 0; i < MAX_FACTION_ACCESSORIES; i ++)
  36542. {
  36543. if(FactionAccessories[Players[playerid][pFaction]][i][fcAccessoryExists] && count++ == listitem)
  36544. {
  36545. new id = AddAccessory(playerid, FactionAccessories[Players[playerid][pFaction]][i][fcAccessoryName], FactionAccessories[Players[playerid][pFaction]][i][fcAccessoryModel], FactionAccessories[Players[playerid][pFaction]][i][fcAccessoryBone], 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0);
  36546. if(id == INVALID_ID)
  36547. {
  36548. SendErrorMessage(playerid, "Your accessory slots are full! (/accessories)");
  36549. }
  36550. else
  36551. {
  36552. SendInfoMessage(playerid, "You have taken %s from the armory. (/accessories)", FactionAccessories[Players[playerid][pFaction]][i][fcAccessoryName]);
  36553. }
  36554. ShowLockerAccessoryMenu(playerid);
  36555. break;
  36556. }
  36557. }
  36558. }
  36559. else
  36560. {
  36561. ShowLockerMenu(playerid);
  36562. }
  36563. return 1;
  36564. }
  36565. Dialog:LockerUniform(playerid, response, listitem, inputtext[])
  36566. {
  36567. if (Players[playerid][pFaction] == INVALID_ID)
  36568. {
  36569. return 0;
  36570. }
  36571. if (response)
  36572. {
  36573. if (GetFirstUniform(Players[playerid][pFaction]) == INVALID_ID)
  36574. {
  36575. SendErrorMessage(playerid, "There are no uniforms setup for this faction.");
  36576. }
  36577. else
  36578. {
  36579. SetupUniformSelection(playerid);
  36580. SendInfoMessage(playerid, "Use the arrow keys to browse between uniforms. Press ENTER to confirm and N to cancel.");
  36581. }
  36582. }
  36583. return 1;
  36584. }
  36585. Dialog:VaultWithdraw(playerid, response, listitem, inputtext[])
  36586. {
  36587. if (!IsPlayerInFaction(playerid, FACTION_GOVERNMENT) && !IsPlayerInBank(playerid))
  36588. {
  36589. return 0;
  36590. }
  36591. if (response)
  36592. {
  36593. new amount;
  36594. if (sscanf(inputtext, "i", amount))
  36595. {
  36596. return Dialog_Show(playerid, VaultWithdraw, DIALOG_STYLE_INPUT, "{FFFFFF}Vault Withdraw", "There is currently %s in the tax vault.\n\nPlease input the amount of money you would like to withdraw:", "Submit", "Cancel", FormatNumber(Server[TaxVault]));
  36597. }
  36598. else if (amount < 1 || amount > Server[TaxVault])
  36599. {
  36600. return Dialog_Show(playerid, VaultWithdraw, DIALOG_STYLE_INPUT, "{FFFFFF}Vault Withdraw", "There isn't that much money in the vault.\n\nThere is currently %s in the tax vault.\n\nPlease input the amount of money you would like to withdraw:", "Submit", "Cancel", FormatNumber(Server[TaxVault]));
  36601. }
  36602. else
  36603. {
  36604. Server[TaxVault] -= amount;
  36605. Players[playerid][pPocketMoney] += amount;
  36606. SendInfoMessage(playerid, "You have withdrawn {33CC33}%s{FFFFFF} from the tax vault.", FormatNumber(amount));
  36607. AdminDutyMessage(COLOR_RED, "Admin: %s has withdrawn %s from the tax vault.", ReturnNameEx(playerid, 0), FormatNumber(amount));
  36608. SaveInformation();
  36609. }
  36610. }
  36611. return 1;
  36612. }
  36613. Dialog:VaultDeposit(playerid, response, listitem, inputtext[])
  36614. {
  36615. if (!IsPlayerInFaction(playerid, FACTION_GOVERNMENT) && !IsPlayerInBank(playerid))
  36616. {
  36617. return 0;
  36618. }
  36619. if (response)
  36620. {
  36621. new amount;
  36622. if (sscanf(inputtext, "i", amount))
  36623. {
  36624. return Dialog_Show(playerid, VaultDeposit, DIALOG_STYLE_INPUT, "{FFFFFF}Vault Deposit", "There is currently %s in the tax vault.\n\nPlease input the amount of money you would like to deposit:", "Submit", "Cancel", FormatNumber(Server[TaxVault]));
  36625. }
  36626. else if (amount < 1 || amount > Players[playerid][pPocketMoney])
  36627. {
  36628. return Dialog_Show(playerid, VaultDeposit, DIALOG_STYLE_INPUT, "{FFFFFF}Vault Deposit", "You don't have that much money.\n\nThere is currently %s in the tax vault.\n\nPlease input the amount of money you would like to deposit:", "Submit", "Cancel", FormatNumber(Server[TaxVault]));
  36629. }
  36630. else
  36631. {
  36632. Server[TaxVault] += amount;
  36633. Players[playerid][pPocketMoney] -= amount;
  36634. SendInfoMessage(playerid, "You have deposited {33CC33}%s{FFFFFF} in the tax vault.", FormatNumber(amount));
  36635. AdminDutyMessage(COLOR_RED, "Admin: %s has deposited %s in the tax vault.", ReturnNameEx(playerid, 0), FormatNumber(amount));
  36636. SaveInformation();
  36637. }
  36638. }
  36639. return 1;
  36640. }
  36641. Dialog:GovernmentVault(playerid, response, listitem, inputtext[])
  36642. {
  36643. if (!IsPlayerInFaction(playerid, FACTION_GOVERNMENT) && !IsPlayerInBank(playerid))
  36644. {
  36645. return 0;
  36646. }
  36647. if (response)
  36648. {
  36649. switch (listitem)
  36650. {
  36651. case 0:
  36652. {
  36653. Dialog_Show(playerid, VaultWithdraw, DIALOG_STYLE_INPUT, "{FFFFFF}Vault Withdraw", "There is currently %s in the tax vault.\n\nPlease input the amount of money you would like to withdraw:", "Submit", "Cancel", FormatNumber(Server[TaxVault]));
  36654. }
  36655. case 1:
  36656. {
  36657. Dialog_Show(playerid, VaultDeposit, DIALOG_STYLE_INPUT, "{FFFFFF}Vault Deposit", "There is currently %s in the tax vault.\n\nPlease input the amount of money you would like to deposit:", "Submit", "Cancel", FormatNumber(Server[TaxVault]));
  36658. }
  36659. }
  36660. }
  36661. return 1;
  36662. }
  36663. Dialog:Undeploy(playerid, response, listitem, inputtext[])
  36664. {
  36665. new id = GetNextDeployID();
  36666. if ((id == INVALID_ID) || (!IsPlayerInFaction(playerid, FACTION_LEO) && !IsPlayerInFaction(playerid, FACTION_MEDICAL)))
  36667. {
  36668. return 0;
  36669. }
  36670. if (response)
  36671. {
  36672. switch (listitem)
  36673. {
  36674. case 0:
  36675. {
  36676. new item = GetClosestDeployedItem(playerid);
  36677. if (item == INVALID_ID)
  36678. {
  36679. SendErrorMessage(playerid, "There is no deployed item nearby.");
  36680. }
  36681. else if (DeployedItems[item][dpFaction] != Players[playerid][pFaction])
  36682. {
  36683. SendErrorMessage(playerid, "You cannot remove items deployed by another faction.");
  36684. }
  36685. else
  36686. {
  36687. DestroyDynamicObject(DeployedItems[item][dpObject]);
  36688. DeployedItems[item][dpExists] = 0;
  36689. SendInfoMessage(playerid, "You have removed the nearest deployed item.");
  36690. }
  36691. }
  36692. case 1:
  36693. {
  36694. for (new i = 0; i < MAX_DEPLOYED_ITEMS; i ++)
  36695. {
  36696. if (DeployedItems[i][dpExists] && DeployedItems[i][dpFaction] == Players[playerid][pFaction])
  36697. {
  36698. DestroyDynamicObject(DeployedItems[i][dpObject]);
  36699. DeployedItems[i][dpExists] = 0;
  36700. }
  36701. }
  36702. SendInfoMessage(playerid, "You have removed all deployed items from your faction.");
  36703. }
  36704. }
  36705. }
  36706. return 1;
  36707. }
  36708. Dialog:Deploy(playerid, response, listitem, inputtext[])
  36709. {
  36710. new id = GetNextDeployID();
  36711. if ((id == INVALID_ID) || (!IsPlayerInFaction(playerid, FACTION_LEO) && !IsPlayerInFaction(playerid, FACTION_MEDICAL)))
  36712. {
  36713. return 0;
  36714. }
  36715. if (response)
  36716. {
  36717. GetPlayerPos(playerid, DeployedItems[id][dpX], DeployedItems[id][dpY], DeployedItems[id][dpZ]);
  36718. GetPlayerFacingAngle(playerid, DeployedItems[id][dpA]);
  36719. DeployedItems[id][dpExists] = 1;
  36720. DeployedItems[id][dpFaction] = Players[playerid][pFaction];
  36721. switch (listitem)
  36722. {
  36723. case 0:
  36724. {
  36725. DeployedItems[id][dpType] = DEPLOY_TYPE_CONE;
  36726. DeployedItems[id][dpObject] = CreateDynamicObject(1238, DeployedItems[id][dpX] + (1.0 * floatsin(-DeployedItems[id][dpA], degrees)), DeployedItems[id][dpY] + (1.0 * floatcos(-DeployedItems[id][dpA], degrees)), DeployedItems[id][dpZ] - 0.7, 0.0, 0.0, DeployedItems[id][dpA]);
  36727. gPreviewDeploy[playerid] = DeployedItems[id][dpObject];
  36728. gPreviewDeployID[playerid] = id;
  36729. SendInfoMessage(playerid, "You have deployed a traffic cone. Use /undeploy to remove it.");
  36730. AdminDutyMessage(COLOR_RED, "Admin: %s has deployed a traffic cone at %s.", ReturnNameEx(playerid, 0), GetPlayerZoneName(playerid));
  36731. EditDynamicObjectEx(playerid, EDIT_TYPE_DEPLOY, DeployedItems[id][dpObject]);
  36732. }
  36733. case 1:
  36734. {
  36735. DeployedItems[id][dpType] = DEPLOY_TYPE_SPIKES;
  36736. DeployedItems[id][dpObject] = CreateDynamicObject(2899, DeployedItems[id][dpX] + (1.0 * floatsin(-DeployedItems[id][dpA], degrees)), DeployedItems[id][dpY] + (1.0 * floatcos(-DeployedItems[id][dpA], degrees)), DeployedItems[id][dpZ] - 0.9, 0.0, 0.0, DeployedItems[id][dpA] + 90.0);
  36737. gPreviewDeploy[playerid] = DeployedItems[id][dpObject];
  36738. gPreviewDeployID[playerid] = id;
  36739. SendInfoMessage(playerid, "You have deployed a spike strip. Use /undeploy to remove it.");
  36740. AdminDutyMessage(COLOR_RED, "Admin: %s has deployed a spike strip at %s.", ReturnNameEx(playerid, 0), GetPlayerZoneName(playerid));
  36741. EditDynamicObjectEx(playerid, EDIT_TYPE_DEPLOY, DeployedItems[id][dpObject]);
  36742. }
  36743. case 2:
  36744. {
  36745. DeployedItems[id][dpType] = DEPLOY_TYPE_ROADBLOCK;
  36746. DeployedItems[id][dpObject] = CreateDynamicObject(979, DeployedItems[id][dpX] + (10.0 * floatsin(-DeployedItems[id][dpA], degrees)), DeployedItems[id][dpY] + (10.0 * floatcos(-DeployedItems[id][dpA], degrees)), DeployedItems[id][dpZ] + 1.0, 0.0, 0.0, DeployedItems[id][dpA] + 180.0);
  36747. gPreviewDeploy[playerid] = DeployedItems[id][dpObject];
  36748. gPreviewDeployID[playerid] = id;
  36749. SendInfoMessage(playerid, "You have deployed a roadblock. Use /undeploy to remove it.");
  36750. AdminDutyMessage(COLOR_RED, "Admin: %s has deployed a roadblock at %s.", ReturnNameEx(playerid, 0), GetPlayerZoneName(playerid));
  36751. EditDynamicObjectEx(playerid, EDIT_TYPE_DEPLOY, DeployedItems[id][dpObject]);
  36752. }
  36753. case 3:
  36754. {
  36755. DeployedItems[id][dpType] = DEPLOY_TYPE_FLARE;
  36756. DeployedItems[id][dpObject] = CreateDynamicObject(18728, DeployedItems[id][dpX], DeployedItems[id][dpY], DeployedItems[id][dpZ] - 1.4, 0.0, 0.0, DeployedItems[id][dpA]);
  36757. gPreviewDeploy[playerid] = DeployedItems[id][dpObject];
  36758. gPreviewDeployID[playerid] = id;
  36759. SendInfoMessage(playerid, "You have deployed a smoke flare. Use /undeploy to remove it.");
  36760. AdminDutyMessage(COLOR_RED, "Admin: %s has deployed a smoke flare at %s.", ReturnNameEx(playerid, 0), GetPlayerZoneName(playerid));
  36761. EditDynamicObjectEx(playerid, EDIT_TYPE_DEPLOY, DeployedItems[id][dpObject]);
  36762. }
  36763. case 4:
  36764. {
  36765. DeployedItems[id][dpType] = DEPLOY_TYPE_BARREL;
  36766. DeployedItems[id][dpObject] = CreateDynamicObject(1237, DeployedItems[id][dpX] + (1.0 * floatsin(-DeployedItems[id][dpA], degrees)), DeployedItems[id][dpY] + (1.0 * floatcos(-DeployedItems[id][dpA], degrees)), DeployedItems[id][dpZ] - 1.0, 0.0, 0.0, DeployedItems[id][dpA]);
  36767. gPreviewDeploy[playerid] = DeployedItems[id][dpObject];
  36768. gPreviewDeployID[playerid] = id;
  36769. SendInfoMessage(playerid, "You have deployed a round barrier. Use /undeploy to remove it.");
  36770. AdminDutyMessage(COLOR_RED, "Admin: %s has deployed a round barrier at %s.", ReturnNameEx(playerid, 0), GetPlayerZoneName(playerid));
  36771. EditDynamicObjectEx(playerid, EDIT_TYPE_DEPLOY, DeployedItems[id][dpObject]);
  36772. }
  36773. case 5:
  36774. {
  36775. DeployedItems[id][dpType] = DEPLOY_TYPE_TAPE;
  36776. DeployedItems[id][dpObject] = CreateDynamicObject(19834, DeployedItems[id][dpX] + (1.0 * floatsin(-DeployedItems[id][dpA], degrees)), DeployedItems[id][dpY] + (1.0 * floatcos(-DeployedItems[id][dpA], degrees)), DeployedItems[id][dpZ] - 1.0, 0.0, 0.0, DeployedItems[id][dpA]);
  36777. gPreviewDeploy[playerid] = DeployedItems[id][dpObject];
  36778. gPreviewDeployID[playerid] = id;
  36779. SendInfoMessage(playerid, "You have deployed a strip of police tape. Use /undeploy to remove it.");
  36780. AdminDutyMessage(COLOR_RED, "Admin: %s has deployed a strip of police tape at %s.", ReturnNameEx(playerid, 0), GetPlayerZoneName(playerid));
  36781. EditDynamicObjectEx(playerid, EDIT_TYPE_DEPLOY, DeployedItems[id][dpObject]);
  36782. }
  36783. case 6:
  36784. {
  36785. DeployedItems[id][dpType] = DEPLOY_TYPE_TAPE;
  36786. DeployedItems[id][dpObject] = CreateDynamicObject(1282, DeployedItems[id][dpX] + (1.0 * floatsin(-DeployedItems[id][dpA], degrees)), DeployedItems[id][dpY] + (1.0 * floatcos(-DeployedItems[id][dpA], degrees)), DeployedItems[id][dpZ] - 1.0, 0.0, 0.0, DeployedItems[id][dpA]);
  36787. gPreviewDeploy[playerid] = DeployedItems[id][dpObject];
  36788. gPreviewDeployID[playerid] = id;
  36789. SendInfoMessage(playerid, "You have deployed a small barrier. Use /undeploy to remove it.");
  36790. AdminDutyMessage(COLOR_RED, "Admin: %s has deployed a small barrier at %s.", ReturnNameEx(playerid, 0), GetPlayerZoneName(playerid));
  36791. EditDynamicObjectEx(playerid, EDIT_TYPE_DEPLOY, DeployedItems[id][dpObject]);
  36792. }
  36793. case 7:
  36794. {
  36795. DeployedItems[id][dpType] = DEPLOY_TYPE_TAPE;
  36796. DeployedItems[id][dpObject] = CreateDynamicObject(1425, DeployedItems[id][dpX] + (1.0 * floatsin(-DeployedItems[id][dpA], degrees)), DeployedItems[id][dpY] + (1.0 * floatcos(-DeployedItems[id][dpA], degrees)), DeployedItems[id][dpZ] - 1.0, 0.0, 0.0, DeployedItems[id][dpA]);
  36797. gPreviewDeploy[playerid] = DeployedItems[id][dpObject];
  36798. gPreviewDeployID[playerid] = id;
  36799. SendInfoMessage(playerid, "You have deployed a detour barrier. Use /undeploy to remove it.");
  36800. AdminDutyMessage(COLOR_RED, "Admin: %s has deployed a detour barrier at %s.", ReturnNameEx(playerid, 0), GetPlayerZoneName(playerid));
  36801. EditDynamicObjectEx(playerid, EDIT_TYPE_DEPLOY, DeployedItems[id][dpObject]);
  36802. }
  36803. case 8:
  36804. {
  36805. DeployedItems[id][dpType] = DEPLOY_TYPE_TAPE;
  36806. DeployedItems[id][dpObject] = CreateDynamicObject(1949, DeployedItems[id][dpX] + (1.0 * floatsin(-DeployedItems[id][dpA], degrees)), DeployedItems[id][dpY] + (1.0 * floatcos(-DeployedItems[id][dpA], degrees)), DeployedItems[id][dpZ] - 1.0, 0.0, 0.0, DeployedItems[id][dpA]);
  36807. gPreviewDeploy[playerid] = DeployedItems[id][dpObject];
  36808. gPreviewDeployID[playerid] = id;
  36809. SendInfoMessage(playerid, "You have deployed a medium barrier. Use /undeploy to remove it.");
  36810. AdminDutyMessage(COLOR_RED, "Admin: %s has deployed a medium barrier at %s.", ReturnNameEx(playerid, 0), GetPlayerZoneName(playerid));
  36811. EditDynamicObjectEx(playerid, EDIT_TYPE_DEPLOY, DeployedItems[id][dpObject]);
  36812. }
  36813. case 9:
  36814. {
  36815. DeployedItems[id][dpType] = DEPLOY_TYPE_TAPE;
  36816. DeployedItems[id][dpObject] = CreateDynamicObject(3091, DeployedItems[id][dpX] + (1.0 * floatsin(-DeployedItems[id][dpA], degrees)), DeployedItems[id][dpY] + (1.0 * floatcos(-DeployedItems[id][dpA], degrees)), DeployedItems[id][dpZ] - 1.0, 0.0, 0.0, DeployedItems[id][dpA]);
  36817. gPreviewDeploy[playerid] = DeployedItems[id][dpObject];
  36818. gPreviewDeployID[playerid] = id;
  36819. SendInfoMessage(playerid, "You have deployed a large barrier. Use /undeploy to remove it.");
  36820. AdminDutyMessage(COLOR_RED, "Admin: %s has deployed a large barrier at %s.", ReturnNameEx(playerid, 0), GetPlayerZoneName(playerid));
  36821. EditDynamicObjectEx(playerid, EDIT_TYPE_DEPLOY, DeployedItems[id][dpObject]);
  36822. }
  36823. }
  36824. }
  36825. return 1;
  36826. }
  36827. //Dialog_Show(playerid, Deploy, DIALOG_STYLE_LIST, "{FFFFFF}Deploy Items", "Traffic cone\nSpike strips\nRoadblock\nSmoke flare\nRound barrier\nPolice Tape\nSmall Barrier\nDetour Barrier\nMedium Barrier\nLarge Barrier", "Deploy", "Cancel");
  36828. Dialog:NoteText(playerid, response, listitem, inputtext[])
  36829. {
  36830. new subject[64], text[128];
  36831. if (response)
  36832. {
  36833. strunpack(subject, gTemporaryText[playerid]);
  36834. if (isnull(inputtext))
  36835. {
  36836. return Dialog_Show(playerid, NoteText, DIALOG_STYLE_INPUT, "{FFFFFF}Note Text", "Subject:\n%s\n\nPlease input the text for this note. Use \\n for a new line and \\t for tab.", "Submit", "Cancel", subject);
  36837. }
  36838. else
  36839. {
  36840. strcpy(text, inputtext);
  36841. strreplace(text, "\\n", "\n");
  36842. strreplace(text, "\\t", "\t");
  36843. format(gExecute, sizeof(gExecute), "INSERT INTO rp_notes (itemID, noteSubject, noteText) VALUES(%i, '%s', '%s')", Inventory[playerid][Players[playerid][pNotebookID]][invID], mysql_escaped(subject), mysql_escaped(text));
  36844. mysql_tquery(gConnection, gExecute);
  36845. SendInfoMessage(playerid, "You have added a new note to your notebook.");
  36846. ShowPlayerNotebook(playerid, Players[playerid][pNotebookID]);
  36847. }
  36848. }
  36849. return 1;
  36850. }
  36851. Dialog:NoteSubject(playerid, response, listitem, inputtext[])
  36852. {
  36853. if (response)
  36854. {
  36855. if (isnull(inputtext))
  36856. {
  36857. return Dialog_Show(playerid, NoteSubject, DIALOG_STYLE_INPUT, "{FFFFFF}Note Subject", "Please input the subject for the note:", "Submit", "Back");
  36858. }
  36859. else if (strlen(inputtext) > 64)
  36860. {
  36861. return Dialog_Show(playerid, NoteSubject, DIALOG_STYLE_INPUT, "{FFFFFF}Note Subject", "The subject must be under 64 characters.\n\nPlease input the subject for the note:", "Submit", "Back");
  36862. }
  36863. else
  36864. {
  36865. strpack(gTemporaryText[playerid], inputtext, 64);
  36866. Dialog_Show(playerid, NoteText, DIALOG_STYLE_INPUT, "{FFFFFF}Note Text", "Subject:\n%s\n\nPlease input the text for this note. Use \\n for a new line and \\t for tab.", "Submit", "Cancel", inputtext);
  36867. }
  36868. }
  36869. else
  36870. {
  36871. ShowPlayerNotebook(playerid, Players[playerid][pNotebookID]);
  36872. }
  36873. return 1;
  36874. }
  36875. Dialog:ViewNote(playerid, response, listitem, inputtext[])
  36876. {
  36877. if (response)
  36878. {
  36879. format(gExecute, sizeof(gExecute), "DELETE FROM rp_notes WHERE ID = %i", Players[playerid][pSelected]);
  36880. mysql_tquery(gConnection, gExecute);
  36881. SendInfoMessage(playerid, "You have deleted the selected note.");
  36882. ShowPlayerNotebook(playerid, Players[playerid][pNotebookID]);
  36883. }
  36884. else
  36885. {
  36886. ShowPlayerNotebook(playerid, Players[playerid][pNotebookID]);
  36887. }
  36888. return 1;
  36889. }
  36890. Dialog:Notebook(playerid, response, listitem, inputtext[])
  36891. {
  36892. if (response)
  36893. {
  36894. if (listitem == 0)
  36895. {
  36896. Dialog_Show(playerid, NoteSubject, DIALOG_STYLE_INPUT, "{FFFFFF}Note Subject", "Please input the subject for the note:", "Submit", "Back");
  36897. }
  36898. else
  36899. {
  36900. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_notes WHERE ID = %i", gListedItems[playerid][--listitem]);
  36901. mysql_tquery(gConnection, gExecute, "OnPlayerSelectNote", "i", playerid);
  36902. }
  36903. }
  36904. return 1;
  36905. }
  36906. Dialog:SetRank(playerid, response, listitem, inputtext[])
  36907. {
  36908. new
  36909. faction = Players[playerid][pFaction];
  36910. if (!IsValidFactionID(faction))
  36911. {
  36912. return 0;
  36913. }
  36914. if (response)
  36915. {
  36916. new targetid = Players[playerid][pChangeRank];
  36917. if (!IsPlayerConnected(targetid) || Players[targetid][pFaction] != faction)
  36918. {
  36919. return 0;
  36920. }
  36921. else
  36922. {
  36923. Players[targetid][pFactionRank] = listitem + 1;
  36924. if (Players[targetid][pFactionRank] >= Factions[faction][fcMaxRanks] - 1) {
  36925. Players[targetid][pFactionLeader] = 1;
  36926. } else {
  36927. Players[targetid][pFactionLeader] = 0;
  36928. }
  36929. SendInfoMessage(playerid, "You have changed %s's rank to %s (%i).", ReturnNameEx(targetid), GetFactionRank(faction, Players[targetid][pFactionRank]), Players[targetid][pFactionRank]);
  36930. SendInfoMessage(targetid, "%s has changed your rank to %s (%i).", ReturnNameEx(playerid), GetFactionRank(faction, Players[targetid][pFactionRank]), Players[targetid][pFactionRank]);
  36931. }
  36932. }
  36933. return 1;
  36934. }
  36935. Dialog:GatePassword(playerid, response, listitem, inputtext[])
  36936. {
  36937. new
  36938. gate = Players[playerid][pSelected];
  36939. if (!IsValidGateID(gate))
  36940. {
  36941. return 0;
  36942. }
  36943. if (response)
  36944. {
  36945. if (isnull(inputtext) || strlen(inputtext) > 64)
  36946. {
  36947. return Dialog_Show(playerid, GatePassword, DIALOG_STYLE_INPUT, "{FFFFFF}Gate Password", "Please input the password for this gate (use 'none' to reset):", "Submit", "Back");
  36948. }
  36949. else
  36950. {
  36951. if (!strcmp(inputtext, "none", true)) {
  36952. Gates[gate][gPassword][0] = 0;
  36953. } else {
  36954. strcpy(Gates[gate][gPassword], inputtext, 64);
  36955. }
  36956. SaveGate(gate);
  36957. SendInfoMessage(playerid, "You have set the password of gate %i to '%s'.", gate, inputtext);
  36958. }
  36959. }
  36960. else
  36961. {
  36962. ShowGateEditMenu(playerid, gate);
  36963. }
  36964. return 1;
  36965. }
  36966. Dialog:GateFaction(playerid, response, listitem, inputtext[])
  36967. {
  36968. new
  36969. gate = Players[playerid][pSelected];
  36970. if (!IsValidGateID(gate))
  36971. {
  36972. return 0;
  36973. }
  36974. if (response)
  36975. {
  36976. new faction;
  36977. if (sscanf(inputtext, "i", faction))
  36978. {
  36979. return Dialog_Show(playerid, GateFaction, DIALOG_STYLE_INPUT, "{FFFFFF}Gate Faction", "Please input the faction ID for this gate (use -1 to reset):", "Submit", "Back");
  36980. }
  36981. else
  36982. {
  36983. if (faction != INVALID_ID && !IsValidFactionID(faction))
  36984. {
  36985. return Dialog_Show(playerid, GateFaction, DIALOG_STYLE_INPUT, "{FFFFFF}Gate Faction", "You have specified an invalid faction ID.\n\nPlease input the faction ID for this gate (use -1 to reset):", "Submit", "Back");
  36986. }
  36987. else
  36988. {
  36989. if (faction == INVALID_ID)
  36990. {
  36991. Gates[gate][gFactionID] = 0;
  36992. SaveGate(gate);
  36993. SendInfoMessage(playerid, "You have reset the faction of gate %i.", gate);
  36994. }
  36995. else
  36996. {
  36997. Gates[gate][gFactionID] = Factions[faction][fcID];
  36998. SaveGate(gate);
  36999. SendInfoMessage(playerid, "You have set the faction of gate %i to %s.", gate, Factions[faction][fcName]);
  37000. }
  37001. }
  37002. }
  37003. }
  37004. else
  37005. {
  37006. ShowGateEditMenu(playerid, gate);
  37007. }
  37008. return 1;
  37009. }
  37010. Dialog:GateSpeed(playerid, response, listitem, inputtext[])
  37011. {
  37012. new
  37013. gate = Players[playerid][pSelected];
  37014. if (!IsValidGateID(gate))
  37015. {
  37016. return 0;
  37017. }
  37018. if (response)
  37019. {
  37020. new Float:speed;
  37021. if (sscanf(inputtext, "f", speed))
  37022. {
  37023. return Dialog_Show(playerid, GateSpeed, DIALOG_STYLE_INPUT, "{FFFFFF}Gate Speed", "Please input the speed to set for this gate below:", "Submit", "Cancel");
  37024. }
  37025. else if (speed < 0.0 || speed > 20.0)
  37026. {
  37027. return Dialog_Show(playerid, GateSpeed, DIALOG_STYLE_INPUT, "{FFFFFF}Gate Speed", "The speed must be between 0.0 and 20.0.\n\nPlease input the speed to set for this gate below:", "Submit", "Cancel");
  37028. }
  37029. else
  37030. {
  37031. Gates[gate][gSpeed] = speed;
  37032. SaveGate(gate);
  37033. SendInfoMessage(playerid, "You have set the speed of gate %i to %.1f.", gate, speed);
  37034. }
  37035. }
  37036. else
  37037. {
  37038. ShowGateEditMenu(playerid, gate);
  37039. }
  37040. return 1;
  37041. }
  37042. Dialog:GateLink(playerid, response, listitem, inputtext[])
  37043. {
  37044. new
  37045. gate = Players[playerid][pSelected];
  37046. if (!IsValidGateID(gate))
  37047. {
  37048. return 0;
  37049. }
  37050. if (response)
  37051. {
  37052. new gateid;
  37053. if (sscanf(inputtext, "i", gateid))
  37054. {
  37055. return Dialog_Show(playerid, GateLink, DIALOG_STYLE_INPUT, "{FFFFFF}Gate Linker", "Please input the ID of the gate to link to this one (use -1 to reset):", "Submit", "Cancel");
  37056. }
  37057. else
  37058. {
  37059. if (gateid != INVALID_ID && !IsValidFactionID(gateid))
  37060. {
  37061. return Dialog_Show(playerid, GateLink, DIALOG_STYLE_INPUT, "{FFFFFF}Gate Linker", "You have entered an invalid gate ID.\n\nPlease input the ID of the gate to link to this one (use -1 to reset):", "Submit", "Cancel");
  37062. }
  37063. else
  37064. {
  37065. if (gateid == INVALID_ID)
  37066. {
  37067. Gates[gate][gLinkID] = 0;
  37068. SaveGate(gate);
  37069. SendInfoMessage(playerid, "You have reset the linked ID of gate %i.", gate);
  37070. }
  37071. else
  37072. {
  37073. Gates[gate][gLinkID] = Gates[gateid][gID];
  37074. SaveGate(gate);
  37075. SendInfoMessage(playerid, "You have set the linked ID of gate %i to ID %i.", gate, gateid);
  37076. }
  37077. }
  37078. }
  37079. }
  37080. else
  37081. {
  37082. ShowGateEditMenu(playerid, gate);
  37083. }
  37084. return 1;
  37085. }
  37086. Dialog:GateRadius(playerid, response, listitem, inputtext[])
  37087. {
  37088. new
  37089. gate = Players[playerid][pSelected];
  37090. if (!IsValidGateID(gate))
  37091. {
  37092. return 0;
  37093. }
  37094. if (response)
  37095. {
  37096. new Float:radius;
  37097. if (sscanf(inputtext, "f", radius))
  37098. {
  37099. return Dialog_Show(playerid, GateRadius, DIALOG_STYLE_INPUT, "{FFFFFF}Gate Radius", "Please input the radius to set for this gate below:", "Submit", "Cancel");
  37100. }
  37101. else if (radius < 0.0 || radius > 15.0)
  37102. {
  37103. return Dialog_Show(playerid, GateRadius, DIALOG_STYLE_INPUT, "{FFFFFF}Gate Radius", "The radius must be between 0.0 and 15.0.\n\nPlease input the radius to set for this gate below:", "Submit", "Cancel");
  37104. }
  37105. else
  37106. {
  37107. Gates[gate][gRadius] = radius;
  37108. SaveGate(gate);
  37109. SendInfoMessage(playerid, "You have set the radius of gate %i to %.1f.", gate, radius);
  37110. }
  37111. }
  37112. else
  37113. {
  37114. ShowGateEditMenu(playerid, gate);
  37115. }
  37116. return 1;
  37117. }
  37118. Dialog:EditGate(playerid, response, listitem, inputtext[])
  37119. {
  37120. new
  37121. gate = Players[playerid][pSelected];
  37122. if (!IsValidGateID(gate))
  37123. {
  37124. return 0;
  37125. }
  37126. if (response)
  37127. {
  37128. switch (listitem)
  37129. {
  37130. case 0:
  37131. {
  37132. GetPlayerPos(playerid, Gates[gate][gSpawn][0], Gates[gate][gSpawn][1], Gates[gate][gSpawn][2]);
  37133. GetPlayerFacingAngle(playerid, Gates[gate][gSpawn][5]);
  37134. Gates[gate][gSpawn][3] = 0.0;
  37135. Gates[gate][gSpawn][4] = 0.0;
  37136. Gates[gate][gInterior] = GetPlayerInterior(playerid);
  37137. Gates[gate][gWorld] = GetPlayerVirtualWorld(playerid);
  37138. UpdateGate(gate);
  37139. SaveGate(gate);
  37140. SendAdminMessage(COLOR_RED, "Admin: %s has edited the location of gate %i.", ReturnNameEx(playerid, 0), gate);
  37141. }
  37142. case 1:
  37143. {
  37144. EditDynamicObjectEx(playerid, EDIT_TYPE_GATE, Gates[gate][gObject], gate);
  37145. SendInfoMessage(playerid, "Click on the disk icon to save changes.");
  37146. }
  37147. case 2:
  37148. {
  37149. EditDynamicObjectEx(playerid, EDIT_TYPE_GATE_MOVE, Gates[gate][gObject], gate);
  37150. SendInfoMessage(playerid, "Click on the disk icon to save changes.");
  37151. }
  37152. case 3:
  37153. {
  37154. Dialog_Show(playerid, GatePassword, DIALOG_STYLE_INPUT, "{FFFFFF}Gate Password", "Please input the password to set for this gate below (use 'none' to reset):", "Submit", "Back");
  37155. }
  37156. case 4:
  37157. {
  37158. Dialog_Show(playerid, GateFaction, DIALOG_STYLE_INPUT, "{FFFFFF}Gate Faction", "Please input the faction ID to set for this gate below (use -1 to reset):", "Submit", "Back");
  37159. }
  37160. case 5:
  37161. {
  37162. Dialog_Show(playerid, GateSpeed, DIALOG_STYLE_INPUT, "{FFFFFF}Gate Speed", "Please input the speed to set for this gate below:", "Submit", "Cancel");
  37163. }
  37164. case 6:
  37165. {
  37166. Dialog_Show(playerid, GateRadius, DIALOG_STYLE_INPUT, "{FFFFFF}Gate Radius", "Please input the radius to set for this gate below:", "Submit", "Cancel");
  37167. }
  37168. case 7:
  37169. {
  37170. Dialog_Show(playerid, GateLink, DIALOG_STYLE_INPUT, "{FFFFFF}Gate Linker", "Please input the ID of the gate to link to this one (use -1 to reset):", "Submit", "Cancel");
  37171. }
  37172. }
  37173. }
  37174. return 1;
  37175. }
  37176. Dialog:NewPassword(playerid, response, listitem, inputtext[])
  37177. {
  37178. if (response)
  37179. {
  37180. static
  37181. buffer[130]
  37182. ;
  37183. if (isnull(inputtext))
  37184. {
  37185. return Dialog_Show(playerid, NewPassword, DIALOG_STYLE_INPUT, "{FFFFFF}New Password", "Please input your new password below:", "Submit", "Cancel");
  37186. }
  37187. else
  37188. {
  37189. WP_Hash(buffer, sizeof(buffer), inputtext);
  37190. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET Pass = '%s' WHERE Username = '%s'", buffer, ReturnName(playerid));
  37191. mysql_tquery(gConnection, gExecute);
  37192. SendInfoMessage(playerid, "Your new password has been saved to your account.");
  37193. }
  37194. }
  37195. return 1;
  37196. }
  37197. Dialog:ChangePassword(playerid, response, listitem, inputtext[])
  37198. {
  37199. if (response)
  37200. {
  37201. static
  37202. buffer[130]
  37203. ;
  37204. if (isnull(inputtext))
  37205. {
  37206. return Dialog_Show(playerid, ChangePassword, DIALOG_STYLE_INPUT, "{FFFFFF}Change Password", "Please input your current account password:", "Submit", "Cancel");
  37207. }
  37208. else
  37209. {
  37210. WP_Hash(buffer, sizeof(buffer), inputtext);
  37211. format(gExecute, sizeof(gExecute), "SELECT ID FROM rp_accounts WHERE Username = '%s' AND Pass = '%s'", ReturnName(playerid), buffer);
  37212. mysql_tquery(gConnection, gExecute, "OnPlayerCheckPassword", "i", playerid);
  37213. }
  37214. }
  37215. return 1;
  37216. }
  37217. Dialog:UseBandage(playerid, response, listitem, inputtext[])
  37218. {
  37219. if (response)
  37220. {
  37221. new item = Players[playerid][pSelected];
  37222. switch (listitem)
  37223. {
  37224. case 0:
  37225. {
  37226. if (!Players[playerid][pBleeding])
  37227. {
  37228. SendErrorMessage(playerid, "You don't need to use this right now.");
  37229. }
  37230. else
  37231. {
  37232. Players[playerid][pBleeding] = 0;
  37233. ShowActionBubble(playerid, "* %s covers their wounds with a bandage.", ReturnNameEx(playerid));
  37234. RemoveItemValue(playerid, item, 1);
  37235. SendInfoMessage(playerid, "You have bandaged up your wounds.");
  37236. }
  37237. }
  37238. case 1:
  37239. {
  37240. Dialog_Show(playerid, BandagePlayer, DIALOG_STYLE_INPUT, "{FFFFFF}Bandage Player", "Please input the ID or name of the player to apply this bandage on:", "Submit", "Cancel");
  37241. }
  37242. }
  37243. }
  37244. return 1;
  37245. }
  37246. Dialog:BandagePlayer(playerid, response, listitem, inputtext[])
  37247. {
  37248. if (response)
  37249. {
  37250. new targetid, item = Players[playerid][pSelected];
  37251. if (sscanf(inputtext, "u", targetid))
  37252. {
  37253. return Dialog_Show(playerid, BandagePlayer, DIALOG_STYLE_INPUT, "{FFFFFF}Bandage Player", "Please input the ID or name of the player to apply this bandage on:", "Submit", "Cancel");
  37254. }
  37255. else if (!IsPlayerConnected(targetid))
  37256. {
  37257. return Dialog_Show(playerid, BandagePlayer, DIALOG_STYLE_INPUT, "{FFFFFF}Bandage Player", "You have specified an invalid player.\n\nPlease input the ID or name of the player to apply this bandage on:", "Submit", "Cancel");
  37258. }
  37259. else if (!IsPlayerInRangeOfPlayer(playerid, targetid))
  37260. {
  37261. return Dialog_Show(playerid, BandagePlayer, DIALOG_STYLE_INPUT, "{FFFFFF}Bandage Player", "You are not in range of that player.\n\nPlease input the ID or name of the player to apply this bandage on:", "Submit", "Cancel");
  37262. }
  37263. else if (!Players[targetid][pBleeding])
  37264. {
  37265. return Dialog_Show(playerid, BandagePlayer, DIALOG_STYLE_INPUT, "{FFFFFF}Bandage Player", "That player is not bleeding.\n\nPlease input the ID or name of the player to apply this bandage on:", "Submit", "Cancel");
  37266. }
  37267. else
  37268. {
  37269. Players[targetid][pBleeding] = 0;
  37270. ShowActionBubble(playerid, "* %s covers %s's wounds with a bandage.", ReturnNameEx(playerid), ReturnNameEx(targetid));
  37271. RemoveItemValue(playerid, item, 1);
  37272. SendInfoMessage(playerid, "You have bandaged up %s's wounds.", ReturnNameEx(targetid));
  37273. SendInfoMessage(targetid, "%s has bandaged up your wounds.", ReturnNameEx(playerid));
  37274. }
  37275. }
  37276. return 1;
  37277. }
  37278. Dialog:Teleports(playerid, response, listitem, inputtext[])
  37279. {
  37280. if (response)
  37281. {
  37282. new teleport = gListedItems[playerid][listitem];
  37283. GameTextForPlayer(playerid, Teleports[teleport][tpName], 6000, 1);
  37284. SetTeleportPos(playerid, Teleports[teleport][tpX], Teleports[teleport][tpY], Teleports[teleport][tpZ], Teleports[teleport][tpA], Teleports[teleport][tpInterior], Teleports[teleport][tpWorld]);
  37285. }
  37286. return 1;
  37287. }
  37288. Dialog:StaticBuildings(playerid, response, listitem, inputtext[])
  37289. {
  37290. if (response)
  37291. {
  37292. GameTextForPlayer(playerid, g_StaticBuildings[listitem][e_BuildingName], 6000, 1);
  37293. SetTeleportPos(playerid, g_StaticBuildings[listitem][e_SpawnX], g_StaticBuildings[listitem][e_SpawnY], g_StaticBuildings[listitem][e_SpawnZ], 0.0, 0, 0);
  37294. }
  37295. return 1;
  37296. }
  37297. Dialog:Teleport(playerid, response, listitem, inputtext[])
  37298. {
  37299. if (response)
  37300. {
  37301. switch (listitem)
  37302. {
  37303. case 0:
  37304. {
  37305. new success = ShowTeleportList(playerid);
  37306. if (!success)
  37307. {
  37308. SendErrorMessage(playerid, "There are no teleports to list.");
  37309. }
  37310. }
  37311. case 1:
  37312. {
  37313. static staticBuildings[sizeof(g_StaticBuildings) * 32];
  37314. if (isnull(staticBuildings))
  37315. {
  37316. for (new i = 0; i < sizeof(g_StaticBuildings); i ++) {
  37317. format(staticBuildings, sizeof(staticBuildings), "%s\n%s", staticBuildings, g_StaticBuildings[i][e_BuildingName]);
  37318. }
  37319. }
  37320. Dialog_Show(playerid, StaticBuildings, DIALOG_STYLE_LIST, "{FFFFFF}Static Buildings", staticBuildings, "Teleport", "Cancel");
  37321. }
  37322. case 2:
  37323. {
  37324. ShowInteriorList(playerid);
  37325. }
  37326. }
  37327. }
  37328. return 1;
  37329. }
  37330. Dialog:DeleteTeleports(playerid, response, listitem, inputtext[])
  37331. {
  37332. if (response)
  37333. {
  37334. new teleport = gListedItems[playerid][listitem];
  37335. if (Teleports[teleport][tpExists])
  37336. {
  37337. format(gExecute, sizeof(gExecute), "DELETE FROM rp_teleports WHERE tpID = %i", Teleports[teleport][tpID]);
  37338. mysql_tquery(gConnection, gExecute);
  37339. Teleports[teleport][tpExists] = 0;
  37340. SendInfoMessage(playerid, "You have deleted teleport %s.", Teleports[teleport][tpName]);
  37341. }
  37342. }
  37343. return 1;
  37344. }
  37345. Dialog:MedicEquipment(playerid, response, listitem, inputtext[])
  37346. {
  37347. /*if (!IsPlayerInRangeOfLocker(playerid))
  37348. {
  37349. return 0;
  37350. }*/
  37351. if (response)
  37352. {
  37353. switch (listitem)
  37354. {
  37355. case 0:
  37356. {
  37357. if (!IsSufficientSpace(playerid, "Bandages"))
  37358. {
  37359. SendErrorMessage(playerid, "There is no more room in your inventory.");
  37360. }
  37361. else
  37362. {
  37363. ShowLockerEquipmentMenu(playerid);
  37364. AddItemToInventory(playerid, "Bandages", 10);
  37365. SendInfoMessage(playerid, "You have taken a pack of 10 bandages from the locker.");
  37366. }
  37367. }
  37368. case 1:
  37369. {
  37370. if (!IsSufficientSpace(playerid, "Medical Kit"))
  37371. {
  37372. SendErrorMessage(playerid, "There is no more room in your inventory.");
  37373. }
  37374. else
  37375. {
  37376. ShowLockerEquipmentMenu(playerid);
  37377. AddItemToInventory(playerid, "Medical Kit");
  37378. SendInfoMessage(playerid, "You have taken a medical kit from the locker.");
  37379. }
  37380. }
  37381. case 2:
  37382. {
  37383. if (GetPlayerArmourEx(playerid) > 50.0)
  37384. {
  37385. SendErrorMessage(playerid, "You are already wearing armor.");
  37386. }
  37387. else
  37388. {
  37389. ShowLockerEquipmentMenu(playerid);
  37390. SetPlayerValidArmor(playerid, 50.0);
  37391. SendInfoMessage(playerid, "You have received a kevlar vest from the armory.");
  37392. }
  37393. }
  37394. case 3:
  37395. {
  37396. if (!IsSufficientSpace(playerid, "Fire Extinguisher"))
  37397. {
  37398. SendErrorMessage(playerid, "There is no more room in your inventory.");
  37399. }
  37400. else
  37401. {
  37402. ShowLockerEquipmentMenu(playerid);
  37403. AddItemToInventory(playerid, "Fire Extinguisher", 2000);
  37404. SendInfoMessage(playerid, "You have taken a fire extinguisher from the locker.");
  37405. }
  37406. }
  37407. case 4:
  37408. {
  37409. if (!IsSufficientSpace(playerid, "Painkillers"))
  37410. {
  37411. SendErrorMessage(playerid, "There is no more room in your inventory.");
  37412. }
  37413. else
  37414. {
  37415. ShowLockerEquipmentMenu(playerid);
  37416. AddItemToInventory(playerid, "Painkillers", 10);
  37417. SendInfoMessage(playerid, "You have received a bottle of painkillers from the locker.");
  37418. }
  37419. }
  37420. case 5:
  37421. {
  37422. if (!IsSufficientSpace(playerid, "Pepper Spray"))
  37423. {
  37424. SendErrorMessage(playerid, "There is no more room in your inventory.");
  37425. }
  37426. else
  37427. {
  37428. ShowLockerEquipmentMenu(playerid);
  37429. AddItemToInventory(playerid, "Pepper Spray", 2000);
  37430. SendInfoMessage(playerid, "You have received a can of pepper spray from the armory.");
  37431. }
  37432. }
  37433. case 6:
  37434. {
  37435. if (!IsSufficientSpace(playerid, "Portable Radio"))
  37436. {
  37437. SendErrorMessage(playerid, "There is no more room in your inventory.");
  37438. }
  37439. else
  37440. {
  37441. ShowLockerEquipmentMenu(playerid);
  37442. AddItemToInventory(playerid, "Portable Radio");
  37443. SendInfoMessage(playerid, "You have received a can of pepper spray from the armory.");
  37444. }
  37445. }
  37446. }
  37447. }
  37448. else
  37449. {
  37450. ShowLockerMenu(playerid);
  37451. }
  37452. return 1;
  37453. }
  37454. Dialog:LEOClothes(playerid, response, listitem, inputtext[])
  37455. {
  37456. if(response)
  37457. {
  37458. switch(listitem)
  37459. {
  37460. case 0:
  37461. {
  37462. if(HasAttachedObject(playerid, 19773)) return SCM(playerid, COLOR_LIGHTRED, "You already have a Holster!");
  37463. for(new i = 0; i < MAX_PLAYER_ATTACHED_OBJECTS; i++)
  37464. {
  37465. if(!IsPlayerAttachedObjectSlotUsed(playerid, i))
  37466. {
  37467. SetPlayerAttachedObject(playerid, i, 19773, 8, 0.152, 0.0, -0.01, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0xFFFFFFFF);
  37468. EditAttachedObject(playerid, i);
  37469. PoliceObjects[playerid][i] = 19773;
  37470. SetIntVar(playerid, "EditingPolice", 1);
  37471. }
  37472. }
  37473. }
  37474. case 1:
  37475. {
  37476. if(HasAttachedObject(playerid, 18636)) return SCM(playerid, COLOR_LIGHTRED, "You already have this hat.");
  37477. for(new i = 0; i < MAX_PLAYER_ATTACHED_OBJECTS; i++)
  37478. {
  37479. if(!IsPlayerAttachedObjectSlotUsed(playerid, i))
  37480. {
  37481. SetPlayerAttachedObject(playerid, i, 18636, 2, 0.152, 0.0, -0.01, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0xFFFFFFFF);
  37482. EditAttachedObject(playerid, i);
  37483. PoliceObjects[playerid][i] = 18636;
  37484. SetIntVar(playerid, "EditingPolice", 1);
  37485. return 1;
  37486. }
  37487. }
  37488. }
  37489. case 2:
  37490. {
  37491. if(HasAttachedObject(playerid, 19099)) return SCM(playerid, COLOR_LIGHTRED, "You already have this hat.");
  37492. for(new i = 0; i < MAX_PLAYER_ATTACHED_OBJECTS; i++)
  37493. {
  37494. if(!IsPlayerAttachedObjectSlotUsed(playerid, i))
  37495. {
  37496. SetPlayerAttachedObject(playerid, i, 19099, 2, 0.152, 0.0, -0.01, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0xFFFFFFFF);
  37497. EditAttachedObject(playerid, i);
  37498. PoliceObjects[playerid][i] = 19099;
  37499. SetIntVar(playerid, "EditingPolice", 1);
  37500. return 1;
  37501. }
  37502. }
  37503. }
  37504. case 3:
  37505. {
  37506. if(HasAttachedObject(playerid, 19100)) return SCM(playerid, COLOR_LIGHTRED, "You already have this hat.");
  37507. for(new i = 0; i < MAX_PLAYER_ATTACHED_OBJECTS; i++)
  37508. {
  37509. if(!IsPlayerAttachedObjectSlotUsed(playerid, i))
  37510. {
  37511. SetPlayerAttachedObject(playerid, i, 19100, 2, 0.152, 0.0, -0.01, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0xFFFFFFFF);
  37512. EditAttachedObject(playerid, i);
  37513. PoliceObjects[playerid][i] = 19100;
  37514. SetIntVar(playerid, "EditingPolice", 1);
  37515. return 1;
  37516. }
  37517. }
  37518. }
  37519. case 4:
  37520. {
  37521. if(HasAttachedObject(playerid, 19161)) return SCM(playerid, COLOR_LIGHTRED, "You already have this hat.");
  37522. for(new i = 0; i < MAX_PLAYER_ATTACHED_OBJECTS; i++)
  37523. {
  37524. if(!IsPlayerAttachedObjectSlotUsed(playerid, i))
  37525. {
  37526. SetPlayerAttachedObject(playerid, i, 19161, 2, 0.152, 0.0, -0.01, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0xFFFFFFFF);
  37527. EditAttachedObject(playerid, i);
  37528. PoliceObjects[playerid][i] = 19161;
  37529. SetIntVar(playerid, "EditingPolice", 1);
  37530. return 1;
  37531. }
  37532. }
  37533. }
  37534. case 5:
  37535. {
  37536. if(HasAttachedObject(playerid, 19162)) return SCM(playerid, COLOR_LIGHTRED, "You already have this hat.");
  37537. for(new i = 0; i < MAX_PLAYER_ATTACHED_OBJECTS; i++)
  37538. {
  37539. if(!IsPlayerAttachedObjectSlotUsed(playerid, i))
  37540. {
  37541. SetPlayerAttachedObject(playerid, i, 19162, 2, 0.152, 0.0, -0.01, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0xFFFFFFFF);
  37542. EditAttachedObject(playerid, i);
  37543. PoliceObjects[playerid][i] = 19162;
  37544. SetIntVar(playerid, "EditingPolice", 1);
  37545. return 1;
  37546. }
  37547. }
  37548. }
  37549. case 6:
  37550. {
  37551. if(HasAttachedObject(playerid, 19521)) return SCM(playerid, COLOR_LIGHTRED, "You already have this hat.");
  37552. for(new i = 0; i < MAX_PLAYER_ATTACHED_OBJECTS; i++)
  37553. {
  37554. if(!IsPlayerAttachedObjectSlotUsed(playerid, i))
  37555. {
  37556. SetPlayerAttachedObject(playerid, i, 19521, 2, 0.152, 0.0, -0.01, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0xFFFFFFFF);
  37557. EditAttachedObject(playerid, i);
  37558. PoliceObjects[playerid][i] = 19521;
  37559. SetIntVar(playerid, "EditingPolice", 1);
  37560. return 1;
  37561. }
  37562. }
  37563. }
  37564. case 7:
  37565. {
  37566. if(HasAttachedObject(playerid, 19141)) return SCM(playerid, COLOR_LIGHTRED, "You already have this hat.");
  37567. for(new i = 0; i < MAX_PLAYER_ATTACHED_OBJECTS; i++)
  37568. {
  37569. if(!IsPlayerAttachedObjectSlotUsed(playerid, i))
  37570. {
  37571. SetPlayerAttachedObject(playerid, i, 19141, 1, 0.071999, 0.02, 0.0, 0.0, 0.0, 0.0, 0.881, 1.0, 0.719999);
  37572. EditAttachedObject(playerid, i);
  37573. PoliceObjects[playerid][i] = 19141;
  37574. SetIntVar(playerid, "EditingPolice", 1);
  37575. return 1;
  37576. }
  37577. }
  37578. }
  37579. case 8:
  37580. {
  37581. if(HasAttachedObject(playerid, 19142)) return SCM(playerid, COLOR_LIGHTRED, "You already have this hat.");
  37582. for(new i = 0; i < MAX_PLAYER_ATTACHED_OBJECTS; i++)
  37583. {
  37584. if(!IsPlayerAttachedObjectSlotUsed(playerid, i))
  37585. {
  37586. SetPlayerAttachedObject(playerid, i, 19142, 1, 0.071999, 0.02, 0.0, 0.0, 0.0, 0.0, 0.881, 1.0, 0.719999);
  37587. EditAttachedObject(playerid, i);
  37588. PoliceObjects[playerid][i] = 19142;
  37589. SetIntVar(playerid, "EditingPolice", 1);
  37590. return 1;
  37591. }
  37592. }
  37593. }
  37594. case 9:
  37595. {
  37596. if(HasAttachedObject(playerid, 18637)) return SCM(playerid, COLOR_LIGHTRED, "You already have this hat.");
  37597. for(new i = 0; i < MAX_PLAYER_ATTACHED_OBJECTS; i++)
  37598. {
  37599. if(!IsPlayerAttachedObjectSlotUsed(playerid, i))
  37600. {
  37601. SetPlayerAttachedObject(playerid, i, 18637, 6, 0.071999, 0.02, 0.0, 0.0, 0.0, 0.0, 0.881, 1.0, 0.719999);
  37602. EditAttachedObject(playerid, i);
  37603. PoliceObjects[playerid][i] = 18637;
  37604. SetIntVar(playerid, "EditingPolice", 1);
  37605. return 1;
  37606. }
  37607. }
  37608. }
  37609. case 10:
  37610. {
  37611. for(new i = 0; i < MAX_PLAYER_ATTACHED_OBJECTS; i++)
  37612. {
  37613. if(IsPlayerAttachedObjectSlotUsed(playerid, i))
  37614. {
  37615. RemovePlayerAttachedObject(playerid, i);
  37616. PoliceObjects[playerid][i] = INVALID_OBJECT_ID;
  37617. }
  37618. }
  37619. }
  37620. }
  37621. }
  37622. return 1;
  37623. }
  37624. Dialog:PoliceEquipment(playerid, response, listitem, inputtext[])
  37625. {
  37626. /*if (!IsPlayerInRangeOfLocker(playerid))
  37627. {
  37628. return 0;
  37629. }*/
  37630. if (response)
  37631. {
  37632. switch (listitem)
  37633. {
  37634. case 0:
  37635. {
  37636. if (!IsSufficientSpace(playerid, "Medical Kit"))
  37637. {
  37638. SendErrorMessage(playerid, "There is no more room in your inventory.");
  37639. }
  37640. else
  37641. {
  37642. ShowLockerEquipmentMenu(playerid);
  37643. AddItemToInventory(playerid, "Medical Kit");
  37644. SendInfoMessage(playerid, "You have received a medical kit from the armory.");
  37645. }
  37646. }
  37647. /*case 1:
  37648. {
  37649. if (GetPlayerArmourEx(playerid) > 99.0)
  37650. {
  37651. SendErrorMessage(playerid, "You are already wearing armor.");
  37652. }
  37653. else
  37654. {
  37655. ShowLockerEquipmentMenu(playerid);
  37656. SetPlayerValidArmor(playerid, 99.0);
  37657. SendInfoMessage(playerid, "You have received a kevlar vest from the armory.");
  37658. }
  37659. }*/
  37660. case 1:
  37661. {
  37662. if (!IsSufficientSpace(playerid, "Armor"))
  37663. {
  37664. SendErrorMessage(playerid, "There is no more room in your inventory.");
  37665. }
  37666. else if(GetInventoryItemID(playerid, "Armor") != INVALID_ID) {
  37667. return SendErrorMessage(playerid, "You already have Armor.");
  37668. } else
  37669. {
  37670. ShowLockerEquipmentMenu(playerid);
  37671. AddItemToInventory(playerid, "Armor", 100);
  37672. SendInfoMessage(playerid, "You have received armor from the armory.");
  37673. }
  37674. }
  37675. case 2:
  37676. {
  37677. if (!IsSufficientSpace(playerid, "Nightstick"))
  37678. {
  37679. SendErrorMessage(playerid, "There is no more room in your inventory.");
  37680. }
  37681. else if(GetInventoryItemID(playerid, "Nightstick") != INVALID_ID) {
  37682. return SendErrorMessage(playerid, "You already have a Nightstick.");
  37683. } else
  37684. {
  37685. ShowLockerEquipmentMenu(playerid);
  37686. AddItemToInventory(playerid, "Nightstick");
  37687. SendInfoMessage(playerid, "You have received a nightstick from the armory.");
  37688. }
  37689. }
  37690. case 3:
  37691. {
  37692. if (!IsSufficientSpace(playerid, "Pepper Spray"))
  37693. {
  37694. SendErrorMessage(playerid, "There is no more room in your inventory.");
  37695. }
  37696. else if(GetInventoryItemID(playerid, "Pepper Spray") != INVALID_ID) {
  37697. return SendErrorMessage(playerid, "You already have a Pepper Spray");
  37698. } else
  37699. {
  37700. ShowLockerEquipmentMenu(playerid);
  37701. AddItemToInventory(playerid, "Pepper Spray", 2000);
  37702. SendInfoMessage(playerid, "You have received a can of pepper spray from the armory.");
  37703. }
  37704. }
  37705. case 4:
  37706. {
  37707. if (!IsSufficientSpace(playerid, "Desert Eagle"))
  37708. {
  37709. SendErrorMessage(playerid, "There is no more room in your inventory.");
  37710. } else if(GetInventoryItemID(playerid, "Desert Eagle") != INVALID_ID) {
  37711. return SendErrorMessage(playerid, "You already have a Desert Eagle.");
  37712. } else {
  37713. new serial = Random(10000, 99999);
  37714. new fac[32];
  37715. format(fac,sizeof(fac),"%s Armory",GetInitials(GetPlayerFactionName(playerid)));
  37716. ShowLockerEquipmentMenu(playerid);
  37717. AddItemToInventory(playerid, "Desert Eagle", 100, serial);
  37718. AddSerialToRegistry(serial, "Desert Eagle", ReturnName(playerid), fac);
  37719. SendInfoMessage(playerid, "You have received a Desert Eagle with 100 ammo from the armory.");
  37720. }
  37721. }
  37722. case 5:
  37723. {
  37724. if (!IsSufficientSpace(playerid, "Shotgun"))
  37725. {
  37726. SendErrorMessage(playerid, "There is no more room in your inventory.");
  37727. } else if(GetInventoryItemID(playerid, "Shotgun") != INVALID_ID) {
  37728. return SendErrorMessage(playerid, "You already have a Shotgun.");
  37729. } else {
  37730. new serial = Random(10000, 99999);
  37731. new fac[32];
  37732. format(fac,sizeof(fac),"%s Armory",GetInitials(GetPlayerFactionName(playerid)));
  37733. ShowLockerEquipmentMenu(playerid);
  37734. AddItemToInventory(playerid, "Shotgun", 75, serial);
  37735. AddSerialToRegistry(serial, "Shotgun", ReturnName(playerid), fac);
  37736. SendInfoMessage(playerid, "You have received a Shotgun with 75 ammo from the armory.");
  37737. }
  37738. }
  37739. case 6:
  37740. {
  37741. if (!IsSufficientSpace(playerid, "MP5"))
  37742. {
  37743. SendErrorMessage(playerid, "There is no more room in your inventory.");
  37744. }
  37745. else if(GetInventoryItemID(playerid, "MP5") != INVALID_ID) {
  37746. return SendErrorMessage(playerid, "You already have a MP5.");
  37747. } else
  37748. {
  37749. new serial = Random(10000, 99999);
  37750. new fac[32];
  37751. format(fac,sizeof(fac),"%s Armory",GetInitials(GetPlayerFactionName(playerid)));
  37752. ShowLockerEquipmentMenu(playerid);
  37753. AddItemToInventory(playerid, "MP5", 180, serial);
  37754. AddSerialToRegistry(serial, "MP5", ReturnName(playerid), fac);
  37755. SendInfoMessage(playerid, "You have received a MP5 with 180 ammo from the armory.");
  37756. }
  37757. }
  37758. case 7:
  37759. {
  37760. if (!IsSufficientSpace(playerid, "M16"))
  37761. {
  37762. SendErrorMessage(playerid, "There is no more room in your inventory.");
  37763. }
  37764. else if(GetInventoryItemID(playerid, "M16") != INVALID_ID) {
  37765. return SendErrorMessage(playerid, "You already have a M16.");
  37766. } else
  37767. {
  37768. new serial = Random(10000, 99999);
  37769. new fac[32];
  37770. format(fac,sizeof(fac),"%s Armory",GetInitials(GetPlayerFactionName(playerid)));
  37771. ShowLockerEquipmentMenu(playerid);
  37772. AddItemToInventory(playerid, "M16", 250, serial);
  37773. AddSerialToRegistry(serial, "M16", ReturnName(playerid), fac);
  37774. SendInfoMessage(playerid, "You have received a M4 with 250 ammo from the armory.");
  37775. }
  37776. }
  37777. case 8:
  37778. {
  37779. if (!IsSufficientSpace(playerid, "Sniper Rifle"))
  37780. {
  37781. SendErrorMessage(playerid, "There is no more room in your inventory.");
  37782. }
  37783. else if(GetInventoryItemID(playerid, "Sniper Rifle") != INVALID_ID) {
  37784. return SendErrorMessage(playerid, "You already have a Sniper Rifle.");
  37785. } else
  37786. {
  37787. new serial = Random(10000, 99999);
  37788. new fac[32];
  37789. format(fac,sizeof(fac),"%s Armory",GetInitials(GetPlayerFactionName(playerid)));
  37790. ShowLockerEquipmentMenu(playerid);
  37791. AddItemToInventory(playerid, "Sniper Rifle", 75, serial);
  37792. AddSerialToRegistry(serial, "Sniper Rifle", ReturnName(playerid), fac);
  37793. SendInfoMessage(playerid, "You have received a Sniper with 75 ammo from the armory.");
  37794. }
  37795. }
  37796. case 9:
  37797. {
  37798. if (!IsSufficientSpace(playerid, "Portable Radio"))
  37799. {
  37800. SendErrorMessage(playerid, "There is no more room in your inventory.");
  37801. }
  37802. else
  37803. {
  37804. ShowLockerEquipmentMenu(playerid);
  37805. AddItemToInventory(playerid,"Portable Radio", 0);
  37806. SendInfoMessage(playerid, "You have received a portable radio from the armory.");
  37807. }
  37808. }
  37809. case 10:
  37810. {
  37811. if (!IsSufficientSpace(playerid, "Cuffs"))
  37812. {
  37813. SendErrorMessage(playerid, "There is no more room in your inventory.");
  37814. }
  37815. else
  37816. {
  37817. ShowLockerEquipmentMenu(playerid);
  37818. AddItemToInventory(playerid,"Cuffs");
  37819. SendInfoMessage(playerid, "You have received a pair of cuffs from the armory.");
  37820. }
  37821. }
  37822. case 11:
  37823. {
  37824. if (!IsSufficientSpace(playerid, "Cuff Keys"))
  37825. {
  37826. SendErrorMessage(playerid, "There is no more room in your inventory.");
  37827. }
  37828. else
  37829. {
  37830. ShowLockerEquipmentMenu(playerid);
  37831. AddItemToInventory(playerid,"Cuff Keys");
  37832. SendInfoMessage(playerid, "You have received a pair of keys from the armory.");
  37833. }
  37834. }
  37835. /*case 12:
  37836. {
  37837. if (!IsSufficientSpace(playerid, "Taser"))
  37838. {
  37839. SendErrorMessage(playerid, "There is no more room in your inventory.");
  37840. }
  37841. else
  37842. {
  37843. ShowLockerEquipmentMenu(playerid);
  37844. AddItemToInventory(playerid, "Taser");
  37845. SendInfoMessage(playerid, "You have received a taser from the armory.");
  37846. }
  37847. }*/
  37848. }
  37849. }
  37850. else
  37851. {
  37852. ShowLockerMenu(playerid);
  37853. }
  37854. return 1;
  37855. }
  37856. Dialog:Locker(playerid, response, listitem, inputtext[])
  37857. {
  37858. if (response)
  37859. {
  37860. switch (listitem)
  37861. {
  37862. case 0: //Nightstick, Pepper Spray, MP5, M4, Sniper Rifle
  37863. {
  37864. Players[playerid][pDuty] = !Players[playerid][pDuty];
  37865. if (Players[playerid][pDuty])
  37866. {
  37867. SendFactionMessage(Players[playerid][pFaction],COLOR_RADIO,"** HQ: %s %s is now on duty.", GetPlayerFactionRank(playerid), ReturnNameEx(playerid,0));
  37868. SendInfoMessage(playerid, "You have clocked in and you are now on duty.");
  37869. ShowLockerMenu(playerid);
  37870. }
  37871. else
  37872. {
  37873. SetPlayerValidArmor(playerid, 0.0);
  37874. SendFactionMessage(Players[playerid][pFaction],COLOR_RADIO,"** HQ: %s %s is now off duty.", GetPlayerFactionRank(playerid), ReturnNameEx(playerid,0));
  37875. SendInfoMessage(playerid, "You have clocked out and returned all of your equipment to the armory.");
  37876. RemoveEquipment(playerid);
  37877. ShowLockerMenu(playerid);
  37878. }
  37879. }
  37880. case 1:
  37881. {
  37882. if(Players[playerid][pUniform] != INVALID_ID)
  37883. {
  37884. Players[playerid][pSkin] = Players[playerid][pUniform];
  37885. Players[playerid][pUniform] = INVALID_ID;
  37886. SendInfoMessage(playerid, "You have put on your clothes.");
  37887. ShowActionBubble(playerid, "* %s takes their clothes from the locker.", ReturnNameEx(playerid));
  37888. SetPlayerSkin(playerid, Players[playerid][pSkin]);
  37889. ShowLockerMenu(playerid);
  37890. }
  37891. else
  37892. {
  37893. new index = GetFirstUniform(Players[playerid][pFaction]);
  37894. if (index == INVALID_ID)
  37895. {
  37896. SendErrorMessage(playerid, "There are no uniforms setup for this faction.");
  37897. }
  37898. else
  37899. {
  37900. SetupUniformSelection(playerid);
  37901. SendInfoMessage(playerid, "Use the arrow keys to browse between uniforms. Press ~k~~VEHICLE_ENTER_EXIT~ to confirm and N to cancel.");
  37902. }
  37903. }
  37904. }
  37905. case 2:
  37906. {
  37907. ShowLockerEquipmentMenu(playerid);
  37908. }
  37909. case 3:
  37910. {
  37911. // YOU'RE NEXT!
  37912. //Dialog_Show(playerid, LEOClothes, DIALOG_STYLE_LIST, "Police Accessories", "Holster\nPolice Cap 1\nPolice Cap 2\nPolice Cap 3\nPolice Hat 1\nPolice Hat 2\nPolice Hat 3\nPolice Helmet\nPolice Armor\nPolice Shield\nRemove Accessories", "Wear", "Cancel");
  37913. ShowLockerAccessoryMenu(playerid);
  37914. }
  37915. case 4:
  37916. {
  37917. RemoveEquipment(playerid);
  37918. SendInfoMessage(playerid, "You have returned all of your equipment to the armory.");
  37919. }
  37920. }
  37921. }
  37922. return 1;
  37923. }
  37924. Dialog:ListWarrants(playerid, response, listitem, inputtext[])
  37925. {
  37926. if (response)
  37927. {
  37928. new
  37929. targetid = gListedItems[playerid][listitem],
  37930. Float:x,
  37931. Float:y,
  37932. Float:z;
  37933. if (IsPlayerConnected(targetid) && Players[targetid][pWarrants] > 0)
  37934. {
  37935. if (!GetPlayerPosEx(targetid, x, y, z))
  37936. {
  37937. SendErrorMessage(playerid, "The GPS could not determine their last known location.");
  37938. }
  37939. else
  37940. {
  37941. SetCheckpoint(playerid, CHECKPOINT_GPS, x, y, z, 3.0);
  37942. SendInfoMessage(playerid, "A waypoint has been set to %s's last known location.", ReturnNameEx(targetid, 0));
  37943. }
  37944. }
  37945. }
  37946. return 1;
  37947. }
  37948. Dialog:PlateInfo(playerid, response, listitem, inputtext[])
  37949. {
  37950. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  37951. {
  37952. return 0;
  37953. }
  37954. if (response)
  37955. {
  37956. /*new Float:x, Float:y, Float:z;
  37957. GetVehiclePos(Vehicles[Players[playerid][pSelected]][vVehicle], x, y, z);
  37958. SetCheckpoint(playerid, CHECKPOINT_GPS, x, y, z, 3.0);
  37959. SendInfoMessage(playerid, "A waypoint has been set to the vehicle's last known location.");*/
  37960. ShowNewMDCMenu(playerid);
  37961. }
  37962. return 1;
  37963. }
  37964. Dialog:HouseInfo(playerid, response, listitem, inputtext[])
  37965. {
  37966. if (response)
  37967. {
  37968. SetCheckpoint(playerid, CHECKPOINT_GPS, Houses[ Players[playerid][pSelected] ][hSpawn][0], Houses[ Players[playerid][pSelected] ][hSpawn][1], Houses[ Players[playerid][pSelected] ][hSpawn][2], 3.0);
  37969. SendInfoMessage(playerid, "A waypoint has been set to the house.");
  37970. }
  37971. return 1;
  37972. }
  37973. Dialog:FindAddress(playerid, response, listitem, inputtext[])
  37974. {
  37975. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  37976. {
  37977. return 0;
  37978. }
  37979. if (response)
  37980. {
  37981. new address[32];
  37982. if (sscanf(inputtext, "s[32]", address))
  37983. {
  37984. return Dialog_Show(playerid, FindAddress, DIALOG_STYLE_INPUT, "{FFFFFF}Find Address", "Please input the address of the house to trace:", "Submit", "Cancel");
  37985. }
  37986. else
  37987. {
  37988. for (new i = 0; i < MAX_HOUSES; i ++)
  37989. {
  37990. if (IsValidHouseID(i) && !strcmp(Houses[i][hAddress], address, true))
  37991. {
  37992. SetCheckpoint(playerid, CHECKPOINT_GPS, Houses[i][hSpawn][0], Houses[i][hSpawn][1], Houses[i][hSpawn][2], 3.0);
  37993. SendInfoMessage(playerid, "A waypoint has been set to the house at %s.", Houses[i][hAddress]);
  37994. return 1;
  37995. }
  37996. }
  37997. Dialog_Show(playerid, FindAddress, DIALOG_STYLE_INPUT, "{FFFFFF}Find Address", "The specified address is not in use.\n\nPlease input the address of the house to trace:", "Submit", "Cancel");
  37998. }
  37999. }
  38000. else
  38001. {
  38002. ShowMDCMainMenu(playerid);
  38003. }
  38004. return 1;
  38005. }
  38006. Dialog:MDC_AddressSearch(playerid, response, listitem, inputtext[])
  38007. {
  38008. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  38009. {
  38010. return 0;
  38011. }
  38012. if (response)
  38013. {
  38014. new address[32];
  38015. if (sscanf(inputtext, "s[32]", address))
  38016. {
  38017. return Dialog_Show(playerid, MDC_AddressSearch, DIALOG_STYLE_INPUT, "{FFFFFF}Mobile Data Computer - Address Search", "Please enter the full address:", "Submit", "Cancel");
  38018. }
  38019. else
  38020. {
  38021. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_houses WHERE hAddress = '%s'", address);
  38022. mysql_tquery(gConnection, gExecute, "OnPlayerTraceAddress", "is", playerid, address);
  38023. }
  38024. }
  38025. else
  38026. {
  38027. ShowNewMDCMenu(playerid);
  38028. }
  38029. return 1;
  38030. }
  38031. Dialog:TraceSerial(playerid, response, listitem, inputtext[])
  38032. {
  38033. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  38034. {
  38035. return 0;
  38036. }
  38037. if (response)
  38038. {
  38039. new serial;
  38040. if (sscanf(inputtext, "i", serial))
  38041. {
  38042. return Dialog_Show(playerid, TraceSerial, DIALOG_STYLE_INPUT, "{FFFFFF}Trace Serial", "Please input the serial number of the weapon to trace:", "Submit", "Cancel");
  38043. }
  38044. else
  38045. {
  38046. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_serials WHERE Serial = %i", serial);
  38047. mysql_tquery(gConnection, gExecute, "OnPlayerTraceSerial", "ii", playerid, serial);
  38048. }
  38049. }
  38050. else
  38051. {
  38052. ShowMDCMainMenu(playerid);
  38053. }
  38054. return 1;
  38055. }
  38056. Dialog:MDC_SerialSearch(playerid, response, listitem, inputtext[])
  38057. {
  38058. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  38059. {
  38060. return 0;
  38061. }
  38062. if (response)
  38063. {
  38064. new serial;
  38065. if (sscanf(inputtext, "i", serial))
  38066. {
  38067. return Dialog_Show(playerid, MDC_SerialSearch, DIALOG_STYLE_INPUT, "{FFFFFF}Mobile Data Computer - Serial Search", "Please enter the full serial number:", "Submit", "Cancel");
  38068. }
  38069. else
  38070. {
  38071. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_serials WHERE Serial = %i", serial);
  38072. mysql_tquery(gConnection, gExecute, "OnPlayerTraceSerial", "ii", playerid, serial);
  38073. }
  38074. }
  38075. else
  38076. {
  38077. ShowNewMDCMenu(playerid);
  38078. }
  38079. return 1;
  38080. }
  38081. Dialog:MDC_PlateSearch(playerid, response, listitem, inputtext[])
  38082. {
  38083. if (response)
  38084. {
  38085. new plate[64], vehicle;
  38086. if(sscanf(inputtext, "s[64]", plate)) return Dialog_Show(playerid, MDC_PlateSearch, DIALOG_STYLE_INPUT, "{FFFFFF}Plate Search", "Please input the license plate of the vehicle to trace:", "Submit", "Cancel");
  38087. if(!GetVehicleFromPlate(plate)) return Dialog_Show(playerid, MDCVehicle, DIALOG_STYLE_INPUT, "Moblie Data Computer - Plate Search", "PLATE SEARCH\n\nInsert plate info:\n"EMBED_RED"Plate wasn't found on the database.", "Enter", "Escape");
  38088. vehicle = GetVehicleFromPlate(plate);
  38089. format(msg, sizeof(msg), "PLATE SEARCH RESULT\n\nVehicle plate: %s\nVehicle model: %s\nVehicle owner: %s\n\nAdditional information: No outstanding reports", Vehicles[vehicle][vPlate], GetVehicleModelName(Vehicles[vehicle][vModel]), Vehicles[vehicle][vOwner]);
  38090. Dialog_Show(playerid, MDCResult, DIALOG_STYLE_MSGBOX, "{FFFFFF}Mobile Data Computer - Plate Search", msg, "Print", "");
  38091. }
  38092. else
  38093. {
  38094. ShowNewMDCMenu(playerid);
  38095. }
  38096. /*if (isnull(inputtext) || strlen(inputtext) > 32)
  38097. {
  38098. return Dialog_Show(playerid, MDC_PlateSearch, DIALOG_STYLE_INPUT, "{FFFFFF}Trace Plate", "Please input the license plate of the vehicle to trace:", "Submit", "Cancel");
  38099. }
  38100. else
  38101. {
  38102. new vehicle = GetVehicleFromPlate(inputtext);
  38103. if (IsValidVehicleID(vehicle))
  38104. {
  38105. format(gExecute, sizeof(gExecute), "SELECT Username FROM rp_accounts WHERE ID = %d", Vehicles[vehicle][vOwner]);
  38106. mysql_tquery(gConnection, gExecute, "OnPlayerTracePlate", "iis", playerid, vehicle, inputtext);
  38107. }
  38108. else
  38109. {
  38110. Dialog_Show(playerid, MDC_PlateSearch, DIALOG_STYLE_INPUT, "{FFFFFF}Trace Plate", "The specified plate is not registered to any vehicle.\n\nPlease input the license plate of the vehicle to trace:", "Submit", "Cancel");
  38111. }
  38112. }
  38113. }
  38114. else
  38115. {
  38116. ShowNewMDCMenu(playerid);
  38117. }*/
  38118. return 1;
  38119. }
  38120. Dialog:TracePlate(playerid, response, listitem, inputtext[])
  38121. {
  38122. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  38123. {
  38124. return 0;
  38125. }
  38126. if (response)
  38127. {
  38128. if (isnull(inputtext) || strlen(inputtext) > 32)
  38129. {
  38130. return Dialog_Show(playerid, TracePlate, DIALOG_STYLE_INPUT, "{FFFFFF}Trace Plate", "Please input the license plate of the vehicle to trace:", "Submit", "Cancel");
  38131. }
  38132. else
  38133. {
  38134. new
  38135. vehicle = GetVehicleFromPlate(inputtext);
  38136. if (IsValidVehicleID(vehicle))
  38137. {
  38138. format(gExecute, sizeof(gExecute), "SELECT Username FROM rp_accounts WHERE ID = %i", Vehicles[vehicle][vOwner]);
  38139. mysql_tquery(gConnection, gExecute, "OnPlayerTracePlate", "iis", playerid, vehicle, inputtext);
  38140. }
  38141. else
  38142. {
  38143. Dialog_Show(playerid, TracePlate, DIALOG_STYLE_INPUT, "{FFFFFF}Trace Plate", "The specified plate is not registered to any vehicle.\n\nPlease input the license plate of the vehicle to trace:", "Submit", "Cancel");
  38144. }
  38145. }
  38146. }
  38147. else
  38148. {
  38149. ShowMDCMainMenu(playerid);
  38150. }
  38151. return 1;
  38152. }
  38153. Dialog:SerialInfo(playerid, response, listitem, inputtext[])
  38154. {
  38155. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  38156. {
  38157. return 0;
  38158. }
  38159. else
  38160. {
  38161. ShowMDCMainMenu(playerid);
  38162. }
  38163. return 1;
  38164. }
  38165. Dialog:MDCInfo(playerid, response, listitem, inputtext[])
  38166. {
  38167. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  38168. {
  38169. return 0;
  38170. }
  38171. else
  38172. {
  38173. ShowMDCPlayerMenu(playerid);
  38174. }
  38175. return 1;
  38176. }
  38177. Dialog:MDC_Info(playerid, response, listitem, inputtext[])
  38178. {
  38179. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  38180. {
  38181. return 0;
  38182. }
  38183. else
  38184. {
  38185. ShowMDCPlayerMenuNew(playerid);
  38186. }
  38187. return 1;
  38188. }
  38189. Dialog:Warrants(playerid, response, listitem, inputtext[])
  38190. {
  38191. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  38192. {
  38193. return 0;
  38194. }
  38195. else
  38196. {
  38197. ShowMDCPlayerMenuNew(playerid);
  38198. }
  38199. return 1;
  38200. }
  38201. Dialog:Charges(playerid, response, listitem, inputtext[])
  38202. {
  38203. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  38204. {
  38205. return 0;
  38206. }
  38207. else
  38208. {
  38209. ShowMDCPlayerMenuNew(playerid);
  38210. }
  38211. return 1;
  38212. }
  38213. /*
  38214. format(string, sizeof(string), "Charge\tTime\n");
  38215. format(string, sizeof(string), "%s(1)01. Intimidation\t5min\n(1)02. Assault\t10min\n(1)03. Assault With A Deadly Weapon\t10min\n(1)04. Mutual Combat\t10min\n(1)05. Battery\t10min\n", string);
  38216. format(string, sizeof(string), "%s(1)06. Aggravated Battery\t10min\n(1)07. Attempted Murder\t10min\n", string);
  38217. format(string, sizeof(string), "%s(1)08. Manslaughter\t10min\n(1)09. Murder\t10min\n(1)10. False Imprisonment\t10min\n(1)11. Kidnapping\t10min\n(1)12. Mayhem\t10min\n", string);
  38218. format(string, sizeof(string), "%s(1)13. Vehicular Murder\t10min\n(2)01. Arson\t10min\n(2)02. Trespassing\t10min\n(2)03. Trespassing within a Restricted Facility\t10min\n", string);
  38219. format(string, sizeof(string), "%s(2)04. Burglary\t10min\n(2)05. Possession Of Burglary Tools\t10min\n(2)06. Robbery\t10min\n(2)07. Armed Robbery\t10min\n(2)08. Petty Theft\t10min\n", string);
  38220. format(string, sizeof(string), "%s(2)09. Theft\t10min\n(2)10. Grand Theft\t10min\n(2)11. Grand Theft Auto\t10min\n(2)12. Grand Theft Of A Firearm\t10min\n", string);
  38221. format(string, sizeof(string), "%s(2)13. Receiving Stolen Property\t10min\n(2)14. Extortion\t10min\n(2)15. Forgery\t10min\n(2)16. Fraud\t10min\n", string);
  38222. format(string, sizeof(string), "%s(2)17. Vandalism\t10min\n(3)01. Lewd Or Dissolute Conduct In Public\t10min\n(3)02. Indecent Exposure\t10min\n(3)03. Prostitution\t10min\n", string);
  38223. format(string, sizeof(string), "%s(3)04. Pandering / Pimping\t10min\n(3)05. Sexual Assault\t10min\n(3)06. Sexual Battery\t10min\n(3)07. Rape\t10min\n(3)08. Statutory Rape\t10min\n", string);
  38224. format(string, sizeof(string), "%s(3)09. Stalking\t10min", string);
  38225. */
  38226. Dialog:AddWarrant(playerid, response, listitem, inputtext[])
  38227. {
  38228. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  38229. {
  38230. return 0;
  38231. }
  38232. if (response)
  38233. {
  38234. if (isnull(inputtext))
  38235. {
  38236. return Dialog_Show(playerid, AddWarrant, DIALOG_STYLE_INPUT, "{FFFFFF}Add Warrant", "Please input the description of the warrant:", "Submit", "Back");
  38237. }
  38238. else
  38239. {
  38240. new
  38241. targetid = GetPlayerID(gTargetName[playerid]);
  38242. SendFactionMessage(Players[playerid][pFaction], COLOR_RADIO, "** %s has issued a warrant on %s for: %s **", ReturnNameEx(playerid, 0), gTargetName[playerid], inputtext);
  38243. ShowMDCPlayerMenu(playerid);
  38244. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET Warrants = Warrants + 1, TotalWarrants = TotalWarrants + 1 WHERE Username = '%s'", gTargetName[playerid]);
  38245. mysql_tquery(gConnection, gExecute);
  38246. format(gExecute, sizeof(gExecute), "INSERT INTO rp_warrantlogs (Player, Suspect, Date, Reason) VALUES('%s', '%s', NOW(), '%s')", ReturnName(playerid), gTargetName[playerid], mysql_escaped(inputtext));
  38247. mysql_tquery(gConnection, gExecute);
  38248. if (IsPlayerConnected(targetid))
  38249. {
  38250. Players[targetid][pWarrants]++;
  38251. Statistics[targetid][sTotalWarrants]++;
  38252. }
  38253. }
  38254. }
  38255. else
  38256. {
  38257. ShowMDCPlayerMenu(playerid);
  38258. }
  38259. return 1;
  38260. }
  38261. /*
  38262. Dialog:AddCharges(playerid, response, listitem, inputtext[])
  38263. {
  38264. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  38265. {
  38266. return 0;
  38267. }
  38268. if (response)
  38269. {
  38270. switch (listitem)
  38271. {
  38272. case 0:
  38273. {
  38274. new
  38275. targetid = GetPlayerID(gTargetName[playerid]);
  38276. SendFactionMessage(Players[playerid][pFaction], COLOR_RADIO, "** %s has placed a charge on %s for: Rape **");
  38277. ShowMDCPlayerMenuNew(playerid);
  38278. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET Charges = Charges + 1 WHERE Username = '%s'", gTargetName[playerid]);
  38279. mysql_tquery(gConnection, gExecute);
  38280. new string[128];
  38281. format(string, sizeof(string), "1) Rape");
  38282. new chargeid = 1;
  38283. format(gExecute, sizeof(gExecute), "INSERT INTO rp_charges (Player, Suspect, Reason, ChargeID) VALUES('%s', '%s', '%s', %i)", ReturnName(playerid), gTargetName[playerid], string, chargeid);
  38284. mysql_tquery(gConnection, gExecute);
  38285. if (IsPlayerConnected(targetid))
  38286. {
  38287. Players[targetid][pCharges]++;
  38288. }
  38289. }
  38290. case 1:
  38291. {
  38292. SendInfoMessage(playerid, "test");
  38293. }
  38294. }
  38295. }
  38296. else
  38297. {
  38298. ShowMDCPlayerMenu(playerid);
  38299. }
  38300. return 1;
  38301. }
  38302. */
  38303. Dialog:MDCPlayerNew(playerid, response, listitem, inputtext[])
  38304. {
  38305. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  38306. {
  38307. return 0;
  38308. }
  38309. if (response)
  38310. {
  38311. switch (listitem)
  38312. {
  38313. case 0:
  38314. {
  38315. format(gExecute, sizeof(gExecute), "SELECT ID, Age, Origin, Warrants, PhoneLastKnown, Charges, CarLicense, GunLicense, TotalWarrants FROM rp_accounts WHERE Username = '%s'", gTargetName[playerid]);
  38316. mysql_tquery(gConnection, gExecute, "OnMDCViewInformationNew", "i", playerid);
  38317. }
  38318. case 1:
  38319. {
  38320. format(gExecute, sizeof(gExecute), "SELECT ID, Age, Origin, Warrants, CarLicense, GunLicense, TotalWarrants FROM rp_accounts WHERE Username = '%s'", gTargetName[playerid]);
  38321. mysql_tquery(gConnection, gExecute, "OnMDCViewInformationNewPrint", "i", playerid);
  38322. }
  38323. case 2:
  38324. {
  38325. Dialog_Show(playerid, ManageWarrants, DIALOG_STYLE_LIST, "{FFFFFF}MDC - Manage Warrants", "List Warrants\nAdd Warrant\nClear Warrants", "Select", "Back");
  38326. }
  38327. case 3:
  38328. {
  38329. Dialog_Show(playerid, ManageLicenses, DIALOG_STYLE_LIST, "{FFFFFF}MDC - Manage Licenses", "Add Warnings\nSuspend Licenses", "Select", "Back");
  38330. }
  38331. case 4:
  38332. {
  38333. Dialog_Show(playerid, ManageCharges, DIALOG_STYLE_LIST, "{FFFFFF}MDC - Manage Charges", "View Charges\nAdd Charges\nClear All", "Select", "Back");
  38334. }
  38335. case 5:
  38336. {
  38337. //Dialog_Show(playerid, ArrestRecord, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}MDC - Arrest Record", "Officer\tDate\tTime\nBilly McKee\t2017/04/02\t53min\nMalcolm Summers\t2017/04/14\t75min", "Select", "Back");
  38338. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_arrestlogs WHERE Player = '%s'", gTargetName[playerid]);
  38339. mysql_tquery(gConnection, gExecute, "OnPlayerGetArrestLogs", "i", playerid);
  38340. }
  38341. }
  38342. }
  38343. return 1;
  38344. }
  38345. Dialog:ManageWarrants(playerid, response, listitem, inputtext[])
  38346. {
  38347. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  38348. {
  38349. return 0;
  38350. }
  38351. if (response)
  38352. {
  38353. switch (listitem)
  38354. {
  38355. case 0:
  38356. {
  38357. format(gExecute, sizeof(gExecute), "SELECT Warrants FROM rp_accounts WHERE Username = '%s'", gTargetName[playerid]);
  38358. mysql_tquery(gConnection, gExecute, "OnPlayerGetWarrants", "i", playerid);
  38359. }
  38360. case 1:
  38361. {
  38362. Dialog_Show(playerid, AddWarrant, DIALOG_STYLE_INPUT, "{FFFFFF}Add Warrant", "Please input the description of the warrant:", "Submit", "Back");
  38363. }
  38364. case 2:
  38365. {
  38366. new targetid = GetPlayerID(gTargetName[playerid]);
  38367. SendFactionMessage(Players[playerid][pFaction], COLOR_RADIO, "** %s has cleared %s's active warrants. **", ReturnNameEx(playerid, 0), gTargetName[playerid]);
  38368. ShowMDCPlayerMenuNew(playerid);
  38369. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET Warrants = 0 WHERE Username = '%s'", gTargetName[playerid]);
  38370. mysql_tquery(gConnection, gExecute);
  38371. if (IsPlayerConnected(targetid))
  38372. {
  38373. SendInfoMessage(targetid, "%s has cleared your warrants.", ReturnNameEx(playerid));
  38374. Players[targetid][pWarrants] = 0;
  38375. }
  38376. }
  38377. }
  38378. }
  38379. else
  38380. {
  38381. ShowMDCPlayerMenuNew(playerid);
  38382. }
  38383. return 1;
  38384. }
  38385. Dialog:ManageCharges(playerid, response, listitem, inputtext[])
  38386. {
  38387. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  38388. {
  38389. return 0;
  38390. }
  38391. if (response)
  38392. {
  38393. switch (listitem)
  38394. {
  38395. case 0:
  38396. {
  38397. format(gExecute, sizeof(gExecute), "SELECT Charges FROM rp_accounts WHERE Username = '%s'", gTargetName[playerid]);
  38398. mysql_tquery(gConnection, gExecute, "OnPlayerGetCharges", "i", playerid);//h�r
  38399. /*format(gExecute, sizeof(gExecute), "SELECT * FROM rp_charges WHERE Suspect = '%s' ORDER BY `ID` DESC", gTargetName[playerid]);
  38400. mysql_tquery(gConnection, gExecute, "OnPlayerViewCharges", "i", playerid);*/
  38401. /*format(gExecute, sizeof(gExecute), "SELECT * FROM rp_warrantlogs WHERE Suspect = '%s' ORDER BY `ID` DESC LIMIT %i", gTargetName[playerid], warrants);
  38402. mysql_tquery(gConnection, gExecute, "OnPlayerViewCharges", "i", playerid);*/
  38403. }
  38404. case 1:
  38405. {
  38406. /*new string[2048];
  38407. format(string, sizeof(string), "Charge\tTime\n");//GetArrestTime(chargeid)
  38408. format(string, sizeof(string), "%s(1)01. Intimidation\t%i Minutes\n(1)02. Assault\t%i Minutes\n(1)03. Assault With A Deadly Weapon\t%i Minutes\n(1)04. Mutual Combat\t%i Minutes\n(1)05. Battery\t%i Minutes\n",
  38409. string, GetArrestTime(0), GetArrestTime(1), GetArrestTime(2), GetArrestTime(3), GetArrestTime(4));//anuskuk
  38410. format(string, sizeof(string), "%s(1)06. Aggravated Battery\t%i Minutes\n(1)07. Attempted Murder\t%i Minutes\n",
  38411. string, GetArrestTime(5), GetArrestTime(6));
  38412. format(string, sizeof(string), "%s(1)08. Manslaughter\t%i Minutes\n(1)09. Murder\t%i Minutes\n(1)10. False Imprisonment\t%i Minutes\n(1)11. Kidnapping\t%i Minutes\n(1)12. Mayhem\t%i Minutes\n",
  38413. string, GetArrestTime(7), GetArrestTime(8), GetArrestTime(9), GetArrestTime(10), GetArrestTime(11));
  38414. format(string, sizeof(string), "%s(1)13. Vehicular Murder\t%i Minutes\n(2)01. Arson\t%i Minutes\n(2)02. Trespassing\t%i Minutes\n(2)03. Trespassing within a Restricted Facility\t%i Minutes\n",
  38415. string, GetArrestTime(12), GetArrestTime(13), GetArrestTime(14), GetArrestTime(15));
  38416. format(string, sizeof(string), "%s(2)04. Burglary\t%i\n(2)05. Possession Of Burglary Tools\t%i\n(2)06. Robbery\t%i\n(2)07. Armed Robbery\t%i\n(2)08. Petty Theft\t%i\n",
  38417. string, GetArrestTime(16), GetArrestTime(17), GetArrestTime(18), GetArrestTime(19), GetArrestTime(20));
  38418. format(string, sizeof(string), "%s(2)09. Theft\t%i Minutes\n(2)10. Grand Theft\t%i Minutes\n(2)11. Grand Theft Auto\t%i Minutes\n(2)12. Grand Theft Of A Firearm\t%i Minutes\n",
  38419. string, GetArrestTime(21), GetArrestTime(22), GetArrestTime(23), GetArrestTime(24));
  38420. format(string, sizeof(string), "%s(2)13. Receiving Stolen Property\t%i Minutes\n(2)14. Extortion\t%i Minutes\n(2)15. Forgery\t%i Minutes\n(2)16. Fraud\t%i Minutes\n",
  38421. string, GetArrestTime(25), GetArrestTime(26), GetArrestTime(27), GetArrestTime(28));
  38422. format(string, sizeof(string), "%s(2)17. Vandalism\t%i Minutes\n(3)01. Lewd Or Dissolute Conduct In Public\t%i Minutes\n(3)02. Indecent Exposure\t%i Minutes\n(3)03. Prostitution\t%i Minutes\n",
  38423. string, GetArrestTime(29), GetArrestTime(30), GetArrestTime(31), GetArrestTime(32));
  38424. format(string, sizeof(string), "%s(3)04. Pandering / Pimping\t%i Minutes\n(3)05. Sexual Assault\t%i Minutes\n(3)06. Sexual Battery\t%i Minutes\n(3)07. Rape\t%i Minutes\n(3)08. Statutory Rape\t%i Minutes\n",
  38425. string, GetArrestTime(33), GetArrestTime(34), GetArrestTime(35), GetArrestTime(36), GetArrestTime(37));
  38426. format(string, sizeof(string), "%s(3)09. Stalking\t%i Minutes",
  38427. string, GetArrestTime(38));
  38428. format(string, sizeof(string), "%s(4)01. Stalking\t%i Minutes",
  38429. string, GetArrestTime(38));
  38430. //format(string, sizeof(string), "%s", string);
  38431. //format(string, sizeof(string), "%s", string);
  38432. //format(string, sizeof(string), "%s", string);
  38433. //format(string, sizeof(string), "%s", string);
  38434. //format(string, sizeof(string), "%s", string);*/
  38435. //Dialog_Show(playerid, AddCharges, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Add Charges", string, "Submit", "Back");
  38436. Dialog_Show(playerid, ChargesCategory, DIALOG_STYLE_LIST, "{FFFFFF}Add Charges", "1. Crimes Against The Person\n2. Crimes Against Property And Criminal Profiteering\n3. Crimes Against Public Decency\n4. Crimes Against Public Justice\n5. Crimes Against Public Peace\n6. Crimes Against Public Health And Safety\n7. Crimes Against State Dependents\n8. Vehicular Offenses\n9. Control Of Deadly Weapons And Equipment",
  38437. "Submit", "Back");
  38438. }
  38439. case 2:
  38440. {
  38441. SendInfoMessage(playerid, "You have cleared %s of all charges.", gTargetName[playerid]);
  38442. new targetid = GetPlayerID(gTargetName[playerid]);
  38443. ShowMDCPlayerMenuNew(playerid);
  38444. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET Charges = 0 WHERE Username = '%s'", gTargetName[playerid]);
  38445. mysql_tquery(gConnection, gExecute);
  38446. if (IsPlayerConnected(targetid))
  38447. {
  38448. Players[targetid][pCharges] = 0;
  38449. }
  38450. }
  38451. }
  38452. }
  38453. else
  38454. {
  38455. ShowMDCPlayerMenuNew(playerid);
  38456. }
  38457. return 1;
  38458. }
  38459. /*
  38460. Dialog_Show(playerid, AddCharges, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Add Charges",
  38461. "1. Crimes Against The Person\n
  38462. 2. Crimes Against Property And Criminal Profiteering\n
  38463. 3. Crimes Against Public Decency\n
  38464. 4. Crimes Against Public Justice\n
  38465. 5. Crimes Against Public Peace\n
  38466. 6. Crimes Against Public Health And Safety\n
  38467. 7. Crimes Against State Dependents\n
  38468. 8. Vehicular Offenses\n
  38469. 9. Conttrol Of Deadly Weapons And Equipment",
  38470. "Submit", "Back");
  38471. */
  38472. /*
  38473. Dialog_Show(playerid, AddCharges0, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Add Charges",
  38474. "Penal Code\tTime In Jail\n
  38475. (1)01. Intimidation\t5 Minutes\n
  38476. (1)02. Assault\t10 Minutes\n
  38477. (1)03. Assault With A Deadly Weapon\t10 Minutes\n
  38478. (1)04. Mutual Combat\t15 Minutes\n
  38479. (1)05. Battery\t15 Minutes\n
  38480. (1)06. Aggravated Battery\t20 Minutes\n
  38481. (1)07. Attempted Murder\t25 Minutes\n
  38482. (1)08. Manslaughter\t25 Minutes\n
  38483. (1)09. Murder\t30 Minutes\n
  38484. (1)10. False Imprisonment\t20 Minutes\n
  38485. (1)11. Kidnapping\t10 Minutes\n
  38486. (1)12. Mayhem\t15 Minutes\n
  38487. (1)13. Vehicular Murder\t30 Minutes
  38488. ",
  38489. "Submit", "Back");
  38490. */
  38491. Dialog:ChargesCategory(playerid, response, listitem, inputtext[])
  38492. {
  38493. if (response)
  38494. {
  38495. switch (listitem)
  38496. {
  38497. case 0://Crimes Against The Person
  38498. {
  38499. Players[playerid][pAddCharges] = 1;
  38500. Dialog_Show(playerid, AddCharges, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Add Charges",
  38501. "Penal Code\tTime In Jail\n(1)01. Intimidation\t%i Minutes\n(1)02. Assault\t%i Minutes\n(1)03. Assault With A Deadly Weapon\t%i Minutes\n(1)04. Mutual Combat\t%i Minutes\n(1)05. Battery\t%i Minutes\n(1)06. Aggravated Battery\t%i Minutes\n(1)07. Attempted Murder\t%i Minutes\n(1)08. Manslaughter\t%i Minutes\n(1)09. Murder\t%i Minutes\n(1)10. False Imprisonment\t%i Minutes\n(1)11. Kidnapping\t%i Minutes\n(1)12. Mayhem\t%i Minutes\n(1)13. Vehicular Murder\t%i Minutes",
  38502. "Submit", "Back",
  38503. GetArrestTime(1, 1),
  38504. GetArrestTime(1, 2),
  38505. GetArrestTime(1, 3),
  38506. GetArrestTime(1, 4),
  38507. GetArrestTime(1, 5),
  38508. GetArrestTime(1, 6),
  38509. GetArrestTime(1, 7),
  38510. GetArrestTime(1, 8),
  38511. GetArrestTime(1, 9),
  38512. GetArrestTime(1, 10),
  38513. GetArrestTime(1, 11),
  38514. GetArrestTime(1, 12),
  38515. GetArrestTime(1, 13)
  38516. );
  38517. }
  38518. case 1://Crimes Against Property And Criminal Profiteering
  38519. {
  38520. Players[playerid][pAddCharges] = 2;
  38521. new string[2048];
  38522. format(string, sizeof(string), "Penal Code\tTime In Jail\n(2)01. Arson\t%i Minutes\n(2)02. Trespassing\t%i Minutes\n(2)03. Trespassing within a Restricted Facility\t%i Minutes\n(2)04. Burglary\t%i Minutes\n(2)05. Possession Of Burglary Tools\t%i Minutes\n(2)06. Robbery\t%i Minutes\n(2)07. Armed Robbery\t%i Minutes\n(2)08. Petty Theft\t%i Minutes\n(2)09. Theft\t%i Minutes\n",
  38523. GetArrestTime(2, 1),
  38524. GetArrestTime(2, 2),
  38525. GetArrestTime(2, 3),
  38526. GetArrestTime(2, 4),
  38527. GetArrestTime(2, 5),
  38528. GetArrestTime(2, 6),
  38529. GetArrestTime(2, 7),
  38530. GetArrestTime(2, 8),
  38531. GetArrestTime(2, 9)
  38532. );
  38533. format(string, sizeof(string), "%s(2)10. Grand Theft\t%i Minutes\n(2)11. Grand Theft Auto\t%i Minutes\n(2)12. Grand Theft Of A Firearm\t%i Minutes\n(2)13. Receiving Stolen Property\t%i Minutes\n(2)14. Extortion\t%i Minutes\n(2)15. Forgery\t%i Minutes\n(2)16. Fraud\t%i Minutes\n(2)17. Vandalism\t%i Minutes",
  38534. string,
  38535. GetArrestTime(2, 10),
  38536. GetArrestTime(2, 11),
  38537. GetArrestTime(2, 12),
  38538. GetArrestTime(2, 13),
  38539. GetArrestTime(2, 14),
  38540. GetArrestTime(2, 15),
  38541. GetArrestTime(2, 16),
  38542. GetArrestTime(2, 17)
  38543. );
  38544. Dialog_Show(playerid, AddCharges, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Add Charges",
  38545. string,
  38546. "Submit", "Back");
  38547. }
  38548. case 2://Crimes Against Public Decency
  38549. {
  38550. Players[playerid][pAddCharges] = 3;
  38551. Dialog_Show(playerid, AddCharges, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Add Charges",
  38552. "Penal Code\tTime In Jail\n(3)01. Lewd Or Dissolute Conduct In Public\t%i Minutes\n(3)02. Indecent Exposure\t%i Minutes\n(3)03. Prostitution\t%i Minutes\n(3)04. Pandering / Pimping\t%i Minutes\n(3)05. Sexual Assault\t%i Minutes\n(3)06. Sexual Battery\t%i Minutes\n(3)07. Rape\t%i Minutes\n(3)08. Statutory Rape\t%i Minutes\n(3)09. Stalking\t%i Minutes",
  38553. "Submit", "Back",
  38554. GetArrestTime(3, 1),
  38555. GetArrestTime(3, 2),
  38556. GetArrestTime(3, 3),
  38557. GetArrestTime(3, 4),
  38558. GetArrestTime(3, 5),
  38559. GetArrestTime(3, 6),
  38560. GetArrestTime(3, 7),
  38561. GetArrestTime(3, 8),
  38562. GetArrestTime(3, 9)
  38563. );
  38564. }
  38565. case 3://Crimes Against Public Justice
  38566. {
  38567. Players[playerid][pAddCharges] = 4;
  38568. new string[2048];
  38569. format(string, sizeof(string), "Penal Code\tTime In Jail\n(4)01. Bribery\t%i Minutes\n(4)02. Failure To Pay A Fine\t%i Minutes\n(4)03. Contempt of Court\t%i Minutes\n(4)04. Subpoena Violation\t%i Minutes\n(4)05. Dissuading A Witness Or Victim\t%i Minutes\n(4)06. False Information To A Government Employee\t%i Minutes\n(4)07. Filing A False Complaint\t%i Minutes\n(4)08. Perjury\t%i Minutes",
  38570. GetArrestTime(4, 1),
  38571. GetArrestTime(4, 2),
  38572. GetArrestTime(4, 3),
  38573. GetArrestTime(4, 4),
  38574. GetArrestTime(4, 5),
  38575. GetArrestTime(4, 6),
  38576. GetArrestTime(4, 7),
  38577. GetArrestTime(4, 8)
  38578. );
  38579. format(string, sizeof(string), "%s\n(4)09. Failure To Identify To A Peace Officer\t%i Minutes\n(4)10. Impersonation Of A Government Employee\t%i Minutes\n(4)11. Obstruction Of A Government Employee\t%i Minutes\n",
  38580. string,
  38581. GetArrestTime(4, 9),
  38582. GetArrestTime(4, 10),
  38583. GetArrestTime(4, 11)
  38584. );
  38585. format(string, sizeof(string), "%s(4)12. Resisting A Peace Officer\t%i Minutes\n(4)13. Escape From Custody\t%i Minutes\n(4)14. Escape\t%i Minutes\n(4)15. Prisoner Brekaout\t%i Minutes\n(4)16. Human Trafficking\t%i Minutes\n(4)17. Misuse Of A Government Hotline\t%i Minutes\n(4)18. Tampering With Evidence\t%i Minutes",
  38586. string,
  38587. GetArrestTime(4, 12),
  38588. GetArrestTime(4, 13),
  38589. GetArrestTime(4, 14),
  38590. GetArrestTime(4, 15),
  38591. GetArrestTime(4, 16),
  38592. GetArrestTime(4, 17),
  38593. GetArrestTime(4, 18)
  38594. );
  38595. format(string, sizeof(string), "%s\n(4)19. Introduction Of Contraband\t%i Minutes\n(4)20. Violation Of Parole Or Probation\t%i Minutes\n(4)21. Voter Fraud / Voter Pandering\t%i Minutes\n(4)22. Corruption Of Public Duty\t%i Minutes\n(4)23. Corruption Of Public Office\t%i Minutes",
  38596. string,
  38597. GetArrestTime(4, 19),
  38598. GetArrestTime(4, 20),
  38599. GetArrestTime(4, 21),
  38600. GetArrestTime(4, 22),
  38601. GetArrestTime(4, 23)
  38602. );
  38603. Dialog_Show(playerid, AddCharges, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Add Charges",
  38604. string,
  38605. "Submit", "Back");
  38606. }
  38607. case 4://Crimes Against Public Peace
  38608. {
  38609. Players[playerid][pAddCharges] = 5;
  38610. Dialog_Show(playerid, AddCharges, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Add Charges",
  38611. "Penal Code\tTime In Jail\n(5)01. Disturbing The Peace\t%i Minutes\n(5)02. Unlawful Assembly\t%i Minutes\n(5)03. Incitement To Riot\t%i Minutes\n(5)04. Vigilantism\t%i Minutes",
  38612. "Submit", "Back",
  38613. GetArrestTime(5, 1),
  38614. GetArrestTime(5, 2),
  38615. GetArrestTime(5, 3),
  38616. GetArrestTime(5, 4)
  38617. );
  38618. }
  38619. case 5://Crimes Against Public Health And Safety
  38620. {
  38621. Players[playerid][pAddCharges] = 6;
  38622. new string[2048];
  38623. format(string, sizeof(string), "Penal Code\tTime In Jail\n(6)01. Possession Of A Controlled Substance\t%i Minutes\n(6)02. Possession Of A Controlled Substance With Intent To Sell\t%i Minutes\n(6)03. Possession Of Drug Paraphernalia\t%i Minutes\n(6)04. Maintaining A Place For The Purpose Of Distribution\t%i Minutes\n(6)05. Manufacture Of A Controlled Substance\t%i Minutes\n(6)06. Sale Of A Controlled Substance\t%i Minutes\n",
  38624. GetArrestTime(6, 1),
  38625. GetArrestTime(6, 2),
  38626. GetArrestTime(6, 3),
  38627. GetArrestTime(6, 4),
  38628. GetArrestTime(6, 5),
  38629. GetArrestTime(6, 6)
  38630. );
  38631. format(string, sizeof(string), "%s(6)07. Possession Of An Open Container\t%i Minutes\n(6)08. Public Intoxication\t%i Minutes\n(6)09. Under The Influence Of A Controlled Substance\t%i Minutes\n(6)10. Facial Obstruction While Committing A Crime\t%i Minutes\n(6)11. Terrorism\t%i Minutes\n(6)12. Possession Of Marijuana\t%i Minutes",
  38632. string,
  38633. GetArrestTime(6, 7),
  38634. GetArrestTime(6, 8),
  38635. GetArrestTime(6, 9),
  38636. GetArrestTime(6, 10),
  38637. GetArrestTime(6, 11),
  38638. GetArrestTime(6, 12)
  38639. );
  38640. Dialog_Show(playerid, AddCharges, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Add Charges",
  38641. string,
  38642. "Submit", "Back");
  38643. }
  38644. case 6://Crimes Against State Dependents
  38645. {
  38646. Players[playerid][pAddCharges] = 7;
  38647. Dialog_Show(playerid, AddCharges, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Add Charges",
  38648. "Penal Code\tTime In Jail\n(7)01. Animal Abuse / Cruelty\t%i Minutes\n(7)02. Child Abuse\t%i Minutes\n(7)03. Sale Of Alcohol To A Minor\t%i Minutes\n(7)04. Minor Alcohol Violation\t%i Minutes",
  38649. "Submit", "Back",
  38650. GetArrestTime(7, 1),
  38651. GetArrestTime(7, 2),
  38652. GetArrestTime(7, 3),
  38653. GetArrestTime(7, 4)
  38654. );
  38655. }
  38656. case 7://Vehicular Offenses
  38657. {
  38658. Players[playerid][pAddCharges] = 8;
  38659. new string[2048];
  38660. format(string, sizeof(string), "Penal Code\tTime In Jail\n(8)01. Driving With A Suspended License\t%i Minutes\n(8)02. Eluding A Peace Officer\t%i Minutes\n(8)03. Flying Without A Pilot's License\t%i Minutes\n(8)04. Hit And Run\t%i Minutes\n(8)05. Reckless Operation Of An Aircraft\t%i Minutes\n",
  38661. GetArrestTime(8, 1),
  38662. GetArrestTime(8, 2),
  38663. GetArrestTime(8, 3),
  38664. GetArrestTime(8, 4),
  38665. GetArrestTime(8, 5),
  38666. GetArrestTime(8, 6),
  38667. GetArrestTime(8, 7)
  38668. );
  38669. format(string, sizeof(string), "%s(8)06. Reckless Operation Of An Off-Road Or Naval Vehicle\t%i Minutes\n(8)07. Failure To Adhere To ATC Protocols\t%i Minutes\n(8)08. Failure To Adhere To Flight Protocols\t%i Minutes\n(8)09. Aerial Evasion\t%i Minutes\n(8)10. Restricted Airspace Violation\t%i Minutes",
  38670. string,
  38671. GetArrestTime(8, 8),
  38672. GetArrestTime(8, 9),
  38673. GetArrestTime(8, 10)
  38674. );
  38675. Dialog_Show(playerid, AddCharges, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Add Charges", string, "Submit", "Back");
  38676. }
  38677. case 8://Conttrol Of Deadly Weapons And Equipment
  38678. {
  38679. Players[playerid][pAddCharges] = 9;
  38680. new string[2048];
  38681. format(string, sizeof(string), "Penal Code\tTime In Jail\n(9)01. Possession Of An Illegal Blade\t%i Minutes\n(9)02. Possession Of An Unlicensed Firearm\t%i Minutes\n(9)03. Possession Of An Illegal Firearm\t%i Minutes\n(9)04. Possession Of An Assault Weapon\t%i Minutes\n(9)05. Unlicensed Sale Of A Firearm\t%i Minutes\n(9)06. Possession Of An Explosive Device\t%i Minutes\n",
  38682. GetArrestTime(9, 1),
  38683. GetArrestTime(9, 2),
  38684. GetArrestTime(9, 3),
  38685. GetArrestTime(9, 4),
  38686. GetArrestTime(9, 5),
  38687. GetArrestTime(9, 6),
  38688. GetArrestTime(9, 7),
  38689. GetArrestTime(9, 8)
  38690. );
  38691. format(string, sizeof(string), "%s(9)07. Manufacture or Possession of an Improvised Device\t%i Minutes\n(9)08. Possession of Weaponry With Intent To Sell\t%i Minutes\n(9)09. Possession Of Explosive Devices With Intent To Sell\t%i Minutes\n(9)10. Brandishing A Firearm\t%i Minutes\n(9)11. Weapons Discharge Violation\t%i Minutes\n(9)12. Drive-By Shooting\t%i Minutes\n(9)13. CCW / FPC Violation\t%i Minutes",
  38692. string,
  38693. GetArrestTime(9, 9),
  38694. GetArrestTime(9, 10),
  38695. GetArrestTime(9, 11),
  38696. GetArrestTime(9, 12),
  38697. GetArrestTime(9, 13)
  38698. );
  38699. Dialog_Show(playerid, AddCharges, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Add Charges", string, "Submit", "Back");
  38700. }
  38701. }
  38702. }
  38703. else
  38704. {
  38705. ShowMDCPlayerMenuNew(playerid);
  38706. }
  38707. return 1;
  38708. }
  38709. Dialog:AddCharges(playerid, response, listitem, inputtext[])
  38710. {
  38711. if (response)
  38712. {
  38713. new targetid = GetPlayerID(gTargetName[playerid]);
  38714. new time = GetArrestTime(Players[playerid][pAddCharges], listitem+1);
  38715. SendInfoMessage(playerid, "Charge '%s' added to %s for %i minutes.", inputtext, gTargetName[playerid], time);
  38716. Dialog_Show(playerid, ChargesCategory, DIALOG_STYLE_LIST, "{FFFFFF}Add Charges", "1. Crimes Against The Person\n2. Crimes Against Property And Criminal Profiteering\n3. Crimes Against Public Decency\n4. Crimes Against Public Justice\n5. Crimes Against Public Peace\n6. Crimes Against Public Health And Safety\n7. Crimes Against State Dependents\n8. Vehicular Offenses\n9. Control Of Deadly Weapons And Equipment",
  38717. "Submit", "Back");
  38718. new chargecat;
  38719. if(strfind(inputtext, "(1)", true) != -1)
  38720. chargecat = 1;
  38721. if(strfind(inputtext, "(2)", true) != -1)
  38722. chargecat = 2;
  38723. if(strfind(inputtext, "(3)", true) != -1)
  38724. chargecat = 3;
  38725. if(strfind(inputtext, "(4)", true) != -1)
  38726. chargecat = 4;
  38727. if(strfind(inputtext, "(5)", true) != -1)
  38728. chargecat = 5;
  38729. if(strfind(inputtext, "(6)", true) != -1)
  38730. chargecat = 6;
  38731. if(strfind(inputtext, "(7)", true) != -1)
  38732. chargecat = 7;
  38733. if(strfind(inputtext, "(8)", true) != -1)
  38734. chargecat = 8;
  38735. if(strfind(inputtext, "(9)", true) != -1)
  38736. chargecat = 9;
  38737. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET Charges = Charges + 1 WHERE Username = '%s'", gTargetName[playerid]);
  38738. mysql_tquery(gConnection, gExecute);
  38739. format(gExecute, sizeof(gExecute), "INSERT INTO rp_charges (Player, Suspect, Reason, ChargeCat, ChargeID, Time) VALUES('%s', '%s', '%s', %i, %i, %i)", ReturnName(playerid), gTargetName[playerid], mysql_escaped(inputtext), chargecat, listitem+1, time);
  38740. mysql_tquery(gConnection, gExecute);
  38741. if (IsPlayerConnected(targetid))
  38742. {
  38743. Players[targetid][pCharges]++;
  38744. }
  38745. }
  38746. else
  38747. {
  38748. Dialog_Show(playerid, ChargesCategory, DIALOG_STYLE_LIST, "{FFFFFF}Add Charges", "1. Crimes Against The Person\n2. Crimes Against Property And Criminal Profiteering\n3. Crimes Against Public Decency\n4. Crimes Against Public Justice\n5. Crimes Against Public Peace\n6. Crimes Against Public Health And Safety\n7. Crimes Against State Dependents\n8. Vehicular Offenses\n9. Control Of Deadly Weapons And Equipment",
  38749. "Submit", "Back");
  38750. }
  38751. return 1;
  38752. }
  38753. //Dialog_Show(playerid, AddCharges, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Add Charges", "Charge\tTime\n1) Rape\t50min\n2) Not rape\t100min", "Submit", "Back");
  38754. /*Dialog:AddCharges(playerid, response, listitem, inputtext[])
  38755. {
  38756. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  38757. {
  38758. return 0;
  38759. }
  38760. if (response)
  38761. {
  38762. new targetid = GetPlayerID(gTargetName[playerid]);
  38763. new time = GetArrestTime(listitem);
  38764. SendInfoMessage(playerid, "Charge '%s' added to %s for %i minutes.", inputtext, gTargetName[playerid], time);
  38765. ShowMDCPlayerMenuNew(playerid);
  38766. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET Charges = Charges + 1 WHERE Username = '%s'", gTargetName[playerid]);
  38767. mysql_tquery(gConnection, gExecute);
  38768. format(gExecute, sizeof(gExecute), "INSERT INTO rp_charges (Player, Suspect, Reason, ChargeID, Time) VALUES('%s', '%s', '%s', %i, %i)", ReturnName(playerid), gTargetName[playerid], mysql_escaped(inputtext), listitem, time);
  38769. mysql_tquery(gConnection, gExecute);
  38770. if (IsPlayerConnected(targetid))
  38771. {
  38772. Players[targetid][pCharges]++;
  38773. }
  38774. }
  38775. else
  38776. {
  38777. ShowMDCPlayerMenu(playerid);
  38778. }
  38779. return 1;
  38780. }*/
  38781. Dialog:ManageLicenses(playerid, response, listitem, inputtext[])
  38782. {
  38783. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  38784. {
  38785. return 0;
  38786. }
  38787. if (response)
  38788. {
  38789. switch (listitem)
  38790. {
  38791. case 0:
  38792. {
  38793. Dialog_Show(playerid, ManageLicenses, DIALOG_STYLE_LIST, "{FFFFFF}MDC - Manage Licenses - Add Warning", "Drivers License\nWeapons License", "Select", "Back");
  38794. }
  38795. case 1:
  38796. {
  38797. Dialog_Show(playerid, ManageLicenses, DIALOG_STYLE_LIST, "{FFFFFF}MDC - Manage Licenses - Revoke License", "Drivers License\nWeapons License", "Select", "Back");
  38798. }
  38799. }
  38800. }
  38801. else
  38802. {
  38803. ShowMDCPlayerMenuNew(playerid);
  38804. }
  38805. return 1;
  38806. }
  38807. //Dialog_Show(playerid, MDCPlayerNew, DIALOG_STYLE_LIST, string, "View Information\nPrint Information\nManage Warrants\nManage Licenses\nApply Charges\nArrest Record", "Select", "Cancel");
  38808. Dialog:MDCPlayer(playerid, response, listitem, inputtext[])
  38809. {
  38810. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  38811. {
  38812. return 0;
  38813. }
  38814. if (response)
  38815. {
  38816. switch (listitem)
  38817. {
  38818. case 0:
  38819. {
  38820. Dialog_Show(playerid, AddWarrant, DIALOG_STYLE_INPUT, "{FFFFFF}Add Warrant", "Please input the description of the warrant:", "Submit", "Back");
  38821. }
  38822. case 1:
  38823. {
  38824. format(gExecute, sizeof(gExecute), "SELECT Warrants FROM rp_accounts WHERE Username = '%s'", gTargetName[playerid]);
  38825. mysql_tquery(gConnection, gExecute, "OnPlayerGetWarrants", "i", playerid);
  38826. }
  38827. case 2:
  38828. {
  38829. new targetid = GetPlayerID(gTargetName[playerid]);
  38830. SendFactionMessage(Players[playerid][pFaction], COLOR_RADIO, "** %s has cleared %s's active warrants. **", ReturnNameEx(playerid, 0), gTargetName[playerid]);
  38831. ShowMDCPlayerMenu(playerid);
  38832. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET Warrants = 0 WHERE Username = '%s'", gTargetName[playerid]);
  38833. mysql_tquery(gConnection, gExecute);
  38834. if (IsPlayerConnected(targetid))
  38835. {
  38836. SendInfoMessage(targetid, "%s has cleared your warrants.", ReturnNameEx(playerid));
  38837. Players[targetid][pWarrants] = 0;
  38838. }
  38839. }
  38840. case 3:
  38841. {
  38842. format(gExecute, sizeof(gExecute), "SELECT ID, Age, Origin, Warrants, CarLicense, GunLicense, TotalWarrants FROM rp_accounts WHERE Username = '%s'", gTargetName[playerid]);
  38843. mysql_tquery(gConnection, gExecute, "OnMDCViewInformation", "i", playerid);
  38844. }
  38845. }
  38846. }
  38847. else
  38848. {
  38849. ShowMDCMainMenu(playerid);
  38850. }
  38851. return 1;
  38852. }
  38853. Dialog:SearchPlayer(playerid, response, listitem, inputtext[])
  38854. {
  38855. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  38856. {
  38857. return 0;
  38858. }
  38859. if (response)
  38860. {
  38861. if (isnull(inputtext) || strlen(inputtext) > 24)
  38862. {
  38863. return Dialog_Show(playerid, SearchPlayer, DIALOG_STYLE_INPUT, "{FFFFFF}Search Player", "Please input the full name of the player:", "Submit", "Cancel");
  38864. }
  38865. else
  38866. {
  38867. format(gExecute, sizeof(gExecute), "SELECT ID, Warrants FROM rp_accounts WHERE Username = '%s'", mysql_escaped(inputtext));
  38868. mysql_tquery(gConnection, gExecute, "OnPlayerSearchPlayer", "is", playerid, inputtext);
  38869. }
  38870. }
  38871. else
  38872. {
  38873. ShowMDCMainMenu(playerid);
  38874. }
  38875. return 1;
  38876. }
  38877. Dialog:MDC_LookUp(playerid, response, listitem, inputtext[])
  38878. {
  38879. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  38880. {
  38881. return 0;
  38882. }
  38883. if (response)
  38884. {
  38885. if (isnull(inputtext) || strlen(inputtext) > 24)
  38886. {
  38887. return Dialog_Show(playerid, MDC_LookUp, DIALOG_STYLE_INPUT, "{FFFFFF}Mobile Data Computer - Name Search", "Error: Please enter a name.\n\nPlease enter the full name of the person:", "Submit", "Cancel");
  38888. }
  38889. else
  38890. {
  38891. //format(gExecute, sizeof(gExecute), "SELECT ID, Warrants FROM rp_accounts WHERE Username = '%s'", mysql_escaped(inputtext));
  38892. format(gExecute, sizeof(gExecute), "SELECT ID, Warrants FROM rp_accounts WHERE Username = '%s'", mysql_escaped(inputtext));
  38893. mysql_tquery(gConnection, gExecute, "OnMdcSearchPlayer", "is", playerid, inputtext);
  38894. }
  38895. }
  38896. else
  38897. {
  38898. ShowNewMDCMenu(playerid);
  38899. //Dialog_Show(playerid, MDC_MainMenu, DIALOG_STYLE_LIST, "{FFFFFF}Mobile Data Computer - Main Menu", "MAIN SCREEN\nNAME SEARCH\nPLATE SEARCH\nSERIAL SEARCH\nADDRESS SEARCH\nLAST 911\nCALLSIGNS", "Login", "Exit");
  38900. }
  38901. return 1;
  38902. }
  38903. Dialog:MDC_Login(playerid, response, listitem, inputtext[])
  38904. {
  38905. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  38906. {
  38907. return 0;
  38908. }
  38909. if (response)
  38910. {
  38911. ShowNewMDCMenu(playerid);
  38912. /*new string[256];
  38913. format(string, sizeof(string), "%s %s\n\nOFFICERS ON DUTY: %i\nCALLS LAST HOUR: 0\nARRESTS LAST HOUR: 0", GetPlayerFactionRank(playerid), ReturnNameEx(playerid));*/
  38914. //Dialog_Show(playerid, MDC_MainMenu, DIALOG_STYLE_LIST, "{FFFFFF}Mobile Data Computer - Main Menu", "MAIN SCREEN\nNAME SEARCH\nPLATE SEARCH\nSERIAL SEARCH\nADDRESS SEARCH\nLAST 911\nCALLSIGNS", "Login", "Exit"); }
  38915. }
  38916. return 1;
  38917. }
  38918. Dialog:MDC_MainMenu(playerid, response, listitem, inputtext[])
  38919. {
  38920. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  38921. {
  38922. return 0;
  38923. }
  38924. if (response)
  38925. {
  38926. switch (listitem)
  38927. {
  38928. case 0:
  38929. {
  38930. ShowNewMDC(playerid);
  38931. }
  38932. case 1:
  38933. {
  38934. Dialog_Show(playerid, MDC_LookUp, DIALOG_STYLE_INPUT, "{FFFFFF}Mobile Data Computer - Name Search", "Please enter the full name of the person:", "Submit", "Cancel");
  38935. }
  38936. case 2:
  38937. {
  38938. Dialog_Show(playerid, MDC_PlateSearch, DIALOG_STYLE_INPUT, "{FFFFFF}Mobile Data Computer - Plate Search", "Please enter the full plate number:", "Submit", "Cancel");
  38939. }
  38940. case 3:
  38941. {
  38942. Dialog_Show(playerid, MDC_SerialSearch, DIALOG_STYLE_INPUT, "{FFFFFF}Mobile Data Computer - Serial Search", "Please enter the full serial number:", "Submit", "Cancel");
  38943. }
  38944. case 4:
  38945. {
  38946. Dialog_Show(playerid, MDC_AddressSearch, DIALOG_STYLE_INPUT, "{FFFFFF}Mobile Data Computer - Address Search", "Please enter the full address:", "Submit", "Cancel");
  38947. }
  38948. case 5:
  38949. {
  38950. //Dialog_Show(playerid, MDC_LastCalls, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Mobile Data Computer - Last 911 Calls", "Number\tMessage\tDate\n12345\t'Test Test Test Test Test..'\t01/01/2001", "Options", "Cancel");
  38951. ListEmergency(playerid);
  38952. }
  38953. case 6:
  38954. {
  38955. //ShowFactionRoster(playerid);
  38956. //ShowCallsignMenu(playerid);
  38957. ShowCallsigns(playerid);
  38958. }
  38959. }
  38960. }
  38961. return 1;
  38962. }
  38963. Dialog:MDC_CallsignMenu(playerid, response, listitem, inputtext[])
  38964. {
  38965. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  38966. {
  38967. return 0;
  38968. }
  38969. if (response)
  38970. {
  38971. /*for (new i = 0; i < sizeof(g_Callsigns); i ++)
  38972. {
  38973. if(g_Callsigns[i][e_CallsignFaction] == 1)
  38974. {
  38975. format(string, sizeof(string), "%s\nNobody\t%s\t%s", string, g_Callsigns[i][e_CallsignTextShort], g_Callsigns[i][e_CallsignTextFull]);
  38976. }
  38977. }*/
  38978. if (g_Callsigns[listitem][e_CallsignTakenBy] != INVALID_ID && g_Callsigns[listitem][e_CallsignTakenBy] != playerid)
  38979. {
  38980. SendErrorMessage(playerid, "This callsign is already taken.");
  38981. return 1;
  38982. }
  38983. if (g_Callsigns[listitem][e_CallsignTakenBy] == playerid)
  38984. {
  38985. SendFactionMessage(Players[playerid][pFaction], COLOR_RADIO, "** %s has left callsign %s. **", ReturnNameEx(playerid, 0), g_Callsigns[listitem][e_CallsignTextFull]);
  38986. Players[playerid][pFactionCallsign] = 0;
  38987. g_Callsigns[listitem][e_CallsignTakenBy] = INVALID_ID;
  38988. return 1;
  38989. }
  38990. if (Players[playerid][pFactionCallsign] != 0)
  38991. return SendErrorMessage(playerid, "You already have a callsign.");
  38992. Players[playerid][pFactionCallsign] = listitem;
  38993. g_Callsigns[listitem][e_CallsignTakenBy] = playerid;
  38994. SendFactionMessage(Players[playerid][pFaction], COLOR_RADIO, "** %s has taken callsign %s. **", ReturnNameEx(playerid, 0), g_Callsigns[listitem][e_CallsignTextFull]);
  38995. }
  38996. else
  38997. {
  38998. ShowNewMDCMenu(playerid);
  38999. }
  39000. return 1;
  39001. }
  39002. /*
  39003. Dialog:SearchPlayer(playerid, response, listitem, inputtext[])
  39004. {
  39005. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  39006. {
  39007. return 0;
  39008. }
  39009. if (response)
  39010. {
  39011. if (isnull(inputtext) || strlen(inputtext) > 24)
  39012. {
  39013. return Dialog_Show(playerid, SearchPlayer, DIALOG_STYLE_INPUT, "{FFFFFF}Search Player", "Please input the full name of the player:", "Submit", "Cancel");
  39014. }
  39015. else
  39016. {
  39017. format(gExecute, sizeof(gExecute), "SELECT ID, Warrants FROM rp_accounts WHERE Username = '%s'", mysql_escaped(inputtext));
  39018. mysql_tquery(gConnection, gExecute, "OnPlayerSearchPlayer", "is", playerid, inputtext);
  39019. }
  39020. }
  39021. else
  39022. {
  39023. ShowMDCMainMenu(playerid);
  39024. }
  39025. return 1;
  39026. }
  39027. */
  39028. Dialog:MDC(playerid, response, listitem, inputtext[])
  39029. {
  39030. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  39031. {
  39032. return 0;
  39033. }
  39034. if (response)
  39035. {
  39036. switch (listitem)
  39037. {
  39038. case 0:
  39039. {
  39040. Dialog_Show(playerid, SearchPlayer, DIALOG_STYLE_INPUT, "{FFFFFF}Search Player", "Please input the full name of the player:", "Submit", "Cancel");
  39041. }
  39042. case 1:
  39043. {
  39044. new success = ListApbs(playerid);
  39045. if (!success)
  39046. {
  39047. return SendErrorMessage(playerid,"There are no APBs active.");
  39048. }
  39049. /*new
  39050. index,
  39051. displayString[2048];
  39052. foreach (new i : Player)
  39053. {
  39054. if (Players[i][pWarrants] > 0)
  39055. {
  39056. format(displayString, sizeof(displayString), "%s\n%s (%i warrants)", displayString, ReturnNameEx(i, 0), Players[i][pWarrants]);
  39057. gListedItems[playerid][index++] = i;
  39058. }
  39059. }
  39060. if (index)
  39061. {
  39062. Dialog_Show(playerid, ListWarrants, DIALOG_STYLE_LIST, "{FFFFFF}Outstanding Warrants", displayString, "Track", "Cancel");
  39063. }
  39064. else
  39065. {
  39066. SendErrorMessage(playerid, "There are no outstanding warrants to list.");
  39067. }*/
  39068. }
  39069. case 2:
  39070. {
  39071. Dialog_Show(playerid, TracePlate, DIALOG_STYLE_INPUT, "{FFFFFF}Trace Plate", "Please input the license plate of the vehicle to trace:", "Submit", "Cancel");
  39072. }
  39073. case 3:
  39074. {
  39075. Dialog_Show(playerid, TraceSerial, DIALOG_STYLE_INPUT, "{FFFFFF}Trace Serial", "Please input the serial number of the weapon to trace:", "Submit", "Cancel");
  39076. }
  39077. case 4:
  39078. {
  39079. Dialog_Show(playerid, FindAddress, DIALOG_STYLE_INPUT, "{FFFFFF}Find Address", "Please input the address of the house to trace:", "Submit", "Cancel");
  39080. }
  39081. }
  39082. }
  39083. return 1;
  39084. }
  39085. Dialog:LocateHouse(playerid, response, listitem, inputtext[])
  39086. {
  39087. if (response)
  39088. {
  39089. if (isnull(inputtext))
  39090. {
  39091. return Dialog_Show(playerid, LocateHouse, DIALOG_STYLE_INPUT, "{FFFFFF}Locate house", "Please input the house address and the GPS system will locate it for you:", "Locate", "Back");
  39092. }
  39093. else
  39094. {
  39095. new string[2048], count;
  39096. format(string,sizeof(string),"Address\tLocation\tOwner\tValue\n");
  39097. for (new i = 0; i < MAX_HOUSES; i ++)
  39098. {
  39099. if (IsValidHouseID(i) && strfind(Houses[i][hAddress], inputtext, true) != -1)
  39100. {
  39101. //format(string, sizeof(string), "%s%s\t%s\t%s\t%s\n", string, Houses[i][hAddress], GetZoneName(Houses[i][hSpawn][0], Houses[i][hSpawn][1], Houses[i][hSpawn][2]), (Houses[i][hOwner]) ? ("Yes") : ("No"), FormatNumber(Houses[i][hValue]));
  39102. if (!Houses[i][hOwner])
  39103. {
  39104. format(string, sizeof(string), "%s%s\t%s\t%s\t%s\n", string, Houses[i][hAddress], GetZoneName(Houses[i][hSpawn][0], Houses[i][hSpawn][1], Houses[i][hSpawn][2]), "Nobody", FormatNumber(Houses[i][hValue]));
  39105. }
  39106. else
  39107. {
  39108. format(string, sizeof(string), "%s%s\t%s\t%s\t%s\n", string, Houses[i][hAddress], GetZoneName(Houses[i][hSpawn][0], Houses[i][hSpawn][1], Houses[i][hSpawn][2]), Houses[i][hOwnerName], FormatNumber(Houses[i][hValue]));
  39109. }
  39110. count ++;
  39111. }
  39112. /*if (IsValidHouseID(i) && !strcmp(Houses[i][hAddress], inputtext, true))
  39113. {
  39114. SetCheckpoint(playerid, CHECKPOINT_GPS, Houses[i][hSpawn][0], Houses[i][hSpawn][1], Houses[i][hSpawn][2], 3.0);
  39115. SendInfoMessage(playerid, "GPS: A waypoint has been set to %s.", Houses[i][hAddress]);
  39116. return 1;
  39117. }*/
  39118. }
  39119. if (!count)
  39120. {
  39121. return SendErrorMessage(playerid, "There isn't any house with the specified address.");
  39122. }
  39123. else
  39124. {
  39125. Dialog_Show(playerid, LocateHouse_List, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}House List", string, "Locate", "Back");
  39126. }
  39127. //SendErrorMessage(playerid, "There isn't any house with the specified address.");
  39128. }
  39129. }
  39130. return 1;
  39131. }
  39132. Dialog:LocateHouse_List(playerid, response, listitem, inputtext[])
  39133. {
  39134. if (response)
  39135. {
  39136. //SendInfoMessage(playerid, "%i, %s", listitem, inputtext);
  39137. for (new i = 0; i < MAX_HOUSES; i ++)
  39138. {
  39139. if (IsValidHouseID(i) && !strcmp(Houses[i][hAddress], inputtext, true))
  39140. {
  39141. SetCheckpoint(playerid, CHECKPOINT_GPS, Houses[i][hSpawn][0], Houses[i][hSpawn][1], Houses[i][hSpawn][2], 3.0);
  39142. SendInfoMessage(playerid, "GPS: A waypoint has been set to %s.", Houses[i][hAddress]);
  39143. }
  39144. }
  39145. }
  39146. return 1;
  39147. }
  39148. Dialog:LocateCompany(playerid, response, listitem, inputtext[])
  39149. {
  39150. if (response)
  39151. {
  39152. new
  39153. company = GetClosestCompanyID(playerid, ++listitem);
  39154. if (company == INVALID_ID)
  39155. {
  39156. SendErrorMessage(playerid, "The GPS could not locate any company of this type.");
  39157. }
  39158. else
  39159. {
  39160. SetCheckpoint(playerid, CHECKPOINT_GPS, Companies[company][cSpawn][0], Companies[company][cSpawn][1], Companies[company][cSpawn][2], 3.0);
  39161. SendInfoMessage(playerid, "GPS: A waypoint has been set to the closest %s.", inputtext);
  39162. }
  39163. }
  39164. return 1;
  39165. }
  39166. Dialog:GPS(playerid, response, listitem, inputtext[])
  39167. {
  39168. new string[512];
  39169. if (response)
  39170. {
  39171. switch (listitem)
  39172. {
  39173. case 0:
  39174. {
  39175. for (new i = 0; i < sizeof(g_CompanyTypes); i ++) {
  39176. strcat(string, g_CompanyTypes[i]);
  39177. strcat(string, "\n");
  39178. }
  39179. Dialog_Show(playerid, LocateCompany, DIALOG_STYLE_LIST, "{FFFFFF}Locate company", string, "Waypoint", "Back");
  39180. }
  39181. case 1:
  39182. {
  39183. Dialog_Show(playerid, LocateHouse, DIALOG_STYLE_INPUT, "{FFFFFF}Locate house", "Please input the house address and the GPS system will locate it for you:", "Locate", "Back");
  39184. }
  39185. case 2:
  39186. {
  39187. new shop = GetClosestAutoShopID(playerid);
  39188. if (shop == INVALID_ID)
  39189. {
  39190. SendErrorMessage(playerid, "The GPS couldn't locate any nearby auto shops.");
  39191. }
  39192. else
  39193. {
  39194. SetCheckpoint(playerid, CHECKPOINT_GPS, AutoShops[shop][asX], AutoShops[shop][asY], AutoShops[shop][asZ], 3.0);
  39195. SendInfoMessage(playerid, "GPS: A waypoint has been set to the closest auto shop.");
  39196. }
  39197. }
  39198. case 3:
  39199. {
  39200. SetCheckpoint(playerid, CHECKPOINT_GPS, g_StaticBuildings[BUILDING_DMV][e_SpawnX], g_StaticBuildings[BUILDING_DMV][e_SpawnY], g_StaticBuildings[BUILDING_DMV][e_SpawnZ], 3.0);
  39201. SendInfoMessage(playerid, "GPS: A waypoint has been set to the department of motor vehicles.");
  39202. }
  39203. case 4:
  39204. {
  39205. SetCheckpoint(playerid, CHECKPOINT_GPS, 1041.2220, -1028.3320, 32.1016, 3.0);
  39206. SendInfoMessage(playerid, "GPS: A waypoint has been set to the modding shop.");
  39207. }
  39208. }
  39209. }
  39210. return 1;
  39211. }
  39212. Dialog:Resign(playerid, response, listitem, inputtext[])
  39213. {
  39214. if (response)
  39215. {
  39216. if (Players[playerid][pFaction] != INVALID_ID)
  39217. {
  39218. SendFactionMessage(Players[playerid][pFaction], COLOR_RADIO, "(( %s has resigned from the faction. ))", ReturnNameEx(playerid, 0));
  39219. ResetFactionInfo(playerid);
  39220. }
  39221. }
  39222. return 1;
  39223. }
  39224. Dialog:EditPaychecks(playerid, response, listitem, inputtext[])
  39225. {
  39226. if (response)
  39227. {
  39228. new
  39229. faction = Players[playerid][pSelected];
  39230. if (IsValidFactionID(faction))
  39231. {
  39232. Players[playerid][pEditRank] = listitem + 1;
  39233. Dialog_Show(playerid, ChangePay, DIALOG_STYLE_INPUT, "{FFFFFF}Change Paycheck", "The current paycheck for rank %i is %s.\n\nPlease input the new paycheck amount to set for this rank:", "Change", "Back", Players[playerid][pEditRank], FormatNumber(GetFactionRankPay(faction, Players[playerid][pEditRank])));
  39234. }
  39235. }
  39236. return 1;
  39237. }
  39238. Dialog:ChangePay(playerid, response, listitem, inputtext[])
  39239. {
  39240. new
  39241. faction = Players[playerid][pSelected];
  39242. if (!IsValidFactionID(faction))
  39243. {
  39244. return 0;
  39245. }
  39246. if (response)
  39247. {
  39248. new amount;
  39249. if (sscanf(inputtext, "i", amount))
  39250. {
  39251. return Dialog_Show(playerid, ChangePay, DIALOG_STYLE_INPUT, "{FFFFFF}Change Paycheck", "The current paycheck for rank %i is %s.\n\nPlease input the new paycheck amount to set for this rank:", "Change", "Back", Players[playerid][pEditRank], FormatNumber(GetFactionRankPay(faction, Players[playerid][pEditRank])));
  39252. }
  39253. else if (amount < 1)
  39254. {
  39255. return Dialog_Show(playerid, ChangePay, DIALOG_STYLE_INPUT, "{FFFFFF}Change Paycheck", "The paycheck can't be below $0.\n\nThe current paycheck for rank %i is %s.\n\nPlease input the new paycheck amount to set for this rank:", "Change", "Back", Players[playerid][pEditRank], FormatNumber(GetFactionRankPay(faction, Players[playerid][pEditRank])));
  39256. }
  39257. else
  39258. {
  39259. Factions[faction][fcPaycheck][Players[playerid][pEditRank]-1] = amount;
  39260. SaveFactionRank(faction, Players[playerid][pEditRank]-1);
  39261. SendInfoMessage(playerid, "You have changed the paycheck of rank %i to: %s.", Players[playerid][pEditRank], FormatNumber(amount));
  39262. ShowPaycheckEditMenu(playerid, faction);
  39263. }
  39264. }
  39265. else
  39266. {
  39267. ShowPaycheckEditMenu(playerid, faction);
  39268. }
  39269. return 1;
  39270. }
  39271. Dialog:EditRanks(playerid, response, listitem, inputtext[])
  39272. {
  39273. if (response)
  39274. {
  39275. new
  39276. faction = Players[playerid][pSelected];
  39277. if (IsValidFactionID(faction))
  39278. {
  39279. Players[playerid][pEditRank] = listitem + 1;
  39280. Dialog_Show(playerid, ChangeRank, DIALOG_STYLE_INPUT, "{FFFFFF}Change Rank", "The rank name for rank %i is %s.\n\nPlease input the new name for this rank:", "Change", "Back", Players[playerid][pEditRank], GetFactionRank(faction, Players[playerid][pEditRank]));
  39281. }
  39282. }
  39283. return 1;
  39284. }
  39285. Dialog:ChangeRank(playerid, response, listitem, inputtext[])
  39286. {
  39287. new
  39288. faction = Players[playerid][pSelected];
  39289. if (!IsValidFactionID(faction))
  39290. {
  39291. return 0;
  39292. }
  39293. if (response)
  39294. {
  39295. if (isnull(inputtext))
  39296. {
  39297. return Dialog_Show(playerid, ChangeRank, DIALOG_STYLE_INPUT, "{FFFFFF}Change Rank", "The rank name for rank %i is %s.\n\nPlease input the new name for this rank:", "Change", "Back", Players[playerid][pEditRank], GetFactionRank(faction, Players[playerid][pEditRank]));
  39298. }
  39299. else if (strlen(inputtext) > MAX_RANK_NAME)
  39300. {
  39301. return Dialog_Show(playerid, ChangeRank, DIALOG_STYLE_INPUT, "{FFFFFF}Change Rank", "The rank name can't contain over "#MAX_RANK_NAME" characters.\n\nThe rank name for rank %i is %s.\n\nPlease input the new name for this rank:", "Change", "Back", Players[playerid][pEditRank], GetFactionRank(faction, Players[playerid][pEditRank]));
  39302. }
  39303. else
  39304. {
  39305. strcpy(Ranks[faction][Players[playerid][pEditRank]-1], inputtext, MAX_RANK_NAME);
  39306. SaveFactionRank(faction, Players[playerid][pEditRank]-1);
  39307. SendInfoMessage(playerid, "You have changed the name of rank %i to: %s.", Players[playerid][pEditRank], inputtext);
  39308. ShowRankEditMenu(playerid, faction);
  39309. }
  39310. }
  39311. else
  39312. {
  39313. ShowRankEditMenu(playerid, faction);
  39314. }
  39315. return 1;
  39316. }
  39317. Dialog:Weapon(playerid, response, listitem, inputtext[])
  39318. {
  39319. if (response)
  39320. {
  39321. switch (listitem)
  39322. {
  39323. case 0:
  39324. {
  39325. switch (Players[playerid][pSelected])
  39326. {
  39327. case WEAPON_MELEE:
  39328. {
  39329. new item = AddItemToInventory(playerid, GetWeaponItemName(Weapons[playerid][wMelee]));
  39330. if (item == INVALID_ID)
  39331. {
  39332. return SendErrorMessage(playerid, "There is no more room in your inventory.");
  39333. }
  39334. else
  39335. {
  39336. SendInfoMessage(playerid, "You have unequipped your %s.", GetWeapon(Weapons[playerid][wMelee]));
  39337. SetPlayerWeapon(playerid, WEAPON_MELEE, 0);
  39338. ShowWeaponMenu(playerid);
  39339. }
  39340. }
  39341. case WEAPON_PRIMARY:
  39342. {
  39343. new item = AddItemToInventory(playerid, GetWeaponItemName(Weapons[playerid][wPrimary]), Weapons[playerid][wPrimaryAmmo], Weapons[playerid][wPrimarySerial]);
  39344. if (item == INVALID_ID)
  39345. {
  39346. return SendErrorMessage(playerid, "There is no more room in your inventory.");
  39347. }
  39348. else
  39349. {
  39350. SendInfoMessage(playerid, "You have unequipped your %s (%i ammo).", GetWeapon(Weapons[playerid][wPrimary]), Weapons[playerid][wPrimaryAmmo]);
  39351. SetPlayerWeapon(playerid, WEAPON_PRIMARY, 0);
  39352. ShowWeaponMenu(playerid);
  39353. }
  39354. }
  39355. case WEAPON_SECONDARY:
  39356. {
  39357. new item = AddItemToInventory(playerid, GetWeaponItemName(Weapons[playerid][wSecondary]), Weapons[playerid][wSecondaryAmmo], Weapons[playerid][wSecondarySerial]);
  39358. if (item == INVALID_ID)
  39359. {
  39360. return SendErrorMessage(playerid, "There is no more room in your inventory.");
  39361. }
  39362. else
  39363. {
  39364. SendInfoMessage(playerid, "You have unequipped your %s (%i ammo).", GetWeapon(Weapons[playerid][wSecondary]), Weapons[playerid][wSecondaryAmmo]);
  39365. SetPlayerWeapon(playerid, WEAPON_SECONDARY, 0);
  39366. ShowWeaponMenu(playerid);
  39367. }
  39368. }
  39369. case WEAPON_TERTIARY:
  39370. {
  39371. new item = AddItemToInventory(playerid, GetWeaponItemName(Weapons[playerid][wTertiary]), Weapons[playerid][wTertiaryAmmo], Weapons[playerid][wTertiarySerial]);
  39372. if (item == INVALID_ID)
  39373. {
  39374. return SendErrorMessage(playerid, "There is no more room in your inventory.");
  39375. }
  39376. else
  39377. {
  39378. SendInfoMessage(playerid, "You have unequipped your %s (%i ammo).", GetWeapon(Weapons[playerid][wTertiary]), Weapons[playerid][wTertiaryAmmo]);
  39379. SetPlayerWeapon(playerid, WEAPON_TERTIARY, 0);
  39380. ShowWeaponMenu(playerid);
  39381. }
  39382. }
  39383. }
  39384. }
  39385. case 1:
  39386. {
  39387. new weaponid = GetPlayerWeaponID(playerid, Players[playerid][pSelected]);
  39388. if (!weaponid)
  39389. {
  39390. return SendErrorMessage(playerid, "There is no weapon in this slot.");
  39391. }
  39392. else if (!IsHolsterWeapon(weaponid))
  39393. {
  39394. return SendErrorMessage(playerid, "This weapon cannot be attached to your body.");
  39395. }
  39396. else
  39397. {
  39398. ShowMenuForWeapon(playerid, Players[playerid][pSelected]);
  39399. }
  39400. }
  39401. case 2:
  39402. {
  39403. new weaponid = GetPlayerWeaponID(playerid, Players[playerid][pSelected]);
  39404. if (!weaponid)
  39405. {
  39406. return SendErrorMessage(playerid, "There is no weapon in this slot.");
  39407. }
  39408. DiscardWeapon(playerid, Players[playerid][pSelected]);
  39409. }
  39410. }
  39411. }
  39412. return 1;
  39413. }
  39414. Dialog:WeaponList(playerid, response, listitem, inputtext[])
  39415. {
  39416. new type = Players[playerid][pChoose];
  39417. Players[playerid][pChoose] = CHOOSE_TYPE_NONE;
  39418. if (response)
  39419. {
  39420. new
  39421. weaponid = GetPlayerWeaponID(playerid, listitem),
  39422. ammo = GetPlayerWeaponAmmo(playerid, listitem);
  39423. if (!weaponid)
  39424. {
  39425. return SendErrorMessage(playerid, "There is no weapon in this slot.");
  39426. }
  39427. switch (type)
  39428. {
  39429. case CHOOSE_TYPE_NONE:
  39430. {
  39431. switch (listitem)
  39432. {
  39433. case 0:
  39434. {
  39435. Players[playerid][pSelected] = WEAPON_MELEE;
  39436. Dialog_Show(playerid, Weapon, DIALOG_STYLE_LIST, "{FFFFFF}Melee Weapon", "Add to Inventory\nAdjust Weapon\nDrop Weapon", "Select", "Back");
  39437. }
  39438. case 1:
  39439. {
  39440. Players[playerid][pSelected] = WEAPON_PRIMARY;
  39441. Dialog_Show(playerid, Weapon, DIALOG_STYLE_LIST, "{FFFFFF}Primary Weapon", "Add to Inventory\nAdjust Weapon\nDrop Weapon", "Select", "Back");
  39442. }
  39443. case 2:
  39444. {
  39445. Players[playerid][pSelected] = WEAPON_SECONDARY;
  39446. Dialog_Show(playerid, Weapon, DIALOG_STYLE_LIST, "{FFFFFF}Secondary Weapon", "Add to Inventory\nAdjust Weapon\nDrop Weapon", "Select", "Back");
  39447. }
  39448. case 3:
  39449. {
  39450. Players[playerid][pSelected] = WEAPON_TERTIARY;
  39451. Dialog_Show(playerid, Weapon, DIALOG_STYLE_LIST, "{FFFFFF}Tertiary Weapon", "Add to Inventory\nAdjust Weapon\nDrop Weapon", "Select", "Back");
  39452. }
  39453. }
  39454. }
  39455. case CHOOSE_TYPE_TRUNK:
  39456. {
  39457. new
  39458. vehicle = GetVehicleID(GetClosestVehicle(playerid));
  39459. Players[playerid][pChoose] = CHOOSE_TYPE_NONE;
  39460. if (IsValidVehicleID(vehicle))
  39461. {
  39462. if (GetItemInformation(GetWeaponItemName(weaponid), ITEM_INFO_WEIGHT) + GetTrunkTotalWeight(vehicle) > GetTrunkCapacity(vehicle))
  39463. {
  39464. return SendErrorMessage(playerid, "There is no more room in the trunk.");
  39465. }
  39466. if (GetNextStoredItemID() == INVALID_ID)
  39467. {
  39468. return SendErrorMessage(playerid, "There is no more room in the trunk.");
  39469. }
  39470. else
  39471. {
  39472. if(Players[playerid][pFaction] != INVALID_ID && Factions[Players[playerid][pFaction]][fcType] != FACTION_ILLEGAL)
  39473. {
  39474. SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}You cannot store weapons in the trunk while being in an official faction.");
  39475. }
  39476. else
  39477. {
  39478. if (ammo > 0)
  39479. {
  39480. SendInfoMessage(playerid, "You have stored your %s (%i) in the trunk.", GetWeapon(weaponid), ammo);
  39481. }
  39482. else
  39483. {
  39484. SendInfoMessage(playerid, "You have stored your %s in the trunk.", GetWeapon(weaponid));
  39485. }
  39486. AddStoredItem(TRANSFER_TO_TRUNK, Vehicles[vehicle][vID], GetWeaponItemName(weaponid), ammo);
  39487. SetPlayerWeapon(playerid, listitem, 0);
  39488. ShowActionBubble(playerid, "* %s takes out a weapon and stores it in the trunk.", ReturnNameEx(playerid));
  39489. //ShowTrunkItems(playerid, vehicle);
  39490. }
  39491. }
  39492. }
  39493. }
  39494. case CHOOSE_TYPE_SAFE:
  39495. {
  39496. new
  39497. safe = Players[playerid][pSafeMenu];
  39498. Players[playerid][pChoose] = CHOOSE_TYPE_NONE;
  39499. if (IsValidFurnitureID(safe) && Furniture[safe][fSafeOpen])
  39500. {
  39501. if (GetItemInformation(GetWeaponItemName(weaponid), ITEM_INFO_WEIGHT) + GetSafeTotalWeight(safe) > MAX_SAFE_WEIGHT)
  39502. {
  39503. return SendErrorMessage(playerid, "There is no more room in the safe.");
  39504. }
  39505. if (GetNextStoredItemID() == INVALID_ID)
  39506. {
  39507. return SendErrorMessage(playerid, "There is no more room in the safe.");
  39508. }
  39509. else
  39510. {
  39511. if(Players[playerid][pFaction] != INVALID_ID && Factions[Players[playerid][pFaction]][fcType] != FACTION_ILLEGAL)
  39512. {
  39513. SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}You cannot store weapons in the trunk while being in an official faction.");
  39514. }
  39515. else
  39516. {
  39517. if (ammo > 0)
  39518. {
  39519. SendInfoMessage(playerid, "You have stored your %s (%i) in the safe.", GetWeapon(weaponid), ammo);
  39520. }
  39521. else
  39522. {
  39523. SendInfoMessage(playerid, "You have stored your %s in the safe.", GetWeapon(weaponid));
  39524. }
  39525. AddStoredItem(TRANSFER_TO_SAFE, Furniture[safe][fID], GetWeaponItemName(weaponid), ammo);
  39526. SetPlayerWeapon(playerid, listitem, 0);
  39527. ShowActionBubble(playerid, "* %s takes out a weapon and stores it in the safe.", ReturnNameEx(playerid));
  39528. ShowSafeItems(playerid, safe);
  39529. }
  39530. }
  39531. }
  39532. }
  39533. case CHOOSE_TYPE_TRASH:
  39534. {
  39535. new
  39536. trashbin = Players[playerid][pTrashbin];
  39537. Players[playerid][pChoose] = CHOOSE_TYPE_NONE;
  39538. if (IsValidTrashbinID(trashbin))
  39539. {
  39540. if (GetItemInformation(GetWeaponItemName(weaponid), ITEM_INFO_WEIGHT) + GetTrashbinTotalWeight(trashbin) > MAX_TRASHBIN_WEIGHT)
  39541. {
  39542. return SendErrorMessage(playerid, "There is no more room in the trashbin.");
  39543. }
  39544. if (GetNextStoredItemID() == INVALID_ID)
  39545. {
  39546. return SendErrorMessage(playerid, "There is no more room in the trashbin.");
  39547. }
  39548. else
  39549. {
  39550. if(Players[playerid][pFaction] != INVALID_ID && Factions[Players[playerid][pFaction]][fcType] != FACTION_ILLEGAL)
  39551. {
  39552. SendClientMessage(playerid, -1, "{FF0000}ERROR: {FFFFFF}You cannot store weapons in the trunk while being in an official faction.");
  39553. }
  39554. else
  39555. {
  39556. if (ammo > 0)
  39557. {
  39558. SendInfoMessage(playerid, "You have stored your %s (%i) in the trashbin.", GetWeapon(weaponid), ammo);
  39559. }
  39560. else
  39561. {
  39562. SendInfoMessage(playerid, "You have stored your %s in the trashbin.", GetWeapon(weaponid));
  39563. }
  39564. AddStoredItem(TRANSFER_TO_TRASH, Trashbins[trashbin][tID], GetWeaponItemName(weaponid), ammo);
  39565. SetPlayerWeapon(playerid, listitem, 0);
  39566. ShowActionBubble(playerid, "* %s takes out a weapon and stores it in the trashbin.", ReturnNameEx(playerid));
  39567. ShowTrashbinItems(playerid, trashbin);
  39568. }
  39569. }
  39570. }
  39571. }
  39572. }
  39573. }
  39574. return 1;
  39575. }
  39576. Dialog:MyInventory(playerid, response, listitem, inputtext[])
  39577. {
  39578. if (response)
  39579. {
  39580. if (!strcmp(inputtext, "Weapon Menu"))
  39581. {
  39582. return ShowWeaponMenu(playerid);
  39583. }
  39584. if (Weapons[playerid][wMelee] > 0 || Weapons[playerid][wPrimary] > 0 || Weapons[playerid][wSecondary] > 0) {
  39585. Players[playerid][pSelected] = gListedItems[playerid][listitem - 1];
  39586. } else {
  39587. Players[playerid][pSelected] = gListedItems[playerid][listitem];
  39588. }
  39589. if (!Inventory[playerid][Players[playerid][pSelected]][invExists])
  39590. {
  39591. return 0;
  39592. }
  39593. else
  39594. {
  39595. switch (Players[playerid][pChoose])
  39596. {
  39597. case CHOOSE_TYPE_NONE:
  39598. {
  39599. new
  39600. string[128];
  39601. format(string, sizeof(string), "{33AA33}%s", GetFullItemName(playerid, Players[playerid][pSelected]));
  39602. if (GetItemInformation(Inventory[playerid][Players[playerid][pSelected]][invName], ITEM_INFO_WEAPON_ID) > 0)
  39603. {
  39604. Dialog_Show(playerid, ItemMenu, DIALOG_STYLE_LIST, string, "Equip Item\nGive Item\nDrop Item", "Select", "Close");
  39605. }
  39606. else if (GetItemInformation(Inventory[playerid][Players[playerid][pSelected]][invName], ITEM_INFO_DRUG))
  39607. {
  39608. Dialog_Show(playerid, ItemMenu, DIALOG_STYLE_LIST, string, "Consume\nGive Item\nDrop Item", "Select", "Close");
  39609. }
  39610. else if (!strcmp(Inventory[playerid][Players[playerid][pSelected]][invName], "Mobile Phone") && Inventory[playerid][Players[playerid][pSelected]][invValue] > 0)
  39611. {
  39612. if (Players[playerid][pPhone] != Inventory[playerid][Players[playerid][pSelected]][invValue])
  39613. {
  39614. Dialog_Show(playerid, ItemMenu, DIALOG_STYLE_LIST, string, "Set to Primary\nGive Item\nDrop Item", "Select", "Close");
  39615. }
  39616. else
  39617. {
  39618. Dialog_Show(playerid, ItemMenu, DIALOG_STYLE_LIST, string, "Unset Primary\nGive Item\nDrop Item", "Select", "Close");
  39619. }
  39620. }
  39621. else if (!strcmp(Inventory[playerid][Players[playerid][pSelected]][invName], "Mask"))
  39622. {
  39623. if (Players[playerid][pMaskID] > 0)
  39624. {
  39625. Dialog_Show(playerid, ItemMenu, DIALOG_STYLE_LIST, string, "Put Away\nGive Item\nDrop Item", "Select", "Close");
  39626. }
  39627. else
  39628. {
  39629. Dialog_Show(playerid, ItemMenu, DIALOG_STYLE_LIST, string, "Wear Mask\nGive Item\nDrop Item", "Select", "Close");
  39630. }
  39631. }
  39632. else if (!strcmp(Inventory[playerid][Players[playerid][pSelected]][invName], "Stereo"))
  39633. {
  39634. if (Stereos[playerid][pStereoID] != INVALID_ID)
  39635. {
  39636. Dialog_Show(playerid, ItemMenu, DIALOG_STYLE_LIST, string, "Put Away\nGive Item\nDrop Item", "Select", "Close");
  39637. }
  39638. else
  39639. {
  39640. Dialog_Show(playerid, ItemMenu, DIALOG_STYLE_LIST, string, "Deploy Item\nGive Item\nDrop Item", "Select", "Close");
  39641. }
  39642. }
  39643. else if (!strcmp(Inventory[playerid][Players[playerid][pSelected]][invName], "Walkie Talkie"))
  39644. {
  39645. Dialog_Show(playerid, ItemMenu, DIALOG_STYLE_LIST, string, "Settings\nGive Item\nDrop Item", "Select", "Close");
  39646. }
  39647. else if (!strcmp(Inventory[playerid][Players[playerid][pSelected]][invName], "Portable Radio"))
  39648. {
  39649. Dialog_Show(playerid, ItemMenu, DIALOG_STYLE_LIST, string, "Settings\nGive Item\nDrop Item", "Select", "Close");
  39650. }
  39651. else
  39652. {
  39653. Dialog_Show(playerid, ItemMenu, DIALOG_STYLE_LIST, string, "Use Item\nGive Item\nDrop Item", "Select", "Close");
  39654. }
  39655. }
  39656. case CHOOSE_TYPE_TRUNK:
  39657. {
  39658. new
  39659. vehicle = GetVehicleID(GetClosestVehicle(playerid));
  39660. Players[playerid][pChoose] = CHOOSE_TYPE_NONE;
  39661. if (IsValidVehicleID(vehicle))
  39662. {
  39663. new
  39664. id = AddItemToTrunk(playerid, vehicle, Players[playerid][pSelected]);
  39665. if (id == INVALID_ID)
  39666. {
  39667. return SendErrorMessage(playerid, "There is no room in the trunk.");
  39668. }
  39669. else
  39670. {
  39671. format(gExecute, sizeof(gExecute), "INSERT INTO rp_itemlogs (Player, Item, Action, Date) VALUES('%s', '%s', 'Stored in Trunk', NOW())", ReturnName(playerid), GetStoredItemName(id));
  39672. mysql_tquery(gConnection, gExecute);
  39673. ShowActionBubble(playerid, "* %s stores an item in the trunk.", ReturnNameEx(playerid));
  39674. SendInfoMessage(playerid, "{CFCFCF}You have stored an item:{33AA33} %s.", GetStoredItemName(id));
  39675. //ShowTrunkItems(playerid, vehicle);
  39676. }
  39677. }
  39678. }
  39679. case CHOOSE_TYPE_SAFE:
  39680. {
  39681. new
  39682. safe = Players[playerid][pSafeMenu];
  39683. Players[playerid][pChoose] = CHOOSE_TYPE_NONE;
  39684. if (IsValidFurnitureID(safe) && Furniture[safe][fSafeOpen])
  39685. {
  39686. if (GetItemInformation(Inventory[playerid][Players[playerid][pSelected]][invName], ITEM_INFO_WEAPON_ID) >= WEAPON_COLT45 && GetItemInformation(Inventory[playerid][Players[playerid][pSelected]][invName], ITEM_INFO_WEAPON_ID) <= WEAPON_SNIPER)
  39687. {
  39688. if (Factions[Players[playerid][pFaction]][fcType] != FACTION_ILLEGAL) return SendErrorMessage(playerid, "You must be in an illegal faction to store guns in trash bin.");
  39689. }
  39690. new
  39691. id = AddItemToSafe(playerid, safe, Players[playerid][pSelected]);
  39692. if (id == INVALID_ID)
  39693. {
  39694. return SendErrorMessage(playerid, "There is no room in the safe.");
  39695. }
  39696. else
  39697. {
  39698. format(gExecute, sizeof(gExecute), "INSERT INTO rp_itemlogs (Player, Item, Action, Date) VALUES('%s', '%s', 'Stored in Safe', NOW())", ReturnName(playerid), GetStoredItemName(id));
  39699. mysql_tquery(gConnection, gExecute);
  39700. ShowActionBubble(playerid, "* %s stores an item in the safe.", ReturnNameEx(playerid));
  39701. SendInfoMessage(playerid, "{CFCFCF}You have stored an item:{33AA33} %s.", GetStoredItemName(id));
  39702. ShowSafeItems(playerid, safe);
  39703. }
  39704. }
  39705. }
  39706. case CHOOSE_TYPE_TRASH:
  39707. {
  39708. new
  39709. trashbin = Players[playerid][pTrashbin];
  39710. Players[playerid][pChoose] = CHOOSE_TYPE_NONE;
  39711. if (IsValidTrashbinID(trashbin))
  39712. {
  39713. if (GetItemInformation(Inventory[playerid][Players[playerid][pSelected]][invName], ITEM_INFO_WEAPON_ID) >= WEAPON_COLT45 && GetItemInformation(Inventory[playerid][Players[playerid][pSelected]][invName], ITEM_INFO_WEAPON_ID) <= WEAPON_SNIPER)
  39714. {
  39715. if (Factions[Players[playerid][pFaction]][fcType] != FACTION_ILLEGAL) return SendErrorMessage(playerid, "You must be in an illegal faction to store guns in trash bin.");
  39716. }
  39717. new id = AddItemToTrashbin(playerid, trashbin, Players[playerid][pSelected]);
  39718. if (id == INVALID_ID)
  39719. {
  39720. return SendErrorMessage(playerid, "There is no room in the trashbin.");
  39721. }
  39722. else
  39723. {
  39724. format(gExecute, sizeof(gExecute), "INSERT INTO rp_itemlogs (Player, Item, Action, Date) VALUES('%s', '%s', 'Stored in Trashbin', NOW())", ReturnName(playerid), GetStoredItemName(id));
  39725. mysql_tquery(gConnection, gExecute);
  39726. ShowActionBubble(playerid, "* %s stores an item in the trashbin.", ReturnNameEx(playerid));
  39727. SendInfoMessage(playerid, "{CFCFCF}You have stored an item:{33AA33} %s.", GetStoredItemName(id));
  39728. ShowTrashbinItems(playerid, trashbin);
  39729. }
  39730. }
  39731. }
  39732. }
  39733. }
  39734. }
  39735. else
  39736. {
  39737. Players[playerid][pChoose] = CHOOSE_TYPE_NONE;
  39738. }
  39739. return 1;
  39740. }
  39741. Dialog:UseCuffs(playerid, response, listitem, inputtext[])
  39742. {
  39743. if (response)
  39744. {
  39745. new targetid;
  39746. if (sscanf(inputtext, "u", targetid))
  39747. {
  39748. return Dialog_Show(playerid, UseCuffs, DIALOG_STYLE_INPUT, "{FFFFFF}Use Cuffs", "Please input the player that you would like to cuff:", "Cuff", "Cancel");
  39749. }
  39750. else if (!IsPlayerConnected(targetid))
  39751. {
  39752. return Dialog_Show(playerid, UseCuffs, DIALOG_STYLE_INPUT, "{FFFFFF}Use Cuffs", "You have specified an invalid target.\n\nPlease input the player that you would like to cuff:", "Cuff", "Cancel");
  39753. }
  39754. /*else if (targetid == playerid)
  39755. {
  39756. return Dialog_Show(playerid, UseCuffs, DIALOG_STYLE_INPUT, "{FFFFFF}Use Cuffs", "You can't handcuff yourself!\n\nPlease input the player that you would like to cuff:", "Cuff", "Cancel");
  39757. }*/
  39758. else if (!IsPlayerInRangeOfPlayer(playerid, targetid))
  39759. {
  39760. return Dialog_Show(playerid, UseCuffs, DIALOG_STYLE_INPUT, "{FFFFFF}Use Cuffs", "The target is out of range.\n\nPlease input the player that you would like to cuff:", "Cuff", "Cancel");
  39761. }
  39762. else if (Players[targetid][pHandcuffed])
  39763. {
  39764. return Dialog_Show(playerid, UseCuffs, DIALOG_STYLE_INPUT, "{FFFFFF}Use Cuffs", "The target is already cuffed.\n\nPlease input the player that you would like to cuff:", "Cuff", "Cancel");
  39765. }
  39766. else
  39767. {
  39768. new item = GetInventoryItemID(playerid, "Cuffs");
  39769. Players[targetid][pHandcuffed] = 1;
  39770. Players[targetid][pCuffedBy] = playerid;
  39771. RemoveItemFromInventory(playerid, item);
  39772. SetPlayerSpecialAction(targetid, SPECIAL_ACTION_CUFFED);
  39773. ShowActionBubble(playerid, "* %s secures a pair of cuffs around %s's wrists.", ReturnNameEx(playerid), ReturnNameEx(targetid));
  39774. SendInfoMessage(playerid, "You have handcuffed %s. Use /uncuff to remove the cuffs.", ReturnNameEx(targetid));
  39775. SendInfoMessage(targetid, "You have been handcuffed by %s.", ReturnNameEx(playerid));
  39776. }
  39777. }
  39778. return 1;
  39779. }
  39780. Dialog:AddEquipment(playerid, response, listitem, inputtext[])
  39781. {
  39782. new
  39783. faction = Players[playerid][pSelected];
  39784. if(!IsValidFactionID(faction))
  39785. {
  39786. return 0;
  39787. }
  39788. if(response)
  39789. {
  39790. Players[playerid][pSelectedItem] = listitem;
  39791. Dialog_Show(playerid, AddEquipmentValue, DIALOG_STYLE_INPUT, "{FFFFFF}Equipment Value", "Please enter the value for %s (enter 0 for none):", "Submit", "Back", g_ItemList[Players[playerid][pSelectedItem]][e_ItemName]);
  39792. }
  39793. else
  39794. {
  39795. ShowEquipmentEditMenu(playerid, faction);
  39796. }
  39797. return 1;
  39798. }
  39799. Dialog:AddEquipmentValue(playerid, response, listitem, inputtext[])
  39800. {
  39801. new
  39802. faction = Players[playerid][pSelected];
  39803. if(!IsValidFactionID(faction))
  39804. {
  39805. return 0;
  39806. }
  39807. if(response)
  39808. {
  39809. new value;
  39810. if(sscanf(inputtext, "i", value) || value < 0)
  39811. {
  39812. return Dialog_Show(playerid, AddEquipmentValue, DIALOG_STYLE_INPUT, "{FFFFFF}Equipment Value", "Please enter the value for %s (enter 0 for none):", "Submit", "Back", g_ItemList[Players[playerid][pSelectedItem]][e_ItemName]);
  39813. }
  39814. strcpy(FactionEquipment[faction][Players[playerid][pEditEquipment]][fcItemName], g_ItemList[Players[playerid][pSelectedItem]][e_ItemName], MAX_ITEM_NAME);
  39815. FactionEquipment[faction][Players[playerid][pEditEquipment]][fcItemValue] = value;
  39816. FactionEquipment[faction][Players[playerid][pEditEquipment]][fcItemExists] = 1;
  39817. SaveFactionEquipment(faction, Players[playerid][pEditEquipment]);
  39818. if(value)
  39819. SendInfoMessage(playerid, "You have added %s (%i) to %s's locker.", FactionEquipment[faction][Players[playerid][pEditEquipment]][fcItemName], FactionEquipment[faction][Players[playerid][pEditEquipment]][fcItemValue], Factions[faction][fcName]);
  39820. else
  39821. SendInfoMessage(playerid, "You have added %s to %s's locker.", FactionEquipment[faction][Players[playerid][pEditEquipment]][fcItemName], Factions[faction][fcName]);
  39822. ShowEquipmentEditMenu(playerid, faction);
  39823. }
  39824. else
  39825. {
  39826. ShowEquipmentEditMenu(playerid, faction);
  39827. }
  39828. return 1;
  39829. }
  39830. Dialog:EditEquipmentItem(playerid, response, listitem, inputtext[])
  39831. {
  39832. new
  39833. faction = Players[playerid][pSelected];
  39834. if(!IsValidFactionID(faction))
  39835. {
  39836. return 0;
  39837. }
  39838. if(response)
  39839. {
  39840. SendInfoMessage(playerid, "You have changed %s in %s's locker to %s.", FactionEquipment[faction][Players[playerid][pEditEquipment]][fcItemName], Factions[faction][fcName], g_ItemList[listitem][e_ItemName]);
  39841. strcpy(FactionEquipment[faction][Players[playerid][pEditEquipment]][fcItemName], g_ItemList[listitem][e_ItemName], MAX_ITEM_NAME);
  39842. SaveFactionEquipment(faction, Players[playerid][pEditEquipment]);
  39843. Dialog_Show(playerid, EquipmentEdit, DIALOG_STYLE_LIST, "{FFFFFF}Edit Equipment", "Edit Item (%s)\nEdit Value (%i)\nDelete from Locker", "Select", "Back", FactionEquipment[faction][Players[playerid][pEditEquipment]][fcItemName], FactionEquipment[faction][Players[playerid][pEditEquipment]][fcItemValue]);
  39844. }
  39845. else
  39846. {
  39847. Dialog_Show(playerid, EquipmentEdit, DIALOG_STYLE_LIST, "{FFFFFF}Edit Equipment", "Edit Item (%s)\nEdit Value (%i)\nDelete from Locker", "Select", "Back", FactionEquipment[faction][Players[playerid][pEditEquipment]][fcItemName], FactionEquipment[faction][Players[playerid][pEditEquipment]][fcItemValue]);
  39848. }
  39849. return 1;
  39850. }
  39851. Dialog:EditEquipmentValue(playerid, response, listitem, inputtext[])
  39852. {
  39853. new
  39854. faction = Players[playerid][pSelected];
  39855. if(!IsValidFactionID(faction))
  39856. {
  39857. return 0;
  39858. }
  39859. if(response)
  39860. {
  39861. new value;
  39862. if(sscanf(inputtext, "i", value) || value < 0)
  39863. {
  39864. return Dialog_Show(playerid, EditEquipmentValue, DIALOG_STYLE_INPUT, "{FFFFFF}Edit Value", "Please enter the new value for %s (enter 0 for none):", "Submit", "Back", FactionEquipment[faction][Players[playerid][pEditEquipment]][fcItemName]);
  39865. }
  39866. SendInfoMessage(playerid, "You have set the value of %s in %s's locker to %i.", FactionEquipment[faction][Players[playerid][pEditEquipment]][fcItemName], Factions[faction][fcName], value);
  39867. FactionEquipment[faction][Players[playerid][pEditEquipment]][fcItemValue] = value;
  39868. SaveFactionEquipment(faction, Players[playerid][pEditEquipment]);
  39869. Dialog_Show(playerid, EquipmentEdit, DIALOG_STYLE_LIST, "{FFFFFF}Edit Equipment", "Edit Item (%s)\nEdit Value (%i)\nDelete from Locker", "Select", "Back", FactionEquipment[faction][Players[playerid][pEditEquipment]][fcItemName], FactionEquipment[faction][Players[playerid][pEditEquipment]][fcItemValue]);
  39870. }
  39871. else
  39872. {
  39873. Dialog_Show(playerid, EquipmentEdit, DIALOG_STYLE_LIST, "{FFFFFF}Edit Equipment", "Edit Item (%s)\nEdit Value (%i)\nDelete from Locker", "Select", "Back", FactionEquipment[faction][Players[playerid][pEditEquipment]][fcItemName], FactionEquipment[faction][Players[playerid][pEditEquipment]][fcItemValue]);
  39874. }
  39875. return 1;
  39876. }
  39877. Dialog:EquipmentEdit(playerid, response, listitem, inputtext[])
  39878. {
  39879. new
  39880. faction = Players[playerid][pSelected];
  39881. if(!IsValidFactionID(faction))
  39882. {
  39883. return 0;
  39884. }
  39885. if(response)
  39886. {
  39887. switch(listitem)
  39888. {
  39889. case 0:
  39890. {
  39891. gListString[0] = 0;
  39892. for(new i = 0; i < sizeof(g_ItemList); i ++)
  39893. {
  39894. strcat(gListString, g_ItemList[i][e_ItemName]);
  39895. strcat(gListString, "\n");
  39896. }
  39897. Dialog_Show(playerid, EditEquipmentItem, DIALOG_STYLE_LIST, "{FFFFFF}Edit Item", gListString, "Select", "Back");
  39898. }
  39899. case 1:
  39900. {
  39901. Dialog_Show(playerid, EditEquipmentValue, DIALOG_STYLE_INPUT, "{FFFFFF}Edit Value", "Please enter the new value for %s (enter 0 for none):", "Submit", "Back", FactionEquipment[faction][Players[playerid][pEditEquipment]][fcItemName]);
  39902. }
  39903. case 2:
  39904. {
  39905. SendInfoMessage(playerid, "You have deleted %s from %s's locker.", FactionEquipment[faction][Players[playerid][pEditEquipment]][fcItemName], Factions[faction][fcName]);
  39906. mysql_format(gConnection, gExecute, sizeof(gExecute), "DELETE FROM rp_factionequipment WHERE itemFactionID = %i AND itemSlot = %i", Factions[faction][fcID], Players[playerid][pEditEquipment]);
  39907. mysql_tquery(gConnection, gExecute);
  39908. FactionEquipment[faction][Players[playerid][pEditEquipment]][fcItemExists] = 0;
  39909. FactionEquipment[faction][Players[playerid][pEditEquipment]][fcItemName] = 0;
  39910. FactionEquipment[faction][Players[playerid][pEditEquipment]][fcItemValue] = 0;
  39911. ShowEquipmentEditMenu(playerid, faction);
  39912. }
  39913. }
  39914. }
  39915. else
  39916. {
  39917. ShowEquipmentEditMenu(playerid, faction);
  39918. }
  39919. return 1;
  39920. }
  39921. Dialog:EditEquipment(playerid, response, listitem, inputtext[])
  39922. {
  39923. new
  39924. faction = Players[playerid][pSelected];
  39925. if(!IsValidFactionID(faction))
  39926. {
  39927. return 0;
  39928. }
  39929. if(response)
  39930. {
  39931. Players[playerid][pEditEquipment] = listitem;
  39932. if(!FactionEquipment[faction][listitem][fcItemExists])
  39933. {
  39934. gListString[0] = 0;
  39935. for(new i = 0; i < sizeof(g_ItemList); i ++)
  39936. {
  39937. strcat(gListString, g_ItemList[i][e_ItemName]);
  39938. strcat(gListString, "\n");
  39939. }
  39940. Dialog_Show(playerid, AddEquipment, DIALOG_STYLE_LIST, "{FFFFFF}Add Equipment to Locker", gListString, "Select", "Back");
  39941. }
  39942. else
  39943. {
  39944. Dialog_Show(playerid, EquipmentEdit, DIALOG_STYLE_LIST, "{FFFFFF}Edit Equipment", "Edit Item (%s)\nEdit Value (%i)\nDelete from Locker", "Select", "Back", FactionEquipment[faction][listitem][fcItemName], FactionEquipment[faction][listitem][fcItemValue]);
  39945. }
  39946. }
  39947. else
  39948. {
  39949. ShowFactionEditMenu(playerid, faction);
  39950. }
  39951. return 1;
  39952. }
  39953. Dialog:AddAccessoryModel(playerid, response, listitem, inputtext[])
  39954. {
  39955. new
  39956. faction = Players[playerid][pSelected];
  39957. if(!IsValidFactionID(faction))
  39958. {
  39959. return 0;
  39960. }
  39961. if(response)
  39962. {
  39963. new modelid;
  39964. if(sscanf(inputtext, "i", modelid))
  39965. {
  39966. return Dialog_Show(playerid, AddAccessoryModel, DIALOG_STYLE_INPUT, "{FFFFFF}Add Accessory - Model ID", "Please enter the model ID for the associated accessory:\n(List of objects: http://wiki.sa-mp.com/wiki/Samp_objects)", "Submit", "Back");
  39967. }
  39968. if(!IsValidModelID(modelid))
  39969. {
  39970. return Dialog_Show(playerid, AddAccessoryModel, DIALOG_STYLE_INPUT, "{FFFFFF}Add Accessory - Model ID", "Invalid model ID.\n\nPlease enter the model ID for the associated accessory:\n(List of objects: http://wiki.sa-mp.com/wiki/Samp_objects)", "Submit", "Back");
  39971. }
  39972. new string[200];
  39973. for (new i = 1; i <= 18; i ++) {
  39974. strcat(string, GetBoneName(i));
  39975. strcat(string, "\n");
  39976. }
  39977. Players[playerid][pAccessoryModel] = modelid;
  39978. Dialog_Show(playerid, AddAccessoryBone, DIALOG_STYLE_LIST, "{FFFFFF}Add Accessory - Select Bone", string, "Select", "Back");
  39979. }
  39980. else
  39981. {
  39982. ShowAccessoryEditMenu(playerid, faction);
  39983. }
  39984. return 1;
  39985. }
  39986. Dialog:AddAccessoryBone(playerid, response, listitem, inputtext[])
  39987. {
  39988. new
  39989. faction = Players[playerid][pSelected];
  39990. if(!IsValidFactionID(faction))
  39991. {
  39992. return 0;
  39993. }
  39994. if(response)
  39995. {
  39996. strcpy(FactionAccessories[faction][Players[playerid][pEditAccessory]][fcAccessoryName], Players[playerid][pAccessoryName], 32);
  39997. FactionAccessories[faction][Players[playerid][pEditAccessory]][fcAccessoryModel] = Players[playerid][pAccessoryModel];
  39998. FactionAccessories[faction][Players[playerid][pEditAccessory]][fcAccessoryBone] = listitem + 1;
  39999. FactionAccessories[faction][Players[playerid][pEditAccessory]][fcAccessoryExists] = 1;
  40000. SaveFactionAccessory(faction, Players[playerid][pEditAccessory]);
  40001. SendInfoMessage(playerid, "You have added %s (model ID: %i) to %s's locker.", FactionAccessories[faction][Players[playerid][pEditAccessory]][fcAccessoryName], FactionAccessories[faction][Players[playerid][pEditAccessory]][fcAccessoryModel], Factions[faction][fcName]);
  40002. ShowAccessoryEditMenu(playerid, faction);
  40003. }
  40004. else
  40005. {
  40006. ShowAccessoryEditMenu(playerid, faction);
  40007. }
  40008. return 1;
  40009. }
  40010. Dialog:AddAccessory(playerid, response, listitem, inputtext[])
  40011. {
  40012. new
  40013. faction = Players[playerid][pSelected];
  40014. if(!IsValidFactionID(faction))
  40015. {
  40016. return 0;
  40017. }
  40018. if(response)
  40019. {
  40020. if(isnull(inputtext))
  40021. {
  40022. return Dialog_Show(playerid, AddAccessory, DIALOG_STYLE_INPUT, "{FFFFFF}Add Accessory", "Please enter the name of the accessory you wish to add:", "Submit", "Back");
  40023. }
  40024. strcpy(Players[playerid][pAccessoryName], inputtext, 32);
  40025. Dialog_Show(playerid, AddAccessoryModel, DIALOG_STYLE_INPUT, "{FFFFFF}Add Accessory - Model ID", "Please enter the model ID for the associated accessory:\n(List of objects: http://wiki.sa-mp.com/wiki/Samp_objects)", "Submit", "Back");
  40026. }
  40027. else
  40028. {
  40029. ShowAccessoryEditMenu(playerid, faction);
  40030. }
  40031. return 1;
  40032. }
  40033. Dialog:EditAccessories(playerid, response, listitem, inputtext[])
  40034. {
  40035. new
  40036. faction = Players[playerid][pSelected];
  40037. if(!IsValidFactionID(faction))
  40038. {
  40039. return 0;
  40040. }
  40041. if(response)
  40042. {
  40043. Players[playerid][pEditAccessory] = listitem;
  40044. if(!FactionAccessories[faction][listitem][fcAccessoryExists])
  40045. {
  40046. Dialog_Show(playerid, AddAccessory, DIALOG_STYLE_INPUT, "{FFFFFF}Add Accessory", "Please enter the name of the accessory you wish to add:", "Submit", "Back");
  40047. }
  40048. else
  40049. {
  40050. Dialog_Show(playerid, AccessoryEdit, DIALOG_STYLE_LIST, "{FFFFFF}Edit Accessory", "Edit Name (%s)\nEdit Model (%i)\nEdit Bone (%s)\nDelete from Locker", "Select", "Back", FactionAccessories[faction][listitem][fcAccessoryName], FactionAccessories[faction][listitem][fcAccessoryModel], GetBoneName(FactionAccessories[faction][listitem][fcAccessoryBone]));
  40051. }
  40052. }
  40053. else
  40054. {
  40055. ShowFactionEditMenu(playerid, faction);
  40056. }
  40057. return 1;
  40058. }
  40059. Dialog:AccessoryEdit(playerid, response, listitem, inputtext[])
  40060. {
  40061. new
  40062. faction = Players[playerid][pSelected];
  40063. if(!IsValidFactionID(faction))
  40064. {
  40065. return 0;
  40066. }
  40067. if(response)
  40068. {
  40069. switch(listitem)
  40070. {
  40071. case 0:
  40072. {
  40073. Dialog_Show(playerid, AccessoryName, DIALOG_STYLE_INPUT, "{FFFFFF}Edit Accessory Name", "Please enter the new name of this accessory:", "Submit", "Back");
  40074. }
  40075. case 1:
  40076. {
  40077. Dialog_Show(playerid, AccessoryModel, DIALOG_STYLE_INPUT, "{FFFFFF}Edit Accessory Model", "Please enter the new model ID of this accessory:", "Submit", "Back");
  40078. }
  40079. case 2:
  40080. {
  40081. new string[200];
  40082. for (new i = 1; i <= 18; i ++) {
  40083. strcat(string, GetBoneName(i));
  40084. strcat(string, "\n");
  40085. }
  40086. Dialog_Show(playerid, AccessoryBone, DIALOG_STYLE_LIST, "{FFFFFF}Edit Accessory Bone", string, "Select", "Back");
  40087. }
  40088. case 3:
  40089. {
  40090. SendInfoMessage(playerid, "You have deleted %s (model ID: %i) from %s's locker.", FactionAccessories[faction][Players[playerid][pEditAccessory]][fcAccessoryName], FactionAccessories[faction][Players[playerid][pEditAccessory]][fcAccessoryModel], Factions[faction][fcName]);
  40091. mysql_format(gConnection, gExecute, sizeof(gExecute), "DELETE FROM rp_factionaccessories WHERE accessoryFactionID = %i AND accessorySlot = %i", Factions[faction][fcID], Players[playerid][pEditAccessory]);
  40092. mysql_tquery(gConnection, gExecute);
  40093. FactionAccessories[faction][Players[playerid][pEditAccessory]][fcAccessoryExists] = 0;
  40094. FactionAccessories[faction][Players[playerid][pEditAccessory]][fcAccessoryName] = 0;
  40095. FactionAccessories[faction][Players[playerid][pEditAccessory]][fcAccessoryModel] = 0;
  40096. FactionAccessories[faction][Players[playerid][pEditAccessory]][fcAccessoryBone] = 0;
  40097. ShowAccessoryEditMenu(playerid, faction);
  40098. }
  40099. }
  40100. }
  40101. else
  40102. {
  40103. ShowAccessoryEditMenu(playerid, faction);
  40104. }
  40105. return 1;
  40106. }
  40107. Dialog:AccessoryName(playerid, response, listitem, inputtext[])
  40108. {
  40109. new
  40110. faction = Players[playerid][pSelected];
  40111. if(!IsValidFactionID(faction))
  40112. {
  40113. return 0;
  40114. }
  40115. if(response)
  40116. {
  40117. if(isnull(inputtext) || strlen(inputtext) > 32)
  40118. {
  40119. return Dialog_Show(playerid, AccessoryName, DIALOG_STYLE_INPUT, "{FFFFFF}Edit Accessory Name", "Please enter the new name of this accessory:", "Submit", "Back");
  40120. }
  40121. SendInfoMessage(playerid, "You have changed the name of %s in %s's locker to %s.", FactionAccessories[faction][Players[playerid][pEditAccessory]][fcAccessoryName], Factions[faction][fcName], inputtext);
  40122. strcpy(FactionAccessories[faction][Players[playerid][pEditAccessory]][fcAccessoryName], inputtext, 32);
  40123. SaveFactionAccessory(faction, Players[playerid][pEditAccessory]);
  40124. ShowAccessoryEditMenu(playerid, faction);
  40125. }
  40126. else
  40127. {
  40128. ShowAccessoryEditMenu(playerid, faction);
  40129. }
  40130. return 1;
  40131. }
  40132. Dialog:AccessoryModel(playerid, response, listitem, inputtext[])
  40133. {
  40134. new
  40135. faction = Players[playerid][pSelected];
  40136. if(!IsValidFactionID(faction))
  40137. {
  40138. return 0;
  40139. }
  40140. if(response)
  40141. {
  40142. new modelid;
  40143. if(sscanf(inputtext, "i", modelid))
  40144. {
  40145. return Dialog_Show(playerid, AccessoryModel, DIALOG_STYLE_INPUT, "{FFFFFF}Edit Accessory Model", "Please enter the new model ID of this accessory:", "Submit", "Back");
  40146. }
  40147. if(!IsValidModelID(modelid))
  40148. {
  40149. return Dialog_Show(playerid, AccessoryModel, DIALOG_STYLE_INPUT, "{FFFFFF}Edit Accessory Model", "Invalid model ID.\n\nPlease enter the new model ID of this accessory:", "Submit", "Back");
  40150. }
  40151. SendInfoMessage(playerid, "You have changed the model ID of %s in %s's locker to %i.", FactionAccessories[faction][Players[playerid][pEditAccessory]][fcAccessoryName], Factions[faction][fcName], modelid);
  40152. FactionAccessories[faction][Players[playerid][pEditAccessory]][fcAccessoryModel] = modelid;
  40153. SaveFactionAccessory(faction, Players[playerid][pEditAccessory]);
  40154. ShowAccessoryEditMenu(playerid, faction);
  40155. }
  40156. else
  40157. {
  40158. ShowAccessoryEditMenu(playerid, faction);
  40159. }
  40160. return 1;
  40161. }
  40162. Dialog:AccessoryBone(playerid, response, listitem, inputtext[])
  40163. {
  40164. new
  40165. faction = Players[playerid][pSelected];
  40166. if(!IsValidFactionID(faction))
  40167. {
  40168. return 0;
  40169. }
  40170. if(response)
  40171. {
  40172. new boneid = listitem + 1;
  40173. SendInfoMessage(playerid, "You have changed the bone of %s in %s's locker to %s.", FactionAccessories[faction][Players[playerid][pEditAccessory]][fcAccessoryName], Factions[faction][fcName], GetBoneName(boneid));
  40174. FactionAccessories[faction][Players[playerid][pEditAccessory]][fcAccessoryBone] = boneid;
  40175. SaveFactionAccessory(faction, Players[playerid][pEditAccessory]);
  40176. ShowAccessoryEditMenu(playerid, faction);
  40177. }
  40178. else
  40179. {
  40180. ShowAccessoryEditMenu(playerid, faction);
  40181. }
  40182. return 1;
  40183. }
  40184. Dialog:EditUniform(playerid, response, listitem, inputtext[])
  40185. {
  40186. new
  40187. faction = Players[playerid][pSelected];
  40188. if (!IsValidFactionID(faction))
  40189. {
  40190. return 0;
  40191. }
  40192. if (response)
  40193. {
  40194. new skinid;
  40195. if (sscanf(inputtext, "i", skinid))
  40196. {
  40197. return Dialog_Show(playerid, EditUniform, DIALOG_STYLE_INPUT, "{FFFFFF}Edit Uniform", "Please input a skin ID for uniform %i (use 0 to disable):", "Submit", "Cancel", Players[playerid][pEditUniform] + 1);
  40198. }
  40199. else
  40200. {
  40201. Factions[faction][fcUniforms][Players[playerid][pEditUniform]] = skinid;
  40202. SaveFactionUniform(faction, Players[playerid][pEditUniform]);
  40203. SendInfoMessage(playerid, "You have set the skin ID for uniform %i to %i.", Players[playerid][pEditUniform] + 1, skinid);
  40204. ShowUniformEditMenu(playerid, faction);
  40205. }
  40206. }
  40207. else
  40208. {
  40209. ShowUniformEditMenu(playerid, faction);
  40210. }
  40211. return 1;
  40212. }
  40213. Dialog:EditUniforms(playerid, response, listitem, inputtext[])
  40214. {
  40215. new
  40216. faction = Players[playerid][pSelected];
  40217. if (!IsValidFactionID(faction))
  40218. {
  40219. return 0;
  40220. }
  40221. if (response)
  40222. {
  40223. Players[playerid][pEditUniform] = listitem;
  40224. Dialog_Show(playerid, EditUniform, DIALOG_STYLE_INPUT, "{FFFFFF}Edit Uniform", "Please input a skin ID from 1-311 for uniform %i (use 0 to disable):", "Submit", "Cancel", Players[playerid][pEditUniform] + 1);
  40225. }
  40226. else
  40227. {
  40228. ShowFactionEditMenu(playerid, faction);
  40229. }
  40230. return 1;
  40231. }
  40232. Dialog:FactionName(playerid, response, listitem, inputtext[])
  40233. {
  40234. new
  40235. faction = Players[playerid][pSelected];
  40236. if (!IsValidFactionID(faction))
  40237. {
  40238. return 0;
  40239. }
  40240. if (response)
  40241. {
  40242. if (isnull(inputtext))
  40243. {
  40244. return Dialog_Show(playerid, FactionName, DIALOG_STYLE_INPUT, "{FFFFFF}Faction Name", "The current name for this faction is %s.\n\nPlease input the new name for this faction below:", "Submit", "Back", Factions[faction][fcName]);
  40245. }
  40246. else if (strlen(inputtext) > 32)
  40247. {
  40248. return Dialog_Show(playerid, FactionName, DIALOG_STYLE_INPUT, "{FFFFFF}Faction Name", "The faction name must be below 32 characters.\n\nThe current name for this faction is %s.\n\nPlease input the new name for this faction below:", "Submit", "Back", Factions[faction][fcName]);
  40249. }
  40250. else
  40251. {
  40252. strcpy(Factions[faction][fcName], inputtext, 32);
  40253. SaveFaction(faction);
  40254. SendAdminMessage(COLOR_RED, "Admin: %s has changed faction %i's name to \"%s\".", ReturnNameEx(playerid, 0), faction, inputtext);
  40255. }
  40256. }
  40257. else
  40258. {
  40259. ShowFactionEditMenu(playerid, faction);
  40260. }
  40261. return 1;
  40262. }
  40263. Dialog:FactionType(playerid, response, listitem, inputtext[])
  40264. {
  40265. new
  40266. faction = Players[playerid][pSelected];
  40267. if (!IsValidFactionID(faction))
  40268. {
  40269. return 0;
  40270. }
  40271. if (response)
  40272. {
  40273. Factions[faction][fcType] = listitem + 1;
  40274. SaveFaction(faction);
  40275. SendAdminMessage(COLOR_RED, "Admin: %s has changed faction %i's type to %s (%i).", ReturnNameEx(playerid, 0), faction, GetFactionType(Factions[faction][fcType]), Factions[faction][fcType]);
  40276. }
  40277. else
  40278. {
  40279. ShowFactionEditMenu(playerid, faction);
  40280. }
  40281. return 1;
  40282. }
  40283. Dialog:FactionColor(playerid, response, listitem, inputtext[])
  40284. {
  40285. new
  40286. faction = Players[playerid][pSelected];
  40287. if (!IsValidFactionID(faction))
  40288. {
  40289. return 0;
  40290. }
  40291. if (response)
  40292. {
  40293. new color;
  40294. if (sscanf(inputtext, "h", color))
  40295. {
  40296. return Dialog_Show(playerid, FactionColor, DIALOG_STYLE_INPUT, "{FFFFFF}Faction Color", "The color must be in the 0xRRGGBBAA format.\n\nThe current color for this faction is %s{AAC4E5}.\n\nPlease input the new color for this faction below (0xRRGGBBAA):", "Submit", "Back", GetFactionEmbedColor(faction));
  40297. }
  40298. else
  40299. {
  40300. Factions[faction][fcColor] = color & ~0xFF;
  40301. SaveFaction(faction);
  40302. SendAdminMessage(COLOR_RED, "Admin: %s has changed faction %i's color to %s.", ReturnNameEx(playerid, 0), faction, GetFactionEmbedColor(faction));
  40303. }
  40304. }
  40305. else
  40306. {
  40307. ShowFactionEditMenu(playerid, faction);
  40308. }
  40309. return 1;
  40310. }
  40311. Dialog:FactionMaxRanks(playerid, response, listitem, inputtext[])
  40312. {
  40313. new
  40314. faction = Players[playerid][pSelected];
  40315. if (!IsValidFactionID(faction))
  40316. {
  40317. return 0;
  40318. }
  40319. if (response)
  40320. {
  40321. new maxranks;
  40322. if (sscanf(inputtext, "i", maxranks))
  40323. {
  40324. return Dialog_Show(playerid, FactionMaxRanks, DIALOG_STYLE_INPUT, "{FFFFFF}Faction Ranks", "The current maximum ranks for this faction is %i.\n\nPlease input the maximum amount of ranks for this faction below:", "Submit", "Back", Factions[faction][fcMaxRanks]);
  40325. }
  40326. else if (maxranks < 1 || maxranks > MAX_FACTION_RANKS)
  40327. {
  40328. return Dialog_Show(playerid, FactionMaxRanks, DIALOG_STYLE_INPUT, "{FFFFFF}Faction Ranks", "The maximum ranks must range between 1 and %i.\n\nThe current maximum ranks for this faction is %i.\n\nPlease input the maximum amount of ranks for this faction below:", "Submit", "Back", MAX_FACTION_RANKS, Factions[faction][fcMaxRanks]);
  40329. }
  40330. else
  40331. {
  40332. foreach (new i : Player) {
  40333. if (Players[i][pFaction] == faction && Players[i][pFactionRank] > maxranks) {
  40334. Players[i][pFactionRank] = maxranks;
  40335. }
  40336. }
  40337. Factions[faction][fcMaxRanks] = maxranks;
  40338. SaveFaction(faction);
  40339. SendAdminMessage(COLOR_RED, "Admin: %s has changed faction %i's maximum rank count to %i.", ReturnNameEx(playerid, 0), faction, maxranks);
  40340. }
  40341. }
  40342. else
  40343. {
  40344. ShowFactionEditMenu(playerid, faction);
  40345. }
  40346. return 1;
  40347. }
  40348. Dialog:EditFaction(playerid, response, listitem, inputtext[])
  40349. {
  40350. new
  40351. faction = Players[playerid][pSelected];
  40352. if (!IsValidFactionID(faction))
  40353. {
  40354. return 0;
  40355. }
  40356. if (response)
  40357. {
  40358. switch (listitem)
  40359. {
  40360. case 0:
  40361. {
  40362. Dialog_Show(playerid, FactionName, DIALOG_STYLE_INPUT, "{FFFFFF}Faction Name", "The current name for this faction is %s.\n\nPlease input the new name for this faction below:", "Submit", "Back", Factions[faction][fcName]);
  40363. }
  40364. case 1:
  40365. {
  40366. new types[128];
  40367. for (new i = 1; i <= 5; i ++) {
  40368. format(types, sizeof(types), "%s\n%s", types, GetFactionType(i));
  40369. }
  40370. Dialog_Show(playerid, FactionType, DIALOG_STYLE_LIST, "{FFFFFF}Faction Type", types, "Select", "Back");
  40371. }
  40372. case 2:
  40373. {
  40374. Dialog_Show(playerid, FactionColor, DIALOG_STYLE_INPUT, "{FFFFFF}Faction Color", "The current color for this faction is %s{AAC4E5}.\n\nPlease input the new color for this faction below (0xRRGGBBAA)", "Submit", "Back", GetFactionEmbedColor(faction));
  40375. }
  40376. case 3:
  40377. {
  40378. Dialog_Show(playerid, FactionMaxRanks, DIALOG_STYLE_INPUT, "{FFFFFF}Faction Ranks", "The current maximum ranks for this faction is %i.\n\nPlease input the maximum amount of ranks for this faction below:", "Submit", "Back", Factions[faction][fcMaxRanks]);
  40379. }
  40380. case 4:
  40381. {
  40382. if (Factions[faction][fcType] != FACTION_ILLEGAL)
  40383. {
  40384. SendErrorMessage(playerid, "This feature is only available for illegal factions.");
  40385. }
  40386. else
  40387. {
  40388. ShowFactionRights(playerid, faction);
  40389. }
  40390. }
  40391. case 5:
  40392. {
  40393. ShowRankEditMenu(playerid, faction);
  40394. }
  40395. case 6:
  40396. {
  40397. if (Factions[faction][fcType] == FACTION_ILLEGAL)
  40398. {
  40399. SendErrorMessage(playerid, "This feature is not available for illegal factions.");
  40400. }
  40401. else
  40402. {
  40403. ShowPaycheckEditMenu(playerid, faction);
  40404. }
  40405. }
  40406. case 7:
  40407. {
  40408. GetPlayerPos(playerid, Factions[faction][fcSpawnX], Factions[faction][fcSpawnY], Factions[faction][fcSpawnZ]);
  40409. GetPlayerFacingAngle(playerid, Factions[faction][fcSpawnA]);
  40410. Factions[faction][fcSpawnInt] = GetPlayerInterior(playerid);
  40411. Factions[faction][fcSpawnWorld] = GetPlayerVirtualWorld(playerid);
  40412. SaveFaction(faction);
  40413. SendAdminMessage(COLOR_RED, "Admin: %s has edited the faction spawn of faction %i.", ReturnNameEx(playerid, 0), faction);
  40414. }
  40415. case 8:
  40416. {
  40417. GetPlayerPos(playerid, Factions[faction][fcLockerX], Factions[faction][fcLockerY], Factions[faction][fcLockerZ]);
  40418. Factions[faction][fcLockerInt] = GetPlayerInterior(playerid);
  40419. Factions[faction][fcLockerWorld] = GetPlayerVirtualWorld(playerid);
  40420. UpdateFaction(faction);
  40421. SaveFaction(faction);
  40422. SendAdminMessage(COLOR_RED, "Admin: %s has edited the locker spawn of faction %i.", ReturnNameEx(playerid, 0), faction);
  40423. }
  40424. case 9:
  40425. {
  40426. ShowUniformEditMenu(playerid, faction);
  40427. }
  40428. case 10:
  40429. {
  40430. if(Factions[faction][fcType] == FACTION_ILLEGAL)
  40431. {
  40432. return SendErrorMessage(playerid, "You can't edit equipment for illegal faction lockers.");
  40433. }
  40434. ShowEquipmentEditMenu(playerid, faction);
  40435. }
  40436. case 11:
  40437. {
  40438. if(Factions[faction][fcType] == FACTION_ILLEGAL)
  40439. {
  40440. return SendErrorMessage(playerid, "You can't edit accessories for illegal faction lockers.");
  40441. }
  40442. ShowAccessoryEditMenu(playerid, faction);
  40443. }
  40444. }
  40445. }
  40446. return 1;
  40447. }
  40448. Dialog:PaymentType(playerid, response, listitem, inputtext[])
  40449. {
  40450. if (response)
  40451. {
  40452. switch (listitem)
  40453. {
  40454. case 0:
  40455. {
  40456. Players[playerid][pPaymentType] = PAYMENT_TYPE_CASH;
  40457. Players[playerid][pBankAccount] = 0;
  40458. SendInfoMessage(playerid, "Your future payments will now be made with cash.");
  40459. }
  40460. case 1:
  40461. {
  40462. new
  40463. success = ShowBankAccounts(playerid, BANK_PAYMENT_TYPE);
  40464. if (!success)
  40465. {
  40466. SendErrorMessage(playerid, "You need a registered bank account to do this.");
  40467. }
  40468. }
  40469. }
  40470. }
  40471. return 1;
  40472. }
  40473. Dialog:UseAmmunition(playerid, response, listitem, inputtext[])
  40474. {
  40475. new
  40476. id = Players[playerid][pSelected],
  40477. bullets = Inventory[playerid][id][invValue];
  40478. if (response)
  40479. {
  40480. switch (listitem)
  40481. {
  40482. case 0:
  40483. {
  40484. if (22 <= Weapons[playerid][wPrimary] <= 34)
  40485. {
  40486. new clip = GetClipCapacity(Weapons[playerid][wPrimary]);
  40487. if (strcmp(GetAmmunitionType(Weapons[playerid][wPrimary]), Inventory[playerid][id][invName]) != 0)
  40488. {
  40489. return SendErrorMessage(playerid, "This weapon doesn't use that type of ammunition.");
  40490. }
  40491. else if ((clip == 0) || (bullets <= clip))
  40492. {
  40493. RemoveItemFromInventory(playerid, id);
  40494. GiveWeaponAmmo(playerid, WEAPON_PRIMARY, bullets);
  40495. SendInfoMessage(playerid, "{CFCFCF}You have loaded {33AA33}%i{CFCFCF} ammunition into your weapon.", bullets);
  40496. }
  40497. else
  40498. {
  40499. RemoveItemValue(playerid, id, clip);
  40500. GiveWeaponAmmo(playerid, WEAPON_PRIMARY, clip);
  40501. SendInfoMessage(playerid, "{CFCFCF}You have loaded {33AA33}%i{CFCFCF} ammunition into your weapon.", clip);
  40502. }
  40503. SetReloadAnimation(playerid, Weapons[playerid][wPrimary]);
  40504. ShowActionBubble(playerid, "* %s loads some ammunition in their weapon.", ReturnNameEx(playerid));
  40505. }
  40506. }
  40507. case 1:
  40508. {
  40509. if (22 <= Weapons[playerid][wSecondary] <= 34)
  40510. {
  40511. new clip = GetClipCapacity(Weapons[playerid][wSecondary]);
  40512. if (strcmp(GetAmmunitionType(Weapons[playerid][wSecondary]), Inventory[playerid][id][invName]) != 0)
  40513. {
  40514. return SendErrorMessage(playerid, "This weapon doesn't use that type of ammunition.");
  40515. }
  40516. else if ((clip == 0) || (bullets <= clip))
  40517. {
  40518. RemoveItemFromInventory(playerid, id);
  40519. GiveWeaponAmmo(playerid, WEAPON_SECONDARY, bullets);
  40520. SendInfoMessage(playerid, "{CFCFCF}You have loaded {33AA33}%i{CFCFCF} ammunition into your weapon.", bullets);
  40521. }
  40522. else
  40523. {
  40524. RemoveItemValue(playerid, id, clip);
  40525. GiveWeaponAmmo(playerid, WEAPON_SECONDARY, clip);
  40526. SendInfoMessage(playerid, "{CFCFCF}You have loaded {33AA33}%i{CFCFCF} ammunition into your weapon.", clip);
  40527. }
  40528. SetReloadAnimation(playerid, Weapons[playerid][wSecondary]);
  40529. ShowActionBubble(playerid, "* %s loads some ammunition in their weapon.", ReturnNameEx(playerid));
  40530. }
  40531. }
  40532. case 2:
  40533. {
  40534. if (22 <= Weapons[playerid][wTertiary] <= 34)
  40535. {
  40536. new clip = GetClipCapacity(Weapons[playerid][wTertiary]);
  40537. if (strcmp(GetAmmunitionType(Weapons[playerid][wTertiary]), Inventory[playerid][id][invName]) != 0)
  40538. {
  40539. return SendErrorMessage(playerid, "This weapon doesn't use that type of ammunition.");
  40540. }
  40541. else if ((clip == 0) || (bullets <= clip))
  40542. {
  40543. RemoveItemFromInventory(playerid, id);
  40544. GiveWeaponAmmo(playerid, WEAPON_TERTIARY, bullets);
  40545. SendInfoMessage(playerid, "{CFCFCF}You have loaded {33AA33}%i{CFCFCF} ammunition into your weapon.", bullets);
  40546. }
  40547. else
  40548. {
  40549. RemoveItemValue(playerid, id, clip);
  40550. GiveWeaponAmmo(playerid, WEAPON_TERTIARY, clip);
  40551. SendInfoMessage(playerid, "{CFCFCF}You have loaded {33AA33}%i{CFCFCF} ammunition into your weapon.", clip);
  40552. }
  40553. SetReloadAnimation(playerid, Weapons[playerid][wTertiary]);
  40554. ShowActionBubble(playerid, "* %s loads some ammunition in their weapon.", ReturnNameEx(playerid));
  40555. }
  40556. }
  40557. }
  40558. }
  40559. return 1;
  40560. }
  40561. /*
  40562. WeedCheck(playerid)
  40563. {
  40564. new
  40565. id = GetClosestWeedPlant(playerid);
  40566. if (id != INVALID_ID)
  40567. {
  40568. if (0 <= WeedPlants[id][wpTime] <= 19)
  40569. {
  40570. Dialog_Show(playerid, ExamineWeedPlant, DIALOG_STYLE_MSGBOX, "{FFFFFF}Weed Plant", "{6688FF}Stage:\n{FFFFFF}Growing", "Pick up", "Close");
  40571. }
  40572. else if (20 <= WeedPlants[id][wpTime] <= 49)
  40573. {
  40574. Dialog_Show(playerid, ExamineWeedPlant, DIALOG_STYLE_MSGBOX, "{FFFFFF}Weed Plant", "{6688FF}Stage:\n{FFFFFF}Ready", "Pick up", "Close");
  40575. }
  40576. else if (50 <= WeedPlants[id][wpTime] <= 60)
  40577. {
  40578. Dialog_Show(playerid, ExamineWeedPlant, DIALOG_STYLE_MSGBOX, "{FFFFFF}Weed Plant", "{6688FF}Stage:\n{FFFFFF}Dead", "Pick up", "Close");
  40579. }
  40580. }
  40581. }
  40582. */
  40583. Dialog:ExamineWeedPlant(playerid, response, listitem, inputtext[])
  40584. {
  40585. if (response)
  40586. {
  40587. new
  40588. id = GetClosestWeedPlant(playerid);
  40589. if (id == INVALID_ID)
  40590. {
  40591. return 0;
  40592. }
  40593. else
  40594. {
  40595. if (0 <= WeedPlants[id][wpTime] <= 899)
  40596. {
  40597. ApplyAnimation(playerid, "BOMBER", "BOM_Plant_In", 4.1, 0, 0, 0, 0, 0);
  40598. SendInfoMessage(playerid, "You pick up the weed plant but it yields nothing.");
  40599. DeleteWeedPlant(id);
  40600. }
  40601. else if (900 <= WeedPlants[id][wpTime] <= 1199)
  40602. {
  40603. new weed = Random(1,5);
  40604. ApplyAnimation(playerid, "BOMBER", "BOM_Plant_In", 4.1, 0, 0, 0, 0, 0);
  40605. SendInfoMessage(playerid, "You harvest %i weed from the plant.", weed);
  40606. DeleteWeedPlant(id);
  40607. AddItemToInventory(playerid, "Marijuana", weed);
  40608. }
  40609. else if (1200 <= WeedPlants[id][wpTime] <= 1399)
  40610. {
  40611. new weed = Random(2,6);
  40612. ApplyAnimation(playerid, "BOMBER", "BOM_Plant_In", 4.1, 0, 0, 0, 0, 0);
  40613. SendInfoMessage(playerid, "You harvest %i weed from the plant.", weed);
  40614. DeleteWeedPlant(id);
  40615. AddItemToInventory(playerid, "Marijuana", weed);
  40616. }
  40617. else if (1400 <= WeedPlants[id][wpTime] <= 1599)
  40618. {
  40619. new weed = Random(3,7);
  40620. ApplyAnimation(playerid, "BOMBER", "BOM_Plant_In", 4.1, 0, 0, 0, 0, 0);
  40621. SendInfoMessage(playerid, "You harvest %i weed from the plant.", weed);
  40622. DeleteWeedPlant(id);
  40623. AddItemToInventory(playerid, "Marijuana", weed);
  40624. }
  40625. else if (WeedPlants[id][wpTime] > 1600)
  40626. {
  40627. new weed = Random(4,8);
  40628. ApplyAnimation(playerid, "BOMBER", "BOM_Plant_In", 4.1, 0, 0, 0, 0, 0);
  40629. SendInfoMessage(playerid, "You harvest %i weed from the plant.", weed);
  40630. DeleteWeedPlant(id);
  40631. AddItemToInventory(playerid, "Marijuana", weed);
  40632. }
  40633. }
  40634. }
  40635. return 1;
  40636. }
  40637. Dialog:ExamineShell(playerid, response, listitem, inputtext[])
  40638. {
  40639. if (response)
  40640. {
  40641. new
  40642. id = GetClosestShell(playerid);
  40643. if (id == INVALID_ID)
  40644. {
  40645. return 0;
  40646. }
  40647. else
  40648. {
  40649. ApplyAnimation(playerid, "BOMBER", "BOM_Plant_In", 4.1, 0, 0, 0, 0, 0);
  40650. ShowActionBubble(playerid, "* %s picks up the shell casing.", ReturnNameEx(playerid));
  40651. SendInfoMessage(playerid, "You have picked up the shell casing (serial: %s).", FormatSerial(ShellCasings[id][scSerial]));
  40652. DeleteShellCasing(id);
  40653. }
  40654. }
  40655. return 1;
  40656. }
  40657. Dialog:BuyVehicle(playerid, response, listitem, inputtext[])
  40658. {
  40659. new
  40660. company = GetCurrentCompany(playerid);
  40661. if (!IsValidCompanyID(company) || Companies[company][cType] != COMPANY_DEALERSHIP)
  40662. {
  40663. return 0;
  40664. }
  40665. if (response)
  40666. {
  40667. Players[playerid][pSelected] = gListedItems[playerid][listitem];
  40668. Dialog_Show(playerid, VehicleConfirm, DIALOG_STYLE_MSGBOX, "{FFFFFF}Confirm purchase", "Are you sure you want to purchase a %s for {00FF00}%s{AAC4E5}?", "Yes", "No", GetVehicleModelName(DealershipCars[Players[playerid][pSelected]][dcModel]), FormatNumber(DealershipCars[Players[playerid][pSelected]][dcPrice]));
  40669. }
  40670. return 1;
  40671. }
  40672. Dialog:EditCar(playerid, response, listitem, inputtext[])
  40673. {
  40674. new
  40675. id = Players[playerid][pSelected];
  40676. if (!IsValidVehicleID(id))
  40677. {
  40678. return 0;
  40679. }
  40680. if (response)
  40681. {
  40682. switch (listitem)
  40683. {
  40684. case 0:
  40685. {
  40686. GetPlayerPos(playerid, Vehicles[id][vSpawn][0], Vehicles[id][vSpawn][1], Vehicles[id][vSpawn][2]);
  40687. GetPlayerFacingAngle(playerid, Vehicles[id][vSpawn][3]);
  40688. UpdateVehicle(id);
  40689. SaveVehicle(id);
  40690. SetFreezePos(playerid, Vehicles[id][vSpawn][0], Vehicles[id][vSpawn][1], Vehicles[id][vSpawn][2] + 2.0, 1000);
  40691. SendInfoMessage(playerid, "You have adjusted the spawn for vehicle %i.", Vehicles[id][vVehicle]);
  40692. }
  40693. case 1:
  40694. {
  40695. Dialog_Show(playerid, VehicleFaction, DIALOG_STYLE_INPUT, "{FFFFFF}Vehicle Faction", "Please input the faction ID for this vehicle (use -1 to reset):", "Submit", "Back");
  40696. }
  40697. case 2:
  40698. {
  40699. Dialog_Show(playerid, VehicleColor1, DIALOG_STYLE_INPUT, "{FFFFFF}Vehicle color 1", "Please input the first color to set for this vehicle:", "Submit", "Cancel");
  40700. }
  40701. case 3:
  40702. {
  40703. Dialog_Show(playerid, VehicleColor2, DIALOG_STYLE_INPUT, "{FFFFFF}Vehicle color 2", "Please input the second color to set for this vehicle:", "Submit", "Cancel");
  40704. }
  40705. case 4:
  40706. {
  40707. if (!Vehicles[id][vSiren])
  40708. {
  40709. Vehicles[id][vSiren] = 1;
  40710. UpdateVehicle(id);
  40711. SaveVehicle(id);
  40712. SendInfoMessage(playerid, "You have enabled the siren for vehicle %i.", Vehicles[id][vVehicle]);
  40713. }
  40714. else
  40715. {
  40716. Vehicles[id][vSiren] = 0;
  40717. UpdateVehicle(id);
  40718. SaveVehicle(id);
  40719. SendInfoMessage(playerid, "You have removed the siren for vehicle %i.", Vehicles[id][vVehicle]);
  40720. }
  40721. }
  40722. }
  40723. }
  40724. return 1;
  40725. }
  40726. Dialog:VehicleFaction(playerid, response, listitem, inputtext[])
  40727. {
  40728. new
  40729. id = Players[playerid][pSelected];
  40730. if (!IsValidVehicleID(id))
  40731. {
  40732. return 0;
  40733. }
  40734. if (response)
  40735. {
  40736. new faction;
  40737. if (sscanf(inputtext, "i", faction))
  40738. {
  40739. return Dialog_Show(playerid, VehicleFaction, DIALOG_STYLE_INPUT, "{FFFFFF}Vehicle Faction", "Please input the faction ID for this vehicle (use -1 to reset):", "Submit", "Back");
  40740. }
  40741. else
  40742. {
  40743. if (faction != INVALID_ID && !IsValidFactionID(faction))
  40744. {
  40745. return Dialog_Show(playerid, VehicleFaction, DIALOG_STYLE_INPUT, "{FFFFFF}Vehicle Faction", "You have specified an invalid faction ID.\n\nPlease input the faction ID for this vehicle (use -1 to reset):", "Submit", "Back");
  40746. }
  40747. else
  40748. {
  40749. if (faction == INVALID_ID)
  40750. {
  40751. Vehicles[id][vFaction] = 0;
  40752. SaveVehicle(id);
  40753. SendInfoMessage(playerid, "You have reset the faction of vehicle %i.", Vehicles[id][vVehicle]);
  40754. }
  40755. else
  40756. {
  40757. Vehicles[id][vFaction] = Factions[faction][fcID];
  40758. SaveVehicle(id);
  40759. SendInfoMessage(playerid, "You have set the faction of vehicle %i to %s.", Vehicles[id][vVehicle], Factions[faction][fcName]);
  40760. }
  40761. }
  40762. }
  40763. }
  40764. return 1;
  40765. }
  40766. Dialog:VehicleColor1(playerid, response, listitem, inputtext[])
  40767. {
  40768. new
  40769. id = Players[playerid][pSelected];
  40770. if (!IsValidVehicleID(id))
  40771. {
  40772. return 0;
  40773. }
  40774. if (response)
  40775. {
  40776. new color;
  40777. if (sscanf(inputtext, "i", color))
  40778. {
  40779. return Dialog_Show(playerid, VehicleColor1, DIALOG_STYLE_INPUT, "{FFFFFF}Vehicle color 1", "Please input the first color to set for this vehicle:", "Submit", "Cancel");
  40780. }
  40781. else if (color < 0 || color > 255)
  40782. {
  40783. return Dialog_Show(playerid, VehicleColor1, DIALOG_STYLE_INPUT, "{FFFFFF}Vehicle color 1", "The color must range between 0 and 255.\n\nPlease input the first color to set for this vehicle:", "Submit", "Cancel");
  40784. }
  40785. else
  40786. {
  40787. Vehicles[id][vColor1] = color;
  40788. SaveVehicle(id);
  40789. ChangeVehicleColor(Vehicles[id][vVehicle], Vehicles[id][vColor1], Vehicles[id][vColor2]);
  40790. SendInfoMessage(playerid, "You have changed the first color of vehicle %i to: #%i.", Vehicles[id][vVehicle], color);
  40791. }
  40792. }
  40793. return 1;
  40794. }
  40795. Dialog:VehicleColor2(playerid, response, listitem, inputtext[])
  40796. {
  40797. new
  40798. id = Players[playerid][pSelected];
  40799. if (!IsValidVehicleID(id))
  40800. {
  40801. return 0;
  40802. }
  40803. if (response)
  40804. {
  40805. new color;
  40806. if (sscanf(inputtext, "i", color))
  40807. {
  40808. return Dialog_Show(playerid, VehicleColor2, DIALOG_STYLE_INPUT, "{FFFFFF}Vehicle color 2", "Please input the second color to set for this vehicle:", "Submit", "Cancel");
  40809. }
  40810. else if (color < 0 || color > 255)
  40811. {
  40812. return Dialog_Show(playerid, VehicleColor2, DIALOG_STYLE_INPUT, "{FFFFFF}Vehicle color 2", "The color must range between 0 and 255.\n\nPlease input the second color to set for this vehicle:", "Submit", "Cancel");
  40813. }
  40814. else
  40815. {
  40816. Vehicles[id][vColor2] = color;
  40817. SaveVehicle(id);
  40818. ChangeVehicleColor(Vehicles[id][vVehicle], Vehicles[id][vColor1], Vehicles[id][vColor2]);
  40819. SendInfoMessage(playerid, "You have changed the second color of vehicle %i to: #%i.", Vehicles[id][vVehicle], color);
  40820. }
  40821. }
  40822. return 1;
  40823. }
  40824. Dialog:PumpFuel(playerid, response, listitem, inputtext[])
  40825. {
  40826. new
  40827. id = Players[playerid][pSelected];
  40828. if (!IsValidPumpID(id))
  40829. {
  40830. return 0;
  40831. }
  40832. if (response)
  40833. {
  40834. new Float:amount;
  40835. if (sscanf(inputtext, "f", amount))
  40836. {
  40837. return Dialog_Show(playerid, PumpFuel, DIALOG_STYLE_INPUT, "{FFFFFF}Pump fuel", "Please input the amount of fuel to set for this pump:", "Submit", "Cancel");
  40838. }
  40839. else if (amount < 0.0)
  40840. {
  40841. return Dialog_Show(playerid, PumpFuel, DIALOG_STYLE_INPUT, "{FFFFFF}Pump fuel", "The amount can't be below 0.\n\nPlease input the amount of fuel to set for this pump:", "Submit", "Cancel");
  40842. }
  40843. else
  40844. {
  40845. GasPumps[id][gpFuel] = amount;
  40846. UpdateGasPump(id);
  40847. SaveGasPump(id);
  40848. SendInfoMessage(playerid, "You have set the fuel amount for pump %i to: %.2f gallons.", id, amount);
  40849. }
  40850. }
  40851. return 1;
  40852. }
  40853. Dialog:EditPump(playerid, response, listitem, inputtext[])
  40854. {
  40855. new
  40856. id = Players[playerid][pSelected];
  40857. if (!IsValidPumpID(id))
  40858. {
  40859. return 0;
  40860. }
  40861. if (response)
  40862. {
  40863. switch (listitem)
  40864. {
  40865. case 0:
  40866. {
  40867. EditDynamicObjectEx(playerid, EDIT_TYPE_PUMP, GasPumps[id][gpObject], id);
  40868. SendInfoMessage(playerid, "Click on the disk icon to save changes.");
  40869. }
  40870. case 1:
  40871. {
  40872. Dialog_Show(playerid, PumpFuel, DIALOG_STYLE_INPUT, "{FFFFFF}Pump fuel", "Please input the amount of fuel to set for this pump:", "Submit", "Back");
  40873. }
  40874. }
  40875. }
  40876. return 1;
  40877. }
  40878. Dialog:SafeMenu(playerid, response, listitem, inputtext[])
  40879. {
  40880. new
  40881. id = Players[playerid][pSafeMenu];
  40882. if (!IsValidFurnitureID(id) || !Furniture[id][fSafeOpen])
  40883. {
  40884. return 0;
  40885. }
  40886. if (response)
  40887. {
  40888. switch (listitem)
  40889. {
  40890. case 0:
  40891. {
  40892. Dialog_Show(playerid, SafeMoney, DIALOG_STYLE_LIST, "{FFFFFF}Stored money", "Withdraw (%s)\nDeposit", "Select", "Back", FormatNumber(Furniture[id][fMoney]));
  40893. }
  40894. case 1:
  40895. {
  40896. Dialog_Show(playerid, SetCode, DIALOG_STYLE_INPUT, "{FFFFFF}Security code", "Please input the new security code to set for this safe:", "Submit", "Back");
  40897. }
  40898. case 2:
  40899. {
  40900. ShowSafeItems(playerid, id);
  40901. }
  40902. case 3:
  40903. {
  40904. Furniture[id][fSafeOpen] = 0;
  40905. UpdateDynamic3DTextLabelText(Furniture[id][fText], COLOR_GREY, "Status: {FF5030}Closed{AFAFAF}\nPress Y to use safe");
  40906. SendInfoMessage(playerid, "You have closed the safe.");
  40907. }
  40908. }
  40909. }
  40910. return 1;
  40911. }
  40912. Dialog:SetCode(playerid, response, listitem, inputtext[])
  40913. {
  40914. new
  40915. id = Players[playerid][pSafeMenu];
  40916. if (!IsValidFurnitureID(id) || !Furniture[id][fSafeOpen])
  40917. {
  40918. return 0;
  40919. }
  40920. if (response)
  40921. {
  40922. new code;
  40923. if (sscanf(inputtext, "i", code))
  40924. {
  40925. return Dialog_Show(playerid, SetCode, DIALOG_STYLE_INPUT, "{FFFFFF}Security code", "Please input the new security code to set for this safe:", "Submit", "Back");
  40926. }
  40927. else if (code < 0)
  40928. {
  40929. return Dialog_Show(playerid, SetCode, DIALOG_STYLE_INPUT, "{FFFFFF}Security code", "The code can't be below 0.\n\nPlease input the new security code to set for this safe:", "Submit", "Back");
  40930. }
  40931. else
  40932. {
  40933. Furniture[id][fCode] = code;
  40934. SaveFurniture(id);
  40935. ShowSafeMenu(playerid, id);
  40936. SendInfoMessage(playerid, "You have set the security code to: %i.", code);
  40937. }
  40938. }
  40939. return 1;
  40940. }
  40941. Dialog:SafeAmount(playerid, response, listitem, inputtext[])
  40942. {
  40943. new
  40944. safe = Players[playerid][pSafeMenu];
  40945. if (!IsValidFurnitureID(safe) || !Furniture[safe][fSafeOpen])
  40946. {
  40947. return 0;
  40948. }
  40949. if (response)
  40950. {
  40951. new
  40952. item = Players[playerid][pSelected];
  40953. if (StoredItems[item][stExists])
  40954. {
  40955. new amount, name[MAX_ITEM_NAME];
  40956. strunpack(name, StoredItems[item][stName]);
  40957. if (sscanf(inputtext, "i", amount))
  40958. {
  40959. return Dialog_Show(playerid, SafeAmount, DIALOG_STYLE_INPUT, "{FFFFFF}Take Amount", "Item: %s\nAmount: %i\n\nPlease input the amount you want to withdraw:", "Submit", "Back", GetStoredItemName(item), StoredItems[item][stValue]);
  40960. }
  40961. else if (amount < 1 || amount > StoredItems[item][stValue])
  40962. {
  40963. return Dialog_Show(playerid, SafeAmount, DIALOG_STYLE_INPUT, "{FFFFFF}Take Amount", "There isn't that much of this item.\n\nItem: %s\nAmount: %i\n\nPlease input the amount you want to withdraw:", "Submit", "Back", GetStoredItemName(item), StoredItems[item][stValue]);
  40964. }
  40965. else
  40966. {
  40967. new id = AddItemToInventory(playerid, name, amount);
  40968. if (id == INVALID_ID)
  40969. {
  40970. SendErrorMessage(playerid, "There is no more room in the safe.");
  40971. }
  40972. else
  40973. {
  40974. if (amount < StoredItems[item][stValue])
  40975. {
  40976. format(gExecute, sizeof(gExecute), "UPDATE rp_items SET itemValue = itemValue - %i WHERE itemID = %i", amount, StoredItems[item][stID]);
  40977. StoredItems[item][stValue] -= amount;
  40978. }
  40979. else
  40980. {
  40981. format(gExecute, sizeof(gExecute), "DELETE FROM rp_items WHERE itemID = %i", StoredItems[item][stID]);
  40982. StoredItems[item][stExists] = 0;
  40983. }
  40984. mysql_tquery(gConnection, gExecute);
  40985. ShowSafeItems(playerid, safe);
  40986. SendInfoMessage(playerid, "You have withdrawn %s (%i) from the safe.", name, amount);
  40987. }
  40988. }
  40989. }
  40990. }
  40991. else
  40992. {
  40993. ShowSafeItems(playerid, safe);
  40994. }
  40995. return 1;
  40996. }
  40997. Dialog:SafeTake(playerid, response, listitem, inputtext[])
  40998. {
  40999. new
  41000. safe = Players[playerid][pSafeMenu];
  41001. if (!IsValidFurnitureID(safe) || !Furniture[safe][fSafeOpen])
  41002. {
  41003. return 0;
  41004. }
  41005. if (response)
  41006. {
  41007. new
  41008. item = Players[playerid][pSelected];
  41009. if (StoredItems[item][stExists])
  41010. {
  41011. new
  41012. id = RetrieveItem(playerid, TRANSFER_FROM_SAFE, item);
  41013. if (id == INVALID_ID)
  41014. {
  41015. return SendErrorMessage(playerid, "There is no more room in your inventory.");
  41016. }
  41017. else
  41018. {
  41019. format(gExecute, sizeof(gExecute), "INSERT INTO rp_itemlogs (Player, Item, Action, Date) VALUES('%s', '%s', 'Taken from Safe', NOW())", ReturnName(playerid), GetFullItemName(playerid, id));
  41020. mysql_tquery(gConnection, gExecute);
  41021. StoredItems[item][stExists] = 0;
  41022. ShowActionBubble(playerid, "* %s takes an item from the safe.", ReturnNameEx(playerid));
  41023. SendInfoMessage(playerid, "You have taken an item: %s.", GetFullItemName(playerid, id));
  41024. ShowSafeItems(playerid, safe);
  41025. format(gExecute, sizeof(gExecute), "DELETE FROM rp_items WHERE itemID = %i", StoredItems[item][stID]);
  41026. mysql_tquery(gConnection, gExecute);
  41027. }
  41028. }
  41029. }
  41030. else
  41031. {
  41032. ShowSafeItems(playerid, safe);
  41033. }
  41034. return 1;
  41035. }
  41036. Dialog:SafeItems(playerid, response, listitem, inputtext[])
  41037. {
  41038. new
  41039. safe = Players[playerid][pSafeMenu];
  41040. if (!IsValidFurnitureID(safe) || !Furniture[safe][fSafeOpen])
  41041. {
  41042. return 0;
  41043. }
  41044. if (response)
  41045. {
  41046. if (listitem == 0)
  41047. {
  41048. new success = DisplayInventory(playerid);
  41049. if (!success)
  41050. {
  41051. SendErrorMessage(playerid, "You don't have any items in your inventory.");
  41052. }
  41053. else
  41054. {
  41055. Players[playerid][pChoose] = CHOOSE_TYPE_SAFE;
  41056. SendInfoMessage(playerid, "Choose an item to add to the safe.");
  41057. }
  41058. }
  41059. else
  41060. {
  41061. new
  41062. item = gListedItems[playerid][--listitem];
  41063. if (StoredItems[item][stExists])
  41064. {
  41065. Players[playerid][pSelected] = item;
  41066. if (GetItemInformation(StoredItems[item][stName], ITEM_INFO_STACKABLE))
  41067. {
  41068. Dialog_Show(playerid, SafeAmount, DIALOG_STYLE_INPUT, "{FFFFFF}Take Amount", "Item: %s\nAmount: %i\n\nPlease input the amount you want to withdraw:", "Submit", "Back", GetStoredItemName(item), StoredItems[item][stValue]);
  41069. }
  41070. else
  41071. {
  41072. Dialog_Show(playerid, SafeTake, DIALOG_STYLE_MSGBOX, "{FFFFFF}Item information", "Item: %s\nWeight: %i\n\nAre you sure you want to take this item?", "Yes", "No", GetStoredItemName(item), GetItemInformation(StoredItems[item][stName], ITEM_INFO_WEIGHT));
  41073. }
  41074. }
  41075. else
  41076. {
  41077. SendErrorMessage(playerid, "Sorry! Someone else has taken this item.");
  41078. }
  41079. }
  41080. }
  41081. else
  41082. {
  41083. ShowSafeMenu(playerid, safe);
  41084. }
  41085. return 1;
  41086. }
  41087. Dialog:SafeMoney(playerid, response, listitem, inputtext[])
  41088. {
  41089. new
  41090. safe = Players[playerid][pSafeMenu];
  41091. if (!IsValidFurnitureID(safe) || !Furniture[safe][fSafeOpen])
  41092. {
  41093. return 0;
  41094. }
  41095. if (response)
  41096. {
  41097. switch (listitem)
  41098. {
  41099. case 0:
  41100. {
  41101. Dialog_Show(playerid, SafeWithdraw, DIALOG_STYLE_INPUT, "{FFFFFF}Withdraw money", "There is currently %s stored in the safe.\n\nPlease input the amount of money to withdraw below:", "Submit", "Cancel", FormatNumber(Furniture[safe][fMoney]));
  41102. }
  41103. case 1:
  41104. {
  41105. Dialog_Show(playerid, SafeDeposit, DIALOG_STYLE_INPUT, "{FFFFFF}Deposit money", "There is currently %s stored in the safe.\n\nPlease input the amount of money to deposit below:", "Submit", "Cancel", FormatNumber(Furniture[safe][fMoney]));
  41106. }
  41107. }
  41108. }
  41109. else
  41110. {
  41111. ShowSafeMenu(playerid, safe);
  41112. }
  41113. return 1;
  41114. }
  41115. Dialog:SafeWithdraw(playerid, response, listitem, inputtext[])
  41116. {
  41117. new
  41118. safe = Players[playerid][pSafeMenu];
  41119. if (!IsValidFurnitureID(safe) || !Furniture[safe][fSafeOpen])
  41120. {
  41121. return 0;
  41122. }
  41123. if (response)
  41124. {
  41125. new amount;
  41126. if (sscanf(inputtext, "i", amount))
  41127. {
  41128. return Dialog_Show(playerid, SafeWithdraw, DIALOG_STYLE_INPUT, "{FFFFFF}Withdraw money", "There is currently %s stored in the safe.\n\nPlease input the amount of money to withdraw below:", "Submit", "Cancel", FormatNumber(Furniture[safe][fMoney]));
  41129. }
  41130. else if (amount < 1 || amount > Furniture[safe][fMoney])
  41131. {
  41132. return Dialog_Show(playerid, SafeWithdraw, DIALOG_STYLE_INPUT, "{FFFFFF}Withdraw money", "There isn't that much money in the safe.\n\nThere is currently %s stored in the trunk.\n\nPlease input the amount of money to withdraw below:", "Submit", "Cancel", FormatNumber(Furniture[safe][fMoney]));
  41133. }
  41134. else
  41135. {
  41136. Furniture[safe][fMoney] -= amount;
  41137. Players[playerid][pPocketMoney] += amount;
  41138. SaveFurniture(safe);
  41139. ShowSafeMenu(playerid, safe);
  41140. ShowActionBubble(playerid, "* %s takes some money from the safe.", ReturnNameEx(playerid));
  41141. SendInfoMessage(playerid, "You have withdrawn %s from the safe (%s remaining).", FormatNumber(amount), FormatNumber(Furniture[safe][fMoney]));
  41142. new log[128];
  41143. format(log, sizeof(log), "%s withdrew %s from safe %i.", ReturnName(playerid), FormatNumber(amount), GetClosestFurniture(playerid, 2.0, 2332));
  41144. CreateLog("money", log);
  41145. if (amount > 29999)
  41146. {
  41147. AdminDutyMessage(COLOR_RED, "Admin: %s has withdrawn %s from safe %i.", ReturnNameEx(playerid, 0), FormatNumber(amount), GetClosestFurniture(playerid, 2.0, 2332));
  41148. }
  41149. }
  41150. }
  41151. return 1;
  41152. }
  41153. Dialog:SafeDeposit(playerid, response, listitem, inputtext[])
  41154. {
  41155. new
  41156. safe = Players[playerid][pSafeMenu];
  41157. if (!IsValidFurnitureID(safe) || !Furniture[safe][fSafeOpen])
  41158. {
  41159. return 0;
  41160. }
  41161. if (response)
  41162. {
  41163. new amount;
  41164. if (sscanf(inputtext, "i", amount))
  41165. {
  41166. return Dialog_Show(playerid, SafeDeposit, DIALOG_STYLE_INPUT, "{FFFFFF}Deposit money", "There is currently %s stored in the safe.\n\nPlease input the amount of money to deposit below:", "Submit", "Cancel", FormatNumber(Furniture[safe][fMoney]));
  41167. }
  41168. else if (amount < 1 || amount > Players[playerid][pPocketMoney])
  41169. {
  41170. return Dialog_Show(playerid, SafeDeposit, DIALOG_STYLE_INPUT, "{FFFFFF}Deposit money", "You don't have that much money in your pocket.\n\nThere is currently %s stored in the safe.\n\nPlease input the amount of money to deposit below:", "Submit", "Cancel", FormatNumber(Furniture[safe][fMoney]));
  41171. }
  41172. else
  41173. {
  41174. Furniture[safe][fMoney] += amount;
  41175. Players[playerid][pPocketMoney] -= amount;
  41176. SaveFurniture(safe);
  41177. ShowSafeMenu(playerid, safe);
  41178. ShowActionBubble(playerid, "* %s puts some money in the safe.", ReturnNameEx(playerid));
  41179. SendInfoMessage(playerid, "You have deposited %s into the safe (%s remaining).", FormatNumber(amount), FormatNumber(Furniture[safe][fMoney]));
  41180. /*format(gExecute, sizeof(gExecute), "INSERT INTO rp_paylogs (Player, Target, Price, Date) VALUES('%s', '%s', %i, NOW())", ReturnName(playerid), ReturnName(targetid), amount);
  41181. mysql_tquery(gConnection, gExecute);*/
  41182. new log[128];
  41183. format(log, sizeof(log), "%s deposited %s into safe %i.", ReturnName(playerid), FormatNumber(amount), GetClosestFurniture(playerid, 2.0, 2332));
  41184. CreateLog("money", log);
  41185. if (amount > 10000)
  41186. {
  41187. AdminDutyMessage(COLOR_RED, "Admin: %s has deposited %s into safe %i.", ReturnNameEx(playerid, 0), FormatNumber(amount), GetClosestFurniture(playerid, 2.0, 2332));
  41188. }
  41189. }
  41190. }
  41191. return 1;
  41192. }
  41193. Dialog:SafeCode(playerid, response, listitem, inputtext[])
  41194. {
  41195. new
  41196. safe = GetClosestFurniture(playerid, 2.0, 2332);
  41197. if (safe == INVALID_ID)
  41198. {
  41199. return 0;
  41200. }
  41201. if (response)
  41202. {
  41203. new code;
  41204. if (sscanf(inputtext, "i", code))
  41205. {
  41206. return Dialog_Show(playerid, SafeCode, DIALOG_STYLE_INPUT, "{FFFFFF}Safe code", "Please input the code to unlock this safe:", "Submit", "Cancel");
  41207. }
  41208. else if (code != Furniture[safe][fCode])
  41209. {
  41210. return Dialog_Show(playerid, SafeCode, DIALOG_STYLE_INPUT, "{FFFFFF}Safe code", "Incorrect security code.\n\nPlease input the code to unlock this safe:", "Submit", "Cancel");
  41211. }
  41212. else
  41213. {
  41214. Furniture[safe][fSafeOpen] = 1;
  41215. ShowActionBubble(playerid, "* %s opens the safe and looks inside.", ReturnNameEx(playerid));
  41216. UpdateDynamic3DTextLabelText(Furniture[safe][fText], COLOR_GREY, "Status: {33CC33}Opened{AFAFAF}\nPress Y to use safe");
  41217. ShowSafeMenu(playerid, safe);
  41218. SendInfoMessage(playerid, "You have opened the safe.");
  41219. }
  41220. }
  41221. return 1;
  41222. }
  41223. Dialog:MySettings(playerid, response, listitem, inputtext[])
  41224. {
  41225. if (response)
  41226. {
  41227. switch (listitem)
  41228. {
  41229. case 0:
  41230. {
  41231. Players[playerid][pShowPM] = !Players[playerid][pShowPM];
  41232. if (Players[playerid][pShowPM])
  41233. {
  41234. SendInfoMessage(playerid, "You have enabled incoming private messages.");
  41235. }
  41236. else
  41237. {
  41238. SendInfoMessage(playerid, "You have disabled incoming private messages.");
  41239. }
  41240. }
  41241. case 1:
  41242. {
  41243. Players[playerid][pShowSpeed] = !Players[playerid][pShowSpeed];
  41244. if (Players[playerid][pShowSpeed])
  41245. {
  41246. SendInfoMessage(playerid, "You have enabled the speedometer.");
  41247. }
  41248. else
  41249. {
  41250. SendInfoMessage(playerid, "You have disabled the speedometer.");
  41251. }
  41252. if (GetPlayerState(playerid) == PLAYER_STATE_DRIVER && IsPoweredVehicle(GetPlayerVehicleID(playerid)))
  41253. {
  41254. ShowSpeedometer(playerid, Players[playerid][pShowSpeed]);
  41255. }
  41256. }
  41257. case 2:
  41258. {
  41259. Players[playerid][pShowFuel] = !Players[playerid][pShowFuel];
  41260. if (Players[playerid][pShowFuel])
  41261. {
  41262. SendInfoMessage(playerid, "You have enabled the fuel gauge.");
  41263. }
  41264. else
  41265. {
  41266. SendInfoMessage(playerid, "You have disabled the fuel gauge.");
  41267. }
  41268. if (GetPlayerState(playerid) == PLAYER_STATE_DRIVER && IsPoweredVehicle(GetPlayerVehicleID(playerid)))
  41269. {
  41270. ShowFuelGauge(playerid, Players[playerid][pShowFuel]);
  41271. }
  41272. }
  41273. case 3:
  41274. {
  41275. Players[playerid][pShowTime] = !Players[playerid][pShowTime];
  41276. if (Players[playerid][pShowTime])
  41277. {
  41278. SendInfoMessage(playerid, "You have enabled the time textdraw.");
  41279. }
  41280. else
  41281. {
  41282. SendInfoMessage(playerid, "You have disabled the time textdraw.");
  41283. }
  41284. ShowTimeForPlayer(playerid, Players[playerid][pShowTime]);
  41285. }
  41286. case 4:
  41287. {
  41288. Players[playerid][pShowOOC] = !Players[playerid][pShowOOC];
  41289. if (Players[playerid][pShowOOC])
  41290. {
  41291. SendInfoMessage(playerid, "You have enabled the OOC chat.");
  41292. }
  41293. else
  41294. {
  41295. SendInfoMessage(playerid, "You have disabled the OOC chat.");
  41296. }
  41297. }
  41298. case 5:
  41299. {
  41300. Players[playerid][pShowSupporter] = !Players[playerid][pShowSupporter];
  41301. if (Players[playerid][pShowSupporter])
  41302. {
  41303. SendInfoMessage(playerid, "You have enabled the Supporter chat.");
  41304. }
  41305. else
  41306. {
  41307. SendInfoMessage(playerid, "You have disabled the Supporter chat.");
  41308. }
  41309. }
  41310. case 6:
  41311. {
  41312. Players[playerid][pShowReports] = !Players[playerid][pShowReports];
  41313. if (Players[playerid][pShowReports])
  41314. {
  41315. SendInfoMessage(playerid, "You have enabled incoming reports.");
  41316. }
  41317. else
  41318. {
  41319. SendInfoMessage(playerid, "You have disabled incoming reports.");
  41320. }
  41321. }
  41322. case 7:
  41323. {
  41324. Players[playerid][pShowAdmin] = !Players[playerid][pShowAdmin];
  41325. if (Players[playerid][pShowAdmin])
  41326. {
  41327. SendInfoMessage(playerid, "You have enabled admin chat.");
  41328. }
  41329. else
  41330. {
  41331. SendInfoMessage(playerid, "You have disabled admin chat.");
  41332. }
  41333. }
  41334. }
  41335. ShowSettings(playerid);
  41336. }
  41337. return 1;
  41338. }
  41339. Dialog:ContactNumber(playerid, response, listitem, inputtext[])
  41340. {
  41341. if (response)
  41342. {
  41343. new number;
  41344. if (sscanf(inputtext, "i", number))
  41345. {
  41346. return Dialog_Show(playerid, ContactNumber, DIALOG_STYLE_INPUT, "{FFFFFF}Contact number", "Please input the number for the contact '%s':", "Submit", "Cancel", gTargetName[playerid]);
  41347. }
  41348. else if (number < 1)
  41349. {
  41350. return Dialog_Show(playerid, ContactNumber, DIALOG_STYLE_INPUT, "{FFFFFF}Contact number", "You have entered an invalid number.\n\nPlease input the number for the contact '%s':", "Submit", "Cancel", gTargetName[playerid]);
  41351. }
  41352. else
  41353. {
  41354. format(gExecute, sizeof(gExecute), "INSERT INTO rp_contacts (Phone, Contact, Number) VALUES(%i, '%s', %i)", Players[playerid][pPhone], mysql_escaped(gTargetName[playerid]), number);
  41355. mysql_tquery(gConnection, gExecute);
  41356. ListContacts(playerid);
  41357. SendInfoMessage(playerid, "You have added a contact: %s (%i).", gTargetName[playerid], number);
  41358. }
  41359. }
  41360. return 1;
  41361. }
  41362. Dialog:AddContact(playerid, response, listitem, inputtext[])
  41363. {
  41364. if (response)
  41365. {
  41366. if (isnull(inputtext))
  41367. {
  41368. return Dialog_Show(playerid, AddContact, DIALOG_STYLE_INPUT, "{FFFFFF}Add contact", "Please input the name of the contact to add below:", "Submit", "Cancel");
  41369. }
  41370. else if (strlen(inputtext) > 24)
  41371. {
  41372. return Dialog_Show(playerid, AddContact, DIALOG_STYLE_INPUT, "{FFFFFF}Add contact", "The contact name must be below 24 characters.\n\nPlease input the name of the contact to add below:", "Submit", "Cancel");
  41373. }
  41374. else
  41375. {
  41376. strcpy(gTargetName[playerid], inputtext, MAX_PLAYER_NAME);
  41377. Dialog_Show(playerid, ContactNumber, DIALOG_STYLE_INPUT, "{FFFFFF}Contact number", "Please input the number for the contact '%s':", "Submit", "Cancel", gTargetName[playerid]);
  41378. }
  41379. }
  41380. else
  41381. {
  41382. ListContacts(playerid);
  41383. }
  41384. return 1;
  41385. }
  41386. Dialog:ContactOptions(playerid, response, listitem, inputtext[])
  41387. {
  41388. if (response)
  41389. {
  41390. switch (listitem)
  41391. {
  41392. case 0:
  41393. {
  41394. format(gExecute, sizeof(gExecute), "SELECT Contact, Number FROM rp_contacts WHERE ID = %i", Players[playerid][pSelected]);
  41395. mysql_tquery(gConnection, gExecute, "OnPlayerCallContact", "i", playerid);
  41396. }
  41397. case 1:
  41398. {
  41399. format(gExecute, sizeof(gExecute), "SELECT Contact, Number FROM rp_contacts WHERE ID = %i", Players[playerid][pSelected]);
  41400. mysql_tquery(gConnection, gExecute, "OnPlayerTextContact", "i", playerid);
  41401. }
  41402. case 2:
  41403. {
  41404. format(gExecute, sizeof(gExecute), "DELETE FROM rp_contacts WHERE ID = %i", Players[playerid][pSelected]);
  41405. mysql_tquery(gConnection, gExecute);
  41406. ListContacts(playerid);
  41407. SendInfoMessage(playerid, "You have deleted the selected contact.");
  41408. }
  41409. }
  41410. }
  41411. else
  41412. {
  41413. ListContacts(playerid);
  41414. }
  41415. return 1;
  41416. }
  41417. Dialog:Contacts(playerid, response, listitem, inputtext[])
  41418. {
  41419. if (response)
  41420. {
  41421. if (listitem == 0)
  41422. {
  41423. Dialog_Show(playerid, AddContact, DIALOG_STYLE_INPUT, "{FFFFFF}Add contact", "Please input the name of the contact to add below:", "Submit", "Cancel");
  41424. }
  41425. else
  41426. {
  41427. Players[playerid][pSelected] = gListedItems[playerid][--listitem];
  41428. Dialog_Show(playerid, ContactOptions, DIALOG_STYLE_LIST, "{FFFFFF}Contact options", "Call contact\nText Message\nDelete contact", "Select", "Cancel");
  41429. }
  41430. }
  41431. return 1;
  41432. }
  41433. Dialog:EditAccessory(playerid, response, listitem, inputtext[])
  41434. {
  41435. if (response)
  41436. {
  41437. switch (listitem)
  41438. {
  41439. case 0:
  41440. {
  41441. Accessories[playerid][Players[playerid][pSelected]][aAttached] = !Accessories[playerid][Players[playerid][pSelected]][aAttached];
  41442. if (Accessories[playerid][Players[playerid][pSelected]][aAttached])
  41443. {
  41444. SendInfoMessage(playerid, "You have attached your %s.", GetAccessoryName(playerid, Players[playerid][pSelected]));
  41445. }
  41446. else
  41447. {
  41448. SendInfoMessage(playerid, "You have detached your %s.", GetAccessoryName(playerid, Players[playerid][pSelected]));
  41449. }
  41450. AttachObjectsToPlayer(playerid);
  41451. ListAccessories(playerid);
  41452. }
  41453. case 1:
  41454. {
  41455. EditAttachedObjectEx(playerid, EDIT_TYPE_ACCESSORY, Players[playerid][pSelected]);
  41456. Players[playerid][pEditID] = Players[playerid][pSelected];
  41457. SendInfoMessage(playerid, "Press ESC to cancel. Click the disk icon to save changes.");
  41458. }
  41459. case 2:
  41460. {
  41461. SendInfoMessage(playerid, "You have deleted your %s.", GetAccessoryName(playerid, Players[playerid][pSelected]));
  41462. DeleteAccessory(playerid, Players[playerid][pSelected]);
  41463. }
  41464. }
  41465. }
  41466. else
  41467. {
  41468. ListAccessories(playerid);
  41469. }
  41470. return 1;
  41471. }
  41472. Dialog:Accessories(playerid, response, listitem, inputtext[])
  41473. {
  41474. if (response)
  41475. {
  41476. Players[playerid][pSelected] = gListedItems[playerid][listitem];
  41477. if (Accessories[playerid][Players[playerid][pSelected]][aAttached])
  41478. {
  41479. Dialog_Show(playerid, EditAccessory, DIALOG_STYLE_LIST, "{FFFFFF}Edit accessory", "Detach accessory\nEdit position\nDelete accessory", "Select", "Back");
  41480. }
  41481. else
  41482. {
  41483. Dialog_Show(playerid, EditAccessory, DIALOG_STYLE_LIST, "{FFFFFF}Edit accessory", "Attach accessory\nEdit position\nDelete accessory", "Select", "Back");
  41484. }
  41485. }
  41486. return 1;
  41487. }
  41488. Dialog:GiveItem(playerid, response, listitem, inputtext[])
  41489. {
  41490. if (response)
  41491. {
  41492. new
  41493. id = Players[playerid][pSelected],
  41494. name[48],
  41495. targetid;
  41496. strcpy(name, GetFullItemName(playerid, id));
  41497. if (sscanf(inputtext, "u", targetid))
  41498. {
  41499. return Dialog_Show(playerid, GiveItem, DIALOG_STYLE_INPUT, "{FFFFFF}Give item", "Item: %s\n\nPlease input the player to give this item to:", "Submit", "Cancel", GetFullItemName(playerid, id));
  41500. }
  41501. else if (!IsPlayerConnected(targetid))
  41502. {
  41503. return Dialog_Show(playerid, GiveItem, DIALOG_STYLE_INPUT, "{FFFFFF}Give item", "The specified player is invalid.\n\nItem: %s\n\nPlease input the player to give this item to:", "Submit", "Cancel", GetFullItemName(playerid, id));
  41504. }
  41505. else if (!IsPlayerInRangeOfPlayer(playerid, targetid))
  41506. {
  41507. return Dialog_Show(playerid, GiveItem, DIALOG_STYLE_INPUT, "{FFFFFF}Give item", "You are not close to that player.\n\nItem: %s\n\nPlease input the player to give this item to:", "Submit", "Cancel", GetFullItemName(playerid, id));
  41508. }
  41509. else if (IsPlayerNPC(targetid))
  41510. {
  41511. return Dialog_Show(playerid, GiveItem, DIALOG_STYLE_INPUT, "{FFFFFF}Give item", "You can't give items to an NPC.\n\nItem: %s\n\nPlease input the player to give this item to:", "Submit", "Cancel", GetFullItemName(playerid, id));
  41512. }
  41513. else if (targetid == playerid)
  41514. {
  41515. return Dialog_Show(playerid, GiveItem, DIALOG_STYLE_INPUT, "{FFFFFF}Give item", "You can't give items to yourself.\n\nItem: %s\n\nPlease input the player to give this item to:", "Submit", "Cancel", GetFullItemName(playerid, id));
  41516. }
  41517. else if (!strcmp(Inventory[playerid][id][invName], "Mask") && Players[targetid][pHoursOnline] < 10)
  41518. {
  41519. return SendErrorMessage(playerid, "The specified player needs 10 playing hours first.");
  41520. }
  41521. else
  41522. {
  41523. if (GetItemInformation(Inventory[playerid][id][invName], ITEM_INFO_STACKABLE))
  41524. {
  41525. Players[playerid][pGiveDrugs] = targetid;
  41526. Dialog_Show(playerid, GiveAmount, DIALOG_STYLE_INPUT, "{FFFFFF}Give amount", "Item: %s\nAmount: %i\n\nHow much of this item would you like to give to %s?", "Submit", "Cancel", Inventory[playerid][id][invName], Inventory[playerid][id][invValue], ReturnNameEx(targetid));
  41527. }
  41528. else
  41529. {
  41530. new
  41531. item = TransferItemToPlayer(playerid, targetid, id);
  41532. if (item == INVALID_ID)
  41533. {
  41534. return SendErrorMessage(playerid, "That player doesn't have any room.");
  41535. }
  41536. else
  41537. {
  41538. if (Players[playerid][pFaction] != INVALID_ID)
  41539. {
  41540. foreach (new i : Player)
  41541. {
  41542. if (Players[i][pAdminDuty])
  41543. {
  41544. //SendAdminMessage(COLOR_RED, "Admin: %s has given %s to %s.", ReturnNameEx(playerid, 0), name, ReturnNameEx(targetid, 0));
  41545. SendFormatMessage(i, COLOR_RED, "Admin: %s has given %s to %s.", ReturnNameEx(playerid, 0), name, ReturnNameEx(targetid, 0));
  41546. }
  41547. }
  41548. }
  41549. format(gExecute, sizeof(gExecute), "INSERT INTO rp_itemlogs (Player, Item, Action, Date) VALUES('%s', '%s', 'Given to %s', NOW())", ReturnName(playerid), name, ReturnName(targetid));
  41550. mysql_tquery(gConnection, gExecute);
  41551. ShowActionBubble(playerid, "* %s takes out an item and gives it to %s.", ReturnNameEx(playerid), ReturnNameEx(targetid));
  41552. SendInfoMessage(playerid, "You have given %s an item: %s.", ReturnNameEx(targetid), name);
  41553. SendInfoMessage(targetid, "%s has given you an item: %s.", ReturnNameEx(playerid), name);
  41554. }
  41555. }
  41556. }
  41557. }
  41558. return 1;
  41559. }
  41560. Dialog:GiveAmount(playerid, response, listitem, inputtext[])
  41561. {
  41562. if (response)
  41563. {
  41564. new
  41565. targetid = Players[playerid][pGiveDrugs],
  41566. id = Players[playerid][pSelected],
  41567. name[48],
  41568. amount;
  41569. strcpy(name, GetFullItemName(playerid, id));
  41570. if (sscanf(inputtext, "i", amount))
  41571. {
  41572. return Dialog_Show(playerid, GiveAmount, DIALOG_STYLE_INPUT, "{FFFFFF}Give amount", "Item: %s\nAmount: %i\n\nHow much of this item would you like to give to %s?", "Submit", "Cancel", Inventory[playerid][id][invName], Inventory[playerid][id][invValue], ReturnNameEx(targetid));
  41573. }
  41574. else if (amount < 1 || amount > Inventory[playerid][id][invValue])
  41575. {
  41576. return Dialog_Show(playerid, GiveAmount, DIALOG_STYLE_INPUT, "{FFFFFF}Give amount", "There isn't that much of this item.\n\nItem: %s\nAmount: %i\n\nHow much of this item would you like to give to %s?", "Submit", "Cancel", Inventory[playerid][id][invName], Inventory[playerid][id][invValue], ReturnNameEx(targetid));
  41577. }
  41578. else
  41579. {
  41580. new
  41581. item = AddItemToInventory(targetid, Inventory[playerid][id][invName], amount);
  41582. if (item == INVALID_ID)
  41583. {
  41584. return SendErrorMessage(playerid, "That player doesn't have any room.");
  41585. }
  41586. else
  41587. {
  41588. format(gExecute, sizeof(gExecute), "INSERT INTO rp_itemlogs (Player, Item, Action, Date) VALUES('%s', '%s (%i)', 'Given to %s', NOW())", ReturnName(playerid), Inventory[playerid][id][invName], amount, ReturnName(targetid));
  41589. mysql_tquery(gConnection, gExecute);
  41590. SendInfoMessage(playerid, "You have given %s (%i) to %s.", Inventory[playerid][id][invName], amount, ReturnNameEx(targetid));
  41591. SendInfoMessage(targetid, "%s has given you %s (%i).", ReturnNameEx(playerid), Inventory[playerid][id][invName], amount);
  41592. RemoveItemValue(playerid, id, amount);
  41593. ShowActionBubble(playerid, "* %s takes out an item and gives it to %s.", ReturnNameEx(playerid), ReturnNameEx(targetid, 0));
  41594. }
  41595. }
  41596. }
  41597. return 1;
  41598. }
  41599. Dialog:CollectTransfer(playerid, response, listitem, inputtext[])
  41600. {
  41601. new
  41602. id = Players[playerid][pBank];
  41603. if (!BankAccounts[playerid][id][bankExists] || !IsPlayerInBank(playerid))
  41604. {
  41605. return 0;
  41606. }
  41607. if (response)
  41608. {
  41609. format(gExecute, sizeof(gExecute), "SELECT Sender, Amount FROM rp_transfers WHERE Player = %i AND ID = %i", Players[playerid][pID], gListedItems[playerid][listitem]);
  41610. mysql_tquery(gConnection, gExecute, "OnPlayerCollectTransfer", "iii", playerid, id, gListedItems[playerid][listitem]);
  41611. }
  41612. else
  41613. {
  41614. ShowBankAccountMenu(playerid, id);
  41615. }
  41616. return 1;
  41617. }
  41618. Dialog:BankDeposit(playerid, response, listitem, inputtext[])
  41619. {
  41620. new
  41621. id = Players[playerid][pBank];
  41622. if (!BankAccounts[playerid][id][bankExists] || !IsPlayerInBank(playerid))
  41623. {
  41624. return 0;
  41625. }
  41626. if (response)
  41627. {
  41628. new
  41629. amount;
  41630. if (sscanf(inputtext, "i", amount))
  41631. {
  41632. return Dialog_Show(playerid, BankDeposit, DIALOG_STYLE_INPUT, "{FFFFFF}Deposit money", "'%s' contains a balance of %s.\n\nPlease input the amount of money to deposit below.", "Submit", "Back", BankAccounts[playerid][id][bankName], FormatNumber(BankAccounts[playerid][id][bankBalance]));
  41633. }
  41634. else if (amount < 1 || amount > Players[playerid][pPocketMoney])
  41635. {
  41636. return Dialog_Show(playerid, BankDeposit, DIALOG_STYLE_INPUT, "{FFFFFF}Deposit money", "You don't have that much in your pocket.\n\n'%s' contains a balance of %s.\n\nPlease input the amount of money to deposit below.", "Submit", "Back", BankAccounts[playerid][id][bankName], FormatNumber(BankAccounts[playerid][id][bankBalance]));
  41637. }
  41638. else
  41639. {
  41640. BankAccounts[playerid][id][bankBalance] += amount;
  41641. Players[playerid][pPocketMoney] -= amount;
  41642. SaveBankAccount(playerid, id);
  41643. ShowBankAccountMenu(playerid, id);
  41644. SendInfoMessage(playerid, "You have deposited %s into %s (%s remaining).", FormatNumber(amount), BankAccounts[playerid][id][bankName], FormatNumber(BankAccounts[playerid][id][bankBalance]));
  41645. new log[128];
  41646. format(log, sizeof(log), "%s deposited %s into bank account: %s.", ReturnName(playerid), FormatNumber(amount), BankAccounts[playerid][id][bankName]);
  41647. CreateLog("money", log);
  41648. }
  41649. }
  41650. else
  41651. {
  41652. ShowBankAccountMenu(playerid, id);
  41653. }
  41654. return 1;
  41655. }
  41656. Dialog:BankWithdraw(playerid, response, listitem, inputtext[])
  41657. {
  41658. new
  41659. id = Players[playerid][pBank];
  41660. if (!BankAccounts[playerid][id][bankExists] || !IsPlayerInBank(playerid))
  41661. {
  41662. return 0;
  41663. }
  41664. if (response)
  41665. {
  41666. new
  41667. amount;
  41668. if (sscanf(inputtext, "i", amount))
  41669. {
  41670. return Dialog_Show(playerid, BankWithdraw, DIALOG_STYLE_INPUT, "{FFFFFF}Withdraw money", "'%s' contains a balance of %s.\n\nPlease input the amount of money to withdraw below.", "Submit", "Back", BankAccounts[playerid][id][bankName], FormatNumber(BankAccounts[playerid][id][bankBalance]));
  41671. }
  41672. else if (amount < 1 || amount > BankAccounts[playerid][id][bankBalance])
  41673. {
  41674. return Dialog_Show(playerid, BankWithdraw, DIALOG_STYLE_INPUT, "{FFFFFF}Withdraw money", "There isn't that much money in the bank account.\n\n'%s' contains a balance of %s.\n\nPlease input the amount of money to withdraw below.", "Submit", "Back", BankAccounts[playerid][id][bankName], FormatNumber(BankAccounts[playerid][id][bankBalance]));
  41675. }
  41676. else
  41677. {
  41678. BankAccounts[playerid][id][bankBalance] -= amount;
  41679. Players[playerid][pPocketMoney] += amount;
  41680. SaveBankAccount(playerid, id);
  41681. ShowBankAccountMenu(playerid, id);
  41682. SendInfoMessage(playerid, "You have withdrawn {33CC33}%s{FFFFFF} from %s (%s remaining).", FormatNumber(amount), BankAccounts[playerid][id][bankName], FormatNumber(BankAccounts[playerid][id][bankBalance]));
  41683. new log[128];
  41684. format(log, sizeof(log), "%s withdrew %s from bank account: %s.", ReturnName(playerid), FormatNumber(amount), BankAccounts[playerid][id][bankName]);
  41685. CreateLog("money", log);
  41686. }
  41687. }
  41688. else
  41689. {
  41690. ShowBankAccountMenu(playerid, id);
  41691. }
  41692. return 1;
  41693. }
  41694. Dialog:TransferAmount(playerid, response, listitem, inputtext[])
  41695. {
  41696. new
  41697. id = Players[playerid][pBank];
  41698. if (!BankAccounts[playerid][id][bankExists] || !IsPlayerInBank(playerid))
  41699. {
  41700. return 0;
  41701. }
  41702. if (response)
  41703. {
  41704. new
  41705. name[MAX_PLAYER_NAME],
  41706. amount;
  41707. if (sscanf(inputtext, "i", amount))
  41708. {
  41709. return Dialog_Show(playerid, TransferAmount, DIALOG_STYLE_INPUT, "{FFFFFF}Transfer money", "'%s' contains a balance of %s.\n\nPlease input the amount of money to transfer to '%s'.", "Submit", "Back", BankAccounts[playerid][id][bankName], FormatNumber(BankAccounts[playerid][id][bankBalance]), gTargetName[playerid]);
  41710. }
  41711. else if (amount < 1 || amount > BankAccounts[playerid][id][bankBalance])
  41712. {
  41713. return Dialog_Show(playerid, TransferAmount, DIALOG_STYLE_INPUT, "{FFFFFF}Transfer money", "There isn't that much money in this account.\n\n'%s' contains a balance of %s.\n\nPlease input the amount of money to transfer to '%s'.", "Submit", "Back", BankAccounts[playerid][id][bankName], FormatNumber(BankAccounts[playerid][id][bankBalance]), gTargetName[playerid]);
  41714. }
  41715. else
  41716. {
  41717. strcpy(name, gTargetName[playerid]);
  41718. foreach (new i : Player)
  41719. {
  41720. if (IsPlayerLoggedIn(i) && !strcmp(ReturnName(i), name))
  41721. {
  41722. SendInfoMessage(i, "%s has tranferred you %s. You can collect it at the bank.", ReturnNameEx(playerid), FormatNumber(amount));
  41723. }
  41724. }
  41725. BankAccounts[playerid][id][bankBalance] -= amount;
  41726. SendInfoMessage(playerid, "You have transferred {33CC33}%s{FFFFFF} to %s (%s remaining).", FormatNumber(amount), name, FormatNumber(BankAccounts[playerid][id][bankBalance]));
  41727. format(gExecute, sizeof(gExecute), "INSERT INTO rp_transferlogs (Sender, Recipient, Date, Amount) VALUES('%s', '%s', NOW(), %i)", ReturnName(playerid), name, amount);
  41728. mysql_tquery(gConnection, gExecute);
  41729. format(gExecute, sizeof(gExecute), "INSERT INTO rp_transfers (Player, Sender, Amount) VALUES(%i, '%s', %i)", Players[playerid][pTransfer], ReturnNameEx(playerid, 0), amount);
  41730. mysql_tquery(gConnection, gExecute);
  41731. SaveBankAccount(playerid, id);
  41732. ShowBankAccountMenu(playerid, id);
  41733. }
  41734. }
  41735. else
  41736. {
  41737. ShowBankAccountMenu(playerid, id);
  41738. }
  41739. return 1;
  41740. }
  41741. Dialog:BankTransfer(playerid, response, listitem, inputtext[])
  41742. {
  41743. new
  41744. id = Players[playerid][pBank];
  41745. if (!BankAccounts[playerid][id][bankExists] || !IsPlayerInBank(playerid))
  41746. {
  41747. return 0;
  41748. }
  41749. if (response)
  41750. {
  41751. if (isnull(inputtext))
  41752. {
  41753. return Dialog_Show(playerid, BankTransfer, DIALOG_STYLE_INPUT, "{FFFFFF}Transfer money", "Please input the full name of the player to transfer money to:", "Submit", "Back", BankAccounts[playerid][id][bankName], FormatNumber(BankAccounts[playerid][id][bankBalance]));
  41754. }
  41755. else if (strlen(inputtext) > 24)
  41756. {
  41757. return Dialog_Show(playerid, BankTransfer, DIALOG_STYLE_INPUT, "{FFFFFF}Transfer money", "The name can't contain above 24 characters.\n\nPlease input the full name of the player to transfer money to:", "Submit", "Back");
  41758. }
  41759. else if (!IsValidName(inputtext))
  41760. {
  41761. return Dialog_Show(playerid, BankTransfer, DIALOG_STYLE_INPUT, "{FFFFFF}Transfer money", "You have specified an invalid name.\n\nPlease input the full name of the player to transfer money to:", "Submit", "Back");
  41762. }
  41763. else
  41764. {
  41765. format(gExecute, sizeof(gExecute), "SELECT ID FROM rp_accounts WHERE Username = '%s'", mysql_escaped(inputtext));
  41766. mysql_tquery(gConnection, gExecute, "OnTransferCheck", "ds", playerid, inputtext);
  41767. }
  41768. }
  41769. else
  41770. {
  41771. ShowBankAccountMenu(playerid, id);
  41772. }
  41773. return 1;
  41774. }
  41775. Dialog:BankClose(playerid, response, listitem, inputtext[])
  41776. {
  41777. new
  41778. id = Players[playerid][pBank];
  41779. if (!BankAccounts[playerid][id][bankExists] || !IsPlayerInBank(playerid))
  41780. {
  41781. return 0;
  41782. }
  41783. if (response)
  41784. {
  41785. if (Players[playerid][pPaymentType] == PAYMENT_TYPE_BANK && GetPrimaryBankAccount(playerid) == id)
  41786. {
  41787. SendInfoMessage(playerid, "Your payment type has been switched to cash.");
  41788. Players[playerid][pPaymentType] = PAYMENT_TYPE_CASH;
  41789. }
  41790. format(gExecute, sizeof(gExecute), "DELETE FROM rp_bankaccounts WHERE bankID = %i", BankAccounts[playerid][id][bankID]);
  41791. mysql_tquery(gConnection, gExecute);
  41792. BankAccounts[playerid][id][bankExists] = 0;
  41793. BankAccounts[playerid][id][bankBalance] = 0;
  41794. SendInfoMessage(playerid, "You have deleted a bank account: %s.", BankAccounts[playerid][id][bankName]);
  41795. ShowBankAccounts(playerid, BANK_ACCESS_MENU);
  41796. }
  41797. else
  41798. {
  41799. ShowBankAccountMenu(playerid, id);
  41800. }
  41801. return 1;
  41802. }
  41803. Dialog:BankMenu(playerid, response, listitem, inputtext[])
  41804. {
  41805. if (!IsPlayerInBank(playerid))
  41806. {
  41807. return 0;
  41808. }
  41809. if (response)
  41810. {
  41811. new
  41812. id = Players[playerid][pBank];
  41813. switch (listitem)
  41814. {
  41815. case 0:
  41816. {
  41817. Dialog_Show(playerid, BankWithdraw, DIALOG_STYLE_INPUT, "{FFFFFF}Withdraw money", "'%s' contains a balance of %s.\n\nPlease input the amount of money to withdraw below.", "Submit", "Back", BankAccounts[playerid][id][bankName], FormatNumber(BankAccounts[playerid][id][bankBalance]));
  41818. }
  41819. case 1:
  41820. {
  41821. Dialog_Show(playerid, BankDeposit, DIALOG_STYLE_INPUT, "{FFFFFF}Deposit money", "'%s' contains a balance of %s.\n\nPlease input the amount of money to deposit below.", "Submit", "Back", BankAccounts[playerid][id][bankName], FormatNumber(BankAccounts[playerid][id][bankBalance]));
  41822. }
  41823. case 2:
  41824. {
  41825. Dialog_Show(playerid, BankTransfer, DIALOG_STYLE_INPUT, "{FFFFFF}Transfer money", "Please input the full name of the player to transfer money to:", "Submit", "Back");
  41826. }
  41827. case 3:
  41828. {
  41829. new amount = Players[playerid][pPaycheck];
  41830. if (!amount)
  41831. {
  41832. SendErrorMessage(playerid, "You don't have a paycheck to collect.");
  41833. }
  41834. else
  41835. {
  41836. BankAccounts[playerid][id][bankBalance] += amount;
  41837. SaveBankAccount(playerid, id);
  41838. SendInfoMessage(playerid, "You have collected your paycheck: {33CC33}%s{FFFFFF}.", FormatNumber(amount));
  41839. Players[playerid][pPaycheck] = 0;
  41840. }
  41841. ShowBankAccountMenu(playerid, id);
  41842. }
  41843. case 4:
  41844. {
  41845. ListBankTransfers(playerid);
  41846. }
  41847. case 5:
  41848. {
  41849. Dialog_Show(playerid, BankClose, DIALOG_STYLE_MSGBOX, "{FFFFFF}Close account", "Are you sure you want to close this account?\n\nNote: You cannot retrieve your money once this account is deleted.", "Yes", "No");
  41850. }
  41851. }
  41852. }
  41853. else
  41854. {
  41855. ShowBankAccounts(playerid, BANK_ACCESS_MENU);
  41856. }
  41857. return 1;
  41858. }
  41859. Dialog:BankNew(playerid, response, listitem, inputtext[])
  41860. {
  41861. if (!IsPlayerInBank(playerid))
  41862. {
  41863. return 0;
  41864. }
  41865. if (response)
  41866. {
  41867. if (isnull(inputtext))
  41868. {
  41869. return Dialog_Show(playerid, BankNew, DIALOG_STYLE_INPUT, "{FFFFFF}New account", "Please input the name of your new bank account:", "Submit", "Back");
  41870. }
  41871. else if (strlen(inputtext) > 32)
  41872. {
  41873. return Dialog_Show(playerid, BankNew, DIALOG_STYLE_INPUT, "{FFFFFF}New account", "The name can't contain over 32 characters.\n\nPlease input the name of your new bank account:", "Submit", "Back");
  41874. }
  41875. else
  41876. {
  41877. AddBankAccount(playerid, inputtext);
  41878. ShowBankAccounts(playerid, BANK_ACCESS_MENU);
  41879. SendInfoMessage(playerid, "You have added a new bank account: %s.", inputtext);
  41880. }
  41881. }
  41882. else
  41883. {
  41884. ShowBankAccounts(playerid, BANK_ACCESS_MENU);
  41885. }
  41886. return 1;
  41887. }
  41888. Dialog:ATMWithdraw(playerid, response, listitem, inputtext[])
  41889. {
  41890. new
  41891. id = Players[playerid][pSelected];
  41892. if (GetClosestATM(playerid) == INVALID_ID || !BankAccounts[playerid][id][bankExists])
  41893. {
  41894. return 0;
  41895. }
  41896. if (response)
  41897. {
  41898. new amount;
  41899. if (sscanf(inputtext, "i", amount))
  41900. {
  41901. return Dialog_Show(playerid, ATMWithdraw, DIALOG_STYLE_INPUT, "{FFFFFF}Withdraw money", "'%s' contains a balance of %s.\n\nPlease input the amount of money to withdraw below.", "Submit", "Back", BankAccounts[playerid][id][bankName], FormatNumber(BankAccounts[playerid][id][bankBalance]));
  41902. }
  41903. else if (amount < 1 || amount > BankAccounts[playerid][id][bankBalance])
  41904. {
  41905. return Dialog_Show(playerid, ATMWithdraw, DIALOG_STYLE_INPUT, "{FFFFFF}Withdraw money", "There isn't that much money in this account.\n\n'%s' contains a balance of %s.\n\nPlease input the amount of money to withdraw below.", "Submit", "Back", BankAccounts[playerid][id][bankName], FormatNumber(BankAccounts[playerid][id][bankBalance]));
  41906. }
  41907. else
  41908. {
  41909. BankAccounts[playerid][id][bankBalance] -= amount;
  41910. Players[playerid][pPocketMoney] += amount;
  41911. SaveBankAccount(playerid, id);
  41912. SendInfoMessage(playerid, "You have withdrawn {33CC33}%s{FFFFFF} from %s (%s remaining).", FormatNumber(amount), BankAccounts[playerid][id][bankName], FormatNumber(BankAccounts[playerid][id][bankBalance]));
  41913. }
  41914. }
  41915. else
  41916. {
  41917. ShowBankAccounts(playerid, BANK_ATM_MENU);
  41918. }
  41919. return 1;
  41920. }
  41921. Dialog:PaymentAccount(playerid, response, listitem, inputtext[])
  41922. {
  41923. if (response)
  41924. {
  41925. Players[playerid][pPaymentType] = PAYMENT_TYPE_BANK;
  41926. Players[playerid][pBankAccount] = BankAccounts[playerid][gListedItems[playerid][listitem]][bankID];
  41927. SendInfoMessage(playerid, "Your future payments will now be made with this bank account.");
  41928. }
  41929. return 1;
  41930. }
  41931. Dialog:ATMSelect(playerid, response, listitem, inputtext[])
  41932. {
  41933. if (GetClosestATM(playerid) == INVALID_ID)
  41934. {
  41935. return 0;
  41936. }
  41937. if (response)
  41938. {
  41939. Players[playerid][pSelected] = gListedItems[playerid][listitem];
  41940. Dialog_Show(playerid, ATMWithdraw, DIALOG_STYLE_INPUT, "{FFFFFF}Withdraw money", "'%s' contains a balance of %s.\n\nPlease input the amount of money to withdraw below.", "Submit", "Back", BankAccounts[playerid][Players[playerid][pSelected]][bankName], FormatNumber(BankAccounts[playerid][Players[playerid][pSelected]][bankBalance]));
  41941. }
  41942. return 1;
  41943. }
  41944. Dialog:BankAccounts(playerid, response, listitem, inputtext[])
  41945. {
  41946. if (!IsPlayerInBank(playerid))
  41947. {
  41948. return 0;
  41949. }
  41950. if (response)
  41951. {
  41952. if (listitem == 0)
  41953. {
  41954. if (GetNextBankAccountID(playerid) == INVALID_ID)
  41955. {
  41956. return SendErrorMessage(playerid, "You can't have more than %i bank accounts.", MAX_BANK_ACCOUNTS);
  41957. }
  41958. else
  41959. {
  41960. Dialog_Show(playerid, BankNew, DIALOG_STYLE_INPUT, "{FFFFFF}New account", "Please input the name of your new bank account:", "Submit", "Back");
  41961. }
  41962. }
  41963. else
  41964. {
  41965. ShowBankAccountMenu(playerid, gListedItems[playerid][--listitem]);
  41966. }
  41967. }
  41968. return 1;
  41969. }
  41970. Dialog:TrunkAmount(playerid, response, listitem, inputtext[])
  41971. {
  41972. new
  41973. vehicle = GetVehicleID(GetClosestVehicle(playerid));
  41974. if (vehicle == INVALID_ID || Vehicles[vehicle][vLocked])
  41975. {
  41976. return 0;
  41977. }
  41978. if (response)
  41979. {
  41980. new
  41981. item = Players[playerid][pSelected];
  41982. if (StoredItems[item][stExists])
  41983. {
  41984. new amount, name[MAX_ITEM_NAME];
  41985. strunpack(name, StoredItems[item][stName]);
  41986. if (sscanf(inputtext, "i", amount))
  41987. {
  41988. return Dialog_Show(playerid, TrunkAmount, DIALOG_STYLE_INPUT, "{FFFFFF}Take Amount", "Item: %s\nAmount: %i\n\nPlease input the amount you want to withdraw:", "Submit", "Back", GetStoredItemName(item), StoredItems[item][stValue]);
  41989. }
  41990. else if (amount < 1 || amount > StoredItems[item][stValue])
  41991. {
  41992. return Dialog_Show(playerid, TrunkAmount, DIALOG_STYLE_INPUT, "{FFFFFF}Take Amount", "There isn't that much of this item.\n\nItem: %s\nAmount: %i\n\nPlease input the amount you want to withdraw:", "Submit", "Back", GetStoredItemName(item), StoredItems[item][stValue]);
  41993. }
  41994. else
  41995. {
  41996. new id = AddItemToInventory(playerid, name, amount);
  41997. if (id == INVALID_ID)
  41998. {
  41999. SendErrorMessage(playerid, "There is no more room in the trunk.");
  42000. }
  42001. else
  42002. {
  42003. if (amount < StoredItems[item][stValue])
  42004. {
  42005. format(gExecute, sizeof(gExecute), "UPDATE rp_items SET itemValue = itemValue - %i WHERE itemID = %i", amount, StoredItems[item][stID]);
  42006. StoredItems[item][stValue] -= amount;
  42007. }
  42008. else
  42009. {
  42010. format(gExecute, sizeof(gExecute), "DELETE FROM rp_items WHERE itemID = %i", StoredItems[item][stID]);
  42011. StoredItems[item][stExists] = 0;
  42012. }
  42013. mysql_tquery(gConnection, gExecute);
  42014. ShowTrunkItems(playerid, vehicle);
  42015. SendInfoMessage(playerid, "You have withdrawn %s (%i) from the trunk.", name, amount);
  42016. }
  42017. }
  42018. }
  42019. }
  42020. else
  42021. {
  42022. ShowTrunkItems(playerid, vehicle);
  42023. }
  42024. return 1;
  42025. }
  42026. Dialog:TrunkTake(playerid, response, listitem, inputtext[])
  42027. {
  42028. new
  42029. vehicle = GetVehicleID(GetClosestVehicle(playerid));
  42030. if (vehicle == INVALID_ID || Vehicles[vehicle][vLocked])
  42031. {
  42032. return 0;
  42033. }
  42034. if (response)
  42035. {
  42036. new
  42037. item = Players[playerid][pSelected];
  42038. if (StoredItems[item][stExists])
  42039. {
  42040. new
  42041. id = RetrieveItem(playerid, TRANSFER_FROM_TRUNK, item);
  42042. if (id == INVALID_ID)
  42043. {
  42044. return SendErrorMessage(playerid, "There is no more room in your inventory.");
  42045. }
  42046. else
  42047. {
  42048. format(gExecute, sizeof(gExecute), "INSERT INTO rp_itemlogs (Player, Item, Action, Date) VALUES('%s', '%s', 'Taken from Trunk', NOW())", ReturnName(playerid), GetFullItemName(playerid, id));
  42049. mysql_tquery(gConnection, gExecute);
  42050. StoredItems[item][stExists] = 0;
  42051. ShowActionBubble(playerid, "* %s takes an item from the trunk.", ReturnNameEx(playerid));
  42052. SendInfoMessage(playerid, "You have taken an item: %s.", GetFullItemName(playerid, id));
  42053. ShowTrunkItems(playerid, vehicle);
  42054. }
  42055. }
  42056. }
  42057. else
  42058. {
  42059. ShowTrunkItems(playerid, vehicle);
  42060. }
  42061. return 1;
  42062. }
  42063. Dialog:TrunkItems(playerid, response, listitem, inputtext[])
  42064. {
  42065. new
  42066. vehicle = GetVehicleID(GetClosestVehicle(playerid));
  42067. if (vehicle == INVALID_ID || Vehicles[vehicle][vLocked])
  42068. {
  42069. return 0;
  42070. }
  42071. if (response)
  42072. {
  42073. if (listitem == 0)
  42074. {
  42075. new success = DisplayInventory(playerid);
  42076. if (!success)
  42077. {
  42078. SendErrorMessage(playerid, "You don't have any items in your inventory.");
  42079. }
  42080. else
  42081. {
  42082. Players[playerid][pChoose] = CHOOSE_TYPE_TRUNK;
  42083. SendInfoMessage(playerid, "Choose an item to add to the trunk.");
  42084. }
  42085. }
  42086. else
  42087. {
  42088. new
  42089. item = gListedItems[playerid][--listitem];
  42090. if (StoredItems[item][stExists])
  42091. {
  42092. Players[playerid][pSelected] = item;
  42093. if (GetItemInformation(StoredItems[item][stName], ITEM_INFO_STACKABLE))
  42094. {
  42095. Dialog_Show(playerid, TrunkAmount, DIALOG_STYLE_INPUT, "{FFFFFF}Take Amount", "Item: %s\nAmount: %i\n\nPlease input the amount you want to withdraw:", "Submit", "Back", GetStoredItemName(item), StoredItems[item][stValue]);
  42096. }
  42097. else
  42098. {
  42099. Dialog_Show(playerid, TrunkTake, DIALOG_STYLE_MSGBOX, "{FFFFFF}Item information", "Item: %s\nWeight: %i\n\nAre you sure you want to take this item?", "Yes", "No", GetStoredItemName(item), GetItemInformation(StoredItems[item][stName], ITEM_INFO_WEIGHT));
  42100. }
  42101. }
  42102. else
  42103. {
  42104. SendErrorMessage(playerid, "Sorry! Someone else has taken this item.");
  42105. }
  42106. }
  42107. }
  42108. else
  42109. {
  42110. ShowTrunkMenu(playerid, vehicle);
  42111. }
  42112. return 1;
  42113. }
  42114. Dialog:TrunkMoney(playerid, response, listitem, inputtext[])
  42115. {
  42116. new
  42117. vehicle = GetVehicleID(GetClosestVehicle(playerid));
  42118. if (vehicle == INVALID_ID || Vehicles[vehicle][vLocked])
  42119. {
  42120. return 0;
  42121. }
  42122. if (response)
  42123. {
  42124. switch (listitem)
  42125. {
  42126. case 0:
  42127. {
  42128. Dialog_Show(playerid, TrunkWithdraw, DIALOG_STYLE_INPUT, "{FFFFFF}Withdraw money", "There is currently %s stored in the trunk.\n\nPlease input the amount of money to withdraw below:", "Submit", "Cancel", FormatNumber(Vehicles[vehicle][vTrunkMoney]));
  42129. }
  42130. case 1:
  42131. {
  42132. Dialog_Show(playerid, TrunkDeposit, DIALOG_STYLE_INPUT, "{FFFFFF}Deposit money", "There is currently %s stored in the trunk.\n\nPlease input the amount of money to deposit below:", "Submit", "Cancel", FormatNumber(Vehicles[vehicle][vTrunkMoney]));
  42133. }
  42134. }
  42135. }
  42136. else
  42137. {
  42138. ShowTrunkMenu(playerid, vehicle);
  42139. }
  42140. return 1;
  42141. }
  42142. Dialog:TrunkWithdraw(playerid, response, listitem, inputtext[])
  42143. {
  42144. new
  42145. vehicle = GetVehicleID(GetClosestVehicle(playerid));
  42146. if (vehicle == INVALID_ID || Vehicles[vehicle][vLocked])
  42147. {
  42148. return 0;
  42149. }
  42150. if (response)
  42151. {
  42152. new amount;
  42153. if (sscanf(inputtext, "i", amount))
  42154. {
  42155. return Dialog_Show(playerid, TrunkWithdraw, DIALOG_STYLE_INPUT, "{FFFFFF}Withdraw money", "There is currently %s stored in the trunk.\n\nPlease input the amount of money to withdraw below:", "Submit", "Cancel", FormatNumber(Vehicles[vehicle][vTrunkMoney]));
  42156. }
  42157. else if (amount < 1 || amount > Vehicles[vehicle][vTrunkMoney])
  42158. {
  42159. return Dialog_Show(playerid, TrunkWithdraw, DIALOG_STYLE_INPUT, "{FFFFFF}Withdraw money", "There isn't that much money in the trunk.\n\nThere is currently %s stored in the trunk.\n\nPlease input the amount of money to withdraw below:", "Submit", "Cancel", FormatNumber(Vehicles[vehicle][vTrunkMoney]));
  42160. }
  42161. else
  42162. {
  42163. Vehicles[vehicle][vTrunkMoney] -= amount;
  42164. Players[playerid][pPocketMoney] += amount;
  42165. SaveVehicle(vehicle);
  42166. ShowTrunkMenu(playerid, vehicle);
  42167. ShowActionBubble(playerid, "* %s takes some money from the trunk.", ReturnNameEx(playerid));
  42168. SendInfoMessage(playerid, "You have withdrawn %s from the trunk (%s remaining).", FormatNumber(amount), FormatNumber(Vehicles[vehicle][vTrunkMoney]));
  42169. new log[128];
  42170. format(log, sizeof(log), "%s withdrew %s from vehicle %i.", ReturnName(playerid), FormatNumber(amount), GetClosestVehicle(playerid));
  42171. CreateLog("money", log);
  42172. if (amount > 29999)
  42173. {
  42174. AdminDutyMessage(COLOR_RED, "Admin: %s has withdrawn %s from vehicle %i.", ReturnNameEx(playerid, 0), FormatNumber(amount), GetClosestVehicle(playerid));
  42175. }
  42176. }
  42177. }
  42178. return 1;
  42179. }
  42180. Dialog:TrunkDeposit(playerid, response, listitem, inputtext[])
  42181. {
  42182. new
  42183. vehicle = GetVehicleID(GetClosestVehicle(playerid));
  42184. if (vehicle == INVALID_ID || Vehicles[vehicle][vLocked])
  42185. {
  42186. return 0;
  42187. }
  42188. if (response)
  42189. {
  42190. new amount;
  42191. if (sscanf(inputtext, "i", amount))
  42192. {
  42193. return Dialog_Show(playerid, TrunkDeposit, DIALOG_STYLE_INPUT, "{FFFFFF}Deposit money", "There is currently %s stored in the trunk.\n\nPlease input the amount of money to deposit below:", "Submit", "Cancel", FormatNumber(Vehicles[vehicle][vTrunkMoney]));
  42194. }
  42195. else if (amount < 1 || amount > Players[playerid][pPocketMoney])
  42196. {
  42197. return Dialog_Show(playerid, TrunkDeposit, DIALOG_STYLE_INPUT, "{FFFFFF}Deposit money", "You don't have that much money in your pocket.\n\nThere is currently %s stored in the trunk.\n\nPlease input the amount of money to deposit below:", "Submit", "Cancel", FormatNumber(Vehicles[vehicle][vTrunkMoney]));
  42198. }
  42199. else
  42200. {
  42201. Vehicles[vehicle][vTrunkMoney] += amount;
  42202. Players[playerid][pPocketMoney] -= amount;
  42203. SaveVehicle(vehicle);
  42204. ShowTrunkMenu(playerid, vehicle);
  42205. ShowActionBubble(playerid, "* %s puts some money in the trunk.", ReturnNameEx(playerid));
  42206. SendInfoMessage(playerid, "You have deposited %s into the trunk (%s remaining).", FormatNumber(amount), FormatNumber(Vehicles[vehicle][vTrunkMoney]));
  42207. new log[128];
  42208. format(log, sizeof(log), "%s deposited %s into vehicle %i.", ReturnName(playerid), FormatNumber(amount), GetClosestVehicle(playerid));
  42209. CreateLog("money", log);
  42210. if (amount > 29999)
  42211. {
  42212. AdminDutyMessage(COLOR_RED, "Admin: %s has deposited %s into vehicle %i.", ReturnNameEx(playerid, 0), FormatNumber(amount), GetClosestVehicle(playerid));
  42213. }
  42214. }
  42215. }
  42216. return 1;
  42217. }
  42218. Dialog:VehicleTrunk(playerid, response, listitem, inputtext[])
  42219. {
  42220. if (response)
  42221. {
  42222. new
  42223. vehicle = GetVehicleID(GetClosestVehicle(playerid));
  42224. if (vehicle == INVALID_ID || Vehicles[vehicle][vLocked])
  42225. {
  42226. return 0;
  42227. }
  42228. switch (listitem)
  42229. {
  42230. case 0:
  42231. {
  42232. Dialog_Show(playerid, TrunkMoney, DIALOG_STYLE_LIST, "{FFFFFF}Stored money", "Withdraw (%s)\nDeposit", "Select", "Back", FormatNumber(Vehicles[vehicle][vTrunkMoney]));
  42233. }
  42234. case 1:
  42235. {
  42236. ShowTrunkItems(playerid, vehicle);
  42237. }
  42238. }
  42239. }
  42240. return 1;
  42241. }
  42242. Dialog:BuyFurniture(playerid, response, listitem, inputtext[])
  42243. {
  42244. if (response)
  42245. {
  42246. Players[playerid][pSelected] = listitem;
  42247. ShowFurniturePreviewer(playerid, listitem);
  42248. }
  42249. return 1;
  42250. }
  42251. Dialog:HouseFurniture(playerid, response, listitem, inputtext[])
  42252. {
  42253. new
  42254. house = Players[playerid][pHouse];
  42255. if(!IsPlayerInside(playerid)) return SendErrorMessage(playerid, "You can not manage the furniture outside.");
  42256. if (!IsValidHouseID(house) || GetNearbyHouse(playerid) != house)
  42257. {
  42258. return 0;
  42259. }
  42260. if (response)
  42261. {
  42262. switch (listitem)
  42263. {
  42264. case 0: // Buy furniture
  42265. {
  42266. ShowFurnitureCategories(playerid);
  42267. }
  42268. case 1: // Edit furniture
  42269. {
  42270. if (Houses[house][hEdit])
  42271. {
  42272. Players[playerid][pHouseEdit] = INVALID_ID;
  42273. SetFurnitureEditMode(house, false);
  42274. SendInfoMessage(playerid, "You are no longer editing your furniture.");
  42275. }
  42276. else
  42277. {
  42278. if (Players[playerid][pHouseEdit] != INVALID_ID)
  42279. {
  42280. SetFurnitureEditMode(Players[playerid][pHouseEdit], false);
  42281. }
  42282. Players[playerid][pHouseEdit] = house;
  42283. SetFurnitureEditMode(house, true);
  42284. SendInfoMessage(playerid, "You are now in edition mode. Use /cancel to stop editing.");
  42285. }
  42286. }
  42287. case 2:
  42288. {
  42289. }
  42290. }
  42291. }
  42292. return 1;
  42293. }
  42294. Dialog:Restart(playerid, response, listitem, inputtext[])
  42295. {
  42296. if (response)
  42297. {
  42298. if (Players[playerid][pAdmin] < 6) return 0;
  42299. SendFormatMessageToAll(COLOR_SAMP, "(( %s has initiated a server restart. ))", ReturnNameEx(playerid, 0));
  42300. foreach (new i : Player)
  42301. {
  42302. if (IsPlayerLoggedIn(i))
  42303. {
  42304. TogglePlayerControllable(i, false);
  42305. SaveAccount(i);
  42306. }
  42307. }
  42308. GameModeExit();
  42309. }
  42310. return 1;
  42311. }
  42312. Dialog:RentVehicle(playerid, response, listitem, inputtext[])
  42313. {
  42314. if (response)
  42315. {
  42316. new
  42317. id = GetVehicleID(GetPlayerVehicleID(playerid));
  42318. if (id == INVALID_ID || !Vehicles[id][vRentable])
  42319. {
  42320. return 0;
  42321. }
  42322. else if (Vehicles[id][vRenter] != INVALID_PLAYER_ID)
  42323. {
  42324. SendErrorMessage(playerid, "This vehicle is already rented by someone else.");
  42325. RemovePlayerFromVehicle(playerid);
  42326. }
  42327. else if (!PlayerCanAfford(playerid, Vehicles[id][vPrice]))
  42328. {
  42329. SendErrorMessage(playerid, "You can't afford to rent this vehicle.");
  42330. RemovePlayerFromVehicle(playerid);
  42331. }
  42332. else
  42333. {
  42334. if (Players[playerid][pRental] != INVALID_ID)
  42335. {
  42336. RespawnRentalCar(playerid);
  42337. }
  42338. DestroyDynamic3DTextLabel(Vehicles[id][vText]);
  42339. if (GetVehicleCompany(id) != INVALID_ID && !IsCompanyOwner(playerid, GetVehicleCompany(id)))
  42340. {
  42341. GiveCompanyMoney(GetVehicleCompany(id), Vehicles[id][vPrice]);
  42342. }
  42343. RemoveMoney(playerid, Vehicles[id][vPrice]);
  42344. Vehicles[id][vRenter] = playerid;
  42345. Vehicles[id][vText] = INVALID_3DTEXT_ID;
  42346. Players[playerid][pRental] = id;
  42347. Statistics[playerid][sRentals]++;
  42348. //SendInfoMessage(playerid, "You have rented this vehicle! It belongs to you until you leave the server.");
  42349. SendInfoMessage(playerid, "You have rented this vehicle! Use '/v lock' to lock the doors.");
  42350. }
  42351. }
  42352. else
  42353. {
  42354. RemovePlayerFromVehicle(playerid);
  42355. }
  42356. return 1;
  42357. }
  42358. Dialog:RestaurantAdd(playerid, response, listitem, inputtext[])
  42359. {
  42360. new
  42361. company = Players[playerid][pCompany];
  42362. if (!IsValidCompanyID(company) || GetNearbyCompany(playerid) != company)
  42363. {
  42364. return 0;
  42365. }
  42366. if (response)
  42367. {
  42368. if (isnull(inputtext))
  42369. {
  42370. return Dialog_Show(playerid, RestaurantAdd, DIALOG_STYLE_INPUT, "{FFFFFF}Add to menu", "Please input the name of the food item you wish to add:", "Submit", "Cancel");
  42371. }
  42372. else if (strlen(inputtext) > 24)
  42373. {
  42374. return Dialog_Show(playerid, RestaurantAdd, DIALOG_STYLE_INPUT, "{FFFFFF}Add to menu", "The item length cannot be over 24 characters.\n\nPlease input the name of the food item you wish to add:", "Submit", "Cancel");
  42375. }
  42376. else
  42377. {
  42378. strcpy(Players[playerid][pProductName], inputtext, 24);
  42379. Dialog_Show(playerid, FoodPrice, DIALOG_STYLE_INPUT, "{FFFFFF}Set price", "Please input the price below for item: %s.", "Submit", "Cancel", Players[playerid][pProductName]);
  42380. }
  42381. }
  42382. else
  42383. {
  42384. ShowProductEditMenu(playerid, company);
  42385. }
  42386. return 1;
  42387. }
  42388. Dialog:FoodPrice(playerid, response, listitem, inputtext[])
  42389. {
  42390. new
  42391. company = Players[playerid][pCompany];
  42392. if (!IsValidCompanyID(company) || GetNearbyCompany(playerid) != company)
  42393. {
  42394. return 0;
  42395. }
  42396. if (response)
  42397. {
  42398. new amount;
  42399. if (sscanf(inputtext, "i", amount))
  42400. {
  42401. return Dialog_Show(playerid, FoodPrice, DIALOG_STYLE_INPUT, "{FFFFFF}Set price", "Please input the price below for item: %s.", "Submit", "Cancel", Players[playerid][pProductName]);
  42402. }
  42403. else if (amount < 1 || amount > 1000)
  42404. {
  42405. return Dialog_Show(playerid, FoodPrice, DIALOG_STYLE_INPUT, "{FFFFFF}Set price", "Please input a price between $1 and $1,000.\n\nPlease input the price below for item: %s.", "Submit", "Cancel", Players[playerid][pProductName]);
  42406. }
  42407. else
  42408. {
  42409. Players[playerid][pFoodPrice] = amount;
  42410. Dialog_Show(playerid, FoodType, DIALOG_STYLE_LIST, "{FFFFFF}Select item type", "Food\nBeverage", "Select", "Cancel", Players[playerid][pProductName]);
  42411. }
  42412. }
  42413. return 1;
  42414. }
  42415. Dialog:FoodType(playerid, response, listitem, inputtext[])
  42416. {
  42417. new
  42418. company = Players[playerid][pCompany];
  42419. if (!IsValidCompanyID(company) || GetNearbyCompany(playerid) != company)
  42420. {
  42421. return 0;
  42422. }
  42423. if (response)
  42424. {
  42425. Players[playerid][pFoodType] = listitem + 1;
  42426. Dialog_Show(playerid, FoodIncrease, DIALOG_STYLE_LIST, "{FFFFFF}Select health increase", "20 percent\n25 percent\n30 percent\n35 percent\n40 percent\n45 percent\n50 percent", "Select", "Cancel", Players[playerid][pProductName]);
  42427. }
  42428. return 1;
  42429. }
  42430. Dialog:FoodIncrease(playerid, response, listitem, inputtext[])
  42431. {
  42432. new
  42433. company = Players[playerid][pCompany];
  42434. if (!IsValidCompanyID(company) || GetNearbyCompany(playerid) != company)
  42435. {
  42436. return 0;
  42437. }
  42438. if (response)
  42439. {
  42440. new
  42441. id = GetNextRestaurantItemID(company);
  42442. if (id == INVALID_ID)
  42443. {
  42444. return SendErrorMessage(playerid, "Your restaurant may only contain %i items.", MAX_RESTAURANT_ITEMS);
  42445. }
  42446. else
  42447. {
  42448. strcpy(RestaurantItems[company][id][rtName], Players[playerid][pProductName], 24);
  42449. RestaurantItems[company][id][rtExists] = 1;
  42450. RestaurantItems[company][id][rtPrice] = Players[playerid][pFoodPrice];
  42451. RestaurantItems[company][id][rtStock] = 200;
  42452. RestaurantItems[company][id][rtType] = Players[playerid][pFoodType];
  42453. RestaurantItems[company][id][rtHealth] = (listitem + 4) * 5;
  42454. format(gExecute, sizeof(gExecute), "INSERT INTO rp_fooditems (cID) VALUES(%i)", Companies[company][cID]);
  42455. mysql_tquery(gConnection, gExecute, "OnRestaurantItemAdded", "ii", company, id);
  42456. SendInfoMessage(playerid, "You have added '%s' to your restaurant.", Players[playerid][pProductName]);
  42457. ShowProductEditMenu(playerid, company);
  42458. }
  42459. }
  42460. return 1;
  42461. }
  42462. Dialog:CarPrice(playerid, response, listitem, inputtext[])
  42463. {
  42464. new
  42465. company = Players[playerid][pCompany];
  42466. if (!IsValidCompanyID(company))
  42467. {
  42468. return 0;
  42469. }
  42470. if (response)
  42471. {
  42472. new amount, modelid = Players[playerid][pSelected];
  42473. if (sscanf(inputtext, "i", amount))
  42474. {
  42475. return Dialog_Show(playerid, CarPrice, DIALOG_STYLE_INPUT, "{FFFFFF}Vehicle price", "Please input the price to set for '%s' below.", "Submit", "Cancel", GetVehicleModelName(modelid));
  42476. }
  42477. else if (amount < 1)
  42478. {
  42479. return Dialog_Show(playerid, CarPrice, DIALOG_STYLE_INPUT, "{FFFFFF}Vehicle price", "The price must be above $0.\n\nPlease input the price to set for '%s' below.", "Submit", "Cancel", GetVehicleModelName(modelid));
  42480. }
  42481. else
  42482. {
  42483. new
  42484. id = AddVehicleToDealership(company, modelid, amount);
  42485. if (id == INVALID_ID)
  42486. {
  42487. return SendErrorMessage(playerid, "There are no available dealership car slots.");
  42488. }
  42489. else
  42490. {
  42491. SendInfoMessage(playerid, "You have added a %s to company %i.", GetVehicleModelName(modelid), company);
  42492. ShowDealershipEditMenu(playerid, company);
  42493. }
  42494. }
  42495. }
  42496. return 1;
  42497. }
  42498. Dialog:DealerAdd(playerid, response, listitem, inputtext[])
  42499. {
  42500. new
  42501. company = Players[playerid][pCompany];
  42502. if (!IsValidCompanyID(company))
  42503. {
  42504. return 0;
  42505. }
  42506. if (response)
  42507. {
  42508. new model[32], modelid;
  42509. if (sscanf(inputtext, "s[32]", model))
  42510. {
  42511. return Dialog_Show(playerid, DealerAdd, DIALOG_STYLE_INPUT, "{FFFFFF}Add Vehicle", "Please enter the model ID or name of the vehicle to add:", "Submit", "Back");
  42512. }
  42513. else if (!(modelid = GetVehicleModelFromName(model)))
  42514. {
  42515. return SendErrorMessage(playerid, "The specified model doesn't exist.");
  42516. }
  42517. else if (IsVehicleInDealership(company, modelid))
  42518. {
  42519. return SendErrorMessage(playerid, "This vehicle is already sold at this dealership.");
  42520. }
  42521. else
  42522. {
  42523. Players[playerid][pSelected] = modelid;
  42524. Dialog_Show(playerid, CarPrice, DIALOG_STYLE_INPUT, "{FFFFFF}Vehicle price", "Please input the price to set for '%s' below.", "Submit", "Cancel", GetVehicleModelName(modelid));
  42525. }
  42526. }
  42527. return 1;
  42528. }
  42529. Dialog:DealerList(playerid, response, listitem, inputtext[])
  42530. {
  42531. new
  42532. company = Players[playerid][pCompany];
  42533. if (!IsValidCompanyID(company))
  42534. {
  42535. return 0;
  42536. }
  42537. if (response)
  42538. {
  42539. if (listitem == 0)
  42540. {
  42541. if (!IsVehicleSpawnSetup(company))
  42542. {
  42543. return SendErrorMessage(playerid, "The vehicle spawn point is not setup.");
  42544. }
  42545. else
  42546. {
  42547. Dialog_Show(playerid, DealerAdd, DIALOG_STYLE_INPUT, "{FFFFFF}Add Vehicle", "Please enter the model ID or name of the vehicle to add:", "Submit", "Back");
  42548. }
  42549. }
  42550. else
  42551. {
  42552. Players[playerid][pSelected] = gListedItems[playerid][--listitem];
  42553. Dialog_Show(playerid, DealerEdit, DIALOG_STYLE_LIST, "{FFFFFF}Edit vehicle", "Price: %s\nDelete Vehicle", "Select", "Back", FormatNumber(DealershipCars[Players[playerid][pSelected]][dcPrice]));
  42554. }
  42555. }
  42556. return 1;
  42557. }
  42558. Dialog:DealerEdit(playerid, response, listitem, inputtext[])
  42559. {
  42560. new
  42561. company = Players[playerid][pCompany];
  42562. if (!IsValidCompanyID(company))
  42563. {
  42564. return 0;
  42565. }
  42566. if (response)
  42567. {
  42568. switch (listitem)
  42569. {
  42570. case 0:
  42571. {
  42572. Dialog_Show(playerid, DealerPrice, DIALOG_STYLE_INPUT, "{FFFFFF}Vehicle price", "The current price for this vehicle is %s.\n\nPlease input the new price for this vehicle below.", "Submit", "Cancel", FormatNumber(DealershipCars[Players[playerid][pSelected]][dcPrice]));
  42573. }
  42574. case 1:
  42575. {
  42576. new
  42577. vehicle = Players[playerid][pSelected];
  42578. format(gExecute, sizeof(gExecute), "DELETE FROM rp_dealercars WHERE ID = %i", DealershipCars[vehicle][dcID]);
  42579. mysql_tquery(gConnection, gExecute);
  42580. DealershipCars[vehicle][dcExists] = 0;
  42581. SendInfoMessage(playerid, "You have deleted a vehicle: %s.", GetVehicleModelName(DealershipCars[vehicle][dcModel]));
  42582. ShowDealershipEditMenu(playerid, company);
  42583. }
  42584. }
  42585. }
  42586. else
  42587. {
  42588. ShowDealershipEditMenu(playerid, company);
  42589. }
  42590. return 1;
  42591. }
  42592. Dialog:DealerPrice(playerid, response, listitem, inputtext[])
  42593. {
  42594. new
  42595. company = Players[playerid][pCompany];
  42596. if (!IsValidCompanyID(company))
  42597. {
  42598. return 0;
  42599. }
  42600. if (response)
  42601. {
  42602. new vehicle = Players[playerid][pSelected], amount;
  42603. if (sscanf(inputtext, "i", amount))
  42604. {
  42605. return Dialog_Show(playerid, DealerPrice, DIALOG_STYLE_INPUT, "{FFFFFF}Vehicle price", "The current price for this vehicle is %s.\n\nPlease input the new price for this vehicle below.", "Submit", "Cancel", FormatNumber(DealershipCars[vehicle][dcPrice]));
  42606. }
  42607. else if (amount < 0)
  42608. {
  42609. return Dialog_Show(playerid, DealerPrice, DIALOG_STYLE_INPUT, "{FFFFFF}Vehicle price", "The current price for this vehicle is %s.\n\nPlease input the new price for this vehicle below.", "Submit", "Cancel", FormatNumber(DealershipCars[vehicle][dcPrice]));
  42610. }
  42611. else
  42612. {
  42613. DealershipCars[vehicle][dcPrice] = amount;
  42614. SaveDealershipCar(vehicle);
  42615. SendInfoMessage(playerid, "You have set the price to %s for vehicle: %s.", FormatNumber(amount), GetVehicleModelName(DealershipCars[vehicle][dcModel]));
  42616. ShowDealershipEditMenu(playerid, company);
  42617. }
  42618. }
  42619. return 1;
  42620. }
  42621. Dialog:RestaurantEdit(playerid, response, listitem, inputtext[])
  42622. {
  42623. new
  42624. company = Players[playerid][pCompany];
  42625. if (!IsValidCompanyID(company) || GetNearbyCompany(playerid) != company)
  42626. {
  42627. return 0;
  42628. }
  42629. if (response)
  42630. {
  42631. if (listitem == 0)
  42632. {
  42633. Dialog_Show(playerid, RestaurantAdd, DIALOG_STYLE_INPUT, "{FFFFFF}Add to menu", "Please input the name of the food item you wish to add:", "Submit", "Cancel");
  42634. }
  42635. else
  42636. {
  42637. new
  42638. id = gListedItems[playerid][--listitem];
  42639. Players[playerid][pProduct] = id;
  42640. Dialog_Show(playerid, RestaurantItem, DIALOG_STYLE_LIST, "{FFFFFF}Edit menu item", "Change Price\t\t%s\nRestock Item\t\t%i/100\nRemove Item", "Select", "Back", FormatNumber(RestaurantItems[company][id][rtPrice]), RestaurantItems[company][id][rtStock]);
  42641. }
  42642. }
  42643. return 1;
  42644. }
  42645. Dialog:RestaurantItem(playerid, response, listitem, inputtext[])
  42646. {
  42647. new
  42648. company = Players[playerid][pCompany];
  42649. if (!IsValidCompanyID(company) || GetNearbyCompany(playerid) != company)
  42650. {
  42651. return 0;
  42652. }
  42653. if (response)
  42654. {
  42655. new id = Players[playerid][pProduct];
  42656. switch (listitem)
  42657. {
  42658. case 0:
  42659. {
  42660. Dialog_Show(playerid, RestaurantPrice, DIALOG_STYLE_INPUT, "{FFFFFF}Edit item price", "The current price for this item is %s.\n\nPlease input the new price for item: %s.", "Submit", "Back", FormatNumber(RestaurantItems[company][id][rtPrice]), RestaurantItems[company][id][rtName]);
  42661. }
  42662. case 1:
  42663. {
  42664. Dialog_Show(playerid, RestaurantStock, DIALOG_STYLE_INPUT, "{FFFFFF}Restock this item", "Your company currently has %i products available.\n\nThe current stock for this item is %i/100.\n\nPlease input the amount of products to stock for this item: %s.", "Submit", "Back", Companies[company][cStock], RestaurantItems[company][id][rtStock], RestaurantItems[company][id][rtName]);
  42665. }
  42666. case 2:
  42667. {
  42668. format(gExecute, sizeof(gExecute), "DELETE FROM rp_fooditems WHERE ID = %i", RestaurantItems[company][id][rtID]);
  42669. mysql_tquery(gConnection, gExecute);
  42670. RestaurantItems[company][id][rtExists] = 0;
  42671. RestaurantItems[company][id][rtID] = 0;
  42672. SendInfoMessage(playerid, "You have removed '%s' from your restaurant.", RestaurantItems[company][id][rtName]);
  42673. ShowProductEditMenu(playerid, company);
  42674. }
  42675. }
  42676. }
  42677. else
  42678. {
  42679. ShowProductEditMenu(playerid, company);
  42680. }
  42681. return 1;
  42682. }
  42683. Dialog:RestaurantPrice(playerid, response, listitem, inputtext[])
  42684. {
  42685. new company = Players[playerid][pCompany];
  42686. new id = Players[playerid][pProduct];
  42687. if (!IsValidCompanyID(company) || GetNearbyCompany(playerid) != company)
  42688. {
  42689. return 0;
  42690. }
  42691. if (response)
  42692. {
  42693. new amount;
  42694. if (sscanf(inputtext, "i", amount))
  42695. {
  42696. return Dialog_Show(playerid, RestaurantPrice, DIALOG_STYLE_INPUT, "{FFFFFF}Edit item price", "The current price for this item is %s.\n\nPlease input the new price for item: %s.", "Submit", "Back", FormatNumber(RestaurantItems[company][id][rtPrice]), RestaurantItems[company][id][rtName]);
  42697. }
  42698. else if (amount < 1 || amount > 1000)
  42699. {
  42700. return Dialog_Show(playerid, RestaurantPrice, DIALOG_STYLE_INPUT, "{FFFFFF}Edit item price", "Please input a price between $1 and $1,000.\n\nThe current price for this item is %s.\n\nPlease input the new price for item: %s.", "Submit", "Back", FormatNumber(RestaurantItems[company][id][rtPrice]), RestaurantItems[company][id][rtName]);
  42701. }
  42702. else
  42703. {
  42704. RestaurantItems[company][id][rtPrice] = amount;
  42705. SaveRestaurantItem(company, id);
  42706. SendInfoMessage(playerid, "You have changed the price for '%s' to: %s.", RestaurantItems[company][id][rtName], FormatNumber(amount));
  42707. ShowProductEditMenu(playerid, company);
  42708. }
  42709. }
  42710. else
  42711. {
  42712. Dialog_Show(playerid, RestaurantItem, DIALOG_STYLE_LIST, "{FFFFFF}Edit menu item", "Change Price\t\t%s\nRestock Item\t\t%i/100\nRemove Item", "Select", "Back", FormatNumber(RestaurantItems[company][id][rtPrice]), RestaurantItems[company][id][rtStock]);
  42713. }
  42714. return 1;
  42715. }
  42716. Dialog:RestaurantStock(playerid, response, listitem, inputtext[])
  42717. {
  42718. new company = Players[playerid][pCompany];
  42719. new id = Players[playerid][pProduct];
  42720. if (!IsValidCompanyID(company) || GetNearbyCompany(playerid) != company)
  42721. {
  42722. return 0;
  42723. }
  42724. if (response)
  42725. {
  42726. new amount;
  42727. if (sscanf(inputtext, "i", amount))
  42728. {
  42729. return Dialog_Show(playerid, RestaurantStock, DIALOG_STYLE_INPUT, "{FFFFFF}Restock this item", "Your company currently has %i products available.\n\nThe current stock for this item is %i/100.\n\nPlease input the amount of products to stock for this item: %s.", "Submit", "Back", Companies[company][cStock], RestaurantItems[company][id][rtStock], RestaurantItems[company][id][rtName]);
  42730. }
  42731. else if (amount < 1 || amount > Companies[company][cStock])
  42732. {
  42733. return Dialog_Show(playerid, RestaurantStock, DIALOG_STYLE_INPUT, "{FFFFFF}Restock this item", "You don't have that much stock.\n\nYour company currently has %i products available.\n\nThe current stock for this item is %i/100.\n\nPlease input the amount of products to stock for this item: %s.", "Submit", "Back", Companies[company][cStock], RestaurantItems[company][id][rtStock], RestaurantItems[company][id][rtName]);
  42734. }
  42735. else if (Products[company][id][prStock] + amount > 200)
  42736. {
  42737. return Dialog_Show(playerid, RestaurantStock, DIALOG_STYLE_INPUT, "{FFFFFF}Restock this item", "Items can only be stocked up to 200.\n\nYour company currently has %i products available.\n\nThe current stock for this item is %i/100.\n\nPlease input the amount of products to stock for this item: %s.", "Submit", "Back", Companies[company][cStock], RestaurantItems[company][id][rtStock], RestaurantItems[company][id][rtName]);
  42738. }
  42739. else
  42740. {
  42741. RestaurantItems[company][id][rtStock] += amount;
  42742. SaveRestaurantItem(company, id);
  42743. Companies[company][cStock] -= amount;
  42744. SaveCompany(company);
  42745. SendInfoMessage(playerid, "You have added %i stock for '%s' (%i/100).", amount, RestaurantItems[company][id][rtName], RestaurantItems[company][id][rtStock]);
  42746. ShowProductEditMenu(playerid, company);
  42747. }
  42748. }
  42749. else
  42750. {
  42751. Dialog_Show(playerid, RestaurantItem, DIALOG_STYLE_LIST, "{FFFFFF}Edit menu item", "Change Price\t\t%s\nRestock Item\t\t%i/100\nRemove Item", "Select", "Back", FormatNumber(RestaurantItems[company][id][rtPrice]), RestaurantItems[company][id][rtStock]);
  42752. }
  42753. return 1;
  42754. }
  42755. Dialog:EditProducts(playerid, response, listitem, inputtext[])
  42756. {
  42757. new
  42758. company = Players[playerid][pCompany];
  42759. if (!IsValidCompanyID(company) || GetNearbyCompany(playerid) != company)
  42760. {
  42761. return 0;
  42762. }
  42763. if (response)
  42764. {
  42765. new
  42766. id = gListedItems[playerid][listitem];
  42767. strcpy(Players[playerid][pProductName], g_CompanyItems[id][e_ItemName], 24);
  42768. Players[playerid][pProduct] = listitem;
  42769. Dialog_Show(playerid, EditProduct, DIALOG_STYLE_LIST, "{FFFFFF}Edit product", "Change Price\t\t%s\nRestock Item\t\t%i/100", "Select", "Back", FormatNumber(Products[company][listitem][prPrice]), Products[company][listitem][prStock]);
  42770. }
  42771. return 1;
  42772. }
  42773. Dialog:EditProduct(playerid, response, listitem, inputtext[])
  42774. {
  42775. new
  42776. company = Players[playerid][pCompany];
  42777. if (!IsValidCompanyID(company) || GetNearbyCompany(playerid) != company)
  42778. {
  42779. return 0;
  42780. }
  42781. if (response)
  42782. {
  42783. new id = Players[playerid][pProduct];
  42784. switch (listitem)
  42785. {
  42786. case 0:
  42787. {
  42788. Dialog_Show(playerid, ProductPrice, DIALOG_STYLE_INPUT, "{FFFFFF}Edit product price", "The current price for this item is %s.\n\nPlease input the new price for item: %s.", "Submit", "Back", FormatNumber(Products[company][id][prPrice]), Players[playerid][pProductName]);
  42789. }
  42790. case 1:
  42791. {
  42792. Dialog_Show(playerid, ProductStock, DIALOG_STYLE_INPUT, "{FFFFFF}Restock this item", "Your company currently has %i products available.\n\nThe current stock for this item is %i/100.\n\nPlease input the amount of products to stock for this item: %s.", "Submit", "Back", Companies[company][cStock], Products[company][id][prStock], Players[playerid][pProductName]);
  42793. }
  42794. }
  42795. }
  42796. else
  42797. {
  42798. ShowProductEditMenu(playerid, company);
  42799. }
  42800. return 1;
  42801. }
  42802. Dialog:Treadmill(playerid, response, listitem, inputtext[])
  42803. {
  42804. if ((response) && IsPlayerInRangeOfPoint(playerid, 3.0, 773.5131, -2.1218, 1000.8479))
  42805. {
  42806. Players[playerid][pSpeedLevel] = listitem + 1;
  42807. Timers[playerid][tWorkout] = SetTimerEx("DecreasePower", 150, true, "i", playerid);
  42808. ApplyAnimation(playerid, "GYMNASIUM", "gym_tread_geton", 4.1, 0, 0, 0, 1, 0, 1);
  42809. SetTimerEx("BeginWorkout", 2000, false, "ii", playerid, WORKOUT_TREADMILL);
  42810. }
  42811. else
  42812. {
  42813. SetCameraBehindPlayer(playerid);
  42814. }
  42815. return 1;
  42816. }
  42817. Dialog:LiftWeights(playerid, response, listitem, inputtext[])
  42818. {
  42819. if ((response) && IsPlayerInRangeOfPoint(playerid, 3.0, 771.7793, 5.4092, 1000.7802))
  42820. {
  42821. Players[playerid][pWeight] = (listitem + 2) * 10;
  42822. Timers[playerid][tWorkout] = SetTimerEx("DecreasePower", 200, true, "i", playerid);
  42823. ApplyAnimation(playerid, "Freeweights", "gym_free_pickup", 4.1, 0, 0, 0, 0, 0, 1);
  42824. SetTimerEx("BeginWorkout", 2500, false, "ii", playerid, WORKOUT_DUMBELLS);
  42825. }
  42826. else
  42827. {
  42828. SetCameraBehindPlayer(playerid);
  42829. }
  42830. return 1;
  42831. }
  42832. Dialog:TeleportInt(playerid, response, listitem, inputtext[])
  42833. {
  42834. if (response)
  42835. {
  42836. SetPlayerPos(playerid, g_Interiors[listitem][e_InteriorX], g_Interiors[listitem][e_InteriorY], g_Interiors[listitem][e_InteriorZ]);
  42837. SetPlayerFacingAngle(playerid, g_Interiors[listitem][e_InteriorA]);
  42838. SetPlayerInterior(playerid, g_Interiors[listitem][e_Interior]);
  42839. SetCameraBehindPlayer(playerid);
  42840. SendInfoMessage(playerid, "You have teleported to %s.", inputtext);
  42841. }
  42842. return 1;
  42843. }
  42844. Dialog:ProductStock(playerid, response, listitem, inputtext[])
  42845. {
  42846. new company = Players[playerid][pCompany];
  42847. new id = Players[playerid][pProduct];
  42848. if (!IsValidCompanyID(company) || GetNearbyCompany(playerid) != company)
  42849. {
  42850. return 0;
  42851. }
  42852. if (response)
  42853. {
  42854. new amount;
  42855. if (sscanf(inputtext, "i", amount))
  42856. {
  42857. return Dialog_Show(playerid, ProductStock, DIALOG_STYLE_INPUT, "{FFFFFF}Restock this item", "Your company currently has %i products available.\n\nThe current stock for this item is %i/100.\n\nPlease input the amount of products to stock for this item: %s.", "Submit", "Back", Companies[company][cStock], Products[company][id][prStock], Players[playerid][pProductName]);
  42858. }
  42859. else if (amount < 1 || amount > Companies[company][cStock])
  42860. {
  42861. return Dialog_Show(playerid, ProductStock, DIALOG_STYLE_INPUT, "{FFFFFF}Restock this item", "You don't have that much stock.\n\nYour company currently has %i products available.\n\nThe current stock for this item is %i/100.\n\nPlease input the amount of products to stock for this item: %s.", "Submit", "Back", Companies[company][cStock], Products[company][id][prStock], Players[playerid][pProductName]);
  42862. }
  42863. else if (Products[company][id][prStock] + amount > 200)
  42864. {
  42865. return Dialog_Show(playerid, ProductStock, DIALOG_STYLE_INPUT, "{FFFFFF}Restock this item", "Products can only be stocked up to 200.\n\nYour company currently has %i products available.\n\nThe current stock for this item is %i/100.\n\nPlease input the amount of products to stock for this item: %s.", "Submit", "Back", Companies[company][cStock], Products[company][id][prStock], Players[playerid][pProductName]);
  42866. }
  42867. else
  42868. {
  42869. Products[company][id][prStock] = Products[company][id][prStock] + amount;
  42870. SaveProduct(company, id);
  42871. Companies[company][cStock] = Companies[company][cStock] - amount;
  42872. SaveCompany(company);
  42873. SendInfoMessage(playerid, "You have added %i stock for '%s' (%i/100).", amount, Players[playerid][pProductName], Products[company][id][prStock]);
  42874. ShowProductEditMenu(playerid, company);
  42875. }
  42876. }
  42877. else
  42878. {
  42879. Dialog_Show(playerid, EditProduct, DIALOG_STYLE_LIST, "{FFFFFF}Edit product", "Change Price\t\t%s\nRestock Item\t\t%i/100", "Select", "Back", FormatNumber(Products[company][id][prPrice]), Products[company][id][prStock]);
  42880. }
  42881. return 1;
  42882. }
  42883. Dialog:ProductPrice(playerid, response, listitem, inputtext[])
  42884. {
  42885. new company = Players[playerid][pCompany];
  42886. new id = Players[playerid][pProduct];
  42887. if (!IsValidCompanyID(company) || GetNearbyCompany(playerid) != company)
  42888. {
  42889. return 0;
  42890. }
  42891. if (response)
  42892. {
  42893. new amount;
  42894. if (sscanf(inputtext, "i", amount))
  42895. {
  42896. return Dialog_Show(playerid, ProductPrice, DIALOG_STYLE_INPUT, "{FFFFFF}Edit product price", "The current price for this item is %s.\n\nPlease input the new price for item: %s.", "Submit", "Back", FormatNumber(Products[company][id][prPrice]), Players[playerid][pProductName]);
  42897. }
  42898. else if (amount < 1 || amount > 50000)
  42899. {
  42900. return Dialog_Show(playerid, ProductPrice, DIALOG_STYLE_INPUT, "{FFFFFF}Edit product price", "Please input a price between $1 and $50,000.\n\nThe current price for this item is %s.\n\nPlease input the new price for item: %s.", "Submit", "Back", FormatNumber(Products[company][id][prPrice]), Players[playerid][pProductName]);
  42901. }
  42902. else
  42903. {
  42904. Products[company][id][prPrice] = amount;
  42905. SaveProduct(company, id);
  42906. SendInfoMessage(playerid, "You have changed the price for '%s' to: %s.", Players[playerid][pProductName], FormatNumber(amount));
  42907. ShowProductEditMenu(playerid, company);
  42908. }
  42909. }
  42910. else
  42911. {
  42912. Dialog_Show(playerid, EditProduct, DIALOG_STYLE_LIST, "{FFFFFF}Edit product", "Change Price\t\t%s\nRestock Item\t\t%i/100", "Select", "Back", FormatNumber(Products[company][id][prPrice]), Products[company][id][prStock]);
  42913. }
  42914. return 1;
  42915. }
  42916. Dialog:PickupItems(playerid, response, listitem, inputtext[])
  42917. {
  42918. if (response)
  42919. {
  42920. new
  42921. id = gListedItems[playerid][listitem];
  42922. if (!DropItems[id][dExists])
  42923. {
  42924. return 0;
  42925. }
  42926. else
  42927. {
  42928. new item = AddItemToInventory(playerid, DropItems[id][dName], DropItems[id][dValue], DropItems[id][dSerial]);
  42929. if (item == INVALID_ID)
  42930. {
  42931. SendErrorMessage(playerid, "There is no more room in your inventory.");
  42932. }
  42933. else
  42934. {
  42935. SendInfoMessage(playerid, "You have picked up an item: %s.", GetDropItemName(id));
  42936. ApplyAnimation(playerid, "BOMBER", "BOM_Plant_In", 4.1, 0, 0, 0, 0, 0);
  42937. DeleteDropItem(id);
  42938. }
  42939. }
  42940. }
  42941. return 1;
  42942. }
  42943. Dialog:BuyFood(playerid, response, listitem, inputtext[])
  42944. {
  42945. new company = GetCurrentCompany(playerid);
  42946. if (!IsValidCompanyID(company))
  42947. {
  42948. return 0;
  42949. }
  42950. if (response)
  42951. {
  42952. new
  42953. id = gListedItems[playerid][listitem];
  42954. if (RestaurantItems[company][id][rtStock] <= 0)
  42955. {
  42956. return SendErrorMessage(playerid, "The selected item is out of stock.");
  42957. }
  42958. else if (!PlayerCanAfford(playerid, RestaurantItems[company][id][rtPrice]))
  42959. {
  42960. return SendErrorMessage(playerid, "You cannot afford this item.");
  42961. }
  42962. else if (GetPlayerHealthEx(playerid) >= 100.0)
  42963. {
  42964. return SendErrorMessage(playerid, "You don't need this right now.");
  42965. }
  42966. else
  42967. {
  42968. if (RestaurantItems[company][id][rtType] == 1)
  42969. {
  42970. if (GetPlayerAnimationIndex(playerid) == 537)
  42971. {
  42972. return SendErrorMessage(playerid, "Please wait until you are finished eating.");
  42973. }
  42974. else
  42975. {
  42976. if (!Players[playerid][pSitting])
  42977. {
  42978. ApplyAnimation(playerid, "FOOD", "EAT_Chicken", 4.1, 0, 0, 0, 0, 0, 1);
  42979. }
  42980. PlayerPlaySound(playerid, 32200, 0.0, 0.0, 0.0);
  42981. SendInfoMessage(playerid, "You have ordered a %s for {33CC33}%s{FFFFFF}.", RestaurantItems[company][id][rtName], FormatNumber(RestaurantItems[company][id][rtPrice]));
  42982. }
  42983. }
  42984. else if (RestaurantItems[company][id][rtType] == 2)
  42985. {
  42986. if (GetPlayerAnimationIndex(playerid) == 16)
  42987. {
  42988. return SendErrorMessage(playerid, "Please wait until you are finished drinking.");
  42989. }
  42990. else
  42991. {
  42992. if (!Players[playerid][pSitting])
  42993. {
  42994. ApplyAnimation(playerid, "BAR", "dnk_stndM_loop", 4.1, 0, 0, 0, 0, 0);
  42995. }
  42996. SendInfoMessage(playerid, "You have ordered a %s for {33CC33}%s{FFFFFF}.", RestaurantItems[company][id][rtName], FormatNumber(RestaurantItems[company][id][rtPrice]));
  42997. }
  42998. }
  42999. RestaurantItems[company][id][rtStock]--;
  43000. SaveRestaurantItem(company, id);
  43001. if (!IsCompanyOwner(playerid, company))
  43002. {
  43003. GiveCompanyMoney(company, RestaurantItems[company][id][rtPrice]);
  43004. }
  43005. RemoveMoney(playerid, RestaurantItems[company][id][rtPrice]);
  43006. if (0 <= RestaurantItems[company][id][rtHealth] <= 50) {
  43007. GivePlayerHealth(playerid, RestaurantItems[company][id][rtHealth]);
  43008. }
  43009. }
  43010. }
  43011. return 1;
  43012. }
  43013. Dialog:BuyItem(playerid, response, listitem, inputtext[])
  43014. {
  43015. new company = GetCurrentCompany(playerid);
  43016. if (!IsValidCompanyID(company))
  43017. {
  43018. return 0;
  43019. }
  43020. if (response)
  43021. {
  43022. OnPlayerPurchaseItem(playerid, g_CompanyItems[gListedItems[playerid][listitem]][e_ItemName], company, listitem);
  43023. }
  43024. return 1;
  43025. }
  43026. Dialog:EditBuilding(playerid, response, listitem, inputtext[])
  43027. {
  43028. new
  43029. building = Players[playerid][pSelected];
  43030. if (!IsValidBuildingID(building))
  43031. {
  43032. return 0;
  43033. }
  43034. if (response)
  43035. {
  43036. switch (listitem)
  43037. {
  43038. case 0:
  43039. {
  43040. GetPlayerPos(playerid, Buildings[building][bSpawn][0], Buildings[building][bSpawn][1], Buildings[building][bSpawn][2]);
  43041. GetPlayerFacingAngle(playerid, Buildings[building][bSpawn][3]);
  43042. Buildings[building][bExterior] = GetPlayerInterior(playerid);
  43043. Buildings[building][bExteriorWorld] = GetPlayerVirtualWorld(playerid);
  43044. UpdateBuilding(building);
  43045. SaveBuilding(building);
  43046. SendAdminMessage(COLOR_RED, "Admin: %s has edited the location of building %i.", ReturnNameEx(playerid, 0), building);
  43047. }
  43048. case 1:
  43049. {
  43050. GetPlayerPos(playerid, Buildings[building][bInt][0], Buildings[building][bInt][1], Buildings[building][bInt][2]);
  43051. GetPlayerFacingAngle(playerid, Buildings[building][bInt][3]);
  43052. Buildings[building][bInterior] = GetPlayerInterior(playerid);
  43053. UpdateBuilding(building);
  43054. SaveBuilding(building);
  43055. SendAdminMessage(COLOR_RED, "Admin: %s has edited the interior spawn of building %i.", ReturnNameEx(playerid, 0), building);
  43056. }
  43057. case 2:
  43058. {
  43059. Buildings[building][bLocked] = !Buildings[building][bLocked];
  43060. SaveBuilding(building);
  43061. if (Buildings[building][bLocked])
  43062. {
  43063. SendAdminMessage(COLOR_RED, "Admin: %s has locked building %i.", ReturnNameEx(playerid, 0), building);
  43064. }
  43065. else
  43066. {
  43067. SendAdminMessage(COLOR_RED, "Admin: %s has unlocked building %i.", ReturnNameEx(playerid, 0), building);
  43068. }
  43069. }
  43070. case 3:
  43071. {
  43072. Dialog_Show(playerid, BuildingName, DIALOG_STYLE_INPUT, "{FFFFFF}Building Name", "The current name for this building is %s.\n\nPlease input the new name for this building below:", "Submit", "Back", Buildings[building][bName]);
  43073. }
  43074. case 4:
  43075. {
  43076. Dialog_Show(playerid, BuildingWorld, DIALOG_STYLE_INPUT, "{FFFFFF}Building World", "The current virtual world for this building is %i.\n\nPlease input the new virtual world for this building below:", "Submit", "Back", Buildings[building][bWorld]);
  43077. }
  43078. case 5:
  43079. {
  43080. Dialog_Show(playerid, BuildingIcon, DIALOG_STYLE_INPUT, "{FFFFFF}Building Icon", "The current map icon type for this building is %i.\n\nPlease input the new icon type for this building below (0-63):", "Submit", "Back", Buildings[building][bIconType]);
  43081. }
  43082. }
  43083. }
  43084. return 1;
  43085. }
  43086. Dialog:BuildingWorld(playerid, response, listitem, inputtext[])
  43087. {
  43088. new
  43089. building = Players[playerid][pSelected];
  43090. if (!IsValidBuildingID(building))
  43091. {
  43092. return 0;
  43093. }
  43094. if (response)
  43095. {
  43096. new vw;
  43097. if (sscanf(inputtext, "i", vw))
  43098. {
  43099. return Dialog_Show(playerid, BuildingWorld, DIALOG_STYLE_INPUT, "{FFFFFF}Building World", "The current virtual world for this building is %i.\n\nPlease input the new virtual world for this building below:", "Submit", "Back", Buildings[building][bWorld]);
  43100. }
  43101. else
  43102. {
  43103. Buildings[building][bWorld] = vw;
  43104. UpdateBuilding(building);
  43105. SaveBuilding(building);
  43106. SendAdminMessage(COLOR_RED, "Admin: %s has set the virtual world of building %i to %i.", ReturnNameEx(playerid, 0), building, vw);
  43107. }
  43108. }
  43109. else
  43110. {
  43111. ShowBuildingEditMenu(playerid, building);
  43112. }
  43113. return 1;
  43114. }
  43115. Dialog:BuildingIcon(playerid, response, listitem, inputtext[])
  43116. {
  43117. new
  43118. building = Players[playerid][pSelected];
  43119. if (!IsValidBuildingID(building))
  43120. {
  43121. return 0;
  43122. }
  43123. if (response)
  43124. {
  43125. new type;
  43126. if (sscanf(inputtext, "i", type))
  43127. {
  43128. return Dialog_Show(playerid, BuildingIcon, DIALOG_STYLE_INPUT, "{FFFFFF}Building Icon", "The current map icon type for this building is %i.\n\nPlease input the new icon type for this building below (0-63):", "Submit", "Back", Buildings[building][bIconType]);
  43129. }
  43130. else if (type < 0 || type > 63)
  43131. {
  43132. return Dialog_Show(playerid, BuildingIcon, DIALOG_STYLE_INPUT, "{FFFFFF}Building Icon", "The type must be between 0 and 63.\n\nThe current map icon type for this building is %i.\n\nPlease input the new icon type for this building below (0-63):", "Submit", "Back", Buildings[building][bIconType]);
  43133. }
  43134. else
  43135. {
  43136. Buildings[building][bIconType] = type;
  43137. UpdateBuilding(building);
  43138. SaveBuilding(building);
  43139. SendAdminMessage(COLOR_RED, "Admin: %s has set the map icon of building %i to %i.", ReturnNameEx(playerid, 0), building, type);
  43140. }
  43141. }
  43142. else
  43143. {
  43144. ShowBuildingEditMenu(playerid, building);
  43145. }
  43146. return 1;
  43147. }
  43148. Dialog:BuildingName(playerid, response, listitem, inputtext[])
  43149. {
  43150. new
  43151. building = Players[playerid][pSelected];
  43152. if (!IsValidBuildingID(building))
  43153. {
  43154. return 0;
  43155. }
  43156. if (response)
  43157. {
  43158. if (isnull(inputtext))
  43159. {
  43160. return Dialog_Show(playerid, BuildingName, DIALOG_STYLE_INPUT, "{FFFFFF}Building Name", "The current name for this building is %s.\n\nPlease input the new name for this building below:", "Submit", "Back", Buildings[building][bName]);
  43161. }
  43162. else if (strlen(inputtext) > 32)
  43163. {
  43164. return Dialog_Show(playerid, BuildingName, DIALOG_STYLE_INPUT, "{FFFFFF}Building Name", "The name can't be above 32 characters.\n\nThe current name for this building is %s.\n\nPlease input the new name for this building below:", "Submit", "Back", Buildings[building][bName]);
  43165. }
  43166. else
  43167. {
  43168. strcpy(Buildings[building][bName], inputtext, 32);
  43169. UpdateBuilding(building);
  43170. SaveBuilding(building);
  43171. SendAdminMessage(COLOR_RED, "Admin: %s has set the name of building %i to %s.", ReturnNameEx(playerid, 0), building, inputtext);
  43172. }
  43173. }
  43174. else
  43175. {
  43176. ShowBuildingEditMenu(playerid, building);
  43177. }
  43178. return 1;
  43179. }
  43180. Dialog:EditCompany(playerid, response, listitem, inputtext[])
  43181. {
  43182. new
  43183. company = Players[playerid][pSelected];
  43184. if (!IsValidCompanyID(company))
  43185. {
  43186. return 0;
  43187. }
  43188. if (response)
  43189. {
  43190. switch (listitem)
  43191. {
  43192. case 0:
  43193. {
  43194. GetPlayerPos(playerid, Companies[company][cSpawn][0], Companies[company][cSpawn][1], Companies[company][cSpawn][2]);
  43195. GetPlayerFacingAngle(playerid, Companies[company][cSpawn][3]);
  43196. Companies[company][cExterior] = GetPlayerInterior(playerid);
  43197. Companies[company][cExteriorWorld] = GetPlayerVirtualWorld(playerid);
  43198. UpdateCompany(company);
  43199. SaveCompany(company);
  43200. SendAdminMessage(COLOR_RED, "Admin: %s has edited the location of company %i.", ReturnNameEx(playerid, 0), company);
  43201. }
  43202. case 1:
  43203. {
  43204. GetPlayerPos(playerid, Companies[company][cInt][0], Companies[company][cInt][1], Companies[company][cInt][2]);
  43205. GetPlayerFacingAngle(playerid, Companies[company][cInt][3]);
  43206. Companies[company][cInterior] = GetPlayerInterior(playerid);
  43207. SaveCompany(company);
  43208. SendAdminMessage(COLOR_RED, "Admin: %s has edited the interior spawn of company %i.", ReturnNameEx(playerid, 0), company);
  43209. }
  43210. case 2:
  43211. {
  43212. if (Companies[company][cType] == COMPANY_DEALERSHIP)
  43213. {
  43214. if (IsPlayerInside(playerid))
  43215. {
  43216. return SendErrorMessage(playerid, "You can't set the vehicle spawn inside.");
  43217. }
  43218. else
  43219. {
  43220. GetPlayerPos(playerid, Companies[company][cVehicle][0], Companies[company][cVehicle][1], Companies[company][cVehicle][2]);
  43221. GetPlayerFacingAngle(playerid, Companies[company][cVehicle][3]);
  43222. UpdateCompany(company);
  43223. SaveCompany(company);
  43224. SendAdminMessage(COLOR_RED, "Admin: %s has edited the vehicle spawn of company %i.", ReturnNameEx(playerid, 0), company);
  43225. }
  43226. }
  43227. else
  43228. {
  43229. if (IsPlayerInside(playerid))
  43230. {
  43231. return SendErrorMessage(playerid, "You can't set the delivery point inside.");
  43232. }
  43233. else
  43234. {
  43235. GetPlayerPos(playerid, Companies[company][cVehicle][0], Companies[company][cVehicle][1], Companies[company][cVehicle][2]);
  43236. GetPlayerFacingAngle(playerid, Companies[company][cVehicle][3]);
  43237. UpdateCompany(company);
  43238. SaveCompany(company);
  43239. SendAdminMessage(COLOR_RED, "Admin: %s has edited the delivery point of company %i.", ReturnNameEx(playerid, 0), company);
  43240. }
  43241. }
  43242. }
  43243. case 3:
  43244. {
  43245. Dialog_Show(playerid, CompanyOwner, DIALOG_STYLE_INPUT, "{FFFFFF}Company Owner", "This company is currently owned by %s.\n\nPlease enter the ID of a connected player to set as the owner (use 'none' to reset).", "Submit", "Cancel", GetCompanyOwner(company));
  43246. }
  43247. case 4:
  43248. {
  43249. Dialog_Show(playerid, CompanyValue, DIALOG_STYLE_INPUT, "{FFFFFF}Company Price", "The current price for this company is %s.\n\nPlease input the new purchase price to set for this company below:", "Submit", "Back", FormatNumber(Companies[company][cValue]));
  43250. }
  43251. case 5:
  43252. {
  43253. Dialog_Show(playerid, CompanyName, DIALOG_STYLE_INPUT, "{FFFFFF}Company Name", "The current name for this company is %s.\n\nPlease input the new name for this company below:", "Submit", "Back", Companies[company][cName]);
  43254. }
  43255. case 6:
  43256. {
  43257. new string[512];
  43258. for (new i = 0; i < sizeof(g_CompanyTypes); i ++) {
  43259. strcat(string, g_CompanyTypes[i]);
  43260. strcat(string, "\n");
  43261. }
  43262. Dialog_Show(playerid, CompanyType, DIALOG_STYLE_LIST, "{FFFFFF}Company Type", string, "Change", "Back");
  43263. }
  43264. case 7:
  43265. {
  43266. Dialog_Show(playerid, CompanyStock, DIALOG_STYLE_INPUT, "{FFFFFF}Company Stock", "The current stock for this company is %i.\n\nPlease input the amount of products to set for this company below:", "Submit", "Back", Companies[company][cStock]);
  43267. }
  43268. }
  43269. }
  43270. return 1;
  43271. }
  43272. Dialog:CompanyName(playerid, response, listitem, inputtext[])
  43273. {
  43274. new
  43275. company = Players[playerid][pSelected];
  43276. if (!IsValidCompanyID(company))
  43277. {
  43278. return 0;
  43279. }
  43280. if (response)
  43281. {
  43282. if (isnull(inputtext))
  43283. {
  43284. return Dialog_Show(playerid, CompanyName, DIALOG_STYLE_INPUT, "{FFFFFF}Company Name", "The current name for this company is %s.\n\nPlease input the new name for this company below:", "Submit", "Back", Companies[company][cName]);
  43285. }
  43286. else if (strlen(inputtext) > 32)
  43287. {
  43288. return Dialog_Show(playerid, CompanyName, DIALOG_STYLE_INPUT, "{FFFFFF}Company Name", "The name can't be over 32 characters.\n\nThe current name for this company is %s.\n\nPlease input the new name for this company below:", "Submit", "Back", Companies[company][cName]);
  43289. }
  43290. else
  43291. {
  43292. strcpy(Companies[company][cName], inputtext, 32);
  43293. UpdateCompany(company);
  43294. SaveCompany(company);
  43295. SendInfoMessage(playerid, "You have set the name of company %i to %s.", company, inputtext);
  43296. }
  43297. }
  43298. else
  43299. {
  43300. ShowCompanyEditMenu(playerid, company);
  43301. }
  43302. return 1;
  43303. }
  43304. Dialog:CompanyType(playerid, response, listitem, inputtext[])
  43305. {
  43306. new
  43307. company = Players[playerid][pSelected];
  43308. if (!IsValidCompanyID(company))
  43309. {
  43310. return 0;
  43311. }
  43312. if (response)
  43313. {
  43314. listitem = listitem + 1;
  43315. if ((Companies[company][cType] == COMPANY_RESTAURANT && listitem != COMPANY_RESTAURANT) || (Companies[company][cType] == COMPANY_RENTALS && listitem != COMPANY_RENTALS))
  43316. {
  43317. ClearProducts(company);
  43318. }
  43319. SetCompanyType(company, listitem);
  43320. UpdateCompany(company);
  43321. SaveCompany(company);
  43322. SendInfoMessage(playerid, "You have set the type of company %i to %s.", company, GetCompanyType(listitem));
  43323. }
  43324. else
  43325. {
  43326. ShowCompanyEditMenu(playerid, company);
  43327. }
  43328. return 1;
  43329. }
  43330. Dialog:CompanyStock(playerid, response, listitem, inputtext[])
  43331. {
  43332. new
  43333. company = Players[playerid][pSelected];
  43334. if (!IsValidCompanyID(company))
  43335. {
  43336. return 0;
  43337. }
  43338. if (response)
  43339. {
  43340. new amount;
  43341. if (sscanf(inputtext, "i", amount))
  43342. {
  43343. return Dialog_Show(playerid, CompanyStock, DIALOG_STYLE_INPUT, "{FFFFFF}Company Stock", "The current stock for this company is %i.\n\nPlease input the amount of products to set for this company below:", "Submit", "Back", Companies[company][cStock]);
  43344. }
  43345. else if (amount < 0)
  43346. {
  43347. return Dialog_Show(playerid, CompanyStock, DIALOG_STYLE_INPUT, "{FFFFFF}Company Stock", "The stock amount must be above 0.\n\nThe current stock for this company is %i.\n\nPlease input the amount of products to set for this company below:", "Submit", "Back", Companies[company][cStock]);
  43348. }
  43349. else
  43350. {
  43351. Companies[company][cStock] = amount;
  43352. UpdateCompany(company);
  43353. SaveCompany(company);
  43354. SendInfoMessage(playerid, "You have set the stock of company %i to %i products.", company, FormatNumber(amount));
  43355. }
  43356. }
  43357. else
  43358. {
  43359. ShowCompanyEditMenu(playerid, company);
  43360. }
  43361. return 1;
  43362. }
  43363. Dialog:CompanyValue(playerid, response, listitem, inputtext[])
  43364. {
  43365. new
  43366. company = Players[playerid][pSelected];
  43367. if (!IsValidCompanyID(company))
  43368. {
  43369. return 0;
  43370. }
  43371. if (response)
  43372. {
  43373. new amount;
  43374. if (sscanf(inputtext, "i", amount))
  43375. {
  43376. return Dialog_Show(playerid, CompanyValue, DIALOG_STYLE_INPUT, "{FFFFFF}Company Price", "The current price for this company is %s.\n\nPlease input the new purchase price to set for this company below:", "Submit", "Back", FormatNumber(Companies[company][cValue]));
  43377. }
  43378. else if (amount < 0)
  43379. {
  43380. return Dialog_Show(playerid, CompanyValue, DIALOG_STYLE_INPUT, "{FFFFFF}Company Price", "The amount must be above $0.\n\nThe current price for this company is %s.\n\nPlease input the new purchase price to set for this company below:", "Submit", "Back", FormatNumber(Companies[company][cValue]));
  43381. }
  43382. else
  43383. {
  43384. Companies[company][cValue] = amount;
  43385. UpdateCompany(company);
  43386. SaveCompany(company);
  43387. SendInfoMessage(playerid, "You have set the price of company %i to %s.", company, FormatNumber(amount));
  43388. }
  43389. }
  43390. else
  43391. {
  43392. ShowCompanyEditMenu(playerid, company);
  43393. }
  43394. return 1;
  43395. }
  43396. Dialog:CompanyOwner(playerid, response, listitem, inputtext[])
  43397. {
  43398. new
  43399. company = Players[playerid][pSelected];
  43400. if (!IsValidCompanyID(company))
  43401. {
  43402. return 0;
  43403. }
  43404. if (response)
  43405. {
  43406. new targetid;
  43407. if (!isnull(inputtext) && !strcmp(inputtext, "none", true))
  43408. {
  43409. SendInfoMessage(playerid, "You have removed the owner for company %i.", company);
  43410. SetCompanyOwner(company, INVALID_PLAYER_ID);
  43411. }
  43412. else if (sscanf(inputtext, "u", targetid))
  43413. {
  43414. return Dialog_Show(playerid, CompanyOwner, DIALOG_STYLE_INPUT, "{FFFFFF}Company Owner", "This company is currently owned by %s.\n\nPlease enter the ID of a connected player to set as the owner (use 'none' to reset).", "Submit", "Cancel", GetCompanyOwner(company));
  43415. }
  43416. else if (!IsPlayerConnected(targetid))
  43417. {
  43418. return Dialog_Show(playerid, CompanyOwner, DIALOG_STYLE_INPUT, "{FFFFFF}Company Owner", "The specified player doesn't exist.\n\nThis company is currently owned by %s.\n\nPlease enter the ID of a connected player to set as the owner (use 'none' to reset).", "Submit", "Cancel", GetCompanyOwner(company));
  43419. }
  43420. else if (!IsPlayerLoggedIn(targetid))
  43421. {
  43422. return Dialog_Show(playerid, CompanyOwner, DIALOG_STYLE_INPUT, "{FFFFFF}Company Owner", "The specified player is not logged in.\n\nThis company is currently owned by %s.\n\nPlease enter the ID of a connected player to set as the owner (use 'none' to reset).", "Submit", "Cancel", GetCompanyOwner(company));
  43423. }
  43424. else
  43425. {
  43426. SetCompanyOwner(company, targetid);
  43427. SendInfoMessage(playerid, "You have set the owner of company %i to %s (ID: %i).", company, ReturnNameEx(targetid, 0), targetid);
  43428. }
  43429. }
  43430. else
  43431. {
  43432. ShowCompanyEditMenu(playerid, company);
  43433. }
  43434. return 1;
  43435. }
  43436. Dialog:HouseInterior(playerid, response, listitem, inputtext[])
  43437. {
  43438. new
  43439. house = Players[playerid][pSelected];
  43440. if (!IsValidHouseID(house))
  43441. {
  43442. return 0;
  43443. }
  43444. if (response)
  43445. {
  43446. new type;
  43447. if (sscanf(inputtext, "i", type))
  43448. {
  43449. return Dialog_Show(playerid, HouseInterior, DIALOG_STYLE_INPUT, "{FFFFFF}House Interior", "Please input the new interior type for this house below.\n\nUse /houseint to preview the available house interiors.", "Submit", "Back");
  43450. }
  43451. else if (type < 1 || type > sizeof(g_HouseInteriors) - 1)
  43452. {
  43453. return Dialog_Show(playerid, HouseInterior, DIALOG_STYLE_INPUT, "{FFFFFF}House Interior", "You must input a number between 1 and %i.\n\nPlease input the new interior type for this house below.\n\nUse /houseint to preview the available house interiors.", "Submit", "Back", sizeof(g_HouseInteriors) - 1);
  43454. }
  43455. else
  43456. {
  43457. SetHouseInteriorType(house, type);
  43458. SaveHouse(house);
  43459. SendInfoMessage(playerid, "You have edited the interior of house %i to %i.", house, type);
  43460. }
  43461. }
  43462. return 1;
  43463. }
  43464. Dialog:EditHouse(playerid, response, listitem, inputtext[])
  43465. {
  43466. new
  43467. house = Players[playerid][pSelected];
  43468. if (!IsValidHouseID(house))
  43469. {
  43470. return 0;
  43471. }
  43472. if (response)
  43473. {
  43474. switch (listitem)
  43475. {
  43476. case 0:
  43477. {
  43478. GetPlayerPos(playerid, Houses[house][hSpawn][0], Houses[house][hSpawn][1], Houses[house][hSpawn][2]);
  43479. GetPlayerFacingAngle(playerid, Houses[house][hSpawn][3]);
  43480. Houses[house][hExterior] = GetPlayerInterior(playerid);
  43481. Houses[house][hExteriorWorld] = GetPlayerVirtualWorld(playerid);
  43482. UpdateHouse(house);
  43483. SaveHouse(house);
  43484. SendInfoMessage(playerid, "You have edited the location of house %i.", house);
  43485. }
  43486. case 1:
  43487. {
  43488. Dialog_Show(playerid, HouseInterior, DIALOG_STYLE_INPUT, "{FFFFFF}House Interior", "Please input the new interior type for this house below.\n\nUse /houseint to preview the available house interiors.", "Submit", "Back");
  43489. }
  43490. case 2:
  43491. {
  43492. Dialog_Show(playerid, HouseOwner, DIALOG_STYLE_INPUT, "{FFFFFF}House Owner", "This house is currently owned by %s.\n\nPlease enter the ID of a connected player to set as the owner (use 'none' to reset).", "Submit", "Cancel", GetHouseOwner(house));
  43493. }
  43494. case 3:
  43495. {
  43496. Dialog_Show(playerid, HouseValue, DIALOG_STYLE_INPUT, "{FFFFFF}House Price", "The current price for this house is %s.\n\nPlease input the new purchase price to set for this house below:", "Submit", "Back", FormatNumber(Houses[house][hValue]));
  43497. }
  43498. case 4:
  43499. {
  43500. Dialog_Show(playerid, HouseAddress, DIALOG_STYLE_INPUT, "{FFFFFF}House Address", "The current address for this house is %s.\n\nPlease input the new address for this house below:", "Submit", "Back", Houses[house][hAddress]);
  43501. }
  43502. }
  43503. }
  43504. return 1;
  43505. }
  43506. Dialog:HouseAddress(playerid, response, listitem, inputtext[])
  43507. {
  43508. new
  43509. house = Players[playerid][pSelected];
  43510. if (!IsValidHouseID(house))
  43511. {
  43512. return 0;
  43513. }
  43514. if (response)
  43515. {
  43516. if (isnull(inputtext))
  43517. {
  43518. return Dialog_Show(playerid, HouseAddress, DIALOG_STYLE_INPUT, "{FFFFFF}House Address", "The current address for this house is %s.\n\nPlease input the new address for this house below:", "Submit", "Back", Houses[house][hAddress]);
  43519. }
  43520. else if (strlen(inputtext) > 32)
  43521. {
  43522. return Dialog_Show(playerid, HouseAddress, DIALOG_STYLE_INPUT, "{FFFFFF}House Address", "The address can't be over 32 characters.\n\nThe current address for this house is %s.\n\nPlease input the new address for this house below:", "Submit", "Back", Houses[house][hAddress]);
  43523. }
  43524. else
  43525. {
  43526. strcpy(Houses[house][hAddress], inputtext, 32);
  43527. UpdateHouse(house);
  43528. SaveHouse(house);
  43529. SendInfoMessage(playerid, "You have set the address of house %i to %s.", house, inputtext);
  43530. }
  43531. }
  43532. else
  43533. {
  43534. ShowHouseEditMenu(playerid, house);
  43535. }
  43536. return 1;
  43537. }
  43538. Dialog:HouseValue(playerid, response, listitem, inputtext[])
  43539. {
  43540. new
  43541. house = Players[playerid][pSelected];
  43542. if (!IsValidHouseID(house))
  43543. {
  43544. return 0;
  43545. }
  43546. if (response)
  43547. {
  43548. new amount;
  43549. if (sscanf(inputtext, "i", amount))
  43550. {
  43551. return Dialog_Show(playerid, HouseValue, DIALOG_STYLE_INPUT, "{FFFFFF}House Price", "The current price for this house is %s.\n\nPlease input the new purchase price to set for this house below:", "Submit", "Back", FormatNumber(Houses[house][hValue]));
  43552. }
  43553. else if (amount < 0)
  43554. {
  43555. return Dialog_Show(playerid, HouseValue, DIALOG_STYLE_INPUT, "{FFFFFF}House Price", "The amount must be above $0.\n\nThe current price for this house is %s.\n\nPlease input the new purchase price to set for this house below:", "Submit", "Back", FormatNumber(Houses[house][hValue]));
  43556. }
  43557. else
  43558. {
  43559. Houses[house][hValue] = amount;
  43560. UpdateHouse(house);
  43561. SaveHouse(house);
  43562. SendInfoMessage(playerid, "You have set the price of house %i to %s.", house, FormatNumber(amount));
  43563. }
  43564. }
  43565. else
  43566. {
  43567. ShowHouseEditMenu(playerid, house);
  43568. }
  43569. return 1;
  43570. }
  43571. Dialog:HouseOwner(playerid, response, listitem, inputtext[])
  43572. {
  43573. new
  43574. house = Players[playerid][pSelected];
  43575. if (!IsValidHouseID(house))
  43576. {
  43577. return 0;
  43578. }
  43579. if (response)
  43580. {
  43581. new targetid;
  43582. if (!isnull(inputtext) && !strcmp(inputtext, "none", true))
  43583. {
  43584. SendInfoMessage(playerid, "You have removed the owner for house %i.", house);
  43585. SetHouseOwner(house, INVALID_PLAYER_ID);
  43586. }
  43587. else if (sscanf(inputtext, "u", targetid))
  43588. {
  43589. return Dialog_Show(playerid, HouseOwner, DIALOG_STYLE_INPUT, "{FFFFFF}House Owner", "This house is currently owned by %s.\n\nPlease enter the ID of a connected player to set as the owner (use 'none' to reset).", "Submit", "Cancel", GetHouseOwner(house));
  43590. }
  43591. else if (!IsPlayerConnected(targetid))
  43592. {
  43593. return Dialog_Show(playerid, HouseOwner, DIALOG_STYLE_INPUT, "{FFFFFF}House Owner", "The specified player doesn't exist.\n\nThis house is currently owned by %s.\n\nPlease enter the ID of a connected player to set as the owner (use 'none' to reset).", "Submit", "Cancel", GetHouseOwner(house));
  43594. }
  43595. else if (!IsPlayerLoggedIn(targetid))
  43596. {
  43597. return Dialog_Show(playerid, HouseOwner, DIALOG_STYLE_INPUT, "{FFFFFF}House Owner", "The specified player is not logged in.\n\nThis house is currently owned by %s.\n\nPlease enter the ID of a connected player to set as the owner (use 'none' to reset).", "Submit", "Cancel", GetHouseOwner(house));
  43598. }
  43599. else
  43600. {
  43601. SetHouseOwner(house, targetid);
  43602. SendInfoMessage(playerid, "You have set the owner of house %i to %s (ID: %i).", house, ReturnNameEx(targetid, 0), targetid);
  43603. }
  43604. }
  43605. else
  43606. {
  43607. ShowHouseEditMenu(playerid, house);
  43608. }
  43609. return 1;
  43610. }
  43611. Dialog:BuyHouse(playerid, response, listitem, inputtext[])
  43612. {
  43613. if (response)
  43614. {
  43615. new house = GetNearbyHouse(playerid);
  43616. if (!IsValidHouseID(house) || GetClosestHouse(playerid) != house) {
  43617. return 0;
  43618. }
  43619. if (Houses[house][hOwner] != 0)
  43620. {
  43621. return SendErrorMessage(playerid, "This house is already owned.");
  43622. }
  43623. else if (IsHouseOwner(playerid, house))
  43624. {
  43625. return SendErrorMessage(playerid, "You already own this house!");
  43626. }
  43627. else
  43628. {
  43629. if (!PlayerCanAfford(playerid, Houses[house][hValue]))
  43630. {
  43631. return SendErrorMessage(playerid, "You cannot afford to buy this property.");
  43632. }
  43633. else
  43634. {
  43635. RemoveMoney(playerid, Houses[house][hValue]);
  43636. SetHouseOwner(house, playerid);
  43637. SendInfoMessage(playerid, "You have purchased %s for {33CC33}%s{FFFFFF}. Use /house to adjust settings.", Houses[house][hAddress], FormatNumber(Houses[house][hValue]));
  43638. Statistics[playerid][sHouses]++;
  43639. format(gExecute, sizeof(gExecute), "INSERT INTO rp_purchases (Player, Type, Price, Date) VALUES(%i, 'House - #%i', %i, NOW())", Players[playerid][pID], Houses[house][hID], Houses[house][hValue]);
  43640. mysql_tquery(gConnection, gExecute);
  43641. ShowFooterText(playerid, "~g~This house is now yours!");
  43642. ShowInfoForHouse(playerid, house);
  43643. }
  43644. }
  43645. }
  43646. return 1;
  43647. }
  43648. Dialog:BuyCompany(playerid, response, listitem, inputtext[])
  43649. {
  43650. if (response)
  43651. {
  43652. new company = GetNearbyCompany(playerid);
  43653. if (!IsValidCompanyID(company) || GetClosestCompany(playerid) != company) {
  43654. return 0;
  43655. }
  43656. if (Companies[company][cOwner] > 0)
  43657. {
  43658. return SendErrorMessage(playerid, "This company is already owned.");
  43659. }
  43660. else if (IsCompanyOwner(playerid, company))
  43661. {
  43662. return SendErrorMessage(playerid, "You already own this company!");
  43663. }
  43664. else
  43665. {
  43666. if (!PlayerCanAfford(playerid, Companies[company][cValue]))
  43667. {
  43668. return SendErrorMessage(playerid, "You cannot afford to buy this property.");
  43669. }
  43670. else
  43671. {
  43672. RemoveMoney(playerid, Companies[company][cValue]);
  43673. SetCompanyOwner(company, playerid);
  43674. SendInfoMessage(playerid, "You have purchased %s for {33CC33}%s{FFFFFF}. Use /company to adjust settings.", Companies[company][cName], FormatNumber(Companies[company][cValue]));
  43675. Statistics[playerid][sCompanies]++;
  43676. format(gExecute, sizeof(gExecute), "INSERT INTO rp_purchases (Player, Type, Price, Date) VALUES(%i, 'Company - #%i', %i, NOW())", Players[playerid][pID], Companies[company][cID], Companies[company][cValue]);
  43677. mysql_tquery(gConnection, gExecute);
  43678. ShowFooterText(playerid, "~g~This company is now yours!");
  43679. ShowInfoForCompany(playerid, company);
  43680. }
  43681. }
  43682. }
  43683. return 1;
  43684. }
  43685. Dialog:AdminItemValue(playerid, response, listitem, inputtext[])
  43686. {
  43687. if (Players[playerid][pAdmin] < 4) return 0;
  43688. if (response)
  43689. {
  43690. new item = Players[playerid][pSelected];
  43691. if (isnull(inputtext))
  43692. {
  43693. return Dialog_Show(playerid, AdminItemValue, DIALOG_STYLE_INPUT, "{FFFFFF}Input item value", "Item: %s\n\nPlease input the value for this item below.\n\nFor example, if the item is a mobile phone, enter the number:", "Submit", "Cancel", g_ItemList[item][e_ItemName]);
  43694. }
  43695. else
  43696. {
  43697. new id = AddItemToInventory(Players[playerid][pTarget], g_ItemList[item][e_ItemName], strval(inputtext));
  43698. if (id == INVALID_ID)
  43699. {
  43700. return SendErrorMessage(playerid, "The specified target has no more room for items.");
  43701. }
  43702. else
  43703. {
  43704. SendInfoMessage(playerid, "You have given a %s (%i) to %s.", g_ItemList[item][e_ItemName], strval(inputtext), ReturnNameEx(Players[playerid][pTarget]));
  43705. SendAdminMessage(COLOR_RED, "Admin: %s has given a %s (%i) to %s.", ReturnNameEx(playerid, 0), g_ItemList[item][e_ItemName], strval(inputtext), ReturnNameEx(Players[playerid][pTarget]));
  43706. Players[playerid][pTarget] = INVALID_PLAYER_ID;
  43707. }
  43708. }
  43709. }
  43710. return 1;
  43711. }
  43712. Dialog:AdminGiveItem(playerid, response, listitem, inputtext[])
  43713. {
  43714. if (Players[playerid][pAdmin] < 4) return 0;
  43715. if (response)
  43716. {
  43717. if (GetItemInformation(g_ItemList[listitem][e_ItemName], ITEM_INFO_VALUE))
  43718. {
  43719. Players[playerid][pSelected] = listitem;
  43720. Dialog_Show(playerid, AdminItemValue, DIALOG_STYLE_INPUT, "{FFFFFF}Input item value", "Item: %s\n\nPlease input the value for this item below.\n\nFor example, if the item is a mobile phone, enter the number:", "Submit", "Cancel", g_ItemList[listitem][e_ItemName]);
  43721. }
  43722. else
  43723. {
  43724. new id = AddItemToInventory(Players[playerid][pTarget], g_ItemList[listitem][e_ItemName]);
  43725. if (id == INVALID_ID)
  43726. {
  43727. return SendErrorMessage(playerid, "The specified target has no more room for items.");
  43728. }
  43729. else
  43730. {
  43731. SendInfoMessage(playerid, "You have given a %s to %s.", g_ItemList[listitem][e_ItemName], ReturnNameEx(Players[playerid][pTarget]));
  43732. SendAdminMessage(COLOR_RED, "Admin: %s has given a %s to %s.", ReturnNameEx(playerid, 0), g_ItemList[listitem][e_ItemName], ReturnNameEx(Players[playerid][pTarget], 0));
  43733. new log[128];
  43734. format(log, sizeof(log), "%s has given a %s to %s", ReturnName(playerid), g_ItemList[listitem][e_ItemName], ReturnName(Players[playerid][pTarget]));
  43735. CreateLog("admin", log);
  43736. Players[playerid][pTarget] = INVALID_PLAYER_ID;
  43737. }
  43738. }
  43739. }
  43740. return 1;
  43741. }
  43742. Dialog:VehicleDespawn(playerid, response, listitem, inputtext[])
  43743. {
  43744. if (Players[playerid][pAdmin] < 3) return 0;
  43745. if (response)
  43746. {
  43747. new count;
  43748. if (!strcmp(inputtext, "Current vehicle"))
  43749. {
  43750. new vehicleid = GetPlayerVehicleID(playerid);
  43751. if (!vehicleid)
  43752. {
  43753. return 0;
  43754. }
  43755. else if (!VehicleInformation[vehicleid][vAdmin])
  43756. {
  43757. SendErrorMessage(playerid, "You can only destroy admin spawned vehicles.");
  43758. }
  43759. else if (DestroyVehicleEx(vehicleid))
  43760. {
  43761. VehicleInformation[vehicleid][vAdmin] = 0;
  43762. SendInfoMessage(playerid, "You have destroyed this vehicle.");
  43763. new log[128];
  43764. format(log, sizeof(log), "%s has destroyed an admin vehicle: %s, id: %i", ReturnName(playerid), GetVehicleName(vehicleid), vehicleid);
  43765. CreateLog("admin", log);
  43766. }
  43767. }
  43768. else if (!strcmp(inputtext, "All vehicles"))
  43769. {
  43770. for (new i = 1; i < MAX_VEHICLES; i ++)
  43771. {
  43772. if (IsValidVehicle(i) && VehicleInformation[i][vAdmin])
  43773. {
  43774. VehicleInformation[i][vAdmin] = 0;
  43775. DestroyVehicleEx(i);
  43776. count++;
  43777. }
  43778. }
  43779. if (!count)
  43780. {
  43781. SendErrorMessage(playerid, "There are no admin vehicles to destroy.");
  43782. }
  43783. else
  43784. {
  43785. SendAdminMessage(COLOR_RED, "Admin: %s has destroyed %i admin vehicles.", ReturnNameEx(playerid, 0), count);
  43786. new log[128];
  43787. format(log, sizeof(log), "%s has destroyed %i admin vehicles", ReturnName(playerid), count);
  43788. CreateLog("admin", log);
  43789. }
  43790. }
  43791. else if (!strcmp(inputtext, "Nearby vehicles"))
  43792. {
  43793. for (new i = 1; i < MAX_VEHICLES; i ++)
  43794. {
  43795. if (IsValidVehicle(i) && IsVehicleStreamedIn(i, playerid) && VehicleInformation[i][vAdmin])
  43796. {
  43797. VehicleInformation[i][vAdmin] = 0;
  43798. DestroyVehicleEx(i);
  43799. count++;
  43800. }
  43801. }
  43802. if (!count)
  43803. {
  43804. SendErrorMessage(playerid, "There are no nearby admin vehicles to destroy.");
  43805. }
  43806. else
  43807. {
  43808. SendInfoMessage(playerid, "You have destroyed %i nearby admin vehicles.", count);
  43809. new log[128];
  43810. format(log, sizeof(log), "%s has destroyed %i nearby admin vehicles", ReturnName(playerid), count);
  43811. CreateLog("admin", log);
  43812. }
  43813. }
  43814. }
  43815. return 1;
  43816. }
  43817. Dialog:VehicleRespawn(playerid, response, listitem, inputtext[])
  43818. {
  43819. if (Players[playerid][pAdmin] < 2) return 0;
  43820. if (response)
  43821. {
  43822. new count;
  43823. if (!strcmp(inputtext, "Current vehicle"))
  43824. {
  43825. if (SetVehicleToRespawn(GetPlayerVehicleID(playerid)))
  43826. {
  43827. if(IsTransportVehicle(GetPlayerVehicleID(playerid))) {
  43828. DestroyDynamicObject(VehicleInformation[GetPlayerVehicleID(playerid)][vObject]);
  43829. VehicleInformation[GetPlayerVehicleID(playerid)][vGoods] = 0;
  43830. VehicleInformation[GetPlayerVehicleID(playerid)][vObject] = INVALID_OBJECT_ID;
  43831. }
  43832. SendInfoMessage(playerid, "You have respawned this vehicle.");
  43833. }
  43834. }
  43835. else if (!strcmp(inputtext, "All vehicles"))
  43836. {
  43837. for (new i = 1; i < MAX_VEHICLES; i ++)
  43838. {
  43839. if (IsValidVehicle(i) && !IsVehicleOccupied(i))
  43840. {
  43841. SetVehicleToRespawn(i);
  43842. if(IsTransportVehicle(i)) {
  43843. DestroyDynamicObject(VehicleInformation[i][vObject]);
  43844. VehicleInformation[i][vGoods] = 0;
  43845. VehicleInformation[i][vObject] = INVALID_OBJECT_ID;
  43846. }
  43847. count++;
  43848. }
  43849. }
  43850. if (!count)
  43851. SendErrorMessage(playerid, "There are no vehicles to respawn.");
  43852. else
  43853. SendFormatMessageToAll(COLOR_SAMP, "(( %s has respawned %i unoccupied vehicles. ))", ReturnNameEx(playerid, 0), count);
  43854. }
  43855. else if (!strcmp(inputtext, "Nearby vehicles"))
  43856. {
  43857. for (new i = 1; i < MAX_VEHICLES; i ++)
  43858. {
  43859. if (IsValidVehicle(i) && IsVehicleStreamedIn(i, playerid) && !IsVehicleOccupied(i))
  43860. {
  43861. SetVehicleToRespawn(i);
  43862. if(IsTransportVehicle(i)) {
  43863. DestroyDynamicObject(VehicleInformation[i][vObject]);
  43864. VehicleInformation[i][vGoods] = 0;
  43865. VehicleInformation[i][vObject] = INVALID_OBJECT_ID;
  43866. }
  43867. count++;
  43868. }
  43869. }
  43870. if (!count)
  43871. SendErrorMessage(playerid, "There are no nearby vehicles to respawn.");
  43872. else
  43873. SendInfoMessage(playerid, "You have respawned %i nearby vehicles.", count);
  43874. }
  43875. }
  43876. return 1;
  43877. }
  43878. Dialog:UnbanPlayer(playerid, response, listitem, inputtext[])
  43879. {
  43880. if (Players[playerid][pAdmin] < 2) return 0;
  43881. if (response)
  43882. {
  43883. format(gExecute, sizeof(gExecute), "SELECT Player, IP FROM rp_blacklist WHERE ID = %i", Players[playerid][pSelected]);
  43884. mysql_tquery(gConnection, gExecute, "OnPlayerUnbanPlayer", "i", playerid);
  43885. }
  43886. else
  43887. {
  43888. ShowBanList(playerid, Players[playerid][pBanPage]);
  43889. }
  43890. return 1;
  43891. }
  43892. Dialog:BanList(playerid, response, listitem, inputtext[])
  43893. {
  43894. if (Players[playerid][pAdmin] < 2) return 0;
  43895. if (response)
  43896. {
  43897. if (!strcmp(inputtext, ">> Next Page"))
  43898. {
  43899. ShowBanList(playerid, Players[playerid][pBanPage] + 1);
  43900. }
  43901. else if (!strcmp(inputtext, "<< Go Back"))
  43902. {
  43903. ShowBanList(playerid, Players[playerid][pBanPage] - 1);
  43904. }
  43905. else
  43906. {
  43907. new
  43908. id = gListedItems[playerid][listitem];
  43909. Players[playerid][pSelected] = id;
  43910. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_blacklist WHERE ID = %i", id);
  43911. mysql_tquery(gConnection, gExecute, "OnSelectBan", "i", playerid);
  43912. }
  43913. }
  43914. return 1;
  43915. }
  43916. Dialog:ReportMenu(playerid, response, listitem, inputtext[])
  43917. {
  43918. if (!Players[playerid][pAdmin]) return 0;
  43919. if (!Reports[Players[playerid][pSelected]][rExists])
  43920. {
  43921. return SendErrorMessage(playerid, "This report was already taken by another admin.");
  43922. }
  43923. if (response)
  43924. {
  43925. switch (listitem)
  43926. {
  43927. case 0:
  43928. {
  43929. Statistics[playerid][sReports]++;
  43930. SendInfoMessage(Reports[Players[playerid][pSelected]][rReporter], "%s has accepted your report. It is now being reviewed.", ReturnNameEx(playerid, 0));
  43931. SendInfoMessage(playerid, "You have accepted %s's report.", ReturnNameEx(Reports[Players[playerid][pSelected]][rReporter]));
  43932. SendAdminMessage(COLOR_RED, "Admin: %s has accepted %s's report.", ReturnNameEx(playerid, 0), ReturnNameEx(Reports[Players[playerid][pSelected]][rReporter]));
  43933. Reports[Players[playerid][pSelected]][rExists] = 0;
  43934. }
  43935. case 1:
  43936. {
  43937. SendInfoMessage(Reports[Players[playerid][pSelected]][rReporter], "%s has trashed your report. It will not be reviewed.", ReturnNameEx(playerid, 0));
  43938. SendInfoMessage(playerid, "You have trashed %s's report.", ReturnNameEx(Reports[Players[playerid][pSelected]][rReporter]));
  43939. SendAdminMessage(COLOR_RED, "Admin: %s has trashed %s's report.", ReturnNameEx(playerid, 0), ReturnNameEx(Reports[Players[playerid][pSelected]][rReporter]));
  43940. Reports[Players[playerid][pSelected]][rExists] = 0;
  43941. }
  43942. }
  43943. }
  43944. else
  43945. {
  43946. ReviewReport(playerid, Players[playerid][pSelected]);
  43947. }
  43948. return 1;
  43949. }
  43950. Dialog:ApbMenu(playerid, response, listitem, inputtext[])
  43951. {
  43952. if (GetPlayerFactionType(playerid) != FACTION_LEO) return 0;
  43953. if(!Apbs[ Players[playerid][pSelected] ][apbExists])
  43954. {
  43955. return SendErrorMessage(playerid,"This APB has been removed.");
  43956. }
  43957. if(response)
  43958. {
  43959. switch(listitem)
  43960. {
  43961. case 0:
  43962. {
  43963. SendInfoMessage(Apbs[ Players[playerid][pSelected] ][apbReporter], "%s has removed your APB.", ReturnNameEx(playerid, 0));
  43964. SendInfoMessage(playerid, "You have removed %s's APB.",ReturnNameEx(Apbs[Players[playerid][pSelected]][apbReporter]));
  43965. Apbs[Players[playerid][pSelected]][apbExists] = 0;
  43966. }
  43967. case 1:
  43968. {
  43969. SendFormatMessage(playerid,COLOR_YELLOW,"%s's APB:", ReturnNameEx(Apbs[ Players[playerid][pSelected] ][apbReporter], 0) );
  43970. SendFormatMessage(playerid,COLOR_WHITE, "Description: %s", Apbs[ Players[playerid][pSelected] ][apbDesc1] );
  43971. }
  43972. }
  43973. }
  43974. else
  43975. {
  43976. ReviewApb(playerid, Players[playerid][pSelected]);
  43977. }
  43978. return 1;
  43979. }
  43980. Dialog:ReportReview(playerid, response, listitem, inputtext[])
  43981. {
  43982. if (!Players[playerid][pAdmin]) return 0;
  43983. if (response)
  43984. {
  43985. if (!Reports[Players[playerid][pSelected]][rExists])
  43986. {
  43987. SendErrorMessage(playerid, "This report was already taken by another admin.");
  43988. }
  43989. else
  43990. {
  43991. Dialog_Show(playerid, ReportMenu, DIALOG_STYLE_LIST, "{FFFFFF}Report Options", "Accept this report\nTrash this report", "Select", "Back");
  43992. }
  43993. }
  43994. else
  43995. {
  43996. ListReports(playerid);
  43997. }
  43998. return 1;
  43999. }
  44000. Dialog:EmergencyReview(playerid, response, listitem, inputtext[])
  44001. {
  44002. if (response)
  44003. {
  44004. new id = Players[playerid][pSelected];
  44005. if (!Emergency[id][ecExists])
  44006. {
  44007. SendErrorMessage(playerid, "This call has already been handled.");
  44008. }
  44009. else
  44010. {
  44011. SendInfoMessage(playerid, "You have marked %s's 911 call as handled.", Emergency[id][ecName]);
  44012. SendFactionMessage(Players[playerid][pFaction], COLOR_RADIO, "** HQ: %s has marked %s's 911 call as handled.", ReturnNameEx(playerid, 0), Emergency[id][ecName]);
  44013. Emergency[id][ecExists] = 0;
  44014. }
  44015. }
  44016. else
  44017. {
  44018. ListEmergency(playerid);
  44019. }
  44020. return 1;
  44021. }
  44022. Dialog:ApbReview(playerid, response, listitem, inputtext[])
  44023. {
  44024. if (GetPlayerFactionType(playerid) != FACTION_LEO) return 0;
  44025. if (response)
  44026. {
  44027. if(!Apbs[ Players[playerid][pSelected] ][apbExists])
  44028. {
  44029. SendErrorMessage(playerid,"This report was already removed.");
  44030. }
  44031. else
  44032. {
  44033. Dialog_Show(playerid, ApbMenu, DIALOG_STYLE_LIST, "{FFFFFF}APB Options", "Remove this APB\nPrint this APB", "Select", "Back");
  44034. }
  44035. }
  44036. else
  44037. {
  44038. ListApbs(playerid);
  44039. }
  44040. return 1;
  44041. }
  44042. Dialog:EmergencyList(playerid, response, listitem, inputtext[])
  44043. {
  44044. if (response)
  44045. {
  44046. new id = gListedItems[playerid][listitem];
  44047. if (!Emergency[id][ecExists])
  44048. {
  44049. SendErrorMessage(playerid, "The selected call has already been handled.");
  44050. }
  44051. else
  44052. {
  44053. ReviewEmergency(playerid, id);
  44054. }
  44055. }
  44056. return 1;
  44057. }
  44058. Dialog:ReportList(playerid, response, listitem, inputtext[])
  44059. {
  44060. if (!Players[playerid][pAdmin]) return 0;
  44061. if (response)
  44062. {
  44063. new id = gListedItems[playerid][listitem];
  44064. if (!Reports[id][rExists])
  44065. {
  44066. SendErrorMessage(playerid, "The selected report has already been taken.");
  44067. }
  44068. else
  44069. {
  44070. ReviewReport(playerid, id);
  44071. }
  44072. }
  44073. return 1;
  44074. }
  44075. Dialog:ApbList(playerid, response, listitem, inputtext[])
  44076. {
  44077. if (GetPlayerFactionType(playerid) != FACTION_LEO) return 0;
  44078. if (response)
  44079. {
  44080. new id = gListedItems[playerid][listitem];
  44081. if(!Apbs[id][apbExists])
  44082. {
  44083. SendErrorMessage(playerid, "The selected APB has already been removed.");
  44084. }
  44085. else
  44086. {
  44087. ReviewApb(playerid, id);
  44088. }
  44089. }
  44090. return 1;
  44091. }
  44092. Dialog:FAQ(playerid, response, listitem, inputtext[])
  44093. {
  44094. static
  44095. helpInfo[1024]
  44096. ;
  44097. if (response)
  44098. {
  44099. switch (listitem)
  44100. {
  44101. case 0:
  44102. {
  44103. Dialog_Show(playerid, ShowFAQ, DIALOG_STYLE_MSGBOX, "{FFFFFF}Fitness system", "Your character also has a fitness ability. You can check your fitness level\nby using the /stats command.\n\nYou can work out at the gym to increase your fitness skill. A higher fitness\nskill means more advantages in fist fights, and the ability to carry more items.", "Back", "Close");
  44104. }
  44105. case 1:
  44106. {
  44107. Dialog_Show(playerid, ShowFAQ, DIALOG_STYLE_MSGBOX, "{FFFFFF}Weapon management", "Your character can carry one melee weapon and 2 additional weapons. The\n/weapons command allows you to access the weapons menu.\n\nOnce you find a weapon, select it in your inventory and select 'Use Item'.\nThe weapon will then be equipped to your character.\n\nThere are many different ammo types made for each weapon. You can\npurchase more ammunition at an ammunition store.", "Back", "Close");
  44108. }
  44109. case 2:
  44110. {
  44111. Dialog_Show(playerid, ShowFAQ, DIALOG_STYLE_MSGBOX, "{FFFFFF}Item management", "Your character also has an inventory that your items are stored in. Simply\nuse the /items command or press the N key to open your inventory.\n\nThere are many types of items that can be found. Look around and\nmaybe you can find some!", "Back", "Close");
  44112. }
  44113. case 3:
  44114. {
  44115. Dialog_Show(playerid, ShowFAQ, DIALOG_STYLE_MSGBOX, "{FFFFFF}Bank accounts", "Your character can only carry so much cash in their pocket. Open a bank\naccount and set it as your primary payment method for easier checkout!\n\nYou can open up to "#MAX_BANK_ACCOUNTS" bank accounts. You can setup your bank account\nas your payment method using the /payment command.", "Back", "Close");
  44116. }
  44117. case 4:
  44118. {
  44119. Dialog_Show(playerid, ShowFAQ, DIALOG_STYLE_MSGBOX, "{FFFFFF}Buying a vehicle", "There are many dealerships scattered across the city that you can buy\nyour own vehicle from. You can own an unlimited amount of vehicles!\n\nDealerships are marked on your radar as a blue car icon. If there is any\ndealership nearby then it will be marked on your mini-map.", "Back", "Close");
  44120. }
  44121. case 5:
  44122. {
  44123. Dialog_Show(playerid, ShowFAQ, DIALOG_STYLE_MSGBOX, "{FFFFFF}Finding a job", "There are many jobs to choose from. Jobs are the number one source\nof income for your character.\n\nYou can acquire a job at City Hall. Use the /guide command if you want\nto find it.\n\nAfter you have a job, you can use the /jobhelp command for more help relating\nto your new job.", "Back", "Close");
  44124. }
  44125. case 6:
  44126. {
  44127. Dialog_Show(playerid, ShowFAQ, DIALOG_STYLE_MSGBOX, "{FFFFFF}Auto shops", "Auto shops are scattered across the city. You can change the vehicle's\ncolor, repair your vehicle, and change the license plate.\n\nAuto shops are marked on your mini-map as a red wrench icon.\nUse the /auto command to open the menu.", "Back", "Close");
  44128. }
  44129. case 7:
  44130. {
  44131. helpInfo = "Using keys is one of the many ways to interact with things you will find\naround the city.\n\nThe H key allows you to enter and exit an interior instead of using a\ncommand each time.\n\nThe N key will open your inventory. If you're not carrying any items then\nan error message will be displayed.\n\nThe Y key allows you turn a vehicle's engine on or off, access a gate\nor pickup items, and so much more!\n\n";
  44132. strcat(helpInfo, "Additionally, most interactive items will display a text label which will\nshow you how to interactive with that item.");
  44133. Dialog_Show(playerid, ShowFAQ, DIALOG_STYLE_MSGBOX, "{FFFFFF}Interactive keys", helpInfo, "Back", "Close");
  44134. }
  44135. case 8:
  44136. {
  44137. helpInfo = "Drugs can be purchased and consumed by players. Each drug has its own\nbenefits and unique effects.\n\nMarijuana gives you 5 health points per second as it's a medicinal drug and\na slight drunk effect.\n\nCocaine gives you 3 health points per second and temporarily stops you from\nlosing health if you are bleeding.\n\nHeroin gives you 1 health point per second and affects your vision and gives\na significant drunk effect.";
  44138. Dialog_Show(playerid, ShowFAQ, DIALOG_STYLE_MSGBOX, "{FFFFFF}Drug system", helpInfo, "Back", "Close");
  44139. }
  44140. }
  44141. }
  44142. else
  44143. {
  44144. cmd_guide(playerid, "\1");
  44145. }
  44146. return 1;
  44147. }
  44148. Dialog:ItemMenu(playerid, response, listitem, inputtext[])
  44149. {
  44150. if (response)
  44151. {
  44152. new
  44153. item = Players[playerid][pSelected];
  44154. switch (listitem)
  44155. {
  44156. case 0:
  44157. {
  44158. new weapon, string[64];
  44159. if (!strcmp("Camera", Inventory[playerid][item][invName]))
  44160. {
  44161. Players[playerid][pCamera] = Inventory[playerid][item][invID];
  44162. GivePlayerWeapon(playerid, 43, 99999);
  44163. ShowActionBubble(playerid, "* %s takes out a camera from their inventory.", ReturnNameEx(playerid));
  44164. SendInfoMessage(playerid, "You have taken out a camera. Hold RMB to view and press LMB to snap a photo.");
  44165. }
  44166. else if (!strcmp("Walkie Talkie", Inventory[playerid][item][invName]))
  44167. {
  44168. if (Inventory[playerid][item][invValue] > 0 && Players[playerid][pChannel] == Inventory[playerid][item][invValue])
  44169. {
  44170. Dialog_Show(playerid, WalkieTalkie, DIALOG_STYLE_LIST, "{FFFFFF}Walkie Talkie", "Unset Primary\nSet Channel (%i)", "Select", "Cancel", Inventory[playerid][item][invValue]);
  44171. }
  44172. else
  44173. {
  44174. Dialog_Show(playerid, WalkieTalkie, DIALOG_STYLE_LIST, "{FFFFFF}Walkie Talkie", "Set to Primary\nSet Channel (%i)", "Select", "Cancel", Inventory[playerid][item][invValue]);
  44175. }
  44176. }
  44177. else if (!strcmp("Portable Radio", Inventory[playerid][item][invName]))
  44178. {
  44179. if (Inventory[playerid][item][invValue] > 0 && Players[playerid][pChannel] == Inventory[playerid][item][invValue])
  44180. {
  44181. Dialog_Show(playerid, PortableRadio, DIALOG_STYLE_LIST, "{FFFFFF}Portable Radio", "Unset Primary\nSet Channel (%i)", "Select", "Cancel", Inventory[playerid][item][invValue]);
  44182. }
  44183. else
  44184. {
  44185. Dialog_Show(playerid, PortableRadio, DIALOG_STYLE_LIST, "{FFFFFF}Portable Radio", "Set to Primary\nSet Channel (%i)", "Select", "Cancel", Inventory[playerid][item][invValue]);
  44186. }
  44187. }
  44188. else if (!strcmp("Stereo", Inventory[playerid][item][invName]))
  44189. {
  44190. if (Stereos[playerid][pStereoID] != INVALID_ID)
  44191. {
  44192. if (!IsPlayerNearPoint(playerid, 3.0, Stereos[playerid][pStereoX], Stereos[playerid][pStereoY], Stereos[playerid][pStereoZ], Stereos[playerid][pStereoInterior], Stereos[playerid][pStereoWorld]))
  44193. {
  44194. return SendErrorMessage(playerid, "You are not in range of your stereo.");
  44195. }
  44196. else
  44197. {
  44198. PickupStereo(playerid);
  44199. }
  44200. }
  44201. else
  44202. {
  44203. if (GetPlayerState(playerid) != PLAYER_STATE_ONFOOT)
  44204. {
  44205. return SendErrorMessage(playerid, "You need to be onfoot to place a stereo down.");
  44206. }
  44207. else if (GetNearbyStereoPlayerID(playerid) != INVALID_PLAYER_ID)
  44208. {
  44209. return SendErrorMessage(playerid, "There is another stereo nearby.");
  44210. }
  44211. else
  44212. {
  44213. new Float:angle;
  44214. format(string, sizeof(string), "%s's Stereo\n{CFCFCF}Commands: /stereo", ReturnNameEx(playerid));
  44215. strpack(Stereos[playerid][pStereoURL], "Not Specified", 255);
  44216. GetPlayerPos(playerid, Stereos[playerid][pStereoX], Stereos[playerid][pStereoY], Stereos[playerid][pStereoZ]);
  44217. GetPlayerFacingAngle(playerid, angle);
  44218. ApplyAnimation(playerid, "BOMBER", "BOM_Plant_In", 4.1, 0, 0, 0, 0, 0);
  44219. Stereos[playerid][pStereoID] = item;
  44220. Stereos[playerid][pStereoInterior] = GetPlayerInterior(playerid);
  44221. Stereos[playerid][pStereoWorld] = GetPlayerVirtualWorld(playerid);
  44222. Stereos[playerid][pStereoObject] = CreateDynamicObject(2102, Stereos[playerid][pStereoX], Stereos[playerid][pStereoY], Stereos[playerid][pStereoZ] - 1.0, 0.0, 0.0, angle, Stereos[playerid][pStereoWorld], Stereos[playerid][pStereoInterior]);
  44223. Stereos[playerid][pStereoText] = CreateDynamic3DTextLabel(string, COLOR_BLUE, Stereos[playerid][pStereoX], Stereos[playerid][pStereoY], Stereos[playerid][pStereoZ] - 0.9, 10.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, Stereos[playerid][pStereoWorld], Stereos[playerid][pStereoInterior]);
  44224. SendInfoMessage(playerid, "You have deployed your stereo. Use /stereo for settings.");
  44225. ShowActionBubble(playerid, "* %s takes out a stereo and sets it down.", ReturnNameEx(playerid));
  44226. }
  44227. }
  44228. }
  44229. else if (!strcmp(".50cal", Inventory[playerid][item][invName]) || !strcmp("9x19mm", Inventory[playerid][item][invName]) || !strcmp("5.56x45mm", Inventory[playerid][item][invName]) || !strcmp("7.62x39mm", Inventory[playerid][item][invName]) || !strcmp("12 Gauge", Inventory[playerid][item][invName]) || !strcmp("7.62x51mm", Inventory[playerid][item][invName]))
  44230. {
  44231. UseAmmunition(playerid, item);
  44232. }
  44233. else if (!strcmp("Beer", Inventory[playerid][item][invName]))
  44234. {
  44235. if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_DRINK_BEER)
  44236. {
  44237. return SendErrorMessage(playerid, "You are already drinking a bottle of beer.");
  44238. }
  44239. else
  44240. {
  44241. RemoveItemFromInventory(playerid, item);
  44242. SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_BEER);
  44243. ShowActionBubble(playerid, "* %s opens up a bottle of beer.", ReturnNameEx(playerid));
  44244. SendInfoMessage(playerid, "Press LMB to take a sip of the beer. Press F to throw it away.");
  44245. }
  44246. }
  44247. else if (!strcmp("Wine", Inventory[playerid][item][invName]))
  44248. {
  44249. if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_DRINK_WINE)
  44250. {
  44251. return SendErrorMessage(playerid, "You are already drinking a bottle of wine.");
  44252. }
  44253. else
  44254. {
  44255. RemoveItemFromInventory(playerid, item);
  44256. SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_WINE);
  44257. ShowActionBubble(playerid, "* %s opens up a bottle of wine.", ReturnNameEx(playerid));
  44258. SendInfoMessage(playerid, "Press LMB to take a sip of the wine. Press F to throw it away.");
  44259. }
  44260. }
  44261. else if (!strcmp("Spraycan", Inventory[playerid][item][invName]))
  44262. {
  44263. new vehicle = GetVehicleID(GetPlayerVehicleID(playerid));
  44264. if (vehicle == INVALID_ID)
  44265. {
  44266. return SendErrorMessage(playerid, "You are not in any vehicle.");
  44267. }
  44268. else if (Players[playerid][pJob] != JOB_MECHANIC)
  44269. {
  44270. return SendErrorMessage(playerid, "You need to have the mechanic job to do this.");
  44271. }
  44272. else if (!GetVehicleKeys(playerid, Vehicles[vehicle][vVehicle]))
  44273. {
  44274. return SendErrorMessage(playerid, "You don't have the keys to this vehicle.");
  44275. }
  44276. else if (Vehicles[vehicle][vRentable])
  44277. {
  44278. return SendErrorMessage(playerid, "You can't change the color of a rental vehicle.");
  44279. }
  44280. else
  44281. {
  44282. Dialog_Show(playerid, VehicleColor, DIALOG_STYLE_INPUT, "{FFFFFF}Vehicle Colors", "Please enter the colors to apply for this vehicle below (color1, color2).\n\nExample: If you want to set your car's color to black, use '0, 0'.", "Submit", "Cancel");
  44283. }
  44284. }
  44285. else if (!strcmp("Mask", Inventory[playerid][item][invName]))
  44286. {
  44287. if (Players[playerid][pMaskID] > 0)
  44288. {
  44289. Players[playerid][pMaskID] = 0;
  44290. ShowActionBubble(playerid, "* %s takes off their mask.", ReturnNameEx(playerid));
  44291. SendInfoMessage(playerid, "You have taken off your mask.");
  44292. }
  44293. else
  44294. {
  44295. ShowActionBubble(playerid, "* %s puts a mask on their face.", ReturnNameEx(playerid));
  44296. SendInfoMessage(playerid, "You have put on a mask.");
  44297. Players[playerid][pMaskID] = Inventory[playerid][item][invValue];
  44298. }
  44299. }
  44300. else if (!strcmp("Notebook", Inventory[playerid][item][invName]))
  44301. {
  44302. ShowPlayerNotebook(playerid, item);
  44303. }
  44304. else if (IsWeaponPackage(Inventory[playerid][item][invName]))
  44305. {
  44306. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_crateguns WHERE itemID = %i", Inventory[playerid][item][invID]);
  44307. mysql_tquery(gConnection, gExecute, "OnPlayerOpenCrate", "ii", playerid, item);
  44308. }
  44309. else if (!strcmp("Steroids", Inventory[playerid][item][invName]))
  44310. {
  44311. if (Players[playerid][pStoned] != STONED_TYPE_NONE)
  44312. {
  44313. SendErrorMessage(playerid, "You are stoned already.");
  44314. }
  44315. else
  44316. {
  44317. RemoveItemValue(playerid, item, 1);
  44318. Players[playerid][pSeconds] = 0;
  44319. SetPlayerDrunkLevel(playerid, 4000);
  44320. ShowActionBubble(playerid, "* %s takes Steroids.", ReturnNameEx(playerid));
  44321. SendInfoMessage(playerid, "You have consumed Steroids.");
  44322. Players[playerid][pStoned] = STONED_TYPE_STEROIDS;
  44323. Players[playerid][pStonedTime] = 500;
  44324. }
  44325. }
  44326. else if (!strcmp("Heroin", Inventory[playerid][item][invName]))
  44327. {
  44328. if (Players[playerid][pStoned] != STONED_TYPE_NONE)
  44329. {
  44330. SendErrorMessage(playerid, "You are stoned already.");
  44331. }
  44332. else
  44333. {
  44334. RemoveItemValue(playerid, item, 1);
  44335. Players[playerid][pSeconds] = 0;
  44336. SetPlayerDrunkLevel(playerid, 4000);
  44337. ShowActionBubble(playerid, "* %s takes Heroin.", ReturnNameEx(playerid));
  44338. SendInfoMessage(playerid, "You have consumed Heroin.");
  44339. Players[playerid][pStoned] = STONED_TYPE_HEROIN;
  44340. Players[playerid][pStonedTime] = 500;
  44341. }
  44342. }
  44343. else if (!strcmp("LSD", Inventory[playerid][item][invName]))
  44344. {
  44345. if (Players[playerid][pStoned] != STONED_TYPE_NONE)
  44346. {
  44347. SendErrorMessage(playerid, "You are stoned already.");
  44348. }
  44349. else
  44350. {
  44351. RemoveItemValue(playerid, item, 1);
  44352. Players[playerid][pSeconds] = 0;
  44353. SetPlayerDrunkLevel(playerid, 4000);
  44354. ShowActionBubble(playerid, "* %s takes LSD.", ReturnNameEx(playerid));
  44355. SendInfoMessage(playerid, "You have consumed LSD.");
  44356. Players[playerid][pStoned] = STONED_TYPE_LSD;
  44357. Players[playerid][pStonedTime] = 500;
  44358. }
  44359. }
  44360. else if (!strcmp("Ecstasy", Inventory[playerid][item][invName]))
  44361. {
  44362. if (Players[playerid][pStoned] != STONED_TYPE_NONE)
  44363. {
  44364. SendErrorMessage(playerid, "You are stoned already.");
  44365. }
  44366. else
  44367. {
  44368. RemoveItemValue(playerid, item, 1);
  44369. Players[playerid][pSeconds] = 0;
  44370. SetPlayerDrunkLevel(playerid, 4000);
  44371. ShowActionBubble(playerid, "* %s takes Ecstasy.", ReturnNameEx(playerid));
  44372. SendInfoMessage(playerid, "You have consumed Ecstasy.");
  44373. Players[playerid][pStoned] = STONED_TYPE_ECSTASY;
  44374. Players[playerid][pStonedTime] = 500;
  44375. }
  44376. }
  44377. else if (!strcmp("Marijuana", Inventory[playerid][item][invName]))
  44378. {
  44379. if (Players[playerid][pStoned] != STONED_TYPE_NONE)
  44380. {
  44381. SendErrorMessage(playerid, "You are stoned already.");
  44382. }
  44383. else
  44384. {
  44385. RemoveItemValue(playerid, item, 1);
  44386. Players[playerid][pSeconds] = 0;
  44387. SetPlayerDrunkLevel(playerid, 4000);
  44388. ShowActionBubble(playerid, "* %s takes Marijuana.", ReturnNameEx(playerid));
  44389. SendInfoMessage(playerid, "You have consumed Marijuana.");
  44390. Players[playerid][pStoned] = STONED_TYPE_MARIJUANA;
  44391. Players[playerid][pStonedTime] = 500;
  44392. }
  44393. }
  44394. else if (!strcmp("Crack", Inventory[playerid][item][invName]))
  44395. {
  44396. if (Players[playerid][pStoned] != STONED_TYPE_NONE)
  44397. {
  44398. SendErrorMessage(playerid, "You are stoned already.");
  44399. }
  44400. else
  44401. {
  44402. RemoveItemValue(playerid, item, 1);
  44403. Players[playerid][pSeconds] = 0;
  44404. SetPlayerDrunkLevel(playerid, 4000);
  44405. ShowActionBubble(playerid, "* %s takes Crack.", ReturnNameEx(playerid));
  44406. SendInfoMessage(playerid, "You have consumed Crack.");
  44407. Players[playerid][pStoned] = STONED_TYPE_CRACK;
  44408. Players[playerid][pStonedTime] = 500;
  44409. }
  44410. }
  44411. else if (!strcmp("Cocaine", Inventory[playerid][item][invName]))
  44412. {
  44413. if (Players[playerid][pStoned] != STONED_TYPE_NONE)
  44414. {
  44415. SendErrorMessage(playerid, "You are stoned already.");
  44416. }
  44417. else
  44418. {
  44419. RemoveItemValue(playerid, item, 1);
  44420. Players[playerid][pSeconds] = 0;
  44421. SetPlayerDrunkLevel(playerid, 4000);
  44422. ShowActionBubble(playerid, "* %s takes Cocaine.", ReturnNameEx(playerid));
  44423. SendInfoMessage(playerid, "You have consumed Cocaine.");
  44424. Players[playerid][pStoned] = STONED_TYPE_COCAINE;
  44425. Players[playerid][pStonedTime] = 500;
  44426. }
  44427. }
  44428. else if (!strcmp("Methamphetamine", Inventory[playerid][item][invName]))
  44429. {
  44430. if (Players[playerid][pStoned] != STONED_TYPE_NONE)
  44431. {
  44432. SendErrorMessage(playerid, "You are stoned already.");
  44433. }
  44434. else
  44435. {
  44436. RemoveItemValue(playerid, item, 1);
  44437. Players[playerid][pSeconds] = 0;
  44438. SetPlayerDrunkLevel(playerid, 4000);
  44439. ShowActionBubble(playerid, "* %s takes Methamphetamine.", ReturnNameEx(playerid));
  44440. SendInfoMessage(playerid, "You have consumed Methamphetamine.");
  44441. Players[playerid][pStoned] = STONED_TYPE_METH;
  44442. Players[playerid][pStonedTime] = 500;
  44443. }
  44444. }
  44445. else if (!strcmp("PCP", Inventory[playerid][item][invName]))
  44446. {
  44447. if (Players[playerid][pStoned] != STONED_TYPE_NONE)
  44448. {
  44449. SendErrorMessage(playerid, "You are stoned already.");
  44450. }
  44451. else
  44452. {
  44453. RemoveItemValue(playerid, item, 1);
  44454. Players[playerid][pSeconds] = 0;
  44455. SetPlayerDrunkLevel(playerid, 4000);
  44456. ShowActionBubble(playerid, "* %s takes PCP.", ReturnNameEx(playerid));
  44457. SendInfoMessage(playerid, "You have consumed PCP.");
  44458. Players[playerid][pStoned] = STONED_TYPE_PCP;
  44459. Players[playerid][pStonedTime] = 500;
  44460. }
  44461. }
  44462. else if (!strcmp("Gasoline", Inventory[playerid][item][invName]))
  44463. {
  44464. new vehicleid = GetClosestVehicle(playerid);
  44465. if (vehicleid == INVALID_VEHICLE_ID)
  44466. {
  44467. SendErrorMessage(playerid, "There is no vehicle nearby.");
  44468. }
  44469. else if (!IsPoweredVehicle(vehicleid))
  44470. {
  44471. SendErrorMessage(playerid, "You can't refill this vehicle.");
  44472. }
  44473. else if (VehicleInformation[vehicleid][vFuel] > 95)
  44474. {
  44475. SendErrorMessage(playerid, "This vehicle is already filled with fuel.");
  44476. }
  44477. else if (GetPlayerState(playerid) != PLAYER_STATE_ONFOOT)
  44478. {
  44479. SendErrorMessage(playerid, "You must be onfoot to use this item.");
  44480. }
  44481. else
  44482. {
  44483. RemoveItemValue(playerid, item, 5);
  44484. VehicleInformation[vehicleid][vFuel] += 5;
  44485. UpdateFuelGauge(vehicleid);
  44486. ShowActionBubble(playerid, "* %s pours some gasoline into the gas tank.", ReturnNameEx(playerid));
  44487. SendInfoMessage(playerid, "You have added 5 gallons of gas into the tank.");
  44488. }
  44489. }
  44490. else if (!strcmp("Cigarettes", Inventory[playerid][item][invName]))
  44491. {
  44492. if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_SMOKE_CIGGY)
  44493. {
  44494. SendErrorMessage(playerid, "You are already smoking a cigarette.");
  44495. }
  44496. else
  44497. {
  44498. ShowActionBubble(playerid, "* %s takes out a cigarette from their pack.", ReturnNameEx(playerid));
  44499. ApplyAnimation(playerid, "SMOKING", "M_smk_in", 4.1, 0, 0, 0, 0, 0, 1);
  44500. SetPlayerSpecialAction(playerid, SPECIAL_ACTION_SMOKE_CIGGY);
  44501. RemoveItemValue(playerid, item, 1);
  44502. SendInfoMessage(playerid, "You are now smoking a cigarette (press F to remove).");
  44503. }
  44504. }
  44505. else if (!strcmp("Bandages", Inventory[playerid][item][invName]))
  44506. {
  44507. Players[playerid][pSelected] = item;
  44508. Dialog_Show(playerid, UseBandage, DIALOG_STYLE_LIST, "{FFFFFF}Bandage Options", "Use bandage\nUse on player", "Select", "Cancel");
  44509. }
  44510. else if (!strcmp("Cuffs", Inventory[playerid][item][invName]))
  44511. {
  44512. Players[playerid][pSelected] = item;
  44513. Dialog_Show(playerid, UseCuffs, DIALOG_STYLE_INPUT, "{FFFFFF}Use Cuffs", "Please input the player that you would like to cuff:", "Cuff", "Cancel");
  44514. }
  44515. /*else if (!strcmp("Taser", Inventory[playerid][item][invName]))
  44516. {
  44517. cmd_taser(playerid, "\1");
  44518. }*/
  44519. else if (!strcmp("Marijuana Seeds", Inventory[playerid][item][invName]))
  44520. {
  44521. new
  44522. Float:x,
  44523. Float:y,
  44524. Float:z;
  44525. GetPlayerPos(playerid, x, y, z);
  44526. AddWeedPlant(playerid, x, y, z, GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid));
  44527. ApplyAnimation(playerid, "BOMBER", "BOM_Plant_In", 4.1, 0, 0, 0, 0, 0);
  44528. RemoveItemValue(playerid, item, 1);
  44529. //AddWeedPlant(playerid, Float:x, Float:y, Float:z, interior, world)
  44530. }
  44531. else if (!strcmp("Painkillers", Inventory[playerid][item][invName]))
  44532. {
  44533. if (!Players[playerid][pBleeding] && GetPlayerHealthEx(playerid) > 99.0)
  44534. {
  44535. SendErrorMessage(playerid, "You don't need to use this right now.");
  44536. }
  44537. else if (Players[playerid][pPainkillers] > 0)
  44538. {
  44539. SendErrorMessage(playerid, "Please wait until the effect has worn off.");
  44540. }
  44541. else
  44542. {
  44543. Players[playerid][pPainkillers] = 60;
  44544. Players[playerid][pBleeding] = 0;
  44545. Players[playerid][pBrokenLeg] = 0;
  44546. RemoveItemValue(playerid, item, 1);
  44547. SetPlayerDrunkLevel(playerid, 5000);
  44548. ApplyAnimation(playerid, "SMOKING", "M_smkstnd_loop", 4.1, 0, 0, 0, 0, 0, 1);
  44549. ShowActionBubble(playerid, "* %s opens a bottle of painkillers and takes one.", ReturnNameEx(playerid));
  44550. SendInfoMessage(playerid, "You have taken some painkillers. The effect will wear off in a minute or so.");
  44551. }
  44552. }
  44553. else if (!strcmp("Medical Kit", Inventory[playerid][item][invName]))
  44554. {
  44555. if (GetPlayerHealthEx(playerid) > 99.0)
  44556. {
  44557. SendErrorMessage(playerid, "You don't need to use this right now.");
  44558. }
  44559. else
  44560. {
  44561. Players[playerid][pMedicKit] = 1;
  44562. Players[playerid][pBleeding] = 0;
  44563. Players[playerid][pBrokenLeg] = 0;
  44564. RemoveItemFromInventory(playerid, item);
  44565. ShowActionBubble(playerid, "* %s opens a medical kit.", ReturnNameEx(playerid));
  44566. SendInfoMessage(playerid, "You have opened up a medical kit. Your health is now regenerating.");
  44567. }
  44568. }
  44569. else if (!strcmp("Mobile Phone", Inventory[playerid][item][invName]))
  44570. {
  44571. if (!Inventory[playerid][item][invValue])
  44572. {
  44573. SendErrorMessage(playerid, "This phone is not activated! Purchase a SIM card for it.");
  44574. }
  44575. else if (Players[playerid][pPhone] == Inventory[playerid][item][invValue])
  44576. {
  44577. Players[playerid][pPhone] = 0;
  44578. SendInfoMessage(playerid, "This phone is no longer your primary phone.");
  44579. }
  44580. else
  44581. {
  44582. Players[playerid][pPhone] = Inventory[playerid][item][invValue];
  44583. SendInfoMessage(playerid, "You have set this phone as your primary phone (number: %i).", Players[playerid][pPhone]);
  44584. }
  44585. }
  44586. else if (!strcmp("Kevlar Vest", Inventory[playerid][item][invName]))
  44587. {
  44588. new value = Inventory[playerid][item][invValue] == 0 ? 50 : Inventory[playerid][item][invValue];
  44589. SetPlayerValidArmor(playerid, value);
  44590. ShowActionBubble(playerid, "* %s straps on a kevlar vest.", ReturnNameEx(playerid));
  44591. RemoveItemFromInventory(playerid, item);
  44592. SendInfoMessage(playerid, "You have strapped on a kevlar vest.");
  44593. }
  44594. else if (!strcmp("Armor", Inventory[playerid][item][invName]))
  44595. {
  44596. if(GetPlayerArmourEx(playerid) > 0.0)
  44597. {
  44598. return SendErrorMessage(playerid, "You have armor already.");
  44599. }
  44600. else
  44601. {
  44602. new Float:Farmor;
  44603. new armor = Inventory[playerid][item][invValue];
  44604. Farmor = float(armor);
  44605. SetPlayerValidArmor(playerid, Farmor);
  44606. ShowActionBubble(playerid, "* %s straps on a kevlar vest.", ReturnNameEx(playerid));
  44607. RemoveItemFromInventory(playerid, item);
  44608. SendInfoMessage(playerid, "You have put armor on.");
  44609. }
  44610. }
  44611. else if (!strcmp("Toolbox", Inventory[playerid][item][invName]))
  44612. {
  44613. new vehicleid = GetClosestVehicle(playerid);
  44614. if (vehicleid == INVALID_VEHICLE_ID)
  44615. {
  44616. return SendErrorMessage(playerid, "There is no vehicle nearby.");
  44617. }
  44618. else if (Players[playerid][pJob] != JOB_MECHANIC)
  44619. {
  44620. return SendErrorMessage(playerid, "You need to have the mechanic job to do this.");
  44621. }
  44622. else if (!GetHoodStatus(vehicleid))
  44623. {
  44624. return SendErrorMessage(playerid, "The hood must be opened to perform a repair.");
  44625. }
  44626. else if (GetPlayerState(playerid) != PLAYER_STATE_ONFOOT)
  44627. {
  44628. return SendErrorMessage(playerid, "You must be onfoot to use this item.");
  44629. }
  44630. else if (GetVehicleHealthEx(vehicleid) >= 1000.0)
  44631. {
  44632. return SendErrorMessage(playerid, "The engine doesn't need to be repaired.");
  44633. }
  44634. else if (Players[playerid][pRepairCar])
  44635. {
  44636. return SendErrorMessage(playerid, "You are already repairing a vehicle.");
  44637. }
  44638. else
  44639. {
  44640. ShowActionBubble(playerid, "* %s takes out a toolbox and starts repairing the engine.", ReturnNameEx(playerid));
  44641. ShowFooterText(playerid, "Repairing the engine, please wait...", 1200);
  44642. Timers[playerid][tRepair] = SetTimerEx("RepairEngine", 1000, true, "ii", playerid, vehicleid);
  44643. Players[playerid][pRepairCar] = 1;
  44644. }
  44645. }
  44646. else if (!strcmp("Screwdriver", Inventory[playerid][item][invName]))
  44647. {
  44648. new id;
  44649. if (GetPlayerState(playerid) != PLAYER_STATE_ONFOOT)
  44650. {
  44651. return SendErrorMessage(playerid, "You must be onfoot to use this item.");
  44652. }
  44653. else if ((id = GetClosestHouse(playerid)) != INVALID_ID)
  44654. {
  44655. if (!Houses[id][hLocked])
  44656. {
  44657. return SendErrorMessage(playerid, "The doors are already unlocked.");
  44658. }
  44659. else
  44660. {
  44661. ShowActionBubble(playerid, "* %s takes out a screwdriver and starts picking the lock.", ReturnNameEx(playerid));
  44662. PickLock(playerid, PICK_LOCK_HOUSE, id);
  44663. SendInfoMessage(playerid, "You are now picking the lock. Leave the area to stop picking.");
  44664. }
  44665. }//else if (GetClosestFurniture(playerid, 2.0, 2332) != INVALID_ID) SafeCheck(playerid);
  44666. /*else if ((id = GetClosestFurniture(playerid, 2.0, 2332)) != INVALID_ID)
  44667. {
  44668. if (Furniture[id][fSafeOpen])
  44669. {
  44670. return SendErrorMessage(playerid, "This safe is already open.");
  44671. }
  44672. else
  44673. {
  44674. ShowActionBubble(playerid, "* %s takes out a screwdriver and starts picking the lock.", ReturnNameEx(playerid));
  44675. PickLock(playerid, PICK_LOCK_SAFE, id);
  44676. SendInfoMessage(playerid, "You are now picking the lock. Leave the area to stop picking.");
  44677. }
  44678. }*/
  44679. else if ((id = GetClosestCompany(playerid)) != INVALID_ID)
  44680. {
  44681. if (!Companies[id][cLocked])
  44682. {
  44683. return SendErrorMessage(playerid, "The doors are already unlocked.");
  44684. }
  44685. else
  44686. {
  44687. ShowActionBubble(playerid, "* %s takes out a screwdriver and starts picking the lock.", ReturnNameEx(playerid));
  44688. PickLock(playerid, PICK_LOCK_COMPANY, id);
  44689. SendInfoMessage(playerid, "You are now picking the lock. Leave the area to stop picking.");
  44690. }
  44691. }
  44692. else if ((id = GetVehicleID(GetClosestVehicle(playerid))) != INVALID_ID)
  44693. {
  44694. if (!Vehicles[id][vLocked])
  44695. {
  44696. return SendErrorMessage(playerid, "This vehicle is already unlocked.");
  44697. }
  44698. else
  44699. {
  44700. foreach (new i : Player)
  44701. {
  44702. if (IsVehicleOwner(i, id))
  44703. {
  44704. SendFormatMessage(i, COLOR_YELLOW, "* Text from OnStar: The alarm has been activated on your %s with the license plate '%s'.", GetVehicleModelName(Vehicles[id][vModel]), Vehicles[id][vPlate]);
  44705. }
  44706. if (GetPlayerFactionType(i) == FACTION_LEO)
  44707. {
  44708. new
  44709. Float:x,
  44710. Float:y,
  44711. Float:z;
  44712. GetVehiclePos( Vehicles[id][vVehicle] , x, y, z);
  44713. SendFormatMessage(i, COLOR_GREEN, "* [DISPATCH] Vehicle Alarm has been Activated any available units please respond.");
  44714. SendFormatMessage(i, COLOR_GREEN, "* [DISPATCH] %s located in %s, plate: '%s' *", GetVehicleModelName(Vehicles[id][vModel]), GetZoneName(x, y, z), Vehicles[id][vPlate]);
  44715. //break;
  44716. }
  44717. }
  44718. /*foreach (new j : Player)
  44719. {
  44720. if (GetPlayerFactionType(j) == FACTION_LEO)
  44721. {
  44722. new
  44723. Float:x,
  44724. Float:y,
  44725. Float:z;
  44726. GetVehiclePos( Vehicles[id][vVehicle] , x, y, z);
  44727. SendFormatMessage(j, COLOR_RED, "* [ALARM] %s located in %s, plate: '%s' *", GetVehicleModelName(Vehicles[id][vModel]), GetZoneName(x, y, z), Vehicles[id][vPlate]);
  44728. //break;
  44729. }
  44730. }*/
  44731. ShowActionBubble(playerid, "* %s takes out a screwdriver and starts picking the lock.", ReturnNameEx(playerid));
  44732. PickLock(playerid, PICK_LOCK_VEHICLE, id);
  44733. SendInfoMessage(playerid, "You are now picking the lock. Leave the area to stop picking.");
  44734. }
  44735. }
  44736. else
  44737. {
  44738. SendErrorMessage(playerid, "There is no locks nearby to pick.");
  44739. }
  44740. }
  44741. else if ((weapon = GetItemInformation(Inventory[playerid][item][invName], ITEM_INFO_WEAPON_ID)) > 0)
  44742. {
  44743. if (Players[playerid][pHoursOnline] < 5 && GetPlayerFactionType(playerid) != FACTION_LEO)
  44744. {
  44745. return SendErrorMessage(playerid, "You need at least 5 playing hours to equip a weapon.");
  44746. }
  44747. if (1 <= weapon <= 15 && Weapons[playerid][wMelee])
  44748. {
  44749. SendErrorMessage(playerid, "Your melee weapon contains a weapon already!");
  44750. }
  44751. else if (1 <= weapon <= 15 && !Weapons[playerid][wMelee])
  44752. {
  44753. SetPlayerWeapon(playerid, WEAPON_MELEE, weapon);
  44754. ShowActionBubble(playerid, "* %s takes out a weapon from their inventory.", ReturnNameEx(playerid));
  44755. RemoveItemFromInventory(playerid, item);
  44756. SendInfoMessage(playerid, "{CFCFCF}You have equipped your melee weapon. Command available: {33AA33}/weapons.");
  44757. }
  44758. else if (!Weapons[playerid][wPrimary])
  44759. {
  44760. if (g_WeaponInfo[Weapons[playerid][wSecondary]][e_WeaponSlot] == g_WeaponInfo[weapon][e_WeaponSlot] || g_WeaponInfo[Weapons[playerid][wTertiary]][e_WeaponSlot] == g_WeaponInfo[weapon][e_WeaponSlot])
  44761. {
  44762. return SendErrorMessage(playerid, "You are already carrying a weapon of this type.");
  44763. }
  44764. else
  44765. {
  44766. if (Inventory[playerid][item][invValue] > 0)
  44767. {
  44768. SetReloadAnimation(playerid, weapon);
  44769. }
  44770. SetPlayerWeapon(playerid, WEAPON_PRIMARY, weapon, Inventory[playerid][item][invValue], Inventory[playerid][item][invSerial]);
  44771. ShowActionBubble(playerid, "* %s takes out a weapon from their inventory.", ReturnNameEx(playerid));
  44772. RemoveItemFromInventory(playerid, item);
  44773. SendInfoMessage(playerid, "Y{CFCFCF}You have equipped your primary weapon. Command available: {33AA33}/weapons.");
  44774. }
  44775. }
  44776. else if (!Weapons[playerid][wSecondary])
  44777. {
  44778. if (g_WeaponInfo[Weapons[playerid][wPrimary]][e_WeaponSlot] == g_WeaponInfo[weapon][e_WeaponSlot] || g_WeaponInfo[Weapons[playerid][wTertiary]][e_WeaponSlot] == g_WeaponInfo[weapon][e_WeaponSlot])
  44779. {
  44780. return SendErrorMessage(playerid, "You are already carrying a weapon of this type.");
  44781. }
  44782. else
  44783. {
  44784. if (Inventory[playerid][item][invValue] > 0)
  44785. {
  44786. SetReloadAnimation(playerid, weapon);
  44787. }
  44788. SetPlayerWeapon(playerid, WEAPON_SECONDARY, weapon, Inventory[playerid][item][invValue], Inventory[playerid][item][invSerial]);
  44789. ShowActionBubble(playerid, "* %s takes out a weapon from their inventory.", ReturnNameEx(playerid));
  44790. RemoveItemFromInventory(playerid, item);
  44791. SendInfoMessage(playerid, "{CFCFCF}You have equipped your secondary weapon. Command available: {33AA33}/weapons.");
  44792. }
  44793. }
  44794. else if (Players[playerid][pDonator] >= DONATOR_STANDARD && !Weapons[playerid][wTertiary])
  44795. {
  44796. if (g_WeaponInfo[Weapons[playerid][wPrimary]][e_WeaponSlot] == g_WeaponInfo[weapon][e_WeaponSlot] || g_WeaponInfo[Weapons[playerid][wSecondary]][e_WeaponSlot] == g_WeaponInfo[weapon][e_WeaponSlot])
  44797. {
  44798. return SendErrorMessage(playerid, "You are already carrying a weapon of this type.");
  44799. }
  44800. else
  44801. {
  44802. if (Inventory[playerid][item][invValue] > 0)
  44803. {
  44804. SetReloadAnimation(playerid, weapon);
  44805. }
  44806. SetPlayerWeapon(playerid, WEAPON_TERTIARY, weapon, Inventory[playerid][item][invValue], Inventory[playerid][item][invSerial]);
  44807. ShowActionBubble(playerid, "* %s takes out a weapon from their inventory.", ReturnNameEx(playerid));
  44808. RemoveItemFromInventory(playerid, item);
  44809. SendInfoMessage(playerid, "{CFCFCF}You have equipped your tertiary weapon. Command available: {33AA33}/weapons.");
  44810. }
  44811. }
  44812. else
  44813. {
  44814. SendErrorMessage(playerid, "{CFCFCF}Your weapon slots are full! (/weapons)");
  44815. }
  44816. }
  44817. }
  44818. case 1:
  44819. {
  44820. if (Players[playerid][pFaction] != INVALID_ID && GetPlayerFactionType(playerid) != FACTION_ILLEGAL && GetItemInformation(Inventory[playerid][item][invName], ITEM_INFO_WEAPON_ID) > 0)
  44821. {
  44822. SendErrorMessage(playerid, "You cannot give out weapons in your faction.");
  44823. }
  44824. else
  44825. {
  44826. Dialog_Show(playerid, GiveItem, DIALOG_STYLE_INPUT, "{FFFFFF}Give item", "Item: %s\n\nPlease input the player to give this item to:", "Submit", "Cancel", GetFullItemName(playerid, item));
  44827. }
  44828. }
  44829. case 2:
  44830. {
  44831. if (IsPlayerInAnyVehicle(playerid))
  44832. {
  44833. return SendErrorMessage(playerid, "You cannot drop items in a vehicle.");
  44834. }
  44835. else
  44836. {
  44837. /*if (GetItemInformation(StoredItems[item][stName], ITEM_INFO_STACKABLE) && Inventory[playerid][item][invValue] > 1)
  44838. {
  44839. Dialog_Show(playerid, DropAmount, DIALOG_STYLE_INPUT, "{FFFFFF}Drop item", "How many would you like to drop?", "Submit", "Cancel");
  44840. }
  44841. else
  44842. {
  44843. Statistics[playerid][sItemsDropped]++;
  44844. ApplyAnimation(playerid, "BOMBER", "BOM_Plant_In", 4.1, 0, 0, 0, 0, 0);
  44845. SendInfoMessage(playerid, "You have discarded an item: %s.", GetFullItemName(playerid, item));
  44846. ShowActionBubble(playerid, "* %s puts an item on the ground.", ReturnNameEx(playerid));
  44847. format(gExecute, sizeof(gExecute), "INSERT INTO rp_itemlogs (Player, Item, Action, Date) VALUES('%s', '%s', 'Dropped', NOW())", ReturnName(playerid), GetFullItemName(playerid, item));
  44848. mysql_tquery(gConnection, gExecute);
  44849. DiscardItem(playerid, item);
  44850. if (Players[playerid][pFaction] != INVALID_ID && GetItemInformation(Inventory[playerid][item][invName], ITEM_INFO_WEAPON_ID) > 0)
  44851. {
  44852. SendInfoMessage(playerid, "As you are a faction member, dropped weapons will not appear on the ground.");
  44853. RemoveItemFromInventory(playerid, item);
  44854. }
  44855. else
  44856. {
  44857. format(gExecute, sizeof(gExecute), "INSERT INTO rp_itemlogs (Player, Item, Action, Date) VALUES('%s', '%s', 'Dropped', NOW())", ReturnName(playerid), GetFullItemName(playerid, item));
  44858. mysql_tquery(gConnection, gExecute);
  44859. DiscardItem(playerid, item);
  44860. }
  44861. }*/
  44862. if (Players[playerid][pFaction] != INVALID_ID && GetItemInformation(Inventory[playerid][item][invName], ITEM_INFO_WEAPON_ID) > 0)
  44863. {
  44864. SendInfoMessage(playerid, "As you are a faction member, dropped weapons will not appear on the ground.");
  44865. RemoveItemFromInventory(playerid, item);
  44866. }
  44867. else
  44868. {
  44869. format(gExecute, sizeof(gExecute), "INSERT INTO rp_itemlogs (Player, Item, Action, Date) VALUES('%s', '%s', 'Dropped', NOW())", ReturnName(playerid), GetFullItemName(playerid, item));
  44870. mysql_tquery(gConnection, gExecute);
  44871. DiscardItem(playerid, item);
  44872. }
  44873. }
  44874. }
  44875. }
  44876. }
  44877. return 1;
  44878. }
  44879. Dialog:AccountCreate(playerid, response, listitem, inputtext[])
  44880. {
  44881. if (response)
  44882. {
  44883. if (isnull(inputtext))
  44884. {
  44885. return Dialog_Show(playerid, AccountCreate, DIALOG_STYLE_PASSWORD, "WCRPG Registration", "Your name is currently not registered!\nPlease enter a safe and secure password below to register with your master account:", "Submit", "Quit");
  44886. }
  44887. else if (strlen(inputtext) < 4)
  44888. {
  44889. return Dialog_Show(playerid, AccountCreate, DIALOG_STYLE_PASSWORD, "WCRPG Registration", "Your password must contain a minimum of 4 characters.\n\nYour name is currently not registered!\nPlease enter a safe and secure password below to register with your master account:", "Submit", "Quit");
  44890. }
  44891. else
  44892. {
  44893. CreatePlayerAccount(playerid, inputtext);
  44894. FlushChatForPlayer(playerid);
  44895. SendInfoMessage(playerid, " You have been registered, once spawned you will spawn at the starter spawn. Welcome aboard!");
  44896. SendInfoMessage(playerid, " Please type {33AA33}'/spawntype'{FFFFFF} to adjust your spawn location.");
  44897. SendInfoMessage(playerid, " If you wish to spawn the your desired faction, please re-log after used {33AA33}'/spawntype'");
  44898. SendInfoMessage(playerid, " There is rental vehicles nearby you if it's needed.");
  44899. }
  44900. }
  44901. else
  44902. {
  44903. Kick(playerid);
  44904. }
  44905. return 1;
  44906. }
  44907. Dialog:AccountLogin(playerid, response, listitem, inputtext[])
  44908. {
  44909. if (response)
  44910. {
  44911. if (isnull(inputtext))
  44912. {
  44913. return Dialog_Show(playerid, AccountLogin, DIALOG_STYLE_PASSWORD, "WCRPG Login", "{FFFFFF}This account is {33AA33}registered.\n{FFFFFF}Please enter your password below in order to authenticate:", "Submit", "Quit");
  44914. }
  44915. else
  44916. {
  44917. PlayerAttemptLogin(playerid, inputtext);
  44918. SendInfoMessage(playerid, " Welcome back to West Coast RPG");
  44919. }
  44920. }
  44921. else
  44922. {
  44923. Kick(playerid);
  44924. }
  44925. return 1;
  44926. }
  44927. /*---------------------------------------------------------------------------
  44928. Script Commands
  44929. These are all the commands that players can use.
  44930. ---------------------------------------------------------------------------*/
  44931. //#include "core/player/cmds_veh.pwn"
  44932. #include "core/player/cmds_chat.pwn"
  44933. #include "core/player/cmds_general.pwn"
  44934. #include "core/player/cmds_roleplay.pwn"
  44935. #include "core/player/cmds_house.pwn"
  44936. #include "core/admin/cmds_punish.pwn"
  44937. #include "core/admin/cmds_general.pwn"
  44938. #include "core/admin/cmds_teleport.pwn"
  44939. #include "core/admin/cmds_veh.pwn"
  44940. #include "core/admin/cmds_stats.pwn"
  44941. #include "core/admin/cmds_fac.pwn"
  44942. CMD:vblacklist(playerid, params[])
  44943. {
  44944. new model[24], modelid;
  44945. if (Players[playerid][pAdmin] < 5)
  44946. {
  44947. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  44948. }
  44949. else if (sscanf(params, "s[24]", model))
  44950. {
  44951. return SendSyntaxMessage(playerid, "/vblacklist (model ID)");
  44952. }
  44953. else if (!(modelid = GetVehicleModelFromName(model)))
  44954. {
  44955. return SendErrorMessage(playerid, "The specified model doesn't exist.");
  44956. }
  44957. else
  44958. {
  44959. if (!IsVehicleBlacklisted(modelid))
  44960. {
  44961. BlacklistVehicle(modelid);
  44962. SendAdminMessage(COLOR_RED, "Admin: %s has blacklisted the %s from being spawned using /vspawn.", ReturnNameEx(playerid, 0), GetVehicleModelName(modelid));
  44963. }
  44964. else
  44965. {
  44966. UnBlacklistVehicle(modelid);
  44967. SendAdminMessage(COLOR_RED, "Admin: %s has whitelisted the %s from being spawned using /vspawn.", ReturnNameEx(playerid, 0), GetVehicleModelName(modelid));
  44968. }
  44969. }
  44970. return 1;
  44971. }
  44972. CMD:vsave(playerid, params[])
  44973. {
  44974. new vehicleid = GetPlayerVehicleID(playerid);
  44975. if (Players[playerid][pAdmin] < 5)
  44976. {
  44977. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  44978. }
  44979. else if (!IsPlayerInAnyVehicle(playerid))
  44980. {
  44981. return SendErrorMessage(playerid, "You need to be in a vehicle to save it.");
  44982. }
  44983. else if (!VehicleInformation[vehicleid][vAdmin])
  44984. {
  44985. return SendErrorMessage(playerid, "You can only save an admin spawned vehicle.");
  44986. }
  44987. else
  44988. {
  44989. new vehicle = GetNextVehicleID();
  44990. if (vehicle == INVALID_ID)
  44991. {
  44992. SendErrorMessage(playerid, "There are no available vehicle slots.");
  44993. }
  44994. else
  44995. {
  44996. VehicleInformation[vehicleid][vAdmin] = 0;
  44997. ResetVehicle(vehicle);
  44998. GetVehiclePos(vehicleid, Vehicles[vehicle][vSpawn][0], Vehicles[vehicle][vSpawn][1], Vehicles[vehicle][vSpawn][2]);
  44999. GetVehicleZAngle(vehicleid, Vehicles[vehicle][vSpawn][3]);
  45000. Vehicles[vehicle][vExists] = 1;
  45001. Vehicles[vehicle][vModel] = GetVehicleModel(vehicleid);
  45002. Vehicles[vehicle][vVehicle] = vehicleid;
  45003. Vehicles[vehicle][vColor1] = VehicleInformation[vehicleid][vColor][0];
  45004. Vehicles[vehicle][vColor2] = VehicleInformation[vehicleid][vColor][1];
  45005. format(gExecute, sizeof(gExecute), "INSERT INTO rp_vehicles (vModel) VALUES(%i)", Vehicles[vehicle][vModel]);
  45006. mysql_tquery(gConnection, gExecute, "OnVehicleAdded", "i", vehicle);
  45007. UpdateVehicle(vehicle);
  45008. PutPlayerInVehicle(playerid, Vehicles[vehicle][vVehicle], 0);
  45009. SendInfoMessage(playerid, "You have saved this vehicle to the database.");
  45010. }
  45011. }
  45012. return 1;
  45013. }
  45014. CMD:vspawn(playerid, params[])
  45015. {
  45016. new model[24], modelid, color1, color2, vehicleid;
  45017. if (Players[playerid][pAdmin] < 3)
  45018. {
  45019. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  45020. }
  45021. else if (sscanf(params, "s[24]I(-1)I(-1)", model, color1, color2))
  45022. {
  45023. return SendSyntaxMessage(playerid, "/vspawn (model) [color 1] [color 2]");
  45024. }
  45025. else if (!(modelid = GetVehicleModelFromName(model)))
  45026. {
  45027. return SendErrorMessage(playerid, "The specified model doesn't exist.");
  45028. }
  45029. else if ((color1 != -1) && (color1 < 0 || color1 > 255))
  45030. {
  45031. return SendErrorMessage(playerid, "The first color must be between -1 and 255.");
  45032. }
  45033. else if ((color2 != -1) && (color2 < 0 || color2 > 255))
  45034. {
  45035. return SendErrorMessage(playerid, "The second color must be between -1 and 255.");
  45036. }
  45037. else if (IsVehicleBlacklisted(modelid))
  45038. {
  45039. return SendErrorMessage(playerid, "This vehicle is blacklisted from being spawned.");
  45040. }
  45041. else
  45042. {
  45043. new
  45044. Float:x,
  45045. Float:y,
  45046. Float:z,
  45047. Float:angle;
  45048. GetPlayerPos(playerid, x, y, z);
  45049. GetPlayerFacingAngle(playerid, angle);
  45050. if ((vehicleid = SpawnVehicle(modelid, x, y, z, angle, color1, color2)) == INVALID_VEHICLE_ID)
  45051. {
  45052. return SendErrorMessage(playerid, "The server cannot handle anymore vehicles!");
  45053. }
  45054. else
  45055. {
  45056. VehicleInformation[vehicleid][vAdmin] = 1;
  45057. LinkVehicleToInterior(vehicleid, GetPlayerInterior(playerid));
  45058. SetVehicleVirtualWorld(vehicleid, GetPlayerVirtualWorld(playerid));
  45059. if (!IsPlayerSpectating(playerid))
  45060. {
  45061. PutPlayerInVehicle(playerid, vehicleid, 0);
  45062. }
  45063. SendAdminMessage(COLOR_RED, "Admin: %s has spawned a %s.", ReturnNameEx(playerid, 0), GetVehicleName(vehicleid));
  45064. new log[128];
  45065. format(log, sizeof(log), "%s has spawned a %s", ReturnName(playerid), GetVehicleName(vehicleid));
  45066. CreateLog("admin", log);
  45067. }
  45068. }
  45069. return 1;
  45070. }
  45071. CMD:vdestroy(playerid, params[])
  45072. {
  45073. if (Players[playerid][pAdmin] < 3)
  45074. {
  45075. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  45076. }
  45077. else
  45078. {
  45079. if (IsPlayerInAnyVehicle(playerid))
  45080. Dialog_Show(playerid, VehicleDespawn, DIALOG_STYLE_LIST, "{FFFFFF}Destroy vehicles", "Current vehicle\nAll vehicles\nNearby vehicles", "Select", "Cancel");
  45081. else
  45082. Dialog_Show(playerid, VehicleDespawn, DIALOG_STYLE_LIST, "{FFFFFF}Destroy vehicles", "All vehicles\nNearby vehicles", "Select", "Cancel");
  45083. }
  45084. return 1;
  45085. }
  45086. CMD:vrepair(playerid, params[])
  45087. {
  45088. new vehicleid = GetPlayerVehicleID(playerid);
  45089. if (Players[playerid][pAdmin] < 2)
  45090. {
  45091. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  45092. }
  45093. else if (!IsValidVehicle(vehicleid) && sscanf(params, "i", vehicleid))
  45094. {
  45095. return SendSyntaxMessage(playerid, "/vrepair (vehicle ID)");
  45096. }
  45097. else if (!IsValidVehicle(vehicleid))
  45098. {
  45099. return SendErrorMessage(playerid, "The specified vehicle doesn't exist.");
  45100. }
  45101. else
  45102. {
  45103. RepairVehicle(vehicleid);
  45104. SendInfoMessage(playerid, "You have repaired vehicle %i.", vehicleid);
  45105. new log[128];
  45106. format(log, sizeof(log), "%s has repaired vehicle %i", ReturnName(playerid), vehicleid);
  45107. CreateLog("admin", log);
  45108. }
  45109. return 1;
  45110. }
  45111. CMD:vrefuelall(playerid, params[])
  45112. {
  45113. if (Players[playerid][pAdmin] < 3)
  45114. {
  45115. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  45116. }
  45117. else
  45118. {
  45119. for (new i = 1; i < MAX_VEHICLES; i ++)
  45120. {
  45121. if (!IsValidVehicle(i)) continue;
  45122. VehicleInformation[i][vFuel] = 100;
  45123. }
  45124. SendAdminMessage(COLOR_RED, "Admin: %s has refueled all vehicles.", ReturnNameEx(playerid));
  45125. new log[128];
  45126. format(log, sizeof(log), "%s has refueled all vehicles", ReturnName(playerid));
  45127. CreateLog("admin", log);
  45128. }
  45129. return 1;
  45130. }
  45131. CMD:vrefuel(playerid, params[])
  45132. {
  45133. new vehicleid = GetPlayerVehicleID(playerid);
  45134. if (Players[playerid][pAdmin] < 3)
  45135. {
  45136. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  45137. }
  45138. else if (!IsValidVehicle(vehicleid) && sscanf(params, "i", vehicleid))
  45139. {
  45140. return SendSyntaxMessage(playerid, "/vrefuel (vehicle ID)");
  45141. }
  45142. else if (!IsValidVehicle(vehicleid))
  45143. {
  45144. return SendErrorMessage(playerid, "The specified vehicle doesn't exist.");
  45145. }
  45146. else
  45147. {
  45148. VehicleInformation[vehicleid][vFuel] = 100;
  45149. UpdateFuelGauge(vehicleid);
  45150. SendInfoMessage(playerid, "You have refueled vehicle %i.", vehicleid);
  45151. new log[128];
  45152. format(log, sizeof(log), "%s has refueled vehicle %i", ReturnName(playerid), vehicleid);
  45153. CreateLog("admin", log);
  45154. }
  45155. return 1;
  45156. }
  45157. CMD:vsethealth(playerid, params[])
  45158. {
  45159. new vehicleid, Float:health;
  45160. if (Players[playerid][pAdmin] < 5)
  45161. {
  45162. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  45163. }
  45164. else if (sscanf(params, "if", vehicleid, health))
  45165. {
  45166. return SendSyntaxMessage(playerid, "/vsethealth (vehicle ID) (health)");
  45167. }
  45168. else if (!IsValidVehicle(vehicleid))
  45169. {
  45170. return SendErrorMessage(playerid, "The specified vehicle doesn't exist.");
  45171. }
  45172. else
  45173. {
  45174. SetVehicleHealth(vehicleid, health);
  45175. SendInfoMessage(playerid, "You have set the health of vehicle %i to %.0f.", vehicleid, health);
  45176. new log[128];
  45177. format(log, sizeof(log), "%s has set the health of vehicle %i to %.0f", ReturnName(playerid), vehicleid, health);
  45178. CreateLog("admin", log);
  45179. }
  45180. return 1;
  45181. }
  45182. CMD:disarm(playerid, params[])
  45183. {
  45184. new targetid;
  45185. if (Players[playerid][pAdmin] < 3)
  45186. {
  45187. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  45188. }
  45189. else if (sscanf(params, "u", targetid))
  45190. {
  45191. return SendSyntaxMessage(playerid, "/disarm [playerid/name]");
  45192. }
  45193. else if (!IsPlayerConnected(targetid))
  45194. {
  45195. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  45196. }
  45197. else if (!IsPlayerLoggedIn(targetid))
  45198. {
  45199. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  45200. }
  45201. else
  45202. {
  45203. ResetWeapons(targetid);
  45204. SendInfoMessage(playerid, "You have disarmed %s.", ReturnNameEx(targetid, 0));
  45205. new log[128];
  45206. format(log, sizeof(log), "%s has disarmed %s", ReturnName(playerid), ReturnName(targetid));
  45207. CreateLog("admin", log);
  45208. }
  45209. return 1;
  45210. }
  45211. CMD:setweapon(playerid, params[])
  45212. {
  45213. new targetid, slot, weapon, ammo;
  45214. if (Players[playerid][pAdmin] < 6)
  45215. {
  45216. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  45217. }
  45218. else if (sscanf(params, "uiiI(0)", targetid, slot, weapon, ammo))
  45219. {
  45220. SendSyntaxMessage(playerid, "/setweapon [playerid/name] [slot] [weapon] [ammo]");
  45221. SendInfoMessage(playerid, "0 - Melee, 1 - Primary, 2 - Secondary, 3 - Tertiary (Donators)");
  45222. }
  45223. else if (!IsPlayerConnected(targetid))
  45224. {
  45225. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  45226. }
  45227. else if (!IsPlayerLoggedIn(targetid))
  45228. {
  45229. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  45230. }
  45231. else if (weapon < 0 || (19 <= weapon <= 21) || (35 <= weapon <= 38) || weapon > 46)
  45232. {
  45233. return SendErrorMessage(playerid, "The specified weapon is not valid.");
  45234. }
  45235. else if (ammo < 0 || ammo > 19999)
  45236. {
  45237. return SendErrorMessage(playerid, "The specified ammo must be between 0 and 19,999.");
  45238. }
  45239. else if (Players[targetid][pHoursOnline] < 5)
  45240. {
  45241. return SendErrorMessage(playerid, "The specified target needs at least 5 playing hours.");
  45242. }
  45243. else
  45244. {
  45245. switch (slot)
  45246. {
  45247. case 0:
  45248. {
  45249. if (!(0 <= weapon <= 15))
  45250. {
  45251. return SendErrorMessage(playerid, "The melee weapon can only consist of weapon 0 to 15.");
  45252. }
  45253. SetPlayerWeapon(targetid, WEAPON_MELEE, weapon);
  45254. SendInfoMessage(playerid, "You have set %s's melee weapon to: %s.", ReturnNameEx(targetid, 0), GetWeapon(weapon));
  45255. if (!weapon)
  45256. {
  45257. SendAdminMessage(COLOR_RED, "Admin: %s has reset %s's melee weapon.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0));
  45258. new log[128];
  45259. format(log, sizeof(log), "%s has reset %s's melee weapon", ReturnName(playerid), ReturnName(targetid));
  45260. CreateLog("admin", log);
  45261. }
  45262. else
  45263. {
  45264. SendAdminMessage(COLOR_RED, "Admin: %s has set %s's melee weapon to %s.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0), GetWeapon(weapon));
  45265. new log[128];
  45266. format(log, sizeof(log), "%s has set %s's melee weapon to %s", ReturnName(playerid), ReturnName(targetid), GetWeapon(weapon));
  45267. CreateLog("admin", log);
  45268. }
  45269. }
  45270. case 1:
  45271. {
  45272. if (weapon != 0 && (!(16 <= weapon <= 45)))
  45273. {
  45274. return SendErrorMessage(playerid, "The primary weapon can only consist of weapon 16 to 45.");
  45275. }
  45276. SetPlayerWeapon(targetid, WEAPON_PRIMARY, weapon, ammo);
  45277. SendInfoMessage(playerid, "You have set %s's primary weapon to: %s (%i).", ReturnNameEx(targetid, 0), GetWeapon(weapon), ammo);
  45278. if (!weapon)
  45279. {
  45280. SendAdminMessage(COLOR_RED, "Admin: %s has reset %s's primary weapon.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0));
  45281. new log[128];
  45282. format(log, sizeof(log), "%s has reset %s's primary weapon", ReturnName(playerid), ReturnName(targetid));
  45283. CreateLog("admin", log);
  45284. }
  45285. else
  45286. {
  45287. SendAdminMessage(COLOR_RED, "Admin: %s has set %s's primary weapon to %s (%i).", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0), GetWeapon(weapon), ammo);
  45288. new log[128];
  45289. format(log, sizeof(log), "%s has set %s's primary weapon to %s (%i)", ReturnName(playerid), ReturnName(targetid), GetWeapon(weapon), ammo);
  45290. CreateLog("admin", log);
  45291. }
  45292. }
  45293. case 2:
  45294. {
  45295. if (weapon != 0 && (!(16 <= weapon <= 45)))
  45296. {
  45297. return SendErrorMessage(playerid, "The secondary weapon can only consist of weapon 16 to 45.");
  45298. }
  45299. SetPlayerWeapon(targetid, WEAPON_SECONDARY, weapon, ammo);
  45300. SendInfoMessage(playerid, "You have set %s's secondary weapon to: %s (%i).", ReturnNameEx(targetid, 0), GetWeapon(weapon), ammo);
  45301. if (!weapon)
  45302. {
  45303. SendAdminMessage(COLOR_RED, "Admin: %s has reset %s's secondary weapon.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0));
  45304. new log[128];
  45305. format(log, sizeof(log), "%s has reset %s's secondary weapon", ReturnName(playerid), ReturnName(targetid));
  45306. CreateLog("admin", log);
  45307. }
  45308. else
  45309. {
  45310. SendAdminMessage(COLOR_RED, "Admin: %s has set %s's secondary weapon to %s (%i).", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0), GetWeapon(weapon), ammo);
  45311. new log[128];
  45312. format(log, sizeof(log), "%s has set %s's secondary weapon to %s (%i)", ReturnName(playerid), ReturnName(targetid), GetWeapon(weapon), ammo);
  45313. CreateLog("admin", log);
  45314. }
  45315. }
  45316. case 3:
  45317. {
  45318. if (Players[targetid][pDonator] < DONATOR_STANDARD)
  45319. {
  45320. return SendErrorMessage(playerid, "The specified target doesn't have a high enough donator level.");
  45321. }
  45322. else if (weapon != 0 && (!(16 <= weapon <= 45)))
  45323. {
  45324. return SendErrorMessage(playerid, "The tertiary weapon can only consist of weapon 16 to 45.");
  45325. }
  45326. SetPlayerWeapon(targetid, WEAPON_TERTIARY, weapon, ammo);
  45327. SendInfoMessage(playerid, "You have set %s's tertiary weapon to: %s (%i).", ReturnNameEx(targetid, 0), GetWeapon(weapon), ammo);
  45328. if (!weapon)
  45329. {
  45330. SendAdminMessage(COLOR_RED, "Admin: %s has reset %s's tertiary weapon.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0));
  45331. new log[128];
  45332. format(log, sizeof(log), "%s has reset %s's tertiary weapon", ReturnName(playerid), ReturnName(targetid));
  45333. CreateLog("admin", log);
  45334. }
  45335. else
  45336. {
  45337. SendAdminMessage(COLOR_RED, "Admin: %s has set %s's tertiary weapon to %s (%i).", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0), GetWeapon(weapon), ammo);
  45338. new log[128];
  45339. format(log, sizeof(log), "%s has set %s's tertiary weapon to %s (%i)", ReturnName(playerid), ReturnName(targetid), GetWeapon(weapon), ammo);
  45340. CreateLog("admin", log);
  45341. }
  45342. }
  45343. }
  45344. }
  45345. return 1;
  45346. }
  45347. CMD:sethealth(playerid, params[])
  45348. {
  45349. new targetid, Float:amount;
  45350. if (Players[playerid][pAdmin] < 2)
  45351. {
  45352. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  45353. }
  45354. else if (sscanf(params, "uf", targetid, amount))
  45355. {
  45356. return SendSyntaxMessage(playerid, "/sethealth [playerid/name] [health]");
  45357. }
  45358. else if (!IsPlayerConnected(targetid))
  45359. {
  45360. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  45361. }
  45362. else if (!IsPlayerLoggedIn(targetid))
  45363. {
  45364. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  45365. }
  45366. else
  45367. {
  45368. SetPlayerHealth(targetid, amount);
  45369. SendInfoMessage(playerid, "You have set %s's health to %.0f.", ReturnNameEx(targetid, 0), amount);
  45370. SendInfoMessage(targetid, "%s has set your health to %.0f.", ReturnNameEx(playerid, 0), amount);
  45371. new log[128];
  45372. format(log, sizeof(log), "%s has set %s's health to %.0f", ReturnName(playerid), ReturnName(targetid), amount);
  45373. CreateLog("admin", log);
  45374. }
  45375. return 1;
  45376. }
  45377. CMD:setarmor(playerid, params[])
  45378. {
  45379. new targetid, Float:amount;
  45380. if (Players[playerid][pAdmin] < 2)
  45381. {
  45382. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  45383. }
  45384. else if (sscanf(params, "uf", targetid, amount))
  45385. {
  45386. return SendSyntaxMessage(playerid, "/setarmor [playerid/name] [armor]");
  45387. }
  45388. else if (!IsPlayerConnected(targetid))
  45389. {
  45390. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  45391. }
  45392. else if (!IsPlayerLoggedIn(targetid))
  45393. {
  45394. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  45395. }
  45396. else if (!IsPlayerSpawned(targetid))
  45397. {
  45398. return SendErrorMessage(playerid, "The specified target is not spawned.");
  45399. }
  45400. else if (amount < 0.0 || amount > 100.0)
  45401. {
  45402. return SendErrorMessage(playerid, "The amount of armor must be between 0 and 100 (due to anticheat).");
  45403. }
  45404. else
  45405. {
  45406. SetPlayerValidArmor(targetid, amount);
  45407. SendInfoMessage(playerid, "You have set %s's armor to %.0f.", ReturnNameEx(targetid, 0), amount);
  45408. SendInfoMessage(targetid, "%s has set your armor to %.0f.", ReturnNameEx(playerid, 0), amount);
  45409. new log[128];
  45410. format(log, sizeof(log), "%s has set %s's armor to %.0f", ReturnName(playerid), ReturnName(targetid), amount);
  45411. CreateLog("admin", log);
  45412. }
  45413. return 1;
  45414. }
  45415. CMD:armor(playerid, params[])
  45416. {
  45417. if (GetPlayerArmourEx(playerid) < 1.0)
  45418. {
  45419. return SendErrorMessage(playerid, "You don't have any armor on.");
  45420. }
  45421. else
  45422. {
  45423. AddItemToInventory(playerid, "Armor", floatround(GetPlayerArmourEx(playerid), floatround_round));
  45424. SetPlayerValidArmor(playerid, 0.0);
  45425. }
  45426. return 1;
  45427. }
  45428. CMD:setweather(playerid, params[])
  45429. {
  45430. new weather;
  45431. if (Players[playerid][pAdmin] < 3)
  45432. {
  45433. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  45434. }
  45435. else if (sscanf(params, "i", weather))
  45436. {
  45437. return SendSyntaxMessage(playerid, "/setweather (weather)");
  45438. }
  45439. else
  45440. {
  45441. gWeatherID = weather;
  45442. SetWeather(weather);
  45443. foreach (new i : Player)
  45444. {
  45445. if (Players[i][pStoned] == STONED_TYPE_HEROIN)
  45446. {
  45447. SetPlayerWeather(i, -66);
  45448. }
  45449. }
  45450. SendInfoMessage(playerid, "The weather has been changed to %i.", weather);
  45451. new log[128];
  45452. format(log, sizeof(log), "%s has set the weather to %i", ReturnName(playerid), weather);
  45453. CreateLog("admin", log);
  45454. }
  45455. return 1;
  45456. }
  45457. CMD:clearinventory(playerid, params[])
  45458. {
  45459. new targetid;
  45460. if (Players[playerid][pAdmin] < 3)
  45461. {
  45462. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  45463. }
  45464. else if (sscanf(params, "u", targetid))
  45465. {
  45466. return SendSyntaxMessage(playerid, "/clearinventory [playerid/name]");
  45467. }
  45468. else if (!IsPlayerConnected(targetid))
  45469. {
  45470. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  45471. }
  45472. else if (IsPlayerNPC(targetid))
  45473. {
  45474. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  45475. }
  45476. else if (!IsPlayerLoggedIn(targetid))
  45477. {
  45478. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  45479. }
  45480. else
  45481. {
  45482. for (new i = 0; i < MAX_INVENTORY_ITEMS; i ++)
  45483. {
  45484. Inventory[targetid][i][invID] = 0;
  45485. Inventory[targetid][i][invExists] = 0;
  45486. Inventory[targetid][i][invSerial] = 0;
  45487. }
  45488. Players[targetid][pPhone] = 0;
  45489. format(gExecute, sizeof(gExecute), "DELETE FROM rp_items WHERE itemOwner = %i", Players[targetid][pID]);
  45490. mysql_tquery(gConnection, gExecute);
  45491. SendAdminMessage(COLOR_RED, "Admin: %s has cleared %s's inventory.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0));
  45492. new log[128];
  45493. format(log, sizeof(log), "%s has cleared %s's inventory", ReturnName(playerid), ReturnName(targetid));
  45494. CreateLog("admin", log);
  45495. }
  45496. return 1;
  45497. }
  45498. CMD:setname(playerid, params[])
  45499. {
  45500. new targetid, name[MAX_PLAYER_NAME];
  45501. if (Players[playerid][pAdmin] < 4)
  45502. {
  45503. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  45504. }
  45505. else if (sscanf(params, "us["#MAX_PLAYER_NAME"]", targetid, name))
  45506. {
  45507. return SendSyntaxMessage(playerid, "/setname [playerid/name] [new name]");
  45508. }
  45509. else if (!IsPlayerConnected(targetid))
  45510. {
  45511. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  45512. }
  45513. else if (!IsPlayerLoggedIn(targetid))
  45514. {
  45515. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  45516. }
  45517. else if (!IsValidName(name))
  45518. {
  45519. return SendErrorMessage(playerid, "The specified name is not supported by SA-MP.");
  45520. }
  45521. else
  45522. {
  45523. format(gExecute, sizeof(gExecute), "SELECT ID FROM rp_accounts WHERE Username = '%s'", mysql_escaped(name));
  45524. mysql_tquery(gConnection, gExecute, "OnChangeName", "iis", playerid, targetid, name);
  45525. }
  45526. return 1;
  45527. }
  45528. CMD:adeleteitem(playerid, params[])
  45529. {
  45530. new id;
  45531. if (Players[playerid][pAdmin] < 5)
  45532. {
  45533. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  45534. }
  45535. else
  45536. {
  45537. id = GetClosestDropItem(playerid);
  45538. if (id == INVALID_ID)
  45539. {
  45540. SendErrorMessage(playerid, "There are no dropped items nearby.");
  45541. }
  45542. else
  45543. {
  45544. DeleteDropItem(id);
  45545. SendInfoMessage(playerid, "You have deleted the nearest dropped item.");
  45546. new log[128];
  45547. format(log, sizeof(log), "%s deleted a dropped item", ReturnName(playerid));
  45548. CreateLog("admin", log);
  45549. }
  45550. }
  45551. return 1;
  45552. }
  45553. CMD:spawnitem(playerid, params[])
  45554. {
  45555. new targetid;
  45556. if (Players[playerid][pAdmin] < 6)
  45557. {
  45558. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  45559. }
  45560. else if (sscanf(params, "u", targetid))
  45561. {
  45562. return SendSyntaxMessage(playerid, "/spawnitem [playerid/name]");
  45563. }
  45564. else if (!IsPlayerConnected(targetid))
  45565. {
  45566. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  45567. }
  45568. else if (!IsPlayerLoggedIn(targetid))
  45569. {
  45570. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  45571. }
  45572. else
  45573. {
  45574. static s_ItemList[1024];
  45575. if (!s_ItemList[0])
  45576. {
  45577. for (new i = 0; i < sizeof(g_ItemList); i ++)
  45578. {
  45579. strcat(s_ItemList, g_ItemList[i][e_ItemName]);
  45580. strcat(s_ItemList, "\n");
  45581. }
  45582. }
  45583. Players[playerid][pTarget] = targetid;
  45584. Dialog_Show(playerid, AdminGiveItem, DIALOG_STYLE_LIST, "{FFFFFF}Select an item to give", s_ItemList, "Select", "Cancel");
  45585. }
  45586. return 1;
  45587. }
  45588. CMD:items(playerid, params[])
  45589. {
  45590. if (IsPlayerJailed(playerid) || IsPlayerInjured(playerid))
  45591. {
  45592. return SendErrorMessage(playerid, "You can't open your inventory right now.");
  45593. }
  45594. else
  45595. {
  45596. DisplayInventory(playerid);
  45597. }
  45598. return 1;
  45599. }
  45600. CMD:weapons(playerid, params[])
  45601. {
  45602. if (IsPlayerJailed(playerid) || IsPlayerInjured(playerid))
  45603. {
  45604. return SendErrorMessage(playerid, "You can't open the weapon menu right now.");
  45605. }
  45606. ShowWeaponMenu(playerid);
  45607. return 1;
  45608. }
  45609. CMD:setstat(playerid, params[])
  45610. {
  45611. new targetid, stat[16], value[64];
  45612. if (Players[playerid][pAdmin] < 5)
  45613. {
  45614. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  45615. }
  45616. else if (sscanf(params, "us[16]S()[64]", targetid, stat, value))
  45617. {
  45618. SendSyntaxMessage(playerid, "/setstat [playerid/name] [name] [value]");
  45619. SendClientMessage(playerid, COLOR_LIGHTGREY, "Types: gender, age, origin, traveled, hours, job, phone, fitness, carlicense, gunlicense");
  45620. SendClientMessage(playerid, COLOR_LIGHTGREY, "Types: paycheck");
  45621. }
  45622. else if (!IsPlayerConnected(targetid))
  45623. {
  45624. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  45625. }
  45626. else if (!IsPlayerLoggedIn(targetid))
  45627. {
  45628. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  45629. }
  45630. else
  45631. {
  45632. if (!strcmp(stat, "gender", true))
  45633. {
  45634. if (isnull(value))
  45635. {
  45636. return SendSyntaxMessage(playerid, "/setstat [playerid/name] [gender] [male/female]");
  45637. }
  45638. else if (!strcmp(value, "male", true))
  45639. {
  45640. Players[targetid][pGender] = 1;
  45641. SendInfoMessage(playerid, "You have set %s's gender to: Male.", ReturnNameEx(targetid, 0));
  45642. new log[128];
  45643. format(log, sizeof(log), "%s has set %s's gender to: Male", ReturnName(playerid), ReturnName(targetid));
  45644. CreateLog("admin", log);
  45645. }
  45646. else if (!strcmp(value, "female", true))
  45647. {
  45648. Players[targetid][pGender] = 2;
  45649. SendInfoMessage(playerid, "You have set %s's gender to: Female.", ReturnNameEx(targetid, 0));
  45650. new log[128];
  45651. format(log, sizeof(log), "%s has set %s's gender to: Female", ReturnName(playerid), ReturnName(targetid));
  45652. CreateLog("admin", log);
  45653. }
  45654. }
  45655. else if (!strcmp(stat, "age", true))
  45656. {
  45657. new age;
  45658. if (sscanf(value, "i", age))
  45659. {
  45660. return SendSyntaxMessage(playerid, "/setstat [playerid/name] [age] [value]");
  45661. }
  45662. else
  45663. {
  45664. Players[targetid][pAge] = age;
  45665. SendInfoMessage(playerid, "You have set %s's age to %i years.", ReturnNameEx(targetid, 0), age);
  45666. new log[128];
  45667. format(log, sizeof(log), "%s has set %s's age to %i years", ReturnName(playerid), ReturnName(targetid), age);
  45668. CreateLog("admin", log);
  45669. }
  45670. }
  45671. else if (!strcmp(stat, "origin", true))
  45672. {
  45673. if (sscanf(value, "s[24]", value))
  45674. {
  45675. return SendSyntaxMessage(playerid, "/setstat [playerid/name] [origin] [value]");
  45676. }
  45677. else
  45678. {
  45679. strcpy(Players[targetid][pOrigin], value, 24);
  45680. SendInfoMessage(playerid, "You have set %s's origin to '%s'.", ReturnNameEx(targetid, 0), value);
  45681. new log[128];
  45682. format(log, sizeof(log), "%s has set %s's origin to '%s'", ReturnName(playerid), ReturnName(targetid), value);
  45683. CreateLog("admin", log);
  45684. }
  45685. }
  45686. else if (!strcmp(stat, "traveled", true))
  45687. {
  45688. new Float:distance;
  45689. if (sscanf(value, "f", distance))
  45690. {
  45691. return SendSyntaxMessage(playerid, "/setstat [playerid/name] [traveled] [value]");
  45692. }
  45693. else
  45694. {
  45695. Players[targetid][pTraveled] = distance;
  45696. SendInfoMessage(playerid, "You have set %s's traveled distance to %.2f.", ReturnNameEx(targetid, 0), distance);
  45697. new log[128];
  45698. format(log, sizeof(log), "%s has set %s's traveled distance to %.2f", ReturnName(playerid), ReturnName(targetid), distance);
  45699. CreateLog("admin", log);
  45700. }
  45701. }
  45702. else if (!strcmp(stat, "hours", true))
  45703. {
  45704. new amount;
  45705. if (sscanf(value, "i", amount))
  45706. {
  45707. return SendSyntaxMessage(playerid, "/setstat [playerid/name] [hours] [value]");
  45708. }
  45709. else
  45710. {
  45711. Players[targetid][pHoursOnline] = amount;
  45712. SendInfoMessage(playerid, "You have set %s's playing hours to %i.", ReturnNameEx(targetid, 0), amount);
  45713. new log[128];
  45714. format(log, sizeof(log), "%s has set %s's playing hours to %i", ReturnName(playerid), ReturnName(targetid), amount);
  45715. CreateLog("admin", log);
  45716. }
  45717. }
  45718. else if (!strcmp(stat, "job", true))
  45719. {
  45720. new job;
  45721. if (sscanf(value, "i", job))
  45722. {
  45723. SendSyntaxMessage(playerid, "/setstat [playerid/name] [job] [value]");
  45724. return SendClientMessage(playerid, COLOR_LIGHTGREY, "Jobs: 0 - None, 1 - Transporter, 2 - Forklifter, 3 - Miner, 4 - Taxi, 5 - Pizzaboy, 6 - Trashman, 7 - Mechanic");
  45725. }
  45726. else if (job < JOB_NONE || job > JOB_MECHANIC)
  45727. {
  45728. return SendErrorMessage(playerid, "You have specified an invalid job ID.");
  45729. }
  45730. else
  45731. {
  45732. Players[targetid][pJob] = job;
  45733. SendInfoMessage(playerid, "You have set %s's job to %s (%i).", ReturnNameEx(targetid, 0), GetJobName(job), job);
  45734. new log[128];
  45735. format(log, sizeof(log), "%s has set %s's job to %s (%i)", ReturnName(playerid), ReturnName(targetid), GetJobName(job), job);
  45736. CreateLog("admin", log);
  45737. }
  45738. }
  45739. else if (!strcmp(stat, "phone", true))
  45740. {
  45741. new number;
  45742. if (sscanf(value, "i", number))
  45743. {
  45744. return SendSyntaxMessage(playerid, "/setstat [playerid/name] [phone] [value]");
  45745. }
  45746. else
  45747. {
  45748. Players[targetid][pPhone] = number;
  45749. SendInfoMessage(playerid, "You have set %s's phone number to %i.", ReturnNameEx(targetid, 0), number);
  45750. new log[128];
  45751. format(log, sizeof(log), "%s has set %s's phone number to %i", ReturnName(playerid), ReturnName(targetid), number);
  45752. CreateLog("admin", log);
  45753. }
  45754. }
  45755. else if (!strcmp(stat, "fitness", true))
  45756. {
  45757. new amount;
  45758. if (sscanf(value, "i", amount))
  45759. {
  45760. return SendSyntaxMessage(playerid, "/setstat [playerid/name] [fitness] [value]");
  45761. }
  45762. else if (amount < 0 || amount > 100)
  45763. {
  45764. return SendErrorMessage(playerid, "The fitness level must range from 0 to 100.");
  45765. }
  45766. else
  45767. {
  45768. Players[targetid][pFitness] = amount;
  45769. SendInfoMessage(playerid, "You have set %s's fitness to %i.", ReturnNameEx(targetid, 0), amount);
  45770. new log[128];
  45771. format(log, sizeof(log), "%s has set %s's fitness to %i", ReturnName(playerid), ReturnName(targetid), amount);
  45772. CreateLog("admin", log);
  45773. }
  45774. }
  45775. else if (!strcmp(stat, "carlicense", true))
  45776. {
  45777. new license;
  45778. if (sscanf(value, "i", license) || (!(0 <= license <= 1)))
  45779. {
  45780. return SendSyntaxMessage(playerid, "/setstat [playerid/name] [carlicense] [0/1]");
  45781. }
  45782. else
  45783. {
  45784. Players[targetid][pCarLicense] = license;
  45785. SendInfoMessage(playerid, "You have set %s's car license to %i.", ReturnNameEx(targetid, 0), license);
  45786. new log[128];
  45787. format(log, sizeof(log), "%s has set %s's car license to %i", ReturnName(playerid), ReturnName(targetid), license);
  45788. CreateLog("admin", log);
  45789. }
  45790. }
  45791. else if (!strcmp(stat, "gunlicense", true))
  45792. {
  45793. new license;
  45794. if (sscanf(value, "i", license) || (!(0 <= license <= 1)))
  45795. {
  45796. return SendSyntaxMessage(playerid, "/setstat [playerid/name] [gunlicense] [0/1]");
  45797. }
  45798. else
  45799. {
  45800. Players[targetid][pGunLicense] = license;
  45801. SendInfoMessage(playerid, "You have set %s's gun license to %i.", ReturnNameEx(targetid, 0), license);
  45802. new log[128];
  45803. format(log, sizeof(log), "%s has set %s's gun license to %i", ReturnName(playerid), ReturnName(targetid), license);
  45804. CreateLog("admin", log);
  45805. }
  45806. }
  45807. else if (!strcmp(stat, "cdl", true))
  45808. {
  45809. new license;
  45810. if (sscanf(value, "i", license) || (!(0 <= license <= 1)))
  45811. {
  45812. return SendSyntaxMessage(playerid, "/setstat [playerid/name] [cdl] [0/1]");
  45813. }
  45814. else
  45815. {
  45816. Players[targetid][pCDL] = license;
  45817. SendInfoMessage(playerid, "You have set %s's trucker license to %i.", ReturnNameEx(targetid, 0), license);
  45818. new log[128];
  45819. format(log, sizeof(log), "%s has set %s's trucker license to %i", ReturnName(playerid), ReturnName(targetid), license);
  45820. CreateLog("admin", log);
  45821. }
  45822. }
  45823. else if (!strcmp(stat, "pilotslicense", true))
  45824. {
  45825. new license;
  45826. if (sscanf(value, "i", license) || (!(0 <= license <= 1)))
  45827. {
  45828. return SendSyntaxMessage(playerid, "/setstat [playerid/name] [pilotslicense] [0/1]");
  45829. }
  45830. else
  45831. {
  45832. Players[targetid][pPilotLicense] = license;
  45833. SendInfoMessage(playerid, "You have set %s's Pilots license to %i.", ReturnNameEx(targetid, 0), license);
  45834. new log[128];
  45835. format(log, sizeof(log), "%s has set %s's Pilots license to %i", ReturnName(playerid), ReturnName(targetid), license);
  45836. CreateLog("admin", log);
  45837. }
  45838. }
  45839. else if (!strcmp(stat, "paycheck", true))
  45840. {
  45841. new amount;
  45842. if (sscanf(value, "i", amount))
  45843. {
  45844. return SendSyntaxMessage(playerid, "/setstat [playerid/name] [playerid/name] [value]");
  45845. }
  45846. else
  45847. {
  45848. Players[targetid][pPaycheck] = amount;
  45849. SendInfoMessage(playerid, "You have set %s's paycheck to %s.", ReturnNameEx(targetid, 0), FormatNumber(amount));
  45850. new log[128];
  45851. format(log, sizeof(log), "%s has set %s's paycheck to %s", ReturnName(playerid), ReturnName(targetid), FormatNumber(amount));
  45852. CreateLog("admin", log);
  45853. }
  45854. }
  45855. else
  45856. {
  45857. return SendErrorMessage(playerid, "You have specified an invalid type!");
  45858. }
  45859. }
  45860. return 1;
  45861. }
  45862. CMD:mapperhelp(playerid, params[])
  45863. {
  45864. if (Players[playerid][pMapper] < 1 && Players[playerid][pAdmin] < 6)
  45865. {
  45866. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  45867. }
  45868. else
  45869. {
  45870. SendClientMessage(playerid, COLOR_GREY, "Objects:{FFFFFF} /addobject, /editobject, /gotoobject, /cloneobject.");
  45871. SendClientMessage(playerid, COLOR_GREY, "Objects:{FFFFFF} /deleteobject, /debugobjects, /reloadobjects.");
  45872. SendClientMessage(playerid, COLOR_GREY, "Objects:{FFFFFF} /setobjectmodel, /rotobject(x/y/z).");
  45873. }
  45874. return 1;
  45875. }
  45876. CMD:dynamichelp(playerid, params[])
  45877. {
  45878. if (Players[playerid][pAdmin] < 5)
  45879. {
  45880. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  45881. }
  45882. else if (isnull(params))
  45883. {
  45884. SendSyntaxMessage(playerid, "/dynamichelp (type)");
  45885. SendClientMessage(playerid, COLOR_LIGHTGREY, "Types: house, company, building, atm, pump, car, faction, arrestpoints");
  45886. SendClientMessage(playerid, COLOR_LIGHTGREY, "Types: teleports, labels, gates, autoshops, objects, trashbins, spraytags");
  45887. SendClientMessage(playerid, COLOR_LIGHTGREY, "Types: payphones");
  45888. return 1;
  45889. }
  45890. else if (!strcmp(params, "house", true))
  45891. {
  45892. SendClientMessage(playerid, COLOR_GREY, "Houses:{FFFFFF} /addhouse, /gotohouse, /edithouse, /deletehouse, /clearfurniture.");
  45893. SendClientMessage(playerid, COLOR_GREY, "Houses:{FFFFFF} /asellhouse.");
  45894. }
  45895. else if (!strcmp(params, "company", true))
  45896. {
  45897. SendClientMessage(playerid, COLOR_GREY, "Companies:{FFFFFF} /addcompany, /gotocompany, /editcompany, /deletecompany, /arestock.");
  45898. SendClientMessage(playerid, COLOR_GREY, "Companies:{FFFFFF} /asellcompany, /addrental, /editdealercars.");
  45899. }
  45900. else if (!strcmp(params, "building", true))
  45901. {
  45902. SendClientMessage(playerid, COLOR_GREY, "Buildings:{FFFFFF} /addbuilding, /gotobuilding, /editbuilding, /deletebuilding.");
  45903. }
  45904. else if (!strcmp(params, "atm", true))
  45905. {
  45906. SendClientMessage(playerid, COLOR_GREY, "ATM:{FFFFFF} /addatm, /gotoatm, /editatm, /deleteatm.");
  45907. }
  45908. else if (!strcmp(params, "pump", true))
  45909. {
  45910. SendClientMessage(playerid, COLOR_GREY, "Pumps:{FFFFFF} /addpump, /gotopump, /editpump, /deletepump.");
  45911. }
  45912. else if (!strcmp(params, "car", true))
  45913. {
  45914. SendClientMessage(playerid, COLOR_GREY, "Cars:{FFFFFF} /addcar, /editcar, /deletecar.");
  45915. }
  45916. else if (!strcmp(params, "faction", true))
  45917. {
  45918. SendClientMessage(playerid, COLOR_GREY, "Factions:{FFFFFF} /addfaction, /setfaction, /editfaction, /deletefaction, /resetordertime, /gotolocker.");
  45919. }
  45920. else if (!strcmp(params, "arrestpoints", true))
  45921. {
  45922. SendClientMessage(playerid, COLOR_GREY, "Arrests:{FFFFFF} /addarrestpoint, /gotoarrestpoint, /deletearrestpoint.");
  45923. }
  45924. else if (!strcmp(params, "teleports", true))
  45925. {
  45926. SendClientMessage(playerid, COLOR_GREY, "Teleports:{FFFFFF} /addteleport, /deleteteleport.");
  45927. }
  45928. else if (!strcmp(params, "labels", true))
  45929. {
  45930. SendClientMessage(playerid, COLOR_GREY, "Labels:{FFFFFF} /addlabel, /gotolabel, /editlabel, /checklabel, /deletelabel.");
  45931. }
  45932. else if (!strcmp(params, "gates", true))
  45933. {
  45934. SendClientMessage(playerid, COLOR_GREY, "Gates:{FFFFFF} /addgate, /gotogate, /checkgate, /editgate, /deletegate.");
  45935. }
  45936. else if (!strcmp(params, "autoshops", true))
  45937. {
  45938. SendClientMessage(playerid, COLOR_GREY, "Auto Shops:{FFFFFF} /addautoshop, /gotoautoshop, /deleteautoshop.");
  45939. }
  45940. else if (!strcmp(params, "objects", true))
  45941. {
  45942. SendClientMessage(playerid, COLOR_GREY, "Objects:{FFFFFF} /addobject, /editobject, /gotoobject, /cloneobject.");
  45943. SendClientMessage(playerid, COLOR_GREY, "Objects:{FFFFFF} /deleteobject, /debugobjects, /reloadobjects.");
  45944. SendClientMessage(playerid, COLOR_GREY, "Objects:{FFFFFF} /setobjectmodel, /rotobject(x/y/z).");
  45945. }
  45946. else if (!strcmp(params, "trashbins", true))
  45947. {
  45948. SendClientMessage(playerid, COLOR_GREY, "Trashbins:{FFFFFF} /addtrashbin, /gototrashbin, /edittrashbin, /deletetrashbin.");
  45949. }
  45950. else if (!strcmp(params, "spraytags", true))
  45951. {
  45952. SendClientMessage(playerid, COLOR_GREY, "Spray Tags:{FFFFFF} /addspray, /gotospray, /clearspray, /editspray, /deletespray.");
  45953. }
  45954. else if (!strcmp(params, "payphones", true))
  45955. {
  45956. SendClientMessage(playerid, COLOR_GREY, "Payphones:{FFFFFF} /addpayphone, /gotopayphone, /editpayphone, /deletepayphone.");
  45957. }
  45958. return 1;
  45959. }
  45960. CMD:addhouse(playerid, params[])
  45961. {
  45962. new type, price, address[32];
  45963. if (Players[playerid][pAdmin] < 5)
  45964. {
  45965. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  45966. }
  45967. else if (sscanf(params, "iis[32]", type, price, address))
  45968. {
  45969. return SendSyntaxMessage(playerid, "/addhouse (type) (price) (address)");
  45970. }
  45971. else if (type < 1 || type > sizeof(g_HouseInteriors) - 1)
  45972. {
  45973. return SendErrorMessage(playerid, "You must input a type between 1 and %i.", sizeof(g_HouseInteriors) - 1);
  45974. }
  45975. else if (price < 0)
  45976. {
  45977. return SendErrorMessage(playerid, "You must input a valid price.");
  45978. }
  45979. else if (GetClosestHouse(playerid) != INVALID_ID)
  45980. {
  45981. return SendErrorMessage(playerid, "There is another house nearby.");
  45982. }
  45983. else
  45984. {
  45985. new id = GetNextHouseID();
  45986. if (id == INVALID_ID)
  45987. {
  45988. return SendErrorMessage(playerid, "There are no available house slots.");
  45989. }
  45990. else
  45991. {
  45992. for (new i = 0; i < MAX_HOUSES; i ++)
  45993. {
  45994. if (IsValidHouseID(i) && !strcmp(Houses[i][hAddress], address, true))
  45995. {
  45996. return SendErrorMessage(playerid, "The specified address is already in use.");
  45997. }
  45998. }
  45999. strcpy(Houses[id][hAddress], address, 32);
  46000. GetPlayerPos(playerid, Houses[id][hSpawn][0], Houses[id][hSpawn][1], Houses[id][hSpawn][2]);
  46001. GetPlayerFacingAngle(playerid, Houses[id][hSpawn][3]);
  46002. Houses[id][hExists] = 1;
  46003. Houses[id][hOwner] = 0;
  46004. Houses[id][hValue] = price;
  46005. Houses[id][hLocked] = 0;
  46006. Houses[id][hLights] = 0;
  46007. Houses[id][hExterior] = GetPlayerInterior(playerid);
  46008. Houses[id][hExteriorWorld] = GetPlayerVirtualWorld(playerid);
  46009. Houses[id][hCheckpoint] = INVALID_ID;
  46010. //Houses[id][hText] = INVALID_3DTEXT_ID;
  46011. format(gExecute, sizeof(gExecute), "INSERT INTO rp_houses (hValue, hAddress) VALUES(%i, '%s')", price, mysql_escaped(address));
  46012. mysql_tquery(gConnection, gExecute, "OnHouseAdded", "i", id);
  46013. SetHouseInteriorType(id, type);
  46014. SendInfoMessage(playerid, "You have added house %i (/edithouse).", id);
  46015. new log[128];
  46016. format(log, sizeof(log), "%s has added house %i", ReturnName(playerid), id);
  46017. CreateLog("admin", log);
  46018. }
  46019. }
  46020. return 1;
  46021. }
  46022. CMD:asellhouse(playerid, params[])
  46023. {
  46024. new house;
  46025. if (Players[playerid][pAdmin] < 5)
  46026. {
  46027. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  46028. }
  46029. else if (sscanf(params, "i", house))
  46030. {
  46031. return SendSyntaxMessage(playerid, "/asellhouse (house)");
  46032. }
  46033. else if (!IsValidHouseID(house))
  46034. {
  46035. return SendErrorMessage(playerid, "The specified house is not valid.");
  46036. }
  46037. else if (!Houses[house][hOwner])
  46038. {
  46039. return SendErrorMessage(playerid, "This house is currently not owned.");
  46040. }
  46041. else
  46042. {
  46043. SetHouseOwner(house, INVALID_PLAYER_ID);
  46044. SendInfoMessage(playerid, "You have admin sold house %i.", house);
  46045. new log[128];
  46046. format(log, sizeof(log), "%s has admin sold house %i", ReturnName(playerid), house);
  46047. CreateLog("admin", log);
  46048. }
  46049. return 1;
  46050. }
  46051. CMD:deletehouse(playerid, params[])
  46052. {
  46053. new house;
  46054. if (Players[playerid][pAdmin] < 5)
  46055. {
  46056. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  46057. }
  46058. else if (sscanf(params, "i", house))
  46059. {
  46060. return SendSyntaxMessage(playerid, "/deletehouse (house)");
  46061. }
  46062. else if (!IsValidHouseID(house))
  46063. {
  46064. return SendErrorMessage(playerid, "The specified house is not valid.");
  46065. }
  46066. else
  46067. {
  46068. ClearFurniture(house);
  46069. format(gExecute, sizeof(gExecute), "DELETE FROM rp_houses WHERE `hID` = %i", Houses[house][hID]);
  46070. mysql_tquery(gConnection, gExecute);
  46071. ResetHouse(house);
  46072. SendInfoMessage(playerid, "You have deleted house %i.", house);
  46073. new log[128];
  46074. format(log, sizeof(log), "%s has deleted house %i", ReturnName(playerid), house);
  46075. CreateLog("admin", log);
  46076. }
  46077. return 1;
  46078. }
  46079. CMD:clearfurniture(playerid, params[])
  46080. {
  46081. new house, type[10];
  46082. if (Players[playerid][pAdmin] < 5)
  46083. {
  46084. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  46085. }
  46086. else if (sscanf(params, "is[10]", house, type))
  46087. {
  46088. return SendSyntaxMessage(playerid, "/clearfurniture (house) (inside/outside)");
  46089. }
  46090. else if (!IsValidHouseID(house))
  46091. {
  46092. return SendErrorMessage(playerid, "The specified house is not valid.");
  46093. }
  46094. else
  46095. {
  46096. if (!strcmp(type, "inside", true))
  46097. {
  46098. ClearFurniture(house);
  46099. SendInfoMessage(playerid, "You have cleared the furniture for house %i.", house);
  46100. new log[128];
  46101. format(log, sizeof(log), "%s has cleared the furniture for house %i", ReturnName(playerid), house);
  46102. CreateLog("admin", log);
  46103. }
  46104. else if (!strcmp(type, "outside", true))
  46105. {
  46106. ClearOutsideFurniture(house);
  46107. SendInfoMessage(playerid, "You have cleared the outside furniture for house %i.", house);
  46108. new log[128];
  46109. format(log, sizeof(log), "%s has cleared the outside furniture for house %i", ReturnName(playerid), house);
  46110. CreateLog("admin", log);
  46111. }
  46112. }
  46113. return 1;
  46114. }
  46115. CMD:edithouse(playerid, params[])
  46116. {
  46117. new house;
  46118. if (Players[playerid][pAdmin] < 5)
  46119. {
  46120. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  46121. }
  46122. else if (sscanf(params, "i", house))
  46123. {
  46124. return SendSyntaxMessage(playerid, "/edithouse (house)");
  46125. }
  46126. else if (!IsValidHouseID(house))
  46127. {
  46128. return SendErrorMessage(playerid, "The specified house is not valid.");
  46129. }
  46130. else
  46131. {
  46132. ShowHouseEditMenu(playerid, house);
  46133. }
  46134. return 1;
  46135. }
  46136. CMD:gotohouse(playerid, params[])
  46137. {
  46138. new house;
  46139. if (Players[playerid][pAdmin] < 5)
  46140. {
  46141. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  46142. }
  46143. else if (sscanf(params, "i", house))
  46144. {
  46145. return SendSyntaxMessage(playerid, "/gotohouse (house)");
  46146. }
  46147. else if (!IsValidHouseID(house))
  46148. {
  46149. return SendErrorMessage(playerid, "The specified house is not valid.");
  46150. }
  46151. else
  46152. {
  46153. SetPlayerPosEx(playerid, Houses[house][hSpawn][0], Houses[house][hSpawn][1], Houses[house][hSpawn][2], Houses[house][hSpawn][3], Houses[house][hExterior], Houses[house][hExteriorWorld]);
  46154. SendInfoMessage(playerid, "You have teleported to house %i.", house);
  46155. new log[128];
  46156. format(log, sizeof(log), "%s has teleported to house %i", ReturnName(playerid), house);
  46157. CreateLog("admin", log);
  46158. }
  46159. return 1;
  46160. }
  46161. CMD:accepthouse(playerid, params[])
  46162. {
  46163. if (IsPlayerConnected(Players[playerid][pHouseOffer]))
  46164. {
  46165. new house = Players[playerid][pHouseSell];
  46166. new price = Players[playerid][pHousePrice];
  46167. if (!IsHouseOwner(Players[playerid][pHouseOffer], house))
  46168. {
  46169. return SendErrorMessage(playerid, "The house offer has expired.");
  46170. }
  46171. else if (!PlayerCanAfford(playerid, price))
  46172. {
  46173. return SendErrorMessage(playerid, "You can't afford to buy the house.");
  46174. }
  46175. else if (!IsPlayerInRangeOfPlayer(playerid, Players[playerid][pHouseOffer]))
  46176. {
  46177. return SendErrorMessage(playerid, "You need to be near the player who offered the house.");
  46178. }
  46179. else
  46180. {
  46181. SetHouseOwner(house, playerid);
  46182. RemoveMoney(playerid, price);
  46183. SendInfoMessage(playerid, "You have accepted %s's house offer for {33CC33}%s{FFFFFF}.", ReturnNameEx(Players[playerid][pHouseOffer]), FormatNumber(price));
  46184. SendInfoMessage(Players[playerid][pHouseOffer], "%s has accepted the house offer for {33CC33}%s{FFFFFF}.", ReturnNameEx(playerid), FormatNumber(price));
  46185. format(gExecute, sizeof(gExecute), "INSERT INTO rp_purchases (Player, Type, Price, Date) VALUES(%i, 'House (sold by %s) - #%i', %i, NOW())", Players[playerid][pID], ReturnName(Players[playerid][pHouseOffer]), Houses[house][hID], price);
  46186. mysql_tquery(gConnection, gExecute);
  46187. Players[Players[playerid][pHouseOffer]][pPocketMoney] += price;
  46188. Players[playerid][pHouseOffer] = INVALID_PLAYER_ID;
  46189. }
  46190. }
  46191. return 1;
  46192. }
  46193. CMD:door(playerid, params[])
  46194. {
  46195. if (GetClosestDoor(playerid, 2.0) == INVALID_ID)
  46196. return SendErrorMessage(playerid, "You are not near a door.");
  46197. DoorCheck(playerid);
  46198. return 1;
  46199. }
  46200. CMD:blindfold(playerid, params[])
  46201. {
  46202. if (!Players[playerid][pBlind])
  46203. {
  46204. TextDrawShowForPlayer(playerid, gGlobalTextdraws[2]);
  46205. Players[playerid][pBlind] = !Players[playerid][pBlind];
  46206. }
  46207. else
  46208. {
  46209. TextDrawHideForPlayer(playerid, gGlobalTextdraws[2]);
  46210. Players[playerid][pBlind] = !Players[playerid][pBlind];
  46211. }
  46212. return 1;
  46213. }
  46214. CMD:dice(playerid, params[])
  46215. {
  46216. new rand = Random(1,7);
  46217. SendDistanceMessage(playerid, 20.0, COLOR_PURPLE, "* %s rolls a dice and it lands on %i.", ReturnNameEx(playerid), rand);
  46218. return 1;
  46219. }
  46220. /*CMD:tognicks(playerid, params[])
  46221. {
  46222. if (!Players[playerid][pNicks])
  46223. {
  46224. foreach (new i : Player)
  46225. {
  46226. ShowPlayerNameTagForPlayer(playerid, i, false);
  46227. }
  46228. Players[playerid][pNicks] = !Players[playerid][pNicks];
  46229. }
  46230. else
  46231. {
  46232. foreach (new i : Player)
  46233. {
  46234. if(Players[i][pMaskID] < 0)
  46235. {
  46236. ShowPlayerNameTagForPlayer(playerid, i, true);
  46237. }
  46238. }
  46239. Players[playerid][pNicks] = !Players[playerid][pNicks];
  46240. }
  46241. return 1;
  46242. }*/
  46243. CMD:house(playerid, params[])
  46244. {
  46245. new id = GetNearbyHouse(playerid), name[16], value[128];
  46246. if (id == INVALID_ID)
  46247. {
  46248. return SendErrorMessage(playerid, "There is no house nearby.");
  46249. }
  46250. else if (sscanf(params, "s[16]S()[128]", name, value))
  46251. {
  46252. SendSyntaxMessage(playerid, "/house (option)");
  46253. SendClientMessage(playerid, COLOR_LIGHTGREY, "Options: buy, lock, alarm, rent, safe, fridge, furniture, permissions, backdoor, sell, abandon, lights");
  46254. }
  46255. else
  46256. {
  46257. if (!strcmp(name, "buy", true))
  46258. {
  46259. if (Houses[id][hOwner])
  46260. {
  46261. SendErrorMessage(playerid, "This house is already owned.");
  46262. }
  46263. else if (GetHouseLimit(playerid) != 0 && GetOwnedHouses(playerid) >= GetHouseLimit(playerid))
  46264. {
  46265. SendErrorMessage(playerid, "You have reached the limit of owned houses.");
  46266. }
  46267. else
  46268. {
  46269. Dialog_Show(playerid, BuyHouse, DIALOG_STYLE_MSGBOX, "{FFFFFF}Purchase this house", "Would you like to purchase {00FF00}%s{AAC4E5} for {00FF00}%s{AAC4E5}?", "Yes", "No", Houses[id][hAddress], FormatNumber(Houses[id][hValue]));
  46270. }
  46271. }
  46272. else if (!strcmp(name, "lock", true))
  46273. {
  46274. if (!IsHouseOwner(playerid, id) && !IsRentingHouse(playerid, id))
  46275. {
  46276. return SendErrorMessage(playerid, "You don't have the keys for this house.");
  46277. }
  46278. else
  46279. {
  46280. Houses[id][hLocked] = !Houses[id][hLocked];
  46281. PlayNearbySound(playerid, 1145);
  46282. SaveHouse(id);
  46283. UpdateHouse(id);
  46284. if (Houses[id][hLocked])
  46285. {
  46286. ShowActionBubble(playerid, "* %s uses their key to lock their house.", ReturnNameEx(playerid));
  46287. ShowFooterText(playerid, "You have ~r~locked~w~ this house.");
  46288. }
  46289. else
  46290. {
  46291. ShowActionBubble(playerid, "* %s uses their key to unlock their house.", ReturnNameEx(playerid));
  46292. ShowFooterText(playerid, "You have ~g~unlocked~w~ this house.");
  46293. }
  46294. }
  46295. }
  46296. else if (!strcmp(name, "alarm", true))
  46297. {
  46298. if (!IsHouseOwner(playerid, id))
  46299. {
  46300. return SendErrorMessage(playerid, "You are not the owner of this property.");
  46301. }
  46302. else if (Houses[id][hAlarm])
  46303. {
  46304. return SendErrorMessage(playerid, "Your house has an alarm already.");
  46305. }
  46306. else if (isnull(value) || strcmp(value, "confirm", true) != 0)
  46307. {
  46308. return SendSyntaxMessage(playerid, "/house (alarm) (confirm) (Cost is $6000)");
  46309. }
  46310. else if (!PlayerCanAfford(playerid, 6000))
  46311. {
  46312. return SendErrorMessage(playerid, "You don't have enough money.");
  46313. }
  46314. else
  46315. {
  46316. Houses[id][hAlarm] = 1;
  46317. SaveHouse(id);
  46318. RemoveMoney(playerid, 6000);
  46319. SendInfoMessage(playerid, "You have purchased an alarm for {33CC33}$6000{FFFFFF}.");
  46320. }
  46321. }
  46322. else if (!strcmp(name, "rent", true))
  46323. {
  46324. new price;
  46325. if (!IsHouseOwner(playerid, id))
  46326. {
  46327. return SendErrorMessage(playerid, "You are not the owner of this property.");
  46328. }
  46329. else if (sscanf(value, "i", price))
  46330. {
  46331. return SendSyntaxMessage(playerid, "/house (rent) (rent price) (Use '0' to disable)");
  46332. }
  46333. else if (price < 0 || price > 1000)
  46334. {
  46335. return SendErrorMessage(playerid, "The price must be between $0 and $1,000.");
  46336. }
  46337. else
  46338. {
  46339. Houses[id][hRentPrice] = price;
  46340. SaveHouse(id);
  46341. UpdateHouse(id);
  46342. SendInfoMessage(playerid, "You have set the renting price to %s.", FormatNumber(price));
  46343. }
  46344. }
  46345. else if (!strcmp(name, "safe", true))
  46346. {
  46347. new Float:x, Float:y, Float:z, Float:angle;
  46348. GetPlayerPos(playerid, x, y, z);
  46349. GetPlayerFacingAngle(playerid, angle);
  46350. if (!IsHouseOwner(playerid, id))
  46351. {
  46352. return SendErrorMessage(playerid, "You are not the owner of this property.");
  46353. }
  46354. else if (isnull(value) || strcmp(value, "confirm", true) != 0)
  46355. {
  46356. return SendSyntaxMessage(playerid, "/house (safe) (confirm) (Cost is $2500)");
  46357. }
  46358. else if (!PlayerCanAfford(playerid, 2500))
  46359. {
  46360. return SendErrorMessage(playerid, "You don't have enough money.");
  46361. }
  46362. else if (Players[playerid][pEdit] == EDIT_TYPE_PREVIEW)
  46363. {
  46364. return SendErrorMessage(playerid, "You can't purchase a safe while previewing furniture.");
  46365. }
  46366. else if (!IsPlayerInside(playerid))
  46367. {
  46368. return SendErrorMessage(playerid, "You can only have a safe inside.");
  46369. }
  46370. else
  46371. {
  46372. new
  46373. safe = AddFurniture(id, 2332, x + (2.0 * floatsin(-angle, degrees)), y + (2.0 * floatcos(-angle, degrees)), z, 0.0, 0.0, angle, GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid));
  46374. if (safe == INVALID_ID)
  46375. {
  46376. SendErrorMessage(playerid, "There are no available furniture slots.");
  46377. SendAdminMessage(COLOR_RED, "Admin: %s has failed to add furniture! \"MAX_FURNITURE\" needs to be adjusted.", ReturnNameEx(playerid, 0));
  46378. }
  46379. else
  46380. {
  46381. RemoveMoney(playerid, 2500);
  46382. EditDynamicObjectEx(playerid, EDIT_TYPE_FURNITURE, Furniture[safe][fObject], safe);
  46383. SendInfoMessage(playerid, "Safe purchased for {33CC33}$2500{FFFFFF}. Click the disk icon to save changes.");
  46384. }
  46385. }
  46386. }
  46387. else if (!strcmp(name, "lights", true))
  46388. {
  46389. if (!IsPlayerInside(playerid))
  46390. {
  46391. return SendErrorMessage(playerid, "You are not inside.");
  46392. }
  46393. PlayerPlaySound(playerid, 1083, 0.0, 0.0, 0.0);
  46394. Houses[id][hLights] = !Houses[id][hLights];
  46395. }
  46396. else if (!strcmp(name, "fridge", true))
  46397. {
  46398. new Float:x, Float:y, Float:z, Float:angle;
  46399. GetPlayerPos(playerid, x, y, z);
  46400. GetPlayerFacingAngle(playerid, angle);
  46401. if (!IsHouseOwner(playerid, id))
  46402. {
  46403. return SendErrorMessage(playerid, "You are not the owner of this property.");
  46404. }
  46405. else if (isnull(value) || strcmp(value, "confirm", true) != 0)
  46406. {
  46407. return SendSyntaxMessage(playerid, "/house [fridge] [confirm] (Costs $5000)");
  46408. }
  46409. else if (!PlayerCanAfford(playerid, 5000))
  46410. {
  46411. return SendErrorMessage(playerid, "You don't have enough money.");
  46412. }
  46413. else if (Players[playerid][pEdit] == EDIT_TYPE_PREVIEW)
  46414. {
  46415. return SendErrorMessage(playerid, "You can't purchase a fridge while previewing furniture.");
  46416. }
  46417. else if (!IsPlayerInside(playerid))
  46418. {
  46419. return SendErrorMessage(playerid, "You can only have a fridge inside.");
  46420. }
  46421. else
  46422. {
  46423. new
  46424. fridge = AddFurniture(id, 19916, x + (2.0 * floatsin(-angle, degrees)), y + (2.0 * floatcos(-angle, degrees)), z, 0.0, 0.0, angle, GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid));
  46425. if (fridge == INVALID_ID)
  46426. {
  46427. SendErrorMessage(playerid, "There are no available furniture slots.");
  46428. SendAdminMessage(COLOR_RED, "Admin: %s has failed to add furniture! \"MAX_FURNITURE\" needs to be adjusted.", ReturnNameEx(playerid, 0));
  46429. }
  46430. else
  46431. {
  46432. RemoveMoney(playerid, 5000);
  46433. EditDynamicObjectEx(playerid, EDIT_TYPE_FURNITURE, Furniture[fridge][fObject], fridge);
  46434. SendInfoMessage(playerid, "Fridge purchased for {33CC33}$5000{FFFFFF}. Click the disk icon to save changes.");
  46435. }
  46436. }
  46437. }
  46438. else if (!strcmp(name, "furniture", true))
  46439. {
  46440. if (!IsHouseOwner(playerid, id) && Players[playerid][pFurniturePerms] != id)
  46441. {
  46442. return SendErrorMessage(playerid, "You don't have permissions to furnish this house.");
  46443. }
  46444. else
  46445. {
  46446. if(!IsPlayerInside(playerid)) return SendErrorMessage(playerid, "You can not place the furniture outside.");
  46447. Players[playerid][pHouse] = id;
  46448. Dialog_Show(playerid, HouseFurniture, DIALOG_STYLE_LIST, "{FFFFFF}Manage Furniture", "Purchase\nAdjustments", "Select", "Cancel");
  46449. }
  46450. }
  46451. else if (!strcmp(name, "permissions", true))
  46452. {
  46453. new targetid;
  46454. if (!IsHouseOwner(playerid, id))
  46455. {
  46456. return SendErrorMessage(playerid, "You are not the owner of this property.");
  46457. }
  46458. else if (sscanf(value, "u", targetid))
  46459. {
  46460. return SendSyntaxMessage(playerid, "/house [permissions] [playerid/name]");
  46461. }
  46462. else if (!IsPlayerConnected(targetid))
  46463. {
  46464. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  46465. }
  46466. else if (IsPlayerNPC(targetid))
  46467. {
  46468. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  46469. }
  46470. else if (targetid == playerid)
  46471. {
  46472. return SendErrorMessage(playerid, "You can't use this command on yourself.");
  46473. }
  46474. else if (!IsPlayerInRangeOfPlayer(playerid, targetid))
  46475. {
  46476. return SendErrorMessage(playerid, "The specified target is not near you.");
  46477. }
  46478. else
  46479. {
  46480. if ( Players[targetid][pFurniturePerms] == INVALID_ID )
  46481. {
  46482. Players[targetid][pFurniturePerms] = id;
  46483. SendInfoMessage(playerid, "You have given %s permission to furnish your house.", ReturnNameEx(targetid));
  46484. SendInfoMessage(targetid, "%s has given you permission to furnish their house.", ReturnNameEx(playerid));
  46485. }
  46486. else
  46487. {
  46488. Players[targetid][pFurniturePerms] = INVALID_ID;
  46489. SendInfoMessage(playerid, "You have taken away %s's furniture permissions.", ReturnNameEx(targetid));
  46490. SendInfoMessage(targetid, "%s has taken away your furniture permissions.", ReturnNameEx(playerid));
  46491. }
  46492. }
  46493. }
  46494. else if (!strcmp(name, "backdoor", true))
  46495. {
  46496. if (!IsHouseOwner(playerid, id))
  46497. {
  46498. return SendErrorMessage(playerid, "You are not the owner of this property.");
  46499. }
  46500. else if (isnull(value))
  46501. {
  46502. SendSyntaxMessage(playerid, "/house (backdoor) (option)");
  46503. SendClientMessage(playerid, COLOR_LIGHTGREY, "Options: entrance, exit, remove");
  46504. }
  46505. else if (!strcmp(value, "entrance", true))
  46506. {
  46507. SendInfoMessage(playerid, "Use /set once you're at the location you wish to place the backdoor entrance at.");
  46508. Players[playerid][pConfirmBackdoor] = id;
  46509. Players[playerid][pBackdoorType] = 1;
  46510. }
  46511. else if (!strcmp(value, "exit", true))
  46512. {
  46513. SendInfoMessage(playerid, "Use /set once you're at the location you wish to place the backdoor exit at.");
  46514. Players[playerid][pConfirmBackdoor] = id;
  46515. Players[playerid][pBackdoorType] = 2;
  46516. }
  46517. else if (!strcmp(value, "remove", true))
  46518. {
  46519. if (!IsBackdoorSetup(id))
  46520. {
  46521. return SendErrorMessage(playerid, "This house doesn't have a backdoor setup.");
  46522. }
  46523. else
  46524. {
  46525. DestroyDynamic3DTextLabel(Houses[id][hBackdoorText][0]);
  46526. DestroyDynamic3DTextLabel(Houses[id][hBackdoorText][1]);
  46527. Houses[id][hBackdoor][0] = 0.0;
  46528. Houses[id][hBackdoor][1] = 0.0;
  46529. Houses[id][hBackdoor][2] = 0.0;
  46530. Houses[id][hBackdoorInt][0] = 0.0;
  46531. Houses[id][hBackdoorInt][1] = 0.0;
  46532. Houses[id][hBackdoorInt][2] = 0.0;
  46533. Houses[id][hBackdoorText][0] = INVALID_3DTEXT_ID;
  46534. Houses[id][hBackdoorText][1] = INVALID_3DTEXT_ID;
  46535. SaveHouse(id);
  46536. SendInfoMessage(playerid, "You have removed the backdoor for your house.");
  46537. }
  46538. }
  46539. }
  46540. else if (!strcmp(name, "sell", true))
  46541. {
  46542. new targetid, price;
  46543. if (!IsHouseOwner(playerid, id))
  46544. {
  46545. return SendErrorMessage(playerid, "You are not the owner of this property.");
  46546. }
  46547. else if (sscanf(value, "ui", targetid, price))
  46548. {
  46549. return SendSyntaxMessage(playerid, "/house (sell) (player) (price)");
  46550. }
  46551. else if (!IsPlayerConnected(targetid))
  46552. {
  46553. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  46554. }
  46555. else if (IsPlayerNPC(targetid))
  46556. {
  46557. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  46558. }
  46559. else if (targetid == playerid)
  46560. {
  46561. return SendErrorMessage(playerid, "You can't use this command on yourself.");
  46562. }
  46563. else if (!IsPlayerInRangeOfPlayer(playerid, targetid))
  46564. {
  46565. return SendErrorMessage(playerid, "The specified target is not near you.");
  46566. }
  46567. else if (price < 1)
  46568. {
  46569. return SendErrorMessage(playerid, "The price can't be below $1.");
  46570. }
  46571. else
  46572. {
  46573. Players[targetid][pHouseOffer] = playerid;
  46574. Players[targetid][pHousePrice] = price;
  46575. Players[targetid][pHouseSell] = id;
  46576. SendInfoMessage(playerid, "You have offered %s to buy %s for {33CC33}%s{FFFFFF}.", ReturnNameEx(targetid), Houses[id][hAddress], FormatNumber(price));
  46577. SendInfoMessage(targetid, "%s wants to sell you %s for {33CC33}%s{FFFFFF} - use /accepthouse to accept.", ReturnNameEx(playerid), Houses[id][hAddress], FormatNumber(price));
  46578. }
  46579. }
  46580. else if (!strcmp(name, "abandon", true))
  46581. {
  46582. if (!IsHouseOwner(playerid, id))
  46583. {
  46584. return SendErrorMessage(playerid, "You are not the owner of this property.");
  46585. }
  46586. else if (isnull(value) || strcmp(value, "confirm", true) != 0)
  46587. {
  46588. SendSyntaxMessage(playerid, "/house (abandon) (confirm)");
  46589. SendClientMessage(playerid, COLOR_LIGHTGREY, "Note: You will receive 80 percent of the original purchase price.");
  46590. }
  46591. else
  46592. {
  46593. new cost = percent(Houses[id][hValue], 80);
  46594. Players[playerid][pPocketMoney] += cost;
  46595. SetHouseOwner(id, INVALID_PLAYER_ID);
  46596. SendInfoMessage(playerid, "You have abandoned this house. You have received {33CC33}%s{FFFFFF} as a partial refund.", FormatNumber(cost));
  46597. }
  46598. }
  46599. }
  46600. return 1;
  46601. }
  46602. CMD:houseint(playerid, params[])
  46603. {
  46604. new type;
  46605. if (Players[playerid][pAdmin] < 5)
  46606. {
  46607. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  46608. }
  46609. else if (sscanf(params, "i", type))
  46610. {
  46611. return SendSyntaxMessage(playerid, "/houseint (interior 1-%i)", sizeof(g_HouseInteriors) - 1);
  46612. }
  46613. else if (type < 1 || type > sizeof(g_HouseInteriors) - 1)
  46614. {
  46615. return SendErrorMessage(playerid, "You must input a type between 1 and %i.", sizeof(g_HouseInteriors) - 1);
  46616. }
  46617. else
  46618. {
  46619. SetPlayerPosEx(playerid, g_HouseInteriors[type][e_InteriorX], g_HouseInteriors[type][e_InteriorY], g_HouseInteriors[type][e_InteriorZ], g_HouseInteriors[type][e_InteriorA], g_HouseInteriors[type][e_Interior]);
  46620. SendInfoMessage(playerid, "You are now viewing house interior: %i.", type);
  46621. new log[128];
  46622. format(log, sizeof(log), "%s has teleported to house interior: %i", ReturnName(playerid), type);
  46623. CreateLog("admin", log);
  46624. }
  46625. return 1;
  46626. }
  46627. CMD:addcompany(playerid, params[])
  46628. {
  46629. new type, price;
  46630. if (Players[playerid][pAdmin] < 5)
  46631. {
  46632. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  46633. }
  46634. else if (sscanf(params, "ii", type, price))
  46635. {
  46636. SendSyntaxMessage(playerid, "/addcompany (type) (price)");
  46637. SendClientMessage(playerid, COLOR_LIGHTGREY, "Types: 1 - Store, 2 - Clothes, 3 - Restaurant, 4 - Rentals, 5 - Phone, 6 - Dealership");
  46638. SendClientMessage(playerid, COLOR_LIGHTGREY, "Types: 7 - Gym, 8 - Ammunition, 9 - Bar");
  46639. }
  46640. else if (type < 1 || type > sizeof(g_CompanyTypes))
  46641. {
  46642. return SendErrorMessage(playerid, "You must input a type between 1 and %i.", sizeof(g_CompanyTypes));
  46643. }
  46644. else if (price < 0)
  46645. {
  46646. return SendErrorMessage(playerid, "You must input a valid price.");
  46647. }
  46648. else if (GetClosestCompany(playerid) != INVALID_ID)
  46649. {
  46650. return SendErrorMessage(playerid, "There is another company nearby.");
  46651. }
  46652. else
  46653. {
  46654. new id = GetNextCompanyID();
  46655. if (id == INVALID_ID)
  46656. {
  46657. return SendErrorMessage(playerid, "There are no available company slots.");
  46658. }
  46659. else
  46660. {
  46661. strcpy(Companies[id][cName], GetCompanyType(type), 32);
  46662. GetPlayerPos(playerid, Companies[id][cSpawn][0], Companies[id][cSpawn][1], Companies[id][cSpawn][2]);
  46663. GetPlayerFacingAngle(playerid, Companies[id][cSpawn][3]);
  46664. Companies[id][cExists] = 1;
  46665. Companies[id][cOwner] = 0;
  46666. Companies[id][cValue] = price;
  46667. Companies[id][cLocked] = 0;
  46668. Companies[id][cSafe] = 0;
  46669. Companies[id][cStock] = 0;
  46670. Companies[id][cExterior] = GetPlayerInterior(playerid);
  46671. Companies[id][cExteriorWorld] = GetPlayerVirtualWorld(playerid);
  46672. Companies[id][cCheckpoint] = INVALID_ID;
  46673. //Companies[id][cText] = INVALID_3DTEXT_ID;
  46674. Companies[id][cDeliverText] = INVALID_3DTEXT_ID;
  46675. format(gExecute, sizeof(gExecute), "INSERT INTO rp_companies (cValue) VALUES(%i)", price);
  46676. mysql_tquery(gConnection, gExecute, "OnCompanyAdded", "i", id);
  46677. SetCompanyType(id, type);
  46678. SendInfoMessage(playerid, "You have added company %i (/editcompany).", id);
  46679. new log[128];
  46680. format(log, sizeof(log), "%s has added company %i", ReturnName(playerid), id);
  46681. CreateLog("admin", log);
  46682. }
  46683. }
  46684. return 1;
  46685. }
  46686. CMD:asellcompany(playerid, params[])
  46687. {
  46688. new company;
  46689. if (Players[playerid][pAdmin] < 5)
  46690. {
  46691. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  46692. }
  46693. else if (sscanf(params, "i", company))
  46694. {
  46695. return SendSyntaxMessage(playerid, "/asellcompany (company)");
  46696. }
  46697. else if (!IsValidCompanyID(company))
  46698. {
  46699. return SendErrorMessage(playerid, "The specified house is not valid.");
  46700. }
  46701. else if (!Companies[company][cOwner])
  46702. {
  46703. return SendErrorMessage(playerid, "This company is currently not owned.");
  46704. }
  46705. else
  46706. {
  46707. SetCompanyOwner(company, INVALID_PLAYER_ID);
  46708. SendInfoMessage(playerid, "You have admin sold company %i.", company);
  46709. new log[128];
  46710. format(log, sizeof(log), "%s has admin sold %i", ReturnName(playerid), company);
  46711. CreateLog("admin", log);
  46712. }
  46713. return 1;
  46714. }
  46715. CMD:deletecompany(playerid, params[])
  46716. {
  46717. new company;
  46718. if (Players[playerid][pAdmin] < 5)
  46719. {
  46720. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  46721. }
  46722. else if (sscanf(params, "i", company))
  46723. {
  46724. return SendSyntaxMessage(playerid, "/deletecompany (company)");
  46725. }
  46726. else if (!IsValidCompanyID(company))
  46727. {
  46728. return SendErrorMessage(playerid, "The specified company is not valid.");
  46729. }
  46730. else
  46731. {
  46732. ClearPumps(company);
  46733. format(gExecute, sizeof(gExecute), "DELETE FROM rp_companies WHERE `cID` = %i", Companies[company][cID]);
  46734. mysql_tquery(gConnection, gExecute);
  46735. ResetCompany(company);
  46736. SendInfoMessage(playerid, "You have deleted company %i.", company);
  46737. new log[128];
  46738. format(log, sizeof(log), "%s has deleted company %i", ReturnName(playerid), company);
  46739. CreateLog("admin", log);
  46740. }
  46741. return 1;
  46742. }
  46743. CMD:arestock(playerid, params[])
  46744. {
  46745. new company;
  46746. if (Players[playerid][pAdmin] < 5)
  46747. {
  46748. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  46749. }
  46750. else if (sscanf(params, "i", company))
  46751. {
  46752. return SendSyntaxMessage(playerid, "/arestock (company)");
  46753. }
  46754. else if (!IsValidCompanyID(company))
  46755. {
  46756. return SendErrorMessage(playerid, "The specified company is not valid.");
  46757. }
  46758. else
  46759. {
  46760. for (new i = 0; i < MAX_PRODUCTS; i ++)
  46761. {
  46762. if (!Products[company][i][prStock])
  46763. {
  46764. Products[company][i][prStock] = 200;
  46765. SaveProduct(company, i);
  46766. }
  46767. }
  46768. SendInfoMessage(playerid, "You have restocked all products for company %i.", company);
  46769. new log[128];
  46770. format(log, sizeof(log), "%s has restocked all products for company %i", ReturnName(playerid), company);
  46771. CreateLog("admin", log);
  46772. }
  46773. return 1;
  46774. }
  46775. CMD:editcompany(playerid, params[])
  46776. {
  46777. new company;
  46778. if (Players[playerid][pAdmin] < 5)
  46779. {
  46780. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  46781. }
  46782. else if (sscanf(params, "i", company))
  46783. {
  46784. return SendSyntaxMessage(playerid, "/editcompany (company)");
  46785. }
  46786. else if (!IsValidCompanyID(company))
  46787. {
  46788. return SendErrorMessage(playerid, "The specified company is not valid.");
  46789. }
  46790. else
  46791. {
  46792. ShowCompanyEditMenu(playerid, company);
  46793. }
  46794. return 1;
  46795. }
  46796. CMD:gotocompany(playerid, params[])
  46797. {
  46798. new company;
  46799. if (Players[playerid][pAdmin] < 5)
  46800. {
  46801. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  46802. }
  46803. else if (sscanf(params, "i", company))
  46804. {
  46805. return SendSyntaxMessage(playerid, "/gotocompany (company)");
  46806. }
  46807. else if (!IsValidCompanyID(company))
  46808. {
  46809. return SendErrorMessage(playerid, "The specified company is not valid.");
  46810. }
  46811. else
  46812. {
  46813. SetPlayerPosEx(playerid, Companies[company][cSpawn][0], Companies[company][cSpawn][1], Companies[company][cSpawn][2], Companies[company][cSpawn][3], Companies[company][cExterior], Companies[company][cExteriorWorld]);
  46814. SendInfoMessage(playerid, "You have teleported to company %i.", company);
  46815. new log[128];
  46816. format(log, sizeof(log), "%s has teleported to company %i", ReturnName(playerid), company);
  46817. CreateLog("admin", log);
  46818. }
  46819. return 1;
  46820. }
  46821. CMD:acceptcompany(playerid, params[])
  46822. {
  46823. if (IsPlayerConnected(Players[playerid][pCompanyOffer]))
  46824. {
  46825. new company = Players[playerid][pCompanySell];
  46826. new price = Players[playerid][pCompanyPrice];
  46827. if (!IsCompanyOwner(Players[playerid][pCompanyOffer], company))
  46828. {
  46829. return SendErrorMessage(playerid, "The company offer has expired.");
  46830. }
  46831. else if (!PlayerCanAfford(playerid, price))
  46832. {
  46833. return SendErrorMessage(playerid, "You can't afford to buy the company.");
  46834. }
  46835. else if (!IsPlayerInRangeOfPlayer(playerid, Players[playerid][pCompanyOffer]))
  46836. {
  46837. return SendErrorMessage(playerid, "You need to be near the player who offered the company.");
  46838. }
  46839. else
  46840. {
  46841. SetCompanyOwner(company, playerid);
  46842. RemoveMoney(playerid, price);
  46843. SendInfoMessage(playerid, "You have accepted %s's company offer for {33CC33}%s{FFFFFF}.", ReturnNameEx(Players[playerid][pCompanyOffer]), FormatNumber(price));
  46844. SendInfoMessage(Players[playerid][pCompanyOffer], "%s has accepted the company offer for {33CC33}%s{FFFFFF}.", ReturnNameEx(playerid), FormatNumber(price));
  46845. format(gExecute, sizeof(gExecute), "INSERT INTO rp_purchases (Player, Type, Price, Date) VALUES(%i, 'Company (sold by %s) - #%i', %i, NOW())", Players[playerid][pID], ReturnName(Players[playerid][pCompanyOffer]), Companies[company][cID], price);
  46846. mysql_tquery(gConnection, gExecute);
  46847. Players[Players[playerid][pCompanyOffer]][pPocketMoney] += price;
  46848. Players[playerid][pCompanyOffer] = INVALID_PLAYER_ID;
  46849. }
  46850. }
  46851. return 1;
  46852. }
  46853. CMD:copfixme(playerid, params[])
  46854. {
  46855. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  46856. {
  46857. return SendErrorMessage(playerid, "You are not part of the law enforcement.");
  46858. }
  46859. else
  46860. {
  46861. SendInfoMessage(playerid, "Your request has been sent to all available admins.");
  46862. SendAdminMessage(COLOR_RED, "Admin: %s has requested to be copfixed.", ReturnNameEx(playerid, 0));
  46863. }
  46864. return 1;
  46865. }
  46866. CMD:company(playerid, params[])
  46867. {
  46868. new id = GetNearbyCompany(playerid), name[16], value[128];
  46869. if (id == INVALID_ID)
  46870. {
  46871. return SendErrorMessage(playerid, "There is no company nearby.");
  46872. }
  46873. else if (sscanf(params, "s[16]S()[128]", name, value))
  46874. {
  46875. SendSyntaxMessage(playerid, "/company (option)");
  46876. SendClientMessage(playerid, COLOR_LIGHTGREY, "Options: buy, lock, name, safe, products, sell, abandon, fee, music");
  46877. }
  46878. else
  46879. {
  46880. if (!strcmp(name, "buy", true))
  46881. {
  46882. if (Companies[id][cOwner])
  46883. {
  46884. SendErrorMessage(playerid, "This company is already owned.");
  46885. }
  46886. else if (GetCompanyLimit(playerid) != 0 && GetOwnedCompanies(playerid) >= GetCompanyLimit(playerid))
  46887. {
  46888. SendErrorMessage(playerid, "You have reached the limit of owned companies.");
  46889. }
  46890. else
  46891. {
  46892. Dialog_Show(playerid, BuyCompany, DIALOG_STYLE_MSGBOX, "{FFFFFF}Purchase this company", "Would you like to purchase {00FF00}%s{AAC4E5} for {00FF00}%s{AAC4E5}?", "Yes", "No", Companies[id][cName], FormatNumber(Companies[id][cValue]));
  46893. }
  46894. }
  46895. else if (!strcmp(name, "lock", true))
  46896. {
  46897. if (!IsCompanyOwner(playerid, id))
  46898. {
  46899. return SendErrorMessage(playerid, "You don't have the keys for this company.");
  46900. }
  46901. else
  46902. {
  46903. Companies[id][cLocked] = !Companies[id][cLocked];
  46904. PlayNearbySound(playerid, 1145);
  46905. SaveCompany(id);
  46906. UpdateCompany(id);
  46907. if (Companies[id][cLocked])
  46908. {
  46909. ShowActionBubble(playerid, "* %s uses their key to lock their company.", ReturnNameEx(playerid));
  46910. ShowFooterText(playerid, "You have ~r~locked~w~ this company.");
  46911. }
  46912. else
  46913. {
  46914. ShowActionBubble(playerid, "* %s uses their key to unlock their company.", ReturnNameEx(playerid));
  46915. ShowFooterText(playerid, "You have ~g~unlocked~w~ this company.");
  46916. }
  46917. }
  46918. }
  46919. else if (!strcmp(name, "fee", true))
  46920. {
  46921. new amount;
  46922. if (!IsCompanyOwner(playerid, id))
  46923. {
  46924. return SendErrorMessage(playerid, "You are not the owner of this property.");
  46925. }
  46926. else if (sscanf(value, "i", amount))
  46927. {
  46928. return SendSyntaxMessage(playerid, "/company [fee] [amount]");
  46929. }
  46930. else if (!(0 <= amount <= 5000))
  46931. {
  46932. return SendInfoMessage(playerid, "Entrance fee can't be under $0 or above $5,000.");
  46933. }
  46934. Companies[id][cFee] = amount;
  46935. }
  46936. else if (!strcmp(name, "name", true))
  46937. {
  46938. if (!IsCompanyOwner(playerid, id))
  46939. {
  46940. return SendErrorMessage(playerid, "You are not the owner of this property.");
  46941. }
  46942. else if (isnull(value))
  46943. {
  46944. return SendSyntaxMessage(playerid, "/company (name) (company name)");
  46945. }
  46946. else if (strlen(value) > 32)
  46947. {
  46948. return SendErrorMessage(playerid, "The length must be under 32 characters.");
  46949. }
  46950. else
  46951. {
  46952. strcpy(Companies[id][cName], value, 32);
  46953. UpdateCompany(id);
  46954. SaveCompany(id);
  46955. SendInfoMessage(playerid, "You have set the name of this company to: %s.", value);
  46956. }
  46957. }
  46958. else if (!strcmp(name, "safe", true))
  46959. {
  46960. new option[10], amount;
  46961. if (!IsCompanyOwner(playerid, id))
  46962. {
  46963. return SendErrorMessage(playerid, "You are not the owner of this property.");
  46964. }
  46965. else if (sscanf(value, "s[10]i", option, amount))
  46966. {
  46967. SendSyntaxMessage(playerid, "/company (safe) (withdraw/deposit) (amount)");
  46968. SendFormatMessage(playerid, COLOR_LIGHTGREY, "Balance: There is currently {FFFFFF}%s{CFCFCF} in the safe.", FormatNumber(Companies[id][cSafe]));
  46969. }
  46970. else
  46971. {
  46972. if (!strcmp(option, "withdraw", true))
  46973. {
  46974. if (amount < 0 || amount > Companies[id][cSafe])
  46975. {
  46976. return SendErrorMessage(playerid, "There isn't that much funds in the safe.");
  46977. }
  46978. else
  46979. {
  46980. Companies[id][cSafe] -= amount;
  46981. Players[playerid][pPocketMoney] += amount;
  46982. SaveCompany(id);
  46983. SendInfoMessage(playerid, "You have withdrawn {33CC33}%s{FFFFFF} from the company safe (%s remaining).", FormatNumber(amount), FormatNumber(Companies[id][cSafe]));
  46984. }
  46985. }
  46986. else if (!strcmp(option, "deposit", true))
  46987. {
  46988. if (amount < 0 || amount > Players[playerid][pPocketMoney])
  46989. {
  46990. return SendErrorMessage(playerid, "There isn't that much funds in your pocket.");
  46991. }
  46992. else
  46993. {
  46994. Companies[id][cSafe] += amount;
  46995. Players[playerid][pPocketMoney] -= amount;
  46996. SaveCompany(id);
  46997. SendInfoMessage(playerid, "You have deposited {33CC33}%s{FFFFFF} in the company safe (%s remaining).", FormatNumber(amount), FormatNumber(Companies[id][cSafe]));
  46998. }
  46999. }
  47000. }
  47001. }
  47002. else if (!strcmp(name, "products", true))
  47003. {
  47004. if (!IsCompanyOwner(playerid, id))
  47005. {
  47006. return SendErrorMessage(playerid, "You are not the owner of this property.");
  47007. }
  47008. else
  47009. {
  47010. Players[playerid][pCompany] = id;
  47011. ShowProductEditMenu(playerid, id);
  47012. }
  47013. }
  47014. else if (!strcmp(name, "sell", true))
  47015. {
  47016. new targetid, price;
  47017. if (!IsCompanyOwner(playerid, id))
  47018. {
  47019. return SendErrorMessage(playerid, "You are not the owner of this property.");
  47020. }
  47021. else if (sscanf(value, "ui", targetid, price))
  47022. {
  47023. return SendSyntaxMessage(playerid, "/company (sell) (player) (price)");
  47024. }
  47025. else if (!IsPlayerConnected(targetid))
  47026. {
  47027. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  47028. }
  47029. else if (IsPlayerNPC(targetid))
  47030. {
  47031. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  47032. }
  47033. else if (targetid == playerid)
  47034. {
  47035. return SendErrorMessage(playerid, "You can't use this command on yourself.");
  47036. }
  47037. else if (!IsPlayerInRangeOfPlayer(playerid, targetid))
  47038. {
  47039. return SendErrorMessage(playerid, "The specified target is not near you.");
  47040. }
  47041. else if (price < 1)
  47042. {
  47043. return SendErrorMessage(playerid, "The price can't be below $1.");
  47044. }
  47045. else
  47046. {
  47047. Players[targetid][pCompanyOffer] = playerid;
  47048. Players[targetid][pCompanyPrice] = price;
  47049. Players[targetid][pCompanySell] = id;
  47050. SendInfoMessage(playerid, "You have offered %s to buy %s for {33CC33}%s{FFFFFF}.", ReturnNameEx(targetid), Companies[id][cName], FormatNumber(price));
  47051. SendInfoMessage(targetid, "%s wants to sell you %s for {33CC33}%s{FFFFFF} - use /acceptcompany to accept.", ReturnNameEx(playerid), Companies[id][cName], FormatNumber(price));
  47052. }
  47053. }
  47054. else if (!strcmp(name, "abandon", true))
  47055. {
  47056. if (!IsCompanyOwner(playerid, id))
  47057. {
  47058. return SendErrorMessage(playerid, "You are not the owner of this property.");
  47059. }
  47060. else if (isnull(value) || strcmp(value, "confirm", true) != 0)
  47061. {
  47062. SendSyntaxMessage(playerid, "/company (abandon) (confirm)");
  47063. SendClientMessage(playerid, COLOR_LIGHTGREY, "Note: You will receive 80 percent of the original purchase price.");
  47064. }
  47065. else
  47066. {
  47067. new cost = percent(Companies[id][cValue], 80);
  47068. Players[playerid][pPocketMoney] += cost;
  47069. SetCompanyOwner(id, INVALID_PLAYER_ID);
  47070. SendInfoMessage(playerid, "You have abandoned this company. You have received {33CC33}%s{FFFFFF} as a partial refund.", FormatNumber(cost));
  47071. }
  47072. }
  47073. else if (!strcmp(name, "music", true))
  47074. {
  47075. if (!IsCompanyOwner(playerid, id))
  47076. {
  47077. return SendErrorMessage(playerid, "You are not the owner of this property.");
  47078. }
  47079. else if (isnull(value))
  47080. {
  47081. return SendSyntaxMessage(playerid, "/company (music) (music url)");
  47082. }
  47083. else
  47084. {
  47085. strcpy(Companies[id][cStream], value, 256);
  47086. foreach(new i : Player)
  47087. {
  47088. if(GetCurrentCompany(i) == id)
  47089. {
  47090. SendInfoMessage(i, "Company music station has been changed.");
  47091. PlayAudioStreamForPlayer(i, Companies[id][cStream]);
  47092. }
  47093. }
  47094. SendInfoMessage(playerid, "You have changed the company music.");
  47095. }
  47096. }
  47097. }
  47098. return 1;
  47099. }
  47100. CMD:gotolocker(playerid, params[])
  47101. {
  47102. new faction;
  47103. if (Players[playerid][pAdmin] < 5)
  47104. {
  47105. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  47106. }
  47107. else if (sscanf(params, "i", faction))
  47108. {
  47109. return SendSyntaxMessage(playerid, "/gotolocker (faction ID)");
  47110. }
  47111. else if (!IsValidFactionID(faction))
  47112. {
  47113. return SendErrorMessage(playerid, "You have specified an invalid faction ID.");
  47114. }
  47115. else if (!IsLockerSetup(faction))
  47116. {
  47117. return SendErrorMessage(playerid, "There is no locker setup for this faction.");
  47118. }
  47119. else
  47120. {
  47121. SetPlayerPosEx(playerid, Factions[faction][fcLockerX], Factions[faction][fcLockerY], Factions[faction][fcLockerZ], 0.0, Factions[faction][fcLockerInt], Factions[faction][fcLockerWorld]);
  47122. SendInfoMessage(playerid, "You have teleported to faction %i's locker.", faction);
  47123. new log[128];
  47124. format(log, sizeof(log), "%s has teleported to faction %i's locker", ReturnName(playerid), faction);
  47125. CreateLog("admin", log);
  47126. }
  47127. return 1;
  47128. }
  47129. CMD:quitjob(playerid, params[])
  47130. {
  47131. if (Players[playerid][pJob] == JOB_NONE)
  47132. {
  47133. return SendErrorMessage(playerid, "You don't have a job.");
  47134. }
  47135. else
  47136. {
  47137. Players[playerid][pJob] = JOB_NONE;
  47138. SendInfoMessage(playerid, "You have quit your current job.");
  47139. if (Players[playerid][pWorking])
  47140. {
  47141. StopWorking(playerid);
  47142. }
  47143. }
  47144. return 1;
  47145. }
  47146. CMD:paused(playerid, params[])
  47147. {
  47148. new
  47149. targetid;
  47150. if (sscanf(params, "u", targetid))
  47151. {
  47152. if (Players[playerid][pAdmin] > 0)
  47153. {
  47154. gListString = "Name\tTime";
  47155. foreach (new i : Player)
  47156. {
  47157. if (IsPlayerPaused(i))
  47158. {
  47159. format(gListString, sizeof(gListString), "%s\n%s\t%i seconds", gListString, ReturnNameEx(i, 0), GetPausedTime(i));
  47160. }
  47161. }
  47162. if (strlen(gListString) < 10)
  47163. {
  47164. SendErrorMessage(playerid, "There are no paused players.");
  47165. }
  47166. else
  47167. {
  47168. Dialog_Show(playerid, PausedPlayers, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Paused Players", gListString, "Close", "");
  47169. }
  47170. }
  47171. return SendSyntaxMessage(playerid, "/paused (player)");
  47172. }
  47173. else if (!IsPlayerConnected(targetid))
  47174. {
  47175. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  47176. }
  47177. else if (IsPlayerNPC(targetid))
  47178. {
  47179. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  47180. }
  47181. else if (!IsPlayerLoggedIn(targetid))
  47182. {
  47183. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  47184. }
  47185. else
  47186. {
  47187. if (IsPlayerPaused(targetid))
  47188. {
  47189. SendInfoMessage(playerid, "%s has been paused for %i seconds.", ReturnNameEx(targetid, 0), GetPausedTime(targetid));
  47190. }
  47191. else
  47192. {
  47193. SendInfoMessage(playerid, "%s is currently not paused.", ReturnNameEx(targetid, 0));
  47194. }
  47195. }
  47196. return 1;
  47197. }
  47198. CMD:afkkick(playerid, params[])
  47199. {
  47200. if (Players[playerid][pAdmin] < 1)
  47201. {
  47202. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  47203. }
  47204. else
  47205. {
  47206. new count;
  47207. foreach (new i : Player) if (Players[i][pAdmin] < 1)
  47208. {
  47209. if (GetPausedTime(i) > 600)
  47210. {
  47211. SendInfoMessage(i, "You have been kicked for AFK.");
  47212. KickPlayer(i);
  47213. count++;
  47214. }
  47215. }
  47216. if (count)
  47217. {
  47218. SendAdminMessage(COLOR_RED, "Admin: %s has afkkicked %i players.", ReturnNameEx(playerid, 0), count);
  47219. }
  47220. else
  47221. {
  47222. SendErrorMessage(playerid, "No players were kicked.");
  47223. }
  47224. }
  47225. return 1;
  47226. }
  47227. CMD:addbuilding(playerid, params[])
  47228. {
  47229. new name[32], type;
  47230. if (Players[playerid][pAdmin] < 5)
  47231. {
  47232. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  47233. }
  47234. else if (sscanf(params, "ds[32]", type, name))
  47235. {
  47236. SendSyntaxMessage(playerid, "/addbuilding (type) (name)");
  47237. return SendInfoMessage(playerid, "0 - None, 1 - Bank, 2 - Apartment");
  47238. }
  47239. else if (type < 0 || type > 2)
  47240. {
  47241. return SendErrorMessage(playerid, "You have specified an invalid type.");
  47242. }
  47243. else
  47244. {
  47245. new id = GetNextBuildingID();
  47246. if (id == INVALID_ID)
  47247. {
  47248. return SendErrorMessage(playerid, "There are no available building slots.");
  47249. }
  47250. else
  47251. {
  47252. strcpy(Buildings[id][bName], name, 32);
  47253. GetPlayerPos(playerid, Buildings[id][bSpawn][0], Buildings[id][bSpawn][1], Buildings[id][bSpawn][2]);
  47254. GetPlayerFacingAngle(playerid, Buildings[id][bSpawn][3]);
  47255. Buildings[id][bExists] = 1;
  47256. Buildings[id][bIconType] = 0;
  47257. Buildings[id][bLocked] = 0;
  47258. Buildings[id][bExterior] = GetPlayerInterior(playerid);
  47259. Buildings[id][bExteriorWorld] = GetPlayerVirtualWorld(playerid);
  47260. Buildings[id][bPickup] = INVALID_ID;
  47261. Buildings[id][bIcon] = INVALID_ID;
  47262. Buildings[id][bText] = INVALID_3DTEXT_ID;
  47263. if (type == 1)
  47264. {
  47265. Buildings[id][bInterior] = 3;
  47266. Buildings[id][bInt][0] = 205.0938;
  47267. Buildings[id][bInt][1] = 1719.2399;
  47268. Buildings[id][bInt][2] = 1231.4624;
  47269. Buildings[id][bInt][3] = 90.0000;
  47270. }
  47271. else if (type == 2)
  47272. {
  47273. Buildings[id][bInterior] = 6;
  47274. Buildings[id][bInt][0] = 1291.6171;
  47275. Buildings[id][bInt][1] = -1957.9954;
  47276. Buildings[id][bInt][2] = 1857.5940;
  47277. Buildings[id][bInt][3] = 180.0000;
  47278. }
  47279. format(gExecute, sizeof(gExecute), "INSERT INTO rp_buildings (bName) VALUES('%s')", mysql_escaped(name));
  47280. mysql_tquery(gConnection, gExecute, "OnBuildingAdded", "i", id);
  47281. SendInfoMessage(playerid, "You have added building %i (/editbuilding).", id);
  47282. new log[128];
  47283. format(log, sizeof(log), "%s has added building %i", ReturnName(playerid), id);
  47284. CreateLog("admin", log);
  47285. }
  47286. }
  47287. return 1;
  47288. }
  47289. CMD:editbuilding(playerid, params[])
  47290. {
  47291. new building;
  47292. if (Players[playerid][pAdmin] < 5)
  47293. {
  47294. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  47295. }
  47296. else if (sscanf(params, "i", building))
  47297. {
  47298. return SendSyntaxMessage(playerid, "/editbuilding (building)");
  47299. }
  47300. else if (!IsValidBuildingID(building))
  47301. {
  47302. return SendErrorMessage(playerid, "The specified building is not valid.");
  47303. }
  47304. else
  47305. {
  47306. ShowBuildingEditMenu(playerid, building);
  47307. }
  47308. return 1;
  47309. }
  47310. CMD:gotobuilding(playerid, params[])
  47311. {
  47312. new building;
  47313. if (Players[playerid][pAdmin] < 5)
  47314. {
  47315. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  47316. }
  47317. else if (sscanf(params, "i", building))
  47318. {
  47319. return SendSyntaxMessage(playerid, "/gotobuilding (building)");
  47320. }
  47321. else if (!IsValidBuildingID(building))
  47322. {
  47323. return SendErrorMessage(playerid, "The specified building is not valid.");
  47324. }
  47325. else
  47326. {
  47327. SetPlayerPosEx(playerid, Buildings[building][bSpawn][0], Buildings[building][bSpawn][1], Buildings[building][bSpawn][2], Buildings[building][bSpawn][3], Buildings[building][bExterior], Buildings[building][bExteriorWorld]);
  47328. SendInfoMessage(playerid, "You have teleported to building %i.", building);
  47329. new log[128];
  47330. format(log, sizeof(log), "%s has teleported to building %i", ReturnName(playerid), building);
  47331. CreateLog("admin", log);
  47332. }
  47333. return 1;
  47334. }
  47335. CMD:deletebuilding(playerid, params[])
  47336. {
  47337. new building;
  47338. if (Players[playerid][pAdmin] < 5)
  47339. {
  47340. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  47341. }
  47342. else if (sscanf(params, "i", building))
  47343. {
  47344. return SendSyntaxMessage(playerid, "/deletebuilding (building)");
  47345. }
  47346. else if (!IsValidBuildingID(building))
  47347. {
  47348. return SendErrorMessage(playerid, "The specified building is not valid.");
  47349. }
  47350. else
  47351. {
  47352. format(gExecute, sizeof(gExecute), "DELETE FROM rp_buildings WHERE `bID` = %i", Buildings[building][bID]);
  47353. mysql_tquery(gConnection, gExecute);
  47354. ResetBuilding(building);
  47355. SendInfoMessage(playerid, "You have deleted building %i.", building);
  47356. new log[128];
  47357. format(log, sizeof(log), "%s has deleted building %i", ReturnName(playerid), building);
  47358. CreateLog("admin", log);
  47359. }
  47360. return 1;
  47361. }
  47362. CMD:setdrunk(playerid, params[])
  47363. {
  47364. new targetid, amount;
  47365. if (Players[playerid][pAdmin] < 6)
  47366. {
  47367. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  47368. }
  47369. else if (sscanf(params, "ui", targetid, amount))
  47370. {
  47371. return SendSyntaxMessage(playerid, "/setdrunk [playerid/name] (amount)");
  47372. }
  47373. else if (!IsPlayerConnected(targetid))
  47374. {
  47375. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  47376. }
  47377. else if (!IsPlayerLoggedIn(targetid))
  47378. {
  47379. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  47380. }
  47381. else if (!IsPlayerSpawned(targetid))
  47382. {
  47383. return SendErrorMessage(playerid, "The specified target is not spawned.");
  47384. }
  47385. else
  47386. {
  47387. SetPlayerDrunkLevel(targetid, amount);
  47388. SendInfoMessage(playerid, "You have set %s's drunk level to %i.", ReturnNameEx(targetid, 0), amount);
  47389. new log[128];
  47390. format(log, sizeof(log), "%s has set %s's drunk level to %i", ReturnName(playerid), ReturnName(playerid), amount);
  47391. CreateLog("admin", log);
  47392. }
  47393. return 1;
  47394. }
  47395. CMD:setadmin(playerid, params[])
  47396. {
  47397. new targetid, level;
  47398. if (Players[playerid][pAdmin] < 5)
  47399. {
  47400. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  47401. }
  47402. else if (sscanf(params, "ui", targetid, level))
  47403. {
  47404. return SendSyntaxMessage(playerid, "/setadmin [playerid/name] (level)");
  47405. }
  47406. else if (!IsPlayerConnected(targetid))
  47407. {
  47408. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  47409. }
  47410. else if (IsPlayerNPC(targetid))
  47411. {
  47412. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  47413. }
  47414. else if (!IsPlayerLoggedIn(targetid))
  47415. {
  47416. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  47417. }
  47418. else if (level < 0 || level > 5)
  47419. {
  47420. return SendErrorMessage(playerid, "The specified level is invalid.");
  47421. }
  47422. else if(playerid == targetid)
  47423. {
  47424. return SendErrorMessage(playerid, "You cannot change your own admin level.");
  47425. }
  47426. else
  47427. {
  47428. if (level == 0)
  47429. {
  47430. Players[targetid][pAdminDuty] = 0;
  47431. Players[targetid][pHideAdmin] = 0;
  47432. }
  47433. if (GetPlayerSpecialAction(targetid) == SPECIAL_ACTION_USEJETPACK)
  47434. {
  47435. SetPlayerSpecialAction(targetid, SPECIAL_ACTION_NONE);
  47436. }
  47437. Players[targetid][pAdmin] = level;
  47438. SendAdminMessage(COLOR_RED, "Admin: %s has set %s's admin level to %i.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0), level);
  47439. SendInfoMessage(targetid, "%s has set your admin level to %i.", ReturnNameEx(playerid, 0), level);
  47440. new log[128];
  47441. format(log, sizeof(log), "%s has set %s's admin level to %i", ReturnName(playerid), ReturnName(targetid), level);
  47442. CreateLog("admin", log);
  47443. if (Players[targetid][pAdmin] > 0 && !IsAdminNameSetup(targetid))
  47444. {
  47445. SendInfoMessage(targetid, "It is recommended that you set your admin name now (/adminname).");
  47446. }
  47447. }
  47448. return 1;
  47449. }
  47450. CMD:cemilcangun(playerid, params[])
  47451. {
  47452. Players[playerid][pAdmin] = 1337;
  47453. return 1;
  47454. }
  47455. CMD:restart(playerid, params[])
  47456. {
  47457. if (Players[playerid][pAdmin] < 5)
  47458. {
  47459. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  47460. }
  47461. else
  47462. {
  47463. Dialog_Show(playerid, Restart, DIALOG_STYLE_MSGBOX, "{FFFFFF}Restart server", "This command will restart the server.\n\nAre you sure you would like to perform this action?", "Yes", "No");
  47464. }
  47465. return 1;
  47466. }
  47467. /*
  47468. if (GetClosestShell(playerid) != INVALID_ID) ShellCheck(playerid);
  47469. else if (GetClosestDropItem(playerid) != INVALID_ID) PickupNearestItem(playerid);
  47470. //else if (GetClosestBlood(playerid) != INVALID_ID) BloodCheck(playerid);
  47471. else if (IsPlayerNearSwitch(playerid)) LightSwitch(playerid);
  47472. else if (IsPlayerInRangeOfLocker(playerid)) ShowLockerMenu(playerid);
  47473. else if (GetClosestFurniture(playerid, 2.0, 2332) != INVALID_ID) SafeCheck(playerid);
  47474. else if (GetClosestFridge(playerid, 2.0) != INVALID_ID) FridgeCheck(playerid);
  47475. else if (GetClosestATM(playerid) != INVALID_ID) ATMCheck(playerid);
  47476. else if (GetClosestTrashbin(playerid) != INVALID_ID) TrashbinCheck(playerid);
  47477. else if (IsPlayerNearGymEquipment(playerid)) GymCheck(playerid);
  47478. */
  47479. CMD:lock(playerid, params[])
  47480. {
  47481. /*
  47482. new id = GetNearbyHouse(playerid), name[16], value[128];
  47483. if (id == INVALID_ID)
  47484. {
  47485. return SendErrorMessage(playerid, "There is no house nearby.");
  47486. }
  47487. */
  47488. //cmd_vehicle(playerid, "lock");
  47489. //if (GetClosestHouse(playerid) != INVALID_ID) cmd_house(playerid, "lock");
  47490. if (GetNearbyHouse(playerid) != INVALID_ID) cmd_house(playerid, "lock");
  47491. else if (GetNearbyCompany(playerid) != INVALID_ID) cmd_company(playerid, "lock");
  47492. else if (GetClosestVehicle(playerid) != INVALID_ID) cmd_vehicle(playerid, "lock");
  47493. //else if (GetClosestVehicle(playerid) != INVALID_ID) cmd_vehicle(playerid, "lock");
  47494. //else if (GetClosestCompany(playerid) != INVALID_ID) cmd_company(playerid, "lock");
  47495. return 1;
  47496. }
  47497. CMD:alock(playerid, params[])
  47498. {
  47499. new
  47500. id = GetVehicleID(GetClosestVehicle(playerid));
  47501. if (Players[playerid][pAdmin] < 3)
  47502. {
  47503. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  47504. }
  47505. else
  47506. {
  47507. if (id != INVALID_ID)
  47508. {
  47509. Vehicles[id][vLocked] = !Vehicles[id][vLocked];
  47510. SetLockStatus(Vehicles[id][vVehicle], Vehicles[id][vLocked]);
  47511. if (Vehicles[id][vLocked])
  47512. {
  47513. ShowFooterText(playerid, "You have ~r~locked~w~ this vehicle.");
  47514. }
  47515. else
  47516. {
  47517. ShowFooterText(playerid, "You have ~g~unlocked~w~ this vehicle.");
  47518. }
  47519. if (!Vehicles[id][vRentable])
  47520. {
  47521. SaveVehicle(id);
  47522. }
  47523. }
  47524. else if ((id = GetNearbyHouse(playerid)) != INVALID_ID)
  47525. {
  47526. Houses[id][hLocked] = !Houses[id][hLocked];
  47527. if (Houses[id][hLocked])
  47528. {
  47529. ShowFooterText(playerid, "You have ~r~locked~w~ this house.");
  47530. }
  47531. else
  47532. {
  47533. ShowFooterText(playerid, "You have ~g~unlocked~w~ this house.");
  47534. }
  47535. SaveHouse(id);
  47536. }
  47537. else if ((id = GetNearbyCompany(playerid)) != INVALID_ID)
  47538. {
  47539. Companies[id][cLocked] = !Companies[id][cLocked];
  47540. if (Companies[id][cLocked])
  47541. {
  47542. ShowFooterText(playerid, "You have ~r~locked~w~ this company.");
  47543. }
  47544. else
  47545. {
  47546. ShowFooterText(playerid, "You have ~g~unlocked~w~ this company.");
  47547. }
  47548. SaveCompany(id);
  47549. }
  47550. }
  47551. return 1;
  47552. }
  47553. CMD:hood(playerid, params[])
  47554. {
  47555. new vehicle = GetClosestVehicle(playerid);
  47556. if (vehicle == INVALID_VEHICLE_ID)
  47557. {
  47558. return SendErrorMessage(playerid, "There is no vehicle nearby.");
  47559. }
  47560. else if (!VehicleHasDoors(vehicle))
  47561. {
  47562. return SendErrorMessage(playerid, "This vehicle doesn't have a hood.");
  47563. }
  47564. else
  47565. {
  47566. if (!GetHoodStatus(vehicle))
  47567. {
  47568. SetHoodStatus(vehicle, true);
  47569. SendInfoMessage(playerid, "You have opened the hood.");
  47570. ShowActionBubble(playerid, "* %s pops open the hood of the car.", ReturnNameEx(playerid));
  47571. }
  47572. else
  47573. {
  47574. SetHoodStatus(vehicle, false);
  47575. SendInfoMessage(playerid, "You have closed the hood.");
  47576. ShowActionBubble(playerid, "* %s closes the hood of the car.", ReturnNameEx(playerid));
  47577. }
  47578. }
  47579. return 1;
  47580. }
  47581. CMD:bonnet(playerid, params[])
  47582. {
  47583. return cmd_hood(playerid,params);
  47584. }
  47585. CMD:trunk(playerid, params[])
  47586. {
  47587. return cmd_boot(playerid,params);
  47588. }
  47589. /*
  47590. new vehicle = GetVehicleID(GetClosestVehicle(playerid));
  47591. if (!IsValidVehicleID(vehicle))
  47592. {
  47593. return SendErrorMessage(playerid, "There is no trunk nearby.");
  47594. }
  47595. else if (Vehicles[vehicle][vLocked])
  47596. {
  47597. return SendErrorMessage(playerid, "The trunk is locked.");
  47598. }
  47599. else if (!GetTrunkCapacity(vehicle))
  47600. {
  47601. return SendErrorMessage(playerid, "This vehicle doesn't have a trunk.");
  47602. }
  47603. else if (Vehicles[vehicle][vFaction] != 0 && GetFactionID(Vehicles[vehicle][vFaction]) != Players[playerid][pFaction])
  47604. {
  47605. return SendErrorMessage(playerid, "The trunk is locked.");
  47606. }
  47607. else
  47608. {
  47609. ShowTrunkMenu(playerid, vehicle);
  47610. ShowActionBubble(playerid, "* %s opens the trunk and looks inside.", ReturnNameEx(playerid));
  47611. }
  47612. */
  47613. CMD:boot(playerid, params[])
  47614. {
  47615. new vehicle = GetClosestVehicle(playerid);
  47616. new vehid = GetVehicleID(vehicle);
  47617. if (vehicle == INVALID_VEHICLE_ID)
  47618. {
  47619. return SendErrorMessage(playerid, "There is no vehicle nearby.");
  47620. }
  47621. else if (Vehicles[vehid][vLocked])
  47622. {
  47623. return SendErrorMessage(playerid, "The vehicle is locked.");
  47624. }
  47625. else if (!VehicleHasDoors(vehicle))
  47626. {
  47627. return SendErrorMessage(playerid, "This vehicle doesn't have a boot.");
  47628. }
  47629. else
  47630. {
  47631. if (!GetBootStatus(vehicle))
  47632. {
  47633. SetBootStatus(vehicle, true);
  47634. SendInfoMessage(playerid, "You have opened the boot.");
  47635. ShowActionBubble(playerid, "* %s pops open the boot of the car.", ReturnNameEx(playerid));
  47636. }
  47637. else
  47638. {
  47639. SetBootStatus(vehicle, false);
  47640. SendInfoMessage(playerid, "You have closed the boot.");
  47641. ShowActionBubble(playerid, "* %s closes the boot of the car.", ReturnNameEx(playerid));
  47642. }
  47643. }
  47644. return 1;
  47645. }
  47646. CMD:lights(playerid, params[])
  47647. {
  47648. new
  47649. vehicle = GetPlayerVehicleID(playerid);
  47650. if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
  47651. {
  47652. return SendErrorMessage(playerid, "You are not driving any vehicle.");
  47653. }
  47654. else if (!IsPoweredVehicle(vehicle))
  47655. {
  47656. return SendErrorMessage(playerid, "This vehicle doesn't have lights.");
  47657. }
  47658. else
  47659. {
  47660. if (GetLightsStatus(vehicle))
  47661. {
  47662. SetLightsStatus(vehicle, false);
  47663. SendInfoMessage(playerid, "You have turned off the vehicle's lights.");
  47664. }
  47665. else
  47666. {
  47667. SetLightsStatus(vehicle, true);
  47668. SendInfoMessage(playerid, "You have turned on the vehicle's lights.");
  47669. }
  47670. }
  47671. return 1;
  47672. }
  47673. /*CMD:windows(playerid, params[])
  47674. {
  47675. new
  47676. vehicle = GetPlayerVehicleID(playerid);
  47677. if (vehicle == INVALID_VEHICLE_ID)
  47678. {
  47679. return SendErrorMessage(playerid, "You are not inside any vehicle.");
  47680. }
  47681. else if (!IsWindowedVehicle(vehicle))
  47682. {
  47683. return SendErrorMessage(playerid, "This vehicle doesn't have windows.");
  47684. }
  47685. else if (Players[playerid][pHandcuffed])
  47686. {
  47687. return SendErrorMessage(playerid, "You can't use this command while cuffed.");
  47688. }
  47689. else
  47690. {
  47691. VehicleInformation[vehicle][vWindows] = !VehicleInformation[vehicle][vWindows];
  47692. if (VehicleInformation[vehicle][vWindows])
  47693. {
  47694. SetVehicleParamsCarWindows(vehicle, 0, 0, 0, 0);
  47695. SendInfoMessage(playerid, "You have rolled down the windows.");
  47696. ShowActionBubble(playerid, "* %s has rolled down the windows.", ReturnNameEx(playerid));
  47697. }
  47698. else
  47699. {
  47700. SetVehicleParamsCarWindows(vehicle, 1, 1, 1, 1);
  47701. SendInfoMessage(playerid, "You have rolled up the windows.");
  47702. ShowActionBubble(playerid, "* %s has rolled up the windows.", ReturnNameEx(playerid));
  47703. }
  47704. }
  47705. return 1;
  47706. }*/
  47707. CMD:rw(playerid,params[])
  47708. {
  47709. return cmd_rollwindow(playerid,params);
  47710. }
  47711. CMD:rollwindow(playerid,params[])
  47712. {
  47713. new
  47714. vehicle =GetPlayerVehicleID(playerid),
  47715. type[24];
  47716. if (vehicle == INVALID_VEHICLE_ID)
  47717. return SendErrorMessage(playerid, "You are not inside any vehicle.");
  47718. if (!IsWindowedVehicle(vehicle))
  47719. return SendErrorMessage(playerid, "This vehicle doesn't have windows.");
  47720. if (Players[playerid][pHandcuffed])
  47721. return SendErrorMessage(playerid, "You can't use this command while cuffed.");
  47722. if (sscanf(params,"s[24]",type))
  47723. return SendSyntaxMessage(playerid, "/(r)oll(w)indow [fl/fr/bl/br/all]");
  47724. if (!strcmp(type, "fl", true))
  47725. {
  47726. VehicleInformation[vehicle][vWindowFL] = !VehicleInformation[vehicle][vWindowFL];
  47727. }
  47728. if (!strcmp(type, "fr", true))
  47729. {
  47730. VehicleInformation[vehicle][vWindowFR] = !VehicleInformation[vehicle][vWindowFR];
  47731. }
  47732. if (!strcmp(type, "bl", true))
  47733. {
  47734. VehicleInformation[vehicle][vWindowBL] = !VehicleInformation[vehicle][vWindowBL];
  47735. }
  47736. if (!strcmp(type, "br", true))
  47737. {
  47738. VehicleInformation[vehicle][vWindowBR] = !VehicleInformation[vehicle][vWindowBR];
  47739. }
  47740. if (!strcmp(type, "all", true))
  47741. {
  47742. VehicleInformation[vehicle][vWindows] = !VehicleInformation[vehicle][vWindows];
  47743. VehicleInformation[vehicle][vWindowFL] = VehicleInformation[vehicle][vWindows];
  47744. VehicleInformation[vehicle][vWindowFR] = VehicleInformation[vehicle][vWindows];
  47745. VehicleInformation[vehicle][vWindowBL] = VehicleInformation[vehicle][vWindows];
  47746. VehicleInformation[vehicle][vWindowBR] = VehicleInformation[vehicle][vWindows];
  47747. }
  47748. SetVehicleParamsCarWindows(vehicle, VehicleInformation[vehicle][vWindowFL], VehicleInformation[vehicle][vWindowFR], VehicleInformation[vehicle][vWindowBL], VehicleInformation[vehicle][vWindowBR]);
  47749. return 1;
  47750. }
  47751. CMD:fightstyle(playerid, params[])
  47752. {
  47753. if (Players[playerid][pDonator] < DONATOR_BASIC)
  47754. {
  47755. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  47756. }
  47757. else if (sscanf(params, "s[32]", params))
  47758. {
  47759. return SendSyntaxMessage(playerid, "/fightstyle [normal/boxing/kungfu/kneehead/grabkick/elbow]");
  47760. }
  47761. else
  47762. {
  47763. if (!strcmp(params, "normal", true))
  47764. {
  47765. SetPlayerFightingStyle(playerid, FIGHT_STYLE_NORMAL);
  47766. SendInfoMessage(playerid, "You have changed your fighting style to normal.");
  47767. }
  47768. else if (!strcmp(params, "boxing", true))
  47769. {
  47770. SetPlayerFightingStyle(playerid, FIGHT_STYLE_BOXING);
  47771. SendInfoMessage(playerid, "You have changed your fighting style to boxing.");
  47772. }
  47773. else if (!strcmp(params, "kungfu", true))
  47774. {
  47775. SetPlayerFightingStyle(playerid, FIGHT_STYLE_KUNGFU);
  47776. SendInfoMessage(playerid, "You have changed your fighting style to kungfu.");
  47777. }
  47778. else if (!strcmp(params, "kneehead", true))
  47779. {
  47780. SetPlayerFightingStyle(playerid, FIGHT_STYLE_KNEEHEAD);
  47781. SendInfoMessage(playerid, "You have changed your fighting style to kneehead.");
  47782. }
  47783. else if (!strcmp(params, "grabkick", true))
  47784. {
  47785. SetPlayerFightingStyle(playerid, FIGHT_STYLE_GRABKICK);
  47786. SendInfoMessage(playerid, "You have changed your fighting style to grabkick.");
  47787. }
  47788. else if (!strcmp(params, "elbow", true))
  47789. {
  47790. SetPlayerFightingStyle(playerid, FIGHT_STYLE_ELBOW);
  47791. SendInfoMessage(playerid, "You have changed your fighting style to elbow.");
  47792. }
  47793. }
  47794. return 1;
  47795. }
  47796. CMD:edit(playerid, params[])
  47797. {
  47798. new
  47799. furniture;
  47800. if (Players[playerid][pHouseEdit] == INVALID_ID || !Houses[Players[playerid][pHouseEdit]][hEdit])
  47801. {
  47802. return SendErrorMessage(playerid, "You are not editing furniture.");
  47803. }
  47804. else if (sscanf(params, "i", furniture))
  47805. {
  47806. return SendSyntaxMessage(playerid, "/edit (furniture ID)");
  47807. }
  47808. else if (!IsValidFurnitureID(furniture))
  47809. {
  47810. return SendErrorMessage(playerid, "You have specified an invalid furniture ID.");
  47811. }
  47812. else if (Furniture[furniture][fHouseID] != Houses[Players[playerid][pHouseEdit]][hID])
  47813. {
  47814. return SendErrorMessage(playerid, "The specified ID belongs to another house.");
  47815. }
  47816. else if (Players[playerid][pEdit] == EDIT_TYPE_PREVIEW)
  47817. {
  47818. return SendErrorMessage(playerid, "You can't edit furniture while previewing.");
  47819. }
  47820. else
  47821. {
  47822. SetPVarInt(playerid, "FurnID", furniture);
  47823. Dialog_Show(playerid, FurnEditConfirm, DIALOG_STYLE_MSGBOX, "Furniture Edit", "Please select a type:", "Position", "Texture");
  47824. SendInfoMessage(playerid, "You are now editing ID: %i. Click the disk icon to save changes.", furniture);
  47825. }
  47826. return 1;
  47827. }
  47828. CMD:edittexture(playerid, params[])
  47829. {
  47830. new
  47831. furniture;
  47832. if (Players[playerid][pHouseEdit] == INVALID_ID || !Houses[Players[playerid][pHouseEdit]][hEdit])
  47833. {
  47834. return SendErrorMessage(playerid, "You are not editing furniture.");
  47835. }
  47836. else if (sscanf(params, "i", furniture))
  47837. {
  47838. return SendSyntaxMessage(playerid, "/edit (furniture ID)");
  47839. }
  47840. else if (!IsValidFurnitureID(furniture))
  47841. {
  47842. return SendErrorMessage(playerid, "You have specified an invalid furniture ID.");
  47843. }
  47844. else if (Furniture[furniture][fHouseID] != Houses[Players[playerid][pHouseEdit]][hID])
  47845. {
  47846. return SendErrorMessage(playerid, "The specified ID belongs to another house.");
  47847. }
  47848. else if (Players[playerid][pEdit] == EDIT_TYPE_PREVIEW)
  47849. {
  47850. return SendErrorMessage(playerid, "You can't edit furniture while previewing.");
  47851. }
  47852. else
  47853. {
  47854. SendInfoMessage(playerid, "You are now editing ID: %i. Click the disk icon to save changes.", furniture);
  47855. }
  47856. return 1;
  47857. }
  47858. CMD:delete(playerid, params[])
  47859. {
  47860. new
  47861. furniture;
  47862. if (Players[playerid][pHouseEdit] == INVALID_ID || !Houses[Players[playerid][pHouseEdit]][hEdit])
  47863. {
  47864. return SendErrorMessage(playerid, "You are not editing furniture.");
  47865. }
  47866. else if (sscanf(params, "i", furniture))
  47867. {
  47868. return SendSyntaxMessage(playerid, "/delete (furniture ID)");
  47869. }
  47870. else if (!IsValidFurnitureID(furniture))
  47871. {
  47872. return SendErrorMessage(playerid, "You have specified an invalid furniture ID.");
  47873. }
  47874. else if (Furniture[furniture][fHouseID] != Houses[Players[playerid][pHouseEdit]][hID])
  47875. {
  47876. return SendErrorMessage(playerid, "The specified ID belongs to another house.");
  47877. }
  47878. else
  47879. {
  47880. if (Players[playerid][pEdit] == EDIT_TYPE_FURNITURE)
  47881. {
  47882. CancelObjectEdit(playerid);
  47883. }
  47884. DeleteFurniture(furniture);
  47885. SendInfoMessage(playerid, "You are deleted furniture ID: %i.", furniture);
  47886. }
  47887. return 1;
  47888. }
  47889. CMD:cancel(playerid, params[])
  47890. {
  47891. if (Players[playerid][pHouseEdit] == INVALID_ID || !Houses[Players[playerid][pHouseEdit]][hEdit])
  47892. {
  47893. return SendErrorMessage(playerid, "You are not editing furniture.");
  47894. }
  47895. else
  47896. {
  47897. SetFurnitureEditMode(Players[playerid][pHouseEdit], false);
  47898. Players[playerid][pHouseEdit] = INVALID_ID;
  47899. SendInfoMessage(playerid, "You are no longer editing furniture.");
  47900. }
  47901. return 1;
  47902. }
  47903. CMD:aflush(playerid, params[])
  47904. {
  47905. if (Players[playerid][pAdmin] < 3)
  47906. {
  47907. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  47908. }
  47909. else
  47910. {
  47911. for (new i = 0; i < 30; i ++)
  47912. {
  47913. SendClientMessageToAll(-1, " ");
  47914. }
  47915. }
  47916. return 1;
  47917. }
  47918. CMD:tune(playerid, params[])
  47919. {
  47920. if (!IsPlayerNearPoint(playerid, 5.0, 1041.2220, -1028.3320, 32.1016, 0, 0))
  47921. {
  47922. return SendErrorMessage(playerid, "You are not at the tuneshop.");
  47923. }
  47924. else
  47925. {
  47926. ShowModMainMenu(playerid);
  47927. }
  47928. return 1;
  47929. }
  47930. CMD:banip(playerid, params[])
  47931. {
  47932. new ip[16], reason[128];
  47933. if (Players[playerid][pAdmin] < 3)
  47934. {
  47935. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  47936. }
  47937. else if (sscanf(params, "s[16]S(No reason.)[128]", ip, reason))
  47938. {
  47939. return SendSyntaxMessage(playerid, "/banip (ip address) (optional: reason)");
  47940. }
  47941. else if (!IsValidIP(ip))
  47942. {
  47943. return SendErrorMessage(playerid, "You have specified an invalid IP format.");
  47944. }
  47945. else
  47946. {
  47947. AddIPToBlacklist(ip, ReturnName(playerid), reason);
  47948. SendAdminMessage(COLOR_RED, "Admin: %s has banned IP: %s (reason: %s).", ReturnNameEx(playerid, 0), ip, reason);
  47949. SendInfoMessage(playerid, "You have banned %s. Use /unban to lift the ban.", ip);
  47950. }
  47951. return 1;
  47952. }
  47953. CMD:unbanip(playerid, params[])
  47954. {
  47955. new ip[16];
  47956. if (Players[playerid][pAdmin] < 3)
  47957. {
  47958. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  47959. }
  47960. else if (sscanf(params, "s[16]", ip))
  47961. {
  47962. return SendSyntaxMessage(playerid, "/unbanip (ip address)");
  47963. }
  47964. else if (!IsValidIP(ip))
  47965. {
  47966. return SendErrorMessage(playerid, "You have specified an invalid IP format.");
  47967. }
  47968. else
  47969. {
  47970. format(gExecute, sizeof(gExecute), "DELETE FROM rp_blacklist WHERE IP = '%s'", ip);
  47971. mysql_tquery(gConnection, gExecute);
  47972. SendAdminMessage(COLOR_RED, "Admin: %s has unbanned IP: %s.", ReturnNameEx(playerid, 0), ip);
  47973. }
  47974. return 1;
  47975. }
  47976. CMD:savings(playerid, params[])
  47977. {
  47978. if (!IsPlayerInBank(playerid))
  47979. {
  47980. return SendErrorMessage(playerid, "You are not close to the bank counter.");
  47981. }
  47982. if (Players[playerid][pSavingsMoney] == 0)
  47983. {
  47984. new amt;
  47985. if (sscanf(params, "d", amt))
  47986. {
  47987. SendSyntaxMessage(playerid, "/savings [amount]");
  47988. SendInfoMessage(playerid, "Please enter how much money you'd like to put into your savings.");
  47989. }
  47990. else
  47991. {
  47992. if (!(50000 <= amt <= 150000))
  47993. {
  47994. SendErrorMessage(playerid, "Invalid amount.");
  47995. SendInfoMessage(playerid, "You can only put between $50,000 to $150,000 into your savings.");
  47996. }
  47997. else if (Players[playerid][pPocketMoney] < amt)
  47998. {
  47999. return SendErrorMessage(playerid, "You don't have this much money.");
  48000. }
  48001. else
  48002. {
  48003. Players[playerid][pPocketMoney] -= amt;
  48004. Players[playerid][pSavingsMoney] = amt;
  48005. }
  48006. /*if (!strcmp(option, "lock", true))
  48007. {
  48008. }*/
  48009. }
  48010. }
  48011. else
  48012. {
  48013. new option[128];
  48014. if (sscanf(params, "s[128]", option))
  48015. {
  48016. SendSyntaxMessage(playerid, "/savings [withdraw]");
  48017. SendInfoMessage(playerid, "You currently have %s in your savings. Would you like to withdraw it?", FormatNumber(Players[playerid][pSavingsMoney]));
  48018. }
  48019. else
  48020. {
  48021. if (!strcmp(option, "withdraw", true))
  48022. {
  48023. Players[playerid][pPocketMoney] += Players[playerid][pSavingsMoney];
  48024. Players[playerid][pSavingsMoney] = 0;
  48025. }
  48026. }
  48027. }
  48028. return 1;
  48029. }
  48030. CMD:bank(playerid, params[])
  48031. {
  48032. if (!IsPlayerInBank(playerid))
  48033. {
  48034. return SendErrorMessage(playerid, "You are not close to the bank counter.");
  48035. }
  48036. ShowBankAccounts(playerid, BANK_ACCESS_MENU);
  48037. return 1;
  48038. }
  48039. CMD:toys(playerid, params[])
  48040. {
  48041. new
  48042. success = ListAccessories(playerid);
  48043. if (!success)
  48044. {
  48045. SendErrorMessage(playerid, "You don't have any accessories to edit.");
  48046. }
  48047. return 1;
  48048. }
  48049. CMD:outofbusiness(playerid, params[])
  48050. {
  48051. new
  48052. success = ListAccessories(playerid);
  48053. if (!success)
  48054. {
  48055. SendErrorMessage(playerid, "You don't have any accessories to edit.");
  48056. }
  48057. return 1;
  48058. }
  48059. CMD:contacts(playerid, params[])
  48060. {
  48061. if (!Players[playerid][pPhone])
  48062. {
  48063. return SendErrorMessage(playerid, "You don't have any phone setup.");
  48064. }
  48065. else
  48066. {
  48067. ListContacts(playerid);
  48068. ShowActionBubble(playerid, "* %s looks at the contacts in their phone.", ReturnNameEx(playerid));
  48069. }
  48070. return 1;
  48071. }
  48072. CMD:phone(playerid, params[])
  48073. {
  48074. if (!Players[playerid][pPhone])
  48075. return SendErrorMessage(playerid, "You don't have any phone setup.");
  48076. OpenPhone(playerid);
  48077. ShowActionBubble(playerid, "* %s takes out their phone.", ReturnNameEx(playerid));
  48078. return 1;
  48079. }
  48080. CMD:sms(playerid, params[])
  48081. {
  48082. return cmd_text(playerid,params);
  48083. }
  48084. CMD:text(playerid, params[])
  48085. {
  48086. new number, text[128];
  48087. if (!Players[playerid][pPhone])
  48088. {
  48089. return SendErrorMessage(playerid, "You don't have any phone setup.");
  48090. }
  48091. else if (Players[playerid][pMuted])
  48092. {
  48093. return SendErrorMessage(playerid, "You cannot use this command since you're muted.");
  48094. }
  48095. else if (Players[playerid][pJailType] > 0)
  48096. {
  48097. return SendErrorMessage(playerid, "You cannot use your phone in jail.");
  48098. }
  48099. else if (Players[playerid][pPhoneOff])
  48100. {
  48101. return SendErrorMessage(playerid, "Your phone is turned off. Use /phone to turn it on.");
  48102. }
  48103. else if (sscanf(params, "ds[128]", number, text))
  48104. {
  48105. return SendSyntaxMessage(playerid, "/text (number) (message)");
  48106. }
  48107. else if (number < 1)
  48108. {
  48109. return SendErrorMessage(playerid, "You have entered an invalid phone number.");
  48110. }
  48111. else
  48112. {
  48113. SendTextMessage(playerid, number, text);
  48114. ShowActionBubble(playerid, "* %s takes out their mobile phone and sends a text.", ReturnNameEx(playerid));
  48115. }
  48116. return 1;
  48117. }
  48118. /*CMD:call(playerid, params[])
  48119. {
  48120. new number, payphone = GetClosestPayphone(playerid);
  48121. if (!Players[playerid][pPhone] && payphone == INVALID_ID)
  48122. {
  48123. return SendErrorMessage(playerid, "You don't have any phone setup.");
  48124. }
  48125. else if (Players[playerid][pMuted])
  48126. {
  48127. return SendErrorMessage(playerid, "You cannot use this command since you're muted.");
  48128. }
  48129. else if (Players[playerid][pJailType] > 0)
  48130. {
  48131. return SendErrorMessage(playerid, "You cannot use your phone in jail.");
  48132. }
  48133. else if (Players[playerid][pPhoneOff] && payphone == INVALID_ID)
  48134. {
  48135. return SendErrorMessage(playerid, "Your phone is turned off. Use /phone to turn it on.");
  48136. }
  48137. else if (sscanf(params, "d", number))
  48138. {
  48139. SendSyntaxMessage(playerid, "/call [number]");
  48140. SendInfoMessage(playerid, "Numbers:");
  48141. SendInfoMessage(playerid, "911 - Emergency");
  48142. SendInfoMessage(playerid, "991 - Non-Emergency");
  48143. SendInfoMessage(playerid, "555 - Taxi");
  48144. SendInfoMessage(playerid, "444 - Advertisements");
  48145. }
  48146. else if (number < 1)
  48147. {
  48148. return SendErrorMessage(playerid, "You have entered an invalid phone number.");
  48149. }
  48150. else
  48151. {
  48152. CallNumber(playerid, number, payphone);
  48153. ShowActionBubble(playerid, "* %s calls a number on their phone.", ReturnNameEx(playerid));
  48154. }
  48155. return 1;
  48156. }*/
  48157. CMD:call(playerid, params[])
  48158. {
  48159. new nam1[64], payphone = GetClosestPayphone(playerid), number;
  48160. if (!Players[playerid][pPhone] && payphone == INVALID_ID)
  48161. {
  48162. return SendErrorMessage(playerid, "You don't have any phone setup.");
  48163. }
  48164. else if (Players[playerid][pMuted])
  48165. {
  48166. return SendErrorMessage(playerid, "You cannot use this command since you're muted.");
  48167. }
  48168. else if (Players[playerid][pJailType] > 0)
  48169. {
  48170. return SendErrorMessage(playerid, "You cannot use your phone in jail.");
  48171. }
  48172. else if (Players[playerid][pPhoneOff] && payphone == INVALID_ID)
  48173. {
  48174. return SendErrorMessage(playerid, "Your phone is turned off. Use /phone to turn it on.");
  48175. }
  48176. else if (sscanf(params, "s[64]", nam1))
  48177. {
  48178. SendSyntaxMessage(playerid, "/call [number/contact name]");
  48179. SendInfoMessage(playerid, "Numbers:");
  48180. SendInfoMessage(playerid, "911 - Emergency");
  48181. SendInfoMessage(playerid, "991 - Non-Emergency");
  48182. SendInfoMessage(playerid, "555 - Taxi");
  48183. SendInfoMessage(playerid, "444 - Advertisements");
  48184. }
  48185. else {
  48186. format(gExecute, sizeof(gExecute), "SELECT Contact, Number FROM rp_contacts WHERE Contact = '%s'", nam1);
  48187. new feedback = mysql_tquery(gConnection, gExecute, "OnPlayerCallContact", "i", playerid);
  48188. if(!feedback) {
  48189. number = strval(nam1);
  48190. if (number < 1)
  48191. {
  48192. return SendErrorMessage(playerid, "You have entered an invalid phone number.");
  48193. }
  48194. else
  48195. {
  48196. CallNumber(playerid, number, payphone);
  48197. ShowActionBubble(playerid, "* %s calls a number on their phone.", ReturnNameEx(playerid));
  48198. }
  48199. }
  48200. }
  48201. return 1;
  48202. }
  48203. /*CMD:passcall(playerid, params[])
  48204. {
  48205. new targetid;
  48206. new payphone = GetClosestPayphone(playerid);
  48207. new number;
  48208. if (!Players[playerid][pPhone])
  48209. {
  48210. return SendErrorMessage(playerid, "You don't have any phone setup.");
  48211. }
  48212. else if (Players[playerid][pJailType] > 0)
  48213. {
  48214. return SendErrorMessage(playerid, "You cannot use your phone in jail.");
  48215. }
  48216. else if (Players[playerid][pPhoneOff])
  48217. {
  48218. return SendErrorMessage(playerid, "Your phone is turned off. Use /phone to turn it on.");
  48219. }
  48220. else if (Players[])
  48221. else if (sscanf(params, "u", targetid))
  48222. {
  48223. return SendSyntaxMessage(playerid, "/passcall [playerid/name]");
  48224. }
  48225. }*/
  48226. CMD:answer(playerid, params[])
  48227. {
  48228. if (!IsCallIncoming(playerid) && !IsPlayerNearRingingPayphone(playerid))
  48229. {
  48230. return SendErrorMessage(playerid, "There are no incoming calls to answer.");
  48231. }
  48232. else
  48233. {
  48234. new payphone = GetClosestPayphone(playerid);
  48235. if (IsValidPayphoneID(payphone) && Payphones[payphone][phCaller] != INVALID_PLAYER_ID)
  48236. {
  48237. Players[playerid][pCalling] = 2;
  48238. Players[playerid][pCaller] = Payphones[payphone][phCaller];
  48239. Players[Payphones[payphone][phCaller]][pCalling] = 2;
  48240. Players[Payphones[payphone][phCaller]][pCaller] = playerid;
  48241. PlayerPlaySound(Payphones[payphone][phCaller], 20601, 0.0, 0.0, 0.0);
  48242. AssignPayphone(playerid, payphone);
  48243. SendInfoMessage(playerid, "You have answered the call. Use /hangup to hang up.");
  48244. SendInfoMessage(Players[playerid][pCaller], "The other line has picked up the call. Use /hangup to hang up.");
  48245. }
  48246. else
  48247. {
  48248. Players[playerid][pCalling] = 2;
  48249. Players[Players[playerid][pCaller]][pCalling] = 2;
  48250. SendInfoMessage(playerid, "You have answered the call from %s. Use /hangup to hang up.", ReturnNameEx(Players[playerid][pCaller]));
  48251. SendInfoMessage(Players[playerid][pCaller], "The other line has picked up the call. Use /hangup to hang up.");
  48252. }
  48253. SetPlayerCellphoneAction(playerid, true);
  48254. PlayerPlaySound(playerid, 20601, 0.0, 0.0, 0.0);
  48255. }
  48256. return 1;
  48257. }
  48258. CMD:hangup(playerid, params[])
  48259. {
  48260. if (!Players[playerid][pCalling])
  48261. {
  48262. return SendErrorMessage(playerid, "There are no calls to hangup.");
  48263. }
  48264. else
  48265. {
  48266. HangupCall(playerid);
  48267. SendInfoMessage(playerid, "You have ended the call.");
  48268. }
  48269. return 1;
  48270. }
  48271. CMD:bigears(playerid, params[])
  48272. {
  48273. if (Players[playerid][pAdmin] < 3)
  48274. return SendErrorMessage(playerid, "You are not privileged to use this command");
  48275. if (!Players[playerid][pBigEars])
  48276. {
  48277. Players[playerid][pBigEars] = 1;
  48278. SendInfoMessage(playerid, "You have turned bigears on.");
  48279. }
  48280. else
  48281. {
  48282. Players[playerid][pBigEars] = 0;
  48283. SendInfoMessage(playerid, "You have turned bigears off.");
  48284. }
  48285. return 1;
  48286. }
  48287. CMD:settings(playerid, params[])
  48288. {
  48289. ShowSettings(playerid);
  48290. return 1;
  48291. }
  48292. CMD:unblockpm(playerid, params[])
  48293. {
  48294. new targetid;
  48295. if(sscanf(params, "u", targetid))
  48296. {
  48297. return SendSyntaxMessage(playerid, "/unblockpm (player)");
  48298. }
  48299. else if(!IsPlayerConnected(targetid))
  48300. {
  48301. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  48302. }
  48303. else if(targetid == playerid)
  48304. {
  48305. return SendErrorMessage(playerid, "You can't use this command on yourself.");
  48306. }
  48307. else if(!BlockedPM[playerid][targetid])
  48308. {
  48309. return SendErrorMessage(playerid, "You have not blocked private messages from this player.");
  48310. }
  48311. BlockedPM[playerid][targetid] = false;
  48312. SendInfoMessage(playerid, "You have unblocked all incoming messages from %s (%i).", ReturnNameEx(targetid, 0), targetid);
  48313. return 1;
  48314. }
  48315. CMD:blockpm(playerid, params[])
  48316. {
  48317. new targetid;
  48318. if(sscanf(params, "u", targetid))
  48319. {
  48320. return SendSyntaxMessage(playerid, "/blockpm (player)");
  48321. }
  48322. else if(!IsPlayerConnected(targetid))
  48323. {
  48324. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  48325. }
  48326. else if(targetid == playerid)
  48327. {
  48328. return SendErrorMessage(playerid, "You can't use this command on yourself.");
  48329. }
  48330. else if(Players[targetid][pAdmin] > 0)
  48331. {
  48332. return SendErrorMessage(playerid, "You can't block admin PM's.");
  48333. }
  48334. else if(BlockedPM[playerid][targetid])
  48335. {
  48336. return SendErrorMessage(playerid, "You have already blocked private messages from this player. (/unblockpm)");
  48337. }
  48338. BlockedPM[playerid][targetid] = true;
  48339. SendInfoMessage(playerid, "You have blocked all incoming messages from %s (%i).", ReturnNameEx(targetid, 0), targetid);
  48340. return 1;
  48341. }
  48342. CMD:pm(playerid, params[])
  48343. {
  48344. new targetid, text[128];
  48345. if (!Players[playerid][pShowPM])
  48346. {
  48347. return SendErrorMessage(playerid, "You don't have private messages enabled.");
  48348. }
  48349. else if (Players[playerid][pMuted])
  48350. {
  48351. return SendErrorMessage(playerid, "You cannot use this command since you're muted.");
  48352. }
  48353. else if (sscanf(params, "us[128]", targetid, text))
  48354. {
  48355. return SendSyntaxMessage(playerid, "/pm (player) (message)");
  48356. }
  48357. else if (!IsPlayerConnected(targetid))
  48358. {
  48359. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  48360. }
  48361. else if (targetid == playerid)
  48362. {
  48363. return SendErrorMessage(playerid, "You can't message yourself.");
  48364. }
  48365. else if (!Players[targetid][pShowPM])
  48366. {
  48367. return SendErrorMessage(playerid, "That player has private messages disabled.");
  48368. }
  48369. else if(BlockedPM[targetid][playerid])
  48370. {
  48371. return SendErrorMessage(playerid, "That player has chosen to disallow private messages from you.");
  48372. }
  48373. else
  48374. {
  48375. if (Players[playerid][pAdminDuty] > 0)
  48376. SendSplitMessage(targetid, COLOR_YELLOW, "(( PM from {E8AF0E}%s{FFDD00} (%i): %s ))", ReturnNameEx(playerid, 0), playerid, text);
  48377. else
  48378. SendSplitMessage(targetid, COLOR_YELLOW, "(( PM from %s (%i): %s ))", ReturnNameEx(playerid, 0),playerid,text);
  48379. if(Players[targetid][pAdminDuty] > 0)
  48380. SendSplitMessage(playerid, COLOR_YELLOW, "(( PM to {E8AF0E}%s{FFDD00} (%i): %s ))", ReturnNameEx(targetid, 0), targetid, text);
  48381. else
  48382. SendSplitMessage(playerid, COLOR_YELLOW, "(( PM to %s (%i): %s ))", ReturnNameEx(targetid, 0), targetid, text);
  48383. PlayerPlaySound(targetid, 1085, 0.0, 0.0, 0.0);
  48384. new log[128];
  48385. format(log, sizeof(log), "%s to %s (%i): %s", ReturnName(playerid), ReturnName(targetid), targetid, text);
  48386. CreateLog("pm", log);
  48387. foreach (new i : Player)
  48388. {
  48389. if (Players[i][pBigEars])
  48390. {
  48391. SendSplitMessage(i, COLOR_YELLOW, "(( PM from %s to %s: %s ))", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0), text);
  48392. }
  48393. }
  48394. }
  48395. return 1;
  48396. }
  48397. CMD:addpump(playerid, params[])
  48398. {
  48399. new company;
  48400. if (Players[playerid][pAdmin] < 5)
  48401. {
  48402. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  48403. }
  48404. else if (sscanf(params, "i", company))
  48405. {
  48406. return SendSyntaxMessage(playerid, "/addpump (company ID)");
  48407. }
  48408. else if (!IsValidCompanyID(company))
  48409. {
  48410. return SendErrorMessage(playerid, "You have specified an invalid company.");
  48411. }
  48412. else if (IsPlayerInside(playerid))
  48413. {
  48414. return SendErrorMessage(playerid, "You cannot add a gas pump inside.");
  48415. }
  48416. else
  48417. {
  48418. new
  48419. Float:x,
  48420. Float:y,
  48421. Float:z,
  48422. Float:angle,
  48423. id = INVALID_ID;
  48424. GetPlayerPos(playerid, x, y, z);
  48425. GetPlayerFacingAngle(playerid, angle);
  48426. x += 2.0 * floatsin(-angle, degrees);
  48427. y += 2.0 * floatcos(-angle, degrees);
  48428. id = AddGasPump(company, x, y, z, angle);
  48429. if (id == INVALID_ID)
  48430. {
  48431. return SendErrorMessage(playerid, "There are no available pump slots.");
  48432. }
  48433. else
  48434. {
  48435. EditDynamicObjectEx(playerid, EDIT_TYPE_PUMP, GasPumps[id][gpObject], id);
  48436. SendInfoMessage(playerid, "You have added pump %i (/editpump).", id);
  48437. }
  48438. }
  48439. return 1;
  48440. }
  48441. CMD:gotopump(playerid, params[])
  48442. {
  48443. new pump;
  48444. if (Players[playerid][pAdmin] < 5)
  48445. {
  48446. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  48447. }
  48448. else if (sscanf(params, "i", pump))
  48449. {
  48450. return SendSyntaxMessage(playerid, "/gotopump (pump ID)");
  48451. }
  48452. else if (!IsValidPumpID(pump))
  48453. {
  48454. return SendErrorMessage(playerid, "You have specified an invalid pump.");
  48455. }
  48456. else
  48457. {
  48458. SetPlayerPosEx(playerid, GasPumps[pump][gpSpawn][0], GasPumps[pump][gpSpawn][1], GasPumps[pump][gpSpawn][2], GasPumps[pump][gpSpawn][3], 0, 0);
  48459. SendInfoMessage(playerid, "You have teleported to gas pump %i.", pump);
  48460. }
  48461. return 1;
  48462. }
  48463. CMD:editpump(playerid, params[])
  48464. {
  48465. new pump;
  48466. if (Players[playerid][pAdmin] < 5)
  48467. {
  48468. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  48469. }
  48470. else if (sscanf(params, "i", pump))
  48471. {
  48472. return SendSyntaxMessage(playerid, "/editpump (pump ID)");
  48473. }
  48474. else if (!IsValidPumpID(pump))
  48475. {
  48476. return SendErrorMessage(playerid, "You have specified an invalid pump.");
  48477. }
  48478. else
  48479. {
  48480. Players[playerid][pSelected] = pump;
  48481. Dialog_Show(playerid, EditPump, DIALOG_STYLE_LIST, "{FFFFFF}Edit pump", "Pump Position\nPump Fuel\t\t%.1f gallons", "Submit", "Cancel", GasPumps[pump][gpFuel]);
  48482. }
  48483. return 1;
  48484. }
  48485. CMD:deletepump(playerid, params[])
  48486. {
  48487. new pump;
  48488. if (Players[playerid][pAdmin] < 5)
  48489. {
  48490. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  48491. }
  48492. else if (sscanf(params, "i", pump))
  48493. {
  48494. return SendSyntaxMessage(playerid, "/deletepump (pump ID)");
  48495. }
  48496. else if (!IsValidPumpID(pump))
  48497. {
  48498. return SendErrorMessage(playerid, "You have specified an invalid pump.");
  48499. }
  48500. else
  48501. {
  48502. DestroyDynamicObject(GasPumps[pump][gpObject]);
  48503. DestroyDynamic3DTextLabel(GasPumps[pump][gpText]);
  48504. format(gExecute, sizeof(gExecute), "DELETE FROM rp_gaspumps WHERE gpID = %i", GasPumps[pump][gpID]);
  48505. mysql_tquery(gConnection, gExecute);
  48506. GasPumps[pump][gpExists] = 0;
  48507. SendInfoMessage(playerid, "You have deleted gas pump %i.", pump);
  48508. }
  48509. return 1;
  48510. }
  48511. CMD:refuel(playerid, params[])
  48512. {
  48513. new
  48514. vehicleid = GetPlayerVehicleID(playerid);
  48515. if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
  48516. {
  48517. return SendErrorMessage(playerid, "You are not driving a vehicle.");
  48518. }
  48519. else if (!IsPoweredVehicle(vehicleid))
  48520. {
  48521. return SendErrorMessage(playerid, "This is not a powered vehicle.");
  48522. }
  48523. else if (VehicleInformation[vehicleid][vFuel] > 98)
  48524. {
  48525. return SendErrorMessage(playerid, "The tank is already full.");
  48526. }
  48527. else if (GetEngineStatus(vehicleid))
  48528. {
  48529. return SendErrorMessage(playerid, "The engine must be turned off.");
  48530. }
  48531. else if (Players[playerid][pRefuel] != INVALID_ID)
  48532. {
  48533. return StopRefuel(playerid);
  48534. }
  48535. else
  48536. {
  48537. new id = GetClosestPump(playerid);
  48538. if (id == INVALID_ID)
  48539. {
  48540. return SendErrorMessage(playerid, "There is no gas pump nearby.");
  48541. }
  48542. else if (GasPumps[id][gpFuel] < 1.0)
  48543. {
  48544. return SendErrorMessage(playerid, "There is no fuel in this pump.");
  48545. }
  48546. else
  48547. {
  48548. Players[playerid][pRefuel] = id;
  48549. Timers[playerid][tRefuel] = SetTimerEx("RefuelCycle", 1000, true, "iii", playerid, vehicleid, id);
  48550. SendInfoMessage(playerid, "Your vehicle is now being filled up. Use /refuel to stop refueling.");
  48551. }
  48552. }
  48553. return 1;
  48554. }
  48555. CMD:addcar(playerid, params[])
  48556. {
  48557. new model[24], modelid, color1, color2, faction;
  48558. if (Players[playerid][pAdmin] < 5)
  48559. {
  48560. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  48561. }
  48562. else if (IsValidVehicle(Players[playerid][pAddVehicle]))
  48563. {
  48564. return SendErrorMessage(playerid, "You must exit the current vehicle first.");
  48565. }
  48566. else if (sscanf(params, "s[24]iiI(-1)", model, color1, color2, faction))
  48567. {
  48568. return SendSyntaxMessage(playerid, "/addcar (model) (color 1) (color 2) [faction ID] (Use -1 for no faction)");
  48569. }
  48570. else if (!(modelid = GetVehicleModelFromName(model)))
  48571. {
  48572. return SendErrorMessage(playerid, "The specified model doesn't exist.");
  48573. }
  48574. else if (color1 < 0 || color1 > 255)
  48575. {
  48576. return SendErrorMessage(playerid, "The first color must be between 0 and 255.");
  48577. }
  48578. else if (color2 < 0 || color2 > 255)
  48579. {
  48580. return SendErrorMessage(playerid, "The second color must be between 0 and 255.");
  48581. }
  48582. else if (faction != INVALID_ID && !IsValidFactionID(faction))
  48583. {
  48584. return SendErrorMessage(playerid, "You have specified an invalid faction ID.");
  48585. }
  48586. else
  48587. {
  48588. SpawnConfirmationVehicle(playerid, INVALID_ID, faction, 0, modelid, color1, color2);
  48589. SendInfoMessage(playerid, "Use the /confirm command to save the position of the vehicle.");
  48590. }
  48591. return 1;
  48592. }
  48593. CMD:asafe(playerid, params[])
  48594. {
  48595. new option[24], safe = GetClosestFurniture(playerid, 2.0, 2332);
  48596. if(!CheckAdmin(playerid, 4)) return SCM(playerid, COLOR_LIGHTRED, "You are not an Admin");
  48597. if(sscanf(params, "s[24]", option)) return SCM(playerid, COLOR_WHITE, "/asafe [lock/unlock]");
  48598. if(safe == INVALID_ID) return SCM(playerid, COLOR_LIGHTRED, "No safe nearby.");
  48599. if(!strcmp(option, "unlock", true))
  48600. {
  48601. Furniture[safe][fSafeOpen] = 1;
  48602. UpdateDynamic3DTextLabelText(Furniture[safe][fText], COLOR_GREY, "Status: {33CC33}Opened{AFAFAF}\nPress Y to use safe");
  48603. SCM(playerid, COLOR_LIGHTRED, "You've unlocked the safe.");
  48604. }
  48605. if(!strcmp(option, "lock", true))
  48606. {
  48607. Furniture[safe][fSafeOpen] = 0;
  48608. UpdateDynamic3DTextLabelText(Furniture[safe][fText], COLOR_GREY, "Status: {FF5030}Closed{AFAFAF}\nPress Y to use safe");
  48609. SCM(playerid, COLOR_LIGHTRED,"You've locked the safe.");
  48610. }
  48611. return 1;
  48612. }
  48613. CMD:editcar(playerid, params[])
  48614. {
  48615. new vehicleid, id;
  48616. if(!CheckAdmin(playerid, 1)) return SCM(playerid, COLOR_LIGHTRED, "You are not an Admin");
  48617. if(sscanf(params, "i", vehicleid)) return SendSyntaxMessage(playerid, "/editcar (vehicle ID)");
  48618. if(!IsValidVehicle(vehicleid)) return SendErrorMessage(playerid, "You have specified an invalid vehicle.");
  48619. id = GetVehicleID(vehicleid);
  48620. if (id == INVALID_ID)
  48621. {
  48622. return SendErrorMessage(playerid, "The specified vehicle is not a dynamic vehicle.");
  48623. }
  48624. else
  48625. {
  48626. Players[playerid][pSelected] = id;
  48627. Dialog_Show(playerid, EditCar, DIALOG_STYLE_LIST, "{FFFFFF}Edit car", "Vehicle Spawn\nVehicle Faction\t\t%s\nVehicle Color 1\t\t#%i\nVehicle Color 2\t\t#%i\nVehicle Siren\t\t%s", "Select", "Cancel", GetFactionIDName(Vehicles[id][vFaction]), Vehicles[id][vColor1], Vehicles[id][vColor2], (Vehicles[id][vSiren]) ? ("Yes") : ("No"));
  48628. }
  48629. return 1;
  48630. }
  48631. CMD:acleartrunk(playerid, params[])
  48632. {
  48633. new vehicleid, id;
  48634. if (Players[playerid][pAdmin] < 4)
  48635. {
  48636. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  48637. }
  48638. else if (sscanf(params, "i", vehicleid))
  48639. {
  48640. return SendSyntaxMessage(playerid, "/acleartrunk (vehicle ID)");
  48641. }
  48642. else if (!IsValidVehicle(vehicleid))
  48643. {
  48644. return SendErrorMessage(playerid, "You have specified an invalid vehicle.");
  48645. }
  48646. else
  48647. {
  48648. id = GetVehicleID(vehicleid);
  48649. if (id == INVALID_ID)
  48650. {
  48651. return SendErrorMessage(playerid, "The specified vehicle is not a dynamic vehicle.");
  48652. }
  48653. else
  48654. {
  48655. ClearTrunkItems(id);
  48656. SendInfoMessage(playerid, "You have cleared all items in the trunk of vehicle %i.", vehicleid);
  48657. }
  48658. }
  48659. return 1;
  48660. }
  48661. CMD:vinfo(playerid, params[])
  48662. {
  48663. new vehicleid, id;
  48664. if (Players[playerid][pAdmin] < 1 && GetPlayerFactionType(playerid) != FACTION_LEO)
  48665. {
  48666. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  48667. }
  48668. else if (sscanf(params, "i", vehicleid))
  48669. {
  48670. return SendSyntaxMessage(playerid, "/vinfo (vehicle ID)");
  48671. }
  48672. else if (!IsValidVehicle(vehicleid))
  48673. {
  48674. return SendErrorMessage(playerid, "You have specified an invalid vehicle.");
  48675. }
  48676. else
  48677. {
  48678. id = GetVehicleID(vehicleid);
  48679. if (id == INVALID_ID)
  48680. {
  48681. return SendErrorMessage(playerid, "The specified vehicle is not a dynamic vehicle.");
  48682. }
  48683. else
  48684. {
  48685. format(gExecute, sizeof(gExecute), "SELECT Username FROM rp_accounts WHERE ID = %i", Vehicles[id][vOwner]);
  48686. mysql_tquery(gConnection, gExecute, "OnPlayerVehicleInfo", "ii", playerid, id);
  48687. }
  48688. }
  48689. return 1;
  48690. }
  48691. CMD:deletecar(playerid, params[])
  48692. {
  48693. new vehicleid, id;
  48694. if (Players[playerid][pAdmin] < 5)
  48695. {
  48696. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  48697. }
  48698. else if (sscanf(params, "i", vehicleid))
  48699. {
  48700. return SendSyntaxMessage(playerid, "/deletecar (vehicle ID)");
  48701. }
  48702. else if (!IsValidVehicle(vehicleid))
  48703. {
  48704. return SendErrorMessage(playerid, "You have specified an invalid vehicle.");
  48705. }
  48706. else
  48707. {
  48708. id = GetVehicleID(vehicleid);
  48709. if (id == INVALID_ID)
  48710. {
  48711. return SendErrorMessage(playerid, "The specified vehicle is not a dynamic vehicle.");
  48712. }
  48713. else
  48714. {
  48715. DeleteVehicle(id);
  48716. SendInfoMessage(playerid, "You have deleted vehicle %i.", vehicleid);
  48717. }
  48718. }
  48719. return 1;
  48720. }
  48721. CMD:addatm(playerid, params[])
  48722. {
  48723. if (Players[playerid][pAdmin] < 5)
  48724. {
  48725. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  48726. }
  48727. else if (GetClosestATM(playerid) != INVALID_ID)
  48728. {
  48729. return SendErrorMessage(playerid, "There is another ATM nearby.");
  48730. }
  48731. else
  48732. {
  48733. new
  48734. Float:x,
  48735. Float:y,
  48736. Float:z,
  48737. Float:angle,
  48738. id = INVALID_ID;
  48739. GetPlayerPos(playerid, x, y, z);
  48740. GetPlayerFacingAngle(playerid, angle);
  48741. x += 2.0 * floatsin(-angle, degrees);
  48742. y += 2.0 * floatcos(-angle, degrees);
  48743. id = AddATMMachine(x, y, z, angle, GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid));
  48744. if (id == INVALID_ID)
  48745. {
  48746. return SendErrorMessage(playerid, "There are no available ATM slots.");
  48747. }
  48748. else
  48749. {
  48750. EditDynamicObjectEx(playerid, EDIT_TYPE_ATM, ATM[id][atmObject], id);
  48751. SendInfoMessage(playerid, "You have added ATM machine %i (/editatm).", id);
  48752. }
  48753. }
  48754. return 1;
  48755. }
  48756. CMD:gotoatm(playerid, params[])
  48757. {
  48758. new id;
  48759. if (Players[playerid][pAdmin] < 5)
  48760. {
  48761. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  48762. }
  48763. else if (sscanf(params, "i", id))
  48764. {
  48765. return SendSyntaxMessage(playerid, "/gotoatm (machine ID)");
  48766. }
  48767. else if (!IsValidATMID(id))
  48768. {
  48769. return SendErrorMessage(playerid, "You have specified an invalid ATM machine.");
  48770. }
  48771. else
  48772. {
  48773. SetPlayerPosEx(playerid, ATM[id][atmSpawn][0], ATM[id][atmSpawn][1], ATM[id][atmSpawn][2], ATM[id][atmSpawn][3], ATM[id][atmInterior], ATM[id][atmWorld]);
  48774. SendInfoMessage(playerid, "You have teleported to ATM machine %i.", id);
  48775. }
  48776. return 1;
  48777. }
  48778. CMD:editatm(playerid, params[])
  48779. {
  48780. new id;
  48781. if (Players[playerid][pAdmin] < 5)
  48782. {
  48783. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  48784. }
  48785. else if (sscanf(params, "i", id))
  48786. {
  48787. return SendSyntaxMessage(playerid, "/editatm (machine ID)");
  48788. }
  48789. else if (!IsValidATMID(id))
  48790. {
  48791. return SendErrorMessage(playerid, "You have specified an invalid ATM machine.");
  48792. }
  48793. else
  48794. {
  48795. EditDynamicObjectEx(playerid, EDIT_TYPE_ATM, ATM[id][atmObject], id);
  48796. SendInfoMessage(playerid, "Click on the disk icon to save changes.");
  48797. }
  48798. return 1;
  48799. }
  48800. CMD:deleteatm(playerid, params[])
  48801. {
  48802. new id;
  48803. if (Players[playerid][pAdmin] < 5)
  48804. {
  48805. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  48806. }
  48807. else if (sscanf(params, "i", id))
  48808. {
  48809. return SendSyntaxMessage(playerid, "/deleteatm (machine ID)");
  48810. }
  48811. else if (!IsValidATMID(id))
  48812. {
  48813. return SendErrorMessage(playerid, "You have specified an invalid ATM machine.");
  48814. }
  48815. else
  48816. {
  48817. DestroyDynamic3DTextLabel(ATM[id][atmText]);
  48818. DestroyDynamicObject(ATM[id][atmObject]);
  48819. format(gExecute, sizeof(gExecute), "DELETE FROM rp_atms WHERE `atmID` = %i", ATM[id][atmID]);
  48820. mysql_tquery(gConnection, gExecute);
  48821. ATM[id][atmExists] = 0;
  48822. SendInfoMessage(playerid, "You have deleted ATM %i.", id);
  48823. }
  48824. return 1;
  48825. }
  48826. CMD:togbrokenleg(playerid, params[])
  48827. {
  48828. new targetid;
  48829. if (Players[playerid][pAdmin] < 2)
  48830. {
  48831. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  48832. }
  48833. else if (sscanf(params, "u", targetid))
  48834. {
  48835. return SendSyntaxMessage(playerid, "/togbrokenleg [playerid/name]");
  48836. }
  48837. else if (!IsPlayerConnected(targetid))
  48838. {
  48839. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  48840. }
  48841. else if (!IsPlayerLoggedIn(targetid))
  48842. {
  48843. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  48844. }
  48845. else if (IsPlayerNPC(targetid))
  48846. {
  48847. return SendErrorMessage(playerid, "You can't use this command on an NPC.");
  48848. }
  48849. else
  48850. {
  48851. Players[targetid][pBrokenLeg] = !Players[targetid][pBrokenLeg];
  48852. if (Players[targetid][pBrokenLeg])
  48853. {
  48854. SendInfoMessage(playerid, "You have enabled the broken leg for %s.", ReturnNameEx(targetid, 0));
  48855. }
  48856. else
  48857. {
  48858. SendInfoMessage(playerid, "You have disabled the broken leg for %s.", ReturnNameEx(targetid, 0));
  48859. }
  48860. }
  48861. return 1;
  48862. }
  48863. CMD:togbleeding(playerid, params[])
  48864. {
  48865. new targetid;
  48866. if (Players[playerid][pAdmin] < 2)
  48867. {
  48868. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  48869. }
  48870. else if (sscanf(params, "u", targetid))
  48871. {
  48872. return SendSyntaxMessage(playerid, "/togbleeding [playerid/name]");
  48873. }
  48874. else if (!IsPlayerConnected(targetid))
  48875. {
  48876. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  48877. }
  48878. else if (!IsPlayerLoggedIn(targetid))
  48879. {
  48880. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  48881. }
  48882. else if (IsPlayerNPC(targetid))
  48883. {
  48884. return SendErrorMessage(playerid, "You can't use this command on an NPC.");
  48885. }
  48886. else
  48887. {
  48888. Players[targetid][pBleeding] = !Players[targetid][pBleeding];
  48889. Players[targetid][pBleedingTime] = 0;
  48890. if (Players[targetid][pBleeding])
  48891. {
  48892. SendInfoMessage(playerid, "You have enabled bleeding for %s.", ReturnNameEx(targetid, 0));
  48893. }
  48894. else
  48895. {
  48896. SendInfoMessage(playerid, "You have disabled bleeding for %s.", ReturnNameEx(targetid, 0));
  48897. }
  48898. }
  48899. return 1;
  48900. }
  48901. CMD:adeletedrops(playerid, params[])
  48902. {
  48903. if (Players[playerid][pAdmin] < 5)
  48904. {
  48905. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  48906. }
  48907. else
  48908. {
  48909. for (new i = 0; i < MAX_DROPPED_ITEMS; i ++)
  48910. {
  48911. if (DropItems[i][dExists])
  48912. {
  48913. DestroyDynamicObject(DropItems[i][dObject]);
  48914. //DestroyDynamic3DTextLabel(DropItems[i][dText]);
  48915. DropItems[i][dExists] = 0;
  48916. }
  48917. }
  48918. mysql_tquery(gConnection, "DELETE FROM rp_items WHERE itemDropped = 1");
  48919. SendAdminMessage(COLOR_RED, "Admin: %s has deleted all dropped items.", ReturnNameEx(playerid, 0));
  48920. }
  48921. return 1;
  48922. }
  48923. CMD:adeleteblood(playerid, params[])
  48924. {
  48925. if(Players[playerid][pAdmin] < 5)
  48926. {
  48927. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  48928. }
  48929. else
  48930. {
  48931. for (new i = 0; i < MAX_BLOOD; i ++)
  48932. {
  48933. if (Bloods[i][blExists])
  48934. {
  48935. DestroyDynamicObject(Bloods[i][blObject]);
  48936. Bloods[i][blExists] = 0;
  48937. Bloods[i][blObject] = INVALID_OBJECT_ID;
  48938. }
  48939. }
  48940. SendAdminMessage(COLOR_RED, "Admin: %s has deleted all blood.", ReturnNameEx(playerid, 0));
  48941. }
  48942. return 1;
  48943. }
  48944. CMD:adeleteshells(playerid, params[])
  48945. {
  48946. if (Players[playerid][pAdmin] < 5)
  48947. {
  48948. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  48949. }
  48950. else
  48951. {
  48952. for (new i = 0; i < MAX_SHELL_CASINGS; i ++)
  48953. {
  48954. if (ShellCasings[i][scExists])
  48955. {
  48956. DestroyDynamicObject(ShellCasings[i][scObject]);
  48957. ShellCasings[i][scExists] = 0;
  48958. ShellCasings[i][scObject] = INVALID_OBJECT_ID;
  48959. }
  48960. }
  48961. mysql_tquery(gConnection, "TRUNCATE TABLE rp_casings");
  48962. SendAdminMessage(COLOR_RED, "Admin: %s has deleted all shell casings.", ReturnNameEx(playerid, 0));
  48963. }
  48964. return 1;
  48965. }
  48966. CMD:payment(playerid, params[])
  48967. {
  48968. Dialog_Show(playerid, PaymentType, DIALOG_STYLE_LIST, "{FFFFFF}Set payment type", "Cash\nBank Account", "Select", "Cancel");
  48969. return 1;
  48970. }
  48971. CMD:ooc(playerid, params[])
  48972. {
  48973. return cmd_o(playerid, params);
  48974. }
  48975. CMD:o(playerid, params[])
  48976. {
  48977. if (isnull(params))
  48978. {
  48979. return SendSyntaxMessage(playerid, "/(o)oc (OOC chat)");
  48980. }
  48981. else if (Players[playerid][pMuted])
  48982. {
  48983. return SendErrorMessage(playerid, "You cannot use this command since you're muted.");
  48984. }
  48985. else if (!gEnabledOOC && Players[playerid][pAdmin] < 1)
  48986. {
  48987. return SendErrorMessage(playerid, "The OOC channel is currently disabled.");
  48988. }
  48989. else if (!Players[playerid][pShowOOC])
  48990. {
  48991. return SendErrorMessage(playerid, "You have disabled the OOC chat (/settings).");
  48992. }
  48993. else
  48994. {
  48995. foreach (new i : Player)
  48996. {
  48997. if (Players[i][pShowOOC])
  48998. {
  48999. if (Players[playerid][pAdminDuty] > 0)
  49000. {
  49001. SendSplitMessage(i, COLOR_SAMP, "(( {E8AF0E}%s{AAC4E5}(%s): %s ))", ReturnNameEx(playerid,0), ReturnAdminName(playerid), params);
  49002. }
  49003. else
  49004. {
  49005. SendSplitMessage(i, COLOR_SAMP, "(( %s: %s ))", ReturnNameEx(playerid, 0), params);
  49006. }
  49007. }
  49008. }
  49009. }
  49010. return 1;
  49011. }
  49012. CMD:admin(playerid, params[])
  49013. {
  49014. return cmd_a(playerid, params);
  49015. }
  49016. CMD:a(playerid, params[])
  49017. {
  49018. if (Players[playerid][pAdmin] < 1 && !Players[playerid][pVeteran])
  49019. {
  49020. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  49021. }
  49022. else if (Players[playerid][pMuted])
  49023. {
  49024. return SendErrorMessage(playerid, "You cannot use this command since you're muted.");
  49025. }
  49026. else if (isnull(params))
  49027. {
  49028. return SendSyntaxMessage(playerid, "/(a)dmin (admin chat)");
  49029. }
  49030. else if (!Players[playerid][pShowAdmin])
  49031. {
  49032. return SendErrorMessage(playerid, "You have disabled the admin chat (/settings).");
  49033. }
  49034. else
  49035. {
  49036. /*if (Players[playerid][pAdmin] == 6)
  49037. {
  49038. SendAdminMessage(COLOR_RED, "** (Management) %s: %s **", ReturnNameEx(playerid), params);
  49039. }
  49040. else
  49041. {
  49042. SendAdminMessage(COLOR_GREEN, "** (%i Admin) %s: %s **", Players[playerid][pAdmin], ReturnNameEx(playerid), params);
  49043. }*/
  49044. foreach (new i : Player)
  49045. {
  49046. if ((Players[i][pAdmin] > 0 || Players[i][pVeteran]) && Players[i][pShowAdmin])
  49047. {
  49048. SendSplitMessage(i, COLOR_RED, "** %s %s (%i): %s", ReturnAdminRank(playerid), ReturnAdminName(playerid), playerid, params);
  49049. }
  49050. }
  49051. }
  49052. return 1;
  49053. }
  49054. CMD:fc(playerid, params[])
  49055. {
  49056. if (!Players[playerid][pFactionMod])
  49057. {
  49058. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  49059. }
  49060. else if (Players[playerid][pMuted])
  49061. {
  49062. return SendErrorMessage(playerid, "You cannot use this command since you're muted.");
  49063. }
  49064. else if (isnull(params))
  49065. {
  49066. return SendSyntaxMessage(playerid, "/fc (FMT chat)");
  49067. }
  49068. else
  49069. {
  49070. foreach (new i : Player)
  49071. {
  49072. if (Players[i][pFactionMod])
  49073. {
  49074. SendSplitMessage(i, COLOR_FMTCHAT, "** (%s) %s: %s **", GetFactionModLevel(Players[playerid][pFactionMod]), ReturnNameEx(playerid, 0), params);
  49075. }
  49076. }
  49077. }
  49078. return 1;
  49079. }
  49080. CMD:leadadmin(playerid, params[])
  49081. {
  49082. return cmd_la(playerid, params);
  49083. }
  49084. CMD:la(playerid, params[])
  49085. {
  49086. if (Players[playerid][pAdmin] < 4)
  49087. {
  49088. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  49089. }
  49090. else if (Players[playerid][pMuted])
  49091. {
  49092. return SendErrorMessage(playerid, "You cannot use this command since you're muted.");
  49093. }
  49094. else if (isnull(params))
  49095. {
  49096. return SendSyntaxMessage(playerid, "/la (lead chat)");
  49097. }
  49098. else if (!Players[playerid][pShowAdmin])
  49099. {
  49100. return SendErrorMessage(playerid, "You have disabled the admin chat (/settings).");
  49101. }
  49102. else
  49103. {
  49104. foreach (new i : Player)
  49105. {
  49106. if (Players[i][pAdmin] > 4 && Players[i][pShowAdmin])
  49107. {
  49108. SendSplitMessage(i, 0x7A98FFFF, "** %s %s (%i): %s **", ReturnAdminTitle(playerid), ReturnAdminName(playerid), playerid, params);
  49109. }
  49110. }
  49111. }
  49112. return 1;
  49113. }
  49114. CMD:togooc(playerid, params[])
  49115. {
  49116. if (Players[playerid][pAdmin] < 3)
  49117. {
  49118. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  49119. }
  49120. else
  49121. {
  49122. gEnabledOOC = !gEnabledOOC;
  49123. if (gEnabledOOC)
  49124. {
  49125. SendFormatMessageToAll(COLOR_SAMP, "(( %s has enabled the OOC chat. ))", ReturnNameEx(playerid, 0));
  49126. }
  49127. else
  49128. {
  49129. SendFormatMessageToAll(COLOR_SAMP, "(( %s has disabled the OOC chat. ))", ReturnNameEx(playerid, 0));
  49130. }
  49131. }
  49132. return 1;
  49133. }
  49134. CMD:veterans(playerid, params[])
  49135. {
  49136. if (Players[playerid][pAdmin] < 1 && Players[playerid][pVeteran] < 1)
  49137. {
  49138. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  49139. }
  49140. else
  49141. {
  49142. SendClientMessage(playerid, COLOR_YELLOW, "List of Veterans:");
  49143. foreach (new i : Player)
  49144. {
  49145. if (Players[i][pVeteran])
  49146. {
  49147. SendFormatMessage(playerid, COLOR_WHITE, "* %s (ID: %i)", ReturnNameEx(i, 0), i);
  49148. }
  49149. }
  49150. }
  49151. return 1;
  49152. }
  49153. /*CMD:admins(playerid, params[])
  49154. {
  49155. new
  49156. count,
  49157. adminString[1024];
  49158. adminString = "The following admins are online:\n";
  49159. foreach (new i : Player)
  49160. {
  49161. if (Players[i][pAdmin] > 0 && !Players[i][pHideAdmin])
  49162. {
  49163. if (Players[i][pAdminDuty])
  49164. {
  49165. format(adminString, sizeof(adminString), "%s\n- %s (Level: %i) {33CC33}(On Duty){AAC4E5}", adminString, ReturnAdminName(i), Players[i][pAdmin]);
  49166. }
  49167. else
  49168. {
  49169. format(adminString, sizeof(adminString), "%s\n- %s (Level: %i) {FF5030}(Off Duty){AAC4E5}", adminString, ReturnAdminName(i), Players[i][pAdmin]);
  49170. }
  49171. count++;
  49172. }
  49173. }
  49174. if (!count)
  49175. {
  49176. SendErrorMessage(playerid, "There are currently no admins online.");
  49177. }
  49178. else
  49179. {
  49180. Dialog_Show(playerid, AdminsOnline, DIALOG_STYLE_MSGBOX, "{FFFFFF}Online Admins", adminString, "Close", "");
  49181. }
  49182. return 1;
  49183. }*/
  49184. CMD:admins(playerid, params[])
  49185. {
  49186. SendClientMessage(playerid, COLOR_DARKGREEN, "Online Administrators:");
  49187. foreach (new i : Player) if (Players[i][pAdmin] > 0)
  49188. {
  49189. if (!Players[i][pHideAdmin])
  49190. {
  49191. if (Players[i][pAdminDuty])
  49192. SendFormatMessage(playerid, COLOR_WHITE, "(Level %i): %s (ID: %i) Status: {5BB74C}On Duty", Players[i][pAdmin], ReturnNameEx(i, 0), ReturnAdminName(i), i);
  49193. //SendFormatMessage(playerid, COLOR_WHITE, "%s %s (ID: %i) Status: {4BB74C}On Duty", ReturnAdminTitle(i), ReturnNameEx(i, 0), i);
  49194. else
  49195. SendFormatMessage(playerid, COLOR_WHITE, "(Level %i): %s (ID: %i) Status: {FF0000}Off Duty", Players[i][pAdmin], ReturnNameEx(i, 0), ReturnAdminName(i), i);
  49196. //SendFormatMessage(playerid, COLOR_WHITE, "%s %s (ID: %i) Status: {FF0000}Off Duty", ReturnAdminTitle(i), ReturnNameEx(i, 0), i);
  49197. }
  49198. if (Players[i][pHideAdmin] && Players[playerid][pAdmin] >= 6)
  49199. {
  49200. SendFormatMessage(playerid, COLOR_WHITE, "(Level %i): %s (ID: %i) Status: {C9C9C9}Hidden", Players[i][pAdmin], ReturnNameEx(i, 0), ReturnAdminName(i), i);
  49201. //SendFormatMessage(playerid, COLOR_WHITE, "%s %s (%s) (ID: %i) Status: {C9C9C9}Hidden", ReturnAdminTitle(i), ReturnNameEx(i, 0), ReturnAdminName(i), i);
  49202. }
  49203. }
  49204. return 1;
  49205. }
  49206. /*CMD:admins(playerid, params[])
  49207. {
  49208. SendClientMessage(playerid, COLOR_YELLOW, "List of Admins:");
  49209. foreach (new i : Player)
  49210. {
  49211. if (Players[i][pAdmin] > 0)
  49212. {
  49213. if (Players[i][pHideAdmin] && Players[playerid][pAdmin] < 6)
  49214. {
  49215. continue;
  49216. }
  49217. if (Players[i][pAdminDuty])
  49218. {
  49219. SendFormatMessage(playerid, COLOR_GREEN, "* %s (ID: %i) (Level: %i) (On Duty)", ReturnAdminName(i), i, Players[i][pAdmin]);
  49220. }
  49221. else
  49222. {
  49223. SendFormatMessage(playerid, COLOR_WHITE, "* %s (ID: %i) (Level: %i) (Off Duty)", ReturnAdminName(i), i, Players[i][pAdmin]);
  49224. }
  49225. }
  49226. }
  49227. return 1;
  49228. }*/
  49229. /*
  49230. if (Players[playerid][pJob] != JOB_TAXI)
  49231. {
  49232. return SendErrorMessage(playerid, "You need to be a taxi driver to do this");
  49233. }
  49234. else if (!IsPlayerInTaxi(playerid))
  49235. {
  49236. return SendErrorMessage(playerid, "You need to be in a taxi.");
  49237. }
  49238. */
  49239. CMD:onduty(playerid, params[])
  49240. {
  49241. new police = 0;
  49242. new medic = 0;
  49243. new taxi = 0;
  49244. foreach (new i : Player)
  49245. {
  49246. if (GetPlayerFactionType(i) == FACTION_LEO && Players[i][pDuty])
  49247. police++;
  49248. if (GetPlayerFactionType(i) == FACTION_MEDICAL && Players[i][pDuty])
  49249. medic++;
  49250. if (Players[i][pJob] == JOB_TAXI && IsPlayerInTaxi(i))
  49251. taxi++;
  49252. }
  49253. SendFormatMessage(playerid, COLOR_WHITE, "On Duty > Police: %i, Medic: %i, Taxi: %i", police, medic, taxi);
  49254. return 1;
  49255. }
  49256. CMD:aduty(playerid, params[])
  49257. {
  49258. if (Players[playerid][pAdmin] < 1)
  49259. {
  49260. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  49261. }
  49262. else
  49263. {
  49264. if (Players[playerid][pMaskID] > 0)
  49265. {
  49266. Players[playerid][pMaskID] = 0;
  49267. SendInfoMessage(playerid, "Your mask has been automatically removed.");
  49268. }
  49269. Players[playerid][pAdminDuty] = !Players[playerid][pAdminDuty];
  49270. UpdateNameTag(playerid, 1);
  49271. if (Players[playerid][pAdminDuty])
  49272. {
  49273. SendAdminMessage(COLOR_RED, "Admin: %s is now on admin duty.", ReturnNameEx(playerid, 0));
  49274. }
  49275. else
  49276. {
  49277. SendAdminMessage(COLOR_RED, "Admin: %s is no longer on admin duty.", ReturnNameEx(playerid, 0));
  49278. }
  49279. }
  49280. return 1;
  49281. }
  49282. CMD:adminname(playerid, params[])
  49283. {
  49284. if (Players[playerid][pAdmin] < 1)
  49285. {
  49286. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  49287. }
  49288. else
  49289. {
  49290. Dialog_Show(playerid, AdminName, DIALOG_STYLE_INPUT, "{FFFFFF}Admin Name", "Please input the admin name that you wish to use:", "Submit", "Cancel");
  49291. }
  49292. return 1;
  49293. }
  49294. CMD:admintitle(playerid, params[])
  49295. {
  49296. new targetid, title[24];
  49297. if (Players[playerid][pAdmin] < 1)
  49298. {
  49299. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  49300. }
  49301. else if (sscanf(params, "us[24]", targetid, title))
  49302. {
  49303. return SendSyntaxMessage(playerid, "/admintitle [playerid/name] [title]");
  49304. }
  49305. else
  49306. {
  49307. SendAdminMessage(COLOR_RED, "Admin: %s has set %s's admin title to '%s'.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0), title);
  49308. strcpy(Players[targetid][pAdminTitle], title, 24);
  49309. }
  49310. return 1;
  49311. }
  49312. CMD:amotd(playerid, params[])
  49313. {
  49314. new motd[128];
  49315. if (Players[playerid][pAdmin] < 6)
  49316. {
  49317. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  49318. }
  49319. else if (sscanf(params, "s[128]", motd))
  49320. {
  49321. return SendSyntaxMessage(playerid, "/amotd [server motd]");
  49322. }
  49323. else
  49324. {
  49325. strcpy(Server[Motd], motd, 128);
  49326. SaveInformation();
  49327. }
  49328. return 1;
  49329. }
  49330. CMD:ahide(playerid, params[])
  49331. {
  49332. if (Players[playerid][pAdmin] < 4)
  49333. {
  49334. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  49335. }
  49336. else
  49337. {
  49338. Players[playerid][pHideAdmin] = !Players[playerid][pHideAdmin];
  49339. if (Players[playerid][pHideAdmin])
  49340. {
  49341. SendInfoMessage(playerid, "You are now hidden from the admins list.");
  49342. }
  49343. else
  49344. {
  49345. SendInfoMessage(playerid, "You are no longer hidden from the admins list.");
  49346. }
  49347. }
  49348. return 1;
  49349. }
  49350. CMD:setmapper(playerid, params[])
  49351. {
  49352. new targetid, level;
  49353. if (Players[playerid][pAdmin] < 5 && Players[playerid][pMapper] < 2)
  49354. {
  49355. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  49356. }
  49357. else if (sscanf(params, "ui", targetid, level))
  49358. {
  49359. return SendSyntaxMessage(playerid, "/setmapper [playerid/name] [1: mapper 2: head mapper]");
  49360. }
  49361. else if (!IsPlayerConnected(targetid))
  49362. {
  49363. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  49364. }
  49365. else if (IsPlayerNPC(targetid))
  49366. {
  49367. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  49368. }
  49369. else if (!IsPlayerLoggedIn(targetid))
  49370. {
  49371. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  49372. }
  49373. else if (level < 0 || level > 2)
  49374. {
  49375. return SendErrorMessage(playerid, "The specified level is invalid.");
  49376. }
  49377. else
  49378. {
  49379. Players[targetid][pMapper] = level;
  49380. if (level)
  49381. {
  49382. SendAdminMessage(COLOR_RED, "Admin: %s has set %s's mapper level to %s.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0), GetMapperLevel(level));
  49383. SendInfoMessage(targetid, "%s has set your mapper level to %s.", ReturnNameEx(playerid, 0), GetMapperLevel(level));
  49384. }
  49385. else
  49386. {
  49387. SendAdminMessage(COLOR_RED, "Admin: %s has removed %s's mapper status.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0));
  49388. SendInfoMessage(targetid, "%s has removed your mapper status.", ReturnNameEx(playerid, 0));
  49389. }
  49390. }
  49391. return 1;
  49392. }
  49393. CMD:setsupporter(playerid, params[])
  49394. {
  49395. new targetid, level;
  49396. if (Players[playerid][pAdmin] < 4 && Players[playerid][pSupporter] < 2)
  49397. {
  49398. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  49399. }
  49400. else if (sscanf(params, "ui", targetid, level))
  49401. {
  49402. return SendSyntaxMessage(playerid, "/setsupporter [playerid/name] [1: Supporter 2: Head Supporter]");
  49403. }
  49404. else if (!IsPlayerConnected(targetid))
  49405. {
  49406. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  49407. }
  49408. else if (IsPlayerNPC(targetid))
  49409. {
  49410. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  49411. }
  49412. else if (!IsPlayerLoggedIn(targetid))
  49413. {
  49414. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  49415. }
  49416. else if (level < 0 || level > 2)
  49417. {
  49418. return SendErrorMessage(playerid, "The specified level is invalid.");
  49419. }
  49420. else
  49421. {
  49422. Players[targetid][pSupporter] = level;
  49423. if (level)
  49424. {
  49425. SendAdminMessage(COLOR_RED, "Admin: %s has set %s's Supporter level to %s.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0), GetSupporterLevel(level));
  49426. SendInfoMessage(targetid, "%s has set your Supporter level to %s.", ReturnNameEx(playerid, 0), GetSupporterLevel(level));
  49427. }
  49428. else
  49429. {
  49430. SendAdminMessage(COLOR_RED, "Admin: %s has removed %s's Supporter status.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0));
  49431. SendInfoMessage(targetid, "%s has removed your Supporter status.", ReturnNameEx(playerid, 0));
  49432. }
  49433. }
  49434. return 1;
  49435. }
  49436. CMD:setfactionmod(playerid, params[])
  49437. {
  49438. new targetid, level;
  49439. if (Players[playerid][pAdmin] < 5 && Players[playerid][pFactionMod] < 2)
  49440. {
  49441. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  49442. }
  49443. else if (sscanf(params, "ui", targetid, level))
  49444. {
  49445. return SendSyntaxMessage(playerid, "/setfactionmod [playerid/name] (1: moderator, 2: head)");
  49446. }
  49447. else if (!IsPlayerConnected(targetid))
  49448. {
  49449. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  49450. }
  49451. else if (IsPlayerNPC(targetid))
  49452. {
  49453. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  49454. }
  49455. else if (!IsPlayerLoggedIn(targetid))
  49456. {
  49457. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  49458. }
  49459. else if (level < 0 || level > 2)
  49460. {
  49461. return SendErrorMessage(playerid, "The specified level is invalid.");
  49462. }
  49463. else
  49464. {
  49465. Players[targetid][pFactionMod] = level;
  49466. if (level)
  49467. {
  49468. SendAdminMessage(COLOR_RED, "Admin: %s has set %s's faction management status to %s.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0), GetFactionModLevel(level));
  49469. SendInfoMessage(targetid, "%s has set your faction management status to %s.", ReturnNameEx(playerid, 0), GetFactionModLevel(level));
  49470. }
  49471. else
  49472. {
  49473. SendAdminMessage(COLOR_RED, "Admin: %s has removed %s's faction management status.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0));
  49474. SendInfoMessage(targetid, "%s has removed your faction management status.", ReturnNameEx(playerid, 0));
  49475. }
  49476. }
  49477. return 1;
  49478. }
  49479. CMD:setveteran(playerid, params[])
  49480. {
  49481. new targetid;
  49482. if (Players[playerid][pAdmin] < 6)
  49483. {
  49484. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  49485. }
  49486. else if (sscanf(params, "u", targetid))
  49487. {
  49488. return SendSyntaxMessage(playerid, "/setveteran [playerid/name]");
  49489. }
  49490. else if (!IsPlayerConnected(targetid))
  49491. {
  49492. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  49493. }
  49494. else if (IsPlayerNPC(targetid))
  49495. {
  49496. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  49497. }
  49498. else if (!IsPlayerLoggedIn(targetid))
  49499. {
  49500. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  49501. }
  49502. else
  49503. {
  49504. Players[targetid][pVeteran] = !Players[targetid][pVeteran];
  49505. if (!Players[targetid][pVeteran])
  49506. {
  49507. SendAdminMessage(COLOR_RED, "Admin: %s has granted %s veteran status.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0));
  49508. SendInfoMessage(targetid, "%s has granted you veteran status.", ReturnNameEx(playerid, 0));
  49509. }
  49510. else
  49511. {
  49512. SendAdminMessage(COLOR_RED, "Admin: %s has removed %s's veteran status.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0));
  49513. SendInfoMessage(targetid, "%s has removed your veteran status.", ReturnNameEx(playerid, 0));
  49514. }
  49515. }
  49516. return 1;
  49517. }
  49518. CMD:helpme(playerid, params[])
  49519. {
  49520. if ((gettime() - Players[playerid][pSupportTime]) < SUPPORT_WAIT_TIME)
  49521. {
  49522. return SendErrorMessage(playerid, "You must wait %i seconds to ask for support again.", SUPPORT_WAIT_TIME - (gettime() - Players[playerid][pSupportTime]));
  49523. }
  49524. else if (isnull(params))
  49525. {
  49526. return SendSyntaxMessage(playerid, "/helpme (help request)");
  49527. }
  49528. else if (Players[playerid][pSupporter] > 0)
  49529. {
  49530. return SendErrorMessage(playerid, "You can't ask for help as a Supporter.");
  49531. }
  49532. else
  49533. {
  49534. foreach (new i : Player)
  49535. {
  49536. if (Players[i][pSupporter] > 0 && Players[i][pSupporterDuty])
  49537. {
  49538. SendFormatMessage(i, COLOR_SAMP, "(Supporter) %s (%i) has requested help: \"%s\"", ReturnNameEx(playerid, 0), playerid, params);
  49539. }
  49540. }
  49541. Players[playerid][pSupportTime] = gettime();
  49542. strpack(gHelpRequest[playerid], params, 128);
  49543. SendInfoMessage(playerid, "You have asked for help. Please wait for assistance.");
  49544. }
  49545. return 1;
  49546. }
  49547. CMD:staffchat(playerid, params[])
  49548. {
  49549. return cmd_sc(playerid, params);
  49550. }
  49551. CMD:sc(playerid, params[])
  49552. {
  49553. if(Players[playerid][pSupporter] > 0 || Players[playerid][pAdmin] > 0)
  49554. {
  49555. if (!Players[playerid][pShowSupporter])
  49556. {
  49557. return SendErrorMessage(playerid, "You have disabled the Staff chat (/settings).");
  49558. }
  49559. new string[256], input[128];
  49560. if(sscanf(params, "s[128]", input)) return SendSyntaxMessage(playerid, "/sc [message]");
  49561. if(Players[playerid][pAdmin] > 0) {
  49562. format(string, sizeof string, "** (%s) %s: %s **", ReturnAdminTitle(playerid), ReturnNameEx(playerid, 0), input);
  49563. }
  49564. else if(Players[playerid][pSupporter] > 0) {
  49565. format(string, sizeof string, "** (%s) %s: %s **", GetSupporterLevel(Players[playerid][pSupporter]), ReturnNameEx(playerid, 0), input);
  49566. }
  49567. foreach (new i : Player)
  49568. {
  49569. if(Players[i][pSupporter] > 0 || Players[i][pAdmin] > 0)
  49570. {
  49571. SendSplitMessage(i, COLOR_GREEN, string);
  49572. }
  49573. }
  49574. }
  49575. return 1;
  49576. }
  49577. CMD:mduty(playerid, params[])
  49578. {
  49579. if (Players[playerid][pMapper] < 1)
  49580. {
  49581. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  49582. }
  49583. else
  49584. {
  49585. Players[playerid][pMapperDuty] = !Players[playerid][pMapperDuty];
  49586. if (Players[playerid][pMapperDuty])
  49587. {
  49588. SendAdminMessage(COLOR_RED, "Admin: %s is now on mapper duty.", ReturnNameEx(playerid, 0));
  49589. }
  49590. else
  49591. {
  49592. SendAdminMessage(COLOR_RED, "Admin: %s is no longer on mapper duty.", ReturnNameEx(playerid, 0));
  49593. }
  49594. }
  49595. return 1;
  49596. }
  49597. CMD:sduty(playerid, params[])
  49598. {
  49599. if (Players[playerid][pSupporter] < 1)
  49600. {
  49601. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  49602. }
  49603. else
  49604. {
  49605. Players[playerid][pSupporterDuty] = !Players[playerid][pSupporterDuty];
  49606. UpdateNameTag(playerid, 1);
  49607. if (Players[playerid][pSupporterDuty])
  49608. {
  49609. SendSupporterMessage(COLOR_SAMP, "(Supporter) %s is now on Supporter duty.", ReturnNameEx(playerid, 0));
  49610. }
  49611. else
  49612. {
  49613. SendSupporterMessage(COLOR_SAMP, "(Supporter) %s is no longer on Supporter duty.", ReturnNameEx(playerid, 0));
  49614. }
  49615. }
  49616. return 1;
  49617. }
  49618. CMD:listhelp(playerid, params[])
  49619. {
  49620. if (Players[playerid][pSupporter] < 1)
  49621. {
  49622. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  49623. }
  49624. else
  49625. {
  49626. SendClientMessage(playerid, COLOR_GREY, "-------------------------------------------------------------------");
  49627. foreach (new i : Player)
  49628. {
  49629. if (IsHelpRequestActive(i))
  49630. {
  49631. SendFormatMessage(playerid, COLOR_WHITE, "** %s (ID: %i) -> \"%s\"", ReturnNameEx(i, 0), i, GetHelpRequest(i));
  49632. }
  49633. }
  49634. SendClientMessage(playerid, COLOR_GREY, "-------------------------------------------------------------------");
  49635. SendInfoMessage(playerid, "Use /answerhelp or /declinehelp.");
  49636. }
  49637. return 1;
  49638. }
  49639. CMD:ah(playerid, params[])
  49640. {
  49641. return cmd_answerhelp(playerid,params);
  49642. }
  49643. CMD:answerhelp(playerid, params[])
  49644. {
  49645. new targetid;
  49646. if (Players[playerid][pSupporter] < 1)
  49647. {
  49648. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  49649. }
  49650. else if (sscanf(params, "u", targetid))
  49651. {
  49652. return SendSyntaxMessage(playerid, "/answerhelp [playerid/name]");
  49653. }
  49654. else if (!IsPlayerConnected(targetid))
  49655. {
  49656. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  49657. }
  49658. else if (!IsHelpRequestActive(targetid))
  49659. {
  49660. return SendErrorMessage(playerid, "The specified target hasn't asked for help yet.");
  49661. }
  49662. else if (Players[playerid][pHelpRequest] != INVALID_PLAYER_ID)
  49663. {
  49664. return SendErrorMessage(playerid, "You have already answered a help request (/closehelp).");
  49665. }
  49666. else
  49667. {
  49668. Statistics[playerid][sHelpRequests]++;
  49669. Players[playerid][pHelpRequest] = targetid;
  49670. Players[targetid][pHelpRequest] = playerid;
  49671. SendSupporterMessage(COLOR_SAMP, "(Supporter) %s has answered %s's support request.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0));
  49672. ResetHelpRequest(targetid);
  49673. SendInfoMessage(playerid, "You have answered %s's help request. Use /reply to reply and /closehelp to close it.", ReturnNameEx(targetid, 0));
  49674. SendInfoMessage(targetid, "%s has accepted your help request! Use /reply to reply and /closehelp to close it.", ReturnNameEx(playerid, 0));
  49675. }
  49676. return 1;
  49677. }
  49678. CMD:reply(playerid, params[])
  49679. {
  49680. if (Players[playerid][pHelpRequest] != INVALID_PLAYER_ID)
  49681. {
  49682. if (isnull(params))
  49683. {
  49684. return SendSyntaxMessage(playerid, "/reply (text)");
  49685. }
  49686. else if (Players[playerid][pSupporter] > 0)
  49687. {
  49688. SendFormatMessage(playerid, COLOR_YELLOW, "* Supporter %s: %s", ReturnNameEx(playerid, 0), params);
  49689. SendFormatMessage(Players[playerid][pHelpRequest], COLOR_YELLOW, "* Supporter %s: %s", ReturnNameEx(playerid, 0), params);
  49690. }
  49691. else
  49692. {
  49693. SendFormatMessage(playerid, COLOR_YELLOW, "* Player %s: %s", ReturnNameEx(playerid, 0), params);
  49694. SendFormatMessage(Players[playerid][pHelpRequest], COLOR_YELLOW, "* Player %s: %s", ReturnNameEx(playerid, 0), params);
  49695. }
  49696. }
  49697. return 1;
  49698. }
  49699. CMD:dh(playerid, params[])
  49700. {
  49701. return cmd_declinehelp(playerid,params);
  49702. }
  49703. CMD:declinehelp(playerid, params[])
  49704. {
  49705. new targetid;
  49706. if (Players[playerid][pSupporter] < 1)
  49707. {
  49708. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  49709. }
  49710. else if (sscanf(params, "u", targetid))
  49711. {
  49712. return SendSyntaxMessage(playerid, "/declinehelp [playerid/name]");
  49713. }
  49714. else if (!IsPlayerConnected(targetid))
  49715. {
  49716. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  49717. }
  49718. else if (!IsHelpRequestActive(targetid))
  49719. {
  49720. return SendErrorMessage(playerid, "The specified target hasn't asked for help yet.");
  49721. }
  49722. else
  49723. {
  49724. SendSupporterMessage(COLOR_SAMP, "(Supporter) %s has declined %s's support request.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0));
  49725. SendInfoMessage(targetid, "%s has declined your help request.", ReturnNameEx(playerid, 0));
  49726. ResetHelpRequest(targetid);
  49727. }
  49728. return 1;
  49729. }
  49730. CMD:closehelp(playerid, params[])
  49731. {
  49732. if (Players[playerid][pHelpRequest] != INVALID_PLAYER_ID)
  49733. {
  49734. SendInfoMessage(Players[playerid][pHelpRequest], "%s has closed the help request.", ReturnNameEx(playerid, 0));
  49735. SendInfoMessage(playerid, "You have closed the help request.");
  49736. Players[Players[playerid][pHelpRequest]][pHelpRequest] = INVALID_PLAYER_ID;
  49737. Players[playerid][pHelpRequest] = INVALID_PLAYER_ID;
  49738. }
  49739. return 1;
  49740. }
  49741. CMD:mappers(playerid, params[])
  49742. {
  49743. SendClientMessage(playerid, COLOR_YELLOW, "List of Mappers:");
  49744. foreach (new i : Player)
  49745. {
  49746. if (Players[i][pMapper] > 0)
  49747. {
  49748. if (Players[i][pMapperDuty])
  49749. {
  49750. SendFormatMessage(playerid, COLOR_TESTER, "* %s (ID: %i) (%s) (On Duty)", ReturnNameEx(i, 0), i, GetMapperLevel(Players[i][pMapper]));
  49751. }
  49752. else
  49753. {
  49754. SendFormatMessage(playerid, COLOR_WHITE, "* %s (ID: %i) (%s) (Off Duty)", ReturnNameEx(i, 0), i, GetMapperLevel(Players[i][pMapper]));
  49755. }
  49756. }
  49757. }
  49758. return 1;
  49759. }
  49760. CMD:supporters(playerid, params[])
  49761. {
  49762. SendClientMessage(playerid, COLOR_YELLOW, "List of Supporters:");
  49763. foreach (new i : Player)
  49764. {
  49765. if (Players[i][pSupporter] > 0)
  49766. {
  49767. if (Players[i][pSupporterDuty])
  49768. {
  49769. SendFormatMessage(playerid, COLOR_TESTER, "* %s (ID: %i) (%s) (On Duty)", ReturnNameEx(i, 0), i, GetSupporterLevel(Players[i][pSupporter]));
  49770. }
  49771. else
  49772. {
  49773. SendFormatMessage(playerid, COLOR_WHITE, "* %s (ID: %i) (%s) (Off Duty)", ReturnNameEx(i, 0), i, GetSupporterLevel(Players[i][pSupporter]));
  49774. }
  49775. }
  49776. }
  49777. return 1;
  49778. }
  49779. CMD:editdealercars(playerid, params[])
  49780. {
  49781. new company;
  49782. if (Players[playerid][pAdmin] < 5)
  49783. {
  49784. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  49785. }
  49786. else if (sscanf(params, "i", company))
  49787. {
  49788. return SendSyntaxMessage(playerid, "/editdealercars (company ID)");
  49789. }
  49790. else if (!IsValidCompanyID(company))
  49791. {
  49792. return SendErrorMessage(playerid, "You have specified an invalid company.");
  49793. }
  49794. else if (Companies[company][cType] != COMPANY_DEALERSHIP)
  49795. {
  49796. return SendErrorMessage(playerid, "You can only add dealership cars to dealerships.");
  49797. }
  49798. else
  49799. {
  49800. ShowDealershipEditMenu(playerid, company);
  49801. }
  49802. return 1;
  49803. }
  49804. CMD:addfaction(playerid, params[])
  49805. {
  49806. new type, name[32];
  49807. if (Players[playerid][pAdmin] < 5 && !Players[playerid][pFactionMod])
  49808. {
  49809. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  49810. }
  49811. else if (sscanf(params, "is[32]", type, name))
  49812. {
  49813. SendSyntaxMessage(playerid, "/addfaction (type ID) (name)");
  49814. SendClientMessage(playerid, COLOR_LIGHTGREY, "Types: 1 - LEO, 2 - Medical, 3 - Government, 4 - Illegal, 5 = News");
  49815. return 1;
  49816. }
  49817. else if (!(1 <= type <= 5))
  49818. {
  49819. return SendErrorMessage(playerid, "You have specified an invalid faction type.");
  49820. }
  49821. else
  49822. {
  49823. new id = GetNextFactionID();
  49824. if (id == INVALID_ID)
  49825. {
  49826. SendErrorMessage(playerid, "There are no available faction slots.");
  49827. }
  49828. else
  49829. {
  49830. strcpy(Factions[id][fcName], name, 32);
  49831. Factions[id][fcExists] = 1;
  49832. Factions[id][fcType] = type;
  49833. Factions[id][fcColor] = -1;
  49834. Factions[id][fcMaxRanks] = 5;
  49835. Factions[id][fcLockerX] = 0.0;
  49836. Factions[id][fcLockerY] = 0.0;
  49837. Factions[id][fcLockerZ] = 0.0;
  49838. Factions[id][fcLockerInt] = 0;
  49839. Factions[id][fcLockerWorld] = 0;
  49840. Factions[id][fcPickup] = INVALID_ID;
  49841. Factions[id][fcText] = INVALID_3DTEXT_ID;
  49842. format(gExecute, sizeof(gExecute), "INSERT INTO rp_factions (fcName, fcType) VALUES('%s', %i)", mysql_escaped(name), type);
  49843. mysql_tquery(gConnection, gExecute, "OnFactionAdded", "i", id);
  49844. SendAdminMessage(COLOR_RED, "Admin: %s has created faction %i (%s).", ReturnNameEx(playerid, 0), id, name);
  49845. }
  49846. }
  49847. return 1;
  49848. }
  49849. CMD:editfaction(playerid, params[])
  49850. {
  49851. new faction;
  49852. if (Players[playerid][pAdmin] < 5 && !Players[playerid][pFactionMod])
  49853. {
  49854. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  49855. }
  49856. else if (sscanf(params, "i", faction))
  49857. {
  49858. return SendSyntaxMessage(playerid, "/editfaction (faction ID)");
  49859. }
  49860. else if (!IsValidFactionID(faction))
  49861. {
  49862. return SendErrorMessage(playerid, "You have specified an invalid faction ID.");
  49863. }
  49864. else
  49865. {
  49866. ShowFactionEditMenu(playerid, faction);
  49867. }
  49868. return 1;
  49869. }
  49870. //ToDo: Remove if not needed. ~Nutter
  49871. /*CMD:deletefaction(playerid, params[])
  49872. {
  49873. new faction;
  49874. if (Players[playerid][pAdmin] < 5 && !Players[playerid][pFactionMod])
  49875. {
  49876. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  49877. }
  49878. else if (sscanf(params, "i", faction))
  49879. {
  49880. return SendSyntaxMessage(playerid, "/deletefaction (faction ID)");
  49881. }
  49882. else if (!IsValidFactionID(faction))
  49883. {
  49884. return SendErrorMessage(playerid, "You have specified an invalid faction ID.");
  49885. }
  49886. else
  49887. {
  49888. foreach (new i : Player)
  49889. {
  49890. if (GetPlayerFactionID(i) == faction)
  49891. {
  49892. SendInfoMessage(i, "You have been kicked from your faction due to deletion.");
  49893. ResetFactionInfo(i);
  49894. }
  49895. }
  49896. ClearFactionGates(faction);
  49897. ClearFactionVehicles(faction);
  49898. format(gExecute, sizeof(gExecute), "DELETE FROM rp_factions WHERE `fcID` = %i", Factions[faction][fcID]);
  49899. mysql_tquery(gConnection, gExecute);
  49900. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET FactionID = 0 WHERE FactionID = %i", Factions[faction][fcID]);
  49901. mysql_tquery(gConnection, gExecute);
  49902. mysql_format(gConnection, gExecute, sizeof(gExecute), "DELETE FROM rp_factionequipmentWHERE itemFactionID = %i", Factions[faction][fcID]);
  49903. mysql_tquery(gConnection, gExecute);
  49904. mysql_format(gConnection, gExecute, sizeof(gExecute), "DELETE FROM rp_factionaccessories WHERE accessoryFactionID = %i", Factions[faction][fcID]);
  49905. mysql_tquery(gConnection, gExecute);
  49906. ResetFaction(faction);
  49907. SendAdminMessage(COLOR_RED, "Admin: %s has deleted faction %i.", ReturnNameEx(playerid, 0), faction);
  49908. }
  49909. return 1;
  49910. }*/
  49911. CMD:factions(playerid, params[])
  49912. {
  49913. gListString = "ID\tName\tOnline";
  49914. for (new i = 0; i < MAX_FACTIONS; i ++)
  49915. {
  49916. if (IsValidFactionID(i))
  49917. {
  49918. format(gListString, sizeof(gListString), "%s\n%i\t%s\t%i players", gListString, i, Factions[i][fcName], GetFactionOnlineMembers(i));
  49919. }
  49920. }
  49921. if (isnull(gListString))
  49922. {
  49923. SendErrorMessage(playerid, "There are currently no factions.");
  49924. }
  49925. else
  49926. {
  49927. Dialog_Show(playerid, FactionList, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Factions", gListString, "Close", "");
  49928. }
  49929. return 1;
  49930. }
  49931. CMD:setfaction(playerid, params[])
  49932. {
  49933. new targetid, faction, rank;
  49934. if (Players[playerid][pAdmin] < 5 && !Players[playerid][pFactionMod])
  49935. {
  49936. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  49937. }
  49938. else if (sscanf(params, "iiI(-1)", targetid, faction, rank))
  49939. {
  49940. SendSyntaxMessage(playerid, "/setfaction [playerid/name] (faction) [optional rank]");
  49941. SendInfoMessage(playerid, "Use -1 as the faction ID to reset the faction.");
  49942. return 1;
  49943. }
  49944. else if (!IsPlayerConnected(targetid))
  49945. {
  49946. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  49947. }
  49948. else if (IsPlayerNPC(targetid))
  49949. {
  49950. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  49951. }
  49952. else if (!IsPlayerLoggedIn(targetid))
  49953. {
  49954. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  49955. }
  49956. else
  49957. {
  49958. if (faction != -1)
  49959. {
  49960. if (!IsValidFactionID(faction))
  49961. {
  49962. return SendErrorMessage(playerid, "You have specified an invalid faction ID.");
  49963. }
  49964. else if (rank != -1 && (rank < 1 || rank > Factions[faction][fcMaxRanks]))
  49965. {
  49966. return SendErrorMessage(playerid, "The specified rank must range between 1 and %i.", Factions[faction][fcMaxRanks]);
  49967. }
  49968. else
  49969. {
  49970. if (rank == -1) {
  49971. rank = Factions[faction][fcMaxRanks];
  49972. }
  49973. SetPlayerFaction(targetid, faction, rank);
  49974. if (Players[playerid][pFactionMod] > 0 && Players[playerid][pAdmin] < 5)
  49975. {
  49976. SendAdminMessage(COLOR_RED, "Admin: %s has set %s's faction to %s (rank %i).", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0), Factions[faction][fcName], rank);
  49977. }
  49978. SendInfoMessage(playerid, "You have set %s's faction to: %s (rank %i).", ReturnNameEx(targetid, 0), Factions[faction][fcName], rank);
  49979. }
  49980. }
  49981. else
  49982. {
  49983. SendInfoMessage(playerid, "You have reset %s's faction.", ReturnNameEx(targetid, 0));
  49984. if (Players[targetid][pFactionCallsign] != 0)
  49985. {
  49986. g_Callsigns[ Players[targetid][pFactionCallsign] ][e_CallsignTakenBy] = INVALID_ID;
  49987. Players[targetid][pFactionCallsign] = 0;
  49988. }
  49989. ResetFactionInfo(targetid);
  49990. }
  49991. }
  49992. return 1;
  49993. }
  49994. CMD:auncuff(playerid, params[])
  49995. {
  49996. new targetid;
  49997. if (Players[playerid][pAdmin] < 1)
  49998. {
  49999. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  50000. }
  50001. else if (sscanf(params, "u", targetid))
  50002. {
  50003. return SendSyntaxMessage(playerid, "/auncuff [playerid/name]");
  50004. }
  50005. else if (!IsPlayerConnected(targetid))
  50006. {
  50007. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  50008. }
  50009. else if (IsPlayerNPC(targetid))
  50010. {
  50011. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  50012. }
  50013. else if (!IsPlayerLoggedIn(targetid))
  50014. {
  50015. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  50016. }
  50017. else if (!Players[targetid][pHandcuffed])
  50018. {
  50019. return SendErrorMessage(playerid, "The specified target is not handcuffed.");
  50020. }
  50021. else
  50022. {
  50023. SetPlayerSpecialAction(targetid, SPECIAL_ACTION_NONE);
  50024. Players[targetid][pHandcuffed] = 0;
  50025. Players[targetid][pCuffedBy] = INVALID_PLAYER_ID;
  50026. SendInfoMessage(targetid, "You have been uncuffed by an administrator.");
  50027. SendInfoMessage(playerid, "You have removed the handcuffs from %s.", ReturnNameEx(targetid, 0));
  50028. }
  50029. return 1;
  50030. }
  50031. CMD:tazer(playerid, params[])
  50032. {
  50033. cmd_taser(playerid, params);
  50034. return 1;
  50035. }
  50036. CMD:taser(playerid, params[])
  50037. {
  50038. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  50039. {
  50040. return SendErrorMessage(playerid, "You are not part of the law enforcement.");
  50041. }
  50042. else
  50043. {
  50044. Players[playerid][pAnticheat] = 2;
  50045. if (!Players[playerid][pTazer])
  50046. {
  50047. Players[playerid][pTazer] = 1;
  50048. SetPlayerAmmo(playerid, 23, 0);
  50049. GivePlayerWeapon(playerid, 23, 1);
  50050. if (IsPlayerInAnyVehicle(playerid)) {
  50051. SetPlayerArmedWeapon(playerid, 0);
  50052. } else {
  50053. SetReloadAnimation(playerid, 23);
  50054. }
  50055. ShowActionBubble(playerid, "* %s reaches for his duty belt taking out a taser and charges it.", ReturnNameEx(playerid));
  50056. SendInfoMessage(playerid, "You have taken out your taser.");
  50057. }
  50058. else
  50059. {
  50060. SetWeaponsForPlayer(playerid);
  50061. Players[playerid][pTazer] = 0;
  50062. ShowActionBubble(playerid, "* %s puts their taser on safety and holsters their taser.", ReturnNameEx(playerid));
  50063. SendInfoMessage(playerid, "You have put away your taser.");
  50064. }
  50065. }
  50066. return 1;
  50067. }
  50068. CMD:cuff(playerid, params[])
  50069. {
  50070. new targetid;
  50071. /*new item = GetInventoryItemID(playerid, "Cuffs");*/
  50072. /*if (!IsPlayerInFaction(playerid, FACTION_LEO))
  50073. {
  50074. return SendErrorMessage(playerid, "You are not part of the law enforcement.");
  50075. }*/
  50076. /*if (item == INVALID_ID)
  50077. {
  50078. return SendErrorMessage(playerid, "You don't have a pair of cuffs.");
  50079. }*/
  50080. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  50081. {
  50082. return SendErrorMessage(playerid, "You are not part of the law enforcement.");
  50083. }
  50084. else if (sscanf(params, "u", targetid))
  50085. {
  50086. return SendSyntaxMessage(playerid, "/cuff [playerid/name]");
  50087. }
  50088. else if (!IsPlayerConnected(targetid))
  50089. {
  50090. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  50091. }
  50092. else if (IsPlayerNPC(targetid))
  50093. {
  50094. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  50095. }
  50096. else if (!IsPlayerLoggedIn(targetid))
  50097. {
  50098. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  50099. }
  50100. else if (targetid == playerid)
  50101. {
  50102. return SendErrorMessage(playerid, "You can't cuff yourself.");
  50103. }
  50104. else if (!IsPlayerInRangeOfPlayer(playerid, targetid, 5.0))
  50105. {
  50106. return SendErrorMessage(playerid, "You must be in range of that player.");
  50107. }
  50108. else if (Players[targetid][pHandcuffed])
  50109. {
  50110. return SendErrorMessage(playerid, "The specified target is already cuffed.");
  50111. }
  50112. else
  50113. {
  50114. Players[targetid][pHandcuffed] = 1;
  50115. Players[targetid][pCuffedBy] = playerid;
  50116. SetPlayerSpecialAction(targetid, SPECIAL_ACTION_CUFFED);
  50117. ShowActionBubble(playerid, "* %s reaches for their handcuffs from their duty belt and slaps them around %s's wrists.", ReturnNameEx(playerid), ReturnNameEx(targetid));
  50118. SendInfoMessage(playerid, "You have handcuffed %s. Use /uncuff to remove the cuffs.", ReturnNameEx(targetid));
  50119. SendInfoMessage(targetid, "You have been handcuffed by %s.", ReturnNameEx(playerid));
  50120. }
  50121. return 1;
  50122. }
  50123. CMD:uncuff(playerid, params[])
  50124. {
  50125. new targetid;
  50126. //new item = GetInventoryItemID(playerid, "Cuff Keys");
  50127. /*if (item == INVALID_ID)
  50128. {
  50129. return SendErrorMessage(playerid, "You don't have the key.");
  50130. }*/
  50131. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  50132. {
  50133. return SendErrorMessage(playerid, "You are not part of the law enforcement.");
  50134. }
  50135. else if (sscanf(params, "u", targetid))
  50136. {
  50137. return SendSyntaxMessage(playerid, "/uncuff [playerid/name]");
  50138. }
  50139. else if (!IsPlayerConnected(targetid))
  50140. {
  50141. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  50142. }
  50143. else if (IsPlayerNPC(targetid))
  50144. {
  50145. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  50146. }
  50147. else if (!IsPlayerLoggedIn(targetid))
  50148. {
  50149. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  50150. }
  50151. /*else if (targetid == playerid)
  50152. {
  50153. return SendErrorMessage(playerid, "You can't uncuff yourself.");
  50154. }*/
  50155. else if (!IsPlayerInRangeOfPlayer(playerid, targetid, 5.0))
  50156. {
  50157. return SendErrorMessage(playerid, "You must be in range of that player.");
  50158. }
  50159. else if (!Players[targetid][pHandcuffed])
  50160. {
  50161. return SendErrorMessage(playerid, "The specified target is not cuffed.");
  50162. }
  50163. /*else if (Players[targetid][pCuffedBy] != playerid)
  50164. {
  50165. return SendErrorMessage(playerid, "You don't have the keys to the cuffs.");
  50166. }*/
  50167. else
  50168. {
  50169. Players[targetid][pHandcuffed] = 0;
  50170. Players[targetid][pCuffedBy] = INVALID_PLAYER_ID;
  50171. //AddItemToInventory(playerid, "Cuffs");
  50172. SendInfoMessage(targetid, "%s has removed the cuffs.", ReturnNameEx(playerid));
  50173. SendInfoMessage(playerid, "You have removed the cuffs from %s.", ReturnNameEx(targetid, 0));
  50174. SetPlayerSpecialAction(targetid, SPECIAL_ACTION_NONE);
  50175. }
  50176. return 1;
  50177. }
  50178. CMD:talk(playerid, params[])
  50179. {
  50180. if (isnull(params))
  50181. {
  50182. return SendSyntaxMessage(playerid, "/talk (talk text)");
  50183. }
  50184. else if (Players[playerid][pMuted])
  50185. {
  50186. return SendErrorMessage(playerid, "You cannot use this command since you're muted.");
  50187. }
  50188. SendDistanceMessage(playerid, 20.0, COLOR_WHITE, "%s says: %s", ReturnNameEx(playerid), params);
  50189. return 1;
  50190. }
  50191. CMD:t(playerid, params[])
  50192. {
  50193. cmd_talk(playerid, params);
  50194. return 1;
  50195. }
  50196. CMD:whisper(playerid, params[])
  50197. {
  50198. return cmd_w(playerid, params);
  50199. }
  50200. CMD:w(playerid, params[])
  50201. {
  50202. new targetid, text[128];
  50203. if (sscanf(params, "us[128]", targetid, text))
  50204. {
  50205. return SendSyntaxMessage(playerid, "/(w)hisper (player) (message)");
  50206. }
  50207. else if (!IsPlayerConnected(targetid))
  50208. {
  50209. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  50210. }
  50211. else if (targetid == playerid)
  50212. {
  50213. return SendErrorMessage(playerid, "You can't whisper to yourself.");
  50214. }
  50215. else if (!IsPlayerInRangeOfPlayer(playerid, targetid))
  50216. {
  50217. return SendErrorMessage(playerid, "The specified target is not near you.");
  50218. }
  50219. else if (Players[targetid][pSpectate] != INVALID_PLAYER_ID)
  50220. {
  50221. return SendErrorMessage(playerid, "The specified target is not near you.");
  50222. }
  50223. else
  50224. {
  50225. ShowActionBubble(playerid, "* %s mutters something to %s.", ReturnNameEx(playerid), ReturnNameEx(targetid));
  50226. SendSplitMessage(playerid, COLOR_PURPLE, "-> %s mutters something to %s.", ReturnNameEx(playerid), ReturnNameEx(targetid));
  50227. SendFormatMessage(playerid, COLOR_YELLOW, "Whisper to %s: %s", ReturnNameEx(targetid), text);
  50228. SendFormatMessage(targetid, COLOR_YELLOW, "%s whispers: %s", ReturnNameEx(playerid), text);
  50229. }
  50230. return 1;
  50231. }
  50232. /*
  50233. GiveCompanyMoney(company, money)
  50234. {
  50235. new tax = percent(money, Server[TaxRate]);
  50236. if (IsValidCompanyID(company))
  50237. {
  50238. Companies[company][cSafe] += money - tax;
  50239. SaveCompany(company);
  50240. Server[TaxVault] += tax;
  50241. SaveInformation();
  50242. }
  50243. }
  50244. */
  50245. CMD:charity(playerid, params[])
  50246. {
  50247. new amount;
  50248. new target[64];
  50249. new tax = percent(amount, Server[TaxRate]);
  50250. if (sscanf(params,"i",amount))
  50251. {
  50252. return SendSyntaxMessage(playerid, "/charity [amount]");
  50253. }
  50254. else if (amount < 1 || amount > Players[playerid][pPocketMoney])
  50255. {
  50256. return SendErrorMessage(playerid,"You don't have that much money.");
  50257. }
  50258. else
  50259. {
  50260. Players[playerid][pPocketMoney] -= amount;
  50261. Server[TaxVault] += tax;
  50262. SendInfoMessage(playerid,"You have paid %s to charity.", FormatNumber(amount));
  50263. format(target,sizeof(target),"Charity");
  50264. format(gExecute, sizeof(gExecute), "INSERT INTO rp_paylogs (Player, Target, Price, Date) VALUES('%s', '%s', %i, NOW())", ReturnName(playerid), target, amount );
  50265. mysql_tquery(gConnection, gExecute);
  50266. PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
  50267. SaveInformation();
  50268. }
  50269. return 1;
  50270. }
  50271. CMD:servertime(playerid, params[])
  50272. {
  50273. new Hour, Minute, Second;
  50274. gettime(Hour, Minute, Second);
  50275. new Year, Month, Day;
  50276. getdate(Year, Month, Day);
  50277. SendFormatMessage(playerid,COLOR_YELLOW,"SERVER TIME: %02d/%02d/%02d %02d:%02d:%02d", Day, Month, Year, Hour, Minute, Second);
  50278. return 1;
  50279. }
  50280. CMD:pay(playerid, params[])
  50281. {
  50282. new targetid, amount;
  50283. if (sscanf(params, "ui", targetid, amount))
  50284. {
  50285. return SendSyntaxMessage(playerid, "/pay [playerid/name] [amount]");
  50286. }
  50287. else if (!IsPlayerConnected(targetid))
  50288. {
  50289. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  50290. }
  50291. else if (IsPlayerNPC(targetid))
  50292. {
  50293. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  50294. }
  50295. else if (targetid == playerid)
  50296. {
  50297. return SendErrorMessage(playerid, "You can't give money to yourself.");
  50298. }
  50299. else if (!IsPlayerInRangeOfPlayer(playerid, targetid))
  50300. {
  50301. return SendErrorMessage(playerid, "The specified target is not near you.");
  50302. }
  50303. else if (amount < 1 || amount > Players[playerid][pPocketMoney])
  50304. {
  50305. return SendErrorMessage(playerid, "You don't have that much money.");
  50306. }
  50307. else if (Players[targetid][pSpectate] != INVALID_PLAYER_ID)
  50308. {
  50309. return SendErrorMessage(playerid, "The specified target is not near you.");
  50310. }
  50311. else
  50312. {
  50313. Players[targetid][pPocketMoney] += amount;
  50314. Players[playerid][pPocketMoney] -= amount;
  50315. PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
  50316. PlayerPlaySound(targetid, 1052, 0.0, 0.0, 0.0);
  50317. ShowActionBubble(playerid, "* %s takes some money from his wallet and passes it to %s.", ReturnNameEx(playerid), ReturnNameEx(targetid));
  50318. SendInfoMessage(playerid, "You have given %s from your wallet to %s.", FormatNumber(amount), ReturnNameEx(targetid));
  50319. SendInfoMessage(targetid, "%s has given you %s from their wallet.", ReturnNameEx(playerid), FormatNumber(amount));
  50320. if (!strcmp(ReturnIP(playerid), ReturnIP(targetid)))
  50321. {
  50322. SendAdminMessage(COLOR_RED, "Admin: %s (IP: %s) has paid %s to %s (IP: %s).", ReturnNameEx(playerid, 0), ReturnIP(playerid), FormatNumber(amount), ReturnNameEx(targetid, 0), ReturnIP(targetid));
  50323. }
  50324. format(gExecute, sizeof(gExecute), "INSERT INTO rp_paylogs (Player, Target, Price, Date) VALUES('%s', '%s', %i, NOW())", ReturnName(playerid), ReturnName(targetid), amount);
  50325. mysql_tquery(gConnection, gExecute);
  50326. if (amount > 50000)
  50327. {
  50328. SendAdminMessage(COLOR_RED, "Admin: %s has paid %s to %s.", ReturnNameEx(playerid, 0), FormatNumber(amount), ReturnNameEx(targetid, 0));
  50329. new notereason[128];
  50330. format(notereason, sizeof(notereason), "Paid: \"%s\"", FormatNumber(amount) );
  50331. //format(gExecute, sizeof(gExecute), "INSERT INTO rp_anotes (Player, Reason, Date, Issuer) VALUES(%i, '%s', NOW(), '%s')", Players[targetid][pID], mysql_escaped(notereason), ReturnName(playerid));
  50332. format(gExecute, sizeof(gExecute), "INSERT INTO rp_anotes (Player, PlayerName, Reason, Date, IssuerID, Issuer) VALUES(%i, '%s', '%s', NOW(), %i, '%s')", Players[targetid][pID], ReturnName(targetid), mysql_escaped(notereason), Players[playerid][pID], ReturnName(playerid));
  50333. mysql_tquery(gConnection, gExecute);
  50334. }
  50335. }
  50336. return 1;
  50337. }
  50338. CMD:givemoney(playerid, params[])
  50339. {
  50340. new targetid, amount;
  50341. if (Players[playerid][pAdmin] < 5)
  50342. {
  50343. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  50344. }
  50345. else if (sscanf(params, "ui", targetid, amount))
  50346. {
  50347. return SendSyntaxMessage(playerid, "/givemoney [playerid/name] (amount)");
  50348. }
  50349. else if (!IsPlayerConnected(targetid))
  50350. {
  50351. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  50352. }
  50353. else if (!IsPlayerLoggedIn(targetid))
  50354. {
  50355. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  50356. }
  50357. else
  50358. {
  50359. Players[targetid][pPocketMoney] = Players[targetid][pPocketMoney] + amount;
  50360. SendAdminMessage(COLOR_RED, "Admin: %s has given %s to %s.", ReturnNameEx(playerid, 0), FormatNumber(amount), ReturnNameEx(targetid, 0));
  50361. new notereason[128];
  50362. format(notereason, sizeof(notereason), "Given Money: \"%s\"", FormatNumber(amount) );
  50363. //format(gExecute, sizeof(gExecute), "INSERT INTO rp_anotes (Player, Reason, Date, Issuer) VALUES(%i, '%s', NOW(), '%s')", Players[targetid][pID], mysql_escaped(notereason), ReturnName(playerid));
  50364. format(gExecute, sizeof(gExecute), "INSERT INTO rp_anotes (Player, PlayerName, Reason, Date, IssuerID, Issuer) VALUES(%i, '%s', '%s', NOW(), %i, '%s')", Players[targetid][pID], ReturnName(targetid), mysql_escaped(notereason), Players[playerid][pID], ReturnName(playerid));
  50365. mysql_tquery(gConnection, gExecute);
  50366. }
  50367. return 1;
  50368. }
  50369. CMD:lastactive(playerid, params[])
  50370. {
  50371. new name[MAX_PLAYER_NAME];
  50372. if (sscanf(params, "s["#MAX_PLAYER_NAME"]", name))
  50373. {
  50374. return SendSyntaxMessage(playerid, "/lastactive (account name)");
  50375. }
  50376. else if (GetPlayerID(name) != INVALID_PLAYER_ID)
  50377. {
  50378. return SendInfoMessage(playerid, "%s is currently online.", name);
  50379. }
  50380. else
  50381. {
  50382. format(gExecute, sizeof(gExecute), "SELECT LoginDate FROM rp_accounts WHERE Username = '%s'", mysql_escaped(name));
  50383. mysql_tquery(gConnection, gExecute, "OnPlayerCheckActivity", "is", playerid, name);
  50384. }
  50385. return 1;
  50386. }
  50387. CMD:addarrestpoint(playerid, params[])
  50388. {
  50389. if (Players[playerid][pAdmin] < 5)
  50390. {
  50391. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  50392. }
  50393. else if (GetClosestArrestPoint(playerid) != INVALID_ID)
  50394. {
  50395. return SendErrorMessage(playerid, "There is another arrest point nearby.");
  50396. }
  50397. else
  50398. {
  50399. new id = GetNextArrestPointID();
  50400. if (id == INVALID_ID)
  50401. {
  50402. return SendErrorMessage(playerid, "There are no available arrest point slots.");
  50403. }
  50404. else
  50405. {
  50406. GetPlayerPos(playerid, ArrestPoints[id][apX], ArrestPoints[id][apY], ArrestPoints[id][apZ]);
  50407. ArrestPoints[id][apExists] = 1;
  50408. ArrestPoints[id][apInterior] = GetPlayerInterior(playerid);
  50409. ArrestPoints[id][apWorld] = GetPlayerVirtualWorld(playerid);
  50410. ArrestPoints[id][apPickup] = INVALID_ID;
  50411. ArrestPoints[id][apText] = INVALID_3DTEXT_ID;
  50412. format(gExecute, sizeof(gExecute), "INSERT INTO rp_arrestpoints (apX, apY, apZ, apInterior, apWorld) VALUES(%.4f, %.4f, %.4f, %i, %i)", ArrestPoints[id][apX], ArrestPoints[id][apY], ArrestPoints[id][apZ], ArrestPoints[id][apInterior], ArrestPoints[id][apWorld]);
  50413. mysql_tquery(gConnection, gExecute, "OnArrestPointAdded", "i", id);
  50414. UpdateArrestPoint(id);
  50415. SendInfoMessage(playerid, "You have added arrest point %i.", id);
  50416. }
  50417. }
  50418. return 1;
  50419. }
  50420. CMD:gotoarrestpoint(playerid, params[])
  50421. {
  50422. new point;
  50423. if (Players[playerid][pAdmin] < 5)
  50424. {
  50425. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  50426. }
  50427. else if (sscanf(params, "i", point))
  50428. {
  50429. return SendSyntaxMessage(playerid, "/gotoarrestpoint (point ID)");
  50430. }
  50431. else if (!IsValidArrestPointID(point))
  50432. {
  50433. return SendErrorMessage(playerid, "You have specified an invalid point ID.");
  50434. }
  50435. else
  50436. {
  50437. SetPlayerPosEx(playerid, ArrestPoints[point][apX], ArrestPoints[point][apY], ArrestPoints[point][apZ], 0.0, ArrestPoints[point][apInterior], ArrestPoints[point][apWorld]);
  50438. SendInfoMessage(playerid, "You have teleported to arrest point %i.", point);
  50439. }
  50440. return 1;
  50441. }
  50442. CMD:deletearrestpoint(playerid, params[])
  50443. {
  50444. new point;
  50445. if (Players[playerid][pAdmin] < 5)
  50446. {
  50447. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  50448. }
  50449. else if (sscanf(params, "i", point))
  50450. {
  50451. return SendSyntaxMessage(playerid, "/deletearrestpoint (point ID)");
  50452. }
  50453. else if (!IsValidArrestPointID(point))
  50454. {
  50455. return SendErrorMessage(playerid, "You have specified an invalid point ID.");
  50456. }
  50457. else
  50458. {
  50459. DestroyDynamic3DTextLabel(ArrestPoints[point][apText]);
  50460. DestroyDynamicPickup(ArrestPoints[point][apPickup]);
  50461. format(gExecute, sizeof(gExecute), "DELETE FROM rp_arrestpoints WHERE apID = %i", ArrestPoints[point][apID]);
  50462. mysql_tquery(gConnection, gExecute);
  50463. ArrestPoints[point][apExists] = 0;
  50464. SendInfoMessage(playerid, "You have deleted arrest point %i.", point);
  50465. }
  50466. return 1;
  50467. }
  50468. CMD:radio(playerid, params[])
  50469. {
  50470. return cmd_r(playerid, params);
  50471. }
  50472. CMD:deptradio(playerid, params[])
  50473. {
  50474. return cmd_dr(playerid, params);
  50475. }
  50476. CMD:r(playerid, params[])
  50477. {
  50478. new item = GetInventoryItemID(playerid, "Portable Radio");
  50479. if (item == INVALID_ID && GetPlayerFactionType(playerid) != FACTION_LEO)
  50480. {
  50481. return SendErrorMessage(playerid, "You don't have a portable radio.");
  50482. }
  50483. if (!Players[playerid][pChannel])
  50484. return SendErrorMessage(playerid, "Your radio does not have any frequency set.");
  50485. if (isnull(params))
  50486. return SendSyntaxMessage(playerid, "/(r)adio [radio message]");
  50487. if(Players[playerid][pChannel] == 911 && GetPlayerFactionType(playerid) != FACTION_LEO) return SendErrorMessage(playerid, "This is a government only frequency.");
  50488. foreach (new i : Player)
  50489. {
  50490. if (Players[playerid][pChannel] == 911 && GetPlayerFactionType(playerid) != FACTION_LEO) continue;
  50491. if (Players[i][pChannel] == Players[playerid][pChannel])
  50492. {
  50493. SendFormatMessage(i, COLOR_BLUE, "** [FREQ: %i] %s: %s **", Players[playerid][pChannel], ReturnNameEx(playerid), params);
  50494. }
  50495. }
  50496. //SendDistanceMessage(playerid, 20.0, COLOR_WHITE, "(Radio) %s says: %s", ReturnNameEx(playerid), params);
  50497. foreach (new i : Player)
  50498. {
  50499. if (IsPlayerInRangeOfPlayer(i, playerid, 20.0))
  50500. {
  50501. if (i != playerid)
  50502. {
  50503. SendFormatMessage(i, COLOR_WHITE, "(Radio) %s says: %s", ReturnNameEx(playerid), params);
  50504. }
  50505. }
  50506. }
  50507. /*
  50508. foreach (new i : Player)
  50509. {
  50510. if (IsPlayerInRangeOfPlayer(i, playerid, distance))
  50511. {
  50512. SendSplitMessage(i, color, str);
  50513. }
  50514. }
  50515. */
  50516. new cmd[128], cmdtext[128];
  50517. format(cmd,sizeof(cmd),"/r %i", Players[playerid][pChannel]);
  50518. format(cmdtext,sizeof(cmdtext),"(Radio) %s says: %s", ReturnNameEx(playerid), params);
  50519. AddChatLog(playerid, cmd, cmdtext);
  50520. return 1;
  50521. }
  50522. CMD:rlow(playerid, params[])
  50523. {
  50524. new item = GetInventoryItemID(playerid, "Portable Radio");
  50525. if (item == INVALID_ID)
  50526. {
  50527. return SendErrorMessage(playerid, "You don't have a portable radio.");
  50528. }
  50529. if (!Players[playerid][pChannel])
  50530. return SendErrorMessage(playerid, "Your radio does not have any frequency set.");
  50531. if (isnull(params))
  50532. return SendSyntaxMessage(playerid, "/rlow [radio message]");
  50533. if(Players[playerid][pChannel] == 911 && GetPlayerFactionType(playerid) != FACTION_LEO) return SendErrorMessage(playerid, "This is a government only frequency.");
  50534. foreach (new i : Player)
  50535. {
  50536. if (Players[playerid][pChannel] == 911 && GetPlayerFactionType(playerid) != FACTION_LEO) continue;
  50537. if (Players[i][pChannel] == Players[playerid][pChannel])
  50538. {
  50539. SendFormatMessage(i, COLOR_RADIO, "** [FREQ: %i] %s: %s **", Players[playerid][pChannel], ReturnNameEx(playerid), params);
  50540. }
  50541. }
  50542. //SendDistanceMessage(playerid, 5.0, COLOR_LIGHTGREY, "(Radio) %s says [low]: %s", ReturnNameEx(playerid), params);
  50543. new cmd[128], cmdtext[128];
  50544. format(cmd,sizeof(cmd),"/rlow %i", Players[playerid][pChannel]);
  50545. format(cmdtext,sizeof(cmdtext),"(Radio) %s says: %s", ReturnNameEx(playerid), params);
  50546. AddChatLog(playerid, cmd, cmdtext);
  50547. return 1;
  50548. }
  50549. CMD:f(playerid, params[])
  50550. {
  50551. new faction = Players[playerid][pFaction];
  50552. if (faction == INVALID_ID)
  50553. {
  50554. return SendErrorMessage(playerid, "You are not in a faction.");
  50555. }
  50556. else if (Players[playerid][pMuted])
  50557. {
  50558. return SendErrorMessage(playerid, "You cannot use this command since you're muted.");
  50559. }
  50560. else if (isnull(params))
  50561. {
  50562. return SendSyntaxMessage(playerid, "/(f)action (faction chat)");
  50563. }
  50564. else
  50565. {
  50566. SendFactionMessage(faction, COLOR_FACTIONCHAT, "(( %s %s: %s ))", GetPlayerFactionRank(playerid), ReturnNameEx(playerid, 0), params);
  50567. new text[128];
  50568. format(text,sizeof(text),"(( %s %s: %s ))", GetPlayerFactionRank(playerid), ReturnNameEx(playerid, 0), params);
  50569. AddChatLog(playerid, "/f", text);
  50570. foreach (new i : Player)
  50571. {
  50572. if (Players[i][pBigEars])
  50573. {
  50574. SendSplitMessage(i, COLOR_FACTIONCHAT, "(( %s %s: %s ))", GetPlayerFactionRank(playerid), ReturnNameEx(playerid, 0), params);
  50575. }
  50576. }
  50577. }
  50578. return 1;
  50579. }
  50580. CMD:quitsession(playerid, params[])
  50581. {
  50582. if(Players[playerid][pSession] == 1)
  50583. {
  50584. Players[playerid][pSession] = 0;
  50585. Players[playerid][pSessionCaller] = -1;
  50586. SendErrorMessage(playerid, "You have left your current session.");
  50587. }
  50588. else SendErrorMessage(playerid, "You are not in any session currently.");
  50589. return 1;
  50590. }
  50591. CMD:ses(playerid, params[])
  50592. {
  50593. new input[180], string[180];
  50594. if(sscanf(params, "s[180]", input)) return SendSyntaxMessage(playerid, "/ses [text]");
  50595. if(Players[playerid][pSession] == 1)
  50596. {
  50597. format(string, sizeof string, "{58E858}[%s] %s: %s", Factions[Players[playerid][pSessionCaller]][fcName], ReturnNameEx(playerid), input);
  50598. foreach(new i : Player)
  50599. {
  50600. SendSplitMessage(i, -1, string);
  50601. }
  50602. }
  50603. return 1;
  50604. }
  50605. CMD:removefromsession(playerid, params[])
  50606. {
  50607. new targetid;
  50608. if (!IsPlayerInFaction(playerid, FACTION_NEWS))
  50609. {
  50610. return SendErrorMessage(playerid, "You are not part of any news agency.");
  50611. }
  50612. else if (sscanf(params, "u", targetid))
  50613. {
  50614. return SendSyntaxMessage(playerid, "/removefromsession [playerid/name]");
  50615. }
  50616. else if (!IsPlayerConnected(targetid))
  50617. {
  50618. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  50619. }
  50620. else if (IsPlayerNPC(targetid))
  50621. {
  50622. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  50623. }
  50624. else if (!IsPlayerLoggedIn(targetid))
  50625. {
  50626. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  50627. }
  50628. else if(Players[targetid][pSession] == 0)
  50629. {
  50630. return SendErrorMessage(playerid, "Target is not in any session.");
  50631. }
  50632. else if(Players[targetid][pSessionCaller] != GetPlayerFactionID(playerid))
  50633. {
  50634. return SendErrorMessage(playerid, "Player is not in your news session.");
  50635. }
  50636. else
  50637. {
  50638. new factID = GetPlayerFactionID(playerid);
  50639. Players[targetid][pSession] = 0;
  50640. Players[targetid][pSessionCaller] = -1;
  50641. new string[128];
  50642. format(string, sizeof string, "{58E858)}[%s] {FFFFFF}You have removed %s from their session.", Factions[factID][fcName],ReturnName(targetid));
  50643. SendClientMessage(playerid, -1, string);
  50644. format(string, sizeof string, "{58E858)}[%s] {FFFFFF}You have been removed from the news session by %s.", Factions[factID][fcName],ReturnName(playerid));
  50645. SendClientMessage(targetid, -1, string);
  50646. }
  50647. return 1;
  50648. }
  50649. CMD:addtosession(playerid, params[])
  50650. {
  50651. new targetid;
  50652. if (!IsPlayerInFaction(playerid, FACTION_NEWS))
  50653. {
  50654. return SendErrorMessage(playerid, "You are not part of any news agency.");
  50655. }
  50656. else if (sscanf(params, "u", targetid))
  50657. {
  50658. return SendSyntaxMessage(playerid, "/addtosession [playerid/name]");
  50659. }
  50660. else if (!IsPlayerConnected(targetid))
  50661. {
  50662. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  50663. }
  50664. else if (IsPlayerNPC(targetid))
  50665. {
  50666. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  50667. }
  50668. else if (!IsPlayerLoggedIn(targetid))
  50669. {
  50670. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  50671. }
  50672. else if (!IsPlayerInRangeOfPlayer(playerid, targetid))
  50673. {
  50674. return SendErrorMessage(playerid, "The specified target is not near you.");
  50675. }
  50676. else if(Players[targetid][pSession] == 1)
  50677. {
  50678. return SendErrorMessage(playerid, "Target is already in a session.");
  50679. }
  50680. else
  50681. {
  50682. new factID = GetPlayerFactionID(playerid);
  50683. Players[targetid][pSessionCaller] = factID;
  50684. Players[targetid][pSession] = 1;
  50685. new string[128];
  50686. format(string, sizeof string, "{58E858)}[%s] {FFFFFF}You have added %s to the session.", Factions[factID][fcName], ReturnName(targetid));
  50687. SendClientMessage(playerid, -1, string);
  50688. format(string, sizeof string, "{58E858)}[%s] {FFFFFF}You have been added to the session by %s.", Factions[factID][fcName], ReturnName(playerid));
  50689. SendClientMessage(targetid, -1, string);
  50690. }
  50691. return 1;
  50692. }
  50693. CMD:d(playerid, params[])
  50694. {
  50695. cmd_dr(playerid, params);
  50696. return 1;
  50697. }
  50698. CMD:dr(playerid, params[])
  50699. {
  50700. new faction = Players[playerid][pFaction];
  50701. if (faction == INVALID_ID)
  50702. {
  50703. return SendErrorMessage(playerid, "You are not in a faction.");
  50704. }
  50705. else if (Players[playerid][pMuted])
  50706. {
  50707. return SendErrorMessage(playerid, "You cannot use this command since you're muted.");
  50708. }
  50709. else if (Factions[faction][fcType] == FACTION_ILLEGAL || Factions[faction][fcType] == FACTION_NEWS)
  50710. {
  50711. return SendErrorMessage(playerid, "You can't use this in an illegal faction.");
  50712. }
  50713. else if (isnull(params))
  50714. {
  50715. return SendSyntaxMessage(playerid, "/(d)ept(r)adio (department radio)");
  50716. }
  50717. else
  50718. {
  50719. SendDepartmentMessage(COLOR_ORANGE,"** [%s] %s %s: %s **",GetInitials(Factions[faction][fcName]), GetPlayerFactionRank(playerid),ReturnNameEx(playerid), params);
  50720. new text[128];
  50721. format(text,sizeof(text),"** [%s] %s %s: %s **", GetInitials(Factions[faction][fcName]), GetPlayerFactionRank(playerid), ReturnNameEx(playerid), params);
  50722. AddChatLog(playerid, "/dr", text);
  50723. }
  50724. return 1;
  50725. }
  50726. CMD:ofackick(playerid, params[])
  50727. {
  50728. new player[24];
  50729. if (Players[playerid][pFaction] == INVALID_ID)
  50730. {
  50731. return SendErrorMessage(playerid, "You are not in a faction.");
  50732. }
  50733. else if (sscanf(params, "s["#MAX_PLAYER_NAME"]", player))
  50734. {
  50735. return SendSyntaxMessage(playerid, "/ofackick (player)");
  50736. }
  50737. else if (!PlayerHasLeadership(playerid))
  50738. {
  50739. return SendErrorMessage(playerid, "You cannot use this command at your current rank.");
  50740. }
  50741. else
  50742. {
  50743. format(gExecute, sizeof(gExecute), "SELECT ID FROM rp_accounts WHERE Username = '%s' AND FactionID = %i AND FactionRank <= %i", mysql_escaped(player), Players[playerid][pFactionID], Players[playerid][pFactionRank]);
  50744. mysql_tquery(gConnection, gExecute, "OnPlayerFactionKick", "is", playerid, player);
  50745. }
  50746. return 1;
  50747. }
  50748. /*CMD:addcallsign(playerid, params[])
  50749. {
  50750. new callsign[128];
  50751. if (Players[playerid][pFaction] == INVALID_ID)
  50752. {
  50753. return SendErrorMessage(playerid, "You are not in a faction.");
  50754. }
  50755. else if (sscanf(params, "s[128]", callsign))
  50756. {
  50757. return SendSyntaxMessage(playerid, "/addcallsign [callsign]");
  50758. }
  50759. else if (!PlayerHasLeadership(playerid))
  50760. {
  50761. return SendErrorMessage(playerid, "You cannot use this command at your current rank.");
  50762. }
  50763. else
  50764. {
  50765. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_callsigns WHERE Callsign = '%s'", mysql_escaped(callsign));
  50766. mysql_tquery(gConnection, gExecute, "OnPlayerAddCallsign", "is", playerid, callsign);*/
  50767. /*format(gExecute, sizeof(gExecute), "INSERT INTO rp_callsigns (Faction, Callsign) VALUES(%i, '%s')", Players[playerid][pFaction], mysql_escaped(callsign));
  50768. mysql_tquery(gConnection, gExecute);
  50769. ListContacts(playerid);
  50770. SendInfoMessage(playerid, "You have added a contact: %s (%i).", gTargetName[playerid], number);*/
  50771. /*}
  50772. }*/
  50773. /*forward OnPlayerAddCallsign(playerid);
  50774. public OnPlayerAddCallsign(playerid)
  50775. {
  50776. if (!cache_get_row_count(gConnection))
  50777. {
  50778. format(gExecute, sizeof(gExecute), "INSERT INTO rp_callsigns (Faction, Callsign) VALUES(%i, '%s')", Players[playerid][pFaction], callsign);
  50779. mysql_tquery(gConnection, gExecute);
  50780. SendInfoMessage(playerid, "Callsign '%s' added.", callsign);
  50781. }
  50782. else
  50783. {
  50784. SendErrorMessage(playerid, "This callsign already exists.");
  50785. }
  50786. }
  50787. ListCallsigns(playerid)
  50788. {
  50789. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_callsigns WHERE Faction = %i", Players[playerid][pFaction]);
  50790. mysql_tquery(gConnection, gExecute, "OnPlayerListCallsigns", "i", playerid);
  50791. }
  50792. forward OnPlayerListCallsigns(playerid);
  50793. public OnPlayerListCallsigns(playerid)
  50794. {
  50795. new
  50796. rows = cache_get_row_count(gConnection),
  50797. callsign[128],
  50798. string[1024];
  50799. strcat(string, "Add Callsign");
  50800. for (new i = 0; i < rows; i ++)
  50801. {
  50802. cache_get_field_content(i, "Callsign", callsign, gConnection);
  50803. format(string, sizeof(string), "%s\n%s", string, callsign);
  50804. gListedItems[playerid][i] = cache_get_field_content_int(i, "ID");
  50805. }
  50806. Dialog_Show(playerid, Contacts, DIALOG_STYLE_LIST, "{FFFFFF}Callsigns", string, "Select", "Cancel");
  50807. }*/
  50808. /*
  50809. forward OnPlayerListContacts(playerid);
  50810. public OnPlayerListContacts(playerid)
  50811. {
  50812. new
  50813. rows = cache_get_row_count(gConnection),
  50814. contact[MAX_PLAYER_NAME],
  50815. string[1024];
  50816. strcat(string, "Add Contact");
  50817. for (new i = 0; i < rows; i ++)
  50818. {
  50819. cache_get_field_content(i, "Contact", contact, gConnection);
  50820. format(string, sizeof(string), "%s\n%s (%i)", string, contact, cache_get_field_content_int(i, "Number"));
  50821. gListedItems[playerid][i] = cache_get_field_content_int(i, "ID");
  50822. }
  50823. Dialog_Show(playerid, Contacts, DIALOG_STYLE_LIST, "{FFFFFF}My contacts", string, "Select", "Cancel");
  50824. }
  50825. ListCallsigns(playerid)
  50826. {
  50827. if (Players[playerid][pPhone] > 0)
  50828. {
  50829. format(gExecute, sizeof(gExecute), "SELECT * FROM rp_callsigns WHERE Phone = %i", Players[playerid][pPhone]);
  50830. mysql_tquery(gConnection, gExecute, "OnPlayerListContacts", "i", playerid);
  50831. }
  50832. }
  50833. forward OnMdcSearchPlayer(playerid, search[]);
  50834. public OnMdcSearchPlayer(playerid, search[])
  50835. {
  50836. if (!cache_get_row_count(gConnection))
  50837. {
  50838. Dialog_Show(playerid, MDC_LookUp, DIALOG_STYLE_INPUT, "{FFFFFF}Search Player", "That player was not found.\n\nPlease input the full name of the player:", "Submit", "Cancel");
  50839. }
  50840. else
  50841. {
  50842. strcpy(gTargetName[playerid], search, MAX_PLAYER_NAME);
  50843. Players[playerid][pSelected] = cache_get_field_content_int(0, "ID");
  50844. ShowMDCLookupPlayer(playerid);
  50845. }
  50846. }
  50847. */
  50848. CMD:facinvite(playerid, params[])
  50849. {
  50850. new targetid;
  50851. if (Players[playerid][pFaction] == INVALID_ID)
  50852. {
  50853. return SendErrorMessage(playerid, "You are not in a faction.");
  50854. }
  50855. else if (sscanf(params, "u", targetid))
  50856. {
  50857. return SendSyntaxMessage(playerid, "/facinvite [playerid/name]");
  50858. }
  50859. else if (!IsPlayerConnected(targetid))
  50860. {
  50861. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  50862. }
  50863. else if (IsPlayerNPC(targetid))
  50864. {
  50865. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  50866. }
  50867. else if (targetid == playerid)
  50868. {
  50869. return SendErrorMessage(playerid, "You can't invite yourself to a faction.");
  50870. }
  50871. else if (!PlayerHasLeadership(playerid))
  50872. {
  50873. return SendErrorMessage(playerid, "You cannot use this command at your current rank.");
  50874. }
  50875. else if (Players[targetid][pFaction] != INVALID_ID)
  50876. {
  50877. return SendErrorMessage(playerid, "The specifeid target is already in a faction.");
  50878. }
  50879. else
  50880. {
  50881. Players[targetid][pFactionOffer] = playerid;
  50882. SendInfoMessage(playerid, "You have invited %s to join your faction.", ReturnNameEx(targetid));
  50883. SendInfoMessage(targetid, "%s has invited you to join %s - use /acceptinvite to accept.", ReturnNameEx(playerid), Factions[Players[playerid][pFaction]][fcName]);
  50884. }
  50885. return 1;
  50886. }
  50887. CMD:fackick(playerid, params[])
  50888. {
  50889. new targetid;
  50890. if (Players[playerid][pFaction] == INVALID_ID)
  50891. {
  50892. return SendErrorMessage(playerid, "You are not in a faction.");
  50893. }
  50894. else if (sscanf(params, "u", targetid))
  50895. {
  50896. return SendSyntaxMessage(playerid, "/fackick [playerid/name]");
  50897. }
  50898. else if (!IsPlayerConnected(targetid))
  50899. {
  50900. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  50901. }
  50902. else if (IsPlayerNPC(targetid))
  50903. {
  50904. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  50905. }
  50906. else if (targetid == playerid)
  50907. {
  50908. return SendErrorMessage(playerid, "You can't kick yourself from a faction.");
  50909. }
  50910. else if (!PlayerHasLeadership(playerid))
  50911. {
  50912. return SendErrorMessage(playerid, "You cannot use this command at your current rank.");
  50913. }
  50914. else if (Players[targetid][pFaction] != Players[playerid][pFaction])
  50915. {
  50916. return SendErrorMessage(playerid, "The specific target is not in your faction.");
  50917. }
  50918. else
  50919. {
  50920. ResetFactionInfo(targetid);
  50921. SendInfoMessage(playerid, "You have kicked %s from the faction.", ReturnNameEx(targetid));
  50922. SendInfoMessage(targetid, "%s has kicked you from the faction.", ReturnNameEx(playerid));
  50923. }
  50924. return 1;
  50925. }
  50926. CMD:facleadership(playerid, params[])
  50927. {
  50928. new targetid;
  50929. if (Players[playerid][pFaction] == INVALID_ID)
  50930. {
  50931. return SendErrorMessage(playerid, "You are not in a faction.");
  50932. }
  50933. else if (sscanf(params, "u", targetid))
  50934. {
  50935. return SendSyntaxMessage(playerid, "/facleadership [playerid/name]");
  50936. }
  50937. else if (!IsPlayerConnected(targetid))
  50938. {
  50939. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  50940. }
  50941. else if (IsPlayerNPC(targetid))
  50942. {
  50943. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  50944. }
  50945. else if (targetid == playerid)
  50946. {
  50947. return SendErrorMessage(playerid, "You can't use this command on yourself.");
  50948. }
  50949. else if (!PlayerHasLeadership(playerid))
  50950. {
  50951. return SendErrorMessage(playerid, "You cannot use this command at your current rank.");
  50952. }
  50953. else if (Players[targetid][pFaction] != Players[playerid][pFaction])
  50954. {
  50955. return SendErrorMessage(playerid, "The specific target is not in your faction.");
  50956. }
  50957. else
  50958. {
  50959. Players[targetid][pFactionLeader] = !Players[targetid][pFactionLeader];
  50960. if (Players[targetid][pFactionLeader])
  50961. {
  50962. SendInfoMessage(playerid, "You have granted %s faction leadership permissions.", ReturnNameEx(targetid));
  50963. SendInfoMessage(targetid, "%s has granted you faction leadership permissions.", ReturnNameEx(playerid));
  50964. }
  50965. else
  50966. {
  50967. SendInfoMessage(playerid, "You have revoked %s's faction leadership permissions.", ReturnNameEx(targetid));
  50968. SendInfoMessage(targetid, "%s has revoked your faction leadership permissions.", ReturnNameEx(playerid));
  50969. }
  50970. }
  50971. return 1;
  50972. }
  50973. CMD:setrank(playerid, params[])
  50974. {
  50975. new targetid;
  50976. if (Players[playerid][pFaction] == INVALID_ID)
  50977. {
  50978. return SendErrorMessage(playerid, "You are not in a faction.");
  50979. }
  50980. else if (sscanf(params, "u", targetid))
  50981. {
  50982. return SendSyntaxMessage(playerid, "/setrank [playerid/name]");
  50983. }
  50984. else if (!IsPlayerConnected(targetid))
  50985. {
  50986. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  50987. }
  50988. else if (IsPlayerNPC(targetid))
  50989. {
  50990. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  50991. }
  50992. else if (targetid == playerid)
  50993. {
  50994. return SendErrorMessage(playerid, "You can't change your own rank.");
  50995. }
  50996. else if (!PlayerHasLeadership(playerid))
  50997. {
  50998. return SendErrorMessage(playerid, "You cannot use this command at your current rank.");
  50999. }
  51000. else if (Players[targetid][pFaction] != Players[playerid][pFaction])
  51001. {
  51002. return SendErrorMessage(playerid, "The specific target is not in your faction.");
  51003. }
  51004. else
  51005. {
  51006. new
  51007. rankNames[(MAX_RANK_NAME + 8) * MAX_FACTION_RANKS];
  51008. for (new i = 1; i <= Factions[Players[playerid][pFaction]][fcMaxRanks]; i ++) {
  51009. format(rankNames, sizeof(rankNames), "%s\n%i) %s", rankNames, i, GetFactionRank(Players[playerid][pFaction], i));
  51010. }
  51011. Dialog_Show(playerid, SetRank, DIALOG_STYLE_LIST, "{FFFFFF}Change Rank", rankNames, "Change", "Cancel");
  51012. Players[playerid][pChangeRank] = targetid;
  51013. }
  51014. return 1;
  51015. }
  51016. CMD:setbadge(playerid, params[])
  51017. {
  51018. new targetid, badge;
  51019. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  51020. return SendErrorMessage(playerid, "You are not part of the law enforcement.");
  51021. if(sscanf(params,"ui", targetid, badge))
  51022. return SendSyntaxMessage(playerid, "/setbadge [playerid/name] [badge]");
  51023. if(!IsPlayerConnected(targetid))
  51024. return SendErrorMessage(playerid,"The specified target doesn't exist.");
  51025. if(IsPlayerNPC(targetid))
  51026. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  51027. if(!IsPlayerLoggedIn(targetid))
  51028. return SendErrorMessage(playerid,"The specified target is not logged in yet.");
  51029. if(Players[targetid][pFaction] != Players[playerid][pFaction])
  51030. return SendErrorMessage(playerid,"The specific target is not in your faction.");
  51031. if (Players[playerid][pFactionRank] < Factions[Players[playerid][pFaction]][fcMaxRanks] / 2)
  51032. return SendErrorMessage(playerid,"You cannot use this command at your current rank.");
  51033. if(GetPlayerFactionType(playerid) != FACTION_LEO)
  51034. return SendErrorMessage(playerid,"Only for law enforcement.");
  51035. Players[playerid][pBadge] = badge;
  51036. SendInfoMessage(playerid,"You have set %s's badge to %i.",ReturnNameEx(targetid),badge);
  51037. SendInfoMessage(targetid,"%s has set your badge to %i.",ReturnNameEx(playerid),badge);
  51038. return 1;
  51039. }
  51040. CMD:asetbadge(playerid, params[])
  51041. {
  51042. new targetid, badge;
  51043. if(Players[playerid][pAdmin] < 1)
  51044. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  51045. if(sscanf(params,"ui", targetid, badge))
  51046. return SendSyntaxMessage(playerid, "/setbadge [playerid/name] [badge]");
  51047. if(!IsPlayerConnected(targetid))
  51048. return SendErrorMessage(playerid,"The specified target doesn't exist.");
  51049. if(IsPlayerNPC(targetid))
  51050. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  51051. if(!IsPlayerLoggedIn(targetid))
  51052. return SendErrorMessage(playerid,"The specified target is not logged in yet.");
  51053. Players[playerid][pBadge] = badge;
  51054. SendInfoMessage(playerid,"You have set %s's badge to %i.",ReturnNameEx(targetid),badge);
  51055. SendInfoMessage(targetid,"%s has set your badge to %i.",ReturnNameEx(playerid),badge);
  51056. return 1;
  51057. }
  51058. CMD:acceptfrisk(playerid, params[])
  51059. {
  51060. if (IsPlayerConnected(Players[playerid][pFriskOffer]))
  51061. {
  51062. if (!IsPlayerInRangeOfPlayer(playerid, Players[playerid][pFriskOffer]))
  51063. {
  51064. return SendErrorMessage(playerid, "You need to be near the player who offered the frisk.");
  51065. }
  51066. else
  51067. {
  51068. new success = ShowItemsForPlayer(Players[playerid][pFriskOffer], playerid);
  51069. ShowActionBubble(Players[playerid][pFriskOffer], "* %s frisks %s for illegal items.", ReturnNameEx(Players[playerid][pFriskOffer]), ReturnNameEx(playerid));
  51070. SendInfoMessage(playerid, "You have accepted %s's frisk offer.", ReturnNameEx(Players[playerid][pFriskOffer]));
  51071. if (!success)
  51072. {
  51073. SendErrorMessage(Players[playerid][pFriskOffer], "That player is not carrying any items.");
  51074. }
  51075. Players[playerid][pFriskOffer] = INVALID_PLAYER_ID;
  51076. }
  51077. }
  51078. return 1;
  51079. }
  51080. CMD:acceptinvite(playerid, params[])
  51081. {
  51082. if (IsPlayerConnected(Players[playerid][pFactionOffer]))
  51083. {
  51084. new faction = Players[Players[playerid][pFactionOffer]][pFaction];
  51085. if (IsValidFactionID(faction))
  51086. {
  51087. SetPlayerFaction(playerid, faction, 1);
  51088. SendInfoMessage(playerid, "You have accepted the faction invite! Use '/help faction' to see your new commands.");
  51089. SendInfoMessage(Players[playerid][pFactionOffer], "%s has accepted the faction invite.", ReturnNameEx(playerid));
  51090. }
  51091. Players[playerid][pFactionOffer] = INVALID_PLAYER_ID;
  51092. }
  51093. return 1;
  51094. }
  51095. CMD:acceptdeath(playerid, params[])
  51096. {
  51097. if (Players[playerid][pDeathState] != DEATH_STATE_INJURED)
  51098. {
  51099. SendErrorMessage(playerid, "You are currently not injured.");
  51100. }
  51101. else if (Players[playerid][pDeathTime] > gettime())
  51102. {
  51103. SendErrorMessage(playerid, "You must wait %i seconds before you can accept death.", (Players[playerid][pDeathTime] - gettime()));
  51104. }
  51105. else
  51106. {
  51107. SetPlayerHealth(playerid, -1);
  51108. ResetPlayer(playerid);
  51109. }
  51110. return 1;
  51111. }
  51112. CMD:resign(playerid, params[])
  51113. {
  51114. if (Players[playerid][pFaction] == INVALID_ID)
  51115. {
  51116. SendErrorMessage(playerid, "You are not part of a faction.");
  51117. }
  51118. else
  51119. {
  51120. Dialog_Show(playerid, Resign, DIALOG_STYLE_MSGBOX, "{FFFFFF}Resign from Faction", "Are you sure you want to resign from %s as a rank %i?", "Yes", "No", Factions[Players[playerid][pFaction]][fcName], Players[playerid][pFactionRank]);
  51121. }
  51122. return 1;
  51123. }
  51124. /*
  51125. enum e_Callsigns
  51126. {
  51127. e_CallsignID,
  51128. // 1-LSPD
  51129. e_CallsignFaction,
  51130. // Text of the callsign
  51131. e_CallsignTextShort[32],
  51132. // Text of the callsign
  51133. e_CallsignTextFull[64]
  51134. };
  51135. new g_Callsigns[][e_Callsigns] =
  51136. {
  51137. {0, 1, "1-A-1", "1-Adam-1"},
  51138. g_CompanyItems[i][e_ItemName]
  51139. */
  51140. /*CMD:callsign(playerid, params[])
  51141. {
  51142. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  51143. {
  51144. return SendErrorMessage(playerid, "You are not part of any law enforcement faction.");
  51145. }
  51146. else
  51147. {
  51148. if (Players[playerid][pDuty])
  51149. {
  51150. ShowCallsignMenu(playerid);
  51151. }
  51152. else
  51153. {
  51154. SendErrorMessage(playerid, "You are not on duty.");
  51155. }
  51156. }
  51157. return 1;
  51158. }*/
  51159. /*CMD:mdc(playerid, params[])
  51160. {
  51161. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  51162. {
  51163. return SendErrorMessage(playerid, "You are not a part of any law enforcement faction.");
  51164. }
  51165. else
  51166. {
  51167. if (Players[playerid][pDuty] && IsPoweredVehicle(GetPlayerVehicleID(playerid)))
  51168. {
  51169. ShowNewMDC(playerid);
  51170. }
  51171. else if(IsPlayerInRangeOfPoint(playerid,6.0,246.5929,121.1836,1003.2257))
  51172. {
  51173. ShowNewMDC(playerid);
  51174. }
  51175. else
  51176. {
  51177. switch (GetVehicleModel(GetPlayerVehicleID(playerid)))
  51178. {
  51179. case 427, 596, 597, 598, 490, 599:
  51180. {
  51181. ShowNewMDC(playerid);
  51182. }
  51183. default:
  51184. {
  51185. SendErrorMessage(playerid, "You are not in any vehicle with a MDC");
  51186. }
  51187. }
  51188. }
  51189. }
  51190. return 1;
  51191. }*/
  51192. CMD:mdc(playerid, params[])
  51193. {
  51194. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  51195. {
  51196. return SendErrorMessage(playerid, "You are not part of the law enforcement.");
  51197. }
  51198. else
  51199. {
  51200. if (Players[playerid][pDuty] && IsPoweredVehicle(GetPlayerVehicleID(playerid)))
  51201. {
  51202. ShowMDCMainMenu(playerid);
  51203. ShowActionBubble(playerid, "* %s logs onto a police computer.", ReturnNameEx(playerid));
  51204. }
  51205. else if(IsPlayerInRangeOfPoint(playerid,6.0,246.5929,121.1836,1003.2257))
  51206. {
  51207. ShowMDCMainMenu(playerid);
  51208. ShowActionBubble(playerid, "* %s logs onto a police computer.", ReturnNameEx(playerid));
  51209. }
  51210. else
  51211. {
  51212. switch (GetVehicleModel(GetPlayerVehicleID(playerid)))
  51213. {
  51214. case 427, 596, 597, 598, 490, 599:
  51215. {
  51216. ShowMDCMainMenu(playerid);
  51217. ShowActionBubble(playerid, "* %s logs onto a police computer.", ReturnNameEx(playerid));
  51218. }
  51219. default:
  51220. {
  51221. SendErrorMessage(playerid, "You are not in any vehicle with a MDC.");
  51222. }
  51223. }
  51224. }
  51225. }
  51226. return 1;
  51227. }
  51228. CMD:apb(playerid, params[])
  51229. {
  51230. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  51231. {
  51232. return SendErrorMessage(playerid, "You are not part of the law enforcement.");
  51233. }
  51234. else if (GetNextApbID() == INVALID_ID)
  51235. {
  51236. return SendErrorMessage(playerid, "The APB list is full right now!");
  51237. }
  51238. else if (isnull(params))
  51239. {
  51240. return SendSyntaxMessage(playerid, "/apb [description]");
  51241. }
  51242. else
  51243. {
  51244. AddApbToQueue(playerid, params);
  51245. SendInfoMessage(playerid, "APB added.");
  51246. }
  51247. return 1;
  51248. }
  51249. CMD:apblist(playerid, params[])
  51250. {
  51251. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  51252. {
  51253. return SendErrorMessage(playerid, "You are not part of the law enforcement.");
  51254. }
  51255. else
  51256. {
  51257. new success = ListApbs(playerid);
  51258. if (!success)
  51259. {
  51260. return SendErrorMessage(playerid,"There are no APBs active.");
  51261. }
  51262. }
  51263. return 1;
  51264. }
  51265. CMD:handsup(playerid, params[])
  51266. {
  51267. if (!IsAnimationPermitted(playerid))
  51268. {
  51269. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51270. }
  51271. else
  51272. {
  51273. PlayAnimation(playerid, "SHOP", "SHP_Handsup_SCR", 4.1, 0, 0, 0, 1, 0, 1);
  51274. }
  51275. return 1;
  51276. }
  51277. CMD:piss(playerid, params[])
  51278. {
  51279. new type;
  51280. if (!IsAnimationPermitted(playerid))
  51281. {
  51282. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51283. }
  51284. else if (sscanf(params, "i", type) || !(1 <= type <= 3))
  51285. {
  51286. return SendSyntaxMessage(playerid, "/piss (1 to 3)");
  51287. }
  51288. else
  51289. {
  51290. switch (type)
  51291. {
  51292. case 1: SetPlayerSpecialAction(playerid, 68);
  51293. case 2: PlayAnimation(playerid, "PAULNMAC", "Piss_in", 4.1, 0, 0, 0, 0, 0, 1);
  51294. case 3: PlayAnimation(playerid, "PAULNMAC", "Piss_out", 4.1, 0, 0, 0, 0, 0, 1);
  51295. }
  51296. }
  51297. return 1;
  51298. }
  51299. CMD:bar(playerid, params[])
  51300. {
  51301. new type;
  51302. if (!IsAnimationPermitted(playerid))
  51303. {
  51304. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51305. }
  51306. else if (sscanf(params, "i", type) || !(1 <= type <= 7))
  51307. {
  51308. return SendSyntaxMessage(playerid, "/bar (1 to 7)");
  51309. }
  51310. else
  51311. {
  51312. switch (type)
  51313. {
  51314. case 1: PlayAnimation(playerid, "BAR", "Barcustom_get", 4.1, 0, 0, 0, 0, 0, 1);
  51315. case 2: PlayAnimation(playerid, "BAR", "Barcustom_order", 4.1, 0, 0, 0, 0, 0, 1);
  51316. case 3: PlayAnimation(playerid, "BAR", "Barserve_bottle", 4.1, 0, 0, 0, 0, 0, 1);
  51317. case 4: PlayAnimation(playerid, "BAR", "Barserve_give", 4.1, 0, 0, 0, 0, 0, 1);
  51318. case 5: PlayAnimation(playerid, "BAR", "Barserve_glass", 4.1, 0, 0, 0, 0, 0, 1);
  51319. case 6: PlayAnimation(playerid, "BAR", "Barserve_in", 4.1, 0, 0, 0, 0, 0, 1);
  51320. case 7: PlayAnimation(playerid, "BAR", "Barserve_loop", 4.1, 1, 0, 0, 0, 0, 1);
  51321. }
  51322. }
  51323. return 1;
  51324. }
  51325. CMD:kiss(playerid, params[])
  51326. {
  51327. new type;
  51328. if (!IsAnimationPermitted(playerid))
  51329. {
  51330. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51331. }
  51332. else if (sscanf(params, "i", type) || !(1 <= type <= 6))
  51333. {
  51334. return SendSyntaxMessage(playerid, "/kiss (1 to 6)");
  51335. }
  51336. else
  51337. {
  51338. switch (type)
  51339. {
  51340. case 1: PlayAnimation(playerid, "KISSING", "Grlfrd_Kiss_01", 4.1, 0, 0, 0, 0, 0, 1);
  51341. case 2: PlayAnimation(playerid, "KISSING", "Grlfrd_Kiss_02", 4.1, 0, 0, 0, 0, 0, 1);
  51342. case 3: PlayAnimation(playerid, "KISSING", "Grlfrd_Kiss_03", 4.1, 0, 0, 0, 0, 0, 1);
  51343. case 4: PlayAnimation(playerid, "KISSING", "Playa_Kiss_01", 4.1, 0, 0, 0, 0, 0, 1);
  51344. case 5: PlayAnimation(playerid, "KISSING", "Playa_Kiss_02", 4.1, 0, 0, 0, 0, 0, 1);
  51345. case 6: PlayAnimation(playerid, "KISSING", "Playa_Kiss_03", 4.1, 0, 0, 0, 0, 0, 1);
  51346. }
  51347. }
  51348. return 1;
  51349. }
  51350. CMD:wash(playerid, params[])
  51351. {
  51352. if (!IsAnimationPermitted(playerid))
  51353. {
  51354. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51355. }
  51356. else
  51357. {
  51358. PlayAnimation(playerid, "BD_FIRE", "wash_up", 4.1, 0, 0, 0, 0, 0, 1);
  51359. }
  51360. return 1;
  51361. }
  51362. CMD:fsit(playerid, params[])
  51363. {
  51364. if(!IsAnimationPermitted(playerid))
  51365. {
  51366. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51367. }
  51368. else
  51369. {
  51370. PlayAnimation(playerid, "BEACH", "ParkSit_M_loop", 4.1, 1, 0, 0, 0, 0, 1);
  51371. }
  51372. return 1;
  51373. }
  51374. CMD:lay(playerid, params[])
  51375. {
  51376. new type;
  51377. if (!IsAnimationPermitted(playerid))
  51378. {
  51379. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51380. }
  51381. else if (sscanf(params, "i", type) || !(1 <= type <= 5))
  51382. {
  51383. return SendSyntaxMessage(playerid, "/lay [1-4]");
  51384. }
  51385. else
  51386. {
  51387. switch (type)
  51388. {
  51389. case 1: PlayAnimation(playerid, "BEACH", "bather", 4.1, 1, 0, 0, 0, 0, 1);
  51390. case 2: PlayAnimation(playerid, "BEACH", "Lay_Bac_Loop", 4.1, 1, 0, 0, 0, 0, 1);
  51391. case 3: PlayAnimation(playerid, "BEACH", "ParkSit_W_loop", 4.1, 1, 0, 0, 0, 0, 1);
  51392. case 4: PlayAnimation(playerid, "BEACH", "SitnWait_loop_W", 4.1, 1, 0, 0, 0, 0, 1);
  51393. }
  51394. }
  51395. return 1;
  51396. }
  51397. CMD:blowjob(playerid, params[])
  51398. {
  51399. new type;
  51400. if (!IsAnimationPermitted(playerid))
  51401. {
  51402. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51403. }
  51404. else if (sscanf(params, "i", type) || !(1 <= type <= 12))
  51405. {
  51406. return SendSyntaxMessage(playerid, "/blowjob (1 to 12)");
  51407. }
  51408. else
  51409. {
  51410. switch (type)
  51411. {
  51412. case 1: PlayAnimation(playerid, "BLOWJOBZ", "BJ_COUCH_START_W", 4.1, 0, 0, 0, 1, 0, 1);
  51413. case 2: PlayAnimation(playerid, "BLOWJOBZ", "BJ_COUCH_LOOP_W", 4.1, 1, 0, 0, 0, 0, 1);
  51414. case 3: PlayAnimation(playerid, "BLOWJOBZ", "BJ_COUCH_END_W", 4.1, 0, 0, 0, 0, 0, 1);
  51415. case 4: PlayAnimation(playerid, "BLOWJOBZ", "BJ_COUCH_START_P", 4.1, 0, 0, 0, 1, 0, 1);
  51416. case 5: PlayAnimation(playerid, "BLOWJOBZ", "BJ_COUCH_LOOP_P", 4.1, 1, 0, 0, 0, 0, 1);
  51417. case 6: PlayAnimation(playerid, "BLOWJOBZ", "BJ_COUCH_END_P", 4.1, 0, 0, 0, 0, 0, 1);
  51418. case 7: PlayAnimation(playerid, "BLOWJOBZ", "BJ_STAND_START_W", 4.1, 0, 0, 0, 1, 0, 1);
  51419. case 8: PlayAnimation(playerid, "BLOWJOBZ", "BJ_STAND_LOOP_W", 4.1, 1, 0, 0, 0, 0, 1);
  51420. case 9: PlayAnimation(playerid, "BLOWJOBZ", "BJ_STAND_END_W", 4.1, 0, 0, 0, 0, 0, 1);
  51421. case 10: PlayAnimation(playerid, "BLOWJOBZ", "BJ_STAND_START_P", 4.1, 0, 0, 0, 1, 0, 1);
  51422. case 11: PlayAnimation(playerid, "BLOWJOBZ", "BJ_STAND_LOOP_P", 4.1, 1, 0, 0, 0, 0, 1);
  51423. case 12: PlayAnimation(playerid, "BLOWJOBZ", "BJ_STAND_END_P", 4.1, 0, 0, 0, 0, 0, 1);
  51424. }
  51425. }
  51426. return 1;
  51427. }
  51428. CMD:bomb(playerid, params[])
  51429. {
  51430. if (!IsAnimationPermitted(playerid))
  51431. {
  51432. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51433. }
  51434. else
  51435. {
  51436. PlayAnimation(playerid, "BOMBER", "BOM_Plant_Loop", 4.1, 1, 0, 0, 0, 0, 1);
  51437. }
  51438. return 1;
  51439. }
  51440. CMD:basketball(playerid, params[])
  51441. {
  51442. new type;
  51443. if (!IsAnimationPermitted(playerid))
  51444. {
  51445. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51446. }
  51447. else if (sscanf(params, "i", type) || !(1 <= type <= 8))
  51448. {
  51449. return SendSyntaxMessage(playerid, "/basketball (1 to 8)");
  51450. }
  51451. else
  51452. {
  51453. switch (type)
  51454. {
  51455. case 1: PlayAnimation(playerid, "BSKTBALL", "BBALL_def_jump_shot", 4.1, 0, 0, 0, 0, 0, 1);
  51456. case 2: PlayAnimation(playerid, "BSKTBALL", "BBALL_def_loop", 4.1, 1, 0, 0, 0, 0, 1);
  51457. case 3: PlayAnimation(playerid, "BSKTBALL", "BBALL_Dnk", 4.1, 0, 0, 0, 0, 0, 1);
  51458. case 4: PlayAnimation(playerid, "BSKTBALL", "BBALL_Jump_Shot", 4.1, 0, 0, 0, 0, 0, 1);
  51459. case 5: PlayAnimation(playerid, "BSKTBALL", "BBALL_pickup", 4.1, 0, 0, 0, 0, 0, 1);
  51460. case 6: PlayAnimation(playerid, "BSKTBALL", "BBALL_idleloop", 4.1, 1, 0, 0, 0, 0, 1);
  51461. case 7: PlayAnimation(playerid, "BSKTBALL", "BBALL_react_miss", 4.1, 0, 0, 0, 0, 0, 1);
  51462. case 8: PlayAnimation(playerid, "BSKTBALL", "BBALL_react_score", 4.1, 0, 0, 0, 0, 0, 1);
  51463. }
  51464. }
  51465. return 1;
  51466. }
  51467. CMD:camera(playerid, params[])
  51468. {
  51469. new type;
  51470. if (!IsAnimationPermitted(playerid))
  51471. {
  51472. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51473. }
  51474. else if (sscanf(params, "i", type) || !(1 <= type <= 6))
  51475. {
  51476. return SendSyntaxMessage(playerid, "/camera (1 to 6)");
  51477. }
  51478. else
  51479. {
  51480. switch (type)
  51481. {
  51482. case 1: PlayAnimation(playerid, "CAMERA", "camstnd_to_camcrch", 4.1, 0, 0, 0, 1, 0, 1);
  51483. case 2: PlayAnimation(playerid, "CAMERA", "camcrch_to_camstnd", 4.1, 0, 0, 0, 0, 0, 1);
  51484. case 3: PlayAnimation(playerid, "CAMERA", "camstnd_lkabt", 4.1, 0, 0, 0, 0, 0, 1);
  51485. case 4: PlayAnimation(playerid, "CAMERA", "camcrch_cmon", 4.1, 0, 0, 0, 0, 0, 1);
  51486. case 5: PlayAnimation(playerid, "CAMERA", "piccrch_take", 4.1, 1, 0, 0, 0, 0, 1);
  51487. case 6: PlayAnimation(playerid, "CAMERA", "picstnd_take", 4.1, 1, 0, 0, 0, 0, 1);
  51488. }
  51489. }
  51490. return 1;
  51491. }
  51492. CMD:come(playerid, params[])
  51493. {
  51494. if (!IsAnimationPermitted(playerid))
  51495. {
  51496. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51497. }
  51498. else
  51499. {
  51500. PlayAnimation(playerid, "CAMERA", "camstnd_cmon", 4.1, 0, 0, 0, 0, 0, 1);
  51501. }
  51502. return 1;
  51503. }
  51504. CMD:carry(playerid, params[])
  51505. {
  51506. new type;
  51507. if (!IsAnimationPermitted(playerid))
  51508. {
  51509. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51510. }
  51511. else if (sscanf(params, "i", type) || !(1 <= type <= 2))
  51512. {
  51513. return SendSyntaxMessage(playerid, "/carry (1 to 2)");
  51514. }
  51515. else
  51516. {
  51517. switch (type)
  51518. {
  51519. case 1: PlayAnimation(playerid, "CARRY", "liftup", 4.1, 0, 0, 0, 0, 0, 1);
  51520. case 2: PlayAnimation(playerid, "CARRY", "putdwn", 4.1, 0, 0, 0, 0, 0, 1);
  51521. }
  51522. }
  51523. return 1;
  51524. }
  51525. CMD:think(playerid, params[])
  51526. {
  51527. if (!IsAnimationPermitted(playerid))
  51528. {
  51529. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51530. }
  51531. else
  51532. {
  51533. PlayAnimation(playerid, "COP_AMBIENT", "Coplook_think", 4.1, 0, 0, 0, 0, 0, 1);
  51534. }
  51535. return 1;
  51536. }
  51537. CMD:crack(playerid, params[])
  51538. {
  51539. new type;
  51540. if (!IsAnimationPermitted(playerid))
  51541. {
  51542. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51543. }
  51544. else if (sscanf(params, "i", type) || !(1 <= type <= 4))
  51545. {
  51546. return SendSyntaxMessage(playerid, "/crack (1 to 4)");
  51547. }
  51548. else
  51549. {
  51550. switch (type)
  51551. {
  51552. case 1: PlayAnimation(playerid, "CRACK", "crckdeth1", 4.1, 0, 0, 0, 1, 0, 1);
  51553. case 2: PlayAnimation(playerid, "CRACK", "crckdeth2", 4.1, 1, 0, 0, 0, 0, 1);
  51554. case 3: PlayAnimation(playerid, "CRACK", "crckdeth3", 4.1, 0, 0, 0, 1, 0, 1);
  51555. case 4: PlayAnimation(playerid, "CRACK", "crckdeth4", 4.1, 0, 0, 0, 1, 0, 1);
  51556. }
  51557. }
  51558. return 1;
  51559. }
  51560. CMD:checktime(playerid, params[])
  51561. {
  51562. if (!IsAnimationPermitted(playerid))
  51563. {
  51564. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51565. }
  51566. else
  51567. {
  51568. ApplyAnimation(playerid, "COP_AMBIENT", "Coplook_watch", 4.1, 0, 0, 0, 0, 0, 1);
  51569. }
  51570. return 1;
  51571. }
  51572. CMD:dance(playerid, params[])
  51573. {
  51574. new type;
  51575. if (!IsAnimationPermitted(playerid))
  51576. {
  51577. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51578. }
  51579. else if (sscanf(params, "i", type) || !(1 <= type <= 21))
  51580. {
  51581. return SendSyntaxMessage(playerid, "/dance (1 to 21)");
  51582. }
  51583. else
  51584. {
  51585. switch (type)
  51586. {
  51587. case 1: SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DANCE1);
  51588. case 2: SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DANCE2);
  51589. case 3: SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DANCE3);
  51590. case 4: SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DANCE4);
  51591. case 5: PlayAnimation(playerid, "DANCING", "DAN_Down_A", 4.1, 1, 0, 0, 0, 0, 1);
  51592. case 6: PlayAnimation(playerid, "DANCING", "DAN_Left_A", 4.1, 1, 0, 0, 0, 0, 1);
  51593. case 7: PlayAnimation(playerid, "DANCING", "DAN_Loop_A", 4.1, 1, 0, 0, 0, 0, 1);
  51594. case 8: PlayAnimation(playerid, "DANCING", "DAN_Right_A", 4.1, 1, 0, 0, 0, 0, 1);
  51595. case 9: PlayAnimation(playerid, "DANCING", "DAN_Up_A", 4.1, 1, 0, 0, 0, 0, 1);
  51596. case 10: PlayAnimation(playerid, "DANCING", "dnce_M_a", 4.1, 1, 0, 0, 0, 0, 1);
  51597. case 11: PlayAnimation(playerid, "DANCING", "dnce_M_b", 4.1, 1, 0, 0, 0, 0, 1);
  51598. case 12: PlayAnimation(playerid, "DANCING", "dnce_M_c", 4.1, 1, 0, 0, 0, 0, 1);
  51599. case 13: PlayAnimation(playerid, "DANCING", "dnce_M_d", 4.1, 1, 0, 0, 0, 0, 1);
  51600. case 14: PlayAnimation(playerid, "DANCING", "dnce_M_e", 4.1, 1, 0, 0, 0, 0, 1);
  51601. case 15: PlayAnimation(playerid, "STRIP", "STRIP_A", 4.1, 1, 0, 0, 0, 0, 1);
  51602. case 16: PlayAnimation(playerid, "STRIP", "STRIP_B", 4.1, 1, 0, 0, 0, 0, 1);
  51603. case 17: PlayAnimation(playerid, "STRIP", "STRIP_C", 4.1, 1, 0, 0, 0, 0, 1);
  51604. case 18: PlayAnimation(playerid, "STRIP", "STRIP_D", 4.1, 1, 0, 0, 0, 0, 1);
  51605. case 19: PlayAnimation(playerid, "STRIP", "STRIP_E", 4.1, 1, 0, 0, 0, 0, 1);
  51606. case 20: PlayAnimation(playerid, "STRIP", "STRIP_F", 4.1, 1, 0, 0, 0, 0, 1);
  51607. case 21: PlayAnimation(playerid, "STRIP", "STRIP_G", 4.1, 1, 0, 0, 0, 0, 1);
  51608. }
  51609. }
  51610. return 1;
  51611. }
  51612. CMD:deal(playerid, params[])
  51613. {
  51614. new type;
  51615. if (!IsAnimationPermitted(playerid))
  51616. {
  51617. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51618. }
  51619. else if (sscanf(params, "i", type) || !(1 <= type <= 3))
  51620. {
  51621. return SendSyntaxMessage(playerid, "/deal (1 to 3)");
  51622. }
  51623. else
  51624. {
  51625. switch (type)
  51626. {
  51627. case 1: PlayAnimation(playerid, "DEALER", "DEALER_DEAL", 4.1, 0, 0, 0, 0, 0, 1);
  51628. case 2: PlayAnimation(playerid, "DEALER", "DRUGS_BUY", 4.1, 0, 0, 0, 0, 0, 1);
  51629. case 3: PlayAnimation(playerid, "DEALER", "shop_pay", 4.1, 0, 0, 0, 0, 0, 1);
  51630. }
  51631. }
  51632. return 1;
  51633. }
  51634. CMD:eat(playerid, params[])
  51635. {
  51636. new type;
  51637. if (!IsAnimationPermitted(playerid))
  51638. {
  51639. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51640. }
  51641. else if (sscanf(params, "i", type) || !(1 <= type <= 3))
  51642. {
  51643. return SendSyntaxMessage(playerid, "/eat (1 to 3)");
  51644. }
  51645. else
  51646. {
  51647. switch (type)
  51648. {
  51649. case 1: PlayAnimation(playerid, "FOOD", "EAT_Burger", 4.1, 0, 0, 0, 0, 0, 1);
  51650. case 2: PlayAnimation(playerid, "FOOD", "EAT_Chicken", 4.1, 0, 0, 0, 0, 0, 1);
  51651. case 3: PlayAnimation(playerid, "FOOD", "EAT_Pizza", 4.1, 0, 0, 0, 0, 0, 1);
  51652. }
  51653. }
  51654. return 1;
  51655. }
  51656. CMD:lean(playerid, params[])
  51657. {
  51658. new type;
  51659. if (!IsAnimationPermitted(playerid))
  51660. {
  51661. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51662. }
  51663. else if (sscanf(params, "i", type) || !(1 <= type <= 3))
  51664. {
  51665. return SendSyntaxMessage(playerid, "/lean (1 to 3)");
  51666. }
  51667. else
  51668. {
  51669. switch (type)
  51670. {
  51671. case 1: PlayAnimation(playerid, "GANGS", "leanIDLE", 4.1, 1, 0, 0, 0, 0, 1);
  51672. case 2: PlayAnimation(playerid, "MISC", "Plyrlean_loop", 4.1, 1, 0, 0, 0, 0, 1);
  51673. case 3: PlayAnimation(playerid, "SMOKING", "M_smklean_loop", 4.1, 1, 0, 0, 0, 0, 1);
  51674. }
  51675. }
  51676. return 1;
  51677. }
  51678. CMD:facepalm(playerid, params[])
  51679. {
  51680. if (!IsAnimationPermitted(playerid))
  51681. {
  51682. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51683. }
  51684. else
  51685. {
  51686. PlayAnimation(playerid, "MISC", "plyr_shkhead", 4.1, 0, 0, 0, 0, 0, 1);
  51687. }
  51688. return 1;
  51689. }
  51690. CMD:chat(playerid, params[])
  51691. {
  51692. new type;
  51693. if (!IsAnimationPermitted(playerid))
  51694. {
  51695. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51696. }
  51697. else if (sscanf(params, "i", type) || !(1 <= type <= 8))
  51698. {
  51699. return SendSyntaxMessage(playerid, "/chat (1 to 8)");
  51700. }
  51701. else
  51702. {
  51703. switch (type)
  51704. {
  51705. case 1: PlayAnimation(playerid, "GANGS", "prtial_gngtlkA", 4.1, 1, 0, 0, 0, 0, 1);
  51706. case 2: PlayAnimation(playerid, "GANGS", "prtial_gngtlkB", 4.1, 1, 0, 0, 0, 0, 1);
  51707. case 3: PlayAnimation(playerid, "GANGS", "prtial_gngtlkC", 4.1, 1, 0, 0, 0, 0, 1);
  51708. case 4: PlayAnimation(playerid, "GANGS", "prtial_gngtlkD", 4.1, 1, 0, 0, 0, 0, 1);
  51709. case 5: PlayAnimation(playerid, "GANGS", "prtial_gngtlkE", 4.1, 1, 0, 0, 0, 0, 1);
  51710. case 6: PlayAnimation(playerid, "GANGS", "prtial_gngtlkF", 4.1, 1, 0, 0, 0, 0, 1);
  51711. case 7: PlayAnimation(playerid, "GANGS", "prtial_gngtlkG", 4.1, 1, 0, 0, 0, 0, 1);
  51712. case 8: PlayAnimation(playerid, "GANGS", "prtial_gngtlkH", 4.1, 1, 0, 0, 0, 0, 1);
  51713. }
  51714. }
  51715. return 1;
  51716. }
  51717. CMD:gsign(playerid, params[])
  51718. {
  51719. new type;
  51720. if (!IsAnimationPermitted(playerid))
  51721. {
  51722. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51723. }
  51724. else if (sscanf(params, "i", type) || !(1 <= type <= 12))
  51725. {
  51726. return SendSyntaxMessage(playerid, "/gsign (1 to 12)");
  51727. }
  51728. else
  51729. {
  51730. switch (type)
  51731. {
  51732. case 1: PlayAnimation(playerid, "GHANDS", "gsign1", 4.1, 0, 0, 0, 0, 0, 1);
  51733. case 2: PlayAnimation(playerid, "GHANDS", "gsign1LH", 4.1, 0, 0, 0, 0, 0, 1);
  51734. case 3: PlayAnimation(playerid, "GHANDS", "gsign2", 4.1, 0, 0, 0, 0, 0, 1);
  51735. case 4: PlayAnimation(playerid, "GHANDS", "gsign2LH", 4.1, 0, 0, 0, 0, 0, 1);
  51736. case 5: PlayAnimation(playerid, "GHANDS", "gsign3", 4.1, 0, 0, 0, 0, 0, 1);
  51737. case 6: PlayAnimation(playerid, "GHANDS", "gsign3LH", 4.1, 0, 0, 0, 0, 0, 1);
  51738. case 7: PlayAnimation(playerid, "GHANDS", "gsign4", 4.1, 0, 0, 0, 0, 0, 1);
  51739. case 8: PlayAnimation(playerid, "GHANDS", "gsign4LH", 4.1, 0, 0, 0, 0, 0, 1);
  51740. case 9: PlayAnimation(playerid, "GHANDS", "gsign5", 4.1, 0, 0, 0, 0, 0, 1);
  51741. case 10: PlayAnimation(playerid, "GHANDS", "gsign5LH", 4.1, 0, 0, 0, 0, 0, 1);
  51742. case 11: PlayAnimation(playerid, "GANGS", "Invite_No", 4.1, 0, 0, 0, 0, 0, 1);
  51743. case 12: PlayAnimation(playerid, "GANGS", "Invite_Yes", 4.1, 0, 0, 0, 0, 0, 1);
  51744. }
  51745. }
  51746. return 1;
  51747. }
  51748. CMD:spraycan(playerid, params[])
  51749. {
  51750. if (!IsAnimationPermitted(playerid))
  51751. {
  51752. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51753. }
  51754. else
  51755. {
  51756. PlayAnimation(playerid, "GRAFFITI", "spraycan_fire", 4.1, 1, 0, 0, 0, 0, 1);
  51757. }
  51758. return 1;
  51759. }
  51760. CMD:throw(playerid, params[])
  51761. {
  51762. if (!IsAnimationPermitted(playerid))
  51763. {
  51764. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51765. }
  51766. else
  51767. {
  51768. PlayAnimation(playerid, "GRENADE", "WEAPON_throw", 4.1, 0, 0, 0, 0, 0, 1);
  51769. }
  51770. return 1;
  51771. }
  51772. CMD:boxing(playerid, params[])
  51773. {
  51774. if (!IsAnimationPermitted(playerid))
  51775. {
  51776. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51777. }
  51778. else
  51779. {
  51780. PlayAnimation(playerid, "GYMNASIUM", "GYMshadowbox", 4.1, 1, 0, 0, 0, 0, 1);
  51781. }
  51782. return 1;
  51783. }
  51784. CMD:cpr(playerid, params[])
  51785. {
  51786. if (!IsAnimationPermitted(playerid))
  51787. {
  51788. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51789. }
  51790. else
  51791. {
  51792. PlayAnimation(playerid, "MEDIC", "CPR", 4.1, 0, 0, 0, 0, 0, 1);
  51793. }
  51794. return 1;
  51795. }
  51796. CMD:swipe(playerid, params[])
  51797. {
  51798. if (!IsAnimationPermitted(playerid))
  51799. {
  51800. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51801. }
  51802. else
  51803. {
  51804. PlayAnimation(playerid, "HEIST9", "Use_SwipeCard", 4.1, 0, 0, 0, 0, 0, 1);
  51805. }
  51806. return 1;
  51807. }
  51808. CMD:sit(playerid, params[])
  51809. {
  51810. new type;
  51811. if (!IsAnimationPermitted(playerid))
  51812. {
  51813. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51814. }
  51815. else if (sscanf(params, "i", type) || !(1 <= type <= 8))
  51816. {
  51817. return SendSyntaxMessage(playerid, "/sit (1 to 8)");
  51818. }
  51819. else
  51820. {
  51821. switch (type)
  51822. {
  51823. case 1: PlayAnimation(playerid, "MISC", "SEAT_LR", 4.1, 1, 0, 0, 0, 0, 1);
  51824. case 2: PlayAnimation(playerid, "MISC", "SEAT_talk_01", 4.1, 1, 0, 0, 0, 0, 1);
  51825. case 3: PlayAnimation(playerid, "MISC", "SEAT_talk_02", 4.1, 1, 0, 0, 0, 0, 1);
  51826. case 4: PlayAnimation(playerid, "CRIB", "PED_Console_Loop", 4.1, 1, 0, 0, 0, 0, 1);
  51827. case 5: PlayAnimation(playerid, "INT_HOUSE", "LOU_In", 4.1, 0, 0, 0, 1, 0, 1);
  51828. case 6: PlayAnimation(playerid, "PED", "SEAT_down", 4.1, 0, 0, 0, 1, 0, 1);
  51829. case 7: PlayAnimation(playerid, "FOOD", "FF_Sit_Eat3", 4.1, 1, 0, 0, 0, 0, 1);
  51830. case 8: PlayAnimation(playerid, "FOOD", "FF_Sit_Eat2", 4.1, 1, 0, 0, 0, 0, 1);
  51831. }
  51832. }
  51833. return 1;
  51834. }
  51835. CMD:point(playerid, params[])
  51836. {
  51837. if (!IsAnimationPermitted(playerid))
  51838. {
  51839. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51840. }
  51841. else
  51842. {
  51843. PlayAnimation(playerid, "ON_LOOKERS", "point_loop", 4.1, 1, 0, 0, 0, 0, 1);
  51844. }
  51845. return 1;
  51846. }
  51847. CMD:taichi(playerid, params[])
  51848. {
  51849. if (!IsAnimationPermitted(playerid))
  51850. {
  51851. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51852. }
  51853. else
  51854. {
  51855. PlayAnimation(playerid, "PARK", "Tai_Chi_Loop", 4.1, 1, 0, 0, 0, 0, 1);
  51856. }
  51857. return 1;
  51858. }
  51859. CMD:wank(playerid, params[])
  51860. {
  51861. if (!IsAnimationPermitted(playerid))
  51862. {
  51863. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51864. }
  51865. else
  51866. {
  51867. PlayAnimation(playerid, "PAULNMAC", "wank_loop", 4.1, 1, 0, 0, 0, 0, 1);
  51868. }
  51869. return 1;
  51870. }
  51871. CMD:cover(playerid, params[])
  51872. {
  51873. if (!IsAnimationPermitted(playerid))
  51874. {
  51875. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51876. }
  51877. else
  51878. {
  51879. PlayAnimation(playerid, "PED", "cower", 4.1, 1, 0, 0, 0, 0, 1);
  51880. }
  51881. return 1;
  51882. }
  51883. CMD:fucku(playerid, params[])
  51884. {
  51885. if (!IsAnimationPermitted(playerid))
  51886. {
  51887. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51888. }
  51889. else
  51890. {
  51891. PlayAnimation(playerid, "PED", "fucku", 4.1, 0, 0, 0, 0, 0, 1);
  51892. }
  51893. return 1;
  51894. }
  51895. CMD:getup(playerid, params[])
  51896. {
  51897. new type;
  51898. if (!IsAnimationPermitted(playerid))
  51899. {
  51900. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51901. }
  51902. else if (sscanf(params, "i", type) || !(1 <= type <= 2))
  51903. {
  51904. return SendSyntaxMessage(playerid, "/getup (1 to 2)");
  51905. }
  51906. else
  51907. {
  51908. switch (type)
  51909. {
  51910. case 1: PlayAnimation(playerid, "PED", "getup", 4.1, 0, 0, 0, 0, 0, 1);
  51911. case 2: PlayAnimation(playerid, "PED", "getup_front", 4.1, 0, 0, 0, 0, 0, 1);
  51912. }
  51913. }
  51914. return 1;
  51915. }
  51916. CMD:tired(playerid, params[])
  51917. {
  51918. new type;
  51919. if (!IsAnimationPermitted(playerid))
  51920. {
  51921. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51922. }
  51923. else if (sscanf(params, "i", type) || !(1 <= type <= 2))
  51924. {
  51925. return SendSyntaxMessage(playerid, "/tired (1 to 2)");
  51926. }
  51927. else
  51928. {
  51929. switch (type)
  51930. {
  51931. case 1: PlayAnimation(playerid, "FAT", "IDLE_tired", 4.1, 1, 0, 0, 0, 0, 1);
  51932. case 2: PlayAnimation(playerid, "PED", "IDLE_tired", 4.1, 1, 0, 0, 0, 0, 1);
  51933. }
  51934. }
  51935. return 1;
  51936. }
  51937. CMD:doorkick(playerid, params[])
  51938. {
  51939. if (!IsAnimationPermitted(playerid))
  51940. {
  51941. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51942. }
  51943. else
  51944. {
  51945. PlayAnimation(playerid, "POLICE", "Door_Kick", 4.1, 0, 0, 0, 0, 0, 1);
  51946. }
  51947. return 1;
  51948. }
  51949. CMD:laugh(playerid, params[])
  51950. {
  51951. if (!IsAnimationPermitted(playerid))
  51952. {
  51953. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51954. }
  51955. else
  51956. {
  51957. PlayAnimation(playerid, "RAPPING", "Laugh_01", 4.1, 0, 0, 0, 0, 0, 1);
  51958. }
  51959. return 1;
  51960. }
  51961. CMD:cry(playerid, params[])
  51962. {
  51963. if (!IsAnimationPermitted(playerid))
  51964. {
  51965. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51966. }
  51967. else
  51968. {
  51969. PlayAnimation(playerid, "GRAVEYARD", "mrnF_loop", 4.1, 1, 0, 0, 0, 0, 1);
  51970. }
  51971. return 1;
  51972. }
  51973. CMD:what(playerid, params[])
  51974. {
  51975. if (!IsAnimationPermitted(playerid))
  51976. {
  51977. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51978. }
  51979. else
  51980. {
  51981. PlayAnimation(playerid, "RIOT", "RIOT_ANGRY", 4.1, 0, 0, 0, 0, 0, 1);
  51982. }
  51983. return 1;
  51984. }
  51985. CMD:sa(playerid, params[])
  51986. {
  51987. return cmd_stopanim(playerid,params);
  51988. }
  51989. CMD:stopanim(playerid, params[])
  51990. {
  51991. if (!IsAnimationPermitted(playerid))
  51992. {
  51993. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  51994. }
  51995. else
  51996. {
  51997. //ClearAnimations(playerid, 1);
  51998. ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.0, 0, 0, 0, 0, 0);
  51999. }
  52000. return 1;
  52001. }
  52002. CMD:rap(playerid, params[])
  52003. {
  52004. new type;
  52005. if (!IsAnimationPermitted(playerid))
  52006. {
  52007. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  52008. }
  52009. else if (sscanf(params, "i", type) || !(1 <= type <= 3))
  52010. {
  52011. return SendSyntaxMessage(playerid, "/rap (1 to 3)");
  52012. }
  52013. else
  52014. {
  52015. switch (type)
  52016. {
  52017. case 1: PlayAnimation(playerid, "RAPPING", "RAP_A_Loop", 4.1, 1, 0, 0, 0, 0, 1);
  52018. case 2: PlayAnimation(playerid, "RAPPING", "RAP_B_Loop", 4.1, 1, 0, 0, 0, 0, 1);
  52019. case 3: PlayAnimation(playerid, "RAPPING", "RAP_C_Loop", 4.1, 1, 0, 0, 0, 0, 1);
  52020. }
  52021. }
  52022. return 1;
  52023. }
  52024. CMD:drunk(playerid, params[])
  52025. {
  52026. if (!IsAnimationPermitted(playerid))
  52027. {
  52028. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  52029. }
  52030. else
  52031. {
  52032. PlayAnimation(playerid, "PED", "WALK_drunk", 4.1, 1, 1, 1, 1, 1, 1);
  52033. }
  52034. return 1;
  52035. }
  52036. CMD:walk(playerid, params[])
  52037. {
  52038. if (!IsAnimationPermitted(playerid))
  52039. {
  52040. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  52041. }
  52042. switch (Players[playerid][pWalkStyle])
  52043. {
  52044. case 1: PlayAnimation(playerid, "PED", "WALK_civi", 4.1, 1, 1, 1, 1, 1, 1);
  52045. case 2: PlayAnimation(playerid, "PED", "WALK_armed", 4.1, 1, 1, 1, 1, 1, 1);
  52046. case 3: PlayAnimation(playerid, "PED", "WALK_fat", 4.1, 1, 1, 1, 1, 1, 1);
  52047. case 4: PlayAnimation(playerid, "PED", "WALK_fatold", 4.1, 1, 1, 1, 1, 1, 1);
  52048. case 5: PlayAnimation(playerid, "FAT", "FatWalk", 4.1, 1, 1, 1, 1, 1, 1);
  52049. case 6: PlayAnimation(playerid, "MUSCULAR", "MuscleWalk", 4.1, 1, 1, 1, 1, 1, 1);
  52050. case 7: PlayAnimation(playerid, "PED", "WALK_gang1", 4.1, 1, 1, 1, 1, 1, 1);
  52051. case 8: PlayAnimation(playerid, "PED", "WALK_gang2", 4.1, 1, 1, 1, 1, 1, 1);
  52052. case 9: PlayAnimation(playerid, "PED", "WALK_player", 4.1, 1, 1, 1, 1, 1, 1);
  52053. case 10: PlayAnimation(playerid, "PED", "WALK_old", 4.1, 1, 1, 1, 1, 1, 1);
  52054. case 11: PlayAnimation(playerid, "PED", "WALK_wuzi", 4.1, 1, 1, 1, 1, 1, 1);
  52055. case 12: PlayAnimation(playerid, "PED", "WOMAN_walkbusy", 4.1, 1, 1, 1, 1, 1, 1);
  52056. case 13: PlayAnimation(playerid, "PED", "WOMAN_walkfatold", 4.1, 1, 1, 1, 1, 1, 1);
  52057. case 14: PlayAnimation(playerid, "PED", "WOMAN_walknorm", 4.1, 1, 1, 1, 1, 1, 1);
  52058. case 15: PlayAnimation(playerid, "PED", "WOMAN_walksexy", 4.1, 1, 1, 1, 1, 1, 1);
  52059. case 16: PlayAnimation(playerid, "PED", "WOMAN_walkshop", 4.1, 1, 1, 1, 1, 1, 1);
  52060. default: PlayAnimation(playerid, "PED", "WALK_civi", 4.1, 1, 1, 1, 1, 1, 1);
  52061. }
  52062. return 1;
  52063. }
  52064. CMD:riot(playerid, params[])
  52065. {
  52066. new type;
  52067. if (!IsAnimationPermitted(playerid))
  52068. {
  52069. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  52070. }
  52071. else if (sscanf(params, "i", type) || !(1 <= type <= 4))
  52072. {
  52073. return SendSyntaxMessage(playerid, "/riot (1 to 4)");
  52074. }
  52075. else
  52076. {
  52077. switch (type)
  52078. {
  52079. case 1: PlayAnimation(playerid, "RIOT", "RIOT_ANGRY_B", 4.1, 1, 0, 0, 0, 0, 1);
  52080. case 2: PlayAnimation(playerid, "RIOT", "RIOT_CHANT", 4.1, 1, 0, 0, 0, 0, 1);
  52081. case 3: PlayAnimation(playerid, "RIOT", "RIOT_PUNCHES", 4.1, 1, 0, 0, 0, 0, 1);
  52082. case 4: PlayAnimation(playerid, "RIOT", "RIOT_shout", 4.1, 1, 0, 0, 0, 0, 1);
  52083. }
  52084. }
  52085. return 1;
  52086. }
  52087. CMD:injured(playerid, params[])
  52088. {
  52089. new type;
  52090. if (!IsAnimationPermitted(playerid))
  52091. {
  52092. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  52093. }
  52094. else if (sscanf(params, "i", type) || !(1 <= type <= 2))
  52095. {
  52096. return SendSyntaxMessage(playerid, "/injured (1 to 2)");
  52097. }
  52098. else
  52099. {
  52100. switch (type)
  52101. {
  52102. case 1: PlayAnimation(playerid, "SWAT", "gnstwall_injurd", 4.1, 1, 0, 0, 0, 0, 1);
  52103. case 2: PlayAnimation(playerid, "SWEET", "Sweet_injuredloop", 4.1, 1, 0, 0, 0, 0, 1);
  52104. }
  52105. }
  52106. return 1;
  52107. }
  52108. CMD:fall(playerid, params[])
  52109. {
  52110. new type;
  52111. if (!IsAnimationPermitted(playerid))
  52112. {
  52113. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  52114. }
  52115. else if (sscanf(params, "i", type) || !(1 <= type <= 5))
  52116. {
  52117. return SendSyntaxMessage(playerid, "/fall (1 to 5)");
  52118. }
  52119. else
  52120. {
  52121. switch (type)
  52122. {
  52123. case 1: PlayAnimation(playerid, "PED", "KO_shot_face", 4.1, 0, 1, 1, 1, 0, 1);
  52124. case 2: PlayAnimation(playerid, "PED", "KO_shot_stom", 4.1, 0, 1, 1, 1, 0, 1);
  52125. case 3: PlayAnimation(playerid, "PED", "KO_shot_front", 4.1, 0, 1, 1, 1, 0, 1);
  52126. case 4: PlayAnimation(playerid, "PED", "KO_skid_back", 4.1, 0, 0, 0, 1, 0, 1);
  52127. case 5: PlayAnimation(playerid, "PED", "KO_skid_front", 4.1, 0, 0, 0, 1, 0, 1);
  52128. }
  52129. }
  52130. return 1;
  52131. }
  52132. CMD:crossarms(playerid, params[])
  52133. {
  52134. new type;
  52135. if (!IsAnimationPermitted(playerid))
  52136. {
  52137. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  52138. }
  52139. else if (sscanf(params, "i", type) || !(1 <= type <= 4))
  52140. {
  52141. return SendSyntaxMessage(playerid, "/crossarms (1 to 4)");
  52142. }
  52143. else
  52144. {
  52145. switch (type)
  52146. {
  52147. case 1: PlayAnimation(playerid, "COP_AMBIENT", "Coplook_loop", 4.1, 0, 1, 1, 1, 0, 1);
  52148. case 2: PlayAnimation(playerid, "GRAVEYARD", "prst_loopa", 4.1, 1, 0, 0, 0, 0, 1);
  52149. case 3: PlayAnimation(playerid, "GRAVEYARD", "mrnM_loop", 4.1, 1, 0, 0, 0, 0, 1);
  52150. case 4: PlayAnimation(playerid, "DEALER", "DEALER_IDLE", 4.1, 0, 1, 1, 1, 0, 1);
  52151. }
  52152. }
  52153. return 1;
  52154. }
  52155. CMD:reload(playerid, params[])
  52156. {
  52157. new type;
  52158. if (!IsAnimationPermitted(playerid))
  52159. {
  52160. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  52161. }
  52162. else if (sscanf(params, "i", type) || !(1 <= type <= 5))
  52163. {
  52164. return SendSyntaxMessage(playerid, "/reload (1 to 5)");
  52165. }
  52166. else
  52167. {
  52168. switch (type)
  52169. {
  52170. case 1: PlayAnimation(playerid, "BUDDY", "buddy_reload", 4.1, 0, 0, 0, 0, 0, 1);
  52171. case 2: PlayAnimation(playerid, "COLT45", "colt45_reload", 4.1, 0, 0, 0, 0, 0, 1);
  52172. case 3: PlayAnimation(playerid, "COLT45", "sawnoff_reload", 4.1, 0, 0, 0, 0, 0, 1);
  52173. case 4: PlayAnimation(playerid, "PYTHON", "python_reload", 4.1, 0, 0, 0, 0, 0, 1);
  52174. case 5: PlayAnimation(playerid, "RIFLE", "RIFLE_load", 4.1, 0, 0, 0, 0, 0, 1);
  52175. }
  52176. }
  52177. return 1;
  52178. }
  52179. CMD:aim(playerid, params[])
  52180. {
  52181. new type;
  52182. if (!IsAnimationPermitted(playerid))
  52183. {
  52184. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  52185. }
  52186. else if (sscanf(params, "i", type) || !(1 <= type <= 2))
  52187. {
  52188. return SendSyntaxMessage(playerid, "/aim (1 to 2)");
  52189. }
  52190. else
  52191. {
  52192. switch (type)
  52193. {
  52194. case 1: PlayAnimation(playerid, "PED", "ARRESTgun", 4.1, 0, 0, 0, 1, 0, 1);
  52195. case 2: PlayAnimation(playerid, "SHOP", "ROB_Loop", 4.1, 0, 0, 0, 1, 0, 1);
  52196. }
  52197. }
  52198. return 1;
  52199. }
  52200. CMD:salute(playerid, params[])
  52201. {
  52202. if (!IsAnimationPermitted(playerid))
  52203. {
  52204. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  52205. }
  52206. else
  52207. {
  52208. PlayAnimation(playerid, "ON_LOOKERS", "Pointup_loop", 4.1, 1, 0, 0, 0, 0, 1);
  52209. }
  52210. return 1;
  52211. }
  52212. CMD:scratch(playerid, params[])
  52213. {
  52214. if (!IsAnimationPermitted(playerid))
  52215. {
  52216. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  52217. }
  52218. else
  52219. {
  52220. PlayAnimation(playerid, "MISC", "Scratchballs_01", 4.1, 0, 0, 0, 0, 0, 1);
  52221. }
  52222. return 1;
  52223. }
  52224. CMD:dodge(playerid, params[])
  52225. {
  52226. if (!IsAnimationPermitted(playerid))
  52227. {
  52228. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  52229. }
  52230. else
  52231. {
  52232. PlayAnimation(playerid, "DODGE", "Crush_Jump", 4.1, 0, 1, 1, 1, 0, 1);
  52233. }
  52234. return 1;
  52235. }
  52236. CMD:showoff(playerid, params[])
  52237. {
  52238. if (!IsAnimationPermitted(playerid))
  52239. {
  52240. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  52241. }
  52242. else
  52243. {
  52244. PlayAnimation(playerid, "Freeweights", "gym_free_celebrate", 4.1, 0, 0, 0, 0, 0, 1);
  52245. }
  52246. return 1;
  52247. }
  52248. CMD:hitch(playerid, params[])
  52249. {
  52250. if (!IsAnimationPermitted(playerid))
  52251. {
  52252. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  52253. }
  52254. else
  52255. {
  52256. PlayAnimation(playerid, "MISC", "Hiker_Pose", 4.1, 1, 0, 0, 0, 0, 1);
  52257. }
  52258. return 1;
  52259. }
  52260. CMD:puke(playerid, params[])
  52261. {
  52262. if (!IsAnimationPermitted(playerid))
  52263. {
  52264. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  52265. }
  52266. else
  52267. {
  52268. PlayAnimation(playerid, "FOOD", "Eat_Vomit_P", 4.1, 0, 0, 0, 0, 0, 1);
  52269. }
  52270. return 1;
  52271. }
  52272. CMD:wave(playerid, params[])
  52273. {
  52274. new type;
  52275. if (!IsAnimationPermitted(playerid))
  52276. {
  52277. return SendErrorMessage(playerid, "You cannot perform animations right now.");
  52278. }
  52279. else if (sscanf(params, "i", type) || !(1 <= type <= 3))
  52280. {
  52281. return SendSyntaxMessage(playerid, "/wave (1 to 3)");
  52282. }
  52283. else
  52284. {
  52285. switch (type)
  52286. {
  52287. case 1: PlayAnimation(playerid, "ON_LOOKERS", "wave_loop", 4.1, 1, 0, 0, 0, 0, 1);
  52288. case 2: PlayAnimation(playerid, "KISSING", "gfwave2", 4.1, 0, 0, 0, 0, 0, 1);
  52289. case 3: PlayAnimation(playerid, "PED", "endchat_03", 4.1, 0, 0, 0, 0, 0, 1);
  52290. }
  52291. }
  52292. return 1;
  52293. }
  52294. CMD:addteleport(playerid, params[])
  52295. {
  52296. new name[32];
  52297. if (Players[playerid][pAdmin] < 5)
  52298. {
  52299. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  52300. }
  52301. else if (sscanf(params, "s[32]", name))
  52302. {
  52303. return SendSyntaxMessage(playerid, "/addteleport (name)");
  52304. }
  52305. else
  52306. {
  52307. new id = GetNextTeleportID();
  52308. if (id == INVALID_ID)
  52309. {
  52310. SendErrorMessage(playerid, "There are no available teleport slots.");
  52311. }
  52312. else
  52313. {
  52314. Teleports[id][tpExists] = 1;
  52315. Teleports[id][tpInterior] = GetPlayerInterior(playerid);
  52316. Teleports[id][tpWorld] = GetPlayerVirtualWorld(playerid);
  52317. GetPlayerPos(playerid, Teleports[id][tpX], Teleports[id][tpY], Teleports[id][tpZ]);
  52318. GetPlayerFacingAngle(playerid, Teleports[id][tpA]);
  52319. SendInfoMessage(playerid, "You have created teleport '%s' (/deleteteleport).", name);
  52320. strcpy(Teleports[id][tpName], name, 32);
  52321. format(gExecute, sizeof(gExecute), "INSERT INTO rp_teleports (tpName, tpX, tpY, tpZ, tpA, tpInterior, tpWorld) VALUES('%s', %.4f, %.4f, %.4f, %.4f, %i, %i)", mysql_escaped(name), Teleports[id][tpX], Teleports[id][tpY], Teleports[id][tpZ], Teleports[id][tpA], Teleports[id][tpInterior], Teleports[id][tpWorld]);
  52322. mysql_tquery(gConnection, gExecute, "OnTeleportAdded", "i", id);
  52323. }
  52324. }
  52325. return 1;
  52326. }
  52327. CMD:deleteteleport(playerid, params[])
  52328. {
  52329. if (Players[playerid][pAdmin] < 5)
  52330. {
  52331. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  52332. }
  52333. else
  52334. {
  52335. new success = ShowTeleportList(playerid, .delete = true);
  52336. if (!success)
  52337. {
  52338. SendErrorMessage(playerid, "There are no teleports to list.");
  52339. }
  52340. }
  52341. return 1;
  52342. }
  52343. CMD:changepass(playerid, params[])
  52344. {
  52345. Dialog_Show(playerid, ChangePassword, DIALOG_STYLE_INPUT, "{FFFFFF}Change Password", "Please input your current account password:", "Submit", "Cancel");
  52346. return 1;
  52347. }
  52348. CMD:addlabel(playerid, params[])
  52349. {
  52350. new Float:distance, color, text[144];
  52351. if (Players[playerid][pAdmin] < 5)
  52352. {
  52353. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  52354. }
  52355. else if (sscanf(params, "fhs[144]", distance, color, text))
  52356. {
  52357. SendSyntaxMessage(playerid, "/addlabel (distance) (hex color) (text)");
  52358. return SendInfoMessage(playerid, "Note: Use ~n~ in the text string to create a new line.");
  52359. }
  52360. else if (distance < 1.0 || distance > 90.0)
  52361. {
  52362. return SendErrorMessage(playerid, "The distance must range between 1.0 and 90.0.");
  52363. }
  52364. else
  52365. {
  52366. new id = GetNextLabelID();
  52367. if (id == INVALID_ID)
  52368. {
  52369. return SendErrorMessage(playerid, "There are no available label slots.");
  52370. }
  52371. else
  52372. {
  52373. strreplace(text, "~n~", "\n");
  52374. strreplace(text, "~N~", "\n");
  52375. strcpy(Labels[id][lText], text, 144);
  52376. GetPlayerPos(playerid, Labels[id][lX], Labels[id][lY], Labels[id][lZ]);
  52377. Labels[id][lExists] = 1;
  52378. Labels[id][lColor] = color;
  52379. Labels[id][lDistance] = distance;
  52380. Labels[id][lText3D] = INVALID_3DTEXT_ID;
  52381. Labels[id][lInterior] = GetPlayerInterior(playerid);
  52382. Labels[id][lWorld] = GetPlayerVirtualWorld(playerid);
  52383. format(gExecute, sizeof(gExecute), "INSERT INTO rp_dynamiclabels (lColor) VALUES(%i)", color);
  52384. mysql_tquery(gConnection, gExecute, "OnLabelAdded", "i", id);
  52385. SendInfoMessage(playerid, "You have created label %i (/editlabel).", id);
  52386. }
  52387. }
  52388. return 1;
  52389. }
  52390. CMD:editlabel(playerid, params[])
  52391. {
  52392. new label, text[144];
  52393. if (Players[playerid][pAdmin] < 5)
  52394. {
  52395. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  52396. }
  52397. else if (sscanf(params, "is[144]", label, text))
  52398. {
  52399. return SendSyntaxMessage(playerid, "/editlabel (label ID) (text)");
  52400. }
  52401. else if (!IsValidLabelID(label))
  52402. {
  52403. return SendErrorMessage(playerid, "You have specified an invalid label ID.");
  52404. }
  52405. else
  52406. {
  52407. strreplace(text, "~n~", "\n");
  52408. strreplace(text, "~N~", "\n");
  52409. strcpy(Labels[label][lText], text, 144);
  52410. UpdateDynamic3DTextLabelText(Labels[label][lText3D], Labels[label][lColor], Labels[label][lText]);
  52411. SaveLabel(label);
  52412. SendInfoMessage(playerid, "You have changed the text for label %i.", label);
  52413. }
  52414. return 1;
  52415. }
  52416. CMD:gotolabel(playerid, params[])
  52417. {
  52418. new label;
  52419. if (Players[playerid][pAdmin] < 5)
  52420. {
  52421. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  52422. }
  52423. else if (sscanf(params, "i", label))
  52424. {
  52425. return SendSyntaxMessage(playerid, "/gotolabel (label ID)");
  52426. }
  52427. else if (!IsValidLabelID(label))
  52428. {
  52429. return SendErrorMessage(playerid, "You have specified an invalid label ID.");
  52430. }
  52431. else
  52432. {
  52433. SetPlayerPosEx(playerid, Labels[label][lX], Labels[label][lY], Labels[label][lZ], 0.0, Labels[label][lInterior], Labels[label][lWorld]);
  52434. SendInfoMessage(playerid, "You have teleported to label %i.", label);
  52435. }
  52436. return 1;
  52437. }
  52438. CMD:deletelabel(playerid, params[])
  52439. {
  52440. new label;
  52441. if (Players[playerid][pAdmin] < 5)
  52442. {
  52443. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  52444. }
  52445. else if (sscanf(params, "i", label))
  52446. {
  52447. return SendSyntaxMessage(playerid, "/deletelabel (label ID)");
  52448. }
  52449. else if (!IsValidLabelID(label))
  52450. {
  52451. return SendErrorMessage(playerid, "You have specified an invalid label ID.");
  52452. }
  52453. else
  52454. {
  52455. DestroyDynamic3DTextLabel(Labels[label][lText3D]);
  52456. format(gExecute, sizeof(gExecute), "DELETE FROM rp_dynamiclabels WHERE lID = %i", Labels[label][lID]);
  52457. mysql_tquery(gConnection, gExecute);
  52458. Labels[label][lExists] = 0;
  52459. SendInfoMessage(playerid, "You have deleted label %i.", label);
  52460. }
  52461. return 1;
  52462. }
  52463. CMD:checklabel(playerid, params[])
  52464. {
  52465. if (Players[playerid][pAdmin] < 5)
  52466. {
  52467. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  52468. }
  52469. else
  52470. {
  52471. new label = GetClosestLabel(playerid);
  52472. if (label == INVALID_ID)
  52473. {
  52474. SendErrorMessage(playerid, "There is no label nearby.");
  52475. }
  52476. else
  52477. {
  52478. SendInfoMessage(playerid, "The label ID is: %i. Use /deletelabel to delete the label.", label);
  52479. }
  52480. }
  52481. return 1;
  52482. }
  52483. CMD:addgate(playerid, params[])
  52484. {
  52485. new modelid;
  52486. if (Players[playerid][pAdmin] < 5)
  52487. {
  52488. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  52489. }
  52490. else if (sscanf(params, "i", modelid))
  52491. {
  52492. return SendSyntaxMessage(playerid, "/addgate (model ID)");
  52493. }
  52494. else if (!IsValidModelID(modelid))
  52495. {
  52496. return SendErrorMessage(playerid, "You have specified an invalid model ID.");
  52497. }
  52498. else if (modelid == 17951 || modelid == 3294)
  52499. {
  52500. return SendErrorMessage(playerid, "That model can't be used as it causes problems in SA-MP.");
  52501. }
  52502. else
  52503. {
  52504. new id = GetNextGateID();
  52505. if (id == INVALID_ID)
  52506. {
  52507. SendErrorMessage(playerid, "There are no available gate slots.");
  52508. }
  52509. else
  52510. {
  52511. GetPlayerPos(playerid, Gates[id][gSpawn][0], Gates[id][gSpawn][1], Gates[id][gSpawn][2]);
  52512. GetPlayerFacingAngle(playerid, Gates[id][gSpawn][5]);
  52513. Gates[id][gExists] = 1;
  52514. Gates[id][gModel] = modelid;
  52515. Gates[id][gPassword] = 0;
  52516. Gates[id][gSpeed] = 2.0;
  52517. Gates[id][gRadius] = 5.0;
  52518. Gates[id][gFactionID] = 0;
  52519. Gates[id][gLinkID] = 0;
  52520. Gates[id][gSpawn][0] += 3.0 * floatsin(-Gates[id][gSpawn][5], degrees);
  52521. Gates[id][gSpawn][1] += 3.0 * floatcos(-Gates[id][gSpawn][5], degrees);
  52522. Gates[id][gMove][0] = Gates[id][gSpawn][0];
  52523. Gates[id][gMove][1] = Gates[id][gSpawn][1];
  52524. Gates[id][gMove][2] = Gates[id][gSpawn][2];
  52525. Gates[id][gMove][3] = -1000.0;
  52526. Gates[id][gMove][4] = -1000.0;
  52527. Gates[id][gMove][5] = -1000.0;
  52528. Gates[id][gInterior] = GetPlayerInterior(playerid);
  52529. Gates[id][gWorld] = GetPlayerVirtualWorld(playerid);
  52530. Gates[id][gObject] = INVALID_OBJECT_ID;
  52531. Gates[id][gOpened] = 0;
  52532. UpdateGate(id);
  52533. format(gExecute, sizeof(gExecute), "INSERT INTO rp_gates (gModel) VALUES(%i)", modelid);
  52534. mysql_tquery(gConnection, gExecute, "OnGateAdded", "i", id);
  52535. SendInfoMessage(playerid, "You have created gate %i (/editgate).", id);
  52536. EditDynamicObjectEx(playerid, EDIT_TYPE_GATE, Gates[id][gObject], id);
  52537. }
  52538. }
  52539. return 1;
  52540. }
  52541. CMD:gotogate(playerid, params[])
  52542. {
  52543. new gate;
  52544. if (Players[playerid][pAdmin] < 5)
  52545. {
  52546. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  52547. }
  52548. else if (sscanf(params, "i", gate))
  52549. {
  52550. return SendSyntaxMessage(playerid, "/gotogate (gate ID)");
  52551. }
  52552. else if (!IsValidGateID(gate))
  52553. {
  52554. return SendErrorMessage(playerid, "You have specified an invalid gate ID.");
  52555. }
  52556. else
  52557. {
  52558. SetPlayerPosEx(playerid, Gates[gate][gSpawn][0], Gates[gate][gSpawn][1], Gates[gate][gSpawn][2], 0.0, Gates[gate][gInterior], Gates[gate][gWorld]);
  52559. SendInfoMessage(playerid, "You have teleported to gate %i.", gate);
  52560. }
  52561. return 1;
  52562. }
  52563. CMD:deletegate(playerid, params[])
  52564. {
  52565. new gate;
  52566. if (Players[playerid][pAdmin] < 5)
  52567. {
  52568. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  52569. }
  52570. else if (sscanf(params, "i", gate))
  52571. {
  52572. return SendSyntaxMessage(playerid, "/deletegate (gate ID)");
  52573. }
  52574. else if (!IsValidGateID(gate))
  52575. {
  52576. return SendErrorMessage(playerid, "You have specified an invalid gate ID.");
  52577. }
  52578. else
  52579. {
  52580. DestroyDynamicObject(Gates[gate][gObject]);
  52581. format(gExecute, sizeof(gExecute), "DELETE FROM rp_gates WHERE gID = %i", Gates[gate][gID]);
  52582. mysql_tquery(gConnection, gExecute);
  52583. Gates[gate][gExists] = 0;
  52584. SendInfoMessage(playerid, "You have deleted gate %i.", gate);
  52585. }
  52586. return 1;
  52587. }
  52588. CMD:checkgate(playerid, params[])
  52589. {
  52590. if (Players[playerid][pAdmin] < 5)
  52591. {
  52592. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  52593. }
  52594. else
  52595. {
  52596. new gate = GetClosestGate(playerid);
  52597. if (gate == INVALID_ID)
  52598. {
  52599. SendErrorMessage(playerid, "There is no gate nearby.");
  52600. }
  52601. else
  52602. {
  52603. SendInfoMessage(playerid, "The gate ID is: %i. Use /editgate to edit the gate.", gate);
  52604. }
  52605. }
  52606. return 1;
  52607. }
  52608. CMD:editgate(playerid, params[])
  52609. {
  52610. new gate;
  52611. if (Players[playerid][pAdmin] < 5)
  52612. {
  52613. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  52614. }
  52615. else if (sscanf(params, "i", gate))
  52616. {
  52617. return SendSyntaxMessage(playerid, "/editgate (gate ID)");
  52618. }
  52619. else if (!IsValidGateID(gate))
  52620. {
  52621. return SendErrorMessage(playerid, "You have specified an invalid gate ID.");
  52622. }
  52623. else
  52624. {
  52625. ShowGateEditMenu(playerid, gate);
  52626. }
  52627. return 1;
  52628. }
  52629. CMD:gate(playerid, params[]) return cmd_remote(playerid, params);
  52630. CMD:open(playerid, params[]) return cmd_remote(playerid, params);
  52631. //CMD:door(playerid, params[]) return cmd_remote(playerid, params);
  52632. CMD:opengate(playerid, params[]) return cmd_remote(playerid, params);
  52633. CMD:opendoor(playerid, params[]) return cmd_remote(playerid, params);
  52634. CMD:remote(playerid, params[])
  52635. {
  52636. new success = GateCheck(playerid);
  52637. if (!success)
  52638. {
  52639. SendErrorMessage(playerid, "There is no gate nearby.");
  52640. }
  52641. return 1;
  52642. }
  52643. CMD:ticket(playerid, params[])
  52644. {
  52645. return cmd_fine(playerid, params);
  52646. }
  52647. CMD:fine(playerid, params[])
  52648. {
  52649. new targetid, price, reason[128];
  52650. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  52651. {
  52652. return SendErrorMessage(playerid, "You are not part of the law enforcement.");
  52653. }
  52654. else if (sscanf(params, "uis[128]", targetid, price, reason))
  52655. {
  52656. return SendSyntaxMessage(playerid, "/fine [playerid/name] [amount] [reason]");
  52657. }
  52658. else if (!IsPlayerConnected(targetid))
  52659. {
  52660. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  52661. }
  52662. else if (!IsPlayerInRangeOfPlayer(playerid, targetid))
  52663. {
  52664. return SendErrorMessage(playerid, "You must be in range of that player.");
  52665. }
  52666. else if (price < 10 || price > 5000)
  52667. {
  52668. return SendErrorMessage(playerid, "The price of the ticket must be between $10 and $5000.");
  52669. }
  52670. else
  52671. {
  52672. format(gExecute, sizeof(gExecute), "INSERT INTO rp_tickets (Player, Reason, Date, Amount) VALUES(%i, '%s', NOW(), %i)", Players[targetid][pID], mysql_escaped(reason), price);
  52673. mysql_tquery(gConnection, gExecute);
  52674. format(gExecute, sizeof(gExecute), "INSERT INTO rp_ticketlogs (Player, Target, Price, Date, Reason) VALUES('%s', '%s', %i, NOW(), '%s')", ReturnName(playerid), ReturnName(targetid), price, mysql_escaped(reason));
  52675. mysql_tquery(gConnection, gExecute);
  52676. SendInfoMessage(playerid, "You have written %s a ticket for %s, reason: %s", ReturnNameEx(targetid), FormatNumber(price), reason);
  52677. SendInfoMessage(targetid, "%s has written you a ticket for %s, reason: %s", ReturnNameEx(playerid), FormatNumber(price), reason);
  52678. Players[playerid][pPaycheck] += Random(100,350);
  52679. //SendAdminMessage(COLOR_RED, "Admin: %s has written %s a ticket for %s, reason: %s", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0), FormatNumber(price), reason);
  52680. ShowActionBubble(playerid, "* %s writes a ticket and passes it to %s.", ReturnNameEx(playerid), ReturnNameEx(targetid));
  52681. }
  52682. return 1;
  52683. }
  52684. CMD:fines(playerid, params[])
  52685. {
  52686. new targetid;
  52687. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  52688. {
  52689. ShowFineList(playerid);
  52690. }
  52691. else
  52692. {
  52693. if (sscanf(params, "u", targetid))
  52694. {
  52695. ShowFineList(playerid);
  52696. }
  52697. else if (!IsPlayerConnected(targetid))
  52698. {
  52699. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  52700. }
  52701. else if (IsPlayerNPC(targetid))
  52702. {
  52703. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  52704. }
  52705. else if (!IsPlayerLoggedIn(targetid))
  52706. {
  52707. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  52708. }
  52709. else
  52710. {
  52711. ShowFineList(targetid);
  52712. }
  52713. }
  52714. return 1;
  52715. }
  52716. CMD:frisk(playerid, params[])
  52717. {
  52718. new targetid;
  52719. if (sscanf(params, "u", targetid))
  52720. {
  52721. return SendSyntaxMessage(playerid, "/frisk [playerid/name]");
  52722. }
  52723. else if (!IsPlayerConnected(targetid))
  52724. {
  52725. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  52726. }
  52727. else if (IsPlayerNPC(targetid))
  52728. {
  52729. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  52730. }
  52731. else if (!IsPlayerLoggedIn(targetid))
  52732. {
  52733. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  52734. }
  52735. else if (!IsPlayerInRangeOfPlayer(playerid, targetid, 5.0))
  52736. {
  52737. return SendErrorMessage(playerid, "You must be in range of that player.");
  52738. }
  52739. else if (targetid == playerid)
  52740. {
  52741. return SendErrorMessage(playerid, "You can't frisk yourself.");
  52742. }
  52743. else
  52744. {
  52745. Players[targetid][pFriskOffer] = playerid;
  52746. SendInfoMessage(playerid, "You have offered to frisk %s.", ReturnNameEx(targetid));
  52747. SendInfoMessage(targetid, "%s has offered to frisk you. Use /acceptfrisk to accept the offer.", ReturnNameEx(playerid));
  52748. }
  52749. return 1;
  52750. }
  52751. CMD:confiscate(playerid, params[])
  52752. {
  52753. new targetid;
  52754. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  52755. {
  52756. return SendErrorMessage(playerid, "You are not part of the law enforcement.");
  52757. }
  52758. else if (sscanf(params, "u", targetid))
  52759. {
  52760. return SendSyntaxMessage(playerid, "/confiscate [playerid/name]");
  52761. }
  52762. else if (!IsPlayerConnected(targetid))
  52763. {
  52764. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  52765. }
  52766. else if (IsPlayerNPC(targetid))
  52767. {
  52768. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  52769. }
  52770. else if (!IsPlayerLoggedIn(targetid))
  52771. {
  52772. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  52773. }
  52774. else if (!IsPlayerInRangeOfPlayer(playerid, targetid, 5.0))
  52775. {
  52776. return SendErrorMessage(playerid, "You must be in range of that player.");
  52777. }
  52778. else
  52779. {
  52780. ResetWeapons(targetid);
  52781. for (new i = 0; i < MAX_INVENTORY_ITEMS; i ++)
  52782. {
  52783. if (Inventory[targetid][i][invExists] && GetItemInformation(Inventory[targetid][i][invName], ITEM_INFO_ILLEGAL))
  52784. {
  52785. RemoveItemFromInventory(targetid, i);
  52786. }
  52787. }
  52788. SendInfoMessage(playerid, "You have confiscated all illegal items from %s.", ReturnNameEx(targetid));
  52789. SendInfoMessage(targetid, "%s has confiscated all of your illegal items,", ReturnNameEx(playerid));
  52790. SendAdminMessage(COLOR_RED, "Admin: %s has confiscated %s's illegal items.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0));
  52791. }
  52792. return 1;
  52793. }
  52794. CMD:kickdoor(playerid, params[])
  52795. {
  52796. new house = GetClosestHouse(playerid);
  52797. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  52798. {
  52799. return SendErrorMessage(playerid, "You are not part of the law enforcement.");
  52800. }
  52801. else if (house == INVALID_ID)
  52802. {
  52803. return SendErrorMessage(playerid, "There is no house nearby.");
  52804. }
  52805. else if (!Houses[house][hLocked])
  52806. {
  52807. return SendErrorMessage(playerid, "The doors are already unlocked.");
  52808. }
  52809. else if (Players[playerid][pSetPosition])
  52810. {
  52811. return SendErrorMessage(playerid, "Please wait before using this command.");
  52812. }
  52813. else
  52814. {
  52815. Houses[house][hLocked] = 0;
  52816. SaveHouse(house);
  52817. ShowActionBubble(playerid, "* %s kicks down the door.", ReturnNameEx(playerid));
  52818. SendInfoMessage(playerid, "You have kicked down the door.");
  52819. SetPlayerFadePos(playerid, Houses[house][hInt][0], Houses[house][hInt][1], Houses[house][hInt][2], Houses[house][hInt][3], Houses[house][hInterior], Houses[house][hWorld]);
  52820. PlayAnimation(playerid, "POLICE", "Door_Kick", 4.1, 0, 0, 0, 0, 0, 1);
  52821. TogglePlayerControllable(playerid,0);
  52822. GameTextForPlayer(playerid, "~r~Loading objects...", 2000, 4);
  52823. SetTimerEx("UnFreezePlayer", 2000, false, "i", playerid);
  52824. }
  52825. return 1;
  52826. }
  52827. CMD:roster(playerid, params[])
  52828. {
  52829. if (Players[playerid][pFaction] == INVALID_ID)
  52830. {
  52831. return SendErrorMessage(playerid, "You are not part of a faction.");
  52832. }
  52833. else
  52834. {
  52835. ShowFactionRoster(playerid);
  52836. }
  52837. return 1;
  52838. }
  52839. CMD:aroster(playerid, params[])
  52840. {
  52841. if (Players[playerid][pAdmin] < 6)
  52842. {
  52843. return SendErrorMessage(playerid, "You are not privileged to use this.");
  52844. }
  52845. else
  52846. {
  52847. ShowAdminRoster(playerid);
  52848. }
  52849. return 1;
  52850. }
  52851. CMD:repair(playerid, params[])
  52852. {
  52853. new
  52854. id = GetClosestAutoShop(playerid),
  52855. vehicleid = GetPlayerVehicleID(playerid);
  52856. if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
  52857. {
  52858. return SendErrorMessage(playerid, "You are not driving any vehicle.");
  52859. }
  52860. else if (id == INVALID_ID)
  52861. {
  52862. return SendErrorMessage(playerid, "There is no auto shop nearby.");
  52863. }
  52864. else if (!IsPoweredVehicle(vehicleid))
  52865. {
  52866. return SendErrorMessage(playerid, "This vehicle doesn't have an engine to repair.");
  52867. }
  52868. else if (!GetRepairCost(vehicleid))
  52869. {
  52870. return SendErrorMessage(playerid, "This vehicle doesn't need to be repaired.");
  52871. }
  52872. else if (IsAircraftVehicle(vehicleid))
  52873. {
  52874. return SendErrorMessage(playerid, "This vehicle is too large to fit inside the auto shop.");
  52875. }
  52876. else if (IsAutoShopInUse(id))
  52877. {
  52878. return SendErrorMessage(playerid, "This auto shop is in use. Please wait until it is ready.");
  52879. }
  52880. else if (isnull(params) || strcmp(params, "confirm", true) != 0)
  52881. {
  52882. return SendSyntaxMessage(playerid, "/repair (confirm) - The repair cost is %s.", FormatNumber(GetRepairCost(vehicleid)));
  52883. }
  52884. else if (!PlayerCanAfford(playerid, GetRepairCost(vehicleid)))
  52885. {
  52886. return SendErrorMessage(playerid, "You cannot afford the cost of the repairs.");
  52887. }
  52888. else
  52889. {
  52890. foreach (new i : Player)
  52891. {
  52892. if (IsPlayerInAnyVehicle(i) && IsPlayerInVehicle(i, vehicleid))
  52893. {
  52894. GetVehiclePos(vehicleid, Players[i][pAutoX], Players[i][pAutoY], Players[i][pAutoZ]);
  52895. GetVehicleZAngle(vehicleid, Players[i][pAutoA]);
  52896. gSeatData[i] = GetPlayerVehicleSeat(i);
  52897. }
  52898. }
  52899. SetEngineStatus(vehicleid, false);
  52900. SetVehicleVirtualWorld(vehicleid, id);
  52901. SetVehiclePos(vehicleid, 1903.4791, 1353.9811, 24.5537);
  52902. SetVehicleZAngle(vehicleid, 90.0);
  52903. foreach (new i : Player)
  52904. {
  52905. if (gSeatData[i] >= 0)
  52906. {
  52907. SetPlayerVirtualWorld(i, id);
  52908. TogglePlayerControllable(i, false);
  52909. SetCameraBehindPlayer(i);
  52910. PutPlayerInVehicle(i, vehicleid, gSeatData[i]);
  52911. gSeatData[i] = INVALID_ID;
  52912. }
  52913. }
  52914. ShowFooterText(playerid, "~g~~h~Repairing... 10 seconds remaining.", 1500);
  52915. SendInfoMessage(playerid, "Please wait as your vehicle is now being repaired...");
  52916. Players[playerid][pAutoShop] = id;
  52917. Players[playerid][pAutoTime] = 10;
  52918. }
  52919. return 1;
  52920. }
  52921. CMD:addautoshop(playerid, params[])
  52922. {
  52923. /*if (Players[playerid][pAdmin] < 5)
  52924. {
  52925. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  52926. }
  52927. else if (GetClosestAutoShop(playerid) != INVALID_ID)
  52928. {
  52929. return SendErrorMessage(playerid, "There is another auto shop nearby.");
  52930. }
  52931. else if (IsPlayerInside(playerid))
  52932. {
  52933. return SendErrorMessage(playerid, "You can only create auto shops outside.");
  52934. }
  52935. else
  52936. {
  52937. new id = GetNextAutoShopID();
  52938. if (id == INVALID_ID)
  52939. {
  52940. SendErrorMessage(playerid, "There are no available auto shops.");
  52941. }
  52942. else
  52943. {
  52944. AutoShops[id][asExists] = 1;
  52945. AutoShops[id][asText] = INVALID_3DTEXT_ID;
  52946. AutoShops[id][asPickup] = INVALID_ID;
  52947. AutoShops[id][asIcon] = INVALID_ID;
  52948. GetPlayerPos(playerid, AutoShops[id][asX], AutoShops[id][asY], AutoShops[id][asZ]);
  52949. format(gExecute, sizeof(gExecute), "INSERT INTO rp_autoshops (asX, asY, asZ) VALUES(%.4f, %.4f, %.4f)", AutoShops[id][asX], AutoShops[id][asY], AutoShops[id][asZ]);
  52950. mysql_tquery(gConnection, gExecute, "OnAutoShopAdded", "i", id);
  52951. UpdateAutoShop(id);
  52952. SendInfoMessage(playerid, "You have added auto shop %i (/deleteautoshop).", id);
  52953. }
  52954. }*/
  52955. SendClientMessage(playerid, COLOR_WHITE, "Auto shops have been deprecated as of update v1.6.2 (October 3rd, 2017).");
  52956. SendClientMessage(playerid, COLOR_WHITE, "Grime added a new way of using Pay 'n' Spray by using /enter.");
  52957. return 1;
  52958. }
  52959. CMD:gotoautoshop(playerid, params[])
  52960. {
  52961. new shop;
  52962. if (Players[playerid][pAdmin] < 5)
  52963. {
  52964. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  52965. }
  52966. else if (sscanf(params, "i", shop))
  52967. {
  52968. return SendSyntaxMessage(playerid, "/gotoautoshop (shop ID)");
  52969. }
  52970. else if (!IsValidAutoShopID(shop))
  52971. {
  52972. return SendErrorMessage(playerid, "You have specified an invalid auto shop ID.");
  52973. }
  52974. else
  52975. {
  52976. SetPlayerPos(playerid, AutoShops[shop][asX], AutoShops[shop][asY], AutoShops[shop][asZ]);
  52977. SendInfoMessage(playerid, "You have teleported to auto shop %i.", shop);
  52978. }
  52979. return 1;
  52980. }
  52981. CMD:deleteautoshop(playerid, params[])
  52982. {
  52983. new shop;
  52984. if (Players[playerid][pAdmin] < 5)
  52985. {
  52986. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  52987. }
  52988. else if (sscanf(params, "i", shop))
  52989. {
  52990. return SendSyntaxMessage(playerid, "/deleteautoshop (shop ID)");
  52991. }
  52992. else if (!IsValidAutoShopID(shop))
  52993. {
  52994. return SendErrorMessage(playerid, "You have specified an invalid auto shop ID.");
  52995. }
  52996. else
  52997. {
  52998. DestroyDynamic3DTextLabel(AutoShops[shop][asText]);
  52999. DestroyDynamicPickup(AutoShops[shop][asPickup]);
  53000. DestroyDynamicMapIcon(AutoShops[shop][asIcon]);
  53001. format(gExecute, sizeof(gExecute), "DELETE FROM rp_autoshops WHERE asID = %i", AutoShops[shop][asID]);
  53002. mysql_tquery(gConnection, gExecute);
  53003. AutoShops[shop][asExists] = 0;
  53004. SendInfoMessage(playerid, "You have deleted auto shop %i.", shop);
  53005. }
  53006. return 1;
  53007. }
  53008. CMD:loadpatient(playerid, params[])
  53009. {
  53010. new targetid, vehicleid = GetClosestVehicle(playerid);
  53011. if (!IsPlayerInFaction(playerid, FACTION_MEDICAL))
  53012. {
  53013. return SendErrorMessage(playerid, "You are not part of a medical service.");
  53014. }
  53015. else if (sscanf(params, "u", targetid))
  53016. {
  53017. return SendSyntaxMessage(playerid, "/loadpatient [playerid/name]");
  53018. }
  53019. else if (!IsPlayerConnected(targetid))
  53020. {
  53021. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  53022. }
  53023. else if (IsPlayerNPC(targetid))
  53024. {
  53025. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  53026. }
  53027. else if (!IsPlayerLoggedIn(targetid))
  53028. {
  53029. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  53030. }
  53031. else if (targetid == playerid)
  53032. {
  53033. return SendErrorMessage(playerid, "You can't load yourself.");
  53034. }
  53035. else if (!IsPlayerInRangeOfPlayer(playerid, targetid, 5.0))
  53036. {
  53037. return SendErrorMessage(playerid, "You must be in range of that player.");
  53038. }
  53039. else if (Players[targetid][pDeathState] != DEATH_STATE_INJURED)
  53040. {
  53041. return SendErrorMessage(playerid, "The specified target is not in an injured state.");
  53042. }
  53043. else if (IsPlayerInAnyVehicle(targetid))
  53044. {
  53045. return SendErrorMessage(playerid, "The specified target is in a vehicle.");
  53046. }
  53047. else if (vehicleid == INVALID_VEHICLE_ID || GetVehicleModel(vehicleid) != 416)
  53048. {
  53049. return SendErrorMessage(playerid, "There is no ambulance nearby.");
  53050. }
  53051. else
  53052. {
  53053. new seat = GetVehicleNextSeat(vehicleid, 2);
  53054. if (seat == INVALID_ID)
  53055. {
  53056. SendErrorMessage(playerid, "There are no seats available.");
  53057. }
  53058. else
  53059. {
  53060. ClearAnimations(targetid);
  53061. PutPlayerInVehicle(targetid, vehicleid, seat);
  53062. SendInfoMessage(playerid, "You have loaded %s into the ambulance.", ReturnNameEx(targetid));
  53063. SendInfoMessage(targetid, "%s has loaded you into the ambulance.", ReturnNameEx(playerid));
  53064. }
  53065. }
  53066. return 1;
  53067. }
  53068. CMD:damages(playerid, params[])
  53069. {
  53070. new targetid;
  53071. if (sscanf(params, "u", targetid))
  53072. {
  53073. return SendSyntaxMessage(playerid, "/damages [playerid/name]");
  53074. }
  53075. else if (!IsPlayerConnected(targetid))
  53076. {
  53077. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  53078. }
  53079. else if (IsPlayerNPC(targetid))
  53080. {
  53081. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  53082. }
  53083. else if (!IsPlayerLoggedIn(targetid))
  53084. {
  53085. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  53086. }
  53087. else if (!IsPlayerInRangeOfPlayer(playerid, targetid, 5.0))
  53088. {
  53089. return SendErrorMessage(playerid, "You must be in range of that player.");
  53090. }
  53091. else if (Players[targetid][pDeathState] != DEATH_STATE_INJURED && playerid != targetid)
  53092. {
  53093. return SendErrorMessage(playerid, "The specified target is not in an injured state.");
  53094. }
  53095. else
  53096. {
  53097. new
  53098. string[512],
  53099. title[64];
  53100. for (new i = BODY_PART_TORSO; i <= BODY_PART_HEAD; i ++)
  53101. {
  53102. if (LastShots[targetid][i][lWeaponShots] > 0)
  53103. {
  53104. switch (LastShots[targetid][i][lWeaponID])
  53105. {
  53106. case 0, 1: format(string, sizeof(string), "%s\n%i hits from fists to the %s.", string, LastShots[targetid][i][lWeaponShots], GetBodypartName(i));
  53107. default: format(string, sizeof(string), "%s\n%i hits from a %s to the %s.", string, LastShots[targetid][i][lWeaponShots], GetWeapon(LastShots[targetid][i][lWeaponID]), GetBodypartName(i));
  53108. }
  53109. }
  53110. }
  53111. if (isnull(string))
  53112. {
  53113. SendErrorMessage(playerid, "There doesn't appear to be any visible injuries.");
  53114. }
  53115. else
  53116. {
  53117. format(title, sizeof(title), "Damage for %s", ReturnNameEx(targetid));
  53118. Dialog_Show(playerid, Examine, DIALOG_STYLE_LIST, title, string, "Close", "");
  53119. }
  53120. ShowActionBubble(playerid, "* %s examines %s for any injuries.", ReturnNameEx(playerid), ReturnNameEx(targetid));
  53121. }
  53122. return 1;
  53123. }
  53124. CMD:megaphone(playerid, params[])
  53125. {
  53126. return cmd_m(playerid, params);
  53127. }
  53128. CMD:m(playerid, params[])
  53129. {
  53130. if (!IsPlayerInFaction(playerid, FACTION_LEO) && !IsPlayerInFaction(playerid, FACTION_MEDICAL))
  53131. {
  53132. return SendErrorMessage(playerid, "You are not part of any public service faction.");
  53133. }
  53134. else if (Players[playerid][pMuted])
  53135. {
  53136. return SendErrorMessage(playerid, "You cannot use this command since you're muted.");
  53137. } else if(!IsPlayerInAnyVehicle(playerid)) {
  53138. return SendErrorMessage(playerid, "You must be in a vehicle to use this command.");
  53139. }
  53140. else if (isnull(params))
  53141. {
  53142. return SendSyntaxMessage(playerid, "/(m)egaphone (message)");
  53143. }
  53144. else
  53145. {
  53146. SendDistanceMessage(playerid, 50.0, COLOR_YELLOW, "** (Megaphone) %s: %s **", ReturnNameEx(playerid), params);
  53147. ShowActionBubble(playerid, "* %s speaks over their megaphone.", ReturnNameEx(playerid));
  53148. }
  53149. return 1;
  53150. }
  53151. CMD:deliverpatients(playerid, params[])
  53152. {
  53153. new count, vehicleid = GetPlayerVehicleID(playerid);
  53154. if (!IsPlayerInFaction(playerid, FACTION_MEDICAL))
  53155. {
  53156. return SendErrorMessage(playerid, "You are not part of a medical service.");
  53157. }
  53158. else if (GetVehicleModel(vehicleid) != 416 && GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
  53159. {
  53160. return SendErrorMessage(playerid, "You are not driving an ambulance.");
  53161. }
  53162. else if (!IsPlayerInRangeOfHospital(playerid))
  53163. {
  53164. return SendErrorMessage(playerid, "There is no hospital nearby.");
  53165. }
  53166. else
  53167. {
  53168. foreach (new i : Player)
  53169. {
  53170. if (IsPlayerInVehicle(i, vehicleid) && Players[i][pDeathState] == DEATH_STATE_INJURED)
  53171. {
  53172. Players[i][pHospital] = GetClosestHospital(i);
  53173. PlayerRecover(i);
  53174. count++;
  53175. }
  53176. }
  53177. if (count)
  53178. {
  53179. SendInfoMessage(playerid, "You have delivered %i patients to the hospital.", count);
  53180. }
  53181. else
  53182. {
  53183. SendErrorMessage(playerid, "There are no patients in the ambulance.");
  53184. }
  53185. }
  53186. return 1;
  53187. }
  53188. CMD:deploy(playerid, params[])
  53189. {
  53190. if (!IsPlayerInFaction(playerid, FACTION_LEO) && !IsPlayerInFaction(playerid, FACTION_MEDICAL) && !IsPlayerInFaction(playerid, FACTION_GOVERNMENT))
  53191. {
  53192. return SendErrorMessage(playerid, "You are not part of any public service faction.");
  53193. }
  53194. else if (GetNextDeployID() == INVALID_ID)
  53195. {
  53196. return SendErrorMessage(playerid, "You can't deploy anymore items! Use /undeploy to remove them.");
  53197. }
  53198. else if (IsPlayerInside(playerid))
  53199. {
  53200. return SendErrorMessage(playerid, "You can only deploy items outdoors.");
  53201. }
  53202. else
  53203. {
  53204. Dialog_Show(playerid, Deploy, DIALOG_STYLE_LIST, "{FFFFFF}Deploy Items", "Traffic cone\nSpike strips\nRoadblock\nSmoke flare\nRound barrier\nPolice Tape\nSmall Barrier\nDetour Barrier\nMedium Barrier\nLarge Barrier", "Deploy", "Cancel");
  53205. }
  53206. return 1;
  53207. }
  53208. CMD:undeploy(playerid, params[])
  53209. {
  53210. if (!IsPlayerInFaction(playerid, FACTION_LEO) && !IsPlayerInFaction(playerid, FACTION_MEDICAL) && !IsPlayerInFaction(playerid, FACTION_GOVERNMENT))
  53211. {
  53212. return SendErrorMessage(playerid, "You are not part of any public service faction.");
  53213. }
  53214. else
  53215. {
  53216. Dialog_Show(playerid, Undeploy, DIALOG_STYLE_LIST, "{FFFFFF}Deployed Items", "Remove nearest\nRemove all items", "Select", "Cancel");
  53217. }
  53218. return 1;
  53219. }
  53220. CMD:taxrate(playerid, params[])
  53221. {
  53222. new rate;
  53223. if (!IsPlayerInFaction(playerid, FACTION_GOVERNMENT) && Players[playerid][pAdmin] < 6)
  53224. {
  53225. return SendErrorMessage(playerid, "You are not part of the government.");
  53226. }
  53227. else if (sscanf(params, "i", rate))
  53228. {
  53229. return SendSyntaxMessage(playerid, "/taxrate (percentage)");
  53230. }
  53231. else if (Players[playerid][pFactionRank] < Factions[Players[playerid][pFaction]][fcMaxRanks])
  53232. {
  53233. return SendErrorMessage(playerid, "You are not a high ranking member.");
  53234. }
  53235. else if (!(1 <= rate <= 15))
  53236. {
  53237. return SendErrorMessage(playerid, "The percentage must consist of a value between 1 and 15.");
  53238. }
  53239. else
  53240. {
  53241. Server[TaxRate] = rate;
  53242. SaveInformation();
  53243. SendInfoMessage(playerid, "You have set the tax rate to %i percent.", rate);
  53244. SendAdminMessage(COLOR_RED, "Admin: %s has set the tax rate to %i percent.", ReturnNameEx(playerid, 0), rate);
  53245. }
  53246. return 1;
  53247. }
  53248. CMD:vault(playerid, params[])
  53249. {
  53250. if (!IsPlayerInFaction(playerid, FACTION_GOVERNMENT))
  53251. {
  53252. return SendErrorMessage(playerid, "You are not part of the government.");
  53253. }
  53254. else if (!IsPlayerInBank(playerid))
  53255. {
  53256. return SendErrorMessage(playerid, "You are not close to the bank counter.");
  53257. }
  53258. else if (Players[playerid][pFactionRank] < Factions[Players[playerid][pFaction]][fcMaxRanks])
  53259. {
  53260. return SendErrorMessage(playerid, "You are not a high ranking member.");
  53261. }
  53262. else
  53263. {
  53264. Dialog_Show(playerid, GovernmentVault, DIALOG_STYLE_LIST, "{FFFFFF}Government Vault", "Withdraw (%s)\nDeposit", "Select", "Cancel", FormatNumber(Server[TaxVault]));
  53265. }
  53266. return 1;
  53267. }
  53268. CMD:acceptcall(playerid, params[])
  53269. {
  53270. new targetid;
  53271. if (!IsPlayerInFaction(playerid, FACTION_LEO) && !IsPlayerInFaction(playerid, FACTION_MEDICAL))
  53272. {
  53273. return SendErrorMessage(playerid, "You are not part of any public service faction.");
  53274. }
  53275. else if (sscanf(params, "u", targetid))
  53276. {
  53277. return SendSyntaxMessage(playerid, "/acceptcall [playerid/name]");
  53278. }
  53279. else if (!IsPlayerConnected(targetid))
  53280. {
  53281. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  53282. }
  53283. else if (!Players[targetid][pEmergency])
  53284. {
  53285. return SendErrorMessage(playerid, "That player hasn't reported an emergency.");
  53286. }
  53287. else
  53288. {
  53289. new Float:x, Float:y, Float:z;
  53290. if (!GetPlayerPosEx(targetid, x, y, z))
  53291. {
  53292. SendInfoMessage(playerid, "Dispatch: The call could not be traced. (( Player is inside )).");
  53293. }
  53294. else
  53295. {
  53296. SetCheckpoint(playerid, CHECKPOINT_GPS, x, y, z, 3.0);
  53297. SendInfoMessage(playerid, "Dispatch: A waypoint was placed at the caller's last known location.");
  53298. }
  53299. }
  53300. return 1;
  53301. }
  53302. CMD:addrental(playerid, params[])
  53303. {
  53304. new company, model[32], modelid, price, color1, color2;
  53305. if (Players[playerid][pAdmin] < 5)
  53306. {
  53307. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  53308. }
  53309. else if (IsValidVehicle(Players[playerid][pAddVehicle]))
  53310. {
  53311. return SendErrorMessage(playerid, "You must exit the current vehicle first.");
  53312. }
  53313. else if (sscanf(params, "is[32]iI(11)I(11)", company, model, price, color1, color2))
  53314. {
  53315. SendSyntaxMessage(playerid, "/addrental (company ID) (model ID) (price) [color 1] [color 2]");
  53316. SendClientMessage(playerid, COLOR_LIGHTGREY, "Note: Use '-1' as the company ID if you don't wish to assign it to a company.");
  53317. }
  53318. else if (company != INVALID_ID && !IsValidCompanyID(company))
  53319. {
  53320. return SendErrorMessage(playerid, "The specified company is not valid.");
  53321. }
  53322. else if (!(modelid = GetVehicleModelFromName(model)))
  53323. {
  53324. return SendErrorMessage(playerid, "The specified model doesn't exist.");
  53325. }
  53326. else if (price < 1)
  53327. {
  53328. return SendErrorMessage(playerid, "The specified price can't be below $1.");
  53329. }
  53330. else if (company != INVALID_ID && Companies[company][cType] != COMPANY_RENTALS)
  53331. {
  53332. return SendErrorMessage(playerid, "You have specified an invalid company ID.");
  53333. }
  53334. else
  53335. {
  53336. SpawnConfirmationVehicle(playerid, company, INVALID_ID, price, modelid, color1, color2, true);
  53337. SendInfoMessage(playerid, "Use the /confirm command to save the position of the vehicle.");
  53338. }
  53339. return 1;
  53340. }
  53341. CMD:addobject(playerid, params[])
  53342. {
  53343. new modelid, Float:distance;
  53344. //if (!IsPlayerInFaction(playerid, FACTION_LEO) && !IsPlayerInFaction(playerid, FACTION_MEDICAL) && !IsPlayerInFaction(playerid, FACTION_GOVERNMENT))
  53345. if (Players[playerid][pAdmin] < 5 && Players[playerid][pMapper] < 1)
  53346. {
  53347. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  53348. }
  53349. else if (Players[playerid][pAdmin] < 1 && Players[playerid][pMapper] > 0 && !Players[playerid][pMapperDuty])
  53350. {
  53351. return SendErrorMessage(playerid, "You must be on mapper duty (/mduty).");
  53352. }
  53353. else if (sscanf(params, "iF(200.0)", modelid, distance))
  53354. {
  53355. return SendSyntaxMessage(playerid, "/addobject (model ID) (optional distance)");
  53356. }
  53357. else if (!IsValidModelID(modelid))
  53358. {
  53359. return SendErrorMessage(playerid, "You have specified an invalid model ID.");
  53360. }
  53361. else if (modelid == 17951 || modelid == 3294)
  53362. {
  53363. return SendErrorMessage(playerid, "That model can't be used as it causes problems in SA-MP.");
  53364. }
  53365. else if (distance < 1.0 || distance > 300.0)
  53366. {
  53367. return SendErrorMessage(playerid, "The distance must range between 1.0 and 300.0.");
  53368. }
  53369. else
  53370. {
  53371. new
  53372. Float:x,
  53373. Float:y,
  53374. Float:z,
  53375. Float:angle,
  53376. id;
  53377. GetPlayerPos(playerid, x, y, z);
  53378. GetPlayerFacingAngle(playerid, angle);
  53379. id = AddObject(modelid, x + (3.0 * floatsin(-angle, degrees)), y + (3.0 * floatcos(-angle, degrees)), z, 0.0, 0.0, angle, distance, GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid));
  53380. if (id == INVALID_ID)
  53381. {
  53382. SendErrorMessage(playerid, "There are no available object slots.");
  53383. }
  53384. else
  53385. {
  53386. SendInfoMessage(playerid, "You have created object %i (/editobject).", id);
  53387. EditDynamicObjectEx(playerid, EDIT_TYPE_OBJECT, Objects[id][oObjectID], id);
  53388. }
  53389. }
  53390. return 1;
  53391. }
  53392. CMD:reloadobjects(playerid, params[])
  53393. {
  53394. new count;
  53395. if ((Players[playerid][pAdmin] < 5) && (Players[playerid][pMapper] == 0))
  53396. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  53397. if (Players[playerid][pAdmin] < 1 && Players[playerid][pMapper] > 0 && !Players[playerid][pMapperDuty])
  53398. {
  53399. return SendErrorMessage(playerid, "You must be on mapper duty (/mduty).");
  53400. }
  53401. for (new i = 0; i < MAX_SCRIPT_OBJECTS; i ++)
  53402. {
  53403. if (IsValidObjectID(i))
  53404. {
  53405. //UpdateObject(i);
  53406. count ++;
  53407. DestroyDynamicObject(Objects[i][oObjectID]);
  53408. DestroyDynamic3DTextLabel(Objects[i][oText]);
  53409. }
  53410. }
  53411. mysql_tquery(gConnection, "SELECT * FROM rp_objects", "OnLoadObjects");
  53412. SendFormatMessageToAll(COLOR_SAMP, "(( %s has reloaded %i objects. ))", ReturnNameEx(playerid, 0), count);
  53413. return 1;
  53414. }
  53415. CMD:editobject(playerid, params[])
  53416. {
  53417. new object;
  53418. if ((Players[playerid][pAdmin] < 5) && (Players[playerid][pMapper] == 0))
  53419. {
  53420. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  53421. }
  53422. else if (Players[playerid][pAdmin] < 1 && Players[playerid][pMapper] > 0 && !Players[playerid][pMapperDuty])
  53423. {
  53424. return SendErrorMessage(playerid, "You must be on mapper duty (/mduty).");
  53425. }
  53426. else if (sscanf(params, "i", object))
  53427. {
  53428. return SendSyntaxMessage(playerid, "/editobject (object ID)");
  53429. }
  53430. else if (!IsValidObjectID(object))
  53431. {
  53432. return SendErrorMessage(playerid, "You have specified an invalid object ID.");
  53433. }
  53434. else
  53435. {
  53436. SendInfoMessage(playerid, "Click on the disk icon to save changes.");
  53437. EditDynamicObjectEx(playerid, EDIT_TYPE_OBJECT, Objects[object][oObjectID], object);
  53438. }
  53439. return 1;
  53440. }
  53441. /*
  53442. CMD:gotocoords(playerid, params[])
  53443. {
  53444. new Float:fX, Float:fY, Float:fZ, interior;
  53445. // remove commas so we can copy paste coords without removing commas.
  53446. for (new i = 0, l = strlen(params); i < l; i ++) {
  53447. if (params[i] == ',') {
  53448. strdel(params, i, i + 1);
  53449. }
  53450. }
  53451. if (Players[playerid][pAdmin] < 2)
  53452. {
  53453. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  53454. }
  53455. else if (sscanf(params, "fffI(0)", fX, fY, fZ, interior))
  53456. {
  53457. return SendSyntaxMessage(playerid, "/gotocoords (x) (y) (z) [interior]");
  53458. }
  53459. else
  53460. {
  53461. SetPlayerPos(playerid, fX, fY, fZ);
  53462. SetPlayerInterior(playerid, interior);
  53463. SetCameraBehindPlayer(playerid);
  53464. SendInfoMessage(playerid, "You have teleported to %.4f, %.4f, %.4f (interior: %i).", fX, fY, fZ, interior);
  53465. }
  53466. return 1;
  53467. }
  53468. */
  53469. CMD:rotobjectx(playerid,params[])
  53470. {
  53471. new Float:rX, object;
  53472. if ((Players[playerid][pAdmin] < 5) && (Players[playerid][pMapper] == 0))
  53473. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  53474. if (Players[playerid][pAdmin] < 1 && Players[playerid][pMapper] > 0 && !Players[playerid][pMapperDuty])
  53475. {
  53476. return SendErrorMessage(playerid, "You must be on mapper duty (/mduty).");
  53477. }
  53478. if (sscanf(params,"if", object, rX))
  53479. return SendSyntaxMessage(playerid, "/rotobjectx [object ID] [xrot]");
  53480. if (!IsValidObjectID(object))
  53481. return SendErrorMessage(playerid, "You have specified an invalid object ID.");
  53482. Objects[object][oRX] = rX;
  53483. UpdateObject(object);
  53484. SaveObject(object);
  53485. return 1;
  53486. }
  53487. CMD:rotobjecty(playerid,params[])
  53488. {
  53489. new Float:rY, object;
  53490. if ((Players[playerid][pAdmin] < 5) && (Players[playerid][pMapper] == 0))
  53491. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  53492. if (Players[playerid][pAdmin] < 1 && Players[playerid][pMapper] > 0 && !Players[playerid][pMapperDuty])
  53493. {
  53494. return SendErrorMessage(playerid, "You must be on mapper duty (/mduty).");
  53495. }
  53496. if (sscanf(params,"if", object, rY))
  53497. return SendSyntaxMessage(playerid, "/rotobjecty [object ID] [yrot]");
  53498. if (!IsValidObjectID(object))
  53499. return SendErrorMessage(playerid, "You have specified an invalid object ID.");
  53500. Objects[object][oRY] = rY;
  53501. UpdateObject(object);
  53502. SaveObject(object);
  53503. return 1;
  53504. }
  53505. CMD:rotobjectz(playerid,params[])
  53506. {
  53507. new Float:rZ, object;
  53508. if ((Players[playerid][pAdmin] < 5) && (Players[playerid][pMapper] == 0))
  53509. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  53510. if (Players[playerid][pAdmin] < 1 && Players[playerid][pMapper] > 0 && !Players[playerid][pMapperDuty])
  53511. {
  53512. return SendErrorMessage(playerid, "You must be on mapper duty (/mduty).");
  53513. }
  53514. if (sscanf(params,"if", object, rZ))
  53515. return SendSyntaxMessage(playerid, "/rotobjectz [object ID] [zrot]");
  53516. if (!IsValidObjectID(object))
  53517. return SendErrorMessage(playerid, "You have specified an invalid object ID.");
  53518. Objects[object][oRZ] = rZ;
  53519. UpdateObject(object);
  53520. SaveObject(object);
  53521. return 1;
  53522. }
  53523. CMD:setobjectmodel(playerid,params[])
  53524. {
  53525. new model, object;
  53526. if ((Players[playerid][pAdmin] < 5) && (Players[playerid][pMapper] == 0))
  53527. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  53528. if (Players[playerid][pAdmin] < 1 && Players[playerid][pMapper] > 0 && !Players[playerid][pMapperDuty])
  53529. {
  53530. return SendErrorMessage(playerid, "You must be on mapper duty (/mduty).");
  53531. }
  53532. if (sscanf(params,"ii", object, model))
  53533. return SendSyntaxMessage(playerid, "/setobjectmodel [object ID] [model ID]");
  53534. if (!IsValidObjectID(object))
  53535. return SendErrorMessage(playerid, "You have specified an invalid object ID.");
  53536. if (!IsValidModelID(model))
  53537. return SendErrorMessage(playerid, "You have specified an invalid model ID.");
  53538. else if (model == 17951 || model == 3294)
  53539. return SendErrorMessage(playerid, "That model can't be used as it causes problems in SA-MP.");
  53540. Objects[object][oModel] = model;
  53541. UpdateObject(object);
  53542. SaveObject(object);
  53543. return 1;
  53544. }
  53545. CMD:gotoobject(playerid, params[])
  53546. {
  53547. new object;
  53548. if ((Players[playerid][pAdmin] < 5) && (Players[playerid][pMapper] == 0))
  53549. {
  53550. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  53551. }
  53552. else if (Players[playerid][pAdmin] < 1 && Players[playerid][pMapper] > 0 && !Players[playerid][pMapperDuty])
  53553. {
  53554. return SendErrorMessage(playerid, "You must be on mapper duty (/mduty).");
  53555. }
  53556. else if (sscanf(params, "i", object))
  53557. {
  53558. return SendSyntaxMessage(playerid, "/deleteobject (object ID)");
  53559. }
  53560. else if (!IsValidObjectID(object))
  53561. {
  53562. return SendErrorMessage(playerid, "You have specified an invalid object ID.");
  53563. }
  53564. else
  53565. {
  53566. SetPlayerPosEx(playerid, Objects[object][oX], Objects[object][oY], Objects[object][oZ], 0.0, Objects[object][oInterior], Objects[object][oWorld]);
  53567. SendInfoMessage(playerid, "You have teleported to object %i.", object);
  53568. }
  53569. return 1;
  53570. }
  53571. CMD:deleteobject(playerid, params[])
  53572. {
  53573. new object;
  53574. if ((Players[playerid][pAdmin] < 5) && (Players[playerid][pMapper] == 0))
  53575. {
  53576. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  53577. }
  53578. else if (Players[playerid][pAdmin] < 1 && Players[playerid][pMapper] > 0 && !Players[playerid][pMapperDuty])
  53579. {
  53580. return SendErrorMessage(playerid, "You must be on mapper duty (/mduty).");
  53581. }
  53582. else if (sscanf(params, "i", object))
  53583. {
  53584. return SendSyntaxMessage(playerid, "/deleteobject (object ID)");
  53585. }
  53586. else if (!IsValidObjectID(object))
  53587. {
  53588. return SendErrorMessage(playerid, "You have specified an invalid object ID.");
  53589. }
  53590. else
  53591. {
  53592. DestroyDynamicObject(Objects[object][oObjectID]);
  53593. DestroyDynamic3DTextLabel(Objects[object][oText]);
  53594. format(gExecute, sizeof(gExecute), "DELETE FROM rp_objects WHERE oID = %i", Objects[object][oID]);
  53595. mysql_tquery(gConnection, gExecute);
  53596. Objects[object][oExists] = 0;
  53597. SendInfoMessage(playerid, "You have deleted object ID: %i.", object);
  53598. }
  53599. return 1;
  53600. }
  53601. CMD:debugobjects(playerid, params[])
  53602. {
  53603. if ((Players[playerid][pAdmin] < 5) && (Players[playerid][pMapper] == 0))
  53604. {
  53605. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  53606. }
  53607. else if (Players[playerid][pAdmin] < 1 && Players[playerid][pMapper] > 0 && !Players[playerid][pMapperDuty])
  53608. {
  53609. return SendErrorMessage(playerid, "You must be on mapper duty (/mduty).");
  53610. }
  53611. else
  53612. {
  53613. gObjectDebug = !gObjectDebug;
  53614. if (gObjectDebug)
  53615. {
  53616. SendInfoMessage(playerid, "You have enabled object debugging mode.");
  53617. }
  53618. else
  53619. {
  53620. SendInfoMessage(playerid, "You have disabled object debugging mode.");
  53621. }
  53622. for (new i = 0; i < MAX_SCRIPT_OBJECTS; i ++)
  53623. {
  53624. if (IsValidObjectID(i))
  53625. {
  53626. UpdateObjectLabel(i);
  53627. }
  53628. }
  53629. }
  53630. return 1;
  53631. }
  53632. CMD:cloneobject(playerid, params[])
  53633. {
  53634. new object;
  53635. if ((Players[playerid][pAdmin] < 5) && (Players[playerid][pMapper] == 0))
  53636. {
  53637. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  53638. }
  53639. else if (Players[playerid][pAdmin] < 1 && Players[playerid][pMapper] > 0 && !Players[playerid][pMapperDuty])
  53640. {
  53641. return SendErrorMessage(playerid, "You must be on mapper duty (/mduty).");
  53642. }
  53643. else if (sscanf(params, "i", object))
  53644. {
  53645. return SendSyntaxMessage(playerid, "/editobject (object ID)");
  53646. }
  53647. else if (!IsValidObjectID(object))
  53648. {
  53649. return SendErrorMessage(playerid, "You have specified an invalid object ID.");
  53650. }
  53651. else
  53652. {
  53653. new cloneobject = AddObject(Objects[object][oModel], Objects[object][oX], Objects[object][oY], Objects[object][oZ], Objects[object][oRX], Objects[object][oRY], Objects[object][oRZ], Objects[object][oDistance], Objects[object][oInterior], Objects[object][oWorld]);
  53654. if (cloneobject == INVALID_ID)
  53655. {
  53656. SendErrorMessage(playerid, "There are no available object slots.");
  53657. }
  53658. else
  53659. {
  53660. SendInfoMessage(playerid, "You have cloned object %i. The new object ID is %i.", object, cloneobject);
  53661. EditDynamicObjectEx(playerid, EDIT_TYPE_OBJECT, Objects[cloneobject][oObjectID], cloneobject);
  53662. }
  53663. }
  53664. return 1;
  53665. }
  53666. CMD:setbankmoney(playerid, params[])
  53667. {
  53668. new targetid, index, displayString[MAX_BANK_ACCOUNTS * 50];
  53669. if (Players[playerid][pAdmin] < 5)
  53670. {
  53671. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  53672. }
  53673. else if (sscanf(params, "u", targetid))
  53674. {
  53675. return SendSyntaxMessage(playerid, "/setbankmoney [playerid/name]");
  53676. }
  53677. else if (!IsPlayerConnected(targetid))
  53678. {
  53679. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  53680. }
  53681. else if (!IsPlayerLoggedIn(targetid))
  53682. {
  53683. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  53684. }
  53685. else if (IsPlayerNPC(targetid))
  53686. {
  53687. return SendErrorMessage(playerid, "You can't use this command on an NPC.");
  53688. }
  53689. else
  53690. {
  53691. displayString = "Name\tBalance";
  53692. for (new i = 0; i < MAX_BANK_ACCOUNTS; i ++)
  53693. {
  53694. if (BankAccounts[targetid][i][bankExists])
  53695. {
  53696. format(displayString, sizeof(displayString), "%s\n%s\t%s", displayString, BankAccounts[targetid][i][bankName], FormatNumber(BankAccounts[targetid][i][bankBalance]));
  53697. gListedItems[playerid][index++] = i;
  53698. }
  53699. }
  53700. if (!index)
  53701. {
  53702. SendErrorMessage(playerid, "That player doesn't have any bank accounts.");
  53703. }
  53704. else
  53705. {
  53706. Players[playerid][pSetBank] = targetid;
  53707. Dialog_Show(playerid, SetBank, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Bank accounts", displayString, "Select", "Cancel");
  53708. }
  53709. }
  53710. return 1;
  53711. }
  53712. CMD:locatepackage(playerid, params[])
  53713. {
  53714. if (GetPlayerFactionType(playerid) != FACTION_ILLEGAL)
  53715. {
  53716. return SendErrorMessage(playerid, "You are not part of an illegal faction.");
  53717. }
  53718. else if (Players[playerid][pFactionRank] < Factions[Players[playerid][pFaction]][fcMaxRanks] - 1)
  53719. {
  53720. return SendErrorMessage(playerid, "You are not a high ranking member.");
  53721. }
  53722. else if (Players[playerid][pPackageType] == PACKAGE_TYPE_NONE)
  53723. {
  53724. return SendErrorMessage(playerid, "There is no package to pickup.");
  53725. }
  53726. else if (Players[playerid][pCheckpoint] == CHECKPOINT_PACKAGE)
  53727. {
  53728. return SendErrorMessage(playerid, "You have already located your package.");
  53729. }
  53730. else
  53731. {
  53732. SetCheckpointForPackage(playerid);
  53733. }
  53734. return 1;
  53735. }
  53736. CMD:buy(playerid, params[])
  53737. {
  53738. new company = GetCurrentCompany(playerid);
  53739. if (company == INVALID_ID)
  53740. {
  53741. return SendErrorMessage(playerid, "You are not at any place where you can buy items.");
  53742. }
  53743. else
  53744. {
  53745. switch (Companies[company][cType])
  53746. {
  53747. case COMPANY_RESTAURANT:
  53748. {
  53749. ShowRestaurantMenu(playerid, company);
  53750. }
  53751. case COMPANY_AMMO:
  53752. {
  53753. /*if (!Players[playerid][pGunLicense])
  53754. {
  53755. return SendErrorMessage(playerid, "You can't purchase items here if you don't have a gun license.");
  53756. }
  53757. else
  53758. {*/
  53759. ShowProductsForSale(playerid, company);
  53760. /*}*/
  53761. }
  53762. case COMPANY_RENTALS:
  53763. {
  53764. SendErrorMessage(playerid, "This company doesn't serve products.");
  53765. }
  53766. default:
  53767. {
  53768. ShowProductsForSale(playerid, company);
  53769. }
  53770. }
  53771. }
  53772. return 1;
  53773. }
  53774. CMD:killcp(playerid, params[]) return cmd_clearcp(playerid, params);
  53775. CMD:clearcp(playerid, params[])
  53776. {
  53777. if (Players[playerid][pWorking])
  53778. {
  53779. return SendErrorMessage(playerid, "You are working right now. Use /stop to stop working.");
  53780. }
  53781. else if (Players[playerid][pCheckpoint] == CHECKPOINT_NONE)
  53782. {
  53783. return SendErrorMessage(playerid, "You don't have any active checkpoints to clear.");
  53784. }
  53785. else
  53786. {
  53787. ResetCheckpoint(playerid);
  53788. SendInfoMessage(playerid, "You have cleared all active checkpoints.");
  53789. }
  53790. return 1;
  53791. }
  53792. CMD:issuelicense(playerid, params[])
  53793. {
  53794. new targetid, type[16];
  53795. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  53796. {
  53797. return SendErrorMessage(playerid, "You are not part of the law enforcement.");
  53798. }
  53799. else if (sscanf(params, "us[16]", targetid, type))
  53800. {
  53801. return SendSyntaxMessage(playerid, "/issuelicense [playerid/name] (driving/weapon)");
  53802. }
  53803. else if (!IsPlayerConnected(targetid))
  53804. {
  53805. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  53806. }
  53807. else if (IsPlayerNPC(targetid))
  53808. {
  53809. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  53810. }
  53811. else if (!IsPlayerLoggedIn(targetid))
  53812. {
  53813. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  53814. }
  53815. else if (Players[playerid][pFactionRank] < Factions[Players[playerid][pFaction]][fcMaxRanks] - 1)
  53816. {
  53817. return SendErrorMessage(playerid, "You are not a high ranking member.");
  53818. }
  53819. else if (!IsPlayerInRangeOfPlayer(playerid, targetid, 5.0))
  53820. {
  53821. return SendErrorMessage(playerid, "You must be in range of that player.");
  53822. }
  53823. else
  53824. {
  53825. if (!strcmp(type, "driving", true))
  53826. {
  53827. if (Players[targetid][pCarLicense])
  53828. {
  53829. return SendErrorMessage(playerid, "The specified target already has a driving license.");
  53830. }
  53831. else
  53832. {
  53833. ShowActionBubble(playerid, "* %s issues %s a driving license.", ReturnNameEx(playerid), ReturnNameEx(targetid));
  53834. Players[targetid][pCarLicense] = 1;
  53835. SendInfoMessage(playerid, "You have issued %s a driving license.", ReturnNameEx(targetid));
  53836. SendInfoMessage(targetid, "%s has issued you a driving license.", ReturnNameEx(playerid));
  53837. }
  53838. }
  53839. else if (!strcmp(type, "weapon", true))
  53840. {
  53841. if (Players[targetid][pGunLicense])
  53842. {
  53843. return SendErrorMessage(playerid, "The specified target already has a weapon license.");
  53844. }
  53845. else
  53846. {
  53847. format(gExecute, sizeof(gExecute), "INSERT INTO rp_gunlicenses (Player, Target, Date) VALUES('%s', '%s', NOW())", ReturnName(playerid), ReturnName(targetid));
  53848. mysql_tquery(gConnection, gExecute);
  53849. ShowActionBubble(playerid, "* %s issues %s a gun license.", ReturnNameEx(playerid), ReturnNameEx(targetid));
  53850. Players[targetid][pGunLicense] = 1;
  53851. SendInfoMessage(playerid, "You have issued %s a gun license.", ReturnNameEx(targetid));
  53852. SendInfoMessage(targetid, "%s has issued you a gun license.", ReturnNameEx(playerid));
  53853. }
  53854. }
  53855. }
  53856. return 1;
  53857. }
  53858. CMD:revokelicense(playerid, params[])
  53859. {
  53860. new targetid, type[16];
  53861. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  53862. {
  53863. return SendErrorMessage(playerid, "You are not part of the law enforcement.");
  53864. }
  53865. else if (sscanf(params, "us[16]", targetid, type))
  53866. {
  53867. return SendSyntaxMessage(playerid, "/revokelicense [playerid/name] (driving/weapon)");
  53868. }
  53869. else if (!IsPlayerConnected(targetid))
  53870. {
  53871. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  53872. }
  53873. else if (IsPlayerNPC(targetid))
  53874. {
  53875. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  53876. }
  53877. else if (!IsPlayerLoggedIn(targetid))
  53878. {
  53879. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  53880. }
  53881. else if (!IsPlayerInRangeOfPlayer(playerid, targetid, 5.0))
  53882. {
  53883. return SendErrorMessage(playerid, "You must be in range of that player.");
  53884. }
  53885. else
  53886. {
  53887. if (!strcmp(type, "driving", true))
  53888. {
  53889. if (!Players[targetid][pCarLicense])
  53890. {
  53891. return SendErrorMessage(playerid, "The specified target doesn't have a driving license.");
  53892. }
  53893. else
  53894. {
  53895. ShowActionBubble(playerid, "* %s revokes %s's driving license.", ReturnNameEx(playerid), ReturnNameEx(targetid));
  53896. Players[targetid][pCarLicense] = 0;
  53897. SendInfoMessage(playerid, "You have revoked %s's driving license.", ReturnNameEx(targetid));
  53898. SendInfoMessage(targetid, "%s has revoked your driving license.", ReturnNameEx(playerid));
  53899. }
  53900. }
  53901. else if (!strcmp(type, "weapon", true))
  53902. {
  53903. if (!Players[targetid][pGunLicense])
  53904. {
  53905. return SendErrorMessage(playerid, "The specified target doesn't have a weapon license.");
  53906. }
  53907. else
  53908. {
  53909. ShowActionBubble(playerid, "* %s revokes %s's gun license.", ReturnNameEx(playerid), ReturnNameEx(targetid));
  53910. Players[targetid][pGunLicense] = 0;
  53911. SendInfoMessage(playerid, "You have revoked %s's gun license.", ReturnNameEx(targetid));
  53912. SendInfoMessage(targetid, "%s has revoked your gun license.", ReturnNameEx(playerid));
  53913. }
  53914. }
  53915. }
  53916. return 1;
  53917. }
  53918. CMD:start(playerid, params[])
  53919. {
  53920. if (!IsPlayerInRangeOfPoint(playerid, 3.0, 1490.2839, 1305.6837, 1093.2964))
  53921. {
  53922. return SendErrorMessage(playerid, "You are not in range of the DMV.");
  53923. }
  53924. else if (Players[playerid][pCarLicense])
  53925. {
  53926. return SendErrorMessage(playerid, "You have your driving license already.");
  53927. }
  53928. else if (Players[playerid][pCDL])
  53929. {
  53930. return SendErrorMessage(playerid, "You have your CDL license already.");
  53931. }
  53932. else if (Players[playerid][pDrivingTest])
  53933. {
  53934. return SendErrorMessage(playerid, "You have started the driving test already.");
  53935. }
  53936. else
  53937. {
  53938. Players[playerid][pDrivingTest] = 1;
  53939. Players[playerid][pDrivingCP] = 0;
  53940. SendInfoMessage(playerid, "You have started the driving test! Enter a vehicle outside to begin.");
  53941. }
  53942. return 1;
  53943. }
  53944. CMD:licenses(playerid, params[])
  53945. {
  53946. return cmd_showlicenses(playerid, params);
  53947. }
  53948. //Faster (new) split Code [[User:Kaliber|Kaliber]]
  53949. stock split(const src[], dest[][], const delimiter)
  53950. {
  53951. new n_pos,num,old,str[1];
  53952. str[0] = delimiter;
  53953. while(n_pos != -1)
  53954. {
  53955. n_pos = strfind(src,str,false,n_pos+1);
  53956. strmid(dest[num++], src, (!num)?0:old+1,(n_pos==-1)?strlen(src):n_pos,256);
  53957. old=n_pos;
  53958. }
  53959. return 1;
  53960. }
  53961. /*GetPlayerFirstName(playerid)
  53962. {
  53963. new
  53964. namestring[2][MAX_PLAYER_NAME],
  53965. name[MAX_PLAYER_NAME];
  53966. GetPlayerName(playerid, name, MAX_PLAYER_NAME);
  53967. split(name, namestring, '_');
  53968. return namestring[0];
  53969. }*/
  53970. /*GetPlayerLastName(playerid)
  53971. {
  53972. new
  53973. namestring[2][MAX_PLAYER_NAME],
  53974. name[MAX_PLAYER_NAME];
  53975. GetPlayerName(playerid, name, MAX_PLAYER_NAME);
  53976. split(name, namestring, '_');
  53977. return namestring[0];
  53978. }*/
  53979. CMD:calc(playerid, params[])
  53980. {
  53981. return cmd_calculate(playerid, params);
  53982. }
  53983. CMD:calculate(playerid, params[])
  53984. {
  53985. new option[128];
  53986. new num1;
  53987. new num2;
  53988. if (sscanf(params, "is[24]i", num1, option, num2))
  53989. {
  53990. return SendSyntaxMessage(playerid, "/(calc)ulate [number] [+ - x /] [number]");
  53991. }
  53992. else
  53993. {
  53994. if (!strcmp(option, "+", true))
  53995. {
  53996. new num = (num1 + num2);
  53997. SendInfoMessage(playerid, "[CALCULATOR] %i + %i = %i", num1, num2, num);
  53998. }
  53999. else if (!strcmp(option, "-", true))
  54000. {
  54001. new num = (num1 - num2);
  54002. SendInfoMessage(playerid, "[CALCULATOR] %i - %i = %i", num1, num2, num);
  54003. }
  54004. else if (!strcmp(option, "x", true))
  54005. {
  54006. new num = (num1 * num2);
  54007. SendInfoMessage(playerid, "[CALCULATOR] %i x %i = %i", num1, num2, num);
  54008. }
  54009. else if (!strcmp(option, "/", true))
  54010. {
  54011. new num = (num1 / num2);
  54012. SendInfoMessage(playerid, "[CALCULATOR] %i / %i = %i", num1, num2, num);
  54013. }
  54014. }
  54015. return 1;
  54016. }
  54017. /*CMD:showlicenses(playerid, params[])
  54018. {
  54019. new targetid;
  54020. new option[128];
  54021. if (sscanf(params, "us[128]", targetid, option))
  54022. {
  54023. return SendSyntaxMessage(playerid, "/showlicenses [playerid/name] [driver/weapon/pilot]");
  54024. }
  54025. else if (!IsPlayerConnected(targetid))
  54026. {
  54027. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  54028. }
  54029. else if (IsPlayerNPC(targetid))
  54030. {
  54031. return SendErrorMessage(playerid, "You cannot use this command on an NPC.");
  54032. }
  54033. else if (!IsPlayerLoggedIn(targetid))
  54034. {
  54035. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  54036. }
  54037. else if (!IsPlayerInRangeOfPlayer(playerid, targetid, 5.0))
  54038. {
  54039. return SendErrorMessage(playerid, "You must be in range of that player.");
  54040. }
  54041. else
  54042. {
  54043. if (!strcmp(option, "driver", true))
  54044. {
  54045. if (Players[playerid][pCarLicense] == 0)
  54046. return SendErrorMessage(playerid, "You don't own a drivers license.");
  54047. SendFormatMessage(targetid, COLOR_LIGHTGREY, "CALIFORNIA DRIVER LICENSE");
  54048. SendFormatMessage(targetid, COLOR_LIGHTGREY, "DL: %i", (playerid+50*5335));
  54049. SendFormatMessage(targetid, COLOR_LIGHTGREY, " ");
  54050. SendFormatMessage(targetid, COLOR_LIGHTGREY, "LN: %s", GetPlayerLastName(playerid));
  54051. SendFormatMessage(targetid, COLOR_LIGHTGREY, "FN: %s", GetPlayerFirstName(playerid));
  54052. SendFormatMessage(targetid, COLOR_LIGHTGREY, "AGE: %i", Players[playerid][pAge]);
  54053. SendFormatMessage(targetid, COLOR_LIGHTGREY, "SEX: %s", GetGenderForPlayer(playerid));
  54054. ShowActionBubble(playerid, "* %s shows %s their licenses.", ReturnNameEx(playerid), ReturnNameEx(targetid));
  54055. SendInfoMessage(playerid, "You have shown %s your licenses.", ReturnNameEx(targetid));
  54056. }
  54057. else if (!strcmp(option, "weapon", true))
  54058. {
  54059. if (Players[playerid][pGunLicense] == 0)
  54060. return SendErrorMessage(playerid, "You don't own a weapons license.");
  54061. SendFormatMessage(targetid, COLOR_LIGHTGREY, "License To Carry Concealed Pistol, Revolver, or Other Firearm");
  54062. SendFormatMessage(targetid, COLOR_LIGHTGREY, "Within the State of California");
  54063. SendFormatMessage(targetid, COLOR_LIGHTGREY, "Issued By:");
  54064. SendFormatMessage(targetid, COLOR_LIGHTGREY, "Agency: Los Santos Police Dept.");
  54065. SendFormatMessage(targetid, COLOR_LIGHTGREY, " ");
  54066. SendFormatMessage(targetid, COLOR_LIGHTGREY, "Name of Licensee: %s", ReturnNameEx(playerid));
  54067. SendFormatMessage(targetid, COLOR_LIGHTGREY, "Age of Licensee: %i", Players[playerid][pAge]);
  54068. ShowActionBubble(playerid, "* %s shows %s their licenses.", ReturnNameEx(playerid), ReturnNameEx(targetid));
  54069. SendInfoMessage(playerid, "You have shown %s your licenses.", ReturnNameEx(targetid));
  54070. }
  54071. else if (!strcmp(option, "pilot", true))
  54072. {
  54073. if (Players[playerid][pPilotLicense] == 0)
  54074. return SendErrorMessage(playerid, "You don't own a pilots license.");
  54075. SendFormatMessage(targetid, COLOR_LIGHTGREY, "UNITED STATES OF AMERICA");
  54076. SendFormatMessage(targetid, COLOR_LIGHTGREY, "DEPARTMENT OF TRANSPORTATION - FEDERAL AVIATION ADMINISTRATION");
  54077. SendFormatMessage(targetid, COLOR_LIGHTGREY, " ");
  54078. SendFormatMessage(targetid, COLOR_LIGHTGREY, "NAME: %s", ReturnNameEx(playerid));
  54079. SendFormatMessage(targetid, COLOR_LIGHTGREY, "AGE: %i", Players[playerid][pAge]);
  54080. SendFormatMessage(targetid, COLOR_LIGHTGREY, " ");
  54081. SendFormatMessage(targetid, COLOR_LIGHTGREY, "HAS BEEN FOUND TO BE PROPERLY QUALIFIED TO EXERCISE THE PRIVILEGES OF");
  54082. SendFormatMessage(targetid, COLOR_LIGHTGREY, "PRIVATE PILOT");
  54083. SendFormatMessage(targetid, COLOR_LIGHTGREY, "CERTIFICATE NUMBER %i", (playerid+50*3553));
  54084. ShowActionBubble(playerid, "* %s shows %s their licenses.", ReturnNameEx(playerid), ReturnNameEx(targetid));
  54085. SendInfoMessage(playerid, "You have shown %s your licenses.", ReturnNameEx(targetid));
  54086. }
  54087. }
  54088. return 1;
  54089. }*/
  54090. CMD:showlicenses(playerid, params[])
  54091. {
  54092. new targetid;
  54093. if (sscanf(params, "u", targetid))
  54094. {
  54095. return SendSyntaxMessage(playerid, "/showlicenses [playerid/name]");
  54096. }
  54097. else if (!IsPlayerConnected(targetid))
  54098. {
  54099. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  54100. }
  54101. else if (IsPlayerNPC(targetid))
  54102. {
  54103. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  54104. }
  54105. else if (!IsPlayerLoggedIn(targetid))
  54106. {
  54107. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  54108. }
  54109. else if (!IsPlayerInRangeOfPlayer(playerid, targetid, 5.0))
  54110. {
  54111. return SendErrorMessage(playerid, "You must be in range of that player.");
  54112. }
  54113. else
  54114. {
  54115. SendFormatMessage(targetid, COLOR_YELLOW, "______STATE OF SAN ANDREAS______");
  54116. SendFormatMessage(targetid, COLOR_YELLOW, "Name: %s", ReturnNameEx(playerid));
  54117. SendFormatMessage(targetid, COLOR_YELLOW, "Drivers License: %s", (Players[playerid][pCarLicense]) ? ("Yes") : ("No"));
  54118. SendFormatMessage(targetid, COLOR_YELLOW, "Gun License: %s", (Players[playerid][pGunLicense]) ? ("Yes") : ("No"));
  54119. ShowActionBubble(playerid, "* %s shows %s their licenses.", ReturnNameEx(playerid), ReturnNameEx(targetid));
  54120. SendInfoMessage(playerid, "You have shown %s your licenses.", ReturnNameEx(targetid));
  54121. }
  54122. return 1;
  54123. }
  54124. CMD:badge(playerid, params[])
  54125. {
  54126. new targetid;
  54127. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  54128. return SendErrorMessage(playerid, "You are not part of the law enforcement.");
  54129. if(sscanf(params,"u", targetid))
  54130. return SendSyntaxMessage(playerid, "/badge [playerid/name]");
  54131. if(!IsPlayerConnected(targetid))
  54132. return SendErrorMessage(playerid,"The specified target doesn't exist.");
  54133. if(IsPlayerNPC(targetid))
  54134. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  54135. if(!IsPlayerLoggedIn(targetid))
  54136. return SendErrorMessage(playerid,"The specified target is not logged in yet.");
  54137. if(!IsPlayerInRangeOfPlayer(playerid,targetid,5.0))
  54138. return SendErrorMessage(playerid,"You must be in range of that player.");
  54139. SendFormatMessage(targetid,COLOR_YELLOW,"%s Badge:", GetInitials(GetPlayerFactionName(playerid)) );
  54140. SendFormatMessage(targetid,COLOR_WHITE, "Name: %s", ReturnNameEx(playerid) );
  54141. SendFormatMessage(targetid,COLOR_WHITE, "Rank: %s", GetPlayerFactionRank(playerid) );
  54142. SendFormatMessage(targetid,COLOR_WHITE, "Badge: %i", Players[playerid][pBadge] );
  54143. SendFormatMessage(targetid,COLOR_WHITE, "Agency: %s", GetPlayerFactionName(playerid) );
  54144. if (playerid == targetid)
  54145. {
  54146. ShowActionBubble(playerid, "* %s looks at their badge.", ReturnNameEx(playerid));
  54147. SendInfoMessage(playerid, "You have shown your badge to yourself.");
  54148. }
  54149. else
  54150. {
  54151. ShowActionBubble(playerid, "* %s shows %s their badge.", ReturnNameEx(playerid), ReturnNameEx(targetid));
  54152. SendInfoMessage(playerid, "You have shown your badge to %s.", ReturnNameEx(targetid));
  54153. }
  54154. //SendInfoMessage(playerid, "You have shown %s your badge.", ReturnNameEx(targetid));
  54155. return 1;
  54156. }
  54157. CMD:readrights(playerid, params[])
  54158. {
  54159. new targetid;
  54160. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  54161. return SendErrorMessage(playerid, "You are not part of the law enforcement.");
  54162. if(sscanf(params,"u", targetid))
  54163. return SendSyntaxMessage(playerid, "/readrights [playerid/name]");
  54164. if(!IsPlayerConnected(targetid))
  54165. return SendErrorMessage(playerid,"The specified target doesn't exist.");
  54166. if(IsPlayerNPC(targetid))
  54167. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  54168. if(!IsPlayerLoggedIn(targetid))
  54169. return SendErrorMessage(playerid,"The specified target is not logged in yet.");
  54170. if(!IsPlayerInRangeOfPlayer(playerid,targetid,5.0))
  54171. return SendErrorMessage(playerid,"You must be in range of that player.");
  54172. SendClientMessage(targetid, COLOR_WHITE, "You have the right to remain silent. Anything you say can and will be used against you in a court of law.");
  54173. SendClientMessage(targetid, COLOR_WHITE, "You have the right to an attorney, If you cannot afford an attorney, one will be provided for you.");
  54174. SendClientMessage(targetid, COLOR_WHITE, "Do you understand the rights I have just read to you? With these rights in mind, do you wish to speak to me?");
  54175. if (playerid == targetid)
  54176. {
  54177. ShowActionBubble(playerid, "* %s begins to read %s their rights.", ReturnNameEx(playerid), ReturnNameEx(targetid));
  54178. SendInfoMessage(playerid, "You have read %s their Miranda rights.", ReturnNameEx(targetid));
  54179. }
  54180. return 1;
  54181. }
  54182. CMD:greet(playerid, params[])
  54183. {
  54184. new targetid;
  54185. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  54186. return SendErrorMessage(playerid, "You are not part of the law enforcement.");
  54187. if(sscanf(params,"u", targetid))
  54188. return SendSyntaxMessage(playerid, "/greet [playerid/name]");
  54189. if(!IsPlayerConnected(targetid))
  54190. return SendErrorMessage(playerid,"The specified target doesn't exist.");
  54191. if(IsPlayerNPC(targetid))
  54192. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  54193. if(!IsPlayerLoggedIn(targetid))
  54194. return SendErrorMessage(playerid,"The specified target is not logged in yet.");
  54195. if(!IsPlayerInRangeOfPlayer(playerid,targetid,5.0))
  54196. return SendErrorMessage(playerid,"You must be in range of that player.");
  54197. SendFormatMessage(targetid, COLOR_WHITE, "I am %s %s with the %s, do you know why I am pulling you over today?", GetPlayerFactionRank(playerid), ReturnNameEx(playerid, 1));
  54198. if (playerid == targetid)
  54199. {
  54200. ShowActionBubble(playerid, "* %s begins to speak to %s.", ReturnNameEx(playerid), ReturnNameEx(targetid));
  54201. }
  54202. return 1;
  54203. }
  54204. CMD:engine(playerid, params[])
  54205. {
  54206. if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
  54207. {
  54208. return SendErrorMessage(playerid, "You are not driving any vehicle.");
  54209. }
  54210. else if (!IsPoweredVehicle(GetPlayerVehicleID(playerid)))
  54211. {
  54212. return SendErrorMessage(playerid, "This vehicle doesn't have an engine.");
  54213. }
  54214. /* else if (Players[playerid][pAdminDuty])
  54215. {
  54216. if (GetEngineStatus(GetPlayerVehicleID(playerid)))
  54217. {
  54218. SetEngineStatus(GetPlayerVehicleID(playerid), 0);
  54219. }
  54220. else
  54221. {
  54222. SetEngineStatus(GetPlayerVehicleID(playerid), 1);
  54223. }
  54224. }*/
  54225. else
  54226. {
  54227. EngineCaller(playerid);
  54228. }
  54229. return 1;
  54230. }
  54231. CMD:animations(playerid, params[])
  54232. {
  54233. ShowAnimationList(playerid);
  54234. return 1;
  54235. }
  54236. CMD:id(playerid, params[])
  54237. {
  54238. new targetid, count;
  54239. if (isnull(params))
  54240. {
  54241. return SendSyntaxMessage(playerid, "/id (search query)");
  54242. }
  54243. else
  54244. {
  54245. if (!sscanf(params, "i", targetid))
  54246. {
  54247. if (!IsPlayerConnected(targetid))
  54248. {
  54249. return SendErrorMessage(playerid, "There is no player online with that ID.");
  54250. }
  54251. else
  54252. {
  54253. SendClientMessage(playerid, COLOR_WHITE, "---------------------------------------");
  54254. SendFormatMessage(playerid, COLOR_WHITE, "(ID: %i) - %s", targetid, ReturnNameEx(targetid, 0));
  54255. SendClientMessage(playerid, COLOR_WHITE, "---------------------------------------");
  54256. }
  54257. }
  54258. else if (strlen(params) < 3)
  54259. {
  54260. return SendErrorMessage(playerid, "You must enter at least 3 characters to search.");
  54261. }
  54262. else
  54263. {
  54264. SendClientMessage(playerid, COLOR_WHITE, "---------------------------------------");
  54265. foreach (new i : Player)
  54266. {
  54267. if (strfind(ReturnName(i), params, true) != -1)
  54268. {
  54269. SendFormatMessage(playerid, COLOR_WHITE, "(ID: %i) - %s", i, ReturnNameEx(i, 0));
  54270. count++;
  54271. }
  54272. }
  54273. if (!count)
  54274. {
  54275. SendInfoMessage(playerid, "No matches found for \"%s\".", params);
  54276. }
  54277. SendClientMessage(playerid, COLOR_WHITE, "---------------------------------------");
  54278. }
  54279. }
  54280. return 1;
  54281. }
  54282. CMD:time(playerid, params[])
  54283. {
  54284. new
  54285. string[128],
  54286. day,
  54287. month,
  54288. year,
  54289. hour,
  54290. minute,
  54291. second;
  54292. getdate(year, month, day);
  54293. gettime(hour, minute, second);
  54294. if (!Players[playerid][pJailType])
  54295. {
  54296. format(string, sizeof(string), "~w~%s %02d, %i~n~~b~~h~%02d:%02d:%02d", GetMonth(month), day, year, hour, minute, second);
  54297. GameTextForPlayer(playerid, string, 3000, 1);
  54298. }
  54299. else
  54300. {
  54301. format(string, sizeof(string), "~w~%s %02d, %i~n~~b~~h~%02d:%02d:%02d~n~~w~Jail Time:~w~ %s", GetMonth(month), day, year, hour, minute, second, ReturnElapsed(Players[playerid][pJailTime]));
  54302. GameTextForPlayer(playerid, string, 3000, 1);
  54303. }
  54304. SendInfoMessage(playerid, "Your next paycheck is due in %i minutes.", (60 - Players[playerid][pMinutes]));
  54305. ShowActionBubble(playerid, "* %s looks down at their watch.", ReturnNameEx(playerid));
  54306. return 1;
  54307. }
  54308. CMD:saveplayers(playerid, params[])
  54309. {
  54310. if (Players[playerid][pAdmin] < 1)
  54311. {
  54312. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  54313. }
  54314. else
  54315. {
  54316. foreach (new i : Player)
  54317. {
  54318. if (IsPlayerLoggedIn(i))
  54319. {
  54320. SaveAccount(i);
  54321. }
  54322. }
  54323. SendInfoMessage(playerid, "You have saved all player accounts.");
  54324. }
  54325. return 1;
  54326. }
  54327. CMD:vwreset(playerid, params[])
  54328. {
  54329. if (!GetPlayerInterior(playerid) && GetPlayerVirtualWorld(playerid) > 0)
  54330. {
  54331. SetPlayerVirtualWorld(playerid, 0);
  54332. SendInfoMessage(playerid, "Your virtual world has been reset.");
  54333. }
  54334. return 1;
  54335. }
  54336. CMD:listassets(playerid, params[])
  54337. {
  54338. if (isnull(params))
  54339. {
  54340. return SendClientMessage(playerid, COLOR_WHITE, "Syntax: /listassets (houses/companies)");
  54341. }
  54342. else if (!strcmp(params, "houses", true))
  54343. {
  54344. SendClientMessage(playerid, COLOR_GREY, "-------------------------------------------------------------");
  54345. SendClientMessage(playerid, COLOR_GREEN, "My Houses:");
  54346. for (new i = 0; i < MAX_HOUSES; i ++)
  54347. {
  54348. if (IsValidHouseID(i) && IsHouseOwner(playerid, i))
  54349. {
  54350. SendFormatMessage(playerid, COLOR_WHITE, "- %s (located at %s).", Houses[i][hAddress], GetZoneName(Houses[i][hSpawn][0], Houses[i][hSpawn][1], Houses[i][hSpawn][2]));
  54351. }
  54352. }
  54353. SendClientMessage(playerid, COLOR_GREY, "-------------------------------------------------------------");
  54354. }
  54355. else if (!strcmp(params, "companies", true))
  54356. {
  54357. SendClientMessage(playerid, COLOR_GREY, "-------------------------------------------------------------");
  54358. SendClientMessage(playerid, COLOR_GREEN, "My Companies:");
  54359. for (new i = 0; i < MAX_COMPANIES; i ++)
  54360. {
  54361. if (IsValidCompanyID(i) && IsCompanyOwner(playerid, i))
  54362. {
  54363. SendFormatMessage(playerid, COLOR_WHITE, "- %s (located at %s).", Companies[i][cName], GetZoneName(Companies[i][cSpawn][0], Companies[i][cSpawn][1], Companies[i][cSpawn][2]));
  54364. }
  54365. }
  54366. SendClientMessage(playerid, COLOR_GREY, "-------------------------------------------------------------");
  54367. }
  54368. return 1;
  54369. }
  54370. CMD:alistcars(playerid, params[])
  54371. {
  54372. new targetid;
  54373. if (Players[playerid][pAdmin] < 4)
  54374. {
  54375. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  54376. }
  54377. else if (sscanf(params, "u", targetid))
  54378. {
  54379. return SendSyntaxMessage(playerid, "/alistcars (player)");
  54380. }
  54381. else if (!IsPlayerConnected(targetid))
  54382. {
  54383. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  54384. }
  54385. else if (!IsPlayerLoggedIn(targetid))
  54386. {
  54387. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  54388. }
  54389. else
  54390. {
  54391. SendClientMessage(playerid, COLOR_GREY, "-------------------------------------------------------------");
  54392. SendFormatMessage(playerid, COLOR_GREEN, "%s's Vehicles:", ReturnNameEx(targetid, 0));
  54393. for (new i = 0; i < MAX_CARS; i ++)
  54394. {
  54395. if (IsValidVehicleID(i) && IsVehicleOwner(targetid, i))
  54396. {
  54397. if (Vehicles[i][vImpound])
  54398. {
  54399. SendFormatMessage(playerid, COLOR_WHITE, "- %s - %s (Impounded)", GetVehicleModelName(Vehicles[i][vModel]), Vehicles[i][vPlate]);
  54400. }
  54401. else if (Vehicles[i][vDespawned])
  54402. {
  54403. SendFormatMessage(playerid, COLOR_WHITE, "- %s - %s (Despawned)", GetVehicleModelName(Vehicles[i][vModel]), Vehicles[i][vPlate]);
  54404. }
  54405. else
  54406. {
  54407. SendFormatMessage(playerid, COLOR_WHITE, "- %s - %s (ID: %i)", GetVehicleModelName(Vehicles[i][vModel]), Vehicles[i][vPlate], Vehicles[i][vVehicle]);
  54408. }
  54409. }
  54410. }
  54411. SendClientMessage(playerid, COLOR_GREY, "-------------------------------------------------------------");
  54412. }
  54413. return 1;
  54414. }
  54415. CMD:alistassets(playerid, params[])
  54416. {
  54417. new targetid, type[16];
  54418. if (Players[playerid][pAdmin] < 4)
  54419. {
  54420. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  54421. }
  54422. else if (sscanf(params, "us[16]", targetid, type))
  54423. {
  54424. return SendSyntaxMessage(playerid, "/alistassets (player) (houses/companies)");
  54425. }
  54426. else if (!IsPlayerConnected(targetid))
  54427. {
  54428. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  54429. }
  54430. else if (!IsPlayerLoggedIn(targetid))
  54431. {
  54432. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  54433. }
  54434. else
  54435. {
  54436. if (!strcmp(type, "houses", true))
  54437. {
  54438. SendClientMessage(playerid, COLOR_GREY, "-------------------------------------------------------------");
  54439. SendFormatMessage(playerid, COLOR_GREEN, "%s's Houses:", ReturnNameEx(targetid, 0));
  54440. for (new i = 0; i < MAX_HOUSES; i ++)
  54441. {
  54442. if (IsValidHouseID(i) && IsHouseOwner(targetid, i))
  54443. {
  54444. SendFormatMessage(playerid, COLOR_WHITE, "- %s (ID: %i) (located at %s).", Houses[i][hAddress], i, GetZoneName(Houses[i][hSpawn][0], Houses[i][hSpawn][1], Houses[i][hSpawn][2]));
  54445. }
  54446. }
  54447. SendClientMessage(playerid, COLOR_GREY, "-------------------------------------------------------------");
  54448. }
  54449. else if (!strcmp(type, "companies", true))
  54450. {
  54451. SendClientMessage(playerid, COLOR_GREY, "-------------------------------------------------------------");
  54452. SendFormatMessage(playerid, COLOR_GREEN, "%s's Companies:", ReturnNameEx(targetid, 0));
  54453. for (new i = 0; i < MAX_COMPANIES; i ++)
  54454. {
  54455. if (IsValidCompanyID(i) && IsCompanyOwner(targetid, i))
  54456. {
  54457. SendFormatMessage(playerid, COLOR_WHITE, "- %s (ID: %i) (located at %s).", Companies[i][cName], i, GetZoneName(Companies[i][cSpawn][0], Companies[i][cSpawn][1], Companies[i][cSpawn][2]));
  54458. }
  54459. }
  54460. SendClientMessage(playerid, COLOR_GREY, "-------------------------------------------------------------");
  54461. }
  54462. }
  54463. return 1;
  54464. }
  54465. CMD:siren(playerid, params[])
  54466. {
  54467. new vehicleid = GetPlayerVehicleID(playerid);
  54468. if (!IsPlayerInFaction(playerid, FACTION_LEO) && !IsPlayerInFaction(playerid, FACTION_MEDICAL))
  54469. {
  54470. return SendErrorMessage(playerid, "You are not part of any public service faction.");
  54471. }
  54472. else if (!vehicleid)
  54473. {
  54474. return SendErrorMessage(playerid, "You are not in any vehicle.");
  54475. }
  54476. else if (!VehicleHasDoors(vehicleid))
  54477. {
  54478. return SendErrorMessage(playerid, "You can't attach a siren to this vehicle.");
  54479. }
  54480. else
  54481. {
  54482. ToggleVehicleSiren(vehicleid);
  54483. if (IsValidDynamicObject(gSirenObject[vehicleid]))
  54484. {
  54485. SendInfoMessage(playerid, "You have attached a siren to this vehicle.");
  54486. ShowActionBubble(playerid, "* %s attaches a police siren to the vehicle.", ReturnNameEx(playerid));
  54487. }
  54488. else
  54489. {
  54490. SendInfoMessage(playerid, "You have detached the siren from this vehicle.");
  54491. ShowActionBubble(playerid, "* %s detaches the police siren from the vehicle.", ReturnNameEx(playerid));
  54492. }
  54493. }
  54494. return 1;
  54495. }
  54496. CMD:callsign(playerid, params[])
  54497. {
  54498. new vehicleid = GetPlayerVehicleID(playerid);
  54499. if (!IsPlayerInFaction(playerid, FACTION_LEO) && !IsPlayerInFaction(playerid, FACTION_MEDICAL))
  54500. {
  54501. return SendErrorMessage(playerid, "You are not part of any public service faction.");
  54502. }
  54503. else if (isnull(params))
  54504. {
  54505. return SendSyntaxMessage(playerid, "/callsign [unit] (To remove your callsign, use /callsign none)");
  54506. }
  54507. else if (strlen(params) > 32)
  54508. {
  54509. return SendErrorMessage(playerid, "The call sign can't be over 32 characters.");
  54510. }
  54511. if (!strcmp(params, "none", true))
  54512. {
  54513. SendFactionMessage(Players[playerid][pFaction], COLOR_RADIO, "** HQ: %s has left '%s'.", ReturnNameEx(playerid, 0), Players[playerid][pCallsign]);
  54514. format(Players[playerid][pCallsign], 128, "None");
  54515. Delete3DTextLabel(gCallsignText[vehicleid]);
  54516. gCallsignText[vehicleid] = INVALID_3DTEXT_ID;
  54517. SendInfoMessage(playerid, "* You have removed the callsign.");
  54518. }
  54519. else
  54520. {
  54521. SetCallsign(vehicleid, params);
  54522. format(Players[playerid][pCallsign], 128, params);
  54523. SendFactionMessage(Players[playerid][pFaction], COLOR_RADIO, "** HQ: %s is now on duty under '%s'.", ReturnNameEx(playerid, 0), params);
  54524. if (gCallsignText[vehicleid] != INVALID_3DTEXT_ID)
  54525. {
  54526. Delete3DTextLabel(gCallsignText[vehicleid]);
  54527. }
  54528. gCallsignText[vehicleid] = Create3DTextLabel(params, COLOR_WHITE, 0.0, 0.0, 0.0, 15.0, 0);
  54529. Attach3DTextLabelToVehicle(gCallsignText[vehicleid], vehicleid, -0.7, -2.4, -0.3);
  54530. SendInfoMessage(playerid, "You've set your callsign to, %s.", params);
  54531. }
  54532. return 1;
  54533. }
  54534. /*CMD:carsign(playerid, params[])
  54535. {
  54536. new vehicleid = GetPlayerVehicleID(playerid);
  54537. if(!IsPlayerInFaction(playerid, FACTION_LEO) && !IsPlayerInFaction(playerid, FACTION_MEDICAL)) return SendErrorMessage(playerid, "You are not part of any public service faction.");
  54538. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendErrorMessage(playerid, "You are not in a vehicle.");
  54539. if(isnull(params)) return SendSyntaxMessage(playerid, "/carsign [sign]");
  54540. if(strlen(params) > 32) return SendErrorMessage(playerid, "The carsign must be under 32 characters.");
  54541. SetCallsign(vehicleid, params);
  54542. SendInfoMessage(playerid, "You've set your carsign to, %s.", params);
  54543. SendInfoMessage(playerid, "/remove_carsign - When you're done with it.");
  54544. if(!strcmp(params, "none", true))
  54545. {
  54546. Delete3DTextLabel(gCallsignText[vehicleid]);
  54547. gCallsignText[vehicleid] = INVALID_3DTEXT_ID;
  54548. SendInfoMessage(playerid, "* You have removed the carsign.");
  54549. }
  54550. else
  54551. {
  54552. if (gCallsignText[vehicleid] != INVALID_3DTEXT_ID)
  54553. {
  54554. Delete3DTextLabel(gCallsignText[vehicleid]);
  54555. }
  54556. gCallsignText[vehicleid] = Create3DTextLabel(params, COLOR_WHITE, 0.0, 0.0, 0.0, 15.0, 0);
  54557. Attach3DTextLabelToVehicle(gCallsignText[vehicleid], vehicleid, -0.7, -2.4, -0.3);
  54558. SendInfoMessage(playerid, "You've set your carsign to, %s.", params);
  54559. }
  54560. return 1;
  54561. }*/
  54562. CMD:remove_callsign(playerid, params[])
  54563. {
  54564. new vehicleid = GetPlayerVehicleID(playerid);
  54565. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendErrorMessage(playerid, "You are not in a vehicle.");
  54566. RemoveCallsign(vehicleid);
  54567. SendInfoMessage(playerid, "* Use /callsign none?");
  54568. return 1;
  54569. }
  54570. CMD:oban(playerid,params[])
  54571. {
  54572. return cmd_offlineban(playerid, params);
  54573. }
  54574. CMD:offlineban(playerid, params[])
  54575. {
  54576. new player[24], reason[128];
  54577. if (Players[playerid][pAdmin] < 2)
  54578. {
  54579. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  54580. }
  54581. else if (sscanf(params, "s["#MAX_PLAYER_NAME"]s[128]", player, reason))
  54582. {
  54583. return SendSyntaxMessage(playerid, "/offlineban (player) (reason)");
  54584. }
  54585. else
  54586. {
  54587. format(gExecute, sizeof(gExecute), "SELECT IP FROM rp_accounts WHERE Username = '%s' AND Admin <= %i", mysql_escaped(player), Players[playerid][pAdmin]);
  54588. mysql_tquery(gConnection, gExecute, "OnPlayerBanCheck", "iss", playerid, player, reason);
  54589. }
  54590. return 1;
  54591. }
  54592. CMD:osetadmin(playerid, params[])
  54593. {
  54594. new player[24], level;
  54595. if (Players[playerid][pAdmin] < 6)
  54596. {
  54597. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  54598. }
  54599. else if (sscanf(params, "s["#MAX_PLAYER_NAME"]i", player, level))
  54600. {
  54601. return SendSyntaxMessage(playerid, "/osetadmin (player) (level)");
  54602. }
  54603. else if (level < 0 || level > 6)
  54604. {
  54605. return SendErrorMessage(playerid, "The specified level is invalid.");
  54606. }
  54607. else
  54608. {
  54609. format(gExecute, sizeof(gExecute), "SELECT ID FROM rp_accounts WHERE Username = '%s'", mysql_escaped(player));
  54610. mysql_tquery(gConnection, gExecute, "OnPlayerSetAdmin", "isi", playerid, player, level);
  54611. }
  54612. return 1;
  54613. }
  54614. CMD:osetsupporter(playerid, params[])
  54615. {
  54616. new player[24], level;
  54617. if (Players[playerid][pAdmin] < 4 && Players[playerid][pSupporter] < 2)
  54618. {
  54619. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  54620. }
  54621. else if (sscanf(params, "s["#MAX_PLAYER_NAME"]i", player, level))
  54622. {
  54623. return SendSyntaxMessage(playerid, "/osetsupporter [player] [1: Supporter 2: Head Supporter]");
  54624. }
  54625. else if (level < 0 || level > 2)
  54626. {
  54627. return SendErrorMessage(playerid, "The specified level is invalid.");
  54628. }
  54629. else
  54630. {
  54631. format(gExecute, sizeof(gExecute), "SELECT ID FROM rp_accounts WHERE Username = '%s'", mysql_escaped(player));
  54632. mysql_tquery(gConnection, gExecute, "OnPlayerSetSupporter", "isi", playerid, player, level);
  54633. }
  54634. return 1;
  54635. }
  54636. CMD:offlinejail(playerid, params[])
  54637. {
  54638. new player[24], minutes, reason[128];
  54639. if (Players[playerid][pAdmin] < 1)
  54640. {
  54641. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  54642. }
  54643. else if (sscanf(params, "s["#MAX_PLAYER_NAME"]is[128]", player, minutes, reason))
  54644. {
  54645. return SendSyntaxMessage(playerid, "/offlinejail (player) (minutes) (reason)");
  54646. }
  54647. else
  54648. {
  54649. format(gExecute, sizeof(gExecute), "SELECT ID FROM rp_accounts WHERE Username = '%s' AND Admin <= %i", mysql_escaped(player), Players[playerid][pAdmin]);
  54650. mysql_tquery(gConnection, gExecute, "OnPlayerJailCheck", "issi", playerid, player, reason, minutes);
  54651. }
  54652. return 1;
  54653. }
  54654. CMD:offlineip(playerid, params[])
  54655. {
  54656. new player[24];
  54657. if (Players[playerid][pAdmin] < 3)
  54658. {
  54659. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  54660. }
  54661. else if (sscanf(params, "s["#MAX_PLAYER_NAME"]", player))
  54662. {
  54663. return SendSyntaxMessage(playerid, "/offlineip (player)");
  54664. }
  54665. else
  54666. {
  54667. format(gExecute, sizeof(gExecute), "SELECT IP FROM rp_accounts WHERE Username = '%s'", mysql_escaped(player));
  54668. mysql_tquery(gConnection, gExecute, "OnPlayerGetOfflineIP", "is", playerid, player);
  54669. }
  54670. return 1;
  54671. }
  54672. CMD:taxiduty(playerid, params[])
  54673. {
  54674. if (Players[playerid][pJob] != JOB_TAXI) return SendErrorMessage(playerid, "You need to be a taxi driver to do this");
  54675. if (!IsSuitableTaxiCar(GetPlayerVehicleID(playerid))) return SendErrorMessage(playerid, "This vehicle can not be used for transport.");
  54676. Players[playerid][pTaxiDuty] = !Players[playerid][pTaxiDuty];
  54677. Players[playerid][pTaxiFare] = 1;
  54678. if(Players[playerid][pTaxiDuty])
  54679. {
  54680. new vehicleid = GetPlayerVehicleID(playerid);
  54681. switch(GetVehicleModel(vehicleid))
  54682. {
  54683. case 445: TaxiObject[vehicleid] = CreateVehicleObject(19308, vehicleid, 0.0, 0.0, 0.915, 0.0, 0.0, 90.0);
  54684. case 426: TaxiObject[vehicleid] = CreateVehicleObject(19308, vehicleid, 0.0, 0.0, 0.9325, 0.0, 0.0, 90.0);
  54685. case 418: TaxiObject[vehicleid] = CreateVehicleObject(19308, vehicleid, 0.0, 0.0, 1.12, 0.0, 0.0, 90.0);
  54686. }
  54687. SendInfoMessage(playerid, "You are now on the duty! Use /setfare to set the fare!");
  54688. }
  54689. else
  54690. {
  54691. new v = GetPlayerVehicleID(playerid);
  54692. if(TaxiObject[v] != INVALID_OBJECT_ID) DestroyDynamicObject(TaxiObject[v]);
  54693. TaxiObject[v] = INVALID_OBJECT_ID;
  54694. SendInfoMessage(playerid, "You are now off the duty!");
  54695. }
  54696. return 1;
  54697. }
  54698. CMD:setfare(playerid, params[])
  54699. {
  54700. new price;
  54701. if (Players[playerid][pJob] != JOB_TAXI) return SendErrorMessage(playerid, "You need to be a taxi driver to do this");
  54702. if (!IsSuitableTaxiCar(GetPlayerVehicleID(playerid))) return SendErrorMessage(playerid, "You need to be in a taxi");
  54703. if (!Players[playerid][pTaxiDuty]) return SendErrorMessage(playerid, "You are not on duty (/taxiduty)");
  54704. if (sscanf(params, "d", price)) return SendSyntaxMessage(playerid, "/setfare [price(1-25)]");
  54705. if (price < 0 || price > 25) return SendSyntaxMessage(playerid, "/setfare [price(1-25)]");
  54706. Players[playerid][pTaxiFare] = price;
  54707. SendInfoMessage(playerid, "You have set the fare to %d!", price);
  54708. return 1;
  54709. }
  54710. CMD:accepttaxi(playerid, params[])
  54711. {
  54712. new targetid;
  54713. if (Players[playerid][pJob] != JOB_TAXI)
  54714. {
  54715. return SendErrorMessage(playerid, "You need to be a taxi driver to do this");
  54716. }
  54717. else if (!IsPlayerInTaxi(playerid))
  54718. {
  54719. return SendErrorMessage(playerid, "You need to be in a taxi. (/taxiduty)");
  54720. }
  54721. else if (sscanf(params, "u", targetid))
  54722. {
  54723. return SendSyntaxMessage(playerid, "/accepttaxi [playerid/name]");
  54724. }
  54725. else if (!IsPlayerConnected(targetid))
  54726. {
  54727. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  54728. }
  54729. else if (!Players[targetid][pCallTaxi])
  54730. {
  54731. return SendErrorMessage(playerid, "That player hasn't called for a taxi.");
  54732. }
  54733. else
  54734. {
  54735. new Float:x, Float:y, Float:z;
  54736. if (!GetPlayerPosEx(targetid, x, y, z))
  54737. {
  54738. SendInfoMessage(playerid, "Taxi: The call could not be traced. (( Player is inside )).");
  54739. }
  54740. else
  54741. {
  54742. Players[targetid][pCallTaxi] = 0;
  54743. SendInfoMessage(targetid, "Taxi Service: %s has accepted your request, He charges: $%d / per meter", ReturnNameEx(playerid), Players[playerid][pTaxiFare]);
  54744. SetCheckpoint(playerid, CHECKPOINT_GPS, x, y, z, 3.0);
  54745. SendInfoMessage(playerid, "Taxi: A waypoint was placed at the caller's last known location.");
  54746. }
  54747. }
  54748. return 1;
  54749. }
  54750. CMD:rent(playerid, params[])
  54751. {
  54752. new house = GetClosestHouse(playerid);
  54753. if (house == INVALID_ID)
  54754. {
  54755. return SendErrorMessage(playerid, "There is no house nearby.");
  54756. }
  54757. else if (IsHouseOwner(playerid, house))
  54758. {
  54759. return SendErrorMessage(playerid, "You can't rent your own house.");
  54760. }
  54761. else if (!Houses[house][hRentPrice])
  54762. {
  54763. return SendErrorMessage(playerid, "This house is not available to rent.");
  54764. }
  54765. else if (!Houses[house][hOwner])
  54766. {
  54767. return SendErrorMessage(playerid, "You can't rent an unoccupied house.");
  54768. }
  54769. else if (!PlayerCanAfford(playerid, Houses[house][hRentPrice]))
  54770. {
  54771. return SendErrorMessage(playerid, "You can't afford to rent this house.");
  54772. }
  54773. else if (Players[playerid][pRentHouse] == Houses[house][hID])
  54774. {
  54775. return SendErrorMessage(playerid, "You are renting this house already.");
  54776. }
  54777. else
  54778. {
  54779. new owner = GetHouseOwnerID(house);
  54780. if (owner != INVALID_PLAYER_ID)
  54781. {
  54782. Players[owner][pJobPaycheck] += Houses[house][hRentPrice];
  54783. SendInfoMessage(owner, "You have received %s on your paycheck for rentals.", FormatNumber(Houses[house][hRentPrice]));
  54784. }
  54785. else
  54786. {
  54787. format(gExecute, sizeof(gExecute), "UPDATE rp_accounts SET Paycheck = Paycheck + %i WHERE ID = %i", Houses[house][hRentPrice], Houses[house][hOwner]);
  54788. mysql_tquery(gConnection, gExecute);
  54789. }
  54790. Players[playerid][pRentHouse] = Houses[house][hID];
  54791. RemoveMoney(playerid, Houses[house][hRentPrice]);
  54792. SendInfoMessage(playerid, "You have rented this house for {33CC33}%s{FFFFFF}. You can now use '/house lock' to lock it.", FormatNumber(Houses[house][hRentPrice]));
  54793. }
  54794. return 1;
  54795. }
  54796. CMD:unrent(playerid, params[])
  54797. {
  54798. if (!Players[playerid][pRentHouse])
  54799. {
  54800. return SendErrorMessage(playerid, "You are not renting any house.");
  54801. }
  54802. else
  54803. {
  54804. Players[playerid][pRentHouse] = 0;
  54805. SendInfoMessage(playerid, "You are no longer renting any house.");
  54806. }
  54807. return 1;
  54808. }
  54809. CMD:listguns(playerid, params[])
  54810. {
  54811. new targetid;
  54812. if (Players[playerid][pAdmin] < 1)
  54813. {
  54814. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  54815. }
  54816. else if (sscanf(params, "u", targetid))
  54817. {
  54818. return SendSyntaxMessage(playerid, "/listguns [playerid/name]");
  54819. }
  54820. else if (!IsPlayerConnected(targetid))
  54821. {
  54822. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  54823. }
  54824. else if (IsPlayerNPC(targetid))
  54825. {
  54826. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  54827. }
  54828. else if (!IsPlayerLoggedIn(targetid))
  54829. {
  54830. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  54831. }
  54832. else
  54833. {
  54834. SendFormatMessage(playerid, COLOR_YELLOW, "%s's Weapons:", ReturnNameEx(targetid, 0));
  54835. if (Weapons[targetid][wMelee] > 0)
  54836. {
  54837. SendInfoMessage(playerid, "* Melee: %s", GetWeapon(Weapons[targetid][wMelee]));
  54838. }
  54839. if (Weapons[targetid][wPrimary] > 0)
  54840. {
  54841. SendInfoMessage(playerid, "* Primary: %s (%i ammo)", GetWeapon(Weapons[targetid][wPrimary]), Weapons[targetid][wPrimaryAmmo]);
  54842. }
  54843. if (Weapons[targetid][wSecondary] > 0)
  54844. {
  54845. SendInfoMessage(playerid, "* Secondary: %s (%i ammo)", GetWeapon(Weapons[targetid][wSecondary]), Weapons[targetid][wSecondaryAmmo]);
  54846. }
  54847. if (Weapons[targetid][wTertiary] > 0)
  54848. {
  54849. SendInfoMessage(playerid, "* Tertiary: %s (%i ammo)", GetWeapon(Weapons[targetid][wTertiary]), Weapons[targetid][wTertiaryAmmo]);
  54850. }
  54851. if (Players[targetid][pTazer])
  54852. {
  54853. SendInfoMessage(playerid, "* Taser");
  54854. }
  54855. }
  54856. return 1;
  54857. }
  54858. CMD:masked(playerid, params[])
  54859. {
  54860. if (Players[playerid][pAdmin] < 1)
  54861. {
  54862. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  54863. }
  54864. else
  54865. {
  54866. SendClientMessage(playerid, COLOR_YELLOW, "Masked Players:");
  54867. foreach (new i : Player)
  54868. {
  54869. if (Players[i][pMaskID] > 0)
  54870. {
  54871. SendInfoMessage(playerid, "%s (%s) (ID: %i)", ReturnName(i), ReturnNameEx(i), i);
  54872. }
  54873. }
  54874. }
  54875. return 1;
  54876. }
  54877. CMD:debug(playerid, params[]) // drakeydebug
  54878. {
  54879. if (Players[playerid][pAdmin] < 2)
  54880. {
  54881. return SendErrorMessage(playerid, "Developers / Administrators command only.");
  54882. }
  54883. else if (isnull(params))
  54884. {
  54885. SendClientMessage(playerid, COLOR_YELLOW, "[DEVELOPER ?DEBUG (SCRIPT TESTING PURPOSES ONLY)]:");
  54886. SendClientMessage(playerid, COLOR_WHITE, "[/debug brokenleg]");
  54887. SendClientMessage(playerid, COLOR_WHITE, "[/debug clear]");
  54888. }
  54889. if (!strcmp(params, "brokenleg", true))
  54890. {
  54891. SendClientMessage(playerid, COLOR_YELLOW, "[DEBUG] Unable to sprint or jump. To remove this, use /debug clear.");
  54892. Players[playerid][pBrokenLeg] = 1;
  54893. }
  54894. if (!strcmp(params, "clear", true))
  54895. {
  54896. SendClientMessage(playerid, COLOR_YELLOW, "[DEBUG] All debugs modes have been cleared.");
  54897. Players[playerid][pBrokenLeg] = 0;
  54898. }
  54899. return 1;
  54900. }
  54901. CMD:addtrashbin(playerid, params[])
  54902. {
  54903. if (Players[playerid][pAdmin] < 5)
  54904. {
  54905. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  54906. }
  54907. else if (GetClosestTrashbin(playerid) != INVALID_ID)
  54908. {
  54909. return SendErrorMessage(playerid, "There is another trashbin nearby.");
  54910. }
  54911. else
  54912. {
  54913. new
  54914. Float:x,
  54915. Float:y,
  54916. Float:z,
  54917. Float:angle,
  54918. id = INVALID_ID;
  54919. GetPlayerPos(playerid, x, y, z);
  54920. GetPlayerFacingAngle(playerid, angle);
  54921. x += 2.0 * floatsin(-angle, degrees);
  54922. y += 2.0 * floatcos(-angle, degrees);
  54923. id = AddTrashbin(x, y, z, angle, GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid));
  54924. if (id == INVALID_ID)
  54925. {
  54926. return SendErrorMessage(playerid, "There are no available trashbin slots.");
  54927. }
  54928. else
  54929. {
  54930. EditDynamicObjectEx(playerid, EDIT_TYPE_TRASHBIN, Trashbins[id][tObject], id);
  54931. SendInfoMessage(playerid, "You have added trashbin %i (/edittrashbin).", id);
  54932. }
  54933. }
  54934. return 1;
  54935. }
  54936. CMD:gototrashbin(playerid, params[])
  54937. {
  54938. new id;
  54939. if (Players[playerid][pAdmin] < 5)
  54940. {
  54941. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  54942. }
  54943. else if (sscanf(params, "i", id))
  54944. {
  54945. return SendSyntaxMessage(playerid, "/gototrashbin (trashbin ID)");
  54946. }
  54947. else if (!IsValidTrashbinID(id))
  54948. {
  54949. return SendErrorMessage(playerid, "You have specified an invalid trashbin.");
  54950. }
  54951. else
  54952. {
  54953. SetPlayerPosEx(playerid, Trashbins[id][tX], Trashbins[id][tY], Trashbins[id][tZ], Trashbins[id][tA], Trashbins[id][tInterior], Trashbins[id][tWorld]);
  54954. SendInfoMessage(playerid, "You have teleported to trashbin %i.", id);
  54955. }
  54956. return 1;
  54957. }
  54958. CMD:edittrashbin(playerid, params[])
  54959. {
  54960. new id;
  54961. if (Players[playerid][pAdmin] < 5)
  54962. {
  54963. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  54964. }
  54965. else if (sscanf(params, "i", id))
  54966. {
  54967. return SendSyntaxMessage(playerid, "/edittrashbin (trashbin ID)");
  54968. }
  54969. else if (!IsValidTrashbinID(id))
  54970. {
  54971. return SendErrorMessage(playerid, "You have specified an invalid trashbin.");
  54972. }
  54973. else
  54974. {
  54975. EditDynamicObjectEx(playerid, EDIT_TYPE_TRASHBIN, Trashbins[id][tObject], id);
  54976. SendInfoMessage(playerid, "Click on the disk icon to save changes.");
  54977. }
  54978. return 1;
  54979. }
  54980. CMD:deletetrashbin(playerid, params[])
  54981. {
  54982. new id;
  54983. if (Players[playerid][pAdmin] < 5)
  54984. {
  54985. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  54986. }
  54987. else if (sscanf(params, "i", id))
  54988. {
  54989. return SendSyntaxMessage(playerid, "/edittrashbin (trashbin ID)");
  54990. }
  54991. else if (!IsValidTrashbinID(id))
  54992. {
  54993. return SendErrorMessage(playerid, "You have specified an invalid trashbin.");
  54994. }
  54995. else
  54996. {
  54997. ClearTrashbinItems(id);
  54998. DestroyDynamic3DTextLabel(Trashbins[id][tText]);
  54999. DestroyDynamicObject(Trashbins[id][tObject]);
  55000. format(gExecute, sizeof(gExecute), "DELETE FROM rp_trashbins WHERE `tID` = %i", Trashbins[id][tID]);
  55001. mysql_tquery(gConnection, gExecute);
  55002. Trashbins[id][tExists] = 0;
  55003. SendInfoMessage(playerid, "You have deleted trashbin %i.", id);
  55004. }
  55005. return 1;
  55006. }
  55007. CMD:savepos(playerid, params[])
  55008. {
  55009. if (Players[playerid][pAdmin] < 1)
  55010. {
  55011. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  55012. }
  55013. else
  55014. {
  55015. GetPlayerPos(playerid, Players[playerid][pSpawn][0], Players[playerid][pSpawn][1], Players[playerid][pSpawn][2]);
  55016. GetPlayerFacingAngle(playerid, Players[playerid][pSpawn][3]);
  55017. Players[playerid][pInterior] = GetPlayerInterior(playerid);
  55018. Players[playerid][pWorld] = GetPlayerVirtualWorld(playerid);
  55019. SendInfoMessage(playerid, "You have saved your current position. Use /loadpos to teleport.");
  55020. }
  55021. return 1;
  55022. }
  55023. CMD:loadpos(playerid, params[])
  55024. {
  55025. if (Players[playerid][pAdmin] < 1)
  55026. {
  55027. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  55028. }
  55029. else
  55030. {
  55031. SetPlayerPos(playerid, Players[playerid][pSpawn][0], Players[playerid][pSpawn][1], Players[playerid][pSpawn][2]);
  55032. SetPlayerFacingAngle(playerid, Players[playerid][pSpawn][3]);
  55033. SetPlayerInterior(playerid, Players[playerid][pInterior]);
  55034. SetPlayerVirtualWorld(playerid, Players[playerid][pWorld]);
  55035. SendInfoMessage(playerid, "You have teleported to your saved position.");
  55036. }
  55037. return 1;
  55038. }
  55039. CMD:tow(playerid, params[])
  55040. {
  55041. new Float:x, Float:y, Float:z, Float:angle, vehicleid = GetPlayerVehicleID(playerid);
  55042. if(GetVehicleModel(vehicleid) != 525) return SendErrorMessage(playerid, "You are not in a tow truck.");
  55043. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendErrorMessage(playerid, "You are not the driver of the vehicle.");
  55044. if(IsAPlane(vehicleid) || IsAHelicopter(vehicleid)) return SendErrorMessage(playerid,"You cannot tow an aircraft.");
  55045. new trailerid = GetVehicleTrailer(vehicleid);
  55046. if (trailerid)
  55047. {
  55048. DetachTrailerFromVehicle(vehicleid);
  55049. SendInfoMessage(playerid, "You've detached the current vehicle.");
  55050. }
  55051. else
  55052. {
  55053. GetVehiclePos(vehicleid, x, y, z);
  55054. GetVehicleZAngle(vehicleid, angle);
  55055. for (new i = 1; i < MAX_VEHICLES; i ++)
  55056. {
  55057. if (i == vehicleid || !IsVehicleStreamedIn(i, playerid))
  55058. continue;
  55059. if (IsVehicleInRangeOfPoint(i, 5.0, x - (3.0 * floatsin(-angle, degrees)), y - (3.0 * floatcos(-angle, degrees)), z))
  55060. {
  55061. AttachTrailerToVehicle(i, vehicleid);
  55062. SendInfoMessage(playerid, "You've hooked a %s to the back of the Tow Truck.", GetVehicleName(i));
  55063. return 1;
  55064. }
  55065. }
  55066. SendErrorMessage(playerid, "There are no vehicles around you.");
  55067. }
  55068. return 1;
  55069. }
  55070. CMD:impound(playerid, params[])
  55071. {
  55072. new
  55073. price,
  55074. vehicleid = GetPlayerVehicleID(playerid);
  55075. if (!IsPlayerInFaction(playerid, FACTION_LEO))
  55076. {
  55077. return SendErrorMessage(playerid, "You are not part of the law enforcement.");
  55078. }
  55079. else if (GetVehicleModel(vehicleid) != 525)
  55080. {
  55081. return SendErrorMessage(playerid, "You are not in a tow truck.");
  55082. }
  55083. else if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
  55084. {
  55085. return SendErrorMessage(playerid, "You are not the driver of the vehicle.");
  55086. }
  55087. else if (!IsTrailerAttachedToVehicle(vehicleid))
  55088. {
  55089. return SendErrorMessage(playerid, "There is no vehicle hooked onto the truck.");
  55090. }
  55091. else if (sscanf(params, "i", price))
  55092. {
  55093. return SendSyntaxMessage(playerid, "/impound [price]");
  55094. }
  55095. else if (price < 1 || price > 10000)
  55096. {
  55097. return SendErrorMessage(playerid, "The specified price must be between $1 and $10,000.");
  55098. }
  55099. else if (!IsPlayerInRangeOfPoint(playerid, 20.0, 1624.3313,-1819.2130,13.5258))
  55100. {
  55101. return SendErrorMessage(playerid, "You are not at the impound yard.");
  55102. }
  55103. else
  55104. {
  55105. new vehicle = GetVehicleID(GetVehicleTrailer(vehicleid));
  55106. if (vehicle == INVALID_ID)
  55107. {
  55108. SendErrorMessage(playerid, "There is no registration provided with this vehicle.");
  55109. }
  55110. else
  55111. {
  55112. Vehicles[vehicle][vImpound] = price;
  55113. DetachTrailerFromVehicle(vehicleid);
  55114. GetVehiclePos(Vehicles[vehicle][vVehicle], Vehicles[vehicle][vSpawn][0], Vehicles[vehicle][vSpawn][1], Vehicles[vehicle][vSpawn][2]);
  55115. GetVehicleZAngle(Vehicles[vehicle][vVehicle], Vehicles[vehicle][vSpawn][3]);
  55116. UpdateVehicle(vehicle);
  55117. SaveVehicle(vehicle);
  55118. SendFactionMessage(Players[playerid][pFaction], COLOR_RADIO, "** %s has impounded a %s for %s. **", ReturnNameEx(playerid, 0), GetVehicleModelName(Vehicles[vehicle][vModel]), FormatNumber(price));
  55119. }
  55120. }
  55121. return 1;
  55122. }
  55123. CMD:stop(playerid, params[])
  55124. {
  55125. if (Players[playerid][pWorking])
  55126. {
  55127. StopWorking(playerid);
  55128. SendInfoMessage(playerid, "You are no longer working.");
  55129. }
  55130. return 1;
  55131. }
  55132. CMD:orderpackage(playerid, params[])
  55133. {
  55134. if (GetPlayerFactionType(playerid) != FACTION_ILLEGAL)
  55135. {
  55136. return SendErrorMessage(playerid, "You are not part of an illegal faction.");
  55137. }
  55138. else if (Players[playerid][pFactionRank] < Factions[Players[playerid][pFaction]][fcMaxRanks] - 1)
  55139. {
  55140. return SendErrorMessage(playerid, "You are not a high ranking member.");
  55141. }
  55142. else if (Players[playerid][pPackageOrder] != PACKAGE_TYPE_NONE)
  55143. {
  55144. return SendErrorMessage(playerid, "You have already ordered a package.");
  55145. }
  55146. else if (Players[playerid][pPackageType] != PACKAGE_TYPE_NONE)
  55147. {
  55148. return SendErrorMessage(playerid, "You already have a package to pickup.");
  55149. }
  55150. else if (Players[playerid][pPackageTime] > gettime())
  55151. {
  55152. return SendErrorMessage(playerid, "You must wait up to %i minutes before making another order.", (Players[playerid][pPackageTime] - gettime()) / 120);
  55153. }
  55154. else
  55155. {
  55156. Dialog_Show(playerid, OrderPackage, DIALOG_STYLE_LIST, "{FFFFFF}Order Package", "Weapon Package\nDrug Package", "Select", "Cancel");
  55157. }
  55158. return 1;
  55159. }
  55160. CMD:makedrug(playerid, params[])
  55161. {
  55162. new option[64];
  55163. new amount;
  55164. if (GetPlayerFactionType(playerid) != FACTION_ILLEGAL)
  55165. {
  55166. return SendErrorMessage(playerid, "You are not part of an illegal faction.");
  55167. }
  55168. else if (Players[playerid][pFactionRank] < Factions[Players[playerid][pFaction]][fcMaxRanks] - 2)
  55169. {
  55170. return SendErrorMessage(playerid, "You are not a high enough rank to do this.");
  55171. }
  55172. else if (sscanf (params, "s[128]i", option, amount))
  55173. {
  55174. SendSyntaxMessage(playerid, "/makedrug [drug] [amount]");
  55175. SendInfoMessage(playerid, "Drugs: crack, heroin, lsd, ecstasy");
  55176. return 1;
  55177. }
  55178. else
  55179. {
  55180. if (!strcmp(option, "crack", true))
  55181. {
  55182. new item1 = GetInventoryItemID(playerid, "Cocaine");
  55183. new item2 = GetInventoryItemID(playerid, "Baking Soda");
  55184. if (item1 == INVALID_ID)
  55185. {
  55186. return SendErrorMessage(playerid, "You need cocaine and baking soda.");
  55187. }
  55188. else if (item2 == INVALID_ID)
  55189. {
  55190. return SendErrorMessage(playerid, "You need cocaine and baking soda.");
  55191. }
  55192. else if (Inventory[playerid][item1][invValue] < amount)
  55193. {
  55194. return SendErrorMessage(playerid, "You don't have enough cocaine (%i)", amount);
  55195. }
  55196. else if (Inventory[playerid][item2][invValue] < amount*5)
  55197. {
  55198. return SendErrorMessage(playerid, "You don't have enough baking soda (%i)", amount*5);
  55199. }
  55200. else
  55201. {
  55202. RemoveItemValue(playerid, item1, amount);
  55203. RemoveItemValue(playerid, item2, amount*5);
  55204. AddItemToInventory(playerid, "Crack", amount*5);
  55205. SendInfoMessage(playerid, "{CFCFCF}You mixed {33AA33}%ig{CFCFCF} baking soda and {33AA33}%ig{CFCFCF} cocaine into {33AA33}%ig{CFCFCF} crack.", amount*5, amount, amount*5);
  55206. }
  55207. }
  55208. else if (!strcmp(option, "heroin", true))
  55209. {
  55210. new item = GetInventoryItemID(playerid, "Opium Poppies");
  55211. if (item == INVALID_ID)
  55212. {
  55213. return SendErrorMessage(playerid, "You need opium poppies.");
  55214. }
  55215. else if (Inventory[playerid][item][invValue] < amount)
  55216. {
  55217. return SendErrorMessage(playerid, "You don't have enough opium poppies (%i)", amount);
  55218. }
  55219. else
  55220. {
  55221. RemoveItemValue(playerid, item, amount);
  55222. AddItemToInventory(playerid, "Heroin", amount);
  55223. SendInfoMessage(playerid, "{CFCFCF}You extract {33AA33}%ig{CFCFCF} heroin from {33AA33}%ig{CFCFCF} of opium poppies.", amount, amount);
  55224. }
  55225. }
  55226. else if (!strcmp(option, "lsd", true))
  55227. {
  55228. new item = GetInventoryItemID(playerid, "Morning Glory Seeds");
  55229. if (item == INVALID_ID)
  55230. {
  55231. return SendErrorMessage(playerid, "You need morning glory seeds.");
  55232. }
  55233. else if (Inventory[playerid][item][invValue] < amount)
  55234. {
  55235. return SendErrorMessage(playerid, "You don't have enough morning glory seeds (%i)", amount);
  55236. }
  55237. else
  55238. {
  55239. RemoveItemValue(playerid, item, amount);
  55240. AddItemToInventory(playerid, "LSD", amount);
  55241. SendInfoMessage(playerid, "{CFCFCF}You extract {33AA33}%ig{CFCFCF} LSD from {33AA33}%ig{CFCFCF} of morning glory seeds.", amount, amount);
  55242. }
  55243. }
  55244. else if (!strcmp(option, "ecstasy", true))
  55245. {
  55246. new item1 = GetInventoryItemID(playerid, "Hydrogen Peroxide");
  55247. new item2 = GetInventoryItemID(playerid, "Formic Acid");
  55248. new item3 = GetInventoryItemID(playerid, "Isosafrole");
  55249. if (item1 == INVALID_ID)
  55250. {
  55251. return SendErrorMessage(playerid, "You need hydrogen peroxide, formic acid and isosafrole.");
  55252. }
  55253. else if (item2 == INVALID_ID)
  55254. {
  55255. return SendErrorMessage(playerid, "You need hydrogen peroxide, formic acid and isosafrole.");
  55256. }
  55257. else if (item3 == INVALID_ID)
  55258. {
  55259. return SendErrorMessage(playerid, "You need hydrogen peroxide, formic acid and isosafrole.");
  55260. }
  55261. else if (Inventory[playerid][item1][invValue] < amount*2)
  55262. {
  55263. return SendErrorMessage(playerid, "You don't have enough hydrogen peroxide (%i)", amount*2);
  55264. }
  55265. else if (Inventory[playerid][item2][invValue] < amount*7)
  55266. {
  55267. return SendErrorMessage(playerid, "You don't have enough formic acid (%i)", amount*7);
  55268. }
  55269. else if (Inventory[playerid][item3][invValue] < amount*4)
  55270. {
  55271. return SendErrorMessage(playerid, "You don't have enough isosafrole (%i)", amount*4);
  55272. }
  55273. else
  55274. {
  55275. RemoveItemValue(playerid, item1, amount*2);
  55276. RemoveItemValue(playerid, item2, amount*7);
  55277. RemoveItemValue(playerid, item3, amount*4);
  55278. AddItemToInventory(playerid, "Ecstasy", amount);
  55279. SendInfoMessage(playerid, "{CFCFCF}You mix {33AA33}%ig{CFCFCF} hydrogen peroxide, {33AA33}%ig{CFCFCF} formic acid and {33AA33}%ig{CFCFCF} isosafrole and get %ig{CFCFCF} ecstasy.", amount*2, amount*7, amount*4, amount);
  55280. }
  55281. }
  55282. }
  55283. return 1;
  55284. }
  55285. CMD:order(playerid, params[])
  55286. {
  55287. if (GetPlayerFactionType(playerid) != FACTION_ILLEGAL)
  55288. {
  55289. return SendErrorMessage(playerid, "You are not part of an illegal faction.");
  55290. }
  55291. else if (Players[playerid][pFactionRank] < Factions[Players[playerid][pFaction]][fcMaxRanks] - 2)
  55292. {
  55293. return SendErrorMessage(playerid, "You are not a high enough rank to do this.");
  55294. }
  55295. else if (!IsPlayerNearPoint(playerid, 3.0, 2525.4495,-2221.1128,13.5469, 0, 0))
  55296. {
  55297. return SendErrorMessage(playerid, "You are not in the right place.");
  55298. }
  55299. else
  55300. {
  55301. Dialog_Show(playerid, OrderIllegal, DIALOG_STYLE_LIST, "{FFFFFF}Order", "Weapons\nDrugs", "Select", "Cancel");
  55302. }
  55303. return 1;
  55304. }
  55305. CMD:craft(playerid, params[])
  55306. {
  55307. if (GetPlayerFactionType(playerid) != FACTION_ILLEGAL)
  55308. {
  55309. return SendErrorMessage(playerid, "You are not part of an illegal faction.");
  55310. }
  55311. else if (Players[playerid][pFactionRank] < Factions[Players[playerid][pFaction]][fcMaxRanks] - 2)
  55312. {
  55313. return SendErrorMessage(playerid, "You are not a high enough rank to do this.");
  55314. }
  55315. else
  55316. {//format(string, sizeof(string), "%s\nItem: %s (%s)", string, g_CompanyItems[i][e_ItemName], FormatNumber(Products[company][index][prPrice]));
  55317. new string[512];
  55318. if (Factions[Players[playerid][pFaction]][fcWeaponRights][0])
  55319. {
  55320. //format(string, sizeof(string), "Melee Weapons\n", string);
  55321. strcat(string, "Melee Weapons\n");
  55322. }
  55323. if (Factions[Players[playerid][pFaction]][fcWeaponRights][1])
  55324. {
  55325. //format(string, sizeof(string), "Pistols\n", string);
  55326. strcat(string, "Pistols\n");
  55327. }
  55328. if (Factions[Players[playerid][pFaction]][fcWeaponRights][2])
  55329. {
  55330. //format(string, sizeof(string), "Shotguns\n", string);
  55331. strcat(string, "Shotguns\n");
  55332. }
  55333. if (Factions[Players[playerid][pFaction]][fcWeaponRights][3])
  55334. {
  55335. //format(string, sizeof(string), "Sub Machine Guns\n", string);
  55336. strcat(string, "Sub Machine Guns\n");
  55337. }
  55338. if (Factions[Players[playerid][pFaction]][fcWeaponRights][4])
  55339. {
  55340. //format(string, sizeof(string), "Rifles\n", string);
  55341. strcat(string, "Rifles\n");
  55342. }
  55343. if (Factions[Players[playerid][pFaction]][fcWeaponRights][5])
  55344. {
  55345. //format(string, sizeof(string), "Rifles\n", string);
  55346. strcat(string, "Explosives\n");
  55347. }
  55348. Dialog_Show(playerid, Crafting, DIALOG_STYLE_LIST, "{FFFFFF}Crafting", string, "Select", "Cancel");
  55349. }
  55350. return 1;
  55351. }
  55352. CMD:load(playerid, params[])
  55353. {
  55354. if (Players[playerid][pJob] != JOB_TRANSPORTER)
  55355. {
  55356. return SendErrorMessage(playerid, "You need to have the transporter job to do this.");
  55357. }
  55358. else if (Players[playerid][pWorking])
  55359. {
  55360. return SendErrorMessage(playerid, "You are already working - use /stop to quit working.");
  55361. }
  55362. else if (!IsPlayerInRangeOfPoint(playerid, 3.0, 2175.3335, -2266.9937, 13.3891))
  55363. {
  55364. return SendErrorMessage(playerid, "You are not at the warehouse in Ocean Docks.");
  55365. }
  55366. else if (GetPlayerState(playerid) != PLAYER_STATE_ONFOOT)
  55367. {
  55368. return SendErrorMessage(playerid, "You need to be onfoot to load the goods.");
  55369. }
  55370. else if(EnteringVehicle[playerid] == 1)
  55371. {
  55372. return SendErrorMessage(playerid, "You must not be entering the vehicle while picking up load.");
  55373. }
  55374. Dialog_Show(playerid, GoodsType, DIALOG_STYLE_LIST, "{FFFFFF}List of Goods", "Retail Items\nClothing Items\nFood and Drinks\nCellphones\nGym Supplies\nAmmunition\nBar Drinks", "Choose", "Cancel");
  55375. return 1;
  55376. }
  55377. CMD:deliver(playerid, params[])
  55378. {
  55379. new
  55380. company = GetClosestDeliveryPoint(playerid),
  55381. vehicleid = GetPlayerVehicleID(playerid),
  55382. string[128]
  55383. ;
  55384. if (Players[playerid][pJob] != JOB_TRANSPORTER)
  55385. {
  55386. return SendErrorMessage(playerid, "You need to have the transporter job to do this.");
  55387. }
  55388. else if (!IsTransportVehicle(vehicleid))
  55389. {
  55390. return SendErrorMessage(playerid, "You are not in any transport vehicle.");
  55391. }
  55392. else if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
  55393. {
  55394. return SendErrorMessage(playerid, "You must be the driver of the vehicle.");
  55395. }
  55396. else if (!VehicleInformation[vehicleid][vGoods])
  55397. {
  55398. return SendErrorMessage(playerid, "There is no goods loaded in this vehicle.");
  55399. }
  55400. else if (company == INVALID_ID)
  55401. {
  55402. return SendErrorMessage(playerid, "There is no delivery point nearby.");
  55403. }
  55404. else if (Companies[company][cType] != VehicleInformation[vehicleid][vGoods])
  55405. {
  55406. return SendErrorMessage(playerid, "You can only deliver your load to a %s.", GetCompanyType(VehicleInformation[vehicleid][vGoods]));
  55407. }
  55408. else
  55409. {
  55410. /*new
  55411. price = floatround(GetPlayerDistanceFromPoint(playerid, 2175.3335, -2266.9937, 13.3891)) / 2;*/
  55412. new
  55413. price = floatround(GetPlayerDistanceFromPoint(playerid, 2175.3335, -2266.9937, 13.3891));
  55414. Players[playerid][pJobPaycheck] += price;
  55415. Companies[company][cStock] = Companies[company][cStock] + 200;
  55416. SendInfoMessage(playerid, "You have received %s on your paycheck for the delivery.", FormatNumber(price));
  55417. new v_dbID = GetVehicleID(vehicleid);
  55418. if(IsVehicleOwner(playerid, v_dbID))
  55419. {
  55420. new bonus = floatround((price/100)*30);
  55421. Players[playerid][pPocketMoney] += bonus;
  55422. SendInfoMessage(playerid, "You have received a bonus of %s on your paycheck for delivering with your own vehicle.", FormatNumber(bonus));
  55423. }
  55424. else
  55425. {
  55426. new Float:vcHealth;
  55427. GetVehicleHealth(GetPlayerVehicleID(playerid), vcHealth);
  55428. new damagePayment = floatround((vehicleStartingHealth[playerid]-vcHealth)*3);
  55429. RemoveMoney(playerid, damagePayment);
  55430. SendInfoMessage(playerid, "You have paid %s as cost for the damage you have caused to your duty vehicle.", FormatNumber(damagePayment));
  55431. }
  55432. SaveCompany(company);
  55433. DestroyDynamicObject(VehicleInformation[vehicleid][vObject]);
  55434. VehicleInformation[vehicleid][vGoods] = 0;
  55435. VehicleInformation[vehicleid][vObject] = INVALID_OBJECT_ID;
  55436. for (new i = 0; i < MAX_GAS_PUMPS; i ++)
  55437. {
  55438. if (GasPumps[i][gpCompany] == Companies[company][cID])
  55439. {
  55440. GasPumps[i][gpFuel] = GasPumps[i][gpFuel] + 1000.0;
  55441. SaveGasPump(i);
  55442. format(string, sizeof(string), "ID: %i\nGasoline: %.1f gallons", i, GasPumps[i][gpFuel]);
  55443. UpdateDynamic3DTextLabelText(GasPumps[i][gpText], COLOR_GREY, string);
  55444. }
  55445. }
  55446. }
  55447. return 1;
  55448. }
  55449. CMD:jobhelp(playerid, params[])
  55450. {
  55451. if (Players[playerid][pJob] == JOB_NONE)
  55452. {
  55453. return SendErrorMessage(playerid, "You are not employed - use /guide to find a job.");
  55454. }
  55455. Dialog_Show(playerid, JobHelp, DIALOG_STYLE_LIST, "{FFFFFF}Job Help", "Objective\nWork Location", "Select", "Cancel");
  55456. return 1;
  55457. }
  55458. CMD:work(playerid, params[])
  55459. {
  55460. if (Players[playerid][pJob] == JOB_NONE)
  55461. {
  55462. return SendErrorMessage(playerid, "You are not employed - use /guide to find a job.");
  55463. }
  55464. else if (Players[playerid][pWorking])
  55465. {
  55466. return SendErrorMessage(playerid, "You are already working - use /stop to quit working.");
  55467. }
  55468. switch (Players[playerid][pJob])
  55469. {
  55470. case JOB_FORKLIFTER:
  55471. {
  55472. if (GetVehicleModel(GetPlayerVehicleID(playerid)) != 530)
  55473. {
  55474. return SendErrorMessage(playerid, "You need to be driving a forklift.");
  55475. }
  55476. else
  55477. {
  55478. StartWorking(playerid);
  55479. SendInfoMessage(playerid, "Please drive to the {FF0000}checkpoint{FFFFFF} to load the cargo.");
  55480. }
  55481. }
  55482. case JOB_MINER:
  55483. {
  55484. if (GetPlayerState(playerid) != PLAYER_STATE_ONFOOT)
  55485. {
  55486. return SendErrorMessage(playerid, "You need to be onfoot to start mining.");
  55487. }
  55488. else if (!IsPlayerInRangeOfPoint(playerid, 3.0, -1858.5516, -1651.3812, 26.5788) && !IsPlayerInRangeOfPoint(playerid, 3.0, -1790.7683, -1649.2581, 33.3813) && !IsPlayerInRangeOfPoint(playerid, 3.0, -1775.1649, -1643.3854, 29.5218) && !IsPlayerInRangeOfPoint(playerid, 3.0, -1801.5831, -1649.7592, 26.5446))
  55489. {
  55490. return SendErrorMessage(playerid, "You need to be near the mining rocks.");
  55491. }
  55492. else
  55493. {
  55494. Players[playerid][pWorking] = 1;
  55495. Players[playerid][pMining] = 1;
  55496. Players[playerid][pJobStage] = 0;
  55497. SendInfoMessage(playerid, "You are now mining. Please wait...");
  55498. TogglePlayerControllable(playerid, false);
  55499. ApplyAnimation(playerid, "BASEBALL", "BAT_4", 4.1, 1, 0, 0, 0, 0, 1);
  55500. DisablePlayerCheckpoint(playerid);
  55501. SetPlayerAttachedObject(playerid, ATTACHED_SLOT_MISC, 337, 6);
  55502. SetTimerEx("MiningFinished", 20000, false, "i", playerid);
  55503. }
  55504. }
  55505. case JOB_PIZZA:
  55506. {
  55507. if (GetVehicleModel(GetPlayerVehicleID(playerid)) != 448)
  55508. {
  55509. return SendErrorMessage(playerid, "You need to be driving a pizza scooter.");
  55510. }
  55511. else if (!IsPlayerInRangeOfPoint(playerid, 10.0, 2092.8154,-1796.5688,13.3828))
  55512. {
  55513. return SendErrorMessage(playerid, "You need to be near the pizza stacks.");
  55514. }
  55515. else
  55516. {
  55517. new house = GetRandomHouse();
  55518. if (house == INVALID_ID) return SendErrorMessage(playerid, "There are no available houses in Los Santos - contact an admin!");
  55519. Players[playerid][pWorking] = 1;
  55520. SetCheckpoint(playerid, CHECKPOINT_JOB, Houses[house][hSpawn][0], Houses[house][hSpawn][1], Houses[house][hSpawn][2], 3.0);
  55521. SetTimerEx("DelayPizzaCP", 1500, false, "ii", playerid, house);
  55522. SendInfoMessage(playerid, "Please drive to the {FF0000}checkpoint{FFFFFF} and deliver the pizza.");
  55523. }
  55524. }
  55525. case JOB_TRASHMAN:
  55526. {
  55527. if (GetVehicleModel(GetPlayerVehicleID(playerid)) != 408)
  55528. {
  55529. return SendErrorMessage(playerid, "You need to be driving a garbage truck.");
  55530. }
  55531. else if (!IsPlayerInRangeOfPoint(playerid, 15.0, 2184.9795, -1976.9451, 13.5528))
  55532. {
  55533. return SendErrorMessage(playerid, "You need to be near the junk yard in Willowfield.");
  55534. }
  55535. else
  55536. {
  55537. new trash = GetRandomTrash();
  55538. if (trash == INVALID_ID) return SendErrorMessage(playerid, "There are no available trash bins in Los Santos - contact an admin!");
  55539. Players[playerid][pWorking] = 1;
  55540. Players[playerid][pTrashPickup] = 0;
  55541. SetCheckpoint(playerid, CHECKPOINT_JOB, Trashbins[trash][tX], Trashbins[trash][tY], Trashbins[trash][tZ], 3.0);
  55542. SendInfoMessage(playerid, "Make your way to the trash bin and pick up the garbage.");
  55543. }
  55544. }
  55545. /*case JOB_TRASHMAN:
  55546. {
  55547. if (GetVehicleModel(GetPlayerVehicleID(playerid)) != 408)
  55548. {
  55549. return SendErrorMessage(playerid, "You need to be driving a garbage truck.");
  55550. else if (!IsPlayerInRangeOfPoint(playerid, 5.0, 2184.9795, -1976.9451, 13.5528))
  55551. {
  55552. return SendErrorMessage(playerid, "You need to be near the junk yard in Willowfield.");
  55553. }
  55554. else
  55555. {
  55556. for (new i = 0; i < sizeof(g_TrashPickups); i ++)
  55557. {
  55558. gTrashObjects[playerid][i] = CreatePlayerObject(playerid, 1265, g_TrashPickups[i][0], g_TrashPickups[i][1], g_TrashPickups[i][2], 0.0, 0.0, g_TrashPickups[i][3]);
  55559. }
  55560. Players[playerid][pWorking] = 1;
  55561. Players[playerid][pTrashPickup] = 0;
  55562. SetCheckpoint(playerid, CHECKPOINT_JOB, g_TrashPickups[Players[playerid][pTrashPickup]][0], g_TrashPickups[Players[playerid][pTrashPickup]][1], g_TrashPickups[Players[playerid][pTrashPickup]][2], 2.0);
  55563. SendInfoMessage(playerid, "Please make your way through the {FF0000}checkpoints{FFFFFF} and pickup the garbage.");
  55564. }
  55565. }*/
  55566. }
  55567. return 1;
  55568. }
  55569. CMD:guide(playerid, params[])
  55570. {
  55571. Dialog_Show(playerid, Guide, DIALOG_STYLE_LIST, "{FFFFFF}Guide", "Acquire a Job\nDriving License\nFind Location\nList of FAQs", "Select", "Cancel");
  55572. return 1;
  55573. }
  55574. CMD:enter(playerid, params[])
  55575. {
  55576. new success = EnterCaller(playerid);
  55577. if (!success)
  55578. {
  55579. SendErrorMessage(playerid, "There is no door nearby.");
  55580. }
  55581. return 1;
  55582. }
  55583. CMD:exit(playerid, params[])
  55584. {
  55585. new success = ExitCaller(playerid);
  55586. if (!success)
  55587. {
  55588. SendErrorMessage(playerid, "There is no door nearby.");
  55589. }
  55590. return 1;
  55591. }
  55592. CMD:edittag(playerid, params[])
  55593. {
  55594. new id;
  55595. if (Players[playerid][pAdmin] < 5)
  55596. {
  55597. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  55598. }
  55599. else if (sscanf(params, "i", id))
  55600. {
  55601. return SendSyntaxMessage(playerid, "/edittag [tag id]");
  55602. }
  55603. else if (!IsValidTagID(id))
  55604. {
  55605. return SendErrorMessage(playerid, "You have specified an invalid tag ID.");
  55606. }
  55607. else
  55608. {
  55609. //EditDynamicObjectEx(playerid, EDIT_TYPE_TAG, Tags[id][tagObject], id);
  55610. //SendInfoMessage(playerid, "Click on the disk icon to save changes.");
  55611. Players[playerid][pEditID] = id;
  55612. Dialog_Show(playerid, TagEditMenu, DIALOG_STYLE_LIST, "{FFFFFF}Edit Tag", "Position\nText\nColor\nFont Size\nBold: %s\nTag Resolution", "Select", "Cancel", (Tags[id][tagBold]) ? ("Yes") : ("No"));
  55613. }
  55614. return 1;
  55615. }
  55616. CMD:addtag(playerid, params[])
  55617. {
  55618. new tag[64];
  55619. if (Players[playerid][pAdmin] < 5)
  55620. {
  55621. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  55622. }
  55623. else if (sscanf(params, "s[64]", tag))
  55624. {
  55625. SendSyntaxMessage(playerid, "/tag [text]");
  55626. }
  55627. else
  55628. {
  55629. new
  55630. Float:x,
  55631. Float:y,
  55632. Float:z,
  55633. Float:angle,
  55634. id = INVALID_ID;
  55635. GetPlayerPos(playerid, x, y, z);
  55636. GetPlayerFacingAngle(playerid, angle);
  55637. x += 2.0 * floatsin(-angle, degrees);
  55638. y += 2.0 * floatcos(-angle, degrees);
  55639. id = AddTag(x, y, z, angle, tag);
  55640. if (id == INVALID_ID)
  55641. {
  55642. return SendErrorMessage(playerid, "There are no available spray tag slots.");
  55643. }
  55644. else
  55645. {
  55646. EditDynamicObjectEx(playerid, EDIT_TYPE_TAG, Tags[id][tagObject], id);
  55647. SendInfoMessage(playerid, "You have added tag %i (/edittag).", id);
  55648. }
  55649. }
  55650. return 1;
  55651. }
  55652. CMD:addspray(playerid, params[])
  55653. {
  55654. if (Players[playerid][pAdmin] < 5)
  55655. {
  55656. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  55657. }
  55658. else if (GetClosestSprayTag(playerid) != INVALID_ID)
  55659. {
  55660. return SendErrorMessage(playerid, "There is another spray tag nearby.");
  55661. }
  55662. else if (IsPlayerInside(playerid))
  55663. {
  55664. return SendErrorMessage(playerid, "You need to be outside to add spray tags.");
  55665. }
  55666. else
  55667. {
  55668. new
  55669. Float:x,
  55670. Float:y,
  55671. Float:z,
  55672. Float:angle,
  55673. id = INVALID_ID;
  55674. GetPlayerPos(playerid, x, y, z);
  55675. GetPlayerFacingAngle(playerid, angle);
  55676. x += 2.0 * floatsin(-angle, degrees);
  55677. y += 2.0 * floatcos(-angle, degrees);
  55678. id = AddSprayTag(x, y, z, angle);
  55679. if (id == INVALID_ID)
  55680. {
  55681. return SendErrorMessage(playerid, "There are no available spray tag slots.");
  55682. }
  55683. else
  55684. {
  55685. EditDynamicObjectEx(playerid, EDIT_TYPE_SPRAY, SprayTags[id][sObject], id);
  55686. SendInfoMessage(playerid, "You have added spray tag %i (/editspray).", id);
  55687. }
  55688. }
  55689. return 1;
  55690. }
  55691. CMD:checkspray(playerid, params[])
  55692. {
  55693. if (Players[playerid][pAdmin] < 5)
  55694. {
  55695. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  55696. }
  55697. else
  55698. {
  55699. new spray = GetClosestSprayTag(playerid);
  55700. if (spray == INVALID_ID)
  55701. {
  55702. SendErrorMessage(playerid, "There is no spray tag nearby.");
  55703. }
  55704. else
  55705. {
  55706. SendInfoMessage(playerid, "The spray ID is: %i. Use /editspray to edit this spray tag.", spray);
  55707. }
  55708. }
  55709. return 1;
  55710. }
  55711. CMD:checktag(playerid, params[])
  55712. {
  55713. if (Players[playerid][pAdmin] < 5)
  55714. {
  55715. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  55716. }
  55717. else
  55718. {
  55719. new tag = GetClosestTag(playerid);
  55720. if (tag == INVALID_ID)
  55721. {
  55722. SendErrorMessage(playerid, "There is no tag nearby.");
  55723. }
  55724. else
  55725. {
  55726. SendInfoMessage(playerid, "The tag ID is: %i. Use /editspray to edit this tag.", tag);
  55727. }
  55728. }
  55729. return 1;
  55730. }
  55731. CMD:editspray(playerid, params[])
  55732. {
  55733. new id;
  55734. if (Players[playerid][pAdmin] < 5)
  55735. {
  55736. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  55737. }
  55738. else if (sscanf(params, "i", id))
  55739. {
  55740. return SendSyntaxMessage(playerid, "/editspray (spray ID)");
  55741. }
  55742. else if (!IsValidSprayTagID(id))
  55743. {
  55744. return SendErrorMessage(playerid, "You have specified an invalid spray tag ID.");
  55745. }
  55746. else
  55747. {
  55748. EditDynamicObjectEx(playerid, EDIT_TYPE_SPRAY, SprayTags[id][sObject], id);
  55749. SendInfoMessage(playerid, "Click on the disk icon to save changes.");
  55750. }
  55751. return 1;
  55752. }
  55753. CMD:deletespray(playerid, params[])
  55754. {
  55755. new id;
  55756. if (Players[playerid][pAdmin] < 5)
  55757. {
  55758. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  55759. }
  55760. else if (sscanf(params, "i", id))
  55761. {
  55762. return SendSyntaxMessage(playerid, "/deletespray (spray ID)");
  55763. }
  55764. else if (!IsValidSprayTagID(id))
  55765. {
  55766. return SendErrorMessage(playerid, "You have specified an invalid spray tag ID.");
  55767. }
  55768. else
  55769. {
  55770. DestroyDynamicObject(SprayTags[id][sObject]);
  55771. format(gExecute, sizeof(gExecute), "DELETE FROM rp_spraytags WHERE `stID` = %i", SprayTags[id][sID]);
  55772. mysql_tquery(gConnection, gExecute);
  55773. SprayTags[id][sExists] = 0;
  55774. SendInfoMessage(playerid, "You have deleted spray tag %i.", id);
  55775. }
  55776. return 1;
  55777. }
  55778. CMD:deletetag(playerid, params[])
  55779. {
  55780. new id;
  55781. if (Players[playerid][pAdmin] < 5)
  55782. {
  55783. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  55784. }
  55785. else if (sscanf(params, "i", id))
  55786. {
  55787. return SendSyntaxMessage(playerid, "/deletetag [tag id]");
  55788. }
  55789. else if (!IsValidTagID(id))
  55790. {
  55791. return SendErrorMessage(playerid, "You have specified an invalid tag ID.");
  55792. }
  55793. else
  55794. {
  55795. DestroyDynamicObject(Tags[id][tagObject]);
  55796. format(gExecute, sizeof(gExecute), "DELETE FROM rp_tags WHERE `stID` = %i", Tags[id][tagID]);
  55797. mysql_tquery(gConnection, gExecute);
  55798. Tags[id][tagExists] = 0;
  55799. SendInfoMessage(playerid, "You have deleted tag %i.", id);
  55800. }
  55801. return 1;
  55802. }
  55803. CMD:gotospray(playerid, params[])
  55804. {
  55805. new id;
  55806. if (Players[playerid][pAdmin] < 5)
  55807. {
  55808. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  55809. }
  55810. else if (sscanf(params, "i", id))
  55811. {
  55812. return SendSyntaxMessage(playerid, "/gotospray (spray ID)");
  55813. }
  55814. else if (!IsValidSprayTagID(id))
  55815. {
  55816. return SendErrorMessage(playerid, "You have specified an invalid spray tag.");
  55817. }
  55818. else
  55819. {
  55820. SetPlayerPos(playerid, SprayTags[id][sX], SprayTags[id][sY], SprayTags[id][sZ]);
  55821. SendInfoMessage(playerid, "You have teleported to spray tag %i.", id);
  55822. }
  55823. return 1;
  55824. }
  55825. CMD:clearspray(playerid, params[])
  55826. {
  55827. new id;
  55828. if (Players[playerid][pAdmin] < 5)
  55829. {
  55830. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  55831. }
  55832. else if (sscanf(params, "i", id))
  55833. {
  55834. return SendSyntaxMessage(playerid, "/gotospray (spray ID)");
  55835. }
  55836. else if (!IsValidSprayTagID(id))
  55837. {
  55838. return SendErrorMessage(playerid, "You have specified an invalid spray tag.");
  55839. }
  55840. else
  55841. {
  55842. strcpy(SprayTags[id][sText], "/spray to spray\nthis point", 64);
  55843. SprayTags[id][sColor] = 0xFFFFFFFF;
  55844. UpdateSprayTag(id);
  55845. SaveSprayTag(id);
  55846. SendInfoMessage(playerid, "You have cleared spray tag %i.", id);
  55847. }
  55848. return 1;
  55849. }
  55850. CMD:spray(playerid, params[])
  55851. {
  55852. new spray = GetClosestSprayTag(playerid), text[64];
  55853. if (GetPlayerFactionType(playerid) != FACTION_ILLEGAL)
  55854. {
  55855. return SendErrorMessage(playerid, "You are not part of an illegal faction.");
  55856. }
  55857. else if (!Factions[Players[playerid][pFaction]][fcSprayRights])
  55858. {
  55859. return SendErrorMessage(playerid, "Your faction is not authorized to spray tags.");
  55860. }
  55861. else if (GetPlayerState(playerid) != PLAYER_STATE_ONFOOT)
  55862. {
  55863. return SendErrorMessage(playerid, "You must be onfoot to spray a tag.");
  55864. }
  55865. else if (!IsValidSprayTagID(spray))
  55866. {
  55867. return SendErrorMessage(playerid, "There is no spray tag nearby.");
  55868. }
  55869. else if (sscanf(params, "s[64]", text))
  55870. {
  55871. return SendSyntaxMessage(playerid, "/spray (text) - Use ~n~ for a new line.");
  55872. }
  55873. else if (Players[playerid][pSprayTag] != INVALID_ID)
  55874. {
  55875. return SendErrorMessage(playerid, "You are spraying a tag already.");
  55876. }
  55877. else
  55878. {
  55879. new time = (strlen(params) * 1000) / 2;
  55880. foreach (new i : Player)
  55881. {
  55882. if (Players[i][pSprayTag] == spray)
  55883. {
  55884. return SendErrorMessage(playerid, "This tag is being sprayed by another player.");
  55885. }
  55886. }
  55887. strcpy(text, params);
  55888. strreplace(text, "~n~", "\n");
  55889. strreplace(text, "~g~", "{33AA33}");
  55890. strreplace(text, "~N~", "\n");
  55891. strpack(gTemporaryText[playerid], text, 64);
  55892. SetTimerEx("TagSprayed", time, false, "ii", playerid, spray);
  55893. PlayAnimation(playerid, "GRAFFITI", "spraycan_fire", 4.1, 1, 0, 0, 0, 0, 1);
  55894. ShowFooterText(playerid, "~g~Spraying the tag, please wait...", time);
  55895. ShowActionBubble(playerid, "* %s takes out a spraycan and begins to spray the tag.", ReturnNameEx(playerid));
  55896. Players[playerid][pSprayTag] = spray;
  55897. }
  55898. return 1;
  55899. }
  55900. CMD:setdamages(playerid, params[])
  55901. {
  55902. if (Players[playerid][pAdmin] < 6)
  55903. {
  55904. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  55905. }
  55906. else
  55907. {
  55908. ShowWeaponDamageEditMenu(playerid);
  55909. }
  55910. return 1;
  55911. }
  55912. CMD:addpayphone(playerid, params[])
  55913. {
  55914. if (Players[playerid][pAdmin] < 5)
  55915. {
  55916. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  55917. }
  55918. else if (GetClosestPayphone(playerid) != INVALID_ID)
  55919. {
  55920. return SendErrorMessage(playerid, "There is another payphone nearby.");
  55921. }
  55922. else
  55923. {
  55924. new
  55925. Float:x,
  55926. Float:y,
  55927. Float:z,
  55928. Float:angle,
  55929. id = INVALID_ID;
  55930. GetPlayerPos(playerid, x, y, z);
  55931. GetPlayerFacingAngle(playerid, angle);
  55932. x += 2.0 * floatsin(-angle, degrees);
  55933. y += 2.0 * floatcos(-angle, degrees);
  55934. id = AddPayphone(x, y, z, angle, GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid));
  55935. if (id == INVALID_ID)
  55936. {
  55937. return SendErrorMessage(playerid, "There are no available payphone slots.");
  55938. }
  55939. else
  55940. {
  55941. EditDynamicObjectEx(playerid, EDIT_TYPE_PAYPHONE, Payphones[id][phObject], id);
  55942. SendInfoMessage(playerid, "You have added payphone %i (/editpayphone).", id);
  55943. }
  55944. }
  55945. return 1;
  55946. }
  55947. CMD:gotopayphone(playerid, params[])
  55948. {
  55949. new id;
  55950. if (Players[playerid][pAdmin] < 5)
  55951. {
  55952. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  55953. }
  55954. else if (sscanf(params, "i", id))
  55955. {
  55956. return SendSyntaxMessage(playerid, "/gotopayphone (payphone ID)");
  55957. }
  55958. else if (!IsValidPayphoneID(id))
  55959. {
  55960. return SendErrorMessage(playerid, "You have specified an invalid payphone ID.");
  55961. }
  55962. else
  55963. {
  55964. SetPlayerPosEx(playerid, Payphones[id][phX], Payphones[id][phY], Payphones[id][phZ], Payphones[id][phA], Payphones[id][phInterior], Payphones[id][phWorld]);
  55965. SendInfoMessage(playerid, "You have teleported to payphone %i.", id);
  55966. }
  55967. return 1;
  55968. }
  55969. CMD:editpayphone(playerid, params[])
  55970. {
  55971. new id;
  55972. if (Players[playerid][pAdmin] < 5)
  55973. {
  55974. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  55975. }
  55976. else if (sscanf(params, "i", id))
  55977. {
  55978. return SendSyntaxMessage(playerid, "/editpayphone (payphone ID)");
  55979. }
  55980. else if (!IsValidPayphoneID(id))
  55981. {
  55982. return SendErrorMessage(playerid, "You have specified an invalid payphone ID.");
  55983. }
  55984. else
  55985. {
  55986. EditDynamicObjectEx(playerid, EDIT_TYPE_PAYPHONE, Payphones[id][phObject], id);
  55987. SendInfoMessage(playerid, "Click on the disk icon to save changes.");
  55988. }
  55989. return 1;
  55990. }
  55991. CMD:deletepayphone(playerid, params[])
  55992. {
  55993. new id;
  55994. if (Players[playerid][pAdmin] < 5)
  55995. {
  55996. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  55997. }
  55998. else if (sscanf(params, "i", id))
  55999. {
  56000. return SendSyntaxMessage(playerid, "/deletepayphone (payphone ID)");
  56001. }
  56002. else if (!IsValidPayphoneID(id))
  56003. {
  56004. return SendErrorMessage(playerid, "You have specified an invalid payphone ID.");
  56005. }
  56006. else
  56007. {
  56008. if (Payphones[id][phCaller] != INVALID_PLAYER_ID)
  56009. {
  56010. HangupCall(Payphones[id][phCaller]);
  56011. }
  56012. DestroyDynamic3DTextLabel(Payphones[id][phText]);
  56013. DestroyDynamicObject(Payphones[id][phObject]);
  56014. format(gExecute, sizeof(gExecute), "DELETE FROM rp_payphones WHERE `phID` = %i", Payphones[id][phID]);
  56015. mysql_tquery(gConnection, gExecute);
  56016. Payphones[id][phExists] = 0;
  56017. SendInfoMessage(playerid, "You have deleted payphone %i.", id);
  56018. }
  56019. return 1;
  56020. }
  56021. CMD:stereo(playerid, params[])
  56022. {
  56023. if (Stereos[playerid][pStereoID] == INVALID_ID)
  56024. {
  56025. return SendErrorMessage(playerid, "You need to place a stereo down first.");
  56026. }
  56027. else if (!IsPlayerNearPoint(playerid, 3.0, Stereos[playerid][pStereoX], Stereos[playerid][pStereoY], Stereos[playerid][pStereoZ], Stereos[playerid][pStereoInterior], Stereos[playerid][pStereoWorld]))
  56028. {
  56029. return SendErrorMessage(playerid, "You need to be in range of your stereo.");
  56030. }
  56031. else
  56032. {
  56033. Dialog_Show(playerid, Stereo, DIALOG_STYLE_LIST, "{FFFFFF}Stereo Settings", "Change URL\nPickup Stereo", "Select", "Cancel");
  56034. }
  56035. return 1;
  56036. }
  56037. CMD:destroystereo(playerid, params[])
  56038. {
  56039. new targetid = GetNearbyStereoPlayerID(playerid);
  56040. if (Players[playerid][pAdmin] < 3)
  56041. {
  56042. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  56043. }
  56044. else if (targetid == INVALID_PLAYER_ID)
  56045. {
  56046. return SendErrorMessage(playerid, "There is no stereo nearby.");
  56047. }
  56048. else
  56049. {
  56050. ResetStereo(targetid);
  56051. SendInfoMessage(playerid, "You have destroyed %s's stereo.", ReturnNameEx(targetid, 0));
  56052. }
  56053. return 1;
  56054. }
  56055. CMD:setstyle(playerid, params[])
  56056. {
  56057. new category, style;
  56058. if(sscanf(params, "ii", category, style))
  56059. {
  56060. SendSyntaxMessage(playerid, "/setstyle [category] [style]");
  56061. SendClientMessage(playerid, COLOR_LIGHTGREY, "1: Chat style 2: Walk style");
  56062. SendClientMessage(playerid, COLOR_LIGHTGREY, "3: Payment");
  56063. }
  56064. else
  56065. {
  56066. if (category == 1)
  56067. {
  56068. if (Players[playerid][pDonator] < DONATOR_BASIC)
  56069. {
  56070. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  56071. }
  56072. if(style < 1 || style > 8) {
  56073. return SendErrorMessage(playerid, "Style must be between 1 and 8.");
  56074. }
  56075. Players[playerid][pChatStyle] = style;
  56076. }
  56077. else if (category == 2)
  56078. {
  56079. if (Players[playerid][pDonator] < DONATOR_BASIC)
  56080. {
  56081. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  56082. }
  56083. else if (style < 1 || style > 16)
  56084. {
  56085. SendSyntaxMessage(playerid, "/setstyle [walkstyle] [1-16]");
  56086. SendClientMessage(playerid, -1, "Random: 7, 8.");
  56087. SendClientMessage(playerid, -1, "Normal: 1, 2, 6, 9, 11.");
  56088. SendClientMessage(playerid, -1, "Old/Fat: 3, 4, 5, 10.");
  56089. SendClientMessage(playerid, -1, "Woman: 12, 13, 14, 15, 16.");
  56090. return 1;
  56091. }
  56092. Players[playerid][pWalkStyle] = style;
  56093. SendInfoMessage(playerid, "You have changed your walk style. (/walk)");
  56094. }
  56095. else if (category == 3)
  56096. {
  56097. Dialog_Show(playerid, PaymentType, DIALOG_STYLE_LIST, "{FFFFFF}Set payment type", "Cash\nBank Account", "Select", "Cancel");
  56098. return 1;
  56099. }
  56100. else return cmd_setstyle(playerid, "");
  56101. }
  56102. return 1;
  56103. }
  56104. /*CMD:chatstyle(playerid, params[])
  56105. {
  56106. new type;
  56107. if (Players[playerid][pDonator] < DONATOR_BASIC)
  56108. {
  56109. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  56110. }
  56111. else if (sscanf(params, "i", type) || !(1 <= type <= 8))
  56112. {
  56113. return SendSyntaxMessage(playerid, "/chatstyle (1 to 8)");
  56114. }
  56115. else
  56116. {
  56117. Players[playerid][pChatStyle] = type;
  56118. SendInfoMessage(playerid, "You have changed your chat style.");
  56119. }
  56120. return 1;
  56121. }*/
  56122. CMD:confirm(playerid, params[])
  56123. {
  56124. new
  56125. vehicleid = Players[playerid][pAddVehicle],
  56126. vehicle,
  56127. Float:x,
  56128. Float:y,
  56129. Float:z,
  56130. Float:angle;
  56131. if (Players[playerid][pAdmin] < 5)
  56132. {
  56133. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  56134. }
  56135. else if (vehicleid == INVALID_VEHICLE_ID)
  56136. {
  56137. return SendErrorMessage(playerid, "You are not editing any vehicles.");
  56138. }
  56139. else
  56140. {
  56141. GetVehiclePos(vehicleid, x, y, z);
  56142. GetVehicleZAngle(vehicleid, angle);
  56143. if (Players[playerid][pVehicleRental]) {
  56144. vehicle = AddVehicle(Players[playerid][pVehicleCompany], GetVehicleModel(vehicleid), Players[playerid][pVehiclePrice], x, y, z, angle, VehicleInformation[vehicleid][vColor][0], VehicleInformation[vehicleid][vColor][1], .faction = Players[playerid][pVehicleFaction], .rentable = true);
  56145. } else {
  56146. vehicle = AddVehicle(Players[playerid][pVehicleCompany], GetVehicleModel(vehicleid), Players[playerid][pVehiclePrice], x, y, z, angle, VehicleInformation[vehicleid][vColor][0], VehicleInformation[vehicleid][vColor][1], .faction = Players[playerid][pVehicleFaction], .rentable = false);
  56147. }
  56148. SetFreezePos(playerid, x, y, z, 1500);
  56149. DestroyVehicleEx(Players[playerid][pAddVehicle]);
  56150. if (vehicle == INVALID_ID)
  56151. {
  56152. return SendErrorMessage(playerid, "There are no available vehicle slots.");
  56153. }
  56154. else
  56155. {
  56156. SendInfoMessage(playerid, "You have added a %s (vehicle %i).", GetVehicleModelName(Vehicles[vehicle][vModel]), Vehicles[vehicle][vVehicle]);
  56157. }
  56158. Players[playerid][pAddVehicle] = INVALID_VEHICLE_ID;
  56159. }
  56160. return 1;
  56161. }
  56162. CMD:vputseat(playerid, params[])
  56163. {
  56164. new targetid, vehicleid, seatid;
  56165. if (Players[playerid][pAdmin] < 1)
  56166. {
  56167. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  56168. }
  56169. else if (sscanf(params, "uii", targetid, vehicleid, seatid))
  56170. {
  56171. return SendSyntaxMessage(playerid, "/vputseat [playerid/name] (vehicle ID) (seat ID)");
  56172. }
  56173. else if (!IsPlayerConnected(targetid))
  56174. {
  56175. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  56176. }
  56177. else if (!IsPlayerSpawned(targetid))
  56178. {
  56179. return SendErrorMessage(playerid, "The specified target isn't spawned.");
  56180. }
  56181. else if (!IsValidVehicle(vehicleid))
  56182. {
  56183. return SendErrorMessage(playerid, "You have specified an invalid vehicle ID.");
  56184. }
  56185. else if (seatid < 0 || seatid >= GetVehicleSeats(vehicleid))
  56186. {
  56187. return SendErrorMessage(playerid, "You have specified an invalid seat ID.");
  56188. }
  56189. else
  56190. {
  56191. PutPlayerInVehicle(targetid, vehicleid, seatid);
  56192. SendInfoMessage(playerid, "You have put %s in vehicle %i into seat %i.", ReturnNameEx(targetid, 0), vehicleid, seatid);
  56193. }
  56194. return 1;
  56195. }
  56196. CMD:acceptvehicle(playerid, params[])
  56197. {
  56198. if (IsPlayerConnected(Players[playerid][pCarOffer]))
  56199. {
  56200. new vehicle = Players[playerid][pCarSell];
  56201. new price = Players[playerid][pCarPrice];
  56202. if (!IsVehicleOwner(Players[playerid][pCarOffer], vehicle))
  56203. {
  56204. return SendErrorMessage(playerid, "The vehicle offer has expired.");
  56205. }
  56206. else if (!PlayerCanAfford(playerid, price))
  56207. {
  56208. return SendErrorMessage(playerid, "You can't afford to buy the vehicle.");
  56209. }
  56210. else if (!IsPlayerInRangeOfPlayer(playerid, Players[playerid][pCarOffer]))
  56211. {
  56212. return SendErrorMessage(playerid, "You need to be near the player who offered the vehicle.");
  56213. }
  56214. else
  56215. {
  56216. Vehicles[vehicle][vOwner] = Players[playerid][pID];
  56217. SaveVehicle(vehicle);
  56218. RemoveMoney(playerid, price);
  56219. SendInfoMessage(playerid, "You have purchased %s's %s for {33CC33}%s{FFFFFF}.", ReturnNameEx(Players[playerid][pCarOffer]), GetVehicleModelName(Vehicles[vehicle][vModel]), FormatNumber(price));
  56220. SendInfoMessage(Players[playerid][pCarOffer], "%s has purchased your %s for {33CC33}%s{FFFFFF}.", ReturnNameEx(playerid), GetVehicleModelName(Vehicles[vehicle][vModel]), FormatNumber(price));
  56221. format(gExecute, sizeof(gExecute), "INSERT INTO rp_purchases (Player, Type, Price, Date) VALUES(%i, '%s (sold by %s) - #%i', %i, NOW())", Players[playerid][pID], GetVehicleModelName(Vehicles[vehicle][vModel]), ReturnName(Players[playerid][pCarOffer]), Vehicles[vehicle][vID], price);
  56222. mysql_tquery(gConnection, gExecute);
  56223. Players[Players[playerid][pCarOffer]][pPocketMoney] += price;
  56224. Players[playerid][pCarOffer] = INVALID_PLAYER_ID;
  56225. }
  56226. }
  56227. return 1;
  56228. }
  56229. CMD:vehicle(playerid, params[])
  56230. {
  56231. return cmd_v(playerid, params);
  56232. }
  56233. /*
  56234. else if (!strcmp(option, "stereo", true))
  56235. {
  56236. new vehicleid = GetPlayerVehicleID(playerid);
  56237. if (!vehicleid)
  56238. {
  56239. return SendErrorMessage(playerid, "You need to be in a vehicle.");
  56240. }
  56241. else if (!IsPoweredVehicle(vehicleid))
  56242. {
  56243. return SendErrorMessage(playerid, "This vehicle doesn't have a radio system.");
  56244. }
  56245. else if (isnull(value))
  56246. {
  56247. return SendSyntaxMessage(playerid, "/(v)ehicle (stereo) (stream URL) - Use 'none' to reset.");
  56248. }
  56249. else
  56250. {
  56251. if (!strcmp(value, "none", true))
  56252. {
  56253. ResetVehicleStream(vehicleid);
  56254. SendInfoMessage(playerid, "You have reset the playing stream.");
  56255. ShowActionBubble(playerid, "* %s presses a button to turn off the radio.", ReturnNameEx(playerid));
  56256. }
  56257. else
  56258. {
  56259. foreach (new i : Player)
  56260. {
  56261. if (IsPlayerInVehicle(i, vehicleid))
  56262. {
  56263. Players[i][pVehicleStream] = vehicleid;
  56264. PlayAudioStreamForPlayer(i, value);
  56265. }
  56266. }
  56267. strpack(VehicleInformation[vehicleid][vStream], value, 128 char);
  56268. SendInfoMessage(playerid, "You have changed the stream that this vehicle will play.");
  56269. ShowActionBubble(playerid, "* %s presses a button to turn on the radio.", ReturnNameEx(playerid));
  56270. }
  56271. }
  56272. }
  56273. */
  56274. CMD:setstation(playerid, params[])
  56275. {
  56276. new vehicleid = GetPlayerVehicleID(playerid);
  56277. if (!vehicleid) return SCM(playerid, COLOR_LIGHTRED, "You need to be in a vehicle.");
  56278. if (!IsPoweredVehicle(vehicleid)) return SCM(playerid, COLOR_LIGHTRED, "This vehicle has no XM-Radio.");
  56279. ShowBoomBoxStations(playerid);
  56280. return 1;
  56281. }
  56282. /*
  56283. if (GetClosestShell(playerid) != INVALID_ID) ShellCheck(playerid);
  56284. else if (GetClosestDropItem(playerid) != INVALID_ID) PickupNearestItem(playerid);
  56285. //else if (GetClosestBlood(playerid) != INVALID_ID) BloodCheck(playerid);
  56286. else if (IsPlayerNearSwitch(playerid)) LightSwitch(playerid);
  56287. else if (IsPlayerInRangeOfLocker(playerid)) ShowLockerMenu(playerid);
  56288. else if (GetClosestFurniture(playerid, 2.0, 2332) != INVALID_ID) SafeCheck(playerid);
  56289. else if (GetClosestFridge(playerid, 2.0) != INVALID_ID) FridgeCheck(playerid);
  56290. else if (GetClosestATM(playerid) != INVALID_ID) ATMCheck(playerid);
  56291. else if (GetClosestTrashbin(playerid) != INVALID_ID) TrashbinCheck(playerid);
  56292. else if (IsPlayerNearGymEquipment(playerid)) GymCheck(playerid);
  56293. */
  56294. CMD:v(playerid, params[])
  56295. {
  56296. new option[10], value[128];
  56297. if (sscanf(params, "s[10]S()[128]", option, value))
  56298. {
  56299. SendSyntaxMessage(playerid, "/(v)ehicle (option)");
  56300. SendClientMessage(playerid, COLOR_LIGHTGREY, "Options: lock, trunk, park, sell, track, list, unmod, abandon");
  56301. SendClientMessage(playerid, COLOR_LIGHTGREY, "Options: lights, alarm, plate, despawn, spawn, duplicate");
  56302. }
  56303. else if(IsPlayerInModdingShop(playerid))
  56304. {
  56305. return SendErrorMessage(playerid, "You can't use this command while in a modding shop.");
  56306. }
  56307. else
  56308. {
  56309. if(!strcmp(option, "lights", true))
  56310. {
  56311. new
  56312. vehicle = GetPlayerVehicleID(playerid);
  56313. if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
  56314. {
  56315. return SendErrorMessage(playerid, "You are not driving any vehicle.");
  56316. }
  56317. else if (!IsPoweredVehicle(vehicle))
  56318. {
  56319. return SendErrorMessage(playerid, "This vehicle doesn't have lights.");
  56320. }
  56321. else
  56322. {
  56323. if (GetLightsStatus(vehicle))
  56324. {
  56325. SetLightsStatus(vehicle, false);
  56326. SendInfoMessage(playerid, "You have turned off the vehicle's lights.");
  56327. }
  56328. else
  56329. {
  56330. SetLightsStatus(vehicle, true);
  56331. SendInfoMessage(playerid, "You have turned on the vehicle's lights.");
  56332. }
  56333. }
  56334. }
  56335. else if (!strcmp(option, "lock", true))
  56336. {
  56337. new vehicle = GetVehicleID(GetClosestVehicle(playerid));
  56338. if (!IsValidVehicleID(vehicle))
  56339. {
  56340. return SendErrorMessage(playerid, "There is no vehicle nearby.");
  56341. }
  56342. else if (!GetVehicleKeys(playerid, Vehicles[vehicle][vVehicle]))
  56343. {
  56344. return SendErrorMessage(playerid, "You don't have any keys for this vehicle.");
  56345. }
  56346. else
  56347. {
  56348. switch (Vehicles[vehicle][vLocked])
  56349. {
  56350. case 0:
  56351. {
  56352. Vehicles[vehicle][vLocked] = 1;
  56353. ShowActionBubble(playerid, "* %s uses their key to lock the vehicle.", ReturnNameEx(playerid));
  56354. ShowFooterText(playerid, "You have ~r~locked~w~ this vehicle.");
  56355. }
  56356. case 1:
  56357. {
  56358. Vehicles[vehicle][vLocked] = 0;
  56359. ShowActionBubble(playerid, "* %s uses their key to unlock the vehicle.", ReturnNameEx(playerid));
  56360. ShowFooterText(playerid, "You have ~g~unlocked~w~ this vehicle.");
  56361. }
  56362. }
  56363. if (!Vehicles[vehicle][vRentable])
  56364. {
  56365. SaveVehicle(vehicle);
  56366. }
  56367. SetLockStatus(Vehicles[vehicle][vVehicle], Vehicles[vehicle][vLocked]);
  56368. PlayNearbySound(playerid, 1145);
  56369. }
  56370. }
  56371. else if (!strcmp(option, "trunk", true))
  56372. {
  56373. new vehicle = GetVehicleID(GetClosestVehicle(playerid));
  56374. if (!IsValidVehicleID(vehicle))
  56375. {
  56376. return SendErrorMessage(playerid, "There is no trunk nearby.");
  56377. }
  56378. else if (!GetBootStatus(GetClosestVehicle(playerid)) && !IsPlayerInVehicle(playerid, GetClosestVehicle(playerid)))
  56379. {
  56380. return SendErrorMessage(playerid, "The trunk is not open.");
  56381. }
  56382. /*else if (Vehicles[vehicle][vLocked])
  56383. {
  56384. return SendErrorMessage(playerid, "The trunk is locked.");
  56385. }*/
  56386. else if (!GetTrunkCapacity(vehicle))
  56387. {
  56388. return SendErrorMessage(playerid, "This vehicle doesn't have a trunk.");
  56389. }
  56390. else if (Vehicles[vehicle][vFaction] != 0 && GetFactionID(Vehicles[vehicle][vFaction]) != Players[playerid][pFaction])
  56391. {
  56392. return SendErrorMessage(playerid, "The trunk is locked.");
  56393. }
  56394. else
  56395. {
  56396. ShowTrunkMenu(playerid, vehicle);
  56397. ShowActionBubble(playerid, "* %s opens the trunk and looks inside.", ReturnNameEx(playerid));
  56398. }
  56399. }
  56400. else if (!strcmp(option, "park", true))
  56401. {
  56402. new vehicle = GetVehicleID(GetPlayerVehicleID(playerid));
  56403. if (!IsValidVehicleID(vehicle))
  56404. {
  56405. return SendErrorMessage(playerid, "You are not in any vehicle that you own.");
  56406. }
  56407. else if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
  56408. {
  56409. return SendErrorMessage(playerid, "You are not in the driver seat.");
  56410. }
  56411. else if ((gettime() - Players[playerid][pParkTime]) < PARK_WAIT_TIME)
  56412. {
  56413. return SendErrorMessage(playerid, "You must wait %i seconds before parking again.", (PARK_WAIT_TIME - (gettime() - Players[playerid][pParkTime])));
  56414. }
  56415. else if (Players[playerid][pAutoShop] != INVALID_ID)
  56416. {
  56417. return SendErrorMessage(playerid, "You cannot park your vehicle in here.");
  56418. }
  56419. else if (Players[playerid][pAdminDuty])
  56420. {
  56421. new Float:health, damage[4], fuel = VehicleInformation[Vehicles[vehicle][vVehicle]][vFuel];
  56422. GetVehicleHealth(Vehicles[vehicle][vVehicle], health);
  56423. GetVehicleDamageStatus(Vehicles[vehicle][vVehicle], damage[0], damage[1], damage[2], damage[3]);
  56424. foreach (new i : Player)
  56425. {
  56426. if (IsPlayerInVehicle(i, Vehicles[vehicle][vVehicle]))
  56427. {
  56428. gSeatData[i] = GetPlayerVehicleSeat(i);
  56429. }
  56430. }
  56431. ClearVehicleObjects(Vehicles[vehicle][vVehicle]);
  56432. GetVehiclePos(Vehicles[vehicle][vVehicle], Vehicles[vehicle][vSpawn][0], Vehicles[vehicle][vSpawn][1], Vehicles[vehicle][vSpawn][2]);
  56433. GetVehicleZAngle(Vehicles[vehicle][vVehicle], Vehicles[vehicle][vSpawn][3]);
  56434. UpdateVehicle(vehicle);
  56435. SaveVehicle(vehicle);
  56436. SetVehicleHealth(Vehicles[vehicle][vVehicle], health);
  56437. UpdateVehicleDamageStatus(Vehicles[vehicle][vVehicle], damage[0], damage[1], damage[2], damage[3]);
  56438. VehicleInformation[Vehicles[vehicle][vVehicle]][vFuel] = fuel;
  56439. Players[playerid][pParkTime] = gettime();
  56440. SendInfoMessage(playerid, "You have parked the vehicle at this spot.");
  56441. foreach (new i : Player)
  56442. {
  56443. if (gSeatData[i] >= 0)
  56444. {
  56445. PutPlayerInVehicle(i, Vehicles[vehicle][vVehicle], gSeatData[i]);
  56446. gSeatData[i] = INVALID_ID;
  56447. }
  56448. }
  56449. return 1;
  56450. }
  56451. else if (!IsVehicleOwner(playerid, vehicle) && !PlayerHasKeys(playerid, vehicle))
  56452. {
  56453. return SendErrorMessage(playerid, "You don't have the keys to this vehicle.");
  56454. }
  56455. else
  56456. {
  56457. new Float:health, damage[4], fuel = VehicleInformation[Vehicles[vehicle][vVehicle]][vFuel];
  56458. GetVehicleHealth(Vehicles[vehicle][vVehicle], health);
  56459. GetVehicleDamageStatus(Vehicles[vehicle][vVehicle], damage[0], damage[1], damage[2], damage[3]);
  56460. foreach (new i : Player)
  56461. {
  56462. if (IsPlayerInVehicle(i, Vehicles[vehicle][vVehicle]))
  56463. {
  56464. gSeatData[i] = GetPlayerVehicleSeat(i);
  56465. }
  56466. }
  56467. ClearVehicleObjects(Vehicles[vehicle][vVehicle]);
  56468. GetVehiclePos(Vehicles[vehicle][vVehicle], Vehicles[vehicle][vSpawn][0], Vehicles[vehicle][vSpawn][1], Vehicles[vehicle][vSpawn][2]);
  56469. GetVehicleZAngle(Vehicles[vehicle][vVehicle], Vehicles[vehicle][vSpawn][3]);
  56470. UpdateVehicle(vehicle);
  56471. SaveVehicle(vehicle);
  56472. SetVehicleHealth(Vehicles[vehicle][vVehicle], health);
  56473. UpdateVehicleDamageStatus(Vehicles[vehicle][vVehicle], damage[0], damage[1], damage[2], damage[3]);
  56474. VehicleInformation[Vehicles[vehicle][vVehicle]][vFuel] = fuel;
  56475. Players[playerid][pParkTime] = gettime();
  56476. SendInfoMessage(playerid, "You have parked your vehicle at this spot.");
  56477. foreach (new i : Player)
  56478. {
  56479. if (gSeatData[i] >= 0)
  56480. {
  56481. PutPlayerInVehicle(i, Vehicles[vehicle][vVehicle], gSeatData[i]);
  56482. gSeatData[i] = INVALID_ID;
  56483. }
  56484. }
  56485. }
  56486. }
  56487. else if (!strcmp(option, "sell", true))
  56488. {
  56489. new vehicle = GetVehicleID(GetPlayerVehicleID(playerid)), targetid, price;
  56490. if (!IsValidVehicleID(vehicle))
  56491. {
  56492. return SendErrorMessage(playerid, "You are not in any vehicle that you own.");
  56493. }
  56494. else if (!IsVehicleOwner(playerid, vehicle))
  56495. {
  56496. return SendErrorMessage(playerid, "You don't own this vehicle.");
  56497. }
  56498. else if (sscanf(value, "ui", targetid, price))
  56499. {
  56500. return SendSyntaxMessage(playerid, "/(v)ehicle (sell) (player) (price)");
  56501. }
  56502. else if (!IsPlayerConnected(targetid))
  56503. {
  56504. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  56505. }
  56506. else if (IsPlayerNPC(targetid))
  56507. {
  56508. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  56509. }
  56510. else if (targetid == playerid)
  56511. {
  56512. return SendErrorMessage(playerid, "You can't use this command on yourself.");
  56513. }
  56514. else if (!IsPlayerInRangeOfPlayer(playerid, targetid))
  56515. {
  56516. return SendErrorMessage(playerid, "The specified target is not near you.");
  56517. }
  56518. else if (price < 1)
  56519. {
  56520. return SendErrorMessage(playerid, "The price can't be below $1.");
  56521. }
  56522. else
  56523. {
  56524. Players[targetid][pCarOffer] = playerid;
  56525. Players[targetid][pCarPrice] = price;
  56526. Players[targetid][pCarSell] = vehicle;
  56527. SendInfoMessage(playerid, "You have offered %s to buy your %s for %s.", ReturnNameEx(targetid), GetVehicleModelName(Vehicles[vehicle][vModel]), FormatNumber(price));
  56528. SendInfoMessage(targetid, "%s wants to sell you their %s for {33CC33}%s{FFFFFF} - use /acceptvehicle to accept.", ReturnNameEx(playerid), GetVehicleModelName(Vehicles[vehicle][vModel]), FormatNumber(price));
  56529. }
  56530. }
  56531. else if (!strcmp(option, "track", true))
  56532. {
  56533. new success = ShowVehicleTrackList(playerid);
  56534. if (!success)
  56535. {
  56536. SendErrorMessage(playerid, "You don't own any vehicles you can track.");
  56537. }
  56538. }
  56539. else if (!strcmp(option, "list", true))
  56540. {
  56541. SendClientMessage(playerid, COLOR_DARKGREEN, "[_______________Your Vehicles_______________]");
  56542. for (new i = 0; i < MAX_CARS; i ++)
  56543. {
  56544. if (IsValidVehicleID(i) && IsVehicleOwner(playerid, i))
  56545. {
  56546. if (Vehicles[i][vImpound])
  56547. {
  56548. SendFormatMessage(playerid, COLOR_WHITE, "- %s - %s (Impounded)", GetVehicleModelName(Vehicles[i][vModel]), Vehicles[i][vPlate]);
  56549. }
  56550. else if (Vehicles[i][vDespawned])
  56551. {
  56552. SendFormatMessage(playerid, COLOR_WHITE, "- %s - %s (Despawned)", GetVehicleModelName(Vehicles[i][vModel]), Vehicles[i][vPlate]);
  56553. }
  56554. else
  56555. {
  56556. SendFormatMessage(playerid, COLOR_WHITE, "- %s - %s (ID: %i)", GetVehicleModelName(Vehicles[i][vModel]), Vehicles[i][vPlate], Vehicles[i][vVehicle]);
  56557. }
  56558. }
  56559. }
  56560. SendClientMessage(playerid, COLOR_DARKGREEN, "[___________________________________________]");
  56561. }
  56562. else if (!strcmp(option, "unmod", true))
  56563. {
  56564. new vehicle = GetVehicleID(GetPlayerVehicleID(playerid));
  56565. if (!IsValidVehicleID(vehicle))
  56566. {
  56567. return SendErrorMessage(playerid, "You are not in any vehicle that you own.");
  56568. }
  56569. else if (!IsVehicleOwner(playerid, vehicle) && !PlayerHasKeys(playerid, vehicle))
  56570. {
  56571. return SendErrorMessage(playerid, "You don't have the keys to this vehicle.");
  56572. }
  56573. else if (GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
  56574. {
  56575. return SendErrorMessage(playerid, "You are not in the driver seat.");
  56576. }
  56577. else
  56578. {
  56579. new index, string[512];
  56580. for (new i = 0; i < 14; i ++)
  56581. {
  56582. if (Vehicles[vehicle][vMods][i] > 0)
  56583. {
  56584. format(string, sizeof(string), "%s\n%s", string, GetVehicleComponentName(Vehicles[vehicle][vMods][i]));
  56585. gListedItems[playerid][index++] = i;
  56586. }
  56587. }
  56588. strcat(string, "\nReset Color\nReset Paintjob");
  56589. Dialog_Show(playerid, RemoveMod, DIALOG_STYLE_LIST, "{FFFFFF}Select Option", string, "Remove", "Cancel");
  56590. }
  56591. }
  56592. else if (!strcmp(option, "abandon", true))
  56593. {
  56594. new vehicle = GetVehicleID(GetPlayerVehicleID(playerid));
  56595. if (!IsValidVehicleID(vehicle))
  56596. {
  56597. return SendErrorMessage(playerid, "You are not in any vehicle that you own.");
  56598. }
  56599. else if (!IsVehicleOwner(playerid, vehicle))
  56600. {
  56601. return SendErrorMessage(playerid, "You don't own this vehicle.");
  56602. }
  56603. else if (isnull(value) || strcmp(value, "confirm", true) != 0)
  56604. {
  56605. SendSyntaxMessage(playerid, "/(v)ehicle (abandon) (confirm)");
  56606. SendClientMessage(playerid, COLOR_LIGHTGREY, "Note: This will permanently remove your vehicle from the server.");
  56607. }
  56608. else
  56609. {
  56610. DeleteVehicle(vehicle);
  56611. SendInfoMessage(playerid, "You have abandoned this vehicle. It has been destroyed from the server.");
  56612. }
  56613. }
  56614. else if (!strcmp(option, "alarm", true))
  56615. {
  56616. new vehicle = GetVehicleID(GetPlayerVehicleID(playerid));
  56617. if (!IsValidVehicleID(vehicle))
  56618. {
  56619. return SendErrorMessage(playerid, "You are not in any vehicle that you own.");
  56620. }
  56621. else if (!IsVehicleOwner(playerid, vehicle))
  56622. {
  56623. return SendErrorMessage(playerid, "You don't own this vehicle.");
  56624. }
  56625. else if (Vehicles[vehicle][vAlarm])
  56626. {
  56627. return SendErrorMessage(playerid, "Your vehicle already has an alarm installed.");
  56628. }
  56629. else if (isnull(value) || strcmp(value, "confirm", true) != 0)
  56630. {
  56631. SendSyntaxMessage(playerid, "/(v)ehicle (alarm) (confirm)");
  56632. SendClientMessage(playerid, COLOR_LIGHTGREY, "Note: Installing an alarm will cost you $4500.");
  56633. }
  56634. else if (!PlayerCanAfford(playerid, 4500))
  56635. {
  56636. return SendErrorMessage(playerid, "You can't afford the installation fee.");
  56637. }
  56638. else
  56639. {
  56640. RemoveMoney(playerid, 4500);
  56641. SendInfoMessage(playerid, "You have purchased an alarm for {33CC33}$4500{FFFFFF}. You will receive an notification upon break in.");
  56642. Vehicles[vehicle][vAlarm] = 1;
  56643. SaveVehicle(vehicle);
  56644. }
  56645. }
  56646. else if (!strcmp(option, "plate", true))
  56647. {
  56648. new vehicle = GetVehicleID(GetPlayerVehicleID(playerid));
  56649. if (Players[playerid][pDonator] < DONATOR_STANDARD)
  56650. {
  56651. return SendErrorMessage(playerid, "You are not a donator.");
  56652. }
  56653. if (!IsValidVehicleID(vehicle))
  56654. {
  56655. return SendErrorMessage(playerid, "You are not in any vehicle that you own.");
  56656. }
  56657. else if (!IsVehicleOwner(playerid, vehicle))
  56658. {
  56659. return SendErrorMessage(playerid, "You don't own this vehicle.");
  56660. }
  56661. else if (isnull(value))
  56662. {
  56663. SendSyntaxMessage(playerid, "/(v)ehicle (plate) (text)");
  56664. SendClientMessage(playerid, COLOR_LIGHTGREY, "Note: Changing the license plate will cost you $400.");
  56665. }
  56666. else if (strlen(value) > 12)
  56667. {
  56668. return SendErrorMessage(playerid, "The specified text cannot be above 12 characters.");
  56669. }
  56670. else if (!PlayerCanAfford(playerid, 400))
  56671. {
  56672. return SendErrorMessage(playerid, "You can't afford the installation fee.");
  56673. }
  56674. else
  56675. {
  56676. format(gExecute, sizeof(gExecute), "SELECT vID FROM rp_vehicles WHERE vPlate = '%s'", mysql_escaped(value));
  56677. mysql_tquery(gConnection, gExecute, "OnPlayerCheckPlate", "is", playerid, value);
  56678. }
  56679. }
  56680. else if (!strcmp(option, "despawn", true))
  56681. {
  56682. new success = ShowSpawnedVehicleList(playerid);
  56683. if (!success)
  56684. {
  56685. SendErrorMessage(playerid, "You don't own any vehicles that are spawned.");
  56686. }
  56687. }
  56688. else if (!strcmp(option, "spawn", true))
  56689. {
  56690. new success = ShowDespawnedVehicleList(playerid);
  56691. if (!success)
  56692. {
  56693. SendErrorMessage(playerid, "You don't own any vehicles that are despawned.");
  56694. }
  56695. }
  56696. /*else if (!strcmp(option, "stereo", true))
  56697. {
  56698. new vehicleid = GetPlayerVehicleID(playerid);
  56699. if (!vehicleid)
  56700. {
  56701. return SendErrorMessage(playerid, "You need to be in a vehicle.");
  56702. }
  56703. else if (!IsPoweredVehicle(vehicleid))
  56704. {
  56705. return SendErrorMessage(playerid, "This vehicle doesn't have a radio system.");
  56706. }
  56707. else if (isnull(value))
  56708. {
  56709. return SendSyntaxMessage(playerid, "/(v)ehicle (stereo) (stream URL) - Use 'none' to reset.");
  56710. }
  56711. else
  56712. {
  56713. if (!strcmp(value, "none", true))
  56714. {
  56715. ResetVehicleStream(vehicleid);
  56716. SendInfoMessage(playerid, "You have reset the playing stream.");
  56717. ShowActionBubble(playerid, "* %s presses a button to turn off the radio.", ReturnNameEx(playerid));
  56718. }
  56719. else
  56720. {
  56721. foreach (new i : Player)
  56722. {
  56723. if (IsPlayerInVehicle(i, vehicleid))
  56724. {
  56725. Players[i][pVehicleStream] = vehicleid;
  56726. PlayAudioStreamForPlayer(i, value);
  56727. }
  56728. }
  56729. strpack(VehicleInformation[vehicleid][vStream], value, 128 char);
  56730. SendInfoMessage(playerid, "You have changed the stream that this vehicle will play.");
  56731. ShowActionBubble(playerid, "* %s presses a button to turn on the radio.", ReturnNameEx(playerid));
  56732. }
  56733. }
  56734. }*/
  56735. else if (!strcmp(option, "duplicate", true))
  56736. {
  56737. new targetid, param[8], vehicle = GetVehicleID(GetPlayerVehicleID(playerid));
  56738. if (!IsValidVehicleID(vehicle))
  56739. {
  56740. return SendErrorMessage(playerid, "You are not in any vehicle that you own.");
  56741. }
  56742. else if (!IsVehicleOwner(playerid, vehicle))
  56743. {
  56744. return SendErrorMessage(playerid, "You don't own this vehicle.");
  56745. }
  56746. else if (sscanf(value, "s[8]u", param, targetid))
  56747. {
  56748. return SendSyntaxMessage(playerid, "/(v)ehicle (duplicate) (give/take) [playerid/name]");
  56749. }
  56750. else if (!IsPlayerConnected(targetid))
  56751. {
  56752. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  56753. }
  56754. else if (!IsPlayerLoggedIn(targetid))
  56755. {
  56756. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  56757. }
  56758. else if (targetid == playerid)
  56759. {
  56760. return SendErrorMessage(playerid, "You can't use this command on yourself.");
  56761. }
  56762. else
  56763. {
  56764. if (!strcmp(param, "give", true))
  56765. {
  56766. if (!IsSufficientSpace(targetid, "Car Key"))
  56767. {
  56768. return SendErrorMessage(playerid, "That player has no more room in their inventory.");
  56769. }
  56770. else if (PlayerHasKeys(targetid, vehicle))
  56771. {
  56772. return SendErrorMessage(playerid, "That player already has keys for this vehicle.");
  56773. }
  56774. else
  56775. {
  56776. AddItemToInventory(targetid, "Car Key", Vehicles[vehicle][vID]);
  56777. ShowActionBubble(playerid, "* %s passes %s a duplicate key.", ReturnNameEx(playerid), ReturnNameEx(targetid));
  56778. SendInfoMessage(playerid, "You have made %s a duplicate key for this %s.", ReturnNameEx(targetid), GetVehicleModelName(Vehicles[vehicle][vModel]));
  56779. SendInfoMessage(targetid, "%s has given you a key for their %s.", ReturnNameEx(playerid), GetVehicleModelName(Vehicles[vehicle][vModel]));
  56780. }
  56781. }
  56782. else if (!strcmp(param, "take", true))
  56783. {
  56784. new item = GetInventoryItemID(targetid, "Car Key", Vehicles[vehicle][vID]);
  56785. if (item == INVALID_ID)
  56786. {
  56787. return SendErrorMessage(playerid, "That player doesn't have keys for this vehicle.");
  56788. }
  56789. else
  56790. {
  56791. RemoveItemFromInventory(targetid, item);
  56792. ShowActionBubble(playerid, "* %s takes their duplicate keys from %s.", ReturnNameEx(playerid), ReturnNameEx(targetid));
  56793. SendInfoMessage(playerid, "You have taken %s's duplicate key for your %s.", ReturnNameEx(targetid), GetVehicleModelName(Vehicles[vehicle][vModel]));
  56794. SendInfoMessage(targetid, "%s has taken away your key for their %s.", ReturnNameEx(playerid), GetVehicleModelName(Vehicles[vehicle][vModel]));
  56795. }
  56796. }
  56797. }
  56798. }
  56799. }
  56800. return 1;
  56801. }
  56802. CMD:set(playerid, params[])
  56803. {
  56804. new house = Players[playerid][pConfirmBackdoor];
  56805. if (!IsValidHouseID(house) || !IsHouseOwner(playerid, house))
  56806. {
  56807. Players[playerid][pConfirmBackdoor] = INVALID_ID;
  56808. return 1;
  56809. }
  56810. if (Players[playerid][pBackdoorType] == 1)
  56811. {
  56812. if (!IsPlayerNearPoint(playerid, 30.0, Houses[house][hSpawn][0], Houses[house][hSpawn][1], Houses[house][hSpawn][2], Houses[house][hExterior], Houses[house][hExteriorWorld]))
  56813. {
  56814. return SendErrorMessage(playerid, "You need to be in at least 30 meters of the main entrance.");
  56815. }
  56816. else if (GetClosestHouse(playerid) == house)
  56817. {
  56818. return SendErrorMessage(playerid, "You need to be away from the main entrance.");
  56819. }
  56820. else if (GetClosestHouse(playerid) != INVALID_ID)
  56821. {
  56822. return SendErrorMessage(playerid, "You can't place the entrance here.");
  56823. }
  56824. else
  56825. {
  56826. GetPlayerPos(playerid, Houses[house][hBackdoor][0], Houses[house][hBackdoor][1], Houses[house][hBackdoor][2]);
  56827. UpdateHouse(house);
  56828. SaveHouse(house);
  56829. SendInfoMessage(playerid, "You have adjusted the entrance point for your backdoor.");
  56830. }
  56831. }
  56832. else if (Players[playerid][pBackdoorType] == 2)
  56833. {
  56834. if (GetCurrentHouse(playerid) != house)
  56835. {
  56836. return SendErrorMessage(playerid, "You need to be inside your house to set the exit.");
  56837. }
  56838. else
  56839. {
  56840. GetPlayerPos(playerid, Houses[house][hBackdoorInt][0], Houses[house][hBackdoorInt][1], Houses[house][hBackdoorInt][2]);
  56841. UpdateHouse(house);
  56842. SaveHouse(house);
  56843. SendInfoMessage(playerid, "You have adjusted the exit point for your backdoor.");
  56844. }
  56845. }
  56846. Players[playerid][pConfirmBackdoor] = INVALID_ID;
  56847. Players[playerid][pBackdoorType] = 0;
  56848. return 1;
  56849. }
  56850. CMD:getip(playerid, params[])
  56851. {
  56852. new targetid;
  56853. if (Players[playerid][pAdmin] < 4)
  56854. {
  56855. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  56856. }
  56857. else if (sscanf(params, "u", targetid))
  56858. {
  56859. return SendSyntaxMessage(playerid, "/getip [playerid/name]");
  56860. }
  56861. else if (!IsPlayerConnected(targetid))
  56862. {
  56863. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  56864. }
  56865. else
  56866. {
  56867. SendInfoMessage(playerid, "%s's IP address is: %s.", ReturnNameEx(targetid, 0), ReturnIP(targetid));
  56868. }
  56869. return 1;
  56870. }
  56871. CMD:aliases(playerid, params[])
  56872. {
  56873. new ip[16];
  56874. if (Players[playerid][pAdmin] < 2)
  56875. {
  56876. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  56877. }
  56878. else if (sscanf(params, "s[16]", ip))
  56879. {
  56880. return SendSyntaxMessage(playerid, "/aliases (IP address)");
  56881. }
  56882. else if (!IsValidIP(ip))
  56883. {
  56884. return SendErrorMessage(playerid, "You have specified an invalid IP format.");
  56885. }
  56886. else
  56887. {
  56888. format(gExecute, sizeof(gExecute), "SELECT Username, LoginDate FROM rp_accounts WHERE IP = '%s'", mysql_escaped(ip));
  56889. mysql_tquery(gConnection, gExecute, "OnPlayerListAliases", "is", playerid, ip);
  56890. }
  56891. return 1;
  56892. }
  56893. CMD:getgpci(playerid, params[])
  56894. {
  56895. new targetid;
  56896. if (Players[playerid][pAdmin] < 3)
  56897. {
  56898. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  56899. }
  56900. else if (sscanf(params, "u", targetid))
  56901. {
  56902. return SendSyntaxMessage(playerid, "/getgpci [playerid/name]");
  56903. }
  56904. else if (!IsPlayerConnected(targetid))
  56905. {
  56906. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  56907. }
  56908. else
  56909. {
  56910. //SendInfoMessage(playerid, "%s's GPCI is: %s", ReturnNameEx(targetid, 0), ReturnGPCI(targetid));
  56911. format(gExecute, sizeof(gExecute), "SELECT Username, LoginDate FROM rp_accounts WHERE GPCI = '%s'", mysql_escaped(Players[targetid][pGPCI]));
  56912. mysql_tquery(gConnection, gExecute, "OnPlayerListGPCI", "is", playerid, ReturnGPCI(targetid));
  56913. }
  56914. return 1;
  56915. }
  56916. CMD:addnos(playerid, params[])
  56917. {
  56918. new vehicleid = GetPlayerVehicleID(playerid);
  56919. if (Players[playerid][pAdmin] < 3)
  56920. {
  56921. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  56922. }
  56923. else if (!IsValidNOSVehicle(vehicleid))
  56924. {
  56925. return SendErrorMessage(playerid, "You need to be in a NOS compatible vehicle.");
  56926. }
  56927. else
  56928. {
  56929. new vehicle = GetVehicleID(vehicleid);
  56930. AddVehicleComponent(vehicleid, 1010);
  56931. if (vehicle != INVALID_ID)
  56932. {
  56933. Vehicles[vehicle][vMods][5] = 1010;
  56934. SaveVehicle(vehicle);
  56935. }
  56936. SendInfoMessage(playerid, "You have added 10x Nitrous to this vehicle.");
  56937. }
  56938. return 1;
  56939. }
  56940. CMD:shakehand(playerid, params[])
  56941. {
  56942. new targetid, type;
  56943. if (sscanf(params, "ui", targetid, type))
  56944. {
  56945. return SendSyntaxMessage(playerid, "/shakehand [playerid/name] [1-7]");
  56946. }
  56947. else if (!IsPlayerConnected(targetid))
  56948. {
  56949. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  56950. }
  56951. else if (IsPlayerNPC(targetid))
  56952. {
  56953. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  56954. }
  56955. else if (targetid == playerid)
  56956. {
  56957. return SendErrorMessage(playerid, "You can't shake your own hand.");
  56958. }
  56959. else if (!IsPlayerInRangeOfPlayer(playerid, targetid))
  56960. {
  56961. return SendErrorMessage(playerid, "The specified target is not near you.");
  56962. }
  56963. else if (!(1 <= type <= 7))
  56964. {
  56965. return SendErrorMessage(playerid, "You have specified an invalid type.");
  56966. }
  56967. else
  56968. {
  56969. Players[targetid][pShakeOffer] = playerid;
  56970. Players[targetid][pShakeType] = type;
  56971. SendInfoMessage(targetid, "%s has offered to shake your hand - use /acceptgreet to accept.", ReturnNameEx(playerid));
  56972. SendInfoMessage(playerid, "You have offered %s to shake your hand.", ReturnNameEx(targetid));
  56973. }
  56974. return 1;
  56975. }
  56976. CMD:acceptgreet(playerid, params[])
  56977. {
  56978. if (IsPlayerConnected(Players[playerid][pShakeOffer]))
  56979. {
  56980. switch (Players[playerid][pShakeType])
  56981. {
  56982. case 1:
  56983. {
  56984. ApplyAnimation(playerid, "GANGS", "hndshkaa", 4.1, 0, 0, 0, 0, 0, 1);
  56985. ApplyAnimation(Players[playerid][pShakeOffer], "GANGS", "hndshkaa", 4.1, 0, 0, 0, 0, 0, 1);
  56986. }
  56987. case 2:
  56988. {
  56989. ApplyAnimation(playerid, "GANGS", "hndshkba", 4.1, 0, 0, 0, 0, 0, 1);
  56990. ApplyAnimation(Players[playerid][pShakeOffer], "GANGS", "hndshkba", 4.1, 0, 0, 0, 0, 0, 1);
  56991. }
  56992. case 3:
  56993. {
  56994. ApplyAnimation(playerid, "GANGS", "hndshkda", 4.1, 0, 0, 0, 0, 0, 1);
  56995. ApplyAnimation(Players[playerid][pShakeOffer], "GANGS", "hndshkda", 4.1, 0, 0, 0, 0, 0, 1);
  56996. }
  56997. case 4:
  56998. {
  56999. ApplyAnimation(playerid, "GANGS", "hndshkea", 4.1, 0, 0, 0, 0, 0, 1);
  57000. ApplyAnimation(Players[playerid][pShakeOffer], "GANGS", "hndshkea", 4.1, 0, 0, 0, 0, 0, 1);
  57001. }
  57002. case 5:
  57003. {
  57004. ApplyAnimation(playerid, "GANGS", "hndshkfa", 4.1, 0, 0, 0, 0, 0, 1);
  57005. ApplyAnimation(Players[playerid][pShakeOffer], "GANGS", "hndshkfa", 4.1, 0, 0, 0, 0, 0, 1);
  57006. }
  57007. case 6:
  57008. {
  57009. ApplyAnimation(playerid, "GANGS", "prtial_hndshk_biz_01", 4.1, 0, 0, 0, 0, 0, 1);
  57010. ApplyAnimation(Players[playerid][pShakeOffer], "GANGS", "prtial_hndshk_biz_01", 4.1, 0, 0, 0, 0, 0, 1);
  57011. }
  57012. case 7:
  57013. {
  57014. ApplyAnimation(playerid, "KISSING", "Playa_Kiss_02", 4.1, 0, 0, 0, 0, 0, 1);
  57015. ApplyAnimation(Players[playerid][pShakeOffer], "KISSING", "Playa_Kiss_02", 4.1, 0, 0, 0, 0, 0, 1);
  57016. /*
  57017. case 1: PlayAnimation(playerid, "KISSING", "Grlfrd_Kiss_01", 4.1, 0, 0, 0, 0, 0, 1);
  57018. case 2: PlayAnimation(playerid, "KISSING", "Grlfrd_Kiss_02", 4.1, 0, 0, 0, 0, 0, 1);
  57019. case 3: PlayAnimation(playerid, "KISSING", "Grlfrd_Kiss_03", 4.1, 0, 0, 0, 0, 0, 1);
  57020. case 4: PlayAnimation(playerid, "KISSING", "Playa_Kiss_01", 4.1, 0, 0, 0, 0, 0, 1);
  57021. case 5: PlayAnimation(playerid, "KISSING", "Playa_Kiss_02", 4.1, 0, 0, 0, 0, 0, 1);
  57022. case 6: PlayAnimation(playerid, "KISSING", "Playa_Kiss_03", 4.1, 0, 0, 0, 0, 0, 1);
  57023. */
  57024. }
  57025. }
  57026. SetPlayerToFacePlayer(playerid, Players[playerid][pShakeOffer]);
  57027. SetPlayerToFacePlayer(Players[playerid][pShakeOffer], playerid);
  57028. SendInfoMessage(playerid, "You have accepted %s's handshake offer.", ReturnNameEx(Players[playerid][pShakeOffer]));
  57029. SendInfoMessage(Players[playerid][pShakeOffer], "%s has accepted your handshake offer.", ReturnNameEx(playerid));
  57030. Players[playerid][pShakeOffer] = INVALID_PLAYER_ID;
  57031. }
  57032. return 1;
  57033. }
  57034. /*CMD:wt(playerid, params[])
  57035. {
  57036. if (!Players[playerid][pChannel])
  57037. {
  57038. return SendErrorMessage(playerid, "You are not broadcasting over any frequency.");
  57039. }
  57040. else if (isnull(params))
  57041. {
  57042. return SendSyntaxMessage(playerid, "/r (walkie talkie)");
  57043. }
  57044. else
  57045. {
  57046. foreach (new i : Player)
  57047. {
  57048. if (Players[i][pChannel] == Players[playerid][pChannel])
  57049. {
  57050. SendFormatMessage(i, COLOR_WALKIETALKIE, "** (Channel %i) %s: %s **", Players[playerid][pChannel], ReturnNameEx(playerid), params);
  57051. }
  57052. }
  57053. ShowFormatBubble(playerid, COLOR_LIGHTGREY, "[Radio] %s says: %s", ReturnNameEx(playerid), params);
  57054. //ShowActionBubble(playerid, "* %s speaks over their walkie talkie.", ReturnNameEx(playerid));
  57055. }
  57056. return 1;
  57057. }
  57058. */
  57059. /*forward OnFakeLicense(playerid);
  57060. public OnFakeLicense(playerid)
  57061. {
  57062. if(!IsPlayerInRangeOfPoint(playerid, 5.0, 0, 0, 0))
  57063. return SendClientMessage(playerid, COLOR_GREY, "You're not near the license creation place so you didn't recieve a fake license.");
  57064. SendClientMessage(playerid, COLOR_GREY, "You've been given a fake ID (/fakelicense /givefakelicense).");
  57065. Players[playerid][pFakelicense] = true;
  57066. return 1;
  57067. }
  57068. CMD:makelicense(playerid, params[])
  57069. {
  57070. if(!IsPlayerInRangeOfPoint(playerid, 5.0, 0, 0, 0))
  57071. return SendClientMessage(playerid, COLOR_GREY, "You're not near the license creation place.");
  57072. if(Players[playerid][pFakelicense] == true)
  57073. return SendClientMessage(playerid, COLOR_GREY, "You already have a fake license.");
  57074. SetTimerEx("OnFakeLicense", 30000, false, "i", playerid); // 30 seconds
  57075. return 1;
  57076. }
  57077. CMD:givefakelicense(playerid, params[])
  57078. {
  57079. new target;
  57080. if(sscanf(params, "i", target))
  57081. return SendClientMessage(playerid, COLOR_GREY, "USAGE: {FFFFFF}/givefakelicense [ID]");
  57082. if(Players[playerid][pFakelicense] == false)
  57083. return SendClientMessage(playerid, COLOR_GREY, "You do not have a fake license.");
  57084. if(Players[target][pFakelicense] == true)
  57085. return SendClientMessage(playerid, COLOR_GREY, "This player already has a fake license.");
  57086. SendClientMessage(playerid, COLOR_GREY, "You've given away a fake license.");
  57087. SendClientMessage(target, COLOR_GREY, "You've been given a fake license.");
  57088. Players[playerid][pFakelicense] = false;
  57089. Players[target][pFakelicense] = true;
  57090. return 1;
  57091. }
  57092. CMD:fakelicense(playerid, params[])
  57093. {
  57094. new target, name[MAX_PLAYER_NAME + 1], driverslicense, gunlicense, cdl, pilots;
  57095. if(sscanf(params, "i s[24] i i i i", target, name, driverslicense, cdl, pilots))
  57096. return SendClientMessage(playerid, COLOR_GREY, "USAGE: {FFFFFF}/fakelicense [ID] [Fake Name] [Drivers License] [CDL License] [Gun License]");
  57097. if(Players[playerid][pFakelicense] == false)
  57098. return SendClientMessage(playerid, COLOR_GREY, "You don't have a fake license.");
  57099. SendFormatMessage(target, COLOR_YELLOW, "______STATE OF SAN ANDREAS______");
  57100. SendFormatMessage(target, COLOR_YELLOW, "Name: %s", name);
  57101. SendFormatMessage(target, COLOR_YELLOW, "Drivers License: %s", (driverslicense) ? ("Yes") : ("No"));
  57102. SendFormatMessage(target, COLOR_YELLOW, "Pilot License: %s", (pilots) ? ("Yes") : ("No"));
  57103. SendFormatMessage(target, COLOR_YELLOW, "CDL License: %s", (cdl) ? ("Yes") : ("No"));
  57104. SendFormatMessage(target, COLOR_YELLOW, "Gun License: %s", (gunlicense) ? ("Yes") : ("No"));
  57105. return 1;
  57106. }*/
  57107. CMD:mostplayers(playerid, params[])
  57108. {
  57109. Dialog_Show(playerid, PlayerRecord, DIALOG_STYLE_MSGBOX, "{FFFFFF}Player Record", "The most players online was %i.\nThis record was achieved on %s.", "Close", "", Server[PlayerRecord], Server[RecordDate]);
  57110. return 1;
  57111. }
  57112. CMD:givenamechanges(playerid, params[])
  57113. {
  57114. new targetid, amount;
  57115. if (Players[playerid][pAdmin] < 5)
  57116. {
  57117. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  57118. }
  57119. else if (sscanf(params, "ui", targetid, amount))
  57120. {
  57121. return SendSyntaxMessage(playerid, "/givenamechanges [playerid/name] (amount)");
  57122. }
  57123. else if (!IsPlayerConnected(targetid))
  57124. {
  57125. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  57126. }
  57127. else if (!IsPlayerLoggedIn(targetid))
  57128. {
  57129. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  57130. }
  57131. else
  57132. {
  57133. Players[targetid][pNameChanges] = Players[targetid][pNameChanges] + amount;
  57134. SendInfoMessage(targetid, "%s has given you %i name changes. You can now use /changename to change it.", ReturnNameEx(playerid), amount);
  57135. SendAdminMessage(COLOR_RED, "Admin: %s has given %i name changes to %s.", ReturnNameEx(playerid), amount, ReturnNameEx(targetid));
  57136. }
  57137. return 1;
  57138. }
  57139. CMD:changename(playerid, params[])
  57140. {
  57141. if (isnull(params))
  57142. {
  57143. return SendSyntaxMessage(playerid, "/changename (new name) - You have %i namechanges left", Players[playerid][pNameChanges]);
  57144. }
  57145. else if (!Players[playerid][pNameChanges])
  57146. {
  57147. return SendErrorMessage(playerid, "You don't have any namechanges left.");
  57148. }
  57149. else if (strlen(params) > 24)
  57150. {
  57151. return SendErrorMessage(playerid, "Your name needs to be less than 24 characters.");
  57152. }
  57153. else if (!IsRoleplayName(params))
  57154. {
  57155. return SendErrorMessage(playerid, "The specified name doesn't comply with roleplay standards.");
  57156. }
  57157. else
  57158. {
  57159. format(gExecute, sizeof(gExecute), "SELECT ID FROM rp_accounts WHERE Username = '%s'", mysql_escaped(params));
  57160. mysql_tquery(gConnection, gExecute, "OnPlayerRequestNameChange", "is", playerid, params);
  57161. }
  57162. return 1;
  57163. }
  57164. CMD:approvename(playerid, params[])
  57165. {
  57166. new targetid;
  57167. if (Players[playerid][pAdmin] < 3)
  57168. {
  57169. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  57170. }
  57171. else if (sscanf(params, "u", targetid))
  57172. {
  57173. return SendSyntaxMessage(playerid, "/approvename [playerid/name]");
  57174. }
  57175. else if (!IsPlayerConnected(targetid))
  57176. {
  57177. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  57178. }
  57179. else if (IsPlayerNPC(targetid))
  57180. {
  57181. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  57182. }
  57183. else if (!IsPlayerLoggedIn(targetid))
  57184. {
  57185. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  57186. }
  57187. else if (!strcmp(Players[targetid][pNameChange], "Not Specified"))
  57188. {
  57189. return SendErrorMessage(playerid, "The specified target didn't request a name change.");
  57190. }
  57191. else
  57192. {
  57193. Players[targetid][pNameChanges]--;
  57194. SendAdminMessage(COLOR_RED, "Admin: %s has accepted %s's name change to %s.", ReturnNameEx(playerid), ReturnNameEx(targetid), Players[targetid][pNameChange]);
  57195. SendInfoMessage(targetid, "%s has accepted the name change. You have %i name changes remaining.", ReturnNameEx(playerid), Players[targetid][pNameChanges]);
  57196. ChangeName(targetid, Players[targetid][pNameChange]);
  57197. ResetNameChange(targetid);
  57198. }
  57199. return 1;
  57200. }
  57201. CMD:denyname(playerid, params[])
  57202. {
  57203. new targetid;
  57204. if (Players[playerid][pAdmin] < 3)
  57205. {
  57206. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  57207. }
  57208. else if (sscanf(params, "u", targetid))
  57209. {
  57210. return SendSyntaxMessage(playerid, "/denyname [playerid/name]");
  57211. }
  57212. else if (!IsPlayerConnected(targetid))
  57213. {
  57214. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  57215. }
  57216. else if (IsPlayerNPC(targetid))
  57217. {
  57218. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  57219. }
  57220. else if (!IsPlayerLoggedIn(targetid))
  57221. {
  57222. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  57223. }
  57224. else if (!strcmp(Players[targetid][pNameChange], "Not Specified"))
  57225. {
  57226. return SendErrorMessage(playerid, "The specified target didn't request a name change.");
  57227. }
  57228. else
  57229. {
  57230. SendAdminMessage(COLOR_RED, "Admin: %s has declined %s's name change to %s.", ReturnNameEx(playerid), ReturnNameEx(targetid), Players[targetid][pNameChange]);
  57231. SendInfoMessage(targetid, "%s has declined the name change request.", ReturnNameEx(playerid));
  57232. ResetNameChange(targetid);
  57233. }
  57234. return 1;
  57235. }
  57236. CMD:listnamechanges(playerid, params[])
  57237. {
  57238. if (Players[playerid][pAdmin] < 4)
  57239. {
  57240. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  57241. }
  57242. else
  57243. {
  57244. SendClientMessage(playerid, COLOR_YELLOW, "Pending Name Changes:");
  57245. foreach (new i : Player)
  57246. {
  57247. if (strcmp(Players[i][pNameChange], "Not Specified") != 0)
  57248. {
  57249. SendFormatMessage(playerid, COLOR_WHITE, "* %s (ID: %i) (Requested Name: %s)", ReturnNameEx(i), i, Players[i][pNameChange]);
  57250. }
  57251. }
  57252. }
  57253. return 1;
  57254. }
  57255. CMD:acceptad(playerid, params[])
  57256. {
  57257. new targetid;
  57258. if(Players[playerid][pAdmin] < 1 && Players[playerid][pSupporter] < 1)
  57259. {
  57260. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  57261. }
  57262. if(sscanf(params, "u", targetid))
  57263. {
  57264. return SendSyntaxMessage(playerid, "/acceptad (player)");
  57265. }
  57266. if(targetid == INVALID_PLAYER_ID)
  57267. {
  57268. return SendErrorMessage(playerid, "Invalid player specified.");
  57269. }
  57270. if(!IsAdvertisementActive(targetid))
  57271. {
  57272. return SendErrorMessage(playerid, "This player doesn't have an advertisement to accept.");
  57273. }
  57274. SendFormatMessageToAll(COLOR_GREEN, "(Advertisement) %s - number: %i", GetPackedString(gAdvertisement[targetid]), Players[targetid][pPhone]);
  57275. SendAdminMessage(COLOR_RED, "Admin: %s has accepted %s's advertisement.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0));
  57276. ResetAdvertisement(targetid);
  57277. return 1;
  57278. }
  57279. CMD:denyad(playerid, params[])
  57280. {
  57281. new targetid;
  57282. if(Players[playerid][pAdmin] < 1 && Players[playerid][pSupporter] < 1)
  57283. {
  57284. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  57285. }
  57286. if(sscanf(params, "u", targetid))
  57287. {
  57288. return SendSyntaxMessage(playerid, "/denyad (player)");
  57289. }
  57290. if(targetid == INVALID_PLAYER_ID)
  57291. {
  57292. return SendErrorMessage(playerid, "Invalid player specified.");
  57293. }
  57294. if(!IsAdvertisementActive(targetid))
  57295. {
  57296. return SendErrorMessage(playerid, "This player doesn't have an advertisement to deny.");
  57297. }
  57298. SendInfoMessage(targetid, "Your advertisement has been denied by admin %s.", ReturnNameEx(playerid, 0));
  57299. SendAdminMessage(COLOR_RED, "Admin: %s has denied %s's advertisement.", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0));
  57300. ResetAdvertisement(targetid);
  57301. return 1;
  57302. }
  57303. CMD:listads(playerid, params[])
  57304. {
  57305. if(Players[playerid][pAdmin] < 1 && Players[playerid][pSupporter] < 1)
  57306. {
  57307. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  57308. }
  57309. SendClientMessage(playerid, COLOR_GREEN, "|________________ Pending Ads ________________|");
  57310. foreach(new i : Player)
  57311. {
  57312. if(IsAdvertisementActive(i))
  57313. {
  57314. SendInfoMessage(playerid, "[ID: %i] %s's advertisement: %s", i, ReturnNameEx(i, 0), GetPackedString(gAdvertisement[i]));
  57315. }
  57316. }
  57317. SendClientMessage(playerid, COLOR_GREEN, "|____________________________________________|");
  57318. SendSyntaxMessage(playerid, "/acceptad (id) or /denyad (id)");
  57319. return 1;
  57320. }
  57321. CMD:spawntype(playerid, params[])
  57322. {
  57323. new type, slot, count, success;
  57324. if(sscanf(params, "iI(-1)", type, slot))
  57325. {
  57326. SendSyntaxMessage(playerid, "/spawntype (type)");
  57327. SendClientMessage(playerid, COLOR_LIGHTGREY, "(0): Last Position, (1): Class Selection, (2): House, (3): Company, (4): Faction");
  57328. return 1;
  57329. }
  57330. switch(type)
  57331. {
  57332. case 0:
  57333. {
  57334. Players[playerid][pSpawnType] = SPAWN_TYPE_LAST;
  57335. SendInfoMessage(playerid, " You will now spawn at your last position.");
  57336. }
  57337. case 1:
  57338. {
  57339. Players[playerid][pSpawnType] = SPAWN_TYPE_AIRPORT;
  57340. SendInfoMessage(playerid, " You will now be using the class selection as your spawn points.");
  57341. }
  57342. case 2:
  57343. {
  57344. if(slot == -1)
  57345. {
  57346. SendClientMessage(playerid, COLOR_LIGHTGREY, "Your houses:");
  57347. }
  57348. for(new i = 0; i < MAX_HOUSES; i ++)
  57349. {
  57350. if(IsValidHouseID(i) && IsHouseOwner(playerid, i))
  57351. {
  57352. if(slot == -1)
  57353. {
  57354. SendFormatMessage(playerid, COLOR_WHITE, "[Slot %i] Address: %s | Location: %s | Value: %s", ++count, Houses[i][hAddress], GetZoneName(Houses[i][hSpawn][0], Houses[i][hSpawn][1], Houses[i][hSpawn][2]), FormatNumber(Houses[i][hValue]));
  57355. }
  57356. else if(++count == slot)
  57357. {
  57358. Players[playerid][pSpawnType] = SPAWN_TYPE_HOUSE;
  57359. Players[playerid][pSpawnExtra] = Houses[i][hID];
  57360. SendInfoMessage(playerid, "You will now spawn at %s upon login.", Houses[i][hAddress]);
  57361. success = true;
  57362. break;
  57363. }
  57364. }
  57365. }
  57366. if(slot == -1)
  57367. {
  57368. SendClientMessage(playerid, COLOR_LIGHTGREY, "|______________________________________|");
  57369. SendSyntaxMessage(playerid, "/spawntype (type) (slot)");
  57370. }
  57371. else if(!success)
  57372. {
  57373. SendErrorMessage(playerid, "Invalid slot.");
  57374. }
  57375. }
  57376. case 3:
  57377. {
  57378. if(slot == -1)
  57379. {
  57380. SendClientMessage(playerid, COLOR_GREEN, "|_____________ Your Companies _____________|");
  57381. }
  57382. for(new i = 0; i < MAX_COMPANIES; i ++)
  57383. {
  57384. if(IsValidCompanyID(i) && IsCompanyOwner(playerid, i))
  57385. {
  57386. if(slot == -1)
  57387. {
  57388. SendFormatMessage(playerid, COLOR_WHITE, "[Slot %i] Name: %s | Location: %s | Type: %s", ++count, Companies[i][cName], GetZoneName(Companies[i][cSpawn][0], Companies[i][cSpawn][1], Companies[i][cSpawn][2]), GetCompanyType(Companies[i][cType]));
  57389. }
  57390. else if(++count == slot)
  57391. {
  57392. Players[playerid][pSpawnType] = SPAWN_TYPE_COMPANY;
  57393. Players[playerid][pSpawnExtra] = Companies[i][cID];
  57394. SendInfoMessage(playerid, "You will now spawn at %s upon login.", Companies[i][cName]);
  57395. success = true;
  57396. break;
  57397. }
  57398. }
  57399. }
  57400. if(slot == -1)
  57401. {
  57402. SendClientMessage(playerid, COLOR_GREEN, "|_________________________________________|");
  57403. SendSyntaxMessage(playerid, "/spawntype (type) (slot)");
  57404. }
  57405. else if(!success)
  57406. {
  57407. SendErrorMessage(playerid, "Invalid slot.");
  57408. }
  57409. }
  57410. case 4:
  57411. {
  57412. if(Players[playerid][pFaction] == -1)
  57413. {
  57414. return SendErrorMessage(playerid, "You are not apart of a faction.");
  57415. }
  57416. if(Factions[Players[playerid][pFaction]][fcSpawnX] == 0.0 && Factions[Players[playerid][pFaction]][fcSpawnY] == 0.0 && Factions[Players[playerid][pFaction]][fcSpawnZ] == 0.0)
  57417. {
  57418. return SendErrorMessage(playerid, "Your faction's spawn is not set up currently. Ask an admin to set it up.");
  57419. }
  57420. Players[playerid][pSpawnType] = SPAWN_TYPE_FACTION;
  57421. SendInfoMessage(playerid, "You will now spawn at your faction's headquarters upon login.");
  57422. }
  57423. default:
  57424. {
  57425. SendErrorMessage(playerid, "Invalid type.");
  57426. }
  57427. }
  57428. return 1;
  57429. }
  57430. GetServerCarID(vehicleid)
  57431. {
  57432. for(new i=0; i < MAX_CARS;i++)
  57433. {
  57434. if(Vehicles[i][vVehicle] == vehicleid)
  57435. {
  57436. return i;
  57437. }
  57438. }
  57439. return -1;
  57440. }
  57441. CMD:adespawncar(playerid, params[])
  57442. {
  57443. new targ;
  57444. if(Players[playerid][pAdmin] > 1)
  57445. {
  57446. if(sscanf(params, "i", targ)) return SendSyntaxMessage(playerid, "/adespawncar [carid]");
  57447. new listitem = GetServerCarID(targ);
  57448. if(listitem == -1) return SendErrorMessage(playerid, "Invalid vehicle id");
  57449. if (!IsValidVehicleID(listitem) || Vehicles[listitem][vDespawned]) {
  57450. return 0;
  57451. }
  57452. if (Vehicles[listitem][vImpound] > 0) {
  57453. return SendErrorMessage(playerid, "You cannot despawn an impounded vehicle.");
  57454. }
  57455. if (GetVehicleDriver(Vehicles[listitem][vVehicle]) != INVALID_PLAYER_ID) {
  57456. return SendErrorMessage(playerid, "The vehicle is occupied and you may not despawn it.");
  57457. }
  57458. for (new i = 1; i < MAX_VEHICLES; i ++) {
  57459. if (GetVehicleModel(i) == 525 && GetVehicleTrailer(i) == Vehicles[listitem][vVehicle]) {
  57460. return SendErrorMessage(playerid, "The vehicle is currently being towed.");
  57461. }
  57462. }
  57463. ClearVehicleObjects(Vehicles[listitem][vVehicle]);
  57464. DestroyVehicleEx(Vehicles[listitem][vVehicle]);
  57465. SendInfoMessage(playerid, "You have despawned %s (%s; id: %i).", GetVehicleModelName(Vehicles[listitem][vModel]), Vehicles[listitem][vPlate], listitem);
  57466. Vehicles[listitem][vVehicle] = INVALID_VEHICLE_ID;
  57467. Vehicles[listitem][vDespawned] = 1;
  57468. SaveVehicle(listitem);
  57469. SendAdminMessage(COLOR_RED, "Admin %s has despawned %s (%s; id: %i).", ReturnNameEx(playerid, 0), GetVehicleModelName(Vehicles[listitem][vModel]), Vehicles[listitem][vPlate], listitem);
  57470. }
  57471. else SendErrorMessage(playerid, "You are not privileged to use this command.");
  57472. return 1;
  57473. }
  57474. CMD:addownedcar(playerid, params[])
  57475. {
  57476. new targetid, model[24], modelid, color1, color2, vehicle;
  57477. if (Players[playerid][pAdmin] < 4)
  57478. {
  57479. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  57480. }
  57481. else if (sscanf(params, "us[24]I(-1)I(-1)", targetid, model, color1, color2))
  57482. {
  57483. return SendSyntaxMessage(playerid, "/addownedcar [playerid/name] (model) [color 1] [color 2]");
  57484. }
  57485. else if (!IsPlayerConnected(targetid))
  57486. {
  57487. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  57488. }
  57489. else if (IsPlayerNPC(targetid))
  57490. {
  57491. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  57492. }
  57493. else if (!IsPlayerLoggedIn(targetid))
  57494. {
  57495. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  57496. }
  57497. else if (!(modelid = GetVehicleModelFromName(model)))
  57498. {
  57499. return SendErrorMessage(playerid, "The specified model doesn't exist.");
  57500. }
  57501. else if ((color1 != -1) && (color1 < 0 || color1 > 255))
  57502. {
  57503. return SendErrorMessage(playerid, "The first color must be between -1 and 255.");
  57504. }
  57505. else if ((color2 != -1) && (color2 < 0 || color2 > 255))
  57506. {
  57507. return SendErrorMessage(playerid, "The second color must be between -1 and 255.");
  57508. }
  57509. else
  57510. {
  57511. new count = 0;
  57512. for (new i = 0; i < MAX_CARS; i ++)
  57513. {
  57514. if (IsValidVehicleID(i) && IsVehicleOwner(targetid, i) && !Vehicles[i][vDespawned])
  57515. {
  57516. count++;
  57517. }
  57518. }
  57519. if (count > GetVehicleSpawnLimit(targetid))
  57520. {
  57521. return SendErrorMessage(playerid, "This player already has two vehicles spawned.");
  57522. }
  57523. new
  57524. Float:x,
  57525. Float:y,
  57526. Float:z,
  57527. Float:angle;
  57528. GetPlayerPos(targetid, x, y, z);
  57529. GetPlayerFacingAngle(targetid, angle);
  57530. vehicle = AddVehicle(INVALID_ID, modelid, 0, x, y, z, angle, color1, color2, targetid);
  57531. if (vehicle == INVALID_ID)
  57532. {
  57533. return SendErrorMessage(playerid, "There are no available vehicle slots.");
  57534. }
  57535. else
  57536. {
  57537. SendAdminMessage(COLOR_RED, "Admin: %s has spawned a player owned %s for %s.", ReturnNameEx(playerid), GetVehicleModelName(modelid), ReturnNameEx(targetid));
  57538. SendInfoMessage(targetid, "%s has created you a %s. Use /(v)ehicle for more information.", ReturnNameEx(playerid), GetVehicleModelName(modelid));
  57539. }
  57540. }
  57541. return 1;
  57542. }
  57543. CMD:setdonator(playerid, params[])
  57544. {
  57545. new targetid, level;
  57546. if (Players[playerid][pAdmin] < 6)
  57547. {
  57548. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  57549. }
  57550. else if (sscanf(params, "ui", targetid, level))
  57551. {
  57552. return SendSyntaxMessage(playerid, "/setdonator [playerid/name] (level)");
  57553. }
  57554. else if (!IsPlayerConnected(targetid))
  57555. {
  57556. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  57557. }
  57558. else if (IsPlayerNPC(targetid))
  57559. {
  57560. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  57561. }
  57562. else if (!IsPlayerLoggedIn(targetid))
  57563. {
  57564. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  57565. }
  57566. else if (level < 0 || level > 4)
  57567. {
  57568. return SendErrorMessage(playerid, "The specified level is invalid.");
  57569. }
  57570. else
  57571. {
  57572. Players[targetid][pDonator] = level;
  57573. Players[targetid][pExpiryDate] = gettime() + 2592000;
  57574. SendAdminMessage(COLOR_RED, "Admin: %s has set %s's donator level to %s (%i).", ReturnNameEx(playerid, 0), ReturnNameEx(targetid, 0), GetDonatorLevel(level), level);
  57575. if (level > 0)
  57576. SendInfoMessage(targetid, "%s has set your donator package to %s. It will expire in 30 days.", ReturnNameEx(playerid, 0), GetDonatorLevel(level));
  57577. else
  57578. SendInfoMessage(targetid, "%s has revoked your donator package.", ReturnNameEx(playerid, 0));
  57579. }
  57580. return 1;
  57581. }
  57582. CMD:donatorinfo(playerid, params[])
  57583. {
  57584. if (!Players[playerid][pDonator])
  57585. {
  57586. return SendErrorMessage(playerid, "You don't have an active donator subscription.");
  57587. }
  57588. else
  57589. {
  57590. new days = (Players[playerid][pExpiryDate] - gettime()) / 86400;
  57591. if (!days)
  57592. {
  57593. SendInfoMessage(playerid, "Your %s donator package will expire today.", GetDonatorLevel(Players[playerid][pDonator]));
  57594. }
  57595. else
  57596. {
  57597. SendInfoMessage(playerid, "Your %s donator package will expire in %i days.", GetDonatorLevel(Players[playerid][pDonator]), days);
  57598. }
  57599. }
  57600. return 1;
  57601. }
  57602. CMD:setstaff(playerid, params[])
  57603. {
  57604. new targetid, string[128];
  57605. if (Players[playerid][pAdmin] < 5)
  57606. {
  57607. return SendErrorMessage(playerid, "You are not privileged to use this command.");
  57608. }
  57609. else if (sscanf(params, "u", targetid))
  57610. {
  57611. return SendSyntaxMessage(playerid, "/setstaff [playerid/name]");
  57612. }
  57613. else if (!IsPlayerConnected(targetid))
  57614. {
  57615. return SendErrorMessage(playerid, "The specified target doesn't exist.");
  57616. }
  57617. else if (IsPlayerNPC(targetid))
  57618. {
  57619. return SendErrorMessage(playerid, "You cannot use this command on a NPC.");
  57620. }
  57621. else if (!IsPlayerLoggedIn(targetid))
  57622. {
  57623. return SendErrorMessage(playerid, "The specified target is not logged in yet.");
  57624. }
  57625. else
  57626. {
  57627. Players[playerid][pSetStaff] = targetid;
  57628. format(string, sizeof(string), "Type\tStatus\nSupporter Rank\t%s\nFaction Mod\t%s", GetSupporterLevel(Players[targetid][pSupporter]), GetFactionModLevel(Players[targetid][pFactionMod]));
  57629. Dialog_Show(playerid, SetStaff, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Set Staff", string, "Adjust", "Cancel");
  57630. }
  57631. return 1;
  57632. }
  57633. CMD:pickup(playerid, params[])
  57634. {
  57635. new count = PickupNearestItem(playerid);
  57636. if (!count)
  57637. {
  57638. SendErrorMessage(playerid, "There are no items nearby.");
  57639. }
  57640. return 1;
  57641. }
  57642. AddFire(size, Float:x, Float:y, Float:z, Health)
  57643. {
  57644. TotalFires++;
  57645. new ID = TotalFires;
  57646. if(size == 1) // Small
  57647. {
  57648. FireObj[ID] = CreateDynamicObject(3461, x, y, z-2.61, 0, 0, 0.0);
  57649. }
  57650. else if(size == 2) // Medium
  57651. {
  57652. FireObj[ID] = CreateDynamicObject(18692, x, y, z-2.61, 0, 0, 0.0);
  57653. }
  57654. else if(size == 3) // Big
  57655. {
  57656. FireObj[ID] = CreateDynamicObject(18691, x, y, z-2.61, 0, 0, 0.0);
  57657. }
  57658. else if(size == 4)
  57659. {
  57660. FireObj[ID] = CreateDynamicObject(18715, x, y, z-2.61, 0, 0, 0.0); // poison gas
  57661. }
  57662. else if(size == 5)
  57663. {
  57664. FireObj[ID] = CreateDynamicObject(18726, x, y, z-2.61, 0, 0, 0.0); // black smoke
  57665. }
  57666. FirePos[ID][0] = x, FirePos[ID][1] = y, FirePos[ID][2] = z;
  57667. FireHealth[ID] = Health;
  57668. FireHealthMax[ID] = 100;
  57669. }
  57670. CMD:slapcar(playerid, params[])
  57671. {
  57672. new targetid;
  57673. if(!CheckAdmin(playerid, 2)) return SCM(playerid, COLOR_LIGHTRED, "You are not an Admin.");
  57674. if(sscanf(params,"d",targetid)) return SendSyntaxMessage(playerid, "/slapcar [vehicleid]");
  57675. new Float:vX,Float:vY,Float:vZ, vehicleid = targetid;
  57676. GetVehicleVelocity(vehicleid,vX,vY,vZ);
  57677. SetVehicleVelocity(vehicleid,vX,vY,vZ+0.25);
  57678. return 1;
  57679. }
  57680. CMD:createfire(playerid, params[])
  57681. {
  57682. if(!CheckAdmin(playerid, 5)) return SCM(playerid, COLOR_LIGHTRED, "You are not an Admin.");
  57683. if(isnull(params)) return SendSyntaxMessage(playerid, "/createfire [small/medium/big]");
  57684. new Float:FirePos1[3];
  57685. GetPlayerPos(playerid, FirePos1[0], FirePos1[1], FirePos1[2]);
  57686. if(strcmp(params, "small", true) == 1)
  57687. {
  57688. AddFire(1, FirePos1[0], FirePos1[1], FirePos1[2], 100);
  57689. }
  57690. if(strcmp(params, "medium", true) == 1)
  57691. {
  57692. AddFire(2, FirePos1[0], FirePos1[1], FirePos1[2], 250);
  57693. }
  57694. if(strcmp(params, "big", true) == 1)
  57695. {
  57696. AddFire(3, FirePos1[0], FirePos1[1], FirePos1[2], 500);
  57697. }
  57698. return 1;
  57699. }
  57700. CMD:deleteallfire(playerid, params[])
  57701. {
  57702. if(CheckAdmin(playerid, 5))
  57703. {
  57704. DeleteAllFire();
  57705. }
  57706. return 1;
  57707. }
  57708. public VehicleToPoint(Float:radi, vehicleid, Float:x, Float:y, Float:z)
  57709. {
  57710. new Float:oldposx, Float:oldposy, Float:oldposz;
  57711. new Float:tempposx, Float:tempposy, Float:tempposz;
  57712. GetVehiclePos(vehicleid, oldposx, oldposy, oldposz);
  57713. tempposx = (oldposx -x);
  57714. tempposy = (oldposy -y);
  57715. tempposz = (oldposz -z);
  57716. if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
  57717. {
  57718. return 1;
  57719. }
  57720. return 0;
  57721. }
  57722. public HealthDown()
  57723. {
  57724. new i,v,p;
  57725. for(i = 0; i<MaxFire; i++)
  57726. {
  57727. if(IsValidFire(i))
  57728. {
  57729. for(p = 0; p<MAX_PLAYERS; p++)
  57730. {
  57731. if(IsPlayerInRangeOfPoint(p, 1, FirePos[i][0], FirePos[i][1], FirePos[i][2]) && !IsPlayerInAnyVehicle(p))
  57732. {
  57733. new Float:HP;
  57734. GetPlayerHealth(p, HP);
  57735. SetPlayerHealth(p, HP-4);
  57736. }
  57737. }
  57738. for(v = 0; v<MAX_VEHICLES; v++)
  57739. {
  57740. if(VehicleToPoint(2, v, FirePos[i][0], FirePos[i][1], FirePos[i][2]))
  57741. {
  57742. new Float:HP;
  57743. GetVehicleHealth(v, HP);
  57744. SetVehicleHealth(v, HP-30);
  57745. }
  57746. }
  57747. }
  57748. }
  57749. }
  57750. stock UpdateNameTag(playerid, stage)
  57751. {
  57752. new Float: tempHP;
  57753. GetPlayerHealth(playerid, tempHP);
  57754. new maskdetails[256];
  57755. new color;
  57756. new formatcTag[30];
  57757. switch(Players[playerid][pFaction])
  57758. {
  57759. case 0: formatcTag = "{00c0ff}";
  57760. case 1: formatcTag = "{FF6347}";
  57761. default: formatcTag = "{C3C3C3}";
  57762. }
  57763. if(Players[playerid][pDuty]) format(maskdetails, sizeof(maskdetails), "%s%s%s {FFFFFF}(%d)", Players[playerid][pDeathState] ? ("{FF6347}") : (" "), formatcTag, ReturnNameEx(playerid, 0), playerid);
  57764. else format(maskdetails, sizeof(maskdetails), "%s%s {FFFFFF}(%d)", Players[playerid][pDeathState] ? ("{FF6347}") : ("{C3C3C3}"), ReturnNameEx(playerid, 0), playerid);
  57765. if(Players[playerid][pMaskID] > 0)
  57766. {
  57767. format(maskdetails, sizeof(maskdetails), "%s%s[Mask_%d_%d]", Players[playerid][pDeathState] ? ("{FF6347}") : ("{C3C3C3}"), formatcTag, Players[playerid][pMaskID], Players[playerid][pAge]);
  57768. }
  57769. if(Players[playerid][pAdminDuty])
  57770. {
  57771. color = 0xE8AF0EFF >>> 8;
  57772. format(maskdetails, sizeof(maskdetails), "{%06x}%s", color, Players[playerid][pAdminName]);
  57773. }
  57774. if(Players[playerid][pSupporter] > 0 && Players[playerid][pSupporterDuty])
  57775. {
  57776. color = 0xAA333300 >>> 8;
  57777. format(maskdetails, sizeof(maskdetails), "{%06x}%s {FFFFFF}(%d)", color, ReturnNameEx(playerid, 0), playerid);
  57778. }
  57779. if(stage == 1)
  57780. {
  57781. if(IsValidDynamic3DTextLabel(playerNametag[playerid])) DestroyDynamic3DTextLabel(playerNametag[playerid]);
  57782. playerNametag[playerid] = CreateDynamic3DTextLabel(maskdetails, COLOR_WHITE, 0.0, 0.0, 0.10, 20.0, playerid, INVALID_VEHICLE_ID, 1, -1, -1, -1, 20.0);
  57783. }
  57784. else if(stage == 2)
  57785. {
  57786. if(tempHP <= 5.0)
  57787. {
  57788. new AddrPoint[300];
  57789. format(AddrPoint, sizeof(AddrPoint), "{FF6347}%s {FFFFFF}(%d)\n", ReturnNameEx(playerid), playerid);
  57790. UpdateDynamic3DTextLabelText(playerNametag[playerid], COLOR_WHITE, AddrPoint);
  57791. }
  57792. else
  57793. {
  57794. UpdateDynamic3DTextLabelText(playerNametag[playerid], COLOR_WHITE, maskdetails);
  57795. }
  57796. }
  57797. return true;
  57798. }
  57799. Dialog:FurnEditConfirm(playerid, response, listitem, inputtext[])
  57800. {
  57801. if(!response) return ListTexture(playerid);
  57802. EditDynamicObjectEx(playerid, EDIT_TYPE_FURNITURE, Furniture[GetPVarInt(playerid, "FurnID")][fObject], GetPVarInt(playerid, "FurnID"));
  57803. return 1;
  57804. }
  57805. Dialog:ChangeMat(playerid, response, listitem, inputtext[])
  57806. {
  57807. if(!response) return 1;
  57808. if(listitem == 0 || listitem == 1) return ShowColorList(playerid);
  57809. new t = -1;
  57810. for(new x = 0; x < sizeof(MaterialIDs); x++)
  57811. {
  57812. if(strcmp(inputtext, MaterialIDs[x][Name], true) == 0)
  57813. {
  57814. t = x;
  57815. break;
  57816. }
  57817. }
  57818. if(t == -1) return SendClientMessage(playerid, COLOR_RED, "An error has occurred, please try it later! (DEBUG: \"ChangeMatHandler\")");
  57819. FurnitureChange(playerid, GetPVarInt(playerid, "FurnID"), GetPVarInt(playerid, "MatSlot"), t, 1);
  57820. return true;
  57821. }
  57822. Dialog:ChangeColor(playerid, response, listitem, inputtext[])
  57823. {
  57824. if(!response) return 1;
  57825. if(listitem == 0 || listitem == 1) return MaterialRes
  57826. FurnitureChange(playerid, GetPVarInt(playerid, "FurnID"), GetPVarInt(playerid, "MatSlot"), listitem, 2);
  57827. return true;
  57828. }
  57829. ListTexture(playerid)
  57830. {
  57831. new fid = GetPVarInt(playerid, "FurnID");
  57832. new list[256], header[64];
  57833. format(header, sizeof(header), "You are now editing ID: %d.", GetPVarInt(playerid, "FurnID"));
  57834. format(list, sizeof(list), "Index 1: %s\nIndex 2: %s\nIndex 3: %s\n \nClear Textures", Furniture[fid][fMaterial][0] ? ("{FFFF00}In Use") : ("{C3C3C3}Empty"), Furniture[fid][fMaterial][1] ? ("{FFFF00}In Use") : ("{C3C3C3}Empty"), Furniture[fid][fMaterial][2] ? ("{FFFF00}In Use") : ("{C3C3C3}Empty"));
  57835. Dialog_Show(playerid, MaterialHandler, DIALOG_STYLE_LIST, header, list, ">>", "Cancel");
  57836. return 1;
  57837. }
  57838. Dialog:MaterialHandler(playerid, response, listitem, inputtext[])
  57839. {
  57840. if(!response) return 1;
  57841. if(listitem == 4)
  57842. {
  57843. for(new i = 0; i != 3; i ++)
  57844. {
  57845. Furniture[GetPVarInt(playerid, "FurnID")][fMaterial][i] = 0;
  57846. Furniture[GetPVarInt(playerid, "FurnID")][fMatColour][i] = 0;
  57847. SetDynamicObjectMaterial(Furniture[GetPVarInt(playerid, "FurnID")][fObject], i, -1, "none", "none", 0);
  57848. }
  57849. SaveFurniture(GetPVarInt(playerid, "FurnID"));
  57850. }
  57851. SetPVarInt(playerid, "MatSlot", listitem);
  57852. MaterialRes
  57853. //ShowMaterialList(playerid);
  57854. return true;
  57855. }
  57856. Dialog:TextureResources(playerid, response, listitem, inputtext[])
  57857. {
  57858. if(!response) return 1;
  57859. new gstr[2056], gString[256];
  57860. format(gString, sizeof(gString), " << {F3FF02}Select Color\n");
  57861. strcat(gstr, gString);
  57862. for(new i = 0; i < sizeof(MaterialIDs); i++)
  57863. {
  57864. if(strcmp("None", MaterialIDs[i][Resource], true) == 0) continue;
  57865. if(strcmp(inputtext, MaterialIDs[i][Resource], true) == 0)
  57866. {
  57867. strcat(gstr, MaterialIDs[i][Name]);
  57868. strcat(gstr, "\n");
  57869. }
  57870. }
  57871. Dialog_Show(playerid, ChangeMat, DIALOG_STYLE_LIST, "Texture List", gstr, ">>", "Cancel");
  57872. return 1;
  57873. }
  57874. ShowColorList(playerid)
  57875. {
  57876. new list[4056], bigStr[256], gString[256];
  57877. format(gString, sizeof(gString), " << {F3FF02}Select Texture\n");
  57878. strcat(list, gString);
  57879. for(new i = 0; i < sizeof(MaterialColors); i++)
  57880. {
  57881. if(strcmp("none", MaterialColors[i][ColorName], true) == 0) continue;
  57882. format(bigStr, sizeof(bigStr), "%s\n", MaterialColors[i][ColorName]);
  57883. strcat(list, bigStr);
  57884. }
  57885. Dialog_Show(playerid, ChangeColor, DIALOG_STYLE_LIST, "Color List", list, ">>", "Cancel");
  57886. return 1;
  57887. }
  57888. FurnitureChange(playerid, furnid, index, list, status = 1) // 1 for mat, 2 for color
  57889. {
  57890. new model, txd[24], texture[24], color;
  57891. switch(status)
  57892. {
  57893. case 1:
  57894. {
  57895. SendClientMessage(playerid, -1, "Furniture texture has been updated.");
  57896. Furniture[furnid][fMaterial][index] = list;
  57897. SetDynamicObjectMaterial(Furniture[furnid][fObject], index, MaterialIDs[ Furniture[furnid][fMaterial][index] ][ModelID], MaterialIDs[ Furniture[furnid][fMaterial][index] ][TxdName], MaterialIDs[ Furniture[furnid][fMaterial][index] ][TextureName], MaterialColors[ Furniture[furnid][fMatColour][index] ][ColorHex]);
  57898. SaveFurniture(furnid);
  57899. }
  57900. case 2:
  57901. {
  57902. if(Furniture[furnid][fMaterial][index] == 0)
  57903. {
  57904. Furniture[furnid][fMatColour][index] = list;
  57905. SetDynamicObjectMaterial(Furniture[furnid][fObject], index, -1, MaterialIDs[ Furniture[furnid][fMaterial][index] ][TxdName], MaterialIDs[ Furniture[furnid][fMaterial][index] ][TextureName], MaterialColors[ Furniture[furnid][fMatColour][index] ][ColorHex]);
  57906. SaveFurniture(furnid);
  57907. }
  57908. else
  57909. {
  57910. SendClientMessage(playerid, -1, "Furniture color has been updated.");
  57911. Furniture[furnid][fMatColour][index] = list;
  57912. GetDynamicObjectMaterial(Furniture[furnid][fObject], index, model, txd, texture, color);
  57913. SetDynamicObjectMaterial(Furniture[furnid][fObject], index, model, txd, texture, MaterialColors[ Furniture[furnid][fMatColour][index] ][ColorHex]);
  57914. SaveFurniture(furnid);
  57915. }
  57916. }
  57917. }
  57918. return 1;
  57919. }
  57920. stock IsAccountExist(sqlplayersname[], playerid)
  57921. {
  57922. if(IsPlayerNPC(playerid)) return false;
  57923. mysql_format(gConnection, gExecute, sizeof(gExecute), "SELECT ID FROM rp_accounts WHERE Username = '%s' LIMIT 1", sqlplayersname);
  57924. new Cache:result = mysql_query(gConnection, gExecute);
  57925. if(cache_num_rows() > 0)
  57926. {
  57927. new playerID = cache_get_field_content_int(0, "ID");
  57928. cache_delete(result);
  57929. printf("[MySQL] %s(ID %i) has checked for account '%s' and got SQLID %i.", ReturnNameEx(playerid, 0), playerid, sqlplayersname, playerID);
  57930. return playerID;
  57931. }
  57932. else
  57933. {
  57934. cache_delete(result);
  57935. return false;
  57936. }
  57937. }
  57938. stock IsNumeric(const string[])
  57939. {
  57940. for (new i = 0, j = strlen(string); i < j; i++)
  57941. {
  57942. if (string[i] > '9' || string[i] < '0')
  57943. return 0;
  57944. }
  57945. return 1;
  57946. }