[Resolvido] Comando so perto de outro player
#1

Boas pessoal. tive a criar um comando para prender so que nao sei colocar a funзao para prender apenas se o jogador tiver perto.

Podiam me ajudar?

pawn Код:
if(strcmp(cmd, "/pladrao", true) == 0)
{
new tmp[128];
tmp = strtok(cmdtext, idx);



if(strlen(tmp) == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "Uso do Comando: /psuspeito ID");
GameTextForPlayer(strval(tmp), "~r~Preso por um soldado", 3000, 3);
GivePlayerMoney(playerid,100);
SendClientMessage(playerid, COR_AMARELA, "Prendes-te uma pessoa 100Ђ");
SendClientMessageToAll(COR_AMARELA, "O exercito cumpriu o seu dever" );
SetPlayerPos(strval(tmp),281.1598,1951.7123,17.6406);
GivePlayerMoney(strval(tmp),-100);
SetPlayerWantedLevel(strval(tmp), 1);

return 1;
}
Reply
#2

Usas o PlayerToPoint.
Reply
#3

pawn Код:
if(IsPlayerInRangeOfPoint(playerid, 7.0, 2695.6880, -1704.6300, 11.8438))
Bro nгo da com isso ?

estava na ideia que dava qualquer cena como

Код:
if(IsPlayerInRangeOfPoint(playerid, 7.0, x, y, z))
Reply
#4

Usa a funзгo GetDistanceBetweenPlayers:

Код:
stock GetDistanceBetweenPlayers(playerid,playerid2) //By Slick (Edited by Sacky)
{
new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
new Float:dis;
GetPlayerPos(playerid,x1,y1,z1);
GetPlayerPos(playerid2,x2,y2,z2);
dis = floatsqroot((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1));
return floatround(dis);
}
Reply
#5

Ya, usa o que o GeoPilot mandou. Eu estava com sono e mandei o PlayerToPoint, estava pensando que era outra coisa. Desculpa.
Reply
#6

Coloquei assim

pawn Код:
if(strcmp(cmd, "/darvida", true) == 0)
{
new tmp[128];
tmp = strtok(cmdtext, idx);

GetDistanceBetweenPlayers(1,2);//=======================================================================
if(strlen(tmp) == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "Uso do Comando: /darvida ID");
GameTextForPlayer(strval(tmp), "~r~Curado por um medico", 3000, 3);
SetPlayerHealth(strval(tmp),100);
GivePlayerMoney(playerid,50);
SendClientMessage(playerid, COR_VERMELHO, "Curas-te uma pessoa, parabens recompensa 50Ђ");
SendClientMessageToAll(COR_VERMELHO, "Um medico fez o seu trabalho" );

return 1;
}

Mas tenho certeza que esta mal . .

tambйm jб coloquei o GEOPILOT disse.. Compilei e nгo deu erro nenhum.
Reply
#7

Tenta:

pawn Код:
if(strcmp(cmd, "/darvida", true) == 0)
{
new tmp[128];
tmp = strtok(cmdtext, idx);

if(GetDistanceBetweenPlayers(playerid,tmp)>6) return SendClientMessage(playerid,COR_AQUI,"Vocк estб muito longe deste player!");//=======================================================================
if(strlen(tmp) == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "Uso do Comando: /darvida ID");
GameTextForPlayer(strval(tmp), "~r~Curado por um medico", 3000, 3);
SetPlayerHealth(strval(tmp),100);
GivePlayerMoney(playerid,50);
SendClientMessage(playerid, COR_VERMELHO, "Curas-te uma pessoa, parabens recompensa 50Ђ");
SendClientMessageToAll(COR_VERMELHO, "Um medico fez o seu trabalho" );

return 1;
}
Reply
#8

Deu esse erro aqui:
pawn Код:
C:\Documents and Settings\RICARDO31\Ambiente de trabalho\SAMP 0.3 Server\gamemodes\pb.pwn(698) : error 035: argument type mismatch (argument 2)
Pawn compiler 3.2.3664          Copyright (c) 1997-2006, ITB CompuPhase


