SA-MP Forums Archive
Bucle - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: Bucle (/showthread.php?tid=522660)



Bucle - deryan - 28.06.2014

Hola tengo este comando:
pawn Код:
CMD:entrar(playerid, params[])
{
    for(new i = 0; i < MAX_CASAS; i++)
    {
        if(IsPlayerInRangeOfPoint(playerid, 1.0, casaInfo[i][posicionCasa][0], casaInfo[i][posicionCasa][1], casaInfo[i][posicionCasa][2]))
        {
            SetPlayerPos(playerid, casaInfo[i][cX], casaInfo[i][cY], casaInfo[i][cZ]);
            SetPlayerFacingAngle(playerid, casaInfo[i][cAngle]);
            SetPlayerInterior(playerid, casaInfo[i][Interior]);
            SetPlayerVirtualWorld(playerid, casaInfo[i][Virtualw]);

            SendClientMessage(playerid, -1, "Bienvenido.");
        }
        else
        {
            SendClientMessage(playerid, -1, "No estбs cerca de la puerta de una casa.");
        }
    }
    return 1;
}
El problema es cuando agrego un else, si la condiciуn se cumple muestra el msj 1 vez, pero si no lo hace se repite 100 veces, quй hago para evitar eso?


Respuesta: Bucle - [H]ouse - 28.06.2014

@Edit: Si lo detienes con break, las iteraciones no serбn las indicadas para abarcar todo el array 'casaInfo'.
pawn Код:
CMD:entrar(playerid, params[])
{
    new i;  
    for(i = 0; i < MAX_CASAS; i++)
    {
        if(IsPlayerInRangeOfPoint(playerid, 1.0, casaInfo[i][posicionCasa][0], casaInfo[i][posicionCasa][1], casaInfo[i][posicionCasa][2]))
        {
            SetPlayerPos(playerid, casaInfo[i][cX], casaInfo[i][cY], casaInfo[i][cZ]);
            SetPlayerFacingAngle(playerid, casaInfo[i][cAngle]);
            SetPlayerInterior(playerid, casaInfo[i][Interior]);
            SetPlayerVirtualWorld(playerid, casaInfo[i][Virtualw]);

            SendClientMessage(playerid, -1, "Bienvenido.");
            break;
        }
    }
    if(i == MAX_CASAS) SendClientMessage(playerid, -1, "No estбs cerca de la puerta de una casa.");
    return 1;
}



Respuesta: Bucle - deryan - 28.06.2014

Me acabo de dar cuenta que utilizando el break no me funciona del todo, el else siempre me manda el msj aunque la condiciуn se cumpla :I


Respuesta: Bucle - Parka - 28.06.2014

Break, corta el ciclo el cual esta ejecutando el bucle lo que debes hacer es colocar una variable o hacer una funciуn aparte, simple pero no darй absolutamente nada de cуdigo.


Respuesta: Bucle - deryan - 28.06.2014

Quote:
Originally Posted by Parka
Посмотреть сообщение
Break, corta el ciclo el cual esta ejecutando el bucle lo que debes hacer es colocar una variable o hacer una funciуn aparte, simple pero no darй absolutamente nada de cуdigo.
No tengo idea por algo pregunto... -.-

Alguien sabe?


Respuesta: Bucle - [H]ouse - 28.06.2014

їProbaste el cуdigo que publique?.
El ciclo no lo rompes sн no se encuentra en las coordenadas, al final verificas sн el ciclo fue completado para mandar el mensaje.