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;
}
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;
}
|
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;
}
|