Comando dejу de funcionar.
#1

Buenas, en vez de definir las variables en el comando ejemplo new opcion; etc lo puse todo con params, y desde ahн dejу de funcionar el comando, que estoy haciendo mal? pongo por ejemplo /comprara vehiculo 112 1 1 y como ven puse en dicha secciуn del comando prints, pues el print("1"); lo marca pero no pasa a print("2"); ni al prinft, por quй? que tiene de malo el comando.

Код:
CMD:comprara(playerid, params[])
{
	if(sscanf(params, "s[10]", params[0]))
	{
		SendInfoMessage(playerid, 4, "/comprar [Opciуn]");
		SendClientMessage(playerid, AzulClaro, "Opciones: Propiedad, Vehнculo.");
		return 1;
	}
	if(strcmp(params[0], "propiedad", true) == 0)
	{
		for(new h = 0; h < TotalCasas; h++)
		{
			if(PlayerToPoint(2.0, playerid, CasaInfo[h][hEx], CasaInfo[h][hEy], CasaInfo[h][hEz]) && CasaInfo[h][hVw] == GetPlayerVirtualWorld(playerid) && CasaInfo[h][hOwned] != -1)
			{
				if(CasaInfo[h][hOwned] == 1 && CasaInfo[h][hVendible] == 0) return SendInfoMessage(playerid, 0, "Esta casa no estб en venta para usar este comando.");
				if(PlayerInfo[playerid][pDocumentacion] == 0) return SendInfoMessage(playerid, 0, "Necesitas tener la documentaciуn en regla para comprar una propiedad.");
				if(GetPlayerLevel(playerid) < CasaInfo[h][hLevel])
				{
					format(string, sizeof(string), "* Necesitas nivel %d para comprar la casa.", CasaInfo[h][hLevel]);
					SendClientMessage(playerid, AzulClaro, string);
					return 1;
				}
				if(PlayerInfo[playerid][pPhousekey] != -1)
				{
					new casa = GetHouseFromId(PlayerInfo[playerid][pPhousekey]);
					if(strcmp(PlayerInfo[playerid][pNombre], CasaInfo[casa][hOwner], true) == 0) SendInfoMessage(playerid, 0, "Ya tienes actualmente una casa, escribe /vender propiedad para venderla.");
					else SendClientMessage(playerid, Naranja, "* Ya tienes alquilada una propiedad, escribe /noalquilar para dejarla.");
					return 1;
				}
				if(CasaInfo[h][hOwned] == 0)
				{
					if(SafeGetPlayerMoney(playerid) >= CasaInfo[h][hValue])
					{
						SafeGivePlayerMoney(playerid, -CasaInfo[h][hValue]);
						PlayerInfo[playerid][pPhousekey] = CasaInfo[h][hId], CasaInfo[h][hOwned] = 1;
						format(CasaInfo[h][hOwner], MAX_PLAYER_NAME, PlayerInfo[playerid][pNombre]);
						SetPlayerInterior(playerid, CasaInfo[h][hInterior]);
						SetPlayerPos(playerid, CasaInfo[h][hSx], CasaInfo[h][hSy], CasaInfo[h][hSz]);
						SetPlayerVirtualWorld(playerid, CasaInfo[h][hId]);
						PlayerInfo[playerid][pInt] = CasaInfo[h][hInterior];
						PlayerInfo[playerid][pVw] = CasaInfo[h][hId];
						SendClientMessage(playerid, Verde, "* Bienvenido a tu nueva casa. Escribe /ayuda casas para ver todos los comandos.");
					}
					else SendInfoMessage(playerid, 0, "No tienes el dinero suficiente para comprar esta propiedad.");
				}
				else
				{
					if(SafeGetPlayerMoney(playerid) >= CasaInfo[h][hVendible])
					{
						new jugador = ReturnUser(CasaInfo[h][hOwner]);
						if(jugador != INVALID_PLAYER_ID)
						{
							SafeGivePlayerMoneyEx(jugador, playerid, CasaInfo[h][hVendible]);
							format(string, sizeof(string), "[SMS inmobiliaria]: Hemos conseguido vender tu casa por %d$.", CasaInfo[h][hVendible]);
							SendClientMessage(jugador, Amarillo, string);
							PlayerInfo[jugador][pPhousekey] = -1;
							SaveValue(jugador, "Casa", PlayerInfo[jugador][pPhousekey]);
						}
						else
						{
							new sql[256];
							format(sql, sizeof(sql), "UPDATE players SET Banco = Banco + %d, Casa = -1 WHERE Nombre = '%s' LIMIT 1", CasaInfo[h][hVendible], CasaInfo[h][hOwner]);
							mysql_function_query(conectorBD, sql, false, "", "");
							SafeGivePlayerMoney(playerid, -CasaInfo[h][hVendible]);
						}
						CasaInfo[h][hVendible] = 0;
						format(CasaInfo[h][hOwner], MAX_PLAYER_NAME, PlayerInfo[playerid][pNombre]);
						PlayerInfo[playerid][pPhousekey] = CasaInfo[h][hId];
						SetPlayerInterior(playerid, CasaInfo[h][hInterior]);
						SetPlayerPos(playerid, CasaInfo[h][hSx], CasaInfo[h][hSy], CasaInfo[h][hSz]);
						SetPlayerVirtualWorld(playerid, CasaInfo[h][hId]);
						PlayerInfo[playerid][pInt] = CasaInfo[h][hInterior];
						PlayerInfo[playerid][pVw] = CasaInfo[h][hId];
						DestroyDynamicObject(CasaInfo[h][hCartel]);
						SendClientMessage(playerid, Verde, "* Bienvenido a tu nueva casa. Escribe /ayuda casas para ver todos los comandos.");
					}
					else SendInfoMessage(playerid, 0, "No tienes el dinero suficiente para comprar esta propiedad.");
				}
				SaveCasa(h), UpdateHouseLabel(h);
				SaveValue(playerid, "Casa", PlayerInfo[playerid][pPhousekey]);
				return 1;
			}
		}
	}
	else if(strcmp(params[0], "vehiculo", true) == 0)
	{
        print("1");
		if(sscanf(params, "ddd", params[0], params[1], params[2])) return SendInfoMessage(playerid, 0, "/comprarveh [IdVehнculo] [ColorPrimario] [ColorSecundario]");
		if(EnCatalogoVeh[playerid] != -1) return SendInfoMessage(playerid, 0, "Sal del catбlogo para comprar un vehнculo.");
		if(PlayerInfo[playerid][pDocumentacion] == 0) return SendInfoMessage(playerid, 0, "Necesitas tener la documentaciуn en regla para comprar un vehнculo.");
		GetPlayerPos(playerid, PlayerInfo[playerid][pPos_x], PlayerInfo[playerid][pPos_y], PlayerInfo[playerid][pPos_z]);
		SetPlayerFacingAngle(playerid, 212.2497), SetCameraBehindPlayer(playerid);
        print("2");
        printf("%d %d %d.",params[0], params[1], params[2]);
		if((PlayerInfo[playerid][pMember] == datacar[params[0]][dcComprador]) || (datacar[params[0]][dcMember] == 0))
		{
			if(datacar[params[0]][dcIDModel] == 438 || datacar[params[0]][dcIDModel] == 420)
			{
				if(PlayerInfo[playerid][pTaxiLic] == 0) return SendInfoMessage(playerid, 0, "No tienes licencia de taxista para usar este comando.");
			}
			if(datacar[params[0]][dcNivel] > GetPlayerLevel(playerid)) return SendInfoMessage(playerid, 0, "No tienes el nivel necesario para comprar este vehнculo.");
			if(PlayerInfo[playerid][pPCarKey][0] != -1 && PlayerInfo[playerid][pPCarKey][1] != -1 && PlayerInfo[playerid][pPCarKey][2] != -1 && PlayerInfo[playerid][pPCarKey][3] != -1 && PlayerInfo[playerid][pPCarKey][4] != -1)
			{
				SendClientMessage(playerid, Naranja, "* Ya tienes todos los slots de llaves propias ocupados.");
				return 1;
			}
			if(datacar[params[0]][dcConcesionario] == GetPlayerConcesionario(playerid))
			{
				new Conce = GetPlayerConcesionarioEx(playerid);
				for(new i = 0; i < TotalVeh; i++)
				{
					if(VehicleToPoint(5.0, i, Concesionarios[Conce][ctX], Concesionarios[Conce][ctY], Concesionarios[Conce][ctZ]) && CarInfo[i][cVw] == 0)
					{
						SendInfoMessage(playerid, 0, "Hay un vehнculo en el punto de entrega, imposible entregar.");
						return 1;
					}
				}
			}
			else return SendInfoMessage(playerid, 0, "No disponemos de ese modelo, deberбs buscar en otro concesionario.");
			if(SafeGetPlayerMoney(playerid) < datacar[params[0]][dcPrecio])
			{
				SendInfoMessage(playerid, 0, "No llevas dinero suficiente, vuelve en otro momento.");
				return 1;
			}
			for(new i; i < MAX_PROPIOS; i++)
			{
				if(PlayerInfo[playerid][pPCarKey][i] == -1)
				{
					PlayerInfo[playerid][pPCarKey][i] = CodigoLlave;
					break;
				}
			}
			print("3");
			SendClientMessage(playerid, Verde, "* Has comprado un nuevo vehнculo.");
			SendClientMessage(playerid, Naranja, "* El vendedor te ha entregado las llaves (mira en /stats)");
			new Conce = datacar[params[0]][dcConcesionario] -1;
			CreateLLLCar(playerid, params[0], Concesionarios[Conce][ctX], Concesionarios[Conce][ctY], Concesionarios[Conce][ctZ], Concesionarios[Conce][ctA], params[1], params[2]);
			new coste = datacar[params[0]][dcPrecio] - floatround(datacar[params[0]][dcPrecio] * (GetPlayerPremium(playerid) * 5) / 100);
			SafeGivePlayerMoney(playerid, -coste);
			SaveValues(playerid, "Coches"), SaveValues(playerid, "CochesPrestados");
		}
		else SendInfoMessage(playerid, 0, "No puedes comprar este tipo de vehнculo.");
	}
	return 1;
}
Reply
#2

