Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- FS:Plate v3
- Made by Marricio / Mecaurio.
- NOTE:
- When you change the plate the Z angle is modified that means it will work as 'flip' command too.
- */
- #include a_samp
- #include zcmd
- #define DIALOG_PLATE 1000
- new vehiclePlate[MAX_VEHICLES][128];
- new szString[128];
- stock StripText(text[])
- {
- for(new i=0; i<strlen(text); i++)
- {
- if(text[i] == '(' && text[i+7] == ')')
- {
- text[i] = '{';
- text[i+7] = '}';
- }
- }
- return 1;
- }
- stock strreplace(_string[], const search[], const replacement[], bool:ignorecase = false, pos = 0, limit = -1, maxlength = sizeof (_string) ) {
- // No need to do anything if the limit is 0.
- if (limit == 0)
- return 0;
- new
- sublen = strlen(search),
- replen = strlen(replacement),
- bool:packed = ispacked(_string),
- maxlen = maxlength,
- len = strlen(_string),
- count = 0
- ;
- // "maxlen" holds the max _string length (not to be confused with "maxlength", which holds the max. array size).
- // Since packed _strings hold 4 characters per array slot, we multiply "maxlen" by 4.
- if (packed)
- maxlen *= 4;
- // If the length of the sub_string is 0, we have nothing to look for..
- if (!sublen)
- return 0;
- // In this line we both assign the return value from "strfind" to "pos" then check if it's -1.
- while (-1 != (pos = strfind(_string, search, ignorecase, pos))) {
- // Delete the _string we found
- strdel(_string, pos, pos + sublen);
- len -= sublen;
- // If there's anything to put as replacement, insert it. Make sure there's enough room first.
- if (replen && len + replen < maxlen) {
- strins(_string, replacement, pos, maxlength);
- pos += replen;
- len += replen;
- }
- // Is there a limit of number of replacements, if so, did we break it?
- if (limit != -1 && ++count >= limit)
- break;
- }
- return count;
- }
- CMD:plate( playerid, params[] )
- {
- if( !IsPlayerInAnyVehicle( playerid ) ) return SendClientMessage( playerid, -1, "{c0c0c0}Error:{ffffff} You need to be in a vehicle." );
- new dialogstring[600];
- strcat( dialogstring, "{ffffff}Write in the text to be in the vehicle's plate\n\n{248eff}FORMAT TAGS:\n_______________________________________________________________________________\n\n" );
- strcat( dialogstring, "{ffffff}(white) white text\n{F21D1D}(red) red text\n{1D5DF2}(blue) blue text\n{F2EB1D}(yellow) yellow text\n{DD1DF2}(purple) purple text\n{68C24F}(green) green text\n" );
- strcat( dialogstring, "{ffffff}Or if you want to use hexadecimal numbers use the following format: (FFFFFF).\n\n{ff0000}Don't make the text too long!." );
- ShowPlayerDialog( playerid, DIALOG_PLATE, DIALOG_STYLE_INPUT, "{ffffff}Write in the text to be displayed in the plate", dialogstring, "Set", "Cancel" );
- return 1;
- }
- CMD:resetplate( playerid, params[] )
- {
- if( isnull( params ) ) return SendClientMessage( playerid, -1, "{c0c0c0}Syntax:{ffffff} /resetplate [vehicleid]" );
- if( !IsPlayerAdmin( playerid ) ) return SendClientMessage( playerid, -1, "{c0c0c0}Error:{ffffff} You're not an administrator." );
- new Float:vehicle_pos[4], vehicleid = strval( params );
- format( vehiclePlate[vehicleid], 128, "default" );
- SetVehicleNumberPlate( vehicleid, "default" );
- GetVehiclePos( vehicleid, vehicle_pos[0], vehicle_pos[1], vehicle_pos[2] );
- GetVehicleZAngle( vehicleid, vehicle_pos[3] );
- SetVehicleToRespawn( vehicleid );
- SetVehiclePos( vehicleid, vehicle_pos[0], vehicle_pos[1], vehicle_pos[2] );
- SetVehicleZAngle( vehicleid, vehicle_pos[3] );
- return 1;
- }
- CMD:getplate( playerid, params[] )
- {
- if( isnull( params ) ) return SendClientMessage( playerid, -1, "{c0c0c0}Syntax:{ffffff} /getplate [vehicleid]" );
- format( szString, 128, "[VEHICLE ID: %d | PLATE: %s]", strval( params ), vehiclePlate[strval( params )] );
- SendClientMessage( playerid, -1, szString );
- return 1;
- }
- public OnDialogResponse( playerid, dialogid, response, listitem, inputtext[] )
- {
- if( dialogid == DIALOG_PLATE )
- {
- if( !response ) return 1;
- new newplate[128];
- format( newplate, 128, inputtext );
- if( isnull( newplate ) )
- {
- new dialogstring[600];
- strcat( dialogstring, "{ffffff}Write in the text to be in the vehicle's plate\n\n{248eff}FORMAT TAGS:\n_______________________________________________________________________________\n\n" );
- strcat( dialogstring, "{ffffff}(white) white text\n{F21D1D}(red) red text\n{1D5DF2}(blue) blue text\n{F2EB1D}(yellow) yellow text\n{DD1DF2}(purple) purple text\n{68C24F}(green) green text\n" );
- strcat( dialogstring, "{ffffff}Or if you want to use hexadecimal numbers use the following format: (FFFFFF).\n\n{ff0000}Don't make the text too long! (excluding color formats)." );
- ShowPlayerDialog( playerid, DIALOG_PLATE, DIALOG_STYLE_INPUT, "{ffffff}Write in the text to be displayed in the plate", dialogstring, "Set", "Cancel" );
- return 1;
- }
- strreplace( newplate, "(white)", "{FFFFFF}", true );
- strreplace( newplate, "(red)", "{F21D1D}", true );
- strreplace( newplate, "(blue)", "{1D5DF2}", true );
- strreplace( newplate, "(yellow)", "{F2EB1D}", true );
- strreplace( newplate, "(purple)", "{DD1DF2}", true );
- strreplace( newplate, "(green)", "{68C24F}", true );
- StripText( newplate ); // This is to detect and fix hexadecimal numbers.
- new playervehicle, Float:vehicle_pos[4];
- playervehicle = GetPlayerVehicleID( playerid );
- format( vehiclePlate[playervehicle], 128, "%s", newplate );
- SetVehicleNumberPlate( playervehicle, newplate );
- GetPlayerPos( playerid, vehicle_pos[0], vehicle_pos[1], vehicle_pos[2] );
- GetVehicleZAngle( playervehicle, vehicle_pos[3] );
- SetVehicleToRespawn( playervehicle );
- SetVehiclePos( playervehicle, vehicle_pos[0], vehicle_pos[1], vehicle_pos[2] );
- SetVehicleZAngle( playervehicle, vehicle_pos[3] );
- PutPlayerInVehicle( playerid, playervehicle, 0 );
- format( szString, 128, "Your vehicle plate has succesfully changed to %s.", newplate );
- SendClientMessage( playerid, -1, szString );
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment