warning 213: tag mismatch
#1

pawn Код:
public GetPlayerScoreEx(playerid)
{
    new Float:score;
    score = PlayersData[playerid][Puntos] / 10;
    floatround(score, floatround_round);
    return score; // Lнnea del error
}
Error: warning 213: tag mismatch

Lo que quiero hacer es redondear el Float:score y retornarlo en la funciуn como un integer ya redondeado.

Gracias.
Reply
#2

No veo nada mal. їhas definido "Puntos" como entero?.

Hice una prueba & no me mostrу ningъn problema.

pawn Код:
enum Info
{
    Puntos,
};
new PlayersData[MAX_PLAYERS][Info];

stock GetPlayerScoreEx(playerid)
{
    new Float:score;
    score = PlayersData[playerid][Puntos] / 10;
    floatround(score, floatround_round);
    return score;
}
Reply
#3

Si, lo tengo asн:

pawn Код:
enum DataUsers
{
    Dinero,
    Admin,
    Puntos,
    Score
}
new PlayersData[MAX_PLAYERS][DataUsers];
Reply
#4

pawn Код:
enum DataUsers
{
    Dinero,
    Admin,
    Puntos,
    Score
}
new PlayersData[MAX_PLAYERS][DataUsers];

forward Float:GetPlayerScoreEx(playerid);
public Float:GetPlayerScoreEx(playerid)
{
    new Float:score;
    score = PlayersData[playerid][Puntos] / 10;
    floatround(score, floatround_round);
    return score; // Lнnea del error
}
Probй y compilo, tambiйn me dн cuenta que si en lugar del forward lo haces stock compila sin necesidad de agregarle Float al inicio de la funciуn
Reply
#5

cambia "public" por "stock".

EDIT: lol enviй el mensaje al mismo tiempo, disculpa creo que el problema estб en eso, lo de cambiar Float: quizб sea depende de la funcionalidad que le vaya a tomar.
Reply
#6

Pero tengo entendido que se aсadirнa el tag Float a la funciуn si esta retorna un valor del tipo Float, y floatround se supone que retorna un valor tipo Integer. їAlguien me explica esto por favor?

EDIT: He probado aсadiendo el tag Float a la funciуn y al forward y me sale ahora el mismo error en los lugares donde hago uso de la funciуn. Tambiйn he probado a poner la funciуn como stock y me sale el mismo error.
Reply
#7

Quote:
Originally Posted by unuky
Посмотреть сообщение
Pero tengo entendido que se aсadirнa el tag Float a la funciуn si esta retorna un valor del tipo Float, y floatround se supone que retorna un valor tipo Integer. їAlguien me explica esto por favor?
Mira esto que hice:



pawn Код:
stock Vida0(playerid)
{
    new Float:HP;
    GetPlayerHealth(playerid, HP);
    return _:HP;
}

stock Float:Vida1(playerid)
{
    new Float:HP;
    GetPlayerHealth(playerid, HP);
    return HP;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    new string[128];
    if (strcmp("/mivida", cmdtext, true, 10) == 0)
    {
        format(string, sizeof(string), "Float: Vida0 > %f, Vida1 > %f - Entero: Vida0 > %d, Vida1 > %d", Vida0(playerid), Vida1(playerid), Vida0(playerid), Vida1(playerid));
        SendClientMessage(playerid, -1, string);
        return 1;
    }
    return 0;
}
Respecto a tu ediciуn, ponlo asн como te lo puse mбs arriba y como ves aquн, segъn tu preferencia . siempre retornarб un flotante aunque no le pongas tag al stock creo yo.
Reply
#8

Me funcionу al aсadirle _: a lo que retorno, muchas gracias.
Reply
#9

Mencionarй tu error:

pawn Код:
public GetPlayerScoreEx(playerid)
{
    new Float:score; // Declararemos que 'score' serб flotante.
    score = PlayersData[playerid][Puntos] / 10;
    floatround(score, floatround_round); // Aquн haremos que 'score' sea un entero.
    return score; // Retornamos 'score', peeeero, como la funciуn no tiene el tag 'Float', pero la variable sн, darб errores.
}

Al usar 'floatround' no declararбs que el compilador tomarб esa variable como flotante, por lo que darб error.

Soluciуn:


pawn Код:
stock GetPlayerScoreEx(playerid) // Ya sea 'public' o 'stock', siempre serб el mismo cуdigo. No cambia errores.
{
    return floatround(PlayersData[playerid][Puntos]/10);
}
O mбs simple:

pawn Код:
#define GetPlayerScoreEx(%1) floatround(PlayersData[%1][Puntos]/10)

Es solo simple lуgica.
Reply
#10

Quote:
Originally Posted by EnzoMetlc
Посмотреть сообщение
Mencionarй tu error:

pawn Код:
public GetPlayerScoreEx(playerid)
{
    new Float:score; // Declararemos que 'score' serб flotante.
    score = PlayersData[playerid][Puntos] / 10;
    floatround(score, floatround_round); // Aquн haremos que 'score' sea un entero.
    return score; // Retornamos 'score', peeeero, como la funciуn no tiene el tag 'Float', pero la variable sн, darб errores.
}

Al usar 'floatround' no declararбs que el compilador tomarб esa variable como flotante, por lo que darб error.

Soluciуn:


pawn Код:
stock GetPlayerScoreEx(playerid) // Ya sea 'public' o 'stock', siempre serб el mismo cуdigo. No cambia errores.
{
    return floatround(PlayersData[playerid][Puntos]/10);
}
O mбs simple:

pawn Код:
#define GetPlayerScoreEx(%1) floatround(PlayersData[playerid][Puntos]/10)

Es solo simple lуgica.
Код:
#define GetPlayerScoreEx(%1) floatround(PlayersData[playerid][Puntos]/10)
Код:
#define GetPlayerScoreEx(%0) floatround(PlayersData[%0][Puntos]/10)
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)