SA-MP Forums

Go Back   SA-MP Forums > SA-MP Scripting and Plugins > Scripting Help

Reply
 
Thread Tools Display Modes
Old 02/10/2019, 03:23 PM   #1
Sh4rp
Little Clucker
 
Join Date: Sep 2019
Location: Italy
Posts: 27
Reputation: 14
Default stock GetVehicleName doesn't work

Hello,
this is my code:
Code:
new VehNames[212][] = {
	{"Landstalker"},{"Bravura"},{"Buffalo"},{"Linerunner"},{"Perrenial"},{"Sentinel"},
	{"Dumper"},{"Firetruck"},{"Trashmaster"},{"Stretch"},{"Manana"},{"Infernus"},{"Voodoo"},
	{"Pony"},{"Mule"},{"Cheetah"},{"Ambulance"},{"Leviathan"},{"Moonbeam"},{"Esperanto"},{"Taxi"},
	{"Washington"},{"Bobcat"},{"Mr. Whoopee"},{"BF. Injection"},{"Hunter"},{"Premier"},{"Enforcer"},
	{"Securicar"},{"Banshee"},{"Predator"},{"Bus"},{"Rhino"},{"Barracks"},{"Hotknife"},{"Article Trailer"},
	{"Previon"},{"Coach"},{"Cabbie"},{"Stallion"},{"Rumpo"},{"RC Bandit"},{"Romero"},{"Packer"},{"Monster"},
	{"Admiral"},{"Squalo"},{"Seasparrow"},{"Pizzaboy"},{"Tram"},{"Article Trailer 2"},{"Turismo"},{"Speeder"},
	{"Reefer"},{"Tropic"},{"Flatbed"},{"Yankee"},{"Caddy"},{"Solair"},{"Berkley's RC Van"},{"Skimmer"},
	{"PCJ-600"},{"Faggio"},{"Freeway"},{"RC Baron"},{"RC Raider"},{"Glendale"},{"Oceanic"},{"Sanchez"},
	{"Sparrow"},{"Patriot"},{"Quad"},{"Coastguard"},{"Dinghy"},{"Hermes"},{"Sabre"},{"Rustler"},{"ZR-350"},
	{"Walton"},{"Regina"},{"Comet"},{"BMX"},{"Burrito"},{"Camper"},{"Marquis"},{"Baggage"},{"Dozer"},
	{"Maverick"},{"News Chopper"},{"Rancher"},{"FBI Rancher"},{"Virgo"},{"Greenwood"},{"Jetmax"},{"Hotring"},
	{"Sandking"},{"Blista Compact"},{"Police Maverick"},{"Boxville"},{"Benson"},{"Mesa"},{"RC Goblin"},
	{"Hotring Racer A"},{"Hotring Racer B"},{"Bloodring Banger"},{"Rancher"},{"Super GT"},{"Elegant"},
	{"Journey"},{"Bike"},{"Mountain Bike"},{"Beagle"},{"Cropdust"},{"Stunt"},{"Tanker"},{"Roadtrain"},
	{"Nebula"},{"Majestic"},{"Buccaneer"},{"Shamal"},{"Hydra"},{"FCR-900"},{"NRG-500"},{"HPV1000"},
	{"Cement Truck"},{"Tow Truck"},{"Fortune"},{"Cadrona"},{"FBI Truck"},{"Willard"},{"Forklift"},
	{"Tractor"},{"Combine"},{"Feltzer"},{"Remington"},{"Slamvan"},{"Blade"},{"Freight"},{"Streak"},
	{"Vortex"},{"Vincent"},{"Bullet"},{"Clover"},{"Sadler"},{"Firetruck LA"},{"Hustler"},{"Intruder"},
	{"Primo"},{"Cargobob"},{"Tampa"},{"Sunrise"},{"Merit"},{"Utility"},{"Nevada"},{"Yosemite"},{"Windsor"},
	{"Monster A"},{"Monster B"},{"Uranus"},{"Jester"},{"Sultan"},{"Stratum"},{"Elegy"},{"Raindance"},
	{"RC Tiger"},{"Flash"},{"Tahoma"},{"Savanna"},{"Bandito"},{"Freight Flat"},{"Streak Carriage"},
	{"Kart"},{"Mower"},{"Dunerider"},{"Sweeper"},{"Broadway"},{"Tornado"},{"AT-400"},{"DFT-30"},{"Huntley"},
	{"Stafford"},{"BF-400"},{"Newsvan"},{"Tug"},{"Article Trailer 3"},{"Emperor"},{"Wayfarer"},{"Euros"},{"Mobile Hotdog"},
	{"Club"},{"Freight Carriage"},{"Trailer 3"},{"Andromada"},{"Dodo"},{"RC Cam"},{"Launch"},{"Police Car (LSPD)"},
	{"Police Car (SFPD)"},{"Police Car (LVPD)"},{"Police Ranger"},{"Picador"},{"S.W.A.T. Van"},{"Alpha"},
	{"Phoenix"},{"Glendale"},{"Sadler"},{"Luggage Trailer A"},{"Luggage Trailer B"},{"Stair Trailer"},
	{"Boxville"},{"Farm Plow"},{"Utility Trailer"}
};

