como creo un sistema de niveles por score/puntaje? -
Software - 05.04.2011
quisiera saver como crear un sistema basico de niveles por score/puntaje, por ejem: -Novato 0 score, -Amateur 150 score, -Semi-Profesional 300 score, -Profesional 500 score, -Semi-Master 750 score y -Master con 1000 score si alguien save como crear un sistema asi, que me explique como, he buscado sistemas de niveles/rangos basicos pero todos son por Time y con premios.
Agradesco su ayuda
Respuesta: como creo un sistema de niveles por score/puntaje? -
TheChaoz - 05.04.2011
crea variables y segun quieras que suba el nivel (kills, tiempo, experiencia) subis el valor de esa variable. si queres q cuando se cierre el sv se guarden los datos, entonces guardalos en un archivo.
Re: como creo un sistema de niveles por score/puntaje? -
MrDeath537 - 05.04.2011
pawn Код:
// ARRIBA DE TODO
enum
e_NivelesInfo
{
e_NI_Name[32],
e_NI_Score
};
new
g_aNivelesInfo[][e_NivelesInfo] =
{
// NombreDelRango, Score necesario
"Novato", 0,
"Amateur", 150,
"Semi-Profesional", 300,
"Profesional", 500,
"Semi-Master", 750,
"Master", 1000
};
// FUNCION
stock
CheckForLevel(playerid)
{
new
iScore = GetPlayerScore(playerid),
iPos;
for (iPos = sizeof (g_iNivelesInfo); iPos > 0; iPos --)
if (iScore >= g_iNivelesInfo[iPos][e_NI_Score])
return 1;
return 0;
}
stock
GetPlayerLevelName(playerid, name[], size = 32)
{
new
iPos,
iLevel;
for (new iPos = sizeof (g_iNivelesInfo); iPos > 0; iPos --)
if (iScore >= g_iNivelesInfo[iPos][e_NI_Score])
{
iLevel = iPos;
break;
}
strins(name, g_iNivelesInfo[iLevel][e_NI_Name], 0, size);
return 1;
}
En la variable g_iNivelesInfo agregбs los niveles con los score como estб en el comentario.
La funciуn CheckForLevel retorna 1 si el jugador tiene score suficiente para algun rango.
La funciуn GetPlayerLevelName funciona como GetPlayerName y retorna el nivel del jugador.
Es un sistema simple que acabo de hacerte XD
Respuesta: Re: como creo un sistema de niveles por score/puntaje? -
TheChaoz - 05.04.2011
Quote:
Originally Posted by MrDeath537
pawn Код:
// ARRIBA DE TODO enum e_NivelesInfo { e_NI_Name[32], e_NI_Score };
new g_aNivelesInfo[][e_NivelesInfo] = { // NombreDelRango, Score necesario "Novato", 0, "Amateur", 150, "Semi-Profesional", 300, "Profesional", 500, "Semi-Master", 750, "Master", 1000 };
// FUNCION stock CheckForLevel(playerid) { new iScore = GetPlayerScore(playerid), iPos;
for (iPos = sizeof (g_iNivelesInfo); iPos > 0; iPos --) if (iScore >= g_iNivelesInfo[iPos][e_NI_Score]) return 1;
return 0; }
stock GetPlayerLevelName(playerid, name[], size = 32) { new iPos, iLevel;
for (new iPos = sizeof (g_iNivelesInfo); iPos > 0; iPos --) if (iScore >= g_iNivelesInfo[iPos][e_NI_Score]) { iLevel = iPos; break; }
strins(name, g_iNivelesInfo[iLevel][e_NI_Name], 0, size);
return 1; }
En la variable g_iNivelesInfo agregбs los niveles con los score como estб en el comentario.
La funciуn CheckForLevel retorna 1 si el jugador tiene score suficiente para algun rango.
La funciуn GetPlayerLevelName funciona como GetPlayerName y retorna el nivel del jugador.
Es un sistema simple que acabo de hacerte XD
|
explicale el codigo chavon no va a entender un carajo... sabes q no todos lo entienden raton...
Respuesta: Re: como creo un sistema de niveles por score/puntaje? -
Software - 05.04.2011
Quote:
Originally Posted by the_chaoz
explicale el codigo chavon no va a entender un carajo... sabes q no todos lo entienden raton...
|
ehh, si entendi todo solo que no savia como hacer el sistema ya que hace 1 aсo que estava ausente de pwn
Muchas gracias por sus respuestas!, pero como hago para saver cual es mi rango usando la funcion "g_aNivelesInfo" en un comando como /rank??
Re: como creo un sistema de niveles por score/puntaje? -
Miguel - 05.04.2011
g_aNivelesInfo no es una funciуn, es una matriz conteniendo dos cosas las cuales te son muy ъtiles: nombre del rango y el puntaje que necesitas para tenerlo. їCуmo lo usas? vas desde el final hasta el inicio, comparando el nъmero del mayor rango con el nъmero de puntos que tiene el jugador. Cuando el nъmero de puntos sea mayor o igual al rango, habras encontrado el rango del jugador.
Ejemplo:
pawn Код:
EncontrarRangoDeJugador(playerid)
{
for(new i = sizeof(g_aNivelesInfo); i > -1; i --)
if(VariableDePuntajeDeJugador[playerid] >= g_aNivelesInfo[i][e_NI_Score])
return g_aNivelesInfo[i][e_NI_Name];
// return i; Esto solamente si quieres retornar el rango, mбs no el nombre del rango.
}
Respuesta: como creo un sistema de niveles por score/puntaje? -
Software - 05.04.2011
mmm pero como yo se mi rango a traves de un comando? por ejemplo poniendo /mirango y que me salga Tu rango actual es: "X"
Re: como creo un sistema de niveles por score/puntaje? -
MrDeath537 - 05.04.2011
pawn Код:
if (!strcmp(cmdtext, "/mirango", true))
{
new string[128];
GetPlayerLevelName(playerid, string);
format(string, sizeof (string), "Tu rango actual es: \"%s\"", string);
SendClientMessage(playerid, 0xFFFFFFFF, string);
return 1;
}
Respuesta: Re: como creo un sistema de niveles por score/puntaje? -
Software - 05.04.2011
Quote:
Originally Posted by MrDeath537
pawn Код:
if (!strcmp(cmdtext, "/mirango", true)) { new string[128]; GetPlayerLevelName(playerid, string); format(string, sizeof (string), "Tu rango actual es: \"%s\"", string); SendClientMessage(playerid, 0xFFFFFFFF, string);
return 1; }
|
Me da estos errores:
C:\Users\Rombo\Documents\New Server\Mini-TDM\gamemodes\Mini-TDM.pwn(1263) : warning 219: local variable "iPos" shadows a variable at a preceding level
C:\Users\Rombo\Documents\New Server\Mini-TDM\gamemodes\Mini-TDM.pwn(1263) : error 017: undefined symbol "g_iNivelesInfo"
C:\Users\Rombo\Documents\New Server\Mini-TDM\gamemodes\Mini-TDM.pwn(1263) : warning 215: expression has no effect
C:\Users\Rombo\Documents\New Server\Mini-TDM\gamemodes\Mini-TDM.pwn(1263) : error 001: expected token: ")", but found ";"
C:\Users\Rombo\Documents\New Server\Mini-TDM\gamemodes\Mini-TDM.pwn(1263) : error 036: empty statement
C:\Users\Rombo\Documents\New Server\Mini-TDM\gamemodes\Mini-TDM.pwn(1263) : fatal error 107: too many error messages on one line
La linea que da error:
pawn Код:
for (new iPos = sizeof (g_iNivelesInfo); iPos > 0; iPos --)
Re: como creo un sistema de niveles por score/puntaje? -
MrDeath537 - 05.04.2011
Cуdigo arreglado:
pawn Код:
// ARRIBA DE TODO
enum
e_NivelesInfo
{
e_NI_Name[32],
e_NI_Score
};
new
g_aNivelesInfo[][e_NivelesInfo] =
{
// NombreDelRango, Score necesario
"Novato", 0,
"Amateur", 150,
"Semi-Profesional", 300,
"Profesional", 500,
"Semi-Master", 750,
"Master", 1000
};
// FUNCION
stock
CheckForLevel(playerid)
{
new
iScore = GetPlayerScore(playerid),
iPos;
for (iPos = sizeof (g_iNivelesInfo); iPos > 0; iPos --)
if (iScore >= g_iNivelesInfo[iPos][e_NI_Score])
return 1;
return 0;
}
stock
GetPlayerLevelName(playerid, name[], size = 32)
{
new
iPos,
iLevel;
for (iPos = sizeof (g_iNivelesInfo); iPos > 0; iPos --)
if (iScore >= g_iNivelesInfo[iPos][e_NI_Score])
{
iLevel = iPos;
break;
}
strins(name, g_iNivelesInfo[iLevel][e_NI_Name], 0, size);
return 1;
}