[Ajuda] /assaltar
#1

Olб, bom dia!

Gostaria que vocкs me ajudassem.
meu comando assalta o player mais proximo. Porйm gostaria que ele assaltasse o player tipo. (/assaltar [id]) e nгo o mais proximo.

pawn Код:
if(strcmp(cmdtext, "/assaltar", true) == 0)
    {
        for(new i = 0; i < MAX_PLAYERS; i++)
        {
            new Float:X, Float:Y, Float:Z;
            GetPlayerPos(i, X, Y, Z);
            if(PlayerInfo[playerid][pMembro] != 5 && PlayerInfo[playerid][pLider] != 5
            && PlayerInfo[playerid][pMembro] != 14 && PlayerInfo[playerid][pLider] != 14
            && PlayerInfo[playerid][pMembro] != 17 && PlayerInfo[playerid][pLider] != 17
            && PlayerInfo[playerid][pMembro] != 18 && PlayerInfo[playerid][pLider] != 18
            && PlayerInfo[playerid][pMembro] != 19 && PlayerInfo[playerid][pLider] != 19
            && PlayerInfo[playerid][pMembro] != 20 && PlayerInfo[playerid][pLider] != 20
            && PlayerInfo[playerid][pMembro] != 21 && PlayerInfo[playerid][pLider] != 21
            && PlayerInfo[playerid][pMembro] != 26 && PlayerInfo[playerid][pLider] != 26
            && PlayerInfo[playerid][pLider] != 29 && PlayerInfo[playerid][pLider] != 31
            && PlayerInfo[playerid][pMembro] != 29 && PlayerInfo[playerid][pMembro] != 31
            && GetPlayerOrg(playerid) != 6 && GetPlayerOrg(playerid) != 12
            && GetPlayerOrg(playerid) != 13 && GetPlayerOrg(playerid) != 15
            && PlayerInfo[playerid][pMembro] != 38 && PlayerInfo[playerid][pLider] != 38
            && GetPlayerOrg(playerid) != 23)
            {
                SendClientMessage(playerid,COLOR_GREY,"Vocк nгo pode assaltar!");
                return true;
            }
            if(IsPlayerInRangeOfPoint(playerid, 3, X, Y, Z))
            {
                new string[128], Nome[MAX_PLAYER_NAME], Name[MAX_PLAYER_NAME], rand = random(4500)+500;
                GetPlayerName(i, Nome, sizeof(Nome));
                GetPlayerName(playerid, Name, sizeof(Name));
                format(string, sizeof(string), "Vocк assaltou o jogador %s e roubou R$ %d,00 dele!", Nome, rand);
                SendClientMessage(playerid, -1, string);
                format(string, sizeof(string), "Vocк foi assaltado pelo jogador %s e ele te roubou %d!", Name, rand);
                SendClientMessage(i, -1, string);
                GivePlayerMoney(playerid, rand);
                GivePlayerMoney(i, -rand);
            }
        }
        return 1;
    }
Vlw!
Reply
#2

Quote:
Originally Posted by NuTShoT
Посмотреть сообщение
Olб, bom dia!

Gostaria que vocкs me ajudassem.
meu comando assalta o player mais proximo. Porйm gostaria que ele assaltasse o player tipo. (/assaltar [id]) e nгo o mais proximo.

pawn Код:
if(strcmp(cmdtext, "/assaltar", true) == 0)
    {
        for(new i = 0; i < MAX_PLAYERS; i++)
        {
            new Float:X, Float:Y, Float:Z;
            GetPlayerPos(i, X, Y, Z);
            if(PlayerInfo[playerid][pMembro] != 5 && PlayerInfo[playerid][pLider] != 5
            && PlayerInfo[playerid][pMembro] != 14 && PlayerInfo[playerid][pLider] != 14
            && PlayerInfo[playerid][pMembro] != 17 && PlayerInfo[playerid][pLider] != 17
            && PlayerInfo[playerid][pMembro] != 18 && PlayerInfo[playerid][pLider] != 18
            && PlayerInfo[playerid][pMembro] != 19 && PlayerInfo[playerid][pLider] != 19
            && PlayerInfo[playerid][pMembro] != 20 && PlayerInfo[playerid][pLider] != 20
            && PlayerInfo[playerid][pMembro] != 21 && PlayerInfo[playerid][pLider] != 21
            && PlayerInfo[playerid][pMembro] != 26 && PlayerInfo[playerid][pLider] != 26
            && PlayerInfo[playerid][pLider] != 29 && PlayerInfo[playerid][pLider] != 31
            && PlayerInfo[playerid][pMembro] != 29 && PlayerInfo[playerid][pMembro] != 31
            && GetPlayerOrg(playerid) != 6 && GetPlayerOrg(playerid) != 12
            && GetPlayerOrg(playerid) != 13 && GetPlayerOrg(playerid) != 15
            && PlayerInfo[playerid][pMembro] != 38 && PlayerInfo[playerid][pLider] != 38
            && GetPlayerOrg(playerid) != 23)
            {
                SendClientMessage(playerid,COLOR_GREY,"Vocк nгo pode assaltar!");
                return true;
            }
            if(IsPlayerInRangeOfPoint(playerid, 3, X, Y, Z))
            {
                new string[128], Nome[MAX_PLAYER_NAME], Name[MAX_PLAYER_NAME], rand = random(4500)+500;
                GetPlayerName(i, Nome, sizeof(Nome));
                GetPlayerName(playerid, Name, sizeof(Name));
                format(string, sizeof(string), "Vocк assaltou o jogador %s e roubou R$ %d,00 dele!", Nome, rand);
                SendClientMessage(playerid, -1, string);
                format(string, sizeof(string), "Vocк foi assaltado pelo jogador %s e ele te roubou %d!", Name, rand);
                SendClientMessage(i, -1, string);
                GivePlayerMoney(playerid, rand);
                GivePlayerMoney(i, -rand);
            }
        }
        return 1;
    }
