[Duda] Hacer que una funciуn se realice 1 ves
#1

Buenas. Bueno tengo una duda, Quisiera saber si existe alguna manera de que se pudiera hacer que una funciуn se realice solo 1 ves, Yo uso un cargado de autos por cuentas de usuarios, Lo que quiero esque la funciуn solo se haga cuando el jugador se conecta por primera vez, entonces que al relogear ya no se ejecute.

Gracias por su ayuda, Saludos.
Reply
#2

Ejemplo:

pawn Код:
public MiFuncion(playerid)
{
    if(pInfo[playerid][Registrado] == 1)// Obviamamente la variable que te puse es un ejemplo debes acomodarla con las variable de tu GM
    {
        // Tus codigos...
    }
    // Aquн el cуdigo que se ejecutara si no es la primera ves que se conecta...
}
Espero que me hayas entendido....

Reply
#3

Quote:
Originally Posted by Dreyfuz
Посмотреть сообщение
Ejemplo:

pawn Код:
public MiFuncion(playerid)
{
    if(pInfo[playerid][Registrado] == 1)// Obviamamente la variable que te puse es un ejemplo debes acomodarla con las variable de tu GM
    {
        // Tus codigos...
    }
    // Aquн el cуdigo que se ejecutara si no es la primera ves que se conecta...
}
Espero que me hayas entendido....

Osea no era exactamente a lo que me referia pero en realidad asi deberнa ser una forma. Lo que yo me referнa va por ahн, Lo que quiero decir esque yo posea un stock que realiza la acciуn de Cargar los vehiculos cuando un jugador se conecta, Ejemplo:


Код:
stock LoadPlayerVehicles(playerid)
{
	new playername[MAX_PLAYER_NAME];
	GetPlayerName(playerid, playername, sizeof(playername));
	//printf(" Cargado los autos de %s.", playername);
	for(new v = 0; v < MAX_PLAYERVEHICLES; v++)
    {
        if(PlayerVehicleInfo[playerid][v][pvModelId] != 0 && PlayerVehicleInfo[playerid][v][pvImpounded] == 0)
        {
            PlayerCars++;
			new carcreated = CreateVehicle(PlayerVehicleInfo[playerid][v][pvModelId], PlayerVehicleInfo[playerid][v][pvPosX], PlayerVehicleInfo[playerid][v][pvPosY], PlayerVehicleInfo[playerid][v][pvPosZ], PlayerVehicleInfo[playerid][v][pvPosAngle],PlayerVehicleInfo[playerid][v][pvColor1], PlayerVehicleInfo[playerid][v][pvColor2], -1);
			PlayerVehicleInfo[playerid][v][pvId] = carcreated;
			VehicleFuel[carcreated] = PlayerVehicleInfo[playerid][v][pvFuel];
			//SetVehicleNumberPlate(carcreated, PlayerVehicleInfo[playerid][v][pvNumberPlate]);
			if(PlayerVehicleInfo[playerid][v][pvLocked] == 1) LockPlayerVehicle(playerid, PlayerVehicleInfo[playerid][v][pvId], PlayerVehicleInfo[playerid][v][pvLock]);
        }
        else if(PlayerVehicleInfo[playerid][v][pvModelId] == 0 && PlayerVehicleInfo[playerid][v][pvImpounded] != 0)
            PlayerVehicleInfo[playerid][v][pvImpounded] = 0;
    }
    LoadAllPlayerVehicleMods(playerid);
}
Yo lo uso en el callback ''OnPlayerConnect'', Esto significa que cada ves que el jugador se conectan los autos que posea se spawnean donde los dejo la ъltima vez, Claro esta que tambien tengo otro stock para que cuando se desconecte los guarde. Entonces lo que quiero es que nunca desaparezcan los autos del jugador este conectado o desconectado, Etonces quite que los autos desaparezcan cuando el jugador desconecten en el calbback ''OnPlayerDisconnect''. Pero si quito esto, cada vez que el jugador se conecte los va a volver a cargar entonces producira un bug en ellos, y si lo quito de OnPlayerConnect no cargaran al momento de reiniciar el servidor. Entonces lo que quiero es que esta funciуn ''LoadPlayerVehicles'' se realice SOLO cuando el jugador entra por primera vez despuйs de un reinicio de consola, y si relogea ya no lo haga nuevamente. No se si me hice entender, Igual gracias por tu respuesta.
Reply
#4

usa una variable que este en 0 al conectarse y luego cuando se use cambie a 1 espero que me entiendas...
Reply
#5

Quote:
Originally Posted by Host
Посмотреть сообщение
usa una variable que este en 0 al conectarse y luego cuando se use cambie a 1 espero que me entiendas...
Si claro pense en eso, Osea al conectarce la variable en 0, asн definiria que spawnen los vehiculos y ahi le de la variable 1, Entonces al relogiar los autos ya no spawnearian, Pero como harнa si reinicio el server, El jugador se va a quedar con la variable en 1 y entonces no podran spawnear mas los vehiculos. Pense que cuando se cierra la consola en ''GamemodeExit'' a todos los jugadores les de la variable en 0, Pero como se harнa para que le de a los que no estan conectados, Osea les de la variable a todos los usuarios registrados .-.
Reply
#6

Y por quй mejor no lo haces que se cargen al iniciar el servidor? Te imaginas, va un usuario por la calle cuando de pronto se conecta otro player y aparece un vehiculo a un lado de el..
Eso serнa irrealista, mejor ponlos al iniciar el servidor y te evitas tantos problemas
Reply
#7

Quote:
Originally Posted by Josstaa
Посмотреть сообщение
Y por quй mejor no lo haces que se cargen al iniciar el servidor? Te imaginas, va un usuario por la calle cuando de pronto se conecta otro player y aparece un vehiculo a un lado de el..
Eso serнa irrealista, mejor ponlos al iniciar el servidor y te evitas tantos problemas
Lo harнa pero los vehiculos se guardan en las cuentas de los usuarios, ya que son dinбmicos. Entonces no tendria donde cargar los vehiculos si no es mas que cuando el jugador se conecta, por eso quiero que solo se carguen los vehiculos cuando el jugador entra por primera vez despuйs de un reinicio de la consola, Asн al relogear ya no vuelva a cagar el vehiculo y asн no causa bugs y los autos no desaparecen y se quedan donde los dejen.
Reply
#8

pawn Код:
stock LoadPlayerVehicles(playerid)
{
        if(GetPVarInt(playerid, "VehiclesLoaded")) return 1;
        SetPVarInt(playerid, "VehiclesLoaded", 1);
    new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername, sizeof(playername));
    //printf(" Cargado los autos de %s.", playername);
    for(new v = 0; v < MAX_PLAYERVEHICLES; v++)
    {
        if(PlayerVehicleInfo[playerid][v][pvModelId] != 0 && PlayerVehicleInfo[playerid][v][pvImpounded] == 0)
        {
            PlayerCars++;
            new carcreated = CreateVehicle(PlayerVehicleInfo[playerid][v][pvModelId], PlayerVehicleInfo[playerid][v][pvPosX], PlayerVehicleInfo[playerid][v][pvPosY], PlayerVehicleInfo[playerid][v][pvPosZ], PlayerVehicleInfo[playerid][v][pvPosAngle],PlayerVehicleInfo[playerid][v][pvColor1], PlayerVehicleInfo[playerid][v][pvColor2], -1);
            PlayerVehicleInfo[playerid][v][pvId] = carcreated;
            VehicleFuel[carcreated] = PlayerVehicleInfo[playerid][v][pvFuel];
            //SetVehicleNumberPlate(carcreated, PlayerVehicleInfo[playerid][v][pvNumberPlate]);
            if(PlayerVehicleInfo[playerid][v][pvLocked] == 1) LockPlayerVehicle(playerid, PlayerVehicleInfo[playerid][v][pvId], PlayerVehicleInfo[playerid][v][pvLock]);
        }
        else if(PlayerVehicleInfo[playerid][v][pvModelId] == 0 && PlayerVehicleInfo[playerid][v][pvImpounded] != 0)
            PlayerVehicleInfo[playerid][v][pvImpounded] = 0;
    }
    LoadAllPlayerVehicleMods(playerid);
}
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)