[AJUDA] Bug no comando /prender
#1

Boa tarde pessoal, estou editando a GM LAC 1.0 e estava indo tudo bem atй aparecer um bug no /prender, este toda vez que vai prender um player aparece a seguinte mensagem: Preco da fianca Minimo 1, Maximo 99999!, ja tentei de tudo mas definitivamente nao consegui resolver. Ja tentei resolver esse BUG mas sem sucesso venho pedir ajuda a vocкs aqui no forum.

Este й o codigo do comando para prender que esta bugado:
pawn Код:
if(strcmp(cmd, "/prender", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if(gTeam[playerid] == 2  || IsACop(playerid))
            {
                if(OnDuty[playerid] != 1 && PlayerInfo[playerid][pMember] == 1)
                {
                    SendClientMessage(playerid, COLOR_GREY, "   Voce nao esta em servico!");
                    return 1;
                }
                if(!IsPlayerinCela(playerid))
                {// Jail spot
                    SendClientMessage(playerid, COLOR_GREY, "   Voce nao esta perto das celas!");
                    return 1;
                }
                tmp = strtok(cmdtext, idx);
                if(!strlen(tmp))
                {
                    SendClientMessage(playerid, COLOR_GRAD2, "USE: /prender [preco] [Tempo (minutos)] [Fianca (0=nao 1=sim)] [Preco da Fianca]");
                    return 1;
                }
                moneys = strval(tmp);
                if(moneys < 1 || moneys > 99999) { SendClientMessage(playerid, COLOR_GREY, "   Preco da fianca Minimo 1, Maximo 99999!"); return 1; }
                tmp = strtok(cmdtext, idx);
                if(!strlen(tmp))
                {
                    SendClientMessage(playerid, COLOR_GRAD2, "USE: /prender [preco] [Tempo (minutos)] [Fianca (0=nao 1=sim)] [Preco da Fianca]");
                    return 1;
                }
                new time = strval(tmp);
                if(time < 1 || time > 20) { SendClientMessage(playerid, COLOR_GREY, "   Tempo de prisao Minimo 1, Maximo 20!"); return 1; }
                tmp = strtok(cmdtext, idx);
                if(!strlen(tmp))
                {
                    SendClientMessage(playerid, COLOR_GRAD2, "USE: /prender [preco] [Tempo (minutos)] [Fianca (0=nao 1=sim)] [Preco da Fianca]");
                    return 1;
                }
                new bail = strval(tmp);
                if(bail < 0 || bail > 1) { SendClientMessage(playerid, COLOR_GREY, "   Jail Bailing can't be below 0 or above 1 !"); return 1; }
                tmp = strtok(cmdtext, idx);
                if(!strlen(tmp))
                {
                    SendClientMessage(playerid, COLOR_GRAD2, "USE: /prender [preco] [Tempo (minutos)] [Fianca (0=nao 1=sim)] [Preco da Fianca]");
                    return 1;
                }
                new bailprice = strval(tmp);
                if(bailprice < 0 || bailprice > 3000000) { SendClientMessage(playerid, COLOR_GREY, "   Preco da fianca Minimo 1, Maximo 3000000!"); return 1; }
                new suspect = GetClosestPlayer(playerid);
                if(IsPlayerConnected(suspect))
                {
                    if(GetDistanceBetweenPlayers(playerid,suspect) < 5)
                    {
                        GetPlayerName(suspect, giveplayer, sizeof(giveplayer));
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        if(WantedLevel[suspect] < 1)
                        {
                            SendClientMessage(playerid, COLOR_GREY, "   Jogador precisa de no minimo 1 nivel de procurado!");
                            return 1;
                        }
                        if(IsACop(suspect))
                        {
                            SendClientMessage(playerid, COLOR_GREY, "   O Jogador й um Policial!");
                            return 1;
                        }
                        format(string, sizeof(string), "* Voce prendeu %s !", giveplayer);
                        SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
                        GivePlayerMoneyEx(suspect, -moneys);
                        format(string, sizeof(string), "Voce foi preso pelo %s ~n~    por $%d", sendername, moneys);
                        GameTextForPlayer(suspect, string, 5000, 5);
                        ResetPlayerWeapons(suspect);
                        if(PlayerInfo[playerid][pMember]==1 || PlayerInfo[playerid][pLeader]==1)
                        {
                            format(string, sizeof(string), "<< Policial Militar %s prendeu o suspeito %s >>", sendername, giveplayer);
                            OOCNews(COLOR_LIGHTRED, string);
                            PlayerInfo[suspect][pJailed] = 1;
                        }
                        else if(PlayerInfo[playerid][pMember]==2 || PlayerInfo[playerid][pLeader]==2)
                        {
                            format(string, sizeof(string), "<< BOPE %s prendeu o suspeito %s >>", sendername, giveplayer);
                            OOCNews(COLOR_LIGHTRED, string);
                            PlayerInfo[suspect][pJailed] = 1;
                        }
                        else if(PlayerInfo[playerid][pMember]==3 || PlayerInfo[playerid][pLeader]==3)
                        {
                            format(string, sizeof(string), "<< Policial Militar %s prendeu o suspeito %s >>", sendername, giveplayer);
                            OOCNews(COLOR_LIGHTRED, string);
                            PlayerInfo[suspect][pJailed] = 3;
                        }
                        else if(PlayerInfo[playerid][pMember]==4 || PlayerInfo[playerid][pLeader]==4)
                        {
                            format(string, sizeof(string), "<< Policial Civil %s prendeu o suspeito %s >>", sendername, giveplayer);
                            OOCNews(COLOR_LIGHTRED, string);
                            PlayerInfo[suspect][pJailed] = 3;
                        }
                        else if(PlayerInfo[playerid][pMember]==19 || PlayerInfo[playerid][pLeader]==19)
                        {
                            format(string, sizeof(string), "<< Policial Federal %s prendeu o suspeito %s >>", sendername, giveplayer);
                            OOCNews(COLOR_LIGHTRED, string);
                            PlayerInfo[suspect][pJailed] = 4;
                        }
                        PlayerInfo[suspect][pJailTime] = time * 60;
                        SetPlayerHealth(suspect, 0);
                        if(bail == 1)
                        {
                            JailPrice[suspect] = bailprice;
                            format(string, sizeof(string), "Voce foi preso por %d segundos.   Fianca: $%d", PlayerInfo[suspect][pJailTime], JailPrice[suspect]);
                            SendClientMessage(suspect, COLOR_LIGHTBLUE, string);
                        }
                        else
                        {
                            JailPrice[suspect] = 0;
                            format(string, sizeof(string), "Voce foi preso por %d segundos.   Fianca: Desabilitada", PlayerInfo[suspect][pJailTime]);
                            SendClientMessage(suspect, COLOR_LIGHTBLUE, string);
                        }
                        PlayerInfo[suspect][pArrested] += 1;
                        SetPlayerFree(suspect,playerid, "Preso");
                        WantedPoints[suspect] = 0;
                        WantedLevel[suspect] = 0;
                        WantLawyer[suspect] = 1;
                    }//distance
                }//not connected
                else
                {
                    SendClientMessage(playerid, COLOR_GREY, "   Ninguem perto para voce prender.");
                    return 1;
                }
            }
            else
            {
                SendClientMessage(playerid, COLOR_GREY, "   Voce nao e um oficial!");
                return 1;
            }
        }//not connected
        return 1;
    }
