Mensajes: 546
Temas: 65
Registro en: Jan 2017
Reputación:
4
28/04/2018, 05:07 PM
(Última modificación: 28/04/2018, 05:08 PM por warrior.)
Hola que tal, tal como dice el titulo, hay alguna diferencia?, nose si de rendimiento o comodidad, o ambos llegando a la misma función que le quiero dar??
ejemplo 1: ( get_gametime)
Código PHP: new Float:g_anti_Segundos
public event_round_start() g_anti_Segundos = get_gametime();
case EXTRA_ANTIDOTE: // Antidote { if (get_gametime() < g_anti_Segundos + get_pcvar_float(cvar_comprar_anti)) { zp_colored_print(id, "^x04[Extinción]^x01 Necesitas^x04 %.2f segundos^x01 para volver a comprar Antidoto.!!", (g_anti_Segundos + get_pcvar_float(cvar_comprar_anti)) - get_gametime()); return; } humanme(id, 0, 0) }
ejemplo 2: ( TASK_)
Código PHP: g_desactivar_anti[33]
enum (+= 100) { TASK_TEAM = 2000, TASK_ANTIDOTO }
#define ID_ANTIDOTO(taskid - TASK_ANTIDOTO)
public putinserver(id) g_desactivar_anti[id] = 0
case EXTRA_ANTIDOTE: { if (g_desactivar_anti[id]){ zp_colored_print(id, "^x04[Extinción]^x01 Desactivado!") return } set_task(40.0, "activar_antidoto", id+TASK_ANTIDOTO)
g_desactivar_anti[id] = 1 humanme(id, 0, 0) } public activar_antidoto(taskid){ static id; id = ID_ANTIDOTO g_desactivar_anti[id] = 0 zp_colored_print(id, "^x04[Extinción]^x01 Ya puedes comprar antidoto!") }
En lo del task es un ejemplo, no le puse lo demas de cuando se desconecta el jugador por el tema de remover el task etc, para no hacerlo tan largo, espero que se entienda a lo que voy y gracias por responder!
Mensajes: 1,182
Temas: 18
Registro en: Oct 2013
Reputación:
16
Estem, siempre existe la misma pregunta.
Los prah de aca te van a decir que get_gametime( ) es lo mejor.
Fuera de eso task es mas comodo.
Te paso a explicar brevemente ...
Con ambos vas a llegar al mismo resultado, lo que cambia es la forma de llegar.
Obviamente es mucho mejor usar get_gametime( ), (Hasta creo que es mejor creando una entidad y manejandola)
Pero van a haber momentos donde no podras usar uno y si otros.
En simples palabras, get_gametime( ) se corre por cada frame, mientras que set_task se recorre una lista enorme de task cada 0.1 segundos.
Saca tus propias concluciones.
Saludos,
cLAANS.-
Mi unico plugin.
Tutorial de niveles.
Ayudo, pero no de la manera que quieren, si quieren aprender les servirá lo mio, para pedir el codigo en bandeja tienen la sección 'Pedidos'
(09/11/2017, 09:30 PM)SoundBlaster escribió: Espera y llamo a los power rangers para que me digan la linea de error
Mensajes: 546
Temas: 65
Registro en: Jan 2017
Reputación:
4
Ok, gracias por responder, no sabia muy bien cual es la diferencia ya que con ambos llego a la misma función que le quiero dar
Mensajes: 1,933
Temas: 39
Registro en: Jul 2014
Reputación:
23
en realidad set_task se pone en una cola que tiene el amx que se llama for cada frame
Mensajes: 1,902
Temas: 35
Registro en: Jan 2014
Reputación:
28
La única limitación que puedo observar (que no es una limitación), es que el AMXX harcodea el tiempo mínimo entre la llamada a la native y la función objetivo; por eficiencia quizá.
Mensajes: 130
Temas: 23
Registro en: Jul 2015
Reputación:
3
30/04/2018, 12:41 PM
(Última modificación: 30/04/2018, 12:41 PM por Runaway.)
Yo aun así prefiero get_gametime... es muy útil cuando se quiere trabajar con prethink o postthink.
Mensajes: 1,902
Temas: 35
Registro en: Jan 2014
Reputación:
28
30/04/2018, 12:58 PM
(Última modificación: 30/04/2018, 03:02 PM por Chamo..)
Es útil si se usa en funciones que pueden ser llamadas en cualquier momento.
Mensajes: 713
Temas: 32
Registro en: Jul 2014
Reputación:
19
Siento que no quedó claro.
Fíjate que tengo mi plugin sobre sistema de combos, hace un tiempo expliqué la diferencia.
https://amxmodx-es.com/Thread-ZP-sistema...#pid186120
Ahí detallé ventajas y desventajas. Es importante entender que no siempre se puede utilizar get_gametime.
Otra diferencia es que no necesitas crear una función aparte para ejecutar una acción, con get_gametime puedes directamente ejecutar el código ahí mismo (esto es visualmente beneficioso con códigos pequeños).
Normalmente, siempre vas a querer utilizar set_task porque ahorras variables y es más simple.
Cuando veas que necesites un task en una función que se va a ejecutar múltiples veces, obviamente ahí consideras optimizar y utilizar get_gametime.
Por ejemplo, en casos como el siguiente, no vas a poder utilizar get_gametime porque necesitas que la función (plugin_cfg) vuelva a ejecutarse para ir verificando el tiempo y ejecutar la función. Por esto es que no me libro de utilizar tasks en mi sistema de combo pero con get_gametime se ahorró un task importante.
Código PHP: //task public plugin_cfg() { set_task(5.0, "a"); }
//gametime public plugin_cfg() { //no se puede }
public a() { server_print("oh, hello"); }
Aclaración ->
No hice comparaciones profundas de CPU y demás pero no vas a notar que el juego va más fluido por optimizar esto.
Lo que digo es que estamos hablando de micro-optimizaciones, si es sobre un plugin personal o un aporte no necesitas preocuparte tanto sobre tan pequeños detalles pero en plugins formales es importante cuidar sobre cada aspecto mejorable.
Obviamente, siempre que puedas hazlo mejor.
Mensajes: 375
Temas: 55
Registro en: Jan 2016
Reputación:
9
Yo prefiero get_gametime(), obviamente no vas a crear una entidad para ejecutar algo en un lapso de 10 segundos, por ende al crear un task, tenes que crear la función pública, que se almacena en una tabla pública virtual que se va apilando con otras.
Mensajes: 3,020
Temas: 49
Registro en: Oct 2013
Reputación:
33
11/09/2018, 07:05 PM
(Última modificación: 11/09/2018, 07:05 PM por roccoxx.)
(11/09/2018, 06:14 PM)LuKks escribió: Siento que no quedó claro.
Fíjate que tengo mi plugin sobre sistema de combos, hace un tiempo expliqué la diferencia.
https://amxmodx-es.com/Thread-ZP-sistema...#pid186120
Ahí detallé ventajas y desventajas. Es importante entender que no siempre se puede utilizar get_gametime.
Otra diferencia es que no necesitas crear una función aparte para ejecutar una acción, con get_gametime puedes directamente ejecutar el código ahí mismo (esto es visualmente beneficioso con códigos pequeños).
Normalmente, siempre vas a querer utilizar set_task porque ahorras variables y es más simple.
Cuando veas que necesites un task en una función que se va a ejecutar múltiples veces, obviamente ahí consideras optimizar y utilizar get_gametime.
Por ejemplo, en casos como el siguiente, no vas a poder utilizar get_gametime porque necesitas que la función (plugin_cfg) vuelva a ejecutarse para ir verificando el tiempo y ejecutar la función. Por esto es que no me libro de utilizar tasks en mi sistema de combo pero con get_gametime se ahorró un task importante.
Código PHP: //task public plugin_cfg() { set_task(5.0, "a"); }
//gametime public plugin_cfg() { //no se puede }
public a() { server_print("oh, hello"); }
Aclaración ->
No hice comparaciones profundas de CPU y demás pero no vas a notar que el juego va más fluido por optimizar esto.
Lo que digo es que estamos hablando de micro-optimizaciones, si es sobre un plugin personal o un aporte no necesitas preocuparte tanto sobre tan pequeños detalles pero en plugins formales es importante cuidar sobre cada aspecto mejorable.
Obviamente, siempre que puedas hazlo mejor.
MAN QUE NECESIDAD REVIVIR, YA HAY VARIAS ACLARACIONES EN EL FORO DE PARTE DE DESTRO Y METALICROSS QUE EXPLICAN MUY CLARAMENTE EL TEMA.
REPITO MUY CLARAMENTE
Ingeniero agrónomo y desarrollador de Software.
tutoriales-allied
buscas un zp?
"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"
Merci Alliedmodders pour m'introduire dans la programmation.
Mensajes: 713
Temas: 32
Registro en: Jul 2014
Reputación:
19
(11/09/2018, 07:05 PM)roccoxx escribió: MAN QUE NECESIDAD REVIVIR, YA HAY VARIAS ACLARACIONES EN EL FORO DE PARTE DE DESTRO Y METALICROSS QUE EXPLICAN MUY CLARAMENTE EL TEMA.
REPITO MUY CLARAMENTE
Te entiendo, tuve mi pequeñísima discusión mental antes de comentar lo anterior pero desde mi perspectiva ->
- El usuario es activo, su última vez había sido incluso hoy mismo.
- Al leer esta publicación no parece que haya quedado resuelto.
- El creador de la publicación no menciona que haya leído o comprendido el tema por medio de otra publicación o mensajes (al menos, no en esta publicación).
- No tiene nada de malo revivir un tema, estoy añadiendo información en base a mis conocimientos a una publicación donde parece faltar dicha información.
Con respecto a revivir, la regla dice ->
Neeeeeeeeeel.- escribió: No bumpear temas hasta pasados 14 días del último post. Bumpear es publicar una respuesta en un tema para que este aparezca primero en la lista. Es más que obvio que mi intención no fue hacer que aparezca primero ya que mi comentario fue explicativo y mínimamente razonable (sobre todo teniendo en cuenta los items enumerados antes).
No quiero generar conflicto pero otra regla dice ->
Neeeeeeeeeel.- escribió: Utiliza el botón 'Reportar' para indicar un incumplimiento a una regla, no inicies una discusión. Por lo que si creías que mi comentario estaba mal, debiste reportarlo simplemente.
Y tampoco quise comentar toda esta respuesta pero, en fin, no es malo querer aclarar.
Mensajes: 546
Temas: 65
Registro en: Jan 2017
Reputación:
4
Buenas, despues de este theard segui buscado, y me contré con esto:
https://amxmodx-es.com/Thread-entender-e...4#pid54314
Lo cual me ayudó a entenderlo más a mi punto de vista, gracias por responder LuKks jaja, perdón por no aclararlo ...
Mensajes: 3,466
Temas: 18
Registro en: Oct 2013
Reputación:
54
(11/09/2018, 09:29 PM)warrior escribió: Buenas, despues de este theard segui buscado, y me contré con esto:
https://amxmodx-es.com/Thread-entender-e...4#pid54314
Lo cual me ayudó a entenderlo más a mi punto de vista, gracias por responder LuKks jaja, perdón por no aclararlo ...
Que forma mía de expresar lo que no me gusta jajaja, bueno que te haya servido
Anexo, hay veces que es necesario profundizar a un buen nivel de detalle, cuando en otras un simple ejemplo basta, aquí no todos tienen ganas de leer un lorem ipsum con ñoñerias
Mensajes: 546
Temas: 65
Registro en: Jan 2017
Reputación:
4
(11/09/2018, 09:48 PM)meTaLiCroSS escribió: (11/09/2018, 09:29 PM)warrior escribió: Buenas, despues de este theard segui buscado, y me contré con esto:
https://amxmodx-es.com/Thread-entender-e...4#pid54314
Lo cual me ayudó a entenderlo más a mi punto de vista, gracias por responder LuKks jaja, perdón por no aclararlo ...
Que forma mía de expresar lo que no me gusta jajaja, bueno que te haya servido
Anexo, hay veces que es necesario profundizar a un buen nivel de detalle, cuando en otras un simple ejemplo basta, aquí no todos tienen ganas de leer un lorem ipsum con ñoñerias
Si,y ya que estamos, la duda que me quedó si es lo mismo usar halflife_time() y get_gametime(). Si hay alguna diferencia de rendimiento o algo, o si es lo mismo jaja. Porque con ambas llego al objetivo que deseo llegar...
Mensajes: 713
Temas: 32
Registro en: Jul 2014
Reputación:
19
(12/09/2018, 01:38 PM)warrior escribió: Si,y ya que estamos, la duda que me quedó si es lo mismo usar halflife_time() y get_gametime(). Si hay alguna diferencia de rendimiento o algo, o si es lo mismo jaja. Porque con ambas llego al objetivo que deseo llegar...
https://www.amxmodx.org/api/amxmodx/get_gametime
https://www.amxmodx.org/api/engine/halflife_time
Parecen lo mismo, supongo que el hecho de que se llame "get_gametime" (en amxmodx.inc) es para que sea un nombre más genérico.
Mensajes: 546
Temas: 65
Registro en: Jan 2017
Reputación:
4
|