[Duda]Hacer que la gasolina se gaste sin haber conductor
#1

Buenas. estaba haciendo un sistema de gasolina y en la parte de hacer que si el vehiculo estй encendido pero sin conductor que siga gastando combustible no se como hacerlo, dado que vehicleid es igual a GetPlayerVehicleID, їComo podria hacerlo?

Gracias
Reply
#2

utiliza SetTimerEx con el id del vehнculo.
saludos.
Reply
#3

Quote:
Originally Posted by OTACON
Посмотреть сообщение
utiliza SetTimerEx con el id del vehнculo.
saludos.
Te refieres a esto?
Код:
gasofa[playerid] = SetTimerEx("gasolina", 10000, true, "ii", playerid, GetPlayerVehicleID(playerid));
es que lo tengo asн jeje, no se si te referias a eso
Reply
#4

PHP код:
new
    
Timer_Gasolina[MAX_VEHICLES];
forward Gastar_Gasolina(vehicleid);
public 
Gastar_Gasolina(vehicleid){
    for(new 
playerid=0playerid<GetMaxPlayers(); playerid++){
        if(
IsPlayerConnected(playerid)){
            if(
IsPlayerInVehicle(playeridvehicleid) && GetPlayerState(playerid)==PLAYER_STATE_DRIVER){
                
// gastaste gasolina
                // tu funcion ...
            
}
        }
    }
    
}
// cuando encendes el motor del vehiculo
new
    
vehicleid GetPlayerVehicleID(playerid);
if(
IsPlayerInVehicle(playeridvehicleid) && GetPlayerState(playerid)==PLAYER_STATE_DRIVER){
    
KillTimer(Timer_Gasolina[vehicleid]);
    
Timer_Gasolina[vehicleid] = SetTimerEx("Gastar_Gasolina"10*1000/*cada 10 segundos*/true"i"vehicleid);
}
// cuando apagas el motor del vehiculo
new
    
