Error 035: argument type mismatch (argument 2)

Moderador: Ayudantes

Cerrado
GhostGen
Aprendiz
Aprendiz
Mensajes: 53
Registrado: 15 Feb 2017 14:19
Reputación: 0

14 Ene 2019 00:00

¡Hey, hola comunidad de pawn script! Estuve intetando e intentando solucionar dos errores que me tira cuando compilo este sistema de la GM de GC que modifiqué para que sea muy parecido al del .es.
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

CMD:vercoche(playerid, params[]) {
    if (!Es_Faccion(playerid, 1)) return _Mensaje(playerid, 0, "165", "No formas parte de la facción Defensa.");
	if (EnServicioPD[playerid] == 0) return _Mensaje(playerid, 0, "166", "No estás en servicio.");
    if (isnull(params)) return _Mensaje(playerid, 3, "0", "/vercoche [ID vehículo]");
    if (!isnumeric(params)) return _Mensaje(playerid, 0, "43", "Sólo números por favor, vuelve a intentarlo.");
    new string[128], idjugador, vehicleid = strval(params);
    for (new v = 0; v < MAX_VEHICULOS; v++) {
    	if(InfoVehiculo[v][vID] == vehicleid) {
     		Mensaje_(playerid, "Conectas la PDA con la Base de Datos. El dueño del vehículo es %s (LLAVE: %d - MATRÍCULA: LS-%d)", InfoVehiculo[v][vDueno], InfoVehiculo[v][vID], InfoVehiculo[v][vLlave]);
       		Mensaje_(playerid, "Jugador conectado (ID: %d). Su teléfono es: %d", string, user[idjugador][jTelefono]);
       		return 1;
         }
    }
    return 1;
}
  Cantidad de llaves: Abiertas(3)-Cerradas(3) | Lineas Totales: 15
La línea que tira error es la 9 y 10. El error que tira es: "error 035: argument type mismatch (argument 2)" en las dos líneas que mencione. Espero una ayuda pronta, gracias. Sé que es algo básico, pero poco a poco estoy aprendiendo.
Alex_Valles
Aprendiz
Aprendiz
Mensajes: 24
Registrado: 18 Dic 2018 22:27
Reputación: 0

14 Ene 2019 02:15

Supondré que Mensaje_ hace referencia a SendClientMessage en este caso el argumento de esas líneas son incorrectas y te diré porqué.

En la función de SendClientMessage se estructura así, (playerid, color, const message) cuando tú estás estructurando Mensaje_ de esta manera, (playerid, const message), lo que te faltaría agregar sería el color, en todo caso iría de esta manera:

 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

CMD:vercoche(playerid, params[]) {
    if (!Es_Faccion(playerid, 1)) return _Mensaje(playerid, 0, "165", "No formas parte de la facción Defensa.");
	if (EnServicioPD[playerid] == 0) return _Mensaje(playerid, 0, "166", "No estás en servicio.");
    if (isnull(params)) return _Mensaje(playerid, 3, "0", "/vercoche [ID vehículo]");
    if (!isnumeric(params)) return _Mensaje(playerid, 0, "43", "Sólo números por favor, vuelve a intentarlo.");
    new string[128], idjugador, vehicleid = strval(params);
    for (new v = 0; v < MAX_VEHICULOS; v++) {
    	if(InfoVehiculo[v][vID] == vehicleid) {
     		Mensaje_(playerid, -1, "Conectas la PDA con la Base de Datos. El dueño del vehículo es %s (LLAVE: %d - MATRÍCULA: LS-%d)", InfoVehiculo[v][vDueno], InfoVehiculo[v][vID], InfoVehiculo[v][vLlave]); // En el -1 lo puedes cambiar a cualquier color definido en tu gamemode ej: COLOR_WHITE 
       		Mensaje_(playerid, -1,"Jugador conectado (ID: %d). Su teléfono es: %d", string, user[idjugador][jTelefono]);// Lo mismo acá
       		return 1;
         }
    }
    return 1;
}
  Cantidad de llaves: Abiertas(3)-Cerradas(3) | Lineas Totales: 15