Vlw!
Se й RP/RPG para que o /assaltar id? assim vocк pode assaltar um cara que se encontra no outro lado do mapa amigo?
Reply
#3

Olб, bom dia!

Knight97, so pedi a base o resto ainda vou fazer...

Vlw!
Reply
#4

vocк usa comandos de forma normal:
pawn Код:
if(!strcmp(cmdtext...
ou zcmd ou algum outro processador?
Reply
#5

Ola, bom dia!

Knight97, de forma normal...
Como o comando que eu mostrei.

Vlw!
Reply
#6

pawn Код:
new
    tmp[128],
    ID;

cmd = strtok(cmdtext, idx);
if(!strcmp(cmd, "/assaltar", true))
{
    tmp = strtok(cmdtext, idx);

    if(!strlen(tmp))
        return SendClientMessage(playerid, -1, "/assaltar [id]");

    ID = strval(tmp);

    if(!IsPlayerConnected(ID))
        return SendClientMessage(playerid, -1, "Jogador off");

    //o resto aqui

    return true;
}
Creio estar certo... jб nгo uso essa forma faz muito tempo.
Reply
#7

Use sscanf.
Reply
#8

Se puder usar sscanf, eu faзo para vocк.

E vale ressaltar, usar strcmp para comandos nгo deve ser chamada de forma "normal", deve ser chamada de forma "totalmente errada". Comparar strings para comandos й gambiarra nгo um modo correto de programaзгo. Vocк que ja tem 1 ano aqui no fуrum deveria jб estar com gerenciador de comandos e sscanf nem prбtica hб muito tempo...
Reply
#9

Tenta Esse Ai

pawn Код:
forward UsarNovamente(playerid);
new UsouComando[MAX_PLAYERS] = 0;
new giveplayerid, moneys, idx;
forward ProxDetectorS(Float:radi, playerid, targetid);
pawn Код:
if(strcmp(cmd,"/assaltar",true)==0)
    {
        if(IsPlayerConnected(playerid))
        {
            new money = strval(tmp);
            if(money < 1000 || money > 50000)
            {
                MSGPLAYER(playerid, COLOR_GREY, " O Preзo Tem que ser entre R$ 1000 e R$ 50000!");
                return 1;
            }
            if (IsPlayerConnected(giveplayerid))
            {
                if(giveplayerid != INVALID_PLAYER_ID)
                {
                    if (ProxDetectorS(5.0, playerid, giveplayerid))
                    {
                        GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        format(string, sizeof(string), "* Vocк estб assaltando $%d de %s.", money, giveplayer);
                        MSGPLAYER(playerid, COLOR_LIGHTBLUE, string);
                        format(string, sizeof(string), "* %s: Isso й um assalto,pague $%d! nгo seja Ant-RPG.", sendername, money);
                        MSGPLAYER(giveplayerid, COLOR_LIGHTBLUE, string);
                        MSGPLAYER(giveplayerid, COLOR_LIGHTBLUE, "/aceitar assalto para aceitar");
                        format(string, sizeof(string), "*%s estб assaltando %s!", sendername,giveplayer);
                        ProxDetector(20.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                        OfAssalto[giveplayerid] = playerid;
                        precoassalto[giveplayerid] = money;
                        SetPlayerCriminal(playerid,255, "Tentativa de Assalto");
                        UsouComando[playerid] = 1;
                        SetTimerEx("UsarNovamente",300000,0,"d",playerid);
                    }
                    else
                    {
                        MSGPLAYER(playerid, COLOR_GREY, "Esse jogador nгo estб perto de vocк!");
                    }
                }
                else
                {
                    MSGPLAYER(playerid, COLOR_GREY, "   ID/Nome Invalido !");
                    return 1;
                }
            }
        }
        return 1;
    }
pawn Код:
public UsarNovamente(playerid)
{
    UsouComando[playerid] = 0;
}

public ProxDetectorS(Float:radi, playerid, targetid)
{
    if(IsPlayerConnected(playerid)&&IsPlayerConnected(targetid))
    {
        new Float:posx, Float:posy, Float:posz;
        new Float:oldposx, Float:oldposy, Float:oldposz;
        new Float:tempposx, Float:tempposy, Float:tempposz;
        GetPlayerPos(playerid, oldposx, oldposy, oldposz);
        //radi = 2.0; //Trigger Radius
        GetPlayerPos(targetid, posx, posy, posz);
        tempposx = (oldposx -posx);
        tempposy = (oldposy -posy);
        tempposz = (oldposz -posz);
        //printf("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
        if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
        {
            return 1;
        }
    }
    return 0;
}
Crйditos: Troll Face
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)