[Ajuda] Pequeno problema aqui com sistema de carretas
#1

Galera, eu to com um probleminha aqui no meu sistema de carretas, estou tentando fazer um sistema bбsico, porйm complexo de caminhoneiros no meu servidor, mas eu to tendo conflitos com id's de trailers de carretas, pois eu nгo sei muito bem trabalhar com trailerattached, entгo venho aqui pedir ajuda de vocкs para alguma ideia de como arrumar isso.









pawn Код:
//aqui estб a funзгo na qual carregarб a carreta no caso sу o trailer
    if(newkeys == KEY_YES && GetPlayerState(playerid) == PLAYER_STATE_DRIVER) // Tecla Y
    {
        new trailer = GetVehicleTrailer(veh);
        if(CarregarCarretaCombustivel(playerid) && InfoJogador[playerid][iEmprego] == eCaminhoneiro && CarrosDeCaminhoneiros(veh))
        {
            if(GetVehicleModel(trailer) != 584) //Verifica se o modelo do trailer do veiculo em questгo й 584 (tanque de combustivel)
            {
                MP(playerid, cinza, "Vocк nгo estб com uma carreta de tanque de combustнvel engatada!");
                return 1;
            }
            else if(GetVehicleModel(trailer) == 584)
            {
                if(CarregamentoNasCarretasC[trailer] < 500)
                {
                    if(JaEstaCarregando[playerid] == 1)
                    {
                        MP(playerid, cinza, "Vocк jб estб fazendo o carregamento da carreta, pode cancelar pressionando 'N'!");
                    }
                    else
                    {
                        MP(playerid, cinza, "Vocк iniciou o carregamento, para cancelar pressione 'N'!");
                        JaEstaCarregando[playerid] = 1;
                        TogglePlayerControllable(playerid, false);
                        GameTextForPlayer(playerid, "~n~~n~~w~Sua carreta esta sendo carregada!~n~Aguarde!~n~Para cancelar pressione 'N'", 5000, 3);
                        timerCarregamento = SetTimerEx("CarregandoCarretaCombustivel", 1000, true, "ii", playerid, trailer);
                        return 1;
                    }
                }
                else if(CarregamentoNasCarretasC[trailer] == 500)
                {
                    GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~y~Sua carreta ja esta~n~~w~100% ~g~carregada!", 10000, 3);
                    return 1;
                }
            }
        }
    }
forward CarregandoCarretaCombustivel(playerid, idcarreta);
public CarregandoCarretaCombustivel(playerid, idcarreta)
{
    new engatada = GetVehicleTrailer(GetPlayerVehicleID(playerid));
    if(engatada == idcarreta)
    {
        if(CarregamentoNasCarretasC[idcarreta] < 1000)
        {
            CarregamentoNasCarretasC[idcarreta]+= 5;
            DinheiroPelaCargaCombustivel[playerid] += 25;
            UltimoCarregamento[playerid] = CarregamentoNasCarretasC[idcarreta];
//            MFP(playerid, -1, "Carregando trailer de combustivel %d com %d valor total a pagar R$%.2d!", idcarreta, CarregamentoNasCarretasC[idcarreta], DinheiroPelaCargaCombustivel[playerid]);
        }
        else if(CarregamentoNasCarretasC[idcarreta] == 1000)
        {
            TogglePlayerControllable(playerid, true);
            GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~y~Sua carreta esta~n~~w~100% ~g~carregada!", 10000, 3);
            KillTimer(timerCarregamento);
        }
    }
    return 1;
}
//aqui estб a funзгo na qual serб chamada a atualizaзгo do textdraw conforme o id da carreta(trailer) porйm se eu desengato uma e engato outra, a outra fica com a mesma quantia de carga que a antiga...
forward AtualizarCargas(playerid, idcarreta);
public AtualizarCargas(playerid, idcarreta)
{
    new str[245];
//  MFP(playerid, -1, "teste id carreta %d", idcaminhao);

    new cavalinho = GetPlayerVehicleID(playerid);
    if(IsTrailerAttachedToVehicle(cavalinho) == 1)
    {
        if(GetVehicleModel(GetVehicleTrailer(cavalinho)) == 584)
        {
            TipoCarregamento[idcarreta] = tcCombustivel;
            if(CarregamentoNasCarretasC[idcarreta] == 0)
            {
                TextDrawSetString(textTipoCarga[idcarreta], "Carga: ~y~Combustivel");
                TextDrawSetString(textQuantiaCarga[idcarreta], "Quantia: ~y~0/1000L");
                TextDrawSetString(textValorCarga[idcarreta], "Valor carga: ~y~Nada");
                UltimoCarregamento[playerid] = 0;
            }
            else if(CarregamentoNasCarretasC[idcarreta] >= 1)
            {
                TextDrawSetString(textTipoCarga[idcarreta], "Carga: ~y~Combustivel");
                format(str, 256, "Quantia: ~y~%d/1000", CarregamentoNasCarretasC[idcarreta]);
                TextDrawSetString(textQuantiaCarga[idcarreta], str);
                format(str, 256, "Valor da carga: ~y~R$%.2d", DinheiroPelaCargaCombustivel[playerid]);
                TextDrawSetString(textValorCarga[idcarreta], str);
                UltimoCarregamento[playerid] = CarregamentoNasCarretasC[idcarreta];
            }
            TextDrawShowForPlayer(playerid,textTipoCarga[idcarreta]);
            TextDrawShowForPlayer(playerid,textQuantiaCarga[idcarreta]);
            TextDrawShowForPlayer(playerid,textValorCarga[idcarreta]);
            TextDrawShowForPlayer(playerid,textBordaCargas);
            TextDrawShowForPlayer(playerid,textFundoCargas);
            TextDrawShowForPlayer(playerid,textInfosCarga);
        }
    }
    else
    {
        TextDrawHideForPlayer(playerid,textTipoCarga[idcarreta]);
        TextDrawHideForPlayer(playerid,textQuantiaCarga[idcarreta]);
        TextDrawHideForPlayer(playerid,textValorCarga[idcarreta]);
        TextDrawHideForPlayer(playerid,textBordaCargas);
        TextDrawHideForPlayer(playerid,textFundoCargas);
        TextDrawHideForPlayer(playerid,textInfosCarga);
    }
    return 1;
}
forward VerificarCarretas(playerid, cavalinho);
public VerificarCarretas(playerid, cavalinho)
{
    if(IsTrailerAttachedToVehicle(cavalinho) == 1)
    {
        new trailer = GetVehicleTrailer(cavalinho);
        timerCargas = SetTimerEx("AtualizarCargas", true, 1000, "ii", playerid, trailer);
    }
    else
    {
        KillTimer(timerCargas);
    }
    return 1;
}
se alguem puder me ajudar eu agradeзo desde jб
Reply
#2