GhostGen
Aprendiz
Aprendiz
Mensajes: 53
Registrado: 15 Feb 2017 14:19
Reputación: 0

14 Ene 2019 17:17

Alex_Valles escribió:
14 Ene 2019 02:15
Supondré que Mensaje_ hace referencia a SendClientMessage en este caso el argumento de esas líneas son incorrectas y te diré porqué.

En la función de SendClientMessage se estructura así, (playerid, color, const message) cuando tú estás estructurando Mensaje_ de esta manera, (playerid, const message), lo que te faltaría agregar sería el color, en todo caso iría de esta manera:

 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

CMD:vercoche(playerid, params[]) {
    if (!Es_Faccion(playerid, 1)) return _Mensaje(playerid, 0, "165", "No formas parte de la facción Defensa.");
	if (EnServicioPD[playerid] == 0) return _Mensaje(playerid, 0, "166", "No estás en servicio.");
    if (isnull(params)) return _Mensaje(playerid, 3, "0", "/vercoche [ID vehículo]");
    if (!isnumeric(params)) return _Mensaje(playerid, 0, "43", "Sólo números por favor, vuelve a intentarlo.");
    new string[128], idjugador, vehicleid = strval(params);
    for (new v = 0; v < MAX_VEHICULOS; v++) {
    	if(InfoVehiculo[v][vID] == vehicleid) {
     		Mensaje_(playerid, -1, "Conectas la PDA con la Base de Datos. El dueño del vehículo es %s (LLAVE: %d - MATRÍCULA: LS-%d)", InfoVehiculo[v][vDueno], InfoVehiculo[v][vID], InfoVehiculo[v][vLlave]); // En el -1 lo puedes cambiar a cualquier color definido en tu gamemode ej: COLOR_WHITE 
       		Mensaje_(playerid, -1,"Jugador conectado (ID: %d). Su teléfono es: %d", string, user[idjugador][jTelefono]);// Lo mismo acá
       		return 1;
         }
    }
    return 1;
}
  Cantidad de llaves: Abiertas(3)-Cerradas(3) | Lineas Totales: 15
Ahhh, claaro. No me había fijado, pruebo y te digo.
GhostGen
Aprendiz
Aprendiz
Mensajes: 53
Registrado: 15 Feb 2017 14:19
Reputación: 0

16 Ene 2019 00:26

El problema se solucionó, pero saltaron cinco warnings.

 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

CMD:vermatricula(playerid, params[]) {
    if (!Es_Faccion(playerid, 1)) return _Mensaje(playerid, 0, "165", "No formas parte de la Ley.");
	if (EnServicioPD[playerid] == 0) return _Mensaje(playerid, 0, "166", "No estas en servicio.");
    if (isnull(params)) return _Mensaje(playerid, 3, "0", "/vercoche [ID vehículo]");
    if (!isnumeric(params)) return _Mensaje(playerid, 0, "43", "Sólo números por favor, vuelve a intentarlo.");
    new string[128], idjugador, vehicleid = strval(params);
    for (new v = 0; v < MAX_VEHICULOS; v++) {
    	if(InfoVehiculo[v][vID] == vehicleid) {
     		Mensaje_(playerid, -1, "Conectas la PDA con la Base de Datos. El dueño del vehículo es %s (LLAVE: %d - MATRÍCULA: LS-%d)", InfoVehiculo[v][vDueno], InfoVehiculo[v][vID], InfoVehiculo[v][vLlave]);
     		Mensaje_(playerid, -1, "Jugador conectado (ID: %d). Su teléfono es: %d", string, user[idjugador][jTelefono]);
       		return 1;
        }
    }
    return 1;
}
  Cantidad de llaves: Abiertas(3)-Cerradas(3) | Lineas Totales: 15
 Codigo Pawno:
1
2
3
4
5

(9) : warning 202: number of arguments does not match definition
(9) : warning 202: number of arguments does not match definition
(9) : warning 202: number of arguments does not match definition
(10) : warning 202: number of arguments does not match definition
(10) : warning 202: number of arguments does not match definition
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 5
FedericoCacace
Aprendiz
Aprendiz
Mensajes: 209
Registrado: 13 Oct 2018 20:57
Reputación: 5

