Ajuda cmd aki simples pra vocк
#1

Tipo e o meu /multar .
Eu digito /multar id 10000
ai aparece pro cara pagar , pra ele poder pagar ele tem que digitar /aceitar multa
ai digito so que o dinheiro nao vai ~~ aparece fulano pagou a multa mais nao pagou nads nao perdeu nads e nao veio nads pro policial alguem ajuda ta ai o cod

pawn Код:
if(strcmp(cmd, "/multar", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if(!IsACop(playerid))
            {
                SendClientMessage(playerid, COLOR_GREY, "Voce nao e policial !");
                return 1;
            }
            if(OnDuty[playerid] == 0)
            {
            SendClientMessage(playerid,COLOR_LIGHTRED,"Vocк nгo bateu cartгo");
            return 1;
            }
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "USE: /multar [ID] [Custo] [Razao]");
                return 1;
            }
            giveplayerid = ReturnUser(tmp);
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "USE: /multar [ID] [Custo] [Razao]");
                return 1;
            }
            moneys = strval(tmp);
            if(moneys < 1 || moneys > 40000) { SendClientMessage(playerid, COLOR_GREY, "Custo entre 1 e 40000 !"); return 1; }
            if(IsPlayerConnected(giveplayerid))
            {
                if(giveplayerid != INVALID_PLAYER_ID)
                {
                    if (ProxDetectorS(8.0, playerid, giveplayerid))
                    {
                        GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        new length = strlen(cmdtext);
                        while ((idx < length) && (cmdtext[idx] <= ' '))
                        {
                            idx++;
                        }
                        new offset = idx;
                        new result[64];
                        while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
                        {
                            result[idx - offset] = cmdtext[idx];
                            idx++;
                        }
                        result[idx - offset] = EOS;
                        if(!strlen(result))
                        {
                            SendClientMessage(playerid, COLOR_GRAD2, "USE: /multar [ID] [Custo] [Razao]");
                            return 1;
                        }
                        format(string, sizeof(string), "* Voce multou %s por $%d, Razao: %s", giveplayer, moneys, (result));
                        SendClientMessage(playerid, COLOR_WHITE, string);
                        format(string, sizeof(string), "* Oficial %s lhe deu uma multa no valor de $%d, Razao: %s", sendername, moneys, (result));
                        SendClientMessage(giveplayerid, COLOR_WHITE, string);
                        SendClientMessage(giveplayerid, COLOR_WHITE, "* Use /aceitar multa, para aceitar ela.");
                        TicketOffer[giveplayerid] = playerid;
                        TicketMoney[giveplayerid] = moneys;
                        return 1;
                    }
                    else
                    {
                        SendClientMessage(playerid, COLOR_GREY, "O jogador esta longe !");
                        return 1;
                    }
                }
            }
            else
            {
                SendClientMessage(playerid, COLOR_GREY, "O jogador esta Offline !");
                return 1;
            }
        }
        return 1;
 }
Esse e o cod da multa vou posta o coodigo de aceitar se for o caso de precisar dele tbm.

pawn Код:
else if(strcmp(x_Emprego,"multa",true) == 0)
            {
                if(TicketOffer[playerid] < 999)
                {
                    if(IsPlayerConnected(TicketOffer[playerid]))
                    {
                        if (ProxDetectorS(5.0, playerid, TicketOffer[playerid]))
                        {
                            GetPlayerName(TicketOffer[playerid], giveplayer, sizeof(giveplayer));
                            GetPlayerName(playerid, sendername, sizeof(sendername));
                            format(string, sizeof(string), "* Vocк pagou a multa de R$%d para o Oficial %s.", TicketMoney[playerid], giveplayer);
                            SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
                            format(string, sizeof(string), "* %s pagou a sua multa de R$%d.", sendername, TicketMoney[playerid]);
                            SendClientMessage(TicketOffer[playerid], COLOR_LIGHTBLUE, string);
                            GivePlayerMoney(playerid, - TicketMoney[playerid]);
                            GivePlayerMoney(TicketOffer[playerid], TicketMoney[playerid]);
                            TicketOffer[playerid] = 999;
                            TicketMoney[playerid] = 0;
                            return 1;
                        }
                        else
                        {
                            SendClientMessage(playerid, COLOR_GREY, "O Oficial nгo estб perto de vocк!");
                            return 1;
                        }
                    }
                }
                else
                {
                    SendClientMessage(playerid, COLOR_GREY, "Ninguйm aplicou uma multa em vocк!");
                    return 1;
                }
            }
Reply
#2

Axo q й sу vc especificar o valor. Faзa nessa parte assim

pawn Код:
GivePlayerMoney(playerid, valor); // Ali em valor colocar o valor a ser cobrado
Reply
#3

Po cara tenta ai cara , to com mу sono
pawn Код:
else if(strcmp(x_Emprego,"multa",true) == 0)
            {
                if(TicketOffer[playerid] < 999)
                {
                    if(IsPlayerConnected(TicketOffer[playerid]))
                    {
                        if (ProxDetectorS(5.0, playerid, TicketOffer[playerid]))
                        {
                            GetPlayerName(TicketOffer[playerid], giveplayer, sizeof(giveplayer));
                            GetPlayerName(playerid, sendername, sizeof(sendername));
                            format(string, sizeof(string), "* Vocк pagou a multa de R$%d para o Oficial %s.", TicketMoney[playerid], giveplayer);
                            SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
                            format(string, sizeof(string), "* %s pagou a sua multa de R$%d.", sendername, TicketMoney[playerid]);
                            SendClientMessage(TicketOffer[playerid], COLOR_LIGHTBLUE, string);
                            GivePlayerMoney(playerid, - moneys);
                            TicketOffer[playerid] = 999;
                            TicketMoney[playerid] = 0;
                            return 1;
                        }
                        else
                        {
                            SendClientMessage(playerid, COLOR_GREY, "O Oficial nгo estб perto de vocк!");
                            return 1;
                        }
                    }
                }
                else
                {
                    SendClientMessage(playerid, COLOR_GREY, "Ninguйm aplicou uma multa em vocк!");
                    return 1;
                }
            }
Reply
#4

Pegue na minha Assinatura o meu tutorial sobre KcmD e leia o mesmo. Com isso vocк poderб arrumar seu comando e ainda fazer outros perfeitamente
Reply
#5

eu nгo consigo comparar uma coisa do Kcmd com uma string, ja com o strtok eu consigo, entгo, eu prefiro strtok... passei meia hora estudando o strtok, e finalmente aprendi como ele funfa...
Reply
#6

oO mas nгo precisa usar string em strtok nem KcmD....mas se vocк fala de igualar variбvel й fбcil, expliquei no meu tutorial :

pawn Код:
tmp = strtok(cmdtext, idx);

tmp = KcmD(1, cmdtext);

Como vocк pode ver dб no mesmo, mas no KcmD vocк vai definindo os espaзos entre as variбveis pela ordem jб no strtok fica um pouco confuso quando se vai fazer mais de 1 espaзo pois deve-se repetir a expressгo que iguala strtok б variбvel.
Reply
#7

eu falo por exemplo, checar se o texto dito foi igual a "ronaldo", caso nгo for ele manda uma mensagem dizendo que sу pode falar ronaldo... ' com Kcmd eu nгo consigo comparar com strcmp, mais com strtok, sim...
Reply
#8

Quote:
Originally Posted by Rodrigo_LosT
Посмотреть сообщение
eu falo por exemplo, checar se o texto dito foi igual a "ronaldo", caso nгo for ele manda uma mensagem dizendo que sу pode falar ronaldo... ' com Kcmd eu nгo consigo comparar com strcmp, mais com strtok, sim...

Tipo, strtok e Kcmd, em ambos quando igualamos б uma variбvel como "tmp", essa й um texto quando estб sem strval:


Kcmd:


pawn Код:
new tmpe[256];//Criada variбvel
tmp = KcmD(1, cmdtext);//variбvel iguala-se ao primeiro espaзo do comando
if(strcmp(tmp,"ronaldo",true)==0)//Se tmp (texto digitado) for igual a ronaldo)
{
    SendClientMessage(playerid, 0xFFFFFFAA, "Sу pode falar ronaldo '-'");//Mensagem
    return 1;//Comando encerrado
}

E strtok:


pawn Код:
new tmp[256];//Criada variбvel
tmp = strtok(cmdtext, idx);//variбvel iguala-se б algum dos espaзos do comando
if(strcmp(tmp,"ronaldo",true)==0)//Se tmp (texto digitado) for igual б ronaldo)
{
    SendClientMessage(playerid, 0xFFFFFFAA, "Sу pode falar ronaldo '-'");//Mensagem
    return 1;//Comando encerrado
}


Como pode ver, ambos tкm a mesma funзгo e sгo parecidos, mas o Kcmd й mais especнfico quanto ao espaзo que й para ser digitado determinado texto.



Por isso recomendo Kcmd e meu tutorial б novatos nessa бrea, pois o strtok deve ser usado vбrias vezes para criar mais de um espaзo e atй confunde a pessoa que nгo estб entendendo nem a funзгo dele no cуdigo.
Reply
#9

entгo, eu testei com Kcmd o strcmp nгo deu em nada... buga ._.
com strtok nгo...
testa ae ;x

e ali nгo seria, "if(!strcmp(tmp, "ronaldo" ,true)==0)", pq seria, caso ele NГO digite ronaldo...
esse era o objetivo
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)