[AJUDA] Passando para ZCMD
#1

Olб pessoal, sou novo no forum, mas ja estudei alguma coisa de pawn, estou aprendendo processador de comandos em ZCMD, e gostaria que me informassem se esse cуdigo abaixo esta correto, fiz com base em strcmp...
Se puderem ajudar, agradeзo...


pawn Код:
CMD:gov(playerid, params[])
{
    if(IsPlayerConnected(playerid))
    {
        if(GetPlayerOrg(playerid) == 1 || GetPlayerOrg(playerid) == 2 || GetPlayerOrg(playerid) == 3 || GetPlayerOrg(playerid) == 4 || GetPlayerOrg(playerid) == 5 || GetPlayerOrg(playerid) == 6 || GetPlayerOrg(playerid) == 22)
        {
            if(PlayerInfo[playerid][pCargo] < 4)
                return SendClientMessage(playerid, COLOR_GREY, "Voce precisa ter pelo menos cargo 4 para usar este comando!");

            if(PlayerInfo[playerid][pMuted] == 1)
                return SendClientMessage(playerid, TEAM_CYAN_COLOR, "Vocк nгo pode Anunciar, pois foi calado");

            if(PlayerInfo[playerid][pJailed] != 0)
                return SendClientMessage(playerid, TEAM_CYAN_COLOR, "Vocк nгo pode Anunciar, pois foi preso!");

            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++;
            }
            if(sscanf(params, "s", result))
                return SendClientMessage(playerid, COLOR_GRAD2, "USE: /gov [Texto]");
               
            if(TentouDivulgar(result))
            {
                if(cdivulgar[playerid] >= 4)
                {
                    SendClientMessage(playerid, COLOR_LIGHTBLUE,"Aqui vocк nгo pode anunciar servidores!");
                    PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
                    Kick(playerid);
                }
                format(Str, sizeof(Str), "AdmAviso: [%d]%s tentou divulgar: %s.", playerid, PlayerName(playerid), result);
                ABroadCast(COLOR_YELLOW, Str, 1);
                DivulgouLog(Str);
                cdivulgar[playerid] += 1;
                return 1;
            }
            if(panunciogang == 1)
                return SendClientMessage(playerid,COLOR_GRAD2,"Espere 20 segundos para poder anunciar novamente!");

            format(Str, sizeof(Str), "Anuncio: %s, Oficial: %s - ID [%d] - Telefone (%d)", result, PlayerName(playerid), playerid, PlayerInfo[playerid][pPnumber]);
            if(GetPlayerOrg(playerid) == 1) SendClientMessageToAll(COR_PM, Str);
            else if(GetPlayerOrg(playerid) == 2) SendClientMessageToAll(COR_PC, Str);
            else if(GetPlayerOrg(playerid) == 3) SendClientMessageToAll(COR_FBI, Str);
            else if(GetPlayerOrg(playerid) == 4) SendClientMessageToAll(COR_BOPE, Str);
            else if(GetPlayerOrg(playerid) == 5) SendClientMessageToAll(COR_TECMO, Str);
            else if(GetPlayerOrg(playerid) == 6) SendClientMessageToAll(COR_EXERCITO, Str);
            format(Str, sizeof(Str), "Anuncio: %s, Mйdico: %s - ID [%d] - Telefone (%d)", result, PlayerName(playerid), playerid, PlayerInfo[playerid][pPnumber]);
            if(GetPlayerOrg(playerid) == 22) SendClientMessageToAll(COR_SAMU, Str);
            print(Str);
            SBizzInfo[7][sbTill] += 30;
            ExtortionSBiz(7, 30);
            panunciomerce = 1;
            TempoAnmerce = SetTimer("Anunciomerce", 20000, 0);
        }
    }
    return 1;
}
Reply
#2

Se vocк testou e deu certo й por que ta correto
Reply
#3

Quote:
Originally Posted by EditPawn
Посмотреть сообщение
Olб pessoal, sou novo no forum, mas ja estudei alguma coisa de pawn, estou aprendendo processador de comandos em ZCMD, e gostaria que me informassem se esse cуdigo abaixo esta correto, fiz com base em strcmp...
Se puderem ajudar, agradeзo...


