SA-MP Forums Archive
Me pueden ayudar con esto? - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: Me pueden ayudar con esto? (/showthread.php?tid=624287)



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?