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

[ES] Duda con return


  
 
 
Thread Tools Display Modes
Author Message
Kiske
Veteran Member
Join Date: May 2009
Old 08-07-2009 , 00:28   [ES] Duda con return
#1

Tenia una duda sobre cuando se pone "return", "return PLUGIN_HANDLED" "return PLUGIN_CONTINUE", "return FMRES_IGNORED", "return FMRES_SUPERCEDE"

Queria saber que significa cada "return", por favor, conteste alguien que sepa y no alguien que diga cualquier pabada ¬¬


Tambien eh visto en varios plugins que hay:

PHP Code:
public ejemplo(id)
{
    
// code
    
{
          
// code
          
{
               
// code
               
return 3
          
}
           
          
// code
          
return 2
    
}
    return 
1

Queria saber que diferencia hay entre todos, o que expliquen que es lo que hace cada uno y yo me dare cuenta solo supongo ^^
Tambien si pueden explicar que es eso de poner: return 3, luego 2 y por ultimo 1

Si alguien fuera tan amable de explicar todos :F


Lei algo sobre lo que era "return" pero no me sirvio de mucho, aca les dejo lo que habia encontrado:
Quote:
"return" es una palabra reservada, propia de C y C++. Indica al programa que debe abandonar la ejecución de la función y continuar a partir del punto en que se la llamó. El 0 es el valor de retorno de nuestra función. Cuando "main" retorna con 0 indica que todo ha ido bien. Un valor distinto suele indicar un error. Imagina que nuestro programa es llamado desde un fichero de comandos, un fichero "bat" o un "script". El valor de retorno de nuestro programa se puede usar para tomar decisiones dentro de ese fichero. Pero somos nosotros, los programadores, los que decidiremos el significado de los valores de retorno.
__________________

Kiske is offline
Send a message via Skype™ to Kiske
Alucard^
AMXX Moderator: Others
Join Date: Sep 2007
Location: Street
Old 08-07-2009 , 02:33   Re: [ES] Duda con return
#2

Si yo tmpoco se del todo que significa cada return... mas o menos entiendo pero es dificil de explicarlo (por lo menos para mi) es como que lo uso por "instinto"...

Con respecto al return 0, 1 y 2... CREO que es otra forma de usar PLUGIN_CONTINUE, PLUGIN_HANDLED y PLUGIN_HANDLED_MAIN... mira:

PHP Code:
//Plugin passes through operation.  Whatever called it continues.
#define PLUGIN_CONTINUE        0
//Plugin halts continued operation (plugins following in the plugins.ini won't be called).
//Whatever called it will eventually supercede.
#define PLUGIN_HANDLED        1
//Continue calling plugins but halt the operation
#define PLUGIN_HANDLED_MAIN    2 
__________________
Approved Plugins - Steam Profile

Public non-terminated projects:
All Admins Menu, HLTV parameters, Subnick,
Second Password (cool style), InfoZone,
Binary C4 plant/defuse, and more...

Private projects:
NoSpec (+menu), NV Surf Management,
PM Adanved System, KZ longjump2, and more...
Alucard^ is offline
Send a message via Skype™ to Alucard^
larito
Veteran Member
Join Date: Nov 2008
Location: Argentina- Mendoza
Old 08-07-2009 , 06:47   Re: [ES] Duda con return
#3

Sino me equivoco es asi

PHP Code:
return PLUGIN_CONTINUE // sigue la accion no la frena 
return PLUGIN_HANDLED // frena la accion 
Ejemplo
PHP Code:
if(g_nemesis[id])
{
return 
PLUGIN_HANDLED

Alli si es nemesis frena la accion

PHP Code:
if(g_nemesis[id])
{
return 
PLUGIN_CONTINUE

Alli si es nemesis no frena la accion


PD: Yo tengo entendido que funciona asi pero no estoy muy seguro aunque cuando lo uso me funciona bien....
__________________
Facebook: Ariel Berardi
larito is offline
Send a message via MSN to larito
vazmar
Veteran Member
Join Date: Apr 2009
Old 08-07-2009 , 11:58   Re: [ES] Duda con return
#4

yo me doy cuenta cuando tengo que agregar un return, cuando me dice,

Warning: Function "kjsaasd" should return a value on line 1121212
vazmar is offline
fezh
Veteran Member
Join Date: Dec 2008
Location: BANNED
Old 08-07-2009 , 12:03   Re: [ES] Duda con return
#5

PHP Code:
#define PLUGIN_CONTINUE        0    /* Results returned by public functions */
#define PLUGIN_HANDLED        1    /* stop other plugins */
#define PLUGIN_HANDLED_MAIN    2    /* to use in client_command(), continue all plugins but stop the command */ 
PLUGIN_CONTINUE = Se lo puede ver como el valor de return "por defecto" de C++.
PLUGIN_HANDLED = Bloquea la acción en ese plugin, pero también en todo aquel plugin que tenga la misma funcion incorporada.
PLUGIN_HANDLED_MAIN = Funciona como el handled ordinario, pero solo sirve para bloquear comandos genericos adentro de UN solo plugin.

PHP Code:
#define FMRES_IGNORED    1    // Calls target function, returns normal value
#define FMRES_HANDLED    2    // Tells metamod you did something, still calls target function and returns normal value
#define FMRES_OVERRIDE    3    // Supposed to still call the target function but return your value instead
                            // however this does not work properly with metamod; use supercede instead.
#define FMRES_SUPERCEDE    4    // Block the target call, and use your return value (if applicable) 
FMRES_IGNORED = PLUGIN_HANDLED
FMRES_HANDLED = PLUGIN_HANDLED_MAIN
FMRES_OVERRIDE = No entiendo que es exactamente lo que hace, aunque igualmente ahi recomienda usar supercede en lugar de esto por que no funciona correctamente con metamod.
__________________
"There is no knowledge, that is not power"
fezh is offline
AntiBots
Veteran Member
Join Date: May 2008
Location: Brazil
Old 08-07-2009 , 12:06   Re: [ES] Duda con return
#6

miren, las llamas a las funciones no son todas al mismo tiempo.

Van de acuerdo a la ubicacion del plugin en plugins.ini.

EJ:
PHP Code:
register_clcmd("say lala""cmd");
 
public 
cmd(id)
{
       
client_print(
       return 
PLUGIN_CONTINUE

plugin 2:
PHP Code:
register_clcmd("say lala""cmd");
 
public 
cmd(id)
{
     
client_print( ..........
     return 
PLUGIN_HANDLED

El Tercero
PHP Code:
register_clcmd("say lala""cmd");
 
public 
cmd(id)
{
     
client_print( ........
     return 
PLUGIN_CONTINUE

Entonces el Tercer plugin no llegara a funcionar.

Para el HANDLED_MAIN blokea la accion. Ejemplo Si lo uso en el segundo plugin el mensaje va a parecer en el Tercero. Pero no va a aparecer el mensaje en el juego.


mmm, Espero que me allan entendido. Sino despues edito-

Saludos.
__________________
AntiBots is offline
Send a message via ICQ to AntiBots Send a message via MSN to AntiBots Send a message via Skype™ to AntiBots
larito
Veteran Member
Join Date: Nov 2008
Location: Argentina- Mendoza
Old 08-07-2009 , 12:52   Re: [ES] Duda con return
#7

Porlomenos yo lo entendi y tambien me di cuenta que no estaba tan errado!
__________________
Facebook: Ariel Berardi
larito is offline
Send a message via MSN to larito
IneedHelp
Veteran Member
Join Date: Mar 2007
Location: Argentina
Old 08-07-2009 , 13:41   Re: [ES] Duda con return
#8

El PLUGIN_HANDLED_MAIN, lo vi usado en muchos casos de bloqueos externos, por ejemplo, bloquear una cvar con otro plugin, este va puesto arriba del admincmd.amxx (que es el que tiene el comando amx_cvar) y si es X cvar la bloquea, si no, sigue, tambien el PLUGIN_CONTINUE / PLUGIN_HANDLED dependen de el tipo o la funcion en la cual lo quieras utilizar, un ejemplo tomado del adminchat

PHP Code:
// [ ... ]
register_clcmd("say""cmdSay")

// [ ... ]
public cmdSay(id)
{
    if (!
access(idADMIN_CHAT))
         return 
PLUGIN_CONTINUE

Si pones PLUGIN_HANDLED a un user que no tiene el acceso, esto le bloquearia el say completamente, por eso digo, depende de las funciones tambien cual vas a usar, otro ejemplo seria con 1 comando + cmd_access..

Kiske, fijate en el fakemeta_const.inc que estan las definiciones, creo que las del hamsandwich son casi iguales pero cambia como siempre con las funciones :::
__________________
IneedHelp is offline
Kiske
Veteran Member
Join Date: May 2009
Old 08-07-2009 , 18:14   Re: [ES] Duda con return
#9

Quote:
Originally Posted by IneedHelp View Post
El PLUGIN_HANDLED_MAIN, lo vi usado en muchos casos de bloqueos externos, por ejemplo, bloquear una cvar con otro plugin, este va puesto arriba del admincmd.amxx (que es el que tiene el comando amx_cvar) y si es X cvar la bloquea, si no, sigue, tambien el PLUGIN_CONTINUE / PLUGIN_HANDLED dependen de el tipo o la funcion en la cual lo quieras utilizar, un ejemplo tomado del adminchat

PHP Code:
// [ ... ]
register_clcmd("say""cmdSay")

// [ ... ]
public cmdSay(id)
{
    if (!
access(idADMIN_CHAT))
         return 
PLUGIN_CONTINUE

Si pones PLUGIN_HANDLED a un user que no tiene el acceso, esto le bloquearia el say completamente, por eso digo, depende de las funciones tambien cual vas a usar, otro ejemplo seria con 1 comando + cmd_access..

Kiske, fijate en el fakemeta_const.inc que estan las definiciones, creo que las del hamsandwich son casi iguales pero cambia como siempre con las funciones :::

No se mucho ingles y los traductores traducen palabra por palabra y no se entiende nada ^^


Gracias a todos :F
__________________

Kiske is offline
Send a message via Skype™ to Kiske
 



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 11:38.


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