SA-MP Forums Archive
[Ajuda] Ajuda nesse comando ! - 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] Ajuda nesse comando ! (/showthread.php?tid=435652)



Ajuda nesse comando ! - SkullFire - 07.05.2013

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 !


Re: Ajuda nesse comando ! - LeonardoBCF - 07.05.2013

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


Re: Ajuda nesse comando ! - SkullFire - 07.05.2013

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 +/- ?


Re: Ajuda nesse comando ! - LeonardoBCF - 07.05.2013

2,5m +/-


Re: Ajuda nesse comando ! - SkullFire - 07.05.2013

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


1 Error.
E aн ?


Re: Ajuda nesse comando ! - LeonardoBCF - 07.05.2013

Dentro da Public

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

    new giveplayerid, moneys, idx;
;P esqueci disso =D


Re: Ajuda nesse comando ! - SkullFire - 07.05.2013

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 ?


Re: Ajuda nesse comando ! - LeonardoBCF - 07.05.2013

@Sei nao


Re: Ajuda nesse comando ! - tonisantolia - 07.05.2013

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