Ayuda con este elevador
#1

Puse un elevador de vehiculos para subir a paso elevado (montaсa) funciona perfectamente sube y baja
pero no funcionan los range point que le meto,y quiero hacerlo sin comandos que solo se baje y se suba
automaticamente sin comandos como 5 minutos pero ni los settimer reconoce.




Tengo esto

Код:
new elevador;
new elevador2;
Код:
public OnGameModeInit()
{
    
    Create3DTextLabel("USO: /up ", 0x33AA33AA, x.x, x, x.x, 40.0, 0, 0);
    Create3DTextLabel("USO: /down", 0x33AA33AA, x.x, x, x.x, 40.0, 0, 0);
    
   	elevador = CreateObject(x,  x.x, x, x.x,   0.00000, 0.00000, 4.44000);
	return 1;
}
Код:
CMD:up(playerid, params[])
{
        MoveObject(elevador2, x.x, x, x.x, 0.6);
		MoveObject(elevador, x.x, x, x.x, 0.6);
	    SendClientMessage(playerid, COLOR_GREEN, "UP=subes");
 	    GivePlayerMoney(playerid, -1000);
		if(GetPlayerMoney(playerid) < 2) return SendClientMessage(playerid, 0xFFFFFF, "Usted No Tiene suficiente Dinero."); ///esta funcion como las de timer y range no funcionan
	    return 1;
}
CMD:down(playerid, params[])
{
		MoveObject(elevador2, x.x, x, x.x, 0.6);
		MoveObject(elevador, x.x, x, x.x, 0.6);
		GivePlayerMoney(playerid, -1000);
		if(GetPlayerMoney(playerid) < 2) return SendClientMessage(playerid, 0xFFFFFF, "Usted No Tiene suficiente Dinero.");///esta funcion como las de timer y range no funcionan
		SendClientMessage(playerid, COLOR_GREEN, "Down=Bajas");
		
	    return 1;
}
no reconoce ninguna cosa que le ponga como settimer o range point por que de cualquier zona de san andreas se puede activar la subida y bajada.gracias.
Reply
#2

GetPlayerMoney no debe estar funcionando por el hecho de que estб comprobando si el jugador tiene 2 dolares en lugar de 1000.

Lo otro no lo he entendido, pero igualmente puedes postear el script que no funciona y ver que pasa.
Reply
#3

Pues cualquier script de settimer y rangepoint que le pongo no lo reconoce,
sobre el dinero me descuenta pero no me prohibe usar el cmd si no tengo el dinero ya lo puse en 1000 si uso el comando igual me descuenta dinero y funciona el /up en lugar de avisarme que no tengo money,
le meto por ejemplo este scrip y ni lo reconoce como el dinero ni el settimer

if (IsPlayerInRangeOfPoint(playerid, 7.0, x,x,x,x,))
{
SendClientMessage(playerid,0xFFFFFFFF,"No estas en el elevador!");
}



El timer menos

SetTimer("elevador", 1000, 1);
}
Reply
#4

Entiendo.

Lo primero es poner la lнnea del GetPlayerMoney al principio y no al final.

En cuanto al SetTimer y al SendClientMessage, debes de tener en cuenta que lo que estas haciendo es comprobar si el jugador ESTБ en ese rango, pero en el ejemplo que has puesto, lo que quieres comprobar es si un jugador NO ESTБ en un rango determinado.

Para eso tienes que aсadir un " ! " al if. Eso hace que todo valor que no sea 0 o false se convierte en 1 o true. Ejemplo:

if(!IsPlayerInRangeOfPoint(playerid, 7.0, x,x,x,x,))
{
SendClientMessage(playerid,0xFFFFFFFF,"No estas en el elevador!");
return 1;
}

No te tienes que olvidar de aсadir el return para evitar que el resto del script se siga ejecutando.

En cualquier caso, el cуdigo deberнa de quedar asн:

Код:
CMD:up(playerid, params[])
{
	if(!IsPlayerInRangeOfPoint(playerid, 7.0, x.x, x.x, x.x)) return SendClientMessage(playerid, 0xFFFFFFFF, "No estas en el elevador!");
	if(GetPlayerMoney(playerid) < 1000) return SendClientMessage(playerid, 0xFFFFFF, "Usted No Tiene suficiente Dinero.");
	MoveObject(elevador2, x.x, x, x.x, 0.6);
	MoveObject(elevador, x.x, x, x.x, 0.6);
	SendClientMessage(playerid, COLOR_GREEN, "UP=subes");
	GivePlayerMoney(playerid, -1000);
	return 1;
}
CMD:down(playerid, params[])
{
	if(!IsPlayerInRangeOfPoint(playerid, 7.0, x.x, x.x, x.x)) return SendClientMessage(playerid, 0xFFFFFFFF, "No estas en el elevador!");
	if(GetPlayerMoney(playerid) < 1000) return SendClientMessage(playerid, 0xFFFFFF, "Usted No Tiene suficiente Dinero.");
	MoveObject(elevador2, x.x, x, x.x, 0.6);
	MoveObject(elevador, x.x, x, x.x, 0.6);
	GivePlayerMoney(playerid, -1000);
	SendClientMessage(playerid, COLOR_GREEN, "Down=Bajas");
	return 1;
}
Y para el timer:

