Posts: 420
Threads: 45
Joined: Jul 2010
Reputation:
0
Tengo 2 comandos, uno llamado /mecanico y otro llamado /reparar.
Lo que hace el /mecanico es hacer que la variable "pidiomecanico" sea igual a 1
Entonces tiene que venir otro usuario y colocarle el "/reparar", pero no se de que manera "averiguar" si el usuario pidio mecanico, osea un "el usuario esta cerca de alguien que tiene el pidiomecanico=1"
Gracias y saludos
Posts: 4,930
Threads: 467
Joined: Dec 2010
pawn Код:
//arriba de todo.
new bool:PidioMecanico[MAX_PLAYERS];
pawn Код:
//dentro del comando /mecanico
PidioMecanico[payerid]=true;
pawn Код:
//dentro del comando /reparar
PidioMecanico[payerid]=false;
pawn Код:
if(PidioMecanico[payerid]==true) return SendClientMessage(playerid, color, "ya pediste mecanico");
pawn Код:
if(PidioMecanico[payerid]==false) return SendClientMessage(playerid, color, "no pediste mecanico");
Posts: 420
Threads: 45
Joined: Jul 2010
Reputation:
0
El comando /reparar lo ejecuta otro usuario, lo que dijiste ya lo tenia realizado lo que me falta es el comando /reparar.
Que no se como hacer el "check" de si el usuario (mecanico) esta cerca de (pidiomecanico)
Posts: 1,779
Threads: 126
Joined: Oct 2010
De ninguna de las maneras, es totalmente imposible segъn la fнsica cuбntica.
Posts: 4,930
Threads: 467
Joined: Dec 2010
pawn Код:
COMMAND:reparar(playerid, params[]){
#define DISTANCIA_MECANICO 8.0
new ReparandoID, Float:pos[3];
if(sscanf(params, "r", ReparandoID)) return SendClientMessage(playerid, -1, "Escribe: /reparar [playerid]");
if(PidioMecanico[ReparandoID]==false) return SendClientMessage(playerid, -1, "el jugador no pidio un mecanico");
GetPlayerPos(ReparandoID,pos]0[,pos]1[,pos]2[);
if(!IsPlayerInRangeOfPoint(playerid, DISTANCIA_MECANICO, pos]0[,pos]1[,pos]2[)) return SendClientMessage(playerid, -1, "el jugador no esta cerca del mecanico (tщ)");
//TU FUNCION
return true;
}
Posts: 420
Threads: 45
Joined: Jul 2010
Reputation:
0
Algo asi, pero de que manera manera podria realizarlo sin colocar la ID del usuario?
Posts: 4,930
Threads: 467
Joined: Dec 2010
pawn Код:
new bool:EsMecanico[MAX_PLAYERS];
new PidioMecanico[MAX_PLAYERS];
pawn Код:
COMMAND:mecanico(playerid, params[])
//TU FUNCION
for(new player, user = GetMaxPlayers(); player != user; player++){
if(!IsPlayerConnected(player)) continue;
if(player==playerid) continue;
if(EsMecanico[player]==true){
PidioMecanico[player]=playerid;//le da una variable a todos los mecanicos con el id del que uso el xomando
}
}
return true;
}
pawn Код:
COMMAND:reparar(playerid, params[])
#define DISTANCIA_MECANICO 8.0
new Float:pos[3];
GetPlayerPos(PidioMecanico[playerid],pos]0[,pos]1[,pos]2[); //chekea la posicion del id que tiene en la variable el jugador que utiliza el comando (el mecanico)
if(!IsPlayerInRangeOfPoint(playerid, DISTANCIA_MECANICO, pos]0[,pos]1[,pos]2[)) return SendClientMessage(playerid, -1, "el jugador cercano, no pidio mecanico (tщ)");
PidioMecanico[playerid]=-1;
return true;
}
Posts: 1,504
Threads: 109
Joined: Jan 2012
Posts: 4,930
Threads: 467
Joined: Dec 2010
Quote:
Originally Posted by Onfroi
|
esta bien...
pero es lo mismo que utilizar IsPlayerInRangeOfPoint, y no es lo que quiere.
saludos.
Posts: 420
Threads: 45
Joined: Jul 2010
Reputation:
0
Bueno intentare comprender el codigo que has dejado jaja
lo que haria con el /mecanico es definir la variable PidioMecanico y cuando un mecanico coloque /reparar hara un chequeo de todos los usuarios que han pedido /mecanico para ver quien esta cerca para repararlo?