27/12/2018, 11:26 PM
(Última modificación: 27/12/2018, 11:29 PM por [R]ak. Edited 4 times in total.)
Revisando Alliedmods me di cuenta que no tenia publicada acá esta API; hago c&p del post original
Hola :3 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
Informacion Adicional
Para poder compilar el plugin register_task.sma tienen que tener el include unixtime; se los deje en el .zip
Creditos
Ejemplo de plugin
ChangeLog
disfruten y critiquenlo xD
Hola :3 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
Código PHP:
/*
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
Código:
Bugsy - Inc. unixtime
shinoda - Ejemplo callfunc
Ejemplo de plugin
Código PHP:
#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(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /kill", "cmdSayKill")
g_rt_id[TASK2] = register_task_date(2012, 08, 27, 0, 0, 0, "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", id, 5)
set_hudmessage(255, 255, 255, -1.0, 0.10, 0, 6.0, 1.5)
show_hudmessage(id, "You will die in 5 seconds")
}
public show_clock() {
new Time[20]
get_time("%H:%M:%S %p",Time, charsmax(Time))
set_hudmessage(42, 255, 42, 0.80, 0.05, 0, 1.0, 1.5, 0.0, 0.0, 2)
show_hudmessage(0, Time)
}
public rak_birthday()
client_print(0, print_chat, "Happy Birthday [R]ak!")
public server_spam() {
static Float:fCall
fCall += 5.0
client_print(0, print_chat, "[R]ak Acme Inc.- API Register Task 1.1")
client_print(0, print_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] == 5 ? (iCall[id] = 1) : iCall[id]++
set_hudmessage(255, 255, 255, -1.0, 0.10, 0, 6.0, 6.0)
show_hudmessage(id, "You will die in %d seconds", (5-iCall[id]))
if(!(5-iCall[id]) && is_user_alive(id))
user_kill(id)
}
Código:
* Register Task 1.0 - First release
* Register Task 1.1 - Agregado change_register_task | Pequeña modificación
Hi Milashkasiya
Soy un #Panda.. Soy solo un tipo que parece #común pero soy todo lo contrario; alguien #atípico en esta sociedad actual
Link
Soy un #Panda.. Soy solo un tipo que parece #común pero soy todo lo contrario; alguien #atípico en esta sociedad actual
Link