Utilización de macros
#26
(05/09/2014, 03:15 PM)meTaLiCroSS escribió: La definicion creo que ni tu la entendiste.

Un macro es un trozo de codigo que es leido en el preprocesado, el primer proceso de compilacion, y lo que hace simplemente es reemplazar un trozo de codigo con otro, no genera errores, dependiendo si eres negro codeando y no te imaginas el reemplazo, no interfiere directamente con la memoria, por el hecho que no son variables que guardan datos, son eliminados despues de ese proceso.

Cabe destacar que definir strings en un macro es una pesima idea si quieres que tu plugin pese menos, por que tal dicho, es un reemplazo por sobre todo el codigo, poniendo un string, pondras strings en todo el codigo, haciendo repetitivas veces un arbolito de memoria que quedaran en el archivo haciendolo mas pesado (cosa que no influye en el rendimiento, para los obsesionados).

Los macros son útiles para guardar valores, y trozos de codigos (pseudofunciones)

ya me parecia en otros lenguajes los define hacen eso Lengua
Whatdone https://amxmodx-es.com/Thread-Desvirtue-...n=lastpost
MCBloques [v1.5]
  • reemplazar models con sprites
  • guardado y carga automatico
  • utilizar mysql
  • mejorar el crafting
  • +info
Responder
#27
(07/09/2014, 11:56 PM)estantaya escribió:
(05/09/2014, 03:15 PM)meTaLiCroSS escribió: La definicion creo que ni tu la entendiste.

Un macro es un trozo de codigo que es leido en el preprocesado, el primer proceso de compilacion, y lo que hace simplemente es reemplazar un trozo de codigo con otro, no genera errores, dependiendo si eres negro codeando y no te imaginas el reemplazo, no interfiere directamente con la memoria, por el hecho que no son variables que guardan datos, son eliminados despues de ese proceso.

Cabe destacar que definir strings en un macro es una pesima idea si quieres que tu plugin pese menos, por que tal dicho, es un reemplazo por sobre todo el codigo, poniendo un string, pondras strings en todo el codigo, haciendo repetitivas veces un arbolito de memoria que quedaran en el archivo haciendolo mas pesado (cosa que no influye en el rendimiento, para los obsesionados).

Los macros son útiles para guardar valores, y trozos de codigos (pseudofunciones)

ya me parecia en otros lenguajes los define hacen eso Lengua

Es de esperarse, todos los lenguajes son iguales, unos orientados a distintas cosas (C++ a objetos, C a estructuras, etc), terminan igualmente siendo un lenguaje de bajo nivel despues de ser compilados
Responder
#28
La definición la entendí, tampoco soy tan lerdo che -.- sino no pondría la definición.

Ahí agregué la tuya que esta bien redactada y bien expilcada. Y edité una que otra cosa.

Sobre esto
Código PHP:
#define Costo(%1) (%1 + 1) * 5 + (g_rango[id]) 
Obviamente vas a usar esta macro en una función donde tome un id. Ya que es necesario.
Free agent - Vendo plugins, mods o apps del foro IPB (Invision community)
Contactarme vía Discord >>> AtselTV#8202
Responder
#29
No, no es necesario.
Estoy en desacuerdo.

Ni te molestes en enviarme un mensaje privado para pedirme ayuda porque NO lo voy a contestar.
Gracias por su atención.
Responder
#30
(08/09/2014, 12:18 AM)CSAxel escribió: La definición la entendí, tampoco soy tan lerdo che -.- sino no pondría la definición.

Ahí agregué la tuya que esta bien redactada y bien expilcada. Y edité una que otra cosa.

Sobre esto
Código PHP:
#define Costo(%1) (%1 + 1) * 5 + (g_rango[id]) 
Obviamente vas a usar esta macro en una función donde tome un id. Ya que es necesario.