stock GetVehicleName(vehicleid)
{
	new GVNString[56];
	format(GVNString, sizeof(GVNString), VehNames[GetVehicleModel(vehicleid)-400]);
	return GVNString;
}
and this is where I'm using it:
Code:
CMD:createveh(playerid, params[])
{
	new vehID;
	new string[128];
	new Float:X, Float:Y, Float:Z;
	GetPlayerPos(playerid, Float:X, Float:Y, Float:Z);
	if(sscanf(params, "i", vehID)) return SendClientMessage(playerid, COLOR_RED, "[ERRORE] Sintassi errata, utilizza: /createveh [vehID].");
	else if(vehID < 400 || vehID > 611) return SendClientMessage(playerid, COLOR_RED, "[ERRORE] Parametro [vehID] errato.");
    else
    {
    	pVehicle[playerid] = CreateVehicle(vehID, X, Y, Z + 3.0, 0, -1, -1, -1, 1);
    	format(string,sizeof(string), "[SUCCESSO] Hai spawnato un(a) %s (%i).", GetVehicleName(vehID), vehID);
    	SendClientMessage(playerid, COLOR_GREEN, string);
    	PutPlayerInVehicle(playerid, pVehicle[playerid], 0);
    }
    return 1;
}
The gm compiles, the server runs and even the script (partially) works. The vehicle gets created but string doesn't get printed and the player is not put in the vehicle. I just get "SERVER: Unknown command.".
I think something is wrong with the way I use GetVehicleName with format. I've tried declaring vehName[124] inside else{} and formatting it with GetVehicleName before formatting string with vehName, vehID but this way the vehicle doesn't even get spawned.
Could you help me, please? Thanks. ^^
__________________
Discord contact: @Sharp#1708
Sh4rp is offline   Reply With Quote
Old 02/10/2019, 03:27 PM   #2
NoteND
Huge Clucker
 
Join Date: May 2016
Posts: 261
Reputation: 5
Default Re: stock GetVehicleName doesn't work

Use this function

Code:
stock static GetVehicleName(modelid)
{
    static vehName[30];
    strunpack(vehName, VehicleNames[modelid - 400]);
    return vehName;
}
NoteND is offline   Reply With Quote
Old 02/10/2019, 04:15 PM   #3
Sh4rp
Little Clucker
 
Join Date: Sep 2019
Location: Italy
Posts: 27
Reputation: 14
Default Re: stock GetVehicleName doesn't work

Quote:
Originally Posted by NoteND View Post
Use this function

Code:
stock static GetVehicleName(modelid)
{
    static vehName[30];
    strunpack(vehName, VehicleNames[modelid - 400]);
    return vehName;
}
Thanks for your reply, it works.
But, why it doesn't with this code:
Code:
CMD:destroyveh(playerid, params[])
{
	new vehID;
	new string[128];
	if(sscanf(params, "i", vehID)) return SendClientMessage(playerid, COLOR_RED, "[ERRORE] Sintassi errata, utilizza: /destroyveh [vehID].");
	else if(IsValidVehicle(vehID))
		{
			DestroyVehicle(vehID);
			format(string, sizeof(string), "[SUCCESSO] Hai despawnato un(a) %s (%i).", GetVehicleName(vehID), vehID);
			SendClientMessage(playerid, COLOR_GREEN, string);
		}
	else SendClientMessage(playerid, COLOR_RED, "[ERRORE] Parametro [vehID] errato.");
	return 1;
}
?
Sorry if it is a noob question.
__________________
Discord contact: @Sharp#1708
Sh4rp is offline   Reply With Quote
Old 02/10/2019, 05:50 PM   #4
SlowARG
Little Clucker
 
Join Date: Feb 2014
Posts: 38
Reputation: 18
Default Re: stock GetVehicleName doesn't work

Quote:
Originally Posted by Sh4rp View Post
Thanks for your reply, it works.
But, why it doesn't with this code:
~snip~
GetVehicleName(vehID) should be GetVehicleName(GetVehicleModel(vehID))
__________________
My releases:

[GitLab] [Plugin] Nobody's fork of YSF
[GitLab] [FilterScript] SA-MP S.S.F.P.
SlowARG is offline   Reply With Quote
Old 03/10/2019, 07:43 AM   #5
Sh4rp
Little Clucker
 