Fico muito grato desde jб!!
Reply
#2

Isso nгo й bug, isso й o preзo da fianзa, quando o cara for preзo, o valor que vocк colocar lб, ele vai ter a opзгo de pagar a fianзa que vocк colocou o valor, se ele pagar ele vai ser libertado. Simples.
Reply
#3

Mas mesmo eu colocando o preзo da fianзa ex: /deter 0 5 1 1 , ele envia a mesma mensagem e n prende o players. OBS:Sera que nгo esta indo pq eu estava tentando prender eu mesmo? xD, й que so eu q mexo no meu sv sozinho e n tinha ngm para testar.
Reply
#4

Quote:
Originally Posted by marcelodell
Посмотреть сообщение
Mas mesmo eu colocando o preзo da fianзa ex: /deter 0 5 1 1 , ele envia a mesma mensagem e n prende o players. OBS:Sera que nгo esta indo pq eu estava tentando prender eu mesmo? xD, й que so eu q mexo no meu sv sozinho e n tinha ngm para testar.
Tenta com outra pessoa e posta o resultado aqui
Reply
#5

Quote:
Originally Posted by marcelodell
Посмотреть сообщение
Mas mesmo eu colocando o preзo da fianзa ex: /deter 0 5 1 1 , ele envia a mesma mensagem e n prende o players. OBS:Sera que nгo esta indo pq eu estava tentando prender eu mesmo? xD, й que so eu q mexo no meu sv sozinho e n tinha ngm para testar.

Este zero do comando que vocк digitou : /deter 0 5 1 1



Nгo pode estar aн, no lugar dele, deve-se colocar um nъmero maior que 0 e ao mesmo tempo menor que 100000 .



Bem, para evitar esse tipo de problema, simplifiquei o seu comando de modo que tenha que se usar apenas /prender [Tempo] .



Aqui estб :



pawn Код:
if(strcmp(cmd, "/prender", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if(gTeam[playerid] == 2  || IsACop(playerid))
            {
                if(OnDuty[playerid] != 1 && PlayerInfo[playerid][pMember] == 1)
                {
                    SendClientMessage(playerid, COLOR_GREY, "   Voce nao esta em servico!");
                    return 1;
                }
                if(!IsPlayerinCela(playerid))
                {// Jail spot
                    SendClientMessage(playerid, COLOR_GREY, "   Voce nao esta perto das celas!");
                    return 1;
                }
                tmp = strtok(cmdtext, idx);
                if(!strlen(tmp))
                {
                    SendClientMessage(playerid, COLOR_GRAD2, "USE: /prender [Tempo (minutos)]");
                    return 1;
                }
                new time = strval(tmp);
                if(time < 1 || time > 20) { SendClientMessage(playerid, COLOR_GREY, "   Tempo de prisao Minimo 1, Maximo 20!"); return 1; }
                new suspect = GetClosestPlayer(playerid);
                if(IsPlayerConnected(suspect))
                {
                    if(GetDistanceBetweenPlayers(playerid,suspect) < 5)
                    {
                        GetPlayerName(suspect, giveplayer, sizeof(giveplayer));
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        if(WantedLevel[suspect] < 1)
                        {
                            SendClientMessage(playerid, COLOR_GREY, "   Jogador precisa de no minimo 1 nivel de procurado!");
                            return 1;
                        }
                        if(IsACop(suspect))
                        {
                            SendClientMessage(playerid, COLOR_GREY, "   O Jogador й um Policial!");
                            return 1;
                        }
                        format(string, sizeof(string), "* Voce prendeu %s !", giveplayer);
                        SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
                        format(string, sizeof(string), "Voce foi preso pelo %s", sendername);
                        GameTextForPlayer(suspect, string, 5000, 5);
                        ResetPlayerWeapons(suspect);
                        if(PlayerInfo[playerid][pMember]==1 || PlayerInfo[playerid][pLeader]==1)
                        {
                            format(string, sizeof(string), "<< Policial Militar %s prendeu o suspeito %s >>", sendername, giveplayer);
                            OOCNews(COLOR_LIGHTRED, string);
                            PlayerInfo[suspect][pJailed] = 1;
                        }
                        else if(PlayerInfo[playerid][pMember]==2 || PlayerInfo[playerid][pLeader]==2)
                        {
                            format(string, sizeof(string), "<< BOPE %s prendeu o suspeito %s >>", sendername, giveplayer);
                            OOCNews(COLOR_LIGHTRED, string);
                            PlayerInfo[suspect][pJailed] = 1;
                        }
                        else if(PlayerInfo[playerid][pMember]==3 || PlayerInfo[playerid][pLeader]==3)
                        {
                            format(string, sizeof(string), "<< Policial Militar %s prendeu o suspeito %s >>", sendername, giveplayer);
                            OOCNews(COLOR_LIGHTRED, string);
                            PlayerInfo[suspect][pJailed] = 3;
                        }
                        else if(PlayerInfo[playerid][pMember]==4 || PlayerInfo[playerid][pLeader]==4)
                        {
                            format(string, sizeof(string), "<< Policial Civil %s prendeu o suspeito %s >>", sendername, giveplayer);
                            OOCNews(COLOR_LIGHTRED, string);
                            PlayerInfo[suspect][pJailed] = 3;
                        }
                        else if(PlayerInfo[playerid][pMember]==19 || PlayerInfo[playerid][pLeader]==19)
                        {
                            format(string, sizeof(string), "<< Policial Federal %s prendeu o suspeito %s >>", sendername, giveplayer);
                            OOCNews(COLOR_LIGHTRED, string);
                            PlayerInfo[suspect][pJailed] = 4;
                        }
                        PlayerInfo[suspect][pJailTime] = time * 60;
                        SetPlayerHealth(suspect, 0);
                        JailPrice[suspect] = 0;
                        format(string, sizeof(string), "Voce foi preso por %d segundos.", PlayerInfo[suspect][pJailTime]);
                        SendClientMessage(suspect, COLOR_LIGHTBLUE, string);
                        PlayerInfo[suspect][pArrested] += 1;
                        SetPlayerFree(suspect,playerid, "Preso");
                        WantedPoints[suspect] = 0;
                        WantedLevel[suspect] = 0;
                        WantLawyer[suspect] = 1;
                    }//distance
                }//not connected
                else
                {
                    SendClientMessage(playerid, COLOR_GREY, "   Ninguem perto para voce prender.");
                    return 1;
                }
            }
            else
            {
                SendClientMessage(playerid, COLOR_GREY, "   Voce nao e um oficial!");
                return 1;
            }
        }//not connected
        return 1;
    }