pawn Код:
CMD:gov(playerid, params[])
{
    if(IsPlayerConnected(playerid))
    {
        if(GetPlayerOrg(playerid) == 1 || GetPlayerOrg(playerid) == 2 || GetPlayerOrg(playerid) == 3 || GetPlayerOrg(playerid) == 4 || GetPlayerOrg(playerid) == 5 || GetPlayerOrg(playerid) == 6 || GetPlayerOrg(playerid) == 22)
        {
            if(PlayerInfo[playerid][pCargo] < 4)
                return SendClientMessage(playerid, COLOR_GREY, "Voce precisa ter pelo menos cargo 4 para usar este comando!");

            if(PlayerInfo[playerid][pMuted] == 1)
                return SendClientMessage(playerid, TEAM_CYAN_COLOR, "Vocк nгo pode Anunciar, pois foi calado");

            if(PlayerInfo[playerid][pJailed] != 0)
                return SendClientMessage(playerid, TEAM_CYAN_COLOR, "Vocк nгo pode Anunciar, pois foi preso!");

            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++;
            }
            if(sscanf(params, "s", result))
                return SendClientMessage(playerid, COLOR_GRAD2, "USE: /gov [Texto]");
               
            if(TentouDivulgar(result))
            {
                if(cdivulgar[playerid] >= 4)
                {
                    SendClientMessage(playerid, COLOR_LIGHTBLUE,"Aqui vocк nгo pode anunciar servidores!");
                    PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
                    Kick(playerid);
                }
                format(Str, sizeof(Str), "AdmAviso: [%d]%s tentou divulgar: %s.", playerid, PlayerName(playerid), result);
                ABroadCast(COLOR_YELLOW, Str, 1);
                DivulgouLog(Str);
                cdivulgar[playerid] += 1;
                return 1;
            }
            if(panunciogang == 1)
                return SendClientMessage(playerid,COLOR_GRAD2,"Espere 20 segundos para poder anunciar novamente!");

            format(Str, sizeof(Str), "Anuncio: %s, Oficial: %s - ID [%d] - Telefone (%d)", result, PlayerName(playerid), playerid, PlayerInfo[playerid][pPnumber]);
            if(GetPlayerOrg(playerid) == 1) SendClientMessageToAll(COR_PM, Str);
            else if(GetPlayerOrg(playerid) == 2) SendClientMessageToAll(COR_PC, Str);
            else if(GetPlayerOrg(playerid) == 3) SendClientMessageToAll(COR_FBI, Str);
            else if(GetPlayerOrg(playerid) == 4) SendClientMessageToAll(COR_BOPE, Str);
            else if(GetPlayerOrg(playerid) == 5) SendClientMessageToAll(COR_TECMO, Str);
            else if(GetPlayerOrg(playerid) == 6) SendClientMessageToAll(COR_EXERCITO, Str);
            format(Str, sizeof(Str), "Anuncio: %s, Mйdico: %s - ID [%d] - Telefone (%d)", result, PlayerName(playerid), playerid, PlayerInfo[playerid][pPnumber]);
            if(GetPlayerOrg(playerid) == 22) SendClientMessageToAll(COR_SAMU, Str);
            print(Str);
            SBizzInfo[7][sbTill] += 30;
            ExtortionSBiz(7, 30);
            panunciomerce = 1;
            TempoAnmerce = SetTimer("Anunciomerce", 20000, 0);
        }
    }
    return 1;
}
Se estб usando sscanf nгo precisa de
pawn Код:
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++;
            }
Deixa assim:
pawn Код:
new result[128];
if(sscanf(params, "s", result)) return SendClientMessage(playerid, COLOR_GRAD2, "USE: /gov [Texto]");


@Edit: E esqueci de dizer que nгo й necessario o uso de
pawn Код:
if(IsPlayerConnected(playerid))
Reply
#4

Seu COD possui erros, pois vocк apanas trocou a parte superior do CMD e adc sscanf no meio sem retirar o COD antigo.

