Alguna diferencia de usar task o get_gametime?
#1
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(id00)
        } 


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
(id00)
}
        
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!
Responder
#2
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
Responder
#3
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
Responder
#4
en realidad set_task se pone en una cola que tiene el amx que se llama for cada frame
Competitive/Face it Pick Up Game (PUG) servidor de prueba: 45.77.94.109:27016 Click para Entrar
[Imagen: b_350_20_5A6C3E_383F2D_D2E1B5_2E3226.png]

(14/08/2015, 10:15 PM)Sugisaki escribió: "El mundo es caotico, irracional e injusto. No tiene ningun significado"
Palabras que desde hace mucho tiempo he buscado para describir, ¿Que es el mundo?
Crab

Código PHP:
if(ayuda && free)
{
    exit();

Responder
#5

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á.
Responder
#6
Yo aun así prefiero get_gametime... es muy útil cuando se quiere trabajar con prethink o postthink.
Responder
#7

Es útil si se usa en funciones que pueden ser llamadas en cualquier momento.
Responder
#8
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.
Responder
#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.
Responder
#10
(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.
Responder
#11
(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.
Responder
#12
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 ...
Responder
#13
(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
Responder
#14
(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...
Responder
#15
(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.
Responder
#16
dale amigo, gracias!
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)