[Duda] Variable
#1

Hola a todos, querнa saber cуmo puedo asignar valores a un dato de un enum, es decir, yo tengo el enum asн:

pawn Код:
enum PlayerInfo
{
  pKills,
  pDeaths,
  pRank
}
Y querнa saber cуmo hacer para asignarle X valor a pRank segъn el nъmero de score que tenga el jugador, para posteriormente setear el rango usando esa variable en un format.

pawn Код:
format(string, sizeof(string), "%s", pInfo[i][pRank]);
En definitiva, si el jugador tienen 1500 de score que el rango sea X y si tiene 2000 que sea Y.
Reply
#2

En primera, si su rango va a ser una palabra, debes usar

pawn Код:
enum PlayerInfo
{
  pKills,
  pDeaths,
  pRank[16]
}
Recordando que las variables de texto requieren un espacio de memoria por caracter, si solo quieres que sea en numero pues;

pawn Код:
rango[i] = pInfo[i][pRank]);
y luego podrias usar un switch para ajustar el rango

pawn Код:
switch(rango[i])
{
    case 100: blabla // 100 de rango
}
Reply
#3

Quote:
Originally Posted by xSDx
Посмотреть сообщение
En primera, si su rango va a ser una palabra, debes usar

pawn Код:
enum PlayerInfo
{
  pKills,
  pDeaths,
  pRank[16]
}
es verdad, pero como los rangos van a ser iguales para todos los jugadores, mejor se crea otro array que contenga los rangos para no desperdiciar memoria
pawn Код:
#define RANGO_NOVATO        0
#define RANGO_RECLUTA       1
#define RANGO_APRENDIZ      2

new const Rangos[][] = {
    {"Novato"},{"Recluta"},{"Aprendiz"}
};


ActualizarRango(playerid) {
    switch(GetPlayerScore(playerid)) {
        case 0..1500: {
            pInfo[playerid][pRank] = RANGO_NOVATO;
        }
        case 1501..2000: {
            pInfo[playerid][pRank] = RANGO_RECLUTA;
        }
        case 2001..3000: {
            pInfo[playerid][pRank] = RANGO_APRENDIZ;
        }
    }
    new string[128];
    format(string,sizeof(string),"Tu rango es %s",Rangos[pInfo[playerid][pRank]]);
    //Aqui ya puedes utilizar string
}
Reply
#4

Daniel, lo hice siguiendo el modelo que me pasaste, pero cuando compilo el compilador no responde y tengo que cerrar pawno :/
Reply
#5

Quote:
Originally Posted by Loox
Посмотреть сообщение
Daniel, lo hice siguiendo el modelo que me pasaste, pero cuando compilo el compilador no responde y tengo que cerrar pawno :/
alguna llave has de haber dejado abierta, lo acabo de compilar y compila bien.
Reply
#6

No te entendн un carajo pero segъn dicen en los comentarios quieres que segъn el puntaje que tenga se le asigne un rango. Antes de dejarte el cуdigo te pregunto, que quieres que tenga el usuario segъn el rango? armas? dinero al matar a alguien? que cosa? Segъn lo que quieras, puedes hacer el cуdigo mas rбpido.
Reply
#7

En realidad es mucho mбs fбcil de lo que parece, si guardas los datos del jugador hasta te ahorras una variable de la siguiente manera:
pawn Код:
enum PlayerInfo
{
  pKills,
  pDeaths,
  pScore //Aquн almacenaremos el SCORE del jugador.
}
pawn Код:
public OnPlayerUpdate(playerid) {
    pInfo[playerid][pScore] = GetPlayerScore(playerid);
    /* No pasa nada por usar OnPlayerUpdate, aclaro que
    esto aquн esto aquн sirve para un sistema de guardado y cargado.
    Si no dispones de uno esto no es realmente necesario, pero aquн lo tienes. */

    return 1;
}
pawn Код:
format(string, sizeof(string), "%s", RangoJugador(playerid));
/* Como habrбs visto, tenemos una funciуn que no existe, asн que la vamos a crear: RangoJugador */
pawn Код:
stock RangoJugador(playerid) {
    new rango[24];
    switch(GetPlayerScore(playerid))
    {
       case 0:          rango = "Fantasma";
       case 1 .. 100:   rango = "Novato";
       case 101 .. 200: rango = "Aprendiz";
       case 201 .. 300: rango = "Profesional";
       default:         rango = "Maestro";
    }
    return rango;
}

/*
case 0:          rango = "Fantasma";
Si su SCORE es EXACTAMENTE 0 serб Fantasma, pero tiene que ser 0, ni mбs ni menos.

case 1 .. 100: rango = "Novato";
Eso significa que si el SCORE estб entre 1 y 100 su rango serб Novato. Los valores 1 y 100 tambiйn se incluyen en la comprobaciуn.

default:         rango = "Maestro";
Si el SCORE no estб en ninguna de las comprobaciones realizadas, su rango serб Maestro, esto serнa como el rango mбximo.
*/
Saludos.
Reply
#8

Quote:
Originally Posted by [DOG]irinel1996
Посмотреть сообщение
En realidad es mucho mбs fбcil de lo que parece, si guardas los datos del jugador hasta te ahorras una variable de la siguiente manera:
pawn Код:
enum PlayerInfo
{
  pKills,
  pDeaths,
  pScore //Aquн almacenaremos el SCORE del jugador.
}
pawn Код:
public OnPlayerUpdate(playerid) {
    pInfo[playerid][pScore] = GetPlayerScore(playerid);
    /* No pasa nada por usar OnPlayerUpdate, aclaro que
    esto aquн esto aquн sirve para un sistema de guardado y cargado.
    Si no dispones de uno esto no es realmente necesario, pero aquн lo tienes. */

    return 1;
}
pawn Код:
format(string, sizeof(string), "%s", RangoJugador(playerid));
/* Como habrбs visto, tenemos una funciуn que no existe, asн que la vamos a crear: RangoJugador */
pawn Код:
stock RangoJugador(playerid) {
    new rango[24];
    switch(GetPlayerScore(playerid))
    {
       case 0:          rango = "Fantasma";
       case 1 .. 100:   rango = "Novato";
       case 101 .. 200: rango = "Aprendiz";
       case 201 .. 300: rango = "Profesional";
       default:         rango = "Maestro";
    }
    return rango;
}

/*
case 0:          rango = "Fantasma";
Si su SCORE es EXACTAMENTE 0 serб Fantasma, pero tiene que ser 0, ni mбs ni menos.

case 1 .. 100: rango = "Novato";
Eso significa que si el SCORE estб entre 1 y 100 su rango serб Novato. Los valores 1 y 100 tambiйn se incluyen en la comprobaciуn.

default:         rango = "Maestro";
Si el SCORE no estб en ninguna de las comprobaciones realizadas, su rango serб Maestro, esto serнa como el rango mбximo.
*/
Saludos.
A mi parecer ese es un mal uso de la callback OnPlayerUpdate, puedes hacerlo en OnPlayerDeath o en donde le des score.

Saludos.
Reply
#9

Gracias a todos, ya lo solucionй, muchas gracias <3
Reply
#10

xSDx, asignar a una variable un valor es EXTREMADAMENTE rбpмdo, podйs cambiar 50000 y no te tarda ni 1MS.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)