[Ajuda] Comando bugando
#1

Sempre que digito /guinchar no meu gamemode, ele se repete milhares de vezes, causando atй lag no servidor, nгo consigo achar qual o problema, se alguem souber, me ajude.



Comando:


pawn Код:
CMD:guinchar(playerid){
        if(IsPlayerConnected(playerid)){
            if(gPlayerInfo[playerid][playerProf] == 1){
                if(IsPlayerInAnyVehicle(playerid)){
                    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 525)
                    {
                        if(GetPlayerState(playerid)==2)
                        {
                            new Float:pX, Float:pY, Float:pZ;
                            GetPlayerPos(playerid, pX, pY, pZ);
                            new Float:vX, Float:vY, Float:vZ;
                            new Found=0;
                            new vid=0;
                            while((vid<MAX_VEHICLES)&&(!Found))
                            {
                                vid++;
                                GetVehiclePos(vid, vX, vY, vZ);
                                if ((floatabs(pX-vX)<7.0)&&(floatabs(pY-vY)<7.0)&&(floatabs(pZ-vZ) <7.0)&&(vid!=GetPlayerVehicleID(playerid)))
                                {
                                    if(IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid)))
                                    {
                                        DetachTrailerFromVehicle(GetPlayerVehicleID(playerid));
                                        SendClientMessage(playerid, 0xF3FF8AFF, "|INFO| Veiculo liberado com sucesso.");
                                    }
                                    else
                                    {
                                        AttachTrailerToVehicle(vid,GetPlayerVehicleID(playerid));
                                        SendClientMessage(playerid, 0xF3FF8AFF, "|INFO| Veiculo rebocado com sucesso.");
                                        SendClientMessage(playerid, 0xF3FF8AFF, "|INFO| Leve para oficina para concertar-lo.");
                                    }
                                }
                            }
                        }
                        else
                        {
                            SendClientMessage(playerid, 0xff0000AA, "Vocк precisa estar dirigindo!");
                            return 1;
                        }
                    }
                    else
                    {
                        SendClientMessage(playerid, 0xff0000AA, "Vocк nгo tem um Guincho!");
                        return 1;
                    }
                }
                else
                {
                    SendClientMessage(playerid, 0xff0000AA, "Vocк nгo estб em um guincho!");
                    return 1;
                }
            }
            else
            {
                SendClientMessage(playerid, 0xff0000AA, "Vocк nгo й um mecвnico.");
                return 1;
            }
        }
        return 1;
    }
Reply
#2

Quando acontece isso, й porque vocк estб usando as mensagens dentro de um for ou while.

Entгo, tire de dentro dos { } ou encontre uma forma de arrumar isso.

Nesse caso, as mensagens vгo repetir de acordo com o MAX_VEHICLES, ou seja, 500.
Reply
#3

pawn Код:
CMD:guinchar(playerid)
{
    if(!(gPlayerInfo[playerid][playerProf] == 1))
        return SendClientMessage(playerid, 0xff0000AA, "Vocк nгo й um mecвnico.");
    if(!IsPlayerInAnyVehicle(playerid) || GetVehicleModel(GetPlayerVehicleID(playerid)) != 525)
        return SendClientMessage(playerid, 0xff0000AA, "Vocк nгo estб em um guincho!");
    if(GetPlayerState(playerid)!=2)
        return SendClientMessage(playerid, 0xff0000AA, "Vocк precisa estar dirigindo!");
   
    new Float:pX, Float:pY, Float:pZ, Float:vX, Float:vY, Float:vZ;
    GetPlayerPos(playerid, pX, pY, pZ);
   
    for(new vid = 0; vid < MAX_VEHICLES; vid++)
    {
        GetVehiclePos(vid, vX, vY, vZ);
        if ((floatabs(pX-vX)<7.0)&&(floatabs(pY-vY)<7.0)&&(floatabs(pZ-vZ) <7.0)&&(vid!=GetPlayerVehicleID(playerid)))
        {
            if(IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid)))
            {
                DetachTrailerFromVehicle(GetPlayerVehicleID(playerid));
                SendClientMessage(playerid, 0xF3FF8AFF, "|INFO| Veiculo liberado com sucesso.");
                break;
            }
            else
            {
                AttachTrailerToVehicle(vid,GetPlayerVehicleID(playerid));
                SendClientMessage(playerid, 0xF3FF8AFF, "|INFO| Veiculo rebocado com sucesso.");
                SendClientMessage(playerid, 0xF3FF8AFF, "|INFO| Leve para oficina para concertar-lo.");
                break;
            }
    }
    return 1;
}
teste
Reply
#4

Funcionou, obrigado +REP

@Duvida
Agora, como vou fazer para diferenciar quando o carro esta perto ou nгo?

Do comando que vocк postou, se ele nгo tiver perto do carro, manda a msg msm assim
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)