Ayuda con este cуdigo..
#1

Buenas, el sistema de renta de vehнculos que tengo funciona, te subes a un coche tienes que seleccionar cuanto tiempo lo quieres rentar y bueno tu elijes, te descuenta el dinero y te lo da... todo bien, mбs solo eso es el sistema a partir de ahн no supe como seguir con esto, necesito que si seleccionas 15 minutos, o 30 etc te ponga un timer del tiempo que se seleccionу y cuando termine ese tiempo te quite el vehнculo, уsea haga respawn... simplemente eso, si me pueden ayudar con esto gracias de antemano + reputaciуn.

Код:
Cuando te subes en el vehнculo en.. "OnPlayerStateChange"

	    if(EsVehRenta(VehID))
	    {
	    	if(VehRentado[VehID] == 0)
	    	{
                ShowPlayerDialog(playerid,DIALOG_RENTA,DIALOG_STYLE_LIST,"Renta","15 Minutos    $300.\n30 Minutos    $600.\n60 Minutos    $800.","Rentar","Salir");
			}
			else if(VehRentado[VehID] == 1 && GetPVarInt(playerid,"RentoVehID") != VehID)
			{
				RemovePlayerFromVehicle(playerid);
				Error(playerid,"ЎYa alguien ha rentado este vehнculo!");
				return 1;
			}
			else if(VehRentado[VehID] == 1 && GetPVarInt(playerid,"RentoVehID") == VehID){}
		}

