[Ajuda] Algemar sу se o suspeito estiver perto
#1

Bom muitos dizem que Pawn й bem fбcil de se aprender, Й MENTIRA, Tenho duas contas na BOARD, Uma em 2011 e essa outra a outra foi deletada. Bom eu estudo estudo estudo, e nunca tenho sucesso, nem sei como usar operadores , exemplos < , > ,, = !=. й bem complicado!!

Agora eu fazendo meu gamemode me deparo com uma merda dessa

O policial consegue algemar o suspeito mesmo ele estando bem longe do policial

O policial ta em LS E O SUSPEITO TA EM SF, ELE CONSEGUE ALGEMAR

pawn Код:
CMD:algemar(playerid, params[])
{
    getdate(Ano, Mes, Dia);
    gettime(Horas, Minutos, Segundos);
    new ID_OUTRO_JOGADOR;
    if(DadosJogador[playerid][ORGANIZACAO_JOGADOR] == POLICIA_MILITAR)
    {
        if (ProxDetector_Ao_Jogador(8.0, playerid, ID_OUTRO_JOGADOR))
        {
            if(Roupa_Farda[0][playerid] == false) return SendClientMessage(playerid,VERMELHO_BEM_CLARO,"Vocк precisa bater o cartгo para poder algemar algum suspeito.");
            if(sscanf(params, "u", ID_OUTRO_JOGADOR)) return SendClientMessage(playerid, VERDE_BEM_CLARO, "USE: /algemar [ID]");
            if(!IsPlayerConnected(ID_OUTRO_JOGADOR)) return SendClientMessage(playerid, VERMELHO_BEM_CLARO , "Jogador(a) nгo estб conectado.");
            if(ID_OUTRO_JOGADOR == playerid) return SendClientMessage(playerid, VERMELHO_BEM_CLARO, "Vocк nгo pode si algemar.");
            if(DadosJogador[ID_OUTRO_JOGADOR][VERIFICAR_MODO_ADMIN] == 1 && DadosJogador[ID_OUTRO_JOGADOR][ADMIN_NIVEL] >= 1) return SendClientMessage(playerid, VERMELHO_BEM_CLARO, "Vocк nгo pode algemar admin em modo de trabalho.");
            if(DadosJogador[ID_OUTRO_JOGADOR][ORGANIZACAO_JOGADOR] == POLICIA_MILITAR) return SendClientMessage(playerid, VERMELHO_BEM_CLARO , "Vocк nгo pode algemar Policiais.");
            if(Jogador_Algemado[ID_OUTRO_JOGADOR] == true) return SendClientMessage(playerid,VERMELHO_BEM_CLARO,"O Jogador jб estб algemado.");
            if(DadosJogador[ID_OUTRO_JOGADOR][NIVEL_PROCURADO] < 0) return SendClientMessage(playerid,VERMELHO_BEM_CLARO,"O Suspeito precisa estar com nivel de procurado para ser algemado.");
            Jogador_Algemado[ID_OUTRO_JOGADOR] = true;
            SetPlayerSpecialAction(ID_OUTRO_JOGADOR, SPECIAL_ACTION_CUFFED);
            SetPlayerAttachedObject(ID_OUTRO_JOGADOR, Algemas_Suspeito, 19418, 6, -0.031999, 0.024000,-0.024000,-7.900000,-32.000011,-72.299987, 1.115998, 1.322000, 1.406000);
            GameTextForPlayer(ID_OUTRO_JOGADOR, "~y~[ ~r~~h~ALGEMADO ~y~[", 2500, 5);
            format(String, sizeof(String), "Vocк foi algemado por %s .", PlayerNick(playerid));
            SendClientMessage(ID_OUTRO_JOGADOR, COR_AMARELO, String);
            format(String, sizeof(String), "Vocк algemou o suspeito %s .", PlayerNick(ID_OUTRO_JOGADOR));
            SendClientMessage(playerid, COR_AMARELO, String);
            format(String, sizeof(String), "(%s) - %s Algemou o suspeito %s .", NomeORG(playerid), PlayerNick(playerid), PlayerNick(ID_OUTRO_JOGADOR));
            ProxDetector_Ao_Falar(10.0, playerid, String, ROXO_BEM_CLARO,ROXO_BEM_CLARO,ROXO_BEM_CLARO,ROXO_BEM_CLARO,ROXO_BEM_CLARO);
        }
        else
        {
            SendClientMessage(playerid,VERMELHO_BEM_CLARO,"Vocк precisa estar perto do jogador para poder algemar ele.");
            return true;
        }
    }
    else
    {
        SendClientMessage(playerid, VERMELHO_BEM_CLARO, "Vocк nгo estб autorizado a usar este comando.");
        return true;
    }
    printf(" - [%d/%d/%d]: (%s): %s algemou o suspeito: %s ", Dia, Mes, Ano, NomeORG(playerid), PlayerNick(playerid), PlayerNick(ID_OUTRO_JOGADOR));
    return true;
}
pawn Код:
ProxDetector_Ao_Jogador(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(" - [%d/%d/%d]: DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
        if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
        {
            return true;
        }
    }
    return true;
}
e essa porra de return que eu nгo entendo de jeito nenhum , se eu deixou com o return ou se eu tiro ? qual vai ser a diferencia ?
Reply
#2