Код:
forward elevador();
public elevador()
{
	if(IsObjectMoving(elevador2) || IsObjectMoving(elevador))
		return 0;

	for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
	{
		if(IsPlayerConnected(playerid))
		{
			if(IsPlayerInRangeOfPoint(playerid, 7.0, x.x, x.x, x.x))
			{
				if(GetPlayerMoney(playerid) < 1000)
				{
					SendClientMessage(playerid, 0xFFFFFF, "Usted No Tiene suficiente Dinero.");
					continue;
				}
				MoveObject(elevador2, x.x, x, x.x, 0.6);
				MoveObject(elevador, x.x, x, x.x, 0.6);
				SendClientMessage(playerid, COLOR_GREEN, "UP=subes");
				GivePlayerMoney(playerid, -1000);
				break;
			}
			else if(IsPlayerInRangeOfPoint(playerid, 7.0, x.x, x.x, x.x))
			{
				if(GetPlayerMoney(playerid) < 1000)
				{
					SendClientMessage(playerid, 0xFFFFFF, "Usted No Tiene suficiente Dinero.");
					continue;
				}
				MoveObject(elevador2, x.x, x, x.x, 0.6);
				MoveObject(elevador, x.x, x, x.x, 0.6);
				GivePlayerMoney(playerid, -1000);
				SendClientMessage(playerid, COLOR_GREEN, "Down=Bajas");
				break;
			}
		}
	}

	return 1;
}
P.D.: Espero haberme explicado bien xD
Reply
#5

Quote:
Originally Posted by bm0z
Посмотреть сообщение
Entiendo.

Lo primero es poner la lнnea del GetPlayerMoney al principio y no al final.

En cuanto al SetTimer y al SendClientMessage, debes de tener en cuenta que lo que estas haciendo es comprobar si el jugador ESTБ en ese rango, pero en el ejemplo que has puesto, lo que quieres comprobar es si un jugador NO ESTБ en un rango determinado.

Para eso tienes que aсadir un " ! " al if. Eso hace que todo valor que no sea 0 o false se convierte en 1 o true. Ejemplo:

if(!IsPlayerInRangeOfPoint(playerid, 7.0, x,x,x,x,))
{
SendClientMessage(playerid,0xFFFFFFFF,"No estas en el elevador!");
return 1;
}

No te tienes que olvidar de aсadir el return para evitar que el resto del script se siga ejecutando.

En cualquier caso, el cуdigo deberнa de quedar asн:

Код:
CMD:up(playerid, params[])
{
	if(!IsPlayerInRangeOfPoint(playerid, 7.0, x.x, x.x, x.x)) return SendClientMessage(playerid, 0xFFFFFFFF, "No estas en el elevador!");
	if(GetPlayerMoney(playerid) < 1000) return SendClientMessage(playerid, 0xFFFFFF, "Usted No Tiene suficiente Dinero.");
	MoveObject(elevador2, x.x, x, x.x, 0.6);
	MoveObject(elevador, x.x, x, x.x, 0.6);
	SendClientMessage(playerid, COLOR_GREEN, "UP=subes");
	GivePlayerMoney(playerid, -1000);
	return 1;
}
CMD:down(playerid, params[])
{
	if(!IsPlayerInRangeOfPoint(playerid, 7.0, x.x, x.x, x.x)) return SendClientMessage(playerid, 0xFFFFFFFF, "No estas en el elevador!");
	if(GetPlayerMoney(playerid) < 1000) return SendClientMessage(playerid, 0xFFFFFF, "Usted No Tiene suficiente Dinero.");
	MoveObject(elevador2, x.x, x, x.x, 0.6);
	MoveObject(elevador, x.x, x, x.x, 0.6);
	GivePlayerMoney(playerid, -1000);
	SendClientMessage(playerid, COLOR_GREEN, "Down=Bajas");
	return 1;
}
Y para el timer:

Код:
forward elevador();
public elevador()
{
	if(IsObjectMoving(elevador2) || IsObjectMoving(elevador))
		return 0;

	for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
	{
		if(IsPlayerConnected(playerid))
		{
			if(IsPlayerInRangeOfPoint(playerid, 7.0, x.x, x.x, x.x))
			{
				if(GetPlayerMoney(playerid) < 1000)
				{
					SendClientMessage(playerid, 0xFFFFFF, "Usted No Tiene suficiente Dinero.");
					continue;
				}
				MoveObject(elevador2, x.x, x, x.x, 0.6);
				MoveObject(elevador, x.x, x, x.x, 0.6);
				SendClientMessage(playerid, COLOR_GREEN, "UP=subes");
				GivePlayerMoney(playerid, -1000);
				break;
			}
			else if(IsPlayerInRangeOfPoint(playerid, 7.0, x.x, x.x, x.x))
			{
				if(GetPlayerMoney(playerid) < 1000)
				{
					SendClientMessage(playerid, 0xFFFFFF, "Usted No Tiene suficiente Dinero.");
					continue;
				}
				MoveObject(elevador2, x.x, x, x.x, 0.6);
				MoveObject(elevador, x.x, x, x.x, 0.6);
				GivePlayerMoney(playerid, -1000);
				SendClientMessage(playerid, COLOR_GREEN, "Down=Bajas");
				break;
			}
		}
	}

	return 1;
}
P.D.: Espero haberme explicado bien xD

Gracias el primero si me sirvio el timer no supe donde ponerlo me daba muchos errores luego veo,una pregunta le puedo poner un timer de 3 minutos a los comandos up y down? para evitar abusos,ya le puse el radio de alcanze de los comandos y funciono todo exelente,gracias

rep+
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)