lo que activa el dialogo... y el response en donde quiero aplicar los timers:

    	case DIALOG_RENTA:
    	{
		    if(!response) return RemovePlayerFromVehicle(playerid);
	    	if(GetPVarInt(playerid,"RentoVehID"))
	    	{
				Error(playerid,"ЎYa has rentado un vehнculo!");
				RemovePlayerFromVehicle(playerid);
		    }
		    switch(listitem)
		    {
		        case 0:
		        {
					if(GetPlayerMoney(playerid) < 300)
					{
				    	Error(playerid, "ЎNo tienes dinero suficiente!");
						RemovePlayerFromVehicle(playerid);
				    	return 1;
					}
                    SendClientMessage(playerid, C_BLANCO, "ЎRentaste este vehнculo por "#CGRIS2"15 minutos"#CBLANCO" con el costo de 300 dуlares!.");
					SetPVarInt(playerid, "RentoVehID", GetPlayerVehicleID(playerid));
					VehRentado[GetPlayerVehicleID(playerid)] = 1;
					QuitarDinero(playerid, 300);
				}
		        case 1:
		        {
					if(GetPlayerMoney(playerid) < 600)
					{
    	                Error(playerid, "ЎNo tienes dinero suficiente!");
						RemovePlayerFromVehicle(playerid);
				    	return 1;
					}
                    SendClientMessage(playerid, C_BLANCO, "ЎRentaste este vehнculo por "#CGRIS2"30 minutos"#CBLANCO" con el costo de 600 dуlares!.");
					SetPVarInt(playerid, "RentoVehID", GetPlayerVehicleID(playerid));
					VehRentado[GetPlayerVehicleID(playerid)] = 1;
					QuitarDinero(playerid, 600);
				}
		        case 2:
		        {
					if(GetPlayerMoney(playerid) < 800)
					{
                        Error(playerid, "ЎNo tienes dinero suficiente!");
						RemovePlayerFromVehicle(playerid);
				    	return 1;
					}
                    SendClientMessage(playerid, C_BLANCO, "ЎRentaste este vehнculo por "#CGRIS2"60 minutos"#CBLANCO" con el costo de 800 dуlares!.");
					SetPVarInt(playerid, "RentoVehID", GetPlayerVehicleID(playerid));
                    VehRentado[GetPlayerVehicleID(playerid)] = 1;
					QuitarDinero(playerid, 800);
				}
			}
			return 1;
		}
Reply
#2

Se podrнa hacer de esta manera:

Код:
new rentasCoche[][] =
{
	{15,300},
	{30,600},
	{60,800}
};

forward FUNC_TimerRentaCoche(playerid);
public FUNC_TimerRentaCoche(playerid)
{
	if(GetPVarInt(playerid, "RentoVehID") == GetPlayerVehicleID(playerid))
	{
	    SetVehicleToRespawn(GetPVarInt(playerid, "RentoVehID"));
        VehRentado[GetPVarInt(playerid, "RentoVehID")] = 0;
        DeletePVar(playerid, "RentoVehID");
	}
	return 1;
}

Cuando te subes en el vehнculo en.. "OnPlayerStateChange"

	    if(EsVehRenta(VehID))
	    {
	    	if(VehRentado[VehID] == 0)
	    	{
				new std[200];
				for(new i; i < sizeof(rentasCoche); i++)
				    format(std, sizeof(std), "%s%i Minutos\t$%i\n", rentasCoche[i][0], rentasCoche[i][1]);
                ShowPlayerDialog(playerid,DIALOG_RENTA,DIALOG_STYLE_LIST,"Renta",std,"Rentar","Salir");
			}
			else if(VehRentado[VehID] == 1 && GetPVarInt(playerid,"RentoVehID") != VehID)
			{
				RemovePlayerFromVehicle(playerid);
				Error(playerid,"ЎYa alguien ha rentado este vehнculo!");
				return 1;
			}
		}

lo que activa el dialogo... y el response en donde quiero aplicar los timers:

    	case DIALOG_RENTA:
    	{
		    if(!response) return RemovePlayerFromVehicle(playerid);
	    	if(GetPVarInt(playerid,"RentoVehID"))
	    	{
				Error(playerid,"ЎYa has rentado un vehнculo!");
				RemovePlayerFromVehicle(playerid);
				return 1;
		    }
		       
			if(GetPlayerMoney(playerid) < rentasCoche[listitem][1])
			{
		    	Error(playerid, "ЎNo tienes dinero suficiente!");
				RemovePlayerFromVehicle(playerid);
		    	return 1;
			}
			
			new std[120];
			format(std, sizeof(std), "ЎRentaste este vehнculo por "#CGRIS2"%i minutos"#CBLANCO" con el costo de %i dуlares!.", rentasCoche[listitem][0], rentasCoche[listitem][1]);
            SendClientMessage(playerid, C_BLANCO, std);
			SetPVarInt(playerid, "RentoVehID", GetPlayerVehicleID(playerid));

			//Yo por lo general uso timers de YSI.. pero esto es lo que quieres
			SetTimerEx("FUNC_TimerRentaCoche", rentasCoche[listitem][0]*60000, false, "i", playerid);
			
			VehRentado[GetPlayerVehicleID(playerid)] = 1;
			QuitarDinero(playerid,  rentasCoche[listitem][1]);
			return 1;
		}
Reply
#3

Quote:
Originally Posted by Jastak
Посмотреть сообщение
Se podrнa hacer de esta manera:

Код:
new rentasCoche[][] =
{
	{15,300},
	{30,600},
	{60,800}
};

forward FUNC_TimerRentaCoche(playerid);
public FUNC_TimerRentaCoche(playerid)
{
	if(GetPVarInt(playerid, "RentoVehID") == GetPlayerVehicleID(playerid))
	{
	    SetVehicleToRespawn(GetPVarInt(playerid, "RentoVehID"));
        VehRentado[GetPVarInt(playerid, "RentoVehID")] = 0;
        DeletePVar(playerid, "RentoVehID");
	}
	return 1;
}

Cuando te subes en el vehнculo en.. "OnPlayerStateChange"

	    if(EsVehRenta(VehID))
	    {
	    	if(VehRentado[VehID] == 0)
	    	{
				new std[200];
				for(new i; i < sizeof(rentasCoche); i++)
				    format(std, sizeof(std), "%s%i Minutos\t$%i\n", rentasCoche[i][0], rentasCoche[i][1]);
                ShowPlayerDialog(playerid,DIALOG_RENTA,DIALOG_STYLE_LIST,"Renta",std,"Rentar","Salir");
			}
			else if(VehRentado[VehID] == 1 && GetPVarInt(playerid,"RentoVehID") != VehID)
			{
				RemovePlayerFromVehicle(playerid);
				Error(playerid,"ЎYa alguien ha rentado este vehнculo!");
				return 1;
			}
		}

lo que activa el dialogo... y el response en donde quiero aplicar los timers:

    	case DIALOG_RENTA:
    	{
		    if(!response) return RemovePlayerFromVehicle(playerid);
	    	if(GetPVarInt(playerid,"RentoVehID"))
	    	{
				Error(playerid,"ЎYa has rentado un vehнculo!");
				RemovePlayerFromVehicle(playerid);
				return 1;
		    }
		       
			if(GetPlayerMoney(playerid) < rentasCoche[listitem][1])
			{
		    	Error(playerid, "ЎNo tienes dinero suficiente!");
				RemovePlayerFromVehicle(playerid);
		    	return 1;
			}
			
			new std[120];
			format(std, sizeof(std), "ЎRentaste este vehнculo por "#CGRIS2"%i minutos"#CBLANCO" con el costo de %i dуlares!.", rentasCoche[listitem][0], rentasCoche[listitem][1]);
            SendClientMessage(playerid, C_BLANCO, std);
			SetPVarInt(playerid, "RentoVehID", GetPlayerVehicleID(playerid));

			//Yo por lo general uso timers de YSI.. pero esto es lo que quieres
			SetTimerEx("FUNC_TimerRentaCoche", rentasCoche[listitem][0]*60000, false, "i", playerid);
			
			VehRentado[GetPlayerVehicleID(playerid)] = 1;
			QuitarDinero(playerid,  rentasCoche[listitem][1]);
			return 1;
		}
Muchas gracias, te enviarй la reputaciуn saludos.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)