vehicleid GetPlayerVehicleID(playerid);
if(
IsPlayerInVehicle(playeridvehicleid) && GetPlayerState(playerid)==PLAYER_STATE_DRIVER){
    
KillTimer(Timer_Gasolina[vehicleid]);

Reply
#5

Quote:
Originally Posted by OTACON
Посмотреть сообщение
PHP код:
new
    
Timer_Gasolina[MAX_VEHICLES];
forward Gastar_Gasolina(vehicleid);
public 
Gastar_Gasolina(vehicleid){
    for(new 
playerid=0playerid<GetMaxPlayers(); playerid++){
        if(
IsPlayerConnected(playerid)){
            if(
IsPlayerInVehicle(playeridvehicleid) && GetPlayerState(playerid)==PLAYER_STATE_DRIVER){
                
// gastaste gasolina
                // tu funcion ...
            
}
        }
    }
    
}
// cuando encendes el motor del vehiculo
new
    
vehicleid GetPlayerVehicleID(playerid);
if(
IsPlayerInVehicle(playeridvehicleid) && GetPlayerState(playerid)==PLAYER_STATE_DRIVER){
    
KillTimer(Timer_Gasolina[vehicleid]);
    
Timer_Gasolina[vehicleid] = SetTimerEx("Gastar_Gasolina"10*1000/*cada 10 segundos*/true"i"vehicleid);
}
// cuando apagas el motor del vehiculo
new
    
vehicleid GetPlayerVehicleID(playerid);
if(
IsPlayerInVehicle(playeridvehicleid) && GetPlayerState(playerid)==PLAYER_STATE_DRIVER){
    
KillTimer(Timer_Gasolina[vehicleid]);

Gracias por el code, este codigo tambien haria que gastase gasolina sin que tenga una persona conduciendolo?

Saludos
Reply
#6

Mira haz tu mismo el cуdigo, simplemente usa un timer para que se repita de 5 segundos, o el tiempo en el cual desees que se realice la funciуn de quitar la variable de la gasolina de todos los vehнculos del servidor, dentro de ese timer, usa un bucle, dentro de ese bucle pon condicionales como por ejemplo si el motor estб encendido, si estб encendido la condiciуn se acepta, y dentro de йsta condiciуn le restas la variable de la gasolina, actualizad textdraw, progresbar, etc, dependiendo, mandas un mensaje al dueсo del vehнculo, etc, puedes hacer muchas solo depende de las necesidades que tengas.
Reply
#7

Quote:
Originally Posted by jotajeda
Посмотреть сообщение
Mira haz tu mismo el cуdigo, simplemente usa un timer para que se repita de 5 segundos, o el tiempo en el cual desees que se realice la funciуn de quitar la variable de la gasolina de todos los vehнculos del servidor, dentro de ese timer, usa un bucle, dentro de ese bucle pon condicionales como por ejemplo si el motor estб encendido, si estб encendido la condiciуn se acepta, y dentro de йsta condiciуn le restas la variable de la gasolina, actualizad textdraw, progresbar, etc, dependiendo, mandas un mensaje al dueсo del vehнculo, etc, puedes hacer muchas solo depende de las necesidades que tengas.
No estoy pidiendo que me hagan el codigo jeje, solo pregunto sobre como se harнa, ya probй a hacer un bucle y al final el contador se me bugeo, porque se me ponia el nivel de gasolina de otro vehiculo cada vez que se usaba el timer.

Aqui dejo el timer en cuestion

Код:
public gasolina(vehicleid, playerid)
{
	vehicleid = GetPlayerVehicleID(playerid);
    new motor,luces,alarma,puertascc,capo,maletero,objetivo;
    GetVehicleParamsEx(vehicleid,motor,luces,alarma,puertascc,capo,maletero,objetivo);
    if(motor == 1)
	{
 		GasolinaNumero[vehicleid]-=1;
	}
	if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
	{
		new s[50];
		format(s,50, "Combustible: %i", GasolinaNumero[vehicleid]);
		SendClientMessage(playerid, -1, s);
		new litro[40];
		format(litro, 40, "%i/100", GasolinaNumero[vehicleid]);
		TextDrawSetString(GAS4[playerid], litro);
	}
	return 1;
}
Saludos
Reply
#8

Ayuden al muchacho.
Reply
#9

Quote:
Originally Posted by Minikole
Посмотреть сообщение
No estoy pidiendo que me hagan el codigo jeje, solo pregunto sobre como se harнa, ya probй a hacer un bucle y al final el contador se me bugeo, porque se me ponia el nivel de gasolina de otro vehiculo cada vez que se usaba el timer.

Aqui dejo el timer en cuestion

Код:
public gasolina(vehicleid, playerid)
{
	vehicleid = GetPlayerVehicleID(playerid);
    new motor,luces,alarma,puertascc,capo,maletero,objetivo;
    GetVehicleParamsEx(vehicleid,motor,luces,alarma,puertascc,capo,maletero,objetivo);
    if(motor == 1)
	{
 		GasolinaNumero[vehicleid]-=1;
	}
	if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
	{
		new s[50];
		format(s,50, "Combustible: %i", GasolinaNumero[vehicleid]);
		SendClientMessage(playerid, -1, s);
		new litro[40];
		format(litro, 40, "%i/100", GasolinaNumero[vehicleid]);
		TextDrawSetString(GAS4[playerid], litro);
	}
	return 1;
}
Saludos
Creo que el problema del textdraw se soluciona creбndolo para cada jugador, no estoy seguro, pero me parece que tiene lуgica. asн:

PHP код:
// news
new Text:litro[MAX_PLAYERS];
En uso litro(playerid); 
//Ah no, ya lo tienes xd.
Reply
#10

Quote:
Originally Posted by TheMatius
Посмотреть сообщение
Creo que el problema del textdraw se soluciona creбndolo para cada jugador, no estoy seguro, pero me parece que tiene lуgica. asн:

PHP код:
// news
new Text:litro[MAX_PLAYERS];
En uso litro(playerid); 
//Ah no, ya lo tienes xd.
pawn Код:
PlayerText:litro[MAX_PLAYERS];
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)