16 Ene 2019 07:40

Por el momento deberás crear una variable, usar un format y enviarla.
Pero envianos la función "mensaje_" para ver que anda mal.
Aportes: Metas cumplidas:
Spoiler:
Scripter nivel Medio/Básico
Metas a cumplir:
Spoiler:
Web Master
Developer Android
Mapper
Avatar de Usuario
MrDave
Senior
Senior
Mensajes: 753
Registrado: 05 Oct 2017 12:13
Reputación: 87

16 Ene 2019 16:05

Spoiler:
GhostGen escribió:
16 Ene 2019 00:26
El problema se solucionó, pero saltaron cinco warnings.

 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

CMD:vermatricula(playerid, params[]) {
    if (!Es_Faccion(playerid, 1)) return _Mensaje(playerid, 0, "165", "No formas parte de la Ley.");
	if (EnServicioPD[playerid] == 0) return _Mensaje(playerid, 0, "166", "No estas en servicio.");
    if (isnull(params)) return _Mensaje(playerid, 3, "0", "/vercoche [ID vehículo]");
    if (!isnumeric(params)) return _Mensaje(playerid, 0, "43", "Sólo números por favor, vuelve a intentarlo.");
    new string[128], idjugador, vehicleid = strval(params);
    for (new v = 0; v < MAX_VEHICULOS; v++) {
    	if(InfoVehiculo[v][vID] == vehicleid) {
     		Mensaje_(playerid, -1, "Conectas la PDA con la Base de Datos. El dueño del vehículo es %s (LLAVE: %d - MATRÍCULA: LS-%d)", InfoVehiculo[v][vDueno], InfoVehiculo[v][vID], InfoVehiculo[v][vLlave]);
     		Mensaje_(playerid, -1, "Jugador conectado (ID: %d). Su teléfono es: %d", string, user[idjugador][jTelefono]);
       		return 1;
        }
    }
    return 1;
}
  Cantidad de llaves: Abiertas(3)-Cerradas(3) | Lineas Totales: 15
 Codigo Pawno:
1
2
3
4
5

(9) : warning 202: number of arguments does not match definition
(9) : warning 202: number of arguments does not match definition
(9) : warning 202: number of arguments does not match definition
(10) : warning 202: number of arguments does not match definition
(10) : warning 202: number of arguments does not match definition
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 5

El mismo compilador te lo dice todo. Sólo es cuestión de coger el traductor y entender lo que dice.
La advertencia se da porqué la cantidad de argumentos que estás pasando a la función al momento de invocarla/llamarla no coincide con la definición/implementación.
Te doy un ejemplo práctico:
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12

#include <a_samp>

myfunction(Float:x, Float:y, Float:z) 
{
	//code
	return 1;
}

main()
{
	myfunction(2.0, 1.0); //WARNING
}
  Cantidad de llaves: Abiertas(2)-Cerradas(2) | Lineas Totales: 12

La subrutina "myfunction" en sí toma 3 parámetros y lo que estoy pasando son 2 argumentos, ahí te dará una advertencia. Lo mismo pasaría si paso 4 argumentos a la subrutina "myfunction", dará "warning".
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12

#include <a_samp>

myfunction(Float:x, Float:y, Float:z)
{
	//code
	return 1;
}

main()
{
	myfunction(2.0, 1.0, 0.5, 0.3); //WARNING
}
  Cantidad de llaves: Abiertas(2)-Cerradas(2) | Lineas Totales: 12

Solución:
Cuando llames a la función debes pasar los argumentos exactos de la función, en este caso deberían ser 3.
GhostGen
Aprendiz
Aprendiz
Mensajes: 53
Registrado: 15 Feb 2017 14:19
Reputación: 0

16 Ene 2019 20:57

Spoiler:
MrDave escribió:
16 Ene 2019 16:05

