| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877 |
- static carstr[128] //for user output, static: only works in this file.
- /*
- ***************** DIALOGS ***************
- DEFINITION & VARIABLES
- See hooks.inc for OnDialogResponse
- ===================================================
- */
-
- //Using an enumerator in this case would be less efficient.
- #define DIALOG_VEHICLES_UP 9000
- #define DIALOG_VEHICLES_UP2 9001
- #define DIALOG_CUSTOM_PLATE 9002
- #define DIALOG_MYVEHICLES 9003
- //the car being upgraded through /vupgrade
- new vupgrading[MAX_PLAYERS] = -1
- CMD:carhelp(playerid, params[])
- {
- SendClientMessage(playerid, COLOR_YELLOW, "____________________________________________");
- SendClientMessage(playerid, COLOR_WHITE, "COMMANDS: /v, /breakin, /dealerships, /clearmods, /windows");
- SendClientMessage( playerid, COLOR_WHITE, "COMMANDS: /purchasecar, /spraycar, /lock, /engine, /trunk, /hood, /lights")
- return 1;
- }
- CMD:vehhelp( playerid, params[] ) {
- return cmd_carhelp( playerid, params )
- }
- /*
- ******** Player Vehicle Commands *********
- ===================================================
- */
- CMD:v( playerid, params[] ) {
- new option[20], optional[80];
- if( sscanf( params, "s[20]z", option, optional ) ) {
- SendClientMessage( playerid, COLOR_GREY, "{00BFFF}Usage:{FFFFFF} /v [option]" );
- SendClientMessage( playerid, COLOR_GREY, "Available options: /v cars, /v spawn, /v park, /v sell, /v dump" );
- SendClientMessage( playerid, COLOR_GREY, "Available options: /v upgrade, /v track, /v givekeys")
- return 1;
- }
- //Commands that do not require the player to have a spawned car
- if( strcmp( option, "cars", true ) == 0 ) { return cmdveh_cars( playerid ); }
- if( strcmp( option, "spawn", true ) == 0 ) { return cmdveh_spawn( playerid, optional ); }
-
-
- //Commands that do require a spawned car
- new slot = playerSpawnedVehicle[playerid]
- if( slot < 0 ) return SendClientMessage( playerid, COLOR_GREY, "You do not have any cars spawned. Use '/v spawn' to spawn one." )
- new model[80];
- format( model, 80, GetVehicleFriendlyNameFromModel( PlayerVehicles[playerid][slot][pvmodel] ) );
-
- if( strcmp( option, "track", true ) == 0 ) { return cmdveh_track( playerid, slot, model ); }
- if( strcmp( option, "givekeys", true ) == 0 ) { return cmdveh_givekeys( playerid, optional, slot, model );}
- if( strcmp( option, "park", true ) == 0 ) { return cmdveh_park( playerid, slot, model ); }
- if( strcmp( option, "upgrade", true ) == 0 ) { return cmdveh_upgrade( playerid, slot, model ); }
- if( strcmp( option, "sell", true ) == 0 ) { return cmdveh_sell( playerid, optional, slot, model ); }
- if( strcmp( option, "dump", true ) == 0 ) { return cmdveh_dump( playerid, optional, slot, model ); }
-
- return 1;
- }
- cmdveh_dump( playerid, params[], slot, model[] ) {
-
- #define veh(%0) PlayerVehicles[playerid][slot][pv%0]
-
- new cartext[128];
- if( GetPlayerVehicleID( playerid ) != veh(ID) ) {
- format( cartext, sizeof( cartext ), "You must be inside your %s in order to dump it at the dump.", model );
- return SendClientMessage( playerid, COLOR_GREY, cartext );
- }
-
- if( !IsPlayerInRangeOfPoint( playerid, 5.0, 134.0741,-256.5139,1.3052 ) ) {
- SetPlayerCheckpointEx( playerid, 134.0522,-256.3802,1.3052, 5.0 )
- CP[playerid] = CHECKPOINT_CAR_DUMP
- return SendClientMessage( playerid, COLOR_GREY, "You must be at the dump. A red marker has been marked on your map showing you the way." )
- }
-
- new moneyback = 0
-
- if( veh(gps) ) moneyback += 300000
- if( veh(insurance) ) moneyback += 200000
- if( veh(alarm) ) moneyback += 100000
- if( veh(sparekey) ) moneyback += 200000
-
- new car_str[128]
- if( sscanf( params, "s[128]", car_str ) ) {
- format( car_str, 128, "You will get a total of $%d for dumping your %s. Are you sure you want to do this?", moneyback, model )
- SendClientMessage( playerid, COLOR_WHITE, car_str )
- SendClientMessage( playerid, COLOR_GREY, "/v dump [confirm], to proceed." )
- return 1
- }
-
- destroyPlayerVehicle( playerid, slot )
- PlayerInfo[playerid][pCarID][slot] = 0
- veh(pID) = -1
- veh(model) = 0
- veh(impounded) = 0
- veh(gps) = 0
- veh(insurance) = 0
- veh(sparekey) = 0
- veh(alarm) = 0
- veh(Gun1) = 0
- veh(Gun2) = 0
- veh(Pot) = 0
- veh(Crack) = 0
- veh(Armor) = 0
- veh(damage) = 1000.00
- veh(playerID) = INVALID_PLAYER_ID
- mysql_format( sqlGameConnection, car_str, 128, "DELETE FROM playervehicles WHERE ID = %d;", veh(SQLID) )
- mysql_pquery( sqlGameConnection, car_str )
-
- format( car_str, 128, "You have dumped for %s for $%d.", model, moneyback )
- SendClientMessage( playerid, COLOR_GREY, car_str )
- GiveMoney( playerid, moneyback )
- SQLSave( playerid )
-
- #undef veh
- return 1;
- }
- new playeridcarOffered[MAX_PLAYERS] = {-1, ...}
- new carOfferedSlot[MAX_PLAYERS] = {-1, ...}
- new carOfferedPrice[MAX_PLAYERS] = {-1, ...}
- cmdveh_sell( playerid, params[], slot, model[] ) {
- new player, price, cartext[128];
- if( sscanf( params, "ui", player, price ) ) {
- return SendClientMessage( playerid, COLOR_GREY, "{00BFFF}Usage:{FFFFFF} /v sell [playerid/playerName] [price]" )
- }
-
- if( price < 0 ) {
- return SendClientMessage( playerid, COLOR_GREY, "You must enter a positive number for the price." )
- }
-
- #define veh(%1) PlayerVehicles[playerid][slot][pv%1]
-
- new Float:vpos[3]
- GetVehiclePos( veh(ID), vpos[0], vpos[1], vpos[2] )
- if( !IsPlayerInRangeOfPoint( playerid, 8.0, vpos[0], vpos[1], vpos[2] ) ) {
- format( cartext, sizeof( cartext ), "You must be near your %s in order to sell it.", model );
- return SendClientMessage( playerid, COLOR_GREY, cartext );
- }
- if( !IsPlayerConnected( player ) ) {
- return SendClientMessage( playerid, COLOR_GREY, "ERROR: That player is not connected." )
- }
-
- new Float:ppos[3]
- GetPlayerPos( player, ppos[0], ppos[1], ppos[2] )
- if( IsPlayerInRangeOfPoint( playerid, 3.0, ppos[0], ppos[1], ppos[2] ) ) {
- format( carstr, sizeof( carstr ), "%s has offered you their %s for $%d, type /purchasecar to accept the vehicle.", PlayerICName( playerid ), model, price )
- SendClientMessage( player, COLOR_LIGHTBLUE, carstr )
-
- format( carstr, sizeof( carstr ), "You have offered %s your %s for $%d, please wait for the player to accept it.", PlayerICName( player ), model, price )
- SendClientMessage( playerid, COLOR_LIGHTBLUE, carstr )
-
- playeridcarOffered[player] = playerid
- carOfferedSlot[player] = slot
- carOfferedPrice[player] = price
- return 1
-
- }
- #undef veh
- SendClientMessage( playerid, COLOR_GREY, "You must be near this player in order to sell them this vehicle." )
- return 1;
- }
- CMD:purchasecar( playerid, params[] ) {
- if( playeridcarOffered[playerid] > -1 ) {
- new player = playeridcarOffered[playerid]
- new slot = carOfferedSlot[playerid]
- new price = carOfferedPrice[playerid]
-
- if( PlayerInfo[playerid][pCash] < carOfferedPrice[playerid] ) {
- return SendClientMessage( playerid, COLOR_GREY, "You cannot afford this." )
- }
-
- new freeslot = -1
- for( new i; i < PlayerInfo[playerid][pMaxCarSlots]; i++ ) {
- if( PlayerInfo[playerid][pCarID][i] < 1 ) {
- freeslot = i
- }
- }
- if( freeslot == -1 ) {
- return SendClientMessage( playerid, COLOR_GREY, "You cannot own anymore vehicles." )
- }
-
- playeridcarOffered[playerid] = -1
- carOfferedPrice[playerid] = -1
- carOfferedSlot[playerid] = -1
- PlayerInfo[player][pCarID][slot] = 0
-
- GiveMoney( player, price )
- GiveMoney( playerid, -price )
-
- PlayerInfo[player][pCarID][slot] = 0
- playerSpawnedVehicle[player] = -1
-
- #define veh(%0) PlayerVehicles[playerid][freeslot][pv%0]
- #define oldveh(%0) PlayerVehicles[player][slot][pv%0]
-
-
- for( new c; c < 14; c++ ) {
- veh(components)[c] = GetVehicleComponentInSlot( oldveh(ID), c );
- }
- GetVehicleHealth( oldveh(ID), veh(damage) )
- GetVehiclePos( oldveh(ID), veh(x), veh(y), veh(z) )
- GetVehicleZAngle( oldveh(ID), veh(rz) )
- veh(vw) = GetVehicleVirtualWorld( oldveh(ID) )
-
- //get trunk data to save
- if( veh(spawned) ) {
- veh(Gun1) = TrunkInfo[oldveh(ID)][cGun1]
- veh(Gun2) = TrunkInfo[oldveh(ID)][cGun2]
- veh(Pot) = TrunkInfo[oldveh(ID)][cPot]
- veh(Crack) = TrunkInfo[oldveh(ID)][cCrack]
- veh(Armor) = TrunkInfo[oldveh(ID)][cArmor]
- }
-
- GetVehicleDamageStatus( oldveh(ID), veh(dpanels), veh(ddoors), veh(dlights), veh(dtires) )
- destroyPlayerVehicle( player, slot );
-
- veh(pID) = PlayerInfo[playerid][pID]
-
- PlayerInfo[playerid][pCarID][freeslot] = PlayerVehicles[player][slot][pvSQLID]
-
- veh(model) = oldveh(model);
- veh(color1) = oldveh(color1);
- veh(color2) = oldveh(color2);
- veh(paintjob) = oldveh(paintjob);
- veh(locked) = oldveh(locked);
- veh(gps) = oldveh(gps);
- veh(alarm) = oldveh(alarm);
- veh(insurance) = oldveh(insurance);
- veh(sparekey) = oldveh(sparekey);
- veh(gas) = oldveh(gas)
-
- format( veh(plate), 9, "%s", oldveh(plate) );
- veh(SQLID) = oldveh(SQLID)
- if( playerSpawnedVehicle[playerid] > -1 ) {
- destroyPlayerVehicle( playerid, playerSpawnedVehicle[playerid] );
- }
- spawnPlayerVehicle( playerid, freeslot, 1 );
- savePlayerVehicle( playerid, freeslot ); //same veh sqlid
-
- oldveh(pID) = -1;
- oldveh(model) = 0;
- oldveh(gps) = 0;
- oldveh(insurance) = 0;
- oldveh(alarm) = 0;
- oldveh(sparekey) = 0;
- #undef oldveh
-
- format( carstr, sizeof( carstr ), "You have bought the %s from %s for $%d.", GetVehicleFriendlyNameFromModel( veh(model) ), PlayerICName( player ), price )
- SendClientMessage( playerid, COLOR_LIGHTBLUE, carstr )
-
- format( carstr, sizeof( carstr ), "%s has bought the %s from you for $%d.", PlayerICName( playerid ), GetVehicleFriendlyNameFromModel( veh(model) ), price )
- SendClientMessage( player, COLOR_LIGHTBLUE, carstr )
- #undef veh
-
- }
- return 1
- }
- cmdveh_upgrade( playerid, slot, model[] ) {
- if( IsPlayerInRangeOfPoint( playerid, 5.0, 2324.2505,-2012.4784,13.6222 ) ) { //The new garage map
-
- new menuitems[150]
- #define veh(%1) PlayerVehicles[playerid][slot][pv%1]
-
- format( menuitems, 150, "GPS\t$350,000\nAlarm\t$200,000\nInsurance\t$250,000\nSpare keys\t$250000\nCustom license plate\t$100000\nAdd another vehicle slot\t$15,000,000" )
-
- vupgrading[playerid] = slot
- new titlestr[100]
- format( titlestr, 100, "{FFB76F}Vehicle Upgrades for %s{FFFFFF}", model )
- ShowPlayerDialog( playerid, DIALOG_VEHICLES_UP2, DIALOG_STYLE_TABLIST, titlestr, menuitems, "Purchase", "Cancel" )
- #undef veh
- return 1
- }
- SendClientMessage( playerid, COLOR_GREY, "You are not inside the Garage in Willowfield, a marker leading to it will be set for you." )
- if(CP[playerid] != 0) return SendClientMessage(playerid, COLOR_GREY, "You already have an active checkpoint, /killcp.");
- DisablePlayerCheckpointEx(playerid);
- SetPlayerCheckpointEx(playerid, 2324.2505, -2012.4784, 13.6222, 3.0);
- CP[playerid] = 1;
- return 1;
- }
- cmdveh_spawn( playerid, params[] ) {
- new cartext[128];
- if( playerSpawnedVehicle[playerid] > -1 ) {
- format( cartext, sizeof( cartext ), "You can only have one car spawned at a time, /v park your %s first.", GetVehicleFriendlyNameFromModel( PlayerVehicles[playerid][playerSpawnedVehicle[playerid]][pvmodel] ) );
- return SendClientMessage( playerid, COLOR_GREY, cartext );
- }
-
- new model[128], carslot;
- if( sscanf( params, "d", carslot ) ) {
- if( !sscanf( params, "s[128]", model ) ) {
- //incase they enter the model name instead
- for( new s; s < PlayerInfo[playerid][pMaxCarSlots]; s++ ) {
- if( strcmp( model, GetVehicleFriendlyNameFromModel( PlayerVehicles[playerid][s][pvmodel] ), true ) == 0) {
- spawnPlayerVehicle( playerid, s );
- format( cartext, sizeof( cartext ), "You have spawned your %s in its last parked position.", GetVehicleFriendlyNameFromModel( PlayerVehicles[playerid][s][pvmodel] ) );
- SendClientMessage( playerid, COLOR_GREY, cartext );
- return 1;
- }
- }
- }
- return SendClientMessage( playerid, COLOR_GREY, "{00BFFF}Usage:{FFFFFF} /v spawn [car slot/car name]" );
- }
-
- if( carslot > PlayerInfo[playerid][pMaxCarSlots] || carslot < 1 ) {
- return SendClientMessage( playerid, COLOR_GREY, "You didn't enter a correct car slot, check /v cars for a correct slot." );
- }
-
- if( PlayerInfo[playerid][pID] == PlayerVehicles[playerid][carslot][pvpID] ) {
- carslot--;
- spawnPlayerVehicle( playerid, carslot );
- format( cartext, sizeof( cartext ), "You have spawned your %s in its last parked position.", GetVehicleFriendlyNameFromModel( PlayerVehicles[playerid][carslot][pvmodel] ) );
- SendClientMessage( playerid, COLOR_GREY, cartext );
- return 1;
-
- }
-
- format( cartext, sizeof( cartext ), "You do not own this vehicle, consider looking at /v cars." );
- SendClientMessage( playerid, COLOR_GREY, cartext );
- return 1;
- }
- cmdveh_park( playerid, slot, model[] ) {
- #define veh(%0) PlayerVehicles[playerid][slot][pv%0]
- new cartext[128];
- if( GetPlayerVehicleID( playerid ) != veh(ID) ) {
- format( cartext, sizeof( cartext ), "You must be in your %s in order to park it.", model );
- SendClientMessage( playerid, COLOR_GREY, cartext );
- return 1;
- }
-
- GetVehiclePos( veh(ID), veh(parkx), veh(parky), veh(parkz) );
- GetVehicleZAngle( veh(ID), veh(parkrz) );
- destroyPlayerVehicle( playerid, slot );
-
- format( cartext, sizeof( cartext ), "You have parked your %s. It will spawn here next time you use /v spawn.", model );
- SendClientMessage( playerid, COLOR_LIGHTBLUE, cartext );
-
- #undef veh
- return 1;
- }
- cmdveh_givekeys( playerid, params[], slot, model[] ) {
- new player, cartext[128];
- if( sscanf( params, "u", player ) ) {
- return SendClientMessage( playerid, COLOR_GREY, "{00BFFF}Usage:{FFFFFF} /givekeys [playerid/playerName]" )
- }
-
- #define veh(%0) PlayerVehicles[playerid][slot][pv%0]
- if( !PlayerVehicles[playerid][slot][pvsparekey] ) {
- format( cartext, sizeof( cartext ), "You do not have any spare keys for your %s.", model );
- return SendClientMessage( playerid, COLOR_GREY, cartext );
- }
-
- if( !IsPlayerConnected( playerid ) ) {
- return SendClientMessage( playerid, COLOR_GREY, "ERROR: The player you provided is not connected." )
- }
-
- new Float:ppos[3]
- GetPlayerPos( player, ppos[0], ppos[1], ppos[2] )
- if( !IsPlayerInRangeOfPoint( playerid, 3.0, ppos[0], ppos[1], ppos[2] ) ) {
- return SendClientMessage( playerid, COLOR_GREY, "ERROR: You are not near the player." );
- }
-
- if( spareKeys[player] == playerid && spareKeysSlot[player] == slot ) {
- format( cartext, sizeof( cartext ), "You have already given this player your spare key to your %s.", model );
- return SendClientMessage( playerid, COLOR_GREY, cartext )
- }
-
- spareKeys[player] = playerid;
- spareKeysSlot[player] = slot;
- hasgivenKey[playerid] = 1;
- format( carstr, sizeof( carstr ), "%s has given you their spare key to their %s.", PlayerICName( playerid ), model )
- SendClientMessage( player, COLOR_LIGHTBLUE, carstr )
-
- format( carstr, sizeof( carstr ), "You have given %s your spare key to your %s.", PlayerICName( player ), model )
- SendClientMessage( playerid, COLOR_LIGHTBLUE, carstr )
- #undef veh
- return 1;
- }
- cmdveh_track( playerid, slot, model[] ) {
- new cartext[128];
- #define veh(%1) PlayerVehicles[playerid][slot][pv%1]
- if( veh(gps) ) {
- GetVehiclePos( veh(ID), veh(x), veh(y), veh(z) )
- SetPlayerCheckpointEx( playerid, veh(x), veh(y), veh(z), 5.0 )
- CP[playerid] = CHECKPOINT_CAR_TRACK
-
- format( cartext, sizeof( cartext ), "A marker leading to your %s has been placed on the minimap.", model );
- SendClientMessage( playerid, COLOR_LIGHTBLUE, cartext );
- }
- else {
- format( cartext, sizeof( cartext ), "Your %s does not have a GPS, consider buying one at the Garage in Willowfield.", model );
- SendClientMessage( playerid, COLOR_GREY, cartext )
- }
- #undef veh
- return 1;
- }
- cmdveh_cars( playerid ) {
- SendClientMessage( playerid, COLOR_LIGHTBLUE, "______________[ Your vehicles ]______________")
- new count;
- for( new i; i < PlayerInfo[playerid][pMaxCarSlots]; i++ ) {
-
- #define veh(%1) PlayerVehicles[playerid][i][pv%1]
-
- if( PlayerInfo[playerid][pCarID][i] < 1 ) continue;
-
- count++;
- new outputcars[128], outputupgrades[128];
- format( outputcars, sizeof( outputcars ), "Slot %d: %s", i+1, GetVehicleFriendlyNameFromModel( veh(model) ) );
-
- if( veh(alarm) || veh(insurance) || veh(gps) || veh(sparekey) ) {
- format( outputupgrades, sizeof( outputupgrades ), "( %s%s%s%s)",
- ( veh(gps) == 1 ) ? ( ( "GPS " ) ) : ( "" ), ( veh(alarm) == 1 ) ? ( ( "Alarm " ) ) : ( "" ), ( veh(insurance) == 1 ) ? ( ( "Insurance " ) ) : ( "" ),
- ( veh(sparekey) == 1 ) ? ( ( "Spare key " ) ) : ( "" ) );
-
- format( outputcars, sizeof( outputcars ), "%s %s", outputcars, outputupgrades );
- SendClientMessage( playerid, COLOR_GREY, outputcars );
- continue;
- }
- else {
- format( outputcars, sizeof( outputcars ), "%s (No upgrades)", outputcars );
- SendClientMessage( playerid, COLOR_GREY, outputcars );
- continue;
- }
- #undef veh
- }
- if( count == 0 ) {
- SendClientMessage( playerid, COLOR_GREY, "You do not have any owned vehicles." );
- }
- return 1;
- }
- CMD:lock( playerid, params[] ) {
- if( playerSpawnedVehicle[playerid] > -1 ) {
-
- new slot = playerSpawnedVehicle[playerid]
-
- #define veh(%1) PlayerVehicles[playerid][slot][pv%1] //This is just a marco to reduce repetition!
-
- GetVehiclePos( veh(ID), veh(x), veh(y), veh(z) ) //update vehicle coords
- if( !IsPlayerInRangeOfPoint( playerid, 5.0, veh(x), veh(y), veh(z) ) ) {
-
- SendClientMessage( playerid, COLOR_GREY, "You are not by any vehicles that you have the keys for." )
- return 1
- }
-
- if( veh(locked) ) {
- format( carstr, sizeof( carstr ), "* %s has unlocked their vehicle.", PlayerICName( playerid ) )
- }
- else {
- format( carstr, sizeof( carstr ), "* %s has locked their vehicle.", PlayerICName( playerid ) )
- }
- ProxDetector( 30.0, playerid, carstr, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE )
- veh(locked) = !veh(locked)
-
- SetVehicleLockState( veh(ID), veh(locked) )
- SetVehicleAlarmState( veh(ID), 0 )
- #undef veh
- return 1
- }
- if( spareKeys[playerid] > -1 && spareKeysSlot[playerid] > -1 ) {
- new Float: vpos[3];
- #define veh(%0) PlayerVehicles[spareKeys[playerid]][spareKeysSlot[playerid]][pv%0]
- if( veh(spawned) && veh(ID) != INVALID_VEHICLE_ID ) {
- GetVehiclePos( veh(ID), vpos[0], vpos[1], vpos[2] )
- if( IsPlayerInRangeOfPoint( playerid, 5.0, vpos[0], vpos[1], vpos[2] ) ) {
- if( veh(locked) ) {
- format( carstr, sizeof( carstr ), "* %s has unlocked their vehicle.", PlayerICName( playerid ) )
- }
- else {
- format( carstr, sizeof( carstr ), "* %s has locked their vehicle.", PlayerICName( playerid ) )
- }
- ProxDetector( 30.0, playerid, carstr, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE )
- veh(locked) = !veh(locked)
-
- SetVehicleLockState( veh(ID), veh(locked) )
- SetVehicleAlarmState( veh(ID), 0 )
- return 1
- }
- }
- #undef veh
- }
- SendClientMessage( playerid, COLOR_GREY, "You do not have any vehicle spawned that you have keys for." )
- return 1
- }
- //===================[ Player unowned vehicle commands ]=====================
- CMD:paintcar( playerid, params[] ) {
- SendClientMessage( playerid, COLOR_GREY, "Visit a vehicle modification shop to style the paintjob of a vehicle." )
- return 1
- }
- //This was just copied and pasted from GM.
- CMD:spraycar(playerid, params[])
- {
- if(PlayerInfo[playerid][pSpraycan] == 0) return SendClientMessage(playerid, COLOR_GREY, "Your spraycan is empty.");
- if(IsPlayerInAnyVehicle(playerid))
- {
- new c1, c2;
- if(sscanf(params, "iI(-1)", c1, c2)) return SendClientMessage(playerid, COLOR_GREY, "{00BFFF}Usage:{FFFFFF} /colorcar [0-255] [0-255(optional)]");
- {
- new veh = GetPlayerVehicleID(playerid);
- if(c2 == -1) c2 = c1;
- if(c1 < 0 || c1 > 255 || c2 < 0 || c2 > 255) return SendClientMessage(playerid, COLOR_GREY, "The colors are between 0 and 255.");
- ChangeVehiclePaintjob(veh, 3);
- ChangeVehicleColor(veh, c1, c2);
- if(c2 == c1) format(str, sizeof(str), "You have sprayed your vehicle to be %s (%d).", GetVehicleColorName(c1), c1);
- else format(str, sizeof(str), "You have sprayed the vehicle to be %s (%d) and %s (%d).", GetVehicleColorName(c1), c1, GetVehicleColorName(c2), c2);
- SendClientMessage(playerid, COLOR_GREY, str);
- if(c2 == c1)format(str, sizeof(str), "* %s uses a spraycan to spray the %s to be %s. *", PlayerICName(playerid), GetVehicleFriendlyName(veh), GetVehicleColorName(c1));
- else format(str, sizeof(str), "* %s uses a spraycan to spray the %s to be %s and %s. *", PlayerICName(playerid), GetVehicleFriendlyName(veh), GetVehicleColorName(c1), GetVehicleColorName(c2));
- ProxDetector(30.0, playerid, str, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
- PlayerInfo[playerid][pSpraycan]--;
- PlayerPlaySound(playerid, 1134, 0.0, 0.0, 0.0);
- for( new i; i <= GetPlayerPoolSize(); i++ ) {
- for( new slot; slot < MAX_VEHICLE_SLOTS; slot++ ) {
- if( PlayerVehicles[i][slot][pvID] == veh ) {
- PlayerVehicles[i][slot][pvcolor1] = c1
- PlayerVehicles[i][slot][pvcolor2] = c2
- PlayerVehicles[i][slot][pvpaintjob] = 3
- break
- }
- }
- }
- }
- } else return SendClientMessage(playerid, COLOR_GREY, "You must be in a vehicle.");
- return 1;
- }
- CMD:colorcar( playerid, params[] ) {
- return cmd_spraycar( playerid, params ); //make players happy...
- }
- //CMD:breakin
- new vehiclePickCount[MAX_PLAYERS]
- new lastbrokenin[MAX_PLAYERS]
- breakinPlayerVehicle( playerid ) {
- //restrict usage to 1/per30 seconds
- if( gettime() < lastbrokenin[playerid] + 30 ) {
- return SendClientMessage( playerid, COLOR_GREY, "You must wait 30 seconds before breaking into another vehicle." )
- }
- new Float:vpos[3]
- for( new i; i < GetPlayerPoolSize()+1; i++ ) {
- new slot = playerSpawnedVehicle[i]
- if( slot < 0 ) continue
-
- #define veh(%1) PlayerVehicles[i][slot][pv%1]
-
- GetVehiclePos( veh(ID), vpos[0], vpos[1], vpos[2] )
- if( IsPlayerFacingPoint( playerid, 5.0, vpos[0], vpos[1], vpos[2], 50.0 ) ) {
- if( !veh(locked) ) {
- return SendClientMessage( playerid, COLOR_GREY, "This vehicle is already unlocked." )
- }
- //If vehicle has alarm notify owner, set the alarm to go off
- if( veh(alarm) ) {
- if( playerSpawnedVehicle[i] > -1 ) {
- format( carstr, sizeof( carstr ), "SMS: This is an automated message informing you that your %s alarm has been activated.", GetVehicleFriendlyName( veh(ID) ) )
- SendClientMessage( i, COLOR_YELLOW, carstr )
-
- SetVehicleAlarmState( veh(ID) ) //sound the alarm for 35secs
- }
- }
-
- LockPickingCar[playerid] = i
- vehiclePickCount[playerid] = 0
-
- //command usage restriction
- lastbrokenin[playerid] = gettime()
-
- SetTimerEx( "OnBreakinExpire", 18*1000, false, "ii", playerid, veh(ID) )
- SetPlayerProgressBarValue( playerid, workingProgress[playerid], 1.0 )
- ShowPlayerProgressBar( playerid, workingProgress[playerid] )
-
- format( carstr, sizeof( carstr ), "* %s fiddles with the vehicle's lock using their screwdriver. *", PlayerICName( playerid ) )
- ProxDetector( 30.0, playerid, carstr, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE )
- //LoopingAnim( playerid, "POOL", "POOL_ChalkCue", 4.1, 0, 1, 1, 1, 1 )
- ApplyAnimation( playerid, "POOL", "POOL_ChalkCue", 4.1, 0, 1, 1, 1, 1, 1 )
-
- displayCenterHUDInfo( playerid, "TIP: Rapidly tap ~r~Y~w~ to break in", 4);
- //SendClientMessage( playerid, COLOR_GREY, "TIP: tap Y rapidly to unlock the vehicle." )
- return 1
- }
- #undef veh
- }
- SendClientMessage( playerid, COLOR_GREY, "You are not by any vehicle." )
- return 1
- }
- //player taking too long to breakin
- forward OnBreakinExpire( playerid, vehid );
- public OnBreakinExpire( playerid, vehid ) {
- if( LockPickingCar[playerid] == -1 ) {
- return 1
- }
-
- vehiclePickCount[playerid] = 0
- LockPickingCar[playerid] = -1
- HidePlayerProgressBar( playerid, workingProgress[playerid] )
-
- SendClientMessage( playerid, COLOR_GREY, "You have failed to break into the vehicle." )
- ClearAnimations( playerid )
- ApplyAnimationEx( playerid, "CARRY", "crry_prtial", 4.0, 0, 0, 0, 0, 0 )
- return 1
- }
- new lastcheckplate[MAX_PLAYERS]
- CMD:checkplate( playerid, params[] ) {
- if( gettime() < lastcheckplate[playerid] + 10 ) {
- return SendClientMessage( playerid, COLOR_GREY, "You must wait 10 seconds to allow the system to cool down." )
- }
- if( PlayerInfo[playerid][pMember] != 1 && PlayerInfo[playerid][pMember] != 2 && PlayerInfo[playerid][pMember] != 5 && PlayerInfo[playerid][pMember] != 11) {
- return SendClientMessage( playerid, COLOR_GREY, "You do not have access to the correct systems to use this command." )
- }
-
- if( IsPlayerInAnyVehicle( playerid ) ) {
- if( sVehicleInfo[GetDynamicVehicleID( GetPlayerVehicleID( playerid ) )][v_faction] > 0 ) {
- new model[128], plate[128]
- if( sscanf( params, "s[128]s[128]", model, plate ) ) {
- return SendClientMessage( playerid, COLOR_GREY, "{00BFFF}Usage:{FFFFFF} /checkplates [vehicleName] [plate]" )
- }
-
- new modelid = ReturnVehicleModelID( model )
-
- lastcheckplate[playerid] = gettime()
- SendClientMessage( playerid, COLOR_LIGHTBLUE, "The following vehicles have matching vehicle plates,")
-
- new count
- for( new i; i <= GetPlayerPoolSize(); i++ ) {
- for( new slot; slot < PlayerInfo[i][pMaxCarSlots]; slot++ ) {
- if( PlayerVehicles[i][slot][pvmodel] == modelid ) {
- if( strcmp( PlayerVehicles[i][slot][pvplate], plate, true ) == 0 ) {
- if( strlen( PlayerVehicles[i][slot][pvplate] ) > 1 ) {
- format( carstr, sizeof( carstr ), "Owner: %s | Vehicle model: %s | Plate: %s", PlayerICName( PlayerVehicles[i][slot][pvplayerID] ), GetVehicleFriendlyNameFromModel( modelid ), PlayerVehicles[i][slot][pvplate] )
- SendClientMessage( playerid, COLOR_GREY, carstr )
- count++
- }
- }
- }
- }
- }
- if( count == 0 ) {
- SendClientMessage( playerid, COLOR_GREY, "There were no results." )
- }
- return 1
- }
- }
- SendClientMessage( playerid, COLOR_GREY, "You are not in a faction vehicle." )
- return 1
- }
- /*
- ****** Administrator Vehicle Commands *******
- ===================================================
- */
- CMD:checkcars( playerid, params[] ) {
- if( PlayerInfo[playerid][pAdmin] < 1 ) {
- return SendClientMessage( playerid, COLOR_GREY, "You are not authorized to use this command." )
- }
- new player
- if( sscanf( params, "u", player ) ) {
- return SendClientMessage( playerid, COLOR_GREY, "{00BFFF}Usage:{FFFFFF} /checkvehicles [playerid/playerName]" )
- }
- if( !IsPlayerConnected(player) ) {
- return SendClientMessage( playerid, COLOR_GREY, "That player isn't connected." )
- }
-
- format( carstr, sizeof( carstr ), "_______[ %s's vehicles ]_______", PlayerICName( player ) )
- SendClientMessage( playerid, COLOR_LIGHTBLUE, carstr )
-
- new count
- for( new i; i < PlayerInfo[player][pMaxCarSlots]; i++ ) {
- if( PlayerInfo[player][pCarID][i] < 1 ) continue
-
- #define veh(%1) PlayerVehicles[player][i][pv%1]
-
- //veh name
- format( carstr, sizeof( carstr ), "Car slot %d: %s (%s) [vehicleid: %d] %s", i+1, GetVehicleFriendlyNameFromModel( veh(model) ), veh(plate), veh(ID), ( veh(impounded) == 1 ) ? ( ( "- IMPOUNDED" ) ) : ( "" ) )
- SendClientMessage( playerid, COLOR_WHITE, carstr )
- //veh info
- format( carstr, sizeof( carstr ), " Upgrades: %s %s %s %s",
- ( veh(gps) == 1 ) ? ( ( "GPS" ) ) : ( "" ), ( veh(alarm) == 1 ) ? ( ( "Alarm" ) ) : ( "" ), ( veh(insurance) == 1 ) ? ( ( "Insurance" ) ) : ( "" ),
- ( veh(sparekey) == 1 ) ? ( ( "Spare key" ) ) : ( "" ) )
- SendClientMessage( playerid, COLOR_GREY, carstr )
- count++
- #undef veh
- }
- if( count < 1 ) {
- SendClientMessage( playerid, COLOR_GREY, "This player doesn't own any vehicles." )
- }
- SendClientMessage( playerid, COLOR_GREY, "________________________________" )
- return 1
- }
- CMD:givecar( playerid, params[] ) {
- if( PlayerInfo[playerid][pAdmin] < 4 ) {
- return SendClientMessage( playerid, COLOR_GREY, "You are not authorized to use this." )
- }
-
- if( pVehiclePool == MAX_OWNED_VEHICLES-1 ) {
- return SendClientMessage( playerid, COLOR_GREY, "Maximum vehicle treshold has been reached. Contact a developer." )
- }
-
- if( pVehiclePool + 199 > MAX_OWNED_VEHICLES ) {
- SendClientMessage( playerid, COLOR_GREY, "Maximum vehicle treshold has less than 200 slots free. Contact a developer immediately." )
- }
-
- new player, model[128]
- if( sscanf( params, "us[128]", player, model ) ) {
- return SendClientMessage( playerid, COLOR_GREY, "{00BFFF}Usage:{FFFFFF} /givecar [playerid/name] [vehicleName/ID]" )
- }
-
- if( !IsPlayerConnected( player ) ) {
- return SendClientMessage( playerid, COLOR_GREY, "That player isn't connected." );
- }
-
- new modelid = ReturnVehicleModelID( model );
- if(IsFactionVehicle(modelid)) return SendClientMessage(playerid, COLOR_GREY, "Players cannot own faction vehicles.");
-
- new slot = GetPlayerFreeCarslot( player )
- if( slot == -1 ) {
- return SendClientMessage( playerid, COLOR_GREY, "That player has no more room for more cars." )
- }
- new Float:pos[4]
- GetPlayerPos( playerid, pos[0], pos[1], pos[2] )
- GetPlayerFacingAngle( playerid, pos[3] )
- createPlayerVehicle( player, slot, modelid, pos[0] + 5, pos[1], pos[2], pos[3] )
-
- new vehstr[128]
- format( vehstr, sizeof( vehstr ), "You have given %s a %s.", PlayerICName( player ), GetVehicleFriendlyNameFromModel( modelid ) )
- SendClientMessage( playerid, COLOR_GREY, vehstr )
- SendClientMessage( playerid, COLOR_GREY, "Notify the player of the location of their parked car (here). It will spawn when they tow it." )
- format( vehstr, sizeof( vehstr ), "%s has given you a %s. It's now accessable in /v, it will spawn at the admin's position." , PlayerICName( playerid ), GetVehicleFriendlyNameFromModel( modelid ) )
- SendClientMessage( player, COLOR_LIGHTBLUE, vehstr )
- return 1
- }
- CMD:removecar( playerid, params[] ) {
- if( PlayerInfo[playerid][pAdmin] < 4 ) {
- return 1
- }
-
- new player, slot
- if( sscanf( params, "ui", player, slot ) ) {
- return SendClientMessage( playerid, COLOR_GREY, "{00BFFF}Usage:{FFFFFF} /removecar [playerID/playerName] [slot]" )
- }
-
- if( slot > PlayerInfo[player][pMaxCarSlots] || slot < 1 ) {
- return SendClientMessage( playerid, COLOR_GREY, "You must enter a valid car slot (between 1 and 3-4). HINT: see /checkcars." )
- }
-
- if( !IsPlayerConnected( player ) ) {
- return SendClientMessage( playerid, COLOR_GREY, "That player is not connected." )
- }
-
- new car_str[128]
- slot--
-
- #define veh(%0) PlayerVehicles[player][slot][pv%0]
-
-
- if( PlayerInfo[player][pCarID][slot] < 1 ) {
- return SendClientMessage( playerid, COLOR_GREY, "This player doesn't have a vehicle in this slot." )
- }
-
- format( car_str, 128, "You have destroyed %s's %s.", PlayerICName( player ), GetVehicleFriendlyNameFromModel( veh(model) ) )
- SendClientMessage( playerid, COLOR_GREY, car_str )
-
-
-
- if( veh(pID) != PlayerInfo[player][pID] ) {
- PlayerInfo[player][pCarID][slot] = 0
- return 1;
- }
- PlayerInfo[player][pCarID][slot] = 0
-
- destroyPlayerVehicle( player, slot )
- veh(pID) = -1
- veh(model) = 0
- veh(impounded) = 0
- veh(gps) = 0
- veh(insurance) = 0
- veh(sparekey) = 0
- veh(alarm) = 0
- veh(Gun1) = 0
- veh(Gun2) = 0
- veh(Pot) = 0
- veh(Crack) = 0
- veh(Armor) = 0
- veh(damage) = 1000.00
- veh(playerID) = INVALID_PLAYER_ID
- mysql_format( sqlGameConnection, car_str, 128, "DELETE FROM playervehicles WHERE ID = %d;", veh(SQLID) )
- mysql_pquery( sqlGameConnection, car_str )
- SQLSave( playerid )
-
- #undef veh
- return 1
- }
- CMD:oldvehicle( playerid, params[] ) {
- if( PlayerInfo[playerid][pAdmin] < 1 && PlayerInfo[playerid][pDev] < 1 ) {
- return 1;
- }
-
- new id;
- if( sscanf( params, "i", id ) ) {
- return SendClientMessage( playerid, COLOR_GREY, "USAGE:/oldvehicle [car key(ID)]" );
- }
-
- if( !IsPlayerConnected( id ) ) {
- return SendClientMessage( playerid, COLOR_GREY, "Invalid player ID." );
- }
-
- new query[300];
- mysql_format( sqlGameConnection, query, sizeof( query ), "SELECT CKey1, CKey2 FROM players2 WHERE ID = %d", PlayerInfo[id][pID] );
- mysql_pquery( sqlGameConnection, query, "VehicleRefund", "ii", playerid, id );
- return 1;
- }
- forward VehicleRefund( playerid, id );
- public VehicleRefund( playerid, id ) {
- new rows, fields, CKey[2];
- cache_get_data( rows, fields );
- if( !rows ) {
-
- return SendClientMessage( playerid, COLOR_GREY, "Provided playerid not found." );
- }
-
- CKey[0] = cache_get_field_content_int( 0, "CKey1" );
- CKey[1] = cache_get_field_content_int( 0, "CKey2" );
-
- printf("oldvehicles: Ckey1: %d, CKey2: %d", CKey[0], CKey[1] );
-
- for( new i; i < sizeof( CKey ); i++ ) {
- new strFile[48];
- format(strFile, sizeof(strFile), "cars/%d.ini", CKey[i] );
- if(!fexist(strFile)) {
- return SendClientMessage( playerid, COLOR_GREY, "The old vehicle does not exist." );
- }
- new model;
-
- new File:fCar = fopen(strFile, io_read);
- new strData[128], strKey[128];
- while(fread(fCar, strData, sizeof(strData)))
- {
- strKey = ini_GetKey(strData);
- if(strcmp(strKey, "Model") == 0) model = strvalEx(ini_GetValue(strData));
- }
- fclose(fCar);
-
- new output[128];
- format( output, 128, "The old vehicle model of slot %d was: %d", i, model );
- SendClientMessage( playerid, COLOR_GREY, output );
- }
- return 1;
- }
|