poxa galera eu dificilmente abro um tуpico de ajuda, procuro sempre ajudar as pessoas e nem assim vocкs podem colaborar com agente?
Reply
#3

Qual o erro esta ocorrendo?
Reply
#4

Antes quando eu carregava uma carreta tudo certo ficava la as informaзхes dela, mas ai apуs eu desengatar ela e engatar a outra carreta, essa nova engatada ficava com as mesmas informaзхes da antiga, ai eu mudei umas coisas aqui e agora um timer que atualiza as informaзхes da carreta estб travando o server, logo que eu engato uma carreta o server trava *--*
pawn Код:
//quando o player entra na carreta executa essa funзгo
        else if(CarrosDeCaminhoneiros(car))
        {
            if(EmpregoCaminhoneiros(playerid))
            {
                timerCarreta = SetTimerEx("VerificarCarretas", true, 1000, "ii", playerid, car);
                MP(playerid, cor_caminhoneiros, "Para comeзar alguma carga, engate um dos 3 trailers e procure uma empresa para fazer transportes!");
            }
            else
            {
                RemovePlayerFromVehicle(playerid);
                MP(playerid, grad3, "Vocк nгo й um Caminhoneiro!");
                KillTimer(timerCarreta);
            }
        }
//essa й a callback chamada pelo timer
forward VerificarCarretas(playerid, cavalinho);
public VerificarCarretas(playerid, cavalinho)
{
    new trailer = GetVehicleTrailer(cavalinho);
    if(IsTrailerAttachedToVehicle(cavalinho) == 1)
    {
        timerCargas = SetTimerEx("AtualizarCargas", true, 1000, "ii", playerid, trailer);
    }
    else if(IsTrailerAttachedToVehicle(cavalinho) == 0)
    {
        TextDrawHideForPlayer(playerid,textTipoCarga[trailer]);
        TextDrawHideForPlayer(playerid,textQuantiaCarga[trailer]);
        TextDrawHideForPlayer(playerid,textValorCarga[trailer]);
        TextDrawHideForPlayer(playerid,textBordaCargas);
        TextDrawHideForPlayer(playerid,textFundoCargas);
        TextDrawHideForPlayer(playerid,textInfosCarga);
        KillTimer(timerCargas);
    }
    return 1;
}
//e essa callback й chamada pelo outro timer = timerCargas que serve pra verificar as informaзхes da carreta engatada
forward AtualizarCargas(playerid, idcarreta);
public AtualizarCargas(playerid, idcarreta)
{
    new str[245];
//  MFP(playerid, -1, "teste id carreta %d", idcaminhao);

    new cavalinho = GetPlayerVehicleID(playerid);
    if(IsTrailerAttachedToVehicle(cavalinho) == 1)
    {
        if(GetVehicleModel(GetVehicleTrailer(cavalinho)) == 584)
        {
            TipoCarregamento[idcarreta] = tcCombustivel;
            if(CarregamentoNasCarretasC[idcarreta] == 0)
            {
                TextDrawSetString(textTipoCarga[idcarreta], "Carga: ~y~Combustivel");
                TextDrawSetString(textQuantiaCarga[idcarreta], "Quantia: ~y~0/1000L");
                TextDrawSetString(textValorCarga[idcarreta], "Valor carga: ~y~Nada");
                UltimoCarregamento[playerid] = 0;
            }
            else if(CarregamentoNasCarretasC[idcarreta] >= 1)
            {
                TextDrawSetString(textTipoCarga[idcarreta], "Carga: ~y~Combustivel");
                format(str, 256, "Quantia: ~y~%d/1000L", CarregamentoNasCarretasC[idcarreta]);
                TextDrawSetString(textQuantiaCarga[idcarreta], str);
                format(str, 256, "Valor carga: ~y~R$%.2d", DinheiroPelaCargaCombustivel[playerid]);
                TextDrawSetString(textValorCarga[idcarreta], str);
                UltimoCarregamento[playerid] = CarregamentoNasCarretasC[idcarreta];
            }
            TextDrawShowForPlayer(playerid,textTipoCarga[idcarreta]);
            TextDrawShowForPlayer(playerid,textQuantiaCarga[idcarreta]);
            TextDrawShowForPlayer(playerid,textValorCarga[idcarreta]);
            TextDrawShowForPlayer(playerid,textBordaCargas);
            TextDrawShowForPlayer(playerid,textFundoCargas);
            TextDrawShowForPlayer(playerid,textInfosCarga);
        }
        else if(GetVehicleModel(GetVehicleTrailer(cavalinho)) == 584)
        {
            TipoCarregamento[idcarreta] = tcCombustivel;
            if(CarregamentoNasCarretasC[idcarreta] == 0)
            {
                TextDrawSetString(textTipoCarga[idcarreta], "Carga: ~y~Combustivel");
                TextDrawSetString(textQuantiaCarga[idcarreta], "Quantia: ~y~0/1000L");
                TextDrawSetString(textValorCarga[idcarreta], "Valor carga: ~y~Nada");
                UltimoCarregamento[playerid] = 0;
            }
            else if(CarregamentoNasCarretasC[idcarreta] >= 1)
            {
                TextDrawSetString(textTipoCarga[idcarreta], "Carga: ~y~Mercadorias");
                format(str, 256, "Quantia: ~y~%d/700", CarregamentoNasCarretasM[idcarreta]);
                TextDrawSetString(textQuantiaCarga[idcarreta], str);
                format(str, 256, "Valor carga: ~y~R$%.2d", DinheiroPelaCargaItems[playerid]);
                TextDrawSetString(textValorCarga[idcarreta], str);
                UltimoCarregamento[playerid] = CarregamentoNasCarretasM[idcarreta];
            }
            TextDrawShowForPlayer(playerid,textTipoCarga[idcarreta]);
            TextDrawShowForPlayer(playerid,textQuantiaCarga[idcarreta]);
            TextDrawShowForPlayer(playerid,textValorCarga[idcarreta]);
            TextDrawShowForPlayer(playerid,textBordaCargas);
            TextDrawShowForPlayer(playerid,textFundoCargas);
            TextDrawShowForPlayer(playerid,textInfosCarga);
        }
    }
    else
    {
        TextDrawHideForPlayer(playerid,textTipoCarga[idcarreta]);
        TextDrawHideForPlayer(playerid,textQuantiaCarga[idcarreta]);
        TextDrawHideForPlayer(playerid,textValorCarga[idcarreta]);
        TextDrawHideForPlayer(playerid,textBordaCargas);
        TextDrawHideForPlayer(playerid,textFundoCargas);
        TextDrawHideForPlayer(playerid,textInfosCarga);
    }
    return 1;
}
tem algo de errado nesse code mano? agradeзo muito a quem puder ajudar
Reply
#5

Aparentemente estб criando inъmeros timers por isso o servidor trava. :/
E tambйm, a funзгo SetTimerEx estб de forma errada.
Reply
#6

sobre travar o server:
PHP код:
 SetTimerEx("AtualizarCargas"true1000"ii"playeridtrailer); 
Seria:
PHP код:
 SetTimerEx("AtualizarCargas"1000true"ii"playeridtrailer); 
Reply
#7

Quote:
Originally Posted by yiakin
Посмотреть сообщение
sobre travar o server:
PHP код:
 SetTimerEx("AtualizarCargas"true1000"ii"playeridtrailer); 
Seria:
PHP код:
 SetTimerEx("AtualizarCargas"1000true"ii"playeridtrailer); 
eita nem tinha reparado nisso kkkkkkkkk vlw ,

e aparentemente eu consegui arrumar o bug da quantia de cargas e dos textdraws agora vo ajeitar os timers


Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)