Vocк fazendo o seu Gamemode, com a funзхes dos outros? Pawn й fбcil sim, apenas falta a vontade.

Na vez de utilizar esta funзгo, utilize a IsPlayerInRangeOfPoint.
pawn Код:
if(Roupa_Farda[0][playerid] == false) return SendClientMessage(playerid,VERMELHO_BEM_CLARO,"Vocк precisa bater o cartгo para poder algemar algum suspeito.");
            if(sscanf(params, "u", ID_OUTRO_JOGADOR)) return SendClientMessage(playerid, VERDE_BEM_CLARO, "USE: /algemar [ID]");
            new Float:x, Float:y, Float:z;
            GetPlayerPos(ID_OUTRO_JOGADOR, x, y, z);
            if(!IsPlayerInRangeOfPoint(playerid, 10.0, x, y, z)) return SendClientMessage(playerid, -1, "[ERRO] Jogador nгo estб perto de vocк.");
            if(!IsPlayerConnected(ID_OUTRO_JOGADOR)) return SendClientMessage(playerid, VERMELHO_BEM_CLARO , "Jogador(a) nгo estб conectado.");
            if(ID_OUTRO_JOGADOR == playerid) return SendClientMessage(playerid, VERMELHO_BEM_CLARO, "Vocк nгo pode si algemar.");
            if(DadosJogador[ID_OUTRO_JOGADOR][VERIFICAR_MODO_ADMIN] == 1 && DadosJogador[ID_OUTRO_JOGADOR][ADMIN_NIVEL] >= 1) return SendClientMessage(playerid, VERMELHO_BEM_CLARO, "Vocк nгo pode algemar admin em modo de trabalho.");
            if(DadosJogador[ID_OUTRO_JOGADOR][ORGANIZACAO_JOGADOR] == POLICIA_MILITAR) return SendClientMessage(playerid, VERMELHO_BEM_CLARO , "Vocк nгo pode algemar Policiais.");
            if(Jogador_Algemado[ID_OUTRO_JOGADOR] == true) return SendClientMessage(playerid,VERMELHO_BEM_CLARO,"O Jogador jб estб algemado.");
            if(DadosJogador[ID_OUTRO_JOGADOR][NIVEL_PROCURADO] < 0) return SendClientMessage(playerid,VERMELHO_BEM_CLARO,"O Suspeito precisa estar com nivel de procurado para ser algemado.");
            Jogador_Algemado[ID_OUTRO_JOGADOR] = true;
            SetPlayerSpecialAction(ID_OUTRO_JOGADOR, SPECIAL_ACTION_CUFFED);
            SetPlayerAttachedObject(ID_OUTRO_JOGADOR, Algemas_Suspeito, 19418, 6, -0.031999, 0.024000,-0.024000,-7.900000,-32.000011,-72.299987, 1.115998, 1.322000, 1.406000);
            GameTextForPlayer(ID_OUTRO_JOGADOR, "~y~[ ~r~~h~ALGEMADO ~y~[", 2500, 5);
            format(String, sizeof(String), "Vocк foi algemado por %s .", PlayerNick(playerid));
            SendClientMessage(ID_OUTRO_JOGADOR, COR_AMARELO, String);
            format(String, sizeof(String), "Vocк algemou o suspeito %s .", PlayerNick(ID_OUTRO_JOGADOR));
            SendClientMessage(playerid, COR_AMARELO, String);
            format(String, sizeof(String), "(%s) - %s Algemou o suspeito %s .", NomeORG(playerid), PlayerNick(playerid), PlayerNick(ID_OUTRO_JOGADOR));
            ProxDetector_Ao_Falar(10.0, playerid, String, ROXO_BEM_CLARO,ROXO_BEM_CLARO,ROXO_BEM_CLARO,ROXO_BEM_CLARO,ROXO_BEM_CLARO);
        }
        else
        {
            SendClientMessage(playerid,VERMELHO_BEM_CLARO,"Vocк precisa estar perto do jogador para poder algemar ele.");
            return true;
        }
    }
    else
    {
        SendClientMessage(playerid, VERMELHO_BEM_CLARO, "Vocк nгo estб autorizado a usar este comando.");
        return true;
    }
    printf(" - [%d/%d/%d]: (%s): %s algemou o suspeito: %s ", Dia, Mes, Ano, NomeORG(playerid), PlayerNick(playerid), PlayerNick(ID_OUTRO_JOGADOR));
    return true;
}
Reply
#3

Alguns exemplos de como usar sinais

pawn Код:
new girombaGrande, girombaPequeno;
if(girombaGrande > girombaPequeno) { print("girombaGrande й maior que girombaPequeno"); return 1; }
if(girombaGrande < girombaPequeno) { print("girombaGrande й menor que girombaPequeno"); return 1; }

if(girombaGrande == girombaPequeno) { print("girombaGrande й igual a girombaPequeno"); return 1; }
if(girombaGrande != girombaPequeno) { print("girombaGrande й diferente de girombaPequeno"); return 1; }
OBS : Й um jeito estranho de aprender, mais como falam por ai, sу aprende o que nгo presta entгoooo ! ^^
E isso penetra na mente Tu nunca mais vai esquece do giromba
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)