їDe que manera podria realizar esto?
#1

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
Reply
#2

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");
Reply
#3

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)
Reply
#4

De ninguna de las maneras, es totalmente imposible segъn la fнsica cuбntica.
Reply
#5

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;
}
Reply
#6

Algo asi, pero de que manera manera podria realizarlo sin colocar la ID del usuario?
Reply
#7

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;
}
Reply
#8

Usa esta funcion: https://sampforum.blast.hk/showthread.php?tid=234561
Reply
#9

Quote:
Originally Posted by Onfroi
Посмотреть сообщение

esta bien...

pero es lo mismo que utilizar IsPlayerInRangeOfPoint, y no es lo que quiere.
saludos.
Reply
#10

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?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)