Espero ter ajudado .
Reply
#6

No caso deste 0, й o ID do player (NO CASO EU), no codigo esta escrito "TEMPO" aonde eu coloquei o 0, mas na verdade й o ID.

@EDIT

O problema era que eu tava tentando prender eu mesmo xD, desculpa ai pelo incomodo. Caso precisa de mim e so falar .
Reply
#7

Quote:
Originally Posted by marcelodell
Посмотреть сообщение
No caso deste 0, й o ID do player (NO CASO EU), no codigo esta escrito "TEMPO" aonde eu coloquei o 0, mas na verdade й o ID.

Na verdade o ID do jogador que irб ser preso nгo й definido pelo jogador que prenderб atravйs do comando, mas sim por esta linha do cуdigo :




pawn Код:
new suspect = GetClosestPlayer(playerid);



Que igualarб o ID de quem serб preso ao ID do suspeito mais prуximo de vocк .




O 0 do qual falei й realmente um valor que deve estar entre 0 e 10000, como prova esta parte do seu cуdigo que й responsбvel pela formaзгo do primeiro parвmetro do comando :




pawn Код:
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
    SendClientMessage(playerid, COLOR_GRAD2, "USE: /prender [preco] [Tempo (minutos)] [Fianca (0=nao 1=sim)] [Preco da Fianca]");
    return 1;
}
moneys = strval(tmp);
if(moneys < 1 || moneys > 99999) { SendClientMessage(playerid, COLOR_GREY, "   Preco da fianca Minimo 1, Maximo 99999!"); return 1; }



Caso queira definir o ID do jogador pelo comando, adaptei o mesmo para vocк :



