Programación en Pawn - SAMP

[Include] ptvar.inc - PlayerArrays que se resetean al salir

¿Encontraste un Plugin que te asombró? ¿Qué opinas de mostrárnoslo? ¡Súbelo y compártelo con los demás! También, encuentra gran cantidad de Includes.
Reglas del Foro

  • Si publicas un Plugin de tu autoría, deberás publicar el código fuente del mismo. No olvides utilizar el BBCode [Pawn]Código aquí[/Pawn].
  • Si no eres el autor del plugin/include o has utilizado códigos de otros autores, recuerda colocar los créditos correspondientes. (El plagio es motivo de sanción).

Moderador: Ayudantes

ptvar
Imagen
Introduce una sintaxis con la cual pueden declarar variables en un estilo "Player-Array", en los cuales el slot del player se resetea a un valor inicial (especificado al crear la variable) cuando se vuelven a unir al juego, ideal para variables inimportantes que solo necesitamos cuando el jugador esta conectado y necesiten resetearse a un valor cuando se van.

Depende en YSI, especificamente en y_amx (para acceder a la tabla de funciones publicas internas AMX) y y_hooks (para saber cuando el player entra o sale).

Instalacion
Para usuarios de sampctl es muy sencillo, simplemente instalas el paquete, lo incluyes y ya:

Código: Seleccionar todo

sampctl package install AGraber/ptvar
O bien puedes descargar la ultima version del include manualmente por aqui:
https://raw.githubusercontent.com/AGrab ... /ptvar.inc (recomiendo dar click derecho y "Guardar como..." ya que el link suele mostrarse en texto en vez de descarga automatica)
 Codigo Pawno:
1

#include <ptvar>
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 1

Uso
Muy simple:
 Codigo Pawno:
1
2

// Wow[playerid] vuelve a INVALID_PLAYER_ID (por ejemplo) cada vez que playerid se vuelve a unir al juego.
ptvar Wow[MAX_PLAYERS] = INVALID_PLAYER_ID;
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 2
Si el termino "ptvar" ya esta definido en tu codigo (improbable) puedes usar este define para usar otro sintax que no haga conflicto:
 Codigo Pawno:
1
2
3
4

#define DONT_USE_PRETTY_PTVAR
#include <ptvar>

PTVAR__ Woah[MAX_PLAYERS] = INVALID_PLAYER_ID;
  Cantidad de llaves: Abiertas(0)-Cerradas(0) | Lineas Totales: 4
Creditos
- Graber (yo xd)
- Y_Less al cual le robe preste codigo de y_scriptinit
- Yashas el cual ha hecho una [url=https://github.com/YashasSamaga/AMX-Ass ... OCUMENT.md]magnifica documentacion en AMX Assembly en donde aprendi a pushear variables como argumentos para llamar a una funcion usando #emit
- y ustedes por usarlo <3
Me parece bastante útil.

¡Buen aporte! -hi
Bastante útil diría yo, pero en tema de velocidad, ¿es más rápido usar variables globales?
Simplemente increíble, me hubiera venido muy bien esto hace unos años... -good

FR0Z3NH34R7 escribió:
10 Sep 2018 20:15
Bastante útil diría yo, pero en tema de velocidad, ¿es más rápido usar variables globales?
¿En comparación con que?, si te refieres a las variables por jugador(PVar) o las de servidor(SVar), siguiendo el concepto en el que me quede(ando medio anticuado) las variables globales, si bien consumen memoria, son las mas rápidas por diferencia. Si mal no recuerdo son un 300% mas rápidas que las variables por jugador(PVar), y respecto a las de servidor(SVar) ya no se porque nunca llegue a ver/hacer un test con eso... pero imagino que es lo mismo. Corrijanme si me equivoco(no seria de extrañar puesto que el concepto en el que me quede es muy ambiguo respecto a todos los cambios que día a día van apareciendo en SA:MP gracias a la comunidad)

Saludos, -bye
FR0Z3NH34R7 escribió:
10 Sep 2018 20:15
Bastante útil diría yo, pero en tema de velocidad, ¿es más rápido usar variables globales?
Se podría decir que si, recordando tambien que variables que son declaradas como static ya son creadas en el espacio "global" (solo que no puedes acceder a ellas afuera de su función/archivo), y conservan su valor siempre a pesar de que se llamen multiples veces.

En cuanto el tema de velocidad al conectar, el include busca todos los public creados de su "sistema" mediante una comparación a modo de como si fuera un numero (son 4 bytes los primeros caracteres de la función los cuales gracias a YSI pueden ser representados como un numero entero usando un macro), y luego llama a la función mediante el pointer, asi que no hay mucho drama.

Recuerden que tambien se pueden usar funciones como valor inicial, aunque procuren que no sea una lenta asi todo va bien.
Muy util para todos los usuarios!! -punk -punk

¿Quién está conectado?

En total hay 1 usuario conectado :: 0 registrados, 0 ocultos y 1 invitado (basados en usuarios activos en los últimos 5 minutos)
La mayor cantidad de usuarios identificados fue 855 el 27 May 2018 00:03

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado