SA-MP Forums Archive
Error en comando con sscanf. - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: Error en comando con sscanf. (/showthread.php?tid=624192)



Error en comando con sscanf. - ByMatt20030 - 12.12.2016

Buenas, estoy realizando mi sistema de maletero de a poco, y me quede trabado en un comando con parametros en el mismo.

Comando:
Код:
CMD:maletero(playerid, params[])
{
	if(isnull(params))
	{


		SendClientMessageEx(playerid, COLOR_GREEN, "Utiliza: /maletero (nombre)");
		SendClientMessageEx(playerid, COLOR_WHITE, "Nombres: ver, guardar, sacar");
		return 1;
	}
	else if(strcmp(params, "guardar", true) == 0)
	{
		new string[128], weaponchoice[32], slot;
		if(!sscanf(params, "s[32]d", weaponchoice, slot))
		{
		new pvid = -1, Float: x, Float: y, Float: z;
		for(new d = 0 ; d < MAX_PLAYERVEHICLES; d++)
		{
			if(PlayerVehicleInfo[playerid][d][pvId] != INVALID_PLAYER_VEHICLE_ID) GetVehiclePos(PlayerVehicleInfo[playerid][d][pvId], x, y, z);
			if(IsPlayerInRangeOfPoint(playerid, 3.0, x, y, z))
			{
				pvid = d;
				break;
			}
		}
		if(pvid == -1) return SendClientMessageEx(playerid,COLOR_GREY,"{FFFF00}[ERROR]:{FFFFFF} No estбs cerca de un vehнculo que sea tuyo.");
		
		new maxslots = 8;
		if(slot > maxslots)
		{
			SendClientMessageEx(playerid, COLOR_GREY, "{FFFF00}[ERROR]:{FFFFFF} Slot Invбlido, del 1 al 8.");
			return 1;
		}
		if( PlayerVehicleInfo[playerid][pvid][pvWeapons][slot-1] != 0)
		{
			SendClientMessageEx(playerid, COLOR_GREY, "{FFFF00}[ERROR]:{FFFFFF} Tienes armas guardadas en ese slot.");
			return 1;
		}
		new weapon;
		if(strcmp(weaponchoice, "sdpistol", true, strlen(weaponchoice)) == 0)
		{
			if( Info[playerid][pWeapons][2] == 23)
			{
				SendClientMessageEx(playerid, COLOR_LIGHTBLUE, "Has guardado una pistola SD en tu maletero.");
				weapon = Info[playerid][pWeapons][2];
				format(string,sizeof(string), "* %s guarda un pistola SD en su maletero.", GetPlayerNameEx(playerid));
				ProxDetector(15.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
			}
		}
		else if(strcmp(weaponchoice, "deagle", true, strlen(weaponchoice)) == 0)
		{
			if( Info[playerid][pWeapons][2] == 24)
			{
				SendClientMessageEx(playerid, COLOR_LIGHTBLUE, "Has guardado un Desert Eagle en tu maletero.");
				weapon = Info[playerid][pWeapons][2];
				format(string,sizeof(string), "* %s guarda una Desert Eagle en su maletero.", GetPlayerNameEx(playerid));
				ProxDetector(15.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
			}
		}
		//El codigo del else if se repite con el resto de armas, no lo coloco ya que seria muy largo....
		if(weapon == 0) return SendClientMessageEx(playerid, COLOR_WHITE, "No tienes esa arma");
		if(PlayerVehicleInfo[playerid][pvid][pvWeapons][slot-1] == 0)
		{



			PlayerVehicleInfo[playerid][pvid][pvWeapons][slot-1] = weapon;
			RemovePlayerWeapon(playerid, weapon);
			return 1;
		}
		else { SendClientMessageEx(playerid,COLOR_GREY,"   Nombre invбlido!");}
	}
	else return SendClientMessageEx(playerid, COLOR_WHITE, "Utiliza: /maletero (guardar) (arma) (slot)");
	}
	return 1;
}
No se que parte del comando es, pero no tengo respuesta alguna al comando mas que un mensaje del uso del mismo ( "Utiliza: /maletero..." es lo unico que responde.)


Gracias de antemano.


Respuesta: Error en comando con sscanf. - Doniczzz - 12.12.2016

En vez de:

Код:
if(isnull(params))
	{


		SendClientMessageEx(playerid, COLOR_GREEN, "Utiliza: /maletero (nombre)");
		SendClientMessageEx(playerid, COLOR_WHITE, "Nombres: ver, guardar, sacar");
		return 1;
	}
Coloca esto:

Код:
if(sscanf(params,"s",params[0])) return SendClientMessageEx(playerid, COLOR_GREEN, "Utiliza: /maletero (nombre)");
Y en vez de:

Код:
else if(strcmp(params, "guardar", true) == 0)
Coloca esto:

Код:
if(!strcmp(params[0], "guardar", true))
y asн vas cambiando los "else if" por el que te puse, prueba a ver si funciona.


Respuesta: Error en comando con sscanf. - Doniczzz - 12.12.2016

Y para hacer muchнsimo mas corto el comando, en vez de poner "/maletero guardar deagle" "/maletero guardar sdpistol" y un comando para cada arma, es mas fбcil solo colocar "/maletero guardar" y se guarda automбticamente el arma que lleva el pj encima.

Antes debes programarlo, claro estб...