En dуnde exactamente se detiene el comando?

Puede que SendInfoMessage estй retornando 0, fнjate.
Reply
#3

Fijate ahora

Код:
CMD:comprara(playerid, params[])
{
	if(sscanf(params, "s[10]", params[0]))
	{
		SendInfoMessage(playerid, 4, "/comprar [Opciуn]");
		SendClientMessage(playerid, AzulClaro, "Opciones: Propiedad, Vehнculo.");
		return 1;
	}
	if(strcmp(params[0], "propiedad", true) == 0)
	{
		for(new h = 0; h < TotalCasas; h++)
		{
			if(PlayerToPoint(2.0, playerid, CasaInfo[h][hEx], CasaInfo[h][hEy], CasaInfo[h][hEz]) && CasaInfo[h][hVw] == GetPlayerVirtualWorld(playerid) && CasaInfo[h][hOwned] != -1)
			{
				if(CasaInfo[h][hOwned] == 1 && CasaInfo[h][hVendible] == 0) return SendInfoMessage(playerid, 0, "Esta casa no estб en venta para usar este comando.");
				if(PlayerInfo[playerid][pDocumentacion] == 0) return SendInfoMessage(playerid, 0, "Necesitas tener la documentaciуn en regla para comprar una propiedad.");
				if(GetPlayerLevel(playerid) < CasaInfo[h][hLevel])
				{
					format(string, sizeof(string), "* Necesitas nivel %d para comprar la casa.", CasaInfo[h][hLevel]);
					SendClientMessage(playerid, AzulClaro, string);
					return 1;
				}
				if(PlayerInfo[playerid][pPhousekey] != -1)
				{
					new casa = GetHouseFromId(PlayerInfo[playerid][pPhousekey]);
					if(strcmp(PlayerInfo[playerid][pNombre], CasaInfo[casa][hOwner], true) == 0) SendInfoMessage(playerid, 0, "Ya tienes actualmente una casa, escribe /vender propiedad para venderla.");
					else SendClientMessage(playerid, Naranja, "* Ya tienes alquilada una propiedad, escribe /noalquilar para dejarla.");
					return 1;
				}
				if(CasaInfo[h][hOwned] == 0)
				{
					if(SafeGetPlayerMoney(playerid) >= CasaInfo[h][hValue])
					{
						SafeGivePlayerMoney(playerid, -CasaInfo[h][hValue]);
						PlayerInfo[playerid][pPhousekey] = CasaInfo[h][hId], CasaInfo[h][hOwned] = 1;
						format(CasaInfo[h][hOwner], MAX_PLAYER_NAME, PlayerInfo[playerid][pNombre]);
						SetPlayerInterior(playerid, CasaInfo[h][hInterior]);
						SetPlayerPos(playerid, CasaInfo[h][hSx], CasaInfo[h][hSy], CasaInfo[h][hSz]);
						SetPlayerVirtualWorld(playerid, CasaInfo[h][hId]);
						PlayerInfo[playerid][pInt] = CasaInfo[h][hInterior];
						PlayerInfo[playerid][pVw] = CasaInfo[h][hId];
						SendClientMessage(playerid, Verde, "* Bienvenido a tu nueva casa. Escribe /ayuda casas para ver todos los comandos.");
					}
					else SendInfoMessage(playerid, 0, "No tienes el dinero suficiente para comprar esta propiedad.");
				}
				else
				{
					if(SafeGetPlayerMoney(playerid) >= CasaInfo[h][hVendible])
					{
						new jugador = ReturnUser(CasaInfo[h][hOwner]);
						if(jugador != INVALID_PLAYER_ID)
						{
							SafeGivePlayerMoneyEx(jugador, playerid, CasaInfo[h][hVendible]);
							format(string, sizeof(string), "[SMS inmobiliaria]: Hemos conseguido vender tu casa por %d$.", CasaInfo[h][hVendible]);
							SendClientMessage(jugador, Amarillo, string);
							PlayerInfo[jugador][pPhousekey] = -1;
							SaveValue(jugador, "Casa", PlayerInfo[jugador][pPhousekey]);
						}
						else
						{
							new sql[256];
							format(sql, sizeof(sql), "UPDATE players SET Banco = Banco + %d, Casa = -1 WHERE Nombre = '%s' LIMIT 1", CasaInfo[h][hVendible], CasaInfo[h][hOwner]);
							mysql_function_query(conectorBD, sql, false, "", "");
							SafeGivePlayerMoney(playerid, -CasaInfo[h][hVendible]);
						}
						CasaInfo[h][hVendible] = 0;
						format(CasaInfo[h][hOwner], MAX_PLAYER_NAME, PlayerInfo[playerid][pNombre]);
						PlayerInfo[playerid][pPhousekey] = CasaInfo[h][hId];
						SetPlayerInterior(playerid, CasaInfo[h][hInterior]);
						SetPlayerPos(playerid, CasaInfo[h][hSx], CasaInfo[h][hSy], CasaInfo[h][hSz]);
						SetPlayerVirtualWorld(playerid, CasaInfo[h][hId]);
						PlayerInfo[playerid][pInt] = CasaInfo[h][hInterior];
						PlayerInfo[playerid][pVw] = CasaInfo[h][hId];
						DestroyDynamicObject(CasaInfo[h][hCartel]);
						SendClientMessage(playerid, Verde, "* Bienvenido a tu nueva casa. Escribe /ayuda casas para ver todos los comandos.");
					}
					else SendInfoMessage(playerid, 0, "No tienes el dinero suficiente para comprar esta propiedad.");
				}
				SaveCasa(h), UpdateHouseLabel(h);
				SaveValue(playerid, "Casa", PlayerInfo[playerid][pPhousekey]);
				return 1;
			}
		}
	}
	else if(strcmp(params[0], "vehiculo", true) == 0)
	{
        print("1");
		if(sscanf(params, "ddd", params[1], params[2], params[3])) return SendInfoMessage(playerid, 0, "/comprarveh [IdVehнculo] [ColorPrimario] [ColorSecundario]");
		if(EnCatalogoVeh[playerid] != -1) return SendInfoMessage(playerid, 0, "Sal del catбlogo para comprar un vehнculo.");
		if(PlayerInfo[playerid][pDocumentacion] == 0) return SendInfoMessage(playerid, 0, "Necesitas tener la documentaciуn en regla para comprar un vehнculo.");
		GetPlayerPos(playerid, PlayerInfo[playerid][pPos_x], PlayerInfo[playerid][pPos_y], PlayerInfo[playerid][pPos_z]);
		SetPlayerFacingAngle(playerid, 212.2497), SetCameraBehindPlayer(playerid);
        print("2");
        printf("%d %d %d.",params[1], params[2], params[3]);
		if((PlayerInfo[playerid][pMember] == datacar[params[1]][dcComprador]) || (datacar[params[1]][dcMember] == 0))
		{
			if(datacar[params[1]][dcIDModel] == 438 || datacar[params[1]][dcIDModel] == 420)
			{
				if(PlayerInfo[playerid][pTaxiLic] == 0) return SendInfoMessage(playerid, 0, "No tienes licencia de taxista para usar este comando.");
			}
			if(datacar[params[1]][dcNivel] > GetPlayerLevel(playerid)) return SendInfoMessage(playerid, 0, "No tienes el nivel necesario para comprar este vehнculo.");
			if(PlayerInfo[playerid][pPCarKey][0] != -1 && PlayerInfo[playerid][pPCarKey][1] != -1 && PlayerInfo[playerid][pPCarKey][2] != -1 && PlayerInfo[playerid][pPCarKey][3] != -1 && PlayerInfo[playerid][pPCarKey][4] != -1)
			{
				SendClientMessage(playerid, Naranja, "* Ya tienes todos los slots de llaves propias ocupados.");
				return 1;
			}
			if(datacar[params[1]][dcConcesionario] == GetPlayerConcesionario(playerid))
			{
				new Conce = GetPlayerConcesionarioEx(playerid);
				for(new i = 0; i < TotalVeh; i++)
				{
					if(VehicleToPoint(5.0, i, Concesionarios[Conce][ctX], Concesionarios[Conce][ctY], Concesionarios[Conce][ctZ]) && CarInfo[i][cVw] == 0)
					{
						SendInfoMessage(playerid, 0, "Hay un vehнculo en el punto de entrega, imposible entregar.");
						return 1;
					}
				}
			}
			else return SendInfoMessage(playerid, 0, "No disponemos de ese modelo, deberбs buscar en otro concesionario.");
			if(SafeGetPlayerMoney(playerid) < datacar[params[1]][dcPrecio])
			{
				SendInfoMessage(playerid, 0, "No llevas dinero suficiente, vuelve en otro momento.");
				return 1;
			}
			for(new i; i < MAX_PROPIOS; i++)
			{
				if(PlayerInfo[playerid][pPCarKey][i] == -1)
				{
					PlayerInfo[playerid][pPCarKey][i] = CodigoLlave;
					break;
				}
			}
			print("3");
			SendClientMessage(playerid, Verde, "* Has comprado un nuevo vehнculo.");
			SendClientMessage(playerid, Naranja, "* El vendedor te ha entregado las llaves (mira en /stats)");
			new Conce = datacar[params[1]][dcConcesionario] -1;
			CreateLLLCar(playerid, params[1], Concesionarios[Conce][ctX], Concesionarios[Conce][ctY], Concesionarios[Conce][ctZ], Concesionarios[Conce][ctA], params[1], params[2]);
			new coste = datacar[params[1]][dcPrecio] - floatround(datacar[params[1]][dcPrecio] * (GetPlayerPremium(playerid) * 5) / 100);
			SafeGivePlayerMoney(playerid, -coste);
			SaveValues(playerid, "Coches"), SaveValues(playerid, "CochesPrestados");
		}
		else SendInfoMessage(playerid, 0, "No puedes comprar este tipo de vehнculo.");
	}
	return 1;
}
Reply
#4