El mismo compilador te lo dice todo. Sólo es cuestión de coger el traductor y entender lo que dice.
La advertencia se da porqué la cantidad de argumentos que estás pasando a la función al momento de invocarla/llamarla no coincide con la definición/implementación.
Te doy un ejemplo práctico:
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12

#include <a_samp>

myfunction(Float:x, Float:y, Float:z) 
{
	//code
	return 1;
}

main()
{
	myfunction(2.0, 1.0); //WARNING
}
  Cantidad de llaves: Abiertas(2)-Cerradas(2) | Lineas Totales: 12

La subrutina "myfunction" en sí toma 3 parámetros y lo que estoy pasando son 2 argumentos, ahí te dará una advertencia. Lo mismo pasaría si paso 4 argumentos a la subrutina "myfunction", dará "warning".
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12

#include <a_samp>

myfunction(Float:x, Float:y, Float:z)
{
	//code
	return 1;
}

main()
{
	myfunction(2.0, 1.0, 0.5, 0.3); //WARNING
}
  Cantidad de llaves: Abiertas(2)-Cerradas(2) | Lineas Totales: 12

Solución:
Cuando llames a la función debes pasar los argumentos exactos de la función, en este caso deberían ser 3.
Ahhh, ya entendí. Déjame probar y te aviso qué tal. Había traducido, pero no entendía bien a lo que se refería.
GhostGen
Aprendiz
Aprendiz
Mensajes: 53
Registrado: 15 Feb 2017 14:19
Reputación: 0

17 Ene 2019 13:34

@MrDave Lo solucioné, gracias.

Quedó así sin errores ni warnings:
 Codigo Pawno:
1
2
3
4

     		format(string, sizeof(string), "Conectas la PDA con la Base de Datos. El dueño del vehículo es %s (LLAVE: %d - MATRÍCULA: LS-%d)", InfoVehiculo[v][vDueno], InfoVehiculo[v][vID], InfoVehiculo[v][vLlave]);
     		Mensaje_(playerid, C_LIGHTBLUE, string);
     		format(string, sizeof(string), "Jugador conectado (ID: %d). Su teléfono es: %d", idjugador, user[idjugador][jTelefono]);
     		Mensaje_(playerid, C_LIGHTBLUE, string);
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 4
PUEDEN CERRAR TEMA.
Avatar de Usuario
#Fede
Moderador a Prueba
Moderador a Prueba
Mensajes: 2943
Registrado: 12 Ene 2015 06:32
Ubicación: Montevideo, Uruguay.
Reputación: 65

17 Ene 2019 15:56

GhostGen escribió:
17 Ene 2019 13:34
@MrDave Lo solucioné, gracias.

Quedó así sin errores ni warnings:
 Codigo Pawno:
1
2
3
4

     		format(string, sizeof(string), "Conectas la PDA con la Base de Datos. El dueño del vehículo es %s (LLAVE: %d - MATRÍCULA: LS-%d)", InfoVehiculo[v][vDueno], InfoVehiculo[v][vID], InfoVehiculo[v][vLlave]);
     		Mensaje_(playerid, C_LIGHTBLUE, string);
     		format(string, sizeof(string), "Jugador conectado (ID: %d). Su teléfono es: %d", idjugador, user[idjugador][jTelefono]);
     		Mensaje_(playerid, C_LIGHTBLUE, string);
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 4
PUEDEN CERRAR TEMA.
Te recomiendo leer las reglas del foro, has infringido dos veces la regla #M2.

Por ser tu primera vez infringiendo una regla, no recibiras una advertencia, pero esto no sera así si vuelves a hacerlo en el futuro.
https://pawnscript.com/foro/rules#M2

Cierro

No doy soporte mediante mensaje privado, para eso están las secciones de Preguntas o Pedidos


scriptnoob escribió:Cada día se va mejorando el foro, nuestro objetivo es como el de una empresa:

Misión: Brindar ayuda y aportes a los usuarios.
Visión: Ser la página de mayor calidad de servicio de soporte referidos a lenguajes de programación.
Lee las reglas del foro para evitar ser sancionado




Cerrado