SA-MP Forums Archive
New to Pawno language, and having several problems with looping through an array - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: New to Pawno language, and having several problems with looping through an array (/showthread.php?tid=569195)



New to Pawno language, and having several problems with looping through an array - Just1c3 - 28.03.2015

So I just started today making a little command system. Altho I'm from JAVA, I've understood a few things in pawno. Everything was going fine untill the loop didn't loop through all the elements in the VerhicleArray. It stops at the 4th element. Because the function "strcmp" things those 2 strings are the same. BUT THEY ARENT ;o.

The player command looks like this: "/vehicle 'Bullet'.

Here is the code:
Код:
new VehicleNames[212][] = {
	"Landstalker","Bravura","Buffalo","Linerunner","Pereniel","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","Trailer","Previon","Coach","Cabbie",
	"Stallion","Rumpo","RC Bandit","Romero","Packer","Monster","Admiral","Squalo","Seasparrow","Pizzaboy","Tram","Trailer","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","ZR3 50","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","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","Trailer",
	"Kart","Mower","Duneride","Sweeper","Broadway","Tornado","AT-400","DFT-30","Huntley","Stafford","BF-400","Newsvan","Tug","Trailer A","Emperor",
	"Wayfarer","Euros","Hotdog","Club","Trailer B","Trailer C","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"
};


public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strfind(cmdtext, "/vehicle", true) != -1)
    {

		new output[10][10];
		strexplode(output,cmdtext, "'");

		for(new i = 0; i <= sizeof(VehicleNames); i++)
		{
		    if(!strcmp(output[i], VehicleNames[i], true))
	 	    {
	        	  new Float:x, Float:y, Float:z, Float:az;
				  GetPlayerPos(playerid, x, y, z);
				  GetPlayerFacingAngle(playerid, az);
				  CreateVehicle(i + 400, x+5, y+5, z, az, -1, -1, 180);
			      SendClientMessage(playerid, -1, "Vehicle command executed!");
			    	return 1;
		    }
		}
    }
    return 0;
}
I'm really looking forward to some help, much appreciated!


Kind regards,

~ Just1c3

PS: sorry for my bad english, it's not my native language (dutch is)


Re: New to Pawno language, and having several problems with looping through an array - Vince - 28.03.2015

First: the language is called Pawn. Pawno is an editor. Secondly, I don't get what you're trying to do. Why are you using strexplode? By the way, I think sscanf comes with some sort of vehicle specifier in the form of:
pawn Код:
sscanf(params, "k<vehicle>", vehicleid)



Re: New to Pawno language, and having several problems with looping through an array - Just1c3 - 28.03.2015

Hey!

My apologise for being so stupid. Ofcourse it's Pawn, but I've seen several websites using the word 'Pawno'. But it's an IDE. I'm using strexplode for splitting the string in several parts. So I can get the value between ''. Nothing wrong with that right? But anyways, it's nice that you have gave me an example of sscanf but my problem isn't solved yet. Why doesn't the loop continue after 4 elements?


Re: New to Pawno language, and having several problems with looping through an array - Jefff - 28.03.2015

because if string is empty strcmp return 'match', your output[i] is empty (null) and strcmp fail


Re: New to Pawno language, and having several problems with looping through an array - Crayder - 28.03.2015

The problem is that you're using strcmp, use Vince's sscanf solution or use strfind.

if(strfind(VehicleName[i], string, true) != -1)





I personally prefer sscanf though.


Re: New to Pawno language, and having several problems with looping through an array - Konstantinos - 28.03.2015

It's better to use ZCMD (https://sampforum.blast.hk/showthread.php?tid=91354) for the commands (or even y_commands) and all you'll need is just:
PHP код:
CMD:vehicle(playeridparams[])
{
    if (!
isnull(params))
    {
        for(new 
0sizeof(VehicleNames); i++)
        {
            if(
strfind(VehicleName[i], paramstrue) != -1)
            {
                new 
Float:xFloat:yFloat:zFloat:az;
                
GetPlayerPos(playeridxyz);
                
GetPlayerFacingAngle(playeridaz);
                
CreateVehicle(400x+5y+5zaz, -1, -1180);
                
SendClientMessage(playerid, -1"Vehicle command executed!");
                break;
            }
        }
    }
    return 
1;

Note that in a loop, you shouldn't use "<=" with sizeof because indexes start from 0 or else it'll cause Run time error 4: "Array index out of bounds".


Re: New to Pawno language, and having several problems with looping through an array - Just1c3 - 28.03.2015

Oh my god.. I'm seeing it now.. output[i] should have been output[1] since I need the second part.. *FACEPALM*
Thanks for the help!