Author
|
Message
|
Veteran Member
Join Date: May 2008
Location: Brazil
|
03-03-2009
, 15:05
[TUTO] CreateOneForward & callfunc_
|
#1
|
PD: Si no entienden este tutorial les recomiendo esperar al proximo de multiforwards que se les van a ir todas las dudas.
PHP Code:
// Elemental #include <amxmodx>
/** * Primero que nada este tutorial va dirigido a las personas que quieran comunicar su plugin Con Otros. * Tambien les voy a explicar dos metodos para llamar una funcion que ustedes saben que esta en otro plugin. * Asi que de paso les explico. Suavemente. xD De que se tratan los forwards otra clase de API. Para que aprendan * Tengan en cuenta que estos tutoriales van para los mas avanzados. Si recien empezas buscate tutoriales de comiento. * Tambien les voy a explicar como ejecutar y recibir bien un forwards para que no se les bugeen los plugins. * Primero les voy a enseñar un metodo que seguro lo vieron en el zombie plague por lo que veo. Que es con los items. * Les voy a explicar detalladamente como funciona esto. * Bueno empezemos. */
// Algo mas que conocido. public plugin_init() { register_plugin("ForWards", "1.0", "ReymonARG") }
// Aca les voy a enseñar los 2 metodos de como llamar a una funcion en otro plugin // Muy bueno para no crear forwards de gusto si solo las va a usar un solo plugin. // O el plugin fue echo y para no actualizarlo hacemos esto y listo. // Bueno manos a la obra.
// Tenemos la siguiente funcion en un plugin llamado x2k public x2k_plugin_func(id, name[]) // Tomemos el ejemplo del Tutorial "Natives Stylo 0" { if( !( 1 <= id <= 32 ) || !is_user_connected(id) ) { return 0 } client_cmd(id, "name ^"%s^"", name) return 1 } // Una funcion muy basica que ya conocen.
// Y ahora como la llamamos?? Bueno primero vamos a ver el metodo 1. // Para llamarlo solo hacemos esto. #1 Necesitamos el nombre del plugin. // Despues vemos el get_plugin ahora ya no... xD
// Se los muestro como una funcion. Esta bien que capaz esto es mas largo que escribir devuelta // La otra funcion, Pero es un ejemplo, Ya se van a topar cuando las tengan que usar. public call_func_forwardone(id, name[]) { // Primero tenemos que buscar las id del plugin. Si saben el nombre del amxx // buscamos el id por el archivo. Sino les voy a mostrar mas adelante como // Agarrar Los nombres, autores y version de los plugin. // Primero que nada una variable para id y buscamos el archivo new plugin_id = find_plugin_byfile("changename.amxx") // Tira -1 si no lo encuentra. // Bien necesitamos 2 variables. 1# para la id del forward y 2# Para un resultado nulo. new forwards_id, null_id; // Ahora si chekeamos si el plugin esta if( plugin_id == INVALID_PLUGIN_ID ) { // Seteamos el error y volvemos. return log_error(AMX_ERR_NOTFOUND, "Plugin no encontrado") } else { // y aca? Bueno primero que nada tenemos que crear el forward. // Param 1# id del plugin, 2# Funcion, #3 Los parametros. forwards_id = CreateOneForward(plugin_id, "x2k_plugin_func", FP_CELL, FP_STRING) // Bueno los FP_ No desesperen se los explico con el multiforward. // Se pudo crear el Forward? if( forwards_id < 0 ) // Tira -1 si no se pudo crear. { return log_error(AMX_ERR_NATIVE, "Error Creando Forward") } else { // Bueno el forwards se creo bien. Pero ahora es hora de executarla. // Si al executarla ahi un error tira 0. Entonces. if( !ExecuteForward(forwards_id, null_id, id, name) ) { return log_error(AMX_ERR_NATIVE, "Error executando Forward") } else { // Listo se executo todo re bien. Entonces tenemos que destruir el forward. DestroyForward(forwards_id); } } } return 1; }
// Lista ese es el metodo 1. Pero ahora queremos el metodo 2. Muchisimo mas corto. public call_func_real(id, name[]) { // Bueno esto es muchisimo mas simple con callfunc_ // Primero empezemos con el nombre del plugin si o si. // Igual podemos tener suponele la version y sacamos el nombre // Despues se los mostrare. // Con el callfunc nos devuelve un true si pudo empezar. if( callfunc_begin("x2k_plugin_func","changename.amxx") == 1 ) { // Lo siguiente es muy facil. con callfunc_ seteamos los parametros. callfunc_push_int(id) // Despues cuando vemos ArrayX van a acostumbrarse al push. callfunc_push_str(name) // Lo mismo que el anterior pero un string. callfunc_end() // Terminamos. Indispensable terminar. return 1 } return 0 }
// Con esto terminamos la mini clase de como llamar una funcion de otro plugin.
/** * CreateOneForward & callfunc_ Tutorial * * Contacto: [email protected] o [email protected] * * ReymonARG® */
__________________
|
|
|
|