Entre un grupo de programadores, postulando esa idea, creo que todos te lo negarian. Me incluyo, puede perfectamente no llamarse id el index del jugador involucrado. No veas "tu" codigo, imaginate infinitos casos de codigos. Las restricciones son lo primero que hay que ver al momento en cosas como estas.
Responder
#31
En este caso usaríamos el id o index. Ya que tendremos que insertar un valor para el %1, en este caso, una variable del jugador. No digo que "siempre" va un index, obviamente puede que no, pero en este caso yo diría que si. Si es que hay algún tipo de excepción podrían decirme así pueda aprender un poco más de tu criterio.
Free agent - Vendo plugins, mods o apps del foro IPB (Invision community)
Contactarme vía Discord >>> AtselTV#8202
Responder
#32
Estás enseñando una opción no del todo flexible.
Si fuera privado el plugin, vaya y pase pero acá estás enseñando a gente que quiere aprender o recordar este tema.

Ni te molestes en enviarme un mensaje privado para pedirme ayuda porque NO lo voy a contestar.
Gracias por su atención.
Responder
#33
Código PHP:
public mifuncion(player) {
    if(
Costo(g_level[player])) 
        
client_print(playerprint_chat"tienes lo suficiente")

Código:
Error: Undefined symbol "id" on line x

y pones puros ejemplos iguales o.O
#define AUTHOR "author"
ese seria un ejemplo claro

Ya lo dijo neeel lo que hace es que donde haya X se pondra Y
Todos los MODS VHL totalmente gratuitos  Descarga Aqui

Mis plugins:
STEAM: https://steamcommunity.com/id/Metrikcz/
FB: fb.com/rwoong
Venta plugins a pedido en México mándame MP
Responder
#34
Buenisimo, voy a tener para editar un rato.. Cosa para que no haya "confusiones". Dejaré aclaraciones, y una que otra cosa que haga falta.. Mi idea es que todo quede bien para que el que quiera aprender, mire este tema.
Así podré mejorarlo y podré aprender hasta yo de mis errores Whatdone
Free agent - Vendo plugins, mods o apps del foro IPB (Invision community)
Contactarme vía Discord >>> AtselTV#8202
Responder
#35
(07/09/2014, 10:25 PM)meTaLiCroSS escribió: Mucho mejor que lo hagas función en vez de macro, cito la parte donde se explica que es un reemplazo de codigo. Solo terminas haciendo un codigo mas grande y menos reducido.

Dudo que puedas reducir 3000 líneas de código...
Btw, el almacenamiento en los ordenadores no es un problema, nadie se quejará porque la fuente de su plugin pese 1kb de más. Prefiero un código de 10mb que me ocupe 10 segundos para editarlo a uno de 100kb que me tome horas modificar.
Responder
#36
(09/09/2014, 08:51 PM)Mario AR. escribió:
(07/09/2014, 10:25 PM)meTaLiCroSS escribió: Mucho mejor que lo hagas función en vez de macro, cito la parte donde se explica que es un reemplazo de codigo. Solo terminas haciendo un codigo mas grande y menos reducido.

Dudo que puedas reducir 3000 líneas de código...
Btw, el almacenamiento en los ordenadores no es un problema, nadie se quejará porque la fuente de su plugin pese 1kb de más. Prefiero un código de 10mb que me ocupe 10 segundos para editarlo a uno de 100kb que me tome horas modificar.

Creo que no entendiste ni mierda lo que dije, que da explicar asi.. y tu idea esta erronea, escribir directamente un trozo de codigo de X lineas en un macro, en la programación actual (no digo que eres cavernicola jajaj) ese caso lo puedes reducir en "hacer una funcion"

Un caso recurrente en C

Código PHP:
#define CHECK_ENTITY(x) \
    
if (|| gpGlobals->maxEntities) { \
        
MF_LogError(amxAMX_ERR_NATIVE"Entity out of range (%d)"x); \
        return 
0; \
    } else { \
        if (
<= gpGlobals->maxClients) { \
            if (!
MF_IsPlayerIngame(x)) { \
                
MF_LogError(amxAMX_ERR_NATIVE"Invalid player %d (not in-game)"x); \
                return 
0; \
            } \
        } else { \
            if (
!= && FNullEnt(INDEXENT(x))) { \
                
MF_LogError(amxAMX_ERR_NATIVE"Invalid entity %d"x); \
                return 
0; \
            } \
        } \
    } 

(lo que es idiota compararlo con un plugin en pawn)

Simplemente lo pones en una funcion

¿Para que crees que las crearon?
Responder
#37
Es bueno que sepas, ayudes y compartas lo que sabes; pero presumir y creer tener siempre la razón no es el camino adecuado.

Mejor código y no palabras Whatever
Código PHP:
#define accion(%0) { \
    
client_print(%0print_chat"Blablabla"); \
    
server_cmd("kick #%d"get_user_userid(%0)); \
}

// 999999 lineas

funcion(id)
{
    if (
check_algo(id))
    {
        
accion(id)
    }
}

// Las funciones? Pues no fueron creadas para poner 2 lineas de código. 
Responder
#38
No faltaba el típico que salta diciendome presumido, cree lo que quieras de lo que dije, en fin Roflmao
Responder
#39
(31/08/2014, 08:37 PM)CSAxel escribió: Una macro un poco más compleja sería esta.
Código PHP:
#define Costo(%0, %1)    (%1 + 1) * 5 * (g_iRango[%0]+1) 
Los primeros 2 parámetros lo explicaré brevemente...
%0: En este parámetro guardaremos el ID del jugador
%1: En este parámetro guardaremos el valor de las variables

Supongamos que nuestro nivel es 76 y nuestro rango de forma entera es 4. Cuando lo utilizamos el plugin sería algo así:
Código PHP:
while (g_iXP[id] >= Costo(idg_iNivel[id])) 
El cálculo sería el siguiente:
Código:
(%1 + 1) * 5 * (g_rango[id]+1)
(76 + 1) * 5 * (4+1)
77 * 5 * 5
385 * 5
1955
Entonces el requerimiento para el nivel 76 del rango 4 es 1955

385 * 5 no es 1955, es 1925

y esto no me quedo claro

Cita:Entonces el requerimiento para el nivel 76 del rango 4 es 1955

no tendría que ser así?

Cita:Entonces el requerimiento para el nivel [b]77 del rango 5 es 1925

esto ultimo es una duda no una correción
Responder
#40
A que te referís con esto ?
Cita:nivel [b]77
Y si, me estás dando una corrección que ahora mismo lo corrijo...
Free agent - Vendo plugins, mods o apps del foro IPB (Invision community)
Contactarme vía Discord >>> AtselTV#8202
Responder
#41
(17/01/2015, 12:43 AM)CSAxel escribió: A que te referís con esto ?
Cita:nivel 77
Y si, me estás dando una corrección que ahora mismo lo corrijo...

me quedo como el culo el bbcode de la negrita


Cita:Entonces el requerimiento para el nivel 77 del rango 5 es 1925

eso queria preguntar, sin en vez de nivel 76 no es 77 y en vez de rango 4 es 5?
Responder
#42
No porque el ejemplo muestra sobre el nivel 76 del rango 4, que muestra cuanto falta para llegar a ese nivel, no aumenta el número en sus dos variables. (O sea el nivel y el rango)
Free agent - Vendo plugins, mods o apps del foro IPB (Invision community)
Contactarme vía Discord >>> AtselTV#8202
Responder
#43
Los multilínea rubio, multilínea D:
Responder
#44
(17/01/2015, 06:48 AM)Mario AR. escribió: Los multilínea rubio, multilínea D:
Cuando tenga tiempo los explico Roflmao
Free agent - Vendo plugins, mods o apps del foro IPB (Invision community)
Contactarme vía Discord >>> AtselTV#8202
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)