13.12.2016, 22:16
Si quieres que el checkpoint sea fijo en el usuario, crea un timer independiente el cual actualice los datos del jugador.
Saludos.
Код:
#define DIALOG_RASTREADOR (1234) // Colocar en los defines. CMD:rastreador(playerid, params[]) // En cualquier parte del GameMode. { return ShowPlayerDialog(playerid, DIALOG_RASTREADOR, DIALOG_STYLE_INPUT, "Computadora", "Aсade la id o el nombre de la persona a rastrear.", "Aceptar", "Cancelar"); } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) // Ajustar йsto a tu GameMode. { switch(dialogid) { case DIALOG_RASTREADOR: { if(!response) return true; if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_RASTREADOR, DIALOG_STYLE_INPUT, "Computadora", "Aсade la id o el nombre de la persona a rastrear.", "Aceptar", "Cancelar"); new Float:x, Float:y, Float:z, string[100]; if(IsNumeric(inputtext)) { new id_jugador = strval(inputtext); if(!IsPlayerConnected(id_jugador)) { SendClientMessage(playerid, -1, "ID invбlida."); return ShowPlayerDialog(playerid, DIALOG_RASTREADOR, DIALOG_STYLE_INPUT, "Computadora", "Aсade la id o el nombre de la persona a rastrear.", "Aceptar", "Cancelar"); } GetPlayerPos(id_jugador, x, y, z); format(string, sizeof(string), "ID Player = %i, X= %f, Y= %f, Z= %f", id_jugador, x, y, z); SendClientMessage(playerid, -1, string); return SetPlayerCheckpoint(playerid, x, y, z, 5.0); } new id_jugador = GetPlayerID(inputtext); if(!IsPlayerConnected(id_jugador)) { SendClientMessage(playerid, -1, "Nombre invбlido."); ShowPlayerDialog(playerid, DIALOG_RASTREADOR, DIALOG_STYLE_INPUT, "Computadora", "Aсade la id o el nombre de la persona a rastrear.", "Aceptar", "Cancelar"); } GetPlayerPos(id_jugador, x, y, z); format(string, sizeof(string), "ID Player = %i, X= %f, Y= %f, Z= %f", id_jugador, x, y, z); SendClientMessage(playerid, -1, string); return SetPlayerCheckpoint(playerid, x, y, z, 5.0); } } return true; } // Lo siguiente aсбdelo a los demбs 'stocks' que tengas en el GameMode, si no usas 'foreach' reemplaza la funciуn por: for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++) stock GetPlayerID(const playername[]) { foreach(new i : Player) { if(strcmp(Nombre(i), playername, true, strlen(playername)) == 0) { return i; } } return INVALID_PLAYER_ID; } stock Nombre(playerid) { new Name[MAX_PLAYER_NAME]; GetPlayerName(playerid, Name, MAX_PLAYER_NAME); return Name; } stock IsNumeric(const cadena[]) { for (new i = 0, j = strlen(cadena); i < j; i++) { if (cadena[i] > '9' || cadena[i] < '0') return 0; } return true; }