Raised This Month: $51 Target: $400
 12% 

[API] Register Task 1.1


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
rak
Veteran Member
Join Date: Oct 2011
Location: banned country
Old 08-25-2012 , 07:31   [API] Register Task 1.1
#1

Hola esto que van a ver a continuacion en si fue potenciado por Bugg al preguntar como llamar una funcion X dia y ya que estaba agrege para llamar cada X seg una funcion, es simple como funciona, veamos un poco

Natives
Code:
/* register_task; con esta native registramos un task hacia una funcion publica; Float:Time | Igual a set_task, el valor minimo es 0.1 const Func[] | Igual a set_task, el nombre de la funcion publica a la que vamos a llamar Taskid | Aca podemos pasar un id para identificar el task para poder removerlo o para pasar 1 dato(interger) el cual es mandado a la funcion Repeat | Aca es distinto, va el numero de veces que lo vamos a llamar, si dejamos el valor -1 se repite infinitas veces retorna el ID del task */ native register_task(Float:Time, const Func[], Taskid = 0, Repeat = -1) /* register_task_date; con esta native registramos un task para X dia de cualquier fecha; si los datos no corresponden al tiempo que esta activo el plugin en el mapa va a retornar un valor negativo; dejo un ejemplo: register_task_date(2012, 08, 27, 7, 30, 0, "my_task") esto va a llamar el 27 de agosto del 2012 a las 07:30:00 am la funcion public "my_task" los valores que pueden retornar son: TASK_EXPIRE = -3 ya se ejecuto el task TASK_NOT_YET = -2 en el momento que se registro el task, en ese mapa no se va a ejecutar por que no van a coincidir nunca la fecha y hora */ native register_task_date(Year, Month, Day, Hour, Minute, Second, const Func[]) // Ambas natives, register_task y register_task_date pueden retornar el ID del task que va de 0 a infinito o pueden retornar //TASK_INVALID_FUNCID = -1; cuando retorna la ultima significa que la funcion publica no fue encontrada /* remove_register_task; esta native sirve para borrar 1 task, varios que coincidan con el taskid que le asignamos o tambien podes borrar todos los task; un ejemplo de cada uno remove_register_task() | Remueve todos los task remove_register_task(id) | Remueve 1 solo task, id seria el valor que retorna register_task o register_task_date remove_register_task(_, taskid) | Remueve 1 solo task cuyo taskid es el que le asignamos antes a un register_task; INFO: remueve el ultimo taskid registrado remove_register_task(_,taskid, TASK_DELETE_ALL) | Remueve todos los task que tengan el taskid asignado */ native remove_register_task(id = -1, Taskid = -1, Delete_All = 0) /* change_register_task; cambiamos el tiempo en que se ejecuta un task id | el id es el que nos retorna register_task */ native change_register_task(id, Float:NewTime) enum { // enum con los valores antes mencionados     TASK_EXPIRE = -3,     TASK_NOT_YET,     TASK_INVALID_FUNCID,     TASK_DELETE_ONE,     TASK_DELETE_ALL } const NO_TASK_ID = -1

Informacion Adicional
Para poder compilar el plugin register_task.sma tienen que tener el include unixtime; se los deje en el .zip

Creditos
Code:
Bugsy - Inc. unixtime
shinoda - Ejemplo callfunc
Ejemplo de plugin
PHP Code:
#include <amxmodx>
#include <taskapi>

#define PLUGIN "Example Register Task"
#define VERSION "1.0"
#define AUTHOR "[R]ak"

enum _:TASKS {
    
TASK1,
    
TASK2,
    
TASK3
}

new 
g_rt_id[TASKS]

new 
g_register_task

public plugin_init() {
    
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_clcmd("say /kill""cmdSayKill")
    
    
g_rt_id[TASK2] = register_task_date(20120827000"rak_birthday")
    
}

public 
client_putinserver(id) {
    
    if(!
g_register_task) {
        
        
g_rt_id[TASK1] = register_task(1.0"show_clock")
        
        
g_rt_id[TASK3] = register_task(5.0"server_spam")
        
        
g_register_task true
        
    
}
}

public 
client_disconnect(id) {
    
    if(!
get_playersnum()) {
        
        
remove_register_task(g_rt_id[TASK1])
        
        
remove_register_task(g_rt_id[TASK3])
        
        
g_rt_id[TASK1] = NO_TASK_ID
        
        g_rt_id
[TASK3] = NO_TASK_ID
        
        g_register_task 
false
        
    
}
}

public 
cmdSayKill(id) {
    
    if(!
is_user_alive(id))
        return
    
    
register_task(1.0"task_kill"id5)
    
    
set_hudmessage(255255255, -1.00.1006.01.5)
    
    
show_hudmessage(id"You will die in 5 seconds")
    
}

public 
show_clock() {
    
    new 
Time[20
    
    
get_time("%H:%M:%S %p",Timecharsmax(Time))
    
    
set_hudmessage(42255420.800.0501.01.50.00.02
    
    
show_hudmessage(0Time)
    
}

public 
rak_birthday()
    
client_print(0print_chat"Happy Birthday [R]ak!")
    
public 
server_spam() {
        
    static 
Float:fCall
    
    fCall 
+= 5.0
    
    client_print
(0print_chat"[R]ak Acme Inc.- API Register Task 1.1")
    
    
client_print(0print_chat"[R]ak Acme Inc.- You Are Playing in Cstrike-Arg!")
    
    
change_register_task(g_rt_id[TASK3], fCall 5.0)
    
}

public 
task_kill(id) {
    
    static 
iCall[33]
    
    
iCall[id] == ? (iCall[id] = 1) : iCall[id]++
    
    
set_hudmessage(255255255, -1.00.1006.06.0)
    
    
show_hudmessage(id"You will die in %d seconds", (5-iCall[id]))
    
    if(!(
5-iCall[id]) && is_user_alive(id))
        
user_kill(id)
    

ChangeLog
Code:
* Register Task 1.0 - First release
* Register Task 1.1 - Agregado change_register_task | Pequeña modificación
disfruten y critiquenlo xD
Attached Files
File Type: zip register_task.zip (14.0 KB, 220 views)
File Type: zip register_task 1.1.zip (14.5 KB, 240 views)
__________________

www.amxmodx-es.com

Steam: Luchokoldo

Last edited by rak; 08-25-2012 at 22:51.
rak is offline
Send a message via MSN to rak Send a message via Skype™ to rak
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 04:34.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode