Me pueden ayudar con esto? -
SilverGaming - 13.12.2016
Hola forum samp :3, queria saber si me pueden ayudar en algo que ya he intentado por mas de 1 hora :/, pero como soy bastante malo ps.. Bueno lo que quiero hacer es lo siguiente
Utilizen el comando "/rastreador" y se les muestre un dialogo, que es el siguiente.
Код:
CMD:rastreador(playerid, params[]) // Aqui ponen el comando que quieran, Cambien el " SuComando "
{
ShowPlayerDialog(playerid, 5611, DIALOG_STYLE_LIST, "Computadora", str, "Aceptar", "Cancelar");
return 1;
}
Lo que quiero es, que al precionar "Rastrear jugador" se realize lo siguiente
Код:
new player;
if (!sscanf(params, "u", player)) //Deberias usar SSCANF
{
new Float:x, Float:y, Float:z, string[100];
GetPlayerPos(player, x, y, z);
format(string, sizeof(string), "ID Player= %i, X= %f, Y= %f, Z= %f", player, x, y, z);
SendClientMessage(playerid,-1,string);
SetPlayerCheckpoint(playerid, x, y, z, 5.0);
Muchas gracias :3, y si es posible que me ayuden con los otros cases xd. Weno no pido mas
FELIZ NAVIDAD ADELTANDA A TODOS XD
Re: Me pueden ayudar con esto? -
Swedky - 13.12.2016
No entendн bien lo que queres hacer, podrнas dar mбs detalle?
Re: Me pueden ayudar con esto? -
BrianFaria - 13.12.2016
O sea quieres que cree un checkpoint y te salga en el dialogo?
Re: Me pueden ayudar con esto? -
SilverGaming - 13.12.2016
No lo que quiero es que al clickear "Rastrear jugador" que se encuentra en el dialogo, se ejecute esa funcion, bueno es decir, que te aparezca otro dialogo, el cual diga "Introduce la id" y por ejemplo pones "0" entoncs rastrea el jugador 0.. Porfavor ayudenme :c
Re: Me pueden ayudar con esto? -
Unrea1 - 13.12.2016
Si quieres que el checkpoint sea fijo en el usuario, crea un
timer independiente el cual actualice los datos del jugador.
Код:
#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;
}
Saludos.
Re: Me pueden ayudar con esto? -
SilverGaming - 13.12.2016
Oye Finn, al compilar no me deja :/, dice que dejo de funcionar :c
Re: Me pueden ayudar con esto? -
Unrea1 - 13.12.2016
Editй el mensaje de mбs arriba, lo compilй y va bien, si te marca errores estбs haciendo algo mal, fнjate en los mensajes que dejй '//' en el cуdigo.
Re: Me pueden ayudar con esto? -
SilverGaming - 13.12.2016
Nose no me sale nada de error ni nada, sino simplemente, le doy a compilar y luego me aparece "Pawn Compiler dejo de funcionar", le doy aceptar y obviamente se cierra y no compila.. :/
Re: Me pueden ayudar con esto? -
Unrea1 - 13.12.2016
A ver, el cуdigo no sуlo es copiar y pegar, tienes que verificar que los '
stocks' no existan en tu GameMode, al igual que
OnDialogResponse, si existen pues no copies los
stocks que coloquй, y si tienes
OnDialogResponse pues tendrбs que adaptarlo, si no usas '
switch' para detectar el dialog pues cбmbialo a
if(dialogid == DIALOG_RASTREADOR), si no haces caso a lo mencionado no hay forma de ayudarte entonces... Saludos.
Re: Me pueden ayudar con esto? -
SilverGaming - 13.12.2016
Si vale ya me di cuenta de que hay un "stock" repetido, el cual es stock IsNumeric(string[]){
Que contiene lo siguiente
Код:
stock IsNumeric(string[]){
for (new i = 0, j = strlen(string); i < j; i++){
if (string[i] > '9' || string[i] < '0') return 0;
}
return 1;
}
Si cambio el nombre no ocurre nada? es decir no se colapsa el codigo ni nada :3?