Corrigido!
pawn Код:
CMD:gov(playerid, params[])
{
    if(GetPlayerOrg(playerid) == 1 || GetPlayerOrg(playerid) == 2 || GetPlayerOrg(playerid) == 3 || GetPlayerOrg(playerid) == 4 || GetPlayerOrg(playerid) == 5 || GetPlayerOrg(playerid) == 6 || GetPlayerOrg(playerid) == 22)
    {
        if(PlayerInfo[playerid][pCargo] < 4)
            return SendClientMessage(playerid, COLOR_GREY, "Voce precisa ter pelo menos cargo 4 para usar este comando!");

        if(PlayerInfo[playerid][pMuted] == 1)
            return SendClientMessage(playerid, TEAM_CYAN_COLOR, "Vocк nгo pode Anunciar, pois foi calado");

        if(PlayerInfo[playerid][pJailed] != 0)
            return SendClientMessage(playerid, TEAM_CYAN_COLOR, "Vocк nгo pode Anunciar, pois foi preso!");

        new result[128];
        if(sscanf(params, "s[128]", result))
            return SendClientMessage(playerid, COLOR_GRAD2, "USE: /gov [Texto]");
           
        if(TentouDivulgar(result))
        {
            if(cdivulgar[playerid] >= 4)
            {
                SendClientMessage(playerid, COLOR_LIGHTBLUE,"Aqui vocк nгo pode anunciar servidores!");
                PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
                Kick(playerid);
            }
            format(Str, sizeof(Str), "AdmAviso: [%d]%s tentou divulgar: %s.", playerid, PlayerName(playerid), result);
            ABroadCast(COLOR_YELLOW, Str, 1);
            DivulgouLog(Str);
            cdivulgar[playerid] += 1;
            return 1;
        }
        if(panunciogang == 1)
            return SendClientMessage(playerid,COLOR_GRAD2,"Espere 20 segundos para poder anunciar novamente!");

        format(Str, sizeof(Str), "Anuncio: %s, Oficial: %s - ID [%d] - Telefone (%d)", result, PlayerName(playerid), playerid, PlayerInfo[playerid][pPnumber]);
        if(GetPlayerOrg(playerid) == 1) SendClientMessageToAll(COR_PM, Str);
        else if(GetPlayerOrg(playerid) == 2) SendClientMessageToAll(COR_PC, Str);
        else if(GetPlayerOrg(playerid) == 3) SendClientMessageToAll(COR_FBI, Str);
        else if(GetPlayerOrg(playerid) == 4) SendClientMessageToAll(COR_BOPE, Str);
        else if(GetPlayerOrg(playerid) == 5) SendClientMessageToAll(COR_TECMO, Str);
        else if(GetPlayerOrg(playerid) == 6) SendClientMessageToAll(COR_EXERCITO, Str);
        format(Str, sizeof(Str), "Anuncio: %s, Mйdico: %s - ID [%d] - Telefone (%d)", result, PlayerName(playerid), playerid, PlayerInfo[playerid][pPnumber]);
        if(GetPlayerOrg(playerid) == 22) SendClientMessageToAll(COR_SAMU, Str);
        print(Str);
        SBizzInfo[7][sbTill] += 30;
        ExtortionSBiz(7, 30);
        panunciomerce = 1;
        TempoAnmerce = SetTimer("Anunciomerce", 20000, 0);
    }
    return 1;
}
Reply
#5

vlw aos 2 por ajudar ^^

+rep
Reply
#6

Veja este Tutorial:
https://sampforum.blast.hk/showthread.php?tid=339051
Para mais informaзхes sobre sscanf vб para o final do Tуpico principal, espero ter ajudado .
Reply
#7

Quote:
Originally Posted by CidadeNovaRP
Посмотреть сообщение
Veja este Tutorial:
https://sampforum.blast.hk/showthread.php?tid=339051
Para mais informaзхes sobre sscanf vб para o final do Tуpico principal, espero ter ajudado .
hm vlw, vou dar uma olhada....

Tipo, eu olhei o cуd em strcmp, e entendi que dependendo do numero de caracteres que ele digita, й cobrado um dinheiro

Ex: 1 caractere й 10,00R$

Se ele digitar: ANUNCIO

Vai cobrar dele 7x10,00R$ = 70,00R$

teria como faze isso ?
Vou dar uma procurada no forum sobre isso.. se caso eu nao achar, volto aki ^^
Reply
#8

Quote:
Originally Posted by EditPawn
Посмотреть сообщение
hm vlw, vou dar uma olhada....

