Dudas sobre return
#1
Tengo una duda si yo tengo que devolver un valor con return se hace de la siguiente manera

Código PHP:
public funcion()
{
    new 
variable 1;
    return 
variable


para usarlo de la siguiente manera

Código PHP:
if(funcion() == 1)
{
    
//realizamos la accion


hay alguna posibilidad de devolver mas de una variable por un retunr

Código PHP:
public funcion()
{
    new 
variable 1;
    new 
variable2 1;
    return 
variablevariable2


Alguien que sepa me podría orientar un poco
Responder
#2
si se puede, usando el & como un parámetro
Código PHP:
public test()
{
    new 
r1r2;
    
    
r1 50;
    
r2 12
    
    server_print
("DEBUG1: r1=%d | r2=%d"r1r2);
    
    if(
funcion(r1r2))
        
server_print("DEGUG2: r1=%d | r2=%d"r1r2);
}
public 
funcion(&return1, &return2)
{
    
    
return1 500;
    
return2 99;
    
    return 
1
    

[Imagen: b_350_20_323957_202743_f19a15_111111.png]

Estudia siempre; el tiempo es oro, lo material se puede recuperar pero el tiempo no se puede recuperar.
(02/10/2016, 05:05 PM)meTaLiCroSS escribió: Siempre me gusta ayudar cuando alguien esta interesado realmente en ver que esta programando.
(08/08/2019, 05:32 PM)meTaLiCroSS escribió: grax x el dato cr4ck


Mis aportes

PLUGINS
MAPAS
Menú LANG [SF] Sistema de Frags
Say System (Admin Prefix)
Responder
#3
a ver si entendí bien lo que necesito saber cuanto tiempo lleva jugado el player guardando la menor cantidad de variables posibles, por eso solo guardo la variable segundos.
Quiero saber si esta bien así o hay alguna función para obtener días horas minutos y segundos solo guardando los segundos jugados

Código PHP:
public tiempo_jugado(id)
{
    new 
segundosminutoshorasdias;
    
    
get_tiempo(segundosminutoshorasdias)
    
    
client_print(idprint_chat"Llevas %d Segundos %d Minutos %d Horas %d Dias"segundosminutoshorasdias)
}
public 
get_tiempo(&segundos, &minutos, &horas, &dias)
{
    
segundos g_tiempo[id]
    
    while( 
segundos >= 60 )
    {
        
segundos -= 60
        minutos
++
    }
    while( 
minutos >= 60 )
    {
        
minutos -= 60
        horas
++
    }
    while( 
horas >= 24 )
    {
        
horas -= 24
        dias
++
    }
    
    return 
1;

Responder
#4
No lo probé, pero debería de funcionar Nothingdohere
Código PHP:
public test(id)
{
    new 
iSecsiMinsiHrsiDays;
    
    
iSecs 4241425;
    
get_time_played(iSecsiMinsiHrsiDays)
    
    
client_print(idprint_chat"Llevas %d Segundos %d Minutos %d Horas %d Dias"iSecsiMins,iHrsiDays)
}
public 
get_time_played(&iSeconds, &iMinutes, &iHours, &iDays)
{
    
iMinutes 0;
    
iHours 0;
    
iDays 0;
    
    new 
iPlayed;
    
iPlayed iSeconds;
    
    if(
iPlayed >= 86400)
    {
        
iDays = ((iSeconds 60) / 60) / 24;
        
iSeconds -= (86400 iDays);
        goto 
get_hours;
    }
    
    else if(
iPlayed >= 3600)
    {
        
get_hours:
        
iHours = (iSeconds 60) / 60;
        
iSeconds -= (3600 iHours);
        goto 
get_minutes;
    }
    else if(
iPlayed >= 60)
    {
        
get_minutes:
        
iMinutes iSeconds 60;
        
iSeconds -= (60 iMinutes);
    }

[Imagen: b_350_20_323957_202743_f19a15_111111.png]

Estudia siempre; el tiempo es oro, lo material se puede recuperar pero el tiempo no se puede recuperar.
(02/10/2016, 05:05 PM)meTaLiCroSS escribió: Siempre me gusta ayudar cuando alguien esta interesado realmente en ver que esta programando.
(08/08/2019, 05:32 PM)meTaLiCroSS escribió: grax x el dato cr4ck


Mis aportes

PLUGINS
MAPAS
Menú LANG [SF] Sistema de Frags
Say System (Admin Prefix)
Responder
#5

No es posible 'devolver' más de un resultado desde una función en este contexto. Lo que si es posible, y necesario para lo anterior, es modificar una o más variables externas a la función que realiza el trabajo, y asignarle a esas variables los valores que desees (lo que se conoce como pasar parámetros por referencia).

Dado el caso que tienes/quieres sobre devolver Días/Horas/Segundos desde una variable, necesitarías 3 variables auxiliares donde almacenaras cada resultado, respectivamente.
Responder
#6
(22/05/2018, 09:01 PM)totopizza escribió: No lo probé, pero debería de funcionar Nothingdohere
Código PHP:
public test(id)
{
    new 
iSecsiMinsiHrsiDays;
    
    
iSecs 4241425;
    
get_time_played(iSecsiMinsiHrsiDays)
    
    
client_print(idprint_chat"Llevas %d Segundos %d Minutos %d Horas %d Dias"iSecsiMins,iHrsiDays)
}
public 
get_time_played(&iSeconds, &iMinutes, &iHours, &iDays)
{
    
iMinutes 0;
    
iHours 0;
    
iDays 0;
    
    new 
iPlayed;
    
iPlayed iSeconds;
    
    if(
iPlayed >= 86400)
    {
        
iDays = ((iSeconds 60) / 60) / 24;
        
iSeconds -= (86400 iDays);
        goto 
get_hours;
    }
    
    else if(
iPlayed >= 3600)
    {
        
get_hours:
        
iHours = (iSeconds 60) / 60;
        
iSeconds -= (3600 iHours);
        goto 
get_minutes;
    }
    else if(
iPlayed >= 60)
    {
        
get_minutes:
        
iMinutes iSeconds 60;
        
iSeconds -= (60 iMinutes);
    }


hace meses que no veía el goto.. que funcion hace alli?
[Imagen: b_350_20_323957_202743_f19a15_111111.png]

(18/11/2014, 05:47 PM)Neeeeeeeeeel.- escribió: Por qué necesitan una guía para todo? Meté mano y que salga lo que salga... es la mejor forma de aprender.

(16/05/2016, 11:08 PM)kikizon2 escribió: No cabe duda que tienen mierda en vez de cerebro, par de pendejos v:
Responder
#7

Transfiere el flujo de control de la función/programa desde el punto de encuentro de la instrucción hasta la declaración del punto de llegada de la misma (parámetro de la instrucción goto).
Responder
#8
(22/05/2018, 07:34 PM)iGznOth escribió:
Código PHP:
public tiempo_jugado(id)
{
    new 
segundosminutoshorasdias;
    
    
get_tiempo(segundosminutoshorasdias)
    
    
client_print(idprint_chat"Llevas %d Segundos %d Minutos %d Horas %d Dias"segundosminutoshorasdias)
}
public 
get_tiempo(&segundos, &minutos, &horas, &dias)
{
    
segundos g_tiempo[id]
    
    while( 
segundos >= 60 )
    {
        
segundos -= 60
        minutos
++
    }
    while( 
minutos >= 60 )
    {
        
minutos -= 60
        horas
++
    }
    while( 
horas >= 24 )
    {
        
horas -= 24
        dias
++
    }
    
    return 
1;


estoy probando este tipo de funcion y funciona perfecto. ahora me gustaria saber si esta bien eso que estoy haciendo....
Responder
#9

Mientras funcione para ti y este programado de la mejor manera, estará bien.
Responder
#10
(23/05/2018, 12:18 AM)iGznOth escribió:
(22/05/2018, 07:34 PM)iGznOth escribió:
Código PHP:
public tiempo_jugado(id)
{
    new 
segundosminutoshorasdias;
    
    
get_tiempo(segundosminutoshorasdias)
    
    
client_print(idprint_chat"Llevas %d Segundos %d Minutos %d Horas %d Dias"segundosminutoshorasdias)
}
public 
get_tiempo(&segundos, &minutos, &horas, &dias)
{
    
segundos g_tiempo[id]
    
    while( 
segundos >= 60 )
    {
        
segundos -= 60
        minutos
++
    }
    while( 
minutos >= 60 )
    {
        
minutos -= 60
        horas
++
    }
    while( 
horas >= 24 )
    {
        
horas -= 24
        dias
++
    }
    
    return 
1;


estoy probando este tipo de funcion y funciona perfecto. ahora me gustaria saber si esta bien eso que estoy haciendo....
Lo único que llegó a ver qué está mal o que no está bien es el return 1; En este tipo de funciones (void o vacías) el retorno no es necesario, porqué el valor que devuelve la función no se utiliza para nada sino que se utilizan las variables modificadas.
Si querés podés hacer que retorne un valor booleano para verificar que el cálculo se hizo correctamente, pero en tu caso no es necesario
Responder
#11
(23/05/2018, 01:14 AM)Exertency escribió: Lo único que llegó a ver qué está mal o que no está bien es el return 1; En este tipo de funciones (void o vacías) el retorno no es necesario, porqué el valor que devuelve la función no se utiliza para nada sino que se utilizan las variables modificadas.
Si querés podés hacer que retorne un valor booleano para verificar que el cálculo se hizo correctamente, pero en tu caso no es necesario


Estaría de acuerdo si programara en C++, pero no lo hace. Es indiferente devolver un valor o no (a menos que quiera hacerlo).
Responder
#12
(23/05/2018, 12:30 AM)Chamo. escribió:
Mientras funcione para ti y este programado de la mejor manera, estará bien.

eso me gustaría saber de funcionar funciona ahora sera la mejor manera..

(23/05/2018, 01:14 AM)Exertency escribió: Lo único que llegó a ver qué está mal o que no está bien es el return 1; En este tipo de funciones (void o vacías) el retorno no es necesario, porqué el valor que devuelve la función no se utiliza para nada sino que se utilizan las variables modificadas.
Si querés podés hacer que retorne un valor booleano para verificar que el cálculo se hizo correctamente, pero en tu caso no es necesario

el return 1; se me quedo dado que cuando me dijo totopizza, lo iba a usar en un if por lo tanto necesitaba que devolviera 1 para seguir con la acción pero ahora como decís vos no es necesario que devuelva ningún valor ya que la función se ejecuta para modificar variables.
Responder
#13
sii ahora que recuerdo pacman #Sugisaki hacia bucles que aumentaban el procesador pero no tumbaba el sv con el goto Roflmao
[Imagen: b_350_20_323957_202743_f19a15_111111.png]

(18/11/2014, 05:47 PM)Neeeeeeeeeel.- escribió: Por qué necesitan una guía para todo? Meté mano y que salga lo que salga... es la mejor forma de aprender.

(16/05/2016, 11:08 PM)kikizon2 escribió: No cabe duda que tienen mierda en vez de cerebro, par de pendejos v:
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)