SA-MP Forums Archive
Ajuda cmd aki simples pra vocк - 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: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: Ajuda cmd aki simples pra vocк (/showthread.php?tid=195550)



Ajuda akii x( Ajuda num CMD AKI - saulophb - 03.12.2010

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;
                }
            }



Re: Ajuda cmd aki simples pra vocк - egonzks - 03.12.2010

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



Re: Ajuda cmd aki simples pra vocк - spam23 - 03.12.2010

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;
                }
            }



Re: Ajuda cmd aki simples pra vocк - rjjj - 03.12.2010

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


Re: Ajuda cmd aki simples pra vocк - Rodrigo_LosT - 03.12.2010

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...


Re: Ajuda cmd aki simples pra vocк - rjjj - 03.12.2010

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.


Re: Ajuda cmd aki simples pra vocк - Rodrigo_LosT - 03.12.2010

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...


Re: Ajuda cmd aki simples pra vocк - rjjj - 03.12.2010

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.


Re: Ajuda cmd aki simples pra vocк - Rodrigo_LosT - 03.12.2010

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