Me pueden ayudar con esto?
#1

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

No entendн bien lo que queres hacer, podrнas dar mбs detalle?
Reply
#3

O sea quieres que cree un checkpoint y te salga en el dialogo?
Reply
#4

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

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.
Reply
#6

Oye Finn, al compilar no me deja :/, dice que dejo de funcionar :c
Reply
#7

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.
Reply
#8

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.. :/
Reply
#9

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.
Reply
#10

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


Forum Jump:


Users browsing this thread: 1 Guest(s)