DIALOGO de Renta.
case DIALOG_RENTA:
{
if(!response) return RemovePlayerFromVehicle(playerid);
if(response)
{
if(LlaveRenta_[playerid] != -1) return RemovePlayerFromVehicle(playerid), SendClientMessage(playerid, COLOR_ROJO, "* Ya tienes un vehículo rentando, utiliza(/dejar renta) para alquilar otro.");
if(VehiculoRenta_(VehiculoID))
{
new
found;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(LlaveRenta_[i] == VehiculoID)
{
SendClientMessage(playerid, COLOR_ROJO, "* Ya este vehículo se encuentra rentado por otra persona."), found = 1;
break;
}
}
if(found != 1)
{
if(!IsNumeric(inputtext)) return SendClientMessage(playerid, COLOR_ROJO, "* Solo está permitido números en este dialogo."), RemovePlayerFromVehicle(playerid);
if(strval(inputtext) < 5 || strval(inputtext) > 100) return SendClientMessage(playerid, COLOR_ROJO, "* Tiene que ser entre 5 y 100 para que funcione."), RemovePlayerFromVehicle(playerid);
new
Cantidad = strval(inputtext) * 3;
if(GetPlayerMoney(playerid) < Cantidad){RemovePlayerFromVehicle(playerid);return 1;}
QuitarDineroPlayer_(playerid, Cantidad);
ShowInfoForPlayer(playerid, "Aviso: Cuando dejes de usar el vehiculo usa ~y~/dejar renta", 3000);
LlaveRenta_[playerid] = VehiculoID, TiempoRenta_[playerid] = strval(inputtext);
}
}
else RemovePlayerFromVehicle(playerid);
return 1;
}
}
Y en OnGamemodeInit se activa 1 timer de 1 segundo y pues este es el timer con la comprobación de los autos de renta.
CALLBACK: TimerDeUnSegundo()
{
new
hour, minute;
gettime(hour, minute);
SetWorldTime(hour);
if(minute == 2 && PayDay_ == 0){PayDay(), PayDay_ = 1;}
if(minute == 3 && PayDay_ == 1){PayDay_ = 0;}
static
Contador[3];
for(new i; i < sizeof(Contador); i++) Contador[i]++;
if(Contador[1] >= 60)
{
Contador[1] = 0;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(TiempoRenta_[i] != 0) TiempoRenta_[i]--;
if(TiempoRenta_[i] == 0 && LlaveRenta_[i] != -1)
{
SetVehicleToRespawn(LlaveRenta_[i]);
LlaveRenta_[i] = -1, TiempoRenta_[i] = 0;
SendClientMessage(i, COLOR_AZUL, "* Importante: Su renta caducó, por lo tanto se le quitó el vehículo.");
}
}
}
}
ShowPlayerDialog(playerid, DIALOG_RENT, DIALOG_STYLE_LIST, "Selecciona el tiempo de renta", "Cinco minutos\nDiez minutos\nMedia hora\nUna hora", "Seleccionar", "Cancelar");
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case DIALOG_RENT:
{
if(!response)
return true;
if(response)
{
switch(listitem)
{
case 0:
TiempoRenta_[playerid] = 300000;
case 1:
TiempoRenta_[playerid] = 600000;
case 2:
TiempoRenta_[playerid] = 1800000;
case 3:
TiempoRenta_[playerid] = 3600000;
}
SendClientMessage(playerid, -1, "ЎFelicidades, has rentado un vehнculo!");
}
}
}
reutrn 1;
}
|
Simplemente tenйs que hacer que cuando el usuario suba a el vehнculo en renta le salga el dialog en estilo list, algo como esto:
Код:
ShowPlayerDialog(playerid, DIALOG_RENT, DIALOG_STYLE_LIST, "Selecciona el tiempo de renta", "Cinco minutos\nDiez minutos\nMedia hora\nUna hora", "Seleccionar", "Cancelar"); Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case DIALOG_RENT:
{
if(!response)
return true;
if(response)
{
switch(listitem)
{
case 0:
TiempoRenta_[playerid] = 300000;
case 1:
TiempoRenta_[playerid] = 600000;
case 2:
TiempoRenta_[playerid] = 1800000;
case 3:
TiempoRenta_[playerid] = 3600000;
}
SendClientMessage(playerid, -1, "ЎFelicidades, has rentado un vehнculo!");
}
}
}
reutrn 1;
}
|
case DIALOG_RENTA:
{
if(!response) return RemovePlayerFromVehicle(playerid);
if(response)
{
if(LlaveRenta_[playerid] != -1) return RemovePlayerFromVehicle(playerid), SendClientMessage(playerid, COLOR_ROJO, "* Ya tienes un vehículo rentando, utiliza(/dejar renta) para alquilar otro.");
if(VehiculoRenta_(VehiculoID))
{
new
found;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(LlaveRenta_[i] == VehiculoID)
{
SendClientMessage(playerid, COLOR_ROJO, "* Ya este vehículo se encuentra rentado por otra persona."), found = 1;
break;
}
}
if(found != 1)
{
switch(listitem)
{
case 0:
{
if(GetPlayerMoney(playerid) < 500){RemovePlayerFromVehicle(playerid);return 1;}
QuitarDineroPlayer_(playerid, 500);
ShowInfoForPlayer(playerid, "Aviso: Cuando dejes de usar el vehiculo usa ~y~/dejar renta", 5000);
LlaveRenta_[playerid] = VehiculoID, TiempoRenta_[playerid] = 300000;
}
case 1:
{
if(GetPlayerMoney(playerid) < 700){RemovePlayerFromVehicle(playerid);return 1;}
QuitarDineroPlayer_(playerid, 700);
ShowInfoForPlayer(playerid, "Aviso: Cuando dejes de usar el vehiculo usa ~y~/dejar renta", 5000);
LlaveRenta_[playerid] = VehiculoID, TiempoRenta_[playerid] = 600000;
}
case 2:
{
if(GetPlayerMoney(playerid) < 900){RemovePlayerFromVehicle(playerid);return 1;}
QuitarDineroPlayer_(playerid, 900);
ShowInfoForPlayer(playerid, "Aviso: Cuando dejes de usar el vehiculo usa ~y~/dejar renta", 5000);
LlaveRenta_[playerid] = VehiculoID, TiempoRenta_[playerid] = 1800000;
}
case 3:
{
if(GetPlayerMoney(playerid) < 1200){RemovePlayerFromVehicle(playerid);return 1;}
QuitarDineroPlayer_(playerid, 1200);
ShowInfoForPlayer(playerid, "Aviso: Cuando dejes de usar el vehiculo usa ~y~/dejar renta", 5000);
LlaveRenta_[playerid] = VehiculoID, TiempoRenta_[playerid] = 3600000;
}
}
}
}
else RemovePlayerFromVehicle(playerid);
return 1;
}
}
y la comprobación del tiempo renta es esta
CALLBACK: TimerDeUnSegundo()
{
new
hour, minute;
gettime(hour, minute);
SetWorldTime(hour);
if(minute == 2 && PayDay_ == 0){PayDay(), PayDay_ = 1;}
if(minute == 3 && PayDay_ == 1){PayDay_ = 0;}
static
Contador[3];
for(new i; i < sizeof(Contador); i++) Contador[i]++;
if(Contador[1] >= 60)
{
Contador[1] = 0;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(TiempoRenta_[i] != 0) TiempoRenta_[i]--;
if(TiempoRenta_[i] == 0 && LlaveRenta_[i] != -1)
{
SetVehicleToRespawn(LlaveRenta_[i]);
LlaveRenta_[i] = -1, TiempoRenta_[i] = 0;
SendClientMessage(i, COLOR_AZUL, "* Importante: Su renta caducó, por lo tanto se le quitó el vehículo.");
}
}
}
}
|
Te coloquй los tiempos en milisegundos por si era el caso que usabas SetTimerEx, en caso de usar un timer de un segundo simplemente colocб los tiempos de renta del dialog en segundos reales, es decir, un minuto, 60 segundos.
No tiene problema mi cуdigo, simplemente que estб comprobando los segundos y nunca llegarб a 300000 segundos si no tenйs paciencia. |
case DIALOG_RENTA:
{
if(!response) return RemovePlayerFromVehicle(playerid);
if(response)
{
if(LlaveRenta_[playerid] != -1) return RemovePlayerFromVehicle(playerid), SendClientMessage(playerid, COLOR_ROJO, "* Ya tienes un vehículo rentando, utiliza(/dejar renta) para alquilar otro.");
if(VehiculoRenta_(VehiculoID))
{
new
found;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(LlaveRenta_[i] == VehiculoID)
{
SendClientMessage(playerid, COLOR_ROJO, "* Ya este vehículo se encuentra rentado por otra persona."), found = 1;
break;
}
}
if(found != 1)
{
switch(listitem)
{
case 0:
{
if(GetPlayerMoney(playerid) < 500){RemovePlayerFromVehicle(playerid);return 1;}
QuitarDineroPlayer_(playerid, 500);
ShowInfoForPlayer(playerid, "Aviso: Cuando dejes de usar el vehiculo usa ~y~/dejar renta", 5000);
LlaveRenta_[playerid] = VehiculoID, TiempoRenta_[playerid] = 300;
}
case 1:
{
if(GetPlayerMoney(playerid) < 700){RemovePlayerFromVehicle(playerid);return 1;}
QuitarDineroPlayer_(playerid, 700);
ShowInfoForPlayer(playerid, "Aviso: Cuando dejes de usar el vehiculo usa ~y~/dejar renta", 5000);
LlaveRenta_[playerid] = VehiculoID, TiempoRenta_[playerid] = 600;
}
case 2:
{
if(GetPlayerMoney(playerid) < 900){RemovePlayerFromVehicle(playerid);return 1;}
QuitarDineroPlayer_(playerid, 900);
ShowInfoForPlayer(playerid, "Aviso: Cuando dejes de usar el vehiculo usa ~y~/dejar renta", 5000);
LlaveRenta_[playerid] = VehiculoID, TiempoRenta_[playerid] = 1800;
}
case 3:
{
if(GetPlayerMoney(playerid) < 1200){RemovePlayerFromVehicle(playerid);return 1;}
QuitarDineroPlayer_(playerid, 1200);
ShowInfoForPlayer(playerid, "Aviso: Cuando dejes de usar el vehiculo usa ~y~/dejar renta", 5000);
LlaveRenta_[playerid] = VehiculoID, TiempoRenta_[playerid] = 3600;
}
}
}
}
else RemovePlayerFromVehicle(playerid);
return 1;
}
}
SetTimer("TimerDeUnSegundo", 1000, true); (OnGamemodeInit)
CALLBACK: TimerDeUnSegundo()
{
new
hour, minute;
gettime(hour, minute);
SetWorldTime(hour);
if(minute == 2 && PayDay_ == 0){PayDay(), PayDay_ = 1;}
if(minute == 3 && PayDay_ == 1){PayDay_ = 0;}
static
Contador[3];
for(new i; i < sizeof(Contador); i++) Contador[i]++;
if(Contador[1] >= 60)
{
Contador[1] = 0;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(TiempoRenta_[i] != 0) TiempoRenta_[i]--;
if(TiempoRenta_[i] == 0 && LlaveRenta_[i] != -1)
{
SetVehicleToRespawn(LlaveRenta_[i]);
LlaveRenta_[i] = -1, TiempoRenta_[i] = 0;
SendClientMessage(i, COLOR_NARANJA, "* Importante: Su renta caducó, por lo tanto se le quitó el vehículo.");
}
}
}
}