Quote:
Originally Posted by EnzoMetlc
Посмотреть сообщение
En dуnde exactamente se detiene el comando?

Puede que SendInfoMessage estй retornando 0, fнjate.
Se detiene en print("1");, abajo del print hay otros y no dice nada en la consola, ni con la soluciуn de JeffreyG, sigue sin funcionar.

osea que el error estarнa en
Код:
if(sscanf(params, "ddd", params[1], params[2], params[3])) return SendInfoMessage(playerid, 0, "/comprarveh [IdVehнculo] [ColorPrimario] [ColorSecundario]");
si pongo /comprara vehiculo me dice que ponga la id y los colores, cuando pongo todo bien no pasa nada y no marca nada en la consola, solo el nъmero 1...y no returna a 0, ese 0 es un tipo de mensaje ejemplo

Код:
CALLBACK: SendInfoMessage(playerid, type, message[])
{
	new MsgInfo[MAX_TEXT_CHAT-70],
    _col[7] =
	{
		0xAA3333AA,
		0x33CCFFFF,
		0xFF4949FF,
		0xBFC0C2FF,
		0xFFCD00FF,
		0xfdfe8bFF,
	};
	switch(type)
	{
		case 0: format(MsgInfo, sizeof(MsgInfo), "* %s", message);
		case 1: format(MsgInfo, sizeof(MsgInfo), "* Informaciуn: %s", message);
		case 2: format(MsgInfo, sizeof(MsgInfo), "* Importante: %s", message);
		case 3: format(MsgInfo, sizeof(MsgInfo), "Info: %s", message);
		case 4: format(MsgInfo, sizeof(MsgInfo), "* Debe indicar parбmetros para el comando, formato: %s.", message);
		case 5: format(MsgInfo, sizeof(MsgInfo), "Nota: %s.", message);
	}
	SendClientMessage(playerid, _col[type], MsgInfo);
	return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)