Stats del jugador

Iniciado por Swarlog, May 12, 2025, 03:01 PM

Tema anterior - Siguiente tema

Swarlog

Hola, estaba pensando y mirando tutoriales a ver que podía poner además de las cosas que ya había y aún no están. Y se me ocurrió esto sobre estadísticas de jugadores y que se puedan ver reflejadas en un comando, o dialog o textdraws o donde para ustedes quede más bonito.

Primero que nada, tenemos que crear el comando. Voy a dejar en el spoiler una breve y básica explicación sobre qué se hace para comprobar que un comando sea escrito.

[spoiler]
Cita de: ¿Cómo detectamos que este comando a sido escrito?Para comprobar que un comando halla sido escrito, vamos a usar la expresión o condición ( nunca supe como se le dice realmente ) "if" ( si ) y una función de los Strings "strcmp" ( str de string y cmp de comparar ). Entonces:

if( ) ( si )
strcmp ( comparamos string )
string1 ( esto )
string2 ( con esto )
true / false ( e ignoramos / comprobamos mayúsculas ) *
== 0 ( y el valor es 0 ( es decir, ambas cadenas son iguales)... continuamos.. )

if(strcmp(cmdtext, "/comando", true) == 0)
{
       // Continuamos...
}
* Si ponemos true, ignoramos mayúsculas ( es lo mismo hola que hOlA ). Si ponemos false, las comparamos ( hola es diferente a HolA )
[/spoiler]

Ahora si, vamos a crear el comando:

if(!strcmp("/stats", cmdtext, true))
{
return 1;
}

Dentro del comando, vamos a tener que crear las variables para almacenar los datos que queramos mostrar, véase:

Citarnew dinero, score, ping, nombre[MAX_PLAYER_NAME], busqueda, mundo, str[256];

Ahora, vamos a "almacenar" ese dato en la variable. Para eso, vamos a utilizar funciones del a_samp, para averiguar los datos:

Citardinero = GetPlayerMoney(playerid);
GetPlayerName(playerid, nombre, sizeof(nombre));
busqueda = GetPlayerWantedLevel(playerid);
mundo = GetPlayerVirtualWorld(playerid);
score = GetPlayerScore(playerid);
ping = GetPlayerPing(playerid);

Ahora, con estos datos, le vamos a dar un formato al "str", para mostrarlo en el mensaje. Utilizando esa variable con la información.

Citarformat(str, sizeof(str), "Nombre: %s", nombre);
SendClientMessage(playerid, 0x00B793FF, str);
format(str, sizeof(str), "Dinero: %i", dinero);
SendClientMessage(playerid, 0x00B793FF, str);
format(str, sizeof(str), "Score: %i", score);
SendClientMessage(playerid, 0x00B793FF, str);
format(str, sizeof(str), "ID: %i", playerid);
SendClientMessage(playerid, 0x00B793FF, str);
format(str, sizeof(str), "Ping: %i", ping);
SendClientMessage(playerid, 0x00B793FF, str);
format(str, sizeof(str), "Nivel de Busqueda: %i", busqueda);
SendClientMessage(playerid, 0x00B793FF, str);
format(str, sizeof(str), "Mundo: %i", mundo);
SendClientMessage(playerid, 0x00B793FF, str);
( - %i, de integer ( entero ), %s, strings ( cadenas de texto ) -)

Otras cosas que pueden definir:

Posición: GetPlayerPos.
Interior: GetPlayerInterior.
Vida: GetPlayerHealth
Armadura: GetPlayerArmour.
Armas: GetPlayerWeapon.
Equipo: GetPlayerTeam.
Skin: GetPlayerSkin.

Esas son las cosas que se me ocurren ahora mismo, pero hay muchas más que alguien que tenga imaginación podrá sacarle más probecho.

Acá les dejo todo terminado, con algunas cosas más que agregué
[spoiler]
Citarpublic OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext, "/estadisticas", true))
{
new nombre[MAX_PLAYER_NAME], str[128];
new Float:X, Float:Y, Float:Z, Float:health, Float:armour;
GetPlayerName(playerid, nombre, sizeof(nombre));
GetPlayerPos(playerid,Float:X, Float:Y, Float:Z);
GetPlayerHealth(playerid, Float:health);
GetPlayerArmour(playerid, Float:armour);
format(str, sizeof(str), "Nombre: %s", nombre);
SendClientMessage(playerid, 0x00B793FF, str);
format(str, sizeof(str), "Dinero: %i", GetPlayerMoney(playerid));
SendClientMessage(playerid, 0x00B793FF, str);
format(str, sizeof(str), "Score: %i", GetPlayerScore(playerid));
SendClientMessage(playerid, 0x00B793FF, str);
format(str, sizeof(str), "ID: %i", playerid);
SendClientMessage(playerid, 0x00B793FF, str);
format(str, sizeof(str), "Ping: %i", GetPlayerPing(playerid));
SendClientMessage(playerid, 0x00B793FF, str);
format(str, sizeof(str), "Nivel de Busqueda: %i", GetPlayerWantedLevel(playerid));
SendClientMessage(playerid, 0x00B793FF, str);
format(str, sizeof(str), "Mundo: %i", GetPlayerVirtualWorld(playerid));
SendClientMessage(playerid, 0x00B793FF, str);
        format(str, sizeof(str), "Equipo: %d", GetPlayerTeam(playerid));
SendClientMessage(playerid, 0x00B793FF, str);
format(str, sizeof(str), "Interior: %i", GetPlayerInterior(playerid));
SendClientMessage(playerid, 0x00B793FF, str);
    format(str, sizeof(str), "Vida: %f", health);
SendClientMessage(playerid, 0x00B793FF, str);
    format(str, sizeof(str), "Chaleco: %f", armour);
SendClientMessage(playerid, 0x00B793FF, str);
  format(str, sizeof(str), "Skin: %i", GetPlayerSkin(playerid));
SendClientMessage(playerid, 0x00B793FF, str);
    format(str, sizeof(str), "Posición: X: %i Y: %i Z: %i", Float:X, Float:Y, Float:Z);
SendClientMessage(playerid, 0x00B793FF, str);
return 1;
}
return 0;
}
[/spoiler]