1 Error.
Linha 698

pawn Код:
if(GetDistanceBetweenPlayers(playerid,tmp)>6) return SendClientMessage(playerid,COR_VERMELHO,"Vocк estб muito longe deste player!");//distancia
Reply
#9

Ao abrir a primeira chaveta, colocas isso embaixo do tmp = strtok(cmdtext, idx);
Код:
new playerid2;
playerid2 = strval(tmp);
E substitui a linha 698 por isso:
Код:
if(GetDistanceBetweenPlayers(playerid,playerid2)>6) return SendClientMessage(playerid,COR_AQUI,"Vocк estб muito longe deste player!");//=======================================================================
Caso nгo dк certo, fiz outro cуdigo com base no seu, jб identado, mais organizado e com tudo certo:

Код:
if(strcmp(cmd, "/darvida", true) == 0)
{
	new tmp[128];
	tmp = strtok(cmdtext, idx);
	new playerid2;
	playerid2 = strval(tmp);
	distancia = GetDistanceBetweenPlayers(playerid, playerid2);

	if(distancia >6)
     {
      SendClientMessage(playerid,COR_AQUI,"Vocк estб muito longe deste player!");//se a distancia for maior que 6, retorna uma mensagem de erro.
      return 1;
     }
	if(!strlen(tmp))// se o player nao digitou o id do playerid2, retorna uma mensagem de erro
	{
	  SendClientMessage(playerid, 0xFFFFFFFF, "Uso do Comando: /darvida ID");
	  return 1;
	}
	if(distancia <=6)// e se a distancia for menor ou igual a 6, faz o que vocк quer
	{
		GameTextForPlayer(strval(tmp), "~r~Curado por um medico", 3000, 3);
		SetPlayerHealth(strval(tmp),100);
		GivePlayerMoney(playerid,50);
		SendClientMessage(playerid, COR_VERMELHO, "Curas-te uma pessoa, parabens recompensa 50Ђ");
		SendClientMessageToAll(COR_VERMELHO, "Um medico fez o seu trabalho" );
		return 1;
	}
return 1;
}

Reply
#10

Quote:
Originally Posted by [BEP
GeoPilot ]
Ao abrir a primeira chaveta, colocas isso embaixo do tmp = strtok(cmdtext, idx);
Код:
new playerid2;
playerid2 = strval(tmp);
E substitui a linha 698 por isso:
Код:
if(GetDistanceBetweenPlayers(playerid,playerid2)>6) return SendClientMessage(playerid,COR_AQUI,"Vocк estб muito longe deste player!");//=======================================================================
Caso nгo dк certo, fiz outro cуdigo com base no seu, jб identado, mais organizado e com tudo certo:

Код:
if(strcmp(cmd, "/darvida", true) == 0)
{
	new tmp[128];
	tmp = strtok(cmdtext, idx);
	new playerid2;
	playerid2 = strval(tmp);
	distancia = GetDistanceBetweenPlayers(playerid, playerid2);

	if(distancia >6)
     {
      SendClientMessage(playerid,COR_AQUI,"Vocк estб muito longe deste player!");//se a distancia for maior que 6, retorna uma mensagem de erro.
      return 1;
    }
	if(!strlen(tmp))// se o player nao digitou o id do playerid2, retorna uma mensagem de erro
	{
	  SendClientMessage(playerid, 0xFFFFFFFF, "Uso do Comando: /darvida ID");
	  return 1;
	}
	if(distancia <=6)// e se a distancia for menor ou igual a 6, faz o que vocк quer
	{
		GameTextForPlayer(strval(tmp), "~r~Curado por um medico", 3000, 3);
		SetPlayerHealth(strval(tmp),100);
		GivePlayerMoney(playerid,50);
		SendClientMessage(playerid, COR_VERMELHO, "Curas-te uma pessoa, parabens recompensa 50Ђ");
		SendClientMessageToAll(COR_VERMELHO, "Um medico fez o seu trabalho" );
		return 1;
	}
return 1;
}

Perfeito .. Obrigadoo.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)