[Ajuda] Ajuda nesse comando !
#1

Pessoal to com um comando aqui de tacar fogo em uma pessoa .
Код:
CMD:Fogo(playerid, params[])
{
	if(!NivelRequerido(playerid, 2)) return 1;
	if(sscanf(params, "u", ID)) return MensagemDupla(playerid, "Use /fogo [ID]", "Use o comando para colocar fogo em um jogador.");
	new Float:X,
	    Float:Y,
	    Float:Z;
	GetPlayerPos(ID, X, Y, Z);
	CreateExplosion(X, Y, Z, 1, 5);
	MensagemFormatadaParaTodos(AZUL_CLARO, "O Admin {1B95E0}%s{00C2EC} colocou fogo no jogador %s", Nome(playerid), Nome(ID));
	return 1;
}
Agora quero saber , como que faзo para o comando funcionar apenas se o player estiver no mбximo 30 metros longe de mim . Se ele estiver , mais longe , aparece uma mensagem dizendo que ele tem que estб no mбximo 30 metros ..

Valeu !
Reply
#2

Olhe se ja existe essa forward no seu GM
pawn Код:
//No topo do GM

forward ProxDetectorS(Float:radi, playerid, targetid);

No final do GM
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;
}
Agorra use assum o comando:

pawn Код:
CMD:Fogo(playerid, params[])
{
    if (ProxDetectorS(5.0, playerid, giveplayerid))// o 5.0 e a distancia minina para o comando ser usado
    {
        if(!NivelRequerido(playerid, 2)) return 1;
        if(sscanf(params, "u", ID)) return MensagemDupla(playerid, "Use /fogo [ID]", "Use o comando para colocar fogo em um jogador.");
        new Float:X,
            Float:Y,
            Float:Z;
        GetPlayerPos(ID, X, Y, Z);
        CreateExplosion(X, Y, Z, 1, 5);
        MensagemFormatadaParaTodos(AZUL_CLARO, "O Admin {1B95E0}%s{00C2EC} colocou fogo no jogador %s", Nome(playerid), Nome(ID));
    }
    else
    {
        SendClientMessage(playerid, COLOR_GRAD1, "   Voce esta longe do player");
    }
    return 1;
}
Testa ae para ver se funcionou =D
Reply
#3

Quote:
Originally Posted by LeonardoBCF
Посмотреть сообщение
Olhe se ja existe essa forward no seu GM
pawn Код:
//No topo do GM

forward ProxDetectorS(Float:radi, playerid, targetid);

No final do GM
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;
}
Agorra use assum o comando:

pawn Код:
CMD:Fogo(playerid, params[])
{
    if (ProxDetectorS(5.0, playerid, giveplayerid))// o 5.0 e a distancia minina para o comando ser usado
    {
        if(!NivelRequerido(playerid, 2)) return 1;
        if(sscanf(params, "u", ID)) return MensagemDupla(playerid, "Use /fogo [ID]", "Use o comando para colocar fogo em um jogador.");
        new Float:X,
            Float:Y,
            Float:Z;
        GetPlayerPos(ID, X, Y, Z);
        CreateExplosion(X, Y, Z, 1, 5);
        MensagemFormatadaParaTodos(AZUL_CLARO, "O Admin {1B95E0}%s{00C2EC} colocou fogo no jogador %s", Nome(playerid), Nome(ID));
    }
    else
    {
        SendClientMessage(playerid, COLOR_GRAD1, "   Voce esta longe do player");
    }
    return 1;
}
Testa ae para ver se funcionou =D
Amigo, essa distancia minima 5.0 seria de quantos metros +/- ?
Reply
#4

2,5m +/-
Reply
#5

Код:
(1204) : error 017: undefined symbol "giveplayerid"
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


1 Error.
E aн ?
Reply
#6

Dentro da Public

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{

    new giveplayerid, moneys, idx;
;P esqueci disso =D
Reply
#7

Amigo deu uma porзгo de erros aqui . Mas olha, se eu colocar isso
Код:
new giveplayerid;
lб no topo, o erro some . Mas serб que vai funcionar ?
Reply
#8

@Sei nao
Reply
#9

Fiz pelo celular.. Acho que deve dar..
pawn Код:
CMD:Fogo(playerid, params[]) {
    new
        Float:p[3],
        T_ID;
       
    if(!NivelRequerido(playerid, 2)) return 1;
    if(sscanf(params, "u", T_ID)) return MensagemDupla(playerid, "Use /fogo [ID]", "Use o comando para colocar fogo em um jogador.");
    GetPlayerPos(T_ID, p[0], p[1], p[2]);
    if(IsPlayerInRangeOfPoint(playerid,30,p[0],p[1],p[2])) return SendClientMessage(playerid, 0xC0C0C0AA, "Vocк estб muito proximo do player.");
    CreateExplosion(p[0], p[1], p[2], 1, 5);
    MensagemFormatadaParaTodos(AZUL_CLARO, "O Admin {1B95E0}%s{00C2EC} colocou fogo no jogador %s", Nome(playerid), Nome(T_ID));
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)