Tipo, eu olhei o cуd em strcmp, e entendi que dependendo do numero de caracteres que ele digita, й cobrado um dinheiro

Ex: 1 caractere й 10,00R$

Se ele digitar: ANUNCIO

Vai cobrar dele 7x10,00R$ = 70,00R$

teria como faze isso ?
Vou dar uma procurada no forum sobre isso.. se caso eu nao achar, volto aki ^^
Sim, tem como, veja:
https://sampwiki.blast.hk/wiki/Strlen
Espero ter ajudado .
Reply
#9

Quote:
Originally Posted by EditPawn
Посмотреть сообщение
hm vlw, vou dar uma olhada....

Tipo, eu olhei o cуd em strcmp, e entendi que dependendo do numero de caracteres que ele digita, й cobrado um dinheiro

Ex: 1 caractere й 10,00R$

Se ele digitar: ANUNCIO

Vai cobrar dele 7x10,00R$ = 70,00R$

teria como faze isso ?
Vou dar uma procurada no forum sobre isso.. se caso eu nao achar, volto aki ^^
Acrescentando o cуdigo do Paulor, vai ficar assim:

pawn Код:
CMD:gov(playerid, params[])
{
    if(GetPlayerOrg(playerid) == 1 || GetPlayerOrg(playerid) == 2 || GetPlayerOrg(playerid) == 3 || GetPlayerOrg(playerid) == 4 || GetPlayerOrg(playerid) == 5 || GetPlayerOrg(playerid) == 6 || GetPlayerOrg(playerid) == 22)
    {
        if(PlayerInfo[playerid][pCargo] < 4)
            return SendClientMessage(playerid, COLOR_GREY, "Voce precisa ter pelo menos cargo 4 para usar este comando!");

        if(PlayerInfo[playerid][pMuted] == 1)
            return SendClientMessage(playerid, TEAM_CYAN_COLOR, "Vocк nгo pode Anunciar, pois foi calado");

        if(PlayerInfo[playerid][pJailed] != 0)
            return SendClientMessage(playerid, TEAM_CYAN_COLOR, "Vocк nгo pode Anunciar, pois foi preso!");

        new result[128];
        if(sscanf(params, "s[128]", result))
            return SendClientMessage(playerid, COLOR_GRAD2, "USE: /gov [Texto]");

        if(TentouDivulgar(result))
        {
            if(cdivulgar[playerid] >= 4)
            {
                SendClientMessage(playerid, COLOR_LIGHTBLUE,"Aqui vocк nгo pode anunciar servidores!");
                PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
                Kick(playerid);
            }
            format(Str, sizeof(Str), "AdmAviso: [%d]%s tentou divulgar: %s.", playerid, PlayerName(playerid), result);
            ABroadCast(COLOR_YELLOW, Str, 1);
            DivulgouLog(Str);
            cdivulgar[playerid] += 1;
            return 1;
        }
        if(panunciogang == 1)
            return SendClientMessage(playerid,COLOR_GRAD2,"Espere 20 segundos para poder anunciar novamente!");

        format(Str, sizeof(Str), "Anuncio: %s, Oficial: %s - ID [%d] - Telefone (%d)", result, PlayerName(playerid), playerid, PlayerInfo[playerid][pPnumber]);
        if(GetPlayerOrg(playerid) == 1) SendClientMessageToAll(COR_PM, Str);
        else if(GetPlayerOrg(playerid) == 2) SendClientMessageToAll(COR_PC, Str);
        else if(GetPlayerOrg(playerid) == 3) SendClientMessageToAll(COR_FBI, Str);
        else if(GetPlayerOrg(playerid) == 4) SendClientMessageToAll(COR_BOPE, Str);
        else if(GetPlayerOrg(playerid) == 5) SendClientMessageToAll(COR_TECMO, Str);
        else if(GetPlayerOrg(playerid) == 6) SendClientMessageToAll(COR_EXERCITO, Str);
        format(Str, sizeof(Str), "Anuncio: %s, Mйdico: %s - ID [%d] - Telefone (%d)", result, PlayerName(playerid), playerid, PlayerInfo[playerid][pPnumber]);
        if(GetPlayerOrg(playerid) == 22) SendClientMessageToAll(COR_SAMU, Str);
        print(Str);
        GivePlayerMoney(playerid, -strlen(result)*10);
        SBizzInfo[7][sbTill] += 30;
        ExtortionSBiz(7, 30);
        panunciomerce = 1;
        TempoAnmerce = SetTimer("Anunciomerce", 20000, 0);
    }
    return 1;
}
Abraзos.
Reply
#10

Quote:
Originally Posted by Los
Посмотреть сообщение
Acrescentando o cуdigo do Paulor, vai ficar assim:

pawn Код:
CMD:gov(playerid, params[])
{
    if(GetPlayerOrg(playerid) == 1 || GetPlayerOrg(playerid) == 2 || GetPlayerOrg(playerid) == 3 || GetPlayerOrg(playerid) == 4 || GetPlayerOrg(playerid) == 5 || GetPlayerOrg(playerid) == 6 || GetPlayerOrg(playerid) == 22)
    {
        if(PlayerInfo[playerid][pCargo] < 4)
            return SendClientMessage(playerid, COLOR_GREY, "Voce precisa ter pelo menos cargo 4 para usar este comando!");

        if(PlayerInfo[playerid][pMuted] == 1)
            return SendClientMessage(playerid, TEAM_CYAN_COLOR, "Vocк nгo pode Anunciar, pois foi calado");

        if(PlayerInfo[playerid][pJailed] != 0)
            return SendClientMessage(playerid, TEAM_CYAN_COLOR, "Vocк nгo pode Anunciar, pois foi preso!");

        new result[128];
        if(sscanf(params, "s[128]", result))
            return SendClientMessage(playerid, COLOR_GRAD2, "USE: /gov [Texto]");

        if(TentouDivulgar(result))
        {
            if(cdivulgar[playerid] >= 4)
            {
                SendClientMessage(playerid, COLOR_LIGHTBLUE,"Aqui vocк nгo pode anunciar servidores!");
                PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
                Kick(playerid);
            }
            format(Str, sizeof(Str), "AdmAviso: [%d]%s tentou divulgar: %s.", playerid, PlayerName(playerid), result);
            ABroadCast(COLOR_YELLOW, Str, 1);
            DivulgouLog(Str);
            cdivulgar[playerid] += 1;
            return 1;
        }
        if(panunciogang == 1)
            return SendClientMessage(playerid,COLOR_GRAD2,"Espere 20 segundos para poder anunciar novamente!");

        format(Str, sizeof(Str), "Anuncio: %s, Oficial: %s - ID [%d] - Telefone (%d)", result, PlayerName(playerid), playerid, PlayerInfo[playerid][pPnumber]);
        if(GetPlayerOrg(playerid) == 1) SendClientMessageToAll(COR_PM, Str);
        else if(GetPlayerOrg(playerid) == 2) SendClientMessageToAll(COR_PC, Str);
        else if(GetPlayerOrg(playerid) == 3) SendClientMessageToAll(COR_FBI, Str);
        else if(GetPlayerOrg(playerid) == 4) SendClientMessageToAll(COR_BOPE, Str);
        else if(GetPlayerOrg(playerid) == 5) SendClientMessageToAll(COR_TECMO, Str);
        else if(GetPlayerOrg(playerid) == 6) SendClientMessageToAll(COR_EXERCITO, Str);
        format(Str, sizeof(Str), "Anuncio: %s, Mйdico: %s - ID [%d] - Telefone (%d)", result, PlayerName(playerid), playerid, PlayerInfo[playerid][pPnumber]);
        if(GetPlayerOrg(playerid) == 22) SendClientMessageToAll(COR_SAMU, Str);
        print(Str);
        GivePlayerMoney(playerid, -strlen(result)*10);
        SBizzInfo[7][sbTill] += 30;
        ExtortionSBiz(7, 30);
        panunciomerce = 1;
        TempoAnmerce = SetTimer("Anunciomerce", 20000, 0);
    }
    return 1;
}
Abraзos.
Vlw los, e eu quero fazer uma format, para enviar o quanto ele gastou, ficaria assim?
pawn Код:
format(Str, sizeof(Str), "Vocк gastou %d R$ pelo anuncio.", strlen(result)*10)
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)