Join Date: Sep 2019
Location: Italy
Posts: 27
Reputation: 14
Default Re: stock GetVehicleName doesn't work

Quote:
Originally Posted by SlowARG View Post
GetVehicleName(vehID) should be GetVehicleName(GetVehicleModel(vehID))
When I'm home I'll try it. I have one more question: what's the difference between the code I wrote in cmd:createveh (GetVehicleName(vehID) works perfectly) and cmd:deleteveh (where I need to put GetVehicleName(GetVehicleModel(vehID)))?
__________________
Discord contact: @Sharp#1708
Sh4rp is offline   Reply With Quote
Old 03/10/2019, 11:48 AM   #6
Jonny
Huge Clucker
 
Jonny's Avatar
 
Join Date: Nov 2009
Location: Italy
Posts: 280
Reputation: 38
Default Re: stock GetVehicleName doesn't work

Quote:
Originally Posted by Sh4rp View Post
When I'm home I'll try it. I have one more question: what's the difference between the code I wrote in cmd:createveh (GetVehicleName(vehID) works perfectly) and cmd:deleteveh (where I need to put GetVehicleName(GetVehicleModel(vehID)))?
Because in createveh you use vehID as model
__________________
Jonny is offline   Reply With Quote
Old 03/10/2019, 02:26 PM   #7
Sh4rp
Little Clucker
 
Join Date: Sep 2019
Location: Italy
Posts: 27
Reputation: 14
Default Re: stock GetVehicleName doesn't work

I've tried with SlowARG's code and it doesn't compile. This is my code:
Code:
CMD:destroyveh(playerid, params[])
{
	new vehID;
	new string[128];
	if(sscanf(params, "i", vehID)) return SendClientMessage(playerid, COLOR_RED, "[ERRORE] Sintassi errata, utilizza: /destroyveh [vehID].");
	else if(IsValidVehicle(vehID))
		{
			DestroyVehicle(vehID);
			format(string, sizeof(string), "[SUCCESSO] Hai despawnato un(a) %s (%i).", GetVehicleName(GetVehicleModel(vehID));
			SendClientMessage(playerid, COLOR_GREEN, string);
		}
	else SendClientMessage(playerid, COLOR_RED, "[ERRORE] Parametro [vehID] errato.");
	return 1;
}
I get this error:error 001: expected token: ",", but found ";"
__________________
Discord contact: @Sharp#1708
Sh4rp is offline   Reply With Quote
Old 03/10/2019, 03:00 PM   #8
xRadical3
Gangsta
 
Join Date: May 2017
Location: Iran
Posts: 691
Reputation: 63
Lightbulb Re: stock GetVehicleName doesn't work

pawn Code:
CMD:destroyveh(playerid, params[])
{
    new vehID, string[128];
    if(sscanf(params, "i", vehID)) return SendClientMessage(playerid, COLOR_RED, "[ERRORE] Sintassi errata, utilizza: /destroyveh [vehID].");
    if(IsValidVehicle(vehID))
    {
        format(string, sizeof(string), "[SUCCESSO] Hai despawnato un(a) %s (Model ID: %i | ID: %i).", VehNames[GetVehicleModel(vehID) - 400], GetVehicleModel(vehID), vehID);
        SendClientMessage(playerid, COLOR_GREEN, string);
        DestroyVehicle(vehID);
    } else SendClientMessage(playerid, COLOR_RED, "[ERRORE] Parametro [vehID] errato.");
    return 1;
}
//not need use stock for get vehicle name. Use this.
//and `DestroyVehicle()` must be after `format()` because vehicle destroyed and `GetVehicleModel()` has return invalid model id.
xRadical3 is offline   Reply With Quote
Old 03/10/2019, 04:37 PM   #9
Sh4rp
Little Clucker
 
Join Date: Sep 2019
Location: Italy
Posts: 27
Reputation: 14
Default Re: stock GetVehicleName doesn't work

Quote:
Originally Posted by Vizi10 View Post
pawn Code:
CMD:destroyveh(playerid, params[])
{
    new vehID, string[128];
    if(sscanf(params, "i", vehID)) return SendClientMessage(playerid, COLOR_RED, "[ERRORE] Sintassi errata, utilizza: /destroyveh [vehID].");
    if(IsValidVehicle(vehID))
    {
        format(string, sizeof(string), "[SUCCESSO] Hai despawnato un(a) %s (Model ID: %i | ID: %i).", VehNames[GetVehicleModel(vehID) - 400], GetVehicleModel(vehID), vehID);
        SendClientMessage(playerid, COLOR_GREEN, string);
        DestroyVehicle(vehID);
    } else SendClientMessage(playerid, COLOR_RED, "[ERRORE] Parametro [vehID] errato.");
    return 1;
}
//not need use stock for get vehicle name. Use this.
//and `DestroyVehicle()` must be after `format()` because vehicle destroyed and `GetVehicleModel()` has return invalid model id.
I've deleted my stock and used your code on CMD:createveh too. The vehicle gets created but no message appears.
Code:
CMD:createveh(playerid, params[])
{
	new vehID;
	new string[128];
	new Float:X, Float:Y, Float:Z;
	GetPlayerPos(playerid, Float:X, Float:Y, Float:Z);
	if(sscanf(params, "i", vehID)) return SendClientMessage(playerid, COLOR_RED, "[ERRORE] Sintassi errata, utilizza: /createveh [vehID].");
	else if(vehID < 400 || vehID > 611) return SendClientMessage(playerid, COLOR_RED, "[ERRORE] Parametro [vehID] errato.");
    else
    {
    	pVehicle[playerid] = CreateVehicle(vehID, X, Y, Z + 3.0, 0, -1, -1, -1, 1);
    	PutPlayerInVehicle(playerid, pVehicle[playerid], 0);
    	format(string, sizeof(string), "[SUCCESSO] Hai despawnato un(a) %s (Model ID: %i, ID: %i).", VehNames[GetVehicleModel(vehID) - 400], GetVehicleModel(vehID), vehID);
    	SendClientMessage(playerid, COLOR_GREEN, string);
    }
    return 1;
}
__________________
Discord contact: @Sharp#1708
Sh4rp is offline   Reply With Quote
Old 03/10/2019, 07:38 PM   #10
RoboN1X
Huge Clucker
 
RoboN1X's Avatar
 
Join Date: Feb 2011
Location: Indonesia
Posts: 453
Reputation: 145
Default Re: stock GetVehicleName doesn't work

Quote:
Originally Posted by NoteND View Post
Use this function

Code:
stock static GetVehicleName(modelid)
{
    static vehName[30];
    strunpack(vehName, VehicleNames[modelid - 400]);
    return vehName;
}
Why do people abuses strunpack... That is for unpacking packed strings to unpacked string... It is just to expand the char bits in 1 byte binary to pawn 4 bytes cell.. thats not really the correct way to copy strings

Quote:
Originally Posted by Sh4rp View Post
I've deleted my stock and used your code on CMD:createveh too. The vehicle gets created but no message appears.
Code:
CMD:createveh(playerid, params[])
{
	new vehID;
	new string[128];
	new Float:X, Float:Y, Float:Z;
	GetPlayerPos(playerid, Float:X, Float:Y, Float:Z);
	if(sscanf(params, "i", vehID)) return SendClientMessage(playerid, COLOR_RED, "[ERRORE] Sintassi errata, utilizza: /createveh [vehID].");
	else if(vehID < 400 || vehID > 611) return SendClientMessage(playerid, COLOR_RED, "[ERRORE] Parametro [vehID] errato.");
    else
    {
    	pVehicle[playerid] = CreateVehicle(vehID, X, Y, Z + 3.0, 0, -1, -1, -1, 1);
    	PutPlayerInVehicle(playerid, pVehicle[playerid], 0);
    	format(string, sizeof(string), "[SUCCESSO] Hai despawnato un(a) %s (Model ID: %i, ID: %i).", VehNames[GetVehicleModel(vehID) - 400], GetVehicleModel(vehID), vehID);
    	SendClientMessage(playerid, COLOR_GREEN, string);
    }
    return 1;
}
Ugh now you use getvehiclemodel on vehicle model instead of what returned by CreateVehicle into pVehicle[playerid]


Vehicle ID = 1 to 2000 (MAX_VEHICLES) given by CreeateVehicle
Vehicle Model = 400 to 611 what used in VehNames array

Now your "VehID" is players input of vehicle model... Not id
pVehicle[playerid] is the vehicle id returned by CreateVehicle

Do GetVehicleModel(pVehichle[playerid])

Also please note that new sscanf has k<vehicle> kustom specifier use that instead then you can use model id "411" or vehicle exact name "Infernus" (defined in sscanf include) as parameter and you no longer need to check for valid model range
__________________
Need Help? Use Search, WIKI, and FAQ
RoboN1X is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
/makefleader command doesn't show anything on a player's screen, and doesn't work in general. Gorgeousmaniac Scripting Help 2 05/10/2016 01:43 AM
My own stock doesn't work the way it should be Metroplex Scripting Help 2 27/10/2014 01:39 PM
kick() function doesn't work in callback, stock, etc Falcon. Scripting Help 7 11/12/2012 07:36 PM
GetVehicleName(modelid) simply doesn't work Ash. Help Archive 9 01/05/2011 04:48 PM
Custom stock - GetVehicleName - bug CrucixTM Help Archive 15 10/09/2010 10:19 PM


All times are GMT. The time now is 09:26 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.