mysql.pwn 310 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620
  1. /*
  2. /$$ /$$ /$$$$$$ /$$$$$$$ /$$$$$$$
  3. | $$$ | $$ /$$__ $$ | $$__ $$| $$__ $$
  4. | $$$$| $$| $$ \__/ | $$ \ $$| $$ \ $$
  5. | $$ $$ $$| $$ /$$$$ /$$$$$$| $$$$$$$/| $$$$$$$/
  6. | $$ $$$$| $$|_ $$|______/| $$__ $$| $$____/
  7. | $$\ $$$| $$ \ $$ | $$ \ $$| $$
  8. | $$ \ $$| $$$$$$/ | $$ | $$| $$
  9. |__/ \__/ \______/ |__/ |__/|__/
  10. //--------------------------------[MYSQL.PWN]--------------------------------
  11. * Copyright (c) 2016, Next Generation Gaming, LLC
  12. *
  13. * All rights reserved.
  14. *
  15. * Redistribution and use in source and binary forms, with or without modification,
  16. * are not permitted in any case.
  17. *
  18. *
  19. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  20. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  21. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  22. * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  23. * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  24. * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  25. * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  26. * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  27. * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  28. * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  29. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  30. */
  31. stock SQLUpdateBuild(query[], table[], sqlplayerid)
  32. {
  33. new querylen = strlen(query);
  34. if (!query[0]) {
  35. format(query, 2048, "UPDATE `%s` SET ", table);
  36. }
  37. else if (2048-querylen < 200)
  38. {
  39. new whereclause[32];
  40. format(whereclause, sizeof(whereclause), " WHERE `id`=%d", sqlplayerid);
  41. strcat(query, whereclause, 2048);
  42. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  43. format(query, 2048, "UPDATE `%s` SET ", table);
  44. }
  45. else if (strfind(query, "=", true) != -1) strcat(query, ",", 2048);
  46. return 1;
  47. }
  48. stock SQLUpdateFinish(query[], table[], sqlplayerid)
  49. {
  50. if (strcmp(query, "WHERE id=", false) == 0) mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  51. else
  52. {
  53. new whereclause[32];
  54. format(whereclause, sizeof(whereclause), " WHERE id=%d", sqlplayerid);
  55. strcat(query, whereclause, 2048);
  56. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  57. format(query, 2048, "UPDATE `%s` SET ", table);
  58. }
  59. return 1;
  60. }
  61. stock SaveInteger(query[], table[], sqlid, Value[], Integer)
  62. {
  63. SQLUpdateBuild(query, table, sqlid);
  64. new updval[64];
  65. format(updval, sizeof(updval), "`%s`=%d", Value, Integer);
  66. strcat(query, updval, 2048);
  67. return 1;
  68. }
  69. stock SaveString(query[], table[], sqlid, Value[], String[])
  70. {
  71. SQLUpdateBuild(query, table, sqlid);
  72. new escapedstring[160], string[160];
  73. mysql_escape_string(String, escapedstring);
  74. format(string, sizeof(string), "`%s`='%s'", Value, escapedstring);
  75. strcat(query, string, 2048);
  76. return 1;
  77. }
  78. stock SaveFloat(query[], table[], sqlid, Value[], Float:Number)
  79. {
  80. new flotostr[32];
  81. format(flotostr, sizeof(flotostr), "%0.2f", Number);
  82. SaveString(query, table, sqlid, Value, flotostr);
  83. return 1;
  84. }
  85. //--------------------------------[ FUNCTIONS ]---------------------------
  86. PinLogin(playerid)
  87. {
  88. new string[128];
  89. mysql_format(MainPipeline, string, sizeof(string), "SELECT `Pin` FROM `accounts` WHERE `id` = %d", GetPlayerSQLId(playerid));
  90. mysql_tquery(MainPipeline, string, "OnPinCheck", "i", playerid);
  91. return 1;
  92. }
  93. //--------------------------------[ INITIATE/EXIT ]---------------------------
  94. // g_mysql_Init()
  95. // Description: Called with Gamemode Init.
  96. stock g_mysql_Init()
  97. {
  98. new SQL_HOST[64], SQL_DB[64], SQL_USER[32], SQL_PASS[128], SQL_DEBUG, SQL_DEBUGLOG;
  99. new SQL_SHOST[64], SQL_SDB[64], SQL_SUSER[32], SQL_SPASS[128];
  100. new fileString[128], File: fileHandle = fopen("mysql.cfg", io_read);
  101. while(fread(fileHandle, fileString, sizeof(fileString))) {
  102. if(ini_GetValue(fileString, "HOST", SQL_HOST, sizeof(SQL_HOST))) continue;
  103. if(ini_GetValue(fileString, "DB", SQL_DB, sizeof(SQL_DB))) continue;
  104. if(ini_GetValue(fileString, "USER", SQL_USER, sizeof(SQL_USER))) continue;
  105. if(ini_GetValue(fileString, "PASS", SQL_PASS, sizeof(SQL_PASS))) continue;
  106. if(ini_GetInt(fileString, "SHOPAUTOMATED", ShopToggle)) continue;
  107. if(ini_GetValue(fileString, "SHOST", SQL_SHOST, sizeof(SQL_SHOST))) continue;
  108. if(ini_GetValue(fileString, "SDB", SQL_SDB, sizeof(SQL_SDB))) continue;
  109. if(ini_GetValue(fileString, "SUSER", SQL_SUSER, sizeof(SQL_SUSER))) continue;
  110. if(ini_GetValue(fileString, "SPASS", SQL_SPASS, sizeof(SQL_SPASS))) continue;
  111. if(ini_GetInt(fileString, "SERVER", servernumber)) continue;
  112. if(ini_GetInt(fileString, "BETASERVER", betaserver)) continue;
  113. if(ini_GetInt(fileString, "DEBUG", SQL_DEBUG)) continue;
  114. if(ini_GetInt(fileString, "DEBUGLOG", SQL_DEBUGLOG)) continue;
  115. }
  116. fclose(fileHandle);
  117. mysql_log(NONE); // Has to be NONE for some the server will crash (runs out of memory)
  118. MainPipeline = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS, SQL_DB);
  119. printf("[MySQL] (Main Pipelines) Connecting to %s...", SQL_HOST);
  120. if(mysql_errno(MainPipeline) != 0)
  121. {
  122. printf("[MySQL] (MainPipeline) Fatal Error! Could not connect to MySQL: Host %s - DB: %s - User: %s", SQL_HOST, SQL_DB, SQL_USER);
  123. print("[MySQL] Note: Make sure that you have provided the correct connection credentials.");
  124. printf("[MySQL] Error number: %d", mysql_errno(MainPipeline));
  125. SendRconCommand("exit");
  126. }
  127. else print("[MySQL] (MainPipeline) Connection successful toward MySQL Database Server!");
  128. if(ShopToggle == 1)
  129. {
  130. ShopPipeline = mysql_connect(SQL_SHOST, SQL_SUSER, SQL_SPASS, SQL_SDB);
  131. printf("[MySQL] (Shop Pipelines) Connecting to %s...", SQL_SHOST);
  132. if(mysql_errno(ShopPipeline) != 0)
  133. {
  134. printf("[MySQL] (ShopPipeline) Fatal Error! Could not connect to MySQL: Host %s - DB: %s - User: %s", SQL_SHOST, SQL_SDB, SQL_SUSER);
  135. print("[MySQL] Note: Make sure that you have provided the correct connection credentials.");
  136. printf("[MySQL] Error number: %d", mysql_errno(ShopPipeline));
  137. //SendRconCommand("exit");
  138. }
  139. else print("[MySQL] (ShopPipeline) Connection successful toward MySQL Database Server!");
  140. }
  141. InitiateGamemode(); // Start the server
  142. return 1;
  143. }
  144. // g_mysql_Exit()
  145. // Description: Called with Gamemode Exit.
  146. stock g_mysql_Exit()
  147. {
  148. mysql_close(MainPipeline);
  149. if(ShopToggle == 1) mysql_close(ShopPipeline);
  150. return 1;
  151. }
  152. //--------------------------------[ CALLBACKS ]--------------------------------
  153. forward OnQueryFinish(resultid, extraid, handleid);
  154. public OnQueryFinish(resultid, extraid, handleid)
  155. {
  156. new rows, fields, value;
  157. szMiscArray[0] = 0;
  158. if(resultid != SENDDATA_THREAD) {
  159. if(extraid != INVALID_PLAYER_ID) {
  160. if(g_arrQueryHandle{extraid} != -1 && g_arrQueryHandle{extraid} != handleid) return 0;
  161. }
  162. cache_get_row_count(rows);
  163. cache_get_field_count(fields);
  164. }
  165. switch(resultid)
  166. {
  167. case LOADSALEDATA_THREAD:
  168. {
  169. if(rows > 0)
  170. {
  171. for(new i;i < rows;i++)
  172. {
  173. new szResult[32], szField[15];
  174. for(new z = 0; z < MAX_ITEMS; z++)
  175. {
  176. format(szField, sizeof(szField), "TotalSold%d", z);
  177. cache_get_value_name(i, szField, szResult);
  178. AmountSold[z] = strval(szResult);
  179. //ShopItems[z][sSold] = strval(szResult);
  180. format(szField, sizeof(szField), "AmountMade%d", z);
  181. cache_get_value_name(i, szField, szResult);
  182. AmountMade[z] = strval(szResult);
  183. //ShopItems[z][sMade] = strval(szResult);
  184. printf("TotalSold%d: %d | AmountMade%d: %d", z, AmountSold[z], z, AmountMade[z]);
  185. }
  186. new result[128];
  187. cache_get_value_name(i, "TotalSoldMicro", result);
  188. sscanf(result, MicroSpecifier, AmountSoldMicro);
  189. cache_get_value_name(i, "AmountMadeMicro", result);
  190. sscanf(result, MicroSpecifier, AmountMadeMicro);
  191. for(new m = 0; m < MAX_MICROITEMS; m++)
  192. {
  193. printf("TotalSoldMicro%d: %d | AmountMadeMicro%d: %d", m, AmountSoldMicro[m], m, AmountMadeMicro[m]);
  194. }
  195. break;
  196. }
  197. }
  198. else
  199. {
  200. mysql_tquery(MainPipeline, "INSERT INTO `sales` (`Month`) VALUES (NOW())", "OnQueryFinish", "i", SENDDATA_THREAD);
  201. mysql_tquery(MainPipeline, "SELECT * FROM `sales` WHERE `Month` > NOW() - INTERVAL 1 MONTH", "OnQueryFinish", "iii", LOADSALEDATA_THREAD, INVALID_PLAYER_ID, -1);
  202. print("[LOADSALEDATA] Inserted new row into `sales`");
  203. }
  204. }
  205. case LOADSHOPDATA_THREAD:
  206. {
  207. for(new i;i < rows;i++)
  208. {
  209. new szResult[32], szField[14];
  210. for(new z = 0; z < MAX_ITEMS; z++)
  211. {
  212. format(szField, sizeof(szField), "Price%d", z);
  213. cache_get_value_name(i, szField, szResult);
  214. ShopItems[z][sItemPrice] = strval(szResult);
  215. Price[z] = strval(szResult);
  216. if(ShopItems[z][sItemPrice] == 0) ShopItems[z][sItemPrice] = 99999999;
  217. printf("Price%d: %d", z, ShopItems[z][sItemPrice]);
  218. }
  219. new result[128];
  220. cache_get_value_name(i, "MicroPrices", result);
  221. sscanf(result, MicroSpecifier, MicroItems);
  222. for(new m = 0; m < MAX_MICROITEMS; m++)
  223. {
  224. if(MicroItems[m] == 0) MicroItems[m] = 99999999;
  225. printf("MicroPrice%d: %d", m, MicroItems[m]);
  226. }
  227. //printf("[LOADSHOPDATA] Price0: %d, Price1: %d, Price2: %d, Price3: %d, Price4: %d, Price5: %d, Price6: %d, Price7: %d, Pricr8: %d, Price9: %d, Price10: %d", Price[0], Price[1], Price[2], Price[3], Price[4], Price[5], Price[6], Price[7], Price[8], Price[9], Price[10]);
  228. break;
  229. }
  230. }
  231. case LOADMOTDDATA_THREAD:
  232. {
  233. for(new i;i < rows;i++)
  234. {
  235. new szResult[32];
  236. cache_get_value_name(i, "gMOTD", GlobalMOTD);
  237. cache_get_value_name(i, "aMOTD", AdminMOTD);
  238. cache_get_value_name(i, "vMOTD", VIPMOTD);
  239. cache_get_value_name(i, "cMOTD", CAMOTD);
  240. cache_get_value_name(i, "pMOTD", pMOTD);
  241. cache_get_value_name_float(i, "ShopTechPay", ShopTechPay);
  242. cache_get_value_name(i, "GiftCode", GiftCode);
  243. cache_get_value_name_int(i, "GiftCodeBypass", GiftCodeBypass);
  244. cache_get_value_name(i, "SecurityCode", SecurityCode);
  245. cache_get_value_name_int(i, "ShopClosed", ShopClosed);
  246. cache_get_value_name_int(i, "RimMod", RimMod);
  247. cache_get_value_name_int(i, "CarVoucher", CarVoucher);
  248. cache_get_value_name_int(i, "PVIPVoucher", PVIPVoucher);
  249. cache_get_value_name_int(i, "GarageVW", GarageVW);
  250. cache_get_value_name_int(i, "PumpkinStock", PumpkinStock);
  251. cache_get_value_name_int(i, "HalloweenShop", HalloweenShop);
  252. cache_get_value_name_int(i, "PassComplexCheck", PassComplexCheck);
  253. cache_get_value_name(i, "prisonerMOTD", prisonerMOTD[0]);
  254. cache_get_value_name(i, "prisonerMOTD2", prisonerMOTD[1]);
  255. cache_get_value_name(i, "prisonerMOTD3", prisonerMOTD[2]);
  256. for(new x = 0; x < 7; x++)
  257. {
  258. format(szResult, sizeof(szResult), "GunPrice%d", x);
  259. cache_get_value_name_int(i, szResult, GunPrices[x]);
  260. }
  261. CallLocalFunction("LoadInactiveResourceSettings", "i", i);
  262. break;
  263. }
  264. }
  265. case LOADUSERDATA_THREAD:
  266. {
  267. if(IsPlayerConnected(extraid))
  268. {
  269. new szField[MAX_PLAYER_NAME], szResult[64];
  270. for(new row;row < rows;row++)
  271. {
  272. cache_get_value_name(row, "Username", szField, MAX_PLAYER_NAME);
  273. if(strcmp(szField, GetPlayerNameExt(extraid), true) != 0)
  274. {
  275. return 1;
  276. }
  277. cache_get_value_name_int(row, "id", PlayerInfo[extraid][pId]);
  278. cache_get_value_name_int(row, "Online", PlayerInfo[extraid][pOnline]);
  279. cache_get_value_name(row, "Email", PlayerInfo[extraid][pEmail]);
  280. cache_get_value_name(row, "IP", PlayerInfo[extraid][pIP]);
  281. cache_get_value_name(row, "SecureIP", PlayerInfo[extraid][pSecureIP]);
  282. cache_get_value_name_int(row, "ConnectedTime", PlayerInfo[extraid][pConnectHours]);
  283. cache_get_value_name(row, "BirthDate", PlayerInfo[extraid][pBirthDate]);
  284. cache_get_value_name_int(row, "Sex", PlayerInfo[extraid][pSex]);
  285. cache_get_value_name_int(row, "Band", PlayerInfo[extraid][pBanned]);
  286. cache_get_value_name_int(row, "PermBand", PlayerInfo[extraid][pPermaBanned]);
  287. cache_get_value_name_int(row, "Registered", PlayerInfo[extraid][pReg]);
  288. cache_get_value_name_int(row, "Warnings", PlayerInfo[extraid][pWarns]);
  289. cache_get_value_name_int(row, "Disabled", PlayerInfo[extraid][pDisabled]);
  290. cache_get_value_name_int(row, "Level", PlayerInfo[extraid][pLevel]);
  291. cache_get_value_name_int(row, "AdminLevel", PlayerInfo[extraid][pAdmin]);
  292. cache_get_value_name_int(row, "SeniorModerator", PlayerInfo[extraid][pSMod]);
  293. cache_get_value_name_int(row, "DonateRank", PlayerInfo[extraid][pDonateRank]);
  294. cache_get_value_name_int(row, "Respect", PlayerInfo[extraid][pExp]);
  295. cache_get_value_name_int(row, "Money", PlayerInfo[extraid][pCash]);
  296. cache_get_value_name_int(row, "Bank", PlayerInfo[extraid][pAccount]);
  297. cache_get_value_name_float(row, "pHealth", PlayerInfo[extraid][pHealth]);
  298. cache_get_value_name_float(row, "pArmor", PlayerInfo[extraid][pArmor]);
  299. cache_get_value_name_float(row, "pSHealth", PlayerInfo[extraid][pSHealth]);
  300. cache_get_value_name_int(row, "Int", PlayerInfo[extraid][pInt]);
  301. cache_get_value_name_int(row, "VirtualWorld", PlayerInfo[extraid][pVW]);
  302. cache_get_value_name_int(row, "Model", PlayerInfo[extraid][pModel]);
  303. cache_get_value_name_float(row, "SPos_x", PlayerInfo[extraid][pPos_x]);
  304. cache_get_value_name_float(row, "SPos_y", PlayerInfo[extraid][pPos_y]);
  305. cache_get_value_name_float(row, "SPos_z", PlayerInfo[extraid][pPos_z]);
  306. cache_get_value_name_float(row, "SPos_r", PlayerInfo[extraid][pPos_r]);
  307. cache_get_value_name_int(row, "BanAppealer", PlayerInfo[extraid][pBanAppealer]);
  308. cache_get_value_name_int(row, "PR", PlayerInfo[extraid][pPR]);
  309. cache_get_value_name_int(row, "HR", PlayerInfo[extraid][pHR]);
  310. cache_get_value_name_int(row, "AP", PlayerInfo[extraid][pAP]);
  311. cache_get_value_name_int(row, "Security", PlayerInfo[extraid][pSecurity]);
  312. cache_get_value_name_int(row, "ShopTech", PlayerInfo[extraid][pShopTech]);
  313. cache_get_value_name_int(row, "FactionModerator", PlayerInfo[extraid][pFactionModerator]);
  314. cache_get_value_name_int(row, "GangModerator", PlayerInfo[extraid][pGangModerator]);
  315. cache_get_value_name_int(row, "Undercover", PlayerInfo[extraid][pUndercover]);
  316. cache_get_value_name_int(row, "TogReports", PlayerInfo[extraid][pTogReports]);
  317. cache_get_value_name_int(row, "Radio", PlayerInfo[extraid][pRadio]);
  318. cache_get_value_name_int(row, "RadioFreq", PlayerInfo[extraid][pRadioFreq]);
  319. cache_get_value_name_int(row, "UpgradePoints", PlayerInfo[extraid][gPupgrade]);
  320. cache_get_value_name_int(row, "Origin", PlayerInfo[extraid][pOrigin]);
  321. cache_get_value_name_int(row, "Muted", PlayerInfo[extraid][pMuted]);
  322. cache_get_value_name_int(row, "Crimes", PlayerInfo[extraid][pCrimes]);
  323. cache_get_value_name_int(row, "Accent", PlayerInfo[extraid][pAccent]);
  324. cache_get_value_name_int(row, "CHits", PlayerInfo[extraid][pCHits]);
  325. cache_get_value_name_int(row, "FHits", PlayerInfo[extraid][pFHits]);
  326. cache_get_value_name_int(row, "Arrested", PlayerInfo[extraid][pArrested]);
  327. cache_get_value_name_int(row, "Phonebook", PlayerInfo[extraid][pPhoneBook]);
  328. cache_get_value_name_int(row, "LottoNr", PlayerInfo[extraid][pLottoNr]);
  329. cache_get_value_name_int(row, "Fishes", PlayerInfo[extraid][pFishes]);
  330. cache_get_value_name_int(row, "BiggestFish", PlayerInfo[extraid][pBiggestFish]);
  331. cache_get_value_name_int(row, "Job", PlayerInfo[extraid][pJob]);
  332. cache_get_value_name_int(row, "Job2", PlayerInfo[extraid][pJob2]);
  333. cache_get_value_name_int(row, "Job3", PlayerInfo[extraid][pJob3]);
  334. cache_get_value_name_int(row, "Paycheck", PlayerInfo[extraid][pPayCheck]);
  335. cache_get_value_name_int(row, "HeadValue", PlayerInfo[extraid][pHeadValue]);
  336. cache_get_value_name_int(row, "JailTime", PlayerInfo[extraid][pJailTime]);
  337. cache_get_value_name_int(row, "WRestricted", PlayerInfo[extraid][pWRestricted]);
  338. cache_get_value_name_int(row, "Materials", PlayerInfo[extraid][pMats]);
  339. cache_get_value_name_int(row, "Crates", PlayerInfo[extraid][pCrates]);
  340. cache_get_value_name_int(row, "StaffBanned", PlayerInfo[extraid][pStaffBanned]);
  341. // PlayerInfo[extraid][pPot] = cache_get_value_name_int(row, "Pot");
  342. // PlayerInfo[extraid][pCrack] = cache_get_value_name_int(row, "Crack");
  343. cache_get_value_name_int(row, "Nation", PlayerInfo[extraid][pNation]);
  344. cache_get_value_name_int(row, "Leader", PlayerInfo[extraid][pLeader]);
  345. cache_get_value_name_int(row, "Member", PlayerInfo[extraid][pMember]);
  346. cache_get_value_name_int(row, "Division", PlayerInfo[extraid][pDivision]);
  347. cache_get_value_name(row, "Badge", PlayerInfo[extraid][pBadge]);
  348. cache_get_value_name_int(row, "Rank", PlayerInfo[extraid][pRank]);
  349. cache_get_value_name_int(row, "DetSkill", PlayerInfo[extraid][pDetSkill]);
  350. cache_get_value_name_int(row, "SexSkill", PlayerInfo[extraid][pSexSkill]);
  351. cache_get_value_name_int(row, "BoxSkill", PlayerInfo[extraid][pBoxSkill]);
  352. cache_get_value_name_int(row, "LawSkill", PlayerInfo[extraid][pLawSkill]);
  353. cache_get_value_name_int(row, "MechSkill", PlayerInfo[extraid][pMechSkill]);
  354. cache_get_value_name_int(row, "TruckSkill", PlayerInfo[extraid][pTruckSkill]);
  355. cache_get_value_name_int(row, "DrugSmuggler", PlayerInfo[extraid][pDrugSmuggler]);
  356. cache_get_value_name_int(row, "ArmsSkill", PlayerInfo[extraid][pArmsSkill]);
  357. cache_get_value_name_int(row, "FishSkill", PlayerInfo[extraid][pFishSkill]);
  358. cache_get_value_name_int(row, "FightingStyle", PlayerInfo[extraid][pFightStyle]);
  359. cache_get_value_name_int(row, "PhoneNr", PlayerInfo[extraid][pPnumber]);
  360. cache_get_value_name_int(row, "Apartment", PlayerInfo[extraid][pPhousekey]);
  361. cache_get_value_name_int(row, "Apartment2", PlayerInfo[extraid][pPhousekey2]);
  362. cache_get_value_name_int(row, "Apartment3", PlayerInfo[extraid][pPhousekey3]);
  363. cache_get_value_name_int(row, "Renting", PlayerInfo[extraid][pRenting]);
  364. cache_get_value_name_int(row, "CarLic", PlayerInfo[extraid][pCarLic]);
  365. cache_get_value_name_int(row, "FlyLic", PlayerInfo[extraid][pFlyLic]);
  366. cache_get_value_name_int(row, "BoatLic", PlayerInfo[extraid][pBoatLic]);
  367. cache_get_value_name_int(row, "FishLic", PlayerInfo[extraid][pFishLic]);
  368. cache_get_value_name_int(row, "CheckCash", PlayerInfo[extraid][pCheckCash]);
  369. cache_get_value_name_int(row, "Checks", PlayerInfo[extraid][pChecks]);
  370. cache_get_value_name_int(row, "GunLic", PlayerInfo[extraid][pGunLic]);
  371. for(new i = 0; i < 12; i++)
  372. {
  373. format(szField, sizeof(szField), "Gun%d", i);
  374. cache_get_value_name_int(row, szField, PlayerInfo[extraid][pGuns][i]);
  375. }
  376. cache_get_value_name_int(row, "DrugsTime", PlayerInfo[extraid][pDrugsTime]);
  377. cache_get_value_name_int(row, "LawyerTime", PlayerInfo[extraid][pLawyerTime]);
  378. cache_get_value_name_int(row, "LawyerFreeTime", PlayerInfo[extraid][pLawyerFreeTime]);
  379. cache_get_value_name_int(row, "MechTime", PlayerInfo[extraid][pMechTime]);
  380. cache_get_value_name_int(row, "SexTime", PlayerInfo[extraid][pSexTime]);
  381. cache_get_value_name_int(row, "PayDay", PlayerInfo[extraid][pConnectSeconds]);
  382. cache_get_value_name_int(row, "PayDayHad", PlayerInfo[extraid][pPayDayHad]);
  383. cache_get_value_name_int(row, "CDPlayer", PlayerInfo[extraid][pCDPlayer]);
  384. cache_get_value_name_int(row, "Dice", PlayerInfo[extraid][pDice]);
  385. cache_get_value_name_int(row, "Spraycan", PlayerInfo[extraid][pSpraycan]);
  386. cache_get_value_name_int(row, "Rope", PlayerInfo[extraid][pRope]);
  387. cache_get_value_name_int(row, "Rags", PlayerInfo[extraid][pRags]);
  388. cache_get_value_name_int(row, "Cigars", PlayerInfo[extraid][pCigar]);
  389. cache_get_value_name_int(row, "Sprunk", PlayerInfo[extraid][pSprunk]);
  390. cache_get_value_name_int(row, "Bombs", PlayerInfo[extraid][pBombs]);
  391. cache_get_value_name_int(row, "Wins", PlayerInfo[extraid][pWins]);
  392. cache_get_value_name_int(row, "Loses", PlayerInfo[extraid][pLoses]);
  393. cache_get_value_name_int(row, "Tutorial", PlayerInfo[extraid][pTut]);
  394. cache_get_value_name_int(row, "OnDuty", PlayerInfo[extraid][pDuty]);
  395. cache_get_value_name_int(row, "Hospital", PlayerInfo[extraid][pHospital]);
  396. cache_get_value_name_int(row, "MarriedID", PlayerInfo[extraid][pMarriedID]);
  397. cache_get_value_name(row, "ContractBy", PlayerInfo[extraid][pContractBy]);
  398. cache_get_value_name(row, "ContractDetail", PlayerInfo[extraid][pContractDetail]);
  399. cache_get_value_name_int(row, "WantedLevel", PlayerInfo[extraid][pWantedLevel]);
  400. cache_get_value_name_int(row, "Insurance", PlayerInfo[extraid][pInsurance]);
  401. cache_get_value_name_int(row, "911Muted", PlayerInfo[extraid][p911Muted]);
  402. cache_get_value_name_int(row, "NewMuted", PlayerInfo[extraid][pNMute]);
  403. cache_get_value_name_int(row, "NewMutedTotal", PlayerInfo[extraid][pNMuteTotal]);
  404. cache_get_value_name_int(row, "AdMuted", PlayerInfo[extraid][pADMute]);
  405. cache_get_value_name_int(row, "AdMutedTotal", PlayerInfo[extraid][pADMuteTotal]);
  406. cache_get_value_name_int(row, "HelpMute", PlayerInfo[extraid][pHelpMute]);
  407. cache_get_value_name_int(row, "Helper", PlayerInfo[extraid][pHelper]);
  408. cache_get_value_name_int(row, "ReportMuted", PlayerInfo[extraid][pRMuted]);
  409. cache_get_value_name_int(row, "ReportMutedTotal", PlayerInfo[extraid][pRMutedTotal]);
  410. cache_get_value_name_int(row, "ReportMutedTime", PlayerInfo[extraid][pRMutedTime]);
  411. cache_get_value_name_int(row, "DMRMuted", PlayerInfo[extraid][pDMRMuted]);
  412. cache_get_value_name_int(row, "VIPMuted", PlayerInfo[extraid][pVMuted]);
  413. cache_get_value_name_int(row, "VIPMutedTime", PlayerInfo[extraid][pVMutedTime]);
  414. cache_get_value_name_int(row, "GiftTime", PlayerInfo[extraid][pGiftTime]);
  415. cache_get_value_name_int(row, "AdvisorDutyHours", PlayerInfo[extraid][pDutyHours]);
  416. cache_get_value_name_int(row, "AcceptedHelp", PlayerInfo[extraid][pAcceptedHelp]);
  417. cache_get_value_name_int(row, "AcceptReport", PlayerInfo[extraid][pAcceptReport]);
  418. cache_get_value_name_int(row, "ShopTechOrders", PlayerInfo[extraid][pShopTechOrders]);
  419. cache_get_value_name_int(row, "TrashReport", PlayerInfo[extraid][pTrashReport]);
  420. cache_get_value_name_int(row, "GangWarn", PlayerInfo[extraid][pGangWarn]);
  421. cache_get_value_name_int(row, "CSFBanned", PlayerInfo[extraid][pCSFBanned]);
  422. cache_get_value_name_int(row, "VIPInviteDay", PlayerInfo[extraid][pVIPInviteDay]);
  423. cache_get_value_name_int(row, "TempVIP", PlayerInfo[extraid][pTempVIP]);
  424. cache_get_value_name_int(row, "BuddyInvite", PlayerInfo[extraid][pBuddyInvited]);
  425. cache_get_value_name_int(row, "Tokens", PlayerInfo[extraid][pTokens]);
  426. cache_get_value_name_int(row, "PTokens", PlayerInfo[extraid][pPaintTokens]);
  427. cache_get_value_name_int(row, "TriageTime", PlayerInfo[extraid][pTriageTime]);
  428. cache_get_value_name(row, "PrisonedBy", PlayerInfo[extraid][pPrisonedBy]);
  429. cache_get_value_name(row, "PrisonReason", PlayerInfo[extraid][pPrisonReason]);
  430. cache_get_value_name_int(row, "TaxiLicense", PlayerInfo[extraid][pTaxiLicense]);
  431. cache_get_value_name_int(row, "TicketTime", PlayerInfo[extraid][pTicketTime]);
  432. cache_get_value_name_int(row, "Screwdriver", PlayerInfo[extraid][pScrewdriver]);
  433. cache_get_value_name_int(row, "Smslog", PlayerInfo[extraid][pSmslog]);
  434. cache_get_value_name_int(row, "Wristwatch", PlayerInfo[extraid][pWristwatch]);
  435. cache_get_value_name_int(row, "Surveillance", PlayerInfo[extraid][pSurveillance]);
  436. cache_get_value_name_int(row, "Tire", PlayerInfo[extraid][pTire]);
  437. cache_get_value_name_int(row, "Firstaid", PlayerInfo[extraid][pFirstaid]);
  438. cache_get_value_name_int(row, "Rccam", PlayerInfo[extraid][pRccam]);
  439. cache_get_value_name_int(row, "Receiver", PlayerInfo[extraid][pReceiver]);
  440. cache_get_value_name_int(row, "GPS", PlayerInfo[extraid][pGPS]);
  441. cache_get_value_name_int(row, "Sweep", PlayerInfo[extraid][pSweep]);
  442. cache_get_value_name_int(row, "SweepLeft", PlayerInfo[extraid][pSweepLeft]);
  443. cache_get_value_name_int(row, "Bugged", PlayerInfo[extraid][pBugged]);
  444. cache_get_value_name_int(row, "pWExists", PlayerInfo[extraid][pWeedObject]);
  445. cache_get_value_name_int(row, "pWSeeds", PlayerInfo[extraid][pWSeeds]);
  446. cache_get_value_name(row, "Warrants", PlayerInfo[extraid][pWarrant]);
  447. cache_get_value_name_int(row, "JudgeJailTime", PlayerInfo[extraid][pJudgeJailTime]);
  448. cache_get_value_name_int(row, "JudgeJailType", PlayerInfo[extraid][pJudgeJailType]);
  449. cache_get_value_name_int(row, "BeingSentenced", PlayerInfo[extraid][pBeingSentenced]);
  450. cache_get_value_name_int(row, "ProbationTime", PlayerInfo[extraid][pProbationTime]);
  451. cache_get_value_name_int(row, "DMKills", PlayerInfo[extraid][pDMKills]);
  452. cache_get_value_name_int(row, "Order", PlayerInfo[extraid][pOrder]);
  453. cache_get_value_name_int(row, "OrderConfirmed", PlayerInfo[extraid][pOrderConfirmed]);
  454. cache_get_value_name_int(row, "CallsAccepted", PlayerInfo[extraid][pCallsAccepted]);
  455. cache_get_value_name_int(row, "PatientsDelivered", PlayerInfo[extraid][pPatientsDelivered]);
  456. cache_get_value_name_int(row, "LiveBanned", PlayerInfo[extraid][pLiveBanned]);
  457. cache_get_value_name_int(row, "FreezeBank", PlayerInfo[extraid][pFreezeBank]);
  458. cache_get_value_name_int(row, "FreezeHouse", PlayerInfo[extraid][pFreezeHouse]);
  459. cache_get_value_name_int(row, "FreezeCar", PlayerInfo[extraid][pFreezeCar]);
  460. cache_get_value_name_int(row, "Firework", PlayerInfo[extraid][pFirework]);
  461. cache_get_value_name_int(row, "Boombox", PlayerInfo[extraid][pBoombox]);
  462. cache_get_value_name_int(row, "Hydration", PlayerInfo[extraid][pHydration]);
  463. cache_get_value_name_int(row, "Speedo", PlayerInfo[extraid][pSpeedo]);
  464. cache_get_value_name_int(row, "DoubleEXP", PlayerInfo[extraid][pDoubleEXP]);
  465. cache_get_value_name_int(row, "EXPToken", PlayerInfo[extraid][pEXPToken]);
  466. cache_get_value_name_int(row, "RacePlayerLaps", PlayerInfo[extraid][pRacePlayerLaps]);
  467. cache_get_value_name_int(row, "Ringtone", PlayerInfo[extraid][pRingtone]);
  468. cache_get_value_name_int(row, "Wallpaper", PlayerInfo[extraid][pWallpaper]);
  469. cache_get_value_name_int(row, "VIPM", PlayerInfo[extraid][pVIPM]);
  470. cache_get_value_name_int(row, "VIPMO", PlayerInfo[extraid][pVIPMO]);
  471. cache_get_value_name_int(row, "VIPExpire", PlayerInfo[extraid][pVIPExpire]);
  472. cache_get_value_name_int(row, "GVip", PlayerInfo[extraid][pGVip]);
  473. cache_get_value_name_int(row, "Watchdog", PlayerInfo[extraid][pWatchdog]);
  474. cache_get_value_name_int(row, "VIPSold", PlayerInfo[extraid][pVIPSold]);
  475. cache_get_value_name_int(row, "GoldBoxTokens", PlayerInfo[extraid][pGoldBoxTokens]);
  476. cache_get_value_name_int(row, "DrawChance", PlayerInfo[extraid][pRewardDrawChance]);
  477. cache_get_value_name_float(row, "RewardHours", PlayerInfo[extraid][pRewardHours]);
  478. cache_get_value_name_int(row, "CarsRestricted", PlayerInfo[extraid][pRVehRestricted]);
  479. cache_get_value_name_int(row, "LastCarWarning", PlayerInfo[extraid][pLastRVehWarn]);
  480. cache_get_value_name_int(row, "CarWarns", PlayerInfo[extraid][pRVehWarns]);
  481. cache_get_value_name_int(row, "Flagged", PlayerInfo[extraid][pFlagged]);
  482. cache_get_value_name_int(row, "Paper", PlayerInfo[extraid][pPaper]);
  483. cache_get_value_name_int(row, "MailEnabled", PlayerInfo[extraid][pMailEnabled]);
  484. cache_get_value_name_int(row, "Mailbox", PlayerInfo[extraid][pMailbox]);
  485. cache_get_value_name_int(row, "Business", PlayerInfo[extraid][pBusiness]);
  486. cache_get_value_name_int(row, "BusinessRank", PlayerInfo[extraid][pBusinessRank]);
  487. cache_get_value_name_int(row, "TreasureSkill", PlayerInfo[extraid][pTreasureSkill]);
  488. cache_get_value_name_int(row, "MetalDetector", PlayerInfo[extraid][pMetalDetector]);
  489. cache_get_value_name_int(row, "HelpedBefore", PlayerInfo[extraid][pHelpedBefore]);
  490. cache_get_value_name_int(row, "Trickortreat", PlayerInfo[extraid][pTrickortreat]);
  491. cache_get_value_name_int(row, "LastCharmReceived", PlayerInfo[extraid][pLastCharmReceived]);
  492. cache_get_value_name_int(row, "RHMutes", PlayerInfo[extraid][pRHMutes]);
  493. cache_get_value_name_int(row, "RHMuteTime", PlayerInfo[extraid][pRHMuteTime]);
  494. cache_get_value_name_int(row, "GiftCode", PlayerInfo[extraid][pGiftCode]);
  495. cache_get_value_name_int(row, "Table", PlayerInfo[extraid][pTable]);
  496. cache_get_value_name_int(row, "OpiumSeeds", PlayerInfo[extraid][pOpiumSeeds]);
  497. cache_get_value_name_int(row, "RawOpium", PlayerInfo[extraid][pRawOpium]);
  498. //PlayerInfo[extraid][pHeroin] = cache_get_value_name_int(row, "Heroin", value);
  499. cache_get_value_name_int(row, "Syringe", PlayerInfo[extraid][pSyringes]);
  500. cache_get_value_name_int(row, "Skins", PlayerInfo[extraid][pSkins]);
  501. cache_get_value_name_int(row, "Fitness", PlayerInfo[extraid][pFitness]);
  502. cache_get_value_name_int(row, "ForcePasswordChange", PlayerInfo[extraid][pForcePasswordChange]);
  503. cache_get_value_name_int(row, "Credits", PlayerInfo[extraid][pCredits]);
  504. cache_get_value_name_int(row, "HealthCare", PlayerInfo[extraid][pHealthCare]);
  505. cache_get_value_name_int(row, "TotalCredits", PlayerInfo[extraid][pTotalCredits]);
  506. //PlayerInfo[extraid][pReceivedCredits] = cache_get_value_name_int(row, "ReceivedCredits", value);
  507. cache_get_value_name_int(row, "RimMod", PlayerInfo[extraid][pRimMod]);
  508. cache_get_value_name_int(row, "Tazer", PlayerInfo[extraid][pHasTazer]);
  509. cache_get_value_name_int(row, "Cuff", PlayerInfo[extraid][pHasCuff]);
  510. cache_get_value_name_int(row, "CarVoucher", PlayerInfo[extraid][pCarVoucher]);
  511. cache_get_value_name(row, "ReferredBy", PlayerInfo[extraid][pReferredBy]);
  512. cache_get_value_name_int(row, "PendingRefReward", PlayerInfo[extraid][pPendingRefReward]);
  513. cache_get_value_name_int(row, "Refers", PlayerInfo[extraid][pRefers]);
  514. cache_get_value_name_int(row, "Famed", PlayerInfo[extraid][pFamed]);
  515. cache_get_value_name_int(row, "FamedMuted", PlayerInfo[extraid][pFMuted]);
  516. cache_get_value_name_int(row, "DefendTime", PlayerInfo[extraid][pDefendTime]);
  517. cache_get_value_name_int(row, "VehicleSlot", PlayerInfo[extraid][pVehicleSlot]);
  518. cache_get_value_name_int(row, "PVIPVoucher", PlayerInfo[extraid][pPVIPVoucher]);
  519. cache_get_value_name_int(row, "ToySlot", PlayerInfo[extraid][pToySlot]);
  520. cache_get_value_name_int(row, "RFLTeam", PlayerInfo[extraid][pRFLTeam]);
  521. cache_get_value_name_int(row, "RFLTeamL", PlayerInfo[extraid][pRFLTeamL]);
  522. cache_get_value_name_int(row, "VehVoucher", PlayerInfo[extraid][pVehVoucher]);
  523. cache_get_value_name_int(row, "SVIPVoucher", PlayerInfo[extraid][pSVIPVoucher]);
  524. cache_get_value_name_int(row, "GVIPVoucher", PlayerInfo[extraid][pGVIPVoucher]);
  525. cache_get_value_name_int(row, "GiftVoucher", PlayerInfo[extraid][pGiftVoucher]);
  526. cache_get_value_name_int(row, "FallIntoFun", PlayerInfo[extraid][pFallIntoFun]);
  527. cache_get_value_name_int(row, "HungerVoucher", PlayerInfo[extraid][pHungerVoucher]);
  528. cache_get_value_name_int(row, "BoughtCure", PlayerInfo[extraid][pBoughtCure]);
  529. cache_get_value_name_int(row, "Vials", PlayerInfo[extraid][pVials]);
  530. cache_get_value_name_int(row, "AdvertVoucher", PlayerInfo[extraid][pAdvertVoucher]);
  531. cache_get_value_name_int(row, "ShopCounter", PlayerInfo[extraid][pShopCounter]);
  532. cache_get_value_name_int(row, "ShopNotice", PlayerInfo[extraid][pShopNotice]);
  533. cache_get_value_name_int(row, "SVIPExVoucher", PlayerInfo[extraid][pSVIPExVoucher]);
  534. cache_get_value_name_int(row, "GVIPExVoucher", PlayerInfo[extraid][pGVIPExVoucher]);
  535. cache_get_value_name_int(row, "VIPSellable", PlayerInfo[extraid][pVIPSellable]);
  536. cache_get_value_name_int(row, "ReceivedPrize", PlayerInfo[extraid][pReceivedPrize]);
  537. cache_get_value_name_int(row, "VIPSpawn", PlayerInfo[extraid][pVIPSpawn]);
  538. cache_get_value_name_int(row, "FreeAdsDay", PlayerInfo[extraid][pFreeAdsDay]);
  539. cache_get_value_name_int(row, "FreeAdsLeft", PlayerInfo[extraid][pFreeAdsLeft]);
  540. cache_get_value_name_int(row, "BuddyInvites", PlayerInfo[extraid][pBuddyInvites]);
  541. cache_get_value_name_int(row, "ReceivedBGift", PlayerInfo[extraid][pReceivedBGift]);
  542. cache_get_value_name_int(row, "pVIPJob", PlayerInfo[extraid][pVIPJob]);
  543. cache_get_value_name_int(row, "LastBirthday", PlayerInfo[extraid][pLastBirthday]);
  544. cache_get_value_name_int(row, "AccountRestricted", PlayerInfo[extraid][pAccountRestricted]);
  545. cache_get_value_name_int(row, "Watchlist", PlayerInfo[extraid][pWatchlist]);
  546. cache_get_value_name_int(row, "WatchlistTime", PlayerInfo[extraid][pWatchlistTime]);
  547. cache_get_value_name_int(row, "Backpack", PlayerInfo[extraid][pBackpack]);
  548. cache_get_value_name_int(row, "BEquipped", PlayerInfo[extraid][pBEquipped]);
  549. cache_get_value_name_int(row, "BStoredH", PlayerInfo[extraid][pBStoredH]);
  550. cache_get_value_name_int(row, "BStoredV", PlayerInfo[extraid][pBStoredV]);
  551. cache_get_value_name_int(row, "BRTimeout", PlayerInfo[extraid][pBugReportTimeout]);
  552. cache_get_value_name_int(row, "PrisonCredits", PlayerInfo[extraid][pPrisonCredits]);
  553. cache_get_value_name_int(row, "PrisonMaterials", PlayerInfo[extraid][pPrisonMaterials]);
  554. cache_get_value_name_int(row, "PrisonWineTime", PlayerInfo[extraid][pPrisonWineTime]);
  555. cache_get_value_name_int(row, "PrisonCell", PlayerInfo[extraid][pPrisonCell]);
  556. cache_get_value_name_int(row, "CopKit", value);
  557. SetPVarInt(extraid, "MedVestKit", value);
  558. cache_get_value_name_int(row, "PrisonSoap", value);
  559. SetPVarInt(extraid, "pPrisonSoap", value);
  560. cache_get_value_name_int(row, "PrisonSugar", value);
  561. SetPVarInt(extraid, "pPrisonSugar", value);
  562. cache_get_value_name_int(row, "PrisonBread", value);
  563. SetPVarInt(extraid, "pPrisonBread", value);
  564. cache_get_value_name_int(row, "PrisonShank", value);
  565. SetPVarInt(extraid, "pPrisonShank", value);
  566. cache_get_value_name_int(row, "PrisonShankOut", value);
  567. SetPVarInt(extraid, "pPrisonShankOut", value);
  568. cache_get_value_name_int(row, "ShankUsages", value);
  569. SetPVarInt(extraid, "pShankUsages", value);
  570. cache_get_value_name_int(row, "PrisonWine", value);
  571. SetPVarInt(extraid, "pPrisonWine", value);
  572. cache_get_value_name_int(row, "PrisonMWine", value);
  573. SetPVarInt(extraid, "pPrisonMWine", value);
  574. cache_get_value_name_int(row, "PrisonChisel", value);
  575. SetPVarInt(extraid, "pPrisonChisel", value);
  576. cache_get_value_name_int(row, "PrisonCellChisel", value);
  577. SetPVarInt(extraid, "pPrisonCellChisel", value);
  578. cache_get_value_name_int(row, "FishingSkill", PlayerInfo[extraid][pFishingSkill]);
  579. cache_get_value_name_int(row, "FishWeight", PlayerInfo[extraid][pFishWeight]);
  580. cache_get_value_name_int(row, "GarbageSkill", PlayerInfo[extraid][pGarbageSkill]);
  581. for(new i = 0; i < 12; i++) {
  582. format(szField, sizeof(szField), "BItem%d", i);
  583. cache_get_value_name_int(row, szField, PlayerInfo[extraid][pBItems][i]);
  584. }
  585. for(new i = 0; i < sizeof(Drugs); i++) {
  586. format(szField, sizeof(szField), "BDrug%d", i);
  587. cache_get_value_name_int(row, szField, PlayerInfo[extraid][pBDrugs][i]);
  588. }
  589. cache_get_value_name_int(row, "pDigCooldown", PlayerInfo[extraid][pDigCooldown]);
  590. cache_get_value_name_int(row, "ToolBox", PlayerInfo[extraid][pToolBox]);
  591. cache_get_value_name_int(row, "CrowBar", PlayerInfo[extraid][pCrowBar]);
  592. cache_get_value_name_int(row, "CarLockPickSkill", PlayerInfo[extraid][pCarLockPickSkill]);
  593. cache_get_value_name_int(row, "LockPickVehCount", PlayerInfo[extraid][pLockPickVehCount]);
  594. cache_get_value_name_int(row, "LockPickTime", PlayerInfo[extraid][pLockPickTime]);
  595. cache_get_value_name_int(row, "SEC", PlayerInfo[extraid][pSEC]);
  596. cache_get_value_name_int(row, "BM", PlayerInfo[extraid][pBM]);
  597. cache_get_value_name_int(row, "ASM", PlayerInfo[extraid][pASM]);
  598. cache_get_value_name_int(row, "Isolated", PlayerInfo[extraid][pIsolated]);
  599. cache_get_value_name_int(row, "WantedJailTime", PlayerInfo[extraid][pWantedJailTime]);
  600. cache_get_value_name_int(row, "WantedJailFine", PlayerInfo[extraid][pWantedJailFine]);
  601. cache_get_value_name_int(row, "NextNameChange", PlayerInfo[extraid][pNextNameChange]);
  602. cache_get_value_name(row, "pExamineDesc", PlayerInfo[extraid][pExamineDesc]);
  603. cache_get_value_name(row, "FavStation", PlayerInfo[extraid][pFavStation]);
  604. // Austin's DP System
  605. cache_get_value_name_int(row, "pDedicatedPlayer", PlayerInfo[extraid][pDedicatedPlayer]);
  606. cache_get_value_name_int(row, "pDedicatedEnabled", PlayerInfo[extraid][pDedicatedEnabled]);
  607. cache_get_value_name_int(row, "pDedicatedMuted", PlayerInfo[extraid][pDedicatedMuted]);
  608. cache_get_value_name_int(row, "pDedicatedWarn", PlayerInfo[extraid][pDedicatedWarn]);
  609. cache_get_value_name(row, "mInventory", szResult);
  610. sscanf(szResult, MicroSpecifier, PlayerInfo[extraid][mInventory]);
  611. cache_get_value_name(row, "mPurchaseCounts", szResult);
  612. sscanf(szResult, MicroSpecifier, PlayerInfo[extraid][mPurchaseCount]);
  613. new result[256];
  614. cache_get_value_name(row, "mCooldowns", result);
  615. sscanf(result, MicroSpecifier, PlayerInfo[extraid][mCooldown]);
  616. cache_get_value_name(row, "mBoost", szResult);
  617. sscanf(szResult, "p<|>e<dd>", PlayerInfo[extraid][mBoost]);
  618. cache_get_value_name(row, "mShopNotice", szResult);
  619. sscanf(szResult, "p<|>dd", PlayerInfo[extraid][mShopCounter], PlayerInfo[extraid][mNotice]);
  620. cache_get_value_name_int(row, "zFuelCan", PlayerInfo[extraid][zFuelCan]);
  621. cache_get_value_name_int(row, "bTicket", PlayerInfo[extraid][bTicket]);
  622. // Austin's Punishment Revamp
  623. cache_get_value_name(row, "JailedInfo", szResult);
  624. sscanf(szResult, "p<|>e<ddddd>", PlayerInfo[extraid][pJailedInfo]);
  625. cache_get_value_name(row, "JailedWeapons", szResult);
  626. sscanf(szResult, "p<|>e<dddddddddddd>", PlayerInfo[extraid][pJailedWeapons]);
  627. cache_get_value_name_int(row, "pVIPMod", PlayerInfo[extraid][pVIPMod]);
  628. cache_get_value_name_int(row, "EmailConfirmed", value);
  629. SetPVarInt(extraid, "EmailConfirmed", value);
  630. cache_get_value_name_int(row, "pEventTokens", PlayerInfo[extraid][pEventTokens]);
  631. cache_get_value_name_int(row, "pBailPrice", PlayerInfo[extraid][pBailPrice]);
  632. cache_get_value_name_int(row, "pLastPoll", PlayerInfo[extraid][pLastPoll]);
  633. cache_get_value_name_int(row, "VIPGunsCount", PlayerInfo[extraid][pVIPGuncount]);
  634. cache_get_value_name_int(row, "GroupToyBone", PlayerInfo[extraid][pGroupToyBone]);
  635. cache_get_value_name_float(row, "GroupToy0", PlayerInfo[extraid][pGroupToy][0]);
  636. cache_get_value_name_float(row, "GroupToy1", PlayerInfo[extraid][pGroupToy][1]);
  637. cache_get_value_name_float(row, "GroupToy2", PlayerInfo[extraid][pGroupToy][2]);
  638. cache_get_value_name_float(row, "GroupToy3", PlayerInfo[extraid][pGroupToy][3]);
  639. cache_get_value_name_float(row, "GroupToy4", PlayerInfo[extraid][pGroupToy][4]);
  640. cache_get_value_name_float(row, "GroupToy5", PlayerInfo[extraid][pGroupToy][5]);
  641. cache_get_value_name_float(row, "GroupToy6", PlayerInfo[extraid][pGroupToy][6]);
  642. cache_get_value_name_float(row, "GroupToy7", PlayerInfo[extraid][pGroupToy][7]);
  643. cache_get_value_name_float(row, "GroupToy8", PlayerInfo[extraid][pGroupToy][8]);
  644. cache_get_value_name_int(row, "Pot", PlayerInfo[extraid][pDrugs][0]);
  645. cache_get_value_name_int(row, "Crack", PlayerInfo[extraid][pDrugs][1]);
  646. cache_get_value_name_int(row, "Meth", PlayerInfo[extraid][pDrugs][2]);
  647. cache_get_value_name_int(row, "Ecstasy", PlayerInfo[extraid][pDrugs][3]);
  648. cache_get_value_name_int(row, "Heroin", PlayerInfo[extraid][pDrugs][4]);
  649. cache_get_value_name_int(row, "Hitman", PlayerInfo[extraid][pHitman]);
  650. cache_get_value_name_int(row, "HitmanLeader", PlayerInfo[extraid][pHitmanLeader]);
  651. cache_get_value_name_int(row, "HitmanBlacklisted", PlayerInfo[extraid][pHitmanBlacklisted]);
  652. cache_get_value_name(row, "BlacklistReason", PlayerInfo[extraid][pBlacklistReason]);
  653. cache_get_value_name(row, "PollKeyA", PlayerInfo[extraid][pPollKey1]);
  654. cache_get_value_name(row, "PollKeyB", PlayerInfo[extraid][pPollKey2]);
  655. cache_get_value_name(row, "PollKeyC", PlayerInfo[extraid][pPollKey3]);
  656. if(isnull(PlayerInfo[extraid][pPollKey1])) format(PlayerInfo[extraid][pPollKey1], 12, "Invalid Key");
  657. if(isnull(PlayerInfo[extraid][pPollKey2])) format(PlayerInfo[extraid][pPollKey2], 12, "Invalid Key");
  658. if(isnull(PlayerInfo[extraid][pPollKey3])) format(PlayerInfo[extraid][pPollKey3], 12, "Invalid Key");
  659. cache_get_value_name_int(row, "FurnitureSlots", PlayerInfo[extraid][pFurnitureSlots]);
  660. cache_get_value_name(row, "DedicatedDaymarker", PlayerInfo[extraid][pDedicatedDaymarker]);
  661. cache_get_value_name(row, "DedicatedTimestamp", PlayerInfo[extraid][pDedicatedTimestamp]);
  662. cache_get_value_name_int(row, "DedicatedHours", PlayerInfo[extraid][pDedicatedHours]);
  663. cache_get_value_name_int(row, "WalkStyle", PlayerInfo[extraid][pWalkStyle]);
  664. if(PlayerInfo[extraid][pWalkStyle]) SetPlayerWalkingStyle(extraid, PlayerInfo[extraid][pWalkStyle]);
  665. /*for(new i = 0; i < MAX_POLLS; i++)
  666. {
  667. format(szField, sizeof(szField), "HasVoted%d", i);
  668. PlayerInfo[extraid][pGuns][i] = cache_get_value_name_int(row, szField);
  669. }*/
  670. // Jingles' Drug System:
  671. //for(new d; d != sizeof(Drugs); ++d) PlayerInfo[extraid][pDrugs][d] = cache_get_value_name_int(row, GetDrugName(d));
  672. //for(new d; d != sizeof(szIngredients); ++d) PlayerInfo[extraid][p_iIngredient][d] = cache_get_value_name_int(row, DS_Ingredients_GetSQLName(d));
  673. /*szMiscArray[0] = 0;
  674. for(new d; d != sizeof(Drugs); ++d)
  675. {
  676. format(szMiscArray, sizeof(szMiscArray), "Prison%s", GetDrugName(d));
  677. PlayerInfo[extraid][p_iPrisonDrug][d] = cache_get_value_name_int(row, szMiscArray);
  678. } old */
  679. /*cache_get_value_name(row, "PrisonDrugs", szResult);
  680. sscanf(szResult, "p<|>e<dddddddddddddd>", PlayerInfo[extraid][p_iPrisonDrug]);*/
  681. /*cache_get_value_name(row, "DrugQuality", szResult);
  682. sscanf(szResult, "p<|>e<dddddddddddddd>", PlayerInfo[extraid][p_iDrugQuality]);*/
  683. // Account settings:
  684. /*cache_get_value_name(row, "ToggledChats", szResult);
  685. sscanf(szResult, "p<|>e<dddddddddddddddddddd>", PlayerInfo[extraid][pToggledChats]);*/
  686. for(new c = 0; c < MAX_CHATSETS; c++) {
  687. format(szMiscArray, sizeof(szMiscArray), "ChatTog%d", c);
  688. cache_get_value_name_int(row, szMiscArray, PlayerInfo[extraid][pToggledChats][c]);
  689. }
  690. cache_get_value_name_int(row, "FlagCredits", PlayerInfo[extraid][pFlagCredits]);
  691. cache_get_value_name_int(row, "FlagClaimed", PlayerInfo[extraid][pFlagClaimed]);
  692. /*cache_get_value_name(row, "ChatboxSettings", szResult);
  693. sscanf(szResult, "p<|>e<dddddddddddddddddddd>", PlayerInfo[extraid][pChatbox]);*/
  694. if(PlayerInfo[extraid][pCredits] > 0)
  695. {
  696. new szLog[128];
  697. format(szLog, sizeof(szLog), "[LOGIN] [User: %s(%i)] [IP: %s] [Credits: %s]", GetPlayerNameEx(extraid), PlayerInfo[extraid][pId], GetPlayerIpEx(extraid), number_format(PlayerInfo[extraid][pCredits]));
  698. Log("logs/logincredits.log", szLog), print(szLog);
  699. }
  700. GetPartnerName(extraid);
  701. g_mysql_LoadPVehicles(extraid);
  702. LoadPlayerNonRPPoints(extraid);
  703. g_mysql_LoadPlayerToys(extraid);
  704. g_mysql_LoadFIFInfo(extraid);
  705. SetPVarInt(extraid, "pSQLID", PlayerInfo[extraid][pId]);
  706. //g_mysql_LoadPVehiclePositions(extraid);
  707. OnPlayerLoad(extraid);
  708. break;
  709. }
  710. }
  711. return 1;
  712. }
  713. case SENDDATA_THREAD:
  714. {
  715. if(GetPVarType(extraid, "RestartKick")) {
  716. gPlayerLogged{extraid} = 0;
  717. GameTextForPlayer(extraid, "Scheduled Maintenance...", 5000, 5);
  718. SendClientMessage(extraid, COLOR_LIGHTBLUE, "* The server will be going down for Scheduled Maintenance. A brief period of downtime will follow.");
  719. SendClientMessage(extraid, COLOR_GRAD2, "We will be going down to do some maintenance on the server/script, we will be back online shortly.");
  720. SetTimerEx("KickEx", 1000, 0, "i", extraid);
  721. foreach(extraid: Player) if(gPlayerLogged{extraid}) {
  722. SetPVarInt(extraid, "RestartKick", 1);
  723. return OnPlayerStatsUpdate(extraid);
  724. }
  725. ABroadCast(COLOR_YELLOW, "{AA3333}Maintenance{FFFF00}: Account saving finished!", 1);
  726. //g_mysql_DumpAccounts();
  727. SetTimer("FinishMaintenance", 1500, false);
  728. }
  729. if(GetPVarType(extraid, "AccountSaving") && (GetPVarInt(extraid, "AccountSaved") == 0)) {
  730. SetPVarInt(extraid, "AccountSaved", 1);
  731. foreach(new i: Player)
  732. {
  733. if(gPlayerLogged{i} && (GetPVarInt(i, "AccountSaved") == 0))
  734. {
  735. SetPVarInt(i, "AccountSaving", 1);
  736. OnPlayerStatsUpdate(i);
  737. }
  738. }
  739. ABroadCast(COLOR_YELLOW, "{AA3333}Maintenance{FFFF00}: Account saving finished!", 2);
  740. print("Account Saving Complete");
  741. foreach(new i: Player)
  742. {
  743. DeletePVar(i, "AccountSaved");
  744. DeletePVar(i, "AccountSaving");
  745. }
  746. //g_mysql_DumpAccounts();
  747. }
  748. return 1;
  749. }
  750. case AUTH_THREAD:
  751. {
  752. new name[24];
  753. for(new i;i < rows;i++)
  754. {
  755. cache_get_value_name(i, "Username", name, MAX_PLAYER_NAME);
  756. if(strcmp(name, GetPlayerNameExt(extraid), true) == 0)
  757. {
  758. HideNoticeGUIFrame(extraid);
  759. SafeLogin(extraid, 1);
  760. return 1;
  761. }
  762. else
  763. {
  764. return 1;
  765. }
  766. }
  767. HideNoticeGUIFrame(extraid);
  768. SafeLogin(extraid, 2);
  769. return 1;
  770. }
  771. case LOGIN_THREAD:
  772. {
  773. for(new i;i < rows;i++)
  774. {
  775. CheckAdminWhitelist(extraid);
  776. new
  777. szPass[129],
  778. szResult[129],
  779. szBuffer[129],
  780. salt[11];
  781. cache_get_value_name(i, "Username", szResult, MAX_PLAYER_NAME);
  782. if(strcmp(szResult, GetPlayerNameExt(extraid), true) != 0)
  783. {
  784. //g_mysql_AccountAuthCheck(extraid);
  785. return 1;
  786. }
  787. cache_get_value_name(i, "Key", szResult, 129);
  788. cache_get_value_name(i, "Salt", salt, 11);
  789. GetPVarString(extraid, "PassAuth", szBuffer, sizeof(szBuffer));
  790. if(!isnull(salt)) strcat(szBuffer, salt);
  791. WP_Hash(szPass, sizeof(szPass), szBuffer);
  792. /*if(cache_get_value_name_int(i, "Online")) {
  793. SendClientMessage(extraid, COLOR_RED, "SERVER: This account has already logged in.");
  794. SetTimerEx("KickEx", 1000, 0, "i", extraid);
  795. return 1;
  796. }*/
  797. if((isnull(szPass)) || (isnull(szResult)) || (strcmp(szPass, szResult) != 0)) {
  798. // Invalid Password - Try Again!
  799. ShowMainMenuDialog(extraid, 3);
  800. HideNoticeGUIFrame(extraid);
  801. if(++gPlayerLogTries[extraid] == 2) {
  802. SendClientMessage(extraid, COLOR_RED, "SERVER: Wrong password, you have been kicked out automatically.");
  803. SetTimerEx("KickEx", 1000, 0, "i", extraid);
  804. }
  805. return 1;
  806. }
  807. if(PassComplexCheck && CheckPasswordComplexity(szBuffer) != 1) ShowLoginDialogs(extraid, 0);
  808. break;
  809. }
  810. GetPVarString(extraid, "PassAuth", PlayerInfo[extraid][pLastPass], 65);
  811. DeletePVar(extraid, "PassAuth");
  812. HideNoticeGUIFrame(extraid);
  813. g_mysql_LoadAccount(extraid);
  814. return 1;
  815. }
  816. case REGISTER_THREAD:
  817. {
  818. if(IsPlayerConnected(extraid))
  819. {
  820. AdvanceTutorial(extraid);
  821. g_mysql_AccountLoginCheck(extraid);
  822. format(szMiscArray, sizeof(szMiscArray), "WARNING: %s (ID: %d) has registered from %s", GetPlayerNameEx(extraid), extraid, GetPlayerCountry(extraid));
  823. ABroadCast(COLOR_LIGHTRED, szMiscArray, 2);
  824. TotalRegister++;
  825. }
  826. }
  827. case LOADPTOYS_THREAD:
  828. {
  829. if(IsPlayerConnected(extraid))
  830. {
  831. new i = 0;
  832. while( i < rows)
  833. {
  834. if(i >= MAX_PLAYERTOYS)
  835. break;
  836. //new szResult[32];
  837. cache_get_value_name_int(i, "id", PlayerToyInfo[extraid][i][ptID]);
  838. cache_get_value_name_int(i, "modelid", PlayerToyInfo[extraid][i][ptModelID]);
  839. if(PlayerToyInfo[extraid][i][ptModelID] != 0)
  840. {
  841. cache_get_value_name_int(i, "bone", PlayerToyInfo[extraid][i][ptBone]);
  842. if(PlayerToyInfo[extraid][i][ptBone] > 18 || PlayerToyInfo[extraid][i][ptBone] < 1) PlayerToyInfo[extraid][i][ptBone] = 1;
  843. cache_get_value_name_int(i, "tradable", PlayerToyInfo[extraid][i][ptTradable]);
  844. cache_get_value_name_float(i, "posx", PlayerToyInfo[extraid][i][ptPosX]);
  845. cache_get_value_name_float(i, "posy", PlayerToyInfo[extraid][i][ptPosY]);
  846. cache_get_value_name_float(i, "posz", PlayerToyInfo[extraid][i][ptPosZ]);
  847. cache_get_value_name_float(i, "rotx", PlayerToyInfo[extraid][i][ptRotX]);
  848. cache_get_value_name_float(i, "roty", PlayerToyInfo[extraid][i][ptRotY]);
  849. cache_get_value_name_float(i, "rotz", PlayerToyInfo[extraid][i][ptRotZ]);
  850. cache_get_value_name_float(i, "scalex", PlayerToyInfo[extraid][i][ptScaleX]);
  851. cache_get_value_name_float(i, "scaley", PlayerToyInfo[extraid][i][ptScaleY]);
  852. cache_get_value_name_float(i, "scalez", PlayerToyInfo[extraid][i][ptScaleZ]);
  853. cache_get_value_name_int(i, "special", PlayerToyInfo[extraid][i][ptSpecial]);
  854. cache_get_value_name_int(i, "autoattach", PlayerToyInfo[extraid][i][ptAutoAttach]);
  855. if(PlayerToyInfo[extraid][i][ptAutoAttach] == -1 || PlayerToyInfo[extraid][i][ptAutoAttach] == GetPlayerSkin(extraid)) AttachToy(extraid, i, 0);
  856. format(szMiscArray, sizeof(szMiscArray), "[TOYSLOAD] [User: %s(%i)] [Toy Model ID: %d] [Toy ID]", GetPlayerNameEx(extraid), PlayerInfo[extraid][pId], PlayerToyInfo[extraid][i][ptModelID], PlayerToyInfo[extraid][i][ptID]);
  857. Log("logs/toydebug.log", szMiscArray);
  858. }
  859. else
  860. {
  861. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "DELETE FROM `toys` WHERE `id` = '%d'", PlayerToyInfo[extraid][i][ptID]);
  862. mysql_tquery(MainPipeline, szMiscArray, "OnQueryFinish", "i", SENDDATA_THREAD);
  863. printf("Deleting Toy ID %d for Player %s (%i)", PlayerToyInfo[extraid][i][ptID], GetPlayerNameEx(extraid), GetPlayerSQLId(extraid));
  864. }
  865. i++;
  866. }
  867. }
  868. }
  869. case LOADPVEHICLE_THREAD:
  870. {
  871. if(IsPlayerConnected(extraid))
  872. {
  873. new i = 0;
  874. while(i < rows)
  875. {
  876. if(i >= MAX_PLAYERVEHICLES)
  877. break;
  878. //new szResult[32];
  879. cache_get_value_name_int(i, "pvModelId", PlayerVehicleInfo[extraid][i][pvModelId]);
  880. cache_get_value_name_int(i, "id", PlayerVehicleInfo[extraid][i][pvSlotId]);
  881. if(PlayerVehicleInfo[extraid][i][pvModelId] != 0)
  882. {
  883. cache_get_value_name_float(i, "pvPosX", PlayerVehicleInfo[extraid][i][pvPosX]);
  884. cache_get_value_name_float(i, "pvPosY", PlayerVehicleInfo[extraid][i][pvPosY]);
  885. cache_get_value_name_float(i, "pvPosZ", PlayerVehicleInfo[extraid][i][pvPosZ]);
  886. cache_get_value_name_float(i, "pvPosAngle", PlayerVehicleInfo[extraid][i][pvPosAngle]);
  887. cache_get_value_name_int(i, "pvLock", PlayerVehicleInfo[extraid][i][pvLock]);
  888. cache_get_value_name_int(i, "pvLocked", PlayerVehicleInfo[extraid][i][pvLocked]);
  889. cache_get_value_name_int(i, "pvPaintJob", PlayerVehicleInfo[extraid][i][pvPaintJob]);
  890. cache_get_value_name_int(i, "pvColor1", PlayerVehicleInfo[extraid][i][pvColor1]);
  891. cache_get_value_name_int(i, "pvColor2", PlayerVehicleInfo[extraid][i][pvColor2]);
  892. cache_get_value_name_int(i, "pvPrice", PlayerVehicleInfo[extraid][i][pvPrice]);
  893. cache_get_value_name_int(i, "pvTicket", PlayerVehicleInfo[extraid][i][pvTicket]);
  894. cache_get_value_name_int(i, "pvRestricted", PlayerVehicleInfo[extraid][i][pvRestricted]);
  895. cache_get_value_name_int(i, "pvWeapon0", PlayerVehicleInfo[extraid][i][pvWeapons][0]);
  896. cache_get_value_name_int(i, "pvWeapon1", PlayerVehicleInfo[extraid][i][pvWeapons][1]);
  897. cache_get_value_name_int(i, "pvWeapon2", PlayerVehicleInfo[extraid][i][pvWeapons][2]);
  898. cache_get_value_name_int(i, "pvWepUpgrade", PlayerVehicleInfo[extraid][i][pvWepUpgrade]);
  899. cache_get_value_name_float(i, "pvFuel", PlayerVehicleInfo[extraid][i][pvFuel]);
  900. cache_get_value_name_int(i, "pvImpound", PlayerVehicleInfo[extraid][i][pvImpounded]);
  901. cache_get_value_name(i, "pvPlate", PlayerVehicleInfo[extraid][i][pvPlate]);
  902. cache_get_value_name_int(i, "pvVW", PlayerVehicleInfo[extraid][i][pvVW]);
  903. cache_get_value_name_int(i, "pvInt", PlayerVehicleInfo[extraid][i][pvInt]);
  904. for(new m = 0; m < MAX_MODS; m++)
  905. {
  906. format(szMiscArray, sizeof(szMiscArray), "pvMod%d", m);
  907. cache_get_value_name_int(i, szMiscArray, PlayerVehicleInfo[extraid][i][pvMods][m]);
  908. }
  909. /*for(new m = 0; m < sizeof(Drugs); m++)
  910. {
  911. PlayerVehicleInfo[extraid][i][pvDrugs][m] = cache_get_value_name_int(i, GetDrugName(m));
  912. }*/
  913. cache_get_value_name_int(i, "pvCrashFlag", PlayerVehicleInfo[extraid][i][pvCrashFlag]);
  914. cache_get_value_name_int(i, "pvCrashVW", PlayerVehicleInfo[extraid][i][pvCrashVW]);
  915. cache_get_value_name_float(i, "pvCrashX", PlayerVehicleInfo[extraid][i][pvCrashX]);
  916. cache_get_value_name_float(i, "pvCrashY", PlayerVehicleInfo[extraid][i][pvCrashY]);
  917. cache_get_value_name_float(i, "pvCrashZ", PlayerVehicleInfo[extraid][i][pvCrashZ]);
  918. cache_get_value_name_float(i, "pvCrashAngle", PlayerVehicleInfo[extraid][i][pvCrashAngle]);
  919. cache_get_value_name_int(i, "pvAlarm", PlayerVehicleInfo[extraid][i][pvAlarm]);
  920. cache_get_value_name(i, "pvLastLockPickedBy", PlayerVehicleInfo[extraid][i][pvLastLockPickedBy]);
  921. cache_get_value_name_int(i, "pvLocksLeft", PlayerVehicleInfo[extraid][i][pvLocksLeft]);
  922. cache_get_value_name_float(i, "pvHealth", PlayerVehicleInfo[extraid][i][pvHealth]);
  923. format(szMiscArray, sizeof(szMiscArray), "[VEHICLELOAD] [User: %s(%i)] [Model: %d] [Vehicle ID: %d]", GetPlayerNameEx(extraid), PlayerInfo[extraid][pId], PlayerVehicleInfo[extraid][i][pvModelId], PlayerVehicleInfo[extraid][i][pvSlotId]);
  924. Log("logs/vehicledebug.log", szMiscArray);
  925. }
  926. else
  927. {
  928. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "DELETE FROM `vehicles` WHERE `id` = '%d'", PlayerVehicleInfo[extraid][i][pvSlotId]);
  929. mysql_tquery(MainPipeline, szMiscArray, "OnQueryFinish", "ii", SENDDATA_THREAD, extraid);
  930. }
  931. i++;
  932. }
  933. }
  934. }
  935. case LOADPVEHPOS_THREAD:
  936. {
  937. if(IsPlayerConnected(extraid))
  938. {
  939. new bool:bVehRestore;
  940. for(new i;i < rows;i++)
  941. {
  942. bVehRestore = true;
  943. for(new v; v < MAX_PLAYERVEHICLES; v++)
  944. {
  945. new tmpVehModelId, Float:tmpVehArray[4];
  946. format(szMiscArray, sizeof(szMiscArray), "pv%dModelId", v);
  947. cache_get_value_name_int(i, szMiscArray, tmpVehModelId);
  948. format(szMiscArray, sizeof(szMiscArray), "pv%dPosX", v);
  949. cache_get_value_name_float(i, szMiscArray, tmpVehArray[0]);
  950. format(szMiscArray, sizeof(szMiscArray), "pv%dPosY", v);
  951. cache_get_value_name_float(i, szMiscArray, tmpVehArray[1]);
  952. format(szMiscArray, sizeof(szMiscArray), "pv%dPosZ", v);
  953. cache_get_value_name_float(i, szMiscArray, tmpVehArray[2]);
  954. format(szMiscArray, sizeof(szMiscArray), "pv%dPosAngle", v);
  955. cache_get_value_name_float(i, szMiscArray, tmpVehArray[3]);
  956. if(tmpVehModelId >= 400)
  957. {
  958. printf("Stored %d Vehicle Slot", v);
  959. format(szMiscArray, sizeof(szMiscArray), "tmpVeh%dModelId", v);
  960. SetPVarInt(extraid, szMiscArray, tmpVehModelId);
  961. format(szMiscArray, sizeof(szMiscArray), "tmpVeh%dPosX", v);
  962. SetPVarFloat(extraid, szMiscArray, tmpVehArray[0]);
  963. format(szMiscArray, sizeof(szMiscArray), "tmpVeh%dPosY", v);
  964. SetPVarFloat(extraid, szMiscArray, tmpVehArray[1]);
  965. format(szMiscArray, sizeof(szMiscArray), "tmpVeh%dPosZ", v);
  966. SetPVarFloat(extraid, szMiscArray, tmpVehArray[2]);
  967. format(szMiscArray, sizeof(szMiscArray), "tmpVeh%dAngle", v);
  968. SetPVarFloat(extraid, szMiscArray, tmpVehArray[3]);
  969. }
  970. }
  971. break;
  972. }
  973. if(bVehRestore == true) {
  974. // person Vehicle Position Restore Granted, Now Purge them from the Table.
  975. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "DELETE FROM `pvehpositions` WHERE `id`='%d'", PlayerInfo[extraid][pId]);
  976. mysql_tquery(MainPipeline, szMiscArray, "OnQueryFinish", "ii", SENDDATA_THREAD, extraid);
  977. }
  978. OnPlayerLoad(extraid);
  979. }
  980. }
  981. case IPBAN_THREAD:
  982. {
  983. if(rows > 0)
  984. {
  985. SendClientMessage(extraid, COLOR_RED, "Your IP is banned! You can appeal this at http://www.ng-gaming.net/forums");
  986. SetTimerEx("KickEx", 1000, 0, "i", extraid);
  987. }
  988. else
  989. {
  990. g_mysql_AccountAuthCheck(extraid);
  991. }
  992. }
  993. case MAIN_REFERRAL_THREAD:
  994. {
  995. new newrows, newfields;
  996. cache_get_row_count(newrows);
  997. cache_get_field_count(newfields);
  998. if(newrows == 0)
  999. {
  1000. format(szMiscArray, sizeof(szMiscArray), "Nobody");
  1001. strmid(PlayerInfo[extraid][pReferredBy], szMiscArray, 0, strlen(szMiscArray), MAX_PLAYER_NAME);
  1002. ShowPlayerDialogEx(extraid, DIALOG_REGISTER_REFERRED, DIALOG_STYLE_INPUT, "{FF0000}Error - Invalid Player", "There is no player registered to our server with such name.\nPlease enter the full name of the player who referred you.\nExample: FirstName_LastName", "Enter", "Cancel");
  1003. }
  1004. else {
  1005. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "SELECT `IP` FROM `accounts` WHERE `Username` = '%s'", PlayerInfo[extraid][pReferredBy]);
  1006. mysql_tquery(MainPipeline, szMiscArray, "ReferralSecurity", "i", extraid);
  1007. }
  1008. }
  1009. case REWARD_REFERRAL_THREAD:
  1010. {
  1011. new newrows, newfields;
  1012. cache_get_row_count(newrows);
  1013. cache_get_field_count(newfields);
  1014. if(newrows != 0)
  1015. {
  1016. SendClientMessageEx(extraid, COLOR_YELLOW, "The player who referred you does not have a account on our server anymore, therefore he has not received any credits");
  1017. }
  1018. }
  1019. case OFFLINE_FAMED_THREAD:
  1020. {
  1021. new newrows, newfields, szQuery[128], string[128], szName[MAX_PLAYER_NAME];
  1022. cache_get_row_count(newrows);
  1023. cache_get_field_count(newfields);
  1024. if(newrows == 0)
  1025. {
  1026. SendClientMessageEx(extraid, COLOR_RED, "Error - This account does not exist.");
  1027. }
  1028. else {
  1029. new
  1030. ilevel = GetPVarInt(extraid, "Offline_Famed");
  1031. GetPVarString(extraid, "Offline_Name", szName, MAX_PLAYER_NAME);
  1032. mysql_format(MainPipeline, szQuery, sizeof(szQuery), "UPDATE `accounts` SET `Famed` = %d WHERE `Username` = '%s'", ilevel, szName);
  1033. mysql_tquery(MainPipeline, szQuery, "OnQueryFinish", "i", SENDDATA_THREAD);
  1034. format(string, sizeof(string), "AdmCmd: %s has offline set %s to a level %d famed", GetPlayerNameEx(extraid), szName, ilevel);
  1035. SendFamedMessage(COLOR_LIGHTRED, string);
  1036. ABroadCast(COLOR_LIGHTRED, string, 2);
  1037. Log("logs/setfamed.log", string);
  1038. DeletePVar(extraid, "Offline_Famed");
  1039. DeletePVar(extraid, "Offline_Name");
  1040. }
  1041. }
  1042. case BUG_LIST_THREAD:
  1043. {
  1044. if(rows == 0) return 1;
  1045. new szResult[MAX_PLAYER_NAME];
  1046. for(new i; i < rows; i++)
  1047. {
  1048. cache_get_value_name(i, "Username", szResult); SendClientMessageEx(extraid, COLOR_GRAD2, szResult);
  1049. }
  1050. }
  1051. case ADMINWHITELIST_THREAD:
  1052. {
  1053. new string[128];
  1054. for(new i;i < rows;i++)
  1055. {
  1056. new secureip[16], szResult[32], alevel, wdlevel;
  1057. cache_get_value_name(i, "AdminLevel", szResult); alevel = strval(szResult);
  1058. cache_get_value_name(i, "Watchdog", szResult); wdlevel = strval(szResult);
  1059. cache_get_value_name(i, "SecureIP", secureip, 16);
  1060. if((alevel > 1 || wdlevel > 2) && betaserver == 0) // Beta server check ( beta server does not require whitelisting)
  1061. {
  1062. if(isnull(secureip) || strcmp(GetPlayerIpEx(extraid), secureip, false, strlen(secureip)) != 0)
  1063. {
  1064. SendClientMessage(extraid, COLOR_WHITE, "SERVER: Your IP does not match the whitelisted IP of that account. Contact a Senior+ Admin to whitelist your current IP.");
  1065. foreach(new x: Player)
  1066. {
  1067. {
  1068. if(PlayerInfo[x][pAdmin] < 1337 && (PlayerInfo[x][pAdmin] >= 2 || PlayerInfo[x][pWatchdog] >= 2))
  1069. {
  1070. format(string, sizeof(string), "{AA3333}AdmWarning{FFFF00}: %s has been auto kicked for logging in with a non-whitelisted IP.", GetPlayerNameEx(extraid));
  1071. SendClientMessageEx(x, COLOR_YELLOW, string);
  1072. }
  1073. else if(PlayerInfo[x][pAdmin] >= 1337)
  1074. {
  1075. if(alevel >= 1337) // If the person being checked for the whitelist is a HA+
  1076. {
  1077. format(string, sizeof(string), "{AA3333}AdmWarning{FFFF00}: %s (IP: %s) has been auto kicked for logging in with a non-whitelisted IP.", GetPlayerNameEx(extraid), GetPlayerIpEx(extraid));
  1078. SendClientMessageEx(x, COLOR_YELLOW, string);
  1079. }
  1080. else
  1081. {
  1082. format(string, sizeof(string), "{AA3333}AdmWarning{FFFF00}: %s has been auto kicked for logging in with a non-whitelisted IP.", GetPlayerNameEx(extraid));
  1083. SendClientMessageEx(x, COLOR_YELLOW, string);
  1084. }
  1085. }
  1086. }
  1087. }
  1088. SetTimerEx("KickEx", 1000, 0, "i", extraid);
  1089. format(string, sizeof(string), "%s failed whitelist auth. Secure IP: %s | Connected IP: %s", GetPlayerNameEx(extraid), secureip, GetPlayerIpEx(extraid));
  1090. Log("logs/whitelist.log", string);
  1091. return true;
  1092. }
  1093. format(string, sizeof(string), "%s passed whitelist auth. Secure IP: %s | Connected IP: %s", GetPlayerNameEx(extraid), secureip, GetPlayerIpEx(extraid));
  1094. Log("logs/whitelist.log", string);
  1095. }
  1096. }
  1097. return true;
  1098. }
  1099. case LOADGIFTBOX_THREAD:
  1100. {
  1101. for(new i; i < rows; i++)
  1102. {
  1103. new szResult[32], arraystring[128];
  1104. for(new array = 0; array < 4; array++)
  1105. {
  1106. format(arraystring, sizeof(arraystring), "dgMoney%d", array);
  1107. cache_get_value_name(i, arraystring, szResult); dgVar[dgMoney][array] = strval(szResult);
  1108. format(arraystring, sizeof(arraystring), "dgRimKit%d", array);
  1109. cache_get_value_name(i, arraystring, szResult); dgVar[dgRimKit][array] = strval(szResult);
  1110. format(arraystring, sizeof(arraystring), "dgFirework%d", array);
  1111. cache_get_value_name(i, arraystring, szResult); dgVar[dgFirework][array] = strval(szResult);
  1112. format(arraystring, sizeof(arraystring), "dgGVIP%d", array);
  1113. cache_get_value_name(i, arraystring, szResult); dgVar[dgGVIP][array] = strval(szResult);
  1114. format(arraystring, sizeof(arraystring), "dgSVIP%d", array);
  1115. cache_get_value_name(i, arraystring, szResult); dgVar[dgSVIP][array] = strval(szResult);
  1116. format(arraystring, sizeof(arraystring), "dgGVIPEx%d", array);
  1117. cache_get_value_name(i, arraystring, szResult); dgVar[dgGVIPEx][array] = strval(szResult);
  1118. format(arraystring, sizeof(arraystring), "dgSVIPEx%d", array);
  1119. cache_get_value_name(i, arraystring, szResult); dgVar[dgSVIPEx][array] = strval(szResult);
  1120. format(arraystring, sizeof(arraystring), "dgCarSlot%d", array);
  1121. cache_get_value_name(i, arraystring, szResult); dgVar[dgCarSlot][array] = strval(szResult);
  1122. format(arraystring, sizeof(arraystring), "dgToySlot%d", array);
  1123. cache_get_value_name(i, arraystring, szResult); dgVar[dgToySlot][array] = strval(szResult);
  1124. format(arraystring, sizeof(arraystring), "dgArmor%d", array);
  1125. cache_get_value_name(i, arraystring, szResult); dgVar[dgArmor][array] = strval(szResult);
  1126. format(arraystring, sizeof(arraystring), "dgFirstaid%d", array);
  1127. cache_get_value_name(i, arraystring, szResult); dgVar[dgFirstaid][array] = strval(szResult);
  1128. format(arraystring, sizeof(arraystring), "dgDDFlag%d", array);
  1129. cache_get_value_name(i, arraystring, szResult); dgVar[dgDDFlag][array] = strval(szResult);
  1130. format(arraystring, sizeof(arraystring), "dgGateFlag%d", array);
  1131. cache_get_value_name(i, arraystring, szResult); dgVar[dgGateFlag][array] = strval(szResult);
  1132. format(arraystring, sizeof(arraystring), "dgCredits%d", array);
  1133. cache_get_value_name(i, arraystring, szResult); dgVar[dgCredits][array] = strval(szResult);
  1134. format(arraystring, sizeof(arraystring), "dgPriorityAd%d", array);
  1135. cache_get_value_name(i, arraystring, szResult); dgVar[dgPriorityAd][array] = strval(szResult);
  1136. format(arraystring, sizeof(arraystring), "dgHealthNArmor%d", array);
  1137. cache_get_value_name(i, arraystring, szResult); dgVar[dgHealthNArmor][array] = strval(szResult);
  1138. format(arraystring, sizeof(arraystring), "dgGiftReset%d", array);
  1139. cache_get_value_name(i, arraystring, szResult); dgVar[dgGiftReset][array] = strval(szResult);
  1140. format(arraystring, sizeof(arraystring), "dgMaterial%d", array);
  1141. cache_get_value_name(i, arraystring, szResult); dgVar[dgMaterial][array] = strval(szResult);
  1142. format(arraystring, sizeof(arraystring), "dgWarning%d", array);
  1143. cache_get_value_name(i, arraystring, szResult); dgVar[dgWarning][array] = strval(szResult);
  1144. format(arraystring, sizeof(arraystring), "dgPot%d", array);
  1145. cache_get_value_name(i, arraystring, szResult); dgVar[dgPot][array] = strval(szResult);
  1146. format(arraystring, sizeof(arraystring), "dgCrack%d", array);
  1147. cache_get_value_name(i, arraystring, szResult); dgVar[dgCrack][array] = strval(szResult);
  1148. format(arraystring, sizeof(arraystring), "dgPaintballToken%d", array);
  1149. cache_get_value_name(i, arraystring, szResult); dgVar[dgPaintballToken][array] = strval(szResult);
  1150. format(arraystring, sizeof(arraystring), "dgVIPToken%d", array);
  1151. cache_get_value_name(i, arraystring, szResult); dgVar[dgVIPToken][array] = strval(szResult);
  1152. format(arraystring, sizeof(arraystring), "dgRespectPoint%d", array);
  1153. cache_get_value_name(i, arraystring, szResult); dgVar[dgRespectPoint][array] = strval(szResult);
  1154. format(arraystring, sizeof(arraystring), "dgCarVoucher%d", array);
  1155. cache_get_value_name(i, arraystring, szResult); dgVar[dgCarVoucher][array] = strval(szResult);
  1156. format(arraystring, sizeof(arraystring), "dgBuddyInvite%d", array);
  1157. cache_get_value_name(i, arraystring, szResult); dgVar[dgBuddyInvite][array] = strval(szResult);
  1158. format(arraystring, sizeof(arraystring), "dgLaser%d", array);
  1159. cache_get_value_name(i, arraystring, szResult); dgVar[dgLaser][array] = strval(szResult);
  1160. format(arraystring, sizeof(arraystring), "dgCustomToy%d", array);
  1161. cache_get_value_name(i, arraystring, szResult); dgVar[dgCustomToy][array] = strval(szResult);
  1162. format(arraystring, sizeof(arraystring), "dgAdmuteReset%d", array);
  1163. cache_get_value_name(i, arraystring, szResult); dgVar[dgAdmuteReset][array] = strval(szResult);
  1164. format(arraystring, sizeof(arraystring), "dgNewbieMuteReset%d", array);
  1165. cache_get_value_name(i, arraystring, szResult); dgVar[dgNewbieMuteReset][array] = strval(szResult);
  1166. format(arraystring, sizeof(arraystring), "dgRestrictedCarVoucher%d", array);
  1167. cache_get_value_name(i, arraystring, szResult); dgVar[dgRestrictedCarVoucher][array] = strval(szResult);
  1168. format(arraystring, sizeof(arraystring), "dgPlatinumVIPVoucher%d", array);
  1169. cache_get_value_name(i, arraystring, szResult); dgVar[dgPlatinumVIPVoucher][array] = strval(szResult);
  1170. }
  1171. break;
  1172. }
  1173. print("[Dynamic Giftbox] Successfully loaded the dynamic giftbox.");
  1174. }
  1175. case LOADPNONRPOINTS_THREAD: // I have no idea if this will work lulz (it's 9:30am)
  1176. {
  1177. // Is the player still connected by the time the thread is called?
  1178. if(IsPlayerConnected(extraid))
  1179. {
  1180. new count = 0;
  1181. // Loop through all the rows that were called within that query
  1182. for(new i = 0; i < rows; i++)
  1183. {
  1184. new szResult[32];
  1185. cache_get_value_name(i, "active", szResult);
  1186. // Is the row active?
  1187. if(strval(szResult) == 1)
  1188. {
  1189. cache_get_value_name(i, "point", szResult);
  1190. // Add up all the points
  1191. count = count += strval(szResult);
  1192. }
  1193. }
  1194. // We're done with our loop, let's get our count and store it to a player variable
  1195. PlayerInfo[extraid][pNonRPMeter] = count;
  1196. }
  1197. }
  1198. case OFFLINE_DEDICATED_THREAD:
  1199. {
  1200. new iRows, iFields, szQuery[128], string[128], szName[MAX_PLAYER_NAME];
  1201. cache_get_row_count(iRows);
  1202. cache_get_field_count(iFields);
  1203. if(iRows)
  1204. {
  1205. new
  1206. ilevel = GetPVarInt(extraid, "Offline_Dedicated");
  1207. GetPVarString(extraid, "Offline_DName", szName, MAX_PLAYER_NAME);
  1208. mysql_format(MainPipeline, szQuery, sizeof(szQuery), "UPDATE `accounts` SET `pDedicatedPlayer` = %d WHERE `Username` = '%s'", ilevel, szName);
  1209. mysql_tquery(MainPipeline, szQuery, "OnQueryFinish", "i", SENDDATA_THREAD);
  1210. format(string, sizeof(string), "AdmCmd: %s has offline set %s to a level %d Dedicated", GetPlayerNameEx(extraid), szName, ilevel);
  1211. SendDedicatedMessage(COLOR_LIGHTRED, string);
  1212. ABroadCast(COLOR_LIGHTRED, string, 2);
  1213. Log("logs/dedicated.log", string);
  1214. DeletePVar(extraid, "Offline_Dedicated");
  1215. DeletePVar(extraid, "Offline_DName");
  1216. }
  1217. else
  1218. {
  1219. SendClientMessageEx(extraid, COLOR_RED, "Error - This account does not exist.");
  1220. }
  1221. }
  1222. case LOADFIF_THREAD:
  1223. {
  1224. if(IsPlayerConnected(extraid))
  1225. {
  1226. if(!rows)
  1227. {
  1228. new szQuery[128];
  1229. mysql_format(MainPipeline, szQuery,sizeof(szQuery),"INSERT INTO `fallintofun` SET `player` = %d", PlayerInfo[extraid][pId]);
  1230. mysql_tquery(MainPipeline, szQuery, "OnQueryFinish", "i", SENDDATA_THREAD);
  1231. return 1;
  1232. }
  1233. new szResult[128];
  1234. cache_get_value_name(0, "FIFHours", szResult);
  1235. FIFInfo[extraid][FIFHours] = strval(szResult);
  1236. cache_get_value_name(0, "FIFChances", szResult);
  1237. FIFInfo[extraid][FIFChances] = strval(szResult);
  1238. }
  1239. }
  1240. }
  1241. return 1;
  1242. }
  1243. public OnQueryError(errorid, const error[], const callback[], const query[], MySQL:handle) {
  1244. printf("[MySQL] Query Error - (ErrorID: %d)", errorid);
  1245. print("[MySQL] Check mysql_log.txt to review the query that threw the error.");
  1246. SQL_Log(query, error);
  1247. if(errorid == 2013 || errorid == 2014 || errorid == 2006 || errorid == 2027 || errorid == 2055) {
  1248. print("[MySQL] Connection Error Detected in Threaded Query");
  1249. //mysql_query(query, resultid, extraid);
  1250. format(szMiscArray, sizeof(szMiscArray), "MYSQL [%d]: %d, %s, in callback: %s.", iErrorID, errorid, error, callback);
  1251. }
  1252. else format(szMiscArray, sizeof(szMiscArray), "MYSQL (THREADED) [%d]: %d, %s, in callback: %s.", iErrorID, errorid, error, callback);
  1253. //SendDiscordMessage(3, szMiscArray);
  1254. format(szMiscArray, sizeof(szMiscArray), " Query: %s", query);
  1255. //SendDiscordMessage(3, szMiscArray);
  1256. iErrorID++;
  1257. }
  1258. //--------------------------------[ CUSTOM STOCK FUNCTIONS ]---------------------------
  1259. // g_mysql_ReturnEscaped(string unEscapedString)
  1260. // Description: Takes a unescaped string and returns an escaped one.
  1261. stock g_mysql_ReturnEscaped(unEscapedString[])
  1262. {
  1263. new EscapedString[256];
  1264. mysql_escape_string(unEscapedString, EscapedString);
  1265. return EscapedString;
  1266. }
  1267. // g_mysql_AccountLoginCheck(playerid)
  1268. stock g_mysql_AccountLoginCheck(playerid)
  1269. {
  1270. ShowNoticeGUIFrame(playerid, 2);
  1271. new string[128];
  1272. mysql_format(MainPipeline, string, sizeof(string), "SELECT `Username`, `Key`, `Salt`, `Online` FROM `accounts` WHERE `Username` = '%s'", GetPlayerNameExt(playerid));
  1273. mysql_tquery(MainPipeline, string, "OnQueryFinish", "iii", LOGIN_THREAD, playerid, g_arrQueryHandle{playerid});
  1274. return 1;
  1275. }
  1276. // g_mysql_AccountAuthCheck(playerid)
  1277. g_mysql_AccountAuthCheck(playerid)
  1278. {
  1279. new string[128];
  1280. mysql_format(MainPipeline, string, sizeof(string), "SELECT `Username` FROM `accounts` WHERE `Username` = '%s'", GetPlayerNameExt(playerid));
  1281. mysql_tquery(MainPipeline, string, "OnQueryFinish", "iii", AUTH_THREAD, playerid, g_arrQueryHandle{playerid});
  1282. // Reset the GUI
  1283. //SetPlayerJoinCamera(playerid);
  1284. ClearChatbox(playerid);
  1285. SetPlayerVirtualWorld(playerid, 0);
  1286. return 1;
  1287. }
  1288. // g_mysql_AccountOnline(int playerid, int stateid)
  1289. stock g_mysql_AccountOnline(playerid, stateid)
  1290. {
  1291. new iTimeStamp = gettime();
  1292. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "UPDATE `accounts` SET `Online`=%d, `LastLogin` = NOW() WHERE `id` = %d", stateid, GetPlayerSQLId(playerid));
  1293. mysql_tquery(MainPipeline, szMiscArray, "OnQueryFinish", "ii", SENDDATA_THREAD, playerid);
  1294. if(PlayerInfo[playerid][pPhousekey] != INVALID_HOUSE_ID && HouseInfo[PlayerInfo[playerid][pPhousekey]][hOwnerID] == GetPlayerSQLId(playerid))
  1295. HouseInfo[PlayerInfo[playerid][pPhousekey]][hLastLogin] = iTimeStamp, SaveHouse(PlayerInfo[playerid][pPhousekey]);
  1296. if(PlayerInfo[playerid][pPhousekey2] != INVALID_HOUSE_ID && HouseInfo[PlayerInfo[playerid][pPhousekey2]][hOwnerID] == GetPlayerSQLId(playerid))
  1297. HouseInfo[PlayerInfo[playerid][pPhousekey2]][hLastLogin] = iTimeStamp, SaveHouse(PlayerInfo[playerid][pPhousekey2]);
  1298. if(PlayerInfo[playerid][pPhousekey3] != INVALID_HOUSE_ID && HouseInfo[PlayerInfo[playerid][pPhousekey3]][hOwnerID] == GetPlayerSQLId(playerid))
  1299. HouseInfo[PlayerInfo[playerid][pPhousekey3]][hLastLogin] = iTimeStamp, SaveHouse(PlayerInfo[playerid][pPhousekey3]);
  1300. for(new i; i != MAX_DDOORS; i++)
  1301. {
  1302. if(DDoorsInfo[i][ddType] == 1 && DDoorsInfo[i][ddOwner] == GetPlayerSQLId(playerid)) DDoorsInfo[i][ddLastLogin] = gettime(), SaveDynamicDoor(i);
  1303. }
  1304. return 1;
  1305. }
  1306. stock g_mysql_AccountOnlineReset()
  1307. {
  1308. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "UPDATE `accounts` SET `Online` = 0 WHERE `Online` = %d", servernumber);
  1309. mysql_tquery(MainPipeline, szMiscArray, "OnQueryFinish", "i", SENDDATA_THREAD);
  1310. return 1;
  1311. }
  1312. // g_mysql_CreateAccount(int playerid, string accountPassword[])
  1313. // Description: Creates a new account in the database.
  1314. stock g_mysql_CreateAccount(playerid, accountPassword[])
  1315. {
  1316. new string[300];
  1317. new passbuffer[129];
  1318. new salt[11];
  1319. randomString(salt);
  1320. format(string, sizeof(string), "%s%s", accountPassword, salt);
  1321. WP_Hash(passbuffer, sizeof(passbuffer), string);
  1322. mysql_format(MainPipeline, string, sizeof(string), "INSERT INTO `accounts` (`RegiDate`, `LastLogin`, `Username`, `Key`, `Salt`) VALUES (NOW(), NOW(), '%s', '%s', '%s')", GetPlayerNameExt(playerid), passbuffer, salt);
  1323. mysql_tquery(MainPipeline, string, "OnQueryFinish", "iii", REGISTER_THREAD, playerid, g_arrQueryHandle{playerid});
  1324. return 1;
  1325. }
  1326. stock g_mysql_LoadPVehicles(playerid)
  1327. {
  1328. new string[128];
  1329. mysql_format(MainPipeline, string, sizeof(string), "SELECT * FROM `vehicles` WHERE `sqlID` = %d", PlayerInfo[playerid][pId]);
  1330. mysql_tquery(MainPipeline, string, "OnQueryFinish", "iii", LOADPVEHICLE_THREAD, playerid, g_arrQueryHandle{playerid});
  1331. return 1;
  1332. }
  1333. // g_mysql_LoadPVehiclePositions(playerid)
  1334. // Description: Loads vehicle positions if person has timed out.
  1335. stock g_mysql_LoadPVehiclePositions(playerid)
  1336. {
  1337. new string[128];
  1338. mysql_format(MainPipeline, string, sizeof(string), "SELECT * FROM `pvehpositions` WHERE `id` = %d", PlayerInfo[playerid][pId]);
  1339. mysql_tquery(MainPipeline, string, "OnQueryFinish", "iii", LOADPVEHPOS_THREAD, playerid, g_arrQueryHandle{playerid});
  1340. return 1;
  1341. }
  1342. // g_mysql_LoadPlayerToys(playerid)
  1343. // Description: Load the player toys
  1344. stock g_mysql_LoadPlayerToys(playerid)
  1345. {
  1346. new szQuery[128];
  1347. mysql_format(MainPipeline, szQuery, sizeof(szQuery), "SELECT * FROM `toys` WHERE `player` = %d", PlayerInfo[playerid][pId]);
  1348. mysql_tquery(MainPipeline, szQuery, "OnQueryFinish", "iii", LOADPTOYS_THREAD, playerid, g_arrQueryHandle{playerid});
  1349. return 1;
  1350. }
  1351. // g_mysql_LoadAccount(playerid)
  1352. // Description: Loads an account from database into memory.
  1353. stock g_mysql_LoadAccount(playerid)
  1354. {
  1355. ShowNoticeGUIFrame(playerid, 3);
  1356. new string[164];
  1357. mysql_format(MainPipeline, string, sizeof(string), "SELECT * FROM `accounts` WHERE `Username` = '%s'", GetPlayerNameExt(playerid));
  1358. mysql_tquery(MainPipeline, string, "OnQueryFinish", "iii", LOADUSERDATA_THREAD, playerid, g_arrQueryHandle{playerid});
  1359. return 1;
  1360. }
  1361. // g_mysql_RemoveDumpFile(sqlid)
  1362. // Description: Removes a account's dump file. Helpful upon logoff.
  1363. stock g_mysql_RemoveDumpFile(sqlid)
  1364. {
  1365. new pwnfile[128];
  1366. format(pwnfile, sizeof(pwnfile), "/accdump/%d.dump", sqlid);
  1367. if(fexist(pwnfile))
  1368. {
  1369. fremove(pwnfile);
  1370. return 1;
  1371. }
  1372. return 0;
  1373. }
  1374. GivePlayerCredits(Player, Amount, Shop, option = 0)
  1375. {
  1376. new szQuery[128];
  1377. if(option == 0)
  1378. {
  1379. PlayerInfo[Player][pCredits] += Amount;
  1380. }
  1381. else if(option == 1)
  1382. {
  1383. PlayerInfo[Player][pCredits] -= Amount;
  1384. }
  1385. mysql_format(MainPipeline, szQuery, sizeof(szQuery), "UPDATE `accounts` SET `Credits`=%d WHERE `id` = %d", PlayerInfo[Player][pCredits], GetPlayerSQLId(Player));
  1386. mysql_tquery(MainPipeline, szQuery, "OnQueryFinish", "ii", SENDDATA_THREAD, Player);
  1387. print(szQuery);
  1388. if(Shop == 1)
  1389. {
  1390. if(Amount < 0) Amount = Amount*-1;
  1391. PlayerInfo[Player][pTotalCredits] += Amount;
  1392. }
  1393. mysql_format(MainPipeline, szQuery, sizeof(szQuery), "UPDATE `accounts` SET `TotalCredits`=%d WHERE `id` = %d", PlayerInfo[Player][pTotalCredits], GetPlayerSQLId(Player));
  1394. mysql_tquery(MainPipeline, szQuery, "OnQueryFinish", "ii", SENDDATA_THREAD, Player);
  1395. print(szQuery);
  1396. }
  1397. // native g_mysql_SaveToys(int playerid, int slotid)
  1398. stock g_mysql_SaveToys(playerid, slotid)
  1399. {
  1400. new szQuery[2048];
  1401. if(PlayerToyInfo[playerid][slotid][ptID] >= 1) // Making sure the player actually has a toy so we won't save a empty row
  1402. {
  1403. //printf("%s (%i) saving toy %i...", GetPlayerNameEx(playerid), playerid, slotid);
  1404. mysql_format(MainPipeline, szQuery, sizeof(szQuery), "UPDATE `toys` SET `modelid` = '%d', `bone` = '%d', `posx` = '%f', `posy` = '%f', `posz` = '%f', `rotx` = '%f', `roty` = '%f', `rotz` = '%f', `scalex` = '%f', `scaley` = '%f', `scalez` = '%f', `tradable` = '%d', `autoattach` = '%d' WHERE `id` = '%d'",
  1405. PlayerToyInfo[playerid][slotid][ptModelID],
  1406. PlayerToyInfo[playerid][slotid][ptBone],
  1407. PlayerToyInfo[playerid][slotid][ptPosX],
  1408. PlayerToyInfo[playerid][slotid][ptPosY],
  1409. PlayerToyInfo[playerid][slotid][ptPosZ],
  1410. PlayerToyInfo[playerid][slotid][ptRotX],
  1411. PlayerToyInfo[playerid][slotid][ptRotY],
  1412. PlayerToyInfo[playerid][slotid][ptRotZ],
  1413. PlayerToyInfo[playerid][slotid][ptScaleX],
  1414. PlayerToyInfo[playerid][slotid][ptScaleY],
  1415. PlayerToyInfo[playerid][slotid][ptScaleZ],
  1416. PlayerToyInfo[playerid][slotid][ptTradable],
  1417. PlayerToyInfo[playerid][slotid][ptAutoAttach],
  1418. PlayerToyInfo[playerid][slotid][ptID]);
  1419. mysql_tquery(MainPipeline, szQuery, "OnQueryFinish", "ii", SENDDATA_THREAD, playerid);
  1420. }
  1421. }
  1422. // native g_mysql_NewToy(int playerid, int slotid)
  1423. stock g_mysql_NewToy(playerid, slotid)
  1424. {
  1425. new szQuery[2048];
  1426. //if(PlayerToyInfo[playerid][slotid][ptSpecial] != 1) { PlayerToyInfo[playerid][slotid][ptSpecial] = 0; }
  1427. format(szQuery, sizeof(szQuery), "INSERT INTO `toys` (player, modelid, bone, posx, posy, posz, rotx, roty, rotz, scalex, scaley, scalez, tradable, special, autoattach) VALUES ('%d', '%d', '%d', '%f', '%f', '%f', '%f', '%f', '%f', '%f', '%f', '%f', '%d', '%d', '%d')",
  1428. PlayerInfo[playerid][pId],
  1429. PlayerToyInfo[playerid][slotid][ptModelID],
  1430. PlayerToyInfo[playerid][slotid][ptBone],
  1431. PlayerToyInfo[playerid][slotid][ptPosX],
  1432. PlayerToyInfo[playerid][slotid][ptPosY],
  1433. PlayerToyInfo[playerid][slotid][ptPosZ],
  1434. PlayerToyInfo[playerid][slotid][ptRotX],
  1435. PlayerToyInfo[playerid][slotid][ptRotY],
  1436. PlayerToyInfo[playerid][slotid][ptRotZ],
  1437. PlayerToyInfo[playerid][slotid][ptScaleX],
  1438. PlayerToyInfo[playerid][slotid][ptScaleY],
  1439. PlayerToyInfo[playerid][slotid][ptScaleZ],
  1440. PlayerToyInfo[playerid][slotid][ptTradable],
  1441. PlayerToyInfo[playerid][slotid][ptSpecial],
  1442. PlayerToyInfo[playerid][slotid][ptAutoAttach]);
  1443. mysql_tquery(MainPipeline, szQuery, "OnQueryCreateToy", "ii", playerid, slotid);
  1444. }
  1445. // g_mysql_LoadMOTD()
  1446. // Description: Loads the MOTDs from the MySQL Database.
  1447. stock g_mysql_LoadMOTD()
  1448. {
  1449. mysql_tquery(MainPipeline, "SELECT * FROM `misc`", "OnQueryFinish", "iii", LOADMOTDDATA_THREAD, INVALID_PLAYER_ID, -1);
  1450. }
  1451. stock g_mysql_LoadSales()
  1452. {
  1453. mysql_tquery(MainPipeline, "SELECT * FROM `sales` WHERE `Month` > NOW() - INTERVAL 1 MONTH", "OnQueryFinish", "iii", LOADSALEDATA_THREAD, INVALID_PLAYER_ID, -1);
  1454. //mysql_tquery(MainPipeline, "SELECT `TotalToySales`,`TotalCarSales`,`GoldVIPSales`,`SilverVIPSales`,`BronzeVIPSales` FROM `sales` WHERE `Month` > NOW() - INTERVAL 1 MONTH", true, "OnQueryFinish", "iii", LOADSALEDATA_THREAD, INVALID_PLAYER_ID, -1);
  1455. }
  1456. stock g_mysql_LoadPrices()
  1457. {
  1458. mysql_tquery(MainPipeline, "SELECT * FROM `shopprices`", "OnQueryFinish", "iii", LOADSHOPDATA_THREAD, INVALID_PLAYER_ID, -1);
  1459. }
  1460. stock g_mysql_SavePrices()
  1461. {
  1462. new query[2000];
  1463. strins(query, "UPDATE `shopprices` SET ", 0);
  1464. for(new p = 0; p < MAX_ITEMS; p++)
  1465. {
  1466. format(query, sizeof(query), "%s`Price%d` = '%d', ", query, p, ShopItems[p][sItemPrice]);
  1467. }
  1468. new mString[128];
  1469. for(new m; m < MAX_MICROITEMS; m++)
  1470. {
  1471. format(mString, sizeof(mString), "%s%d", mString, MicroItems[m]);
  1472. if(m != MAX_MICROITEMS-1) strcat(mString, "|");
  1473. }
  1474. mysql_format(MainPipeline, query, sizeof(query), "%s`MicroPrices` = '%s'", query, mString);
  1475. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  1476. }
  1477. stock g_mysql_SaveMOTD()
  1478. {
  1479. new query[1500];
  1480. mysql_format(MainPipeline, query, sizeof(query), "UPDATE `misc` SET ");
  1481. mysql_format(MainPipeline, query, sizeof(query), "%s `gMOTD` = '%e',", query, GlobalMOTD);
  1482. mysql_format(MainPipeline, query, sizeof(query), "%s `aMOTD` = '%e',", query, AdminMOTD);
  1483. mysql_format(MainPipeline, query, sizeof(query), "%s `vMOTD` = '%e',", query, VIPMOTD);
  1484. mysql_format(MainPipeline, query, sizeof(query), "%s `cMOTD` = '%e',", query, CAMOTD);
  1485. mysql_format(MainPipeline, query, sizeof(query), "%s `pMOTD` = '%e',", query, pMOTD);
  1486. mysql_format(MainPipeline, query, sizeof(query), "%s `prisonerMOTD` = '%e',", query, prisonerMOTD[0]);
  1487. mysql_format(MainPipeline, query, sizeof(query), "%s `prisonerMOTD2` = '%e',", query, prisonerMOTD[1]);
  1488. mysql_format(MainPipeline, query, sizeof(query), "%s `prisonerMOTD3` = '%e',", query, prisonerMOTD[2]);
  1489. mysql_format(MainPipeline, query, sizeof(query), "%s `ShopTechPay` = '%.2f',", query, ShopTechPay);
  1490. mysql_format(MainPipeline, query, sizeof(query), "%s `GiftCode` = '%e',", query, GiftCode);
  1491. mysql_format(MainPipeline, query, sizeof(query), "%s `GiftCodeBypass` = '%d',", query, GiftCodeBypass);
  1492. mysql_format(MainPipeline, query, sizeof(query), "%s `TotalCitizens` = '%d',", query, TotalCitizens);
  1493. mysql_format(MainPipeline, query, sizeof(query), "%s `TRCitizens` = '%d',", query, TRCitizens);
  1494. mysql_format(MainPipeline, query, sizeof(query), "%s `ShopClosed` = '%d',", query, ShopClosed);
  1495. mysql_format(MainPipeline, query, sizeof(query), "%s `RimMod` = '%d',", query, RimMod);
  1496. mysql_format(MainPipeline, query, sizeof(query), "%s `CarVoucher` = '%d',", query, CarVoucher);
  1497. mysql_format(MainPipeline, query, sizeof(query), "%s `PVIPVoucher` = '%d',", query, PVIPVoucher);
  1498. mysql_format(MainPipeline, query, sizeof(query), "%s `GarageVW` = '%d',", query, GarageVW);
  1499. mysql_format(MainPipeline, query, sizeof(query), "%s `PumpkinStock` = '%d',", query, PumpkinStock);
  1500. mysql_format(MainPipeline, query, sizeof(query), "%s `HalloweenShop` = '%d',", query, HalloweenShop);
  1501. mysql_format(MainPipeline, query, sizeof(query), "%s `PassComplexCheck` = '%d',", query, PassComplexCheck);
  1502. mysql_format(MainPipeline, query, sizeof(query), "%s `GunPrice0` = '%d',", query, GunPrices[0]);
  1503. mysql_format(MainPipeline, query, sizeof(query), "%s `GunPrice1` = '%d',", query, GunPrices[1]);
  1504. mysql_format(MainPipeline, query, sizeof(query), "%s `GunPrice2` = '%d',", query, GunPrices[2]);
  1505. mysql_format(MainPipeline, query, sizeof(query), "%s `GunPrice3` = '%d',", query, GunPrices[3]);
  1506. mysql_format(MainPipeline, query, sizeof(query), "%s `GunPrice4` = '%d',", query, GunPrices[4]);
  1507. mysql_format(MainPipeline, query, sizeof(query), "%s `GunPrice5` = '%d'", query, GunPrices[5]);
  1508. CallLocalFunction("SaveInactiveResourceSettings", "is", sizeof(query), query);
  1509. new qryLength = strlen(query);
  1510. if(query[qryLength-1] == ',') strdel(query, qryLength-1, qryLength);
  1511. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  1512. }
  1513. // g_mysql_LoadMOTD()
  1514. // Description: Loads the Crates from the MySQL Database.
  1515. /*stock RemoveBan(Player, Ip[])
  1516. {
  1517. new string[128];
  1518. SetPVarString(Player, "UnbanIP", Ip);
  1519. format(string, sizeof(string), "SELECT `ip` FROM `ip_bans` WHERE `ip` = '%s'", Ip);
  1520. mysql_tquery(MainPipeline, string, true, "AddingBan", "ii", Player, 2);
  1521. return 1;
  1522. }*/
  1523. stock CheckBanEx(playerid)
  1524. {
  1525. new string[280];
  1526. mysql_format(MainPipeline, string, sizeof(string), "SELECT `IP` FROM `ban` WHERE `IP` = '%s' AND `active` = '1'", GetPlayerIpEx(playerid));
  1527. mysql_tquery(MainPipeline, string, "OnQueryFinish", "iii", IPBAN_THREAD, playerid, g_arrQueryHandle{playerid});
  1528. return 1;
  1529. }
  1530. stock AddBan(Admin, Player, Reason[])
  1531. {
  1532. new string[128];
  1533. SetPVarInt(Admin, "BanningPlayer", Player);
  1534. SetPVarString(Admin, "BanningReason", Reason);
  1535. mysql_format(MainPipeline, string, sizeof(string), "SELECT `ip` FROM `ip_bans` WHERE `ip` = '%s'", GetPlayerIpEx(Player));
  1536. mysql_tquery(MainPipeline, string, "AddingBan", "ii", Admin, 1);
  1537. return 1;
  1538. }
  1539. stock SystemBan(Player, Reason[])
  1540. {
  1541. new string[256];
  1542. mysql_format(MainPipeline, string, sizeof(string), "INSERT INTO `ip_bans` (`ip`, `date`, `reason`, `admin`) VALUES ('%s', NOW(), '%e', 'System')", GetPlayerIpEx(Player), Reason);
  1543. mysql_tquery(MainPipeline, string, "OnQueryFinish", "i", SENDDATA_THREAD);
  1544. return 1;
  1545. }
  1546. stock MySQLBan(userid,ip[],reason[],status,admin[])
  1547. {
  1548. new string[256];
  1549. mysql_format(MainPipeline, string, sizeof(string), "INSERT INTO `bans` (`user_id`, `ip_address`, `reason`, `date_added`, `status`, `admin`) VALUES ('%d','%s','%e', NOW(), '%d','%e')", userid, ip, reason, status, admin);
  1550. mysql_tquery(MainPipeline, string, "OnQueryFinish", "i", SENDDATA_THREAD);
  1551. return 1;
  1552. }
  1553. stock AddCrime(cop, suspect, crime[])
  1554. {
  1555. new query[256], iAllegiance;
  1556. if((0 <= PlayerInfo[cop][pMember] < MAX_GROUPS))
  1557. {
  1558. iAllegiance = arrGroupData[PlayerInfo[cop][pMember]][g_iAllegiance];
  1559. }
  1560. else iAllegiance = 1;
  1561. mysql_format(MainPipeline, query, sizeof(query), "INSERT INTO `mdc` (`id` ,`time` ,`issuer` ,`crime`, `origin`) VALUES ('%d', NOW(), '%e', '%e', '%d')", GetPlayerSQLId(suspect), GetPlayerNameEx(cop), crime, iAllegiance);
  1562. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  1563. format(query, sizeof(query), "MDC: %s(%d) added crime %s to %s(%d).", GetPlayerNameEx(cop), GetPlayerSQLId(cop), crime, GetPlayerNameEx(suspect), GetPlayerSQLId(suspect));
  1564. Log("logs/crime.log", query);
  1565. return 1;
  1566. }
  1567. stock ClearCrimes(playerid, clearerid = INVALID_PLAYER_ID)
  1568. {
  1569. new query[220], iAllegiance;
  1570. if(clearerid != INVALID_PLAYER_ID && (0 <= PlayerInfo[clearerid][pMember] < MAX_GROUPS))
  1571. {
  1572. iAllegiance = arrGroupData[PlayerInfo[clearerid][pMember]][g_iAllegiance];
  1573. mysql_format(MainPipeline, query, sizeof(query), "UPDATE `mdc` SET `active`= 0 WHERE `id` = %i AND `active` = 1 AND origin = %d", GetPlayerSQLId(playerid), iAllegiance);
  1574. }
  1575. else {
  1576. mysql_format(MainPipeline, query, sizeof(query), "UPDATE `mdc` SET `active`= 0 WHERE `id` = %i AND `active` = 1", GetPlayerSQLId(playerid));
  1577. }
  1578. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  1579. return 1;
  1580. }
  1581. stock DisplayCrimes(playerid, suspectid)
  1582. {
  1583. new query[128], iAllegiance;
  1584. if((0 <= PlayerInfo[playerid][pMember] < MAX_GROUPS))
  1585. {
  1586. iAllegiance = arrGroupData[PlayerInfo[playerid][pMember]][g_iAllegiance];
  1587. }
  1588. else iAllegiance = 1;
  1589. mysql_format(MainPipeline, query, sizeof(query), "SELECT issuer, crime, active FROM `mdc` WHERE `id` = '%d' AND `origin` = '%d' ORDER BY `time` AND `active` DESC LIMIT 12", GetPlayerSQLId(suspectid), iAllegiance);
  1590. mysql_tquery(MainPipeline, query, "MDCQueryFinish", "ii", playerid, suspectid);
  1591. return 1;
  1592. }
  1593. stock DisplayReports(playerid, suspectid)
  1594. {
  1595. new query[812], iAllegiance;
  1596. if((0 <= PlayerInfo[playerid][pMember] < MAX_GROUPS))
  1597. {
  1598. iAllegiance = arrGroupData[PlayerInfo[playerid][pMember]][g_iAllegiance];
  1599. }
  1600. else iAllegiance = 1;
  1601. mysql_format(MainPipeline, query, sizeof(query), "SELECT arrestreports.id, copid, shortreport, datetime, accounts.id, accounts.Username FROM `arrestreports` LEFT JOIN `accounts` ON arrestreports.copid=accounts.id WHERE arrestreports.suspectid=%d AND arrestreports.origin=%d ORDER BY arrestreports.datetime DESC LIMIT 12", GetPlayerSQLId(suspectid), iAllegiance);
  1602. mysql_tquery(MainPipeline, query, "MDCReportsQueryFinish", "ii", playerid, suspectid);
  1603. return 1;
  1604. }
  1605. stock DisplayReport(playerid, reportid)
  1606. {
  1607. new query[812];
  1608. mysql_format(MainPipeline, query, sizeof(query), "SELECT arrestreports.id, copid, shortreport, datetime, accounts.id, accounts.Username FROM `arrestreports` LEFT JOIN `accounts` ON arrestreports.copid=accounts.id WHERE arrestreports.id=%d ORDER BY arrestreports.datetime DESC LIMIT 12", reportid);
  1609. mysql_tquery(MainPipeline, query, "MDCReportQueryFinish", "ii", playerid, reportid);
  1610. return 1;
  1611. }
  1612. stock SetUnreadMailsNotification(playerid)
  1613. {
  1614. new query[128];
  1615. mysql_format(MainPipeline, query, sizeof(query), "SELECT COUNT(*) AS Unread_Count FROM letters WHERE Receiver_ID = %d AND `Read` = 0", GetPlayerSQLId(playerid));
  1616. mysql_tquery(MainPipeline, query, "UnreadMailsNotificationQueryFin", "i", playerid);
  1617. return 1;
  1618. }
  1619. stock DisplayMails(playerid)
  1620. {
  1621. new query[150];
  1622. mysql_format(MainPipeline, query, sizeof(query), "SELECT `Id`, `Message`, `Read` FROM `letters` WHERE `Receiver_Id` = %d AND `Delivery_Min` = 0 ORDER BY `Id` DESC LIMIT 50", GetPlayerSQLId(playerid));
  1623. mysql_tquery(MainPipeline, query, "MailsQueryFinish", "i", playerid);
  1624. }
  1625. stock DisplayMailDetails(playerid, letterid)
  1626. {
  1627. new query[256];
  1628. mysql_format(MainPipeline, query, sizeof(query), "SELECT `Id`, `Date`, `Sender_Id`, `Read`, `Notify`, `Message`, (SELECT `Username` FROM `accounts` WHERE `id` = letters.Sender_Id) AS `SenderUser` FROM `letters` WHERE id = %d", letterid);
  1629. mysql_tquery(MainPipeline, query, "MailDetailsQueryFinish", "i", playerid);
  1630. }
  1631. stock CountFlags(playerid)
  1632. {
  1633. new query[80];
  1634. mysql_format(MainPipeline, query, sizeof(query), "SELECT * FROM `flags` WHERE id=%d AND type = 1", GetPlayerSQLId(playerid));
  1635. mysql_tquery(MainPipeline, query, "FlagQueryFinish", "iii", playerid, INVALID_PLAYER_ID, Flag_Query_Count);
  1636. return 1;
  1637. }
  1638. stock AddFlag(playerid, adminid, flag[], type = 1)
  1639. {
  1640. new query[300];
  1641. new admin[24];
  1642. if(adminid != INVALID_PLAYER_ID) {
  1643. format(admin, sizeof(admin), "%s", GetPlayerNameEx(adminid));
  1644. }
  1645. else {
  1646. format(admin, sizeof(admin), "Gifted/Script Added");
  1647. }
  1648. PlayerInfo[playerid][pFlagged]++;
  1649. mysql_format(MainPipeline, query, sizeof(query), "INSERT INTO `flags` (`id` ,`time` ,`issuer` ,`flag`, `type`) VALUES ('%d',NOW(),'%e','%e','%d')", GetPlayerSQLId(playerid), admin, flag, type);
  1650. mysql_tquery(MainPipeline, query, "OnAddFlag", "iss", playerid, admin, flag);
  1651. return 1;
  1652. }
  1653. forward OnAddFlag(target, admin[], flag[]);
  1654. public OnAddFlag(target, admin[], flag[])
  1655. {
  1656. new string[128], flag_sqlid = cache_insert_id();
  1657. format(string, sizeof(string), "FLAG (%d): %s added flag \"%s\" to %s(%d)", flag_sqlid, admin, flag, GetPlayerNameEx(target), GetPlayerSQLId(target));
  1658. Log("logs/flags.log", string);
  1659. return 1;
  1660. }
  1661. stock AddOFlag(sqlid, adminid, flag[]) // offline add
  1662. {
  1663. new query[300];
  1664. new admin[24], name[24];
  1665. if(adminid != INVALID_PLAYER_ID) {
  1666. format(admin, sizeof(admin), "%s", GetPlayerNameEx(adminid));
  1667. }
  1668. else {
  1669. format(admin, sizeof(admin), "Gifted/Script Added");
  1670. }
  1671. GetPVarString(adminid, "OnAddFlag", name, sizeof(name));
  1672. mysql_format(MainPipeline, query, sizeof(query), "INSERT INTO `flags` (`id` ,`time` ,`issuer` ,`flag`) VALUES ('%d',NOW(),'%e','%e')", sqlid, admin, flag);
  1673. mysql_tquery(MainPipeline, query, "OnAddOFlag", "isss", sqlid, name, admin, flag);
  1674. DeletePVar(adminid, "OnAddFlag");
  1675. return 1;
  1676. }
  1677. forward OnAddOFlag(psqlid, name[], admin[], flag[]);
  1678. public OnAddOFlag(psqlid, name[], admin[], flag[])
  1679. {
  1680. new string[128], flag_sqlid = cache_insert_id();
  1681. format(string, sizeof(string), "OFLAG (%d): %s added flag \"%s\" to %s(%d)", flag_sqlid, admin, flag, name, psqlid);
  1682. Log("logs/flags.log", string);
  1683. return 1;
  1684. }
  1685. forward OnRequestDeleteFlag(playerid, flagid);
  1686. public OnRequestDeleteFlag(playerid, flagid)
  1687. {
  1688. new rows, fields, value, string[256];
  1689. new FlagText[64], FlagIssuer[MAX_PLAYER_NAME], FlagDate[24];
  1690. cache_get_row_count(rows);
  1691. cache_get_field_count(fields);
  1692. if(!rows) return ShowPlayerDialogEx(playerid, DIALOG_NOTHING, DIALOG_STYLE_MSGBOX, "{FF0000}Flag Error:", "Flag does not exist!", "Close", "");
  1693. cache_get_value_name_int(0, "type", value);
  1694. if(value == 2 && PlayerInfo[playerid][pAdmin] < 4 && PlayerInfo[playerid][pASM] < 1) return ShowPlayerDialogEx(playerid, DIALOG_NOTHING, DIALOG_STYLE_MSGBOX, "{FF0000}Flag Error:", "Only Senior Admins+ can remove administrative flags!", "Close", "");
  1695. cache_get_value_name(0, "flag", FlagText, 64);
  1696. cache_get_value_name(0, "issuer", FlagIssuer, MAX_PLAYER_NAME);
  1697. cache_get_value_name(0, "time", FlagDate, 24);
  1698. SetPVarInt(playerid, "Flag_Delete_ID", flagid);
  1699. SetPVarString(playerid, "FlagText", FlagText);
  1700. format(string, sizeof(string), "Are you sure you want to delete:\n{FF6347}Flag ID:{BFC0C2} %d\n{FF6347}Flag:{BFC0C2} %s\n{FF6347}Issued by:{BFC0C2} %s\n{FF6347}Date Issued: {BFC0C2}%s", flagid, FlagText, FlagIssuer, FlagDate);
  1701. return ShowPlayerDialogEx(playerid, FLAG_DELETE2, DIALOG_STYLE_MSGBOX, "FLAG DELETION", string, "Yes", "No");
  1702. }
  1703. stock DeleteFlag(flagid, adminid)
  1704. {
  1705. new query[256], flagtext[64];
  1706. GetPVarString(adminid, "FlagText", flagtext, sizeof(flagtext));
  1707. format(query, sizeof(query), "FLAG (%d): \"%s\" was deleted by %s.", flagid, flagtext, GetPlayerNameEx(adminid));
  1708. Log("logs/flags.log", query);
  1709. mysql_format(MainPipeline, query, sizeof(query), "DELETE FROM `flags` WHERE `fid` = %i", flagid);
  1710. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  1711. DeletePVar(adminid, "Flag_Delete_ID");
  1712. DeletePVar(adminid, "FlagText");
  1713. return 1;
  1714. }
  1715. stock DisplayFlags(playerid, targetid, type = 1)
  1716. {
  1717. new query[128];
  1718. CountFlags(targetid);
  1719. mysql_format(MainPipeline, query, sizeof(query), "SELECT fid, flag FROM `flags` WHERE id=%d AND type = %d ORDER BY `time` LIMIT 20", GetPlayerSQLId(targetid), type);
  1720. mysql_tquery(MainPipeline, query, "FlagQueryFinish", "iii", playerid, targetid, Flag_Query_Display);
  1721. SetPVarInt(playerid, "viewingflags", targetid);
  1722. DeletePVar(playerid, "ManageFlagID");
  1723. return 1;
  1724. }
  1725. stock CountSkins(playerid)
  1726. {
  1727. new query[80];
  1728. mysql_format(MainPipeline, query, sizeof(query), "SELECT NULL FROM `house_closet` WHERE playerid = %d", GetPlayerSQLId(playerid));
  1729. mysql_tquery(MainPipeline, query, "SkinQueryFinish", "ii", playerid, Skin_Query_Count);
  1730. return 1;
  1731. }
  1732. stock AddSkin(playerid, skinid)
  1733. {
  1734. new query[300];
  1735. PlayerInfo[playerid][pSkins]++;
  1736. mysql_format(MainPipeline, query, sizeof(query), "INSERT INTO `house_closet` (`id`, `playerid`, `skinid`) VALUES (NULL, '%d', '%d')", GetPlayerSQLId(playerid), skinid);
  1737. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  1738. return 1;
  1739. }
  1740. stock DeleteSkin(skinid)
  1741. {
  1742. new query[80];
  1743. mysql_format(MainPipeline, query, sizeof(query), "DELETE FROM `house_closet` WHERE `id` = %i", skinid);
  1744. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  1745. return 1;
  1746. }
  1747. stock DisplaySkins(playerid)
  1748. {
  1749. new query[128];
  1750. CountSkins(playerid);
  1751. mysql_format(MainPipeline, query, sizeof(query), "SELECT `skinid` FROM `house_closet` WHERE playerid = %d ORDER BY `skinid` ASC", GetPlayerSQLId(playerid));
  1752. mysql_tquery(MainPipeline, query, "SkinQueryFinish", "ii", playerid, Skin_Query_Display);
  1753. return 1;
  1754. }
  1755. stock CountCitizens()
  1756. {
  1757. mysql_tquery(MainPipeline, "SELECT NULL FROM `accounts` WHERE `Nation` = 1 && `UpdateDate` > NOW() - INTERVAL 1 WEEK", "CitizenQueryFinish", "i", TR_Citizen_Count);
  1758. mysql_tquery(MainPipeline, "SELECT NULL FROM `accounts` WHERE `UpdateDate` > NOW() - INTERVAL 1 WEEK", "CitizenQueryFinish", "i", Total_Count);
  1759. return 1;
  1760. }
  1761. stock CheckNationQueue(playerid, nation)
  1762. {
  1763. new query[300];
  1764. mysql_format(MainPipeline, query, sizeof(query), "SELECT NULL FROM `nation_queue` WHERE `playerid` = %d AND `status` = 1", GetPlayerSQLId(playerid));
  1765. mysql_tquery(MainPipeline, query, "NationQueueQueryFinish", "iii", playerid, nation, CheckQueue);
  1766. }
  1767. stock AddNationQueue(playerid, nation, status)
  1768. {
  1769. new query[300];
  1770. if(nation == 0)
  1771. {
  1772. mysql_format(MainPipeline, query, sizeof(query), "INSERT INTO `nation_queue` (`id`, `playerid`, `name`, `date`, `nation`, `status`) VALUES (NULL, %d, '%s', NOW(), 0, %d)", GetPlayerSQLId(playerid), GetPlayerNameExt(playerid), status);
  1773. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  1774. }
  1775. if(nation == 1)
  1776. {
  1777. if(status == 1)
  1778. {
  1779. mysql_format(MainPipeline, query, sizeof(query), "SELECT NULL FROM `nation_queue` WHERE `playerid` = %d AND `nation` = 1", GetPlayerSQLId(playerid));
  1780. mysql_tquery(MainPipeline, query, "NationQueueQueryFinish", "iii", playerid, nation, AddQueue);
  1781. }
  1782. else if(status == 2)
  1783. {
  1784. mysql_format(MainPipeline, query, sizeof(query), "INSERT INTO `nation_queue` (`id`, `playerid`, `name`, `date`, `nation`, `status`) VALUES (NULL, %d, '%s', NOW(), 1, %d)", GetPlayerSQLId(playerid), GetPlayerNameExt(playerid), status);
  1785. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  1786. PlayerInfo[playerid][pNation] = 1;
  1787. }
  1788. }
  1789. return 1;
  1790. }
  1791. stock UpdateCitizenApp(playerid, nation)
  1792. {
  1793. new query[300];
  1794. mysql_format(MainPipeline, query, sizeof(query), "SELECT NULL FROM `nation_queue` WHERE `playerid` = %d AND `status` = 1", GetPlayerSQLId(playerid));
  1795. mysql_tquery(MainPipeline, query, "NationQueueQueryFinish", "iii", playerid, nation, UpdateQueue);
  1796. }
  1797. stock AddTicket(playerid, number)
  1798. {
  1799. new query[80];
  1800. PlayerInfo[playerid][pLottoNr]++;
  1801. mysql_format(MainPipeline, query, sizeof(query), "INSERT INTO `lotto` (`id` ,`number`) VALUES ('%d', '%d')", GetPlayerSQLId(playerid), number);
  1802. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  1803. return 1;
  1804. }
  1805. stock DeleteTickets(playerid)
  1806. {
  1807. new query[80];
  1808. mysql_format(MainPipeline, query, sizeof(query), "DELETE FROM `lotto` WHERE `id` = %i", GetPlayerSQLId(playerid));
  1809. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  1810. return 1;
  1811. }
  1812. stock LoadTickets(playerid)
  1813. {
  1814. new query[128];
  1815. mysql_format(MainPipeline, query, sizeof(query), "SELECT `tid`, `number` FROM `lotto` WHERE `id` = %d LIMIT 5", GetPlayerSQLId(playerid));
  1816. mysql_tquery(MainPipeline, query, "LoadTicket", "i", playerid);
  1817. return 1;
  1818. }
  1819. stock CountTickets(playerid)
  1820. {
  1821. new query[80];
  1822. mysql_format(MainPipeline, query, sizeof(query), "SELECT * FROM `lotto` WHERE `id` = %i", GetPlayerSQLId(playerid));
  1823. mysql_tquery(MainPipeline, query, "CountAmount", "i", playerid);
  1824. return 1;
  1825. }
  1826. stock LoadTreasureInventory(playerid)
  1827. {
  1828. new query[175];
  1829. mysql_format(MainPipeline, query, sizeof(query), "SELECT `junkmetal`, `newcoin`, `oldcoin`, `brokenwatch`, `oldkey`, `treasure`, `goldwatch`, `silvernugget`, `goldnugget` FROM `jobstuff` WHERE `pId` = %d", GetPlayerSQLId(playerid));
  1830. mysql_tquery(MainPipeline, query, "LoadTreasureInvent", "i", playerid);
  1831. return 1;
  1832. }
  1833. stock SaveTreasureInventory(playerid)
  1834. {
  1835. new string[220];
  1836. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `jobstuff` SET `junkmetal` = %d, `newcoin` = %d, `oldcoin` = %d, `brokenwatch` = %d, `oldkey` = %d, \
  1837. `treasure` = %d, `goldwatch` = %d, `silvernugget` = %d, `goldnugget` =%d WHERE `pId` = %d", GetPVarInt(playerid, "junkmetal"), GetPVarInt(playerid, "newcoin"), GetPVarInt(playerid, "oldcoin"),
  1838. GetPVarInt(playerid, "brokenwatch"), GetPVarInt(playerid, "oldkey"), GetPVarInt(playerid, "treasure"), GetPVarInt(playerid, "goldwatch"), GetPVarInt(playerid, "silvernugget"), GetPVarInt(playerid, "goldnugget"), GetPlayerSQLId(playerid));
  1839. mysql_tquery(MainPipeline, string, "OnQueryFinish", "i", SENDDATA_THREAD);
  1840. return 1;
  1841. }
  1842. stock SQL_Log(const szQuery[], const szDesc[] = "none", iExtraID = 0) {
  1843. new i_dateTime[2][3];
  1844. gettime(i_dateTime[0][0], i_dateTime[0][1], i_dateTime[0][2]);
  1845. getdate(i_dateTime[1][0], i_dateTime[1][1], i_dateTime[1][2]);
  1846. printf("Dumping query from %i/%i/%i (%i:%i:%i)\r\nDescription: %s (index %i). Query:\r\n", i_dateTime[1][0], i_dateTime[1][1], i_dateTime[1][2], i_dateTime[0][0], i_dateTime[0][1], i_dateTime[0][2], szDesc, iExtraID);
  1847. if(strlen(szQuery) > 1023)
  1848. {
  1849. new sz_print[1024];
  1850. new Float:maxfloat = strlen(szQuery)/1023;
  1851. for(new x;x<=floatround(maxfloat, floatround_ceil);x++)
  1852. {
  1853. strmid(sz_print, szQuery, 0+(x*1023), 1023+(x*1023));
  1854. print(sz_print);
  1855. }
  1856. }
  1857. else
  1858. {
  1859. print(szQuery);
  1860. }
  1861. return 1;
  1862. }
  1863. stock LoadMailboxes()
  1864. {
  1865. printf("[LoadMailboxes] Loading data from database...");
  1866. mysql_tquery(MainPipeline, "SELECT * FROM `mailboxes`", "OnLoadMailboxes", "");
  1867. }
  1868. stock LoadHGBackpacks()
  1869. {
  1870. printf("[Loading Hunger Games] Loading Hunger Games Backpacks from the database, please wait...");
  1871. mysql_tquery(MainPipeline, "SELECT * FROM `hgbackpacks`", "OnLoadHGBackpacks", "");
  1872. }
  1873. stock SaveMailbox(id)
  1874. {
  1875. new string[512];
  1876. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `mailboxes` SET \
  1877. `VW`=%d, \
  1878. `Int`=%d, \
  1879. `Model`=%d, \
  1880. `PosX`=%f, \
  1881. `PosY`=%f, \
  1882. `PosZ`=%f, \
  1883. `Angle`=%f WHERE `id`=%d",
  1884. MailBoxes[id][mbVW],
  1885. MailBoxes[id][mbInt],
  1886. MailBoxes[id][mbModel],
  1887. MailBoxes[id][mbPosX],
  1888. MailBoxes[id][mbPosY],
  1889. MailBoxes[id][mbPosZ],
  1890. MailBoxes[id][mbAngle],
  1891. id+1
  1892. ); // Array starts from zero, MySQL starts at 1 (this is why we are adding one).
  1893. mysql_tquery(MainPipeline, string, "OnQueryFinish", "i", SENDDATA_THREAD);
  1894. }
  1895. stock IsAdminSpawnedVehicle(vehicleid)
  1896. {
  1897. for(new i = 0; i < sizeof(CreatedCars); ++i) {
  1898. if(CreatedCars[i] == vehicleid) return 1;
  1899. }
  1900. return 0;
  1901. }
  1902. // credits to Luk0r
  1903. stock MySQLUpdateBuild(query[], sqlplayerid)
  1904. {
  1905. new querylen = strlen(query);
  1906. if (!query[0]) {
  1907. mysql_format(MainPipeline, query, 2048, "UPDATE `accounts` SET ");
  1908. }
  1909. else if (2048-querylen < 200)
  1910. {
  1911. new whereclause[32];
  1912. mysql_format(MainPipeline, whereclause, sizeof(whereclause), " WHERE `id`=%d", sqlplayerid);
  1913. strcat(query, whereclause, 2048);
  1914. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  1915. mysql_format(MainPipeline, query, 2048, "UPDATE `accounts` SET ");
  1916. }
  1917. else if (strfind(query, "=", true) != -1) strcat(query, ",", 2048);
  1918. return 1;
  1919. }
  1920. stock MySQLUpdateFinish(query[], sqlplayerid)
  1921. {
  1922. if (strcmp(query, "WHERE id=", false) == 0) mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  1923. else
  1924. {
  1925. new whereclause[32];
  1926. mysql_format(MainPipeline, whereclause, sizeof(whereclause), " WHERE id=%d", sqlplayerid);
  1927. strcat(query, whereclause, 2048);
  1928. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  1929. mysql_format(MainPipeline, query, 2048, "UPDATE `accounts` SET ");
  1930. }
  1931. return 1;
  1932. }
  1933. stock SavePlayerInteger(query[], sqlid, Value[], Integer)
  1934. {
  1935. MySQLUpdateBuild(query, sqlid);
  1936. new updval[64];
  1937. mysql_format(MainPipeline, updval, sizeof(updval), "`%s`=%d", Value, Integer);
  1938. strcat(query, updval, 2048);
  1939. return 1;
  1940. }
  1941. stock SavePlayerString(query[], sqlid, Value[], String[])
  1942. {
  1943. MySQLUpdateBuild(query, sqlid);
  1944. new escapedstring[160], string[160];
  1945. mysql_escape_string(String, escapedstring);
  1946. mysql_format(MainPipeline, string, sizeof(string), "`%s`='%s'", Value, escapedstring);
  1947. strcat(query, string, 2048);
  1948. return 1;
  1949. }
  1950. stock SavePlayerFloat(query[], sqlid, Value[], Float:Number)
  1951. {
  1952. new flotostr[32];
  1953. mysql_format(MainPipeline, flotostr, sizeof(flotostr), "%0.2f", Number);
  1954. SavePlayerString(query, sqlid, Value, flotostr);
  1955. return 1;
  1956. }
  1957. stock g_mysql_SaveAccount(playerid)
  1958. {
  1959. new query[2048];
  1960. mysql_format(MainPipeline, query, 2048, "UPDATE `accounts` SET `SPos_x` = '%0.2f', `SPos_y` = '%0.2f', `SPos_z` = '%0.2f', `SPos_r` = '%0.2f' WHERE id = '%d'",PlayerInfo[playerid][pPos_x], PlayerInfo[playerid][pPos_y], PlayerInfo[playerid][pPos_z], PlayerInfo[playerid][pPos_r], GetPlayerSQLId(playerid));
  1961. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  1962. mysql_format(MainPipeline, query, 2048, "UPDATE `accounts` SET ");
  1963. SavePlayerString(query, GetPlayerSQLId(playerid), "IP", PlayerInfo[playerid][pIP]);
  1964. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Registered", PlayerInfo[playerid][pReg]);
  1965. SavePlayerInteger(query, GetPlayerSQLId(playerid), "ConnectedTime", PlayerInfo[playerid][pConnectHours]);
  1966. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Sex", PlayerInfo[playerid][pSex]);
  1967. SavePlayerString(query, GetPlayerSQLId(playerid), "BirthDate", PlayerInfo[playerid][pBirthDate]);
  1968. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Band", PlayerInfo[playerid][pBanned]);
  1969. SavePlayerInteger(query, GetPlayerSQLId(playerid), "PermBand", PlayerInfo[playerid][pPermaBanned]);
  1970. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Warnings", PlayerInfo[playerid][pWarns]);
  1971. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Disabled", PlayerInfo[playerid][pDisabled]);
  1972. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Level", PlayerInfo[playerid][pLevel]);
  1973. SavePlayerInteger(query, GetPlayerSQLId(playerid), "AdminLevel", PlayerInfo[playerid][pAdmin]);
  1974. SavePlayerInteger(query, GetPlayerSQLId(playerid), "SeniorModerator", PlayerInfo[playerid][pSMod]);
  1975. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Helper", PlayerInfo[playerid][pHelper]);
  1976. SavePlayerInteger(query, GetPlayerSQLId(playerid), "DonateRank", PlayerInfo[playerid][pDonateRank]);
  1977. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Respect", PlayerInfo[playerid][pExp]);
  1978. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Money", GetPlayerCash(playerid));
  1979. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Bank", PlayerInfo[playerid][pAccount]);
  1980. if(PlayerInfo[playerid][pHealth] > 150) PlayerInfo[playerid][pHealth] = 150;
  1981. if(PlayerInfo[playerid][pArmor] > 150) PlayerInfo[playerid][pArmor] = 150;
  1982. SavePlayerFloat(query, GetPlayerSQLId(playerid), "pHealth", PlayerInfo[playerid][pHealth]);
  1983. SavePlayerFloat(query, GetPlayerSQLId(playerid), "pArmor", PlayerInfo[playerid][pArmor]);
  1984. SavePlayerFloat(query, GetPlayerSQLId(playerid), "pSHealth", PlayerInfo[playerid][pSHealth]);
  1985. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Int", PlayerInfo[playerid][pInt]);
  1986. SavePlayerInteger(query, GetPlayerSQLId(playerid), "VirtualWorld", PlayerInfo[playerid][pVW]);
  1987. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Model", PlayerInfo[playerid][pModel]);
  1988. SavePlayerInteger(query, GetPlayerSQLId(playerid), "BanAppealer", PlayerInfo[playerid][pBanAppealer]);
  1989. SavePlayerInteger(query, GetPlayerSQLId(playerid), "PR", PlayerInfo[playerid][pPR]);
  1990. SavePlayerInteger(query, GetPlayerSQLId(playerid), "HR", PlayerInfo[playerid][pHR]);
  1991. SavePlayerInteger(query, GetPlayerSQLId(playerid), "AP", PlayerInfo[playerid][pAP]);
  1992. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Security", PlayerInfo[playerid][pSecurity]);
  1993. SavePlayerInteger(query, GetPlayerSQLId(playerid), "ShopTech", PlayerInfo[playerid][pShopTech]);
  1994. SavePlayerInteger(query, GetPlayerSQLId(playerid), "FactionModerator", PlayerInfo[playerid][pFactionModerator]);
  1995. SavePlayerInteger(query, GetPlayerSQLId(playerid), "GangModerator", PlayerInfo[playerid][pGangModerator]);
  1996. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Undercover", PlayerInfo[playerid][pUndercover]);
  1997. SavePlayerInteger(query, GetPlayerSQLId(playerid), "TogReports", PlayerInfo[playerid][pTogReports]);
  1998. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Radio", PlayerInfo[playerid][pRadio]);
  1999. SavePlayerInteger(query, GetPlayerSQLId(playerid), "RadioFreq", PlayerInfo[playerid][pRadioFreq]);
  2000. SavePlayerInteger(query, GetPlayerSQLId(playerid), "UpgradePoints", PlayerInfo[playerid][gPupgrade]);
  2001. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Origin", PlayerInfo[playerid][pOrigin]);
  2002. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Muted", PlayerInfo[playerid][pMuted]);
  2003. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Crimes", PlayerInfo[playerid][pCrimes]);
  2004. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Accent", PlayerInfo[playerid][pAccent]);
  2005. SavePlayerInteger(query, GetPlayerSQLId(playerid), "CHits", PlayerInfo[playerid][pCHits]);
  2006. SavePlayerInteger(query, GetPlayerSQLId(playerid), "FHits", PlayerInfo[playerid][pFHits]);
  2007. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Arrested", PlayerInfo[playerid][pArrested]);
  2008. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Phonebook", PlayerInfo[playerid][pPhoneBook]);
  2009. SavePlayerInteger(query, GetPlayerSQLId(playerid), "LottoNr", PlayerInfo[playerid][pLottoNr]);
  2010. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Fishes", PlayerInfo[playerid][pFishes]);
  2011. SavePlayerInteger(query, GetPlayerSQLId(playerid), "BiggestFish", PlayerInfo[playerid][pBiggestFish]);
  2012. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Job", PlayerInfo[playerid][pJob]);
  2013. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Job2", PlayerInfo[playerid][pJob2]);
  2014. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Job3", PlayerInfo[playerid][pJob3]);
  2015. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Paycheck", PlayerInfo[playerid][pPayCheck]);
  2016. SavePlayerInteger(query, GetPlayerSQLId(playerid), "HeadValue", PlayerInfo[playerid][pHeadValue]);
  2017. SavePlayerInteger(query, GetPlayerSQLId(playerid), "JailTime", PlayerInfo[playerid][pJailTime]);
  2018. SavePlayerInteger(query, GetPlayerSQLId(playerid), "WRestricted", PlayerInfo[playerid][pWRestricted]);
  2019. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Materials", PlayerInfo[playerid][pMats]);
  2020. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Crates", PlayerInfo[playerid][pCrates]);
  2021. // SavePlayerInteger(query, GetPlayerSQLId(playerid), "Pot", PlayerInfo[playerid][pPot]);
  2022. // SavePlayerInteger(query, GetPlayerSQLId(playerid), "Crack", PlayerInfo[playerid][pCrack]);
  2023. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Nation", PlayerInfo[playerid][pNation]);
  2024. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Leader", PlayerInfo[playerid][pLeader]);
  2025. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Member", PlayerInfo[playerid][pMember]);
  2026. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Division", PlayerInfo[playerid][pDivision]);
  2027. SavePlayerString(query, GetPlayerSQLId(playerid), "Badge", PlayerInfo[playerid][pBadge]);
  2028. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Rank", PlayerInfo[playerid][pRank]);
  2029. SavePlayerInteger(query, GetPlayerSQLId(playerid), "DetSkill", PlayerInfo[playerid][pDetSkill]);
  2030. SavePlayerInteger(query, GetPlayerSQLId(playerid), "SexSkill", PlayerInfo[playerid][pSexSkill]);
  2031. SavePlayerInteger(query, GetPlayerSQLId(playerid), "BoxSkill", PlayerInfo[playerid][pBoxSkill]);
  2032. SavePlayerInteger(query, GetPlayerSQLId(playerid), "LawSkill", PlayerInfo[playerid][pLawSkill]);
  2033. SavePlayerInteger(query, GetPlayerSQLId(playerid), "MechSkill", PlayerInfo[playerid][pMechSkill]);
  2034. SavePlayerInteger(query, GetPlayerSQLId(playerid), "TruckSkill", PlayerInfo[playerid][pTruckSkill]);
  2035. SavePlayerInteger(query, GetPlayerSQLId(playerid), "DrugSmuggler", PlayerInfo[playerid][pDrugSmuggler]);
  2036. SavePlayerInteger(query, GetPlayerSQLId(playerid), "ArmsSkill", PlayerInfo[playerid][pArmsSkill]);
  2037. SavePlayerInteger(query, GetPlayerSQLId(playerid), "FishSkill", PlayerInfo[playerid][pFishSkill]);
  2038. SavePlayerInteger(query, GetPlayerSQLId(playerid), "CheckCash", PlayerInfo[playerid][pCheckCash]);
  2039. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Checks", PlayerInfo[playerid][pChecks]);
  2040. SavePlayerInteger(query, GetPlayerSQLId(playerid), "BoatLic", PlayerInfo[playerid][pBoatLic]);
  2041. SavePlayerInteger(query, GetPlayerSQLId(playerid), "FlyLic", PlayerInfo[playerid][pFlyLic]);
  2042. SavePlayerInteger(query, GetPlayerSQLId(playerid), "GunLic", PlayerInfo[playerid][pGunLic]);
  2043. SavePlayerInteger(query, GetPlayerSQLId(playerid), "FishLic", PlayerInfo[playerid][pFishLic]);
  2044. SavePlayerInteger(query, GetPlayerSQLId(playerid), "FishSkill", PlayerInfo[playerid][pFishSkill]);
  2045. SavePlayerInteger(query, GetPlayerSQLId(playerid), "FightingStyle", PlayerInfo[playerid][pFightStyle]);
  2046. SavePlayerInteger(query, GetPlayerSQLId(playerid), "PhoneNr", PlayerInfo[playerid][pPnumber]);
  2047. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Apartment", PlayerInfo[playerid][pPhousekey]);
  2048. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Apartment2", PlayerInfo[playerid][pPhousekey2]);
  2049. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Apartment3", PlayerInfo[playerid][pPhousekey3]);
  2050. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Renting", PlayerInfo[playerid][pRenting]);
  2051. SavePlayerInteger(query, GetPlayerSQLId(playerid), "CarLic", PlayerInfo[playerid][pCarLic]);
  2052. SavePlayerInteger(query, GetPlayerSQLId(playerid), "DrugsTime", PlayerInfo[playerid][pDrugsTime]);
  2053. SavePlayerInteger(query, GetPlayerSQLId(playerid), "LawyerTime", PlayerInfo[playerid][pLawyerTime]);
  2054. SavePlayerInteger(query, GetPlayerSQLId(playerid), "LawyerFreeTime", PlayerInfo[playerid][pLawyerFreeTime]);
  2055. SavePlayerInteger(query, GetPlayerSQLId(playerid), "MechTime", PlayerInfo[playerid][pMechTime]);
  2056. SavePlayerInteger(query, GetPlayerSQLId(playerid), "SexTime", PlayerInfo[playerid][pSexTime]);
  2057. SavePlayerInteger(query, GetPlayerSQLId(playerid), "PayDay", PlayerInfo[playerid][pConnectSeconds]);
  2058. SavePlayerInteger(query, GetPlayerSQLId(playerid), "PayDayHad", PlayerInfo[playerid][pPayDayHad]);
  2059. SavePlayerInteger(query, GetPlayerSQLId(playerid), "CDPlayer", PlayerInfo[playerid][pCDPlayer]);
  2060. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Dice", PlayerInfo[playerid][pDice]);
  2061. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Spraycan", PlayerInfo[playerid][pSpraycan]);
  2062. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Rope", PlayerInfo[playerid][pRope]);
  2063. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Rags", PlayerInfo[playerid][pRags]);
  2064. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Cigars", PlayerInfo[playerid][pCigar]);
  2065. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Sprunk", PlayerInfo[playerid][pSprunk]);
  2066. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Bombs", PlayerInfo[playerid][pBombs]);
  2067. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Wins", PlayerInfo[playerid][pWins]);
  2068. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Loses", PlayerInfo[playerid][pLoses]);
  2069. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Tutorial", PlayerInfo[playerid][pTut]);
  2070. SavePlayerInteger(query, GetPlayerSQLId(playerid), "OnDuty", PlayerInfo[playerid][pDuty]);
  2071. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Hospital", PlayerInfo[playerid][pHospital]);
  2072. SavePlayerInteger(query, GetPlayerSQLId(playerid), "MarriedID", PlayerInfo[playerid][pMarriedID]);
  2073. SavePlayerString(query, GetPlayerSQLId(playerid), "ContractBy", PlayerInfo[playerid][pContractBy]);
  2074. SavePlayerString(query, GetPlayerSQLId(playerid), "ContractDetail", PlayerInfo[playerid][pContractDetail]);
  2075. SavePlayerInteger(query, GetPlayerSQLId(playerid), "WantedLevel", PlayerInfo[playerid][pWantedLevel]);
  2076. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Insurance", PlayerInfo[playerid][pInsurance]);
  2077. SavePlayerInteger(query, GetPlayerSQLId(playerid), "911Muted", PlayerInfo[playerid][p911Muted]);
  2078. SavePlayerInteger(query, GetPlayerSQLId(playerid), "NewMuted", PlayerInfo[playerid][pNMute]);
  2079. SavePlayerInteger(query, GetPlayerSQLId(playerid), "NewMutedTotal", PlayerInfo[playerid][pNMuteTotal]);
  2080. SavePlayerInteger(query, GetPlayerSQLId(playerid), "AdMuted", PlayerInfo[playerid][pADMute]);
  2081. SavePlayerInteger(query, GetPlayerSQLId(playerid), "AdMutedTotal", PlayerInfo[playerid][pADMuteTotal]);
  2082. SavePlayerInteger(query, GetPlayerSQLId(playerid), "HelpMute", PlayerInfo[playerid][pHelpMute]);
  2083. SavePlayerInteger(query, GetPlayerSQLId(playerid), "ReportMuted", PlayerInfo[playerid][pRMuted]);
  2084. SavePlayerInteger(query, GetPlayerSQLId(playerid), "ReportMutedTotal", PlayerInfo[playerid][pRMutedTotal]);
  2085. SavePlayerInteger(query, GetPlayerSQLId(playerid), "ReportMutedTime", PlayerInfo[playerid][pRMutedTime]);
  2086. SavePlayerInteger(query, GetPlayerSQLId(playerid), "DMRMuted", PlayerInfo[playerid][pDMRMuted]);
  2087. SavePlayerInteger(query, GetPlayerSQLId(playerid), "VIPMuted", PlayerInfo[playerid][pVMuted]);
  2088. SavePlayerInteger(query, GetPlayerSQLId(playerid), "VIPMutedTime", PlayerInfo[playerid][pVMutedTime]);
  2089. SavePlayerInteger(query, GetPlayerSQLId(playerid), "GiftTime", PlayerInfo[playerid][pGiftTime]);
  2090. SavePlayerInteger(query, GetPlayerSQLId(playerid), "AdvisorDutyHours", PlayerInfo[playerid][pDutyHours]);
  2091. SavePlayerInteger(query, GetPlayerSQLId(playerid), "AcceptedHelp", PlayerInfo[playerid][pAcceptedHelp]);
  2092. SavePlayerInteger(query, GetPlayerSQLId(playerid), "AcceptReport", PlayerInfo[playerid][pAcceptReport]);
  2093. SavePlayerInteger(query, GetPlayerSQLId(playerid), "TrashReport", PlayerInfo[playerid][pTrashReport]);
  2094. SavePlayerInteger(query, GetPlayerSQLId(playerid), "GangWarn", PlayerInfo[playerid][pGangWarn]);
  2095. SavePlayerInteger(query, GetPlayerSQLId(playerid), "CSFBanned", PlayerInfo[playerid][pCSFBanned]);
  2096. SavePlayerInteger(query, GetPlayerSQLId(playerid), "VIPInviteDay", PlayerInfo[playerid][pVIPInviteDay]);
  2097. SavePlayerInteger(query, GetPlayerSQLId(playerid), "TempVIP", PlayerInfo[playerid][pTempVIP]);
  2098. SavePlayerInteger(query, GetPlayerSQLId(playerid), "BuddyInvite", PlayerInfo[playerid][pBuddyInvited]);
  2099. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Tokens", PlayerInfo[playerid][pTokens]);
  2100. SavePlayerInteger(query, GetPlayerSQLId(playerid), "PTokens", PlayerInfo[playerid][pPaintTokens]);
  2101. SavePlayerInteger(query, GetPlayerSQLId(playerid), "TriageTime", PlayerInfo[playerid][pTriageTime]);
  2102. SavePlayerString(query, GetPlayerSQLId(playerid), "PrisonedBy", PlayerInfo[playerid][pPrisonedBy]);
  2103. SavePlayerString(query, GetPlayerSQLId(playerid), "PrisonReason", PlayerInfo[playerid][pPrisonReason]);
  2104. SavePlayerInteger(query, GetPlayerSQLId(playerid), "TaxiLicense", PlayerInfo[playerid][pTaxiLicense]);
  2105. SavePlayerInteger(query, GetPlayerSQLId(playerid), "TicketTime", PlayerInfo[playerid][pTicketTime]);
  2106. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Screwdriver", PlayerInfo[playerid][pScrewdriver]);
  2107. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Smslog", PlayerInfo[playerid][pSmslog]);
  2108. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Speedo", PlayerInfo[playerid][pSpeedo]);
  2109. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Wristwatch", PlayerInfo[playerid][pWristwatch]);
  2110. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Surveillance", PlayerInfo[playerid][pSurveillance]);
  2111. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Tire", PlayerInfo[playerid][pTire]);
  2112. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Firstaid", PlayerInfo[playerid][pFirstaid]);
  2113. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Rccam", PlayerInfo[playerid][pRccam]);
  2114. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Receiver", PlayerInfo[playerid][pReceiver]);
  2115. SavePlayerInteger(query, GetPlayerSQLId(playerid), "GPS", PlayerInfo[playerid][pGPS]);
  2116. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Sweep", PlayerInfo[playerid][pSweep]);
  2117. SavePlayerInteger(query, GetPlayerSQLId(playerid), "SweepLeft", PlayerInfo[playerid][pSweepLeft]);
  2118. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Bugged", PlayerInfo[playerid][pBugged]);
  2119. SavePlayerInteger(query, GetPlayerSQLId(playerid), "pWExists", PlayerInfo[playerid][pWeedObject]);
  2120. SavePlayerInteger(query, GetPlayerSQLId(playerid), "pWSeeds", PlayerInfo[playerid][pWSeeds]);
  2121. SavePlayerString(query, GetPlayerSQLId(playerid), "Warrants", PlayerInfo[playerid][pWarrant]);
  2122. SavePlayerInteger(query, GetPlayerSQLId(playerid), "JudgeJailTime", PlayerInfo[playerid][pJudgeJailTime]);
  2123. SavePlayerInteger(query, GetPlayerSQLId(playerid), "JudgeJailType", PlayerInfo[playerid][pJudgeJailType]);
  2124. SavePlayerInteger(query, GetPlayerSQLId(playerid), "BeingSentenced", PlayerInfo[playerid][pBeingSentenced]);
  2125. SavePlayerInteger(query, GetPlayerSQLId(playerid), "ProbationTime", PlayerInfo[playerid][pProbationTime]);
  2126. SavePlayerInteger(query, GetPlayerSQLId(playerid), "DMKills", PlayerInfo[playerid][pDMKills]);
  2127. SavePlayerInteger(query, GetPlayerSQLId(playerid), "OrderConfirmed", PlayerInfo[playerid][pOrderConfirmed]);
  2128. SavePlayerInteger(query, GetPlayerSQLId(playerid), "FreezeHouse", PlayerInfo[playerid][pFreezeHouse]);
  2129. SavePlayerInteger(query, GetPlayerSQLId(playerid), "FreezeCar", PlayerInfo[playerid][pFreezeCar]);
  2130. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Firework", PlayerInfo[playerid][pFirework]);
  2131. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Boombox", PlayerInfo[playerid][pBoombox]);
  2132. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Hydration", PlayerInfo[playerid][pHydration]);
  2133. SavePlayerInteger(query, GetPlayerSQLId(playerid), "DoubleEXP", PlayerInfo[playerid][pDoubleEXP]);
  2134. SavePlayerInteger(query, GetPlayerSQLId(playerid), "EXPToken", PlayerInfo[playerid][pEXPToken]);
  2135. SavePlayerInteger(query, GetPlayerSQLId(playerid), "RacePlayerLaps", PlayerInfo[playerid][pRacePlayerLaps]);
  2136. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Ringtone", PlayerInfo[playerid][pRingtone]);
  2137. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Wallpaper", PlayerInfo[playerid][pWallpaper]);
  2138. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Order", PlayerInfo[playerid][pOrder]);
  2139. SavePlayerInteger(query, GetPlayerSQLId(playerid), "CallsAccepted", PlayerInfo[playerid][pCallsAccepted]);
  2140. SavePlayerInteger(query, GetPlayerSQLId(playerid), "PatientsDelivered", PlayerInfo[playerid][pPatientsDelivered]);
  2141. SavePlayerInteger(query, GetPlayerSQLId(playerid), "LiveBanned", PlayerInfo[playerid][pLiveBanned]);
  2142. SavePlayerInteger(query, GetPlayerSQLId(playerid), "FreezeBank", PlayerInfo[playerid][pFreezeBank]);
  2143. SavePlayerInteger(query, GetPlayerSQLId(playerid), "VIPM", PlayerInfo[playerid][pVIPM]);
  2144. SavePlayerInteger(query, GetPlayerSQLId(playerid), "VIPMO", PlayerInfo[playerid][pVIPMO]);
  2145. SavePlayerInteger(query, GetPlayerSQLId(playerid), "VIPExpire", PlayerInfo[playerid][pVIPExpire]);
  2146. SavePlayerInteger(query, GetPlayerSQLId(playerid), "GVip", PlayerInfo[playerid][pGVip]);
  2147. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Watchdog", PlayerInfo[playerid][pWatchdog]);
  2148. SavePlayerInteger(query, GetPlayerSQLId(playerid), "VIPSold", PlayerInfo[playerid][pVIPSold]);
  2149. SavePlayerInteger(query, GetPlayerSQLId(playerid), "GoldBoxTokens", PlayerInfo[playerid][pGoldBoxTokens]);
  2150. SavePlayerInteger(query, GetPlayerSQLId(playerid), "DrawChance", PlayerInfo[playerid][pRewardDrawChance]);
  2151. SavePlayerFloat(query, GetPlayerSQLId(playerid), "RewardHours", PlayerInfo[playerid][pRewardHours]);
  2152. SavePlayerInteger(query, GetPlayerSQLId(playerid), "CarsRestricted", PlayerInfo[playerid][pRVehRestricted]);
  2153. SavePlayerInteger(query, GetPlayerSQLId(playerid), "LastCarWarning", PlayerInfo[playerid][pLastRVehWarn]);
  2154. SavePlayerInteger(query, GetPlayerSQLId(playerid), "CarWarns", PlayerInfo[playerid][pRVehWarns]);
  2155. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Flagged", PlayerInfo[playerid][pFlagged]);
  2156. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Paper", PlayerInfo[playerid][pPaper]);
  2157. SavePlayerInteger(query, GetPlayerSQLId(playerid), "MailEnabled", PlayerInfo[playerid][pMailEnabled]);
  2158. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Mailbox", PlayerInfo[playerid][pMailbox]);
  2159. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Business", PlayerInfo[playerid][pBusiness]);
  2160. SavePlayerInteger(query, GetPlayerSQLId(playerid), "BusinessRank", PlayerInfo[playerid][pBusinessRank]);
  2161. SavePlayerInteger(query, GetPlayerSQLId(playerid), "TreasureSkill", PlayerInfo[playerid][pTreasureSkill]);
  2162. SavePlayerInteger(query, GetPlayerSQLId(playerid), "MetalDetector", PlayerInfo[playerid][pMetalDetector]);
  2163. SavePlayerInteger(query, GetPlayerSQLId(playerid), "HelpedBefore", PlayerInfo[playerid][pHelpedBefore]);
  2164. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Trickortreat", PlayerInfo[playerid][pTrickortreat]);
  2165. SavePlayerInteger(query, GetPlayerSQLId(playerid), "LastCharmReceived", PlayerInfo[playerid][pLastCharmReceived]);
  2166. SavePlayerInteger(query, GetPlayerSQLId(playerid), "RHMutes", PlayerInfo[playerid][pRHMutes]);
  2167. SavePlayerInteger(query, GetPlayerSQLId(playerid), "RHMuteTime", PlayerInfo[playerid][pRHMuteTime]);
  2168. SavePlayerInteger(query, GetPlayerSQLId(playerid), "GiftCode", PlayerInfo[playerid][pGiftCode]);
  2169. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Table", PlayerInfo[playerid][pTable]);
  2170. SavePlayerInteger(query, GetPlayerSQLId(playerid), "OpiumSeeds", PlayerInfo[playerid][pOpiumSeeds]);
  2171. SavePlayerInteger(query, GetPlayerSQLId(playerid), "RawOpium", PlayerInfo[playerid][pRawOpium]);
  2172. //SavePlayerInteger(query, GetPlayerSQLId(playerid), "Heroin", PlayerInfo[playerid][pHeroin]);
  2173. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Syringe", PlayerInfo[playerid][pSyringes]);
  2174. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Skins", PlayerInfo[playerid][pSkins]);
  2175. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Fitness", PlayerInfo[playerid][pFitness]);
  2176. SavePlayerInteger(query, GetPlayerSQLId(playerid), "HealthCare", PlayerInfo[playerid][pHealthCare]);
  2177. SavePlayerInteger(query, GetPlayerSQLId(playerid), "ReceivedCredits", PlayerInfo[playerid][pReceivedCredits]);
  2178. SavePlayerInteger(query, GetPlayerSQLId(playerid), "RimMod", PlayerInfo[playerid][pRimMod]);
  2179. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Tazer", PlayerInfo[playerid][pHasTazer]);
  2180. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Cuff", PlayerInfo[playerid][pHasCuff]);
  2181. SavePlayerInteger(query, GetPlayerSQLId(playerid), "CarVoucher", PlayerInfo[playerid][pCarVoucher]);
  2182. SavePlayerString(query, GetPlayerSQLId(playerid), "ReferredBy", PlayerInfo[playerid][pReferredBy]);
  2183. SavePlayerInteger(query, GetPlayerSQLId(playerid), "PendingRefReward", PlayerInfo[playerid][pPendingRefReward]);
  2184. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Refers", PlayerInfo[playerid][pRefers]);
  2185. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Famed", PlayerInfo[playerid][pFamed]);
  2186. SavePlayerInteger(query, GetPlayerSQLId(playerid), "FamedMuted", PlayerInfo[playerid][pFMuted]);
  2187. SavePlayerInteger(query, GetPlayerSQLId(playerid), "DefendTime", PlayerInfo[playerid][pDefendTime]);
  2188. SavePlayerInteger(query, GetPlayerSQLId(playerid), "PVIPVoucher", PlayerInfo[playerid][pPVIPVoucher]);
  2189. SavePlayerInteger(query, GetPlayerSQLId(playerid), "VehicleSlot", PlayerInfo[playerid][pVehicleSlot]);
  2190. SavePlayerInteger(query, GetPlayerSQLId(playerid), "ToySlot", PlayerInfo[playerid][pToySlot]);
  2191. SavePlayerInteger(query, GetPlayerSQLId(playerid), "RFLTeam", PlayerInfo[playerid][pRFLTeam]);
  2192. SavePlayerInteger(query, GetPlayerSQLId(playerid), "RFLTeamL", PlayerInfo[playerid][pRFLTeamL]);
  2193. SavePlayerInteger(query, GetPlayerSQLId(playerid), "VehVoucher", PlayerInfo[playerid][pVehVoucher]);
  2194. SavePlayerInteger(query, GetPlayerSQLId(playerid), "SVIPVoucher", PlayerInfo[playerid][pSVIPVoucher]);
  2195. SavePlayerInteger(query, GetPlayerSQLId(playerid), "GVIPVoucher", PlayerInfo[playerid][pGVIPVoucher]);
  2196. SavePlayerInteger(query, GetPlayerSQLId(playerid), "GiftVoucher", PlayerInfo[playerid][pGiftVoucher]);
  2197. SavePlayerInteger(query, GetPlayerSQLId(playerid), "FallIntoFun", PlayerInfo[playerid][pFallIntoFun]);
  2198. SavePlayerInteger(query, GetPlayerSQLId(playerid), "HungerVoucher", PlayerInfo[playerid][pHungerVoucher]);
  2199. SavePlayerInteger(query, GetPlayerSQLId(playerid), "BoughtCure", PlayerInfo[playerid][pBoughtCure]);
  2200. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Vials", PlayerInfo[playerid][pVials]);
  2201. SavePlayerInteger(query, GetPlayerSQLId(playerid), "AdvertVoucher", PlayerInfo[playerid][pAdvertVoucher]);
  2202. SavePlayerInteger(query, GetPlayerSQLId(playerid), "ShopCounter", PlayerInfo[playerid][pShopCounter]);
  2203. SavePlayerInteger(query, GetPlayerSQLId(playerid), "ShopNotice", PlayerInfo[playerid][pShopNotice]);
  2204. SavePlayerInteger(query, GetPlayerSQLId(playerid), "SVIPExVoucher", PlayerInfo[playerid][pSVIPExVoucher]);
  2205. SavePlayerInteger(query, GetPlayerSQLId(playerid), "GVIPExVoucher", PlayerInfo[playerid][pGVIPExVoucher]);
  2206. SavePlayerInteger(query, GetPlayerSQLId(playerid), "VIPSellable", PlayerInfo[playerid][pVIPSellable]);
  2207. SavePlayerInteger(query, GetPlayerSQLId(playerid), "ReceivedPrize", PlayerInfo[playerid][pReceivedPrize]);
  2208. SavePlayerInteger(query, GetPlayerSQLId(playerid), "VIPSpawn", PlayerInfo[playerid][pVIPSpawn]);
  2209. SavePlayerInteger(query, GetPlayerSQLId(playerid), "FreeAdsDay", PlayerInfo[playerid][pFreeAdsDay]);
  2210. SavePlayerInteger(query, GetPlayerSQLId(playerid), "FreeAdsLeft", PlayerInfo[playerid][pFreeAdsLeft]);
  2211. SavePlayerInteger(query, GetPlayerSQLId(playerid), "BuddyInvites", PlayerInfo[playerid][pBuddyInvites]);
  2212. SavePlayerInteger(query, GetPlayerSQLId(playerid), "ReceivedBGift", PlayerInfo[playerid][pReceivedBGift]);
  2213. SavePlayerInteger(query, GetPlayerSQLId(playerid), "pVIPJob", PlayerInfo[playerid][pVIPJob]);
  2214. SavePlayerInteger(query, GetPlayerSQLId(playerid), "LastBirthday", PlayerInfo[playerid][pLastBirthday]);
  2215. SavePlayerInteger(query, GetPlayerSQLId(playerid), "AccountRestricted", PlayerInfo[playerid][pAccountRestricted]);
  2216. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Watchlist", PlayerInfo[playerid][pWatchlist]);
  2217. SavePlayerInteger(query, GetPlayerSQLId(playerid), "WatchlistTime", PlayerInfo[playerid][pWatchlistTime]);
  2218. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Backpack", PlayerInfo[playerid][pBackpack]);
  2219. SavePlayerInteger(query, GetPlayerSQLId(playerid), "BEquipped", PlayerInfo[playerid][pBEquipped]);
  2220. SavePlayerInteger(query, GetPlayerSQLId(playerid), "BStoredH", PlayerInfo[playerid][pBStoredH]);
  2221. SavePlayerInteger(query, GetPlayerSQLId(playerid), "BStoredV", PlayerInfo[playerid][pBStoredV]);
  2222. SavePlayerInteger(query, GetPlayerSQLId(playerid), "PrisonCredits", PlayerInfo[playerid][pPrisonCredits]);
  2223. SavePlayerInteger(query, GetPlayerSQLId(playerid), "PrisonMaterials", PlayerInfo[playerid][pPrisonMaterials]);
  2224. SavePlayerInteger(query, GetPlayerSQLId(playerid), "PrisonWineTime", PlayerInfo[playerid][pPrisonWineTime]);
  2225. SavePlayerInteger(query, GetPlayerSQLId(playerid), "PrisonCell", PlayerInfo[playerid][pPrisonCell]);
  2226. SavePlayerInteger(query, GetPlayerSQLId(playerid), "PrisonSoap", GetPVarInt(playerid, "pPrisonSoap"));
  2227. SavePlayerInteger(query, GetPlayerSQLId(playerid), "PrisonSugar", GetPVarInt(playerid, "pPrisonSugar"));
  2228. SavePlayerInteger(query, GetPlayerSQLId(playerid), "PrisonBread", GetPVarInt(playerid, "pPrisonBread"));
  2229. SavePlayerInteger(query, GetPlayerSQLId(playerid), "PrisonShank", GetPVarInt(playerid, "pPrisonShank"));
  2230. SavePlayerInteger(query, GetPlayerSQLId(playerid), "PrisonShankOut", GetPVarInt(playerid, "pPrisonShankOut"));
  2231. SavePlayerInteger(query, GetPlayerSQLId(playerid), "ShankUsages", GetPVarInt(playerid, "pShankUsages"));
  2232. SavePlayerInteger(query, GetPlayerSQLId(playerid), "PrisonWine", GetPVarInt(playerid, "pPrisonWine"));
  2233. SavePlayerInteger(query, GetPlayerSQLId(playerid), "PrisonMWine", GetPVarInt(playerid, "pPrisonMWine"));
  2234. SavePlayerInteger(query, GetPlayerSQLId(playerid), "PrisonChisel", GetPVarInt(playerid, "pPrisonChisel"));
  2235. SavePlayerInteger(query, GetPlayerSQLId(playerid), "PrisonCellChisel", GetPVarInt(playerid, "pPrisonCellChisel"));
  2236. SavePlayerInteger(query, GetPlayerSQLId(playerid), "FishingSkill", PlayerInfo[playerid][pFishingSkill]);
  2237. SavePlayerInteger(query, GetPlayerSQLId(playerid), "FishWeight", PlayerInfo[playerid][pFishWeight]);
  2238. SavePlayerInteger(query, GetPlayerSQLId(playerid), "GarbageSkill", PlayerInfo[playerid][pGarbageSkill]);
  2239. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Pot", PlayerInfo[playerid][pDrugs][0]);
  2240. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Crack", PlayerInfo[playerid][pDrugs][1]);
  2241. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Meth", PlayerInfo[playerid][pDrugs][2]);
  2242. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Ecstasy", PlayerInfo[playerid][pDrugs][3]);
  2243. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Heroin", PlayerInfo[playerid][pDrugs][4]);
  2244. SavePlayerInteger(query, GetPlayerSQLId(playerid), "CopKit", GetPVarInt(playerid, "MedVestKit"));
  2245. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Hitman", PlayerInfo[playerid][pHitman]);
  2246. SavePlayerInteger(query, GetPlayerSQLId(playerid), "HitmanLeader", PlayerInfo[playerid][pHitmanLeader]);
  2247. SavePlayerInteger(query, GetPlayerSQLId(playerid), "HitmanBlacklisted", PlayerInfo[playerid][pHitmanBlacklisted]);
  2248. SavePlayerString(query, GetPlayerSQLId(playerid), "BlacklistReason", PlayerInfo[playerid][pBlacklistReason]);
  2249. new szForLoop[16];
  2250. for(new x = 0; x < 12; x++) {
  2251. mysql_format(MainPipeline, szForLoop, sizeof(szForLoop), "BItem%d", x);
  2252. SavePlayerInteger(query, GetPlayerSQLId(playerid), szForLoop, PlayerInfo[playerid][pBItems][x]);
  2253. }
  2254. for(new x = 0; x < sizeof(Drugs); x++) {
  2255. mysql_format(MainPipeline, szForLoop, sizeof(szForLoop), "BDrug%d", x);
  2256. SavePlayerInteger(query, GetPlayerSQLId(playerid), szForLoop, PlayerInfo[playerid][pBDrugs][x]);
  2257. }
  2258. for(new x = 0; x < 12; x++) {
  2259. mysql_format(MainPipeline, szForLoop, sizeof(szForLoop), "Gun%d", x);
  2260. SavePlayerInteger(query, GetPlayerSQLId(playerid), szForLoop, PlayerInfo[playerid][pGuns][x]);
  2261. }
  2262. SavePlayerInteger(query, GetPlayerSQLId(playerid), "BRTimeout", PlayerInfo[playerid][pBugReportTimeout]);
  2263. SavePlayerInteger(query, GetPlayerSQLId(playerid), "pDigCooldown", PlayerInfo[playerid][pDigCooldown]);
  2264. SavePlayerInteger(query, GetPlayerSQLId(playerid), "ToolBox", PlayerInfo[playerid][pToolBox]);
  2265. SavePlayerInteger(query, GetPlayerSQLId(playerid), "CrowBar", PlayerInfo[playerid][pCrowBar]);
  2266. SavePlayerInteger(query, GetPlayerSQLId(playerid), "CarLockPickSkill", PlayerInfo[playerid][pCarLockPickSkill]);
  2267. SavePlayerInteger(query, GetPlayerSQLId(playerid), "LockPickVehCount", PlayerInfo[playerid][pLockPickVehCount]);
  2268. SavePlayerInteger(query, GetPlayerSQLId(playerid), "LockPickTime", PlayerInfo[playerid][pLockPickTime]);
  2269. SavePlayerInteger(query, GetPlayerSQLId(playerid), "SEC", PlayerInfo[playerid][pSEC]);
  2270. SavePlayerInteger(query, GetPlayerSQLId(playerid), "BM", PlayerInfo[playerid][pBM]);
  2271. SavePlayerInteger(query, GetPlayerSQLId(playerid), "ASM", PlayerInfo[playerid][pASM]);
  2272. SavePlayerInteger(query, GetPlayerSQLId(playerid), "Isolated", PlayerInfo[playerid][pIsolated]);
  2273. SavePlayerInteger(query, GetPlayerSQLId(playerid), "WantedJailTime", PlayerInfo[playerid][pWantedJailTime]);
  2274. SavePlayerInteger(query, GetPlayerSQLId(playerid), "WantedJailFine", PlayerInfo[playerid][pWantedJailFine]);
  2275. SavePlayerInteger(query, GetPlayerSQLId(playerid), "NextNameChange", PlayerInfo[playerid][pNextNameChange]);
  2276. SavePlayerString(query, GetPlayerSQLId(playerid), "pExamineDesc", PlayerInfo[playerid][pExamineDesc]);
  2277. SavePlayerString(query, GetPlayerSQLId(playerid), "FavStation", PlayerInfo[playerid][pFavStation]);
  2278. // Austin's DP System
  2279. SavePlayerInteger(query, GetPlayerSQLId(playerid), "pDedicatedPlayer", PlayerInfo[playerid][pDedicatedPlayer]);
  2280. SavePlayerInteger(query, GetPlayerSQLId(playerid), "pDedicatedEnabled", PlayerInfo[playerid][pDedicatedEnabled]);
  2281. SavePlayerInteger(query, GetPlayerSQLId(playerid), "pDedicatedMuted", PlayerInfo[playerid][pDedicatedMuted]);
  2282. SavePlayerInteger(query, GetPlayerSQLId(playerid), "pDedicatedWarn", PlayerInfo[playerid][pDedicatedWarn]);
  2283. new mistring[64], mpstring[64], mcstring[256];
  2284. for(new m; m < MAX_MICROITEMS; m++)
  2285. {
  2286. mysql_format(MainPipeline, mistring, sizeof(mistring), "%s%d", mistring, PlayerInfo[playerid][mInventory][m]);
  2287. mysql_format(MainPipeline, mpstring, sizeof(mpstring), "%s%d", mpstring, PlayerInfo[playerid][mPurchaseCount][m]);
  2288. mysql_format(MainPipeline, mcstring, sizeof(mcstring), "%s%d", mcstring, PlayerInfo[playerid][mCooldown][m]);
  2289. if(m != MAX_MICROITEMS-1) strcat(mistring, "|"), strcat(mpstring, "|"), strcat(mcstring, "|");
  2290. }
  2291. SavePlayerString(query, GetPlayerSQLId(playerid), "mInventory", mistring);
  2292. SavePlayerString(query, GetPlayerSQLId(playerid), "mPurchaseCounts", mpstring);
  2293. SavePlayerString(query, GetPlayerSQLId(playerid), "mCooldowns", mcstring);
  2294. mysql_format(MainPipeline, mpstring, sizeof(mpstring), "%d|%d", PlayerInfo[playerid][mBoost][0], PlayerInfo[playerid][mBoost][1]);
  2295. SavePlayerString(query, GetPlayerSQLId(playerid), "mBoost", mpstring);
  2296. mysql_format(MainPipeline, mpstring, sizeof(mpstring), "%d|%d", PlayerInfo[playerid][mShopCounter], PlayerInfo[playerid][mNotice]);
  2297. SavePlayerString(query, GetPlayerSQLId(playerid), "mShopNotice", mpstring);
  2298. SavePlayerInteger(query, GetPlayerSQLId(playerid), "zFuelCan", PlayerInfo[playerid][zFuelCan]);
  2299. SavePlayerInteger(query, GetPlayerSQLId(playerid), "bTicket", PlayerInfo[playerid][bTicket]);
  2300. // Austin's Punishment Revamp
  2301. mysql_format(MainPipeline, mistring, 64, "%d|%d|%d|%d|%d", PlayerInfo[playerid][pJailedInfo][0], PlayerInfo[playerid][pJailedInfo][1],
  2302. PlayerInfo[playerid][pJailedInfo][2], PlayerInfo[playerid][pJailedInfo][3], PlayerInfo[playerid][pJailedInfo][4]);
  2303. SavePlayerString(query, GetPlayerSQLId(playerid), "JailedInfo", mistring);
  2304. mistring[0] = 0;
  2305. for(new jailX = 0; jailX < 12; jailX++)
  2306. {
  2307. mysql_format(MainPipeline, mistring, sizeof(mistring), "%s%d", mistring, PlayerInfo[playerid][pJailedWeapons][jailX]);
  2308. if(jailX != 11) strcat(mistring, "|");
  2309. }
  2310. SavePlayerString(query, GetPlayerSQLId(playerid), "JailedWeapons", mistring);
  2311. /*for(new idrugs = 0; idrugs < sizeof(Drugs); ++idrugs)
  2312. {
  2313. format(mistring, sizeof(mistring), "%s%d", mistring, PlayerInfo[playerid][p_iDrugQuality][idrugs]);
  2314. if(idrugs != sizeof(Drugs) - 1) strcat(mistring, "|");
  2315. }
  2316. SavePlayerString(query, GetPlayerSQLId(playerid), "DrugQuality", mistring);*/
  2317. /*mistring[0] = 0;
  2318. for(new ipdrugs = 0; ipdrugs < sizeof(Drugs); ++ipdrugs)
  2319. {
  2320. format(mistring, sizeof(mistring), "%s%d", mistring, PlayerInfo[playerid][p_iPrisonDrug][ipdrugs]);
  2321. if(ipdrugs != sizeof(Drugs) - 1) strcat(mistring, "|");
  2322. }
  2323. SavePlayerString(query, GetPlayerSQLId(playerid), "PrisonDrugs", mistring);*/
  2324. /*format(szMiscArray, sizeof(szMiscArray), "%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d",
  2325. PlayerInfo[playerid][pToggledChats][0],
  2326. PlayerInfo[playerid][pToggledChats][1],
  2327. PlayerInfo[playerid][pToggledChats][2],
  2328. PlayerInfo[playerid][pToggledChats][3],
  2329. PlayerInfo[playerid][pToggledChats][4],
  2330. PlayerInfo[playerid][pToggledChats][5],
  2331. PlayerInfo[playerid][pToggledChats][6],
  2332. PlayerInfo[playerid][pToggledChats][7],
  2333. PlayerInfo[playerid][pToggledChats][8],
  2334. PlayerInfo[playerid][pToggledChats][9],
  2335. PlayerInfo[playerid][pToggledChats][10],
  2336. PlayerInfo[playerid][pToggledChats][11],
  2337. PlayerInfo[playerid][pToggledChats][12],
  2338. PlayerInfo[playerid][pToggledChats][13],
  2339. PlayerInfo[playerid][pToggledChats][14],
  2340. PlayerInfo[playerid][pToggledChats][15],
  2341. PlayerInfo[playerid][pToggledChats][16],
  2342. PlayerInfo[playerid][pToggledChats][17],
  2343. PlayerInfo[playerid][pToggledChats][18],
  2344. PlayerInfo[playerid][pToggledChats][19],
  2345. PlayerInfo[playerid][pToggledChats][20]);
  2346. SavePlayerString(query, GetPlayerSQLId(playerid), "ToggledChats", szMiscArray);*/
  2347. for(new c = 0; c < MAX_CHATSETS; c++) {
  2348. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "ChatTog%d", c);
  2349. SavePlayerInteger(query, GetPlayerSQLId(playerid), szMiscArray, PlayerInfo[playerid][pToggledChats][c]);
  2350. }
  2351. /*format(szMiscArray, sizeof(szMiscArray), "%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d|%d",
  2352. PlayerInfo[playerid][pChatbox][0],
  2353. PlayerInfo[playerid][pChatbox][1],
  2354. PlayerInfo[playerid][pChatbox][2],
  2355. PlayerInfo[playerid][pChatbox][3],
  2356. PlayerInfo[playerid][pChatbox][4],
  2357. PlayerInfo[playerid][pChatbox][5],
  2358. PlayerInfo[playerid][pChatbox][6],
  2359. PlayerInfo[playerid][pChatbox][7],
  2360. PlayerInfo[playerid][pChatbox][8],
  2361. PlayerInfo[playerid][pChatbox][9],
  2362. PlayerInfo[playerid][pChatbox][10],
  2363. PlayerInfo[playerid][pChatbox][11],
  2364. PlayerInfo[playerid][pChatbox][12],
  2365. PlayerInfo[playerid][pChatbox][13],
  2366. PlayerInfo[playerid][pChatbox][14],
  2367. PlayerInfo[playerid][pChatbox][15],
  2368. PlayerInfo[playerid][pChatbox][16],
  2369. PlayerInfo[playerid][pChatbox][17],
  2370. PlayerInfo[playerid][pChatbox][18],
  2371. PlayerInfo[playerid][pChatbox][19]);
  2372. SavePlayerString(query, GetPlayerSQLId(playerid), "ChatBoxSettings", szMiscArray);*/
  2373. SavePlayerInteger(query, GetPlayerSQLId(playerid), "pVIPMod", PlayerInfo[playerid][pVIPMod]);
  2374. SavePlayerInteger(query, GetPlayerSQLId(playerid), "pEventTokens", PlayerInfo[playerid][pEventTokens]);
  2375. SavePlayerInteger(query, GetPlayerSQLId(playerid), "VIPGunsCount", PlayerInfo[playerid][pVIPGuncount]);
  2376. SavePlayerInteger(query, GetPlayerSQLId(playerid), "pBailPrice", PlayerInfo[playerid][pBailPrice]);
  2377. SavePlayerInteger(query, GetPlayerSQLId(playerid), "pLastPoll", PlayerInfo[playerid][pLastPoll]);
  2378. SavePlayerString(query, GetPlayerSQLId(playerid), "PollKeyA", PlayerInfo[playerid][pPollKey1]);
  2379. SavePlayerString(query, GetPlayerSQLId(playerid), "PollKeyB", PlayerInfo[playerid][pPollKey2]);
  2380. SavePlayerString(query, GetPlayerSQLId(playerid), "PollKeyC", PlayerInfo[playerid][pPollKey3]);
  2381. SavePlayerInteger(query, GetPlayerSQLId(playerid), "FurnitureSlots", PlayerInfo[playerid][pFurnitureSlots]);
  2382. SavePlayerInteger(query, GetPlayerSQLId(playerid), "StaffBanned", PlayerInfo[playerid][pStaffBanned]);
  2383. SavePlayerString(query, GetPlayerSQLId(playerid), "DedicatedDaymarker", PlayerInfo[playerid][pDedicatedDaymarker]);
  2384. SavePlayerString(query, GetPlayerSQLId(playerid), "DedicatedTimestamp", PlayerInfo[playerid][pDedicatedTimestamp]);
  2385. SavePlayerInteger(query, GetPlayerSQLId(playerid), "DedicatedHours", PlayerInfo[playerid][pDedicatedHours]);
  2386. SavePlayerInteger(query, GetPlayerSQLId(playerid), "WalkStyle", PlayerInfo[playerid][pWalkStyle]);
  2387. SavePlayerInteger(query, GetPlayerSQLId(playerid), "FlagCredits", PlayerInfo[playerid][pFlagCredits]);
  2388. SavePlayerInteger(query, GetPlayerSQLId(playerid), "FlagClaimed", PlayerInfo[playerid][pFlagClaimed]);
  2389. //for(new d; d < sizeof(Drugs); ++d) SavePlayerInteger(query, GetPlayerSQLId(playerid), GetDrugName(d), PlayerInfo[playerid][pDrugs][d]);
  2390. //for(new d; d < sizeof(szIngredients); ++d) if(d != 9) SavePlayerInteger(query, GetPlayerSQLId(playerid), DS_Ingredients_GetSQLName(d), PlayerInfo[playerid][p_iIngredient][d]);
  2391. /*szMiscArray[0] = 0;
  2392. for(new d; d < sizeof(Drugs); ++d)
  2393. {
  2394. format(szMiscArray, sizeof(szMiscArray), "Prison%s", GetDrugName(d));
  2395. SavePlayerInteger(query, GetPlayerSQLId(playerid), szMiscArray, PlayerInfo[playerid][p_iPrisonDrug][d]);
  2396. } old */
  2397. MySQLUpdateFinish(query, GetPlayerSQLId(playerid));
  2398. if(FIFEnabled) g_mysql_SaveFIF(playerid);
  2399. return 1;
  2400. }
  2401. stock SaveAuction(auction) {
  2402. new query[200];
  2403. mysql_format(MainPipeline, query, sizeof(query), "UPDATE `auctions` SET");
  2404. mysql_format(MainPipeline, query, sizeof(query), "%s `BiddingFor` = '%e', `InProgress` = %d, `Bid` = %d, `Bidder` = %d, `Expires` = %d, `Wining` = '%e', `Increment` = %d", query, Auctions[auction][BiddingFor], Auctions[auction][InProgress], Auctions[auction][Bid], Auctions[auction][Bidder], Auctions[auction][Expires], Auctions[auction][Wining], Auctions[auction][Increment]);
  2405. mysql_format(MainPipeline, query, sizeof(query), "%s WHERE `id` = %d", query, auction+1);
  2406. mysql_tquery(MainPipeline, query, "OnQueryFinish", "ii", SENDDATA_THREAD, INVALID_PLAYER_ID);
  2407. }
  2408. stock GetLatestKills(playerid, giveplayerid)
  2409. {
  2410. new query[256];
  2411. mysql_format(MainPipeline, query, sizeof(query), "SELECT Killer.Username, Killed.Username, k.* FROM kills k LEFT JOIN accounts Killed ON k.killedid = Killed.id LEFT JOIN accounts Killer ON Killer.id = k.killerid WHERE k.killerid = %d OR k.killedid = %d ORDER BY `date` DESC LIMIT 10", GetPlayerSQLId(giveplayerid), GetPlayerSQLId(giveplayerid));
  2412. mysql_tquery(MainPipeline, query, "OnGetLatestKills", "ii", playerid, giveplayerid);
  2413. }
  2414. stock GetSMSLog(playerid)
  2415. {
  2416. new query[256];
  2417. mysql_format(MainPipeline, query, sizeof(query), "SELECT `sender`, `sendernumber`, `message`, `date` FROM `sms` WHERE `receiverid` = %d ORDER BY `date` DESC LIMIT 10", GetPlayerSQLId(playerid));
  2418. mysql_tquery(MainPipeline, query, "OnGetSMSLog", "i", playerid);
  2419. }
  2420. stock LoadAuctions() {
  2421. printf("[LoadAuctions] Loading data from database...");
  2422. mysql_tquery(MainPipeline, "SELECT * FROM `auctions`", "AuctionLoadQuery", "");
  2423. }
  2424. //--------------------------------[ CUSTOM PUBLIC FUNCTIONS ]---------------------------
  2425. forward OnPhoneNumberCheck(index, extraid);
  2426. public OnPhoneNumberCheck(index, extraid)
  2427. {
  2428. if(IsPlayerConnected(index))
  2429. {
  2430. new string[128];
  2431. new rows, fields;
  2432. cache_get_row_count(rows);
  2433. cache_get_field_count(fields);
  2434. switch(extraid)
  2435. {
  2436. case 1: {
  2437. if(rows)
  2438. {
  2439. SendClientMessageEx(index, COLOR_WHITE, "That phone number has already been taken.");
  2440. DeletePVar(index, "PhChangerId");
  2441. DeletePVar(index, "WantedPh");
  2442. DeletePVar(index, "PhChangeCost");
  2443. DeletePVar(index, "CurrentPh");
  2444. }
  2445. else
  2446. {
  2447. format(string,sizeof(string),"The phone number requested, %d, will cost a total of $%s.\n\nTo confirm, press OK.", GetPVarInt(index, "WantedPh"), number_format(GetPVarInt(index, "PhChangeCost")));
  2448. ShowPlayerDialogEx(index, VIPNUMMENU2, DIALOG_STYLE_MSGBOX, "Confirmation", string, "OK", "Cancel");
  2449. }
  2450. }
  2451. case 2: {
  2452. if(rows)
  2453. {
  2454. SendClientMessageEx(index, COLOR_WHITE, "That phone number has already been taken.");
  2455. }
  2456. else
  2457. {
  2458. PlayerInfo[index][pPnumber] = GetPVarInt(index, "WantedPh");
  2459. GivePlayerCash(index, -GetPVarInt(index, "PhChangeCost"));
  2460. format(string, sizeof(string), "Cellphone purchased, your new phone number is %d.", GetPVarInt(index, "WantedPh"));
  2461. SendClientMessageEx(index, COLOR_GRAD4, string);
  2462. SendClientMessageEx(index, COLOR_GRAD5, "You can check this any time you wish by typing /stats.");
  2463. SendClientMessageEx(index, COLOR_WHITE, "HINT: You can now type /cellphonehelp to see your cellphone commands.");
  2464. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `accounts` SET `PhoneNr` = %d WHERE `id` = '%d'", PlayerInfo[index][pPnumber], GetPlayerSQLId(index));
  2465. mysql_tquery(MainPipeline, string, "OnQueryFinish", "ii", SENDDATA_THREAD, index);
  2466. DeletePVar(index, "PhChangerId");
  2467. DeletePVar(index, "WantedPh");
  2468. DeletePVar(index, "PhChangeCost");
  2469. DeletePVar(index, "CurrentPh");
  2470. }
  2471. }
  2472. case 3: {
  2473. if(rows && GetPVarInt(index, "WantedPh") != 0)
  2474. {
  2475. SendClientMessageEx(index, COLOR_WHITE, "That phone number has already been taken.");
  2476. }
  2477. else
  2478. {
  2479. PlayerInfo[index][pPnumber] = GetPVarInt(index, "WantedPh");
  2480. format(string, sizeof(string), " %s's(%d) Phone Number has been set to %d.", GetPlayerNameEx(index), GetPlayerSQLId(index), GetPVarInt(index, "WantedPh"));
  2481. format(string, sizeof(string), "%s by %s", string, GetPlayerNameEx(index));
  2482. Log("logs/undercover.log", string);
  2483. SendClientMessageEx(index, COLOR_GRAD1, string);
  2484. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `accounts` SET `PhoneNr` = %d WHERE `id` = '%d'", PlayerInfo[index][pPnumber], GetPlayerSQLId(index));
  2485. mysql_tquery(MainPipeline, string, "OnQueryFinish", "ii", SENDDATA_THREAD, index);
  2486. DeletePVar(index, "PhChangerId");
  2487. DeletePVar(index, "WantedPh");
  2488. DeletePVar(index, "PhChangeCost");
  2489. DeletePVar(index, "CurrentPh");
  2490. }
  2491. }
  2492. case 4: {
  2493. if(IsPlayerConnected(GetPVarInt(index, "PhChangerId")))
  2494. {
  2495. if(rows)
  2496. {
  2497. SendClientMessageEx(GetPVarInt(index, "PhChangerId"), COLOR_WHITE, "That phone number has already been taken.");
  2498. }
  2499. else
  2500. {
  2501. PlayerInfo[index][pPnumber] = GetPVarInt(index, "WantedPh");
  2502. format(string, sizeof(string), " %s's(%d) Phone Number has been set to %d.", GetPlayerNameEx(index), GetPlayerSQLId(index), GetPVarInt(index, "WantedPh"));
  2503. format(string, sizeof(string), "%s by %s", string, GetPlayerNameEx(GetPVarInt(index, "PhChangerId")));
  2504. Log("logs/stats.log", string);
  2505. SendClientMessageEx(GetPVarInt(index, "PhChangerId"), COLOR_GRAD1, string);
  2506. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `accounts` SET `PhoneNr` = %d WHERE `id` = '%d'", PlayerInfo[index][pPnumber], GetPlayerSQLId(index));
  2507. mysql_tquery(MainPipeline, string, "OnQueryFinish", "ii", SENDDATA_THREAD, index);
  2508. DeletePVar(index, "PhChangerId");
  2509. DeletePVar(index, "WantedPh");
  2510. DeletePVar(index, "PhChangeCost");
  2511. DeletePVar(index, "CurrentPh");
  2512. }
  2513. }
  2514. }
  2515. case 5: {
  2516. if(rows) {
  2517. SendClientMessageEx(index, COLOR_WHITE, "That phone number has already been taken.");
  2518. DeletePVar(index, "oldnum");
  2519. DeletePVar(index, "newnum");
  2520. }
  2521. else {
  2522. format(string, sizeof(string), "You have set your temporary number to %d, type /tempnum to disable it.", GetPVarInt(index, "tempnum"));
  2523. SendClientMessage(index, COLOR_WHITE, string);
  2524. PlayerInfo[index][pPnumber] = GetPVarInt(index, "tempnum");
  2525. TempNumber[index] = 1;
  2526. }
  2527. }
  2528. }
  2529. }
  2530. return 1;
  2531. }
  2532. forward AddingBan(index, type);
  2533. public AddingBan(index, type)
  2534. {
  2535. if(IsPlayerConnected(index))
  2536. {
  2537. if(type == 1) // Add Ban
  2538. {
  2539. new rows, fields;
  2540. cache_get_row_count(rows);
  2541. cache_get_field_count(fields);
  2542. if(rows)
  2543. {
  2544. DeletePVar(index, "BanningPlayer");
  2545. DeletePVar(index, "BanningReason");
  2546. SendClientMessageEx(index, COLOR_GREY, "That player is already banned.");
  2547. }
  2548. else
  2549. {
  2550. if(IsPlayerConnected(GetPVarInt(index, "BanningPlayer")))
  2551. {
  2552. new string[256], reason[64];
  2553. GetPVarString(index, "BanningReason", reason, sizeof(reason));
  2554. mysql_format(MainPipeline, string, sizeof(string), "INSERT INTO `ip_bans` (`ip`, `date`, `reason`, `admin`) VALUES ('%s', NOW(), '%e', '%e')", GetPlayerIpEx(GetPVarInt(index, "BanningPlayer")), reason, GetPlayerNameEx(index));
  2555. mysql_tquery(MainPipeline, string, "OnQueryFinish", "i", SENDDATA_THREAD);
  2556. DeletePVar(index, "BanningPlayer");
  2557. DeletePVar(index, "BanningReason");
  2558. }
  2559. }
  2560. }
  2561. else if(type == 2) // Unban IP
  2562. {
  2563. new rows;
  2564. cache_get_row_count(rows);
  2565. if(rows)
  2566. {
  2567. new string[128], ip[32];
  2568. GetPVarString(index, "UnbanIP", ip, sizeof(ip));
  2569. mysql_format(MainPipeline, string, sizeof(string), "DELETE FROM `ip_bans` WHERE `ip` = '%s'", ip);
  2570. mysql_tquery(MainPipeline, string, "OnQueryFinish", "i", SENDDATA_THREAD);
  2571. DeletePVar(index, "UnbanIP");
  2572. }
  2573. else
  2574. {
  2575. SendClientMessageEx(index, COLOR_GREY, "That IP address was not found in the ban database.");
  2576. DeletePVar(index, "UnbanIP");
  2577. }
  2578. }
  2579. else if(type == 3) // Ban IP
  2580. {
  2581. new rows;
  2582. cache_get_row_count(rows);
  2583. if(rows)
  2584. {
  2585. SendClientMessageEx(index, COLOR_GREY, "That IP address is already banned.");
  2586. DeletePVar(index, "BanIP");
  2587. }
  2588. else
  2589. {
  2590. new string[256], ip[32];
  2591. GetPVarString(index, "BanIP", ip, sizeof(ip));
  2592. mysql_format(MainPipeline, string, sizeof(string), "INSERT INTO `ip_bans` (`ip`, `date`, `reason`, `admin`) VALUES ('%s', NOW(), '%s', '%s')", ip, "/banip", GetPlayerNameEx(index));
  2593. mysql_tquery(MainPipeline, string, "OnQueryFinish", "i", SENDDATA_THREAD);
  2594. SendClientMessageEx(index, COLOR_WHITE, "That IP address was successfully banned.");
  2595. DeletePVar(index, "BanIP");
  2596. }
  2597. }
  2598. }
  2599. return 1;
  2600. }
  2601. forward MailsQueryFinish(playerid);
  2602. public MailsQueryFinish(playerid)
  2603. {
  2604. new rows;
  2605. cache_get_row_count(rows);
  2606. if (rows == 0) {
  2607. ShowPlayerDialogEx(playerid, DIALOG_NOTHING, DIALOG_STYLE_MSGBOX, " ", "Your mailbox is empty.", "OK", "");
  2608. return 1;
  2609. }
  2610. new id, string[2000], message[129], tmp[128], read;
  2611. for(new i; i < rows;i++)
  2612. {
  2613. cache_get_value_name(i, "Id", tmp); id = strval(tmp);
  2614. cache_get_value_name(i, "Read", tmp); read= strval(tmp);
  2615. cache_get_value_name(i, "Message", message, 129);
  2616. strmid(message,message,0,30);
  2617. if (strlen(message) > 30) strcat(message,"...");
  2618. strcat(string, (read) ? ("{BBBBBB}") : ("{FFFFFF}"));
  2619. strcat(string, message);
  2620. if (i != rows - 1) strcat(string, "\n");
  2621. ListItemTrackId[playerid][i] = id;
  2622. }
  2623. ShowPlayerDialogEx(playerid, DIALOG_POMAILS, DIALOG_STYLE_LIST, "Your mails", string, "Read", "Close");
  2624. return 1;
  2625. }
  2626. forward MailDetailsQueryFinish(playerid);
  2627. public MailDetailsQueryFinish(playerid)
  2628. {
  2629. new string[256];
  2630. new rows;
  2631. cache_get_row_count(rows);
  2632. new senderid, sender[MAX_PLAYER_NAME], message[131], notify, szTmp[128], Date[32], read, id;
  2633. cache_get_value_name(0, "Id", szTmp); id = strval(szTmp);
  2634. cache_get_value_name(0, "Notify", szTmp); notify = strval(szTmp);
  2635. cache_get_value_name(0, "Sender_Id", szTmp); senderid = strval(szTmp);
  2636. cache_get_value_name(0, "Read", szTmp); read = strval(szTmp);
  2637. cache_get_value_name(0, "Message", message, 131);
  2638. cache_get_value_name(0, "SenderUser", sender, MAX_PLAYER_NAME);
  2639. cache_get_value_name(0, "Date", Date, 32);
  2640. if (strlen(message) > 80) strins(message, "\n", 70);
  2641. format(string, sizeof(string), "{EEEEEE}%s\n\n{BBBBBB}Sender: {FFFFFF}%s\n{BBBBBB}Date: {EEEEEE}%s", message, sender,Date);
  2642. ShowPlayerDialogEx(playerid, DIALOG_PODETAIL, DIALOG_STYLE_MSGBOX, "Mail Content", string, "Back", "Trash");
  2643. if (notify && !read) {
  2644. foreach(new i: Player)
  2645. {
  2646. if (GetPlayerSQLId(i) == senderid) {
  2647. format(string, sizeof(string), "Your message has just been read by %s!", GetPlayerNameEx(playerid));
  2648. SendClientMessageEx(i, COLOR_YELLOW, string);
  2649. break;
  2650. }
  2651. }
  2652. }
  2653. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `letters` SET `Read` = 1 WHERE `id` = %d", id);
  2654. mysql_tquery(MainPipeline, string, "OnQueryFinish", "i", SENDDATA_THREAD);
  2655. return 1;
  2656. }
  2657. forward MailDeliveryQueryFinish();
  2658. public MailDeliveryQueryFinish()
  2659. {
  2660. new rows, id, tmp[128], i;
  2661. cache_get_row_count(rows);
  2662. for(; i < rows;i++)
  2663. {
  2664. cache_get_value_name(i, "Receiver_Id", tmp);
  2665. id = strval(tmp);
  2666. foreach(new j: Player)
  2667. {
  2668. if (GetPlayerSQLId(j) == id) {
  2669. if (PlayerInfo[j][pDonateRank] >= 4 && HasMailbox(j)) {
  2670. SendClientMessageEx(j, COLOR_YELLOW, "Mail has just been delivered to your mailbox.");
  2671. SetPVarInt(j, "UnreadMails", 1);
  2672. break;
  2673. }
  2674. }
  2675. }
  2676. }
  2677. return 1;
  2678. }
  2679. forward MDCQueryFinish(playerid, suspectid);
  2680. public MDCQueryFinish(playerid, suspectid)
  2681. {
  2682. new rows;
  2683. cache_get_row_count(rows);
  2684. new resultline[1424], crimes = PlayerInfo[suspectid][pCrimes], arrests = PlayerInfo[suspectid][pArrested], nation[14];
  2685. switch(PlayerInfo[suspectid][pNation])
  2686. {
  2687. case 0: nation = "San Andreas";
  2688. case 1: nation = "New Robada";
  2689. default: nation = "None";
  2690. }
  2691. format(resultline, sizeof(resultline), "{FF6347}Name:{BFC0C2} %s\t{FF6347}Phone Number:{BFC0C2} %d\n{FF6347}Total Previous Crimes: {BFC0C2}%d\t {FF6347}Total Arrests: {BFC0C2}%d \n{FF6347}Citizenship: {BFC0C2}%s \n{FF6347}Crime Key: {FF7D7D}Currently Wanted/{BFC0C2}Past Crime\n\n", GetPlayerNameEx(suspectid),PlayerInfo[suspectid][pPnumber], crimes, arrests, nation);
  2692. for(new i; i < rows; i++)
  2693. {
  2694. cache_get_value_name(i, "issuer", MDCInfo[i][mdcIssuer], MAX_PLAYER_NAME);
  2695. cache_get_value_name(i, "crime", MDCInfo[i][mdcCrime], 64);
  2696. cache_get_value_name_int(i, "active", MDCInfo[i][mdcActive]);
  2697. if(MDCInfo[i][mdcActive] == 1)
  2698. {
  2699. format(resultline, sizeof(resultline),"%s{FF6347}Crime: {FF7D7D}%s \t{FF6347}Charged by:{BFC0C2} %s\n",resultline, MDCInfo[i][mdcCrime], MDCInfo[i][mdcIssuer]);
  2700. } else {
  2701. format(resultline, sizeof(resultline),"%s{FF6347}Crime: {BFC0C2}%s \t{FF6347}Charged by:{BFC0C2} %s\n",resultline, MDCInfo[i][mdcCrime], MDCInfo[i][mdcIssuer]);
  2702. }
  2703. }
  2704. ShowPlayerDialogEx(playerid, MDC_SHOWCRIMES, DIALOG_STYLE_MSGBOX, "MDC - Criminal History", resultline, "Back", "");
  2705. return 1;
  2706. }
  2707. forward MDCReportsQueryFinish(playerid, suspectid);
  2708. public MDCReportsQueryFinish(playerid, suspectid)
  2709. {
  2710. new rows;
  2711. cache_get_row_count(rows);
  2712. new resultline[1424], str[12];
  2713. new copname[MAX_PLAYER_NAME], datetime[64], reportsid;
  2714. for(new i; i < rows; i++)
  2715. {
  2716. cache_get_value_name(i, "id", str, 12); reportsid = strval(str);
  2717. cache_get_value_name(i, "Username", copname, MAX_PLAYER_NAME);
  2718. cache_get_value_name(i, "datetime", datetime, 64);
  2719. format(resultline, sizeof(resultline),"%s{FF6347}Report (%d) {FF7D7D}Arrested by: %s on %s\n",resultline, reportsid, copname,datetime);
  2720. }
  2721. if(!resultline[0]) format(resultline, sizeof(resultline),"No Arrest Reports on record.",resultline, reportsid, copname,datetime);
  2722. ShowPlayerDialogEx(playerid, MDC_SHOWREPORTS, DIALOG_STYLE_LIST, "MDC - Criminal History", resultline, "Back", "");
  2723. return 1;
  2724. }
  2725. forward MDCReportQueryFinish(playerid, reportid);
  2726. public MDCReportQueryFinish(playerid, reportid)
  2727. {
  2728. new rows;
  2729. cache_get_row_count(rows);
  2730. new resultline[1424];
  2731. new copname[MAX_PLAYER_NAME], datetime[64], shortreport[200];
  2732. for(new i; i < rows; i++)
  2733. {
  2734. cache_get_value_name(i, "Username", copname, MAX_PLAYER_NAME);
  2735. cache_get_value_name(i, "datetime", datetime, 64);
  2736. cache_get_value_name(i, "shortreport", shortreport, 200);
  2737. format(resultline, sizeof(resultline),"{FF6347}Report #%d\n{FF7D7D}Arrested by: %s on %s\n{FF6347}Report:{BFC0C2} %s\n",reportid, copname,datetime, shortreport);
  2738. }
  2739. ShowPlayerDialogEx(playerid, MDC_SHOWCRIMES, DIALOG_STYLE_MSGBOX, "MDC - Arrest Report", resultline, "Back", "");
  2740. return 1;
  2741. }
  2742. forward FlagQueryFinish(playerid, suspectid, queryid);
  2743. public FlagQueryFinish(playerid, suspectid, queryid)
  2744. {
  2745. new rows, value;
  2746. cache_get_row_count(rows);
  2747. new resultline[2000];
  2748. new header[64], sResult[64];
  2749. new FlagID, FlagIssuer[MAX_PLAYER_NAME], FlagText[64], FlagDate[24];
  2750. switch(queryid)
  2751. {
  2752. case 0:
  2753. {
  2754. cache_get_value_name(0, "fid", sResult); FlagID = strval(sResult);
  2755. cache_get_value_name(0, "issuer", FlagIssuer, MAX_PLAYER_NAME);
  2756. cache_get_value_name(0, "flag", FlagText, 64);
  2757. cache_get_value_name(0, "time", FlagDate, 24);
  2758. format(resultline, sizeof(resultline),"{FF6347}FlagID: {BFC0C2}%d\n{FF6347}Flag: {BFC0C2}%s\n{FF6347}Issued by:{BFC0C2} %s \n{FF6347}Date: {BFC0C2}%s", FlagID, FlagText, FlagIssuer, FlagDate);
  2759. ShowPlayerDialogEx(playerid, 0, DIALOG_STYLE_MSGBOX, "Viewing Flag Info", resultline, "Close", "");
  2760. }
  2761. case Flag_Query_Display:
  2762. {
  2763. format(header, sizeof(header), "{FF6347}Flag History for{BFC0C2} %s", GetPlayerNameEx(suspectid));
  2764. if(!rows) return ShowPlayerDialogEx(playerid, DIALOG_NOTHING, DIALOG_STYLE_MSGBOX, header, "{FF6347}No Flags on this account", "Close", "");
  2765. for(new i; i < rows; i++)
  2766. {
  2767. cache_get_value_name(i, "fid", sResult); FlagID = strval(sResult);
  2768. cache_get_value_name(i, "flag", FlagText, 64);
  2769. if(strlen(FlagText) > 60) strmid(FlagText, FlagText, 0, 58), format(FlagText, sizeof(FlagText), "%s[...]", FlagText);
  2770. format(resultline, sizeof(resultline),"%s{FF6347}(ID: %d): {BFC0C2}%s\n", resultline, FlagID, FlagText);
  2771. }
  2772. ShowPlayerDialogEx(playerid, FLAG_LIST, DIALOG_STYLE_LIST, header, resultline, "Select", "Close");
  2773. }
  2774. case Flag_Query_Offline:
  2775. {
  2776. new string[128], name[24], reason[64], psqlid[12];
  2777. GetPVarString(playerid, "OnAddFlag", name, 24);
  2778. GetPVarString(playerid, "OnAddFlagReason", reason, 64);
  2779. if(rows > 0) {
  2780. format(string, sizeof(string), "You have appended %s's flag.", name);
  2781. SendClientMessageEx(playerid, COLOR_WHITE, string);
  2782. format(string, sizeof(string), "AdmCmd: %s was offline flagged by %s, reason: %s.", name, GetPlayerNameEx(playerid), reason);
  2783. ABroadCast(COLOR_LIGHTRED, string, 2);
  2784. format(string, sizeof(string), "%s was offline flagged by %s (%s).", name, GetPlayerNameEx(playerid), reason);
  2785. Log("logs/flags.log", string);
  2786. cache_get_value_name(0, "id", psqlid);
  2787. AddOFlag(strval(psqlid), playerid, reason);
  2788. }
  2789. else {
  2790. format(string, sizeof(string), "There was a problem with appending %s's flag.", name);
  2791. SendClientMessageEx(playerid, COLOR_WHITE, string);
  2792. }
  2793. DeletePVar(playerid, "OnAddFlagReason");
  2794. }
  2795. case Flag_Query_Count:
  2796. {
  2797. PlayerInfo[playerid][pFlagged] = rows;
  2798. }
  2799. case 4:
  2800. {
  2801. cache_get_value_name_int(0, "aFlagCount", value);
  2802. if(value)
  2803. {
  2804. new string[128];
  2805. format(string, sizeof(string), "SERVER: %s has logged in with %d outstanding admin flags /aviewflag to view!", GetPlayerNameEx(playerid), value);
  2806. ABroadCast(COLOR_LIGHTRED, string, 2);
  2807. }
  2808. }
  2809. }
  2810. return 1;
  2811. }
  2812. forward SkinQueryFinish(playerid, queryid);
  2813. public SkinQueryFinish(playerid, queryid)
  2814. {
  2815. new rows;
  2816. cache_get_row_count(rows);
  2817. new resultline[2000], header[32], sResult[64], skinid;
  2818. switch(queryid)
  2819. {
  2820. case Skin_Query_Display:
  2821. {
  2822. if(PlayerInfo[playerid][pDonateRank] <= 0) format(header, sizeof(header), "Closet -- Space: %d/10", PlayerInfo[playerid][pSkins]);
  2823. else if(PlayerInfo[playerid][pDonateRank] > 0) format(header, sizeof(header), "Closet -- Space: %d/25", PlayerInfo[playerid][pSkins]);
  2824. if(rows == 0) return SendClientMessageEx(playerid, COLOR_GREY, "There are no clothes in this closet!");
  2825. for(new i; i < rows; i++)
  2826. {
  2827. cache_get_value_name(i, "skinid", sResult); skinid = strval(sResult);
  2828. format(resultline, sizeof(resultline),"%sSkin ID: %d\n",resultline, skinid);
  2829. }
  2830. ShowPlayerDialogEx(playerid, SKIN_LIST, DIALOG_STYLE_LIST, header, resultline, "Select", "Cancel");
  2831. }
  2832. case Skin_Query_Count:
  2833. {
  2834. PlayerInfo[playerid][pSkins] = rows;
  2835. }
  2836. case Skin_Query_ID:
  2837. {
  2838. for(new i; i < rows; i++)
  2839. {
  2840. cache_get_value_name(i, "skinid", sResult); skinid = strval(sResult);
  2841. if(i == GetPVarInt(playerid, "closetchoiceid"))
  2842. {
  2843. SetPVarInt(playerid, "closetskinid", skinid);
  2844. SetPlayerSkin(playerid, skinid);
  2845. ShowPlayerDialogEx(playerid, SKIN_CONFIRM, DIALOG_STYLE_MSGBOX, "Closet", "Do you want to wear these clothes?", "Yes", "Go Back");
  2846. }
  2847. }
  2848. }
  2849. case Skin_Query_Delete:
  2850. {
  2851. if(PlayerInfo[playerid][pDonateRank] <= 0) format(header, sizeof(header), "Closet -- Space: %d/10", PlayerInfo[playerid][pSkins]);
  2852. else if(PlayerInfo[playerid][pDonateRank] > 0) format(header, sizeof(header), "Closet -- Space: %d/25", PlayerInfo[playerid][pSkins]);
  2853. if(rows == 0) return SendClientMessageEx(playerid, COLOR_GREY, "There are no clothes in this closet!");
  2854. for(new i; i < rows; i++)
  2855. {
  2856. cache_get_value_name(i, "skinid", sResult); skinid = strval(sResult);
  2857. format(resultline, sizeof(resultline),"%sSkin ID: %d\n",resultline, skinid);
  2858. }
  2859. ShowPlayerDialogEx(playerid, SKIN_DELETE, DIALOG_STYLE_LIST, header, resultline, "Select", "Cancel");
  2860. }
  2861. case Skin_Query_Delete_ID:
  2862. {
  2863. for(new i; i < rows; i++)
  2864. {
  2865. cache_get_value_name(i, "id", sResult); skinid = strval(sResult);
  2866. if(i == GetPVarInt(playerid, "closetchoiceid"))
  2867. {
  2868. SetPVarInt(playerid, "closetskinid", skinid);
  2869. ShowPlayerDialogEx(playerid, SKIN_DELETE2, DIALOG_STYLE_MSGBOX, "Closet", "Are you sure you want to remove these clothes?", "Yes", "Cancel");
  2870. }
  2871. }
  2872. }
  2873. }
  2874. return 1;
  2875. }
  2876. forward CitizenQueryFinish(playerid, queryid);
  2877. public CitizenQueryFinish(playerid, queryid)
  2878. {
  2879. new rows;
  2880. cache_get_row_count(rows);
  2881. switch(queryid)
  2882. {
  2883. case TR_Citizen_Count:
  2884. {
  2885. TRCitizens = rows;
  2886. }
  2887. case Total_Count:
  2888. {
  2889. TotalCitizens = rows;
  2890. }
  2891. }
  2892. return 1;
  2893. }
  2894. forward NationQueueQueryFinish(playerid, nation, queryid);
  2895. public NationQueueQueryFinish(playerid, nation, queryid)
  2896. {
  2897. new query[300], resultline[2000], sResult[64], rows;
  2898. cache_get_row_count(rows);
  2899. switch(queryid)
  2900. {
  2901. case CheckQueue:
  2902. {
  2903. if(rows == 0)
  2904. {
  2905. mysql_format(MainPipeline, query, sizeof(query), "INSERT INTO `nation_queue` (`id`, `playerid`, `name`, `date`, `nation`, `status`) VALUES (NULL, %d, '%s', NOW(), %d, 1)", GetPlayerSQLId(playerid), GetPlayerNameExt(playerid), nation);
  2906. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  2907. SendClientMessageEx(playerid, COLOR_GREY, "You have been added to the nation's application queue. The nation's leader can now choose to accept or deny your application.");
  2908. }
  2909. else
  2910. {
  2911. SendClientMessageEx(playerid, COLOR_GREY, "You are already in queue to join a nation.");
  2912. }
  2913. }
  2914. case UpdateQueue:
  2915. {
  2916. if(rows > 0)
  2917. {
  2918. mysql_format(MainPipeline, query, sizeof(query), "UPDATE `nation_queue` SET `name` = '%s' WHERE `playerid` = %d", GetPlayerNameExt(playerid), GetPlayerSQLId(playerid));
  2919. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  2920. }
  2921. }
  2922. case AppQueue:
  2923. {
  2924. new sDate[32];
  2925. if(rows == 0) return SendClientMessageEx(playerid, COLOR_GREY, "There are currently no pending applications.");
  2926. for(new i; i < rows; i++)
  2927. {
  2928. cache_get_value_name(i, "name", sResult, MAX_PLAYER_NAME);
  2929. cache_get_value_name(i, "date", sDate, 32);
  2930. format(resultline, sizeof(resultline), "%s%s -- Date Submitted: %s\n", resultline, sResult, sDate);
  2931. }
  2932. ShowPlayerDialogEx(playerid, NATION_APP_LIST, DIALOG_STYLE_LIST, "Nation Applications", resultline, "Select", "Cancel");
  2933. }
  2934. case AddQueue:
  2935. {
  2936. if(rows == 0)
  2937. {
  2938. mysql_format(MainPipeline, query, sizeof(query), "INSERT INTO `nation_queue` (`id`, `playerid`, `name`, `date`, `nation`, `status`) VALUES (NULL, %d, '%s', NOW(), %d, 2)", GetPlayerSQLId(playerid), GetPlayerNameExt(playerid), nation);
  2939. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  2940. PlayerInfo[playerid][pNation] = 1;
  2941. }
  2942. else
  2943. {
  2944. mysql_format(MainPipeline, query, sizeof(query), "INSERT INTO `nation_queue` (`id`, `playerid`, `name`, `date`, `nation`, `status`) VALUES (NULL, %d, NOW(), %d, 1)", GetPlayerSQLId(playerid), GetPlayerNameExt(playerid), nation);
  2945. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  2946. }
  2947. }
  2948. }
  2949. return 1;
  2950. }
  2951. forward NationAppFinish(playerid, queryid);
  2952. public NationAppFinish(playerid, queryid)
  2953. {
  2954. new query[300], string[128], sResult[64], rows;
  2955. cache_get_row_count(rows);
  2956. switch(queryid)
  2957. {
  2958. case AcceptApp:
  2959. {
  2960. for(new i; i < rows; i++)
  2961. {
  2962. cache_get_value_name(i, "id", sResult); new AppID = strval(sResult);
  2963. cache_get_value_name(i, "playerid", sResult); new UserID = strval(sResult);
  2964. cache_get_value_name(i, "name", sResult, MAX_PLAYER_NAME);
  2965. if(GetPVarInt(playerid, "Nation_App_ID") == i)
  2966. {
  2967. mysql_format(MainPipeline, query, sizeof(query), "UPDATE `nation_queue` SET `status` = 2 WHERE `id` = %d", AppID);
  2968. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  2969. new giveplayerid = ReturnUser(sResult);
  2970. switch(arrGroupData[PlayerInfo[playerid][pMember]][g_iAllegiance])
  2971. {
  2972. case 1:
  2973. {
  2974. if(IsPlayerConnected(giveplayerid))
  2975. {
  2976. PlayerInfo[giveplayerid][pNation] = 0;
  2977. SendClientMessageEx(giveplayerid, COLOR_WHITE, "Your application for San Andreas citizenship has been approved!");
  2978. }
  2979. else
  2980. {
  2981. mysql_format(MainPipeline, query, sizeof(query), "UPDATE `accounts` SET `Nation` = 0 WHERE `id` = %d", UserID);
  2982. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  2983. }
  2984. format(string, sizeof(string), "%s has approved %s's application for San Andreas citizenship", GetPlayerNameEx(playerid), sResult);
  2985. }
  2986. case 2:
  2987. {
  2988. if(IsPlayerConnected(giveplayerid))
  2989. {
  2990. PlayerInfo[giveplayerid][pNation] = 1;
  2991. SendClientMessageEx(giveplayerid, COLOR_WHITE, "Your application for New Robada citizenship has been approved!");
  2992. }
  2993. else
  2994. {
  2995. mysql_format(MainPipeline, query, sizeof(query), "UPDATE `accounts` SET `Nation` = 1 WHERE `id` = %d", UserID);
  2996. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  2997. }
  2998. format(string, sizeof(string), "%s(%d) has approved %s's(%d) application for New Robada citizenship", GetPlayerNameEx(playerid), GetPlayerSQLId(playerid), sResult, UserID);
  2999. }
  3000. }
  3001. Log("logs/gov.log", string);
  3002. format(string, sizeof(string), "You have successfully approved %s's application.", sResult);
  3003. SendClientMessageEx(playerid, COLOR_WHITE, string);
  3004. DeletePVar(playerid, "Nation_App_ID");
  3005. }
  3006. }
  3007. }
  3008. case DenyApp:
  3009. {
  3010. for(new i; i < rows; i++)
  3011. {
  3012. cache_get_value_name(i, "id", sResult, 32); new AppID = strval(sResult);
  3013. cache_get_value_name(i, "name", sResult, MAX_PLAYER_NAME);
  3014. if(GetPVarInt(playerid, "Nation_App_ID") == i)
  3015. {
  3016. mysql_format(MainPipeline, query, sizeof(query), "UPDATE `nation_queue` SET `status` = 3 WHERE `id` = %d", AppID);
  3017. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  3018. new giveplayerid = ReturnUser(sResult);
  3019. switch(arrGroupData[PlayerInfo[playerid][pMember]][g_iAllegiance])
  3020. {
  3021. case 1:
  3022. {
  3023. if(IsPlayerConnected(giveplayerid)) SendClientMessageEx(giveplayerid, COLOR_GREY, "Your application for San Andreas citizenship has been denied.");
  3024. format(string, sizeof(string), "%s has denied %s's application for San Andreas citizenship", GetPlayerNameEx(playerid), sResult);
  3025. }
  3026. case 2:
  3027. {
  3028. if(IsPlayerConnected(giveplayerid)) SendClientMessageEx(giveplayerid, COLOR_GREY, "Your application for San Andreas citizenship has been denied.");
  3029. format(string, sizeof(string), "%s has denied %s's application for New Robada citizenship", GetPlayerNameEx(playerid), sResult);
  3030. }
  3031. }
  3032. Log("logs/gov.log", string);
  3033. format(string, sizeof(string), "You have successfully denied %s's application.", sResult);
  3034. SendClientMessageEx(playerid, COLOR_WHITE, string);
  3035. DeletePVar(playerid, "Nation_App_ID");
  3036. }
  3037. }
  3038. }
  3039. }
  3040. return 1;
  3041. }
  3042. forward CountAmount(playerid);
  3043. public CountAmount(playerid)
  3044. {
  3045. new rows;
  3046. cache_get_row_count(rows);
  3047. PlayerInfo[playerid][pLottoNr] = rows;
  3048. return 1;
  3049. }
  3050. forward UnreadMailsNotificationQueryFin(playerid);
  3051. public UnreadMailsNotificationQueryFin(playerid)
  3052. {
  3053. new szResult[8];
  3054. cache_get_value_name(0, "Unread_Count", szResult);
  3055. if (strval(szResult) > 0) {
  3056. SetPVarInt(playerid, "UnreadMails", 1);
  3057. SendClientMessageEx(playerid, COLOR_YELLOW, "You have unread items in your mailbox.");
  3058. }
  3059. return 1;
  3060. }
  3061. forward RecipientLookupFinish(playerid);
  3062. public RecipientLookupFinish(playerid)
  3063. {
  3064. new rows, szResult[16], admin, undercover, id;
  3065. cache_get_row_count(rows);
  3066. if (!rows) return ShowPlayerDialogEx(playerid, DIALOG_PORECEIVER, DIALOG_STYLE_INPUT, "Recipient", "{FF3333}Error: {FFFFFF}Invalid Recipient - Account does not exist!\n\nPlease type the name of the recipient (online or offline)", "Next", "Cancel");
  3067. cache_get_value_name(0, "AdminLevel", szResult); admin = strval(szResult);
  3068. cache_get_value_name(0, "TogReports", szResult); undercover = strval(szResult);
  3069. cache_get_value_name(0, "id", szResult); id = strval(szResult);
  3070. if (admin >= 2 && undercover == 0) return ShowPlayerDialogEx(playerid, DIALOG_PORECEIVER, DIALOG_STYLE_INPUT, "Recipient", "{FF3333}Error: {FFFFFF}You can't send a letter to admins!\n\nPlease type the name of the recipient (online or offline)", "Next", "Cancel");
  3071. SetPVarInt(playerid, "LetterRecipient", id);
  3072. ShowPlayerDialogEx(playerid, DIALOG_POMESSAGE, DIALOG_STYLE_INPUT, "Send Letter", "{FFFFFF}Please type the message.", "Send", "Cancel");
  3073. return 1;
  3074. }
  3075. forward CheckSales(index);
  3076. public CheckSales(index)
  3077. {
  3078. if(IsPlayerConnected(index))
  3079. {
  3080. new rows, szDialog[512];
  3081. cache_get_row_count(rows);
  3082. if(rows > 0)
  3083. {
  3084. for(new i;i < rows;i++)
  3085. {
  3086. new szResult[32], id;
  3087. cache_get_value_name(i, "id", szResult); id = strval(szResult);
  3088. cache_get_value_name(i, "Month", szResult, 25);
  3089. format(szDialog, sizeof(szDialog), "%s\n%s ", szDialog, szResult);
  3090. Selected[index][i] = id;
  3091. }
  3092. ShowPlayerDialogEx(index, DIALOG_VIEWSALE, DIALOG_STYLE_LIST, "Select a time frame", szDialog, "View", "Exit");
  3093. }
  3094. else
  3095. {
  3096. SendClientMessageEx(index, COLOR_WHITE, "There was an issue with checking the table.");
  3097. }
  3098. }
  3099. }
  3100. forward CheckSales2(index);
  3101. public CheckSales2(index)
  3102. {
  3103. if(IsPlayerConnected(index))
  3104. {
  3105. new rows, szDialog[3000];
  3106. cache_get_row_count(rows);
  3107. if(rows)
  3108. {
  3109. new szResult[32], szField[15], Solds[MAX_ITEMS], Amount[MAX_ITEMS];
  3110. for(new z = 0; z < MAX_ITEMS; z++)
  3111. {
  3112. format(szField, sizeof(szField), "TotalSold%d", z);
  3113. cache_get_value_name(0, szField, szResult);
  3114. Solds[z] = strval(szResult);
  3115. format(szField, sizeof(szField), "AmountMade%d", z);
  3116. cache_get_value_name(0, szField, szResult);
  3117. Amount[z] = strval(szResult);
  3118. }
  3119. format(szDialog, sizeof(szDialog),"\
  3120. Gold VIP Sold: %d | Total Credits: %s\n\
  3121. Gold VIP Renew Sold: %d | Total Credits: %s\n\
  3122. Silver VIP Sold: %d | Total Credits: %s\n\
  3123. Bronze VIP Sold: %d | Total Credits: %s\n\
  3124. Toys Sold: %d | Total Credits: %s\n\
  3125. Cars Sold: %d | Total Credits: %s\n", Solds[0], number_format(Amount[0]), Solds[1], number_format(Amount[1]), Solds[2], number_format(Amount[2]), Solds[3], number_format(Amount[3]), Solds[4], number_format(Amount[4]),
  3126. Solds[5], number_format(Amount[5]));
  3127. format(szDialog, sizeof(szDialog), "%s\
  3128. Pokertables Sold: %d | Total Credits: %s\n\
  3129. Boomboxes Sold: %d | Total Credits: %s\n\
  3130. Paintball Tokens Sold: %d | Total Credits: %s\n\
  3131. EXP Tokens Sold: %d | Total Credits: %s\n\
  3132. Fireworks Sold: %d | Total Credits: %s\n", szDialog, Solds[6], number_format(Amount[6]), Solds[7], number_format(Amount[7]), Solds[8], number_format(Amount[8]), Solds[9], number_format(Amount[9]), Solds[10], number_format(Amount[10]));
  3133. format(szDialog, sizeof(szDialog), "%sBusiness Renew Regular Sold: %d | Total Credits: %s\n\
  3134. Business Renew Standard Sold: %d | Total Credits: %s\n\
  3135. Business Renew Premium Sold: %d | Total Credits: %s\n\
  3136. Houses Sold: %d | Total Credits: %s\n", szDialog, Solds[11], number_format(Amount[11]), Solds[12], number_format(Amount[12]), Solds[13], number_format(Amount[13]), Solds[14], number_format(Amount[14]));
  3137. format(szDialog, sizeof(szDialog), "%sHouse Moves Sold: %d | Total Credits: %s\n\
  3138. House Interiors Sold: %d | Total Credits: %s\n\
  3139. Reset Gift Timer Sold: %d | Total Credits: %s\n\
  3140. Advanced Health Care Sold: %d | Total Credits: %s\n",szDialog, Solds[15], number_format(Amount[15]), Solds[16], number_format(Amount[16]), Solds[17], number_format(Amount[17]), Solds[18], number_format(Amount[18]));
  3141. format(szDialog, sizeof(szDialog), "%sSuper Health Car Sold: %d | Total Credits: %s\n\
  3142. Rented Cars Sold: %d | Total Credits: %s\n\
  3143. Custom License Sold: %d | Total Credits: %s\n\
  3144. Additional Vehicle Slot Sold: %d | Total Credits: %s\n",szDialog, Solds[19], number_format(Amount[19]), Solds[20], number_format(Amount[20]),Solds[22], number_format(Amount[22]), Solds[23], number_format(Amount[23]));
  3145. format(szDialog, sizeof(szDialog), "%sGarage - Small Sold: %d | Total Credits: %s\n\
  3146. Garage - Medium Sold: %d | Total Credits: %s\n\
  3147. Garage - Large Sold: %d | Total Credits: %s\n\
  3148. Garage - Extra Large Sold: %d | Total Credits: %s\n", szDialog, Solds[24], number_format(Amount[24]), Solds[25], number_format(Amount[25]), Solds[26], number_format(Amount[26]), Solds[27], number_format(Amount[27]));
  3149. format(szDialog, sizeof(szDialog), "%sAdditional Toy Slot Sold: %d | Total Credits: %s\n\
  3150. Hunger Voucher: %d | Total Credits: %s\n\
  3151. Spawn at Gold VIP+: %d | Total Credits: %s\n\
  3152. Restricted Last Name (NEW): %d | Total Credits: %s\n\
  3153. Restricted Last Name (CHANGE): %d | Total Credits: %s\n", szDialog, Solds[28], number_format(Amount[28]), Solds[29], number_format(Amount[29]), Solds[30], number_format(Amount[30]), Solds[31], number_format(Amount[31]), Solds[32], number_format(Amount[32]));
  3154. format(szDialog, sizeof(szDialog), "%sCustom User Title (NEW): %d | Total Credits: %s\n\
  3155. Custom User Title (CHANGE): %d | Total Credits: %s\n\
  3156. Teamspeak User Channel: %d | Total Credits: %s\n\
  3157. Small Backpack: %d | Total Credits: %s\n\
  3158. Medium Backpack: %d | Total Credits: %s\n\
  3159. Large Backpack: %d | Total Credits: %s\n\
  3160. Deluxe Car Alarm: %d | Total Credits: %s\n\
  3161. Name Changes: %d | Total Credits: %s\n",
  3162. szDialog, Solds[33], number_format(Amount[33]), Solds[34], number_format(Amount[34]), Solds[35], number_format(Amount[35]), Solds[36], number_format(Amount[36]), Solds[37], number_format(Amount[37]), Solds[38], number_format(Amount[38]), Solds[39], number_format(Amount[39]), Solds[40], number_format(Amount[40]));
  3163. format(szDialog, sizeof(szDialog), "%sCredits Transactions: %d | Total Credits %s", szDialog, Solds[21], number_format(Amount[21]));
  3164. ShowPlayerDialogEx(index, DIALOG_VIEWSALE2, DIALOG_STYLE_MSGBOX, "Shop Statistics", szDialog, "Next", "Exit");
  3165. }
  3166. else
  3167. {
  3168. SendClientMessageEx(index, COLOR_GREY, "There was an issue with checking the table.");
  3169. }
  3170. }
  3171. }
  3172. forward CheckSales3(index);
  3173. public CheckSales3(index)
  3174. {
  3175. if(IsPlayerConnected(index))
  3176. {
  3177. new rows, value;
  3178. cache_get_row_count(rows);
  3179. if(rows)
  3180. {
  3181. new szDialog[1024], szField[15], mSolds[MAX_MICROITEMS], mAmount[MAX_MICROITEMS], Total, mTotal;
  3182. for(new z = 0; z < MAX_ITEMS; z++)
  3183. {
  3184. format(szField, sizeof(szField), "AmountMade%d", z);
  3185. Total += cache_get_value_name_int(0, szField, value);
  3186. }
  3187. cache_get_value_name(0, "TotalSoldMicro", szDialog);
  3188. sscanf(szDialog, MicroSpecifier, mSolds);
  3189. cache_get_value_name(0, "AmountMadeMicro", szDialog);
  3190. sscanf(szDialog, MicroSpecifier, mAmount);
  3191. szDialog[0] = 0;
  3192. for(new m; m < MAX_MICROITEMS; m++)
  3193. {
  3194. format(szDialog, sizeof(szDialog), "%s%s: %s | Total Credits: %s\n", szDialog, mItemName[m], number_format(mSolds[m]), number_format(mAmount[m]));
  3195. mTotal += mAmount[m];
  3196. }
  3197. format(szDialog, sizeof(szDialog), "%sTotal Amount of Credits spent: %s", szDialog, number_format(Total+mTotal));
  3198. ShowPlayerDialogEx(index, DIALOG_NOTHING, DIALOG_STYLE_MSGBOX, "Shop Statistics", szDialog, "Exit", "");
  3199. }
  3200. else
  3201. {
  3202. SendClientMessageEx(index, COLOR_GREY, "There was an issue with checking the table.");
  3203. }
  3204. }
  3205. }
  3206. forward LoadRentedCar(index);
  3207. public LoadRentedCar(index)
  3208. {
  3209. if(IsPlayerConnected(index))
  3210. {
  3211. new rows;
  3212. cache_get_row_count(rows);
  3213. if(rows)
  3214. {
  3215. //`sqlid`, `modelid`, `posx`, `posy`, `posz`, `posa`, `spawned`, `hours`
  3216. new szResult[32], Info[2], Float: pos[4], string[128];
  3217. cache_get_value_name(0, "modelid", szResult); Info[0] = strval(szResult);
  3218. cache_get_value_name(0, "posx", szResult); pos[0] = strval(szResult);
  3219. cache_get_value_name(0, "posy", szResult); pos[1] = strval(szResult);
  3220. cache_get_value_name(0, "posz", szResult); pos[2] = strval(szResult);
  3221. cache_get_value_name(0, "posa", szResult); pos[3] = strval(szResult);
  3222. cache_get_value_name(0, "hours", szResult); Info[1] = strval(szResult);
  3223. SetPVarInt(index, "RentedHours", Info[1]);
  3224. SetPVarInt(index, "RentedVehicle", CreateVehicle(Info[0],pos[0],pos[1], pos[2], pos[3], random(128), random(128), 2000000));
  3225. format(string, sizeof(string), "Your rented vehicle has been spawned and has %d minute(s) left.", Info[1]);
  3226. SendClientMessageEx(index, COLOR_CYAN, string);
  3227. }
  3228. }
  3229. }
  3230. forward LoadTicket(playerid);
  3231. public LoadTicket(playerid) {
  3232. new rows;
  3233. cache_get_row_count(rows);
  3234. if (rows == 0) {
  3235. return 1;
  3236. }
  3237. new number, result[10];
  3238. for(new i; i < rows; i++)
  3239. {
  3240. cache_get_value_name(i, "number", result);
  3241. number = strval(result);
  3242. LottoNumbers[playerid][i] = number;
  3243. }
  3244. return 1;
  3245. }
  3246. forward LoadTreasureInvent(playerid);
  3247. public LoadTreasureInvent(playerid)
  3248. {
  3249. new rows, szResult[10];
  3250. cache_get_row_count(rows);
  3251. if(IsPlayerConnected(playerid))
  3252. {
  3253. if(!rows)
  3254. {
  3255. new query[60];
  3256. mysql_format(MainPipeline, query, sizeof(query), "INSERT INTO `jobstuff` (`pId`) VALUES ('%d')", GetPlayerSQLId(playerid));
  3257. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  3258. }
  3259. else
  3260. {
  3261. for(new row;row < rows;row++)
  3262. {
  3263. cache_get_value_name(row, "junkmetal", szResult); SetPVarInt(playerid, "JunkMetal", strval(szResult));
  3264. cache_get_value_name(row, "newcoin", szResult); SetPVarInt(playerid, "newcoin", strval(szResult));
  3265. cache_get_value_name(row, "oldcoin", szResult); SetPVarInt(playerid, "oldcoin", strval(szResult));
  3266. cache_get_value_name(row, "brokenwatch", szResult); SetPVarInt(playerid, "brokenwatch", strval(szResult));
  3267. cache_get_value_name(row, "oldkey", szResult); SetPVarInt(playerid, "oldkey", strval(szResult));
  3268. cache_get_value_name(row, "treasure", szResult); SetPVarInt(playerid, "treasure", strval(szResult));
  3269. cache_get_value_name(row, "goldwatch", szResult); SetPVarInt(playerid, "goldwatch", strval(szResult));
  3270. cache_get_value_name(row, "silvernugget", szResult); SetPVarInt(playerid, "silvernugget", strval(szResult));
  3271. cache_get_value_name(row, "goldnugget", szResult); SetPVarInt(playerid, "goldnugget", strval(szResult));
  3272. }
  3273. }
  3274. }
  3275. return 1;
  3276. }
  3277. forward GetHomeCount(playerid);
  3278. public GetHomeCount(playerid)
  3279. {
  3280. new string[128];
  3281. mysql_format(MainPipeline, string, sizeof(string), "SELECT NULL FROM `houses` WHERE `OwnerID` = %d", GetPlayerSQLId(playerid));
  3282. return mysql_tquery(MainPipeline, string, "QueryGetCountFinish", "ii", playerid, 2);
  3283. }
  3284. forward AddReportToken(playerid);
  3285. public AddReportToken(playerid)
  3286. {
  3287. new
  3288. sz_playerName[MAX_PLAYER_NAME],
  3289. i_timestamp[3],
  3290. tdate[11],
  3291. thour[9],
  3292. query[128];
  3293. GetPlayerName(playerid, sz_playerName, MAX_PLAYER_NAME);
  3294. getdate(i_timestamp[0], i_timestamp[1], i_timestamp[2]);
  3295. format(tdate, sizeof(tdate), "%d-%02d-%02d", i_timestamp[0], i_timestamp[1], i_timestamp[2]);
  3296. format(thour, sizeof(thour), "%02d:00:00", hour);
  3297. mysql_format(MainPipeline, query, sizeof(query), "SELECT NULL FROM `tokens_report` WHERE `playerid` = %d AND `date` = '%s' AND `hour` = '%s'", GetPlayerSQLId(playerid), tdate, thour);
  3298. mysql_tquery(MainPipeline, query, "QueryTokenFinish", "ii", playerid, 1);
  3299. return 1;
  3300. }
  3301. forward AddCAReportToken(playerid);
  3302. public AddCAReportToken(playerid)
  3303. {
  3304. new
  3305. sz_playerName[MAX_PLAYER_NAME],
  3306. i_timestamp[3],
  3307. tdate[11],
  3308. thour[9],
  3309. query[128];
  3310. GetPlayerName(playerid, sz_playerName, MAX_PLAYER_NAME);
  3311. getdate(i_timestamp[0], i_timestamp[1], i_timestamp[2]);
  3312. format(tdate, sizeof(tdate), "%d-%02d-%02d", i_timestamp[0], i_timestamp[1], i_timestamp[2]);
  3313. format(thour, sizeof(thour), "%02d:00:00", hour);
  3314. mysql_format(MainPipeline, query, sizeof(query), "SELECT NULL FROM `tokens_request` WHERE `playerid` = %d AND `date` = '%s' AND `hour` = '%s'", GetPlayerSQLId(playerid), tdate, thour);
  3315. mysql_tquery(MainPipeline, query, "QueryTokenFinish", "ii", playerid, 2);
  3316. return 1;
  3317. }
  3318. forward AddCallToken(playerid);
  3319. public AddCallToken(playerid)
  3320. {
  3321. new
  3322. sz_playerName[MAX_PLAYER_NAME],
  3323. i_timestamp[3],
  3324. tdate[11],
  3325. query[128];
  3326. GetPlayerName(playerid, sz_playerName, MAX_PLAYER_NAME);
  3327. getdate(i_timestamp[0], i_timestamp[1], i_timestamp[2]);
  3328. format(tdate, sizeof(tdate), "%d-%02d-%02d", i_timestamp[0], i_timestamp[1], i_timestamp[2]);
  3329. mysql_format(MainPipeline, query, sizeof(query), "SELECT NULL FROM `tokens_call` WHERE `playerid` = %d AND `date` = '%s' AND `hour` = %d", GetPlayerSQLId(playerid), tdate, hour);
  3330. mysql_tquery(MainPipeline, query, "QueryTokenFinish", "ii", playerid, 3);
  3331. return 1;
  3332. }
  3333. forward AddWDToken(playerid);
  3334. public AddWDToken(playerid)
  3335. {
  3336. new
  3337. sz_playerName[MAX_PLAYER_NAME],
  3338. i_timestamp[3],
  3339. tdate[11],
  3340. thour[9],
  3341. query[128];
  3342. GetPlayerName(playerid, sz_playerName, MAX_PLAYER_NAME);
  3343. getdate(i_timestamp[0], i_timestamp[1], i_timestamp[2]);
  3344. format(tdate, sizeof(tdate), "%d-%02d-%02d", i_timestamp[0], i_timestamp[1], i_timestamp[2]);
  3345. format(thour, sizeof(thour), "%02d:00:00", hour);
  3346. mysql_format(MainPipeline, query, sizeof(query), "SELECT NULL FROM `tokens_wd` WHERE `playerid` = %d AND `date` = '%s' AND `hour` = '%s'", GetPlayerSQLId(playerid), tdate, thour);
  3347. mysql_tquery(MainPipeline, query, "QueryTokenFinish", "ii", playerid, 4);
  3348. return 1;
  3349. }
  3350. forward QueryTokenFinish(playerid, type);
  3351. public QueryTokenFinish(playerid, type)
  3352. {
  3353. new rows, string[128], i_timestamp[3], tdate[11], thour[9];
  3354. cache_get_row_count(rows);
  3355. getdate(i_timestamp[0], i_timestamp[1], i_timestamp[2]);
  3356. format(tdate, sizeof(tdate), "%d-%02d-%02d", i_timestamp[0], i_timestamp[1], i_timestamp[2]);
  3357. format(thour, sizeof(thour), "%02d:00:00", hour);
  3358. switch(type)
  3359. {
  3360. case 1:
  3361. {
  3362. if(rows == 0)
  3363. {
  3364. mysql_format(MainPipeline, string, sizeof(string), "INSERT INTO `tokens_report` (`id`, `playerid`, `date`, `hour`, `count`) VALUES (NULL, %d, '%s', '%s', 1)", GetPlayerSQLId(playerid), tdate, thour);
  3365. mysql_tquery(MainPipeline, string, "OnQueryFinish", "i", SENDDATA_THREAD);
  3366. }
  3367. else
  3368. {
  3369. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `tokens_report` SET `count` = count+1 WHERE `playerid` = %d AND `date` = '%s' AND `hour` = '%s'", GetPlayerSQLId(playerid), tdate, thour);
  3370. mysql_tquery(MainPipeline, string, "OnQueryFinish", "i", SENDDATA_THREAD);
  3371. }
  3372. }
  3373. case 2:
  3374. {
  3375. if(rows == 0)
  3376. {
  3377. mysql_format(MainPipeline, string, sizeof(string), "INSERT INTO `tokens_request` (`id`, `playerid`, `date`, `hour`, `count`) VALUES (NULL, %d, '%s', '%s', 1)", GetPlayerSQLId(playerid), tdate, thour);
  3378. mysql_tquery(MainPipeline, string, "OnQueryFinish", "i", SENDDATA_THREAD);
  3379. }
  3380. else
  3381. {
  3382. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `tokens_request` SET `count` = count+1 WHERE `playerid` = %d AND `date` = '%s' AND `hour` = '%s'", GetPlayerSQLId(playerid), tdate, thour);
  3383. mysql_tquery(MainPipeline, string, "OnQueryFinish", "i", SENDDATA_THREAD);
  3384. }
  3385. }
  3386. case 3:
  3387. {
  3388. if(rows == 0)
  3389. {
  3390. mysql_format(MainPipeline, string, sizeof(string), "INSERT INTO `tokens_call` (`id`, `playerid`, `date`, `hour`, `count`) VALUES (NULL, %d, '%s', %d, 1)", GetPlayerSQLId(playerid), tdate, hour);
  3391. mysql_tquery(MainPipeline, string, "OnQueryFinish", "i", SENDDATA_THREAD);
  3392. }
  3393. else
  3394. {
  3395. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `tokens_call` SET `count` = count+1 WHERE `playerid` = %d AND `date` = '%s' AND `hour` = %d", GetPlayerSQLId(playerid), tdate, hour);
  3396. mysql_tquery(MainPipeline, string, "OnQueryFinish", "i", SENDDATA_THREAD);
  3397. }
  3398. }
  3399. case 4:
  3400. {
  3401. if(rows == 0)
  3402. {
  3403. mysql_format(MainPipeline, string, sizeof(string), "INSERT INTO `tokens_wd` (`id`, `playerid`, `date`, `hour`, `count`) VALUES (NULL, %d, '%s', '%s', 1)", GetPlayerSQLId(playerid), tdate, thour);
  3404. mysql_tquery(MainPipeline, string, "OnQueryFinish", "i", SENDDATA_THREAD);
  3405. }
  3406. else
  3407. {
  3408. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `tokens_wd` SET `count` = count+1 WHERE `playerid` = %d AND `date` = '%s' AND `hour` = '%s'", GetPlayerSQLId(playerid), tdate, thour);
  3409. mysql_tquery(MainPipeline, string, "OnQueryFinish", "i", SENDDATA_THREAD);
  3410. }
  3411. }
  3412. }
  3413. return 1;
  3414. }
  3415. forward GetReportCount(userid, tdate[]);
  3416. public GetReportCount(userid, tdate[])
  3417. {
  3418. new string[128];
  3419. mysql_format(MainPipeline, string, sizeof(string), "SELECT SUM(count) FROM `tokens_report` WHERE `playerid` = %d AND `date` = '%s'", GetPlayerSQLId(userid), tdate);
  3420. return mysql_tquery(MainPipeline, string, "QueryGetCountFinish", "ii", userid, 0);
  3421. }
  3422. forward GetHourReportCount(userid, thour[], tdate[]);
  3423. public GetHourReportCount(userid, thour[], tdate[])
  3424. {
  3425. new string[128];
  3426. mysql_format(MainPipeline, string, sizeof(string), "SELECT `count` FROM `tokens_report` WHERE `playerid` = %d AND `date` = '%s' AND `hour` = '%s'", GetPlayerSQLId(userid), tdate, thour);
  3427. return mysql_tquery(MainPipeline, string, "QueryGetCountFinish", "ii", userid, 1);
  3428. }
  3429. forward GetRequestCount(userid, tdate[]);
  3430. public GetRequestCount(userid, tdate[])
  3431. {
  3432. new string[128];
  3433. mysql_format(MainPipeline, string, sizeof(string), "SELECT SUM(count) FROM `tokens_request` WHERE `playerid` = %d AND `date` = '%s'", GetPlayerSQLId(userid), tdate);
  3434. return mysql_tquery(MainPipeline, string, "QueryGetCountFinish", "ii", userid, 0);
  3435. }
  3436. forward GetHourRequestCount(userid, thour[], tdate[]);
  3437. public GetHourRequestCount(userid, thour[], tdate[])
  3438. {
  3439. new string[128];
  3440. mysql_format(MainPipeline, string, sizeof(string), "SELECT `count` FROM `tokens_request` WHERE `playerid` = %d AND `date` = '%s' AND `hour` = '%s'", GetPlayerSQLId(userid), tdate, thour);
  3441. return mysql_tquery(MainPipeline, string, "QueryGetCountFinish", "ii", userid, 1);
  3442. }
  3443. forward GetWDCount(userid, tdate[]);
  3444. public GetWDCount(userid, tdate[])
  3445. {
  3446. new string[128];
  3447. mysql_format(MainPipeline, string, sizeof(string), "SELECT SUM(count) FROM `tokens_wd` WHERE `playerid` = %d AND `date` = '%s'", GetPlayerSQLId(userid), tdate);
  3448. return mysql_tquery(MainPipeline, string, "QueryGetCountFinish", "ii", userid, 3);
  3449. }
  3450. forward GetWDHourCount(userid, thour[], tdate[]);
  3451. public GetWDHourCount(userid, thour[], tdate[])
  3452. {
  3453. new string[128];
  3454. mysql_format(MainPipeline, string, sizeof(string), "SELECT `count` FROM `tokens_wd` WHERE `playerid` = %d AND `date` = '%s' AND `hour` = '%s'", GetPlayerSQLId(userid), tdate, thour);
  3455. return mysql_tquery(MainPipeline, string, "QueryGetCountFinish", "ii", userid, 4);
  3456. }
  3457. forward QueryGetCountFinish(userid, type);
  3458. public QueryGetCountFinish(userid, type)
  3459. {
  3460. new rows, sResult[24], value;
  3461. cache_get_row_count(rows);
  3462. switch(type)
  3463. {
  3464. case 0:
  3465. {
  3466. if(rows > 0)
  3467. {
  3468. cache_get_value_name(0, "SUM(count)", sResult);
  3469. ReportCount[userid] = strval(sResult);
  3470. }
  3471. else ReportCount[userid] = 0;
  3472. }
  3473. case 1:
  3474. {
  3475. if(rows > 0)
  3476. {
  3477. cache_get_value_name(0, "count", sResult);
  3478. ReportHourCount[userid] = strval(sResult);
  3479. }
  3480. else ReportHourCount[userid] = 0;
  3481. }
  3482. case 2:
  3483. {
  3484. Homes[userid] = rows;
  3485. }
  3486. case 3:
  3487. {
  3488. if(rows > 0)
  3489. {
  3490. cache_get_value_name(0, "SUM(count)", sResult);
  3491. WDReportCount[userid] = strval(sResult);
  3492. }
  3493. else WDReportCount[userid] = 0;
  3494. }
  3495. case 4:
  3496. {
  3497. if(rows > 0)
  3498. {
  3499. WDReportHourCount[userid] = cache_get_value_name_int(0, "count", value);
  3500. }
  3501. else WDReportHourCount[userid] = 0;
  3502. }
  3503. }
  3504. return 1;
  3505. }
  3506. task MailDeliveryTimer[60000 * 5]()
  3507. {
  3508. mysql_tquery(MainPipeline, "UPDATE `letters` SET `Delivery_Min` = `Delivery_Min` - 1 WHERE `Delivery_Min` > 0", "OnQueryFinish", "i", SENDDATA_THREAD);
  3509. mysql_tquery(MainPipeline, "SELECT `Receiver_Id` FROM `letters` WHERE `Delivery_Min` = 1", "MailDeliveryQueryFinish", "");
  3510. return 1;
  3511. }
  3512. forward OnLoadMailboxes();
  3513. public OnLoadMailboxes()
  3514. {
  3515. new string[512], i;
  3516. new rows, fields;
  3517. cache_get_row_count(rows);
  3518. cache_get_field_count(fields);
  3519. while(i<rows)
  3520. {
  3521. for(new field; field < fields; field++)
  3522. {
  3523. cache_get_value_index(i, field, string);
  3524. switch(field)
  3525. {
  3526. case 1: MailBoxes[i][mbVW] = strval(string);
  3527. case 2: MailBoxes[i][mbInt] = strval(string);
  3528. case 3: MailBoxes[i][mbModel] = strval(string);
  3529. case 4: MailBoxes[i][mbPosX] = floatstr(string);
  3530. case 5: MailBoxes[i][mbPosY] = floatstr(string);
  3531. case 6: MailBoxes[i][mbPosZ] = floatstr(string);
  3532. case 7: MailBoxes[i][mbAngle] = floatstr(string);
  3533. }
  3534. }
  3535. if(MailBoxes[i][mbPosX] != 0.0) RenderStreetMailbox(i);
  3536. i++;
  3537. }
  3538. if(i > 0) printf("[LoadMailboxes] %d mailboxes rehashed/loaded.", i);
  3539. else printf("[LoadMailboxes] Failed to load any mailboxes.");
  3540. return 1;
  3541. }
  3542. forward LoadDynamicGroups();
  3543. public LoadDynamicGroups()
  3544. {
  3545. mysql_tquery(MainPipeline, "SELECT * FROM `groups`", "Group_QueryFinish", "ii", GROUP_QUERY_LOAD, 0);
  3546. mysql_tquery(MainPipeline, "SELECT * FROM `lockers`", "Group_QueryFinish", "ii", GROUP_QUERY_LOCKERS, 0);
  3547. mysql_tquery(MainPipeline, "SELECT * FROM `jurisdictions`", "Group_QueryFinish", "ii", GROUP_QUERY_JURISDICTIONS, 0);
  3548. mysql_tquery(MainPipeline, "SELECT * FROM `gweaponsnew`", "Group_QueryFinish", "ii", GROUP_QUERY_GWEAPONS, 0);
  3549. mysql_tquery(MainPipeline, "SELECT * FROM `locker_restrict`", "Group_QueryFinish", "ii", GROUP_QUERY_GWEAPONS_RANK, 0);
  3550. //mysql_tquery(MainPipeline, "SELECT * FROM `gWeapons`", "Group_QueryFinish", "ii", GROUP_QUERY_GWEAPONS, 0);
  3551. return ;
  3552. }
  3553. forward ParkRentedVehicle(playerid, vehicleid, modelid, Float:X, Float:Y, Float:Z);
  3554. public ParkRentedVehicle(playerid, vehicleid, modelid, Float:X, Float:Y, Float:Z)
  3555. {
  3556. if(IsPlayerInRangeOfPoint(playerid, 1.0, X, Y, Z))
  3557. {
  3558. new Float:x, Float:y, Float:z, Float:angle, Float:health, string[180], Float: oldfuel, arrDamage[4];
  3559. GetVehicleHealth(vehicleid, health);
  3560. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessageEx(playerid, COLOR_GREY, "You must be in the driver seat.");
  3561. if(health < 800) return SendClientMessageEx(playerid, COLOR_GREY, " Your vehicle is too damaged to park it.");
  3562. GetVehiclePos(vehicleid, x, y, z);
  3563. GetVehicleZAngle(vehicleid, angle);
  3564. SurfingCheck(vehicleid);
  3565. oldfuel = VehicleFuel[vehicleid];
  3566. GetVehicleDamageStatus(vehicleid, arrDamage[0], arrDamage[1], arrDamage[2], arrDamage[3]);
  3567. DestroyVehicle(GetPVarInt(playerid, "RentedVehicle"));
  3568. SetPVarInt(playerid, "RentedVehicle", CreateVehicle(modelid, x, y, z, angle, random(128), random(128), 2000000));
  3569. Vehicle_ResetData(GetPVarInt(playerid, "RentedVehicle"));
  3570. VehicleFuel[GetPVarInt(playerid, "RentedVehicle")] = oldfuel;
  3571. SetVehicleHealth(GetPVarInt(playerid, "RentedVehicle"), health);
  3572. UpdateVehicleDamageStatus(vehicleid, arrDamage[0], arrDamage[1], arrDamage[2], arrDamage[3]);
  3573. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `rentedcars` SET `posx` = '%f', `posy` = '%f', `posz` = '%f', `posa` = '%f' WHERE `sqlid` = '%d'", x, y, z, angle, GetPlayerSQLId(playerid));
  3574. mysql_tquery(MainPipeline, string, "OnQueryFinish", "ii", SENDDATA_THREAD, playerid);
  3575. IsPlayerEntering{playerid} = true;
  3576. PutPlayerInVehicle(playerid, vehicleid, 0);
  3577. SetPlayerArmedWeapon(playerid, 0);
  3578. format(string, sizeof(string), "* %s has parked their vehicle.", GetPlayerNameEx(playerid));
  3579. ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
  3580. }
  3581. else
  3582. {
  3583. SendClientMessage(playerid, COLOR_WHITE, "Vehicle did not park because you moved!");
  3584. }
  3585. return 1;
  3586. }
  3587. forward OnPlayerChangePass(index);
  3588. public OnPlayerChangePass(index)
  3589. {
  3590. if(cache_affected_rows()) {
  3591. new szMessage[103];
  3592. GetPVarString(index, "PassChange", PlayerInfo[index][pLastPass], 65);
  3593. format(szMessage, sizeof(szMessage), "You have changed your password to '%s'.", PlayerInfo[index][pLastPass]);
  3594. SendClientMessageEx(index, COLOR_YELLOW, szMessage);
  3595. format(szMessage, sizeof(szMessage), "%s(%d) (IP: %s) has changed their password.", GetPlayerNameEx(index), GetPlayerSQLId(index), PlayerInfo[index][pIP]);
  3596. Log("logs/password.log", szMessage);
  3597. DeletePVar(index, "PassChange");
  3598. mysql_format(MainPipeline, szMessage, sizeof(szMessage), "UPDATE `accounts` SET `LastPassChange` = NOW() WHERE `id` = '%i'", PlayerInfo[index][pId]);
  3599. mysql_tquery(MainPipeline, szMessage, "OnQueryFinish", "ii", SENDDATA_THREAD, index);
  3600. if(PlayerInfo[index][pForcePasswordChange] == 1)
  3601. {
  3602. PlayerInfo[index][pForcePasswordChange] = 0;
  3603. mysql_format(MainPipeline, szMessage, sizeof(szMessage), "UPDATE `accounts` SET `ForcePasswordChange` = '0' WHERE `id` = '%i'", PlayerInfo[index][pId]);
  3604. mysql_tquery(MainPipeline, szMessage, "OnQueryFinish", "ii", SENDDATA_THREAD, index);
  3605. }
  3606. }
  3607. else {
  3608. SendClientMessageEx(index, COLOR_RED, "There was an issue with processing your request. Your password will remain as it is.");
  3609. if(PlayerInfo[index][pForcePasswordChange] == 1) ShowLoginDialogs(index, 0);
  3610. }
  3611. return 1;
  3612. }
  3613. forward OnChangeUserPassword(index);
  3614. public OnChangeUserPassword(index)
  3615. {
  3616. if(GetPVarType(index, "ChangePin"))
  3617. {
  3618. new string[128], name[24];
  3619. GetPVarString(index, "OnChangeUserPassword", name, 24);
  3620. if(cache_affected_rows()) {
  3621. format(string, sizeof(string), "You have successfully changed %s's pin.", name);
  3622. SendClientMessageEx(index, COLOR_WHITE, string);
  3623. }
  3624. else {
  3625. format(string, sizeof(string), "There was an issue with changing %s's pin.", name);
  3626. format(string, sizeof(string), "There was an issue with changing %s's pin.", name);
  3627. SendClientMessageEx(index, COLOR_WHITE, string);
  3628. }
  3629. DeletePVar(index, "ChangePin");
  3630. DeletePVar(index, "OnChangeUserPassword");
  3631. }
  3632. else
  3633. {
  3634. new string[128], name[24];
  3635. GetPVarString(index, "OnChangeUserPassword", name, 24);
  3636. if(cache_affected_rows()) {
  3637. format(string, sizeof(string), "You have successfully changed %s's password.", name);
  3638. SendClientMessageEx(index, COLOR_WHITE, string);
  3639. }
  3640. else {
  3641. format(string, sizeof(string), "There was an issue with changing %s's password.", name);
  3642. SendClientMessageEx(index, COLOR_WHITE, string);
  3643. }
  3644. DeletePVar(index, "OnChangeUserPassword");
  3645. }
  3646. return 1;
  3647. }
  3648. forward QueryCheckCountFinish(playerid, giveplayername[], tdate[], type);
  3649. public QueryCheckCountFinish(playerid, giveplayername[], tdate[], type)
  3650. {
  3651. new string[128], rows, sResult[24], tcount, hhour[9], chour;
  3652. cache_get_row_count(rows);
  3653. switch(type)
  3654. {
  3655. case 0:
  3656. {
  3657. cache_get_value_name(0, "SUM(count)", sResult); tcount = strval(sResult);
  3658. if(tcount > 0)
  3659. {
  3660. format(string, sizeof(string), "%s accepted {%06x}%d {%06x}reports on %s.", giveplayername, COLOR_GREEN >>> 8, tcount, COLOR_WHITE >>> 8, tdate);
  3661. SendClientMessageEx(playerid, COLOR_WHITE, string);
  3662. }
  3663. else
  3664. {
  3665. format(string, sizeof(string), "%s did not accept any reports on %s.", giveplayername, tdate);
  3666. return SendClientMessageEx(playerid, COLOR_GRAD1, string);
  3667. }
  3668. }
  3669. case 1:
  3670. {
  3671. if(rows > 0)
  3672. {
  3673. SendClientMessageEx(playerid, COLOR_GRAD1, "By hour:");
  3674. for(new i; i < rows; i++)
  3675. {
  3676. cache_get_value_name(i, "count", sResult); new hcount = strval(sResult);
  3677. cache_get_value_name(i, "hour", hhour, sizeof(hhour));
  3678. format(hhour, sizeof(hhour), "%s", str_replace(":00:00", "", hhour));
  3679. chour = strval(hhour);
  3680. format(string, sizeof(string), "%s: {%06x}%d", ConvertToTwelveHour(chour), COLOR_GREEN >>> 8, hcount);
  3681. SendClientMessageEx(playerid, COLOR_WHITE, string);
  3682. }
  3683. }
  3684. }
  3685. case 2:
  3686. {
  3687. cache_get_value_name(0, "SUM(count)", sResult); tcount = strval(sResult);
  3688. if(tcount > 0)
  3689. {
  3690. format(string, sizeof(string), "%s accepted {%06x}%d {%06x}help requests on %s.", giveplayername, COLOR_GREEN >>> 8, tcount, COLOR_WHITE >>> 8, tdate);
  3691. SendClientMessageEx(playerid, COLOR_WHITE, string);
  3692. }
  3693. else
  3694. {
  3695. format(string, sizeof(string), "%s did not accept any help requests on %s.", giveplayername, tdate);
  3696. return SendClientMessageEx(playerid, COLOR_GRAD1, string);
  3697. }
  3698. }
  3699. case 3:
  3700. {
  3701. if(rows > 0)
  3702. {
  3703. SendClientMessageEx(playerid, COLOR_GRAD1, "By hour:");
  3704. for(new i; i < rows; i++)
  3705. {
  3706. cache_get_value_name(i, "count", sResult); new hcount = strval(sResult);
  3707. cache_get_value_name(i, "hour", hhour, sizeof(hhour));
  3708. format(hhour, sizeof(hhour), "%s", str_replace(":00:00", "", hhour));
  3709. chour = strval(hhour);
  3710. format(string, sizeof(string), "%s: {%06x}%d", ConvertToTwelveHour(chour), COLOR_GREEN >>> 8, hcount);
  3711. SendClientMessageEx(playerid, COLOR_WHITE, string);
  3712. }
  3713. }
  3714. }
  3715. case 4:
  3716. {
  3717. cache_get_value_name(0, "SUM(count)", sResult); tcount = strval(sResult);
  3718. if(tcount > 0)
  3719. {
  3720. format(string, sizeof(string), "%s watched {%06x}%d {%06x}people on %s.", giveplayername, COLOR_GREEN >>> 8, tcount, COLOR_WHITE >>> 8, tdate);
  3721. SendClientMessageEx(playerid, COLOR_WHITE, string);
  3722. }
  3723. else
  3724. {
  3725. format(string, sizeof(string), "%s did not watch anyone on %s.", giveplayername, tdate);
  3726. return SendClientMessageEx(playerid, COLOR_GRAD1, string);
  3727. }
  3728. }
  3729. case 5:
  3730. {
  3731. if(rows > 0)
  3732. {
  3733. SendClientMessageEx(playerid, COLOR_GRAD1, "By hour:");
  3734. for(new i; i < rows; i++)
  3735. {
  3736. cache_get_value_name(i, "count", sResult); new hcount = strval(sResult);
  3737. cache_get_value_name(i, "hour", hhour, sizeof(hhour));
  3738. format(hhour, sizeof(hhour), "%s", str_replace(":00:00", "", hhour));
  3739. chour = strval(hhour);
  3740. format(string, sizeof(string), "%s: {%06x}%d", ConvertToTwelveHour(chour), COLOR_GREEN >>> 8, hcount);
  3741. SendClientMessageEx(playerid, COLOR_WHITE, string);
  3742. }
  3743. }
  3744. }
  3745. }
  3746. return 1;
  3747. }
  3748. forward QueryUsernameCheck(playerid, tdate[], type);
  3749. public QueryUsernameCheck(playerid, tdate[], type)
  3750. {
  3751. new string[128], rows, giveplayerid, sResult[MAX_PLAYER_NAME];
  3752. cache_get_row_count(rows);
  3753. if(rows > 0)
  3754. {
  3755. switch(type)
  3756. {
  3757. case 0:
  3758. {
  3759. cache_get_value_name(0, "id", sResult); giveplayerid = strval(sResult);
  3760. cache_get_value_name(0, "Username", sResult, sizeof(sResult));
  3761. mysql_format(MainPipeline, string, sizeof(string), "SELECT SUM(count) FROM `tokens_report` WHERE `playerid` = %d AND `date` = '%s'", giveplayerid, tdate);
  3762. mysql_tquery(MainPipeline, string, "QueryCheckCountFinish", "issi", playerid, sResult, tdate, 0);
  3763. mysql_format(MainPipeline, string, sizeof(string), "SELECT `count`, `hour` FROM `tokens_report` WHERE `playerid` = %d AND `date` = '%s' ORDER BY `hour` ASC", giveplayerid, tdate);
  3764. mysql_tquery(MainPipeline, string, "QueryCheckCountFinish", "issi", playerid, sResult, tdate, 1);
  3765. }
  3766. case 1:
  3767. {
  3768. cache_get_value_name(0, "id", sResult); giveplayerid = strval(sResult);
  3769. cache_get_value_name(0, "Username", sResult, sizeof(sResult));
  3770. mysql_format(MainPipeline, string, sizeof(string), "SELECT SUM(count) FROM `tokens_request` WHERE `playerid` = %d AND `date` = '%s'", giveplayerid, tdate);
  3771. mysql_tquery(MainPipeline, string, "QueryCheckCountFinish", "issi", playerid, sResult, tdate, 2);
  3772. mysql_format(MainPipeline, string, sizeof(string), "SELECT `count`, `hour` FROM `tokens_request` WHERE `playerid` = %d AND `date` = '%s' ORDER BY `hour` ASC", giveplayerid, tdate);
  3773. mysql_tquery(MainPipeline, string, "QueryCheckCountFinish", "issi", playerid, sResult, tdate, 3);
  3774. }
  3775. case 2:
  3776. {
  3777. cache_get_value_name(0, "id", sResult); giveplayerid = strval(sResult);
  3778. cache_get_value_name(0, "Username", sResult, sizeof(sResult));
  3779. mysql_format(MainPipeline, string, sizeof(string), "SELECT SUM(count) FROM `tokens_wd` WHERE `playerid` = %d AND `date` = '%s'", giveplayerid, tdate);
  3780. mysql_tquery(MainPipeline, string, "QueryCheckCountFinish", "issi", playerid, sResult, tdate, 4);
  3781. mysql_format(MainPipeline, string, sizeof(string), "SELECT `count`, `hour` FROM `tokens_wd` WHERE `playerid` = %d AND `date` = '%s' ORDER BY `hour` ASC", giveplayerid, tdate);
  3782. mysql_tquery(MainPipeline, string, "QueryCheckCountFinish", "issi", playerid, sResult, tdate, 5);
  3783. }
  3784. }
  3785. }
  3786. else return SendClientMessageEx(playerid, COLOR_GRAD1, "That account doesn't exist!");
  3787. return 1;
  3788. }
  3789. forward OnBanPlayer(index);
  3790. public OnBanPlayer(index)
  3791. {
  3792. new string[128], name[24], reason[64];
  3793. GetPVarString(index, "OnBanPlayer", name, 24);
  3794. GetPVarString(index, "OnBanPlayerReason", reason, 64);
  3795. if(IsPlayerConnected(index))
  3796. {
  3797. if(cache_affected_rows()) {
  3798. format(string, sizeof(string), "You have successfully banned %s's account.", name);
  3799. SendClientMessageEx(index, COLOR_WHITE, string);
  3800. format(string, sizeof(string), "AdmCmd: %s was offline banned by %s, reason: %s", name, GetPlayerNameEx(index), reason);
  3801. Log("logs/ban.log", string);
  3802. format(string, 128, "AdmCmd: %s was offline banned by %s, reason: %s", name, GetPlayerNameEx(index), reason);
  3803. ABroadCast(COLOR_LIGHTRED,string,2);
  3804. print(string);
  3805. }
  3806. else {
  3807. format(string, sizeof(string), "There was an issue with banning %s's account.", name);
  3808. SendClientMessageEx(index, COLOR_WHITE, string);
  3809. }
  3810. DeletePVar(index, "OnBanPlayer");
  3811. DeletePVar(index, "OnBanPlayerReason");
  3812. }
  3813. return 1;
  3814. }
  3815. forward OnBanIP(index);
  3816. public OnBanIP(index)
  3817. {
  3818. if(IsPlayerConnected(index))
  3819. {
  3820. new rows;
  3821. new string[256], ip[32], id, value;
  3822. cache_get_row_count(rows);
  3823. if(rows)
  3824. {
  3825. id = cache_get_value_name_int(0, "id", value);
  3826. cache_get_value_name(0, "IP", ip);
  3827. MySQLBan(id, ip, "Offline Banned (/banaccount)", 1, GetPlayerNameEx(index));
  3828. mysql_format(MainPipeline, string, sizeof(string), "INSERT INTO `ip_bans` (`ip`, `date`, `reason`, `admin`) VALUES ('%s', NOW(), '%s', '%s')", ip, "Offline Banned", GetPlayerNameEx(index));
  3829. mysql_tquery(MainPipeline, string, "OnQueryFinish", "i", SENDDATA_THREAD);
  3830. }
  3831. }
  3832. return 1;
  3833. }
  3834. forward OnUnbanPlayer(index);
  3835. public OnUnbanPlayer(index)
  3836. {
  3837. new string[128], name[24];
  3838. GetPVarString(index, "OnUnbanPlayer", name, 24);
  3839. if(cache_affected_rows()) {
  3840. format(string, sizeof(string), "You have successfully unbanned %s's account.", name);
  3841. SendClientMessageEx(index, COLOR_WHITE, string);
  3842. format(string, 128, "AdmCmd: %s was unbanned by %s.", name, GetPlayerNameEx(index));
  3843. ABroadCast(COLOR_LIGHTRED,string,2);
  3844. format(string, sizeof(string), "AdmCmd: %s was unbanned by %s.", name, GetPlayerNameEx(index));
  3845. Log("logs/ban.log", string);
  3846. print(string);
  3847. }
  3848. else {
  3849. format(string, sizeof(string), "There was an issue with unbanning %s's account.", name);
  3850. SendClientMessageEx(index, COLOR_WHITE, string);
  3851. }
  3852. DeletePVar(index, "OnUnbanPlayer");
  3853. return 1;
  3854. }
  3855. forward OnUnbanIP(index);
  3856. public OnUnbanIP(index)
  3857. {
  3858. if(IsPlayerConnected(index))
  3859. {
  3860. new string[128], ip[16];
  3861. new rows;
  3862. cache_get_row_count(rows);
  3863. if(rows) {
  3864. cache_get_value_name(0, "IP", ip, 16);
  3865. //RemoveBan(index, ip);
  3866. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `bans` SET `status` = 4, `date_unban` = NOW() WHERE `ip_address` = '%s'", ip);
  3867. mysql_tquery(MainPipeline, string, "OnQueryFinish", "i", SENDDATA_THREAD);
  3868. }
  3869. }
  3870. return 1;
  3871. }
  3872. // Use this for generic "You have successfully altered X's account" messages... no need for 578947 public functions!
  3873. forward Query_OnExecution(iTargetID);
  3874. public Query_OnExecution(iTargetID) {
  3875. new
  3876. szName[MAX_PLAYER_NAME],
  3877. szMessage[64];
  3878. GetPVarString(iTargetID, "QueryEx_Name", szName, sizeof szName);
  3879. if(cache_affected_rows()) {
  3880. format(szMessage, sizeof szMessage, "The query on %s's account was successful.", szName);
  3881. SendClientMessageEx(iTargetID, COLOR_WHITE, szMessage);
  3882. }
  3883. else {
  3884. format(szMessage, sizeof szMessage, "The query on %s's account was unsuccessful.", szName);
  3885. SendClientMessageEx(iTargetID, COLOR_WHITE, szMessage);
  3886. }
  3887. return DeletePVar(iTargetID, "QueryEx_Name");
  3888. }
  3889. forward OnSetSuspended(index, value);
  3890. public OnSetSuspended(index, value)
  3891. {
  3892. new string[128], name[24];
  3893. GetPVarString(index, "OnSetSuspended", name, 24);
  3894. if(cache_affected_rows()) {
  3895. format(string, sizeof(string), "You have successfully %s %s's account.", ((value) ? ("suspended") : ("unsuspended")), name);
  3896. SendClientMessageEx(index, COLOR_WHITE, string);
  3897. format(string, sizeof(string), "AdmCmd: %s was offline %s by %s.", name, ((value) ? ("suspended") : ("unsuspended")), GetPlayerNameEx(index));
  3898. Log("logs/admin.log", string);
  3899. }
  3900. else {
  3901. format(string, sizeof(string), "There was an issue with %s %s's account.", ((value) ? ("suspending") : ("unsuspending")), name);
  3902. SendClientMessageEx(index, COLOR_WHITE, string);
  3903. }
  3904. DeletePVar(index, "OnSetSuspended");
  3905. return 1;
  3906. }
  3907. forward OnSetCrime(index);
  3908. public OnSetCrime(index)
  3909. {
  3910. new string[128], name[24];
  3911. GetPVarString(index, "OfflineSU", name, 24);
  3912. if(cache_affected_rows()) {
  3913. format(string, sizeof(string), "You have successfully added a crime to %s's account.", name);
  3914. SendClientMessageEx(index, COLOR_WHITE, string);
  3915. }
  3916. else {
  3917. format(string, sizeof(string), "There was an issue with adding a crime to %s's account.", name);
  3918. SendClientMessageEx(index, COLOR_WHITE, string);
  3919. }
  3920. DeletePVar(index, "OfflineSU");
  3921. return 1;
  3922. }
  3923. forward OnSetMyName(index);
  3924. public OnSetMyName(index)
  3925. {
  3926. if(IsPlayerConnected(index))
  3927. {
  3928. new rows;
  3929. cache_get_row_count(rows);
  3930. if(!rows)
  3931. {
  3932. new string[128], tmpName[24];
  3933. GetPVarString(index, "OnSetMyName", tmpName, 24);
  3934. new name[MAX_PLAYER_NAME];
  3935. GetPlayerName(index, name, sizeof(name));
  3936. SetPVarString(index, "TempNameName", name);
  3937. if(strlen(tmpName) > 0)
  3938. {
  3939. SetPlayerName(index, tmpName);
  3940. format(string, sizeof(string), "%s has changed their name to %s.", name, tmpName);
  3941. Log("logs/undercover.log", string);
  3942. DeletePVar(index, "OnSetMyName");
  3943. format(string, sizeof(string), "You have temporarily set your name to %s.", tmpName);
  3944. SendClientMessageEx(index, COLOR_YELLOW, string);
  3945. SendClientMessageEx(index, COLOR_GRAD2, "NOTE: None of your stats will save until you type this command again.");
  3946. SetPVarInt(index, "TempName", 1);
  3947. }
  3948. }
  3949. else
  3950. {
  3951. SendClientMessageEx(index, COLOR_WHITE, "This name is already registered.");
  3952. }
  3953. }
  3954. else
  3955. {
  3956. DeletePVar(index, "OnSetMyName");
  3957. }
  3958. return 1;
  3959. }
  3960. forward OnSetName(index, extraid);
  3961. public OnSetName(index, extraid)
  3962. {
  3963. if(IsPlayerConnected(index))
  3964. {
  3965. if(IsPlayerConnected(extraid))
  3966. {
  3967. new rows;
  3968. cache_get_row_count(rows);
  3969. if(rows < 1)
  3970. {
  3971. new string[128], tmpName[24], playername[24];
  3972. GetPVarString(index, "OnSetName", tmpName, 24);
  3973. GetPlayerName(extraid, playername, sizeof(playername));
  3974. UpdateCitizenApp(extraid, PlayerInfo[extraid][pNation]);
  3975. if(PlayerInfo[extraid][pMarriedID] != -1)
  3976. {
  3977. foreach(new i: Player)
  3978. {
  3979. if(PlayerInfo[extraid][pMarriedID] == GetPlayerSQLId(i)) format(PlayerInfo[i][pMarriedName], MAX_PLAYER_NAME, "%s", tmpName);
  3980. }
  3981. }
  3982. for(new i; i < MAX_DDOORS; i++)
  3983. {
  3984. if(DDoorsInfo[i][ddType] == 1 && DDoorsInfo[i][ddOwner] == GetPlayerSQLId(extraid))
  3985. {
  3986. strcat((DDoorsInfo[i][ddOwnerName][0] = 0, DDoorsInfo[i][ddOwnerName]), tmpName, 42);
  3987. DestroyDynamicPickup(DDoorsInfo[i][ddPickupID]);
  3988. if(IsValidDynamic3DTextLabel(DDoorsInfo[i][ddTextID])) DestroyDynamic3DTextLabel(DDoorsInfo[i][ddTextID]);
  3989. CreateDynamicDoor(i);
  3990. SaveDynamicDoor(i);
  3991. }
  3992. }
  3993. for(new i; i < MAX_GARAGES; i++)
  3994. {
  3995. if(GarageInfo[i][gar_Owner] == GetPlayerSQLId(extraid))
  3996. {
  3997. format(GarageInfo[i][gar_OwnerName], MAX_PLAYER_NAME, "%s", tmpName);
  3998. CreateGarage(i);
  3999. SaveGarage(i);
  4000. }
  4001. }
  4002. if(Homes[extraid] > 0)
  4003. {
  4004. for(new i; i < MAX_HOUSES; i++)
  4005. {
  4006. if(GetPlayerSQLId(extraid) == HouseInfo[i][hOwnerID])
  4007. {
  4008. format(HouseInfo[i][hOwnerName], MAX_PLAYER_NAME, "%s", tmpName);
  4009. SaveHouse(i);
  4010. ReloadHouseText(i);
  4011. }
  4012. }
  4013. }
  4014. if(PlayerInfo[extraid][pDonateRank] >= 1)
  4015. {
  4016. new string2[128];
  4017. format(string2, sizeof(string2), "[VIP NAMECHANGES] %s has changed their name to %s.", GetPlayerNameEx(extraid), tmpName);
  4018. Log("logs/vipnamechanges.log", string2);
  4019. }
  4020. if(strlen(tmpName) > 0)
  4021. {
  4022. format(string, sizeof(string), " Your name has been changed from %s to %s.", GetPlayerNameEx(extraid), tmpName);
  4023. SendClientMessageEx(extraid,COLOR_YELLOW,string);
  4024. format(string, sizeof(string), " You have changed %s's name to %s.", GetPlayerNameEx(extraid), tmpName);
  4025. SendClientMessageEx(index,COLOR_YELLOW,string);
  4026. format(string, sizeof(string), "%s changed %s's name to %s",GetPlayerNameEx(index),GetPlayerNameExt(extraid),tmpName);
  4027. Log("logs/stats.log", string);
  4028. if(SetPlayerName(extraid, tmpName) == 1)
  4029. {
  4030. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `accounts` SET `Username`='%s' WHERE `Username`='%s'", tmpName, playername);
  4031. mysql_tquery(MainPipeline, string, "OnSetNameTwo", "ii", index, extraid);
  4032. }
  4033. else
  4034. {
  4035. SendClientMessage(extraid, COLOR_REALRED, "There was an issue with your name change.");
  4036. format(string, sizeof(string), "%s's name change has failed due to incorrect size or characters.", GetPlayerNameExt(extraid));
  4037. SendClientMessage(extraid, COLOR_REALRED, string);
  4038. format(string, sizeof(string), "Error changing %s's name to %s", GetPlayerNameExt(extraid), tmpName);
  4039. Log("logs/stats.log", string);
  4040. return 1;
  4041. }
  4042. OnPlayerStatsUpdate(extraid);
  4043. }
  4044. }
  4045. }
  4046. }
  4047. DeletePVar(index, "OnSetName");
  4048. return 1;
  4049. }
  4050. forward OnSetNameTwo(index, extraid);
  4051. public OnSetNameTwo(index, extraid)
  4052. {
  4053. return 1;
  4054. }
  4055. forward OnApproveName(index, extraid);
  4056. public OnApproveName(index, extraid)
  4057. {
  4058. if(IsPlayerConnected(extraid))
  4059. {
  4060. new string[128];
  4061. new rows;
  4062. cache_get_row_count(rows);
  4063. if(rows < 1)
  4064. {
  4065. new newname[24], oldname[24];
  4066. GetPVarString(extraid, "NewNameRequest", newname, 24);
  4067. GetPlayerName(extraid, oldname, sizeof(oldname));
  4068. UpdateCitizenApp(extraid, PlayerInfo[extraid][pNation]);
  4069. if(PlayerInfo[extraid][pMarriedID] != -1)
  4070. {
  4071. foreach(new i: Player)
  4072. {
  4073. if(PlayerInfo[extraid][pMarriedID] == GetPlayerSQLId(i)) format(PlayerInfo[i][pMarriedName], MAX_PLAYER_NAME, "%s", newname);
  4074. }
  4075. }
  4076. for(new i; i < MAX_DDOORS; i++)
  4077. {
  4078. if(DDoorsInfo[i][ddType] == 1 && DDoorsInfo[i][ddOwner] == GetPlayerSQLId(extraid))
  4079. {
  4080. strcat((DDoorsInfo[i][ddOwnerName][0] = 0, DDoorsInfo[i][ddOwnerName]), newname, 42);
  4081. DestroyDynamicPickup(DDoorsInfo[i][ddPickupID]);
  4082. if(IsValidDynamic3DTextLabel(DDoorsInfo[i][ddTextID])) DestroyDynamic3DTextLabel(DDoorsInfo[i][ddTextID]);
  4083. CreateDynamicDoor(i);
  4084. SaveDynamicDoor(i);
  4085. }
  4086. }
  4087. for(new i; i < MAX_GARAGES; i++)
  4088. {
  4089. if(GarageInfo[i][gar_Owner] == GetPlayerSQLId(extraid))
  4090. {
  4091. format(GarageInfo[i][gar_OwnerName], MAX_PLAYER_NAME, "%s", newname);
  4092. CreateGarage(i);
  4093. SaveGarage(i);
  4094. }
  4095. }
  4096. if(Homes[extraid] > 0)
  4097. {
  4098. for(new i; i < MAX_HOUSES; i++)
  4099. {
  4100. if(GetPlayerSQLId(extraid) == HouseInfo[i][hOwnerID])
  4101. {
  4102. format(HouseInfo[i][hOwnerName], MAX_PLAYER_NAME, "%s", newname);
  4103. SaveHouse(i);
  4104. ReloadHouseText(i);
  4105. }
  4106. }
  4107. }
  4108. if(PlayerInfo[extraid][pBusiness] != INVALID_BUSINESS_ID && Businesses[PlayerInfo[extraid][pBusiness]][bOwner] == GetPlayerSQLId(extraid))
  4109. {
  4110. strcpy(Businesses[PlayerInfo[extraid][pBusiness]][bOwnerName], newname, MAX_PLAYER_NAME);
  4111. SaveBusiness(PlayerInfo[extraid][pBusiness]);
  4112. RefreshBusinessPickup(PlayerInfo[extraid][pBusiness]);
  4113. }
  4114. if(PlayerInfo[extraid][pDonateRank] >= 1)
  4115. {
  4116. format(string, sizeof(string), "[VIP NAMECHANGES] %s(%d) has changed their name to %s.", GetPlayerNameEx(extraid), GetPlayerSQLId(extraid), newname);
  4117. Log("logs/vipnamechanges.log", string);
  4118. }
  4119. if(GetPVarType(extraid, "marriagelastname"))
  4120. {
  4121. if(strlen(newname) > 0)
  4122. {
  4123. if(SetPlayerName(extraid, newname) == 1)
  4124. {
  4125. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `accounts` SET `Username`='%s' WHERE `Username`='%s'", newname, oldname);
  4126. mysql_tquery(MainPipeline, string, "OnApproveSetName", "ii", index, extraid);
  4127. format(string, sizeof(string), "%s last name has been changed upon marriage. New Name: \"%s\" (id: %i).", oldname, newname, GetPlayerSQLId(extraid));
  4128. Log("logs/stats.log", string);
  4129. SendClientMessageEx(extraid, -1, "Upon a successful marriage your last name has been changed to match your spouse's at your own request.");
  4130. }
  4131. else
  4132. {
  4133. SendClientMessage(extraid, COLOR_REALRED, "There was an issue with your name change.");
  4134. format(string, sizeof(string), "Error changing %s's(%d) name to %s", GetPlayerNameExt(extraid), GetPlayerSQLId(extraid), newname);
  4135. Log("logs/stats.log", string);
  4136. return 1;
  4137. }
  4138. DeletePVar(extraid, "marriagelastname");
  4139. }
  4140. }
  4141. else if((0 <= PlayerInfo[extraid][pMember] < MAX_GROUPS) && PlayerInfo[extraid][pRank] >= arrGroupData[PlayerInfo[extraid][pMember]][g_iFreeNameChange])
  4142. {
  4143. if(strlen(newname) > 0)
  4144. {
  4145. format(string, sizeof(string), " Your name has been changed from %s to %s for free.", GetPlayerNameEx(extraid), newname);
  4146. SendClientMessageEx(extraid,COLOR_YELLOW,string);
  4147. format(string, sizeof(string), " You have changed %s's name to %s at no cost.", GetPlayerNameEx(extraid), newname);
  4148. SendClientMessageEx(index,COLOR_YELLOW,string);
  4149. format(string, sizeof(string), "%s changed \"%s\"s name to \"%s\" (id: %i) for free.",GetPlayerNameEx(index),GetPlayerNameEx(extraid),newname, GetPlayerSQLId(extraid));
  4150. Log("logs/stats.log", string);
  4151. format(string, sizeof(string), "%s has approved %s's name change to %s at no cost.",GetPlayerNameEx(index),GetPlayerNameEx(extraid), newname);
  4152. ABroadCast(COLOR_YELLOW, string, 3);
  4153. if(SetPlayerName(extraid, newname) == 1)
  4154. {
  4155. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `accounts` SET `Username`='%s' WHERE `Username`='%s'", newname, oldname);
  4156. mysql_tquery(MainPipeline, string, "OnApproveSetName", "ii", index, extraid);
  4157. }
  4158. else
  4159. {
  4160. SendClientMessage(extraid, COLOR_REALRED, "There was an issue with your name change.");
  4161. format(string, sizeof(string), "%s's name change has failed due to incorrect size or characters.", GetPlayerNameExt(extraid));
  4162. SendClientMessage(index, COLOR_REALRED, string);
  4163. format(string, sizeof(string), "Error changing %s's(%d) name to %s", GetPlayerNameExt(extraid), GetPlayerSQLId(extraid), newname);
  4164. Log("logs/stats.log", string);
  4165. return 1;
  4166. }
  4167. DeletePVar(extraid, "RequestingNameChange");
  4168. }
  4169. }
  4170. else if(PlayerInfo[extraid][pAdmin] == 1 && PlayerInfo[extraid][pSMod] > 0)
  4171. {
  4172. if(strlen(newname) > 0)
  4173. {
  4174. format(string, sizeof(string), " Your name has been changed from %s to %s for free (Senior Mod).", GetPlayerNameEx(extraid), newname);
  4175. SendClientMessageEx(extraid,COLOR_YELLOW,string);
  4176. format(string, sizeof(string), " You have changed %s's name to %s at no cost.", GetPlayerNameEx(extraid), newname);
  4177. SendClientMessageEx(index,COLOR_YELLOW,string);
  4178. format(string, sizeof(string), "%s changed \"%s\"s name to \"%s\" (id: %i) for free (Senior Mod).",GetPlayerNameEx(index),GetPlayerNameEx(extraid),newname, GetPlayerSQLId(extraid));
  4179. Log("logs/stats.log", string);
  4180. format(string, sizeof(string), "%s has approved %s's name change to %s at no cost (Senior Mod).",GetPlayerNameEx(index),GetPlayerNameEx(extraid), newname);
  4181. ABroadCast(COLOR_YELLOW, string, 3);
  4182. if(SetPlayerName(extraid, newname) == 1)
  4183. {
  4184. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `accounts` SET `Username`='%s' WHERE `Username`='%s'", newname, oldname);
  4185. mysql_tquery(MainPipeline, string, "OnApproveSetName", "ii", index, extraid);
  4186. }
  4187. else
  4188. {
  4189. SendClientMessage(extraid, COLOR_REALRED, "There was an issue with your name change.");
  4190. format(string, sizeof(string), "%s's name change has failed due to incorrect size or characters.", GetPlayerNameExt(extraid));
  4191. SendClientMessage(index, COLOR_REALRED, string);
  4192. format(string, sizeof(string), "Error changing %s's(%d) name to %s", GetPlayerNameExt(extraid), GetPlayerSQLId(extraid), newname);
  4193. Log("logs/stats.log", string);
  4194. return 1;
  4195. }
  4196. DeletePVar(extraid, "RequestingNameChange");
  4197. }
  4198. }
  4199. else
  4200. {
  4201. if(GetPVarInt(extraid, "NameChangeCost") == 0)
  4202. {
  4203. if(strlen(newname) > 0)
  4204. {
  4205. format(string, sizeof(string), " Your name has been changed from %s to %s for free (non-RP name).", GetPlayerNameEx(extraid), newname);
  4206. SendClientMessageEx(extraid,COLOR_YELLOW,string);
  4207. format(string, sizeof(string), " You have changed %s's name to %s for free (non-RP name).", GetPlayerNameEx(extraid), newname);
  4208. SendClientMessageEx(index,COLOR_YELLOW,string);
  4209. format(string, sizeof(string), "%s changed \"%s\"s name to \"%s\" (id: %i) for free (non-RP name).",GetPlayerNameEx(index),GetPlayerNameEx(extraid),newname, GetPlayerSQLId(extraid));
  4210. Log("logs/stats.log", string);
  4211. format(string, sizeof(string), "%s has approved %s's name change to %s for free (non-RP name).",GetPlayerNameEx(index),GetPlayerNameEx(extraid), newname);
  4212. ABroadCast(COLOR_YELLOW, string, 3);
  4213. if(SetPlayerName(extraid, newname) == 1)
  4214. {
  4215. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `accounts` SET `Username`='%s' WHERE `Username`='%s'", newname, oldname);
  4216. mysql_tquery(MainPipeline, string, "OnApproveSetName", "ii", index, extraid);
  4217. }
  4218. else
  4219. {
  4220. SendClientMessage(extraid, COLOR_REALRED, "There was an issue with your name change.");
  4221. format(string, sizeof(string), "%s's name change has failed due to incorrect size or characters.", GetPlayerNameExt(extraid));
  4222. SendClientMessage(index, COLOR_REALRED, string);
  4223. format(string, sizeof(string), "Error changing %s's(%d) name to %s", GetPlayerNameExt(extraid), GetPlayerSQLId(extraid), newname);
  4224. Log("logs/stats.log", string);
  4225. return 1;
  4226. }
  4227. DeletePVar(extraid, "RequestingNameChange");
  4228. }
  4229. }
  4230. else if(gettime() >= PlayerInfo[extraid][pNextNameChange])
  4231. {
  4232. if(strlen(newname) > 0)
  4233. {
  4234. if(SetPlayerName(extraid, newname) == 1)
  4235. {
  4236. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `accounts` SET `Username`='%s' WHERE `Username`='%s'", newname, oldname);
  4237. mysql_tquery(MainPipeline, string, "OnApproveSetName", "ii", index, extraid);
  4238. PlayerInfo[extraid][pNextNameChange] = gettime()+10368000;
  4239. format(string, sizeof(string), " Your name has been changed from %s to %s for free.", oldname, newname);
  4240. SendClientMessageEx(extraid, COLOR_YELLOW, string);
  4241. format(string, sizeof(string), " Your next free name change will be on %s", date(PlayerInfo[extraid][pNextNameChange], 4));
  4242. SendClientMessageEx(extraid, COLOR_CYAN, string);
  4243. format(string, sizeof(string), " You have changed %s's name to %s for %s for free.", oldname, newname);
  4244. SendClientMessageEx(index,COLOR_YELLOW,string);
  4245. format(string, sizeof(string), "%s changed \"%s\"s name to \"%s\" (id: %i) for free. (Next Free N/C: %s)", GetPlayerNameEx(index), oldname, newname, GetPlayerSQLId(extraid), date(PlayerInfo[extraid][pNextNameChange], 4));
  4246. Log("logs/stats.log", string);
  4247. format(string, sizeof(string), "%s has approved %s's name change to %s for free.", GetPlayerNameEx(index), oldname, newname);
  4248. ABroadCast(COLOR_YELLOW, string, 3);
  4249. }
  4250. else
  4251. {
  4252. SendClientMessage(extraid, COLOR_REALRED, "There was an issue with your name change.");
  4253. format(string, sizeof(string), "%s's name change has failed due to incorrect size or characters.", GetPlayerNameExt(extraid));
  4254. SendClientMessage(index, COLOR_REALRED, string);
  4255. format(string, sizeof(string), "Error changing %s's(%d) name to %s", GetPlayerNameExt(extraid), GetPlayerSQLId(extraid), newname);
  4256. Log("logs/stats.log", string);
  4257. return 1;
  4258. }
  4259. DeletePVar(extraid, "RequestingNameChange");
  4260. }
  4261. }
  4262. else
  4263. {
  4264. if(strlen(newname) > 0)
  4265. {
  4266. if(SetPlayerName(extraid, newname) == 1)
  4267. {
  4268. /*
  4269. GivePlayerCredits(extraid, -ShopItems[40][sItemPrice], 1);
  4270. printf("Price40: %d", ShopItems[40][sItemPrice]);
  4271. AmountSold[40]++;
  4272. AmountMade[40] += ShopItems[40][sItemPrice];
  4273. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `sales` SET `TotalSold40` = '%d', `AmountMade40` = '%d' WHERE `Month` > NOW() - INTERVAL 1 MONTH", AmountSold[40], AmountMade[40]);
  4274. mysql_tquery(MainPipeline, string, "OnQueryFinish", "i", SENDDATA_THREAD);
  4275. format(string, sizeof(string), "[Name Change] [User: %s(%i)] [IP: %s] [Credits: %s] [Price: %s]", GetPlayerNameEx(extraid), GetPlayerSQLId(extraid), GetPlayerIpEx(extraid), number_format(PlayerInfo[extraid][pCredits]), number_format(ShopItems[40][sItemPrice]));
  4276. Log("logs/credits.log", string), print(string);
  4277. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `accounts` SET `Username`='%s' WHERE `Username`='%s'", newname, oldname);
  4278. mysql_tquery(MainPipeline, string, "OnApproveSetName", "ii", index, extraid);
  4279. format(string, sizeof(string), " Your name has been changed from %s to %s for %s credits.", oldname, newname, number_format(ShopItems[40][sItemPrice]));
  4280. SendClientMessageEx(extraid, COLOR_CYAN, string);
  4281. format(string, sizeof(string), " You have changed %s's name to %s for %s credits.", oldname, newname, number_format(ShopItems[40][sItemPrice]));
  4282. SendClientMessageEx(index,COLOR_YELLOW,string);
  4283. format(string, sizeof(string), "%s changed \"%s\"s name to \"%s\" (id: %i) for %s credits.", GetPlayerNameEx(index), oldname, newname, GetPlayerSQLId(extraid), number_format(ShopItems[40][sItemPrice]));
  4284. Log("logs/stats.log", string);
  4285. format(string, sizeof(string), "%s has approved %s's name change to %s for %s credits.", GetPlayerNameEx(index), oldname, newname, number_format(ShopItems[40][sItemPrice]));
  4286. ABroadCast(COLOR_YELLOW, string, 3);
  4287. */
  4288. GivePlayerCash(extraid, -GetPVarInt(extraid, "NameChangeCost"));
  4289. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `accounts` SET `Username`='%s' WHERE `Username`='%s'", newname, oldname);
  4290. mysql_tquery(MainPipeline, string, "OnApproveSetName", "ii", index, extraid);
  4291. format(string, sizeof(string), " Your name has been changed from %s to %s for $%s.", oldname, newname, number_format(GetPVarInt(extraid, "NameChangeCost")));
  4292. SendClientMessageEx(extraid, COLOR_CYAN, string);
  4293. format(string, sizeof(string), " You have changed %s's name to %s for $%s.", oldname, newname, number_format(GetPVarInt(extraid, "NameChangeCost")));
  4294. SendClientMessageEx(index,COLOR_YELLOW,string);
  4295. format(string, sizeof(string), "%s changed \"%s\"s name to \"%s\" (id: %i) for $%s.", GetPlayerNameEx(index), oldname, newname, GetPlayerSQLId(extraid), number_format(GetPVarInt(extraid, "NameChangeCost")));
  4296. Log("logs/stats.log", string);
  4297. format(string, sizeof(string), "%s has approved %s's name change to %s for $%s.", GetPlayerNameEx(index), oldname, newname, number_format(GetPVarInt(extraid, "NameChangeCost")));
  4298. ABroadCast(COLOR_YELLOW, string, 3);
  4299. }
  4300. else
  4301. {
  4302. SendClientMessage(extraid, COLOR_REALRED, "There was an issue with your name change.");
  4303. format(string, sizeof(string), "%s's name change has failed due to incorrect size or characters.", GetPlayerNameExt(extraid));
  4304. SendClientMessage(index, COLOR_REALRED, string);
  4305. format(string, sizeof(string), "Error changing %s's(%d) name to %s", GetPlayerNameExt(extraid), GetPlayerSQLId(extraid), newname);
  4306. Log("logs/stats.log", string);
  4307. return 1;
  4308. }
  4309. DeletePVar(extraid, "RequestingNameChange");
  4310. }
  4311. }
  4312. }
  4313. }
  4314. else
  4315. {
  4316. if(GetPVarType(extraid, "marriagelastname"))
  4317. {
  4318. SendClientMessageEx(extraid, COLOR_GRAD2, "There was a error changing your name after marriage, the name already exists.");
  4319. }
  4320. else
  4321. {
  4322. SendClientMessageEx(extraid, COLOR_GRAD2, "That name already exists, please choose a different one.");
  4323. SendClientMessageEx(index, COLOR_GRAD2, "That name already exists.");
  4324. }
  4325. DeletePVar(extraid, "RequestingNameChange");
  4326. DeletePVar(extraid, "marriagelastname");
  4327. return 1;
  4328. }
  4329. }
  4330. return 1;
  4331. }
  4332. forward OnIPWhitelist(index);
  4333. public OnIPWhitelist(index)
  4334. {
  4335. new string[128], name[24];
  4336. GetPVarString(index, "OnIPWhitelist", name, 24);
  4337. if(cache_affected_rows()) {
  4338. format(string, sizeof(string), "You have successfully whitelisted %s's account.", name);
  4339. SendClientMessageEx(index, COLOR_WHITE, string);
  4340. format(string, sizeof(string), "%s has IP Whitelisted %s", GetPlayerNameEx(index), name);
  4341. Log("logs/whitelist.log", string);
  4342. }
  4343. else {
  4344. format(string, sizeof(string), "There was a issue with whitelisting %s's account.", name);
  4345. SendClientMessageEx(index, COLOR_WHITE, string);
  4346. }
  4347. DeletePVar(index, "OnIPWhitelist");
  4348. return 1;
  4349. }
  4350. forward OnIPCheck(index);
  4351. public OnIPCheck(index)
  4352. {
  4353. if(IsPlayerConnected(index))
  4354. {
  4355. new string[128], ip[16], name[24], AdminLvL;
  4356. new rows;
  4357. cache_get_row_count(rows);
  4358. if(rows)
  4359. {
  4360. cache_get_value_name(0, "AdminLevel", ip, 16); AdminLvL = strval(ip);
  4361. cache_get_value_name(0, "Username", name, MAX_PLAYER_NAME);
  4362. if(AdminLvL <= 1 || (AdminLvL <= PlayerInfo[index][pAdmin] && PlayerInfo[index][pAdmin] >= 1338))
  4363. {
  4364. cache_get_value_name(0, "IP", ip, 16);
  4365. format(string, sizeof(string), "%s's IP: %s", name, ip);
  4366. SendClientMessageEx(index, COLOR_WHITE, string);
  4367. format(string, sizeof(string), "%s has offline IP Checked %s", GetPlayerNameEx(index), name);
  4368. if(AdminLvL >= 2) Log("logs/adminipcheck.log", string); else Log("logs/ipcheck.log", string);
  4369. return 1;
  4370. }
  4371. if(AdminLvL >= 2)
  4372. {
  4373. if(AdminLvL > PlayerInfo[index][pAdmin])
  4374. {
  4375. format(string, sizeof(string), "%s has tried to offline check the IP address of a higher admin\nPlease report this to SIU/OED or an EA", GetPlayerNameEx(index));
  4376. foreach(new i: Player)
  4377. {
  4378. if(PlayerInfo[i][pAdmin] >= 4) ShowPlayerDialogEx(i, DIALOG_NOTHING, DIALOG_STYLE_MSGBOX, "{FFFF00}AdminWarning - {FF0000}Report ASAP", string, "Close", "");
  4379. }
  4380. }
  4381. format(string, sizeof(string), "%s tried to offline IP check %s", GetPlayerNameEx(index), name);
  4382. Log("logs/adminipcheck.log", string);
  4383. }
  4384. SendClientMessageEx(index, COLOR_WHITE, "There was an issue with checking the account's IP.");
  4385. }
  4386. else
  4387. {
  4388. SendClientMessageEx(index, COLOR_WHITE, "There was an issue with checking the account's IP.");
  4389. }
  4390. }
  4391. return 1;
  4392. }
  4393. forward OnFine(index);
  4394. public OnFine(index)
  4395. {
  4396. new string[128], name[24], amount, reason[64];
  4397. GetPVarString(index, "OnFine", name, 24);
  4398. amount = GetPVarInt(index, "OnFineAmount");
  4399. GetPVarString(index, "OnFineReason", reason, 64);
  4400. if(cache_affected_rows()) {
  4401. format(string, sizeof(string), "You have successfully fined %s's account.", name);
  4402. SendClientMessageEx(index, COLOR_WHITE, string);
  4403. format(string, sizeof(string), "AdmCmd: %s was offline fined $%d by %s, reason: %s", name, amount, GetPlayerNameEx(index), reason);
  4404. Log("logs/admin.log", string);
  4405. }
  4406. else {
  4407. format(string, sizeof(string), "There was an issue with fining %s's account.", name);
  4408. SendClientMessageEx(index, COLOR_WHITE, string);
  4409. }
  4410. DeletePVar(index, "OnFine");
  4411. DeletePVar(index, "OnFineAmount");
  4412. DeletePVar(index, "OnFineReason");
  4413. return 1;
  4414. }
  4415. forward OnPrisonAccount(index);
  4416. public OnPrisonAccount(index)
  4417. {
  4418. new string[128], name[24], reason[64];
  4419. GetPVarString(index, "OnPrisonAccount", name, 24);
  4420. GetPVarString(index, "OnPrisonAccountReason", reason, 64);
  4421. if(cache_affected_rows()) {
  4422. format(string, sizeof(string), "You have successfully prisoned %s's account.", name);
  4423. SendClientMessageEx(index, COLOR_WHITE, string);
  4424. format(string, sizeof(string), "AdmCmd: %s was offline prisoned by %s, reason: %s ", name, GetPlayerNameEx(index), reason);
  4425. Log("logs/admin.log", string);
  4426. }
  4427. else {
  4428. format(string, sizeof(string), "There was an issue with prisoning %s's account.");
  4429. SendClientMessageEx(index, COLOR_WHITE, string);
  4430. }
  4431. DeletePVar(index, "OnPrisonAccount");
  4432. DeletePVar(index, "OnPrisonAccountReason");
  4433. return 1;
  4434. }
  4435. forward OnJailAccount(index);
  4436. public OnJailAccount(index)
  4437. {
  4438. new string[128], name[24], reason[64];
  4439. GetPVarString(index, "OnJailAccount", name, 24);
  4440. GetPVarString(index, "OnJailAccountReason", reason, 64);
  4441. if(cache_affected_rows()) {
  4442. format(string, sizeof(string), "You have successfully jailed %s's account.", name);
  4443. SendClientMessageEx(index, COLOR_WHITE, string);
  4444. format(string, sizeof(string), "AdmCmd: %s was offline jailed by %s, reason: %s", name, GetPlayerNameEx(index), reason);
  4445. Log("logs/admin.log", string);
  4446. }
  4447. else {
  4448. format(string, sizeof(string), "There was an issue with jailing %s's account.", name);
  4449. SendClientMessageEx(index, COLOR_WHITE, string);
  4450. }
  4451. DeletePVar(index, "OnJailAccount");
  4452. DeletePVar(index, "OnJailAccountReason");
  4453. return 1;
  4454. }
  4455. forward OnGetLatestKills(playerid, giveplayerid);
  4456. public OnGetLatestKills(playerid, giveplayerid)
  4457. {
  4458. new string[128], killername[MAX_PLAYER_NAME], killedname[MAX_PLAYER_NAME], kDate[20], weapon[56], rows;
  4459. cache_get_row_count(rows);
  4460. if(rows)
  4461. {
  4462. for(new i; i < rows; i++)
  4463. {
  4464. cache_get_value_index(i, 0, killername, MAX_PLAYER_NAME);
  4465. cache_get_value_index(i, 1, killedname, MAX_PLAYER_NAME);
  4466. cache_get_value_name(i, "killerid", string); new killer = strval(string);
  4467. cache_get_value_name(i, "killedid", string); new killed = strval(string);
  4468. cache_get_value_name(i, "date", kDate, sizeof(kDate));
  4469. cache_get_value_name(i, "weapon", weapon, sizeof(weapon));
  4470. if(GetPlayerSQLId(giveplayerid) == killer && GetPlayerSQLId(giveplayerid) == killed) format(string, sizeof(string), "[%s] %s killed themselves (%s)", kDate, StripUnderscore(killedname), weapon);
  4471. else if(GetPlayerSQLId(giveplayerid) == killer && GetPlayerSQLId(giveplayerid) != killed) format(string, sizeof(string), "[%s] %s killed %s with %s", kDate, StripUnderscore(killername), StripUnderscore(killedname), weapon);
  4472. else if(GetPlayerSQLId(giveplayerid) != killer && GetPlayerSQLId(giveplayerid) == killed) format(string, sizeof(string), "[%s] %s was killed by %s with %s", kDate, StripUnderscore(killedname), StripUnderscore(killername), weapon);
  4473. SendClientMessageEx(playerid, COLOR_YELLOW, string);
  4474. }
  4475. }
  4476. else SendClientMessageEx(playerid, COLOR_YELLOW, "No kills recorded on this player.");
  4477. return 1;
  4478. }
  4479. forward OnGetOKills(playerid, giveplayername[]);
  4480. public OnGetOKills(playerid, giveplayername[])
  4481. {
  4482. if(IsPlayerConnected(playerid))
  4483. {
  4484. new string[256], giveplayerid, rows;
  4485. cache_get_row_count(rows);
  4486. if(rows)
  4487. {
  4488. cache_get_value_name(0, "id", string); giveplayerid = strval(string);
  4489. mysql_format(MainPipeline, string, sizeof(string), "SELECT Killer.Username, Killed.Username, k.* FROM kills k LEFT JOIN accounts Killed ON k.killedid = Killed.id LEFT JOIN accounts Killer ON Killer.id = k.killerid WHERE k.killerid = %d OR k.killedid = %d ORDER BY `date` DESC LIMIT 10", giveplayerid, giveplayerid);
  4490. mysql_tquery(MainPipeline, string, "OnGetLatestOKills", "iis", playerid, giveplayerid, giveplayername);
  4491. }
  4492. else return SendClientMessageEx(playerid, COLOR_GREY, "This account does not exist.");
  4493. }
  4494. return 1;
  4495. }
  4496. forward OnGetLatestOKills(playerid, giveplayerid, giveplayername[]);
  4497. public OnGetLatestOKills(playerid, giveplayerid, giveplayername[])
  4498. {
  4499. new string[128], killername[MAX_PLAYER_NAME], killedname[MAX_PLAYER_NAME], kDate[20], weapon[56], rows;
  4500. cache_get_row_count(rows);
  4501. if(rows)
  4502. {
  4503. SendClientMessageEx(playerid, COLOR_GREEN, "________________________________________________");
  4504. format(string, sizeof(string), "<< Last 10 Kills/Deaths of %s >>", StripUnderscore(giveplayername));
  4505. SendClientMessageEx(playerid, COLOR_YELLOW, string);
  4506. for(new i; i < rows; i++)
  4507. {
  4508. cache_get_value_index(i, 0, killername, MAX_PLAYER_NAME);
  4509. cache_get_value_index(i, 1, killedname, MAX_PLAYER_NAME);
  4510. cache_get_value_name(i, "killerid", string); new killer = strval(string);
  4511. cache_get_value_name(i, "killedid", string); new killed = strval(string);
  4512. cache_get_value_name(i, "date", kDate, sizeof(kDate));
  4513. cache_get_value_name(i, "weapon", weapon, sizeof(weapon));
  4514. if(giveplayerid == killer && giveplayerid == killed) format(string, sizeof(string), "[%s] %s killed themselves (%s)", kDate, StripUnderscore(killedname), weapon);
  4515. else if(giveplayerid == killer && giveplayerid != killed) format(string, sizeof(string), "[%s] %s killed %s with %s", kDate, StripUnderscore(killername), StripUnderscore(killedname), weapon);
  4516. else if(giveplayerid != killer && giveplayerid == killed) format(string, sizeof(string), "[%s] %s was killed by %s with %s", kDate, StripUnderscore(killedname), StripUnderscore(killername), weapon);
  4517. SendClientMessageEx(playerid, COLOR_YELLOW, string);
  4518. }
  4519. }
  4520. else return SendClientMessageEx(playerid, COLOR_YELLOW, "No kills recorded on this player.");
  4521. return 1;
  4522. }
  4523. forward OnDMStrikeReset(playerid, giveplayerid);
  4524. public OnDMStrikeReset(playerid, giveplayerid)
  4525. {
  4526. new string[128];
  4527. format(string, sizeof(string), "Deleted %d strikes against %s", cache_affected_rows(), GetPlayerNameEx(giveplayerid));
  4528. SendClientMessage(playerid, COLOR_WHITE, string);
  4529. return 1;
  4530. }
  4531. forward OnDMRLookup(playerid, giveplayerid);
  4532. public OnDMRLookup(playerid, giveplayerid)
  4533. {
  4534. new string[128], rows;
  4535. cache_get_row_count(rows);
  4536. format(string, sizeof(string), "Showing the last %d /dmreports by %s", rows, GetPlayerNameEx(giveplayerid));
  4537. SendClientMessage(playerid, COLOR_WHITE, string);
  4538. SendClientMessage(playerid, COLOR_WHITE, "| Reported | Time |");
  4539. for(new i;i < rows;i++)
  4540. {
  4541. new szResult[32], name[MAX_PLAYER_NAME], timestamp;
  4542. cache_get_value_index(i, 0, szResult); timestamp = strval(szResult);
  4543. cache_get_value_index(i, 1, name, MAX_PLAYER_NAME);
  4544. format(string, sizeof(string), "%s - %s", name, date(timestamp, 1));
  4545. SendClientMessage(playerid, COLOR_WHITE, string);
  4546. }
  4547. return 1;
  4548. }
  4549. forward OnDMTokenLookup(playerid, giveplayerid);
  4550. public OnDMTokenLookup(playerid, giveplayerid)
  4551. {
  4552. new string[128], rows;
  4553. cache_get_row_count(rows);
  4554. format(string, sizeof(string), "Showing the %d active /dmreports on %s", rows, GetPlayerNameEx(giveplayerid));
  4555. SendClientMessage(playerid, COLOR_WHITE, string);
  4556. SendClientMessage(playerid, COLOR_WHITE, "| Reporter | Time |");
  4557. for(new i;i < rows;i++)
  4558. {
  4559. new szResult[32], name[MAX_PLAYER_NAME], timestamp;
  4560. cache_get_value_index(i, 0, szResult); timestamp = strval(szResult);
  4561. cache_get_value_index(i, 1, name);
  4562. format(string, sizeof(string), "%s - %s", name, date(timestamp, 1));
  4563. SendClientMessage(playerid, COLOR_WHITE, string);
  4564. }
  4565. return 1;
  4566. }
  4567. forward OnDMWatchListLookup(playerid);
  4568. public OnDMWatchListLookup(playerid)
  4569. {
  4570. new string[128], rows;
  4571. cache_get_row_count(rows);
  4572. format(string, sizeof(string), "Showing %d active people to watch", rows);
  4573. SendClientMessage(playerid, COLOR_WHITE, string);
  4574. for(new i;i < rows;i++)
  4575. {
  4576. new name[MAX_PLAYER_NAME], watchid;
  4577. cache_get_value_index(i, 0, name);
  4578. sscanf(name, "u", watchid);
  4579. format(string, sizeof(string), "(ID: %d) %s", watchid, name);
  4580. SendClientMessage(playerid, (PlayerInfo[watchid][pJailTime] > 0) ? TEAM_ORANGE_COLOR:COLOR_WHITE, string);
  4581. }
  4582. return 1;
  4583. }
  4584. forward OnDMWatch(playerid);
  4585. public OnDMWatch(playerid)
  4586. {
  4587. new rows;
  4588. cache_get_row_count(rows);
  4589. if(rows)
  4590. {
  4591. new string[128], namesql[MAX_PLAYER_NAME], name[MAX_PLAYER_NAME];
  4592. cache_get_value_index(0, 0, namesql);
  4593. foreach(new i: Player)
  4594. {
  4595. if(!PlayerInfo[i][pJailTime])
  4596. {
  4597. GetPlayerName(i, name, sizeof(name));
  4598. if(strcmp(name, namesql, true) == 0)
  4599. {
  4600. foreach(new x: Player)
  4601. {
  4602. if(GetPVarInt(x, "pWatchdogWatching") == i)
  4603. {
  4604. return SendClientMessage(playerid, COLOR_WHITE, "The random person selected for you is already being watched, please try again!");
  4605. }
  4606. }
  4607. format(string, sizeof(string), "You now have access to /spec %s (ID: %i). Use /dmalert if this person deathmatches.", name, i);
  4608. SendClientMessage(playerid, COLOR_WHITE, string);
  4609. return SetPVarInt(playerid, "pWatchdogWatching", i);
  4610. }
  4611. }
  4612. }
  4613. }
  4614. return SendClientMessageEx(playerid, COLOR_WHITE, "There is no one online to DM Watch!");
  4615. }
  4616. forward OnWarnPlayer(index);
  4617. public OnWarnPlayer(index)
  4618. {
  4619. new string[128], name[24], reason[64];
  4620. GetPVarString(index, "OnWarnPlayer", name, 24);
  4621. GetPVarString(index, "OnWarnPlayerReason", reason, 64);
  4622. if(cache_affected_rows()) {
  4623. format(string, sizeof(string), "You have successfully warned %s's account.", name);
  4624. SendClientMessageEx(index, COLOR_WHITE, string);
  4625. format(string, sizeof(string), "AdmCmd: %s was offline warned by %s, reason: %s", name, GetPlayerNameEx(index), reason);
  4626. Log("logs/admin.log", string);
  4627. }
  4628. else {
  4629. format(string, sizeof(string), "There was an issue with warning %s's account.", name);
  4630. SendClientMessageEx(index, COLOR_WHITE, string);
  4631. }
  4632. DeletePVar(index, "OnWarnPlayer");
  4633. DeletePVar(index, "OnWarnPlayerReason");
  4634. return 1;
  4635. }
  4636. forward OnPinCheck2(index);
  4637. public OnPinCheck2(index)
  4638. {
  4639. if(IsPlayerConnected(index))
  4640. {
  4641. new rows;
  4642. cache_get_row_count(rows);
  4643. if(rows)
  4644. {
  4645. new Pin[256];
  4646. cache_get_value_name(0, "Pin", Pin, 256);
  4647. if(isnull(Pin)) {
  4648. ShowPlayerDialogEx(index, DIALOG_CREATEPIN, DIALOG_STYLE_INPUT, "Pin Number", "Create a pin number so you can secure your account credits.", "Create", "Exit");
  4649. }
  4650. else
  4651. {
  4652. new passbuffer[256], passbuffer2[64];
  4653. GetPVarString(index, "PinNumber", passbuffer2, sizeof(passbuffer2));
  4654. WP_Hash(passbuffer, sizeof(passbuffer), passbuffer2);
  4655. if (strcmp(passbuffer, Pin) == 0)
  4656. {
  4657. SetPVarInt(index, "PinConfirmed", 1);
  4658. SendClientMessageEx(index, COLOR_CYAN, "Pin confirmed, you will now be able to spend credits.");
  4659. switch(GetPVarInt(index, "OpenShop"))
  4660. {
  4661. case 1:
  4662. {
  4663. new szDialog[1024];
  4664. format(szDialog, sizeof(szDialog), "Poker Table (Credits: {FFD700}%s{A9C4E4})\nBoombox (Credits: {FFD700}%s{A9C4E4})\n100 Paintball Tokens (Credits: {FFD700}%s{A9C4E4})\nEXP Token (Credits: {FFD700}%s{A9C4E4})\nFireworks x5 (Credits: {FFD700}%s{A9C4E4})\nCustom License Plate (Credits: {FFD700}%s{A9C4E4})",
  4665. number_format(ShopItems[6][sItemPrice]), number_format(ShopItems[7][sItemPrice]), number_format(ShopItems[8][sItemPrice]), number_format(ShopItems[9][sItemPrice]),
  4666. number_format(ShopItems[10][sItemPrice]), number_format(ShopItems[22][sItemPrice]));
  4667. format(szDialog, sizeof(szDialog), "%s\nRestricted Last Name (NEW) (Credits: {FFD700}%s{A9C4E4})\nRestricted Last Name (CHANGE) (Credits: {FFD700}%s{A9C4E4})\nCustom User Title (NEW) (Credits: {FFD700}%s{A9C4E4})\nCustom User Title (CHANGE) (Credits: {FFD700}%s{A9C4E4})\nTeamspeak User Channel (Credits: {FFD700}%s{A9C4E4})\nBackpacks\nDeluxe Car Alarm (Credits: {FFD700}%s{A9C4E4})",
  4668. szDialog, number_format(ShopItems[31][sItemPrice]), number_format(ShopItems[32][sItemPrice]), number_format(ShopItems[33][sItemPrice]), number_format(ShopItems[34][sItemPrice]), number_format(ShopItems[35][sItemPrice]), number_format(ShopItems[39][sItemPrice]));
  4669. ShowPlayerDialogEx(index, DIALOG_MISCSHOP, DIALOG_STYLE_LIST, "Misc Shop", szDialog, "Select", "Cancel");
  4670. }
  4671. case 2: SetPVarInt(index, "RentaCar", 1), ShowModelSelectionMenu(index, CarList2, "Rent a Car!");
  4672. case 3: ShowModelSelectionMenu(index, CarList2, "Car Shop");
  4673. case 4: ShowPlayerDialogEx( index, DIALOG_HOUSESHOP, DIALOG_STYLE_LIST, "House Shop", "Purchase House\nHouse Interior Change\nHouse Move\nGarage - Small\nGarage - Medium\nGarage - Large\nGarage - Extra Large","Select", "Exit" );
  4674. case 5: ShowPlayerDialogEx( index, DIALOG_VIPSHOP, DIALOG_STYLE_LIST, "VIP Shop", "Purchase VIP\nRenew Gold VIP","Continue", "Exit" );
  4675. case 6: ShowPlayerDialogEx(index, DIALOG_SHOPBUSINESS, DIALOG_STYLE_LIST, "Businesses Shop", "Purchase Business\nRenew Business", "Select", "Exit");
  4676. case 7: ShowModelSelectionMenu(index, PlaneList, "Plane Shop");
  4677. case 8: ShowModelSelectionMenu(index, BoatList, "Boat Shop");
  4678. case 9: ShowModelSelectionMenu(index, CarList3, "Restricted Car Shop");
  4679. case 10: cmd_changename(index, "");
  4680. case 11: cmd_microshop(index, "");
  4681. }
  4682. DeletePVar(index, "OpenShop");
  4683. }
  4684. else
  4685. {
  4686. ShowPlayerDialogEx(index, DIALOG_ENTERPIN, DIALOG_STYLE_INPUT, "Pin Number", "(INVALID PIN)\n\nEnter your pin number to access credit shops.", "Confirm", "Exit");
  4687. }
  4688. DeletePVar(index, "PinNumber");
  4689. }
  4690. }
  4691. else
  4692. {
  4693. SendClientMessageEx(index, COLOR_WHITE, "There was an issue, please try again.");
  4694. }
  4695. }
  4696. return 1;
  4697. }
  4698. forward OnPinCheck(index);
  4699. public OnPinCheck(index)
  4700. {
  4701. if(IsPlayerConnected(index))
  4702. {
  4703. new rows;
  4704. cache_get_row_count(rows);
  4705. if(rows)
  4706. {
  4707. new Pin[128];
  4708. cache_get_value_name(0, "Pin", Pin);
  4709. if(isnull(Pin)) {
  4710. ShowPlayerDialogEx(index, DIALOG_CREATEPIN, DIALOG_STYLE_INPUT, "Pin Number", "Create a pin number so you can secure your account credits.", "Create", "Exit");
  4711. }
  4712. else
  4713. {
  4714. ShowPlayerDialogEx(index, DIALOG_ENTERPIN, DIALOG_STYLE_INPUT, "Pin Number", "Enter your pin number to access credit shops.", "Confirm", "Exit");
  4715. }
  4716. }
  4717. else
  4718. {
  4719. SendClientMessageEx(index, COLOR_WHITE, "There was an issue, please try again.");
  4720. }
  4721. }
  4722. return 1;
  4723. }
  4724. forward OnGetSMSLog(playerid);
  4725. public OnGetSMSLog(playerid)
  4726. {
  4727. new string[128], message[256], sender[MAX_PLAYER_NAME], sDate[20], rows;
  4728. cache_get_row_count(rows);
  4729. if(rows)
  4730. {
  4731. SendClientMessageEx(playerid, COLOR_GREEN, "________________________________________________");
  4732. SendClientMessageEx(playerid, COLOR_YELLOW, "<< Last 10 SMS Received >>");
  4733. for(new i; i < rows; i++)
  4734. {
  4735. cache_get_value_name(i, "sender", sender, MAX_PLAYER_NAME);
  4736. cache_get_value_name(i, "sendernumber", string); new sendernumber = strval(string);
  4737. cache_get_value_name(i, "message", message, sizeof(message));
  4738. cache_get_value_name(i, "date", sDate, sizeof(sDate));
  4739. if(sendernumber != 0) format(string, sizeof(string), "[%s] SMS: %s, Sender: %d (( %s ))", sDate, message, sendernumber, sender);
  4740. else format(string, sizeof(string), "[%s] SMS: %s, Sender: Unknown", sDate, message);
  4741. SendClientMessageEx(playerid, COLOR_YELLOW, string);
  4742. }
  4743. }
  4744. else SendClientMessageEx(playerid, COLOR_GREY, "You have not received any SMS messages.");
  4745. return 1;
  4746. }
  4747. forward Group_QueryFinish(iType, iExtraID);
  4748. public Group_QueryFinish(iType, iExtraID) {
  4749. /*
  4750. Internally, every group array/subarray starts from zero (divisions, group ids etc)
  4751. When displaying to the clients or saving to the db, we add 1 to them!
  4752. The only exception is ranks which already start from zero.
  4753. */
  4754. new
  4755. iRows,
  4756. iIndex,
  4757. i = 0,
  4758. szResult[128],
  4759. number[12],
  4760. value;
  4761. cache_get_row_count(iRows);
  4762. switch(iType) {
  4763. case GROUP_QUERY_JURISDICTIONS:
  4764. {
  4765. for(new iG = 0; iG < MAX_GROUPS; iG++)
  4766. {
  4767. arrGroupData[iG][g_iJCount] = 0;
  4768. }
  4769. while(iIndex < iRows) {
  4770. cache_get_value_name(iIndex, "GroupID", szResult, 24);
  4771. new iGroup = strval(szResult);
  4772. if(arrGroupData[iGroup][g_iJCount] > MAX_GROUP_JURISDICTIONS) arrGroupData[iGroup][g_iJCount] = MAX_GROUP_JURISDICTIONS;
  4773. if (!(0 <= iGroup < MAX_GROUPS)) break;
  4774. cache_get_value_name(iIndex, "id", szResult, 24);
  4775. arrGroupJurisdictions[iGroup][arrGroupData[iGroup][g_iJCount]][g_iJurisdictionSQLId] = strval(szResult);
  4776. cache_get_value_name(iIndex, "AreaName", arrGroupJurisdictions[iGroup][arrGroupData[iGroup][g_iJCount]][g_iAreaName], 64);
  4777. arrGroupData[iGroup][g_iJCount]++;
  4778. iIndex++;
  4779. }
  4780. }
  4781. case GROUP_QUERY_GWEAPONS: while(iIndex < iRows) {
  4782. if (!(0 <= iIndex < MAX_GROUPS)) break;
  4783. cache_get_value_name_int(iIndex, "id", value);
  4784. LockerWep[iIndex][lwGroup] = value;
  4785. for(new w = 0; w < 46; w++) {
  4786. format(number, sizeof(number), "%d", w+1);
  4787. cache_get_value_name_int(iIndex, number, value);
  4788. LockerWep[iIndex][lwWep][w] = value;
  4789. }
  4790. iIndex++;
  4791. }
  4792. case GROUP_QUERY_GWEAPONS_RANK: while(iIndex < iRows) {
  4793. if (!(0 <= iIndex < MAX_GROUPS)) break;
  4794. for(new w = 0; w < 16; w++) {
  4795. format(number, sizeof(number), "%d", w+1);
  4796. cache_get_value_name_int(iIndex, number, value);
  4797. LockerWep[iIndex][lwRank][w] = value;
  4798. }
  4799. iIndex++;
  4800. }
  4801. case GROUP_QUERY_LOCKERS: while(iIndex < iRows) {
  4802. cache_get_value_name(iIndex, "Group_ID", szResult);
  4803. new iGroup = strval(szResult)-1;
  4804. cache_get_value_name(iIndex, "Locker_ID", szResult);
  4805. new iLocker = strval(szResult)-1;
  4806. if (!(0 <= iGroup < MAX_GROUPS)) break;
  4807. if (!(0 <= iLocker < MAX_GROUP_LOCKERS)) break;
  4808. cache_get_value_name(iIndex, "Id", szResult);
  4809. arrGroupLockers[iGroup][iLocker][g_iLockerSQLId] = strval(szResult);
  4810. cache_get_value_name(iIndex, "LockerX", szResult);
  4811. arrGroupLockers[iGroup][iLocker][g_fLockerPos][0] = floatstr(szResult);
  4812. cache_get_value_name(iIndex, "LockerY", szResult);
  4813. arrGroupLockers[iGroup][iLocker][g_fLockerPos][1] = floatstr(szResult);
  4814. cache_get_value_name(iIndex, "LockerZ", szResult);
  4815. arrGroupLockers[iGroup][iLocker][g_fLockerPos][2] = floatstr(szResult);
  4816. cache_get_value_name(iIndex, "LockerVW", szResult);
  4817. arrGroupLockers[iGroup][iLocker][g_iLockerVW] = strval(szResult);
  4818. cache_get_value_name(iIndex, "LockerShare", szResult);
  4819. arrGroupLockers[iGroup][iLocker][g_iLockerShare] = strval(szResult);
  4820. if(arrGroupLockers[iGroup][iLocker][g_fLockerPos][0] != 0.0)
  4821. {
  4822. format(szResult, sizeof szResult, "%s Locker\n{1FBDFF}Press ~k~~CONVERSATION_YES~ {FFFF00} to use\n ID: %i", arrGroupData[iGroup][g_szGroupName], arrGroupLockers[iGroup][iLocker]);
  4823. arrGroupLockers[iGroup][iLocker][g_tLocker3DLabel] = CreateDynamic3DTextLabel(szResult, arrGroupData[iGroup][g_hDutyColour] * 256 + 0xFF, arrGroupLockers[iGroup][iLocker][g_fLockerPos][0], arrGroupLockers[iGroup][iLocker][g_fLockerPos][1], arrGroupLockers[iGroup][iLocker][g_fLockerPos][2], 15.0, .testlos = 1, .worldid = arrGroupLockers[iGroup][iLocker][g_iLockerVW]);
  4824. arrGroupLockers[iGroup][iLocker][g_iLockerAreaID] = CreateDynamicSphere(arrGroupLockers[iGroup][iLocker][g_fLockerPos][0], arrGroupLockers[iGroup][iLocker][g_fLockerPos][1], arrGroupLockers[iGroup][iLocker][g_fLockerPos][2], 3.0, .worldid = arrGroupLockers[iGroup][iLocker][g_iLockerVW]);
  4825. printf("%d", arrGroupLockers[iGroup][iLocker][g_iLockerAreaID]);
  4826. // Streamer_SetIntData(STREAMER_TYPE_AREA, arrGroupLockers[iGroup][iLocker][g_iLockerAreaID], E_STREAMER_EXTRA_ID, iLocker);
  4827. }
  4828. iIndex++;
  4829. }
  4830. case GROUP_QUERY_LOAD: while(iIndex < iRows) {
  4831. MemberCount(iIndex);
  4832. cache_get_value_name(iIndex, "Name", arrGroupData[iIndex][g_szGroupName], GROUP_MAX_NAME_LEN);
  4833. cache_get_value_name(iIndex, "MOTD", gMOTD[iIndex][0], GROUP_MAX_MOTD_LEN);
  4834. cache_get_value_name(iIndex, "MOTD2", gMOTD[iIndex][1], GROUP_MAX_MOTD_LEN);
  4835. cache_get_value_name(iIndex, "MOTD3", gMOTD[iIndex][2], GROUP_MAX_MOTD_LEN);
  4836. cache_get_value_name_int(iIndex, "Type", arrGroupData[iIndex][g_iGroupType]);
  4837. cache_get_value_name_int(iIndex, "Allegiance", arrGroupData[iIndex][g_iAllegiance]);
  4838. cache_get_value_name_int(iIndex, "Bug", arrGroupData[iIndex][g_iBugAccess]);
  4839. cache_get_value_name_int(iIndex, "Find", arrGroupData[iIndex][g_iFindAccess]);
  4840. cache_get_value_name_int(iIndex, "RadioColour", arrGroupData[iIndex][g_hRadioColour]);
  4841. cache_get_value_name_int(iIndex, "Radio", arrGroupData[iIndex][g_iRadioAccess]);
  4842. cache_get_value_name_int(iIndex, "DeptRadio", arrGroupData[iIndex][g_iDeptRadioAccess]);
  4843. cache_get_value_name_int(iIndex, "IntRadio", arrGroupData[iIndex][g_iIntRadioAccess]);
  4844. cache_get_value_name_int(iIndex, "GovAnnouncement", arrGroupData[iIndex][g_iGovAccess]);
  4845. cache_get_value_name_int(iIndex, "TreasuryAccess", arrGroupData[iIndex][g_iTreasuryAccess]);
  4846. cache_get_value_name_int(iIndex, "FreeNameChange", arrGroupData[iIndex][g_iFreeNameChange]);
  4847. cache_get_value_name_int(iIndex, "FreeNameChangeDiv", arrGroupData[iIndex][g_iFreeNameChangeDiv]);
  4848. cache_get_value_name_int(iIndex, "Budget", arrGroupData[iIndex][g_iBudget]);
  4849. cache_get_value_name_int(iIndex, "BudgetPayment", arrGroupData[iIndex][g_iBudgetPayment]);
  4850. cache_get_value_name_int(iIndex, "SpikeStrips", arrGroupData[iIndex][g_iSpikeStrips]);
  4851. cache_get_value_name_int(iIndex, "Barricades", arrGroupData[iIndex][g_iBarricades]);
  4852. cache_get_value_name_int(iIndex, "Cones", arrGroupData[iIndex][g_iCones]);
  4853. cache_get_value_name_int(iIndex, "Flares", arrGroupData[iIndex][g_iFlares]);
  4854. cache_get_value_name_int(iIndex, "Barrels", arrGroupData[iIndex][g_iBarrels]);
  4855. cache_get_value_name_int(iIndex, "Ladders", arrGroupData[iIndex][g_iLadders]);
  4856. cache_get_value_name_int(iIndex, "Tapes", arrGroupData[iIndex][g_iTapes]);
  4857. cache_get_value_name_int(iIndex, "DutyColour", arrGroupData[iIndex][g_hDutyColour]);
  4858. cache_get_value_name_int(iIndex, "Stock", arrGroupData[iIndex][g_iLockerStock]);
  4859. cache_get_value_name_float(iIndex, "CrateX", arrGroupData[iIndex][g_fCratePos][0]);
  4860. cache_get_value_name_float(iIndex, "CrateY", arrGroupData[iIndex][g_fCratePos][1]);
  4861. cache_get_value_name_float(iIndex, "CrateZ", arrGroupData[iIndex][g_fCratePos][2]);
  4862. cache_get_value_name_int(iIndex, "LockerCostType", arrGroupData[iIndex][g_iLockerCostType]);
  4863. cache_get_value_name_int(iIndex, "CratesOrder", arrGroupData[iIndex][g_iCratesOrder]);
  4864. cache_get_value_name_int(iIndex, "CrateIsland", arrGroupData[iIndex][g_iCrateIsland]);
  4865. cache_get_value_name_float(iIndex, "GarageX", arrGroupData[iIndex][g_fGaragePos][0]);
  4866. cache_get_value_name_float(iIndex, "GarageY", arrGroupData[iIndex][g_fGaragePos][1]);
  4867. cache_get_value_name_float(iIndex, "GarageZ", arrGroupData[iIndex][g_fGaragePos][2]);
  4868. cache_get_value_name_int(iIndex, "TackleAccess", arrGroupData[iIndex][g_iTackleAccess]);
  4869. cache_get_value_name_int(iIndex, "WheelClamps", arrGroupData[iIndex][g_iWheelClamps]);
  4870. cache_get_value_name_int(iIndex, "DoCAccess", arrGroupData[iIndex][g_iDoCAccess]);
  4871. cache_get_value_name_int(iIndex, "MedicAccess", arrGroupData[iIndex][g_iMedicAccess]);
  4872. cache_get_value_name_int(iIndex, "DMVAccess", arrGroupData[iIndex][g_iDMVAccess]);
  4873. cache_get_value_name_int(iIndex, "TempNum", arrGroupData[iIndex][gTempNum]);
  4874. cache_get_value_name_int(iIndex, "LEOArrest", arrGroupData[iIndex][gLEOArrest]);
  4875. cache_get_value_name_int(iIndex, "OOCChat", arrGroupData[iIndex][g_iOOCChat]);
  4876. cache_get_value_name_int(iIndex, "OOCColor", arrGroupData[iIndex][g_hOOCColor]);
  4877. cache_get_value_name_int(iIndex, "Pot", arrGroupData[iIndex][g_iPot]);
  4878. cache_get_value_name_int(iIndex, "Crack", arrGroupData[iIndex][g_iCrack]);
  4879. cache_get_value_name_int(iIndex, "Meth", arrGroupData[iIndex][g_iMeth]);
  4880. cache_get_value_name_int(iIndex, "Ecstasy", arrGroupData[iIndex][g_iEcstasy]);
  4881. cache_get_value_name_int(iIndex, "Heroin", arrGroupData[iIndex][g_iHeroin]);
  4882. cache_get_value_name_int(iIndex, "Syringes", arrGroupData[iIndex][g_iSyringes]);
  4883. cache_get_value_name_int(iIndex, "Mats", arrGroupData[iIndex][g_iMaterials]);
  4884. cache_get_value_name_int(iIndex, "TurfCapRank", arrGroupData[iIndex][g_iTurfCapRank]);
  4885. cache_get_value_name_int(iIndex, "PointCapRank", arrGroupData[iIndex][g_iPointCapRank]);
  4886. cache_get_value_name_int(iIndex, "WithdrawRank", arrGroupData[iIndex][g_iWithdrawRank][0]);
  4887. cache_get_value_name_int(iIndex, "WithdrawRank2", arrGroupData[iIndex][g_iWithdrawRank][1]);
  4888. cache_get_value_name_int(iIndex, "WithdrawRank3", arrGroupData[iIndex][g_iWithdrawRank][2]);
  4889. cache_get_value_name_int(iIndex, "WithdrawRank4", arrGroupData[iIndex][g_iWithdrawRank][3]);
  4890. cache_get_value_name_int(iIndex, "WithdrawRank5", arrGroupData[iIndex][g_iWithdrawRank][4]);
  4891. cache_get_value_name_int(iIndex, "Tokens", arrGroupData[iIndex][g_iTurfTokens]);
  4892. cache_get_value_name_int(iIndex, "CrimeType", arrGroupData[iIndex][g_iCrimeType]);
  4893. cache_get_value_name_int(iIndex, "GroupToyID", arrGroupData[iIndex][g_iGroupToyID]);
  4894. cache_get_value_name(iIndex, "TurfTax", arrGroupData[iIndex][g_iTurfTax]);
  4895. for(i = 0; i < MAX_GROUP_RIVALS; ++i)
  4896. {
  4897. format(szResult, sizeof(szResult), "gRival%i", i);
  4898. cache_get_value_name_int(iIndex, szResult, arrGroupData[iIndex][g_iRivals][i]);
  4899. }
  4900. for(i = 0; i < MAX_GROUP_RANKS; ++i)
  4901. {
  4902. format(szResult, sizeof(szResult), "GClothes%i", i);
  4903. cache_get_value_name_int(iIndex, szResult, arrGroupData[iIndex][g_iClothes][i]);
  4904. }
  4905. i = 0;
  4906. while(i < MAX_GROUP_RANKS) {
  4907. format(szResult, sizeof szResult, "Rank%i", i);
  4908. cache_get_value_name(iIndex, szResult, arrGroupRanks[iIndex][i], GROUP_MAX_RANK_LEN);
  4909. format(szResult, sizeof szResult, "Rank%iPay", i);
  4910. cache_get_value_name(iIndex, szResult, szResult);
  4911. arrGroupData[iIndex][g_iPaycheck][i] = strval(szResult);
  4912. i++;
  4913. }
  4914. i = 0;
  4915. while(i < MAX_GROUP_DIVS) {
  4916. format(szResult, sizeof szResult, "Div%i", i + 1);
  4917. cache_get_value_name(iIndex, szResult, arrGroupDivisions[iIndex][i], GROUP_MAX_DIV_LEN);
  4918. i++;
  4919. }
  4920. i = 0;
  4921. while(i < MAX_GROUP_WEAPONS) {
  4922. format(szResult, sizeof szResult, "Gun%i", i + 1);
  4923. cache_get_value_name(iIndex, szResult, szResult);
  4924. arrGroupData[iIndex][g_iLockerGuns][i] = strval(szResult);
  4925. format(szResult, sizeof szResult, "Cost%i", i + 1);
  4926. cache_get_value_name(iIndex, szResult, szResult);
  4927. arrGroupData[iIndex][g_iLockerCost][i] = strval(szResult);
  4928. i++;
  4929. }
  4930. i = 0;
  4931. // Jingles' Drug System:
  4932. for(i = 0; i < sizeof(Drugs); ++i) cache_get_value_name_int(iIndex, GetDrugName(i), arrGroupData[iIndex][g_iDrugs][i]);
  4933. //for(i = 0; i < sizeof(szIngredients); ++i) arrGroupData[iIndex][g_iIngredients][i] = cache_get_value_name_int(iIndex, DS_Ingredients_GetSQLName(i));
  4934. i = 0;
  4935. if (arrGroupData[iIndex][g_szGroupName][0] && arrGroupData[iIndex][g_fCratePos][0] != 0.0)
  4936. {
  4937. /*
  4938. if(arrGroupData[iIndex][g_iGroupType] == GROUP_TYPE_CRIMINAL)
  4939. {
  4940. format(szResult, sizeof szResult, "%s Shipment Delivery Point\n{1FBDFF}/gdelivercrate", arrGroupData[iIndex][g_szGroupName]);
  4941. }
  4942. else
  4943. {
  4944. format(szResult, sizeof szResult, "%s Crate Delivery Point\n{1FBDFF}/delivercrate", arrGroupData[iIndex][g_szGroupName]);
  4945. }*/
  4946. format(szResult, sizeof szResult, "%s Crate Delivery Point\n{1FBDFF}/delivercrate", arrGroupData[iIndex][g_szGroupName]);
  4947. arrGroupData[iIndex][g_tCrate3DLabel] = CreateDynamic3DTextLabel(szResult, arrGroupData[iIndex][g_hDutyColour] * 256 + 0xFF, arrGroupData[iIndex][g_fCratePos][0], arrGroupData[iIndex][g_fCratePos][1], arrGroupData[iIndex][g_fCratePos][2], 10.0, .testlos = 1, .streamdistance = 20.0);
  4948. }
  4949. iIndex++;
  4950. }
  4951. case GROUP_QUERY_INVITE: if(GetPVarType(iExtraID, "Group_Invited")) {
  4952. if(!iRows) {
  4953. i = GetPVarInt(iExtraID, "Group_Invited");
  4954. iIndex = PlayerInfo[iExtraID][pMember];
  4955. format(szResult, sizeof szResult, "%s %s has offered you an invite to %s (type /accept group to join).", arrGroupRanks[iIndex][PlayerInfo[iExtraID][pRank]], GetPlayerNameEx(iExtraID), arrGroupData[iIndex][g_szGroupName]);
  4956. SendClientMessageEx(i, COLOR_LIGHTBLUE, szResult);
  4957. format(szResult, sizeof szResult, "You have offered %s to join %s.", GetPlayerNameEx(i), arrGroupData[iIndex][g_szGroupName]);
  4958. SendClientMessageEx(iExtraID, COLOR_LIGHTBLUE, szResult);
  4959. SetPVarInt(i, "Group_Inviter", iExtraID);
  4960. }
  4961. else {
  4962. SendClientMessage(iExtraID, COLOR_GREY, "That person is banned from joining this group.");
  4963. DeletePVar(iExtraID, "Group_Invited");
  4964. }
  4965. }
  4966. case GROUP_QUERY_ADDBAN: {
  4967. new string[128];
  4968. new otherplayer = GetPVarInt(iExtraID, "GroupBanningPlayer");
  4969. new group = GetPVarInt(iExtraID, "GroupBanningGroup");
  4970. format(string, sizeof(string), "You have group-banned %s from group %d.", GetPlayerNameEx(otherplayer), group);
  4971. SendClientMessageEx(iExtraID, COLOR_WHITE, string);
  4972. format(string, sizeof(string), "You have been group-banned, by %s.", GetPlayerNameEx(iExtraID));
  4973. SendClientMessageEx(otherplayer, COLOR_LIGHTBLUE, string);
  4974. format(string, sizeof(string), "Administrator %s has group-banned %s (%d) from %s (%d)", GetPlayerNameEx(iExtraID), GetPlayerNameEx(otherplayer), GetPlayerSQLId(otherplayer), arrGroupData[PlayerInfo[otherplayer][pMember]][g_szGroupName], PlayerInfo[otherplayer][pMember]);
  4975. GroupLog(PlayerInfo[otherplayer][pMember], string);
  4976. PlayerInfo[otherplayer][pMember] = INVALID_GROUP_ID;
  4977. PlayerInfo[otherplayer][pLeader] = INVALID_GROUP_ID;
  4978. PlayerInfo[otherplayer][pRank] = INVALID_RANK;
  4979. PlayerInfo[otherplayer][pDuty] = 0;
  4980. PlayerInfo[otherplayer][pDivision] = INVALID_DIVISION;
  4981. strcpy(PlayerInfo[otherplayer][pBadge], "None", 9);
  4982. new rand = random(sizeof(CIV));
  4983. PlayerInfo[otherplayer][pModel] = CIV[rand];
  4984. SetPlayerToTeamColor(otherplayer);
  4985. SetPlayerSkin(otherplayer, CIV[rand]);
  4986. OnPlayerStatsUpdate(otherplayer);
  4987. DeletePVar(iExtraID, "GroupBanningPlayer");
  4988. DeletePVar(iExtraID, "GroupBanningGroup");
  4989. }
  4990. case GROUP_QUERY_UNBAN: {
  4991. new string[128];
  4992. new otherplayer = GetPVarInt(iExtraID, "GroupUnBanningPlayer");
  4993. new group = GetPVarInt(iExtraID, "GroupUnBanningGroup");
  4994. if(cache_affected_rows())
  4995. {
  4996. format(string, sizeof(string), "You have group-unbanned %s from group %s (%d).", GetPlayerNameEx(otherplayer), arrGroupData[group][g_szGroupName], group);
  4997. SendClientMessageEx(iExtraID, COLOR_WHITE, string);
  4998. format(string, sizeof(string), "You have been group-unbanned from %s, by %s.", arrGroupData[group][g_szGroupName], GetPlayerNameEx(iExtraID));
  4999. SendClientMessageEx(otherplayer, COLOR_LIGHTBLUE, string);
  5000. format(string, sizeof(string), "Administrator %s has group-unbanned %s (%d) from %s (%d)", GetPlayerNameEx(iExtraID), GetPlayerNameEx(otherplayer), GetPlayerSQLId(otherplayer), arrGroupData[group][g_szGroupName], group);
  5001. GroupLog(group, string);
  5002. }
  5003. else
  5004. {
  5005. format(string, sizeof(string), "There was an issue group-unbanning %s from %s (%d)", GetPlayerNameEx(otherplayer), arrGroupData[group][g_szGroupName], group);
  5006. SendClientMessageEx(iExtraID, COLOR_WHITE, string);
  5007. }
  5008. DeletePVar(iExtraID, "GroupUnBanningPlayer");
  5009. DeletePVar(iExtraID, "GroupUnBanningGroup");
  5010. }
  5011. case GROUP_QUERY_UNCHECK: if(GetPVarType(iExtraID, "Group_Uninv")) {
  5012. if(iRows) {
  5013. cache_get_value_name(0, "Member", szResult, MAX_PLAYER_NAME);
  5014. if(strval(szResult) == PlayerInfo[iExtraID][pMember]) {
  5015. cache_get_value_name(0, "Rank", szResult);
  5016. if(PlayerInfo[iExtraID][pRank] > strval(szResult) || PlayerInfo[iExtraID][pRank] >= Group_GetMaxRank(PlayerInfo[iExtraID][pMember])) {
  5017. cache_get_value_name(0, "id", szResult);
  5018. mysql_format(MainPipeline, szResult, sizeof szResult, "UPDATE `accounts` SET `Model` = "#NOOB_SKIN", `Member` = "#INVALID_GROUP_ID", `Rank` = "#INVALID_RANK", `Leader` = "#INVALID_GROUP_ID", `Division` = -1 WHERE `id` = %i", strval(szResult));
  5019. mysql_tquery(MainPipeline, szResult, "Group_QueryFinish", "ii", GROUP_QUERY_UNINVITE, iExtraID);
  5020. }
  5021. else SendClientMessage(iExtraID, COLOR_GREY, "You can't do this to a person of equal or higher rank.");
  5022. }
  5023. else SendClientMessage(iExtraID, COLOR_GREY, "That person is not in your group.");
  5024. }
  5025. else {
  5026. SendClientMessage(iExtraID, COLOR_GREY, "That account does not exist.");
  5027. DeletePVar(iExtraID, "Group_Uninv");
  5028. }
  5029. }
  5030. case GROUP_QUERY_UNINVITE: if(GetPVarType(iExtraID, "Group_Uninv")) {
  5031. new
  5032. szName[MAX_PLAYER_NAME],
  5033. iGroupID = PlayerInfo[iExtraID][pMember];
  5034. GetPVarString(iExtraID, "Group_Uninv", szName, sizeof szName);
  5035. if(cache_affected_rows()) {
  5036. i = PlayerInfo[iExtraID][pRank];
  5037. format(szResult, sizeof szResult, "You have successfully removed %s from your group.", szName);
  5038. SendClientMessage(iExtraID, COLOR_GREY, szResult);
  5039. format(szResult, sizeof szResult, "%s %s (rank %i) has offline uninvited %s from %s (%i).", arrGroupRanks[iGroupID][i], GetPlayerNameEx(iExtraID), i + 1, szName, arrGroupData[iGroupID][g_szGroupName], iGroupID + 1);
  5040. GroupLog(iGroupID, szResult);
  5041. }
  5042. else {
  5043. format(szResult, sizeof szResult, "An error was encountered while attempting to remove %s from your group.", szName);
  5044. SendClientMessage(iExtraID, COLOR_GREY, szResult);
  5045. }
  5046. DeletePVar(iExtraID, "Group_Uninv");
  5047. }
  5048. }
  5049. }
  5050. forward Jurisdiction_RehashFinish(iGroup);
  5051. public Jurisdiction_RehashFinish(iGroup) {
  5052. new
  5053. iRows,
  5054. iIndex,
  5055. szResult[128];
  5056. cache_get_row_count(iRows);
  5057. while(iIndex < iRows)
  5058. {
  5059. new iGroupID;
  5060. arrGroupData[iGroup][g_iJCount] = iRows;
  5061. if(arrGroupData[iGroup][g_iJCount] > MAX_GROUP_JURISDICTIONS) {
  5062. arrGroupData[iGroup][g_iJCount] = MAX_GROUP_JURISDICTIONS;
  5063. }
  5064. cache_get_value_name(iIndex, "GroupID", szResult, 24);
  5065. iGroupID = strval(szResult);
  5066. if(iGroupID == iGroup)
  5067. {
  5068. cache_get_value_name(iIndex, "id", szResult, 64);
  5069. arrGroupJurisdictions[iGroup][iIndex][g_iJurisdictionSQLId] = strval(szResult);
  5070. cache_get_value_name(iIndex, "AreaName", arrGroupJurisdictions[iGroup][iIndex][g_iAreaName], 64);
  5071. }
  5072. iIndex++;
  5073. }
  5074. }
  5075. forward AuctionLoadQuery();
  5076. public AuctionLoadQuery() {
  5077. new
  5078. iRows,
  5079. iIndex,
  5080. szResult[128];
  5081. cache_get_row_count(iRows);
  5082. while((iIndex < iRows)) {
  5083. cache_get_value_name(iIndex, "BiddingFor", Auctions[iIndex][BiddingFor], 64);
  5084. cache_get_value_name(iIndex, "InProgress", szResult); Auctions[iIndex][InProgress] = strval(szResult);
  5085. cache_get_value_name(iIndex, "Bid", szResult); Auctions[iIndex][Bid] = strval(szResult);
  5086. cache_get_value_name(iIndex, "Bidder", szResult); Auctions[iIndex][Bidder] = strval(szResult);
  5087. cache_get_value_name(iIndex, "Expires", szResult); Auctions[iIndex][Expires] = strval(szResult);
  5088. cache_get_value_name(iIndex, "Wining", Auctions[iIndex][Wining], MAX_PLAYER_NAME);
  5089. cache_get_value_name(iIndex, "Increment", szResult); Auctions[iIndex][Increment] = strval(szResult);
  5090. if(Auctions[iIndex][InProgress] == 1 && Auctions[iIndex][Expires] != 0)
  5091. {
  5092. Auctions[iIndex][Timer] = SetTimerEx("EndAuction", 60000, true, "i", iIndex);
  5093. printf("[auction - %i - started] %s, %d, %d, %d, %d, %s, %d",iIndex, Auctions[iIndex][BiddingFor],Auctions[iIndex][InProgress],Auctions[iIndex][Bid],Auctions[iIndex][Bidder],Auctions[iIndex][Expires],Auctions[iIndex][Wining],Auctions[iIndex][Increment]);
  5094. }
  5095. iIndex++;
  5096. }
  5097. return 1;
  5098. }
  5099. forward ReturnMoney(index);
  5100. public ReturnMoney(index)
  5101. {
  5102. if(IsPlayerConnected(index))
  5103. {
  5104. new
  5105. AuctionItem = GetPVarInt(index, "AuctionItem");
  5106. new money[15], money2, string[128];
  5107. new rows;
  5108. cache_get_row_count(rows);
  5109. if(rows)
  5110. {
  5111. cache_get_value_name(0, "Money", money); money2 = strval(money);
  5112. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `accounts` SET `Money` = %d WHERE `id` = '%d'", money2+Auctions[AuctionItem][Bid], Auctions[AuctionItem][Bidder]);
  5113. mysql_tquery(MainPipeline, string, "OnQueryFinish", "i", SENDDATA_THREAD);
  5114. format(string, sizeof(string), "Amount of $%d (Before: %i | After: %i) has been returned to (id: %i) for being outbid", Auctions[AuctionItem][Bid], money2,Auctions[AuctionItem][Bid]+money2, Auctions[AuctionItem][Bidder]);
  5115. Log("logs/auction.log", string);
  5116. GivePlayerCash(index, -GetPVarInt(index, "BidPlaced"));
  5117. Auctions[AuctionItem][Bid] = GetPVarInt(index, "BidPlaced");
  5118. Auctions[AuctionItem][Bidder] = GetPlayerSQLId(index);
  5119. strcpy(Auctions[AuctionItem][Wining], GetPlayerNameExt(index), MAX_PLAYER_NAME);
  5120. format(string, sizeof(string), "You have placed a bid of %i on %s.", GetPVarInt(index, "BidPlaced"), Auctions[AuctionItem][BiddingFor]);
  5121. SendClientMessageEx(index, COLOR_WHITE, string);
  5122. format(string, sizeof(string), "%s(%d) (IP:%s) has placed a bid of %i on %s(%i)", GetPlayerNameEx(index), GetPlayerSQLId(index), GetPlayerIpEx(index), GetPVarInt(index, "BidPlaced"), Auctions[AuctionItem][BiddingFor], AuctionItem);
  5123. Log("logs/auction.log", string);
  5124. SaveAuction(AuctionItem);
  5125. DeletePVar(index, "BidPlaced");
  5126. DeletePVar(index, "AuctionItem");
  5127. }
  5128. else
  5129. {
  5130. printf("[AuctionError] id: %i | money %i", Auctions[AuctionItem][Bidder], Auctions[AuctionItem][Bid]);
  5131. }
  5132. }
  5133. return 1;
  5134. }
  5135. forward OnQueryCreateVehicle(playerid, playervehicleid);
  5136. public OnQueryCreateVehicle(playerid, playervehicleid)
  5137. {
  5138. PlayerVehicleInfo[playerid][playervehicleid][pvSlotId] = cache_insert_id();
  5139. printf("VNumber: %d", PlayerVehicleInfo[playerid][playervehicleid][pvSlotId]);
  5140. new string[128];
  5141. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `vehicles` SET `pvModelId` = %d WHERE `id` = %d", PlayerVehicleInfo[playerid][playervehicleid][pvModelId], PlayerVehicleInfo[playerid][playervehicleid][pvSlotId]);
  5142. mysql_tquery(MainPipeline, string, "OnQueryFinish", "i", SENDDATA_THREAD);
  5143. g_mysql_SaveVehicle(playerid, playervehicleid);
  5144. }
  5145. forward CheckAccounts(playerid);
  5146. public CheckAccounts(playerid)
  5147. {
  5148. if(IsPlayerConnected(playerid))
  5149. {
  5150. new szString[128];
  5151. new rows;
  5152. cache_get_row_count(rows);
  5153. if(rows)
  5154. {
  5155. format(szString, sizeof(szString), "{AA3333}AdmWarning{FFFF00}: Moderator %s has logged into the server with s0beit installed.", GetPlayerNameEx(playerid));
  5156. ABroadCast(COLOR_YELLOW, szString, 2);
  5157. format(szString, sizeof(szString), "Admin %s(%d) (IP: %s) has logged into the server with s0beit installed.", GetPlayerNameEx(playerid), GetPlayerSQLId(playerid), GetPlayerIpEx(playerid));
  5158. Log("logs/sobeit.log", szString);
  5159. sobeitCheckvar[playerid] = 1;
  5160. sobeitCheckIsDone[playerid] = 1;
  5161. IsPlayerFrozen[playerid] = 0;
  5162. }
  5163. else
  5164. {
  5165. mysql_format(MainPipeline, szString, sizeof(szString), "INSERT INTO `sobeitkicks` (sqlID, Kicks) VALUES (%d, 1) ON DUPLICATE KEY UPDATE Kicks = Kicks + 1", GetPlayerSQLId(playerid));
  5166. mysql_tquery(MainPipeline, szString, "OnQueryFinish", "ii", SENDDATA_THREAD, playerid);
  5167. SendClientMessageEx(playerid, COLOR_RED, "The hacking tool 's0beit' is not allowed on this server, please uninstall it.");
  5168. format(szString, sizeof(szString), "%s(%d) (IP: %s) has logged into the server with s0beit installed.", GetPlayerNameEx(playerid), GetPlayerSQLId(playerid), GetPlayerIpEx(playerid));
  5169. Log("logs/sobeit.log", szString);
  5170. sobeitCheckvar[playerid] = 1;
  5171. sobeitCheckIsDone[playerid] = 1;
  5172. IsPlayerFrozen[playerid] = 0;
  5173. SetTimerEx("KickEx", 1000, 0, "i", playerid);
  5174. }
  5175. }
  5176. return 1;
  5177. }
  5178. forward ReferralSecurity(playerid);
  5179. public ReferralSecurity(playerid)
  5180. {
  5181. new newrows, newresult[16], currentIP[16];
  5182. GetPlayerIp(playerid, currentIP, sizeof(currentIP));
  5183. cache_get_row_count(newrows);
  5184. if(newrows > 0)
  5185. {
  5186. cache_get_value_name(0, "IP", newresult);
  5187. if(!strcmp(newresult, currentIP, true))
  5188. {
  5189. format(szMiscArray, sizeof(szMiscArray), "Nobody");
  5190. strmid(PlayerInfo[playerid][pReferredBy], szMiscArray, 0, strlen(szMiscArray), MAX_PLAYER_NAME);
  5191. ShowPlayerDialogEx(playerid, DIALOG_REGISTER_REFERRED, DIALOG_STYLE_INPUT, "{FF0000}Error", "This person has the same IP as you.\nPlease choose another player that is not on your network.\n\nIf you haven't been referred, press 'Skip'.\n\nExample: FirstName_LastName (20 Characters Max)", "Enter", "Skip");
  5192. }
  5193. else {
  5194. format(szMiscArray, sizeof(szMiscArray), " %s(%d) (IP:%s) has been referred by (Referred Account: %s (IP:%s))", GetPlayerNameEx(playerid), GetPlayerSQLId(playerid), currentIP, PlayerInfo[playerid][pReferredBy], newresult);
  5195. Log("logs/referral.log", szMiscArray);
  5196. RegistrationStep[playerid] = 3;
  5197. SetPlayerVirtualWorld(playerid, 0);
  5198. ClearChatbox(playerid);
  5199. SendClientMessageEx(playerid, COLOR_LIGHTBLUE, "Thanks for filling in all the information!");
  5200. PlayerInfo[playerid][pTut] = 14;
  5201. AdvanceTutorial(playerid);
  5202. }
  5203. }
  5204. return 1;
  5205. }
  5206. forward OnQueryCreateToy(playerid, toyslot);
  5207. public OnQueryCreateToy(playerid, toyslot)
  5208. {
  5209. PlayerToyInfo[playerid][toyslot][ptID] = cache_insert_id();
  5210. printf("Toy ID: %d", PlayerToyInfo[playerid][toyslot][ptID]);
  5211. new szQuery[128];
  5212. mysql_format(MainPipeline, szQuery, sizeof(szQuery), "UPDATE `toys` SET `modelid` = '%d' WHERE `id` = '%d'", PlayerToyInfo[playerid][toyslot][ptID], PlayerToyInfo[playerid][toyslot][ptModelID]);
  5213. mysql_tquery(MainPipeline, szQuery, "OnQueryFinish", "i", SENDDATA_THREAD);
  5214. g_mysql_SaveToys(playerid, toyslot);
  5215. }
  5216. forward OnStaffAccountCheck(playerid);
  5217. public OnStaffAccountCheck(playerid)
  5218. {
  5219. new string[156], rows;
  5220. cache_get_row_count(rows);
  5221. if(rows > 0)
  5222. {
  5223. format(string, sizeof(string), "{AA3333}AdmWarning{FFFF00}: %s (ID: %d) was punished and has a staff account associated with their IP address.", GetPlayerNameEx(playerid), playerid);
  5224. ABroadCast(COLOR_YELLOW, string, 2);
  5225. }
  5226. return 1;
  5227. }
  5228. // Relay For Life
  5229. stock LoadRelayForLifeTeam(teamid)
  5230. {
  5231. new string[128];
  5232. mysql_format(MainPipeline, string, sizeof(string), "SELECT * FROM `rflteams` WHERE `id`=%d", teamid);
  5233. mysql_tquery(MainPipeline, string, "OnLoadRFLTeam", "i", mapiconid);
  5234. }
  5235. stock LoadRelayForLifeTeams()
  5236. {
  5237. printf("[LoadRelayForLifeTeams] Loading data from database...");
  5238. mysql_tquery(MainPipeline, "SELECT * FROM `rflteams`", "OnLoadRFLTeams", "");
  5239. }
  5240. forward OnLoadRFLTeams();
  5241. public OnLoadRFLTeams()
  5242. {
  5243. new i, rows, tmp[128];
  5244. cache_get_row_count(rows);
  5245. while(i < rows)
  5246. {
  5247. cache_get_value_name(i, "id", tmp); RFLInfo[i][RFLsqlid] = strval(tmp);
  5248. cache_get_value_name(i, "name", RFLInfo[i][RFLname]);
  5249. cache_get_value_name(i, "leader", RFLInfo[i][RFLleader]);
  5250. cache_get_value_name(i, "used", tmp); RFLInfo[i][RFLused] = strval(tmp);
  5251. cache_get_value_name(i, "members", tmp); RFLInfo[i][RFLmembers] = strval(tmp);
  5252. cache_get_value_name(i, "laps", tmp); RFLInfo[i][RFLlaps] = strval(tmp);
  5253. i++;
  5254. }
  5255. if(i > 0) printf("[LoadRelayForLifeTeams] %d teams loaded.", i);
  5256. else printf("[LoadRelayForLifeTeams] Failed to load any teams.");
  5257. return 1;
  5258. }
  5259. forward OnLoadRFLTeam(index);
  5260. public OnLoadRFLTeam(index)
  5261. {
  5262. new rows, tmp[128];
  5263. cache_get_row_count(rows);
  5264. for(new row; row < rows; row++)
  5265. {
  5266. cache_get_value_name(row, "id", tmp); RFLInfo[index][RFLsqlid] = strval(tmp);
  5267. cache_get_value_name(row, "name", RFLInfo[index][RFLname]);
  5268. cache_get_value_name(row, "leader", RFLInfo[index][RFLleader]);
  5269. cache_get_value_name(row, "used", tmp); RFLInfo[index][RFLused] = strval(tmp);
  5270. cache_get_value_name(row, "members", tmp); RFLInfo[index][RFLmembers] = strval(tmp);
  5271. cache_get_value_name(row, "laps", tmp); RFLInfo[index][RFLlaps] = strval(tmp);
  5272. }
  5273. }
  5274. stock SaveRelayForLifeTeam(teamid)
  5275. {
  5276. new string[248];
  5277. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `rflteams` SET `name`='%s', `leader`='%s', `used`=%d, `members`=%d, `laps`=%d WHERE id=%d",
  5278. RFLInfo[teamid][RFLname],
  5279. RFLInfo[teamid][RFLleader],
  5280. RFLInfo[teamid][RFLused],
  5281. RFLInfo[teamid][RFLmembers],
  5282. RFLInfo[teamid][RFLlaps],
  5283. RFLInfo[teamid][RFLsqlid]
  5284. );
  5285. mysql_tquery(MainPipeline, string, "OnQueryFinish", "i", SENDDATA_THREAD);
  5286. }
  5287. stock SaveRelayForLifeTeams()
  5288. {
  5289. for(new i = 0; i < MAX_RFLTEAMS; i++)
  5290. {
  5291. SaveRelayForLifeTeam(i);
  5292. }
  5293. }
  5294. forward OnRFLPScore(index, id);
  5295. public OnRFLPScore(index, id)
  5296. {
  5297. new i, rows, string[1500], tmp[7], name[25], leader[25], laps;
  5298. cache_get_row_count(rows);
  5299. switch(id) {
  5300. case 1: {
  5301. while(i < rows)
  5302. {
  5303. cache_get_value_name(i, "name", name);
  5304. cache_get_value_name(i, "leader", leader);
  5305. cache_get_value_name(i, "laps", tmp); laps = strval(tmp);
  5306. format(string, sizeof(string), "%s\nTeam: %s | Leader: %s | Laps: %d",string, name, leader, laps);
  5307. i++;
  5308. }
  5309. if(i < 1) {
  5310. DeletePVar(index, "rflTemp");
  5311. SendClientMessageEx(index, COLOR_GREY, "No teams found.");
  5312. return 1;
  5313. }
  5314. if(i >= 15) {
  5315. SetPVarInt(index, "rflTemp", GetPVarInt(index, "rflTemp") + i);
  5316. ShowPlayerDialogEx(index, DIALOG_RFL_TEAMS, DIALOG_STYLE_LIST, "Relay For Life Teams", string, "Next", "Close");
  5317. return 1;
  5318. }
  5319. else
  5320. {
  5321. DeletePVar(index, "rflTemp");
  5322. ShowPlayerDialogEx(index, DIALOG_RFL_TEAMS, DIALOG_STYLE_LIST, "Relay For Life Teams", string, "Close", "");
  5323. return 1;
  5324. }
  5325. }
  5326. case 2: {
  5327. while(i < rows)
  5328. {
  5329. cache_get_value_name(i, "Username", name);
  5330. cache_get_value_name(i, "RacePlayerLaps", tmp); laps = strval(tmp);
  5331. format(string, sizeof(string), "%s\n%s | Laps: %d",string, name, laps);
  5332. i++;
  5333. }
  5334. if(i > 0) {
  5335. ShowPlayerDialogEx(index, DIALOG_RFL_PLAYERS, DIALOG_STYLE_LIST, "Relay For Life Player Top 25", string, "Close", "");
  5336. }
  5337. else {
  5338. SendClientMessageEx(index, COLOR_GREY, "No player has run any laps yet.");
  5339. }
  5340. }
  5341. }
  5342. return 1;
  5343. }
  5344. forward OnCheckRFLName(playerid, Player);
  5345. public OnCheckRFLName(playerid, Player)
  5346. {
  5347. if(IsPlayerConnected(Player))
  5348. {
  5349. if(cache_affected_rows())
  5350. {
  5351. SendClientMessageEx(Player, COLOR_YELLOW, "This team name already exists.");
  5352. SendClientMessageEx(playerid, COLOR_YELLOW, "This team name already exists.");
  5353. }
  5354. else
  5355. {
  5356. new newname[25], string[128];
  5357. GetPVarString(Player, "NewRFLName", newname, sizeof(newname));
  5358. format(RFLInfo[PlayerInfo[Player][pRFLTeam]][RFLname], 25, "%s", newname);
  5359. format(string, sizeof(string), "* Your team name has been changed to %s.", newname);
  5360. SendClientMessageEx(Player, COLOR_YELLOW, string);
  5361. format(string, sizeof(string), "* You have changed %s's team name to %s.", GetPlayerNameEx(playerid), newname);
  5362. SendClientMessageEx(playerid, COLOR_YELLOW, string);
  5363. format(string, sizeof(string), "%s has accepted %s's team name change request",GetPlayerNameEx(playerid),GetPlayerNameEx(Player));
  5364. ABroadCast(COLOR_YELLOW, string, 3);
  5365. SaveRelayForLifeTeam(PlayerInfo[Player][pRFLTeam]);
  5366. foreach(new i: Player)
  5367. {
  5368. if( GetPVarInt( i, "EventToken" ) == 1 ) {
  5369. if( EventKernel[ EventStatus ] == 1 || EventKernel[ EventStatus ] == 2 ) {
  5370. if(EventKernel[EventType] == 3) {
  5371. if(PlayerInfo[i][pRFLTeam] == PlayerInfo[Player][pRFLTeam]) {
  5372. format(string, sizeof(string), "Team: %s", newname);
  5373. UpdateDynamic3DTextLabelText(RFLTeamN3D[i], 0x008080FF, string);
  5374. }
  5375. }
  5376. }
  5377. }
  5378. }
  5379. }
  5380. }
  5381. else
  5382. {
  5383. SendClientMessageEx(playerid, COLOR_GREY, "This user has logged off.");
  5384. }
  5385. DeletePVar(Player, "RFLNameRequest");
  5386. DeletePVar(playerid, "RFLNameChange");
  5387. DeletePVar(Player, "NewRFLName");
  5388. return 1;
  5389. }
  5390. stock GetPartnerName(playerid)
  5391. {
  5392. if(PlayerInfo[playerid][pMarriedID] == -1) format(PlayerInfo[playerid][pMarriedName], MAX_PLAYER_NAME, "Nobody");
  5393. else
  5394. {
  5395. new query[128];
  5396. mysql_format(MainPipeline, query, sizeof(query), "SELECT `Username` FROM `accounts` WHERE `id` = %d", PlayerInfo[playerid][pMarriedID]);
  5397. mysql_tquery(MainPipeline, query, "OnGetPartnerName", "i", playerid);
  5398. }
  5399. }
  5400. forward OnGetPartnerName(playerid);
  5401. public OnGetPartnerName(playerid)
  5402. {
  5403. new rows, index;
  5404. cache_get_row_count(rows);
  5405. cache_get_value_name(index, "Username", PlayerInfo[playerid][pMarriedName], MAX_PLAYER_NAME);
  5406. return 1;
  5407. }
  5408. forward OnStaffPrize(playerid);
  5409. public OnStaffPrize(playerid)
  5410. {
  5411. if(cache_affected_rows())
  5412. {
  5413. new type[32], name[MAX_PLAYER_NAME], amount, string[128];
  5414. GetPVarString(playerid, "OnSPrizeType", type, 16);
  5415. GetPVarString(playerid, "OnSPrizeName", name, 24);
  5416. amount = GetPVarInt(playerid, "OnSPrizeAmount");
  5417. format(string, sizeof(string), "AdmCmd: %s has offline-given %s %d free %s.", GetPlayerNameEx(playerid), name, amount, type);
  5418. ABroadCast(COLOR_LIGHTRED, string, 2);
  5419. format(string, sizeof(string), "You have given %s %d %s.", name, amount, type);
  5420. SendClientMessageEx(playerid, COLOR_LIGHTBLUE, string);
  5421. format(string, sizeof(string), "[Admin] %s(IP:%s) has offline-given %s %d free %s.", GetPlayerNameEx(playerid), GetPlayerIpEx(playerid), name, amount, type);
  5422. Log("logs/adminrewards.log", string);
  5423. }
  5424. else
  5425. {
  5426. SendClientMessageEx(playerid, COLOR_RED, "Failed to give the prize..");
  5427. }
  5428. DeletePVar(playerid, "OnSPrizeType");
  5429. DeletePVar(playerid, "OnSPrizeName");
  5430. DeletePVar(playerid, "OnSPrizeAmount");
  5431. return 1;
  5432. }
  5433. stock AddNewBackpack(id)
  5434. {
  5435. new string[1024];
  5436. mysql_format(MainPipeline, string, sizeof(string), "INSERT into `hgbackpacks` (type, posx, posy, posz) VALUES ('%d', '%f', '%f', '%f')",
  5437. HungerBackpackInfo[id][hgBackpackType],
  5438. HungerBackpackInfo[id][hgBackpackPos][0],
  5439. HungerBackpackInfo[id][hgBackpackPos][1],
  5440. HungerBackpackInfo[id][hgBackpackPos][2]);
  5441. mysql_tquery(MainPipeline, string, "OnQueryFinish", "i", SENDDATA_THREAD);
  5442. }
  5443. stock SaveHGBackpack(id)
  5444. {
  5445. new string[1024];
  5446. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `hgbackpacks` SET \
  5447. `type` = %d, \
  5448. `posx` = %f,\
  5449. `posy` = %f,\
  5450. `posz` = %f WHERE `id` = %d",
  5451. HungerBackpackInfo[id][hgBackpackType],
  5452. HungerBackpackInfo[id][hgBackpackPos][0],
  5453. HungerBackpackInfo[id][hgBackpackPos][1],
  5454. HungerBackpackInfo[id][hgBackpackPos][2],
  5455. id
  5456. );
  5457. mysql_tquery(MainPipeline, string, "OnQueryFinish", "i", SENDDATA_THREAD);
  5458. }
  5459. forward OnLoadHGBackpacks();
  5460. public OnLoadHGBackpacks()
  5461. {
  5462. new rows, index, result[128], string[128];
  5463. cache_get_row_count(rows);
  5464. while((index < rows))
  5465. {
  5466. cache_get_value_name(index, "id", result); HungerBackpackInfo[index][hgBackpackId] = strval(result);
  5467. cache_get_value_name(index, "type", result); HungerBackpackInfo[index][hgBackpackType] = strval(result);
  5468. cache_get_value_name(index, "posx", result); HungerBackpackInfo[index][hgBackpackPos][0] = floatstr(result);
  5469. cache_get_value_name(index, "posy", result); HungerBackpackInfo[index][hgBackpackPos][1] = floatstr(result);
  5470. cache_get_value_name(index, "posz", result); HungerBackpackInfo[index][hgBackpackPos][2] = floatstr(result);
  5471. HungerBackpackInfo[index][hgActiveEx] = 1;
  5472. HungerBackpackInfo[index][hgBackpackPickupId] = CreateDynamicPickup(371, 23, HungerBackpackInfo[index][hgBackpackPos][0], HungerBackpackInfo[index][hgBackpackPos][1], HungerBackpackInfo[index][hgBackpackPos][2], 2039);
  5473. format(string, sizeof(string), "Hunger Games Backpack\nType: %s\n{FF0000}(ID: %d){FFFFFF}", GetHungerBackpackName(index), index);
  5474. HungerBackpackInfo[index][hgBackpack3DText] = CreateDynamic3DTextLabel(string, COLOR_ORANGE, HungerBackpackInfo[index][hgBackpackPos][0], HungerBackpackInfo[index][hgBackpackPos][1], HungerBackpackInfo[index][hgBackpackPos][2]+1, 20.0, .worldid = 2039, .interiorid = 0);
  5475. index++;
  5476. }
  5477. hgBackpackCount = index;
  5478. if(index == 0) print("[Hunger Games] No Backpack has been loaded.");
  5479. if(index != 0) printf("[Hunger Games] %d Backpacks has been loaded.", index);
  5480. return true;
  5481. }
  5482. forward ExecuteShopQueue(playerid, id);
  5483. public ExecuteShopQueue(playerid, id)
  5484. {
  5485. new rows, index, result[128], string[128], query[128], tmp[8];
  5486. switch(id)
  5487. {
  5488. case 0:
  5489. {
  5490. cache_get_row_count(rows);
  5491. if(IsPlayerConnected(playerid))
  5492. {
  5493. while(index < rows)
  5494. {
  5495. cache_get_value_name(index, "id", result); tmp[0] = strval(result);
  5496. cache_get_value_name(index, "GiftVoucher", result); tmp[1] = strval(result);
  5497. cache_get_value_name(index, "CarVoucher", result); tmp[2] = strval(result);
  5498. cache_get_value_name(index, "VehVoucher", result); tmp[3] = strval(result);
  5499. cache_get_value_name(index, "SVIPVoucher", result); tmp[4] = strval(result);
  5500. cache_get_value_name(index, "GVIPVoucher", result); tmp[5] = strval(result);
  5501. cache_get_value_name(index, "PVIPVoucher", result); tmp[6] = strval(result);
  5502. cache_get_value_name(index, "credits_spent", result); tmp[7] = strval(result);
  5503. if(tmp[1] > 0)
  5504. {
  5505. PlayerInfo[playerid][pGiftVoucher] += tmp[1];
  5506. format(string, sizeof(string), "You have been automatically issued %d gift reset voucher(s).", tmp[1]);
  5507. SendClientMessageEx(playerid, COLOR_WHITE, string);
  5508. format(string, sizeof(string), "[ID: %d] %s(%d) was automatically issued %d gift reset voucher(s)", tmp[0], GetPlayerNameEx(playerid), GetPlayerSQLId(playerid), tmp[1]);
  5509. Log("logs/shoplog.log", string);
  5510. }
  5511. if(tmp[2] > 0)
  5512. {
  5513. PlayerInfo[playerid][pCarVoucher] += tmp[2];
  5514. format(string, sizeof(string), "You have been automatically issued %d restricted car voucher(s).", tmp[2]);
  5515. SendClientMessageEx(playerid, COLOR_WHITE, string);
  5516. format(string, sizeof(string), "[ID: %d] %s(%d) was automatically issued %d restricted car voucher(s)", tmp[0], GetPlayerNameEx(playerid), GetPlayerSQLId(playerid), tmp[2]);
  5517. Log("logs/shoplog.log", string);
  5518. }
  5519. if(tmp[3] > 0)
  5520. {
  5521. PlayerInfo[playerid][pVehVoucher] += tmp[3];
  5522. format(string, sizeof(string), "You have been automatically issued %d car voucher(s).", tmp[3]);
  5523. SendClientMessageEx(playerid, COLOR_WHITE, string);
  5524. format(string, sizeof(string), "[ID: %d] %s(%d) was automatically issued %d car voucher(s)", tmp[0], GetPlayerNameEx(playerid), GetPlayerSQLId(playerid), tmp[3]);
  5525. Log("logs/shoplog.log", string);
  5526. }
  5527. if(tmp[4] > 0)
  5528. {
  5529. PlayerInfo[playerid][pSVIPVoucher] += tmp[4];
  5530. format(string, sizeof(string), "You have been automatically issued %d Silver VIP voucher(s).", tmp[4]);
  5531. SendClientMessageEx(playerid, COLOR_WHITE, string);
  5532. format(string, sizeof(string), "[ID: %d] %s(%d) was automatically issued %d Silver VIP voucher(s)", tmp[0], GetPlayerNameEx(playerid), GetPlayerSQLId(playerid), tmp[4]);
  5533. Log("logs/shoplog.log", string);
  5534. }
  5535. if(tmp[5] > 0)
  5536. {
  5537. PlayerInfo[playerid][pGVIPVoucher] += tmp[5];
  5538. format(string, sizeof(string), "You have been automatically issued %d Gold VIP voucher(s).", tmp[5]);
  5539. SendClientMessageEx(playerid, COLOR_WHITE, string);
  5540. format(string, sizeof(string), "[ID: %d] %s(%d) was automatically issued %d Gold VIP voucher(s)", tmp[0], GetPlayerNameEx(playerid), GetPlayerSQLId(playerid), tmp[5]);
  5541. Log("logs/shoplog.log", string);
  5542. }
  5543. if(tmp[6] > 0)
  5544. {
  5545. PlayerInfo[playerid][pPVIPVoucher] += tmp[6];
  5546. format(string, sizeof(string), "You have been automatically issued %d 1 month PVIP Voucher(s).", tmp[6]);
  5547. SendClientMessageEx(playerid, COLOR_WHITE, string);
  5548. format(string, sizeof(string), "[ID: %d] %s(%d) was automatically issued %d 1 month PVIP Voucher(s)", tmp[0], GetPlayerNameEx(playerid), GetPlayerSQLId(playerid), tmp[6]);
  5549. Log("logs/shoplog.log", string);
  5550. }
  5551. GivePlayerCredits(playerid, tmp[7], 1, 1);
  5552. format(string, sizeof(string), "%s(%d) | Credits: %d - 1", GetPlayerNameEx(playerid), GetPlayerSQLId(playerid), tmp[7]);
  5553. Log("logs/shopdebug.log", string);
  5554. mysql_format(MainPipeline, query, sizeof(query), "UPDATE `shop_orders` SET `status` = 1 WHERE `id` = %d", tmp[0]);
  5555. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  5556. format(string, sizeof(string), "%s(%d) | Status set to 1 - 1", GetPlayerNameEx(playerid), GetPlayerSQLId(playerid));
  5557. Log("logs/shopdebug.log", string);
  5558. OnPlayerStatsUpdate(playerid);
  5559. return SendClientMessageEx(playerid, COLOR_CYAN, "* Use /myvouchers to check and use your vouchers at any time!");
  5560. }
  5561. }
  5562. }
  5563. case 1:
  5564. {
  5565. cache_get_row_count(rows);
  5566. if(IsPlayerConnected(playerid))
  5567. {
  5568. while(index < rows)
  5569. {
  5570. cache_get_value_name(index, "order_id", result); tmp[0] = strval(result);
  5571. cache_get_value_name(index, "credit_amount", result); tmp[1] = strval(result);
  5572. GivePlayerCredits(playerid, tmp[1], 1);
  5573. format(string, sizeof(string), "%s(%d) | Credits: %d - 2", GetPlayerNameEx(playerid), GetPlayerSQLId(playerid), tmp[1]);
  5574. Log("logs/shopdebug.log", string);
  5575. format(string, sizeof(string), "You have been automatically issued %s credit(s).", number_format(tmp[1]));
  5576. SendClientMessageEx(playerid, COLOR_WHITE, string);
  5577. format(string, sizeof(string), "[ID: %d] %s(%d) was automatically issued %s credit(s)", tmp[0], GetPlayerNameEx(playerid), GetPlayerSQLId(playerid), number_format(tmp[1]));
  5578. Log("logs/shoplog.log", string);
  5579. mysql_format(ShopPipeline, query, sizeof(query), "UPDATE `order_delivery_status` SET `status` = 1 WHERE `order_id` = %d", tmp[0]);
  5580. mysql_tquery(ShopPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  5581. format(string, sizeof(string), "%s(%d) | Status set to 1 - 2", GetPlayerNameEx(playerid), GetPlayerSQLId(playerid));
  5582. Log("logs/shopdebug.log", string);
  5583. OnPlayerStatsUpdate(playerid);
  5584. return 1;
  5585. }
  5586. }
  5587. }
  5588. }
  5589. return 1;
  5590. }
  5591. stock CheckAdminWhitelist(playerid)
  5592. {
  5593. new string[128];
  5594. mysql_format(MainPipeline, string, sizeof(string), "SELECT `AdminLevel`, `SecureIP`, `Watchdog` FROM `accounts` WHERE `Username` = '%s'", GetPlayerNameExt(playerid));
  5595. mysql_tquery(MainPipeline, string, "OnQueryFinish", "iii", ADMINWHITELIST_THREAD, playerid, g_arrQueryHandle{playerid});
  5596. return true;
  5597. }
  5598. stock GivePlayerCashEx(playerid, type, amount)
  5599. {
  5600. if(IsPlayerConnected(playerid) && gPlayerLogged{playerid})
  5601. {
  5602. new szQuery[128];
  5603. switch(type)
  5604. {
  5605. case TYPE_BANK:
  5606. {
  5607. PlayerInfo[playerid][pAccount] += amount;
  5608. mysql_format(MainPipeline, szQuery, sizeof(szQuery), "UPDATE `accounts` SET `Bank`=%d WHERE `id` = %d", PlayerInfo[playerid][pAccount], GetPlayerSQLId(playerid));
  5609. mysql_tquery(MainPipeline, szQuery, "OnQueryFinish", "ii", SENDDATA_THREAD, playerid);
  5610. }
  5611. case TYPE_ONHAND:
  5612. {
  5613. PlayerInfo[playerid][pCash] += amount;
  5614. mysql_format(MainPipeline, szQuery, sizeof(szQuery), "UPDATE `accounts` SET `Money`=%d WHERE `id` = %d", PlayerInfo[playerid][pCash], GetPlayerSQLId(playerid));
  5615. mysql_tquery(MainPipeline, szQuery, "OnQueryFinish", "ii", SENDDATA_THREAD, playerid);
  5616. }
  5617. }
  5618. }
  5619. return 1;
  5620. }
  5621. // g_mysql_LoadGiftBox()
  5622. // Description: Loads the data of the dynamic giftbox from the SQL Database.
  5623. stock g_mysql_LoadGiftBox()
  5624. {
  5625. print("[Dynamic Giftbox] Loading the Dynamic Giftbox...");
  5626. mysql_tquery(MainPipeline, "SELECT * FROM `giftbox`", "OnQueryFinish", "iii", LOADGIFTBOX_THREAD, INVALID_PLAYER_ID, -1);
  5627. }
  5628. stock SaveDynamicGiftBox()
  5629. {
  5630. szMiscArray[0] = 0;
  5631. for(new i = 0; i < 4; i++)
  5632. {
  5633. if(i == 0)
  5634. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "UPDATE `giftbox` SET `dgMoney%d` = '%d',", i, dgVar[dgMoney][i]);
  5635. else
  5636. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgMoney%d` = '%d',", szMiscArray, i, dgVar[dgMoney][i]);
  5637. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgRimKit%d` = '%d',", szMiscArray, i, dgVar[dgRimKit][i]);
  5638. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgFirework%d` = '%d',", szMiscArray, i, dgVar[dgFirework][i]);
  5639. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgGVIP%d` = '%d',", szMiscArray, i, dgVar[dgGVIP][i]);
  5640. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgSVIP%d` = '%d',", szMiscArray, i, dgVar[dgSVIP][i]);
  5641. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgGVIPEx%d` = '%d',", szMiscArray, i, dgVar[dgGVIPEx][i]);
  5642. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgSVIPEx%d` = '%d',", szMiscArray, i, dgVar[dgSVIPEx][i]);
  5643. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgCarSlot%d` = '%d',", szMiscArray, i, dgVar[dgCarSlot][i]);
  5644. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgToySlot%d` = '%d',", szMiscArray, i, dgVar[dgToySlot][i]);
  5645. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgArmor%d` = '%d',", szMiscArray, i, dgVar[dgArmor][i]);
  5646. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgFirstaid%d` = '%d',", szMiscArray, i, dgVar[dgFirstaid][i]);
  5647. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgDDFlag%d` = '%d',", szMiscArray, i, dgVar[dgDDFlag][i]);
  5648. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgGateFlag%d` = '%d',", szMiscArray, i, dgVar[dgGateFlag][i]);
  5649. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgCredits%d` = '%d',", szMiscArray, i, dgVar[dgCredits][i]);
  5650. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgPriorityAd%d` = '%d',", szMiscArray, i, dgVar[dgPriorityAd][i]);
  5651. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgHealthNArmor%d` = '%d',", szMiscArray, i, dgVar[dgHealthNArmor][i]);
  5652. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgGiftReset%d` = '%d',", szMiscArray, i, dgVar[dgGiftReset][i]);
  5653. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgMaterial%d` = '%d',", szMiscArray, i, dgVar[dgMaterial][i]);
  5654. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgWarning%d` = '%d',", szMiscArray, i, dgVar[dgWarning][i]);
  5655. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgPot%d` = '%d',", szMiscArray, i, dgVar[dgPot][i]);
  5656. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgCrack%d` = '%d',", szMiscArray, i, dgVar[dgCrack][i]);
  5657. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgPaintballToken%d` = '%d',", szMiscArray, i, dgVar[dgPaintballToken][i]);
  5658. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgVIPToken%d` = '%d',", szMiscArray, i, dgVar[dgVIPToken][i]);
  5659. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgRespectPoint%d` = '%d',", szMiscArray, i, dgVar[dgRespectPoint][i]);
  5660. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgCarVoucher%d` = '%d',", szMiscArray, i, dgVar[dgCarVoucher][i]);
  5661. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgBuddyInvite%d` = '%d',", szMiscArray, i, dgVar[dgBuddyInvite][i]);
  5662. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgLaser%d` = '%d',", szMiscArray, i, dgVar[dgLaser][i]);
  5663. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgCustomToy%d` = '%d',", szMiscArray, i, dgVar[dgCustomToy][i]);
  5664. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgAdmuteReset%d` = '%d',", szMiscArray, i, dgVar[dgAdmuteReset][i]);
  5665. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgNewbieMuteReset%d` = '%d',", szMiscArray, i, dgVar[dgNewbieMuteReset][i]);
  5666. if(i == 3)
  5667. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgRestrictedCarVoucher%d` = '%d'", szMiscArray, i, dgVar[dgRestrictedCarVoucher][i]);
  5668. else
  5669. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "%s `dgPlatinumVIPVoucher%d` = '%d',", szMiscArray, i, dgVar[dgPlatinumVIPVoucher][i]);
  5670. }
  5671. mysql_tquery(MainPipeline, szMiscArray, "OnszMiscArrayFinish", "i", SENDDATA_THREAD);
  5672. }
  5673. stock LoadPaintballArenas()
  5674. {
  5675. new query[64];
  5676. printf("[LoadPaintballArenas] Loading Paintball Arenas from the database, please wait...");
  5677. mysql_format(MainPipeline, query, sizeof(query), "SELECT * FROM `arenas` LIMIT %d", MAX_ARENAS);
  5678. mysql_tquery(MainPipeline, query, "OnLoadPaintballArenas", "");
  5679. }
  5680. forward OnLoadPaintballArenas();
  5681. public OnLoadPaintballArenas()
  5682. {
  5683. new rows, index, result[128];
  5684. cache_get_row_count(rows);
  5685. while((index < rows))
  5686. {
  5687. cache_get_value_name(index, "id", result); PaintBallArena[index][pbSQLId] = strval(result);
  5688. cache_get_value_name(index, "name", PaintBallArena[index][pbArenaName], 64);
  5689. cache_get_value_name(index, "vw", result); PaintBallArena[index][pbVirtual] = strval(result);
  5690. cache_get_value_name(index, "interior", result); PaintBallArena[index][pbInterior] = strval(result);
  5691. cache_get_value_name(index, "dm1", result); sscanf(result, "p<|>ffff", PaintBallArena[index][pbDeathmatch1][0], PaintBallArena[index][pbDeathmatch1][1], PaintBallArena[index][pbDeathmatch1][2], PaintBallArena[index][pbDeathmatch1][3]);
  5692. cache_get_value_name(index, "dm2", result); sscanf(result, "p<|>ffff", PaintBallArena[index][pbDeathmatch2][0], PaintBallArena[index][pbDeathmatch2][1], PaintBallArena[index][pbDeathmatch2][2], PaintBallArena[index][pbDeathmatch2][3]);
  5693. cache_get_value_name(index, "dm3", result); sscanf(result, "p<|>ffff", PaintBallArena[index][pbDeathmatch3][0], PaintBallArena[index][pbDeathmatch3][1], PaintBallArena[index][pbDeathmatch3][2], PaintBallArena[index][pbDeathmatch3][3]);
  5694. cache_get_value_name(index, "dm4", result); sscanf(result, "p<|>ffff", PaintBallArena[index][pbDeathmatch4][0], PaintBallArena[index][pbDeathmatch4][1], PaintBallArena[index][pbDeathmatch4][2], PaintBallArena[index][pbDeathmatch4][3]);
  5695. cache_get_value_name(index, "red1", result); sscanf(result, "p<|>ffff", PaintBallArena[index][pbTeamRed1][0], PaintBallArena[index][pbTeamRed1][1], PaintBallArena[index][pbTeamRed1][2], PaintBallArena[index][pbTeamRed1][3]);
  5696. cache_get_value_name(index, "red2", result); sscanf(result, "p<|>ffff", PaintBallArena[index][pbTeamRed2][0], PaintBallArena[index][pbTeamRed2][1], PaintBallArena[index][pbTeamRed2][2], PaintBallArena[index][pbTeamRed2][3]);
  5697. cache_get_value_name(index, "red3", result); sscanf(result, "p<|>ffff", PaintBallArena[index][pbTeamRed3][0], PaintBallArena[index][pbTeamRed3][1], PaintBallArena[index][pbTeamRed3][2], PaintBallArena[index][pbTeamRed3][3]);
  5698. cache_get_value_name(index, "blue1", result); sscanf(result, "p<|>ffff", PaintBallArena[index][pbTeamBlue1][0], PaintBallArena[index][pbTeamBlue1][1], PaintBallArena[index][pbTeamBlue1][2], PaintBallArena[index][pbTeamBlue1][3]);
  5699. cache_get_value_name(index, "blue2", result); sscanf(result, "p<|>ffff", PaintBallArena[index][pbTeamBlue2][0], PaintBallArena[index][pbTeamBlue2][1], PaintBallArena[index][pbTeamBlue2][2], PaintBallArena[index][pbTeamBlue2][3]);
  5700. cache_get_value_name(index, "blue3", result); sscanf(result, "p<|>ffff", PaintBallArena[index][pbTeamBlue3][0], PaintBallArena[index][pbTeamBlue3][1], PaintBallArena[index][pbTeamBlue3][2], PaintBallArena[index][pbTeamBlue3][3]);
  5701. cache_get_value_name(index, "flagred", result); sscanf(result, "p<|>fff", PaintBallArena[index][pbFlagRedSpawn][0], PaintBallArena[index][pbFlagRedSpawn][1], PaintBallArena[index][pbFlagRedSpawn][2]);
  5702. cache_get_value_name(index, "flagblue", result); sscanf(result, "p<|>fff", PaintBallArena[index][pbFlagBlueSpawn][0], PaintBallArena[index][pbFlagBlueSpawn][1], PaintBallArena[index][pbFlagBlueSpawn][2]);
  5703. cache_get_value_name(index, "hill", result); sscanf(result, "p<|>fff", PaintBallArena[index][pbHillX], PaintBallArena[index][pbHillY], PaintBallArena[index][pbHillZ]);
  5704. cache_get_value_name(index, "hillr", result); PaintBallArena[index][pbHillRadius] = floatstr(result);
  5705. cache_get_value_name(index, "veh1", result); sscanf(result, "p<|>dffff", PaintBallArena[index][pbVeh1Model], PaintBallArena[index][pbVeh1X], PaintBallArena[index][pbVeh1Y], PaintBallArena[index][pbVeh1Z], PaintBallArena[index][pbVeh1A]);
  5706. cache_get_value_name(index, "veh2", result); sscanf(result, "p<|>dffff", PaintBallArena[index][pbVeh2Model], PaintBallArena[index][pbVeh2X], PaintBallArena[index][pbVeh2Y], PaintBallArena[index][pbVeh2Z], PaintBallArena[index][pbVeh2A]);
  5707. cache_get_value_name(index, "veh3", result); sscanf(result, "p<|>dffff", PaintBallArena[index][pbVeh3Model], PaintBallArena[index][pbVeh3X], PaintBallArena[index][pbVeh3Y], PaintBallArena[index][pbVeh3Z], PaintBallArena[index][pbVeh3A]);
  5708. cache_get_value_name(index, "veh4", result); sscanf(result, "p<|>dffff", PaintBallArena[index][pbVeh4Model], PaintBallArena[index][pbVeh4X], PaintBallArena[index][pbVeh4Y], PaintBallArena[index][pbVeh4Z], PaintBallArena[index][pbVeh4A]);
  5709. cache_get_value_name(index, "veh5", result); sscanf(result, "p<|>dffff", PaintBallArena[index][pbVeh5Model], PaintBallArena[index][pbVeh5X], PaintBallArena[index][pbVeh5Y], PaintBallArena[index][pbVeh5Z], PaintBallArena[index][pbVeh5A]);
  5710. cache_get_value_name(index, "veh6", result); sscanf(result, "p<|>dffff", PaintBallArena[index][pbVeh6Model], PaintBallArena[index][pbVeh6X], PaintBallArena[index][pbVeh6Y], PaintBallArena[index][pbVeh6Z], PaintBallArena[index][pbVeh6A]);
  5711. index++;
  5712. }
  5713. if(index == 0) print("[LoadPaintBallArenas] No Paintball Arenas have been loaded.");
  5714. if(index != 0) printf("[LoadPaintBallArenas] %d Paintball Arenas have been loaded.", index);
  5715. return 1;
  5716. }
  5717. stock SavePaintballArena(index)
  5718. {
  5719. new query[2048];
  5720. mysql_format(MainPipeline, query, sizeof(query), "UPDATE `arenas` SET `name`='%e',", PaintBallArena[index][pbArenaName]);
  5721. mysql_format(MainPipeline, query, sizeof(query), "%s `vw`=%d,",query, PaintBallArena[index][pbVirtual]);
  5722. mysql_format(MainPipeline, query, sizeof(query), "%s `interior`=%d,", query, PaintBallArena[index][pbInterior]);
  5723. mysql_format(MainPipeline, query, sizeof(query), "%s `dm1`='%f|%f|%f|%f',", query, PaintBallArena[index][pbDeathmatch1][0], PaintBallArena[index][pbDeathmatch1][1], PaintBallArena[index][pbDeathmatch1][2], PaintBallArena[index][pbDeathmatch1][3]);
  5724. mysql_format(MainPipeline, query, sizeof(query), "%s `dm2`='%f|%f|%f|%f',", query, PaintBallArena[index][pbDeathmatch2][0], PaintBallArena[index][pbDeathmatch2][1], PaintBallArena[index][pbDeathmatch2][2], PaintBallArena[index][pbDeathmatch2][3]);
  5725. mysql_format(MainPipeline, query, sizeof(query), "%s `dm3`='%f|%f|%f|%f',", query, PaintBallArena[index][pbDeathmatch3][0], PaintBallArena[index][pbDeathmatch3][1], PaintBallArena[index][pbDeathmatch3][2], PaintBallArena[index][pbDeathmatch3][3]);
  5726. mysql_format(MainPipeline, query, sizeof(query), "%s `dm4`='%f|%f|%f|%f',", query, PaintBallArena[index][pbDeathmatch4][0], PaintBallArena[index][pbDeathmatch4][1], PaintBallArena[index][pbDeathmatch4][2], PaintBallArena[index][pbDeathmatch4][3]);
  5727. mysql_format(MainPipeline, query, sizeof(query), "%s `red1`='%f|%f|%f|%f',", query, PaintBallArena[index][pbTeamRed1][0], PaintBallArena[index][pbTeamRed1][1], PaintBallArena[index][pbTeamRed1][2], PaintBallArena[index][pbTeamRed1][3]);
  5728. mysql_format(MainPipeline, query, sizeof(query), "%s `red2`='%f|%f|%f|%f',", query, PaintBallArena[index][pbTeamRed2][0], PaintBallArena[index][pbTeamRed2][1], PaintBallArena[index][pbTeamRed2][2], PaintBallArena[index][pbTeamRed2][3]);
  5729. mysql_format(MainPipeline, query, sizeof(query), "%s `red3`='%f|%f|%f|%f',", query, PaintBallArena[index][pbTeamRed3][0], PaintBallArena[index][pbTeamRed3][1], PaintBallArena[index][pbTeamRed3][2], PaintBallArena[index][pbTeamRed3][3]);
  5730. mysql_format(MainPipeline, query, sizeof(query), "%s `blue1`='%f|%f|%f|%f',", query, PaintBallArena[index][pbTeamBlue1][0], PaintBallArena[index][pbTeamBlue1][1], PaintBallArena[index][pbTeamBlue1][2], PaintBallArena[index][pbTeamBlue1][3]);
  5731. mysql_format(MainPipeline, query, sizeof(query), "%s `blue2`='%f|%f|%f|%f',", query, PaintBallArena[index][pbTeamBlue2][0], PaintBallArena[index][pbTeamBlue2][1], PaintBallArena[index][pbTeamBlue2][2], PaintBallArena[index][pbTeamBlue2][3]);
  5732. mysql_format(MainPipeline, query, sizeof(query), "%s `blue3`='%f|%f|%f|%f',", query, PaintBallArena[index][pbTeamBlue3][0], PaintBallArena[index][pbTeamBlue3][1], PaintBallArena[index][pbTeamBlue3][2], PaintBallArena[index][pbTeamBlue3][3]);
  5733. mysql_format(MainPipeline, query, sizeof(query), "%s `flagred`='%f|%f|%f',", query, PaintBallArena[index][pbFlagRedSpawn][0], PaintBallArena[index][pbFlagRedSpawn][1], PaintBallArena[index][pbFlagRedSpawn][2]);
  5734. mysql_format(MainPipeline, query, sizeof(query), "%s `flagblue`='%f|%f|%f',", query, PaintBallArena[index][pbFlagBlueSpawn][0], PaintBallArena[index][pbFlagBlueSpawn][1], PaintBallArena[index][pbFlagBlueSpawn][2]);
  5735. mysql_format(MainPipeline, query, sizeof(query), "%s `hill`='%f|%f|%f',", query, PaintBallArena[index][pbHillX], PaintBallArena[index][pbHillY], PaintBallArena[index][pbHillZ]);
  5736. mysql_format(MainPipeline, query, sizeof(query), "%s `hillr`=%f,", query, PaintBallArena[index][pbHillRadius]);
  5737. mysql_format(MainPipeline, query, sizeof(query), "%s `veh1`='%d|%f|%f|%f|%f',", query, PaintBallArena[index][pbVeh1Model], PaintBallArena[index][pbVeh1X], PaintBallArena[index][pbVeh1Y], PaintBallArena[index][pbVeh1Z], PaintBallArena[index][pbVeh1A]);
  5738. mysql_format(MainPipeline, query, sizeof(query), "%s `veh2`='%d|%f|%f|%f|%f',", query, PaintBallArena[index][pbVeh2Model], PaintBallArena[index][pbVeh2X], PaintBallArena[index][pbVeh2Y], PaintBallArena[index][pbVeh2Z], PaintBallArena[index][pbVeh2A]);
  5739. mysql_format(MainPipeline, query, sizeof(query), "%s `veh3`='%d|%f|%f|%f|%f',", query, PaintBallArena[index][pbVeh3Model], PaintBallArena[index][pbVeh3X], PaintBallArena[index][pbVeh3Y], PaintBallArena[index][pbVeh3Z], PaintBallArena[index][pbVeh3A]);
  5740. mysql_format(MainPipeline, query, sizeof(query), "%s `veh4`='%d|%f|%f|%f|%f',", query, PaintBallArena[index][pbVeh4Model], PaintBallArena[index][pbVeh4X], PaintBallArena[index][pbVeh4Y], PaintBallArena[index][pbVeh4Z], PaintBallArena[index][pbVeh4A]);
  5741. mysql_format(MainPipeline, query, sizeof(query), "%s `veh5`='%d|%f|%f|%f|%f',", query, PaintBallArena[index][pbVeh5Model], PaintBallArena[index][pbVeh5X], PaintBallArena[index][pbVeh5Y], PaintBallArena[index][pbVeh5Z], PaintBallArena[index][pbVeh5A]);
  5742. mysql_format(MainPipeline, query, sizeof(query), "%s `veh6`='%d|%f|%f|%f|%f'", query, PaintBallArena[index][pbVeh6Model], PaintBallArena[index][pbVeh6X], PaintBallArena[index][pbVeh6Y], PaintBallArena[index][pbVeh6Z], PaintBallArena[index][pbVeh6A]);
  5743. mysql_format(MainPipeline, query, sizeof(query), "%s WHERE `id` = %d", query, PaintBallArena[index][pbSQLId]);
  5744. mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
  5745. }
  5746. stock SavePaintballArenas()
  5747. {
  5748. for(new i = 0; i < MAX_ARENAS; ++i)
  5749. {
  5750. SavePaintballArena(i);
  5751. }
  5752. }
  5753. stock AddNonRPPoint(playerid, point, expiration, reason[], issuerid, manual)
  5754. {
  5755. new szQuery[512], escapedstring[128];
  5756. mysql_escape_string(reason, escapedstring);
  5757. mysql_format(MainPipeline, szQuery, sizeof(szQuery), "INSERT INTO `nonrppoints` (sqlid, point, expiration, reason, issuer, active, manual) VALUES ('%d', '%d', '%d', '%s', '%d', '1', '%d')",
  5758. GetPlayerSQLId(playerid),
  5759. point,
  5760. expiration,
  5761. escapedstring,
  5762. GetPlayerSQLId(issuerid),
  5763. manual);
  5764. mysql_tquery(MainPipeline, szQuery, "OnQueryFinish", "i", SENDDATA_THREAD);
  5765. }
  5766. stock LoadPlayerNonRPPoints(playerid)
  5767. {
  5768. new string[128];
  5769. mysql_format(MainPipeline, string, sizeof(string), "SELECT * FROM `nonrppoints` WHERE `sqlid` = '%d'", PlayerInfo[playerid][pId]);
  5770. mysql_tquery(MainPipeline, string, "OnQueryFinish", "iii", LOADPNONRPOINTS_THREAD, playerid, g_arrQueryHandle{playerid});
  5771. return true;
  5772. }
  5773. forward OnWDWhitelist(index);
  5774. public OnWDWhitelist(index)
  5775. {
  5776. new string[128], name[24];
  5777. GetPVarString(index, "OnWDWhitelist", name, 24);
  5778. if(cache_affected_rows()) {
  5779. format(string, sizeof(string), "You have successfully whitelisted %s's account.", name);
  5780. SendClientMessageEx(index, COLOR_WHITE, string);
  5781. format(string, sizeof(string), "%s has IP Whitelisted %s", GetPlayerNameEx(index), name);
  5782. Log("logs/wdwhitelist.log", string);
  5783. }
  5784. else {
  5785. format(string, sizeof(string), "There was a issue with whitelisting %s's account.", name);
  5786. SendClientMessageEx(index, COLOR_WHITE, string);
  5787. }
  5788. DeletePVar(index, "OnWDWhitelist");
  5789. return 1;
  5790. }
  5791. forward FetchWatchlist(index);
  5792. public FetchWatchlist(index)
  5793. {
  5794. new rows;
  5795. cache_get_row_count(rows);
  5796. for(new i = 0; i < rows; i++)
  5797. {
  5798. new szResult[32], points, sqlid;
  5799. cache_get_value_name(i, "sqlid", szResult); sqlid = strval(szResult);
  5800. cache_get_value_name(i, "point", szResult); points = strval(szResult);
  5801. foreach(new x: Player)
  5802. {
  5803. if(PlayerInfo[x][pId] == sqlid)
  5804. {
  5805. format(PublicSQLString, sizeof(PublicSQLString), "%s %s (ID: %d) | Points: %d - Manually Added\n", PublicSQLString, GetPlayerNameEx(x), x, points);
  5806. break;
  5807. }
  5808. }
  5809. }
  5810. mysql_tquery(MainPipeline, "SELECT sqlid, point FROM `nonrppoints` LEFT JOIN accounts on sqlid = accounts.id WHERE (`active` = '1' AND `manual` = '0') AND accounts.`Online` = 1 ORDER BY `point` DESC LIMIT 15", "FetchWatchlist2", "i", index);
  5811. return true;
  5812. }
  5813. forward FetchWatchlist2(index, input[]);
  5814. public FetchWatchlist2(index, input[])
  5815. {
  5816. new rows;
  5817. cache_get_row_count(rows);
  5818. for(new i = 0; i < rows; i++)
  5819. {
  5820. new szResult[32], points, sqlid;
  5821. cache_get_value_name(i, "sqlid", szResult); sqlid = strval(szResult);
  5822. cache_get_value_name(i, "point", szResult); points = strval(szResult);
  5823. foreach(new x: Player)
  5824. {
  5825. if(PlayerInfo[x][pId] == sqlid)
  5826. {
  5827. format(PublicSQLString, sizeof(PublicSQLString), "%s %s (ID: %d) | Points: %d - Automatically Added\n", PublicSQLString, GetPlayerNameEx(x), x, points);
  5828. break;
  5829. }
  5830. }
  5831. }
  5832. ShowPlayerDialogEx(index, DIALOG_WATCHLIST, DIALOG_STYLE_LIST, "Current Watchlist", PublicSQLString, "Exit", "");
  5833. FetchingWatchlist = 0;
  5834. return true;
  5835. }
  5836. forward OnSetVMute(playerid, task);
  5837. public OnSetVMute(playerid, task)
  5838. {
  5839. new string[128], tmpName[MAX_PLAYER_NAME];
  5840. GetPVarString(playerid, "OnSetVMute", tmpName, sizeof(tmpName));
  5841. DeletePVar(playerid, "OnSetVMute");
  5842. if(cache_affected_rows())
  5843. {
  5844. format(string, sizeof(string), "AdmCmd: %s has offline vip %s %s.", GetPlayerNameEx(playerid), (task==1)?("muted"):("unmuted"), tmpName);
  5845. Log("logs/mute.log", string);
  5846. ABroadCast(COLOR_LIGHTRED, string, 3);
  5847. }
  5848. else
  5849. {
  5850. format(string, sizeof(string), "Could not vip %s %s..", (task==1)?("mute"):("unmute"), tmpName);
  5851. SendClientMessageEx(playerid, COLOR_YELLOW, string);
  5852. }
  5853. return 1;
  5854. }
  5855. forward CheckClientWatchlist(index);
  5856. public CheckClientWatchlist(index)
  5857. {
  5858. new rows;
  5859. cache_get_row_count(rows);
  5860. if(rows == 0) PlayerInfo[index][pWatchlist] = 0;
  5861. else PlayerInfo[index][pWatchlist] = 1;
  5862. return true;
  5863. }
  5864. forward WatchWatchlist(index);
  5865. public WatchWatchlist(index)
  5866. {
  5867. new rows, result;
  5868. cache_get_row_count(rows);
  5869. for(new i = 0; i < rows; i++)
  5870. {
  5871. new szResult[32], sqlid;
  5872. cache_get_value_name(i, "sqlid", szResult); sqlid = strval(szResult);
  5873. foreach(new x: Player)
  5874. {
  5875. if(PlayerInfo[x][pId] == sqlid && gPlayerLogged{x} == 1 && PlayerInfo[x][pJailTime] == 0 && GetPVarInt(x, "BeingSpectated") == 0)
  5876. {
  5877. SpectatePlayer(index, x);
  5878. SetPVarInt(x, "BeingSpectated", 1);
  5879. SendClientMessageEx(index, -1, "WATCHDOG: You have started watching, you may skip to another player in 3 minutes (/nextwatch).");
  5880. if(PlayerInfo[index][pWatchdog] == 2) SetPVarInt(index, "NextWatch", gettime()+120); else SetPVarInt(index, "NextWatch", gettime()+180);
  5881. SetPVarInt(index, "SpectatingWatch", x);
  5882. SetPVarInt(index, "StartedWatching", 1);
  5883. WDReportCount[index]++;
  5884. WDReportHourCount[index]++;
  5885. AddWDToken(index);
  5886. result = 1;
  5887. break;
  5888. }
  5889. }
  5890. if(result) break;
  5891. }
  5892. if(result == 0)
  5893. {
  5894. SendClientMessageEx(index, COLOR_GRAD1, "No-one is available to spectate!");
  5895. }
  5896. return true;
  5897. }
  5898. forward CheckTrunkContents(playerid);
  5899. public CheckTrunkContents(playerid)
  5900. {
  5901. new rows, TrunkWeaps[3];
  5902. cache_get_row_count(rows);
  5903. if(rows == 0) return 1;
  5904. new string[189];
  5905. cache_get_value_name_int(0, "pvWeapon0", TrunkWeaps[0]);
  5906. cache_get_value_name_int(0, "pvWeapon1", TrunkWeaps[1]);
  5907. cache_get_value_name_int(0, "pvWeapon2", TrunkWeaps[2]);
  5908. new
  5909. i = 0;
  5910. while (i < 3 && (!TrunkWeaps[i] || PlayerInfo[playerid][pGuns][GetWeaponSlot(TrunkWeaps[i])] == TrunkWeaps[i]))
  5911. {
  5912. i++;
  5913. }
  5914. if (i == 3) return SendClientMessageEx(playerid, COLOR_YELLOW, "Warning{FFFFFF}: There was nothing inside the trunk.");
  5915. else {
  5916. format(string, sizeof(string), "You found a %s.", GetWeaponNameEx(TrunkWeaps[i]));
  5917. SendClientMessageEx(playerid, COLOR_YELLOW, string);
  5918. GivePlayerValidWeapon(playerid, TrunkWeaps[i]);
  5919. mysql_format(MainPipeline, string, sizeof(string), "UPDATE `vehicles` SET `pvWeapon%d` = '0' WHERE `id` = '%d' AND `sqlID` = '%d'", i, GetPVarInt(playerid, "LockPickVehicleSQLId"), GetPVarInt(playerid, "LockPickPlayerSQLId"));
  5920. mysql_tquery(MainPipeline, string, "OnQueryFinish", "ii", SENDDATA_THREAD, playerid);
  5921. new ip[MAX_PLAYER_NAME], ownername[MAX_PLAYER_NAME], vehicleid = GetPVarInt(playerid, "LockPickVehicle");
  5922. GetPlayerIp(playerid, ip, sizeof(ip)), GetPVarString(playerid, "LockPickPlayerName", ownername, sizeof(ownername));
  5923. format(string, sizeof(string), "[LOCK PICK] %s(%d) (IP:%s) successfully cracked the trunk of a %s(VID:%d SQLId %d Weapon ID: %d) owned by %s(Offline, SQLId:%d)", GetPlayerNameEx(playerid), GetPlayerSQLId(playerid), ip, GetVehicleName(vehicleid), vehicleid, GetPVarInt(playerid, "LockPickVehicleSQLId"), TrunkWeaps[i], ownername, GetPVarInt(playerid, "LockPickPlayerSQLId"));
  5924. Log("logs/playervehicle.log", string);
  5925. }
  5926. return 1;
  5927. }
  5928. forward OnRequestTransferFlag(playerid, flagid, to, from);
  5929. public OnRequestTransferFlag(playerid, flagid, to, from)
  5930. {
  5931. new rows, value, string[512];
  5932. new FlagText[64], FlagIssuer[MAX_PLAYER_NAME], FlagDate[24];
  5933. cache_get_row_count(rows);
  5934. if(!rows) return ShowPlayerDialogEx(playerid, DIALOG_NOTHING, DIALOG_STYLE_MSGBOX, "{FF0000}Flag Error:", "Flag does not exist!", "Close", "");
  5935. cache_get_value_name_int(0, "type", value);
  5936. if(value == 2)
  5937. return ShowPlayerDialogEx(playerid, DIALOG_NOTHING, DIALOG_STYLE_MSGBOX, "{FF0000}Flag Error:", "Administrative flags cannot be transferred!", "Close", "");
  5938. cache_get_value_name_int(0, "id", value);
  5939. if(value != GetPlayerSQLId(from))
  5940. return format(string, sizeof(string), "Flag is not owned by %s!", GetPlayerNameEx(from)), ShowPlayerDialogEx(playerid, DIALOG_NOTHING, DIALOG_STYLE_MSGBOX, "{FF0000}Flag Error:", string, "Close", "");
  5941. cache_get_value_name(0, "flag", FlagText);
  5942. cache_get_value_name(0, "issuer", FlagIssuer, MAX_PLAYER_NAME);
  5943. cache_get_value_name(0, "time", FlagDate);
  5944. SetPVarInt(playerid, "Flag_Transfer_ID", flagid);
  5945. SetPVarInt(playerid, "Flag_Transfer_To", to);
  5946. SetPVarInt(playerid, "Flag_Transfer_From", from);
  5947. SetPVarString(playerid, "FlagText", FlagText);
  5948. format(string, sizeof(string), "Are you sure you want to transfer:\n{FF6347}Flag ID:{BFC0C2} %d\n{FF6347}Flag:{BFC0C2} %s\n{FF6347}Issued by:{BFC0C2} %s\n{FF6347}Date Issued: {BFC0C2}%s\n{FF6347}To: {BFC0C2}%s\n{FF6347}From: {BFC0C2}%s", flagid, FlagText, FlagIssuer, FlagDate, GetPlayerNameEx(to), GetPlayerNameEx(from));
  5949. return ShowPlayerDialogEx(playerid, FLAG_TRANSFER, DIALOG_STYLE_MSGBOX, "FLAG TRANSFER", string, "Yes", "No");
  5950. }
  5951. forward GetShiftInfo(playerid, szMessage[]);
  5952. public GetShiftInfo(playerid, szMessage[])
  5953. {
  5954. new rows, fieldname[24], szResult[32], string[1288], shift[4], needs, signedup;
  5955. cache_get_row_count(rows);
  5956. if(rows)
  5957. {
  5958. format(fieldname, sizeof(fieldname), "needs_%s", GetWeekday());
  5959. cache_get_value_name(0, "shift", shift, sizeof(shift));
  5960. cache_get_value_name(0, fieldname, szResult); needs = strval(szResult);
  5961. cache_get_value_name(0, "ShiftCount", szResult); signedup = strval(szResult);
  5962. }
  5963. if(needs - signedup > 0) format(string, sizeof(string), "The current shift is %s. We have {FF0000}%d/%d {FFFFFF}Admins signed up for the shift.", shift, signedup, needs);
  5964. else format(string, sizeof(string), "The current shift is %s. We have {00FF00}%d/%d {FFFFFF}Admins signed up for the shift.", shift, signedup, needs);
  5965. if(playerid == INVALID_PLAYER_ID)
  5966. {
  5967. if(needs - signedup > 0) format(string, sizeof(string), "The current shift is %s. We have {FF0000}%d/%d {FFFFFF}Admins signed up for the shift.", shift, signedup, needs);
  5968. else format(string, sizeof(string), "The current shift is %s. We have {00FF00}%d/%d {FFFFFF}Admins signed up for the shift.", shift, signedup, needs);
  5969. foreach(new i: Player)
  5970. {
  5971. if(PlayerInfo[i][pAdmin] >= 2) SendClientMessageEx(i, COLOR_WHITE, string);
  5972. }
  5973. }
  5974. else if(playerid != INVALID_PLAYER_ID)
  5975. {
  5976. if(needs - signedup > 0) format(string, sizeof(string), "The current shift is %s. We have {FF0000}%d/%d {FFFFFF}Admins signed up for the shift.", shift, signedup, needs);
  5977. else format(string, sizeof(string), "The current shift is %s. We have {00FF00}%d/%d {FFFFFF}Admins signed up for the shift.", shift, signedup, needs);
  5978. SendClientMessageEx(playerid, COLOR_WHITE, szMessage);
  5979. SendClientMessageEx(playerid, COLOR_WHITE, string);
  5980. }
  5981. return 1;
  5982. }
  5983. // g_mysql_LoadFIFInfo(playerid)
  5984. // Description: Load the player's Fall Into Fun Info
  5985. stock g_mysql_LoadFIFInfo(playerid)
  5986. {
  5987. new szQuery[128];
  5988. mysql_format(MainPipeline, szQuery, sizeof(szQuery), "SELECT * FROM `fallintofun` WHERE `player` = %d", PlayerInfo[playerid][pId]);
  5989. mysql_tquery(MainPipeline, szQuery, "OnQueryFinish", "iii", LOADFIF_THREAD, playerid, g_arrQueryHandle{playerid});
  5990. return 1;
  5991. }
  5992. stock g_mysql_SaveFIF(playerid)
  5993. {
  5994. if(IsPlayerConnected(playerid))
  5995. {
  5996. new szQuery[128];
  5997. mysql_format(MainPipeline, szQuery, sizeof(szQuery), "UPDATE `fallintofun` SET `FIFHours` = %d, `FIFChances` = %d WHERE `player` = %d", FIFInfo[playerid][FIFHours], FIFInfo[playerid][FIFChances], PlayerInfo[playerid][pId]);
  5998. mysql_tquery(MainPipeline, szQuery, "OnSaveFIF", "i", playerid);
  5999. }
  6000. }
  6001. forward OnSaveFIF(playerid);
  6002. public OnSaveFIF(playerid) {
  6003. printf("Saved %s's FIF stats", GetPlayerNameEx(playerid));
  6004. return 1;
  6005. }
  6006. g_mysql_SaveGroupToy(playerid) {
  6007. mysql_format(MainPipeline, szMiscArray, sizeof(szMiscArray), "UPDATE `accounts` SET\
  6008. `GroupToy0` = '%f', `GroupToy1` = '%f', `GroupToy2` = '%f', `GroupToy3` = '%f', `GroupToy4` = '%f', `GroupToy5` = '%f', `GroupToy6` = '%f', \
  6009. `GroupToy7` = '%f', `GroupToy8` = '%f' WHERE `id` = '%d'", PlayerInfo[playerid][pGroupToy][0], PlayerInfo[playerid][pGroupToy][1],
  6010. PlayerInfo[playerid][pGroupToy][2], PlayerInfo[playerid][pGroupToy][3], PlayerInfo[playerid][pGroupToy][4],
  6011. PlayerInfo[playerid][pGroupToy][5], PlayerInfo[playerid][pGroupToy][6], PlayerInfo[playerid][pGroupToy][7],
  6012. PlayerInfo[playerid][pGroupToy][8], GetPlayerSQLId(playerid));
  6013. mysql_tquery(MainPipeline, szMiscArray, "OnQueryFinish", "i", SENDDATA_THREAD);
  6014. }