pawn Код:
if(strcmp(cmd, "/prender", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if(gTeam[playerid] == 2  || IsACop(playerid))
            {
                if(OnDuty[playerid] != 1 && PlayerInfo[playerid][pMember] == 1)
                {
                    SendClientMessage(playerid, COLOR_GREY, "   Voce nao esta em servico!");
                    return 1;
                }
                if(!IsPlayerinCela(playerid))
                {// Jail spot
                    SendClientMessage(playerid, COLOR_GREY, "   Voce nao esta perto das celas!");
                    return 1;
                }
                tmp = strtok(cmdtext, idx);
                if(!strlen(tmp))
                {
                    SendClientMessage(playerid, COLOR_GRAD2, "USE: /prender [ID do Suspeito] [Tempo (minutos)]");
                    return 1;
                }
                new suspect = strval(tmp);
                tmp = strtok(cmdtext, idx);
                if(!strlen(tmp))
                {
                    SendClientMessage(playerid, COLOR_GRAD2, "USE: /prender [ID do Suspeito] [Tempo (minutos)]");
                    return 1;
                }
                new time = strval(tmp);
                if(time < 1 || time > 20) { SendClientMessage(playerid, COLOR_GREY, "   Tempo de prisao Minimo 1, Maximo 20!"); return 1; }
                if(IsPlayerConnected(suspect))
                {
                    if(GetDistanceBetweenPlayers(playerid,suspect) < 5)
                    {
                        GetPlayerName(suspect, giveplayer, sizeof(giveplayer));
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        if(WantedLevel[suspect] < 1)
                        {
                            SendClientMessage(playerid, COLOR_GREY, "   Jogador precisa de no minimo 1 nivel de procurado!");
                            return 1;
                        }
                        if(IsACop(suspect))
                        {
                            SendClientMessage(playerid, COLOR_GREY, "   O Jogador й um Policial!");
                            return 1;
                        }
                        format(string, sizeof(string), "* Voce prendeu %s !", giveplayer);
                        SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
                        format(string, sizeof(string), "Voce foi preso pelo %s", sendername);
                        GameTextForPlayer(suspect, string, 5000, 5);
                        ResetPlayerWeapons(suspect);
                        if(PlayerInfo[playerid][pMember]==1 || PlayerInfo[playerid][pLeader]==1)
                        {
                            format(string, sizeof(string), "<< Policial Militar %s prendeu o suspeito %s >>", sendername, giveplayer);
                            OOCNews(COLOR_LIGHTRED, string);
                            PlayerInfo[suspect][pJailed] = 1;
                        }
                        else if(PlayerInfo[playerid][pMember]==2 || PlayerInfo[playerid][pLeader]==2)
                        {
                            format(string, sizeof(string), "<< BOPE %s prendeu o suspeito %s >>", sendername, giveplayer);
                            OOCNews(COLOR_LIGHTRED, string);
                            PlayerInfo[suspect][pJailed] = 1;
                        }
                        else if(PlayerInfo[playerid][pMember]==3 || PlayerInfo[playerid][pLeader]==3)
                        {
                            format(string, sizeof(string), "<< Policial Militar %s prendeu o suspeito %s >>", sendername, giveplayer);
                            OOCNews(COLOR_LIGHTRED, string);
                            PlayerInfo[suspect][pJailed] = 3;
                        }
                        else if(PlayerInfo[playerid][pMember]==4 || PlayerInfo[playerid][pLeader]==4)
                        {
                            format(string, sizeof(string), "<< Policial Civil %s prendeu o suspeito %s >>", sendername, giveplayer);
                            OOCNews(COLOR_LIGHTRED, string);
                            PlayerInfo[suspect][pJailed] = 3;
                        }
                        else if(PlayerInfo[playerid][pMember]==19 || PlayerInfo[playerid][pLeader]==19)
                        {
                            format(string, sizeof(string), "<< Policial Federal %s prendeu o suspeito %s >>", sendername, giveplayer);
                            OOCNews(COLOR_LIGHTRED, string);
                            PlayerInfo[suspect][pJailed] = 4;
                        }
                        PlayerInfo[suspect][pJailTime] = time * 60;
                        SetPlayerHealth(suspect, 0);
                        JailPrice[suspect] = 0;
                        format(string, sizeof(string), "Voce foi preso por %d segundos.", PlayerInfo[suspect][pJailTime]);
                        SendClientMessage(suspect, COLOR_LIGHTBLUE, string);
                        PlayerInfo[suspect][pArrested] += 1;
                        SetPlayerFree(suspect,playerid, "Preso");
                        WantedPoints[suspect] = 0;
                        WantedLevel[suspect] = 0;
                        WantLawyer[suspect] = 1;
                    }//distance
                }//not connected
                else
                {
                    SendClientMessage(playerid, COLOR_GREY, "   Ninguem perto para voce prender.");
                    return 1;
                }
            }
            else
            {
                SendClientMessage(playerid, COLOR_GREY, "   Voce nao e um oficial!");
                return 1;
            }
        }//not connected
        return 1;
    }


Espero ter ajudado .
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)